fafebaa32f
feed for a comment
65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
// 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_tlvs();
|
||
|
||
// 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
|