Commit ced8283f authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller

bridge: implement rtnl_link_ops->get_slave_size and rtnl_link_ops->fill_slave_info

Allow rtnetlink users to get port info in IFLA_INFO_SLAVE_DATA attr
Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0f49579a
...@@ -461,6 +461,19 @@ static int br_dev_newlink(struct net *src_net, struct net_device *dev, ...@@ -461,6 +461,19 @@ static int br_dev_newlink(struct net *src_net, struct net_device *dev,
return register_netdevice(dev); return register_netdevice(dev);
} }
static int br_port_fill_slave_info(struct sk_buff *skb,
const struct net_device *brdev,
const struct net_device *dev)
{
return br_port_fill_attrs(skb, br_port_get_rtnl(dev));
}
static size_t br_port_get_slave_size(const struct net_device *brdev,
const struct net_device *dev)
{
return br_port_info_size();
}
static size_t br_get_link_af_size(const struct net_device *dev) static size_t br_get_link_af_size(const struct net_device *dev)
{ {
struct net_port_vlans *pv; struct net_port_vlans *pv;
...@@ -485,12 +498,14 @@ static struct rtnl_af_ops br_af_ops = { ...@@ -485,12 +498,14 @@ static struct rtnl_af_ops br_af_ops = {
}; };
struct rtnl_link_ops br_link_ops __read_mostly = { struct rtnl_link_ops br_link_ops __read_mostly = {
.kind = "bridge", .kind = "bridge",
.priv_size = sizeof(struct net_bridge), .priv_size = sizeof(struct net_bridge),
.setup = br_dev_setup, .setup = br_dev_setup,
.validate = br_validate, .validate = br_validate,
.newlink = br_dev_newlink, .newlink = br_dev_newlink,
.dellink = br_dev_delete, .dellink = br_dev_delete,
.get_slave_size = br_port_get_slave_size,
.fill_slave_info = br_port_fill_slave_info,
}; };
int __init br_netlink_init(void) int __init br_netlink_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment