acl-plugin: add a debug CLI to print 5-tuple structure in human readable format from... 86/9886/2
authorAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 20 Dec 2017 15:08:03 +0000 (16:08 +0100)
committerDave Wallace <dwallacelf@gmail.com>
Wed, 20 Dec 2017 16:37:16 +0000 (16:37 +0000)
Even though the trace now prints the hex as well as human readable format for acl plugin,
it can be handy to have a separate function which allows to decode the hex. So add this debug CLI.

Change-Id: I1db133a043374817ea9e94ae3736b8a98630669d
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
src/plugins/acl/acl.c
src/plugins/acl/fa_node.c
src/plugins/acl/fa_node.h

index 286b2e9..a869996 100644 (file)
@@ -2821,6 +2821,26 @@ acl_plugin_show_interface (acl_main_t * am, u32 sw_if_index, int show_acl)
 
 }
 
+
+static clib_error_t *
+acl_show_aclplugin_decode_5tuple_fn (vlib_main_t * vm,
+                                    unformat_input_t * input,
+                                    vlib_cli_command_t * cmd)
+{
+  clib_error_t *error = 0;
+  u64 five_tuple[6] = { 0, 0, 0, 0, 0, 0 };
+
+  if (unformat
+      (input, "%llx %llx %llx %llx %llx %llx", &five_tuple[0], &five_tuple[1],
+       &five_tuple[2], &five_tuple[3], &five_tuple[4], &five_tuple[5]))
+    vlib_cli_output (vm, "5-tuple structure decode: %U\n\n",
+                    format_acl_plugin_5tuple, five_tuple);
+  else
+    error = clib_error_return (0, "expecting 6 hex integers");
+  return error;
+}
+
+
 static clib_error_t *
 acl_show_aclplugin_interface_fn (vlib_main_t * vm,
                                 unformat_input_t * input,
@@ -3241,6 +3261,12 @@ VLIB_CLI_COMMAND (aclplugin_show_acl_command, static) = {
     .function = acl_show_aclplugin_acl_fn,
 };
 
+VLIB_CLI_COMMAND (aclplugin_show_decode_5tuple_command, static) = {
+    .path = "show acl-plugin decode 5tuple",
+    .short_help = "show acl-plugin decode 5tuple XXXX XXXX XXXX XXXX XXXX XXXX",
+    .function = acl_show_aclplugin_decode_5tuple_fn,
+};
+
 VLIB_CLI_COMMAND (aclplugin_show_interface_command, static) = {
     .path = "show acl-plugin interface",
     .short_help = "show acl-plugin interface [sw_if_index N] [acl]",
index 9c3db8d..59eb9df 100644 (file)
@@ -58,6 +58,12 @@ format_fa_5tuple (u8 * s, va_list * args)
                 p5t->pkt.flags_reserved);
 }
 
+u8 *
+format_acl_plugin_5tuple (u8 * s, va_list * args)
+{
+  return format_fa_5tuple(s, args);
+}
+
 /* packet trace format function */
 static u8 *
 format_acl_fa_trace (u8 * s, va_list * args)
index fa9a230..4f2d39b 100644 (file)
@@ -170,5 +170,6 @@ void acl_fa_enable_disable(u32 sw_if_index, int is_input, int enable_disable);
 
 void show_fa_sessions_hash(vlib_main_t * vm, u32 verbose);
 
+u8 *format_acl_plugin_5tuple (u8 * s, va_list * args);
 
 #endif