Lines Matching refs:key
99 t_key key; member
194 #define get_cindex(key, kv) (((key) ^ (kv)->key) >> (kv)->pos) argument
196 static inline unsigned long get_index(t_key key, struct key_vector *kv) in get_index() argument
198 unsigned long index = key ^ kv->key; in get_index()
327 static struct key_vector *leaf_new(t_key key, struct fib_alias *fa) in leaf_new() argument
338 l->key = key; in leaf_new()
350 static struct key_vector *tnode_new(t_key key, int pos, int bits) in tnode_new() argument
372 tn->key = (shift < KEYLENGTH) ? (key >> shift) << shift : 0; in tnode_new()
442 static inline void put_child_root(struct key_vector *tp, t_key key, in put_child_root() argument
448 put_child(tp, get_index(key, tp), n); in put_child_root()
490 put_child_root(tp, tn->key, tn); in replace()
519 tn = tnode_new(oldtnode->key, oldtnode->pos - 1, oldtnode->bits + 1); in inflate()
542 put_child(tn, get_index(inode->key, tn), inode); in inflate()
570 node1 = tnode_new(inode->key | m, inode->pos, inode->bits - 1); in inflate()
573 node0 = tnode_new(inode->key, inode->pos, inode->bits - 1); in inflate()
614 tn = tnode_new(oldtnode->key, oldtnode->pos + 1, oldtnode->bits - 1); in halve()
638 inode = tnode_new(node0->key, oldtnode->pos, 1); in halve()
673 put_child_root(tp, oldtnode->key, n); in collapse()
824 unsigned long cindex = get_index(tn->key, tp); in resize()
919 struct key_vector **tp, u32 key) in fib_find_node() argument
931 index = get_cindex(key, n); in fib_find_node()
996 struct fib_alias *new, t_key key) in fib_insert_node() argument
1000 l = leaf_new(key, new); in fib_insert_node()
1005 n = get_child(tp, get_index(key, tp)); in fib_insert_node()
1016 tn = tnode_new(key, __fls(key ^ n->key), 1); in fib_insert_node()
1022 put_child(tn, get_index(key, tn) ^ 1, n); in fib_insert_node()
1025 put_child_root(tp, key, tn); in fib_insert_node()
1034 put_child_root(tp, key, l); in fib_insert_node()
1046 struct fib_alias *fa, t_key key) in fib_insert_alias() argument
1049 return fib_insert_node(t, tp, new, key); in fib_insert_alias()
1091 u32 key; in fib_table_insert() local
1097 key = ntohl(cfg->fc_dst); in fib_table_insert()
1099 pr_debug("Insert table=%u %08x/%d\n", tb->tb_id, key, plen); in fib_table_insert()
1101 if ((plen < KEYLENGTH) && (key << plen)) in fib_table_insert()
1110 l = fib_find_node(t, &tp, key); in fib_table_insert()
1177 err = switchdev_fib_ipv4_add(key, plen, fi, in fib_table_insert()
1195 rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, in fib_table_insert()
1230 err = switchdev_fib_ipv4_add(key, plen, fi, tos, cfg->fc_type, in fib_table_insert()
1238 err = fib_insert_alias(t, tp, l, new_fa, fa, key); in fib_table_insert()
1246 rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id, in fib_table_insert()
1252 switchdev_fib_ipv4_del(key, plen, fi, tos, cfg->fc_type, tb->tb_id); in fib_table_insert()
1261 static inline t_key prefix_mismatch(t_key key, struct key_vector *n) in prefix_mismatch() argument
1263 t_key prefix = n->key; in prefix_mismatch()
1265 return (key ^ prefix) & (prefix | -prefix); in prefix_mismatch()
1276 const t_key key = ntohl(flp->daddr); in fib_table_lookup() local
1297 index = get_cindex(key, n); in fib_table_lookup()
1342 if (unlikely(prefix_mismatch(key, n)) || (n->slen == n->pos)) in fib_table_lookup()
1366 t_key pkey = pn->key; in fib_table_lookup()
1392 index = key ^ n->key; in fib_table_lookup()
1474 put_child_root(tp, l->key, NULL); in fib_remove_alias()
1498 u32 key; in fib_table_delete() local
1503 key = ntohl(cfg->fc_dst); in fib_table_delete()
1505 if ((plen < KEYLENGTH) && (key << plen)) in fib_table_delete()
1508 l = fib_find_node(t, &tp, key); in fib_table_delete()
1516 pr_debug("Deleting %08x/%d tos=%d t=%p\n", key, plen, tos, t); in fib_table_delete()
1543 switchdev_fib_ipv4_del(key, plen, fa_to_delete->fa_info, tos, in fib_table_delete()
1546 rtmsg_fib(RTM_DELROUTE, htonl(key), fa_to_delete, plen, tb->tb_id, in fib_table_delete()
1563 static struct key_vector *leaf_walk_rcu(struct key_vector **tn, t_key key) in leaf_walk_rcu() argument
1572 cindex = (key > pn->key) ? get_index(key, pn) : 0; in leaf_walk_rcu()
1583 if (IS_LEAF(n) && (n->key >= key)) in leaf_walk_rcu()
1591 t_key pkey = pn->key; in leaf_walk_rcu()
1633 t_key pkey = pn->key; in fib_trie_free()
1642 put_child_root(pn, n->key, NULL); in fib_trie_free()
1668 put_child_root(pn, n->key, NULL); in fib_trie_free()
1685 t_key key = 0; in fib_trie_unmerge() local
1696 while ((l = leaf_walk_rcu(&tp, key)) != NULL) { in fib_trie_unmerge()
1714 local_l = fib_find_node(lt, &local_tp, l->key); in fib_trie_unmerge()
1717 NULL, l->key)) in fib_trie_unmerge()
1722 key = l->key + 1; in fib_trie_unmerge()
1723 if (key < l->key) in fib_trie_unmerge()
1749 t_key pkey = pn->key; in fib_table_flush_external()
1793 switchdev_fib_ipv4_del(n->key, KEYLENGTH - fa->fa_slen, in fib_table_flush_external()
1802 put_child_root(pn, n->key, NULL); in fib_table_flush_external()
1824 t_key pkey = pn->key; in fib_table_flush()
1858 switchdev_fib_ipv4_del(n->key, KEYLENGTH - fa->fa_slen, in fib_table_flush()
1871 put_child_root(pn, n->key, NULL); in fib_table_flush()
1900 __be32 xkey = htonl(l->key); in fn_trie_dump_leaf()
1948 t_key key = cb->args[3]; in fib_table_dump() local
1950 while ((l = leaf_walk_rcu(&tp, key)) != NULL) { in fib_table_dump()
1952 cb->args[3] = key; in fib_table_dump()
1958 key = l->key + 1; in fib_table_dump()
1964 if (key < l->key) in fib_table_dump()
1968 cb->args[3] = key; in fib_table_dump()
2059 pkey = pn->key; in fib_trie_get_next()
2391 __be32 prf = htonl(n->key); in fib_trie_seq_show()
2399 __be32 val = htonl(n->key); in fib_trie_seq_show()
2450 t_key key; member
2459 t_key key; in fib_route_get_idx() local
2464 key = iter->key; in fib_route_get_idx()
2469 key = 0; in fib_route_get_idx()
2472 while ((l = leaf_walk_rcu(tp, key)) != NULL) { in fib_route_get_idx()
2473 key = l->key + 1; in fib_route_get_idx()
2482 if (!key) in fib_route_get_idx()
2487 iter->key = key; /* remember it */ in fib_route_get_idx()
2515 iter->key = 0; in fib_route_seq_start()
2524 t_key key = iter->key; in fib_route_seq_next() local
2529 if ((v == SEQ_START_TOKEN) || key) in fib_route_seq_next()
2530 l = leaf_walk_rcu(&iter->tnode, key); in fib_route_seq_next()
2533 iter->key = l->key + 1; in fib_route_seq_next()
2583 prefix = htonl(l->key); in fib_route_seq_show()