NetBurner 3.5.7
PDF Version
snmp.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
10#ifndef _NB_SNMP_H
11#define _NB_SNMP_H
12
13#ifdef ENABLE_SNMP
14#define SNMP
15
16struct SNMP_Request; /* Forward declaration */
17#include <snmp/asn1.h>
18#include <snmp/mibII_vars.h>
19#include <snmp/snmp_table.h>
20#include <config_obj.h>
21#include <servlets.h>
22
23
119#define SNMPCOUNTIF(x,i) {InterfaceBlock * pif=GetInterfaceBlock(i); if(pif) pif->x++; }
120
126#define SNMPCOUNT(x) (x++)
127
133#define SNMPDEC(x) (x--)
134
141#define SNMPADD(x,y) (x=x+y)
142
143
155[[deprecated]]int StartSnmpProcessor( int priority );
156
157
195class SnmpServlet: public servlet
196{
197protected:
198 int m_fd;
199 int m_port;
200
206 virtual int AddToSelectSet(fd_set &rd_set, fd_set &wr_set, fd_set &er_set);
207
212 virtual void ProcessSelectResult(fd_set &rd_set, fd_set &wr_set, fd_set &er_set);
213
214public:
223 SnmpServlet(int port=161);
224};
225
226
233extern const char *SYSDESC;
234
242extern const char *SYSOID;
243
244
282{
283public:
284 config_string SysContact{"", "SysContact"};
285 config_string SysName{"", "SysName"};
286 config_string SysLocation{"", "SysLocation"};
287 config_pass ReadCommunity{"public", "ReadCommunity"};
288 config_pass WriteCommunity{"public", "WriteCommunity"};
289 config_IPADDR4 trap_destination{"0.0.0.0", "TrapDest", "SNMP Trap destination"};
290 config_bool trap_enable_flags{false, "TrapEnable"};
291 ConfigEndMarker; // No new data members below this line
292
298 snmp_config() : config_obj(sys,"SNMP", "SNMP Configuration") {bDirty=false;}
299
300 bool bDirty;
301};
302
310
311
312#define READ_COMMUNITY_MASK (0x0001)
313#define WRITE_COMMUNITY_MASK (0x0002)
314
358extern uint32_t ( *SnmpCommunityDecodeFunc )( const unsigned char *name );
359
360
361/* Trap functionality */
362
363class ASN; /* Forward declaration */
364
376typedef void ( PutTrapVarBindsFunc )( ASN *put_asn );
377
378
397 const char *community_name,
398 int generic_trap,
399 int specific_trap );
400
463 const char *community_name,
464 int generic_trap,
465 int specific_trap,
466 PutTrapVarBindsFunc *pDataCallbackFunction );
467
468#else
475#define SNMPCOUNTIF(x,y) ((void)0)
476#define SNMPCOUNT(x) ((void)0)
477#define SNMPDEC(x) ((void)0)
478#define SNMPADD(x, y) ((void)0)
479
482#endif // define SNMP
483#endif // define ENABLE_SNMP
484
485 // group SNMP
486
487
488
Used to hold and manipulate IPv4 and IPv6 addresses in dual stack mode.
Definition ipv6_addr.h:41
SNMP agent servlet that listens for and processes SNMP requests.
Definition snmp.h:196
SnmpServlet(int port=161)
Construct an SnmpServlet and bind to the specified UDP port.
virtual void ProcessSelectResult(fd_set &rd_set, fd_set &wr_set, fd_set &er_set)
Process incoming SNMP requests when the socket is readable.
int m_port
UDP port number the SNMP agent listens on.
Definition snmp.h:199
int m_fd
UDP socket file descriptor for SNMP communication.
Definition snmp.h:198
virtual int AddToSelectSet(fd_set &rd_set, fd_set &wr_set, fd_set &er_set)
Register the SNMP socket with the select read set.
Configuration Variable for IPADDR4 (IPv4) object types.
Definition config_obj.h:1500
Boolean Configuration Variable.
Definition config_obj.h:1000
Base class used to create configuration objects.
Definition config_obj.h:323
Password string Configuration Variable.
Definition config_obj.h:1348
String Configuration Variable.
Definition config_obj.h:1130
SNMP agent configuration stored in the system configuration framework.
Definition snmp.h:282
bool bDirty
Flag indicating whether the configuration has been modified since last save.
Definition snmp.h:300
snmp_config()
Construct the SNMP configuration object.
Definition snmp.h:298
config_string SysName
MIB-II sysName: administratively assigned name for the managed node.
Definition snmp.h:285
config_pass ReadCommunity
SNMP read community string (default: "public").
Definition snmp.h:287
config_string SysLocation
MIB-II sysLocation: physical location of the managed node.
Definition snmp.h:286
config_string SysContact
MIB-II sysContact: contact person for the managed node.
Definition snmp.h:284
config_bool trap_enable_flags
Enable or disable SNMP trap generation.
Definition snmp.h:290
config_IPADDR4 trap_destination
Destination IP address for SNMP traps.
Definition snmp.h:289
config_pass WriteCommunity
SNMP write community string (default: "public").
Definition snmp.h:288
const char * SYSDESC
Application-defined system description string for MIB-II sysDescr.
Definition snmp/CustomMIB/src/main.cpp:44
const char * SYSOID
Application-defined system object identifier string for MIB-II sysObjectID.
Definition snmp/CustomMIB/src/main.cpp:45
uint32_t(* SnmpCommunityDecodeFunc)(const unsigned char *name)
Function pointer for custom SNMP community name validation.
void SnmpBasicTrap(IPADDR dest, const char *community_name, int generic_trap, int specific_trap)
Send an SNMP trap without custom variable bindings.
void PutTrapVarBindsFunc(ASN *put_asn)
Function type for SNMP trap variable binding callbacks.
Definition snmp.h:376
void SnmpTrapWithData(IPADDR dest, const char *community_name, int generic_trap, int specific_trap, PutTrapVarBindsFunc *pDataCallbackFunction)
Send an SNMP trap with custom variable bindings.
int StartSnmpProcessor(int priority)
Start the SNMP processor task.
snmp_config TheSnmpConfig
Global SNMP configuration instance.