mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
bridge: implement rtnl_link_ops->slave_changelink
Allow rtnetlink users to set port info via IFLA_INFO_SLAVE_DATA attr Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ced8283f90
commit
3ac636b859
@ -276,7 +276,7 @@ static int br_afspec(struct net_bridge *br,
|
||||
return err;
|
||||
}
|
||||
|
||||
static const struct nla_policy ifla_brport_policy[IFLA_BRPORT_MAX + 1] = {
|
||||
static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
|
||||
[IFLA_BRPORT_STATE] = { .type = NLA_U8 },
|
||||
[IFLA_BRPORT_COST] = { .type = NLA_U32 },
|
||||
[IFLA_BRPORT_PRIORITY] = { .type = NLA_U16 },
|
||||
@ -382,7 +382,7 @@ int br_setlink(struct net_device *dev, struct nlmsghdr *nlh)
|
||||
if (p && protinfo) {
|
||||
if (protinfo->nla_type & NLA_F_NESTED) {
|
||||
err = nla_parse_nested(tb, IFLA_BRPORT_MAX,
|
||||
protinfo, ifla_brport_policy);
|
||||
protinfo, br_port_policy);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -461,6 +461,16 @@ static int br_dev_newlink(struct net *src_net, struct net_device *dev,
|
||||
return register_netdevice(dev);
|
||||
}
|
||||
|
||||
static int br_port_slave_changelink(struct net_device *brdev,
|
||||
struct net_device *dev,
|
||||
struct nlattr *tb[],
|
||||
struct nlattr *data[])
|
||||
{
|
||||
if (!data)
|
||||
return 0;
|
||||
return br_setport(br_port_get_rtnl(dev), data);
|
||||
}
|
||||
|
||||
static int br_port_fill_slave_info(struct sk_buff *skb,
|
||||
const struct net_device *brdev,
|
||||
const struct net_device *dev)
|
||||
@ -504,6 +514,10 @@ struct rtnl_link_ops br_link_ops __read_mostly = {
|
||||
.validate = br_validate,
|
||||
.newlink = br_dev_newlink,
|
||||
.dellink = br_dev_delete,
|
||||
|
||||
.slave_maxtype = IFLA_BRPORT_MAX,
|
||||
.slave_policy = br_port_policy,
|
||||
.slave_changelink = br_port_slave_changelink,
|
||||
.get_slave_size = br_port_get_slave_size,
|
||||
.fill_slave_info = br_port_fill_slave_info,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user