Lines Matching defs:vrf
3 * vrf.c: device driver to encapsulate a VRF space
41 #define DRV_NAME "vrf"
67 * and it is increased by one when the second vrf is associated to a
84 * Conversely, shared_tables is decreased when a vrf is de-associated
103 /* per netns vrf data */
182 struct net_vrf *vrf;
187 vrf = list_first_entry(me_head, struct net_vrf, me_list);
189 return vrf->ifindex;
261 struct net_vrf *vrf = netdev_priv(dev);
263 u32 table_id = vrf->tb_id;
287 * least) a vrf registered on the specific table.
302 list_add(&vrf->me_list, &me->vrf_list);
320 struct net_vrf *vrf = netdev_priv(dev);
321 u32 table_id = vrf->tb_id;
331 list_del(&vrf->me_list);
347 /* return the vrf device index associated with the table_id */
685 * hooks and packet sockets with skb->dev set to vrf device.
690 struct net_vrf *vrf = netdev_priv(vrf_dev);
696 rt6 = rcu_dereference(vrf->rt6);
791 static void vrf_rt6_release(struct net_device *dev, struct net_vrf *vrf)
793 struct rt6_info *rt6 = rtnl_dereference(vrf->rt6);
797 RCU_INIT_POINTER(vrf->rt6, NULL);
815 struct net_vrf *vrf = netdev_priv(dev);
824 vrf->fib6_table = fib6_new_table(net, vrf->tb_id);
825 if (!vrf->fib6_table)
835 rcu_assign_pointer(vrf->rt6, rt6);
849 static void vrf_rt6_release(struct net_device *dev, struct net_vrf *vrf)
915 * hooks and packet sockets with skb->dev set to vrf device.
920 struct net_vrf *vrf = netdev_priv(vrf_dev);
926 rth = rcu_dereference(vrf->rth);
1038 static void vrf_rtable_release(struct net_device *dev, struct net_vrf *vrf)
1040 struct rtable *rth = rtnl_dereference(vrf->rth);
1044 RCU_INIT_POINTER(vrf->rth, NULL);
1061 struct net_vrf *vrf = netdev_priv(dev);
1064 if (!fib_new_table(dev_net(dev), vrf->tb_id))
1074 rcu_assign_pointer(vrf->rth, rth);
1108 * The vrf device acts as the loopback for the vrf.
1163 struct net_vrf *vrf = netdev_priv(dev);
1165 vrf_rtable_release(dev, vrf);
1166 vrf_rt6_release(dev, vrf);
1171 struct net_vrf *vrf = netdev_priv(dev);
1188 vrf_rtable_release(dev, vrf);
1205 struct net_vrf *vrf = netdev_priv(dev);
1207 return vrf->tb_id;
1326 struct net_vrf *vrf = netdev_priv(dev);
1328 return ip6_pol_route(net, vrf->fib6_table, ifindex, fl6, skb, flags);
1658 /* don't acquire vrf device's netif_tx_lock when transmitting */
1661 /* don't allow vrf devices to change network namespaces. */
1664 /* does not make sense for a VLAN to be added to a vrf device */
1724 struct net_vrf *vrf = netdev_priv(dev);
1735 vrf->tb_id = nla_get_u32(data[IFLA_VRF_TABLE]);
1736 if (vrf->tb_id == RT_TABLE_UNSPEC) {
1748 /* mapping between table_id and vrf;
1752 vrf->ifindex = dev->ifindex;
1786 struct net_vrf *vrf = netdev_priv(dev);
1788 return nla_put_u32(skb, IFLA_VRF_TABLE, vrf->tb_id);
1801 struct net_vrf *vrf = netdev_priv(vrf_dev);
1803 if (nla_put_u32(skb, IFLA_VRF_PORT_TABLE, vrf->tb_id))
1900 * to 1:1 association between a vrf with its table.
1962 nn_vrf->ctl_hdr = register_net_sysctl_sz(net, "net/vrf", table,