inet_diag.c (7c23aaf2eacdd10825237160cb8005efd7222061) | inet_diag.c (33cf7c90fe2f97afb1cadaa0cfb782cb9d1b9ee2) |
---|---|
1/* 2 * inet_diag.c Module for monitoring INET transport protocols sockets. 3 * 4 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 207 unchanged lines hidden (view full) --- 216 struct user_namespace *user_ns, 217 u32 portid, u32 seq, u16 nlmsg_flags, 218 const struct nlmsghdr *unlh) 219{ 220 return inet_sk_diag_fill(sk, inet_csk(sk), skb, req, 221 user_ns, portid, seq, nlmsg_flags, unlh); 222} 223 | 1/* 2 * inet_diag.c Module for monitoring INET transport protocols sockets. 3 * 4 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 207 unchanged lines hidden (view full) --- 216 struct user_namespace *user_ns, 217 u32 portid, u32 seq, u16 nlmsg_flags, 218 const struct nlmsghdr *unlh) 219{ 220 return inet_sk_diag_fill(sk, inet_csk(sk), skb, req, 221 user_ns, portid, seq, nlmsg_flags, unlh); 222} 223 |
224static int inet_twsk_diag_fill(struct inet_timewait_sock *tw, | 224static int inet_twsk_diag_fill(struct sock *sk, |
225 struct sk_buff *skb, 226 const struct inet_diag_req_v2 *req, 227 u32 portid, u32 seq, u16 nlmsg_flags, 228 const struct nlmsghdr *unlh) 229{ | 225 struct sk_buff *skb, 226 const struct inet_diag_req_v2 *req, 227 u32 portid, u32 seq, u16 nlmsg_flags, 228 const struct nlmsghdr *unlh) 229{ |
230 struct inet_timewait_sock *tw = inet_twsk(sk); |
|
230 struct inet_diag_msg *r; 231 struct nlmsghdr *nlh; 232 s32 tmo; 233 234 nlh = nlmsg_put(skb, portid, seq, unlh->nlmsg_type, sizeof(*r), 235 nlmsg_flags); 236 if (!nlh) 237 return -EMSGSIZE; --- 4 unchanged lines hidden (view full) --- 242 tmo = tw->tw_ttd - inet_tw_time_stamp(); 243 if (tmo < 0) 244 tmo = 0; 245 246 r->idiag_family = tw->tw_family; 247 r->idiag_retrans = 0; 248 249 r->id.idiag_if = tw->tw_bound_dev_if; | 231 struct inet_diag_msg *r; 232 struct nlmsghdr *nlh; 233 s32 tmo; 234 235 nlh = nlmsg_put(skb, portid, seq, unlh->nlmsg_type, sizeof(*r), 236 nlmsg_flags); 237 if (!nlh) 238 return -EMSGSIZE; --- 4 unchanged lines hidden (view full) --- 243 tmo = tw->tw_ttd - inet_tw_time_stamp(); 244 if (tmo < 0) 245 tmo = 0; 246 247 r->idiag_family = tw->tw_family; 248 r->idiag_retrans = 0; 249 250 r->id.idiag_if = tw->tw_bound_dev_if; |
250 sock_diag_save_cookie(tw, r->id.idiag_cookie); | 251 sock_diag_save_cookie(sk, r->id.idiag_cookie); |
251 252 r->id.idiag_sport = tw->tw_sport; 253 r->id.idiag_dport = tw->tw_dport; 254 255 memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src)); 256 memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst)); 257 258 r->id.idiag_src[0] = tw->tw_rcv_saddr; --- 19 unchanged lines hidden (view full) --- 278 279static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, 280 const struct inet_diag_req_v2 *r, 281 struct user_namespace *user_ns, 282 u32 portid, u32 seq, u16 nlmsg_flags, 283 const struct nlmsghdr *unlh) 284{ 285 if (sk->sk_state == TCP_TIME_WAIT) | 252 253 r->id.idiag_sport = tw->tw_sport; 254 r->id.idiag_dport = tw->tw_dport; 255 256 memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src)); 257 memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst)); 258 259 r->id.idiag_src[0] = tw->tw_rcv_saddr; --- 19 unchanged lines hidden (view full) --- 279 280static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, 281 const struct inet_diag_req_v2 *r, 282 struct user_namespace *user_ns, 283 u32 portid, u32 seq, u16 nlmsg_flags, 284 const struct nlmsghdr *unlh) 285{ 286 if (sk->sk_state == TCP_TIME_WAIT) |
286 return inet_twsk_diag_fill(inet_twsk(sk), skb, r, portid, seq, | 287 return inet_twsk_diag_fill(sk, skb, r, portid, seq, |
287 nlmsg_flags, unlh); 288 289 return inet_csk_diag_fill(sk, skb, r, user_ns, portid, seq, 290 nlmsg_flags, unlh); 291} 292 293int inet_diag_dump_one_icsk(struct inet_hashinfo *hashinfo, 294 struct sk_buff *in_skb, --- 375 unchanged lines hidden (view full) --- 670 const struct inet_diag_req_v2 *r, 671 const struct nlattr *bc) 672{ 673 twsk_build_assert(); 674 675 if (!inet_diag_bc_sk(bc, sk)) 676 return 0; 677 | 288 nlmsg_flags, unlh); 289 290 return inet_csk_diag_fill(sk, skb, r, user_ns, portid, seq, 291 nlmsg_flags, unlh); 292} 293 294int inet_diag_dump_one_icsk(struct inet_hashinfo *hashinfo, 295 struct sk_buff *in_skb, --- 375 unchanged lines hidden (view full) --- 671 const struct inet_diag_req_v2 *r, 672 const struct nlattr *bc) 673{ 674 twsk_build_assert(); 675 676 if (!inet_diag_bc_sk(bc, sk)) 677 return 0; 678 |
678 return inet_twsk_diag_fill(inet_twsk(sk), skb, r, | 679 return inet_twsk_diag_fill(sk, skb, r, |
679 NETLINK_CB(cb->skb).portid, 680 cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh); 681} 682 683/* Get the IPv4, IPv6, or IPv4-mapped-IPv6 local and remote addresses 684 * from a request_sock. For IPv4-mapped-IPv6 we must map IPv4 to IPv6. 685 */ 686static void inet_diag_req_addrs(const struct sock *sk, --- 42 unchanged lines hidden (view full) --- 729 730 r = nlmsg_data(nlh); 731 r->idiag_family = sk->sk_family; 732 r->idiag_state = TCP_SYN_RECV; 733 r->idiag_timer = 1; 734 r->idiag_retrans = req->num_retrans; 735 736 r->id.idiag_if = sk->sk_bound_dev_if; | 680 NETLINK_CB(cb->skb).portid, 681 cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh); 682} 683 684/* Get the IPv4, IPv6, or IPv4-mapped-IPv6 local and remote addresses 685 * from a request_sock. For IPv4-mapped-IPv6 we must map IPv4 to IPv6. 686 */ 687static void inet_diag_req_addrs(const struct sock *sk, --- 42 unchanged lines hidden (view full) --- 730 731 r = nlmsg_data(nlh); 732 r->idiag_family = sk->sk_family; 733 r->idiag_state = TCP_SYN_RECV; 734 r->idiag_timer = 1; 735 r->idiag_retrans = req->num_retrans; 736 737 r->id.idiag_if = sk->sk_bound_dev_if; |
737 sock_diag_save_cookie(req, r->id.idiag_cookie); | |
738 | 738 |
739 BUILD_BUG_ON(offsetof(struct inet_request_sock, ir_cookie) != 740 offsetof(struct sock, sk_cookie)); 741 sock_diag_save_cookie((struct sock *)ireq, r->id.idiag_cookie); 742 |
|
739 tmo = req->expires - jiffies; 740 if (tmo < 0) 741 tmo = 0; 742 743 r->id.idiag_sport = inet->inet_sport; 744 r->id.idiag_dport = ireq->ir_rmt_port; 745 746 memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src)); --- 454 unchanged lines hidden --- | 743 tmo = req->expires - jiffies; 744 if (tmo < 0) 745 tmo = 0; 746 747 r->id.idiag_sport = inet->inet_sport; 748 r->id.idiag_dport = ireq->ir_rmt_port; 749 750 memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src)); --- 454 unchanged lines hidden --- |