254 lines
9 KiB
C
254 lines
9 KiB
C
/*++
|
||
|
||
Copyright (c) 1995 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
ethstat.c
|
||
|
||
Abstract:
|
||
|
||
This module displays counters for ethernet devices.
|
||
|
||
Author:
|
||
|
||
Rod Gamache (rodga) 26-Apr-1995
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
|
||
|
||
|
||
#include "ethstat.h"
|
||
|
||
|
||
DEVICE DeviceList[MAX_NIC] = {0};
|
||
|
||
NTSTATUS
|
||
NetStatsClose(
|
||
VOID
|
||
);
|
||
|
||
NTSTATUS
|
||
NetStatsInit(
|
||
OUT LONG *NumberNetCards
|
||
);
|
||
|
||
NTSTATUS
|
||
NetStatsReadSample(
|
||
PNET_SAMPLE_STATISTICS PNetSampleStatistics
|
||
);
|
||
|
||
//
|
||
// The following warning being disabled and the conversions into High and Low
|
||
// below are all hacks to get around the fact that we cannot easily print out
|
||
// LONGLONGs in the present versions of Windows NT - except for Alpha. This
|
||
// should be fixed later, but the code should probably not change for a long
|
||
// time, so that we can continue to build and use it on older versions of
|
||
// Windows NT.
|
||
//
|
||
|
||
#pragma warning(disable:4244) // skip warnings about loss of data
|
||
|
||
|
||
int
|
||
__cdecl main( argc, argv )
|
||
int argc;
|
||
char *argv[];
|
||
{
|
||
NET_SAMPLE_STATISTICS NetSampleStatistics[MAX_NIC];
|
||
PDEVICE device;
|
||
ULONG NumberNetCards;
|
||
ULONG i;
|
||
ULONG High;
|
||
ULONG Low;
|
||
ULONG Div = 1000000000;
|
||
ULONGLONG Number;
|
||
ULONGLONG Number2;
|
||
ULONGLONG Number3;
|
||
|
||
|
||
//
|
||
// Determine the number of net cards in the system and do an open
|
||
// on the driver.
|
||
//
|
||
NumberNetCards = 0;
|
||
NetStatsInit(&NumberNetCards);
|
||
|
||
NetStatsReadSample( NetSampleStatistics );
|
||
|
||
device = &DeviceList[0];
|
||
|
||
for (i = 0; i < NumberNetCards; i++) {
|
||
printf("\n\nCounters for Network Card: %s\n\n", device->DeviceName);
|
||
Number = NetSampleStatistics[i].OidGenDirectedFramesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Frames Received: %0.0u%u\n", High, Low);
|
||
Number = NetSampleStatistics[i].OidGenMulticastFramesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Multicast Frames Received: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenBroadcastFramesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Broadcast Frames Received: %0.0u%u\n\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenDirectedFramesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Frames Transmitted: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenMulticastFramesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Multicast Frames Transmitted: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenBroadcastFramesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Broadcast Frames Transmitted: %0.0u%u\n\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenDirectedBytesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Bytes Received: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenMulticastBytesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Multicast Bytes Received: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenBroadcastBytesRcv;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Broadcast Bytes Received: %0.0u%u\n", High, Low);
|
||
|
||
Number2 = NetSampleStatistics[i].OidGenDirectedBytesRcv;
|
||
Number3 = NetSampleStatistics[i].OidGenDirectedFramesRcv;
|
||
Number = Number2 / Number3;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number2 != -1 && Number3 != -1 ) printf("Bytes Per Receive Frame: %0.0u%u\n\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenDirectedBytesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Bytes Transmitted: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenMulticastBytesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Multicast Bytes Transmitted: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenBroadcastBytesXmit;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Broadcast Bytes Transmitted: %0.0u%u\n", High, Low);
|
||
|
||
Number2 = NetSampleStatistics[i].OidGenDirectedBytesXmit;
|
||
Number3 = NetSampleStatistics[i].OidGenDirectedFramesXmit;
|
||
Number = Number2 / Number3;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number2 != -1 && Number3 != -1 ) printf("Bytes Per Transmit Frame: %0.0u%u\n", High, Low);
|
||
|
||
Number2 = NetSampleStatistics[i].OidGenDirectedBytesRcv;
|
||
Number3 = NetSampleStatistics[i].OidGenDirectedBytesXmit;
|
||
Number = Number2 + Number3;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number2 != -1 && Number3 != -1 ) printf("Bytes Total (xmt + rcv): %0.0u%u\n\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenMediaInUse;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Media In Use: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenLinkSpeed;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Link Speed: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenXmitError;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Errors: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenRcvError;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Receive Errors: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenRcvNoBuffer;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Receive No Buffer Avail: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenRcvCrcError;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Receive CRC Errors: %0.0u%u\n\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].OidGenTransmitQueueLength;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Queue Length: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3RcvErrorAlignment;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Receive Error Alignment: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitOneCollision;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit One Collision: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitMoreCollisions;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Multiple Collisions: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitDeferred;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmits Deferred: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitMaxCollisions;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmits Max Collisions: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3RcvOverRun;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Receive Over Runs: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitUnderRun;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Under Runs: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitTimesCrsLost;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Carrier Lost: %0.0u%u\n", High, Low);
|
||
|
||
Number = NetSampleStatistics[i].Oid802_3XmitLateCollisions;
|
||
High = (ULONG) (Number / Div);
|
||
Low = (ULONG) (Number % Div);
|
||
if ( Number != -1 ) printf("Transmit Late Collisions: %0.0u%u\n\n\n", High, Low);
|
||
|
||
device += 1;
|
||
}
|
||
|
||
NetStatsClose();
|
||
|
||
return 0;
|
||
|
||
} // end of main
|