mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
73 lines
1.8 KiB
Bash
Executable file
73 lines
1.8 KiB
Bash
Executable file
#!/bin/sh /etc/rc.common
|
|
|
|
START=10
|
|
USE_PROCD=1
|
|
|
|
. /lib/functions.sh
|
|
|
|
MODEDIR="/etc/netmodes"
|
|
|
|
libnetmode_exec() {
|
|
when="$1"
|
|
# Execute /lib/netmode scripts
|
|
if [ -d /lib/netmode/$when ]; then
|
|
logger -s -p user.info -t "netmode" "Executing /lib/netmode/$when scripts"
|
|
for script in $(ls /lib/netmode/$when/); do
|
|
sh /lib/netmode/$when/$script
|
|
done
|
|
fi
|
|
}
|
|
|
|
start_service() {
|
|
[ -f /etc/config/netmode ] || return
|
|
|
|
config_load netmode
|
|
|
|
config_get_bool enabled global enabled '0'
|
|
[ $enabled -eq 0 ] && return
|
|
|
|
# Get the desired netmode from config
|
|
config_get mode global mode
|
|
# Check if netmode is set as boot environment parameter
|
|
[ -n "$mode" ] || mode="$(fw_printenv -n netmode 2>/dev/null)"
|
|
# Return if mode is not set
|
|
[ -n "$mode" ] || return
|
|
|
|
# Get the last saved mode
|
|
lastmode="$(cat /etc/netmodes/.last_mode 2>/dev/null)"
|
|
# Return if desired mode is same as last saved mode
|
|
[ "$mode" == "$lastmode" ] && return
|
|
|
|
# Save mode as last mode
|
|
echo "$mode" > /etc/netmodes/.last_mode
|
|
|
|
logger -s -p user.info -t "netmode" "Switching to $mode Mode" >/dev/console
|
|
|
|
# Execute netmode generic pre-mode-switch scripts
|
|
libnetmode_exec "pre"
|
|
|
|
# Copy netmode UCI config files
|
|
if [ -d $MODEDIR/$mode/uci ]; then
|
|
logger -s -p user.info -t "netmode" "Copying $MODEDIR/$mode/uci/* to /etc/config/"
|
|
cp $MODEDIR/$mode/uci/* /etc/config/ 2>/dev/null
|
|
fi
|
|
|
|
# Execute netmode generic scripts
|
|
libnetmode_exec
|
|
|
|
# Execute mode specific scripts
|
|
if [ -d $MODEDIR/$mode/scripts ]; then
|
|
logger -s -p user.info -t "netmode" "Executing $MODEDIR/$mode/scripts/* scripts"
|
|
for script in $(ls $MODEDIR/$mode/scripts/); do
|
|
sh $MODEDIR/$mode/scripts/$script
|
|
done
|
|
fi
|
|
|
|
# Execute netmode generic post-mode-switch scripts
|
|
libnetmode_exec "post"
|
|
}
|
|
|
|
service_triggers()
|
|
{
|
|
procd_add_reload_trigger netmode
|
|
}
|