]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/ntpsnmpd/ntpSnmpSubagentObject.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / ntpsnmpd / ntpSnmpSubagentObject.h
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