Commit c877efb2 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[IPV4]: Fix up lots of little whitespace indentation stuff in fib_trie.

Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 23a534e7
...@@ -1157,7 +1157,7 @@ static int __init ipv4_proc_init(void) ...@@ -1157,7 +1157,7 @@ static int __init ipv4_proc_init(void)
#ifdef CONFIG_IP_FIB_TRIE #ifdef CONFIG_IP_FIB_TRIE
if (fib_stat_proc_init()) if (fib_stat_proc_init())
goto out_fib_stat; goto out_fib_stat;
#endif #endif
if (ip_misc_proc_init()) if (ip_misc_proc_init())
goto out_misc; goto out_misc;
out: out:
......
...@@ -90,14 +90,14 @@ typedef unsigned int t_key; ...@@ -90,14 +90,14 @@ typedef unsigned int t_key;
#define T_LEAF 1 #define T_LEAF 1
#define NODE_TYPE_MASK 0x1UL #define NODE_TYPE_MASK 0x1UL
#define NODE_PARENT(_node) \ #define NODE_PARENT(_node) \
((struct tnode *)((_node)->_parent & ~NODE_TYPE_MASK)) ((struct tnode *)((_node)->_parent & ~NODE_TYPE_MASK))
#define NODE_SET_PARENT(_node, _ptr) \ #define NODE_SET_PARENT(_node, _ptr) \
((_node)->_parent = (((unsigned long)(_ptr)) | \ ((_node)->_parent = (((unsigned long)(_ptr)) | \
((_node)->_parent & NODE_TYPE_MASK))) ((_node)->_parent & NODE_TYPE_MASK)))
#define NODE_INIT_PARENT(_node, _type) \ #define NODE_INIT_PARENT(_node, _type) \
((_node)->_parent = (_type)) ((_node)->_parent = (_type))
#define NODE_TYPE(_node) \ #define NODE_TYPE(_node) \
((_node)->_parent & NODE_TYPE_MASK) ((_node)->_parent & NODE_TYPE_MASK)
#define IS_TNODE(n) (!(n->_parent & T_LEAF)) #define IS_TNODE(n) (!(n->_parent & T_LEAF))
#define IS_LEAF(n) (n->_parent & T_LEAF) #define IS_LEAF(n) (n->_parent & T_LEAF)
...@@ -242,9 +242,9 @@ static inline int tkey_mismatch(t_key a, int offset, t_key b) ...@@ -242,9 +242,9 @@ static inline int tkey_mismatch(t_key a, int offset, t_key b)
t_key diff = a ^ b; t_key diff = a ^ b;
int i = offset; int i = offset;
if(!diff) if (!diff)
return 0; return 0;
while((diff << i) >> (KEYLENGTH-1) == 0) while ((diff << i) >> (KEYLENGTH-1) == 0)
i++; i++;
return i; return i;
} }
...@@ -314,6 +314,7 @@ static void fn_free_alias(struct fib_alias *fa) ...@@ -314,6 +314,7 @@ static void fn_free_alias(struct fib_alias *fa)
The bits from (n->pos) to (n->pos + n->bits - 1) - "C" - are the index into The bits from (n->pos) to (n->pos + n->bits - 1) - "C" - are the index into
n's child array, and will of course be different for each child. n's child array, and will of course be different for each child.
The rest of the bits, from (n->pos + n->bits) onward, are completely unknown The rest of the bits, from (n->pos + n->bits) onward, are completely unknown
at this point. at this point.
...@@ -321,7 +322,7 @@ static void fn_free_alias(struct fib_alias *fa) ...@@ -321,7 +322,7 @@ static void fn_free_alias(struct fib_alias *fa)
static void check_tnode(struct tnode *tn) static void check_tnode(struct tnode *tn)
{ {
if(tn && tn->pos+tn->bits > 32) { if (tn && tn->pos+tn->bits > 32) {
printk("TNODE ERROR tn=%p, pos=%d, bits=%d\n", tn, tn->pos, tn->bits); printk("TNODE ERROR tn=%p, pos=%d, bits=%d\n", tn, tn->pos, tn->bits);
} }
} }
...@@ -332,7 +333,7 @@ static int inflate_threshold = 50; ...@@ -332,7 +333,7 @@ static int inflate_threshold = 50;
static struct leaf *leaf_new(void) static struct leaf *leaf_new(void)
{ {
struct leaf *l = kmalloc(sizeof(struct leaf), GFP_KERNEL); struct leaf *l = kmalloc(sizeof(struct leaf), GFP_KERNEL);
if(l) { if (l) {
NODE_INIT_PARENT(l, T_LEAF); NODE_INIT_PARENT(l, T_LEAF);
INIT_HLIST_HEAD(&l->list); INIT_HLIST_HEAD(&l->list);
} }
...@@ -342,7 +343,7 @@ static struct leaf *leaf_new(void) ...@@ -342,7 +343,7 @@ static struct leaf *leaf_new(void)
static struct leaf_info *leaf_info_new(int plen) static struct leaf_info *leaf_info_new(int plen)
{ {
struct leaf_info *li = kmalloc(sizeof(struct leaf_info), GFP_KERNEL); struct leaf_info *li = kmalloc(sizeof(struct leaf_info), GFP_KERNEL);
if(li) { if (li) {
li->plen = plen; li->plen = plen;
INIT_LIST_HEAD(&li->falh); INIT_LIST_HEAD(&li->falh);
} }
...@@ -386,7 +387,7 @@ static struct tnode* tnode_new(t_key key, int pos, int bits) ...@@ -386,7 +387,7 @@ static struct tnode* tnode_new(t_key key, int pos, int bits)
int sz = sizeof(struct tnode) + nchildren * sizeof(struct node *); int sz = sizeof(struct tnode) + nchildren * sizeof(struct node *);
struct tnode *tn = tnode_alloc(sz); struct tnode *tn = tnode_alloc(sz);
if(tn) { if (tn) {
memset(tn, 0, sz); memset(tn, 0, sz);
NODE_INIT_PARENT(tn, T_TNODE); NODE_INIT_PARENT(tn, T_TNODE);
tn->pos = pos; tn->pos = pos;
...@@ -395,7 +396,8 @@ static struct tnode* tnode_new(t_key key, int pos, int bits) ...@@ -395,7 +396,8 @@ static struct tnode* tnode_new(t_key key, int pos, int bits)
tn->full_children = 0; tn->full_children = 0;
tn->empty_children = 1<<bits; tn->empty_children = 1<<bits;
} }
if(trie_debug > 0)
if (trie_debug > 0)
printk("AT %p s=%u %u\n", tn, (unsigned int) sizeof(struct tnode), printk("AT %p s=%u %u\n", tn, (unsigned int) sizeof(struct tnode),
(unsigned int) (sizeof(struct node) * 1<<bits)); (unsigned int) (sizeof(struct node) * 1<<bits));
return tn; return tn;
...@@ -403,17 +405,17 @@ static struct tnode* tnode_new(t_key key, int pos, int bits) ...@@ -403,17 +405,17 @@ static struct tnode* tnode_new(t_key key, int pos, int bits)
static void tnode_free(struct tnode *tn) static void tnode_free(struct tnode *tn)
{ {
if(!tn) { if (!tn) {
trie_bug("tnode_free\n"); trie_bug("tnode_free\n");
} }
if(IS_LEAF(tn)) { if (IS_LEAF(tn)) {
free_leaf((struct leaf *)tn); free_leaf((struct leaf *)tn);
if(trie_debug > 0 ) if (trie_debug > 0 )
printk("FL %p \n", tn); printk("FL %p \n", tn);
} }
else if(IS_TNODE(tn)) { else if (IS_TNODE(tn)) {
__tnode_free(tn); __tnode_free(tn);
if(trie_debug > 0 ) if (trie_debug > 0 )
printk("FT %p \n", tn); printk("FT %p \n", tn);
} }
else { else {
...@@ -428,7 +430,7 @@ static void tnode_free(struct tnode *tn) ...@@ -428,7 +430,7 @@ static void tnode_free(struct tnode *tn)
static inline int tnode_full(struct tnode *tn, struct node *n) static inline int tnode_full(struct tnode *tn, struct node *n)
{ {
if(n == NULL || IS_LEAF(n)) if (n == NULL || IS_LEAF(n))
return 0; return 0;
return ((struct tnode *) n)->pos == tn->pos + tn->bits; return ((struct tnode *) n)->pos == tn->pos + tn->bits;
...@@ -449,7 +451,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct node *n, int w ...@@ -449,7 +451,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct node *n, int w
struct node *chi; struct node *chi;
int isfull; int isfull;
if(i >= 1<<tn->bits) { if (i >= 1<<tn->bits) {
printk("bits=%d, i=%d\n", tn->bits, i); printk("bits=%d, i=%d\n", tn->bits, i);
trie_bug("tnode_put_child_reorg bits"); trie_bug("tnode_put_child_reorg bits");
} }
...@@ -472,7 +474,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct node *n, int w ...@@ -472,7 +474,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct node *n, int w
else if (!wasfull && isfull) else if (!wasfull && isfull)
tn->full_children++; tn->full_children++;
if(n) if (n)
NODE_SET_PARENT(n, tn); NODE_SET_PARENT(n, tn);
tn->child[i] = n; tn->child[i] = n;
...@@ -487,7 +489,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -487,7 +489,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
if (!tn) if (!tn)
return NULL; return NULL;
if(trie_debug) if (trie_debug)
printk("In tnode_resize %p inflate_threshold=%d threshold=%d\n", printk("In tnode_resize %p inflate_threshold=%d threshold=%d\n",
tn, inflate_threshold, halve_threshold); tn, inflate_threshold, halve_threshold);
...@@ -505,7 +507,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -505,7 +507,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
/* compress one level */ /* compress one level */
struct node *n = tn->child[i]; struct node *n = tn->child[i];
if(n) if (n)
NODE_INIT_PARENT(n, NODE_TYPE(n)); NODE_INIT_PARENT(n, NODE_TYPE(n));
write_unlock_bh(&fib_lock); write_unlock_bh(&fib_lock);
...@@ -552,7 +554,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -552,7 +554,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
* new_child_length; * new_child_length;
* if (new_fill_factor >= inflate_threshold) * if (new_fill_factor >= inflate_threshold)
* *
* ...and so on, tho it would mess up the while() loop. * ...and so on, tho it would mess up the while () loop.
* *
* anyway, * anyway,
* 100 * (not_to_be_doubled + 2*to_be_doubled) / new_child_length >= * 100 * (not_to_be_doubled + 2*to_be_doubled) / new_child_length >=
...@@ -587,7 +589,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -587,7 +589,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
tn = inflate(t, tn, &err); tn = inflate(t, tn, &err);
if(err) { if (err) {
#ifdef CONFIG_IP_FIB_TRIE_STATS #ifdef CONFIG_IP_FIB_TRIE_STATS
t->stats.resize_node_skipped++; t->stats.resize_node_skipped++;
#endif #endif
...@@ -609,7 +611,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -609,7 +611,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
tn = halve(t, tn, &err); tn = halve(t, tn, &err);
if(err) { if (err) {
#ifdef CONFIG_IP_FIB_TRIE_STATS #ifdef CONFIG_IP_FIB_TRIE_STATS
t->stats.resize_node_skipped++; t->stats.resize_node_skipped++;
#endif #endif
...@@ -628,7 +630,7 @@ static struct node *resize(struct trie *t, struct tnode *tn) ...@@ -628,7 +630,7 @@ static struct node *resize(struct trie *t, struct tnode *tn)
/* compress one level */ /* compress one level */
struct node *n = tn->child[i]; struct node *n = tn->child[i];
if(n) if (n)
NODE_INIT_PARENT(n, NODE_TYPE(n)); NODE_INIT_PARENT(n, NODE_TYPE(n));
write_unlock_bh(&fib_lock); write_unlock_bh(&fib_lock);
...@@ -648,7 +650,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -648,7 +650,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
int olen = tnode_child_length(tn); int olen = tnode_child_length(tn);
int i; int i;
if(trie_debug) if (trie_debug)
printk("In inflate\n"); printk("In inflate\n");
tn = tnode_new(oldtnode->key, oldtnode->pos, oldtnode->bits + 1); tn = tnode_new(oldtnode->key, oldtnode->pos, oldtnode->bits + 1);
...@@ -679,7 +681,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -679,7 +681,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
left = tnode_new(inode->key&(~m), inode->pos + 1, left = tnode_new(inode->key&(~m), inode->pos + 1,
inode->bits - 1); inode->bits - 1);
if(!left) { if (!left) {
*err = -ENOMEM; *err = -ENOMEM;
break; break;
} }
...@@ -687,7 +689,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -687,7 +689,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
right = tnode_new(inode->key|m, inode->pos + 1, right = tnode_new(inode->key|m, inode->pos + 1,
inode->bits - 1); inode->bits - 1);
if(!right) { if (!right) {
*err = -ENOMEM; *err = -ENOMEM;
break; break;
} }
...@@ -697,12 +699,12 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -697,12 +699,12 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
} }
} }
if(*err) { if (*err) {
int size = tnode_child_length(tn); int size = tnode_child_length(tn);
int j; int j;
for(j = 0; j < size; j++) for(j = 0; j < size; j++)
if( tn->child[j]) if (tn->child[j])
tnode_free((struct tnode *)tn->child[j]); tnode_free((struct tnode *)tn->child[j]);
tnode_free(tn); tnode_free(tn);
...@@ -720,9 +722,9 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -720,9 +722,9 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
/* A leaf or an internal node with skipped bits */ /* A leaf or an internal node with skipped bits */
if(IS_LEAF(node) || ((struct tnode *) node)->pos > if (IS_LEAF(node) || ((struct tnode *) node)->pos >
tn->pos + tn->bits - 1) { tn->pos + tn->bits - 1) {
if(tkey_extract_bits(node->key, oldtnode->pos + oldtnode->bits, if (tkey_extract_bits(node->key, oldtnode->pos + oldtnode->bits,
1) == 0) 1) == 0)
put_child(t, tn, 2*i, node); put_child(t, tn, 2*i, node);
else else
...@@ -769,13 +771,13 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err) ...@@ -769,13 +771,13 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn, int *err)
left = (struct tnode *) tnode_get_child(tn, 2*i); left = (struct tnode *) tnode_get_child(tn, 2*i);
put_child(t, tn, 2*i, NULL); put_child(t, tn, 2*i, NULL);
if(!left) if (!left)
BUG(); BUG();
right = (struct tnode *) tnode_get_child(tn, 2*i+1); right = (struct tnode *) tnode_get_child(tn, 2*i+1);
put_child(t, tn, 2*i+1, NULL); put_child(t, tn, 2*i+1, NULL);
if(!right) if (!right)
BUG(); BUG();
size = tnode_child_length(left); size = tnode_child_length(left);
...@@ -800,9 +802,9 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err) ...@@ -800,9 +802,9 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err)
int i; int i;
int olen = tnode_child_length(tn); int olen = tnode_child_length(tn);
if(trie_debug) printk("In halve\n"); if (trie_debug) printk("In halve\n");
tn=tnode_new(oldtnode->key, oldtnode->pos, oldtnode->bits - 1); tn = tnode_new(oldtnode->key, oldtnode->pos, oldtnode->bits - 1);
if (!tn) { if (!tn) {
*err = -ENOMEM; *err = -ENOMEM;
...@@ -821,11 +823,11 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err) ...@@ -821,11 +823,11 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err)
right = tnode_get_child(oldtnode, i+1); right = tnode_get_child(oldtnode, i+1);
/* Two nonempty children */ /* Two nonempty children */
if( left && right) { if (left && right) {
struct tnode *newBinNode = struct tnode *newBinNode =
tnode_new(left->key, tn->pos + tn->bits, 1); tnode_new(left->key, tn->pos + tn->bits, 1);
if(!newBinNode) { if (!newBinNode) {
*err = -ENOMEM; *err = -ENOMEM;
break; break;
} }
...@@ -833,12 +835,12 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err) ...@@ -833,12 +835,12 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err)
} }
} }
if(*err) { if (*err) {
int size = tnode_child_length(tn); int size = tnode_child_length(tn);
int j; int j;
for(j = 0; j < size; j++) for(j = 0; j < size; j++)
if( tn->child[j]) if (tn->child[j])
tnode_free((struct tnode *)tn->child[j]); tnode_free((struct tnode *)tn->child[j]);
tnode_free(tn); tnode_free(tn);
...@@ -865,7 +867,7 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err) ...@@ -865,7 +867,7 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err)
(struct tnode *) tnode_get_child(tn, i/2); (struct tnode *) tnode_get_child(tn, i/2);
put_child(t, tn, i/2, NULL); put_child(t, tn, i/2, NULL);
if(!newBinNode) if (!newBinNode)
BUG(); BUG();
put_child(t, newBinNode, 0, left); put_child(t, newBinNode, 0, left);
...@@ -879,7 +881,7 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err) ...@@ -879,7 +881,7 @@ static struct tnode *halve(struct trie *t, struct tnode *tn, int *err)
static void *trie_init(struct trie *t) static void *trie_init(struct trie *t)
{ {
if(t) { if (t) {
t->size = 0; t->size = 0;
t->trie = NULL; t->trie = NULL;
t->revision = 0; t->revision = 0;
...@@ -896,8 +898,7 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) ...@@ -896,8 +898,7 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen)
struct leaf_info *li; struct leaf_info *li;
hlist_for_each_entry(li, node, head, hlist) { hlist_for_each_entry(li, node, head, hlist) {
if (li->plen == plen)
if ( li->plen == plen )
return li; return li;
} }
return NULL; return NULL;
...@@ -905,10 +906,10 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) ...@@ -905,10 +906,10 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen)
static inline struct list_head * get_fa_head(struct leaf *l, int plen) static inline struct list_head * get_fa_head(struct leaf *l, int plen)
{ {
struct list_head *fa_head=NULL; struct list_head *fa_head = NULL;
struct leaf_info *li = find_leaf_info(&l->list, plen); struct leaf_info *li = find_leaf_info(&l->list, plen);
if(li) if (li)
fa_head = &li->falh; fa_head = &li->falh;
return fa_head; return fa_head;
...@@ -916,12 +917,12 @@ static inline struct list_head * get_fa_head(struct leaf *l, int plen) ...@@ -916,12 +917,12 @@ static inline struct list_head * get_fa_head(struct leaf *l, int plen)
static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new) static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new)
{ {
struct leaf_info *li=NULL, *last=NULL; struct leaf_info *li = NULL, *last = NULL;
struct hlist_node *node, *tmp; struct hlist_node *node, *tmp;
write_lock_bh(&fib_lock); write_lock_bh(&fib_lock);
if(hlist_empty(head)) if (hlist_empty(head))
hlist_add_head(&new->hlist, head); hlist_add_head(&new->hlist, head);
else { else {
hlist_for_each_entry_safe(li, node, tmp, head, hlist) { hlist_for_each_entry_safe(li, node, tmp, head, hlist) {
...@@ -931,7 +932,7 @@ static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new) ...@@ -931,7 +932,7 @@ static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new)
last = li; last = li;
} }
if(last) if (last)
hlist_add_after(&last->hlist, &new->hlist); hlist_add_after(&last->hlist, &new->hlist);
else else
hlist_add_before(&new->hlist, &li->hlist); hlist_add_before(&new->hlist, &li->hlist);
...@@ -947,14 +948,14 @@ fib_find_node(struct trie *t, u32 key) ...@@ -947,14 +948,14 @@ fib_find_node(struct trie *t, u32 key)
struct node *n; struct node *n;
pos = 0; pos = 0;
n=t->trie; n = t->trie;
while (n != NULL && NODE_TYPE(n) == T_TNODE) { while (n != NULL && NODE_TYPE(n) == T_TNODE) {
tn = (struct tnode *) n; tn = (struct tnode *) n;
check_tnode(tn); check_tnode(tn);
if(tkey_sub_equals(tn->key, pos, tn->pos-pos, key)) { if (tkey_sub_equals(tn->key, pos, tn->pos-pos, key)) {
pos=tn->pos + tn->bits; pos=tn->pos + tn->bits;
n = tnode_get_child(tn, tkey_extract_bits(key, tn->pos, tn->bits)); n = tnode_get_child(tn, tkey_extract_bits(key, tn->pos, tn->bits));
} }
...@@ -977,7 +978,7 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn) ...@@ -977,7 +978,7 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn)
t_key cindex, key; t_key cindex, key;
struct tnode *tp = NULL; struct tnode *tp = NULL;
if(!tn) if (!tn)
BUG(); BUG();
key = tn->key; key = tn->key;
...@@ -985,15 +986,15 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn) ...@@ -985,15 +986,15 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn)
while (tn != NULL && NODE_PARENT(tn) != NULL) { while (tn != NULL && NODE_PARENT(tn) != NULL) {
if( i > 10 ) { if (i > 10) {
printk("Rebalance tn=%p \n", tn); printk("Rebalance tn=%p \n", tn);
if(tn) printk("tn->parent=%p \n", NODE_PARENT(tn)); if (tn) printk("tn->parent=%p \n", NODE_PARENT(tn));
printk("Rebalance tp=%p \n", tp); printk("Rebalance tp=%p \n", tp);
if(tp) printk("tp->parent=%p \n", NODE_PARENT(tp)); if (tp) printk("tp->parent=%p \n", NODE_PARENT(tp));
} }
if( i > 12 ) BUG(); if (i > 12) BUG();
i++; i++;
tp = NODE_PARENT(tn); tp = NODE_PARENT(tn);
...@@ -1002,7 +1003,7 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn) ...@@ -1002,7 +1003,7 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn)
tn = (struct tnode *) resize (t, (struct tnode *)tn); tn = (struct tnode *) resize (t, (struct tnode *)tn);
tnode_put_child_reorg((struct tnode *)tp, cindex,(struct node*)tn, wasfull); tnode_put_child_reorg((struct tnode *)tp, cindex,(struct node*)tn, wasfull);
if(!NODE_PARENT(tn)) if (!NODE_PARENT(tn))
break; break;
tn = NODE_PARENT(tn); tn = NODE_PARENT(tn);
...@@ -1022,12 +1023,12 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1022,12 +1023,12 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
struct node *n; struct node *n;
struct leaf *l; struct leaf *l;
int missbit; int missbit;
struct list_head *fa_head=NULL; struct list_head *fa_head = NULL;
struct leaf_info *li; struct leaf_info *li;
t_key cindex; t_key cindex;
pos = 0; pos = 0;
n=t->trie; n = t->trie;
/* If we point to NULL, stop. Either the tree is empty and we should /* If we point to NULL, stop. Either the tree is empty and we should
* just put a new leaf in if, or we have reached an empty child slot, * just put a new leaf in if, or we have reached an empty child slot,
...@@ -1052,12 +1053,12 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1052,12 +1053,12 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
check_tnode(tn); check_tnode(tn);
if(tkey_sub_equals(tn->key, pos, tn->pos-pos, key)) { if (tkey_sub_equals(tn->key, pos, tn->pos-pos, key)) {
tp = tn; tp = tn;
pos=tn->pos + tn->bits; pos=tn->pos + tn->bits;
n = tnode_get_child(tn, tkey_extract_bits(key, tn->pos, tn->bits)); n = tnode_get_child(tn, tkey_extract_bits(key, tn->pos, tn->bits));
if(n && NODE_PARENT(n) != tn) { if (n && NODE_PARENT(n) != tn) {
printk("BUG tn=%p, n->parent=%p\n", tn, NODE_PARENT(n)); printk("BUG tn=%p, n->parent=%p\n", tn, NODE_PARENT(n));
BUG(); BUG();
} }
...@@ -1072,7 +1073,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1072,7 +1073,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
* tp is n's (parent) ----> NULL or TNODE * tp is n's (parent) ----> NULL or TNODE
*/ */
if(tp && IS_LEAF(tp)) if (tp && IS_LEAF(tp))
BUG(); BUG();
...@@ -1083,7 +1084,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1083,7 +1084,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
li = leaf_info_new(plen); li = leaf_info_new(plen);
if(! li) { if (!li) {
*err = -ENOMEM; *err = -ENOMEM;
goto err; goto err;
} }
...@@ -1095,7 +1096,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1095,7 +1096,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
t->size++; t->size++;
l = leaf_new(); l = leaf_new();
if(! l) { if (!l) {
*err = -ENOMEM; *err = -ENOMEM;
goto err; goto err;
} }
...@@ -1103,7 +1104,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1103,7 +1104,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
l->key = key; l->key = key;
li = leaf_info_new(plen); li = leaf_info_new(plen);
if(! li) { if (!li) {
tnode_free((struct tnode *) l); tnode_free((struct tnode *) l);
*err = -ENOMEM; *err = -ENOMEM;
goto err; goto err;
...@@ -1136,7 +1137,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1136,7 +1137,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
pos=tp->pos+tp->bits; pos=tp->pos+tp->bits;
else else
pos=0; pos=0;
if(n) { if (n) {
newpos = tkey_mismatch(key, pos, n->key); newpos = tkey_mismatch(key, pos, n->key);
tn = tnode_new(n->key, newpos, 1); tn = tnode_new(n->key, newpos, 1);
} }
...@@ -1145,7 +1146,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1145,7 +1146,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
tn = tnode_new(key, newpos, 1); /* First tnode */ tn = tnode_new(key, newpos, 1); /* First tnode */
} }
if(!tn) { if (!tn) {
free_leaf_info(li); free_leaf_info(li);
tnode_free((struct tnode *) l); tnode_free((struct tnode *) l);
*err = -ENOMEM; *err = -ENOMEM;
...@@ -1158,7 +1159,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1158,7 +1159,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
put_child(t, tn, missbit, (struct node *)l); put_child(t, tn, missbit, (struct node *)l);
put_child(t, tn, 1-missbit, n); put_child(t, tn, 1-missbit, n);
if(tp) { if (tp) {
cindex = tkey_extract_bits(key, tp->pos, tp->bits); cindex = tkey_extract_bits(key, tp->pos, tp->bits);
put_child(t, (struct tnode *)tp, cindex, (struct node *)tn); put_child(t, (struct tnode *)tp, cindex, (struct node *)tn);
} }
...@@ -1167,7 +1168,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen) ...@@ -1167,7 +1168,7 @@ fib_insert_node(struct trie *t, int *err, u32 key, int plen)
tp = tn; tp = tn;
} }
} }
if(tp && tp->pos+tp->bits > 32) { if (tp && tp->pos+tp->bits > 32) {
printk("ERROR tp=%p pos=%d, bits=%d, key=%0x plen=%d\n", printk("ERROR tp=%p pos=%d, bits=%d, key=%0x plen=%d\n",
tp, tp->pos, tp->bits, key, plen); tp, tp->pos, tp->bits, key, plen);
} }
...@@ -1185,7 +1186,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1185,7 +1186,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
{ {
struct trie *t = (struct trie *) tb->tb_data; struct trie *t = (struct trie *) tb->tb_data;
struct fib_alias *fa, *new_fa; struct fib_alias *fa, *new_fa;
struct list_head *fa_head=NULL; struct list_head *fa_head = NULL;
struct fib_info *fi; struct fib_info *fi;
int plen = r->rtm_dst_len; int plen = r->rtm_dst_len;
int type = r->rtm_type; int type = r->rtm_type;
...@@ -1203,12 +1204,12 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1203,12 +1204,12 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
key = ntohl(key); key = ntohl(key);
if(trie_debug) if (trie_debug)
printk("Insert table=%d %08x/%d\n", tb->tb_id, key, plen); printk("Insert table=%d %08x/%d\n", tb->tb_id, key, plen);
mask = ntohl( inet_make_mask(plen) ); mask = ntohl( inet_make_mask(plen) );
if(key & ~mask) if (key & ~mask)
return -EINVAL; return -EINVAL;
key = key & mask; key = key & mask;
...@@ -1219,7 +1220,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1219,7 +1220,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
l = fib_find_node(t, key); l = fib_find_node(t, key);
fa = NULL; fa = NULL;
if(l) { if (l) {
fa_head = get_fa_head(l, plen); fa_head = get_fa_head(l, plen);
fa = fib_find_alias(fa_head, tos, fi->fib_priority); fa = fib_find_alias(fa_head, tos, fi->fib_priority);
} }
...@@ -1304,10 +1305,10 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1304,10 +1305,10 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
* Insert new entry to the list. * Insert new entry to the list.
*/ */
if(!fa_head) { if (!fa_head) {
fa_head = fib_insert_node(t, &err, key, plen); fa_head = fib_insert_node(t, &err, key, plen);
err = 0; err = 0;
if(err) if (err)
goto out_free_new_fa; goto out_free_new_fa;
} }
...@@ -1376,7 +1377,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result ...@@ -1376,7 +1377,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
n = t->trie; n = t->trie;
read_lock(&fib_lock); read_lock(&fib_lock);
if(!n) if (!n)
goto failed; goto failed;
#ifdef CONFIG_IP_FIB_TRIE_STATS #ifdef CONFIG_IP_FIB_TRIE_STATS
...@@ -1385,7 +1386,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result ...@@ -1385,7 +1386,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
/* Just a leaf? */ /* Just a leaf? */
if (IS_LEAF(n)) { if (IS_LEAF(n)) {
if( check_leaf(t, (struct leaf *)n, key, &plen, flp, res, &ret) ) if (check_leaf(t, (struct leaf *)n, key, &plen, flp, res, &ret))
goto found; goto found;
goto failed; goto failed;
} }
...@@ -1397,7 +1398,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result ...@@ -1397,7 +1398,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
pos = pn->pos; pos = pn->pos;
bits = pn->bits; bits = pn->bits;
if(!chopped_off) if (!chopped_off)
cindex = tkey_extract_bits(MASK_PFX(key, current_prefix_length), pos, bits); cindex = tkey_extract_bits(MASK_PFX(key, current_prefix_length), pos, bits);
n = tnode_get_child(pn, cindex); n = tnode_get_child(pn, cindex);
...@@ -1507,7 +1508,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result ...@@ -1507,7 +1508,7 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
continue; continue;
} }
if (IS_LEAF(n)) { if (IS_LEAF(n)) {
if( check_leaf(t, (struct leaf *)n, key, &plen, flp, res, &ret)) if (check_leaf(t, (struct leaf *)n, key, &plen, flp, res, &ret))
goto found; goto found;
} }
backtrace: backtrace:
...@@ -1527,10 +1528,10 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result ...@@ -1527,10 +1528,10 @@ fn_trie_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
* chopped off all bits in this tnode walk up to our parent. * chopped off all bits in this tnode walk up to our parent.
*/ */
if(chopped_off <= pn->bits) if (chopped_off <= pn->bits)
cindex &= ~(1 << (chopped_off-1)); cindex &= ~(1 << (chopped_off-1));
else { else {
if( NODE_PARENT(pn) == NULL) if (NODE_PARENT(pn) == NULL)
goto failed; goto failed;
/* Get Child's index */ /* Get Child's index */
...@@ -1558,7 +1559,7 @@ static int trie_leaf_remove(struct trie *t, t_key key) ...@@ -1558,7 +1559,7 @@ static int trie_leaf_remove(struct trie *t, t_key key)
struct node *n = t->trie; struct node *n = t->trie;
struct leaf *l; struct leaf *l;
if(trie_debug) if (trie_debug)
printk("entering trie_leaf_remove(%p)\n", n); printk("entering trie_leaf_remove(%p)\n", n);
/* Note that in the case skipped bits, those bits are *not* checked! /* Note that in the case skipped bits, those bits are *not* checked!
...@@ -1571,14 +1572,14 @@ static int trie_leaf_remove(struct trie *t, t_key key) ...@@ -1571,14 +1572,14 @@ static int trie_leaf_remove(struct trie *t, t_key key)
check_tnode(tn); check_tnode(tn);
n = tnode_get_child(tn ,tkey_extract_bits(key, tn->pos, tn->bits)); n = tnode_get_child(tn ,tkey_extract_bits(key, tn->pos, tn->bits));
if(n && NODE_PARENT(n) != tn) { if (n && NODE_PARENT(n) != tn) {
printk("BUG tn=%p, n->parent=%p\n", tn, NODE_PARENT(n)); printk("BUG tn=%p, n->parent=%p\n", tn, NODE_PARENT(n));
BUG(); BUG();
} }
} }
l = (struct leaf *) n; l = (struct leaf *) n;
if(!n || !tkey_equals(l->key, key)) if (!n || !tkey_equals(l->key, key))
return 0; return 0;
/* /*
...@@ -1592,7 +1593,7 @@ static int trie_leaf_remove(struct trie *t, t_key key) ...@@ -1592,7 +1593,7 @@ static int trie_leaf_remove(struct trie *t, t_key key)
tp = NODE_PARENT(n); tp = NODE_PARENT(n);
tnode_free((struct tnode *) n); tnode_free((struct tnode *) n);
if(tp) { if (tp) {
cindex = tkey_extract_bits(key, tp->pos, tp->bits); cindex = tkey_extract_bits(key, tp->pos, tp->bits);
put_child(t, (struct tnode *)tp, cindex, NULL); put_child(t, (struct tnode *)tp, cindex, NULL);
t->trie = trie_rebalance(t, tp); t->trie = trie_rebalance(t, tp);
...@@ -1625,13 +1626,13 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1625,13 +1626,13 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
key = ntohl(key); key = ntohl(key);
mask = ntohl( inet_make_mask(plen) ); mask = ntohl( inet_make_mask(plen) );
if(key & ~mask) if (key & ~mask)
return -EINVAL; return -EINVAL;
key = key & mask; key = key & mask;
l = fib_find_node(t, key); l = fib_find_node(t, key);
if(!l) if (!l)
return -ESRCH; return -ESRCH;
fa_head = get_fa_head(l, plen); fa_head = get_fa_head(l, plen);
...@@ -1677,16 +1678,16 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, ...@@ -1677,16 +1678,16 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
list_del(&fa->fa_list); list_del(&fa->fa_list);
if(list_empty(fa_head)) { if (list_empty(fa_head)) {
hlist_del(&li->hlist); hlist_del(&li->hlist);
kill_li = 1; kill_li = 1;
} }
write_unlock_bh(&fib_lock); write_unlock_bh(&fib_lock);
if(kill_li) if (kill_li)
free_leaf_info(li); free_leaf_info(li);
if(hlist_empty(&l->list)) if (hlist_empty(&l->list))
trie_leaf_remove(t, key); trie_leaf_remove(t, key);
if (fa->fa_state & FA_S_ACCESSED) if (fa->fa_state & FA_S_ACCESSED)
...@@ -1748,8 +1749,8 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf) ...@@ -1748,8 +1749,8 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf)
struct tnode *p; struct tnode *p;
int idx; int idx;
if(c == NULL) { if (c == NULL) {
if(t->trie == NULL) if (t->trie == NULL)
return NULL; return NULL;
if (IS_LEAF(t->trie)) /* trie w. just a leaf */ if (IS_LEAF(t->trie)) /* trie w. just a leaf */
...@@ -1759,18 +1760,19 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf) ...@@ -1759,18 +1760,19 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf)
} }
else else
p = (struct tnode *) NODE_PARENT(c); p = (struct tnode *) NODE_PARENT(c);
while (p) { while (p) {
int pos, last; int pos, last;
/* Find the next child of the parent */ /* Find the next child of the parent */
if(c) if (c)
pos = 1 + tkey_extract_bits(c->key, p->pos, p->bits); pos = 1 + tkey_extract_bits(c->key, p->pos, p->bits);
else else
pos = 0; pos = 0;
last = 1 << p->bits; last = 1 << p->bits;
for(idx = pos; idx < last ; idx++) { for(idx = pos; idx < last ; idx++) {
if( p->child[idx]) { if (p->child[idx]) {
/* Decend if tnode */ /* Decend if tnode */
...@@ -1779,11 +1781,11 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf) ...@@ -1779,11 +1781,11 @@ static struct leaf *nextleaf(struct trie *t, struct leaf *thisleaf)
idx = 0; idx = 0;
/* Rightmost non-NULL branch */ /* Rightmost non-NULL branch */
if( p && IS_TNODE(p) ) if (p && IS_TNODE(p))
while ( p->child[idx] == NULL && idx < (1 << p->bits) ) idx++; while (p->child[idx] == NULL && idx < (1 << p->bits)) idx++;
/* Done with this tnode? */ /* Done with this tnode? */
if( idx >= (1 << p->bits) || p->child[idx] == NULL ) if (idx >= (1 << p->bits) || p->child[idx] == NULL )
goto up; goto up;
} }
return (struct leaf*) p->child[idx]; return (struct leaf*) p->child[idx];
...@@ -1816,7 +1818,7 @@ static int fn_trie_flush(struct fib_table *tb) ...@@ -1816,7 +1818,7 @@ static int fn_trie_flush(struct fib_table *tb)
if (ll && hlist_empty(&ll->list)) if (ll && hlist_empty(&ll->list))
trie_leaf_remove(t, ll->key); trie_leaf_remove(t, ll->key);
if(trie_debug) if (trie_debug)
printk("trie_flush found=%d\n", found); printk("trie_flush found=%d\n", found);
return found; return found;
} }
...@@ -1841,11 +1843,11 @@ fn_trie_select_default(struct fib_table *tb, const struct flowi *flp, struct fib ...@@ -1841,11 +1843,11 @@ fn_trie_select_default(struct fib_table *tb, const struct flowi *flp, struct fib
read_lock(&fib_lock); read_lock(&fib_lock);
l = fib_find_node(t, 0); l = fib_find_node(t, 0);
if(!l) if (!l)
goto out; goto out;
fa_head = get_fa_head(l, 0); fa_head = get_fa_head(l, 0);
if(!fa_head) if (!fa_head)
goto out; goto out;
if (list_empty(fa_head)) if (list_empty(fa_head))
...@@ -1969,10 +1971,10 @@ static int fn_trie_dump_plen(struct trie *t, int plen, struct fib_table *tb, str ...@@ -1969,10 +1971,10 @@ static int fn_trie_dump_plen(struct trie *t, int plen, struct fib_table *tb, str
fa_head = get_fa_head(l, plen); fa_head = get_fa_head(l, plen);
if(!fa_head) if (!fa_head)
continue; continue;
if(list_empty(fa_head)) if (list_empty(fa_head))
continue; continue;
if (fn_trie_dump_fa(l->key, plen, fa_head, tb, skb, cb)<0) { if (fn_trie_dump_fa(l->key, plen, fa_head, tb, skb, cb)<0) {
...@@ -2049,9 +2051,9 @@ struct fib_table * __init fib_hash_init(int id) ...@@ -2049,9 +2051,9 @@ struct fib_table * __init fib_hash_init(int id)
trie_init(t); trie_init(t);
if (id == RT_TABLE_LOCAL) if (id == RT_TABLE_LOCAL)
trie_local=t; trie_local = t;
else if (id == RT_TABLE_MAIN) else if (id == RT_TABLE_MAIN)
trie_main=t; trie_main = t;
if (id == RT_TABLE_LOCAL) if (id == RT_TABLE_LOCAL)
printk("IPv4 FIB: Using LC-trie version %s\n", VERSION); printk("IPv4 FIB: Using LC-trie version %s\n", VERSION);
...@@ -2093,7 +2095,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n, ...@@ -2093,7 +2095,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n,
seq_printf(seq, "key=%d.%d.%d.%d\n", seq_printf(seq, "key=%d.%d.%d.%d\n",
n->key >> 24, (n->key >> 16) % 256, (n->key >> 8) % 256, n->key % 256); n->key >> 24, (n->key >> 16) % 256, (n->key >> 8) % 256, n->key % 256);
else { else {
int plen=((struct tnode *)n)->pos; int plen = ((struct tnode *)n)->pos;
t_key prf=MASK_PFX(n->key, plen); t_key prf=MASK_PFX(n->key, plen);
seq_printf(seq, "key=%d.%d.%d.%d/%d\n", seq_printf(seq, "key=%d.%d.%d.%d/%d\n",
prf >> 24, (prf >> 16) % 256, (prf >> 8) % 256, prf % 256, plen); prf >> 24, (prf >> 16) % 256, (prf >> 8) % 256, prf % 256, plen);
...@@ -2103,14 +2105,14 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n, ...@@ -2103,14 +2105,14 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n,
struct fib_alias *fa; struct fib_alias *fa;
int i; int i;
for (i=32; i>=0; i--) for (i=32; i>=0; i--)
if(find_leaf_info(&l->list, i)) { if (find_leaf_info(&l->list, i)) {
struct list_head *fa_head = get_fa_head(l, i); struct list_head *fa_head = get_fa_head(l, i);
if(!fa_head) if (!fa_head)
continue; continue;
if(list_empty(fa_head)) if (list_empty(fa_head))
continue; continue;
putspace_seq(seq, indent+2); putspace_seq(seq, indent+2);
...@@ -2136,7 +2138,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n, ...@@ -2136,7 +2138,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n,
} }
} }
else if (IS_TNODE(n)) { else if (IS_TNODE(n)) {
struct tnode *tn=(struct tnode *)n; struct tnode *tn = (struct tnode *)n;
putspace_seq(seq, indent); seq_printf(seq, "| "); putspace_seq(seq, indent); seq_printf(seq, "| ");
seq_printf(seq, "{key prefix=%08x/", tn->key&TKEY_GET_MASK(0, tn->pos)); seq_printf(seq, "{key prefix=%08x/", tn->key&TKEY_GET_MASK(0, tn->pos));
printbin_seq(seq, tkey_extract_bits(tn->key, 0, tn->pos), tn->pos); printbin_seq(seq, tkey_extract_bits(tn->key, 0, tn->pos), tn->pos);
...@@ -2152,7 +2154,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n, ...@@ -2152,7 +2154,7 @@ static void printnode_seq(struct seq_file *seq, int indent, struct node *n,
static void trie_dump_seq(struct seq_file *seq, struct trie *t) static void trie_dump_seq(struct seq_file *seq, struct trie *t)
{ {
struct node *n=t->trie; struct node *n = t->trie;
int cindex=0; int cindex=0;
int indent=1; int indent=1;
int pend=0; int pend=0;
...@@ -2164,7 +2166,7 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t) ...@@ -2164,7 +2166,7 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t)
if (n) { if (n) {
printnode_seq(seq, indent, n, pend, cindex, 0); printnode_seq(seq, indent, n, pend, cindex, 0);
if (IS_TNODE(n)) { if (IS_TNODE(n)) {
struct tnode *tn=(struct tnode *)n; struct tnode *tn = (struct tnode *)n;
pend = tn->pos+tn->bits; pend = tn->pos+tn->bits;
putspace_seq(seq, indent); seq_printf(seq, "\\--\n"); putspace_seq(seq, indent); seq_printf(seq, "\\--\n");
indent += 3; indent += 3;
...@@ -2186,9 +2188,9 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t) ...@@ -2186,9 +2188,9 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t)
*/ */
depth++; depth++;
n=tn->child[cindex]; n = tn->child[cindex];
tn=(struct tnode *)n; tn = (struct tnode *)n;
pend=tn->pos+tn->bits; pend = tn->pos+tn->bits;
putspace_seq(seq, indent); seq_printf(seq, "\\--\n"); putspace_seq(seq, indent); seq_printf(seq, "\\--\n");
indent+=3; indent+=3;
cindex=0; cindex=0;
...@@ -2217,8 +2219,8 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t) ...@@ -2217,8 +2219,8 @@ static void trie_dump_seq(struct seq_file *seq, struct trie *t)
cindex = tkey_extract_bits(tn->key, NODE_PARENT(tn)->pos, NODE_PARENT(tn)->bits); cindex = tkey_extract_bits(tn->key, NODE_PARENT(tn)->pos, NODE_PARENT(tn)->bits);
tn = NODE_PARENT(tn); tn = NODE_PARENT(tn);
cindex++; cindex++;
n=(struct node *)tn; n = (struct node *)tn;
pend=tn->pos+tn->bits; pend = tn->pos+tn->bits;
indent-=3; indent-=3;
depth--; depth--;
} }
...@@ -2237,7 +2239,7 @@ static struct trie_stat *trie_stat_new(void) ...@@ -2237,7 +2239,7 @@ static struct trie_stat *trie_stat_new(void)
struct trie_stat *s = kmalloc(sizeof(struct trie_stat), GFP_KERNEL); struct trie_stat *s = kmalloc(sizeof(struct trie_stat), GFP_KERNEL);
int i; int i;
if(s) { if (s) {
s->totdepth = 0; s->totdepth = 0;
s->maxdepth = 0; s->maxdepth = 0;
s->tnodes = 0; s->tnodes = 0;
...@@ -2252,7 +2254,7 @@ static struct trie_stat *trie_stat_new(void) ...@@ -2252,7 +2254,7 @@ static struct trie_stat *trie_stat_new(void)
static struct trie_stat *trie_collect_stats(struct trie *t) static struct trie_stat *trie_collect_stats(struct trie *t)
{ {
struct node *n=t->trie; struct node *n = t->trie;
struct trie_stat *s = trie_stat_new(); struct trie_stat *s = trie_stat_new();
int cindex = 0; int cindex = 0;
int indent = 1; int indent = 1;
...@@ -2265,7 +2267,7 @@ static struct trie_stat *trie_collect_stats(struct trie *t) ...@@ -2265,7 +2267,7 @@ static struct trie_stat *trie_collect_stats(struct trie *t)
if (n) { if (n) {
if (IS_TNODE(n)) { if (IS_TNODE(n)) {
struct tnode *tn = (struct tnode *)n; struct tnode *tn = (struct tnode *)n;
pend=tn->pos+tn->bits; pend = tn->pos+tn->bits;
indent += 3; indent += 3;
s->nodesizes[tn->bits]++; s->nodesizes[tn->bits]++;
depth++; depth++;
...@@ -2328,7 +2330,7 @@ static struct trie_stat *trie_collect_stats(struct trie *t) ...@@ -2328,7 +2330,7 @@ static struct trie_stat *trie_collect_stats(struct trie *t)
tn = NODE_PARENT(tn); tn = NODE_PARENT(tn);
cindex++; cindex++;
n = (struct node *)tn; n = (struct node *)tn;
pend=tn->pos+tn->bits; pend = tn->pos+tn->bits;
indent -= 3; indent -= 3;
depth--; depth--;
} }
...@@ -2592,7 +2594,7 @@ static struct file_operations fib_trie_seq_fops = { ...@@ -2592,7 +2594,7 @@ static struct file_operations fib_trie_seq_fops = {
.open = fib_trie_seq_open, .open = fib_trie_seq_open,
.read = seq_read, .read = seq_read,
.llseek = seq_lseek, .llseek = seq_lseek,
.release = seq_release_private, .release= seq_release_private,
}; };
int __init fib_proc_init(void) int __init fib_proc_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment