package babeld
-# Configuration set in this file ends up in /var/etc/babeld.conf.
-# Babeld is told to use both /etc/babeld.conf and /var/etc/babeld.conf, so
-# you can use one or the other, or even both at the same time. If an
-# option is defined in both files, the version in /var/etc/babeld.conf
-# takes precedence.
+# Babeld reads options from the following files (the last one takes precedence
+# if an option is defined in several places):
+# - the file defined by the option conf_file (default: /etc/babeld.conf),
+# - *.conf files in the directory defined by conf_dir (default: /tmp/babel.d/),
+# - this UCI configuration file.
# See "man babeld" for all available options ("Global options").
# Important: remember to use '_' instead of '-' in option names.
## import-table statement, "option import_table 42" should work.
# list 'import_table' '42'
# list 'import_table' '100'
+ ## Alternative configuration file and directory.
+ ## See comment at the top of this file for more details.
+ # option 'conf_file' '/etc/babeld.conf'
+ # option 'conf_dir' '/tmp/babel.d/'
config interface
## Remove this line to enable babeld on this interface
# Options to ignore for the global section (old options that are translated
# for backward compatibility with old configuration files)
-ignored_options="carrier_sense assume_wireless no_split_horizon random_router_id multicast_address port hello_interval wired_hello_interval smoothing_half_time duplication_priority local_server conf_file"
+ignored_options="carrier_sense assume_wireless no_split_horizon random_router_id multicast_address port hello_interval wired_hello_interval smoothing_half_time duplication_priority local_server conf_file conf_dir"
# Append a line to the configuration file
cfg_append() {
[ "$_bool" -eq 1 ] && add_default_option "wired" "false"
config_get_bool _bool "$section" 'no_split_horizon' 0
[ "$_bool" -eq 1 ] && add_default_option "split_horizon" "false"
+ # Configure alternative configuration file and directory
+ local conf_file
+ config_get conf_file "$section" "conf_file"
+ [ -n "$conf_file" ] && OTHERCONFIGFILE="$conf_file"
+ local conf_dir
+ config_get conf_dir "$section" "conf_dir"
+ [ -n "$conf_dir" ] && OTHERCONFIGDIR="$conf_dir"
}
babel_filter() {