diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-08 07:32:38 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-08 07:32:38 +0200 |
commit | 8e810f5fd809bad3047ea9224dd058edd20a64ac (patch) | |
tree | fb1c16f6842c3626332afffd8f5ad8036a1cdbfc /ffd/ffd.h | |
parent | e912f0374016bb4f21f6f4259c0d488738d98997 (diff) | |
download | ffd-8e810f5fd809bad3047ea9224dd058edd20a64ac.tar ffd-8e810f5fd809bad3047ea9224dd058edd20a64ac.zip |
Keep track of forwarded seqno requests
Diffstat (limited to 'ffd/ffd.h')
-rw-r--r-- | ffd/ffd.h | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -47,6 +47,8 @@ #define FFD_UPDATE_REQUEST_TIMEOUT(interval) ((interval)*13/4) /* 3.25 intervals */ +#define FFD_SEQNO_REQUEST_TIMEOUT 50 + #define FFD_MAINTENANCE_INTERVAL FFD_HELLO_INTERVAL @@ -73,6 +75,14 @@ typedef struct _ffd_nexthop_t { bool requested_update; } ffd_nexthop_t; +typedef struct _ffd_seqno_req_t { + struct _ffd_seqno_req_t *next; + + struct timespec last_req; + struct _ffd_neigh_t *neigh; + uint16_t seqno; +} ffd_seqno_req_t; + typedef struct _ffd_announce_t { struct _ffd_announce_t *next; @@ -84,6 +94,8 @@ typedef struct _ffd_announce_t { uint16_t last_metric; ffd_metric_seqno_t feasibility_distance; + ffd_seqno_req_t *seqno_req_list; + ffd_nexthop_t *selected; ffd_nexthop_t *nexthop_list; @@ -189,6 +201,10 @@ void ffd_announce_update_nexthop(ffd_announce_t *announce, ffd_nexthop_t *nextho ffd_announce_t* ffd_announce_new(void); ffd_announce_t* ffd_announce_find(const ffd_node_id_t *node, uint16_t type, uint16_t key); ffd_announce_t* ffd_announce_get(const ffd_node_id_t *node, uint16_t type, uint16_t key); +ffd_nexthop_t* ffd_announce_nexthop_find(const ffd_announce_t *announce, ffd_neigh_t *neigh); +ffd_nexthop_t* ffd_announce_nexthop_new(ffd_announce_t *announce, ffd_neigh_t *neigh); +bool ffd_announce_seqno_request(ffd_announce_t *announce, ffd_neigh_t *neigh, uint16_t seqno); +void ffd_announce_seqno_request_free_list(ffd_announce_t *announce); void ffd_send_ack(ffd_neigh_t *neigh, uint16_t nonce); void ffd_send_hellos(void); |