358 lines
7.9 KiB
C
358 lines
7.9 KiB
C
|
/*++
|
||
|
|
||
|
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;
|
||
|
}
|