Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
86
Issues
86
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Software
Commits
1f2a404f
Commit
1f2a404f
authored
Jul 06, 2015
by
Adam Wujek
💬
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'adam-log'
parents
23781a79
b64d15f1
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
121 additions
and
41 deletions
+121
-41
Kconfig
Kconfig
+23
-0
wrs-user-manual.in
doc/wrs-user-manual.in
+23
-1
monit.sh
userspace/rootfs_override/etc/init.d/monit.sh
+13
-1
snmpd
userspace/rootfs_override/etc/init.d/snmpd
+25
-2
stop-mb.sh
userspace/rootfs_override/wr/sbin/stop-mb.sh
+1
-1
WR-SWITCH-MIB.txt
userspace/snmpd/WR-SWITCH-MIB.txt
+10
-10
wrsBootStatusGroup.c
userspace/snmpd/wrsBootStatusGroup.c
+22
-22
wrsOSStatusGroup.c
userspace/snmpd/wrsOSStatusGroup.c
+1
-1
hal_main.c
userspace/wrsw_hal/hal_main.c
+3
-3
No files found.
Kconfig
View file @
1f2a404f
...
...
@@ -97,6 +97,29 @@ config WRS_LOG_PTP
to represent no logging (like /dev/null). Please note that
unknown facility names will generate a runtime error on the switch.
config WRS_LOG_SNMPD
string "Logging directions for the SNMP daemon"
default "sd"
help
The string can be a pathname (e.g. /dev/kmsg) or a valid snmpd log
option (without -L). "sd" or "s daemon" will forward messages to
syslog with daemon as facility. To set level (i.e. 5) use
"S 5 daemon". For details please check "man snmpcmd". An empty
strings is used to represent no logging (like /dev/null). Please
note that unknown facility names will generate a runtime error on the
switch.
config WRS_LOG_MONIT
string "Logging directions for the monit"
default "syslog"
help
The string can be a pathname (e.g. /dev/kmsg) or a "syslog" string.
An empty strings is used to represent no logging. If it is needed to
select facility and level please leave here empty string and change
/etc/monitrc file directly.
Please note that unknown facility names will generate a runtime error
on the switch.
config KEEP_ROOTFS
bool "Keep generated filesystem and related script"
help
...
...
doc/wrs-user-manual.in
View file @
1f2a404f
...
...
@@ -472,7 +472,7 @@ value is changed by the web interface, proper action is taken.
Supply Right (PSR) temperature sensors. When any temperature exceeds
threshold level SNMP object @t
{
WR-SWITCH-MIB::tempWarning
}
will change
accordingly.
@item CONFIG
_
WRS
_
LOG
_
HAL
@itemx CONFIG
_
WRS
_
LOG
_
RTU
@itemx CONFIG
_
WRS
_
LOG
_
PTP
...
...
@@ -485,6 +485,28 @@ value is changed by the web interface, proper action is taken.
unknown facility names will generate a runtime error on the switch.
All three strings default to ``@t
{
daemon.info
}
''.
@item CONFIG
_
WRS
_
LOG
_
SNMPD
Value can be a pathname, to select logging to file (and
@t
{
/dev/kmsg
}
is a possible ``file'' target) or a valid snmpd log
option (without -L).
Allowed strings are in format ``@t
{
s
}
@i
{
facility
}
'' (e.g.
``@t
{
s daemon
}
'') and ``@t
{
s
}
@i
{
level
}
@i
{
facility
}
'' (e.g.
``@t
{
s 2 daemon
}
''). For example, ``@t
{
sd
}
'' or ``@t
{
s daemon
}
'' will forward
messages to syslog with daemon as facility. To set level (i.e. 5) use
``@t
{
S 5 daemon
}
''. For details please check ``man snmpcmd''. An empty
strings selects no logging at all. Please note that unknown facility
names will generate a runtime error on the switch.
@item CONFIG
_
WRS
_
LOG
_
MONIT
The string can be a pathname (e.g. @t
{
/dev/kmsg
}
) or a @t
{
syslog
}
string.
An empty string is used to represent no logging. If it is needed to
select facility and level please leave here empty string and change
@t
{
/etc/monitrc
}
file directly.
Please note that unknown facility names will generate a runtime error
on the switch.
@item CONFIG
_
PORT00
_
PARAMS
@itemx CONFIG
_
PORT01
_
PARAMS
@itemx ...
...
...
userspace/rootfs_override/etc/init.d/monit.sh
View file @
1f2a404f
...
...
@@ -52,9 +52,21 @@ init() {
fi
if
[
-z
"
$CONFIG_MONIT_DISABLE
"
]
;
then
if
[
-z
$CONFIG_WRS_LOG_MONIT
]
;
then
LOG
=
""
;
elif
echo
"
$CONFIG_WRS_LOG_MONIT
"
|
grep
/
>
/dev/null
;
then
# if a pathname, use it
LOG
=
"-l
$CONFIG_WRS_LOG_MONIT
"
;
else
# not a pathname, monit cannot take facility nor level from command
# line, only possible from configuration file
LOG
=
"-l syslog"
fi
echo
"Start monit"
# start monit
/usr/bin/monit
/usr/bin/monit
$LOG
else
echo
"Monit disabled in dot-config"
loop_forever
...
...
userspace/rootfs_override/etc/init.d/snmpd
View file @
1f2a404f
...
...
@@ -2,6 +2,7 @@
SNMP_PID
=
/var/run/snmpd.pid
SNMP_CONF
=
/wr/etc/snmpd.conf
dotconfig
=
/wr/etc/dot-config
start_counter
()
{
# increase boot counter
...
...
@@ -17,9 +18,29 @@ start_counter() {
start
()
{
echo
-n
"Starting snmpd daemon: "
# Log to syslog at daemon level. And log source address (-a)
if
[
-f
"
$dotconfig
"
]
;
then
.
"
$dotconfig
"
else
echo
"
$0
unable to source dot-config (
$dotconfig
)!"
fi
WRS_LOG
=
$CONFIG_WRS_LOG_SNMPD
if
[
-z
"
$WRS_LOG
"
]
;
then
LOG
=
""
;
elif
echo
"
$WRS_LOG
"
|
grep
/
>
/dev/null
;
then
# if a pathname, use it
LOG
=
"-Lf
$WRS_LOG
"
;
else
# not a pathname: use verbatim
LOG
=
"-L
$WRS_LOG
"
fi
# Log source address (-a)
start-stop-daemon
-q
-p
$SNMP_PID
-S
\
--exec
/usr/sbin/snmpd
--
-Lsd
-p
$SNMP_PID
-a
-c
$SNMP_CONF
--exec
/usr/sbin/snmpd
--
$LOG
-p
$SNMP_PID
-a
-c
$SNMP_CONF
ret
=
$?
if
[
$ret
-eq
0
]
;
then
start_counter
...
...
@@ -43,6 +64,8 @@ stop() {
restart
()
{
stop
# give time to snmpd to stop
sleep
1
start
}
...
...
userspace/rootfs_override/wr/sbin/stop-mb.sh
View file @
1f2a404f
#!/bin/ash
export
WR_HOME
=
"/wr"
echo
"Killing d
ea
mon"
echo
"Killing d
ae
mon"
killall wrsw_hal
killall wrsw_rtud
killall ptpd
...
...
userspace/snmpd/WR-SWITCH-MIB.txt
View file @
1f2a404f
...
...
@@ -696,9 +696,9 @@ wrsBootUserspaceDaemonsMissing OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Checking if all desired d
ea
mons are running.
allDeamonsPresent - all d
ea
mons running
other numbers represent number of d
ea
mons not running
"Checking if all desired d
ae
mons are running.
allDeamonsPresent - all d
ae
mons running
other numbers represent number of d
ae
mons not running
other errors (can be: unable to run ps command or problem with multiple process instances)
are reported as maximum number of missing modules"
::= { wrsBootStatusGroup 14 }
...
...
@@ -925,7 +925,7 @@ wrsStartCntHAL OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of HAL d
ea
mon starts"
"Number of HAL d
ae
mon starts"
::= { wrsStartCntGroup 1 }
wrsStartCntPPSI OBJECT-TYPE
...
...
@@ -933,7 +933,7 @@ wrsStartCntPPSI OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of PPSI d
ea
mon starts"
"Number of PPSI d
ae
mon starts"
::= { wrsStartCntGroup 2 }
wrsStartCntRTUd OBJECT-TYPE
...
...
@@ -941,7 +941,7 @@ wrsStartCntRTUd OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of RTU d
ea
mon starts"
"Number of RTU d
ae
mon starts"
::= { wrsStartCntGroup 3 }
wrsStartCntSshd OBJECT-TYPE
...
...
@@ -949,7 +949,7 @@ wrsStartCntSshd OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SSH d
ea
mon starts"
"Nmber of SSH d
ae
mon starts"
::= { wrsStartCntGroup 4 }
wrsStartCntHttpd OBJECT-TYPE
...
...
@@ -957,7 +957,7 @@ wrsStartCntHttpd OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of HTTP d
ea
mon starts"
"Nmber of HTTP d
ae
mon starts"
::= { wrsStartCntGroup 5 }
wrsStartCntSnmpd OBJECT-TYPE
...
...
@@ -965,7 +965,7 @@ wrsStartCntSnmpd OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SNMP d
ea
mon starts"
"Nmber of SNMP d
ae
mon starts"
::= { wrsStartCntGroup 6 }
wrsStartCntSyslogd OBJECT-TYPE
...
...
@@ -973,7 +973,7 @@ wrsStartCntSyslogd OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SYSLOG d
ea
mon starts"
"Nmber of SYSLOG d
ae
mon starts"
::= { wrsStartCntGroup 7 }
-- wrsSpllState (.7.3)
...
...
userspace/snmpd/wrsBootStatusGroup.c
View file @
1f2a404f
...
...
@@ -61,21 +61,21 @@ static struct wrs_km_item kernel_modules[] = {
[
6
]
=
{
"g_serial"
},
};
/* user space d
ea
mon list item */
/* user space d
ae
mon list item */
struct
wrs_usd_item
{
char
*
key
;
/* process name */
int32_t
exp
;
/* expected number of processes */
uint32_t
cnt
;
/* number of processes found */
};
/* user space d
ea
mon list */
/* user space d
ae
mon list */
/* - key contain process name reported by ps command
* - positive exp describe exact number of expected processes
* - negative exp describe minimum number of expected processes. Usefull for
* processes that is hard to predict number of their instances. For example
* new dropbear process is spawned at ssh login.
*/
static
struct
wrs_usd_item
userspace_d
ea
mons
[]
=
{
static
struct
wrs_usd_item
userspace_d
ae
mons
[]
=
{
[
0
]
=
{.
key
=
"/usr/sbin/dropbear"
,
.
exp
=
-
1
},
/* expect at least one
* dropbear process */
[
1
]
=
{
"/wr/bin/wrsw_hal"
,
2
},
/* two wrsw_hal instances */
...
...
@@ -381,8 +381,8 @@ static void get_loaded_kernel_modules_status(void)
fclose
(
f
);
}
/* check if d
eamons from userspace_dea
mons array are running */
static
void
get_d
ea
mons_status
(
void
)
/* check if d
aemons from userspace_dae
mons array are running */
static
void
get_d
ae
mons_status
(
void
)
{
FILE
*
f
;
char
key
[
41
];
/* 1 for null char */
...
...
@@ -391,9 +391,9 @@ static void get_deamons_status(void)
int
processes_wrong
=
0
;
/* number of too many or too few processes */
/* clear user space d
ea
mon counters */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ea
mons
);
i
++
)
{
userspace_d
ea
mons
[
i
].
cnt
=
0
;
/* clear user space d
ae
mon counters */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ae
mons
);
i
++
)
{
userspace_d
ae
mons
[
i
].
cnt
=
0
;
}
/* Use ps command to get process list, more portable, less error prone
...
...
@@ -405,11 +405,11 @@ static void get_deamons_status(void)
wrsBootStatus_s
.
wrsBootUserspaceDaemonsMissing
=
0
;
/* Notify snmp about error in processes list */
/* Count number of expected processes */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ea
mons
);
i
++
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ae
mons
);
i
++
)
{
/* when exp < 0 then expect at least number of
* -exp processes */
wrsBootStatus_s
.
wrsBootUserspaceDaemonsMissing
+=
abs
(
userspace_d
ea
mons
[
i
].
exp
);
abs
(
userspace_d
ae
mons
[
i
].
exp
);
}
return
;
...
...
@@ -423,31 +423,31 @@ static void get_deamons_status(void)
if
(
ret
!=
1
)
continue
;
/* error... or EOF */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ea
mons
);
i
++
)
{
if
(
strncmp
(
key
,
userspace_d
ea
mons
[
i
].
key
,
40
))
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ae
mons
);
i
++
)
{
if
(
strncmp
(
key
,
userspace_d
ae
mons
[
i
].
key
,
40
))
continue
;
userspace_d
ea
mons
[
i
].
cnt
++
;
userspace_d
ae
mons
[
i
].
cnt
++
;
break
;
}
}
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ea
mons
);
i
++
)
{
if
(
userspace_d
ea
mons
[
i
].
exp
<
0
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
userspace_d
ae
mons
);
i
++
)
{
if
(
userspace_d
ae
mons
[
i
].
exp
<
0
)
{
/* if exp < 0 then expect at least -exp processes,
* useful in situation when we cannot predict exact
* number of processes.
* NOTE: exp in this case is negative number */
/* saturate cnt */
if
(
userspace_d
eamons
[
i
].
cnt
>
(
-
userspace_dea
mons
[
i
].
exp
))
{
userspace_d
ea
mons
[
i
].
cnt
=
(
-
userspace_d
ea
mons
[
i
].
exp
);
if
(
userspace_d
aemons
[
i
].
cnt
>
(
-
userspace_dae
mons
[
i
].
exp
))
{
userspace_d
ae
mons
[
i
].
cnt
=
(
-
userspace_d
ae
mons
[
i
].
exp
);
}
}
/* Calculate delta between expected and counted number
* of processes. Neither too much or too few are ok.
* NOTE: abs "exp" too */
processes_wrong
+=
abs
(
abs
(
userspace_d
ea
mons
[
i
].
exp
)
-
userspace_d
ea
mons
[
i
].
cnt
);
processes_wrong
+=
abs
(
abs
(
userspace_d
ae
mons
[
i
].
exp
)
-
userspace_d
ae
mons
[
i
].
cnt
);
}
/* save number of processes missing */
...
...
@@ -480,8 +480,8 @@ time_t wrsBootStatus_data_fill(void)
/* get loaded kernel modules */
get_loaded_kernel_modules_status
();
/* get info about running d
ea
mons */
get_d
ea
mons_status
();
/* get info about running d
ae
mons */
get_d
ae
mons_status
();
/* there was an update, return current time */
return
time_update
;
...
...
userspace/snmpd/wrsOSStatusGroup.c
View file @
1f2a404f
...
...
@@ -80,7 +80,7 @@ time_t wrsOSStatus_data_fill(void)
||
b
->
wrsBootLoadLM32
==
WRS_BOOT_LOAD_LM32_ERROR
||
b
->
wrsBootLoadLM32
==
WRS_BOOT_LOAD_LM32_FILE_NOT_FOUND
||
b
->
wrsBootKernelModulesMissing
>
0
/* contain number of missing modules */
||
b
->
wrsBootUserspaceDaemonsMissing
>
0
/* contain number of missing d
ea
mons */
||
b
->
wrsBootUserspaceDaemonsMissing
>
0
/* contain number of missing d
ae
mons */
)
{
wrsOSStatus_s
.
wrsBootSuccessful
=
WRS_BOOT_SUCCESSFUL_ERROR
;
...
...
userspace/wrsw_hal/hal_main.c
View file @
1f2a404f
...
...
@@ -69,7 +69,7 @@ static int hal_shutdown()
return
0
;
}
static
void
hal_d
ea
monize
();
static
void
hal_d
ae
monize
();
/* Main initialization function */
static
int
hal_init
()
...
...
@@ -105,13 +105,13 @@ static int hal_init()
shw_io_write
(
shw_io_led_state_g
,
1
);
if
(
daemon_mode
)
hal_d
ea
monize
();
hal_d
ae
monize
();
return
0
;
}
/* Turns a nice and well-behaving HAL into an evil servant of satan. */
static
void
hal_d
ea
monize
()
static
void
hal_d
ae
monize
()
{
pid_t
pid
,
sid
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment