Lines Matching refs:sk
114 struct sock *sk; in icmpv6_xmit_lock() local
118 sk = icmpv6_sk(net); in icmpv6_xmit_lock()
119 if (unlikely(!spin_trylock(&sk->sk_lock.slock))) { in icmpv6_xmit_lock()
127 return sk; in icmpv6_xmit_lock()
130 static __inline__ void icmpv6_xmit_unlock(struct sock *sk) in icmpv6_xmit_unlock() argument
132 spin_unlock_bh(&sk->sk_lock.slock); in icmpv6_xmit_unlock()
173 static bool icmpv6_xrlim_allow(struct sock *sk, u8 type, in icmpv6_xrlim_allow() argument
176 struct net *net = sock_net(sk); in icmpv6_xrlim_allow()
193 dst = ip6_route_output(net, sk, fl6); in icmpv6_xrlim_allow()
239 int icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, in icmpv6_push_pending_frames() argument
246 skb = skb_peek(&sk->sk_write_queue); in icmpv6_push_pending_frames()
254 if (skb_queue_len(&sk->sk_write_queue) == 1) { in icmpv6_push_pending_frames()
264 skb_queue_walk(&sk->sk_write_queue, skb) { in icmpv6_push_pending_frames()
275 ip6_push_pending_frames(sk); in icmpv6_push_pending_frames()
326 struct sock *sk, in icmpv6_route_lookup() argument
333 err = ip6_dst_lookup(net, sk, &dst, fl6); in icmpv6_route_lookup()
350 dst = xfrm_lookup(net, dst, flowi6_to_flowi(fl6), sk, 0); in icmpv6_route_lookup()
365 err = ip6_dst_lookup(net, sk, &dst2, &fl2); in icmpv6_route_lookup()
369 dst2 = xfrm_lookup(net, dst2, flowi6_to_flowi(&fl2), sk, XFRM_LOOKUP_ICMP); in icmpv6_route_lookup()
396 struct sock *sk; in icmp6_send() local
483 sk = icmpv6_xmit_lock(net); in icmp6_send()
484 if (!sk) in icmp6_send()
486 sk->sk_mark = mark; in icmp6_send()
487 np = inet6_sk(sk); in icmp6_send()
489 if (!icmpv6_xrlim_allow(sk, type, &fl6)) in icmp6_send()
505 dst = icmpv6_route_lookup(net, skb, sk, &fl6); in icmp6_send()
526 err = ip6_append_data(sk, icmpv6_getfrag, &msg, in icmp6_send()
533 ip6_flush_pending_frames(sk); in icmp6_send()
535 err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr, in icmp6_send()
542 icmpv6_xmit_unlock(sk); in icmp6_send()
556 struct sock *sk; in icmpv6_echo_reply() local
590 sk = icmpv6_xmit_lock(net); in icmpv6_echo_reply()
591 if (!sk) in icmpv6_echo_reply()
593 sk->sk_mark = mark; in icmpv6_echo_reply()
594 np = inet6_sk(sk); in icmpv6_echo_reply()
601 err = ip6_dst_lookup(net, sk, &dst, &fl6); in icmpv6_echo_reply()
604 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), sk, 0); in icmpv6_echo_reply()
617 err = ip6_append_data(sk, icmpv6_getfrag, &msg, skb->len + sizeof(struct icmp6hdr), in icmpv6_echo_reply()
624 ip6_flush_pending_frames(sk); in icmpv6_echo_reply()
626 err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr, in icmpv6_echo_reply()
631 icmpv6_xmit_unlock(sk); in icmpv6_echo_reply()
821 void icmpv6_flow_init(struct sock *sk, struct flowi6 *fl6, in icmpv6_flow_init() argument
834 security_sk_classify_flow(sk, flowi6_to_flowi(fl6)); in icmpv6_flow_init()
839 struct sock *sk; in icmpv6_sk_init() local
848 err = inet_ctl_sock_create(&sk, PF_INET6, in icmpv6_sk_init()
856 net->ipv6.icmp_sk[i] = sk; in icmpv6_sk_init()
861 sk->sk_sndbuf = 2 * SKB_TRUESIZE(64 * 1024); in icmpv6_sk_init()