1 /*****************************************************************************
2  *
3  *  ntpSnmpSubAgentObject.h
4  *
5  *	Definitions and macros for ntpSnmpSubAgentObject.c
6  *
7  ****************************************************************************/
8 
9 
10 #ifndef NTPSNMPSUBAGENTOBJECT_H
11 #define NTPSNMPSUBAGENTOBJECT_H
12 
13 /* Function Prototypes */
14 size_t ntpsnmpd_parse_string(const char *string, char *field, size_t
15 			     fieldsize, char *value, size_t valuesize);
16 size_t ntpsnmpd_cut_string(const char *string, char *dest, char delim,
17 			   int fieldnumber, size_t maxsize);
18 size_t read_ntp_value(const char *variable, char *value,
19 		      size_t valuesize);
20 
21 /* Initialization */
22 void init_ntpSnmpSubagentObject(void);
23 
24 /* MIB Section 1 Callback Functions*/
25 Netsnmp_Node_Handler get_ntpEntSoftwareName;
26 Netsnmp_Node_Handler get_ntpEntSoftwareVersion;
27 Netsnmp_Node_Handler get_ntpEntSoftwareVendor;
28 Netsnmp_Node_Handler get_ntpEntSystemType;
29 Netsnmp_Node_Handler get_ntpEntTimeResolution;
30 Netsnmp_Node_Handler get_ntpEntTimePrecision;
31 Netsnmp_Node_Handler get_ntpEntTimeDistance;
32 
33 /* MIB Section 2 Callback Functions (TODO) */
34 Netsnmp_Node_Handler get_ntpEntStatusCurrentMode;
35 Netsnmp_Node_Handler get_ntpEntStatusCurrentModeVal;
36 Netsnmp_Node_Handler get_ntpEntStatusStratum;
37 Netsnmp_Node_Handler get_ntpEntStatusActiveRefSourceId;
38 Netsnmp_Node_Handler get_ntpEntStatusActiveRefSourceName;
39 Netsnmp_Node_Handler get_ntpEntStatusActiveOffset;
40 
41 #define NTPV4_OID 1,3,6,1,2,1,197	/* mib-2 197 */
42 
43 
44 /*
45  * The following macros simplify the registration of the callback
46  * functions and register the name and OID of either read-only (RO) or
47  * read-write (RW) functions.
48  */
49 
50 #define SETUP_OID_RO(oidname, ...)				\
51 static oid oidname##_oid [] = { __VA_ARGS__ };			\
52 {								\
53 	netsnmp_register_read_only_instance(			\
54 		netsnmp_create_handler_registration(		\
55 			"#oidname",				\
56 			get_##oidname,				\
57 			oidname##_oid,				\
58 			OID_LENGTH				\
59 			( oidname##_oid ),			\
60 			HANDLER_CAN_RONLY));			\
61 }
62 
63 #define SETUP_OID_RW(oidname, ...)				\
64 static oid oidname##_oid [] = { __VA_ARGS__ };			\
65 {								\
66 	netsnmp_register_instance(				\
67 		netsnmp_create_handler_registration(		\
68 			"#oidname",				\
69 			do_##oidname,				\
70 			oidname##_oid,				\
71 			OID_LENGTH				\
72 			( oidname##_oid ),			\
73 			HANDLER_CAN_RWRITE));			\
74 }
75 
76 #define NTP_OID_RO(oidname, w, x, y, z)				\
77 	SETUP_OID_RO(oidname, NTPV4_OID, w, x, y, z)
78 #define NTP_OID_RW(oidname, w, x, y, z)				\
79 	SETUP_OID_RW(oidname, NTPV4_OID, w, x, y, z)
80 
81 #endif
82