summaryrefslogtreecommitdiff
path: root/zebra/zebra_ns.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_ns.c')
-rw-r--r--zebra/zebra_ns.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/zebra/zebra_ns.c b/zebra/zebra_ns.c
index 4e51437337..4e23ca2f03 100644
--- a/zebra/zebra_ns.c
+++ b/zebra/zebra_ns.c
@@ -229,3 +229,25 @@ int zebra_ns_config_write(struct vty *vty, struct ns *ns)
vty_out(vty, " netns %s\n", ns->name);
return 0;
}
+
+void zebra_ns_list_walk(int (*exec_for_each_zns)(struct zebra_ns *zns,
+ void *param_in,
+ void **param_out),
+ void *param_in,
+ void **param_out)
+{
+ struct ns *ns;
+ struct zebra_ns *zns;
+ int ret;
+
+ RB_FOREACH (ns, ns_head, &ns_tree) {
+ zns = (struct zebra_ns *)ns->info;
+ if (!zns && ns->ns_id == NS_DEFAULT)
+ zns = zebra_ns_lookup(ns->ns_id);
+ if (!zns)
+ continue;
+ ret = exec_for_each_zns(zns, param_in, param_out);
+ if (ret == ZNS_WALK_STOP)
+ return;
+ }
+}