mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
422 lines
17 KiB
422 lines
17 KiB
/*++
|
|
|
|
Copyright (c) 1991-1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
DispSrv.c
|
|
|
|
Abstract:
|
|
|
|
This module contains a routine to do a formatted dump of a server info
|
|
structure.
|
|
|
|
Author:
|
|
|
|
John Rogers (JohnRo) 13-Jun-1991
|
|
|
|
Environment:
|
|
|
|
Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
|
|
Requires ANSI C extensions: slash-slash comments, long external names.
|
|
|
|
Revision History:
|
|
|
|
13-Jun-1991 JohnRo
|
|
Extracted from RxTest code.
|
|
14-Jun-1991 JohnRo
|
|
Added support for info levels 0 and 3.
|
|
14-Jun-1991 JohnRo
|
|
Do formatted display of server type for all info levels.
|
|
Ditto for lanman version number.
|
|
19-Jun-1991 JohnRo
|
|
Changed sv102_disc to be signed, and changed SV_NODISC to be 32-bits.
|
|
Added svX_licenses support.
|
|
25-Jul-1991 JohnRo
|
|
Wksta debug support.
|
|
19-Aug-1991 JohnRo
|
|
PC-LINT found a portability problem.
|
|
30-Sep-1991 JohnRo
|
|
Work toward UNICODE.
|
|
26-Aug-1992 JohnRo
|
|
RAID 4463: NetServerGetInfo(level 3) to downlevel: assert in convert.c.
|
|
|
|
--*/
|
|
|
|
|
|
// These must be included first:
|
|
|
|
#include <windef.h> // IN, DWORD, etc.
|
|
#include <lmcons.h> // NET_API_STATUS.
|
|
|
|
// These may be included in any order:
|
|
|
|
#include <dlserver.h> // SERVER_INFO_1, etc.
|
|
#include <lmserver.h> // SERVER_INFO_100, SV_TYPE_ equates, etc.
|
|
#include <netdebug.h> // DBGSTATIC, NetpDbgDisplay routines.
|
|
#include <tstring.h> // STRCAT(), STRCPY().
|
|
|
|
#if DBG
|
|
|
|
DBGSTATIC VOID
|
|
NetpDbgDisplayDisconnectTime(
|
|
IN LONG DiscTime
|
|
)
|
|
{
|
|
NetpDbgDisplayTag( "Idle session time (min)" );
|
|
if (DiscTime == SV_NODISC) {
|
|
NetpKdPrint(("infinite\n" ));
|
|
} else {
|
|
NetpKdPrint((FORMAT_LONG "\n", DiscTime ));
|
|
}
|
|
} // NetpDbgDisplayDisconnectTime
|
|
|
|
|
|
DBGSTATIC VOID
|
|
NetpDbgDisplayLicenses(
|
|
IN DWORD MajorVersion,
|
|
IN DWORD Licenses
|
|
)
|
|
{
|
|
// BUGBUG: Eventually, use <srvver.h> stuff to handle unlimited and other
|
|
// types of licenses. This is indicated in MajorVersion.
|
|
UNREFERENCED_PARAMETER( MajorVersion );
|
|
|
|
NetpDbgDisplayDword( "Licenses (NOT users)", Licenses );
|
|
} // NetpDbgDisplayLicenses
|
|
|
|
|
|
DBGSTATIC VOID
|
|
NetpDbgDisplayServerType(
|
|
IN DWORD Type
|
|
)
|
|
{
|
|
// Longest name is "POTENTIAL_BROWSER" (17 chars)
|
|
TCHAR str[(17+2)*17]; // 17 chars per name, 2 spaces, for 17 names.
|
|
str[0] = '\0';
|
|
|
|
#define DO(name) \
|
|
if (Type & SV_TYPE_ ## name) { \
|
|
(void) STRCAT(str, (LPTSTR) TEXT(# name)); \
|
|
(void) STRCAT(str, (LPTSTR) TEXT(" ")); \
|
|
Type &= ~(SV_TYPE_ ## name); \
|
|
}
|
|
|
|
NetpAssert(Type != 0);
|
|
DO(WORKSTATION)
|
|
DO(SERVER)
|
|
DO(SQLSERVER)
|
|
DO(DOMAIN_CTRL)
|
|
DO(DOMAIN_BAKCTRL)
|
|
DO(TIME_SOURCE)
|
|
DO(AFP)
|
|
DO(NOVELL)
|
|
DO(DOMAIN_MEMBER)
|
|
DO(PRINTQ_SERVER)
|
|
DO(DIALIN_SERVER)
|
|
DO(XENIX_SERVER)
|
|
DO(NT)
|
|
DO(POTENTIAL_BROWSER)
|
|
DO(BACKUP_BROWSER)
|
|
DO(MASTER_BROWSER)
|
|
DO(DOMAIN_MASTER)
|
|
|
|
NetpDbgDisplayString("server type", str);
|
|
if (Type != 0) {
|
|
NetpDbgDisplayDwordHex( "UNEXPECTED TYPE BIT(S)", Type );
|
|
}
|
|
|
|
} // NetpDbgDisplayServerType
|
|
|
|
|
|
VOID
|
|
NetpDbgDisplayServerInfo(
|
|
IN DWORD Level,
|
|
IN LPVOID Info
|
|
)
|
|
{
|
|
NetpKdPrint(("server info (level " FORMAT_DWORD ") at "
|
|
FORMAT_LPVOID ":\n", Level, (LPVOID) Info));
|
|
NetpAssert(Info != NULL);
|
|
|
|
switch (Level) {
|
|
case 0 :
|
|
{
|
|
LPSERVER_INFO_0 psv0 = Info;
|
|
NetpDbgDisplayString("name", psv0->sv0_name);
|
|
}
|
|
break;
|
|
|
|
case 1 :
|
|
{
|
|
LPSERVER_INFO_1 psv1 = Info;
|
|
NetpDbgDisplayString("name", psv1->sv1_name);
|
|
NetpDbgDisplayLanManVersion(
|
|
psv1->sv1_version_major,
|
|
psv1->sv1_version_minor);
|
|
NetpDbgDisplayServerType( psv1->sv1_type );
|
|
NetpDbgDisplayString("comment", psv1->sv1_comment);
|
|
}
|
|
break;
|
|
|
|
case 2 :
|
|
{
|
|
LPSERVER_INFO_2 psv2 = Info;
|
|
NetpDbgDisplayString("name", psv2->sv2_name);
|
|
NetpDbgDisplayLanManVersion(
|
|
psv2->sv2_version_major,
|
|
psv2->sv2_version_minor);
|
|
NetpDbgDisplayServerType( psv2->sv2_type );
|
|
NetpDbgDisplayString("comment", psv2->sv2_comment);
|
|
NetpDbgDisplayTimestamp("ulist_mtime", psv2->sv2_ulist_mtime);
|
|
NetpDbgDisplayTimestamp("glist_mtime", psv2->sv2_glist_mtime);
|
|
NetpDbgDisplayTimestamp("alist_mtime", psv2->sv2_alist_mtime);
|
|
NetpDbgDisplayDword("users", psv2->sv2_users);
|
|
NetpDbgDisplayDisconnectTime( psv2->sv2_disc);
|
|
NetpDbgDisplayString("alerts", psv2->sv2_alerts);
|
|
NetpDbgDisplayDword("security", psv2->sv2_security);
|
|
NetpDbgDisplayDword("auditing", psv2->sv2_auditing);
|
|
NetpDbgDisplayDword("numadmin", psv2->sv2_numadmin);
|
|
NetpDbgDisplayDword("lanmask", psv2->sv2_lanmask);
|
|
NetpDbgDisplayDword("hidden", psv2->sv2_hidden);
|
|
NetpDbgDisplayDword("announce", psv2->sv2_announce);
|
|
NetpDbgDisplayDword("anndelta", psv2->sv2_anndelta);
|
|
NetpDbgDisplayString("guestacct", psv2->sv2_guestacct);
|
|
NetpDbgDisplayLicenses(
|
|
psv2->sv2_version_major,
|
|
psv2->sv2_licenses );
|
|
NetpDbgDisplayString("userpath", psv2->sv2_userpath);
|
|
NetpDbgDisplayDword("chdevs", psv2->sv2_chdevs);
|
|
NetpDbgDisplayDword("chdevq", psv2->sv2_chdevq);
|
|
NetpDbgDisplayDword("chdevjobs", psv2->sv2_chdevjobs);
|
|
NetpDbgDisplayDword("connections", psv2->sv2_connections);
|
|
NetpDbgDisplayDword("shares", psv2->sv2_shares);
|
|
NetpDbgDisplayDword("openfiles", psv2->sv2_openfiles);
|
|
NetpDbgDisplayDword("sessopens", psv2->sv2_sessopens);
|
|
NetpDbgDisplayDword("sessvcs", psv2->sv2_sessvcs);
|
|
NetpDbgDisplayDword("sessreqs", psv2->sv2_sessreqs);
|
|
NetpDbgDisplayDword("opensearch", psv2->sv2_opensearch);
|
|
NetpDbgDisplayDword("activelocks", psv2->sv2_activelocks);
|
|
NetpDbgDisplayDword("numreqbuf", psv2->sv2_numreqbuf);
|
|
NetpDbgDisplayDword("sizreqbuf", psv2->sv2_sizreqbuf);
|
|
NetpDbgDisplayDword("numbigbuf", psv2->sv2_numbigbuf);
|
|
NetpDbgDisplayDword("numfiletasks", psv2->sv2_numfiletasks);
|
|
NetpDbgDisplayDword("alertsched", psv2->sv2_alertsched);
|
|
NetpDbgDisplayDword("erroralert", psv2->sv2_erroralert);
|
|
NetpDbgDisplayDword("logonalert", psv2->sv2_logonalert);
|
|
NetpDbgDisplayDword("accessalert", psv2->sv2_accessalert);
|
|
NetpDbgDisplayDword("diskalert", psv2->sv2_diskalert);
|
|
NetpDbgDisplayDword("netioalert", psv2->sv2_netioalert);
|
|
NetpDbgDisplayDword("maxauditsz", psv2->sv2_maxauditsz);
|
|
NetpDbgDisplayString("srvheuristics", psv2->sv2_srvheuristics);
|
|
}
|
|
break;
|
|
|
|
case 3 :
|
|
{
|
|
LPSERVER_INFO_3 psv3 = Info;
|
|
NetpDbgDisplayString("name", psv3->sv3_name);
|
|
NetpDbgDisplayLanManVersion(
|
|
psv3->sv3_version_major,
|
|
psv3->sv3_version_minor);
|
|
NetpDbgDisplayServerType( psv3->sv3_type );
|
|
NetpDbgDisplayString("comment", psv3->sv3_comment);
|
|
NetpDbgDisplayTimestamp("ulist_mtime", psv3->sv3_ulist_mtime);
|
|
NetpDbgDisplayTimestamp("glist_mtime", psv3->sv3_glist_mtime);
|
|
NetpDbgDisplayTimestamp("alist_mtime", psv3->sv3_alist_mtime);
|
|
NetpDbgDisplayDword("users", psv3->sv3_users);
|
|
NetpDbgDisplayDisconnectTime( psv3->sv3_disc );
|
|
NetpDbgDisplayString("alerts", psv3->sv3_alerts);
|
|
NetpDbgDisplayDword("security", psv3->sv3_security);
|
|
NetpDbgDisplayDword("auditing", psv3->sv3_auditing);
|
|
NetpDbgDisplayDword("numadmin", psv3->sv3_numadmin);
|
|
NetpDbgDisplayDword("lanmask", psv3->sv3_lanmask);
|
|
NetpDbgDisplayDword("hidden", psv3->sv3_hidden);
|
|
NetpDbgDisplayDword("announce", psv3->sv3_announce);
|
|
NetpDbgDisplayDword("anndelta", psv3->sv3_anndelta);
|
|
NetpDbgDisplayString("guestacct", psv3->sv3_guestacct);
|
|
NetpDbgDisplayLicenses(
|
|
psv3->sv3_version_major,
|
|
psv3->sv3_licenses );
|
|
NetpDbgDisplayString("userpath", psv3->sv3_userpath);
|
|
NetpDbgDisplayDword("chdevs", psv3->sv3_chdevs);
|
|
NetpDbgDisplayDword("chdevq", psv3->sv3_chdevq);
|
|
NetpDbgDisplayDword("chdevjobs", psv3->sv3_chdevjobs);
|
|
NetpDbgDisplayDword("connections", psv3->sv3_connections);
|
|
NetpDbgDisplayDword("shares", psv3->sv3_shares);
|
|
NetpDbgDisplayDword("openfiles", psv3->sv3_openfiles);
|
|
NetpDbgDisplayDword("sessopens", psv3->sv3_sessopens);
|
|
NetpDbgDisplayDword("sessvcs", psv3->sv3_sessvcs);
|
|
NetpDbgDisplayDword("sessreqs", psv3->sv3_sessreqs);
|
|
NetpDbgDisplayDword("opensearch", psv3->sv3_opensearch);
|
|
NetpDbgDisplayDword("activelocks", psv3->sv3_activelocks);
|
|
NetpDbgDisplayDword("numreqbuf", psv3->sv3_numreqbuf);
|
|
NetpDbgDisplayDword("sizreqbuf", psv3->sv3_sizreqbuf);
|
|
NetpDbgDisplayDword("numbigbuf", psv3->sv3_numbigbuf);
|
|
NetpDbgDisplayDword("numfiletasks", psv3->sv3_numfiletasks);
|
|
NetpDbgDisplayDword("alertsched", psv3->sv3_alertsched);
|
|
NetpDbgDisplayDword("erroralert", psv3->sv3_erroralert);
|
|
NetpDbgDisplayDword("logonalert", psv3->sv3_logonalert);
|
|
NetpDbgDisplayDword("accessalert", psv3->sv3_accessalert);
|
|
NetpDbgDisplayDword("diskalert", psv3->sv3_diskalert);
|
|
NetpDbgDisplayDword("netioalert", psv3->sv3_netioalert);
|
|
NetpDbgDisplayDword("maxauditsz", psv3->sv3_maxauditsz);
|
|
NetpDbgDisplayString("srvheuristics", psv3->sv3_srvheuristics);
|
|
NetpDbgDisplayDword("auditedevents", psv3->sv3_auditedevents);
|
|
NetpDbgDisplayDword("autoprofile", psv3->sv3_autoprofile);
|
|
NetpDbgDisplayString("autopath", psv3->sv3_autopath);
|
|
}
|
|
break;
|
|
|
|
case 100 :
|
|
{
|
|
LPSERVER_INFO_100 psv100 = Info;
|
|
NetpDbgDisplayPlatformId( psv100->sv100_platform_id );
|
|
NetpDbgDisplayString("Server Name", psv100->sv100_name);
|
|
}
|
|
break;
|
|
|
|
case 101 :
|
|
{
|
|
LPSERVER_INFO_101 psv101 = Info;
|
|
NetpDbgDisplayPlatformId( psv101->sv101_platform_id );
|
|
NetpDbgDisplayString("Server Name", psv101->sv101_name);
|
|
NetpDbgDisplayLanManVersion(
|
|
psv101->sv101_version_major,
|
|
psv101->sv101_version_minor);
|
|
NetpDbgDisplayServerType( psv101->sv101_type );
|
|
NetpDbgDisplayString( "Server Comment", psv101->sv101_comment);
|
|
}
|
|
break;
|
|
|
|
case 102 :
|
|
{
|
|
LPSERVER_INFO_102 psv102 = Info;
|
|
NetpDbgDisplayPlatformId( psv102->sv102_platform_id );
|
|
NetpDbgDisplayString("Server Name", psv102->sv102_name);
|
|
NetpDbgDisplayLanManVersion(
|
|
psv102->sv102_version_major,
|
|
psv102->sv102_version_minor );
|
|
NetpDbgDisplayServerType( psv102->sv102_type );
|
|
NetpDbgDisplayString( "Server Comment", psv102->sv102_comment );
|
|
NetpDbgDisplayDword( "users", psv102->sv102_users );
|
|
NetpDbgDisplayBool( "Server hidden", psv102->sv102_hidden );
|
|
NetpDbgDisplayDword( "announce", psv102->sv102_announce );
|
|
NetpDbgDisplayDword( "announce delta", psv102->sv102_anndelta );
|
|
NetpDbgDisplayLicenses(
|
|
psv102->sv102_version_major,
|
|
psv102->sv102_licenses );
|
|
NetpDbgDisplayString( "user path", psv102->sv102_userpath );
|
|
}
|
|
break;
|
|
|
|
case 402 :
|
|
{
|
|
LPSERVER_INFO_402 psv402 = Info;
|
|
NetpDbgDisplayTimestamp("ulist mtime", psv402->sv402_ulist_mtime);
|
|
NetpDbgDisplayTimestamp("glist mtime", psv402->sv402_glist_mtime);
|
|
NetpDbgDisplayTimestamp("alist mtime", psv402->sv402_alist_mtime);
|
|
NetpDbgDisplayString("alerts", psv402->sv402_alerts);
|
|
NetpDbgDisplayDword("security", psv402->sv402_security);
|
|
NetpDbgDisplayDword("numadmin", psv402->sv402_numadmin);
|
|
NetpDbgDisplayDwordHex("lanmask", psv402->sv402_lanmask);
|
|
NetpDbgDisplayString("guestacct", psv402->sv402_guestacct);
|
|
NetpDbgDisplayDword("chdevs", psv402->sv402_chdevs);
|
|
NetpDbgDisplayDword("chdevq", psv402->sv402_chdevq);
|
|
NetpDbgDisplayDword("chdevjobs", psv402->sv402_chdevjobs);
|
|
NetpDbgDisplayDword("connections", psv402->sv402_connections);
|
|
NetpDbgDisplayDword("shares", psv402->sv402_shares);
|
|
NetpDbgDisplayDword("openfiles", psv402->sv402_openfiles);
|
|
NetpDbgDisplayDword("sessopens", psv402->sv402_sessopens);
|
|
NetpDbgDisplayDword("sessvcs", psv402->sv402_sessvcs);
|
|
NetpDbgDisplayDword("sessreqs", psv402->sv402_sessreqs);
|
|
NetpDbgDisplayDword("opensearch", psv402->sv402_opensearch);
|
|
NetpDbgDisplayDword("activelocks", psv402->sv402_activelocks);
|
|
NetpDbgDisplayDword("numreqbuf", psv402->sv402_numreqbuf);
|
|
NetpDbgDisplayDword("sizreqbuf", psv402->sv402_sizreqbuf);
|
|
NetpDbgDisplayDword("numbigbuf", psv402->sv402_numbigbuf);
|
|
NetpDbgDisplayDword("numfiletasks", psv402->sv402_numfiletasks);
|
|
NetpDbgDisplayDword("alertsched", psv402->sv402_alertsched);
|
|
NetpDbgDisplayDword("erroralert", psv402->sv402_erroralert);
|
|
NetpDbgDisplayDword("logonalert", psv402->sv402_logonalert);
|
|
NetpDbgDisplayDword("diskalert", psv402->sv402_diskalert);
|
|
NetpDbgDisplayDword("accessalert", psv402->sv402_accessalert);
|
|
NetpDbgDisplayDword("diskalert", psv402->sv402_diskalert);
|
|
NetpDbgDisplayDword("netioalert", psv402->sv402_netioalert);
|
|
NetpDbgDisplayDword("maxauditsz", psv402->sv402_maxauditsz);
|
|
NetpDbgDisplayString("srvheuristics", psv402->sv402_srvheuristics);
|
|
}
|
|
break;
|
|
|
|
case 403 :
|
|
{
|
|
LPSERVER_INFO_403 psv403 = Info;
|
|
NetpDbgDisplayTimestamp("ulist mtime", psv403->sv403_ulist_mtime);
|
|
NetpDbgDisplayTimestamp("glist mtime", psv403->sv403_glist_mtime);
|
|
NetpDbgDisplayTimestamp("alist mtime", psv403->sv403_alist_mtime);
|
|
NetpDbgDisplayString("alerts", psv403->sv403_alerts);
|
|
NetpDbgDisplayDword("security", psv403->sv403_security);
|
|
NetpDbgDisplayDword("numadmin", psv403->sv403_numadmin);
|
|
NetpDbgDisplayDwordHex("lanmask", psv403->sv403_lanmask);
|
|
NetpDbgDisplayString("guestacct", psv403->sv403_guestacct);
|
|
NetpDbgDisplayDword("chdevs", psv403->sv403_chdevs);
|
|
NetpDbgDisplayDword("chdevq", psv403->sv403_chdevq);
|
|
NetpDbgDisplayDword("chdevjobs", psv403->sv403_chdevjobs);
|
|
NetpDbgDisplayDword("connections", psv403->sv403_connections);
|
|
NetpDbgDisplayDword("shares", psv403->sv403_shares);
|
|
NetpDbgDisplayDword("openfiles", psv403->sv403_openfiles);
|
|
NetpDbgDisplayDword("sessopens", psv403->sv403_sessopens);
|
|
NetpDbgDisplayDword("sessvcs", psv403->sv403_sessvcs);
|
|
NetpDbgDisplayDword("sessreqs", psv403->sv403_sessreqs);
|
|
NetpDbgDisplayDword("opensearch", psv403->sv403_opensearch);
|
|
NetpDbgDisplayDword("activelocks", psv403->sv403_activelocks);
|
|
NetpDbgDisplayDword("numreqbuf", psv403->sv403_numreqbuf);
|
|
NetpDbgDisplayDword("sizreqbuf", psv403->sv403_sizreqbuf);
|
|
NetpDbgDisplayDword("numbigbuf", psv403->sv403_numbigbuf);
|
|
NetpDbgDisplayDword("numfiletasks", psv403->sv403_numfiletasks);
|
|
NetpDbgDisplayDword("alertsched", psv403->sv403_alertsched);
|
|
NetpDbgDisplayDword("erroralert", psv403->sv403_erroralert);
|
|
NetpDbgDisplayDword("logonalert", psv403->sv403_logonalert);
|
|
NetpDbgDisplayDword("diskalert", psv403->sv403_diskalert);
|
|
NetpDbgDisplayDword("accessalert", psv403->sv403_accessalert);
|
|
NetpDbgDisplayDword("diskalert", psv403->sv403_diskalert);
|
|
NetpDbgDisplayDword("netioalert", psv403->sv403_netioalert);
|
|
NetpDbgDisplayDword("maxauditsz", psv403->sv403_maxauditsz);
|
|
NetpDbgDisplayString("srvheuristics", psv403->sv403_srvheuristics);
|
|
NetpDbgDisplayDword("auditedevents", psv403->sv403_auditedevents);
|
|
NetpDbgDisplayDword("autoprofile", psv403->sv403_autoprofile);
|
|
NetpDbgDisplayString("autopath", psv403->sv403_autopath);
|
|
}
|
|
break;
|
|
|
|
// BUGBUG: RpcXlate doesn't need support for info levels 502, 503, 599.
|
|
// Feel free to add them here if you need them.
|
|
|
|
default :
|
|
NetpAssert(FALSE);
|
|
}
|
|
|
|
} // NetpDbgDisplayServerInfo
|
|
|
|
#else
|
|
|
|
//
|
|
// This routine is exported from netapi32.dll. We want it to still
|
|
// be there in the free build, so checked binaries will run on a free
|
|
// build. The following undef is to get rid of the macro that causes
|
|
// it to not be called in free builds.
|
|
//
|
|
|
|
#undef NetpDbgDisplayServerInfo
|
|
|
|
VOID
|
|
NetpDbgDisplayServerInfo(
|
|
IN DWORD Level,
|
|
IN LPVOID Info
|
|
)
|
|
{
|
|
|
|
return;
|
|
}
|
|
|
|
#endif
|