153 lines
3.7 KiB
C
153 lines
3.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1999, Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
sample\sample.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
The file contains the command dispatcher for the sample IP protocol.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
|
||
|
// global information for the sample context
|
||
|
CONTEXT_ENTRY g_ceSample;
|
||
|
|
||
|
////////////////////////////////////////
|
||
|
// Configuration Data For Sample
|
||
|
////////////////////////////////////////
|
||
|
|
||
|
// default global configuration
|
||
|
static IPSAMPLE_GLOBAL_CONFIG isDefaultGlobal =
|
||
|
{
|
||
|
IPSAMPLE_LOGGING_INFO // tag LOGLEVEL
|
||
|
};
|
||
|
|
||
|
// default interface configuration
|
||
|
static IPSAMPLE_IF_CONFIG isDefaultInterface =
|
||
|
{
|
||
|
0 // tag METRIC
|
||
|
};
|
||
|
|
||
|
|
||
|
// table of ADD commands
|
||
|
static CMD_ENTRY isAddCmdTable[] =
|
||
|
{
|
||
|
CREATE_CMD_ENTRY(SAMPLE_ADD_IF, HandleSampleAddIf),
|
||
|
};
|
||
|
|
||
|
// table of DELETE commands
|
||
|
static CMD_ENTRY isDeleteCmdTable[] =
|
||
|
{
|
||
|
CREATE_CMD_ENTRY(SAMPLE_DEL_IF, HandleSampleDelIf),
|
||
|
};
|
||
|
|
||
|
// table of SET commands
|
||
|
static CMD_ENTRY isSetCmdTable[] =
|
||
|
{
|
||
|
CREATE_CMD_ENTRY(SAMPLE_SET_GLOBAL, HandleSampleSetGlobal),
|
||
|
CREATE_CMD_ENTRY(SAMPLE_SET_IF, HandleSampleSetIf),
|
||
|
};
|
||
|
|
||
|
// table of SHOW commands
|
||
|
static CMD_ENTRY isShowCmdTable[] =
|
||
|
{
|
||
|
CREATE_CMD_ENTRY(SAMPLE_SHOW_GLOBAL, HandleSampleShowGlobal),
|
||
|
CREATE_CMD_ENTRY(SAMPLE_SHOW_IF, HandleSampleShowIf),
|
||
|
CREATE_CMD_ENTRY(SAMPLE_MIB_SHOW_STATS, HandleSampleMibShowObject),
|
||
|
CREATE_CMD_ENTRY(SAMPLE_MIB_SHOW_IFSTATS, HandleSampleMibShowObject),
|
||
|
CREATE_CMD_ENTRY(SAMPLE_MIB_SHOW_IFBINDING, HandleSampleMibShowObject),
|
||
|
};
|
||
|
|
||
|
// table of above group commands
|
||
|
static CMD_GROUP_ENTRY isGroupCmds[] =
|
||
|
{
|
||
|
CREATE_CMD_GROUP_ENTRY(GROUP_ADD, isAddCmdTable),
|
||
|
CREATE_CMD_GROUP_ENTRY(GROUP_DELETE, isDeleteCmdTable),
|
||
|
CREATE_CMD_GROUP_ENTRY(GROUP_SET, isSetCmdTable),
|
||
|
CREATE_CMD_GROUP_ENTRY(GROUP_SHOW, isShowCmdTable),
|
||
|
};
|
||
|
|
||
|
|
||
|
// table of top commands (non group)
|
||
|
static CMD_ENTRY isTopCmds[] =
|
||
|
{
|
||
|
CREATE_CMD_ENTRY(INSTALL, HandleSampleInstall),
|
||
|
CREATE_CMD_ENTRY(UNINSTALL, HandleSampleUninstall),
|
||
|
};
|
||
|
|
||
|
|
||
|
// dump function
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
SampleDump(
|
||
|
IN LPCWSTR pwszMachine,
|
||
|
IN WCHAR **ppwcArguments,
|
||
|
IN DWORD dwArgCount,
|
||
|
IN PVOID pvData
|
||
|
)
|
||
|
{
|
||
|
DWORD dwErr;
|
||
|
HANDLE hFile = (HANDLE)-1;
|
||
|
|
||
|
DisplayMessage(g_hModule, DMP_SAMPLE_HEADER);
|
||
|
DisplayMessageT(DMP_SAMPLE_PUSHD);
|
||
|
DisplayMessageT(DMP_SAMPLE_UNINSTALL);
|
||
|
|
||
|
// dump SAMPLE global configuration
|
||
|
SgcShow(FORMAT_DUMP) ;
|
||
|
// dump SAMPLE configuration for all interfaces
|
||
|
SicShowAll(FORMAT_DUMP) ;
|
||
|
|
||
|
DisplayMessageT(DMP_POPD);
|
||
|
DisplayMessage(g_hModule, DMP_SAMPLE_FOOTER);
|
||
|
|
||
|
return NO_ERROR;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
VOID
|
||
|
SampleInitialize(
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description
|
||
|
Initialize sample's information. Called by IpsamplemonStartHelper.
|
||
|
|
||
|
Arguments
|
||
|
None
|
||
|
|
||
|
Return Value
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
// context version
|
||
|
g_ceSample.dwVersion = SAMPLE_CONTEXT_VERSION;
|
||
|
|
||
|
// context identifying string
|
||
|
g_ceSample.pwszName = TOKEN_SAMPLE;
|
||
|
|
||
|
// top level (non group) commands
|
||
|
g_ceSample.ulNumTopCmds = sizeof(isTopCmds)/sizeof(CMD_ENTRY);
|
||
|
g_ceSample.pTopCmds = isTopCmds;
|
||
|
|
||
|
// group commands
|
||
|
g_ceSample.ulNumGroupCmds = sizeof(isGroupCmds)/sizeof(CMD_GROUP_ENTRY);
|
||
|
g_ceSample.pGroupCmds = isGroupCmds;
|
||
|
|
||
|
// default configuration
|
||
|
g_ceSample.pDefaultGlobal = (PBYTE) &isDefaultGlobal;
|
||
|
g_ceSample.pDefaultInterface= (PBYTE) &isDefaultInterface;
|
||
|
|
||
|
// dump function
|
||
|
g_ceSample.pfnDump = SampleDump;
|
||
|
}
|