|
|
//++
//
// Copyright (C) Microsoft Corporation, 1987 - 1999
//
// Module Name:
//
// autonet.c
//
// Abstract:
//
// Queries into network drivers
//
// Author:
//
// Anilth - 4-20-1998
//
// Environment:
//
// User mode only.
// Contains NT-specific code.
//
// Revision History:
//
//--
#include "precomp.h"
#include "dhcptest.h"
//$Review (nsun) Now we just print "Autonet address is in use" if autonet.
// we don't send Dhcp broadcast.
// Maybe later we should send the Dhcp broadcast to see if the Dhcp server works or not
// for all DHCP enabled card
//-------------------------------------------------------------------------//
//###### A u t o n e t T e s t () #######################################//
//-------------------------------------------------------------------------//
HRESULT AutonetTest(NETDIAG_PARAMS* pParams, NETDIAG_RESULT* pResults) //++
//
// Routine Description:
//
// Checks if we have autonet addresses on all adapters. If we do than
// the workstation couldn't reach a DHCP server on any adapters.
// Potential HW or NDIS issue.
//
// Arguments:
//
// None.
//
// Return Value:
//
// S_FALSE : Test failed, all adapters are autoconfigure.
// S_OK : Test succeeded, we found at least one non-autoconfigure.
// other : error codes
//
//--
{ PIP_ADAPTER_INFO pIpAdapterInfo; HRESULT hr = S_FALSE; // Assume that this will fail
int i;
PrintStatusMessage(pParams, 4, IDS_AUTONET_STATUS_MSG);
//
// scan all adapters for a non-autonet address
//
for( i = 0; i < pResults->cNumInterfaces; i++) { pIpAdapterInfo = pResults->pArrayInterface[i].IpConfig.pAdapterInfo; //if this is not an active connection, skip it.
if (!pResults->pArrayInterface[i].IpConfig.fActive || NETCARD_DISCONNECTED == pResults->pArrayInterface[i].dwNetCardStatus) continue;
if ( !pResults->pArrayInterface[i].IpConfig.fAutoconfigActive ) { //$REVIEW (nsun) maybe we need to DhcpBroadcast(pIpAdapterInfo) here instead
// of for the AutoNet adapters
pResults->pArrayInterface[i].AutoNet.fAutoNet = FALSE; hr = S_OK; continue; } // Skip WAN Cards
if ( ! strstr(pIpAdapterInfo->AdapterName,"NdisWan") ) pResults->pArrayInterface[i].AutoNet.fAutoNet = TRUE; }
if ( FHrOK(hr) ) { PrintStatusMessage(pParams, 0, IDS_GLOBAL_PASS_NL); pResults->AutoNet.fAllAutoConfig = FALSE; } else { PrintStatusMessage(pParams, 0, IDS_GLOBAL_FAIL_NL); pResults->AutoNet.fAllAutoConfig = TRUE; } return hr; } /* END OF AutonetTest() */
void AutonetGlobalPrint(NETDIAG_PARAMS *pParams, NETDIAG_RESULT *pResults) { if (pParams->fVerbose || pResults->AutoNet.fAllAutoConfig) { PrintNewLine(pParams, 2); PrintTestTitleResult(pParams, IDS_AUTONET_LONG, IDS_AUTONET_SHORT, TRUE, pResults->AutoNet.fAllAutoConfig ? S_FALSE : S_OK, 0); }
if(pResults->AutoNet.fAllAutoConfig) { //IDS_AUTONET_11601 " [FATAL] All adapters are autoconfigured!\n"
PrintMessage(pParams, IDS_AUTONET_11601 ); //IDS_AUTONET_11602 " The DHCP servers are unreachable. Please check cables, hubs, and taps!\n\n"
PrintMessage(pParams, IDS_AUTONET_11602 ); } else { if (pParams->fReallyVerbose) //IDS_AUTONET_11603 " PASS - you have at least one non-autoconfigured IP address\n"
PrintMessage(pParams, IDS_AUTONET_11603 ); } }
void AutonetPerInterfacePrint(NETDIAG_PARAMS *pParams, NETDIAG_RESULT *pResults, INTERFACE_RESULT *pInterfaceResults) { if (!pInterfaceResults->IpConfig.fActive || NETCARD_DISCONNECTED == pInterfaceResults->dwNetCardStatus) return;
if (pParams->fVerbose) { //IDS_AUTONET_11604 " Autonet results : "
PrintMessage(pParams, IDS_AUTONET_11604); if(pInterfaceResults->AutoNet.fAutoNet) { PrintMessage(pParams, IDS_GLOBAL_FAIL_NL); //IDS_AUTONET_11605 " [WARNING] AutoNet is in use. DHCP not available!\n"
PrintMessage(pParams, IDS_AUTONET_11605); } else { PrintMessage(pParams, IDS_GLOBAL_PASS_NL); if(pParams->fReallyVerbose) //IDS_AUTONET_11606 " AutoNet is not in use. \n"
PrintMessage(pParams, IDS_AUTONET_11606); } } }
void AutonetCleanup(IN NETDIAG_PARAMS *pParams, IN OUT NETDIAG_RESULT *pResults) { }
|