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