windows-nt/Source/XPSP1/NT/net/atm/arp/atmarp/atmarp.c

186 lines
2.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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;
}