268 lines
8.8 KiB
C
268 lines
8.8 KiB
C
|
/*
|
||
|
|
||
|
Copyright (C) Microsoft Corporation, 1998 - 1999
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
nettst.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This will be the header file for nettest.dll
|
||
|
It is intended to be used by both the user of the dll and the source code
|
||
|
for the dll.
|
||
|
|
||
|
Author:
|
||
|
Aug-13-1998 ( t-rajkup )
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
//
|
||
|
// Before including this file, the source files for dll will redefine NETTESTAPI
|
||
|
// to _declspec(dllexport)
|
||
|
// - Rajkumar
|
||
|
//
|
||
|
|
||
|
#ifndef NETTESTAPI
|
||
|
#define NETTESTAPI _declspec(dllimport)
|
||
|
#endif
|
||
|
|
||
|
/*=============================< Defines >=======================================*/
|
||
|
|
||
|
// defines used in ipconfig structures
|
||
|
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb.
|
||
|
#define MAX_ADAPTER_NAME_LENGTH 256 // arb.
|
||
|
#define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb.
|
||
|
#define MAX_HOSTNAME_LEN 128 // arb.
|
||
|
#define MAX_DOMAIN_NAME_LEN 128 // arb.
|
||
|
#define MAX_SCOPE_ID_LEN 256 // arb.
|
||
|
|
||
|
// defines used in dhcp response info
|
||
|
|
||
|
#define MAX_SUBNET_MASK 32 // arb.
|
||
|
#define MAX_IP_ADDR 32 // arb.
|
||
|
#define MAX_EXPIRY_TIME_LEN 128 // arb.
|
||
|
#define DHCP_BOOT_REPLY 2 // arb.
|
||
|
|
||
|
// defines used in wins test
|
||
|
|
||
|
// status values returned by wins name query test
|
||
|
#define WINS_QUERY_SUCCEEDED 0x00000001
|
||
|
#define WINS_QUERY_FAILED 0x00000002
|
||
|
|
||
|
// defines used in netstat test
|
||
|
#define MAX_PHYSADDR_SIZE 8
|
||
|
|
||
|
|
||
|
// defines used in dhcp test
|
||
|
#define EXPIRY_TIME_LEN 128 //arb.
|
||
|
|
||
|
/*=============================< Data Structures >================================*/
|
||
|
|
||
|
// NOTE: Need to include iptypes.h for definition of IP_ADDR_STRING.
|
||
|
|
||
|
// This structure contains the fixed information returned by ipconfig test
|
||
|
|
||
|
typedef struct _IPCONFIG_FIXED_INFO {
|
||
|
char HostName[MAX_HOSTNAME_LEN + 4] ;
|
||
|
char DomainName[MAX_DOMAIN_NAME_LEN + 4];
|
||
|
PIP_ADDR_STRING CurrentDnsServer;
|
||
|
IP_ADDR_STRING DnsServerList;
|
||
|
UINT NodeType; // see node type related definitions in iptypes.h
|
||
|
char ScopeId[MAX_SCOPE_ID_LEN + 4];
|
||
|
UINT EnableRouting;
|
||
|
UINT EnableProxy;
|
||
|
UINT EnableDns;
|
||
|
} IPCONFIG_FIXED_INFO, *PIPCONFIG_FIXED_INFO;
|
||
|
|
||
|
|
||
|
// This structure contains per adapter information returned by ipconfig test
|
||
|
|
||
|
typedef struct _IPCONFIG_ADAPTER_INFO {
|
||
|
struct _IPCONFIG_ADAPTER_INFO *Next;
|
||
|
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
|
||
|
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
|
||
|
UINT AddressLength;
|
||
|
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
|
||
|
DWORD Index;
|
||
|
UINT Type; // adapter type. See iptypes for definitions on type of adapters
|
||
|
UINT DhcpEnabled;
|
||
|
PIP_ADDR_STRING CurrentIpAddress;
|
||
|
IP_ADDR_STRING IpAddressList;
|
||
|
IP_ADDR_STRING GatewayList;
|
||
|
IP_ADDR_STRING DhcpServer;
|
||
|
BOOL PingDhcp; // whether pinging of dhcp server succeeded
|
||
|
BOOL HaveWins;
|
||
|
//
|
||
|
// NOTE: According to KarolyS, it is possible to list upto 12 wins servers
|
||
|
// and this is supposed to be included in nettest code. - Rajkumar
|
||
|
//
|
||
|
IP_ADDR_STRING PrimaryWinsServer;
|
||
|
BOOL PingPrimary; // whether pinging of primary WINS succeeded
|
||
|
IP_ADDR_STRING SecondaryWinsServer;
|
||
|
BOOL PingSecondary; // whether pinging of secondary WINS succeeded
|
||
|
time_t LeaseObtained;
|
||
|
time_t LeaseExpires;
|
||
|
char DhcpClassID[MAX_DOMAIN_NAME_LEN];
|
||
|
UINT AutoconfigEnabled; // is autoconfiguration possible ?
|
||
|
UINT AutoconfigActive; // is the adapter currently autoconfigured ?
|
||
|
UINT NodeType;
|
||
|
char DomainName[MAX_DOMAIN_NAME_LEN + 1];
|
||
|
IP_ADDR_STRING DnsServerList;
|
||
|
} IPCONFIG_ADAPTER_INFO, *PIPCONFIG_ADAPTER_INFO;
|
||
|
|
||
|
//
|
||
|
// Structure used in dhcp response
|
||
|
//
|
||
|
typedef struct _DHCP_RESPONSE_INFO {
|
||
|
USHORT MessageType; // BOOT_REPLY always
|
||
|
struct in_addr SubnetMask;
|
||
|
struct in_addr ServerIp;
|
||
|
struct in_addr DomainName;
|
||
|
char ExpiryTime[EXPIRY_TIME_LEN];
|
||
|
} DHCP_RESPONSE_INFO, *PDHCP_RESPONSE_INFO;
|
||
|
|
||
|
//
|
||
|
// structures returned by netstat test
|
||
|
//
|
||
|
|
||
|
typedef struct _INTERFACESTATS{
|
||
|
ulong if_index;
|
||
|
ulong if_type;
|
||
|
ulong if_mtu;
|
||
|
ulong if_speed;
|
||
|
ulong if_physaddrlen;
|
||
|
uchar if_physaddr[MAX_PHYSADDR_SIZE];
|
||
|
ulong if_adminstatus;
|
||
|
ulong if_operstatus;
|
||
|
ulong if_lastchange;
|
||
|
ulong if_inoctets;
|
||
|
ulong if_inucastpkts;
|
||
|
ulong if_innucastpkts;
|
||
|
ulong if_indiscards;
|
||
|
ulong if_inerrors;
|
||
|
ulong if_inunknownprotos;
|
||
|
ulong if_outoctets;
|
||
|
ulong if_outucastpkts;
|
||
|
ulong if_outnucastpkts;
|
||
|
ulong if_outdiscards;
|
||
|
ulong if_outerrors;
|
||
|
ulong if_outqlen;
|
||
|
ulong if_descrlen;
|
||
|
uchar if_descr[1];
|
||
|
} INTERFACESTATS, *PINTERFACESTATS;
|
||
|
|
||
|
typedef struct _TCPCONNECTIONSTATS {
|
||
|
ulong tct_state;
|
||
|
ulong tct_localaddr;
|
||
|
ulong tct_localport;
|
||
|
ulong tct_remoteaddr;
|
||
|
ulong tct_remoteport;
|
||
|
struct _TCPCONNECTIONSTATS *Next;
|
||
|
} TCPCONNECTIONSTATS, *PTCPCONNECTIONSTATS;
|
||
|
|
||
|
typedef struct _UDPCONNECTIONSTATS {
|
||
|
ulong ue_localaddr;
|
||
|
ulong ue_localport;
|
||
|
struct _UDPCONNECTIONSTATS *Next;
|
||
|
} UDPCONNECTIONSTATS, *PUDPCONNECTIONSTATS;
|
||
|
|
||
|
|
||
|
typedef struct _IPINFO {
|
||
|
ulong ipsi_forwarding;
|
||
|
ulong ipsi_defaultttl;
|
||
|
ulong ipsi_inreceives;
|
||
|
ulong ipsi_inhdrerrors;
|
||
|
ulong ipsi_inaddrerrors;
|
||
|
ulong ipsi_forwdatagrams;
|
||
|
ulong ipsi_inunknownprotos;
|
||
|
ulong ipsi_indiscards;
|
||
|
ulong ipsi_indelivers;
|
||
|
|
||
|
ulong ipsi_outrequests;
|
||
|
ulong ipsi_routingdiscards;
|
||
|
ulong ipsi_outdiscards;
|
||
|
ulong ipsi_outnoroutes;
|
||
|
ulong ipsi_reasmtimeout;
|
||
|
ulong ipsi_reasmreqds;
|
||
|
ulong ipsi_reasmoks;
|
||
|
ulong ipsi_reasmfails;
|
||
|
ulong ipsi_fragoks;
|
||
|
ulong ipsi_fragfails;
|
||
|
ulong ipsi_fragcreates;
|
||
|
ulong ipsi_numif;
|
||
|
ulong ipsi_numaddr;
|
||
|
ulong ipsi_numroutes;
|
||
|
} IPINFO, *PIPINFO;
|
||
|
|
||
|
typedef struct _TCP_STATS {
|
||
|
ulong ts_rtoalgorithm;
|
||
|
ulong ts_rtomin;
|
||
|
ulong ts_rtomax;
|
||
|
ulong ts_maxconn;
|
||
|
ulong ts_activeopens;
|
||
|
ulong ts_passiveopens;
|
||
|
ulong ts_attemptfails;
|
||
|
ulong ts_estabresets;
|
||
|
ulong ts_currestab;
|
||
|
ulong ts_insegs;
|
||
|
ulong ts_outsegs;
|
||
|
ulong ts_retranssegs;
|
||
|
ulong ts_inerrs;
|
||
|
ulong ts_outrsts;
|
||
|
ulong ts_numconns;
|
||
|
} TCP_STATS, *PTCP_STATS;
|
||
|
|
||
|
typedef struct _UDP_STATS {
|
||
|
ulong us_indatagrams; // datagrams received
|
||
|
ulong us_noports; // no ports
|
||
|
ulong us_inerrors; // Receive Errors
|
||
|
ulong us_outdatagrams; // datagrams sent
|
||
|
} UDP_STATS, *PUDP_STATS;
|
||
|
|
||
|
typedef struct _ICMPSTATS {
|
||
|
ulong icmps_msgs; // messages
|
||
|
ulong icmps_errors; // Errors
|
||
|
ulong icmps_destunreachs; // destination unreachable
|
||
|
ulong icmps_timeexcds; // time exceedeed
|
||
|
ulong icmps_parmprobs; // parameter problems
|
||
|
ulong icmps_srcquenchs; // source quenchs
|
||
|
ulong icmps_redirects; // redirects
|
||
|
ulong icmps_echos; // echos
|
||
|
ulong icmps_echoreps; // echo replies
|
||
|
ulong icmps_timestamps; // timestamps
|
||
|
ulong icmps_timestampreps; // timestamps replies
|
||
|
ulong icmps_addrmasks; // address masks
|
||
|
ulong icmps_addrmaskreps; // address mask replies
|
||
|
} ICMPSTATS, *PICMPSTATS;
|
||
|
|
||
|
/*================================< Entry Points >===============================*/
|
||
|
|
||
|
// The user of this entry point must allocate memory for these structures
|
||
|
NETTESTAPI BOOL IpConfigTest(PIPCONFIG_FIXED_INFO pIpFixedInfo,
|
||
|
PULONG pFixedSize,
|
||
|
PIPCONFIG_ADAPTER_INFO pIpAdapterInfo,
|
||
|
PULONG pAdapterInfo);
|
||
|
|
||
|
NETTESTAPI BOOL CheckDhcp(PIPCONFIG_ADAPTER_INFO pIpAdapterInfo,PDHCP_RESPONSE_INFO pDhcpResponse);
|
||
|
|
||
|
NETTESTAPI DWORD QueryWINS(PIP_ADDRESS_STRING WinsServerAddr);
|
||
|
|
||
|
//
|
||
|
// This entry point will allocate the memory needed. It will not expect the user
|
||
|
// to allocate memory for these structures. Freeing of this allcoated memory is
|
||
|
// user's reponsibility. There can be additional entry points which can be supplied
|
||
|
// which can be used to free this memory
|
||
|
//
|
||
|
|
||
|
NETTESTAPI BOOL NetstatInfo(PINTERFACESTATS pIfcStat,
|
||
|
PTCPCONNECTIONSTATS pTcpConnStats,
|
||
|
PUDPCONNECTIONSTATS pUdpConnStats,
|
||
|
PIPINFO pIpInfo,
|
||
|
PTCP_STATS pTcpStats,
|
||
|
PUDP_STATS pUdpStats,
|
||
|
ICMPSTATS pIcmpStats);
|
||
|
|
||
|
|