blob: 5105fd2209d404264cb2c3dd0065f1dbc3f6cbcc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
/*
*
* SNMP MIB entries for the IP subsystem.
*
* Alan Cox <gw4pts@gw4pts.ampr.org>
*
* We don't chose to implement SNMP in the kernel (this would
* be silly as SNMP is a pain in the backside in places). We do
* however need to collect the MIB statistics and export them
* out of /proc (eventually)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
*/
#ifndef _SNMP_H
#define _SNMP_H
/*
* We use all unsigned longs. Linux will soon be so reliable that even these
* will rapidly get too small 8-). Seriously consider the IpInReceives count
* on the 20Gb/s + networks people expect in a few years time!
*/
struct ip_mib
{
unsigned long IpInReceives;
unsigned long IpInHdrErrors;
unsigned long IpInAddrErrors;
unsigned long IpForwDatagrams;
unsigned long IpInUnknownProtos;
unsigned long IpInDiscards;
unsigned long IpInDelivers;
unsigned long IpOutRequests;
unsigned long IpOutDiscards;
unsigned long IpOutNoRoutes;
unsigned long IpReasmTimeout;
unsigned long IpReasmReqds;
unsigned long IpReasmOKs;
unsigned long IpReasmFails;
unsigned long IpFragOKs;
unsigned long IpFragFails;
unsigned long IpFragCreates;
unsigned long __pad[32-19];
};
struct ipv6_mib
{
unsigned long Ip6InReceives;
unsigned long Ip6InHdrErrors;
unsigned long Ip6InTooBigErrors;
unsigned long Ip6InNoRoutes;
unsigned long Ip6InAddrErrors;
unsigned long Ip6InUnknownProtos;
unsigned long Ip6InTruncatedPkts;
unsigned long Ip6InDiscards;
unsigned long Ip6InDelivers;
unsigned long Ip6OutForwDatagrams;
unsigned long Ip6OutRequests;
unsigned long Ip6OutDiscards;
unsigned long Ip6OutNoRoutes;
unsigned long Ip6ReasmTimeout;
unsigned long Ip6ReasmReqds;
unsigned long Ip6ReasmOKs;
unsigned long Ip6ReasmFails;
unsigned long Ip6FragOKs;
unsigned long Ip6FragFails;
unsigned long Ip6FragCreates;
unsigned long Ip6InMcastPkts;
unsigned long Ip6OutMcastPkts;
unsigned long __pad[32-22];
};
struct icmp_mib
{
unsigned long IcmpInMsgs;
unsigned long IcmpInErrors;
unsigned long IcmpInDestUnreachs;
unsigned long IcmpInTimeExcds;
unsigned long IcmpInParmProbs;
unsigned long IcmpInSrcQuenchs;
unsigned long IcmpInRedirects;
unsigned long IcmpInEchos;
unsigned long IcmpInEchoReps;
unsigned long IcmpInTimestamps;
unsigned long IcmpInTimestampReps;
unsigned long IcmpInAddrMasks;
unsigned long IcmpInAddrMaskReps;
unsigned long IcmpOutMsgs;
unsigned long IcmpOutErrors;
unsigned long IcmpOutDestUnreachs;
unsigned long IcmpOutTimeExcds;
unsigned long IcmpOutParmProbs;
unsigned long IcmpOutSrcQuenchs;
unsigned long IcmpOutRedirects;
unsigned long IcmpOutEchos;
unsigned long IcmpOutEchoReps;
unsigned long IcmpOutTimestamps;
unsigned long IcmpOutTimestampReps;
unsigned long IcmpOutAddrMasks;
unsigned long IcmpOutAddrMaskReps;
unsigned long __pad[32-26];
};
struct icmpv6_mib
{
unsigned long Icmp6InMsgs;
unsigned long Icmp6InErrors;
unsigned long Icmp6InDestUnreachs;
unsigned long Icmp6InPktTooBigs;
unsigned long Icmp6InTimeExcds;
unsigned long Icmp6InParmProblems;
unsigned long Icmp6InEchos;
unsigned long Icmp6InEchoReplies;
unsigned long Icmp6InGroupMembQueries;
unsigned long Icmp6InGroupMembResponses;
unsigned long Icmp6InGroupMembReductions;
unsigned long Icmp6InRouterSolicits;
unsigned long Icmp6InRouterAdvertisements;
unsigned long Icmp6InNeighborSolicits;
unsigned long Icmp6InNeighborAdvertisements;
unsigned long Icmp6InRedirects;
unsigned long Icmp6OutMsgs;
unsigned long Icmp6OutDestUnreachs;
unsigned long Icmp6OutPktTooBigs;
unsigned long Icmp6OutTimeExcds;
unsigned long Icmp6OutParmProblems;
unsigned long Icmp6OutEchoReplies;
unsigned long Icmp6OutRouterSolicits;
unsigned long Icmp6OutNeighborSolicits;
unsigned long Icmp6OutNeighborAdvertisements;
unsigned long Icmp6OutRedirects;
unsigned long Icmp6OutGroupMembResponses;
unsigned long Icmp6OutGroupMembReductions;
unsigned long __pad[32-28];
};
struct tcp_mib
{
unsigned long TcpRtoAlgorithm;
unsigned long TcpRtoMin;
unsigned long TcpRtoMax;
unsigned long TcpMaxConn;
unsigned long TcpActiveOpens;
unsigned long TcpPassiveOpens;
unsigned long TcpAttemptFails;
unsigned long TcpEstabResets;
unsigned long TcpCurrEstab;
unsigned long TcpInSegs;
unsigned long TcpOutSegs;
unsigned long TcpRetransSegs;
unsigned long TcpInErrs;
unsigned long TcpOutRsts;
unsigned long __pad[16-14];
};
struct udp_mib
{
unsigned long UdpInDatagrams;
unsigned long UdpNoPorts;
unsigned long UdpInErrors;
unsigned long UdpOutDatagrams;
unsigned long __pad[0];
};
struct linux_mib
{
unsigned long SyncookiesSent;
unsigned long SyncookiesRecv;
unsigned long SyncookiesFailed;
unsigned long EmbryonicRsts;
unsigned long PruneCalled;
unsigned long RcvPruned;
unsigned long OfoPruned;
unsigned long OutOfWindowIcmps;
unsigned long LockDroppedIcmps;
unsigned long TimeWaited;
unsigned long TimeWaitRecycled;
unsigned long TimeWaitKilled;
unsigned long PAWSPassiveRejected;
unsigned long PAWSActiveRejected;
unsigned long PAWSEstabRejected;
unsigned long DelayedACKs;
unsigned long DelayedACKLocked;
unsigned long DelayedACKLost;
unsigned long ListenOverflows;
unsigned long ListenDrops;
unsigned long TCPPrequeued;
unsigned long TCPDirectCopyFromBacklog;
unsigned long TCPDirectCopyFromPrequeue;
unsigned long TCPPrequeueDropped;
unsigned long TCPHPHits;
unsigned long TCPHPHitsToUser;
unsigned long __pad[32-26];
};
#define SNMP_INC_STATS(mib, field) ((mib)[2*smp_processor_id()+!in_interrupt()].field++)
#define SNMP_INC_STATS_BH(mib, field) ((mib)[2*smp_processor_id()].field++)
#define SNMP_INC_STATS_USER(mib, field) ((mib)[2*smp_processor_id()+1].field++)
#endif
|