|
|
//++
//
// Copyright (C) Microsoft Corporation, 1987 - 1999
//
// Module Name:
//
// wantest.c
//
// Abstract:
//
// Queries into network drivers
//
// Author:
//
// Anilth - 4-20-1998
//
// Environment:
//
// User mode only.
// Contains NT-specific code.
//
// Revision History:
//
//--
#include "precomp.h"
#undef IsEqualGUID
#include <ras.h>
#include <tapi.h>
#include <unimodem.h>
//$REVIEW (nsun) is this reasonable
#define MAX_RASCONN 100
BOOL WANTest(NETDIAG_PARAMS* pParams, NETDIAG_RESULT* pResults) // Description:
// This routine tests the WAN/TAPI configurations
//
//
// Author:
// NSun
//
{ HRESULT hr = S_OK; DWORD dwReturn; DWORD dwByteCount; RASCONN pRasConn[MAX_RASCONN]; RASENTRY RasEntry; DWORD dwEntryInfoSize; RAS_STATS RasStats;
DWORD dwNumConnections; DWORD i;
PrintStatusMessage( pParams, 4, IDS_WAN_STATUS_MSG );
InitializeListHead( &pResults->Wan.lmsgOutput );
dwByteCount = sizeof(RASCONN) * MAX_RASCONN;
//
// dwSize identifies the version of the structure being passed
//
pRasConn[0].dwSize = sizeof(RASCONN);
dwReturn = RasEnumConnections(pRasConn, &dwByteCount, &dwNumConnections);
if (dwReturn != 0) { //IDS_WAN_15001 "RasEnumConnections failed\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Quiet, IDS_WAN_15001); hr = S_FALSE; goto LERROR; }
if (dwNumConnections == 0) { //IDS_WAN_15002 "No active remote access connections.\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15002); goto LERROR; }
pResults->Wan.fPerformed = TRUE;
for ( i = 0; i < dwNumConnections; i++) { //IDS_WAN_15003 "Entry Name: "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15003);
if (pRasConn[i].szEntryName[0] == '.') { //IDS_WAN_15004 "N/A, phone number %s\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15004, pRasConn[i].szEntryName+1); // skip the dot
//IDS_WAN_15005 "The following is default entry properties.\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15005); pRasConn[i].szEntryName[0] = 0; } else //IDS_WAN_15006 "%s\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15006, pRasConn[i].szEntryName);
RasEntry.dwSize = sizeof(RasEntry);
dwEntryInfoSize = sizeof(RasEntry);
dwReturn = RasGetEntryProperties(NULL, pRasConn[i].szEntryName, &RasEntry, &dwEntryInfoSize, NULL, NULL);
if (dwReturn != 0) { //IDS_WAN_15056 "RasGetEntryProperties for %s failed. [%s]\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Quiet, IDS_WAN_15056, pRasConn[i].szEntryName, NetStatusToString(dwReturn)); hr = S_FALSE; continue; }
//
// dump the connection properties
//
// print the device type
//IDS_WAN_15008 "Device Type: "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15008);
//$ REVIEW
// Why are there '\n''s at the end of the names?
if (!_tcscmp(RasEntry.szDeviceType,_T("RASDT_Modem\n"))) { // IDS_WAN_15009 "Modem\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15009); } else if (!_tcscmp(RasEntry.szDeviceType,_T("RASDT_Isdn\n"))) { // IDS_WAN_15010 "ISDN card\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15010); } else if (!_tcscmp(RasEntry.szDeviceType,_T("RASDT_X25\n"))) { //IDS_WAN_15011 "X25 card\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15011); } else if (!_tcscmp(RasEntry.szDeviceType,_T("RASDT_Vpn\n"))) { //IDS_WAN_15012 "Virtual Private Network\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15012); } else if (!_tcscmp(RasEntry.szDeviceType,_T("RASDT_PAD"))) { //IDS_WAN_15013 "Packet Assembler / Dissasembler\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15013); }
//
// Framing protocol in use
//
//IDS_WAN_15014 "Framing protocol : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15014); if (RasEntry.dwFramingProtocol & RASFP_Ppp) //IDS_WAN_15015 " PPP\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15015); else if (RasEntry.dwFramingProtocol & RASFP_Slip) //IDS_WAN_15016 " Slip\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15016); else if (RasEntry.dwFramingProtocol & RASFP_Ras) //IDS_WAN_15017 " MS Proprietary protocol\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15017);
//
// PPP and LCP Settings
//
if (RasEntry.dwFramingProtocol & RASFP_Ppp) {
//IDS_WAN_15018 "LCP Extensions : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15018); if (RasEntry.dwfOptions & RASEO_DisableLcpExtensions) //IDS_WAN_DISABLED " Disabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_DISABLED); else //IDS_WAN_ENABLED " Enabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_ENABLED);
//IDS_WAN_15021 "Software Compression : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15021); if (RasEntry.dwfOptions & RASEO_SwCompression) //IDS_WAN_ENABLED " Enabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_ENABLED); else //IDS_WAN_DISABLED " Disabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_DISABLED);
}
//
// Network protocols in use and options
//
//IDS_WAN_15024 "Network protocols :\n "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15024); if (RasEntry.dwfNetProtocols & RASNP_NetBEUI) //IDS_WAN_15025 " NetBEUI\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15025); if (RasEntry.dwfNetProtocols & RASNP_Ipx) //IDS_WAN_15026 " IPX\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15026); if (RasEntry.dwfNetProtocols & RASNP_Ip) //IDS_WAN_15027 " TCP/IP\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15027);
//
// TCP/IP options
//
if (RasEntry.dwfNetProtocols & RASNP_Ip) {
//IDS_WAN_15028 "IP Address : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15028); if (RasEntry.dwfOptions & RASEO_SpecificIpAddr) //IDS_WAN_15029 "Specified\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15029); else //IDS_WAN_15030 "Server Assigned\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15030);
//IDS_WAN_15031 "Name Server: "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15031); if (RasEntry.dwfOptions & RASEO_SpecificNameServers) //IDS_WAN_15032 "Specified\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15032); else //IDS_WAN_15033 "Server Assigned\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15033);
// IP hdr compression makes sense only if we use PPP
if (RasEntry.dwFramingProtocol & RASFP_Ppp) {
//IDS_WAN_15034 "IP Header compression : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15034); if (RasEntry.dwfOptions & RASEO_IpHeaderCompression) //IDS_WAN_15035 " Enabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15035); else //IDS_WAN_15036 " Disabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15036); }
//IDS_WAN_15037 "Use default gateway on remote network : "
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15037); if (RasEntry.dwfOptions & RASEO_RemoteDefaultGateway) //IDS_WAN_15038 "Enabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15038); else //IDS_WAN_15039 "Disabled\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15039);
}
//
// Collect statistics regarding this connection
//
RasStats.dwSize = sizeof(RAS_STATS); // pass version information
dwReturn = RasGetConnectionStatistics( pRasConn[i].hrasconn, &RasStats);
if (dwReturn != 0) { //IDS_WAN_15040 " RasGetConnectionStatistics for %s failed. [%s]\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Quiet, IDS_WAN_15040, pRasConn[i].szEntryName, NetStatusToString(dwReturn) ); hr = S_FALSE; continue; } //IDS_WAN_15041 "\n\tConnection Statistics:\n"
AddMessageToListId( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15041);
//IDS_WAN_15042 "\tBytes Transmitted : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15042, RasStats.dwBytesXmited); //IDS_WAN_15043 "\tBytes Received : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15043,RasStats.dwBytesRcved); //IDS_WAN_15044 "\tFrames Transmitted : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15044,RasStats.dwFramesXmited); //IDS_WAN_15045 "\tFrames Received : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15045,RasStats.dwFramesRcved); //IDS_WAN_15046 "\tCRC Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15046,RasStats.dwFramesRcved); //IDS_WAN_15047 "\tTimeout Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15047,RasStats.dwTimeoutErr); //IDS_WAN_15048 "\tAlignment Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15048,RasStats.dwAlignmentErr); //IDS_WAN_15049 "\tH/W Overrun Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15049,RasStats.dwHardwareOverrunErr); //IDS_WAN_15050 "\tFraming Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15050,RasStats.dwFramingErr); //IDS_WAN_15051 "\tBuffer Overrun Errors : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15051,RasStats.dwBufferOverrunErr); //IDS_WAN_15052 "\tCompression Ratio In : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15052,RasStats.dwCompressionRatioIn); //IDS_WAN_15053 "\tCompression Ratio Out : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15053,RasStats.dwCompressionRatioOut); //IDS_WAN_15054 "\tBaud Rate ( Bps ) : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15054,RasStats.dwBps); //IDS_WAN_15055 "\tConnection Duration : %d\n"
AddMessageToList( &pResults->Wan.lmsgOutput, Nd_Verbose, IDS_WAN_15055,RasStats.dwConnectDuration);
} // end of for loop
LERROR: pResults->Wan.hr = hr; return hr; }
void WANGlobalPrint(NETDIAG_PARAMS *pParams, NETDIAG_RESULT *pResults) { if (pParams->fVerbose) { PrintNewLine(pParams, 2); PrintTestTitleResult(pParams, IDS_WAN_LONG, IDS_WAN_SHORT, pResults->Wan.fPerformed, pResults->Wan.hr, 0); } PrintMessageList(pParams, &pResults->Wan.lmsgOutput); }
void WANPerInterfacePrint(NETDIAG_PARAMS *pParams, NETDIAG_RESULT *pResults, INTERFACE_RESULT *pInterfaceResults) { //Not a PerInterface test
}
void WANCleanup(IN NETDIAG_PARAMS *pParams, IN OUT NETDIAG_RESULT *pResults) { MessageListCleanUp(&pResults->Wan.lmsgOutput); }
|