Lines Matching refs:sk
69 static void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk) in inet_diag_msg_common_fill() argument
71 r->idiag_family = sk->sk_family; in inet_diag_msg_common_fill()
73 r->id.idiag_sport = htons(sk->sk_num); in inet_diag_msg_common_fill()
74 r->id.idiag_dport = sk->sk_dport; in inet_diag_msg_common_fill()
75 r->id.idiag_if = sk->sk_bound_dev_if; in inet_diag_msg_common_fill()
76 sock_diag_save_cookie(sk, r->id.idiag_cookie); in inet_diag_msg_common_fill()
79 if (sk->sk_family == AF_INET6) { in inet_diag_msg_common_fill()
80 *(struct in6_addr *)r->id.idiag_src = sk->sk_v6_rcv_saddr; in inet_diag_msg_common_fill()
81 *(struct in6_addr *)r->id.idiag_dst = sk->sk_v6_daddr; in inet_diag_msg_common_fill()
88 r->id.idiag_src[0] = sk->sk_rcv_saddr; in inet_diag_msg_common_fill()
89 r->id.idiag_dst[0] = sk->sk_daddr; in inet_diag_msg_common_fill()
107 int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk, in inet_sk_diag_fill() argument
113 const struct inet_sock *inet = inet_sk(sk); in inet_sk_diag_fill()
131 BUG_ON(!sk_fullsock(sk)); in inet_sk_diag_fill()
133 inet_diag_msg_common_fill(r, sk); in inet_sk_diag_fill()
134 r->idiag_state = sk->sk_state; in inet_sk_diag_fill()
138 if (nla_put_u8(skb, INET_DIAG_SHUTDOWN, sk->sk_shutdown)) in inet_sk_diag_fill()
152 inet6_sk(sk)->tclass) < 0) in inet_sk_diag_fill()
155 if (((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) && in inet_sk_diag_fill()
156 nla_put_u8(skb, INET_DIAG_SKV6ONLY, ipv6_only_sock(sk))) in inet_sk_diag_fill()
161 r->idiag_uid = from_kuid_munged(user_ns, sock_i_uid(sk)); in inet_sk_diag_fill()
162 r->idiag_inode = sock_i_ino(sk); in inet_sk_diag_fill()
166 .idiag_rmem = sk_rmem_alloc_get(sk), in inet_sk_diag_fill()
167 .idiag_wmem = sk->sk_wmem_queued, in inet_sk_diag_fill()
168 .idiag_fmem = sk->sk_forward_alloc, in inet_sk_diag_fill()
169 .idiag_tmem = sk_wmem_alloc_get(sk), in inet_sk_diag_fill()
177 if (sock_diag_put_meminfo(sk, skb, INET_DIAG_SKMEMINFO)) in inet_sk_diag_fill()
181 handler->idiag_get_info(sk, r, NULL); in inet_sk_diag_fill()
197 } else if (timer_pending(&sk->sk_timer)) { in inet_sk_diag_fill()
200 r->idiag_expires = EXPIRES_IN_MS(sk->sk_timer.expires); in inet_sk_diag_fill()
228 handler->idiag_get_info(sk, r, info); in inet_sk_diag_fill()
230 if (sk->sk_state < TCP_TIME_WAIT) { in inet_sk_diag_fill()
238 sz = ca_ops->get_info(sk, ext, &attr, &info); in inet_sk_diag_fill()
254 static int inet_csk_diag_fill(struct sock *sk, in inet_csk_diag_fill() argument
261 return inet_sk_diag_fill(sk, inet_csk(sk), skb, req, in inet_csk_diag_fill()
265 static int inet_twsk_diag_fill(struct sock *sk, in inet_twsk_diag_fill() argument
270 struct inet_timewait_sock *tw = inet_twsk(sk); in inet_twsk_diag_fill()
287 inet_diag_msg_common_fill(r, sk); in inet_twsk_diag_fill()
302 static int inet_req_diag_fill(struct sock *sk, struct sk_buff *skb, in inet_req_diag_fill() argument
316 inet_diag_msg_common_fill(r, sk); in inet_req_diag_fill()
319 r->idiag_retrans = inet_reqsk(sk)->num_retrans; in inet_req_diag_fill()
324 tmo = inet_reqsk(sk)->rsk_timer.expires - jiffies; in inet_req_diag_fill()
335 static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, in sk_diag_fill() argument
341 if (sk->sk_state == TCP_TIME_WAIT) in sk_diag_fill()
342 return inet_twsk_diag_fill(sk, skb, portid, seq, in sk_diag_fill()
345 if (sk->sk_state == TCP_NEW_SYN_RECV) in sk_diag_fill()
346 return inet_req_diag_fill(sk, skb, portid, seq, in sk_diag_fill()
349 return inet_csk_diag_fill(sk, skb, r, user_ns, portid, seq, in sk_diag_fill()
358 struct net *net = sock_net(in_skb->sk); in inet_diag_dump_one_icsk()
360 struct sock *sk; in inet_diag_dump_one_icsk() local
365 sk = inet_lookup(net, hashinfo, req->id.idiag_dst[0], in inet_diag_dump_one_icsk()
370 sk = inet6_lookup(net, hashinfo, in inet_diag_dump_one_icsk()
381 if (!sk) in inet_diag_dump_one_icsk()
384 err = sock_diag_check_cookie(sk, req->id.idiag_cookie); in inet_diag_dump_one_icsk()
394 err = sk_diag_fill(sk, rep, req, in inet_diag_dump_one_icsk()
395 sk_user_ns(NETLINK_CB(in_skb).sk), in inet_diag_dump_one_icsk()
409 if (sk) in inet_diag_dump_one_icsk()
410 sock_gen_put(sk); in inet_diag_dump_one_icsk()
548 const struct sock *sk) in entry_fill_addrs() argument
551 if (sk->sk_family == AF_INET6) { in entry_fill_addrs()
552 entry->saddr = sk->sk_v6_rcv_saddr.s6_addr32; in entry_fill_addrs()
553 entry->daddr = sk->sk_v6_daddr.s6_addr32; in entry_fill_addrs()
557 entry->saddr = &sk->sk_rcv_saddr; in entry_fill_addrs()
558 entry->daddr = &sk->sk_daddr; in entry_fill_addrs()
562 int inet_diag_bc_sk(const struct nlattr *bc, struct sock *sk) in inet_diag_bc_sk() argument
564 struct inet_sock *inet = inet_sk(sk); in inet_diag_bc_sk()
570 entry.family = sk->sk_family; in inet_diag_bc_sk()
571 entry_fill_addrs(&entry, sk); in inet_diag_bc_sk()
574 entry.userlocks = sk_fullsock(sk) ? sk->sk_userlocks : 0; in inet_diag_bc_sk()
692 static int inet_csk_diag_dump(struct sock *sk, in inet_csk_diag_dump() argument
698 if (!inet_diag_bc_sk(bc, sk)) in inet_csk_diag_dump()
701 return inet_csk_diag_fill(sk, skb, r, in inet_csk_diag_dump()
702 sk_user_ns(NETLINK_CB(cb->skb).sk), in inet_csk_diag_dump()
737 struct net *net = sock_net(skb->sk); in inet_diag_dump_icsk()
753 struct sock *sk; in inet_diag_dump_icsk() local
758 sk_nulls_for_each(sk, node, &ilb->head) { in inet_diag_dump_icsk()
759 struct inet_sock *inet = inet_sk(sk); in inet_diag_dump_icsk()
761 if (!net_eq(sock_net(sk), net)) in inet_diag_dump_icsk()
770 sk->sk_family != r->sdiag_family) in inet_diag_dump_icsk()
781 if (inet_csk_diag_dump(sk, skb, cb, r, bc) < 0) { in inet_diag_dump_icsk()
809 struct sock *sk; in inet_diag_dump_icsk() local
820 sk_nulls_for_each(sk, node, &head->chain) { in inet_diag_dump_icsk()
823 if (!net_eq(sock_net(sk), net)) in inet_diag_dump_icsk()
827 state = (sk->sk_state == TCP_TIME_WAIT) ? in inet_diag_dump_icsk()
828 inet_twsk(sk)->tw_substate : sk->sk_state; in inet_diag_dump_icsk()
832 sk->sk_family != r->sdiag_family) in inet_diag_dump_icsk()
834 if (r->id.idiag_sport != htons(sk->sk_num) && in inet_diag_dump_icsk()
837 if (r->id.idiag_dport != sk->sk_dport && in inet_diag_dump_icsk()
842 if (!inet_diag_bc_sk(bc, sk)) in inet_diag_dump_icsk()
845 res = sk_diag_fill(sk, skb, r, in inet_diag_dump_icsk()
846 sk_user_ns(NETLINK_CB(cb->skb).sk), in inet_diag_dump_icsk()
947 struct net *net = sock_net(skb->sk); in inet_diag_rcv_msg_compat()
978 struct net *net = sock_net(skb->sk); in inet_diag_handler_dump()
1006 int inet_diag_handler_get_info(struct sk_buff *skb, struct sock *sk) in inet_diag_handler_get_info() argument
1021 inet_diag_msg_common_fill(r, sk); in inet_diag_handler_get_info()
1022 if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_STREAM) in inet_diag_handler_get_info()
1023 r->id.idiag_sport = inet_sk(sk)->inet_sport; in inet_diag_handler_get_info()
1024 r->idiag_state = sk->sk_state; in inet_diag_handler_get_info()
1026 if ((err = nla_put_u8(skb, INET_DIAG_PROTOCOL, sk->sk_protocol))) { in inet_diag_handler_get_info()
1031 handler = inet_diag_lock_handler(sk->sk_protocol); in inet_diag_handler_get_info()
1044 handler->idiag_get_info(sk, r, info); in inet_diag_handler_get_info()