155 lines
4 KiB
C
155 lines
4 KiB
C
/*++ BUILD Version: 001 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
mib.h
|
|
|
|
Abstract:
|
|
|
|
Generic Macros and Functions for SNMP Extension Agent for
|
|
gathering statistics information for Internet Services on NT.
|
|
|
|
Author:
|
|
|
|
Murali R. Krishnan ( MuraliK ) 22-Feb-1995
|
|
|
|
Environment:
|
|
|
|
User Mode -- Win32
|
|
|
|
Project:
|
|
|
|
SMTP Server SNMP MIB DLL
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
# ifndef _MIB_H_
|
|
# define _MIB_H_
|
|
|
|
#include <windows.h>
|
|
#include <snmp.h>
|
|
#include <lm.h>
|
|
#include <inetinfo.h>
|
|
|
|
//
|
|
// MIB function actions.
|
|
//
|
|
|
|
#define MIB_GET ( ASN_RFC1157_GETREQUEST)
|
|
#define MIB_SET ( ASN_RFC1157_SETREQUEST)
|
|
#define MIB_GETNEXT ( ASN_RFC1157_GETNEXTREQUEST)
|
|
#define MIB_GETFIRST ( ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0 )
|
|
|
|
|
|
//
|
|
// MIB Variable access privileges.
|
|
//
|
|
|
|
#define MIB_ACCESS_READ 0
|
|
#define MIB_ACCESS_WRITE 1
|
|
#define MIB_ACCESS_READWRITE 2
|
|
#define MIB_NOACCESS 3
|
|
|
|
|
|
typedef UINT ( * LPMIBFUNC)(
|
|
RFC1157VarBind * pRfcVarBind,
|
|
UINT Action,
|
|
struct _MIB_ENTRY * pMibeCurrent,
|
|
struct _MIB_ENTRIES* pMibEntries,
|
|
LPVOID pStatistics
|
|
);
|
|
|
|
|
|
typedef struct _MIB_ENTRY {
|
|
|
|
AsnObjectIdentifier asnOid; // OID for mib variable
|
|
LONG lFieldOffset; // filed offset
|
|
UINT uiAccess; // type of accesss( R, W, R/W, None)
|
|
LPMIBFUNC pMibFunc; // ptr to function managing this var.
|
|
BYTE bType; // Type( integer, counter, gauage).
|
|
|
|
} MIB_ENTRY, FAR * LPMIB_ENTRY;
|
|
|
|
|
|
typedef struct _MIB_ENTRIES {
|
|
|
|
AsnObjectIdentifier * pOidPrefix; // Oid with prefix for MIB ENTRIES
|
|
int cMibEntries; // count of MIB_ENTRIES in the array
|
|
LPMIB_ENTRY prgMibEntry; // ptr to array of MIB_ENTRIES
|
|
|
|
} MIB_ENTRIES, FAR * LPMIB_ENTRIES;
|
|
|
|
//
|
|
// GET_OID_LENGTH( oid) gets the length of the oid.
|
|
//
|
|
|
|
# define GET_OID_LENGTH( oid) ((oid).idLength)
|
|
|
|
//
|
|
// Macro to determine number of sub-oid's in an array of UINTs.
|
|
//
|
|
|
|
#define OID_SIZEOF( uiArray ) ( sizeof( uiArray) / sizeof(UINT) )
|
|
|
|
//
|
|
// OID_FROM_UINT_ARRAY(): Macro to define OID from an Array of UINTs
|
|
//
|
|
# define OID_FROM_UINT_ARRAY( uiArray) { OID_SIZEOF( uiArray), uiArray }
|
|
|
|
|
|
//
|
|
// Macros for creating MIB Entries ( as specified in struct _MIB_ENTRY above)
|
|
// MIB_ENTRY_HEADER: creates a generic MIB_ENTRY for a MIB group header.
|
|
// MIB_ENTRY_ITEM: creates a generic MIB_ENTRY for a MIB variable.
|
|
// MIB_COUNTER: creates a counter type MIB_ENTRY
|
|
// MIB_INTEGER: creates an integer type MIB_ENTRY
|
|
//
|
|
|
|
# define MIB_ENTRY_HEADER( oid) \
|
|
{ oid, \
|
|
-1, \
|
|
MIB_NOACCESS, \
|
|
NULL, \
|
|
ASN_RFC1155_OPAQUE, \
|
|
}
|
|
|
|
# define MIB_ENTRY_ITEM( oid, offset, access, type, func) \
|
|
{ oid, \
|
|
offset, \
|
|
access, \
|
|
( func), \
|
|
( type), \
|
|
}
|
|
|
|
# define MIB_COUNTER( oid, field, func) \
|
|
MIB_ENTRY_ITEM( oid, field, MIB_ACCESS_READ, ASN_RFC1155_COUNTER, func)
|
|
|
|
# define MIB_INTEGER( oid, field, func) \
|
|
MIB_ENTRY_ITEM( oid, field, MIB_ACCESS_READ, ASN_INTEGER, func)
|
|
|
|
UINT
|
|
ResolveVarBinding(
|
|
IN OUT RFC1157VarBind * pRfcVarBinding,
|
|
IN BYTE pduAction,
|
|
IN LPVOID pStatistics,
|
|
IN LPMIB_ENTRIES pMibEntries
|
|
);
|
|
|
|
|
|
UINT
|
|
MibStatisticsWorker(
|
|
IN OUT RFC1157VarBind * pRfcVarBinding,
|
|
IN UINT pduAction,
|
|
IN struct _MIB_ENTRY * pMibeCurrent,
|
|
IN struct _MIB_ENTRIES * pMibEntries,
|
|
IN LPVOID pStatistics
|
|
);
|
|
|
|
|
|
|
|
# endif // _MIB_H_
|