|
|
/*++
Copyright (c) 1997 FORE Systems, Inc. Copyright (c) 1997 Microsoft Corporation
Module Name:
atmlane.c
Abstract:
ATM ARP Admin Utility.
Usage:
atmarp
Revision History:
Who When What -------- -------- --------------------------------------------- josephj 06-10-1998 Created (adapted from atmlane admin utility).
Notes:
Modelled after atmlane utility.
--*/
#include "common.h"
#include "atmmsg.h"
BOOL ParseCmdLine( int argc, char * argv[] );
OPTIONS g;
void Usage(void); VOID __cdecl main( INT argc, CHAR *argv[] ) {
//
// Parse args, determine if this is concerns the arp client or server.
//
if(!ParseCmdLine(argc, argv)){ Usage(); return; }
DoAAS(&g);
//
// Following tries to open atmarpc.sys...
//
// DoAAC(&g);
}
void Usage(void) { printf( "\n Windows NT IP/ATM Information\n\n"); printf( "USAGE: atmarp [/s] [/c] [/reset]\n");
printf( " Options\n" " /? Display this help message.\n" " /s Display statistics for the ARP and MARS server.\n" " /c Display the ARP and MARS caches.\n" " /reset Reset the ARP and MARS statistics.\n\n" ); printf( "The default is to display only the ARP and MARS statistics.\n\n" ); }
UINT FindOption( char *lptOpt, char **ppVal );
enum { DISP_HELP, DISP_STATS, DISP_CACHES, DO_RESET, UNKNOWN_OPTION };
struct _CmdOptions { char * lptOption; UINT uOpt; } CmdOptions[] = { {"/?" , DISP_HELP }, {"-?" , DISP_HELP }, {"/s" , DISP_STATS }, {"-s" , DISP_STATS }, {"/c" , DISP_CACHES }, {"-c" , DISP_CACHES }, {"/reset" , DO_RESET }, {"-reset" , DO_RESET } }; INT iCmdOptionsCounts = sizeof(CmdOptions)/sizeof(struct _CmdOptions);
BOOL ParseCmdLine( int argc, char * argv[] ) { BOOL bRetVal = TRUE; int iIndx; UINT uOpt; char *pVal;
for(iIndx = 1; iIndx < argc; iIndx++) { uOpt = FindOption(argv[iIndx], &pVal);
switch(uOpt){
case DISP_STATS: g.DispStats = TRUE; break;
case DISP_CACHES: g.DispCache = TRUE; break;
case DO_RESET: g.DoResetStats = TRUE; break; default: printf("Unknown option - %s\n", argv[iIndx]); // fall through
case DISP_HELP: bRetVal = FALSE; } }
if (argc<=1) { //
// Set default
//
g.DispStats = TRUE; }
return bRetVal; }
UINT FindOption( char *lptOpt, char **ppVal ) { int i; UINT iLen;
for(i = 0; i < iCmdOptionsCounts; i++){ if(strlen(lptOpt) >= (iLen = strlen(CmdOptions[i].lptOption))) if(0 == _strnicmp(lptOpt, CmdOptions[i].lptOption, iLen)){ *ppVal = lptOpt + iLen; return CmdOptions[i].uOpt; } }
return UNKNOWN_OPTION; }
|