diff --git a/userspace/snmpd/Makefile b/userspace/snmpd/Makefile index 4b957943cb8cba3fdfc804e2ef0fd838d8f33be4..50d1ec5a6946d2fa59d286f9410f4647fdcd3401 100644 --- a/userspace/snmpd/Makefile +++ b/userspace/snmpd/Makefile @@ -28,6 +28,7 @@ SOURCES = \ init.c \ snmp_shmem.c \ wrsScalar.c \ + wrsStartCntGroup.c \ wrsPstatsTable.c \ shmem.c \ wrsPtpDataTable.c \ diff --git a/userspace/snmpd/WR-SWITCH-MIB.txt b/userspace/snmpd/WR-SWITCH-MIB.txt index d0cc092e36b15380d71eef44a3783f9a66d22c13..933e856265365826a32631d0d5c448bbada1c198 100644 --- a/userspace/snmpd/WR-SWITCH-MIB.txt +++ b/userspace/snmpd/WR-SWITCH-MIB.txt @@ -138,7 +138,25 @@ wrsTempThresholdPSR OBJECT-TYPE "Threshold level for Power Supply Right (PSR) temperature" ::= { wrsTemperatureGroup 8 } ---wrsRestartCntGroup OBJECT IDENTIFIER ::= { wrsExpertStatus 2 } +wrsStartCntGroup OBJECT IDENTIFIER ::= { wrsExpertStatus 2 } + +-- wrsStartCntGroup (.6.2) +wrsStartCntHAL OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of HAL deamon starts" + ::= { wrsStartCntGroup 1 } + +wrsStartCntPPSI OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PPSI deamon starts" + ::= { wrsStartCntGroup 2 } + --wrsSpllState OBJECT IDENTIFIER ::= { wrsExpertStatus 3 } -- wrsPstatsTable (.6.1.4) wrsPstatsTable OBJECT-TYPE diff --git a/userspace/snmpd/init.c b/userspace/snmpd/init.c index 4bb9cc8411dd73deed7e6ad9c70284d64d1fa963..dd8302a76a64753d56bffef8ef20b013ec7a0dc6 100644 --- a/userspace/snmpd/init.c +++ b/userspace/snmpd/init.c @@ -8,6 +8,7 @@ /* The sub-init functions */ #include "wrsSnmp.h" #include "snmp_shmem.h" +#include "wrsStartCntGroup.h" #include "wrsPstatsTable.h" #include "wrsPtpDataTable.h" #include "wrsCurrentTimeGroup.h" @@ -22,6 +23,7 @@ void init_wrsSnmp(void) { init_shm(); init_wrsScalar(); + init_wrsStartCntGroup(); init_wrsPstatsTable(); init_wrsPtpDataTable(); init_wrsCurrentTimeGroup(); diff --git a/userspace/snmpd/wrsStartCntGroup.c b/userspace/snmpd/wrsStartCntGroup.c new file mode 100644 index 0000000000000000000000000000000000000000..c07a8f23781f5f1215120d302dcb8e4763527948 --- /dev/null +++ b/userspace/snmpd/wrsStartCntGroup.c @@ -0,0 +1,42 @@ +#include "wrsSnmp.h" +#include "shmem_snmp.h" +#include "wrsStartCntGroup.h" + +static struct pickinfo wrsStartCnt_pickinfo[] = { + FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHAL), + FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntPPSI), +}; + +struct wrsStartCnt_s wrsStartCnt_s; + +time_t wrsStartCnt_data_fill(void){ + static time_t time_update; + time_t time_cur; + + time_cur = time(NULL); + if (time_update + && time_cur - time_update < WRSSTARTCNT_CACHE_TIMEOUT) { + /* cache not updated, return last update time */ + return time_update; + } + time_update = time_cur; + + memset(&wrsStartCnt_s, 0, sizeof(wrsStartCnt_s)); + + /* get start counters from shmem's */ + wrsStartCnt_s.wrsStartCntHAL = hal_head->pidsequence; + wrsStartCnt_s.wrsStartCntPPSI = ppsi_head->pidsequence; + + /* there was an update, return current time */ + return time_update; +} + + +#define GT_OID WRSSTARTCNT_OID +#define GT_PICKINFO wrsStartCnt_pickinfo +#define GT_DATA_FILL_FUNC wrsStartCnt_data_fill +#define GT_DATA_STRUCT wrsStartCnt_s +#define GT_GROUP_NAME "wrsStartCnt" +#define GT_INIT_FUNC init_wrsStartCntGroup + +#include "wrsGroupTemplate.h" diff --git a/userspace/snmpd/wrsStartCntGroup.h b/userspace/snmpd/wrsStartCntGroup.h new file mode 100644 index 0000000000000000000000000000000000000000..83770a3fbaf51c5ae3d0e8fd7e9ac946245655bb --- /dev/null +++ b/userspace/snmpd/wrsStartCntGroup.h @@ -0,0 +1,16 @@ +#ifndef WRS_START_CNT_GROUP_H +#define WRS_START_CNT_GROUP_H + +#define WRSSTARTCNT_CACHE_TIMEOUT 5 +#define WRSSTARTCNT_OID WRS_OID, 6, 2 + +struct wrsStartCnt_s { + uint32_t wrsStartCntHAL; + uint32_t wrsStartCntPPSI; +}; + +extern struct wrsStartCnt_s wrsStartCnt_s; +time_t wrsStartCnt_data_fill(void); + +void init_wrsStartCntGroup(void); +#endif /* WRS_START_CNT_GROUP_H */