// Define constants #ifndef NODE_H #define NODE_H // The node ID #define NODE_ID 203242402519736214145149136169422092269247115186189140178187251487819615911212154252117172522111472481308026129190139512419121015210238252292031613214452118122204415160254 // 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 d’un * paquet de la part de ce pair ; */ typedef struct neighbour_peer { struct in6_addr ip; short port; char is_temporary; struct timeval last_seen; } neighbour_peer; // The strucuture to hold the messages /* It's a list of triplets, (Li,Si,Di) * Li : The Node ID of the publisher 64 bits * Si : the sequence number 16 bits * Di : the data of the message 192 bytes */ typedef struct message { long node_id_publisher; short seqno; char *data; } message; // TODO // fonctions signatures void listen_for_packets(); void check_header(); void update_neighbours(); void work_with_tlvs(); int validate_tlv(unsigned char *data, int pos); // threaded functions void t_ask_for_more_peers(); void t_update_neighbours(); void t_get_network_state(); // Helper functions char * hash(); short * get_seq_no(short s, int n); #endif