Lines Matching refs:vmap

109 	struct vrf_map vmap;  member
145 return &nn_vrf->vmap; in netns_vrf_map()
191 static struct vrf_map_elem *vrf_map_lookup_elem(struct vrf_map *vmap, in vrf_map_lookup_elem() argument
198 hash_for_each_possible(vmap->ht, me, hnode, key) { in vrf_map_lookup_elem()
206 static void vrf_map_add_elem(struct vrf_map *vmap, struct vrf_map_elem *me) in vrf_map_add_elem() argument
212 hash_add(vmap->ht, &me->hnode, key); in vrf_map_add_elem()
220 static void vrf_map_lock(struct vrf_map *vmap) __acquires(&vmap->vmap_lock) in vrf_map_lock() argument
222 spin_lock(&vmap->vmap_lock); in vrf_map_lock()
225 static void vrf_map_unlock(struct vrf_map *vmap) __releases(&vmap->vmap_lock) in vrf_map_unlock() argument
227 spin_unlock(&vmap->vmap_lock); in vrf_map_unlock()
234 struct vrf_map *vmap = netns_vrf_map_by_dev(dev); in vrf_map_register_dev() local
251 vrf_map_lock(vmap); in vrf_map_register_dev()
253 me = vrf_map_lookup_elem(vmap, table_id); in vrf_map_register_dev()
256 vrf_map_add_elem(vmap, me); in vrf_map_register_dev()
264 if (vmap->strict_mode) { in vrf_map_register_dev()
274 ++vmap->shared_tables; in vrf_map_register_dev()
281 vrf_map_unlock(vmap); in vrf_map_register_dev()
293 struct vrf_map *vmap = netns_vrf_map_by_dev(dev); in vrf_map_unregister_dev() local
299 vrf_map_lock(vmap); in vrf_map_unregister_dev()
301 me = vrf_map_lookup_elem(vmap, table_id); in vrf_map_unregister_dev()
309 --vmap->shared_tables; in vrf_map_unregister_dev()
318 vrf_map_unlock(vmap); in vrf_map_unregister_dev()
324 struct vrf_map *vmap = netns_vrf_map(net); in vrf_ifindex_lookup_by_table_id() local
328 vrf_map_lock(vmap); in vrf_ifindex_lookup_by_table_id()
330 if (!vmap->strict_mode) { in vrf_ifindex_lookup_by_table_id()
335 me = vrf_map_lookup_elem(vmap, table_id); in vrf_ifindex_lookup_by_table_id()
344 vrf_map_unlock(vmap); in vrf_ifindex_lookup_by_table_id()
1835 static int vrf_map_init(struct vrf_map *vmap) in vrf_map_init() argument
1837 spin_lock_init(&vmap->vmap_lock); in vrf_map_init()
1838 hash_init(vmap->ht); in vrf_map_init()
1840 vmap->strict_mode = false; in vrf_map_init()
1846 static bool vrf_strict_mode(struct vrf_map *vmap) in vrf_strict_mode() argument
1850 vrf_map_lock(vmap); in vrf_strict_mode()
1851 strict_mode = vmap->strict_mode; in vrf_strict_mode()
1852 vrf_map_unlock(vmap); in vrf_strict_mode()
1857 static int vrf_strict_mode_change(struct vrf_map *vmap, bool new_mode) in vrf_strict_mode_change() argument
1862 vrf_map_lock(vmap); in vrf_strict_mode_change()
1864 cur_mode = &vmap->strict_mode; in vrf_strict_mode_change()
1872 if (vmap->shared_tables) { in vrf_strict_mode_change()
1887 vrf_map_unlock(vmap); in vrf_strict_mode_change()
1896 struct vrf_map *vmap = netns_vrf_map(net); in vrf_shared_table_handler() local
1909 proc_strict_mode = vrf_strict_mode(vmap); in vrf_shared_table_handler()
1914 ret = vrf_strict_mode_change(vmap, (bool)proc_strict_mode); in vrf_shared_table_handler()
1978 vrf_map_init(&nn_vrf->vmap); in vrf_netns_init()