Lines Matching refs:tb2
98 const struct inet_bind2_bucket *tb2; in inet_bind_bucket_destroy() local
108 hlist_for_each_entry(tb2, &tb->bhash2, bhash_node) { in inet_bind_bucket_destroy()
109 if (tb2->fastreuse != -1 || tb2->fastreuseport != -1) in inet_bind_bucket_destroy()
123 static void inet_bind2_bucket_init(struct inet_bind2_bucket *tb2, in inet_bind2_bucket_init() argument
129 write_pnet(&tb2->ib_net, net); in inet_bind2_bucket_init()
130 tb2->l3mdev = tb->l3mdev; in inet_bind2_bucket_init()
131 tb2->port = tb->port; in inet_bind2_bucket_init()
135 tb2->addr_type = ipv6_addr_type(&sk->sk_v6_rcv_saddr); in inet_bind2_bucket_init()
136 tb2->v6_rcv_saddr = sk->sk_v6_rcv_saddr; in inet_bind2_bucket_init()
138 tb2->addr_type = IPV6_ADDR_MAPPED; in inet_bind2_bucket_init()
139 ipv6_addr_set_v4mapped(sk->sk_rcv_saddr, &tb2->v6_rcv_saddr); in inet_bind2_bucket_init()
142 tb2->rcv_saddr = sk->sk_rcv_saddr; in inet_bind2_bucket_init()
144 tb2->fastreuse = 0; in inet_bind2_bucket_init()
145 tb2->fastreuseport = 0; in inet_bind2_bucket_init()
146 INIT_HLIST_HEAD(&tb2->owners); in inet_bind2_bucket_init()
147 hlist_add_head(&tb2->node, &head->chain); in inet_bind2_bucket_init()
148 hlist_add_head(&tb2->bhash_node, &tb->bhash2); in inet_bind2_bucket_init()
157 struct inet_bind2_bucket *tb2 = kmem_cache_alloc(cachep, GFP_ATOMIC); in inet_bind2_bucket_create() local
159 if (tb2) in inet_bind2_bucket_create()
160 inet_bind2_bucket_init(tb2, net, head, tb, sk); in inet_bind2_bucket_create()
162 return tb2; in inet_bind2_bucket_create()
187 static bool inet_bind2_bucket_addr_match(const struct inet_bind2_bucket *tb2, in inet_bind2_bucket_addr_match() argument
192 return ipv6_addr_equal(&tb2->v6_rcv_saddr, &sk->sk_v6_rcv_saddr); in inet_bind2_bucket_addr_match()
194 if (tb2->addr_type != IPV6_ADDR_MAPPED) in inet_bind2_bucket_addr_match()
197 return tb2->rcv_saddr == sk->sk_rcv_saddr; in inet_bind2_bucket_addr_match()
201 struct inet_bind2_bucket *tb2, unsigned short port) in inet_bind_hash() argument
205 inet_csk(sk)->icsk_bind2_hash = tb2; in inet_bind_hash()
206 sk_add_bind_node(sk, &tb2->owners); in inet_bind_hash()
232 struct inet_bind2_bucket *tb2 = inet_csk(sk)->icsk_bind2_hash; in __inet_put_port() local
236 inet_bind2_bucket_destroy(hashinfo->bind2_bucket_cachep, tb2); in __inet_put_port()
260 struct inet_bind2_bucket *tb2; in __inet_inherit_port() local
271 tb2 = inet_csk(sk)->icsk_bind2_hash; in __inet_inherit_port()
272 if (unlikely(!tb || !tb2)) { in __inet_inherit_port()
302 } else if (!inet_bind2_bucket_addr_match(tb2, child)) { in __inet_inherit_port()
306 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, child); in __inet_inherit_port()
307 if (!tb2) { in __inet_inherit_port()
308 tb2 = inet_bind2_bucket_create(table->bind2_bucket_cachep, in __inet_inherit_port()
310 if (!tb2) in __inet_inherit_port()
315 inet_csk_update_fastreuse(child, tb, tb2); in __inet_inherit_port()
316 inet_bind_hash(child, tb, tb2, port); in __inet_inherit_port()
931 struct inet_bind2_bucket *tb2, *new_tb2; in __inet_bhash2_update_saddr() local
988 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in __inet_bhash2_update_saddr()
989 if (!tb2) { in __inet_bhash2_update_saddr()
990 tb2 = new_tb2; in __inet_bhash2_update_saddr()
991 inet_bind2_bucket_init(tb2, net, head2, inet_csk(sk)->icsk_bind_hash, sk); in __inet_bhash2_update_saddr()
993 tb2->fastreuse = -1; in __inet_bhash2_update_saddr()
994 tb2->fastreuseport = -1; in __inet_bhash2_update_saddr()
997 inet_csk(sk)->icsk_bind2_hash = tb2; in __inet_bhash2_update_saddr()
998 sk_add_bind_node(sk, &tb2->owners); in __inet_bhash2_update_saddr()
1003 if (tb2 != new_tb2) in __inet_bhash2_update_saddr()
1047 struct inet_bind2_bucket *tb2; in __inet_hash_connect() local
1160 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in __inet_hash_connect()
1161 if (!tb2) { in __inet_hash_connect()
1162 tb2 = inet_bind2_bucket_create(hinfo->bind2_bucket_cachep, net, in __inet_hash_connect()
1164 if (!tb2) in __inet_hash_connect()
1166 tb2->fastreuse = -1; in __inet_hash_connect()
1167 tb2->fastreuseport = -1; in __inet_hash_connect()
1179 inet_bind_hash(sk, tb, tb2, port); in __inet_hash_connect()