Lines Matching refs:node

22 static __init void print_node(struct allowedips_node *node, u8 bits)  in print_node()  argument
30 if (node == NULL) in print_node()
39 if (node->peer) { in print_node()
42 memcpy(&key, &node->peer, sizeof(node->peer)); in print_node()
48 wg_allowedips_read_node(node, ip1, &cidr1); in print_node()
50 if (node->bit[0]) { in print_node()
51 wg_allowedips_read_node(rcu_dereference_raw(node->bit[0]), ip2, &cidr2); in print_node()
54 if (node->bit[1]) { in print_node()
55 wg_allowedips_read_node(rcu_dereference_raw(node->bit[1]), ip2, &cidr2); in print_node()
58 if (node->bit[0]) in print_node()
59 print_node(rcu_dereference_raw(node->bit[0]), bits); in print_node()
60 if (node->bit[1]) in print_node()
61 print_node(rcu_dereference_raw(node->bit[1]), bits); in print_node()
97 struct horrible_allowedips_node *node; in horrible_allowedips_free() local
100 hlist_for_each_entry_safe(node, h, &table->head, table) { in horrible_allowedips_free()
101 hlist_del(&node->table); in horrible_allowedips_free()
102 kfree(node); in horrible_allowedips_free()
125 horrible_mask_self(struct horrible_allowedips_node *node) in horrible_mask_self() argument
127 if (node->ip_version == 4) { in horrible_mask_self()
128 node->ip.ip &= node->mask.ip; in horrible_mask_self()
129 } else if (node->ip_version == 6) { in horrible_mask_self()
130 node->ip.ip6[0] &= node->mask.ip6[0]; in horrible_mask_self()
131 node->ip.ip6[1] &= node->mask.ip6[1]; in horrible_mask_self()
132 node->ip.ip6[2] &= node->mask.ip6[2]; in horrible_mask_self()
133 node->ip.ip6[3] &= node->mask.ip6[3]; in horrible_mask_self()
138 horrible_match_v4(const struct horrible_allowedips_node *node, struct in_addr *ip) in horrible_match_v4() argument
140 return (ip->s_addr & node->mask.ip) == node->ip.ip; in horrible_match_v4()
144 horrible_match_v6(const struct horrible_allowedips_node *node, struct in6_addr *ip) in horrible_match_v6() argument
146 return (ip->in6_u.u6_addr32[0] & node->mask.ip6[0]) == node->ip.ip6[0] && in horrible_match_v6()
147 (ip->in6_u.u6_addr32[1] & node->mask.ip6[1]) == node->ip.ip6[1] && in horrible_match_v6()
148 (ip->in6_u.u6_addr32[2] & node->mask.ip6[2]) == node->ip.ip6[2] && in horrible_match_v6()
149 (ip->in6_u.u6_addr32[3] & node->mask.ip6[3]) == node->ip.ip6[3]; in horrible_match_v6()
153 horrible_insert_ordered(struct horrible_allowedips *table, struct horrible_allowedips_node *node) in horrible_insert_ordered() argument
156 u8 my_cidr = horrible_mask_to_cidr(node->mask); in horrible_insert_ordered()
159 if (other->ip_version == node->ip_version && in horrible_insert_ordered()
160 !memcmp(&other->mask, &node->mask, sizeof(union nf_inet_addr)) && in horrible_insert_ordered()
161 !memcmp(&other->ip, &node->ip, sizeof(union nf_inet_addr))) { in horrible_insert_ordered()
162 other->value = node->value; in horrible_insert_ordered()
163 kfree(node); in horrible_insert_ordered()
173 hlist_add_head(&node->table, &table->head); in horrible_insert_ordered()
175 hlist_add_behind(&node->table, &where->table); in horrible_insert_ordered()
177 hlist_add_before(&node->table, &where->table); in horrible_insert_ordered()
184 struct horrible_allowedips_node *node = kzalloc(sizeof(*node), GFP_KERNEL); in horrible_allowedips_insert_v4() local
186 if (unlikely(!node)) in horrible_allowedips_insert_v4()
188 node->ip.in = *ip; in horrible_allowedips_insert_v4()
189 node->mask = horrible_cidr_to_mask(cidr); in horrible_allowedips_insert_v4()
190 node->ip_version = 4; in horrible_allowedips_insert_v4()
191 node->value = value; in horrible_allowedips_insert_v4()
192 horrible_mask_self(node); in horrible_allowedips_insert_v4()
193 horrible_insert_ordered(table, node); in horrible_allowedips_insert_v4()
201 struct horrible_allowedips_node *node = kzalloc(sizeof(*node), GFP_KERNEL); in horrible_allowedips_insert_v6() local
203 if (unlikely(!node)) in horrible_allowedips_insert_v6()
205 node->ip.in6 = *ip; in horrible_allowedips_insert_v6()
206 node->mask = horrible_cidr_to_mask(cidr); in horrible_allowedips_insert_v6()
207 node->ip_version = 6; in horrible_allowedips_insert_v6()
208 node->value = value; in horrible_allowedips_insert_v6()
209 horrible_mask_self(node); in horrible_allowedips_insert_v6()
210 horrible_insert_ordered(table, node); in horrible_allowedips_insert_v6()
217 struct horrible_allowedips_node *node; in horrible_allowedips_lookup_v4() local
219 hlist_for_each_entry(node, &table->head, table) { in horrible_allowedips_lookup_v4()
220 if (node->ip_version == 4 && horrible_match_v4(node, ip)) in horrible_allowedips_lookup_v4()
221 return node->value; in horrible_allowedips_lookup_v4()
229 struct horrible_allowedips_node *node; in horrible_allowedips_lookup_v6() local
231 hlist_for_each_entry(node, &table->head, table) { in horrible_allowedips_lookup_v6()
232 if (node->ip_version == 6 && horrible_match_v6(node, ip)) in horrible_allowedips_lookup_v6()
233 return node->value; in horrible_allowedips_lookup_v6()
242 struct horrible_allowedips_node *node; in horrible_allowedips_remove_by_value() local
245 hlist_for_each_entry_safe(node, h, &table->head, table) { in horrible_allowedips_remove_by_value()
246 if (node->value != value) in horrible_allowedips_remove_by_value()
248 hlist_del(&node->table); in horrible_allowedips_remove_by_value()
249 kfree(node); in horrible_allowedips_remove_by_value()