Commit 47e39151 authored by Adam Wujek's avatar Adam Wujek 💬

userspace/snmpd: add wrsMainSystemStatus to wrsGeneralStatusGroup

Please note that wrsTimingStatus is not implemented. However, wrsMainSystemStatus
assumes it is implemented. No changes will be needed to wrsMainSystemStatus
during implementation of wrsTimingStatus.
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent c3060ace
......@@ -53,6 +53,26 @@ wrsScalarOne OBJECT-TYPE
-- wrsGeneralStatusGroup (.6.1)
wrsGeneralStatusGroup OBJECT IDENTIFIER ::= { wrsStatus 1 }
wrsMainSystemStatus OBJECT-TYPE
SYNTAX INTEGER {
na(0),
ok(1),
error(2),
warning(3),
warningNA(4),
bug(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Grouped status of WRS switch
ok - values in wrsGeneralStatusGroup are correct
error - there is an error in wrsGeneralStatusGroup
warning - there is a warning in wrsGeneralStatusGroup
warningNA - there is N/A field in wrsGeneralStatusGroup
bug - bug in checking conditions of wrsGeneralStatusGroup, please report"
::= { wrsGeneralStatusGroup 1 }
wrsOSStatus OBJECT-TYPE
SYNTAX INTEGER {
na(0),
......
......@@ -20,6 +20,7 @@ time_t wrsGeneralStatus_data_fill(void)
* was updated */
struct wrsOSStatus_s *o;
struct wrsNetworkingStatus_s *n;
struct wrsGeneralStatus_s *g;
time_osstatus = wrsOSStatus_data_fill();
time_networking_status = wrsNetworkingStatus_data_fill();
......@@ -122,6 +123,54 @@ time_t wrsGeneralStatus_data_fill(void)
WRS_NETWORKING_STATUS_BUG;
}
/*********************************************************************\
|************************ wrsMainSystemStatus ************************|
\*********************************************************************/
/* update at the end of this group to have latest results of other
* statuses */
g = &wrsGeneralStatus_s;
if ( /* check if error */
g->wrsOSStatus == WRS_OS_STATUS_ERROR
|| g->wrsTimingStatus == WRS_TIMING_STATUS_ERROR
|| g->wrsNetworkingStatus == WRS_NETWORKING_STATUS_ERROR
) {
wrsGeneralStatus_s.wrsMainSystemStatus =
WRS_MAIN_SYSTEM_STATUS_ERROR;
} else if ( /* check if warning */
g->wrsOSStatus == WRS_OS_STATUS_WARNING
|| g->wrsTimingStatus == WRS_TIMING_STATUS_WARNING
|| g->wrsNetworkingStatus == WRS_NETWORKING_STATUS_WARNING
) { /* warning */
wrsGeneralStatus_s.wrsMainSystemStatus =
WRS_MAIN_SYSTEM_STATUS_WARNING;
} else if ( /* check if any of fields equal to 0 or WARNING_NA */
g->wrsOSStatus == WRS_OS_STATUS_WARNING_NA
|| g->wrsOSStatus == 0
|| g->wrsTimingStatus == WRS_TIMING_STATUS_WARNING_NA
|| g->wrsTimingStatus == 0
|| g->wrsNetworkingStatus == WRS_NETWORKING_STATUS_WARNING_NA
|| g->wrsNetworkingStatus == 0
) { /* warning NA */
wrsGeneralStatus_s.wrsMainSystemStatus =
WRS_MAIN_SYSTEM_STATUS_WARNING_NA;
} else if ( /* check if OK */
g->wrsOSStatus == WRS_OS_STATUS_OK
&& g->wrsTimingStatus == WRS_TIMING_STATUS_OK
&& g->wrsNetworkingStatus == WRS_NETWORKING_STATUS_OK
) { /* OK */
wrsGeneralStatus_s.wrsMainSystemStatus =
WRS_MAIN_SYSTEM_STATUS_OK;
} else { /* probably bug in previous conditions,
* this should never happen */
wrsGeneralStatus_s.wrsMainSystemStatus =
WRS_MAIN_SYSTEM_STATUS_BUG;
}
time_update = time(NULL);
/* there was an update, return current time */
......
......@@ -3,6 +3,14 @@
#define WRSGENERALSTATUS_OID WRS_OID, 6, 1
#define WRS_MAIN_SYSTEM_STATUS_OK 1 /* ok */
#define WRS_MAIN_SYSTEM_STATUS_ERROR 2 /* error */
#define WRS_MAIN_SYSTEM_STATUS_WARNING 3 /* warning */
#define WRS_MAIN_SYSTEM_STATUS_WARNING_NA 4 /* warning, at least one field is
* equal to 0 (NA),shouldn't happen in
* normal operation */
#define WRS_MAIN_SYSTEM_STATUS_BUG 5 /* warning */
#define WRS_OS_STATUS_OK 1 /* ok */
#define WRS_OS_STATUS_ERROR 2 /* error */
#define WRS_OS_STATUS_WARNING 3 /* warning */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment