solved compilation errors | changed header includes, makefile flags, pointers to arrays

This commit is contained in:
gonzalef 2020-04-16 15:08:22 +02:00
parent 45cdc1409c
commit cdef7ee0ac
9 changed files with 41 additions and 39 deletions

View File

@ -1,16 +1,17 @@
TARGET ?= dazibao
SRC_DIRS ?= ./src/*
CC := gcc
CFLAGS= -O2 -Wall -lssl -lcrypto
CFLAGS= -O2 -Wall
SRCS := $(shell find $(SRC_DIRS) -name *.c -or -name *.s)
OBJS := $(addsuffix .o,$(basename $(SRCS)))
DEPS := $(OBJS:.o=.d)
SSLFLAGS = -lssl -lcrypto
INC_DIRS := $(shell find $(SRC_DIRS) -type d)
INC_FLAGS := $(addprefix -I,$(INC_DIRS))
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $@ $(LOADLIBES) $(LDLIBS)
$(CC) $(CFLAGS) $(OBJS) -o $@ $(LOADLIBES) $(LDLIBS) $(SSLFLAGS)
.PHONY: clean
clean:

View File

@ -8,16 +8,16 @@
#include "node.h"
// Hash a single data
void hash_data(struct pub_data *data, unsigned char *buf);
void hash_data(pub_data *data, unsigned char *buf);
// Hash every data contained in data_list then return a network hash
void hash_network(struct list *data_list, unsigned char *buf);
void hash_network(list *data_list, unsigned char *buf);
// Truncate 32 octet hash to 16 octets
void hash_trunc(unsigned char *hash256bit, unsigned char *buf);
// Concat all fields of data and put them in buf
void concat_data(struct pub_data *data, unsigned char *buf);
void concat_data(pub_data *data, unsigned char *buf);
// Concat hash2 to hash1 (hash1 is modified)
void concat_hash(unsigned char *hash1, unsigned char *hash2, size_t size);

BIN
src/hash.o Normal file

Binary file not shown.

View File

@ -163,7 +163,7 @@ void add_data(unsigned char len, long id, short seqno, char *data) {
/* ---- Fin fonctions utilitaires ---- */
int send_tlv(union tlv * tlv_to_send, int tlv_size, struct sockaddr_in6 * dest_list[], int dest_list_size, int socket_num){
int send_tlv(union tlv * tlv_to_send, int tlv_size, struct sockaddr_in6 * dest_list, int dest_list_size, int socket_num){
// debug_print("Building packet to send a TLV.");
// We first need to build the packet,
@ -276,7 +276,7 @@ int validate_tlv(char *data, int pos, short packet_len){
// For every packet recivied,
// then we make sure it's conform
// We then extract the data from it to make it easy to work with
int check_header(char * received_datagram[], int buffer_len, struct packet * packet_to_return){
int check_header(char * received_datagram, int buffer_len, struct packet * packet_to_return){
packet_to_return = (packet*) received_datagram;
@ -309,9 +309,10 @@ int update_neighbours(){
};
// We then look at the differents TLVs in the packet.
int work_with_tlvs(char * data[], short packet_len, struct sockaddr_in6 sender){
int work_with_tlvs(char * data, short packet_len, struct sockaddr_in6 sender){
int pos = 0;
unsigned char tlv_len, hash[16], warn[32];
unsigned char tlv_len, hash[16];
char warn[32];
tlv new_tlv, cur_tlv;
list *tmp_list;
pub_data *pdata;
@ -531,8 +532,8 @@ void listen_for_packets(){
// We verify the received packet is well formated,
// and we return it in the struct designed to work with it.
struct packet * formated_rec_datagram;
if(check_header(&req, 1024, formated_rec_datagram) < 0){
struct packet formated_rec_datagram;
if(check_header(req, 1024, &formated_rec_datagram) < 0){
perror(">> Error while checking the header, aborting this packet, by choice, and conviction.");
continue;
}
@ -541,7 +542,7 @@ void listen_for_packets(){
// struct tlv_list received_tlvs;
// if (validate_tlvs(formated_rec_datagram) < 0)
int nbr_success_tlv = work_with_tlvs(&req, 1024, sender);
int nbr_success_tlv = work_with_tlvs(req, 1024, sender);
if (nbr_success_tlv < 0){
perror(">> Error while treating the TLVs of the packet.");
printf(">> Managed to deal with %i TLVs\n", -nbr_success_tlv );

View File

@ -11,20 +11,6 @@
#include <netinet/in.h>
#include <string.h>
#include "tlv.h"
#include "hash.h"
#include "parser.h"
// On which port do we listen to
#define LISTEN_PORT 1212
// The node ID
#define NODE_ID 42675882021843277
// The number of neighbours
// The neighbour table has 15 entries
#define NEIGHBOUR_MAX 15
/* la table de voisins, qui est indexée par adresses de socket (des paires (IP, Port)),
* et dont chaque entrée contient un booléen indiquant si le pair est permanent
* (configuré au lancement) ou transitoire, et la date de dernière réception dun
@ -45,7 +31,7 @@ typedef struct neighbour_peer {
*/
typedef struct pub_data {
unsigned char length;
unsigned char length;
long id;
short seqno;
char *data;
@ -53,10 +39,24 @@ typedef struct pub_data {
// General list
typedef struct list {
void *data;
void *next;
void *data;
void *next;
} list;
#include "tlv.h"
#include "hash.h"
#include "parser.h"
// On which port do we listen to
#define LISTEN_PORT 1212
// The node ID
#define NODE_ID 42675882021843277
// The number of neighbours
// The neighbour table has 15 entries
#define NEIGHBOUR_MAX 15
// Static variables
static list *data_list;
static list *neighbour_list;
@ -66,13 +66,13 @@ static list *neighbour_list;
// fonctions signatures
void listen_for_packets();
int check_header(char * received_datagram[], int buffer_len, struct packet * packet_to_return);
int check_header(char * received_datagram, int buffer_len, packet * packet_to_return);
int validate_tlvs(struct packet * pack, struct tlv_list * tlv_l);
int validate_tlv(char *data, int pos, short packet_len);
int update_neighbours();
int work_with_tlvs(char * data[], short packet_len, struct sockaddr_in6 sender);
int work_with_tlvs(char * data, short packet_len, struct sockaddr_in6 sender);
void add_tlv(struct packet *packet, union tlv *tlv, char type);
@ -81,12 +81,12 @@ void add_tlv(struct packet *packet, union tlv *tlv, char type);
/* Takes a TLV and sends it over to everyone in the list of addresses.
* Returns -1 in case of error, 0 otherwise.
*/
int send_tlv(union tlv * tlv_to_send, int tlv_size, struct sockaddr_in6 * dest_list[], int dest_list_size, int socket_num);
int send_tlv(union tlv * tlv_to_send, int tlv_size, struct sockaddr_in6 * dest_list, int dest_list_size, int socket_num);
/* Takes a list of TLV and sends them over to everyone in the list of addresses.
* Returns -1 in case of error, 0 otherwise.
*/
int send_tlvs(struct list * tlv_list, int tlv_size, struct sockaddr_in6 * dest_list[], int dest_list_size, int socket_num);
int send_tlvs(struct list * tlv_list, int tlv_size, struct sockaddr_in6 * dest_list, int dest_list_size, int socket_num);
// threaded functions
void t_ask_for_more_peers();

BIN
src/node.o Normal file

Binary file not shown.

BIN
src/parser.o Normal file

Binary file not shown.

View File

@ -5,10 +5,6 @@
#include <netinet/in.h>
#include <stdlib.h>
#include "node.h"
#include "hash.h"
#include "parser.h"
#define LEN_NEIGHBOUR_REQ 0
#define LEN_NEIGHBOUR 18
#define LEN_NETWORK_HASH 16
@ -111,6 +107,10 @@ typedef union tlv {
warning *warning;
} tlv;
#include "node.h"
#include "hash.h"
#include "parser.h"
// build tlv from token
int build_tlv(tlv *tlv, struct cmd_token token);
@ -119,7 +119,7 @@ int build_pad1(tlv *tlv);
int build_padn(tlv *tlv, size_t len);
int build_neighbour_req(union tlv *tlv);
int build_neighbour(tlv *tlv, struct in6_addr ip, short port);
int build_network_hash(tlv *tlv, struct list *data_list);
int build_network_hash(tlv *tlv, list *data_list);
int build_network_state_req(tlv *tlv);
int build_node_hash(tlv *tlv, long node_id, short seqno, char *data);
int build_node_state_req(tlv *tlv, long node_id);

BIN
src/tlv.o Normal file

Binary file not shown.