babeld: Handle ignore options
This commit is contained in:
parent
84422673a4
commit
a4f5570e79
1 changed files with 18 additions and 4 deletions
|
@ -90,7 +90,7 @@ list_cb() {
|
||||||
option_cb "$@"
|
option_cb "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
config_cb() {
|
babel_config_cb() {
|
||||||
local type="$1"
|
local type="$1"
|
||||||
local section="$2"
|
local section="$2"
|
||||||
case "$type" in
|
case "$type" in
|
||||||
|
@ -109,9 +109,19 @@ config_cb() {
|
||||||
local value="$2"
|
local value="$2"
|
||||||
cfg_append "interface $interface ${option//_/-} $value"
|
cfg_append "interface $interface ${option//_/-} $value"
|
||||||
}
|
}
|
||||||
# Also include an empty "interface $interface" statement, so
|
# Handle ignore options.
|
||||||
# that babeld operates on this interface.
|
local _ignored
|
||||||
|
# This works because we loaded the whole configuration
|
||||||
|
# beforehand (see config_load below).
|
||||||
|
config_get_bool _ignored "$section" 'ignore' 0
|
||||||
|
if [ "$_ignored" -eq 1 ]
|
||||||
|
then
|
||||||
|
option_cb() { return; }
|
||||||
|
else
|
||||||
|
# Also include an empty "interface $interface" statement,
|
||||||
|
# so that babeld operates on this interface.
|
||||||
cfg_append "interface $interface"
|
cfg_append "interface $interface"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Don't use reset_cb, this would also reset config_cb
|
# Don't use reset_cb, this would also reset config_cb
|
||||||
|
@ -124,9 +134,13 @@ start() {
|
||||||
mkdir -p /var/lib
|
mkdir -p /var/lib
|
||||||
# Start by emptying the generated config file
|
# Start by emptying the generated config file
|
||||||
>"$CONFIGFILE"
|
>"$CONFIGFILE"
|
||||||
|
# First load the whole config file, without callbacks, so that we are
|
||||||
|
# aware of all "ignore" options in the second pass.
|
||||||
|
config_load babeld
|
||||||
# Parse general and interface sections thanks to the "config_cb()"
|
# Parse general and interface sections thanks to the "config_cb()"
|
||||||
# callback. This allows to loop over all options without having to
|
# callback. This allows to loop over all options without having to
|
||||||
# know their name in advance.
|
# know their name in advance.
|
||||||
|
config_cb() { babel_config_cb "$@"; }
|
||||||
config_load babeld
|
config_load babeld
|
||||||
# Parse filters separately, since we know which options we expect
|
# Parse filters separately, since we know which options we expect
|
||||||
config_foreach babel_filter filter
|
config_foreach babel_filter filter
|
||||||
|
|
Loading…
Reference in a new issue