Lines Matching refs:tb2
103 static void inet_bind2_bucket_init(struct inet_bind2_bucket *tb2, in inet_bind2_bucket_init() argument
109 write_pnet(&tb2->ib_net, net); in inet_bind2_bucket_init()
110 tb2->l3mdev = tb->l3mdev; in inet_bind2_bucket_init()
111 tb2->port = tb->port; in inet_bind2_bucket_init()
115 tb2->addr_type = ipv6_addr_type(&sk->sk_v6_rcv_saddr); in inet_bind2_bucket_init()
116 tb2->v6_rcv_saddr = sk->sk_v6_rcv_saddr; in inet_bind2_bucket_init()
118 tb2->addr_type = IPV6_ADDR_MAPPED; in inet_bind2_bucket_init()
119 ipv6_addr_set_v4mapped(sk->sk_rcv_saddr, &tb2->v6_rcv_saddr); in inet_bind2_bucket_init()
122 tb2->rcv_saddr = sk->sk_rcv_saddr; in inet_bind2_bucket_init()
124 INIT_HLIST_HEAD(&tb2->owners); in inet_bind2_bucket_init()
125 hlist_add_head(&tb2->node, &head->chain); in inet_bind2_bucket_init()
126 hlist_add_head(&tb2->bhash_node, &tb->bhash2); in inet_bind2_bucket_init()
135 struct inet_bind2_bucket *tb2 = kmem_cache_alloc(cachep, GFP_ATOMIC); in inet_bind2_bucket_create() local
137 if (tb2) in inet_bind2_bucket_create()
138 inet_bind2_bucket_init(tb2, net, head, tb, sk); in inet_bind2_bucket_create()
140 return tb2; in inet_bind2_bucket_create()
153 static bool inet_bind2_bucket_addr_match(const struct inet_bind2_bucket *tb2, in inet_bind2_bucket_addr_match() argument
158 return ipv6_addr_equal(&tb2->v6_rcv_saddr, &sk->sk_v6_rcv_saddr); in inet_bind2_bucket_addr_match()
160 if (tb2->addr_type != IPV6_ADDR_MAPPED) in inet_bind2_bucket_addr_match()
163 return tb2->rcv_saddr == sk->sk_rcv_saddr; in inet_bind2_bucket_addr_match()
167 struct inet_bind2_bucket *tb2, unsigned short port) in inet_bind_hash() argument
171 inet_csk(sk)->icsk_bind2_hash = tb2; in inet_bind_hash()
172 sk_add_bind_node(sk, &tb2->owners); in inet_bind_hash()
197 struct inet_bind2_bucket *tb2 = inet_csk(sk)->icsk_bind2_hash; in __inet_put_port() local
201 inet_bind2_bucket_destroy(hashinfo->bind2_bucket_cachep, tb2); in __inet_put_port()
225 struct inet_bind2_bucket *tb2; in __inet_inherit_port() local
236 tb2 = inet_csk(sk)->icsk_bind2_hash; in __inet_inherit_port()
237 if (unlikely(!tb || !tb2)) { in __inet_inherit_port()
267 } else if (!inet_bind2_bucket_addr_match(tb2, child)) { in __inet_inherit_port()
271 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, child); in __inet_inherit_port()
272 if (!tb2) { in __inet_inherit_port()
273 tb2 = inet_bind2_bucket_create(table->bind2_bucket_cachep, in __inet_inherit_port()
275 if (!tb2) in __inet_inherit_port()
281 inet_bind_hash(child, tb, tb2, port); in __inet_inherit_port()
908 struct inet_bind2_bucket *tb2, *new_tb2; in __inet_bhash2_update_saddr() local
965 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in __inet_bhash2_update_saddr()
966 if (!tb2) { in __inet_bhash2_update_saddr()
967 tb2 = new_tb2; in __inet_bhash2_update_saddr()
968 inet_bind2_bucket_init(tb2, net, head2, inet_csk(sk)->icsk_bind_hash, sk); in __inet_bhash2_update_saddr()
970 inet_csk(sk)->icsk_bind2_hash = tb2; in __inet_bhash2_update_saddr()
971 sk_add_bind_node(sk, &tb2->owners); in __inet_bhash2_update_saddr()
976 if (tb2 != new_tb2) in __inet_bhash2_update_saddr()
1020 struct inet_bind2_bucket *tb2; in __inet_hash_connect() local
1133 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in __inet_hash_connect()
1134 if (!tb2) { in __inet_hash_connect()
1135 tb2 = inet_bind2_bucket_create(hinfo->bind2_bucket_cachep, net, in __inet_hash_connect()
1137 if (!tb2) in __inet_hash_connect()
1150 inet_bind_hash(sk, tb, tb2, port); in __inet_hash_connect()