diff options
author | Jiri Pirko <jiri@resnulli.us> | 2014-09-05 09:51:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-09-09 14:29:55 -0400 |
commit | ced8283f90b88bbf7ec9a6b869586b611167394e (patch) | |
tree | f5d4cef8cda47d2f7a71ecae16570afc61ec417f /net/bridge | |
parent | 0f49579a39533bf839b2af807b094fc652f9e49b (diff) |
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: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_netlink.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index cb5fcf62f663..80d23471743f 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
@@ -461,6 +461,19 @@ static int br_dev_newlink(struct net *src_net, struct net_device *dev, | |||
461 | return register_netdevice(dev); | 461 | return register_netdevice(dev); |
462 | } | 462 | } |
463 | 463 | ||
464 | static int br_port_fill_slave_info(struct sk_buff *skb, | ||
465 | const struct net_device *brdev, | ||
466 | const struct net_device *dev) | ||
467 | { | ||
468 | return br_port_fill_attrs(skb, br_port_get_rtnl(dev)); | ||
469 | } | ||
470 | |||
471 | static size_t br_port_get_slave_size(const struct net_device *brdev, | ||
472 | const struct net_device *dev) | ||
473 | { | ||
474 | return br_port_info_size(); | ||
475 | } | ||
476 | |||
464 | static size_t br_get_link_af_size(const struct net_device *dev) | 477 | static size_t br_get_link_af_size(const struct net_device *dev) |
465 | { | 478 | { |
466 | struct net_port_vlans *pv; | 479 | struct net_port_vlans *pv; |
@@ -485,12 +498,14 @@ static struct rtnl_af_ops br_af_ops = { | |||
485 | }; | 498 | }; |
486 | 499 | ||
487 | struct rtnl_link_ops br_link_ops __read_mostly = { | 500 | struct rtnl_link_ops br_link_ops __read_mostly = { |
488 | .kind = "bridge", | 501 | .kind = "bridge", |
489 | .priv_size = sizeof(struct net_bridge), | 502 | .priv_size = sizeof(struct net_bridge), |
490 | .setup = br_dev_setup, | 503 | .setup = br_dev_setup, |
491 | .validate = br_validate, | 504 | .validate = br_validate, |
492 | .newlink = br_dev_newlink, | 505 | .newlink = br_dev_newlink, |
493 | .dellink = br_dev_delete, | 506 | .dellink = br_dev_delete, |
507 | .get_slave_size = br_port_get_slave_size, | ||
508 | .fill_slave_info = br_port_fill_slave_info, | ||
494 | }; | 509 | }; |
495 | 510 | ||
496 | int __init br_netlink_init(void) | 511 | int __init br_netlink_init(void) |