Punt: socket register for exception dispatched/punted packets based on reason
[vpp.git] / src / vlib / punt.c
index 09f30f4..7c2daf2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Cisco and/or its affiliates.
+ * Copyright (c) 2019 Cisco and/or its affiliates.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at:
@@ -366,6 +366,15 @@ vlib_punt_unregister (vlib_punt_hdl_t client,
   return (0);
 }
 
+int
+vlib_punt_reason_validate (vlib_punt_reason_t reason)
+{
+  if (reason < punt_reason_last)
+    return (0);
+
+  return (-1);
+}
+
 int
 vlib_punt_reason_alloc (vlib_punt_hdl_t client,
                        const char *reason_name, vlib_punt_reason_t * reason)
@@ -392,6 +401,17 @@ vlib_punt_reason_alloc (vlib_punt_hdl_t client,
   return (0);
 }
 
+void
+punt_reason_walk (punt_reason_walk_cb_t cb, void *ctx)
+{
+  punt_reason_data_t *pd;
+
+  vec_foreach (pd, punt_reason_data)
+  {
+    cb (pd->pd_reason, pd->pd_name, ctx);
+  }
+}
+
 /* Parse node name -> node index. */
 uword
 unformat_punt_client (unformat_input_t * input, va_list * args)