1258945Sroberto/***************************************************************************** 2258945Sroberto * 3258945Sroberto * ntpSnmpSubAgentObject.h 4258945Sroberto * 5258945Sroberto * Definitions and macros for ntpSnmpSubAgentObject.c 6258945Sroberto * 7258945Sroberto ****************************************************************************/ 8258945Sroberto 9258945Sroberto 10258945Sroberto#ifndef NTPSNMPSUBAGENTOBJECT_H 11258945Sroberto#define NTPSNMPSUBAGENTOBJECT_H 12258945Sroberto 13258945Sroberto/* Function Prototypes */ 14258945Srobertosize_t ntpsnmpd_parse_string(const char *string, char *field, size_t 15258945Sroberto fieldsize, char *value, size_t valuesize); 16258945Srobertosize_t ntpsnmpd_cut_string(const char *string, char *dest, char delim, 17258945Sroberto int fieldnumber, size_t maxsize); 18258945Srobertosize_t read_ntp_value(const char *variable, char *value, 19258945Sroberto size_t valuesize); 20258945Sroberto 21258945Sroberto/* Initialization */ 22258945Srobertovoid init_ntpSnmpSubagentObject(void); 23258945Sroberto 24258945Sroberto/* MIB Section 1 Callback Functions*/ 25258945SrobertoNetsnmp_Node_Handler get_ntpEntSoftwareName; 26258945SrobertoNetsnmp_Node_Handler get_ntpEntSoftwareVersion; 27258945SrobertoNetsnmp_Node_Handler get_ntpEntSoftwareVendor; 28258945SrobertoNetsnmp_Node_Handler get_ntpEntSystemType; 29258945SrobertoNetsnmp_Node_Handler get_ntpEntTimeResolution; 30258945SrobertoNetsnmp_Node_Handler get_ntpEntTimePrecision; 31258945SrobertoNetsnmp_Node_Handler get_ntpEntTimeDistance; 32258945Sroberto 33258945Sroberto/* MIB Section 2 Callback Functions (TODO) */ 34258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusCurrentMode; 35258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusCurrentModeVal; 36258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusStratum; 37258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusActiveRefSourceId; 38258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusActiveRefSourceName; 39258945SrobertoNetsnmp_Node_Handler get_ntpEntStatusActiveOffset; 40258945Sroberto 41258945Sroberto#define NTPV4_OID 1,3,6,1,2,1,197 /* mib-2 197 */ 42258945Sroberto 43258945Sroberto 44258945Sroberto/* 45258945Sroberto * The following macros simplify the registration of the callback 46258945Sroberto * functions and register the name and OID of either read-only (RO) or 47258945Sroberto * read-write (RW) functions. 48258945Sroberto */ 49258945Sroberto 50258945Sroberto#define SETUP_OID_RO(oidname, ...) \ 51258945Srobertostatic oid oidname##_oid [] = { __VA_ARGS__ }; \ 52258945Sroberto{ \ 53258945Sroberto netsnmp_register_read_only_instance( \ 54258945Sroberto netsnmp_create_handler_registration( \ 55258945Sroberto "#oidname", \ 56258945Sroberto get_##oidname, \ 57258945Sroberto oidname##_oid, \ 58258945Sroberto OID_LENGTH \ 59258945Sroberto ( oidname##_oid ), \ 60258945Sroberto HANDLER_CAN_RONLY)); \ 61258945Sroberto} 62258945Sroberto 63258945Sroberto#define SETUP_OID_RW(oidname, ...) \ 64258945Srobertostatic oid oidname##_oid [] = { __VA_ARGS__ }; \ 65258945Sroberto{ \ 66258945Sroberto netsnmp_register_instance( \ 67258945Sroberto netsnmp_create_handler_registration( \ 68258945Sroberto "#oidname", \ 69258945Sroberto do_##oidname, \ 70258945Sroberto oidname##_oid, \ 71258945Sroberto OID_LENGTH \ 72258945Sroberto ( oidname##_oid ), \ 73258945Sroberto HANDLER_CAN_RWRITE)); \ 74258945Sroberto} 75258945Sroberto 76258945Sroberto#define NTP_OID_RO(oidname, w, x, y, z) \ 77258945Sroberto SETUP_OID_RO(oidname, NTPV4_OID, w, x, y, z) 78258945Sroberto#define NTP_OID_RW(oidname, w, x, y, z) \ 79258945Sroberto SETUP_OID_RW(oidname, NTPV4_OID, w, x, y, z) 80258945Sroberto 81258945Sroberto#endif 82