diff options
author | Jiri Pirko <jiri@resnulli.us> | 2014-06-26 03:58:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-01 17:40:17 -0400 |
commit | 5b9e7e1607956e2454ccbd94ccf5631309ade054 (patch) | |
tree | 0b0d12f60c183d72e4d34ce8c4cc9dd22de32f0c /net/openvswitch/vport-internal_dev.c | |
parent | b0ab2fabb5b91da99c189db02e91ae10bc8355c5 (diff) |
openvswitch: introduce rtnl ops stub
This stub now allows userspace to see IFLA_INFO_KIND for ovs master and
IFLA_INFO_SLAVE_KIND for slave.
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch/vport-internal_dev.c')
-rw-r--r-- | net/openvswitch/vport-internal_dev.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c index 789af9280e77..295471a66c78 100644 --- a/net/openvswitch/vport-internal_dev.c +++ b/net/openvswitch/vport-internal_dev.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <net/dst.h> | 27 | #include <net/dst.h> |
28 | #include <net/xfrm.h> | 28 | #include <net/xfrm.h> |
29 | #include <net/rtnetlink.h> | ||
29 | 30 | ||
30 | #include "datapath.h" | 31 | #include "datapath.h" |
31 | #include "vport-internal_dev.h" | 32 | #include "vport-internal_dev.h" |
@@ -121,6 +122,10 @@ static const struct net_device_ops internal_dev_netdev_ops = { | |||
121 | .ndo_get_stats64 = internal_dev_get_stats, | 122 | .ndo_get_stats64 = internal_dev_get_stats, |
122 | }; | 123 | }; |
123 | 124 | ||
125 | static struct rtnl_link_ops internal_dev_link_ops __read_mostly = { | ||
126 | .kind = "openvswitch", | ||
127 | }; | ||
128 | |||
124 | static void do_setup(struct net_device *netdev) | 129 | static void do_setup(struct net_device *netdev) |
125 | { | 130 | { |
126 | ether_setup(netdev); | 131 | ether_setup(netdev); |
@@ -131,6 +136,7 @@ static void do_setup(struct net_device *netdev) | |||
131 | netdev->priv_flags |= IFF_LIVE_ADDR_CHANGE; | 136 | netdev->priv_flags |= IFF_LIVE_ADDR_CHANGE; |
132 | netdev->destructor = internal_dev_destructor; | 137 | netdev->destructor = internal_dev_destructor; |
133 | netdev->ethtool_ops = &internal_dev_ethtool_ops; | 138 | netdev->ethtool_ops = &internal_dev_ethtool_ops; |
139 | netdev->rtnl_link_ops = &internal_dev_link_ops; | ||
134 | netdev->tx_queue_len = 0; | 140 | netdev->tx_queue_len = 0; |
135 | 141 | ||
136 | netdev->features = NETIF_F_LLTX | NETIF_F_SG | NETIF_F_FRAGLIST | | 142 | netdev->features = NETIF_F_LLTX | NETIF_F_SG | NETIF_F_FRAGLIST | |
@@ -248,3 +254,13 @@ struct vport *ovs_internal_dev_get_vport(struct net_device *netdev) | |||
248 | 254 | ||
249 | return internal_dev_priv(netdev)->vport; | 255 | return internal_dev_priv(netdev)->vport; |
250 | } | 256 | } |
257 | |||
258 | int ovs_internal_dev_rtnl_link_register(void) | ||
259 | { | ||
260 | return rtnl_link_register(&internal_dev_link_ops); | ||
261 | } | ||
262 | |||
263 | void ovs_internal_dev_rtnl_link_unregister(void) | ||
264 | { | ||
265 | rtnl_link_unregister(&internal_dev_link_ops); | ||
266 | } | ||