[patch net-next 04/10] net: Add netif_is_vrf_master helper
From: Jiri Pirko <jiri@resnulli.us>
Date: 2017-03-13 07:38:40
Subsystem:
networking drivers, networking [general], the rest, vrf · Maintainers:
Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds, David Ahern
From: Ido Schimmel <redacted> Drivers capable of offloading VRF configurations need to know the ports are enslaved to an actual VRF device and not some other L3 master. Add a flag to indicate netdev is a VRF master and a corresponding helper. Signed-off-by: Ido Schimmel <redacted> Signed-off-by: Jiri Pirko <redacted> --- drivers/net/vrf.c | 2 +- include/linux/netdevice.h | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index 22379da..5c9a98e 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c@@ -1257,7 +1257,7 @@ static int vrf_newlink(struct net *src_net, struct net_device *dev, if (vrf->tb_id == RT_TABLE_UNSPEC) return -EINVAL; - dev->priv_flags |= IFF_L3MDEV_MASTER; + dev->priv_flags |= IFF_L3MDEV_MASTER | IFF_VRF_MASTER; err = register_netdevice(dev); if (err)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 97456b25..7908d31 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h@@ -1356,6 +1356,7 @@ struct net_device_ops { * @IFF_PHONY_HEADROOM: the headroom value is controlled by an external * entity (i.e. the master device for bridged veth) * @IFF_MACSEC: device is a MACsec device + * @IFF_VRF_MASTER: device is a VRF master device */ enum netdev_priv_flags { IFF_802_1Q_VLAN = 1<<0,
@@ -1386,6 +1387,7 @@ enum netdev_priv_flags { IFF_RXFH_CONFIGURED = 1<<25, IFF_PHONY_HEADROOM = 1<<26, IFF_MACSEC = 1<<27, + IFF_VRF_MASTER = 1<<28, }; #define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
@@ -1415,6 +1417,7 @@ enum netdev_priv_flags { #define IFF_TEAM IFF_TEAM #define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED #define IFF_MACSEC IFF_MACSEC +#define IFF_VRF_MASTER IFF_VRF_MASTER /** * struct net_device - The DEVICE structure.
@@ -4155,6 +4158,11 @@ static inline bool netif_supports_nofcs(struct net_device *dev) return dev->priv_flags & IFF_SUPP_NOFCS; } +static inline bool netif_is_vrf_master(const struct net_device *dev) +{ + return dev->priv_flags & IFF_VRF_MASTER; +} + static inline bool netif_is_l3_master(const struct net_device *dev) { return dev->priv_flags & IFF_L3MDEV_MASTER;
--
2.7.4