Blame view
net/ipv4/proc.c
20.2 KB
2874c5fd2 treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 7 8 9 10 |
/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * This file implements the various access functions for the * PROC file system. It is mainly used for debugging and * statistics. * |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
* Authors: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * Gerald J. Heim, <heim@peanuts.informatik.uni-tuebingen.de> * Fred Baumgarten, <dc6iq@insu1.etec.uni-karlsruhe.de> * Erik Schoenfelder, <schoenfr@ibr.cs.tu-bs.de> * * Fixes: * Alan Cox : UDP sockets show the rxqueue/txqueue * using hint flag for the netinfo. * Pauline Middelink : identd support * Alan Cox : Make /proc safer. * Erik Schoenfelder : /proc/net/snmp * Alan Cox : Handle dead sockets properly. * Gerhard Koerting : Show both timers * Alan Cox : Allow inode to be NULL (kernel socket) * Andi Kleen : Add support for open_requests and * split functions for more readibility. * Andi Kleen : Add support for /proc/net/netstat * Arnaldo C. Melo : Convert to seq_file |
1da177e4c Linux-2.6.12-rc2 |
29 30 |
*/ #include <linux/types.h> |
457c4cbc5 [NET]: Make /proc... |
31 |
#include <net/net_namespace.h> |
1da177e4c Linux-2.6.12-rc2 |
32 33 34 |
#include <net/icmp.h> #include <net/protocol.h> #include <net/tcp.h> |
fc518953b mptcp: add and us... |
35 |
#include <net/mptcp.h> |
1da177e4c Linux-2.6.12-rc2 |
36 |
#include <net/udp.h> |
ba4e58eca [NET]: Supporting... |
37 |
#include <net/udplite.h> |
eb4dea585 net: Fix percpu c... |
38 |
#include <linux/bottom_half.h> |
14c850212 [INET_SOCK]: Move... |
39 |
#include <linux/inetdevice.h> |
1da177e4c Linux-2.6.12-rc2 |
40 41 |
#include <linux/proc_fs.h> #include <linux/seq_file.h> |
bc3b2d7fb net: Add export.h... |
42 |
#include <linux/export.h> |
1da177e4c Linux-2.6.12-rc2 |
43 44 |
#include <net/sock.h> #include <net/raw.h> |
f22d5c490 proc: Reduce cach... |
45 |
#define TCPUDP_MIB_MAX max_t(u32, UDP_MIB_MAX, TCP_MIB_MAX) |
1da177e4c Linux-2.6.12-rc2 |
46 47 48 49 50 |
/* * Report socket allocation statistics [mea@utu.fi] */ static int sockstat_seq_show(struct seq_file *seq, void *v) { |
fd4e7b504 [IPV4][NETNS]: Di... |
51 |
struct net *net = seq->private; |
eb4dea585 net: Fix percpu c... |
52 |
int orphans, sockets; |
1c10c49d8 net: replace comm... |
53 |
orphans = percpu_counter_sum_positive(&tcp_orphan_count); |
180d8cd94 foundations of pe... |
54 |
sockets = proto_sockets_allocated_sum_positive(&tcp_prot); |
fd4e7b504 [IPV4][NETNS]: Di... |
55 |
|
1da177e4c Linux-2.6.12-rc2 |
56 |
socket_seq_show(seq); |
8d987e5c7 net: avoid limits... |
57 58 |
seq_printf(seq, "TCP: inuse %d orphan %d tw %d alloc %d mem %ld ", |
eb4dea585 net: Fix percpu c... |
59 |
sock_prot_inuse_get(net, &tcp_prot), orphans, |
1946e672c ipv4: Namespaceif... |
60 |
atomic_read(&net->ipv4.tcp_death_row.tw_count), sockets, |
180d8cd94 foundations of pe... |
61 |
proto_memory_allocated(&tcp_prot)); |
8d987e5c7 net: avoid limits... |
62 63 |
seq_printf(seq, "UDP: inuse %d mem %ld ", |
fd4e7b504 [IPV4][NETNS]: Di... |
64 |
sock_prot_inuse_get(net, &udp_prot), |
180d8cd94 foundations of pe... |
65 |
proto_memory_allocated(&udp_prot)); |
c29a0bc4d [SOCK][NETNS]: Ad... |
66 67 |
seq_printf(seq, "UDPLITE: inuse %d ", |
fd4e7b504 [IPV4][NETNS]: Di... |
68 |
sock_prot_inuse_get(net, &udplite_prot)); |
c29a0bc4d [SOCK][NETNS]: Ad... |
69 70 |
seq_printf(seq, "RAW: inuse %d ", |
fd4e7b504 [IPV4][NETNS]: Di... |
71 |
sock_prot_inuse_get(net, &raw_prot)); |
3e67f106f inet: frags: brea... |
72 73 |
seq_printf(seq, "FRAG: inuse %u memory %lu ", |
4907abc60 net: dynamically ... |
74 75 |
atomic_read(&net->ipv4.fqdir->rhashtable.nelems), frag_mem_limit(net->ipv4.fqdir)); |
1da177e4c Linux-2.6.12-rc2 |
76 77 |
return 0; } |
1da177e4c Linux-2.6.12-rc2 |
78 |
/* snmp items */ |
9b5b5cff9 [NET]: Add const ... |
79 |
static const struct snmp_mib snmp4_ipstats_list[] = { |
edf391ff1 snmp: add missing... |
80 |
SNMP_MIB_ITEM("InReceives", IPSTATS_MIB_INPKTS), |
1da177e4c Linux-2.6.12-rc2 |
81 82 83 84 85 86 |
SNMP_MIB_ITEM("InHdrErrors", IPSTATS_MIB_INHDRERRORS), SNMP_MIB_ITEM("InAddrErrors", IPSTATS_MIB_INADDRERRORS), SNMP_MIB_ITEM("ForwDatagrams", IPSTATS_MIB_OUTFORWDATAGRAMS), SNMP_MIB_ITEM("InUnknownProtos", IPSTATS_MIB_INUNKNOWNPROTOS), SNMP_MIB_ITEM("InDiscards", IPSTATS_MIB_INDISCARDS), SNMP_MIB_ITEM("InDelivers", IPSTATS_MIB_INDELIVERS), |
edf391ff1 snmp: add missing... |
87 |
SNMP_MIB_ITEM("OutRequests", IPSTATS_MIB_OUTPKTS), |
1da177e4c Linux-2.6.12-rc2 |
88 89 90 91 92 93 94 95 96 97 98 |
SNMP_MIB_ITEM("OutDiscards", IPSTATS_MIB_OUTDISCARDS), SNMP_MIB_ITEM("OutNoRoutes", IPSTATS_MIB_OUTNOROUTES), SNMP_MIB_ITEM("ReasmTimeout", IPSTATS_MIB_REASMTIMEOUT), SNMP_MIB_ITEM("ReasmReqds", IPSTATS_MIB_REASMREQDS), SNMP_MIB_ITEM("ReasmOKs", IPSTATS_MIB_REASMOKS), SNMP_MIB_ITEM("ReasmFails", IPSTATS_MIB_REASMFAILS), SNMP_MIB_ITEM("FragOKs", IPSTATS_MIB_FRAGOKS), SNMP_MIB_ITEM("FragFails", IPSTATS_MIB_FRAGFAILS), SNMP_MIB_ITEM("FragCreates", IPSTATS_MIB_FRAGCREATES), SNMP_MIB_SENTINEL }; |
1f07d03e2 net: add SNMP cou... |
99 |
/* Following items are displayed in /proc/net/netstat */ |
d831666e9 [IPV4] SNMP: Disp... |
100 101 102 103 104 105 106 |
static const struct snmp_mib snmp4_ipextstats_list[] = { SNMP_MIB_ITEM("InNoRoutes", IPSTATS_MIB_INNOROUTES), SNMP_MIB_ITEM("InTruncatedPkts", IPSTATS_MIB_INTRUNCATEDPKTS), SNMP_MIB_ITEM("InMcastPkts", IPSTATS_MIB_INMCASTPKTS), SNMP_MIB_ITEM("OutMcastPkts", IPSTATS_MIB_OUTMCASTPKTS), SNMP_MIB_ITEM("InBcastPkts", IPSTATS_MIB_INBCASTPKTS), SNMP_MIB_ITEM("OutBcastPkts", IPSTATS_MIB_OUTBCASTPKTS), |
edf391ff1 snmp: add missing... |
107 108 109 110 111 112 |
SNMP_MIB_ITEM("InOctets", IPSTATS_MIB_INOCTETS), SNMP_MIB_ITEM("OutOctets", IPSTATS_MIB_OUTOCTETS), SNMP_MIB_ITEM("InMcastOctets", IPSTATS_MIB_INMCASTOCTETS), SNMP_MIB_ITEM("OutMcastOctets", IPSTATS_MIB_OUTMCASTOCTETS), SNMP_MIB_ITEM("InBcastOctets", IPSTATS_MIB_INBCASTOCTETS), SNMP_MIB_ITEM("OutBcastOctets", IPSTATS_MIB_OUTBCASTOCTETS), |
1f07d03e2 net: add SNMP cou... |
113 |
/* Non RFC4293 fields */ |
6a5dc9e59 net: Add MIB coun... |
114 |
SNMP_MIB_ITEM("InCsumErrors", IPSTATS_MIB_CSUMERRORS), |
1f07d03e2 net: add SNMP cou... |
115 116 117 118 |
SNMP_MIB_ITEM("InNoECTPkts", IPSTATS_MIB_NOECTPKTS), SNMP_MIB_ITEM("InECT1Pkts", IPSTATS_MIB_ECT1PKTS), SNMP_MIB_ITEM("InECT0Pkts", IPSTATS_MIB_ECT0PKTS), SNMP_MIB_ITEM("InCEPkts", IPSTATS_MIB_CEPKTS), |
7969e5c40 ip: discard IPv4 ... |
119 |
SNMP_MIB_ITEM("ReasmOverlaps", IPSTATS_MIB_REASM_OVERLAPS), |
d831666e9 [IPV4] SNMP: Disp... |
120 121 |
SNMP_MIB_SENTINEL }; |
5833929cc net: constify MIB... |
122 123 |
static const struct { const char *name; |
96793b482 [IPV4]: Add ICMPM... |
124 125 126 127 128 129 130 131 132 133 134 135 136 |
int index; } icmpmibmap[] = { { "DestUnreachs", ICMP_DEST_UNREACH }, { "TimeExcds", ICMP_TIME_EXCEEDED }, { "ParmProbs", ICMP_PARAMETERPROB }, { "SrcQuenchs", ICMP_SOURCE_QUENCH }, { "Redirects", ICMP_REDIRECT }, { "Echos", ICMP_ECHO }, { "EchoReps", ICMP_ECHOREPLY }, { "Timestamps", ICMP_TIMESTAMP }, { "TimestampReps", ICMP_TIMESTAMPREPLY }, { "AddrMasks", ICMP_ADDRESS }, { "AddrMaskReps", ICMP_ADDRESSREPLY }, |
cfcabdcc2 [NET]: sparse war... |
137 |
{ NULL, 0 } |
96793b482 [IPV4]: Add ICMPM... |
138 |
}; |
9b5b5cff9 [NET]: Add const ... |
139 |
static const struct snmp_mib snmp4_tcp_list[] = { |
1da177e4c Linux-2.6.12-rc2 |
140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
SNMP_MIB_ITEM("RtoAlgorithm", TCP_MIB_RTOALGORITHM), SNMP_MIB_ITEM("RtoMin", TCP_MIB_RTOMIN), SNMP_MIB_ITEM("RtoMax", TCP_MIB_RTOMAX), SNMP_MIB_ITEM("MaxConn", TCP_MIB_MAXCONN), SNMP_MIB_ITEM("ActiveOpens", TCP_MIB_ACTIVEOPENS), SNMP_MIB_ITEM("PassiveOpens", TCP_MIB_PASSIVEOPENS), SNMP_MIB_ITEM("AttemptFails", TCP_MIB_ATTEMPTFAILS), SNMP_MIB_ITEM("EstabResets", TCP_MIB_ESTABRESETS), SNMP_MIB_ITEM("CurrEstab", TCP_MIB_CURRESTAB), SNMP_MIB_ITEM("InSegs", TCP_MIB_INSEGS), SNMP_MIB_ITEM("OutSegs", TCP_MIB_OUTSEGS), SNMP_MIB_ITEM("RetransSegs", TCP_MIB_RETRANSSEGS), SNMP_MIB_ITEM("InErrs", TCP_MIB_INERRS), SNMP_MIB_ITEM("OutRsts", TCP_MIB_OUTRSTS), |
6a5dc9e59 net: Add MIB coun... |
154 |
SNMP_MIB_ITEM("InCsumErrors", TCP_MIB_CSUMERRORS), |
1da177e4c Linux-2.6.12-rc2 |
155 156 |
SNMP_MIB_SENTINEL }; |
9b5b5cff9 [NET]: Add const ... |
157 |
static const struct snmp_mib snmp4_udp_list[] = { |
1da177e4c Linux-2.6.12-rc2 |
158 159 160 161 |
SNMP_MIB_ITEM("InDatagrams", UDP_MIB_INDATAGRAMS), SNMP_MIB_ITEM("NoPorts", UDP_MIB_NOPORTS), SNMP_MIB_ITEM("InErrors", UDP_MIB_INERRORS), SNMP_MIB_ITEM("OutDatagrams", UDP_MIB_OUTDATAGRAMS), |
81aa646cc [IPV4]: add the U... |
162 163 |
SNMP_MIB_ITEM("RcvbufErrors", UDP_MIB_RCVBUFERRORS), SNMP_MIB_ITEM("SndbufErrors", UDP_MIB_SNDBUFERRORS), |
6a5dc9e59 net: Add MIB coun... |
164 |
SNMP_MIB_ITEM("InCsumErrors", UDP_MIB_CSUMERRORS), |
36cbb2452 udp: Increment UD... |
165 |
SNMP_MIB_ITEM("IgnoredMulti", UDP_MIB_IGNOREDMULTI), |
1da177e4c Linux-2.6.12-rc2 |
166 167 |
SNMP_MIB_SENTINEL }; |
9b5b5cff9 [NET]: Add const ... |
168 |
static const struct snmp_mib snmp4_net_list[] = { |
1da177e4c Linux-2.6.12-rc2 |
169 170 171 172 173 174 175 176 177 178 179 180 181 |
SNMP_MIB_ITEM("SyncookiesSent", LINUX_MIB_SYNCOOKIESSENT), SNMP_MIB_ITEM("SyncookiesRecv", LINUX_MIB_SYNCOOKIESRECV), SNMP_MIB_ITEM("SyncookiesFailed", LINUX_MIB_SYNCOOKIESFAILED), SNMP_MIB_ITEM("EmbryonicRsts", LINUX_MIB_EMBRYONICRSTS), SNMP_MIB_ITEM("PruneCalled", LINUX_MIB_PRUNECALLED), SNMP_MIB_ITEM("RcvPruned", LINUX_MIB_RCVPRUNED), SNMP_MIB_ITEM("OfoPruned", LINUX_MIB_OFOPRUNED), SNMP_MIB_ITEM("OutOfWindowIcmps", LINUX_MIB_OUTOFWINDOWICMPS), SNMP_MIB_ITEM("LockDroppedIcmps", LINUX_MIB_LOCKDROPPEDICMPS), SNMP_MIB_ITEM("ArpFilter", LINUX_MIB_ARPFILTER), SNMP_MIB_ITEM("TW", LINUX_MIB_TIMEWAITED), SNMP_MIB_ITEM("TWRecycled", LINUX_MIB_TIMEWAITRECYCLED), SNMP_MIB_ITEM("TWKilled", LINUX_MIB_TIMEWAITKILLED), |
1da177e4c Linux-2.6.12-rc2 |
182 183 184 185 186 187 188 |
SNMP_MIB_ITEM("PAWSActive", LINUX_MIB_PAWSACTIVEREJECTED), SNMP_MIB_ITEM("PAWSEstab", LINUX_MIB_PAWSESTABREJECTED), SNMP_MIB_ITEM("DelayedACKs", LINUX_MIB_DELAYEDACKS), SNMP_MIB_ITEM("DelayedACKLocked", LINUX_MIB_DELAYEDACKLOCKED), SNMP_MIB_ITEM("DelayedACKLost", LINUX_MIB_DELAYEDACKLOST), SNMP_MIB_ITEM("ListenOverflows", LINUX_MIB_LISTENOVERFLOWS), SNMP_MIB_ITEM("ListenDrops", LINUX_MIB_LISTENDROPS), |
31770e34e tcp: Revert "tcp:... |
189 |
SNMP_MIB_ITEM("TCPHPHits", LINUX_MIB_TCPHPHITS), |
1da177e4c Linux-2.6.12-rc2 |
190 |
SNMP_MIB_ITEM("TCPPureAcks", LINUX_MIB_TCPPUREACKS), |
31770e34e tcp: Revert "tcp:... |
191 |
SNMP_MIB_ITEM("TCPHPAcks", LINUX_MIB_TCPHPACKS), |
1da177e4c Linux-2.6.12-rc2 |
192 193 194 |
SNMP_MIB_ITEM("TCPRenoRecovery", LINUX_MIB_TCPRENORECOVERY), SNMP_MIB_ITEM("TCPSackRecovery", LINUX_MIB_TCPSACKRECOVERY), SNMP_MIB_ITEM("TCPSACKReneging", LINUX_MIB_TCPSACKRENEGING), |
1da177e4c Linux-2.6.12-rc2 |
195 196 197 198 199 200 201 |
SNMP_MIB_ITEM("TCPSACKReorder", LINUX_MIB_TCPSACKREORDER), SNMP_MIB_ITEM("TCPRenoReorder", LINUX_MIB_TCPRENOREORDER), SNMP_MIB_ITEM("TCPTSReorder", LINUX_MIB_TCPTSREORDER), SNMP_MIB_ITEM("TCPFullUndo", LINUX_MIB_TCPFULLUNDO), SNMP_MIB_ITEM("TCPPartialUndo", LINUX_MIB_TCPPARTIALUNDO), SNMP_MIB_ITEM("TCPDSACKUndo", LINUX_MIB_TCPDSACKUNDO), SNMP_MIB_ITEM("TCPLossUndo", LINUX_MIB_TCPLOSSUNDO), |
1da177e4c Linux-2.6.12-rc2 |
202 203 204 205 206 |
SNMP_MIB_ITEM("TCPLostRetransmit", LINUX_MIB_TCPLOSTRETRANSMIT), SNMP_MIB_ITEM("TCPRenoFailures", LINUX_MIB_TCPRENOFAILURES), SNMP_MIB_ITEM("TCPSackFailures", LINUX_MIB_TCPSACKFAILURES), SNMP_MIB_ITEM("TCPLossFailures", LINUX_MIB_TCPLOSSFAILURES), SNMP_MIB_ITEM("TCPFastRetrans", LINUX_MIB_TCPFASTRETRANS), |
1da177e4c Linux-2.6.12-rc2 |
207 208 |
SNMP_MIB_ITEM("TCPSlowStartRetrans", LINUX_MIB_TCPSLOWSTARTRETRANS), SNMP_MIB_ITEM("TCPTimeouts", LINUX_MIB_TCPTIMEOUTS), |
6ba8a3b19 tcp: Tail loss pr... |
209 |
SNMP_MIB_ITEM("TCPLossProbes", LINUX_MIB_TCPLOSSPROBES), |
9b717a8d2 tcp: TLP loss det... |
210 |
SNMP_MIB_ITEM("TCPLossProbeRecovery", LINUX_MIB_TCPLOSSPROBERECOVERY), |
1da177e4c Linux-2.6.12-rc2 |
211 212 |
SNMP_MIB_ITEM("TCPRenoRecoveryFail", LINUX_MIB_TCPRENORECOVERYFAIL), SNMP_MIB_ITEM("TCPSackRecoveryFail", LINUX_MIB_TCPSACKRECOVERYFAIL), |
1da177e4c Linux-2.6.12-rc2 |
213 |
SNMP_MIB_ITEM("TCPRcvCollapsed", LINUX_MIB_TCPRCVCOLLAPSED), |
4f693b55c tcp: implement co... |
214 |
SNMP_MIB_ITEM("TCPBacklogCoalesce", LINUX_MIB_TCPBACKLOGCOALESCE), |
1da177e4c Linux-2.6.12-rc2 |
215 216 217 218 |
SNMP_MIB_ITEM("TCPDSACKOldSent", LINUX_MIB_TCPDSACKOLDSENT), SNMP_MIB_ITEM("TCPDSACKOfoSent", LINUX_MIB_TCPDSACKOFOSENT), SNMP_MIB_ITEM("TCPDSACKRecv", LINUX_MIB_TCPDSACKRECV), SNMP_MIB_ITEM("TCPDSACKOfoRecv", LINUX_MIB_TCPDSACKOFORECV), |
1da177e4c Linux-2.6.12-rc2 |
219 220 221 222 223 224 225 |
SNMP_MIB_ITEM("TCPAbortOnData", LINUX_MIB_TCPABORTONDATA), SNMP_MIB_ITEM("TCPAbortOnClose", LINUX_MIB_TCPABORTONCLOSE), SNMP_MIB_ITEM("TCPAbortOnMemory", LINUX_MIB_TCPABORTONMEMORY), SNMP_MIB_ITEM("TCPAbortOnTimeout", LINUX_MIB_TCPABORTONTIMEOUT), SNMP_MIB_ITEM("TCPAbortOnLinger", LINUX_MIB_TCPABORTONLINGER), SNMP_MIB_ITEM("TCPAbortFailed", LINUX_MIB_TCPABORTFAILED), SNMP_MIB_ITEM("TCPMemoryPressures", LINUX_MIB_TCPMEMORYPRESSURES), |
060447511 tcp: add TCPMemor... |
226 |
SNMP_MIB_ITEM("TCPMemoryPressuresChrono", LINUX_MIB_TCPMEMORYPRESSURESCHRONO), |
18f02545a [TCP] MIB: Add co... |
227 228 229 |
SNMP_MIB_ITEM("TCPSACKDiscard", LINUX_MIB_TCPSACKDISCARD), SNMP_MIB_ITEM("TCPDSACKIgnoredOld", LINUX_MIB_TCPDSACKIGNOREDOLD), SNMP_MIB_ITEM("TCPDSACKIgnoredNoUndo", LINUX_MIB_TCPDSACKIGNOREDNOUNDO), |
912d8f0b1 [TCP] MIB: Count ... |
230 |
SNMP_MIB_ITEM("TCPSpuriousRTOs", LINUX_MIB_TCPSPURIOUSRTOS), |
785957d3e tcp: MD5: Use MIB... |
231 232 |
SNMP_MIB_ITEM("TCPMD5NotFound", LINUX_MIB_TCPMD5NOTFOUND), SNMP_MIB_ITEM("TCPMD5Unexpected", LINUX_MIB_TCPMD5UNEXPECTED), |
72145a68e tcp: md5: add LIN... |
233 |
SNMP_MIB_ITEM("TCPMD5Failure", LINUX_MIB_TCPMD5FAILURE), |
111cc8b91 tcp: add some mib... |
234 235 236 |
SNMP_MIB_ITEM("TCPSackShifted", LINUX_MIB_SACKSHIFTED), SNMP_MIB_ITEM("TCPSackMerged", LINUX_MIB_SACKMERGED), SNMP_MIB_ITEM("TCPSackShiftFallback", LINUX_MIB_SACKSHIFTFALLBACK), |
6cce09f87 tcp: Add SNMP cou... |
237 |
SNMP_MIB_ITEM("TCPBacklogDrop", LINUX_MIB_TCPBACKLOGDROP), |
8fe809a99 net: add LINUX_MI... |
238 |
SNMP_MIB_ITEM("PFMemallocDrop", LINUX_MIB_PFMEMALLOCDROP), |
6cce09f87 tcp: Add SNMP cou... |
239 |
SNMP_MIB_ITEM("TCPMinTTLDrop", LINUX_MIB_TCPMINTTLDROP), |
907cdda52 tcp: Add SNMP cou... |
240 |
SNMP_MIB_ITEM("TCPDeferAcceptDrop", LINUX_MIB_TCPDEFERACCEPTDROP), |
b5f7e7554 ipv4: add LINUX_M... |
241 |
SNMP_MIB_ITEM("IPReversePathFilter", LINUX_MIB_IPRPFILTER), |
67631510a tcp: Replace time... |
242 |
SNMP_MIB_ITEM("TCPTimeWaitOverflow", LINUX_MIB_TCPTIMEWAITOVERFLOW), |
946cedccb tcp: Change possi... |
243 244 |
SNMP_MIB_ITEM("TCPReqQFullDoCookies", LINUX_MIB_TCPREQQFULLDOCOOKIES), SNMP_MIB_ITEM("TCPReqQFullDrop", LINUX_MIB_TCPREQQFULLDROP), |
09e9b813d tcp: add LINUX_MI... |
245 |
SNMP_MIB_ITEM("TCPRetransFail", LINUX_MIB_TCPRETRANSFAIL), |
c8628155e tcp: reduce out_o... |
246 |
SNMP_MIB_ITEM("TCPRcvCoalesce", LINUX_MIB_TCPRCVCOALESCE), |
a6df1ae93 tcp: add OFO snmp... |
247 248 249 |
SNMP_MIB_ITEM("TCPOFOQueue", LINUX_MIB_TCPOFOQUEUE), SNMP_MIB_ITEM("TCPOFODrop", LINUX_MIB_TCPOFODROP), SNMP_MIB_ITEM("TCPOFOMerge", LINUX_MIB_TCPOFOMERGE), |
282f23c6e tcp: implement RF... |
250 |
SNMP_MIB_ITEM("TCPChallengeACK", LINUX_MIB_TCPCHALLENGEACK), |
0c24604b6 tcp: implement RF... |
251 |
SNMP_MIB_ITEM("TCPSYNChallenge", LINUX_MIB_TCPSYNCHALLENGE), |
783237e8d net-tcp: Fast Ope... |
252 |
SNMP_MIB_ITEM("TCPFastOpenActive", LINUX_MIB_TCPFASTOPENACTIVE), |
f19c29e3e tcp: snmp stats f... |
253 |
SNMP_MIB_ITEM("TCPFastOpenActiveFail", LINUX_MIB_TCPFASTOPENACTIVEFAIL), |
104671636 tcp: TCP Fast Ope... |
254 255 256 257 |
SNMP_MIB_ITEM("TCPFastOpenPassive", LINUX_MIB_TCPFASTOPENPASSIVE), SNMP_MIB_ITEM("TCPFastOpenPassiveFail", LINUX_MIB_TCPFASTOPENPASSIVEFAIL), SNMP_MIB_ITEM("TCPFastOpenListenOverflow", LINUX_MIB_TCPFASTOPENLISTENOVERFLOW), SNMP_MIB_ITEM("TCPFastOpenCookieReqd", LINUX_MIB_TCPFASTOPENCOOKIEREQD), |
46c2fa398 net/tcp_fastopen:... |
258 |
SNMP_MIB_ITEM("TCPFastOpenBlackhole", LINUX_MIB_TCPFASTOPENBLACKHOLE), |
0e280af02 tcp: introduce TC... |
259 |
SNMP_MIB_ITEM("TCPSpuriousRtxHostQueues", LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES), |
288a93763 net: rename busy ... |
260 |
SNMP_MIB_ITEM("BusyPollRxPackets", LINUX_MIB_BUSYPOLLRXPACKETS), |
f54b31114 tcp: auto corking |
261 |
SNMP_MIB_ITEM("TCPAutoCorking", LINUX_MIB_TCPAUTOCORKING), |
8e165e203 net: tcp: add mib... |
262 263 264 |
SNMP_MIB_ITEM("TCPFromZeroWindowAdv", LINUX_MIB_TCPFROMZEROWINDOWADV), SNMP_MIB_ITEM("TCPToZeroWindowAdv", LINUX_MIB_TCPTOZEROWINDOWADV), SNMP_MIB_ITEM("TCPWantZeroWindowAdv", LINUX_MIB_TCPWANTZEROWINDOWADV), |
f19c29e3e tcp: snmp stats f... |
265 266 |
SNMP_MIB_ITEM("TCPSynRetrans", LINUX_MIB_TCPSYNRETRANS), SNMP_MIB_ITEM("TCPOrigDataSent", LINUX_MIB_TCPORIGDATASENT), |
6e3a8a937 tcp_cubic: add SN... |
267 268 269 270 |
SNMP_MIB_ITEM("TCPHystartTrainDetect", LINUX_MIB_TCPHYSTARTTRAINDETECT), SNMP_MIB_ITEM("TCPHystartTrainCwnd", LINUX_MIB_TCPHYSTARTTRAINCWND), SNMP_MIB_ITEM("TCPHystartDelayDetect", LINUX_MIB_TCPHYSTARTDELAYDETECT), SNMP_MIB_ITEM("TCPHystartDelayCwnd", LINUX_MIB_TCPHYSTARTDELAYCWND), |
032ee4236 tcp: helpers to m... |
271 272 273 274 275 276 |
SNMP_MIB_ITEM("TCPACKSkippedSynRecv", LINUX_MIB_TCPACKSKIPPEDSYNRECV), SNMP_MIB_ITEM("TCPACKSkippedPAWS", LINUX_MIB_TCPACKSKIPPEDPAWS), SNMP_MIB_ITEM("TCPACKSkippedSeq", LINUX_MIB_TCPACKSKIPPEDSEQ), SNMP_MIB_ITEM("TCPACKSkippedFinWait2", LINUX_MIB_TCPACKSKIPPEDFINWAIT2), SNMP_MIB_ITEM("TCPACKSkippedTimeWait", LINUX_MIB_TCPACKSKIPPEDTIMEWAIT), SNMP_MIB_ITEM("TCPACKSkippedChallenge", LINUX_MIB_TCPACKSKIPPEDCHALLENGE), |
e520af48c tcp: add TCPWinPr... |
277 278 |
SNMP_MIB_ITEM("TCPWinProbe", LINUX_MIB_TCPWINPROBE), SNMP_MIB_ITEM("TCPKeepAlive", LINUX_MIB_TCPKEEPALIVE), |
b56ea2985 net: track succes... |
279 280 |
SNMP_MIB_ITEM("TCPMTUPFail", LINUX_MIB_TCPMTUPFAIL), SNMP_MIB_ITEM("TCPMTUPSuccess", LINUX_MIB_TCPMTUPSUCCESS), |
feb5f2ec6 tcp: export packe... |
281 282 |
SNMP_MIB_ITEM("TCPDelivered", LINUX_MIB_TCPDELIVERED), SNMP_MIB_ITEM("TCPDeliveredCE", LINUX_MIB_TCPDELIVEREDCE), |
200d95f45 tcp: add TCPAckCo... |
283 |
SNMP_MIB_ITEM("TCPAckCompressed", LINUX_MIB_TCPACKCOMPRESSED), |
fb223502e tcp: add SNMP cou... |
284 |
SNMP_MIB_ITEM("TCPZeroWindowDrop", LINUX_MIB_TCPZEROWINDOWDROP), |
ea5d0c324 tcp: add new SNMP... |
285 |
SNMP_MIB_ITEM("TCPRcvQDrop", LINUX_MIB_TCPRCVQDROP), |
f070ef2ac tcp: tcp_fragment... |
286 |
SNMP_MIB_ITEM("TCPWqueueTooBig", LINUX_MIB_TCPWQUEUETOOBIG), |
9092a76d3 tcp: add backup T... |
287 |
SNMP_MIB_ITEM("TCPFastOpenPassiveAltKey", LINUX_MIB_TCPFASTOPENPASSIVEALTKEY), |
32efcc06d tcp: export count... |
288 289 |
SNMP_MIB_ITEM("TcpTimeoutRehash", LINUX_MIB_TCPTIMEOUTREHASH), SNMP_MIB_ITEM("TcpDuplicateDataRehash", LINUX_MIB_TCPDUPLICATEDATAREHASH), |
e3a5a1e8b tcp: add SNMP cou... |
290 |
SNMP_MIB_ITEM("TCPDSACKRecvSegs", LINUX_MIB_TCPDSACKRECVSEGS), |
ad2b9b0f8 tcp: skip DSACKs ... |
291 |
SNMP_MIB_ITEM("TCPDSACKIgnoredDubious", LINUX_MIB_TCPDSACKIGNOREDDUBIOUS), |
1da177e4c Linux-2.6.12-rc2 |
292 293 |
SNMP_MIB_SENTINEL }; |
b971e7ac8 net: fix /proc/ne... |
294 295 296 297 298 299 |
static void icmpmsg_put_line(struct seq_file *seq, unsigned long *vals, unsigned short *type, int count) { int j; if (count) { |
c9f503b00 ipv4: use seq_put... |
300 301 |
seq_puts(seq, " IcmpMsg:"); |
b971e7ac8 net: fix /proc/ne... |
302 303 304 305 |
for (j = 0; j < count; ++j) seq_printf(seq, " %sType%u", type[j] & 0x100 ? "Out" : "In", type[j] & 0xff); |
c9f503b00 ipv4: use seq_put... |
306 307 |
seq_puts(seq, " IcmpMsg:"); |
b971e7ac8 net: fix /proc/ne... |
308 309 310 311 |
for (j = 0; j < count; ++j) seq_printf(seq, " %lu", vals[j]); } } |
96793b482 [IPV4]: Add ICMPM... |
312 313 314 |
static void icmpmsg_put(struct seq_file *seq) { #define PERLINE 16 |
b971e7ac8 net: fix /proc/ne... |
315 316 317 |
int i, count; unsigned short type[PERLINE]; unsigned long vals[PERLINE], val; |
229bf0cba proc: create /pro... |
318 |
struct net *net = seq->private; |
96793b482 [IPV4]: Add ICMPM... |
319 320 321 |
count = 0; for (i = 0; i < ICMPMSG_MIB_MAX; i++) { |
acb32ba3d ipv4: reduce perc... |
322 |
val = atomic_long_read(&net->mib.icmpmsg_statistics->mibs[i]); |
b971e7ac8 net: fix /proc/ne... |
323 324 325 326 327 328 329 330 |
if (val) { type[count] = i; vals[count++] = val; } if (count == PERLINE) { icmpmsg_put_line(seq, vals, type, count); count = 0; } |
96793b482 [IPV4]: Add ICMPM... |
331 |
} |
b971e7ac8 net: fix /proc/ne... |
332 |
icmpmsg_put_line(seq, vals, type, count); |
96793b482 [IPV4]: Add ICMPM... |
333 334 335 336 337 338 339 |
#undef PERLINE } static void icmp_put(struct seq_file *seq) { int i; |
229bf0cba proc: create /pro... |
340 |
struct net *net = seq->private; |
acb32ba3d ipv4: reduce perc... |
341 |
atomic_long_t *ptr = net->mib.icmpmsg_statistics->mibs; |
96793b482 [IPV4]: Add ICMPM... |
342 |
|
6a5dc9e59 net: Add MIB coun... |
343 344 |
seq_puts(seq, " Icmp: InMsgs InErrors InCsumErrors"); |
6d4a741cb net: Suppress the... |
345 |
for (i = 0; icmpmibmap[i].name; i++) |
96793b482 [IPV4]: Add ICMPM... |
346 |
seq_printf(seq, " In%s", icmpmibmap[i].name); |
c9f503b00 ipv4: use seq_put... |
347 |
seq_puts(seq, " OutMsgs OutErrors"); |
6d4a741cb net: Suppress the... |
348 |
for (i = 0; icmpmibmap[i].name; i++) |
96793b482 [IPV4]: Add ICMPM... |
349 |
seq_printf(seq, " Out%s", icmpmibmap[i].name); |
6a5dc9e59 net: Add MIB coun... |
350 351 |
seq_printf(seq, " Icmp: %lu %lu %lu", |
698365fa1 net: clean up snm... |
352 353 354 |
snmp_fold_field(net->mib.icmp_statistics, ICMP_MIB_INMSGS), snmp_fold_field(net->mib.icmp_statistics, ICMP_MIB_INERRORS), snmp_fold_field(net->mib.icmp_statistics, ICMP_MIB_CSUMERRORS)); |
6d4a741cb net: Suppress the... |
355 |
for (i = 0; icmpmibmap[i].name; i++) |
96793b482 [IPV4]: Add ICMPM... |
356 |
seq_printf(seq, " %lu", |
acb32ba3d ipv4: reduce perc... |
357 |
atomic_long_read(ptr + icmpmibmap[i].index)); |
96793b482 [IPV4]: Add ICMPM... |
358 |
seq_printf(seq, " %lu %lu", |
698365fa1 net: clean up snm... |
359 360 |
snmp_fold_field(net->mib.icmp_statistics, ICMP_MIB_OUTMSGS), snmp_fold_field(net->mib.icmp_statistics, ICMP_MIB_OUTERRORS)); |
6d4a741cb net: Suppress the... |
361 |
for (i = 0; icmpmibmap[i].name; i++) |
96793b482 [IPV4]: Add ICMPM... |
362 |
seq_printf(seq, " %lu", |
acb32ba3d ipv4: reduce perc... |
363 |
atomic_long_read(ptr + (icmpmibmap[i].index | 0x100))); |
96793b482 [IPV4]: Add ICMPM... |
364 |
} |
1da177e4c Linux-2.6.12-rc2 |
365 366 367 |
/* * Called from the PROCfs module. This outputs /proc/net/snmp. */ |
f22d5c490 proc: Reduce cach... |
368 |
static int snmp_seq_show_ipstats(struct seq_file *seq, void *v) |
1da177e4c Linux-2.6.12-rc2 |
369 |
{ |
229bf0cba proc: create /pro... |
370 |
struct net *net = seq->private; |
f22d5c490 proc: Reduce cach... |
371 372 |
u64 buff64[IPSTATS_MIB_MAX]; int i; |
1da177e4c Linux-2.6.12-rc2 |
373 |
|
f22d5c490 proc: Reduce cach... |
374 |
memset(buff64, 0, IPSTATS_MIB_MAX * sizeof(u64)); |
1da177e4c Linux-2.6.12-rc2 |
375 |
|
f22d5c490 proc: Reduce cach... |
376 |
seq_puts(seq, "Ip: Forwarding DefaultTTL"); |
6d4a741cb net: Suppress the... |
377 |
for (i = 0; snmp4_ipstats_list[i].name; i++) |
1da177e4c Linux-2.6.12-rc2 |
378 379 380 381 |
seq_printf(seq, " %s", snmp4_ipstats_list[i].name); seq_printf(seq, " Ip: %d %d", |
8e3461d01 proc: show per-ne... |
382 |
IPV4_DEVCONF_ALL(net, FORWARDING) ? 1 : 2, |
fa50d974d ipv4: Namespaceif... |
383 |
net->ipv4.sysctl_ip_default_ttl); |
1da177e4c Linux-2.6.12-rc2 |
384 |
|
4ce3c183f snmp: 64bit ipsta... |
385 |
BUILD_BUG_ON(offsetof(struct ipstats_mib, mibs) != 0); |
f22d5c490 proc: Reduce cach... |
386 387 388 |
snmp_get_cpu_field64_batch(buff64, snmp4_ipstats_list, net->mib.ip_statistics, offsetof(struct ipstats_mib, syncp)); |
6d4a741cb net: Suppress the... |
389 |
for (i = 0; snmp4_ipstats_list[i].name; i++) |
f22d5c490 proc: Reduce cach... |
390 |
seq_printf(seq, " %llu", buff64[i]); |
1da177e4c Linux-2.6.12-rc2 |
391 |
|
f22d5c490 proc: Reduce cach... |
392 393 394 395 396 397 398 399 400 401 |
return 0; } static int snmp_seq_show_tcp_udp(struct seq_file *seq, void *v) { unsigned long buff[TCPUDP_MIB_MAX]; struct net *net = seq->private; int i; memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); |
1da177e4c Linux-2.6.12-rc2 |
402 403 404 |
seq_puts(seq, " Tcp:"); |
6d4a741cb net: Suppress the... |
405 |
for (i = 0; snmp4_tcp_list[i].name; i++) |
1da177e4c Linux-2.6.12-rc2 |
406 407 408 409 |
seq_printf(seq, " %s", snmp4_tcp_list[i].name); seq_puts(seq, " Tcp:"); |
f22d5c490 proc: Reduce cach... |
410 411 |
snmp_get_cpu_field_batch(buff, snmp4_tcp_list, net->mib.tcp_statistics); |
6d4a741cb net: Suppress the... |
412 |
for (i = 0; snmp4_tcp_list[i].name; i++) { |
1da177e4c Linux-2.6.12-rc2 |
413 414 |
/* MaxConn field is signed, RFC 2012 */ if (snmp4_tcp_list[i].entry == TCP_MIB_MAXCONN) |
f22d5c490 proc: Reduce cach... |
415 |
seq_printf(seq, " %ld", buff[i]); |
1da177e4c Linux-2.6.12-rc2 |
416 |
else |
f22d5c490 proc: Reduce cach... |
417 |
seq_printf(seq, " %lu", buff[i]); |
1da177e4c Linux-2.6.12-rc2 |
418 |
} |
f22d5c490 proc: Reduce cach... |
419 420 421 422 |
memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); snmp_get_cpu_field_batch(buff, snmp4_udp_list, net->mib.udp_statistics); |
1da177e4c Linux-2.6.12-rc2 |
423 424 |
seq_puts(seq, " Udp:"); |
6d4a741cb net: Suppress the... |
425 |
for (i = 0; snmp4_udp_list[i].name; i++) |
1da177e4c Linux-2.6.12-rc2 |
426 |
seq_printf(seq, " %s", snmp4_udp_list[i].name); |
1da177e4c Linux-2.6.12-rc2 |
427 428 |
seq_puts(seq, " Udp:"); |
6d4a741cb net: Suppress the... |
429 |
for (i = 0; snmp4_udp_list[i].name; i++) |
f22d5c490 proc: Reduce cach... |
430 431 432 |
seq_printf(seq, " %lu", buff[i]); memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); |
1da177e4c Linux-2.6.12-rc2 |
433 |
|
ba4e58eca [NET]: Supporting... |
434 435 436 |
/* the UDP and UDP-Lite MIBs are the same */ seq_puts(seq, " UdpLite:"); |
f22d5c490 proc: Reduce cach... |
437 438 |
snmp_get_cpu_field_batch(buff, snmp4_udp_list, net->mib.udplite_statistics); |
6d4a741cb net: Suppress the... |
439 |
for (i = 0; snmp4_udp_list[i].name; i++) |
ba4e58eca [NET]: Supporting... |
440 |
seq_printf(seq, " %s", snmp4_udp_list[i].name); |
ba4e58eca [NET]: Supporting... |
441 442 |
seq_puts(seq, " UdpLite:"); |
6d4a741cb net: Suppress the... |
443 |
for (i = 0; snmp4_udp_list[i].name; i++) |
f22d5c490 proc: Reduce cach... |
444 |
seq_printf(seq, " %lu", buff[i]); |
db8dac20d [UDP]: Revert udp... |
445 |
|
1da177e4c Linux-2.6.12-rc2 |
446 447 448 449 |
seq_putc(seq, ' '); return 0; } |
f22d5c490 proc: Reduce cach... |
450 451 452 453 454 455 456 457 458 459 460 |
static int snmp_seq_show(struct seq_file *seq, void *v) { snmp_seq_show_ipstats(seq, v); icmp_put(seq); /* RFC 2011 compatibility */ icmpmsg_put(seq); snmp_seq_show_tcp_udp(seq, v); return 0; } |
1da177e4c Linux-2.6.12-rc2 |
461 462 463 464 465 466 |
/* * Output /proc/net/netstat */ static int netstat_seq_show(struct seq_file *seq, void *v) { int i; |
7b7a9dfdf proc: create /pro... |
467 |
struct net *net = seq->private; |
1da177e4c Linux-2.6.12-rc2 |
468 469 |
seq_puts(seq, "TcpExt:"); |
6d4a741cb net: Suppress the... |
470 |
for (i = 0; snmp4_net_list[i].name; i++) |
1da177e4c Linux-2.6.12-rc2 |
471 472 473 474 |
seq_printf(seq, " %s", snmp4_net_list[i].name); seq_puts(seq, " TcpExt:"); |
6d4a741cb net: Suppress the... |
475 |
for (i = 0; snmp4_net_list[i].name; i++) |
1da177e4c Linux-2.6.12-rc2 |
476 |
seq_printf(seq, " %lu", |
698365fa1 net: clean up snm... |
477 |
snmp_fold_field(net->mib.net_statistics, |
5e0f04351 [IPV4]: Consolida... |
478 |
snmp4_net_list[i].entry)); |
1da177e4c Linux-2.6.12-rc2 |
479 |
|
d831666e9 [IPV4] SNMP: Disp... |
480 481 |
seq_puts(seq, " IpExt:"); |
6d4a741cb net: Suppress the... |
482 |
for (i = 0; snmp4_ipextstats_list[i].name; i++) |
d831666e9 [IPV4] SNMP: Disp... |
483 484 485 486 |
seq_printf(seq, " %s", snmp4_ipextstats_list[i].name); seq_puts(seq, " IpExt:"); |
6d4a741cb net: Suppress the... |
487 |
for (i = 0; snmp4_ipextstats_list[i].name; i++) |
4ce3c183f snmp: 64bit ipsta... |
488 |
seq_printf(seq, " %llu", |
698365fa1 net: clean up snm... |
489 |
snmp_fold_field64(net->mib.ip_statistics, |
4ce3c183f snmp: 64bit ipsta... |
490 491 |
snmp4_ipextstats_list[i].entry, offsetof(struct ipstats_mib, syncp))); |
d831666e9 [IPV4] SNMP: Disp... |
492 |
|
1da177e4c Linux-2.6.12-rc2 |
493 494 |
seq_putc(seq, ' '); |
fc518953b mptcp: add and us... |
495 |
mptcp_seq_show(seq); |
1da177e4c Linux-2.6.12-rc2 |
496 497 |
return 0; } |
d0538ca35 [SOCK][NETNS]: Re... |
498 499 |
static __net_init int ip_proc_init_net(struct net *net) { |
3617d9496 proc: introduce p... |
500 501 |
if (!proc_create_net_single("sockstat", 0444, net->proc_net, sockstat_seq_show, NULL)) |
60bdde958 proc: clean the i... |
502 |
goto out_sockstat; |
3617d9496 proc: introduce p... |
503 504 |
if (!proc_create_net_single("netstat", 0444, net->proc_net, netstat_seq_show, NULL)) |
7b7a9dfdf proc: create /pro... |
505 |
goto out_netstat; |
3617d9496 proc: introduce p... |
506 507 |
if (!proc_create_net_single("snmp", 0444, net->proc_net, snmp_seq_show, NULL)) |
229bf0cba proc: create /pro... |
508 |
goto out_snmp; |
7b7a9dfdf proc: create /pro... |
509 |
|
d0538ca35 [SOCK][NETNS]: Re... |
510 |
return 0; |
7b7a9dfdf proc: create /pro... |
511 |
|
229bf0cba proc: create /pro... |
512 |
out_snmp: |
ece31ffd5 net: proc: change... |
513 |
remove_proc_entry("netstat", net->proc_net); |
7b7a9dfdf proc: create /pro... |
514 |
out_netstat: |
ece31ffd5 net: proc: change... |
515 |
remove_proc_entry("sockstat", net->proc_net); |
60bdde958 proc: clean the i... |
516 |
out_sockstat: |
7b7a9dfdf proc: create /pro... |
517 |
return -ENOMEM; |
d0538ca35 [SOCK][NETNS]: Re... |
518 519 520 521 |
} static __net_exit void ip_proc_exit_net(struct net *net) { |
ece31ffd5 net: proc: change... |
522 523 524 |
remove_proc_entry("snmp", net->proc_net); remove_proc_entry("netstat", net->proc_net); remove_proc_entry("sockstat", net->proc_net); |
d0538ca35 [SOCK][NETNS]: Re... |
525 526 527 528 529 530 |
} static __net_initdata struct pernet_operations ip_proc_ops = { .init = ip_proc_init_net, .exit = ip_proc_exit_net, }; |
1da177e4c Linux-2.6.12-rc2 |
531 532 |
int __init ip_misc_proc_init(void) { |
60bdde958 proc: clean the i... |
533 |
return register_pernet_subsys(&ip_proc_ops); |
1da177e4c Linux-2.6.12-rc2 |
534 |
} |