windows-nt/Source/XPSP1/NT/net/rras/netsh/ipx/ipxmon/ipxgl.c

358 lines
7.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
ipxgl.c
Abstract:
IPX Router Console Monitoring and Configuration tool.
IPX Global configuration.
Author:
Vadim Eydelman 06/07/1996
--*/
#include "precomp.h"
#pragma hdrstop
DWORD
CfgSetIpxGlInfo (
IN DWORD *pLogLevel OPTIONAL
);
DWORD
AdmSetIpxGlInfo (
IN DWORD *pLogLevel OPTIONAL
);
int APIENTRY
ShowIpxGl(
IN int argc,
IN WCHAR *argv[],
IN BOOL bDump
)
{
DWORD rc;
LPBYTE pGlBlock;
DWORD sz;
HANDLE hTrCfg = NULL;
PWCHAR buffer = NULL;
if ( g_hMprAdmin )
{
rc = MprAdminTransportGetInfo(
g_hMprAdmin, PID_IPX, &pGlBlock, &sz,
NULL, NULL
);
if ( rc == NO_ERROR ) { }
else
{
goto GetFromCfg;
}
}
else
{
GetFromCfg:
rc = MprConfigTransportGetHandle( g_hMprConfig, PID_IPX, &hTrCfg );
if ( rc == NO_ERROR )
{
rc = MprConfigTransportGetInfo(
g_hMprConfig, hTrCfg, &pGlBlock, &sz, NULL, NULL, NULL
);
}
}
if ( rc == NO_ERROR )
{
PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry (
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
IPX_GLOBAL_INFO_TYPE
);
if ( pIpxGlToc != NULL )
{
PIPX_GLOBAL_INFO pIpxGlInfo;
PWCHAR buffer;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset);
buffer = GetEnumString(
g_hModule, pIpxGlInfo->EventLogMask,
NUM_VALUES_IN_TABLE( LogLevels ), LogLevels
);
if ( bDump )
{
DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_GLOBAL_HEADER);
DisplayMessageT( DMP_IPX_SET_GLOBAL, buffer );
}
else
{
DisplayIPXMessage(
g_hModule, MSG_IPX_GLOBAL_FMT, buffer
);
}
}
else
{
DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED);
rc = ERROR_INVALID_DATA;
}
if (hTrCfg!=NULL)
{
MprConfigBufferFree (pGlBlock);
}
else
{
MprAdminBufferFree (pGlBlock);
}
}
else if (!bDump)
{
DisplayError( g_hModule, rc);
}
return rc;
}
int APIENTRY
SetIpxGl (
IN int argc,
IN WCHAR *argv[]
)
{
DWORD rc;
if ( argc >= 1 )
{
int i;
unsigned n;
PWCHAR buffer;
DWORD logLevel;
DWORD *pLogLevel = NULL;
TOKEN_VALUE LogLevel[] =
{
{ VAL_NONE, 0 },
{ VAL_ERRORS_ONLY, EVENTLOG_ERROR_TYPE },
{ VAL_ERRORS_AND_WARNINGS, EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE },
{ VAL_MAXINFO,
EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE }
};
for ( i = 0; i < argc; i++ )
{
if ( !_wcsicmp( argv[i], TOKEN_LOGLEVEL ) )
{
if ( ( pLogLevel == NULL ) && ( i < argc - 1 ) &&
!MatchEnumTag(
g_hModule, argv[ i + 1 ], NUM_TOKENS_IN_TABLE( LogLevel ),
LogLevel, &logLevel ) )
{
i += 1;
pLogLevel = &logLevel;
}
else
{
break;
}
}
else if ( pLogLevel == NULL )
{
if ( !MatchEnumTag(
g_hModule, argv[ i ], NUM_TOKENS_IN_TABLE( LogLevel ),
LogLevel, &logLevel ) )
{
pLogLevel = &logLevel;
}
else
{
break;
}
}
}
if ( i == argc )
{
rc = CfgSetIpxGlInfo( pLogLevel );
if ( rc == NO_ERROR )
{
if ( g_hMprAdmin )
{
AdmSetIpxGlInfo( pLogLevel );
}
}
}
else
{
rc = ERROR_INVALID_SYNTAX;
}
}
else
{
rc = ERROR_INVALID_SYNTAX;
}
return rc;
}
DWORD
CfgSetIpxGlInfo (
IN DWORD *pLogLevel OPTIONAL
)
{
DWORD rc;
HANDLE hTrCfg;
rc = MprConfigTransportGetHandle( g_hMprConfig, PID_IPX, &hTrCfg );
if ( rc == NO_ERROR )
{
DWORD sz;
LPBYTE pGlBlock;
rc = MprConfigTransportGetInfo(
g_hMprConfig, hTrCfg, &pGlBlock, &sz, NULL, NULL, NULL
);
if (rc==NO_ERROR)
{
PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry (
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
IPX_GLOBAL_INFO_TYPE
);
if (pIpxGlToc!=NULL)
{
PIPX_GLOBAL_INFO pIpxGlInfo;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset);
if ( pLogLevel )
{
pIpxGlInfo->EventLogMask = *pLogLevel;
}
rc = MprConfigTransportSetInfo(
g_hMprConfig, hTrCfg, pGlBlock, sz, NULL, 0, NULL
);
if (rc==NO_ERROR)
{
DisplayIPXMessage (g_hModule, MSG_IPXGL_SET_CFG);
}
else
{
DisplayError( g_hModule, rc);
}
}
else
{
DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED);
rc = ERROR_INVALID_DATA;
}
MprConfigBufferFree (pGlBlock);
}
else
{
DisplayError( g_hModule, rc);
}
}
else
{
DisplayError( g_hModule, rc);
}
return rc;
}
DWORD
AdmSetIpxGlInfo (
IN DWORD *pLogLevel OPTIONAL
)
{
DWORD rc;
LPBYTE pGlBlock;
DWORD sz;
rc = MprAdminTransportGetInfo(
g_hMprAdmin, PID_IPX, &pGlBlock, &sz, NULL, NULL
);
if (rc==NO_ERROR)
{
PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry (
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
IPX_GLOBAL_INFO_TYPE
);
if (pIpxGlToc!=NULL)
{
PIPX_GLOBAL_INFO pIpxGlInfo;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset);
if (pLogLevel)
{
pIpxGlInfo->EventLogMask = *pLogLevel;
}
rc = MprAdminTransportSetInfo(
g_hMprAdmin, PID_IPX, pGlBlock, sz, NULL, 0
);
if (rc==NO_ERROR)
{
DisplayIPXMessage (g_hModule,
MSG_IPXGL_SET_ADM);
}
else
{
DisplayError( g_hModule, rc);
}
}
else
{
DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED);
rc = ERROR_INVALID_DATA;
}
MprAdminBufferFree (pGlBlock);
}
else
{
DisplayError( g_hModule, rc);
}
return rc;
}