inet_diag.c (300e812db26f4aa022e346f5fb9af1af134d98d8) | inet_diag.c (717b6d83664646963c71d014c71babaa802333b9) |
---|---|
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 --- 94 unchanged lines hidden (view full) --- 103 104 if ((ext & (1 << (INET_DIAG_CONG - 1))) && icsk->icsk_ca_ops) { 105 const size_t len = strlen(icsk->icsk_ca_ops->name); 106 107 strcpy(INET_DIAG_PUT(skb, INET_DIAG_CONG, len + 1), 108 icsk->icsk_ca_ops->name); 109 } 110 | 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 --- 94 unchanged lines hidden (view full) --- 103 104 if ((ext & (1 << (INET_DIAG_CONG - 1))) && icsk->icsk_ca_ops) { 105 const size_t len = strlen(icsk->icsk_ca_ops->name); 106 107 strcpy(INET_DIAG_PUT(skb, INET_DIAG_CONG, len + 1), 108 icsk->icsk_ca_ops->name); 109 } 110 |
111 if ((ext & (1 << (INET_DIAG_TOS - 1))) && (sk->sk_family != AF_INET6)) 112 RTA_PUT_U8(skb, INET_DIAG_TOS, inet->tos); 113 | |
114 r->idiag_family = sk->sk_family; 115 r->idiag_state = sk->sk_state; 116 r->idiag_timer = 0; 117 r->idiag_retrans = 0; 118 119 r->id.idiag_if = sk->sk_bound_dev_if; 120 r->id.idiag_cookie[0] = (u32)(unsigned long)sk; 121 r->id.idiag_cookie[1] = (u32)(((unsigned long)sk >> 31) >> 1); 122 123 r->id.idiag_sport = inet->inet_sport; 124 r->id.idiag_dport = inet->inet_dport; 125 r->id.idiag_src[0] = inet->inet_rcv_saddr; 126 r->id.idiag_dst[0] = inet->inet_daddr; 127 | 111 r->idiag_family = sk->sk_family; 112 r->idiag_state = sk->sk_state; 113 r->idiag_timer = 0; 114 r->idiag_retrans = 0; 115 116 r->id.idiag_if = sk->sk_bound_dev_if; 117 r->id.idiag_cookie[0] = (u32)(unsigned long)sk; 118 r->id.idiag_cookie[1] = (u32)(((unsigned long)sk >> 31) >> 1); 119 120 r->id.idiag_sport = inet->inet_sport; 121 r->id.idiag_dport = inet->inet_dport; 122 r->id.idiag_src[0] = inet->inet_rcv_saddr; 123 r->id.idiag_dst[0] = inet->inet_daddr; 124 |
125 /* IPv6 dual-stack sockets use inet->tos for IPv4 connections, 126 * hence this needs to be included regardless of socket family. 127 */ 128 if (ext & (1 << (INET_DIAG_TOS - 1))) 129 RTA_PUT_U8(skb, INET_DIAG_TOS, inet->tos); 130 |
|
128#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) 129 if (r->idiag_family == AF_INET6) { 130 const struct ipv6_pinfo *np = inet6_sk(sk); 131 | 131#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) 132 if (r->idiag_family == AF_INET6) { 133 const struct ipv6_pinfo *np = inet6_sk(sk); 134 |
135 if (ext & (1 << (INET_DIAG_TCLASS - 1))) 136 RTA_PUT_U8(skb, INET_DIAG_TCLASS, np->tclass); 137 |
|
132 ipv6_addr_copy((struct in6_addr *)r->id.idiag_src, 133 &np->rcv_saddr); 134 ipv6_addr_copy((struct in6_addr *)r->id.idiag_dst, 135 &np->daddr); | 138 ipv6_addr_copy((struct in6_addr *)r->id.idiag_src, 139 &np->rcv_saddr); 140 ipv6_addr_copy((struct in6_addr *)r->id.idiag_dst, 141 &np->daddr); |
136 if (ext & (1 << (INET_DIAG_TOS - 1))) 137 RTA_PUT_U8(skb, INET_DIAG_TOS, np->tclass); | |
138 } 139#endif 140 141#define EXPIRES_IN_MS(tmo) DIV_ROUND_UP((tmo - jiffies) * 1000, HZ) 142 143 if (icsk->icsk_pending == ICSK_TIME_RETRANS) { 144 r->idiag_timer = 1; 145 r->idiag_retrans = icsk->icsk_retransmits; --- 811 unchanged lines hidden --- | 142 } 143#endif 144 145#define EXPIRES_IN_MS(tmo) DIV_ROUND_UP((tmo - jiffies) * 1000, HZ) 146 147 if (icsk->icsk_pending == ICSK_TIME_RETRANS) { 148 r->idiag_timer = 1; 149 r->idiag_retrans = icsk->icsk_retransmits; --- 811 unchanged lines hidden --- |