summaryrefslogtreecommitdiffstats
path: root/ffd/ffd.h
diff options
context:
space:
mode:
Diffstat (limited to 'ffd/ffd.h')
-rw-r--r--ffd/ffd.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/ffd/ffd.h b/ffd/ffd.h
index e7c48d7..bf00984 100644
--- a/ffd/ffd.h
+++ b/ffd/ffd.h
@@ -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);