Lines Matching refs:sk
59 struct sock *inet6_lookup_reuseport(const struct net *net, struct sock *sk,
95 struct sock *sk = __inet6_lookup_established(net, hashinfo, saddr, in __inet6_lookup() local
99 if (sk) in __inet6_lookup()
100 return sk; in __inet6_lookup()
112 struct sock *sk, *reuse_sk; in inet6_steal_sock() local
115 sk = skb_steal_sock(skb, refcounted, &prefetched); in inet6_steal_sock()
116 if (!sk) in inet6_steal_sock()
119 if (!prefetched || !sk_fullsock(sk)) in inet6_steal_sock()
120 return sk; in inet6_steal_sock()
122 if (sk->sk_protocol == IPPROTO_TCP) { in inet6_steal_sock()
123 if (sk->sk_state != TCP_LISTEN) in inet6_steal_sock()
124 return sk; in inet6_steal_sock()
125 } else if (sk->sk_protocol == IPPROTO_UDP) { in inet6_steal_sock()
126 if (sk->sk_state != TCP_CLOSE) in inet6_steal_sock()
127 return sk; in inet6_steal_sock()
129 return sk; in inet6_steal_sock()
132 reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff, in inet6_steal_sock()
136 return sk; in inet6_steal_sock()
155 struct sock *sk; in __inet6_lookup_skb() local
157 sk = inet6_steal_sock(net, skb, doff, &ip6h->saddr, sport, &ip6h->daddr, dport, in __inet6_lookup_skb()
159 if (IS_ERR(sk)) in __inet6_lookup_skb()
161 if (sk) in __inet6_lookup_skb()
162 return sk; in __inet6_lookup_skb()
176 int inet6_hash(struct sock *sk);
178 static inline bool inet6_match(const struct net *net, const struct sock *sk, in inet6_match() argument
184 if (!net_eq(sock_net(sk), net) || in inet6_match()
185 sk->sk_family != AF_INET6 || in inet6_match()
186 sk->sk_portpair != ports || in inet6_match()
187 !ipv6_addr_equal(&sk->sk_v6_daddr, saddr) || in inet6_match()
188 !ipv6_addr_equal(&sk->sk_v6_rcv_saddr, daddr)) in inet6_match()
192 return inet_sk_bound_dev_eq(net, READ_ONCE(sk->sk_bound_dev_if), dif, in inet6_match()