base-files-network: add a fixup_interface function like with the netifd compatibility scripts - allows selective fixup of individual interface sections instead of having to do the full scan_interfaces

SVN-Revision: 31543
v19.07.3_mercusys_ac12_duma
Felix Fietkau 12 years ago
parent 8a790d9730
commit 4ea86b956c

@ -48,34 +48,40 @@ find_config() {
return 1;
}
scan_interfaces() {
local cfgfile="${1:-network}"
interfaces=
config_cb() {
case "$1" in
interface)
config_set "$2" auto 1
;;
esac
fixup_interface() {
local iftype ifname device proto
config_get iftype "$CONFIG_SECTION" TYPE
local __cfg="$1"
config_get iftype "$__cfg" TYPE
case "$iftype" in
interface)
append interfaces "$CONFIG_SECTION"
config_get proto "$CONFIG_SECTION" proto
config_get iftype "$CONFIG_SECTION" type
config_get ifname "$CONFIG_SECTION" ifname
config_get device "$CONFIG_SECTION" device "$ifname"
config_set "$CONFIG_SECTION" device "$device"
append interfaces "$__cfg"
config_get proto "$__cfg" proto
config_get iftype "$__cfg" type
config_get ifname "$__cfg" ifname
config_get device "$__cfg" device "$ifname"
config_set "$__cfg" device "$device"
case "$iftype" in
bridge)
config_set "$CONFIG_SECTION" ifnames "$device"
config_set "$CONFIG_SECTION" ifname br-"$CONFIG_SECTION"
config_set "$__cfg" ifnames "$device"
config_set "$__cfg" ifname br-"$CONFIG_SECTION"
;;
esac
( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$CONFIG_SECTION'"
( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$__cfg'"
;;
esac
}
scan_interfaces() {
local cfgfile="${1:-network}"
interfaces=
config_cb() {
case "$1" in
interface)
config_set "$2" auto 1
;;
esac
fixup_interface "$CONFIG_SECTION"
}
config_load "${cfgfile}"
}

Loading…
Cancel
Save