diff options
author | Sven Eckelmann <sven@narfation.org> | 2020-10-11 12:25:24 +0200 |
---|---|---|
committer | Simon Wunderlich <sw@simonwunderlich.de> | 2020-12-04 08:40:52 +0100 |
commit | a5ad457eea41ef7209f3a1765f853a2c7f191131 (patch) | |
tree | 0bca594bc72c4b43bc42ce4704005d343c43672b /include | |
parent | 128254ceea6ffe59300d3cca6fc83b842048f4c4 (diff) | |
download | lwn-a5ad457eea41ef7209f3a1765f853a2c7f191131.tar.gz lwn-a5ad457eea41ef7209f3a1765f853a2c7f191131.zip |
batman-adv: Allow selection of routing algorithm over rtnetlink
A batadv net_device is associated to a B.A.T.M.A.N. routing algorithm. This
algorithm has to be selected before the interface is initialized and cannot
be changed after that. The only way to select this algorithm was a module
parameter which specifies the default algorithm used during the creation of
the net_device.
This module parameter is writeable over
/sys/module/batman_adv/parameters/routing_algo and thus allows switching of
the routing algorithm:
1. change routing_algo parameter
2. create new batadv net_device
But this is not race free because another process can be scheduled between
1 + 2 and in that time frame change the routing_algo parameter again.
It is much cleaner to directly provide this information inside the
rtnetlink's RTM_NEWLINK message. The two processes would be (in regards of
the creation parameter of their batadv interfaces) be isolated. This also
eases the integration of batadv devices inside tools like network-manager
or systemd-networkd which are not expecting to operate on /sys before a new
net_device is created.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/uapi/linux/batman_adv.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/uapi/linux/batman_adv.h b/include/uapi/linux/batman_adv.h index b05399d8a127..bdb317faa1dc 100644 --- a/include/uapi/linux/batman_adv.h +++ b/include/uapi/linux/batman_adv.h @@ -685,6 +685,12 @@ enum batadv_ifla_attrs { */ IFLA_BATADV_UNSPEC, + /** + * @IFLA_BATADV_ALGO_NAME: routing algorithm (name) which should be + * used by the newly registered batadv net_device. + */ + IFLA_BATADV_ALGO_NAME, + /* add attributes above here, update the policy in soft-interface.c */ /** |