1 2 /* Determine if a C++ compiler is being used. If so, ensure that standard 3 C is used to process the API information. */ 4 5 #ifdef __cplusplus 6 7 /* Yes, C++ compiler is present. Use standard C. */ 8 extern "C" { 9 #endif 10 11 #include "small_mib_helper.h" 12 13 /* Define function prototypes. */ 14 15 UINT mib2_get_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data); 16 UINT mib2_getnext_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data); 17 UINT mib2_set_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data); 18 UINT mib2_username_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *username); 19 //UINT mib2_username_processing_public(NX_SNMP_AGENT *agent_ptr, UCHAR *username); 20 //UINT mib2_username_processing_admin(NX_SNMP_AGENT *agent_ptr, UCHAR *username); 21 //UINT mib2_username_processing_view(NX_SNMP_AGENT *agent_ptr, UCHAR *username); 22 //VOID mib2_variable_update(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr); 23 //VOID mib2_variable_update_public(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr); 24 //VOID mib2_variable_update_view(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr) ; 25 //VOID mib2_variable_update_admin(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr) ; 26 27 28 /* Define the MIB-2 "system" group. */ 29 30 UCHAR sysDescr[] = "NetX SNMP Agent"; /* sysDescr:OctetString RO */ 31 UCHAR sysObjectID[] = "1.3.6.1.2.1.1"; /* sysObjectID:ObjectID RO */ 32 ULONG sysUpTime = 0; /* sysUpTime:TimeTicks RO */ 33 UCHAR sysContact[128] = "NetX sysContact Name"; /* sysContact:OctetString RW */ 34 UCHAR sysName[128] = "NetX sysName"; /* sysName:OctetString RW */ 35 UCHAR sysLocation[128] = "NetX sysLocation"; /* sysLocation:OctetString RW */ 36 ULONG sysServices = 1; /* sysServices:Integer RW */ 37 38 ULONG ipForwarding = 0; /* ipForwarding:Integer RW */ 39 ULONG ipDefaultTTL = NX_IP_TIME_TO_LIVE; /* ipDefaultTTL:Integer RW */ 40 41 /* Define the MIB-2 "interfaces" group, assuming one interface. Update of these variables could be added to the 42 underlying application driver, but for now simple defaults are used. */ 43 ULONG ifLastChange = 2048; /* ifLastChange:TimeTicks RO */ 44 ULONG ifInOctets = 155; /* ifInOctets:Counter RO */ 45 ULONG64 ifInUcastPkts = 0; /* ifInUcastPkts:Counter RO */ 46 47 UCHAR ifDescr[] = "NetX Physical Interface"; /* ifDescr:OctetString RO */ 48 #if 0 49 ULONG ifNumber = 1; /* ifNumber:Integer RO */ 50 ULONG ifIndex = 1; /* ifIndex:Integer RO */ 51 ULONG ifType = 1; /* ifType:Integer RO */ 52 ULONG ifMtu = 2048; /* ifMTU:Integer RO */ 53 ULONG ifSpeed = 1000000; /* ifSpeed:Guage RO */ 54 UCHAR ifPhysAddress[] = {0x00,0x04,0xac,0xe3,0x1d,0xc5};/* ifPhysAddress:OctetString RO */ 55 ULONG ifAdminStatus = IFADMINSTATUS_UP; /* ifAdminStatus:Integer RW */ 56 ULONG ifOperStatus = 1; /* ifOperStatus:Integer RO */ 57 ULONG ifInNUcastPkts = 0; /* ifInNUcastPkts:Counter RO */ 58 ULONG ifInDiscards = 0; /* ifInDiscards:Counter RO */ 59 ULONG ifInErrors = 0; /* ifInErrors:Counter RO */ 60 ULONG ifInUnknownProtos = 0; /* ifInUnknownProtos:Counter RO */ 61 ULONG ifOutOctets = 0; /* ifOutOctets:Counter RO */ 62 ULONG ifOutUcastPkts = 0; /* ifOutUcastPkts:Counter RO */ 63 ULONG ifOutNUcastPkts = 0; /* ifOutNUcastPkts:Counter RO */ 64 ULONG ifOutDiscards = 0; /* ifOutDiscards:Counter RO */ 65 ULONG ifOutErrors = 0; /* ifOutErrors:Counter RO */ 66 ULONG ifOutQLen = 0; /* ifOutQLen:Guage RO */ 67 UCHAR ifSpecific[] = "1.3.6.1.2.1.1"; /* ifSpecific:ObjectID RO */ 68 #endif 69 /* Define the MIB-2 "address translation" group, assuming one address translation. */ 70 71 //ULONG atIfIndex = 1; /* atIfIndex:Integer RW */ 72 UCHAR atPhysAddress[] = {0x00,0x04,0xac,0xe3,0x1d,0xc5};/* atPhysAddress:OctetString RW */ 73 ULONG atNetworkAddress = 0; /* atNetworkAddress:NetworkAddr RW */ 74 UCHAR atIPv6NetworkAddress[16]; /* atNetworkAddress:NetworkAddr IPv6 RW */ 75 76 77 /* Define the MIB-2 "ip" group. */ 78 //ULONG ipForwarding = 0; /* ipForwarding:Integer RW */ 79 ULONG oid_var = 1234U; 80 81 82 /* Define the actual MIB-2. */ 83 84 MIB_ENTRY mib2_mib[] = { 85 86 /* OBJECT ID OBJECT VARIABLE LENGTH OF OBJECT VARIABLE GET ROUTINE/ GET_OCTET_ROUTINE SET ROUTINE LENGTH */ 87 #if 1 88 {(UCHAR *) "1.3.6.1.2.1.1.1.0", sysDescr, nx_snmp_object_string_get, NX_NULL, nx_snmp_object_string_set, sizeof(sysDescr)}, 89 {(UCHAR *) "1.3.6.1.2.1.1.2.0", sysObjectID, nx_snmp_object_id_get, NX_NULL, NX_NULL, sizeof(sysObjectID)}, 90 {(UCHAR *) "1.3.6.1.2.1.1.3.0", &sysUpTime, nx_snmp_object_timetics_get, NX_NULL, NX_NULL, sizeof(sysUpTime)}, 91 {(UCHAR *) "1.3.6.1.2.1.1.4.0", sysContact, nx_snmp_object_string_get, NX_NULL, nx_snmp_object_string_set, sizeof(sysContact)}, 92 {(UCHAR *) "1.3.6.1.2.1.1.5.0", sysName, nx_snmp_object_string_get, NX_NULL, nx_snmp_object_string_set, sizeof(sysName)}, 93 {(UCHAR *) "1.3.6.1.2.1.1.6.0", sysLocation, nx_snmp_object_string_get, NX_NULL, nx_snmp_object_string_set, sizeof(sysLocation)}, 94 {(UCHAR *) "1.3.6.1.2.1.1.7.0", &sysServices, nx_snmp_object_integer_get, NX_NULL, NX_NULL, sizeof(sysServices)}, 95 #endif 96 {(UCHAR *) "1.3.6.1.2.1.3.1.1.3.0", &atNetworkAddress, nx_snmp_object_ip_address_get, NX_NULL, nx_snmp_object_ip_address_set, sizeof(atNetworkAddress)}, 97 #ifdef FEATURE_NX_IPV6 98 /* Either GET method should work. IPv6 addresses are handled as octet strings and accept any IPv6 address format e.g. addresses with '::'s are accepted as is. */ 99 {(UCHAR *) "1.3.6.1.2.1.3.1.1.3.1", &atIPv6NetworkAddress, nx_snmp_object_ipv6_address_get, NX_NULL, nx_snmp_object_ipv6_address_set, sizeof(atIPv6NetworkAddress)}, 100 {(UCHAR *) "1.3.6.1.2.1.3.1.1.3.2", &atIPv6NetworkAddress, NX_NULL, nx_snmp_object_octet_string_get, nx_snmp_object_octet_string_set, sizeof(atIPv6NetworkAddress)}, 101 #endif 102 103 {(UCHAR *) "1.3.6.1.2.1.2.2.1.2.0", ifDescr, nx_snmp_object_string_get, NX_NULL, NX_NULL, sizeof(ifDescr)}, 104 {(UCHAR *) "1.3.6.1.2.1.3.1.1.2.0", &atPhysAddress, NX_NULL, nx_snmp_object_octet_string_get, nx_snmp_object_octet_string_set, sizeof(atPhysAddress)}, 105 {(UCHAR *) "1.3.6.1.2.1.2.2.1.9.0", &ifLastChange, nx_snmp_object_timetics_get, NX_NULL, nx_snmp_object_timetics_set, sizeof(ifLastChange)}, 106 {(UCHAR *) "1.3.6.1.2.1.2.2.1.10.0", &ifInOctets, nx_snmp_object_counter_get, NX_NULL, nx_snmp_object_counter_set, sizeof(ifInOctets)}, 107 {(UCHAR *) "1.3.6.1.2.1.2.2.1.11.0", &ifInUcastPkts, nx_snmp_object_counter64_get, NX_NULL, nx_snmp_object_counter64_set, sizeof(ifInUcastPkts)}, 108 109 {(UCHAR *) "1.3.6.1.2.1.4.1.0", &ipForwarding, nx_snmp_object_integer_get, NX_NULL, nx_snmp_object_integer_set, sizeof(ipForwarding)}, 110 {(UCHAR *) "1.3.6.1.2.1.4.2.0", &ipDefaultTTL, nx_snmp_object_integer_get, NX_NULL, NX_NULL, sizeof(ipDefaultTTL)}, 111 {(UCHAR *) "1.3.6.1.4.1.51000.1.4.0", &oid_var, nx_snmp_object_integer_get, NX_NULL, NX_NULL, sizeof(oid_var)}, 112 113 {(UCHAR *) "1.3.6.1.7", (UCHAR *) "1.3.6.1.7", nx_snmp_object_end_of_mib, NX_NULL, NX_NULL, sizeof("1.3.6.1.7") - 1}, 114 {NX_NULL, NX_NULL, NX_NULL, NX_NULL, NX_NULL, 0} 115 116 }; 117