X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=dummynet2%2Fradix.c;h=4bef996d24531fa06353e2809b43bad8287fe7b8;hb=HEAD;hp=6e256d3cf8ba2828a0efc9ca86ec2af49f70bea5;hpb=7677cf8ea078c67480dbef9bdbda736cc97b5ac0;p=ipfw.git diff --git a/dummynet2/radix.c b/dummynet2/radix.c index 6e256d3..4bef996 100644 --- a/dummynet2/radix.c +++ b/dummynet2/radix.c @@ -54,7 +54,7 @@ #define log(x, arg...) fprintf(stderr, ## arg) #define panic(x) fprintf(stderr, "PANIC: %s", x), exit(1) #define min(a, b) ((a) < (b) ? (a) : (b) ) -#include "include/net/radix.h" +#include #endif /* !_KERNEL */ static int rn_walktree_from(struct radix_node_head *h, void *a, void *m, @@ -762,8 +762,10 @@ on2: if (m->rm_flags & RNF_NORMAL) { mmask = m->rm_leaf->rn_mask; if (tt->rn_flags & RNF_NORMAL) { +#if !defined(RADIX_MPATH) log(LOG_ERR, "Non-unique normal route, mask not entered\n"); +#endif return tt; } } else @@ -934,13 +936,10 @@ on1: MKFree(m); m = mm; } - if (m) { - /* these two variables are used to avoid a possible - compiler bug while using a macro with variable arguments */ - void *log_m = m; - void *log_x = x; - log(LOG_ERR, "rn_delete: Orphaned Mask %p at %p\n", log_m, log_x); - } + if (m) + log(LOG_ERR, + "rn_delete: Orphaned Mask %p at %p\n", + m, x); } } /* @@ -1165,6 +1164,22 @@ rn_inithead(head, off) return (1); } +int +rn_detachhead(void **head) +{ + struct radix_node_head *rnh; + + KASSERT((head != NULL && *head != NULL), + ("%s: head already freed", __func__)); + rnh = *head; + + /* Free nodes. */ + Free(rnh); + + *head = NULL; + return (1); +} + void rn_init(int maxk) {