]> git.baikalelectronics.ru Git - kernel.git/commitdiff
bridge: implement rtnl_link_ops->get_slave_size and rtnl_link_ops->fill_slave_info
authorJiri Pirko <jiri@resnulli.us>
Fri, 5 Sep 2014 13:51:29 +0000 (15:51 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Sep 2014 18:29:55 +0000 (11:29 -0700)
Allow rtnetlink users to get port info in IFLA_INFO_SLAVE_DATA attr

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_netlink.c

index cb5fcf62f66332d2ef9fb3f46260d43583713a1d..80d23471743f1967eea44652264e2b30c43877d8 100644 (file)
@@ -461,6 +461,19 @@ static int br_dev_newlink(struct net *src_net, struct net_device *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)
 {
        struct net_port_vlans *pv;
@@ -485,12 +498,14 @@ static struct rtnl_af_ops br_af_ops = {
 };
 
 struct rtnl_link_ops br_link_ops __read_mostly = {
-       .kind           = "bridge",
-       .priv_size      = sizeof(struct net_bridge),
-       .setup          = br_dev_setup,
-       .validate       = br_validate,
-       .newlink        = br_dev_newlink,
-       .dellink        = br_dev_delete,
+       .kind                   = "bridge",
+       .priv_size              = sizeof(struct net_bridge),
+       .setup                  = br_dev_setup,
+       .validate               = br_validate,
+       .newlink                = br_dev_newlink,
+       .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)