FIB: encode the label stack in the FIB path during table dump
[vpp.git] / src / vnet / fib / fib_urpf_list.c
index 263812a..a895729 100644 (file)
 fib_urpf_list_t *fib_urpf_list_pool;
 
 u8 *
-format_fib_urpf_list (u8 *s, va_list args)
+format_fib_urpf_list (u8 *s, va_list *args)
 {
     fib_urpf_list_t *urpf;
     index_t ui;
     u32 *swi;
 
-    ui = va_arg(args, index_t);
-    urpf = fib_urpf_list_get(ui);
+    ui = va_arg(*args, index_t);
+
+    if (INDEX_INVALID != ui)
+    {
+        urpf = fib_urpf_list_get(ui);
 
-    s = format(s, "uPRF-list:%d len:%d itfs:[",
-              ui, vec_len(urpf->furpf_itfs));
+        s = format(s, "uPRF-list:%d len:%d itfs:[",
+                   ui, vec_len(urpf->furpf_itfs));
 
-    vec_foreach(swi, urpf->furpf_itfs)
+        vec_foreach(swi, urpf->furpf_itfs)
+        {
+            s = format(s, "%d, ", *swi);
+        }
+        s = format(s, "]");
+    }
+    else
     {
-       s = format(s, "%d, ", *swi);
+        s = format(s, "uRPF-list: None");
     }
-    s = format(s, "]");
 
     return (s);
 }
@@ -49,7 +57,7 @@ fib_urpf_list_alloc_and_lock (void)
     fib_urpf_list_t *urpf;
 
     pool_get(fib_urpf_list_pool, urpf);
-    memset(urpf, 0, sizeof(*urpf));
+    clib_memset(urpf, 0, sizeof(*urpf));
 
     urpf->furpf_locks++;