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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
|
/*
* Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
* All rights reserved.
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* File: mib.h
*
* Purpose: Implement MIB Data Structure
*
* Author: Tevin Chen
*
* Date: May 21, 1996
*
*/
#ifndef __MIB_H__
#define __MIB_H__
#include "ttype.h"
#include "tether.h"
#include "desc.h"
/*--------------------- Export Definitions -------------------------*/
//
// 802.11 counter
//
typedef struct tagSDot11Counters {
ULONG Length; // Length of structure
ULONGLONG TransmittedFragmentCount;
ULONGLONG MulticastTransmittedFrameCount;
ULONGLONG FailedCount;
ULONGLONG RetryCount;
ULONGLONG MultipleRetryCount;
ULONGLONG RTSSuccessCount;
ULONGLONG RTSFailureCount;
ULONGLONG ACKFailureCount;
ULONGLONG FrameDuplicateCount;
ULONGLONG ReceivedFragmentCount;
ULONGLONG MulticastReceivedFrameCount;
ULONGLONG FCSErrorCount;
ULONGLONG TKIPLocalMICFailures;
ULONGLONG TKIPRemoteMICFailures;
ULONGLONG TKIPICVErrors;
ULONGLONG TKIPCounterMeasuresInvoked;
ULONGLONG TKIPReplays;
ULONGLONG CCMPFormatErrors;
ULONGLONG CCMPReplays;
ULONGLONG CCMPDecryptErrors;
ULONGLONG FourWayHandshakeFailures;
// ULONGLONG WEPUndecryptableCount;
// ULONGLONG WEPICVErrorCount;
// ULONGLONG DecryptSuccessCount;
// ULONGLONG DecryptFailureCount;
} SDot11Counters, *PSDot11Counters;
//
// MIB2 counter
//
typedef struct tagSMib2Counter {
LONG ifIndex;
char ifDescr[256]; // max size 255 plus zero ending
// e.g. "interface 1"
LONG ifType;
LONG ifMtu;
DWORD ifSpeed;
BYTE ifPhysAddress[U_ETHER_ADDR_LEN];
LONG ifAdminStatus;
LONG ifOperStatus;
DWORD ifLastChange;
DWORD ifInOctets;
DWORD ifInUcastPkts;
DWORD ifInNUcastPkts;
DWORD ifInDiscards;
DWORD ifInErrors;
DWORD ifInUnknownProtos;
DWORD ifOutOctets;
DWORD ifOutUcastPkts;
DWORD ifOutNUcastPkts;
DWORD ifOutDiscards;
DWORD ifOutErrors;
DWORD ifOutQLen;
DWORD ifSpecific;
} SMib2Counter, *PSMib2Counter;
// Value in the ifType entry
//#define ETHERNETCSMACD 6 //
#define WIRELESSLANIEEE80211b 6 //
// Value in the ifAdminStatus/ifOperStatus entry
#define UP 1 //
#define DOWN 2 //
#define TESTING 3 //
//
// RMON counter
//
typedef struct tagSRmonCounter {
LONG etherStatsIndex;
DWORD etherStatsDataSource;
DWORD etherStatsDropEvents;
DWORD etherStatsOctets;
DWORD etherStatsPkts;
DWORD etherStatsBroadcastPkts;
DWORD etherStatsMulticastPkts;
DWORD etherStatsCRCAlignErrors;
DWORD etherStatsUndersizePkts;
DWORD etherStatsOversizePkts;
DWORD etherStatsFragments;
DWORD etherStatsJabbers;
DWORD etherStatsCollisions;
DWORD etherStatsPkt64Octets;
DWORD etherStatsPkt65to127Octets;
DWORD etherStatsPkt128to255Octets;
DWORD etherStatsPkt256to511Octets;
DWORD etherStatsPkt512to1023Octets;
DWORD etherStatsPkt1024to1518Octets;
DWORD etherStatsOwners;
DWORD etherStatsStatus;
} SRmonCounter, *PSRmonCounter;
//
// Custom counter
//
typedef struct tagSCustomCounters {
ULONG Length;
ULONGLONG ullTsrAllOK;
ULONGLONG ullRsr11M;
ULONGLONG ullRsr5M;
ULONGLONG ullRsr2M;
ULONGLONG ullRsr1M;
ULONGLONG ullRsr11MCRCOk;
ULONGLONG ullRsr5MCRCOk;
ULONGLONG ullRsr2MCRCOk;
ULONGLONG ullRsr1MCRCOk;
ULONGLONG ullRsr54M;
ULONGLONG ullRsr48M;
ULONGLONG ullRsr36M;
ULONGLONG ullRsr24M;
ULONGLONG ullRsr18M;
ULONGLONG ullRsr12M;
ULONGLONG ullRsr9M;
ULONGLONG ullRsr6M;
ULONGLONG ullRsr54MCRCOk;
ULONGLONG ullRsr48MCRCOk;
ULONGLONG ullRsr36MCRCOk;
ULONGLONG ullRsr24MCRCOk;
ULONGLONG ullRsr18MCRCOk;
ULONGLONG ullRsr12MCRCOk;
ULONGLONG ullRsr9MCRCOk;
ULONGLONG ullRsr6MCRCOk;
} SCustomCounters, *PSCustomCounters;
//
// Custom counter
//
typedef struct tagSISRCounters {
ULONG Length;
DWORD dwIsrTx0OK;
DWORD dwIsrAC0TxOK;
DWORD dwIsrBeaconTxOK;
DWORD dwIsrRx0OK;
DWORD dwIsrTBTTInt;
DWORD dwIsrSTIMERInt;
DWORD dwIsrWatchDog;
DWORD dwIsrUnrecoverableError;
DWORD dwIsrSoftInterrupt;
DWORD dwIsrMIBNearfull;
DWORD dwIsrRxNoBuf;
DWORD dwIsrUnknown; // unknown interrupt count
DWORD dwIsrRx1OK;
DWORD dwIsrATIMTxOK;
DWORD dwIsrSYNCTxOK;
DWORD dwIsrCFPEnd;
DWORD dwIsrATIMEnd;
DWORD dwIsrSYNCFlushOK;
DWORD dwIsrSTIMER1Int;
/////////////////////////////////////
} SISRCounters, *PSISRCounters;
// Value in the etherStatsStatus entry
#define VALID 1 //
#define CREATE_REQUEST 2 //
#define UNDER_CREATION 3 //
#define INVALID 4 //
//#define MAX_RATE 12
//
// statistic counter
//
typedef struct tagSStatCounter {
//
// ISR status count
//
// RSR status count
//
DWORD dwRsrFrmAlgnErr;
DWORD dwRsrErr;
DWORD dwRsrCRCErr;
DWORD dwRsrCRCOk;
DWORD dwRsrBSSIDOk;
DWORD dwRsrADDROk;
DWORD dwRsrBCNSSIDOk;
DWORD dwRsrLENErr;
DWORD dwRsrTYPErr;
DWORD dwNewRsrDECRYPTOK;
DWORD dwNewRsrCFP;
DWORD dwNewRsrUTSF;
DWORD dwNewRsrHITAID;
DWORD dwNewRsrHITAID0;
DWORD dwRsrLong;
DWORD dwRsrRunt;
DWORD dwRsrRxControl;
DWORD dwRsrRxData;
DWORD dwRsrRxManage;
DWORD dwRsrRxPacket;
DWORD dwRsrRxOctet;
DWORD dwRsrBroadcast;
DWORD dwRsrMulticast;
DWORD dwRsrDirected;
// 64-bit OID
ULONGLONG ullRsrOK;
// for some optional OIDs (64 bits) and DMI support
ULONGLONG ullRxBroadcastBytes;
ULONGLONG ullRxMulticastBytes;
ULONGLONG ullRxDirectedBytes;
ULONGLONG ullRxBroadcastFrames;
ULONGLONG ullRxMulticastFrames;
ULONGLONG ullRxDirectedFrames;
DWORD dwRsrRxFragment;
DWORD dwRsrRxFrmLen64;
DWORD dwRsrRxFrmLen65_127;
DWORD dwRsrRxFrmLen128_255;
DWORD dwRsrRxFrmLen256_511;
DWORD dwRsrRxFrmLen512_1023;
DWORD dwRsrRxFrmLen1024_1518;
// TSR status count
//
DWORD dwTsrTotalRetry[TYPE_MAXTD]; // total collision retry count
DWORD dwTsrOnceRetry[TYPE_MAXTD]; // this packet only occur one collision
DWORD dwTsrMoreThanOnceRetry[TYPE_MAXTD]; // this packet occur more than one collision
DWORD dwTsrRetry[TYPE_MAXTD]; // this packet has ever occur collision,
// that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0)
DWORD dwTsrACKData[TYPE_MAXTD];
DWORD dwTsrErr[TYPE_MAXTD];
DWORD dwAllTsrOK[TYPE_MAXTD];
DWORD dwTsrRetryTimeout[TYPE_MAXTD];
DWORD dwTsrTransmitTimeout[TYPE_MAXTD];
DWORD dwTsrTxPacket[TYPE_MAXTD];
DWORD dwTsrTxOctet[TYPE_MAXTD];
DWORD dwTsrBroadcast[TYPE_MAXTD];
DWORD dwTsrMulticast[TYPE_MAXTD];
DWORD dwTsrDirected[TYPE_MAXTD];
// RD/TD count
DWORD dwCntRxFrmLength;
DWORD dwCntTxBufLength;
BYTE abyCntRxPattern[16];
BYTE abyCntTxPattern[16];
// Software check....
DWORD dwCntRxDataErr; // rx buffer data software compare CRC err count
DWORD dwCntDecryptErr; // rx buffer data software compare CRC err count
DWORD dwCntRxICVErr; // rx buffer data software compare CRC err count
UINT idxRxErrorDesc[TYPE_MAXRD]; // index for rx data error RD
// 64-bit OID
ULONGLONG ullTsrOK[TYPE_MAXTD];
// for some optional OIDs (64 bits) and DMI support
ULONGLONG ullTxBroadcastFrames[TYPE_MAXTD];
ULONGLONG ullTxMulticastFrames[TYPE_MAXTD];
ULONGLONG ullTxDirectedFrames[TYPE_MAXTD];
ULONGLONG ullTxBroadcastBytes[TYPE_MAXTD];
ULONGLONG ullTxMulticastBytes[TYPE_MAXTD];
ULONGLONG ullTxDirectedBytes[TYPE_MAXTD];
// DWORD dwTxRetryCount[8];
//
// ISR status count
//
SISRCounters ISRStat;
SCustomCounters CustomStat;
#ifdef Calcu_LinkQual
//Tx count:
ULONG TxNoRetryOkCount; //success tx no retry !
ULONG TxRetryOkCount; //success tx but retry !
ULONG TxFailCount; //fail tx ?
//Rx count:
ULONG RxOkCnt; //success rx !
ULONG RxFcsErrCnt; //fail rx ?
//statistic
ULONG SignalStren;
ULONG LinkQuality;
#endif
} SStatCounter, *PSStatCounter;
/*--------------------- Export Classes ----------------------------*/
/*--------------------- Export Variables --------------------------*/
/*--------------------- Export Functions --------------------------*/
void STAvClearAllCounter(PSStatCounter pStatistic);
void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, DWORD dwIsr);
void STAvUpdateRDStatCounter(PSStatCounter pStatistic,
BYTE byRSR, BYTE byNewRSR, BYTE byRxRate,
PBYTE pbyBuffer, UINT cbFrameLength);
void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic,
BYTE byRSR, BYTE byNewRsr, BYTE byRxRate,
PBYTE pbyBuffer, UINT cbFrameLength);
void STAvUpdateTDStatCounter(PSStatCounter pStatistic,
BYTE byTSR0, BYTE byTSR1,
PBYTE pbyBuffer, UINT cbFrameLength, UINT uIdx );
void STAvUpdateTDStatCounterEx(
PSStatCounter pStatistic,
PBYTE pbyBuffer,
DWORD cbFrameLength
);
void STAvUpdate802_11Counter(
PSDot11Counters p802_11Counter,
PSStatCounter pStatistic,
DWORD dwCounter
);
void STAvClear802_11Counter(PSDot11Counters p802_11Counter);
#endif // __MIB_H__
|