Skip to content

Commit

Permalink
bridge: implement rtnl_link_ops->slave_changelink
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Sep 9, 2014
1 parent ced8283 commit 3ac636b
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions net/bridge/br_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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,
};
Expand Down

0 comments on commit 3ac636b

Please sign in to comment.