📄 asn1.h
字号:
#ifndef _ASN1#define _ASN1#ifdef WIN32#ifndef __unix#include <winsock.h>#endif#endif#include "snmp_pp.h"#ifndef EIGHTBIT_SUBIDStypedef unsigned long oid;#define MAX_SUBID 0xFFFFFFFF#elsetypedef unsigned char oid;#define MAX_SUBID 0xFF#endif#define MAX_OID_LEN 128 /* max subid's in an oid */// asn.1 values#define ASN_BOOLEAN (0x01)#define ASN_INTEGER (0x02)#define ASN_BIT_STR (0x03)#define ASN_OCTET_STR (0x04)#define ASN_NULL (0x05)#define ASN_OBJECT_ID (0x06)#define ASN_SEQUENCE (0x10)#define ASN_SET (0x11)#define ASN_UNIVERSAL (0x00)#define ASN_APPLICATION (0x40)#define ASN_CONTEXT (0x80)#define ASN_PRIVATE (0xC0)#define ASN_PRIMITIVE (0x00)#define ASN_CONSTRUCTOR (0x20)#define ASN_LONG_LEN (0x80)#define ASN_EXTENSION_ID (0x1F)#define ASN_BIT8 (0x80)#define IS_CONSTRUCTOR(byte) ((byte) & ASN_CONSTRUCTOR)#define IS_EXTENSION_ID(byte) (((byte) & ASN_EXTENSION_ID) == ASN_EXTENSION_ID)#ifdef _DEBUG#include <stdio.h>#define ASNERROR( string) printf( string )#else#define ASNERROR( string)#endif#define MAX_NAME_LEN 128 #define SNMP_VERSION_1 0#define SNMP_VERSION_2C 1#define SNMP_VERSION_2STERN 2#define SNMP_VERSION_3 3// defined types (from the SMI, RFC 1065) #define SMI_IPADDRESS (ASN_APPLICATION | 0)#define SMI_COUNTER (ASN_APPLICATION | 1)#define SMI_GAUGE (ASN_APPLICATION | 2)#define SMI_TIMETICKS (ASN_APPLICATION | 3)#define SMI_OPAQUE (ASN_APPLICATION | 4)#define SMI_NSAP (ASN_APPLICATION | 5)#define SMI_COUNTER64 (ASN_APPLICATION | 6)#define SMI_UINTEGER (ASN_APPLICATION | 7)#define GET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)#define GETNEXT_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)#define GET_RSP_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)#define SET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)#define TRP_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4)#define GETBULK_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)#define INFORM_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)#define TRP2_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)#define REPORT_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8)#define SNMP_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x0)#define SNMP_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x1)#define SNMP_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x2)#define SNMP_MSG_LENGTH 1500typedef struct sockaddr_in ipaddr;// pdustruct snmp_pdu { int command; // pdu type unsigned long reqid; // Request id #ifdef _SNMPv3 unsigned long msgid;#endif unsigned long errstat; // Error status unsigned long errindex; // Error index // Trap information oid *enterprise; // System OID int enterprise_length; ipaddr agent_addr; // address of object generating trap int trap_type; // trap type int specific_type; // specific type unsigned long time; // Uptime // vb list struct variable_list *variables;};// vb liststruct variable_list { struct variable_list *next_variable; // NULL for last variable oid *name; // Object identifier of variable int name_length; // number of subid's in name unsigned char type; // ASN type of variable union { // value of variable long *integer; unsigned char *string; oid *objid; unsigned char *bitstring; struct counter64 *counter64; } val; int val_len;};// prototypes for encoding routinesunsigned char * asn_parse_int( unsigned char *data, int *datalength, unsigned char *type, long int *intp, int intsize);unsigned char * asn_parse_unsigned_int( unsigned char *data, int *datalength, unsigned char *type, unsigned long *intp, int intsize);unsigned char * asn_build_int( unsigned char *data, int *datalength, unsigned char type, long *intp, int intsize);unsigned char * asn_build_unsigned_int( unsigned char *data, int *datalength, unsigned char type, unsigned long *intp, int intsize);unsigned char * asn_parse_string( unsigned char *data, int *datalength, unsigned char *type, unsigned char *string, int *strlength);unsigned char * asn_build_string( unsigned char *data, int *datalength, unsigned char type, unsigned char *string, int strlength);unsigned char *asn_parse_header( unsigned char *data, int *datalength, unsigned char *type);unsigned char * asn_build_header( unsigned char *data, int *datalength, unsigned char type, int length);unsigned char * asn_build_sequence( unsigned char *data, int *datalength, unsigned char type, int length);unsigned char * asn_parse_length( unsigned char *data, unsigned long *length);unsigned char *asn_build_length( unsigned char *data, int *datalength, int length);unsigned char *asn_parse_objid( unsigned char *data, int *datalength, unsigned char *type, oid *objid, int *objidlength);unsigned char *asn_build_objid( unsigned char *data, int *datalength, unsigned char type, oid *objid, int objidlength);unsigned char *asn_parse_null(unsigned char *data, int *datalength, unsigned char *type);unsigned char *asn_build_null( unsigned char *data, int *datalength, unsigned char type);unsigned char *asn_parse_bitstring( unsigned char *data, int *datalength, unsigned char *type, unsigned char *string, int *strlength);unsigned char *asn_build_bitstring( unsigned char *data, int *datalength, unsigned char type, unsigned char *string, int strlength);unsigned char * asn_parse_unsigned_int64( unsigned char *data, int *datalength, unsigned char *type, struct counter64 *cp, int countersize);unsigned char * asn_build_unsigned_int64( unsigned char *data, int *datalength, unsigned char type, struct counter64 *cp, int countersize);struct counter64 { unsigned long high; unsigned long low;};struct snmp_pdu * snmp_pdu_create( int command);void snmp_free_pdu( struct snmp_pdu *pdu);int snmp_build( struct snmp_pdu *pdu, unsigned char *packet, int *out_length, long version, unsigned char* community, int community_len);void snmp_add_var(struct snmp_pdu *pdu, oid *name, int name_length, SmiVALUE *smival);int snmp_parse( struct snmp_pdu *pdu, unsigned char *data, unsigned char *community_name, unsigned long &community_len, snmp_version &version, int length);unsigned char * snmp_build_var_op(unsigned char *data, oid * var_name, int *var_name_len, unsigned char var_val_type, int var_val_len, unsigned char *var_val, int *listlength);unsigned char * snmp_parse_var_op( unsigned char *data, oid *var_name, int *var_name_len, unsigned char *var_val_type, int *var_val_len, unsigned char **var_val, int *listlength);#endif // _ASN1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -