bonding.c 1.45 KB
Newer Older
1
// SPDX-License-Identifier: GPL-2.0
2
/* Copyright (C) 2009-2019  B.A.T.M.A.N. contributors:
3 4 5 6 7 8 9
 *
 * Marek Lindner <mareklindner@neomailbox.ch>
 *
 * License-Filename: LICENSES/preferred/GPL-2.0
 */

#include "main.h"
10 11 12 13 14 15 16

#include <errno.h>
#include <linux/genetlink.h>
#include <netlink/genl/genl.h>

#include "batman_adv.h"
#include "netlink.h"
17 18
#include "sys.h"

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
static struct simple_boolean_data bonding;

static int print_bonding(struct nl_msg *msg, void *arg)
{
	return sys_simple_print_boolean(msg, arg, BATADV_ATTR_BONDING_ENABLED);
}

static int get_bonding(struct state *state)
{
	return sys_simple_nlquery(state, BATADV_CMD_GET_MESH,
				  NULL, print_bonding);
}

static int set_attrs_bonding(struct nl_msg *msg, void *arg)
{
	struct state *state = arg;
	struct settings_data *settings = state->cmd->arg;
	struct simple_boolean_data *data = settings->data;

	nla_put_u8(msg, BATADV_ATTR_BONDING_ENABLED, data->val);

	return 0;
}

static int set_bonding(struct state *state)
{
	return sys_simple_nlquery(state, BATADV_CMD_SET_MESH,
				  set_attrs_bonding, NULL);
}

49 50
static struct settings_data batctl_settings_bonding = {
	.sysfs_name = "bonding",
51 52 53 54
	.data = &bonding,
	.parse = parse_simple_boolean,
	.netlink_get = get_bonding,
	.netlink_set = set_bonding,
55 56
};

57
COMMAND_NAMED(SUBCOMMAND_MIF, bonding, "b", handle_sys_setting,
58 59
	      COMMAND_FLAG_MESH_IFACE | COMMAND_FLAG_NETLINK,
	      &batctl_settings_bonding,
60
	      "[0|1]             \tdisplay or modify bonding setting");