babeld: Take interface name from "option ifname"

Previously, we were using the name of the section as the interface name,
but this has several drawbacks:

- no "-" or other special characters are allowed in a section name,
  preventing some physical interface names to be specified this way
  (e.g. "tun-topeka" would not work)
- it is harder to support default interface options (no interface name)

This change is not backward compatible, but a later commit will fix that.
This commit is contained in:
Baptiste Jonglez 2014-08-29 08:43:17 +02:00
parent a4f5570e79
commit 539de92a4c

View file

@ -102,11 +102,17 @@ babel_config_cb() {
} }
;; ;;
"interface") "interface")
local _ifname
config_get _ifname "$section" 'ifname'
# Try to resolve the logical interface name
unset interface unset interface
network_get_device interface "$section" || interface="$section" network_get_device interface "$_ifname" || interface="$_ifname"
option_cb() { option_cb() {
local option="$1" local option="$1"
local value="$2" local value="$2"
# "option ifname" is a special option, don't actually
# generate configuration for it.
[ "$option" = "ifname" ] && return
cfg_append "interface $interface ${option//_/-} $value" cfg_append "interface $interface ${option//_/-} $value"
} }
# Handle ignore options. # Handle ignore options.