summaryrefslogtreecommitdiff
path: root/test/regression/snmp_test/small_mib_helper.c
blob: 0bd84ccfb0cc1400d91af2d12973bdee574ceff1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/***************************************************************************/
/* Copyright (c) 2024 Microsoft Corporation                                */
/* Copyright (c) 2026 Eclipse ThreadX contributors                         */
/*                                                                         */
/* This program and the accompanying materials are made available under    */
/* the terms of the MIT License which is available at                      */
/* https://opensource.org/licenses/MIT.                                    */
/*                                                                         */
/* SPDX-License-Identifier: MIT                                            */
/***************************************************************************/


/* Determine if a C++ compiler is being used.  If so, ensure that standard
   C is used to process the API information.  */

#ifdef   __cplusplus

/* Yes, C++ compiler is present.  Use standard C.  */
extern   "C" {
#endif

#include "small_mib_helper.h"

/* Define function prototypes. */

UINT    mib2_get_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data);
UINT    mib2_getnext_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data);
UINT    mib2_set_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data);
UINT    mib2_username_processing(NX_SNMP_AGENT *agent_ptr, UCHAR *username);
//UINT    mib2_username_processing_public(NX_SNMP_AGENT *agent_ptr, UCHAR *username);
//UINT    mib2_username_processing_admin(NX_SNMP_AGENT *agent_ptr, UCHAR *username);
//UINT    mib2_username_processing_view(NX_SNMP_AGENT *agent_ptr, UCHAR *username);
//VOID    mib2_variable_update(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr);
//VOID    mib2_variable_update_public(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr);
//VOID    mib2_variable_update_view(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr) ;
//VOID    mib2_variable_update_admin(NX_IP *ip_ptr, NX_SNMP_AGENT *agent_ptr) ;


/* Define the MIB-2 "system" group.  */

UCHAR   sysDescr[] =                "NetX SNMP Agent";              /* sysDescr:OctetString                 RO */
UCHAR   sysObjectID[] =             "1.3.6.1.2.1.1";                /* sysObjectID:ObjectID                 RO */
ULONG   sysUpTime =                  0;                             /* sysUpTime:TimeTicks                  RO */
UCHAR   sysContact[128] =           "NetX sysContact Name";         /* sysContact:OctetString               RW */
UCHAR   sysName[128] =              "NetX sysName";                 /* sysName:OctetString                  RW */
UCHAR   sysLocation[128] =          "NetX sysLocation";             /* sysLocation:OctetString              RW */
ULONG   sysServices =               1;                              /* sysServices:Integer                  RW */

ULONG   ipForwarding =              0;                              /* ipForwarding:Integer                 RW */ 
ULONG   ipDefaultTTL =              NX_IP_TIME_TO_LIVE;             /* ipDefaultTTL:Integer                 RW */ 

/* Define the MIB-2 "interfaces" group, assuming one interface. Update of these variables could be added to the
   underlying application driver, but for now simple defaults are used.  */     
ULONG   ifLastChange =              2048;                           /* ifLastChange:TimeTicks               RO */ 
ULONG   ifInOctets =                155;                            /* ifInOctets:Counter                   RO */ 
ULONG64 ifInUcastPkts =             0;                              /* ifInUcastPkts:Counter                RO */ 

UCHAR   ifDescr[] =                 "NetX Physical Interface";      /* ifDescr:OctetString                  RO */ 
#if 0
ULONG   ifNumber =                  1;                              /* ifNumber:Integer                     RO */
ULONG   ifIndex =                   1;                              /* ifIndex:Integer                      RO */ 
ULONG   ifType =                    1;                              /* ifType:Integer                       RO */ 
ULONG   ifMtu =                     2048;                           /* ifMTU:Integer                        RO */ 
ULONG   ifSpeed =                   1000000;                        /* ifSpeed:Guage                        RO */ 
UCHAR   ifPhysAddress[] =           {0x00,0x04,0xac,0xe3,0x1d,0xc5};/* ifPhysAddress:OctetString            RO */ 
ULONG   ifAdminStatus =             IFADMINSTATUS_UP;               /* ifAdminStatus:Integer                RW */ 
ULONG   ifOperStatus =              1;                              /* ifOperStatus:Integer                 RO */ 
ULONG   ifInNUcastPkts =            0;                              /* ifInNUcastPkts:Counter               RO */ 
ULONG   ifInDiscards =              0;                              /* ifInDiscards:Counter                 RO */ 
ULONG   ifInErrors =                0;                              /* ifInErrors:Counter                   RO */ 
ULONG   ifInUnknownProtos =         0;                              /* ifInUnknownProtos:Counter            RO */ 
ULONG   ifOutOctets =               0;                              /* ifOutOctets:Counter                  RO */ 
ULONG   ifOutUcastPkts =            0;                              /* ifOutUcastPkts:Counter               RO */ 
ULONG   ifOutNUcastPkts =           0;                              /* ifOutNUcastPkts:Counter              RO */ 
ULONG   ifOutDiscards =             0;                              /* ifOutDiscards:Counter                RO */ 
ULONG   ifOutErrors =               0;                              /* ifOutErrors:Counter                  RO */ 
ULONG   ifOutQLen =                 0;                              /* ifOutQLen:Guage                      RO */ 
UCHAR   ifSpecific[] =              "1.3.6.1.2.1.1";                /* ifSpecific:ObjectID                  RO */ 
#endif
/* Define the MIB-2 "address translation" group, assuming one address translation.  */

//ULONG   atIfIndex =                 1;                              /* atIfIndex:Integer                    RW */
UCHAR   atPhysAddress[] =           {0x00,0x04,0xac,0xe3,0x1d,0xc5};/* atPhysAddress:OctetString            RW */ 
ULONG   atNetworkAddress =          0;                              /* atNetworkAddress:NetworkAddr         RW */ 
UCHAR   atIPv6NetworkAddress[16];                                   /* atNetworkAddress:NetworkAddr IPv6    RW */ 


/* Define the MIB-2 "ip" group.  */
//ULONG   ipForwarding =              0;                              /* ipForwarding:Integer                 RW */
ULONG   oid_var = 1234U;


/* Define the actual MIB-2.  */

MIB_ENTRY   mib2_mib[] = {

    /*    OBJECT ID                OBJECT VARIABLE                  LENGTH OF OBJECT VARIABLE        GET ROUTINE/ GET_OCTET_ROUTINE            SET ROUTINE      LENGTH */
#if 1
    {(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)},
    {(UCHAR *) "1.3.6.1.2.1.1.2.0",       sysObjectID,                nx_snmp_object_id_get, NX_NULL,          NX_NULL, sizeof(sysObjectID)},
    {(UCHAR *) "1.3.6.1.2.1.1.3.0",       &sysUpTime,                 nx_snmp_object_timetics_get, NX_NULL,    NX_NULL, sizeof(sysUpTime)},
    {(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)},
    {(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)},
    {(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)},
    {(UCHAR *) "1.3.6.1.2.1.1.7.0",       &sysServices,               nx_snmp_object_integer_get, NX_NULL,     NX_NULL,  sizeof(sysServices)},
#endif
    {(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)},
#ifdef FEATURE_NX_IPV6
     /* 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. */
    {(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)},
    {(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)},
#endif

    {(UCHAR *) "1.3.6.1.2.1.2.2.1.2.0",   ifDescr,                    nx_snmp_object_string_get, NX_NULL,      NX_NULL,  sizeof(ifDescr)},
    {(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)},
    {(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)},
    {(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)},
    {(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)},
    
    {(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)},
    {(UCHAR *) "1.3.6.1.2.1.4.2.0",       &ipDefaultTTL,              nx_snmp_object_integer_get, NX_NULL,     NX_NULL,  sizeof(ipDefaultTTL)},
    {(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)},

    {(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},
    {NX_NULL, NX_NULL, NX_NULL, NX_NULL, NX_NULL, 0}

};