Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
W
White Rabbit Switch - Software
Manage
Activity
Members
Labels
Plan
Issues
87
Issue boards
Milestones
Wiki
Code
Merge requests
4
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Projects
White Rabbit Switch - Software
Commits
024e8f35
Commit
024e8f35
authored
5 years ago
by
Jean-Claude BAU
Browse files
Options
Downloads
Patches
Plain Diff
SNMP: Add wrsSystemClockThreshold, wrsSystemClockCheckInterval, wrsSystemClockCheckIntervalUnit
parent
3521752f
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
userspace/snmpd/WR-SWITCH-MIB.txt
+46
-7
46 additions, 7 deletions
userspace/snmpd/WR-SWITCH-MIB.txt
userspace/snmpd/wrsCurrentTimeGroup.c
+52
-2
52 additions, 2 deletions
userspace/snmpd/wrsCurrentTimeGroup.c
userspace/snmpd/wrsCurrentTimeGroup.h
+15
-5
15 additions, 5 deletions
userspace/snmpd/wrsCurrentTimeGroup.h
with
113 additions
and
14 deletions
userspace/snmpd/WR-SWITCH-MIB.txt
+
46
−
7
View file @
024e8f35
...
...
@@ -593,8 +593,10 @@ wrsSystemClockStatusDetails OBJECT-TYPE
na(0),
ok(1),
thresholdExceeded(2),
statusFileMissing(3),
unknownStatus(4)
ntpError(3),
error(4),
IOError(5),
unknownStatus(6)
}
MAX-ACCESS read-only
STATUS current
...
...
@@ -602,7 +604,9 @@ wrsSystemClockStatusDetails OBJECT-TYPE
"The system clock is compared to NTP time
ok - system clock is under the threshold value
thresholdExceeded - system clock has exceeded the threshold value
error - Unexpected status
IOError - IO error detected (error)
unknownStatus - Unexpected status (error)
error - Error detected
warningNA - there is N/A in one of object used to calculate this value"
::= { wrsCurrentTimeGroup 3 }
...
...
@@ -614,6 +618,41 @@ wrsSystemClockDrift OBJECT-TYPE
"Drift of system clock expressed in seconds"
::= { wrsCurrentTimeGroup 4 }
wrsSystemClockDriftThreshold OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Threshold level in seconds for system clock drift"
::= { wrsCurrentTimeGroup 5 }
wrsSystemClockCheckInterval OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Check interval of system clock drift.
The unit is given by wrsSystemClockCheckIntervalUnit object."
::= { wrsCurrentTimeGroup 6 }
wrsSystemClockCheckIntervalUnit OBJECT-TYPE
SYNTAX INTEGER {
na(0),
error(1),
minutes(2),
hours(3),
days(4) }
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"System clock check interval unit (see wrsSystemClockCheckInterval)
seconds - System clock check interval expressed in seconds
minutes - System clock check interval expressed in minutes
days - System clock check interval expressed in number of days
"
::= { wrsCurrentTimeGroup 7 }
wrsLeapSecSource OBJECT-TYPE
SYNTAX INTEGER {
na(0),
...
...
@@ -633,7 +672,7 @@ wrsLeapSecSource OBJECT-TYPE
the error is propagated
errorMinor - cannot read the status file, problem is probably somewhere
else"
::= { wrsCurrentTimeGroup
5
}
::= { wrsCurrentTimeGroup
8
}
wrsLeapSecStatusDetails OBJECT-TYPE
SYNTAX INTEGER {
...
...
@@ -659,7 +698,7 @@ wrsLeapSecStatusDetails OBJECT-TYPE
leapSecDeleted - A leap second will be deleted at 00:00
errorMinor - cannot read the status file, problem is probably somewhere
else"
::= { wrsCurrentTimeGroup
6
}
::= { wrsCurrentTimeGroup
9
}
wrsLeapSecSourceStatusDetails OBJECT-TYPE
SYNTAX INTEGER {
...
...
@@ -685,7 +724,7 @@ wrsLeapSecSourceStatusDetails OBJECT-TYPE
downloadError - Error detected during the download
errorMinor - cannot read the status file, problem is probably somewhere
else"
::= { wrsCurrentTimeGroup
7
}
::= { wrsCurrentTimeGroup
10
}
wrsLeapSecSourceURL OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..128))
...
...
@@ -693,7 +732,7 @@ wrsLeapSecSourceURL OBJECT-TYPE
STATUS current
DESCRIPTION
"Url to the leap second file"
::= { wrsCurrentTimeGroup
8
}
::= { wrsCurrentTimeGroup
11
}
--wrsBootStatusGroup (.7.1.2)
wrsBootStatusGroup OBJECT IDENTIFIER ::= { wrsOperationStatus 2 }
...
...
This diff is collapsed.
Click to expand it.
userspace/snmpd/wrsCurrentTimeGroup.c
+
52
−
2
View file @
024e8f35
...
...
@@ -47,6 +47,9 @@ static struct pickinfo wrsCurrentTime_pickinfo[] = {
FIELD
(
wrsCurrentTime_s
,
ASN_OCTET_STR
,
wrsDateTAIString
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsSystemClockStatusDetails
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsSystemClockDrift
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsSystemClockDriftThreshold
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsSystemClockCheckInterval
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsSystemClockCheckIntervalUnit
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsLeapSecSource
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsLeapSecStatusDetails
),
FIELD
(
wrsCurrentTime_s
,
ASN_INTEGER
,
wrsLeapSecSourceStatusDetails
),
...
...
@@ -66,6 +69,8 @@ struct wrsCurrentTime_s wrsCurrentTime_s;
static
char
*
wrsSystemClockStatusDetails_str
=
"wrsSystemClockStatusDetails"
;
static
char
*
wrsSystemClockDrift_str
=
"wrsSystemClockDrift"
;
static
char
*
wrsSystemClockDriftThreshold_str
=
"wrsSystemClockDriftThreshold"
;
static
char
*
wrsSystemClockCheckInterval_str
=
"wrsSystemClockCheckInterval"
;
static
char
*
wrsLeapSecStatusDetails_str
=
"wrsLeapSecStatus"
;
static
char
*
wrsLeapSecSourceStatusDetails_str
=
"wrsLeapSecSourceStatusDetails"
;
static
char
*
wrsLeapSecSource_str
=
"wrsLeapSecSource"
;
...
...
@@ -163,13 +168,16 @@ static void get_TAI(void){
static
text_status_mapping_t
mapping_system_clock_monitor_status
[]
=
{
{
"no_error"
,
WRS_SYSTEM_CLOCK_STATUS_DETAILS_OK
},
{
"exceeded_threshold"
,
WRS_SYSTEM_CLOCK_STATUS_DETAILTS_THRESHOLD_EXCEEDED
},
{
"exceeded_threshold"
,
WRS_SYSTEM_CLOCK_STATUS_DETAILS_THRESHOLD_EXCEEDED
},
{
"ntp_error"
,
WRS_SYSTEM_CLOCK_STATUS_DETAILS_NTP_ERROR
},
};
static
void
get_wrsSystemClockStatusDetails
(
void
){
static
int
first_run
=
1
;
char
buff
[
21
];
/* 1 for null char */
FILE
*
f
;
int
status
=
0
,
drift
=
0
;
static
int
threshold
=
0
,
unit
=
0
,
checkInterval
=
0
;
update_expected_services
();
...
...
@@ -198,7 +206,7 @@ static void get_wrsSystemClockStatusDetails(void){
}
/* Read drift value */
if
(
status
==
WRS_SYSTEM_CLOCK_STATUS_DETAIL
T
S_THRESHOLD_EXCEEDED
||
if
(
status
==
WRS_SYSTEM_CLOCK_STATUS_DETAILS_THRESHOLD_EXCEEDED
||
status
==
WRS_SYSTEM_CLOCK_STATUS_DETAILS_OK
)
{
slog_obj_name
=
wrsSystemClockDrift_str
;
...
...
@@ -217,12 +225,54 @@ static void get_wrsSystemClockStatusDetails(void){
"open "
SYSTEMCLOCK_DRIFT
"
\n
"
,
slog_obj_name
);
}
}
// Read values depending of dot-config
if
(
first_run
)
{
char
*
config_item
;
// Threshold
slog_obj_name
=
wrsSystemClockDriftThreshold_str
;
config_item
=
libwr_cfg_get
(
"SNMP_SYSTEM_CLOCK_DRIFT_THOLD"
);
if
(
config_item
)
{
threshold
=
atoi
(
config_item
);
}
else
{
snmp_log
(
LOG_ERR
,
"SNMP: "
SL_ER
" %s: failed to "
"read SNMP_SYSTEM_CLOCK_DRIFT_THOLD key in dot-config file
\n
"
,
slog_obj_name
);
}
// Check interval value and unit
slog_obj_name
=
wrsSystemClockCheckInterval_str
;
if
(
(
config_item
=
libwr_cfg_get
(
"SNMP_SYSTEM_CLOCK_CHECK_INTERVAL_MINUTES"
))
!=
NULL
)
{
checkInterval
=
atoi
(
config_item
);
unit
=
WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_MINUTES
;
}
else
if
(
(
config_item
=
libwr_cfg_get
(
"SNMP_SYSTEM_CLOCK_CHECK_INTERVAL_HOURS"
))
!=
NULL
)
{
checkInterval
=
atoi
(
config_item
);
unit
=
WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_HOURS
;
}
else
if
(
(
config_item
=
libwr_cfg_get
(
"SNMP_SYSTEM_CLOCK_CHECK_INTERVAL_DAYS"
))
!=
NULL
)
{
checkInterval
=
atoi
(
config_item
);
unit
=
WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_DAYS
;
}
else
{
unit
=
WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_ERROR
;
snmp_log
(
LOG_ERR
,
"SNMP: "
SL_ER
" %s: failed to "
"read SNMP_SYSTEM_CLOCK_CHECK_INTERVAL_XXXX key in dot-config file
\n
"
,
slog_obj_name
);
}
first_run
=
0
;
}
}
else
{
// System clock monitoring disabled
status
=
WRS_SYSTEM_CLOCK_STATUS_DETAILS_OK
;
}
wrsCurrentTime_s
.
wrsSystemClockStatusDetails
=
status
;
wrsCurrentTime_s
.
wrsSystemClockDrift
=
drift
;
wrsCurrentTime_s
.
wrsSystemClockDriftThreshold
=
threshold
;
wrsCurrentTime_s
.
wrsSystemClockCheckInterval
=
checkInterval
;
wrsCurrentTime_s
.
wrsSystemClockCheckIntervalUnit
=
unit
;
}
...
...
This diff is collapsed.
Click to expand it.
userspace/snmpd/wrsCurrentTimeGroup.h
+
15
−
5
View file @
024e8f35
...
...
@@ -13,10 +13,17 @@
#define WRS_LEAP_SEC_SOURCE_FORCE_REMOTE 5
/* Try to download the file (propagate errors) */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_OK 1
/* ok */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_IO_ERROR 2
/* Status file is missing */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_UNKNOWN 3
/* Unknown status */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILTS_THRESHOLD_EXCEEDED \
4
/* Threshold exceeded */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_THRESHOLD_EXCEEDED \
2
/* Threshold exceeded */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_NTP_ERROR 3
/* Error accessing NTP server */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_ERROR 4
/* Generic error */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_IO_ERROR 5
/* Error: Status file is missing */
#define WRS_SYSTEM_CLOCK_STATUS_DETAILS_UNKNOWN 6
/* Error: Unknown status */
#define WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_ERROR 1
/* ok */
#define WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_MINUTES 2
/* Minutes */
#define WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_HOURS 3
/* Hours */
#define WRS_SYSTEM_CLOCK_CHECK_INTERVAL_UNIT_DAYS 4
/* Days */
#define WRS_LEAP_SEC_STATUS_DETAILS_OK 1
/* Everything ok */
#define WRS_LEAP_SEC_STATUS_DETAILS_IO_ERROR 2
/* Status file is missing */
...
...
@@ -40,7 +47,10 @@ struct wrsCurrentTime_s {
uint64_t
wrsDateTAI
;
/* current time in TAI */
char
wrsDateTAIString
[
32
];
/* current time in TAI as string */
int
wrsSystemClockStatusDetails
;
/* System clock status details*/
int
wrsSystemClockDrift
;
/* System monitoring clock */
int
wrsSystemClockDrift
;
/* Current system clock drift value */
int
wrsSystemClockDriftThreshold
;
/* System clock drift threshold*/
int
wrsSystemClockCheckInterval
;
/* System clock check interval */
int
wrsSystemClockCheckIntervalUnit
;
/* System clock check interval unit */
int
wrsLeapSecStatusDetails
;
/* Leap seconds details */
int
wrsLeapSecSourceStatusDetails
;
/* Leap second source status details*/
int
wrsLeapSecSource
;
/* Source of the leap seconds file */
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment