mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
76 lines
1.2 KiB
Bash
76 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
. /lib/functions.sh
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
COUNT=1
|
|
SUPPORTED_MODE="/etc/netmodes/supported_modes.json"
|
|
|
|
if [ ! -f "/etc/config/netmode" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ ! -f "${SUPPORTED_MODE}" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
configure_supp_modes()
|
|
{
|
|
local obj inst name description args
|
|
|
|
obj="${1}"
|
|
inst="${2}"
|
|
|
|
if [ -z "${inst}" ]; then
|
|
return 0
|
|
fi
|
|
|
|
json_select ${inst}
|
|
json_get_var name name
|
|
json_get_var description description
|
|
json_get_values args args
|
|
|
|
if [ -d "/etc/netmodes/${name}" ]; then
|
|
uci -q set netmode.mode_${COUNT}=supported_modes
|
|
uci -q set netmode.mode_${COUNT}.name="${name}"
|
|
uci -q set netmode.mode_${COUNT}.description="${description}"
|
|
|
|
for arg in ${args}; do
|
|
uci -q add_list netmode.mode_${COUNT}.args="${arg}"
|
|
done
|
|
fi
|
|
|
|
json_select ..
|
|
COUNT="$((COUNT + 1))"
|
|
}
|
|
|
|
remove_mode()
|
|
{
|
|
uci -q delete netmode.${1}
|
|
}
|
|
|
|
cleanup_modes()
|
|
{
|
|
config_load "netmode"
|
|
config_foreach remove_mode supported_modes
|
|
}
|
|
|
|
update_modes()
|
|
{
|
|
local mode
|
|
|
|
json_init
|
|
json_load_file "${SUPPORTED_MODE}"
|
|
json_get_var mode mode ""
|
|
|
|
if [ -n "${mode}" ]; then
|
|
uci -q set netmode.global.mode="${mode}"
|
|
fi
|
|
|
|
|
|
json_for_each_item configure_supp_modes supported_modes
|
|
|
|
}
|
|
|
|
cleanup_modes
|
|
update_modes
|