/*++ Copyright (c) 1996 Microsoft Corporation Module Name: rtipxmib.h Abstract: Common include file for all IPX MIB instrumentations support by router Author: Vadim Eydelman (vadime) 30-May-1996 Revision History: --*/ #ifndef _SNMP_RTIPXMIB_ #define _SNMP_RTIPXMIB_ // Macros for converting MIB fields from SNMP master agent format // to router structures #define GetAsnInteger(srcBuf,defVal)\ (((srcBuf)->asnType) \ ? (srcBuf)->asnValue.number \ : defVal) #define SetAsnInteger(dstBuf,val) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_INTEGER); \ (dstBuf)->asnValue.number = (AsnInteger)(val); \ } #define ForceAsnInteger(dstBuf,val) { \ (dstBuf)->asnType = ASN_INTEGER; \ (dstBuf)->asnValue.number = (AsnInteger)(val); \ } #define GetAsnCounter(srcBuf,defVal)\ (((srcBuf)->asnType) \ ? (srcBuf)->asnValue.counter\ : defVal) #define SetAsnCounter(dstBuf,val) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_RFC1155_COUNTER); \ (dstBuf)->asnValue.counter = (AsnCounter)(val); \ } #define ForceAsnCounter(dstBuf,val) { \ (dstBuf)->asnType = ASN_RFC1155_COUNTER; \ (dstBuf)->asnValue.counter = (AsnCounter)(val); \ } #define GetAsnServType(srcBuf,defVal) \ (USHORT)(((srcBuf)->asnType) \ ? ((((srcBuf)->asnValue.string.length>0) \ ? (srcBuf)->asnValue.string.stream[1] \ : 0) \ + (((srcBuf)->asnValue.string.length>1) \ ? (((srcBuf)->asnValue.string.stream[0])<<8)\ : 0)) \ : defVal) #define SetAsnServType(dstBuf,buffer,val) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_OCTETSTRING); \ (dstBuf)->asnValue.string.length = 2; \ (buffer)[1] = (BYTE)(val&0xFF); \ (buffer)[0] = (BYTE)((val>>8)&0xFF); \ (dstBuf)->asnValue.string.stream = (BYTE *)buffer; \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define ForceAsnServType(dstBuf,buffer,val) { \ (dstBuf)->asnType = ASN_OCTETSTRING; \ (dstBuf)->asnValue.string.length = 2; \ (buffer)[1] = (BYTE)(val&0xFF); \ (buffer)[0] = (BYTE)((val>>8)&0xFF); \ (dstBuf)->asnValue.string.stream = (BYTE *)buffer; \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define GetAsnMediaType(srcBuf,defVal) \ (USHORT)(((srcBuf)->asnType) \ ? ((((srcBuf)->asnValue.string.length>0) \ ? (srcBuf)->asnValue.string.stream[0] \ : 0) \ + (((srcBuf)->asnValue.string.length>1) \ ? (((srcBuf)->asnValue.string.stream[1])<<8)\ : 0)) \ : defVal) #define SetAsnMediaType(dstBuf,buffer,val) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_OCTETSTRING); \ (dstBuf)->asnValue.string.length = 2; \ (buffer)[0] = (BYTE)(val&0xFF); \ (buffer)[1] = (BYTE)((val>>8)&0xFF); \ (dstBuf)->asnValue.string.stream = (BYTE *)buffer; \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define ForceAsnMediaType(dstBuf,buffer,val) { \ (dstBuf)->asnType = ASN_OCTETSTRING; \ (dstBuf)->asnValue.string.length = 2; \ (buffer)[0] = (BYTE)(val&0xFF); \ (buffer)[1] = (BYTE)((val>>8)&0xFF); \ (dstBuf)->asnValue.string.stream = (BYTE *)buffer; \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define GetAsnOctetString(dst,srcBuf,maxlen,defVal) \ (((srcBuf)->asnType) \ ? (memset (&(dst)[(srcBuf)->asnValue.string.length],\ 0, maxlen-(srcBuf)->asnValue.string.length),\ memcpy (dst,(srcBuf)->asnValue.string.stream, \ (srcBuf)->asnValue.string.length)) \ : (defVal ? memcpy (dst, defVal, maxlen) : NULL)) #define SetAsnOctetString(dstBuf,buffer,src,len) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_OCTETSTRING); \ (dstBuf)->asnValue.string.length = len; \ (dstBuf)->asnValue.string.stream = (BYTE *)memcpy (buffer,src,len); \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define ForceAsnOctetString(dstBuf,buffer,src,len) { \ (dstBuf)->asnType = ASN_OCTETSTRING; \ (dstBuf)->asnValue.string.length = len; \ (dstBuf)->asnValue.string.stream = (BYTE *)memcpy (buffer,src,len); \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define GetAsnDispString(dst,srcBuf,defVal) \ (((srcBuf)->asnType) \ ? ((dst)[(srcBuf)->asnValue.string.length] = 0, \ strncpy (dst,(srcBuf)->asnValue.string.stream, \ (srcBuf)->asnValue.string.length)) \ : (defVal ? strcpy (dst,defVal) : ((dst)[0] = 0, NULL))) #define SetAsnDispString(dstBuf,buffer,src,len) \ if ((dstBuf)->asnType) { \ ASSERT((dstBuf)->asnType==ASN_RFC1213_DISPSTRING); \ (dstBuf)->asnValue.string.length = strlen(src); \ if ((dstBuf)->asnValue.string.length>len) \ (dstBuf)->asnValue.string.length = len; \ (dstBuf)->asnValue.string.stream = (BYTE *)strncpy (buffer,src, \ (dstBuf)->asnValue.string.length); \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define ForceAsnDispString(dstBuf,buffer,src,len) { \ (dstBuf)->asnType = ASN_RFC1213_DISPSTRING; \ (dstBuf)->asnValue.string.length = strlen(src); \ if ((dstBuf)->asnValue.string.length>len) \ (dstBuf)->asnValue.string.length = len; \ (dstBuf)->asnValue.string.stream = (BYTE *)strncpy (buffer,src, \ (dstBuf)->asnValue.string.length); \ (dstBuf)->asnValue.string.dynamic = FALSE; \ } #define FreeAsnString(buf) { \ if ((buf)->asnValue.string.dynamic) \ SNMP_free ((buf)->asnValue.string.stream); \ } // Constants shared by several MIB instrumetnations #define ZERO_INTERFACE_INDEX 0 #define INVALID_INTERFACE_INDEX 0xFFFFFFFF extern UCHAR ZERO_NET_NUM[4]; #define INVALID_NET_NUM ZERO_NET_NUM #define ZERO_SERVER_TYPE 0x0000 #define INVALID_SERVER_TYPE 0xFFFF extern UCHAR ZERO_SERVER_NAME[1]; #define INVALID_SERVER_NAME ZERO_SERVER_NAME #define MIPX_EXIST_STATE_NOACTION 0 #define MIPX_EXIST_STATE_DELETED 1 #define MIPX_EXIST_STATE_CREATED 2 #define NIPX_INVALID_SYS_INSTANCE 0xFFFFFFFF #define NIPX_DEFAULT_SYS_INSTANCE 0 #define NIPX_STATE_NOACTION 0 #define NIPX_STATE_OFF 1 #define NIPX_STATE_ON 2 #define NIPX_CIRCTYPE_OTHER 1 #define NIPX_CIRCTYPE_BCAST 2 #define NIPX_CIRCTYPE_PTTOPT 3 #define NIPX_CIRCTYPE_WANRIP 4 #define NIPX_CIRCTYPE_UNNUMBEREDRIP 5 #define NIPX_CIRCTYPE_DYNAMIC 6 #define NIPX_CIRCTYPE_WANWS 7 #define NIPX_STATIC_STATUS_UNKNOWN 1 #define NIPX_STATIC_STATUS_CURRENT 2 #define NIPX_STATIC_STATUS_CHANGED 3 #define NIPX_STATIC_STATUS_READ 4 #define NIPX_STATIC_STATUS_READING 5 #define NIPX_STATIC_STATUS_WRITE 6 #define NIPX_STATIC_STATUS_WRITING 7 extern MIB_SERVER_HANDLE g_MibServerHandle; DWORD ConnectToRouter ( VOID ); BOOL EnsureRouterConnection(); #endif