summaryrefslogtreecommitdiffstats
path: root/src/babel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/babel.h')
-rw-r--r--src/babel.h48
1 files changed, 20 insertions, 28 deletions
diff --git a/src/babel.h b/src/babel.h
index b85438b..0d64e9c 100644
--- a/src/babel.h
+++ b/src/babel.h
@@ -55,16 +55,18 @@
struct gmrf_context {
+ gmrf_t *gmrf;
+
gp_babel_node_id_t self;
- gp_babel_iface_t *interfaces;
+ gmrf_iface_state_t *interfaces;
gp_babel_neigh_t *neighbours;
gp_babel_announce_t *announces;
};
-struct gp_babel_iface {
- gp_babel_iface_t *next;
+struct gmrf_iface_state {
+ gmrf_iface_state_t *next;
gmrf_iface_t *gmrf_iface;
@@ -78,7 +80,7 @@ struct gp_babel_neigh {
unsigned ref;
- gp_babel_iface_t *iface;
+ gmrf_iface_state_t *iface;
gmrf_addr_t addr;
uint16_t hello_log;
@@ -123,25 +125,25 @@ struct gp_babel_nexthop {
};
-void gp_babel_handle_packet(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_iface_t *iface, const gmrf_addr_t *source, const gp_babel_packet_t *packet);
+void gp_babel_handle_packet(gmrf_context_t *ctx, gmrf_iface_state_t *iface, const gmrf_addr_t *source, const gp_babel_packet_t *packet);
-void gp_babel_send_ack(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_neigh_t *neigh, uint16_t nonce);
-void gp_babel_send_hellos(gmrf_t *gmrf, gmrf_context_t *ctx);
+void gp_babel_send_ack(gmrf_context_t *ctx, gp_babel_neigh_t *neigh, uint16_t nonce);
+void gp_babel_send_hellos(gmrf_context_t *ctx);
-void gp_babel_send_update(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_iface_t *iface, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce, bool with_payload);
+void gp_babel_send_update(gmrf_context_t *ctx, gmrf_iface_state_t *iface, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce, bool with_payload);
-void gp_babel_send_announce_request(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_iface_t *iface, gp_babel_neigh_t *neigh, const gp_babel_node_id_t *node, uint16_t type, uint16_t key, bool with_payload);
-void gp_babel_send_seqno_request(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce, uint16_t seqno, uint8_t hop_count);
+void gp_babel_send_announce_request(gmrf_context_t *ctx, gmrf_iface_state_t *iface, gp_babel_neigh_t *neigh, const gp_babel_node_id_t *node, uint16_t type, uint16_t key, bool with_payload);
+void gp_babel_send_seqno_request(gmrf_context_t *ctx, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce, uint16_t seqno, uint8_t hop_count);
-gp_babel_announce_t* gp_babel_announce_new(gmrf_t *gmrf, gmrf_context_t *ctx);
-gp_babel_announce_t* gp_babel_announce_find(gmrf_t *gmrf, gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key);
-gp_babel_announce_t* gp_babel_announce_get(gmrf_t *gmrf, gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key);
-void gp_babel_announce_update(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce);
-void gp_babel_announce_free(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce);
+gp_babel_announce_t* gp_babel_announce_new(gmrf_context_t *ctx);
+gp_babel_announce_t* gp_babel_announce_find(gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key);
+gp_babel_announce_t* gp_babel_announce_get(gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key);
+void gp_babel_announce_update(gmrf_context_t *ctx, gp_babel_announce_t *announce);
+void gp_babel_announce_free(gmrf_context_t *ctx, gp_babel_announce_t *announce);
gp_babel_nexthop_t* gp_babel_announce_nexthop_new(gp_babel_announce_t *announce, gp_babel_neigh_t *neigh);
gp_babel_nexthop_t* gp_babel_announce_nexthop_find(const gp_babel_announce_t *announce, gp_babel_neigh_t *neigh);
-void gp_babel_announce_update_nexthop(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce, gp_babel_nexthop_t *nexthop, gp_babel_metric_seqno_t ms, uint16_t interval);
+void gp_babel_announce_update_nexthop(gmrf_context_t *ctx, gp_babel_announce_t *announce, gp_babel_nexthop_t *nexthop, gp_babel_metric_seqno_t ms, uint16_t interval);
static inline bool gp_babel_node_id_equal(const gp_babel_node_id_t *id1, const gp_babel_node_id_t *id2) {
@@ -152,16 +154,6 @@ static inline bool gp_babel_node_id_is_unspec(const gp_babel_node_id_t *id) {
return gp_babel_node_id_equal(id, &gp_babel_node_id_unspec);
};
-static inline gp_babel_iface_t* gp_babel_get_iface(gmrf_context_t *ctx, gmrf_iface_t *gmrf_iface) {
- gp_babel_iface_t *iface;
- for (iface = ctx->interfaces; iface; iface = iface->next) {
- if (iface->gmrf_iface == gmrf_iface)
- return iface;
- }
-
- return NULL;
-}
-
static inline bool gp_babel_is_metric_better(gp_babel_metric_seqno_t ms1, gp_babel_metric_seqno_t ms2) {
if (ms1.metric == GP_BABEL_INFINITY)
return false;
@@ -186,11 +178,11 @@ static inline bool gp_babel_is_feasible(const gp_babel_announce_t *announce, gp_
return gp_babel_is_metric_better(ms, announce->feasibility_distance);
}
-static inline void gp_babel_send_seqno_request_for(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce) {
+static inline void gp_babel_send_seqno_request_for(gmrf_context_t *ctx, gp_babel_neigh_t *neigh, gp_babel_announce_t *announce) {
if (announce->feasibility_distance.metric == GP_BABEL_INFINITY)
return;
- gp_babel_send_seqno_request(gmrf, ctx, neigh, announce, announce->feasibility_distance.seqno+1, GP_BABEL_SEQNO_REQ_HOP_LIMIT);
+ gp_babel_send_seqno_request(ctx, neigh, announce, announce->feasibility_distance.seqno+1, GP_BABEL_SEQNO_REQ_HOP_LIMIT);
}
#endif /* _GMRF_PROTO_BABEL_BABEL_H_ */