Lines Matching refs:sk
157 struct inet_sock *inet = inet_sk(skb->sk); in ip_cmsg_recv_offset()
317 int ip_ra_control(struct sock *sk, unsigned char on, in ip_ra_control() argument
323 if (sk->sk_type != SOCK_RAW || inet_sk(sk)->inet_num == IPPROTO_RAW) in ip_ra_control()
333 if (ra->sk == sk) { in ip_ra_control()
340 ra->sk = NULL; in ip_ra_control()
345 ra->destructor(sk); in ip_ra_control()
351 ra->saved_sk = sk; in ip_ra_control()
360 new_ra->sk = sk; in ip_ra_control()
365 sock_hold(sk); in ip_ra_control()
371 void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, in ip_icmp_error() argument
394 if (sock_queue_err_skb(sk, skb) == 0) in ip_icmp_error()
400 void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 port, u32 info) in ip_local_error() argument
402 struct inet_sock *inet = inet_sk(sk); in ip_local_error()
433 if (sock_queue_err_skb(sk, skb)) in ip_local_error()
451 static bool ipv4_datagram_support_cmsg(const struct sock *sk, in ipv4_datagram_support_cmsg() argument
467 if ((!(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_CMSG)) || in ipv4_datagram_support_cmsg()
480 int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len) in ip_recv_error() argument
492 WARN_ON_ONCE(sk->sk_family == AF_INET6); in ip_recv_error()
495 skb = sock_dequeue_err_skb(sk); in ip_recv_error()
508 sock_recv_timestamp(msg, sk, skb); in ip_recv_error()
525 if (ipv4_datagram_support_cmsg(sk, skb, serr->ee.ee_origin)) { in ip_recv_error()
528 if (inet_sk(sk)->cmsg_flags) in ip_recv_error()
572 static int do_ip_setsockopt(struct sock *sk, int level, in do_ip_setsockopt() argument
575 struct inet_sock *inet = inet_sk(sk); in do_ip_setsockopt()
618 return ip_mroute_setsockopt(sk, optname, optval, optlen); in do_ip_setsockopt()
623 lock_sock(sk); in do_ip_setsockopt()
632 err = ip_options_get_from_user(sock_net(sk), &opt, in do_ip_setsockopt()
637 sock_owned_by_user(sk)); in do_ip_setsockopt()
639 struct inet_connection_sock *icsk = inet_csk(sk); in do_ip_setsockopt()
641 if (sk->sk_family == PF_INET || in do_ip_setsockopt()
642 (!((1 << sk->sk_state) & in do_ip_setsockopt()
650 icsk->icsk_sync_mss(sk, icsk->icsk_pmtu_cookie); in do_ip_setsockopt()
705 inet_inc_convert_csum(sk); in do_ip_setsockopt()
710 inet_dec_convert_csum(sk); in do_ip_setsockopt()
716 if (sk->sk_type == SOCK_STREAM) { in do_ip_setsockopt()
722 sk->sk_priority = rt_tos2priority(val); in do_ip_setsockopt()
723 sk_dst_reset(sk); in do_ip_setsockopt()
734 if (sk->sk_type != SOCK_RAW) { in do_ip_setsockopt()
741 if (sk->sk_type != SOCK_RAW) { in do_ip_setsockopt()
758 skb_queue_purge(&sk->sk_error_queue); in do_ip_setsockopt()
761 if (sk->sk_type == SOCK_STREAM) in do_ip_setsockopt()
791 dev = dev_get_by_index(sock_net(sk), ifindex); in do_ip_setsockopt()
798 if (sk->sk_bound_dev_if) in do_ip_setsockopt()
810 if (sk->sk_type == SOCK_STREAM) in do_ip_setsockopt()
843 dev = ip_dev_find(sock_net(sk), mreq.imr_address.s_addr); in do_ip_setsockopt()
847 dev = dev_get_by_index(sock_net(sk), mreq.imr_ifindex); in do_ip_setsockopt()
856 if (sk->sk_bound_dev_if && in do_ip_setsockopt()
857 mreq.imr_ifindex != sk->sk_bound_dev_if) in do_ip_setsockopt()
872 if (inet_sk(sk)->is_icsk) in do_ip_setsockopt()
888 err = ip_mc_join_group(sk, &mreq); in do_ip_setsockopt()
890 err = ip_mc_leave_group(sk, &mreq); in do_ip_setsockopt()
925 err = ip_mc_msfilter(sk, msf, 0); in do_ip_setsockopt()
955 err = ip_mc_join_group(sk, &mreq); in do_ip_setsockopt()
964 err = ip_mc_source(add, omode, sk, &mreqs, 0); in do_ip_setsockopt()
987 err = ip_mc_join_group(sk, &mreq); in do_ip_setsockopt()
989 err = ip_mc_leave_group(sk, &mreq); in do_ip_setsockopt()
1032 err = ip_mc_join_group(sk, &mreq); in do_ip_setsockopt()
1042 err = ip_mc_source(add, omode, sk, &mreqs, in do_ip_setsockopt()
1105 err = ip_mc_msfilter(sk, msf, ifindex); in do_ip_setsockopt()
1119 err = ip_ra_control(sk, val ? 1 : 0, NULL); in do_ip_setsockopt()
1131 if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) in do_ip_setsockopt()
1133 err = xfrm_user_policy(sk, optname, optval, optlen); in do_ip_setsockopt()
1137 if (!!val && !ns_capable(sock_net(sk)->user_ns, CAP_NET_RAW) && in do_ip_setsockopt()
1138 !ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) { in do_ip_setsockopt()
1159 release_sock(sk); in do_ip_setsockopt()
1165 release_sock(sk); in do_ip_setsockopt()
1180 void ipv4_pktinfo_prepare(const struct sock *sk, struct sk_buff *skb) in ipv4_pktinfo_prepare() argument
1183 bool prepare = (inet_sk(sk)->cmsg_flags & IP_CMSG_PKTINFO) || in ipv4_pktinfo_prepare()
1184 ipv6_sk_rxinfo(sk); in ipv4_pktinfo_prepare()
1196 int ip_setsockopt(struct sock *sk, int level, in ip_setsockopt() argument
1204 err = do_ip_setsockopt(sk, level, optname, optval, optlen); in ip_setsockopt()
1211 lock_sock(sk); in ip_setsockopt()
1212 err = nf_setsockopt(sk, PF_INET, optname, optval, optlen); in ip_setsockopt()
1213 release_sock(sk); in ip_setsockopt()
1221 int compat_ip_setsockopt(struct sock *sk, int level, int optname, in compat_ip_setsockopt() argument
1230 return compat_mc_setsockopt(sk, level, optname, optval, optlen, in compat_ip_setsockopt()
1233 err = do_ip_setsockopt(sk, level, optname, optval, optlen); in compat_ip_setsockopt()
1240 lock_sock(sk); in compat_ip_setsockopt()
1241 err = compat_nf_setsockopt(sk, PF_INET, optname, in compat_ip_setsockopt()
1243 release_sock(sk); in compat_ip_setsockopt()
1266 static int do_ip_getsockopt(struct sock *sk, int level, int optname, in do_ip_getsockopt() argument
1269 struct inet_sock *inet = inet_sk(sk); in do_ip_getsockopt()
1278 return ip_mroute_getsockopt(sk, optname, optval, optlen); in do_ip_getsockopt()
1287 lock_sock(sk); in do_ip_getsockopt()
1297 sock_owned_by_user(sk)); in do_ip_getsockopt()
1303 release_sock(sk); in do_ip_getsockopt()
1365 dst = sk_dst_get(sk); in do_ip_getsockopt()
1371 release_sock(sk); in do_ip_getsockopt()
1393 release_sock(sk); in do_ip_getsockopt()
1413 err = ip_mc_msfget(sk, &msf, in do_ip_getsockopt()
1429 err = ip_mc_gsfget(sk, &gsf, in do_ip_getsockopt()
1441 release_sock(sk); in do_ip_getsockopt()
1443 if (sk->sk_type != SOCK_STREAM) in do_ip_getsockopt()
1479 release_sock(sk); in do_ip_getsockopt()
1482 release_sock(sk); in do_ip_getsockopt()
1501 release_sock(sk); in do_ip_getsockopt()
1507 int ip_getsockopt(struct sock *sk, int level, in ip_getsockopt() argument
1512 err = do_ip_getsockopt(sk, level, optname, optval, optlen, 0); in ip_getsockopt()
1522 lock_sock(sk); in ip_getsockopt()
1523 err = nf_getsockopt(sk, PF_INET, optname, optval, in ip_getsockopt()
1525 release_sock(sk); in ip_getsockopt()
1536 int compat_ip_getsockopt(struct sock *sk, int level, int optname, in compat_ip_getsockopt() argument
1542 return compat_mc_getsockopt(sk, level, optname, optval, optlen, in compat_ip_getsockopt()
1545 err = do_ip_getsockopt(sk, level, optname, optval, optlen, in compat_ip_getsockopt()
1557 lock_sock(sk); in compat_ip_getsockopt()
1558 err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len); in compat_ip_getsockopt()
1559 release_sock(sk); in compat_ip_getsockopt()