1 /* $NetBSD: ntpSnmpSubagentObject.h,v 1.1.1.1 2009/12/13 16:56:33 kardel Exp $ */ 2 3 /***************************************************************************** 4 * 5 * ntpSnmpSubAgentObject.h 6 * 7 * Definitions and macros for ntpSnmpSubAgentObject.c 8 * 9 ****************************************************************************/ 10 11 12 #ifndef NTPSNMPSUBAGENTOBJECT_H 13 #define NTPSNMPSUBAGENTOBJECT_H 14 15 /* Function Prototypes */ 16 int ntpsnmpd_strip_string(char *string); 17 int ntpsnmpd_parse_string(char *src, char *field, int fieldsize, char *value, int valuesize); 18 int ntpsnmpd_cut_string(char *src, char *dest, const char delim, int fieldnumber, int maxsize); 19 unsigned int read_ntp_value(char *variable, char *rbuffer, unsigned int maxlength); 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_ntpEntSoftwareVersionVal; 28 Netsnmp_Node_Handler get_ntpEntSoftwareVendor; 29 Netsnmp_Node_Handler get_ntpEntSystemType; 30 Netsnmp_Node_Handler get_ntpEntTimeResolution; 31 Netsnmp_Node_Handler get_ntpEntTimeResolutionVal; 32 Netsnmp_Node_Handler get_ntpEntTimePrecision; 33 Netsnmp_Node_Handler get_ntpEntTimePrecisionVal; 34 Netsnmp_Node_Handler get_ntpEntTimeDistance; 35 36 /* MIB Section 2 Callback Functions (TODO) */ 37 Netsnmp_Node_Handler get_ntpEntStatusCurrentMode; 38 Netsnmp_Node_Handler get_ntpEntStatusCurrentModeVal; 39 Netsnmp_Node_Handler get_ntpEntStatusStratum; 40 Netsnmp_Node_Handler get_ntpEntStatusActiveRefSourceId; 41 Netsnmp_Node_Handler get_ntpEntStatusActiveRefSourceName; 42 Netsnmp_Node_Handler get_ntpEntStatusActiveOffset; 43 44 /* TODO: This needs to be changed as soon as the official OID has been registered with IANA */ 45 #define NTPV4_OID 1,3,6,1,4,1,5597,99 46 47 48 /* The following two macros simplify the registration of the callback functions 49 * and allow to easily specify the name and OID of either read-only (RO) or read-write (RW) functions 50 */ 51 52 #define _SETUP_OID_RO( _oidname, ... ) \ 53 static oid _oidname##_oid [] = { __VA_ARGS__ }; \ 54 { \ 55 netsnmp_register_read_only_instance(netsnmp_create_handler_registration \ 56 ("#_oidname", \ 57 get_##_oidname, \ 58 _oidname##_oid, \ 59 OID_LENGTH \ 60 ( _oidname##_oid ), \ 61 HANDLER_CAN_RONLY)); \ 62 } 63 64 #define _SETUP_OID_RW( _oidname, ... ) \ 65 static oid _oidname##_oid [] = { __VA_ARGS__ }; \ 66 { \ 67 netsnmp_register_instance(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 77 #endif 78