diff options
author | Marek Lindner <lindner_marek@yahoo.de> | 2011-12-10 19:45:53 +0800 |
---|---|---|
committer | Marek Lindner <lindner_marek@yahoo.de> | 2012-02-17 02:50:20 +0800 |
commit | d419be1fd1e4417adc833365a3b69d0968c27c3f (patch) | |
tree | b52c9fe94e4ba947f320525b6fbe8dc4051e31c6 /net/batman-adv/main.c | |
parent | 01c4224b51feba2ba64d070ab9f4aa32c9d0bb29 (diff) |
batman-adv: allowing changing the routing algorithm via module parameter
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Diffstat (limited to 'net/batman-adv/main.c')
-rw-r--r-- | net/batman-adv/main.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index bcc2bddd893..8ae497b26bd 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -256,6 +256,30 @@ int bat_algo_seq_print_text(struct seq_file *seq, void *offset) return 0; } +static int param_set_ra(const char *val, const struct kernel_param *kp) +{ + struct bat_algo_ops *bat_algo_ops; + + bat_algo_ops = bat_algo_get((char *)val); + if (!bat_algo_ops) { + pr_err("Routing algorithm '%s' is not supported\n", val); + return -EINVAL; + } + + return param_set_copystring(val, kp); +} + +static const struct kernel_param_ops param_ops_ra = { + .set = param_set_ra, + .get = param_get_string, +}; + +static struct kparam_string __param_string_ra = { + .maxlen = sizeof(bat_routing_algo), + .string = bat_routing_algo, +}; + +module_param_cb(routing_algo, ¶m_ops_ra, &__param_string_ra, 0644); module_init(batman_init); module_exit(batman_exit); |