diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2015-12-21 20:16:05 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2015-12-21 20:28:44 +0100 |
commit | 600998fcb1a1d155215ab32644982e9b78767e3e (patch) | |
tree | 987193a992951f8a543d3473441202b6b26f0f08 /proto/rip | |
parent | 67aa88336a91e635753ba42df45d7de5e191ed35 (diff) |
Modify FIB_WALK() and FIB_ITERATE() to work with new FIB code
Returned user data pointers have offset relative to fib_node.
Diffstat (limited to 'proto/rip')
-rw-r--r-- | proto/rip/packets.c | 8 | ||||
-rw-r--r-- | proto/rip/rip.c | 14 |
2 files changed, 9 insertions, 13 deletions
diff --git a/proto/rip/packets.c b/proto/rip/packets.c index 2e83a463..1017eb92 100644 --- a/proto/rip/packets.c +++ b/proto/rip/packets.c @@ -417,10 +417,8 @@ rip_send_response(struct rip_proto *p, struct rip_iface *ifa) pkt->unused = 0; pos += rip_pkt_hdrlen(ifa); - FIB_ITERATE_START(&p->rtable, &ifa->tx_fit, z) + FIB_ITERATE_START(&p->rtable, &ifa->tx_fit, struct rip_entry, en) { - struct rip_entry *en = (struct rip_entry *) z; - /* Dummy entries */ if (!en->valid) goto next_entry; @@ -437,7 +435,7 @@ rip_send_response(struct rip_proto *p, struct rip_iface *ifa) /* Not enough space for current entry */ if (pos > max) { - FIB_ITERATE_PUT(&ifa->tx_fit, z); + FIB_ITERATE_PUT(&ifa->tx_fit); goto break_loop; } @@ -490,7 +488,7 @@ rip_send_response(struct rip_proto *p, struct rip_iface *ifa) next_entry: ; } - FIB_ITERATE_END(z); + FIB_ITERATE_END; ifa->tx_active = 0; /* Do not send empty packet */ diff --git a/proto/rip/rip.c b/proto/rip/rip.c index f90d7711..7e5d6802 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -823,9 +823,8 @@ rip_timer(timer *t) FIB_ITERATE_INIT(&fit, &p->rtable); loop: - FIB_ITERATE_START(&p->rtable, &fit, node) + FIB_ITERATE_START(&p->rtable, &fit, struct rip_entry, en) { - struct rip_entry *en = (struct rip_entry *) node; struct rip_rte *rt, **rp; int changed = 0; @@ -852,7 +851,7 @@ rip_timer(timer *t) * rip_rt_notify() -> p->rtable change, invalidating hidden variables. */ - FIB_ITERATE_PUT_NEXT(&fit, &p->rtable, node); + FIB_ITERATE_PUT_NEXT(&fit, &p->rtable); rip_announce_rte(p, en); goto loop; } @@ -874,12 +873,12 @@ rip_timer(timer *t) /* Remove empty nodes */ if (!en->valid && !en->routes) { - FIB_ITERATE_PUT(&fit, node); - fib_delete(&p->rtable, node); + FIB_ITERATE_PUT(&fit); + fib_delete(&p->rtable, en); goto loop; } } - FIB_ITERATE_END(node); + FIB_ITERATE_END; p->rt_reload = 0; @@ -1248,9 +1247,8 @@ rip_dump(struct proto *P) int i; i = 0; - FIB_WALK(&p->rtable, e) + FIB_WALK(&p->rtable, struct rip_entry, en) { - struct rip_entry *en = (struct rip_entry *) e; debug("RIP: entry #%d: %N via %I dev %s valid %d metric %d age %d s\n", i++, en->n.addr, en->next_hop, en->iface->name, en->valid, en->metric, now - en->changed); |