From 56d6c530eba46dde7280d6743fea7e750f2d5635 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 13 May 2000 11:42:06 +0000 Subject: Added fib_route() which does (although very slow) lookup of longest-match routing in a FIB. --- nest/rt-fib.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'nest/rt-fib.c') diff --git a/nest/rt-fib.c b/nest/rt-fib.c index 22ba2ff..6a5d136 100644 --- a/nest/rt-fib.c +++ b/nest/rt-fib.c @@ -152,6 +152,23 @@ fib_get(struct fib *f, ip_addr *a, int len) return e; } +void * +fib_route(struct fib *f, ip_addr a, int len) +{ + ip_addr a0; + void *t; + + while (len >= 0) + { + a0 = ipa_and(a, ipa_mkmask(len)); + t = fib_find(f, &a0, len); + if (t) + return t; + len--; + } + return NULL; +} + static inline void fib_merge_readers(struct fib_iterator *i, struct fib_node *to) { -- cgit v1.2.3