|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
routing\netsh\ipx\ipxhandle.c
Abstract:
IPX Command handler.
Revision History:
V Raman 12/2/98 Created
--*/
#include "precomp.h"
#pragma hdrstop
DWORD HandleIpxInterface( IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN IPX_OPERATION ioOP );
DWORD HandleIpxStaticRoute( IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN IPX_OPERATION ioOP );
DWORD HandleIpxStaticService( IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN IPX_OPERATION ioOP );
DWORD HandleIpxTrafficFilters( IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN IPX_OPERATION ioOP );
//
// Handle static route operations
//
DWORD HandleIpxAddRoute( IN LPCWSTR pwszMachineName, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT PBOOL pbDone ) /*++
Routine Description :
This function handles addition of static IPX routes by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticRoute( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_ADD ); }
DWORD HandleIpxDelRoute( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles deletion of static IPX routes by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticRoute( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_DELETE ); }
DWORD HandleIpxSetRoute( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles update of static IPX routes by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticRoute( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SET ); }
DWORD HandleIpxShowRoute( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles display of static IPX routes by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticRoute( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SHOW ); }
DWORD HandleIpxStaticRoute( IN OUT LPWSTR *ppwcOldArguments, IN DWORD dwCurrentIndex, IN DWORD dwOldArgCount, IN IPX_OPERATION ioOP ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle static route operations Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments bAdd - flag indicating whether IPX is being added or deleted
Return Value :
--*/ { DWORD dwErr; BOOL bFreeNewArg = FALSE; PWCHAR pwszIfName; DWORD dwArgCount = dwOldArgCount; PWCHAR *ppwcArguments = NULL; //
// Check if name= option is specified
//
pwszIfName = TOKEN_INTERFACE_NAME;
if ( pwszIfName == NULL ) { dwErr = ERROR_NOT_ENOUGH_MEMORY;
DisplayError( g_hModule, dwErr );
return dwErr; }
do { // Munge arguments into old format
dwErr = MungeArguments( ppwcOldArguments, dwOldArgCount, (PBYTE *) &ppwcArguments, &dwArgCount, &bFreeNewArg ); if (dwErr) { break; }
if ( ( dwCurrentIndex < dwArgCount ) && !_wcsnicmp( ppwcArguments[ dwCurrentIndex ], pwszIfName, wcslen( pwszIfName ) ) ) { //
// ok name= option tag specified, remove it and the following space
//
wcscpy( ppwcArguments[ dwCurrentIndex ], &ppwcArguments[ dwCurrentIndex ][ wcslen( pwszIfName ) + 2 ] ); }
//
// Now invoke the original routemon routine with what looks
// like an appriate command line
//
switch ( ioOP ) { case IPX_OPERATION_ADD : dwErr = CreateStRt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); break;
case IPX_OPERATION_DELETE : dwErr = DeleteStRt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SET : dwErr = SetStRt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SHOW : dwErr = ShowStRt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex, FALSE );
break;
}
} while (FALSE);
if ( bFreeNewArg ) { FreeArgTable( dwOldArgCount, ppwcArguments ); }
return dwErr; }
//
// Handle static service operations
//
DWORD HandleIpxAddService( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles addition of static IPX services by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticService( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_ADD ); }
DWORD HandleIpxDelService( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles deletion of static IPX services by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticService( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_DELETE ); }
DWORD HandleIpxSetService( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles update of static IPX services by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticService( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SET ); }
DWORD HandleIpxShowService( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles display of static IPX services by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxStaticService( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SHOW ); }
DWORD HandleIpxStaticService( IN OUT LPWSTR *ppwcOldArguments, IN DWORD dwCurrentIndex, IN DWORD dwOldArgCount, IN IPX_OPERATION ioOP )
/*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle static service operations Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments bAdd - flag indicating whether IPX is being added or deleted
Return Value :
--*/ { DWORD dwErr; BOOL bFreeNewArg = FALSE; PWCHAR pwszIfName; DWORD dwArgCount = dwOldArgCount; PWCHAR *ppwcArguments = NULL; //
// Check if name= option is specified
//
pwszIfName = TOKEN_INTERFACE_NAME;
if ( pwszIfName == NULL ) { dwErr = ERROR_NOT_ENOUGH_MEMORY;
DisplayError( g_hModule, dwErr );
return dwErr; }
do { // Munge arguments into old format
dwErr = MungeArguments( ppwcOldArguments, dwOldArgCount, (PBYTE *) &ppwcArguments, &dwArgCount, &bFreeNewArg ); if (dwErr) { break; }
if ( ( dwCurrentIndex < dwArgCount ) && !_wcsnicmp( ppwcArguments[ dwCurrentIndex ], pwszIfName, wcslen( pwszIfName ) ) ) { //
// ok name= option tag specified, remove it and the following space
//
wcscpy( ppwcArguments[ dwCurrentIndex ], &ppwcArguments[ dwCurrentIndex ][ wcslen( pwszIfName ) + 2 ] ); }
//
// Now invoke the original routemon routine with what looks
// like an appriate command line
//
switch ( ioOP ) { case IPX_OPERATION_ADD : dwErr = CreateStSvc( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); break;
case IPX_OPERATION_DELETE : dwErr = DeleteStSvc( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SET : dwErr = SetStSvc( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SHOW : dwErr = ShowStSvc( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex, FALSE );
break;
}
} while (FALSE);
if ( bFreeNewArg ) { FreeArgTable( dwOldArgCount, ppwcArguments ); }
return dwErr; }
//
// Handle packet filter operations
//
DWORD HandleIpxAddFilter( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles addition of IPX traffic filters by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxTrafficFilters( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_ADD ); }
DWORD HandleIpxDelFilter( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles deletion of IPX traffic filters by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxTrafficFilters( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_DELETE ); }
DWORD HandleIpxSetFilter( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles update of IPX traffic filters by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxTrafficFilters( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SET ); }
DWORD HandleIpxShowFilter( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This function handles display of IPX traffic filters by mapping the parameters to those required by the corresp. routemon routine.
Arguments :
ppwcArguments - list of arguments to the add route command
dwCurrentIndex - index of current argument in the argument table
dwArgCount - Number of arguments in the argument table
pbDone - As yet undetermined
Return Value
NO_ERROR - Success
--*/ { return HandleIpxTrafficFilters( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SHOW ); }
DWORD HandleIpxTrafficFilters( IN OUT LPWSTR *ppwcOldArguments, IN DWORD dwCurrentIndex, IN DWORD dwOldArgCount, IN IPX_OPERATION ioOP ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle traffic filter operations Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments bAdd - flag indicating whether IPX is being added or deleted
Return Value :
--*/ { DWORD dwErr; BOOL bFreeNewArg = FALSE; PWCHAR pwszIfName; DWORD dwArgCount = dwOldArgCount; PWCHAR *ppwcArguments = NULL; //
// Check if name= option is specified
//
pwszIfName = TOKEN_INTERFACE_NAME;
if ( pwszIfName == NULL ) { dwErr = ERROR_NOT_ENOUGH_MEMORY;
DisplayError( g_hModule, dwErr );
return dwErr; }
do { // Munge arguments into old format
dwErr = MungeArguments( ppwcOldArguments, dwOldArgCount, (PBYTE *) &ppwcArguments, &dwArgCount, &bFreeNewArg ); if (dwErr) { break; }
if ( ( dwCurrentIndex < dwArgCount ) && !_wcsnicmp( ppwcArguments[ dwCurrentIndex ], pwszIfName, wcslen( pwszIfName ) ) ) { //
// ok name= option tag specified, remove it and the following space
//
wcscpy( ppwcArguments[ dwCurrentIndex ], &ppwcArguments[ dwCurrentIndex ][ wcslen( pwszIfName ) + 2 ] ); }
//
// Now invoke the original routemon routine with what looks
// like an appriate command line
//
switch ( ioOP ) { case IPX_OPERATION_ADD : dwErr = CreateTfFlt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); break;
case IPX_OPERATION_DELETE : dwErr = DeleteTfFlt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SET : dwErr = SetTfFlt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SHOW : dwErr = ShowTfFlt( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex, FALSE );
break;
} } while (FALSE);
if ( bFreeNewArg ) { FreeArgTable( dwOldArgCount, ppwcArguments ); }
return dwErr; }
//
// Handle interface operations
//
DWORD HandleIpxAddInterface( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle interface addition
Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments pbDone - Don't know
Return Value :
--*/ { return HandleIpxInterface( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_ADD ); }
DWORD HandleIpxDelInterface( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle interface addition
Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments pbDone - Don't know
Return Value :
--*/ { return HandleIpxInterface( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_DELETE ); }
DWORD HandleIpxSetInterface( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle interface addition
Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments pbDone - Don't know
Return Value :
--*/ { return HandleIpxInterface( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SET ); }
DWORD HandleIpxShowInterface( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle interface addition
Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments pbDone - Don't know
Return Value :
--*/ { return HandleIpxInterface( ppwcArguments, dwCurrentIndex, dwArgCount, IPX_OPERATION_SHOW ); }
DWORD HandleIpxInterface( IN OUT LPWSTR *ppwcOldArguments, IN DWORD dwCurrentIndex, IN DWORD dwOldArgCount, IN IPX_OPERATION ioOP ) /*++
Routine Description :
This routine munges the command line and invokes the appropriate routemon routine to handle interface addition
Arguments : ppwcArguments - command line argument array dwCurrentIndex - current argument under consideration dwArgCount - Number of arguments in ppwcArguments bAdd - flag indicating whether IPX is being added or deleted
Return Value :
--*/ { DWORD dwErr; BOOL bFreeNewArg = FALSE; PWCHAR pwszIfName; DWORD dwArgCount = dwOldArgCount; PWCHAR *ppwcArguments = NULL; //
// Check if name= option is specified
//
pwszIfName = TOKEN_INTERFACE_NAME;
if ( pwszIfName == NULL ) { dwErr = ERROR_NOT_ENOUGH_MEMORY;
DisplayError( g_hModule, dwErr );
return dwErr; }
do { // Munge arguments into old format
dwErr = MungeArguments( ppwcOldArguments, dwOldArgCount, (PBYTE *) &ppwcArguments, &dwArgCount, &bFreeNewArg ); if (dwErr) { break; }
if ( ( dwCurrentIndex < dwArgCount ) && !_wcsnicmp( ppwcArguments[ dwCurrentIndex ], pwszIfName, wcslen( pwszIfName ) ) ) { //
// ok name= option tag specified, remove it and the following space
//
wcscpy( ppwcArguments[ dwCurrentIndex ], &ppwcArguments[ dwCurrentIndex ][ wcslen( pwszIfName ) + 2 ] ); }
//
// Now invoke the original routemon routine with what looks
// like an appriate command line
//
switch ( ioOP ) { case IPX_OPERATION_ADD : dwErr = InstallIpx( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); break;
case IPX_OPERATION_DELETE : dwErr = RemoveIpx( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SET : dwErr = SetIpxIf( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex );
break;
case IPX_OPERATION_SHOW : dwErr = ShowIpxIf( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex, FALSE );
break;
} } while (FALSE);
if ( bFreeNewArg ) { FreeArgTable( dwOldArgCount, ppwcArguments ); }
return dwErr; }
//
// Handle loglevel operations
//
DWORD HandleIpxSetLoglevel( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) { DWORD dwErr; BOOL bFreeNewArg = FALSE; DWORD dwNewArgCount = dwArgCount; PWCHAR *ppwcNewArguments = NULL;
do { // Munge arguments into old format
dwErr = MungeArguments( ppwcArguments, dwArgCount, (PBYTE *) &ppwcNewArguments, &dwNewArgCount, &bFreeNewArg ); if (dwErr) { break; }
dwErr= SetIpxGl( dwNewArgCount - dwCurrentIndex, ppwcNewArguments + dwCurrentIndex );
} while (FALSE);
if ( bFreeNewArg ) { FreeArgTable( dwArgCount, ppwcNewArguments ); }
return dwErr; }
DWORD HandleIpxShowLoglevel( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) { return ShowIpxGl( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex, FALSE ); }
DWORD HandleIpxUpdate( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) { return NO_ERROR; }
DWORD HandleIpxShowRouteTable( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) { return ShowRoute( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); }
DWORD HandleIpxShowServiceTable( IN LPCWSTR pwszMachine, IN OUT LPWSTR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN DWORD dwFlags, IN LPCVOID pvData, OUT BOOL *pbDone ) { return ShowService( dwArgCount - dwCurrentIndex, ppwcArguments + dwCurrentIndex ); }
DWORD IpxDump( IN LPCWSTR pwszRouter, IN OUT LPWSTR *ppwcArguments, IN DWORD dwArgCount, IN LPCVOID pvData ) { BOOL bDone; DWORD dwErr;
dwErr = ConnectToRouter(pwszRouter); if (dwErr) { return dwErr; }
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_HEADER );
DisplayMessageT( DMP_IPX_HEADER );
DumpIpxInformation(pwszRouter, ppwcArguments,dwArgCount,g_hMIBServer);
DisplayMessageT( DMP_IPX_FOOTER );
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_FOOTER );
return NO_ERROR; }
VOID DumpIpxInformation( IN LPCWSTR pwszMachineName, IN OUT LPWSTR *ppwcArguments, IN DWORD dwArgCount, IN MIB_SERVER_HANDLE hMibServer ) { DWORD dwErr, dwRead = 0, dwTot = 0, i; PMPR_INTERFACE_0 IfList; WCHAR IfDisplayName[ MAX_INTERFACE_NAME_LEN + 1 ]; DWORD dwSize = sizeof(IfDisplayName); PWCHAR argv[1]; //
// dump globals
//
ShowIpxGl( 0, NULL, TRUE );
//
// dump interfaces
//
ShowIpxIf( 0, NULL, TRUE );
//
// enumerate interfaces
//
if ( g_hMprAdmin ) { dwErr = MprAdminInterfaceEnum( g_hMprAdmin, 0, (unsigned char **)&IfList, MAXULONG, &dwRead, &dwTot,NULL ); }
else { dwErr = MprConfigInterfaceEnum( g_hMprConfig, 0, (unsigned char **)&IfList, MAXULONG, &dwRead, &dwTot,NULL ); } if ( dwErr != NO_ERROR ) { DisplayError( g_hModule, dwErr); return; }
//
// enumerate filters on each interface
//
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_TRAFFIC_FILTER_HEADER ); for ( i = 0; i < dwRead; i++ ) { dwErr = IpmontrGetFriendlyNameFromIfName( IfList[i].wszInterfaceName, IfDisplayName, &dwSize );
if ( dwErr == NO_ERROR ) { argv[0] = IfDisplayName; ShowTfFlt( 1, argv, TRUE ); } } //
// Enumerate static routes on each interface
//
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_STATIC_ROUTE_HEADER ); for ( i = 0; i < dwRead; i++ ) { dwErr = IpmontrGetFriendlyNameFromIfName( IfList[i].wszInterfaceName, IfDisplayName, &dwSize );
if ( dwErr == NO_ERROR ) { argv[0] = IfDisplayName; ShowStRt( 1, argv, TRUE ); } }
//
// Enumerate static services on each interface
//
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_STATIC_SERVICE_HEADER ); for ( i = 0; i < dwRead; i++ ) { dwErr = IpmontrGetFriendlyNameFromIfName( IfList[i].wszInterfaceName, IfDisplayName, &dwSize );
if ( dwErr == NO_ERROR ) { argv[0] = IfDisplayName; ShowStSvc( 1, argv, TRUE ); } }
if ( g_hMprAdmin ) { MprAdminBufferFree( IfList ); } else { MprConfigBufferFree( IfList ); } }
|