package babeld
+# Detailed documentation: https://openwrt.org/docs/guide-user/services/babeld
+
+# 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.
config general
- # option 'multicast_address' 'ff02:0:0:0:0:0:1:6'
- # option 'port' '6696'
- # option 'state_file' '/var/lib/babel-state'
- # option 'hello_interval' '4'
- # option 'wired_hello_interval' '20'
- # option 'diversity' '0,128'
- # option 'smoothing_half_time' '4'
- # option 'kernel_priority' '0'
- # Do not use this option unless you know what you are doing, as it can
- # cause persistent route flapping.
- ## option 'duplication_priority' '0'
- # option 'carrier_sense' 'false'
- # option 'assume_wireless' 'false'
- # option 'no_split_horizon' 'false'
- # option 'debug' '0'
- # Listen for connections from a front-end, e.g. on port 33123.
- ## option 'local_server' '33123'
- # option 'random_router_id' 'false'
- # Keep unfeasible routes
- ## option 'keep_unfeasible' 'false'
- # Use the given kernel routing table for routes inserted by babeld.
- ## option 'export_table' '0'
- # Export routes from the given kernel routing tables.
- ## list 'import_table' '0'
- ## list 'import_table' '42'
- # The configuration file is not necessary since you can do everything
- # from this file.
- # option 'conf_file' '/etc/babeld.conf'
+ # option 'random_id' 'true'
+ # option 'debug' '1'
+ # option 'local_port' '33123'
# option 'log_file' '/var/log/babeld.log'
+ ## Enable ipv6-subtrees by default since OpenWrt should ship with a
+ ## recent enough kernel for it to work.
+ option 'ipv6_subtrees' 'true'
+ # 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/'
+ # option 'ubus_bindings' 'false'
-# You can use aliases (like lan, wlan) or real names (like eth0.0).
-# If you use an alias, it must be already defined when babeld starts.
-# Otherwise, the name is taken literally and the interface can be
-# brought up later (useful for tunnels for instance).
-config interface wlan
- # Remove this line to enable babeld on this interface
+config interface
+ ## Remove this line to enable babeld on this interface
option 'ignore' 'true'
- # option 'wired' 'auto'
- # option 'link_quality' 'auto'
- # option 'split_horizon' 'auto'
- # The default is 96 for wired interfaces, and 256 for wireless ones
- ## option 'rxcost' '256'
- # The default is specified with the -h and -H command-line flags.
- ## option 'hello_interval' '4'
- # This can be set to a fairly large value, unless significant
- # packet loss is expected. The default is four times the hello
- # interval.
- ## option 'update_interval' '16'
- # Options to enable and configure RTT-based metric
- ## option 'enable_timestamps' 'false'
- ## option 'max_rtt_penalty' '0'
- ## option 'rtt_decay' '42'
- ## option 'rtt_min' '10'
- ## option 'rtt_max' '120'
+ ## You can use aliases (like lan, wlan) or real names (like eth0.0).
+ ## If you use an alias, it must be already defined when babeld starts.
+ ## Otherwise, the name is taken literally and the interface can be
+ ## brought up later (useful for tunnels for instance).
+ option 'ifname' 'wlan'
+ ## You can set options, see babeld man page ("Interface configuration")
+ # option 'rxcost' '256'
+ # option 'hello_interval' '1'
-config interface lan
+config interface
option 'ignore' 'true'
+ ## Physical interface name
+ option 'ifname' 'tun-example'
+ ## Specify the type of interface: tunnels use the RTT-based metric.
+ option 'type' 'tunnel'
+ ## Other options that can be overriden.
+ # option 'max_rtt_penalty' '96'
+
+# A config interface without "option ifname" will set default options
+# for all interfaces. Interface-specific configuration always overrides
+# default configuration.
+config interface
+ # option 'enable_timestamps' 'true'
+ # option 'update_interval' '30'
+
-# A filter consists in a type ('in', 'out' or 'redistribute'), an action
-# ('allow', 'deny' or 'metric xxx') and a set of selectors ('ip', 'eq',
-# etc.). See /etc/babeld.conf for more details.
-# Here is a sample filter wich redistributes the default route if its
-# protocol number is "boot", e.g. when it installed by dhcp. It is
-# disabled by default.
+# A filter consists of a type ('in', 'out', 'redistribute' or 'install'),
+# a set of selectors ('ip', 'eq', etc.) and a set of actions to perform
+# ('allow', 'deny', 'metric xxx', 'src-prefix xxx', 'table xxx', 'pref-src xxx').
+# See babeld man page ("Filtering rules") for more details.
+
+# Below is a sample filter that redistributes the default route if its
+# protocol number is "boot", e.g. when it is installed by dhcp (see
+# /etc/iproute2/rt_protos). This filter is disabled thanks to the 'ignore'
+# setting.
config filter
- option 'ignore' 'true'
- # Type
- option 'type' 'redistribute'
- # Selectors: ip, eq, le, ge, neigh, id, proto, local, if
- option 'ip' '0.0.0.0/0'
- option 'le' '0'
- option 'proto' '3'
- # Action
- option 'action' 'metric 128'
+ option 'ignore' 'true'
+ # Type of filter
+ option 'type' 'redistribute'
+ # Selectors: ip, eq, le, ge, src_ip, src_eq, src_le, src_ge, neigh, id,
+ # proto, local, if.
+ option 'ip' '0.0.0.0/0'
+ option 'eq' '0'
+ option 'proto' '3'
+ # Action, which can be any of: allow, deny, metric <NUMBER>, src-prefix <PREFIX>,
+ # table <ID>, pref-src <IP>.
+ # The action defaults to "allow" if not specified. Here, we specify a higher
+ # redistribution metric than the default (0).
+ option 'action' 'metric 128'
+# Another example filter: don't redistribute local addresses in a certain IP prefix.
+# By default, babeld redistributes *all* local addresses.
+config filter
+ option 'ignore' 'true'
+ option 'type' 'redistribute'
+ # Only apply to routes/addresses within this prefix.
+ option 'ip' '198.51.100.0/24'
+ # Notice that the 'local' selector is a boolean.
+ option 'local' 'true'
+ # Don't redistribute.
+ option 'action' 'deny'
+
+# Example install filter, to change or filter routes before they are inserted
+# into the kernel.
+config filter
+ option 'ignore' 'true'
+ option 'type' 'install'
+ # Optional: only apply to routes within 2001:db8:cafe::/48
+ option 'ip' '2001:db8:cafe::/48'
+ # We specify the kernel routing table and the preferred source address to use for these routes.
+ # "Allow" is implicit.
+ option 'action' 'table 200 pref-src 2001:db8:ba:be1::42'