acl: API cleanup
[vpp.git] / src / plugins / acl / manual_fns.h
index bc0ad92..700fb68 100644 (file)
 
 #include <vnet/ip/format.h>
 #include <vnet/ethernet/ethernet.h>
+#include <vnet/ip/ip_types_api.h>
+
+#define vl_endianfun            /* define message structures */
+#include <acl/acl_types.api.h>
+#undef vl_endianfun
 
 /* Macro to finish up custom dump fns */
 #define PRINT_S \
@@ -120,6 +125,57 @@ format_acl_action(u8 *s, u8 action)
   return(s);
 }
 
+static inline void *
+vl_api_acl_rule_t_print (vl_api_acl_rule_t * a, void *handle)
+{
+  u8 *s;
+  fib_prefix_t src, dst;
+
+  ip_prefix_decode (&a->src_prefix, &src);
+  ip_prefix_decode (&a->dst_prefix, &dst);
+
+  s = format (0, "  %s ", a->src_prefix.address.af ? "ipv6" : "ipv4");
+  s = format_acl_action (s, a->is_permit);
+  s = format (s, " \\\n");
+
+  s = format (s, "    src %U dst %U \\\n",
+              format_fib_prefix, &src,
+              format_fib_prefix, &dst);
+  s = format (s, "    proto %d \\\n", a->proto);
+  s = format (s, "    sport %d-%d dport %d-%d \\\n",
+             clib_net_to_host_u16 (a->srcport_or_icmptype_first),
+             clib_net_to_host_u16 (a->srcport_or_icmptype_last),
+             clib_net_to_host_u16 (a->dstport_or_icmpcode_first),
+             clib_net_to_host_u16 (a->dstport_or_icmpcode_last));
+
+  s = format (s, "    tcpflags %u mask %u, \\",
+             a->tcp_flags_value, a->tcp_flags_mask);
+  PRINT_S;
+  return handle;
+}
+
+static inline void *
+vl_api_macip_acl_rule_t_print (vl_api_macip_acl_rule_t * a, void *handle)
+{
+  u8 *s;
+  fib_prefix_t src;
+
+  ip_prefix_decode (&a->src_prefix, &src);
+
+  s = format (0, "  %s %s \\\n", a->src_prefix.address.af ? "ipv6" : "ipv4",
+              a->is_permit ? "permit" : "deny");
+
+  s = format (s, "    src mac %U mask %U \\\n",
+             format_ethernet_address, a->src_mac,
+             format_ethernet_address, a->src_mac_mask);
+
+  s = format (s, "    src ip %U, \\",
+               format_fib_prefix, &src);
+
+  PRINT_S;
+  return handle;
+}
+
 static inline void *
 vl_api_acl_add_replace_t_print (vl_api_acl_add_replace_t * a, void *handle)
 {