mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 13:54:57 +08:00
a5ad457eea
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>
28 lines
820 B
C
28 lines
820 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (C) 2011-2020 B.A.T.M.A.N. contributors:
|
|
*
|
|
* Marek Lindner, Linus Lüssing
|
|
*/
|
|
|
|
#ifndef _NET_BATMAN_ADV_BAT_ALGO_H_
|
|
#define _NET_BATMAN_ADV_BAT_ALGO_H_
|
|
|
|
#include "main.h"
|
|
|
|
#include <linux/netlink.h>
|
|
#include <linux/seq_file.h>
|
|
#include <linux/skbuff.h>
|
|
#include <linux/types.h>
|
|
|
|
extern char batadv_routing_algo[];
|
|
extern struct list_head batadv_hardif_list;
|
|
|
|
void batadv_algo_init(void);
|
|
struct batadv_algo_ops *batadv_algo_get(const char *name);
|
|
int batadv_algo_register(struct batadv_algo_ops *bat_algo_ops);
|
|
int batadv_algo_select(struct batadv_priv *bat_priv, const char *name);
|
|
int batadv_algo_seq_print_text(struct seq_file *seq, void *offset);
|
|
int batadv_algo_dump(struct sk_buff *msg, struct netlink_callback *cb);
|
|
|
|
#endif /* _NET_BATMAN_ADV_BAT_ALGO_H_ */
|