/*++ Copyright (c) 1992-1996 Microsoft Corporation Module Name: snmptst8.c Abstract: Contains driver that calls the main program for testing MIB compiler. Environment: User Mode - Win32 Revision History: 10-May-1996 DonRyan Removed banner from Technology Dynamics, Inc. --*/ //--------------------------- WINDOWS DEPENDENCIES -------------------------- #include //--------------------------- STANDARD DEPENDENCIES -- #include ---- #include #include #include #include //--------------------------- MODULE DEPENDENCIES -- #include"xxxxx.h" ------ #include "mgmtapi.h" //--------------------------- SELF-DEPENDENCY -- ONE #include"module.h" ----- //--------------------------- PUBLIC VARIABLES --(same as in module.h file)-- //--------------------------- PRIVATE CONSTANTS ----------------------------- #define OID_SIZEOF(x) (sizeof x / sizeof(UINT)) //--------------------------- PRIVATE STRUCTS ------------------------------- //--------------------------- PRIVATE VARIABLES ----------------------------- //--------------------------- PRIVATE PROTOTYPES ---------------------------- //--------------------------- PRIVATE PROCEDURES ---------------------------- //--------------------------- PUBLIC PROCEDURES ----------------------------- // the actual compiler is in the mgmtapi.dll. this routine is necessary // due to the structure of the nt build environment. void _CRTAPI1 main() { printf( "\n --\n" ); printf( " -- NUMERIC to TEXT conversions\n" ); printf( " --\n" ); printf( "\nOID with MIB-II prefix only\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nOID with MIB-II prefix\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 1, 7 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nOID with MIB-II prefix + 1 leaf\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 0 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nReference to LM MIB 2 service table, svSvcInstalledState\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 1, 2, 3, 1, 2 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nReference to LM MIB 2 session table, svSessClientName, instance\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 1, 2, 20, 1, 1, 23, 123, 12 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nReference to MIB-II interfaces table, ifDescr, instance\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 2, 12, 13, 14, 15 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nOID containing embedded zero. It is an error in SNMP, but\n" ); printf( " is not the concern of conversions\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 2, 0, 2, 12, 13, 14, 15 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nReference deep into MIB-II\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 11, 30 }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\nReference into LM Alert MIB 2\n" ); { UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 2, 3, 2, 1, 4, 'T', 'O', 'D', 'D' }; AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; LPSTR String; printf( "\n Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); if ( SNMPAPI_ERROR == SnmpMgrOidToStr(&Oid, &String) ) { printf( " String: Error\n" ); } else { printf( " String: %s\n", String ); } SnmpUtilMemFree( String ); } printf( "\n --\n" ); printf( " -- TEXT to NUMERIC conversions\n" ); printf( " --\n" ); printf( "\nReference to 1.3.6.1.2.1.1.7\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = ".iso.org.dod.internet.mgmt.mib-2.system.sysServices"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.7, without mib-2 prefix\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "system.sysServices"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.7, without mib-2 prefix\n" ); printf( " and SYSTEM is referenced by number\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "1.sysServices"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.7, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = ".1.3.6.1.2.1.1.7"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.7, w/o prefix, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "1.7"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.7, with prefix, mixed\n" ); printf( " The leading '.' is missing. Should be an error\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "1.3.6.1.2.1.system.sysServices"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1, w/o prefix, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "1"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to 1.3.6.1.2.1.1.3, w/o prefix, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = "1.3"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to .1, with prefix, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = ".1"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } printf( "\nReference to .1.3, with prefix, only numbers\n" ); { AsnObjectIdentifier Oid = { 0, NULL }; LPSTR String = ".1.3"; printf( "\n String: %s\n", String ); if ( SNMPAPI_ERROR == SnmpMgrStrToOid(String, &Oid) ) { printf( " Oid : Error\n" ); } else { printf( " Oid : " ); SnmpUtilPrintOid( &Oid ); putchar( '\n' ); SnmpUtilOidFree( &Oid ); } } // // // // // Time trials // // // { #define MAX_ITERATIONS 100 #define NUM_OIDTOSTR 9 #define NUM_STRTOOID 6 DWORD Start, End; UINT I; printf( "\n --\n" ); printf( " -- Conversion Timing Test. Please wait...\n" ); printf( " --\n" ); // Get start time Start = GetCurrentTime(); for ( I=0;I < MAX_ITERATIONS;I++ ) { { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 1, 7 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 0 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 1, 2, 3, 1, 2 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 1, 2, 20, 1, 1, 23, 123, 12 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 2, 12, 13, 14, 15 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 2, 2, 0, 2, 12, 13, 14, 15 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 2, 1, 11, 30 }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static UINT SubIds[] = { 1, 3, 6, 1, 4, 1, 77, 2, 3, 2, 1, 4, 'T', 'O', 'D', 'D' }; static AsnObjectIdentifier Oid = { OID_SIZEOF(SubIds), SubIds }; static LPSTR String; SnmpMgrOidToStr( &Oid, &String ); SnmpUtilMemFree( String ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = ".iso.org.dod.internet.mgmt.mib-2.system.sysServices"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = "system.sysServices"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = "1.sysServices"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = ".1.3.6.1.2.1.1.7"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = "1.7"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } { static AsnObjectIdentifier Oid = { 0, NULL }; static LPSTR String = "1.3.6.1.2.1.system.sysServices"; SnmpMgrStrToOid( String, &Oid ); SnmpUtilOidFree( &Oid ); } } // for End = GetCurrentTime(); printf( "\n\nStart Time: %ul\n", Start ); printf( "End Time : %ul\n", End ); printf( "\nIterations : %u\n", MAX_ITERATIONS ); printf( "OID -> TEXT : %u\n", NUM_OIDTOSTR ); printf( "TEXT -> OID : %u\n", NUM_STRTOOID ); printf( "Total conversions: %u\n", MAX_ITERATIONS * (NUM_OIDTOSTR+NUM_STRTOOID) ); printf( "\n (Units in milliseconds)\n" ); printf( "\nDifference: %ul\n", End - Start ); printf( "Avg conversion : %ul\n", (End-Start)/MAX_ITERATIONS/(NUM_OIDTOSTR+NUM_STRTOOID) ); } // block } //-------------------------------- END --------------------------------------