Lines Matching defs:vrf

3  * vrf.c: device driver to encapsulate a VRF space
39 #define DRV_NAME "vrf"
65 * and it is increased by one when the second vrf is associated to a
82 * Conversely, shared_tables is decreased when a vrf is de-associated
101 /* per netns vrf data */
190 struct net_vrf *vrf;
195 vrf = list_first_entry(me_head, struct net_vrf, me_list);
197 return vrf->ifindex;
269 struct net_vrf *vrf = netdev_priv(dev);
271 u32 table_id = vrf->tb_id;
295 * least) a vrf registered on the specific table.
310 list_add(&vrf->me_list, &me->vrf_list);
328 struct net_vrf *vrf = netdev_priv(dev);
329 u32 table_id = vrf->tb_id;
339 list_del(&vrf->me_list);
355 /* return the vrf device index associated with the table_id */
698 * hooks and packet sockets with skb->dev set to vrf device.
703 struct net_vrf *vrf = netdev_priv(vrf_dev);
709 rt6 = rcu_dereference(vrf->rt6);
804 static void vrf_rt6_release(struct net_device *dev, struct net_vrf *vrf)
806 struct rt6_info *rt6 = rtnl_dereference(vrf->rt6);
810 RCU_INIT_POINTER(vrf->rt6, NULL);
828 struct net_vrf *vrf = netdev_priv(dev);
837 vrf->fib6_table = fib6_new_table(net, vrf->tb_id);
838 if (!vrf->fib6_table)
848 rcu_assign_pointer(vrf->rt6, rt6);
862 static void vrf_rt6_release(struct net_device *dev, struct net_vrf *vrf)
935 * hooks and packet sockets with skb->dev set to vrf device.
940 struct net_vrf *vrf = netdev_priv(vrf_dev);
946 rth = rcu_dereference(vrf->rth);
1058 static void vrf_rtable_release(struct net_device *dev, struct net_vrf *vrf)
1060 struct rtable *rth = rtnl_dereference(vrf->rth);
1064 RCU_INIT_POINTER(vrf->rth, NULL);
1081 struct net_vrf *vrf = netdev_priv(dev);
1084 if (!fib_new_table(dev_net(dev), vrf->tb_id))
1094 rcu_assign_pointer(vrf->rth, rth);
1128 * The vrf device acts as the loopback for the vrf.
1183 struct net_vrf *vrf = netdev_priv(dev);
1185 vrf_rtable_release(dev, vrf);
1186 vrf_rt6_release(dev, vrf);
1194 struct net_vrf *vrf = netdev_priv(dev);
1215 vrf_rtable_release(dev, vrf);
1235 struct net_vrf *vrf = netdev_priv(dev);
1237 return vrf->tb_id;
1300 struct net_vrf *vrf = netdev_priv(dev);
1302 return ip6_pol_route(net, vrf->fib6_table, ifindex, fl6, skb, flags);
1615 /* don't acquire vrf device's netif_tx_lock when transmitting */
1618 /* don't allow vrf devices to change network namespaces. */
1621 /* does not make sense for a VLAN to be added to a vrf device */
1679 struct net_vrf *vrf = netdev_priv(dev);
1690 vrf->tb_id = nla_get_u32(data[IFLA_VRF_TABLE]);
1691 if (vrf->tb_id == RT_TABLE_UNSPEC) {
1703 /* mapping between table_id and vrf;
1707 vrf->ifindex = dev->ifindex;
1741 struct net_vrf *vrf = netdev_priv(dev);
1743 return nla_put_u32(skb, IFLA_VRF_TABLE, vrf->tb_id);
1756 struct net_vrf *vrf = netdev_priv(vrf_dev);
1758 if (nla_put_u32(skb, IFLA_VRF_PORT_TABLE, vrf->tb_id))
1855 * to 1:1 association between a vrf with its table.
1917 nn_vrf->ctl_hdr = register_net_sysctl(net, "net/vrf", table);