gre: Move to new API generated types/messages 55/30155/2
authorNeale Ranns <nranns@cisco.com>
Thu, 26 Nov 2020 13:12:37 +0000 (13:12 +0000)
committerOle Tr�an <otroan@employees.org>
Thu, 26 Nov 2020 14:59:55 +0000 (14:59 +0000)
Type: improvement

also clean up GRE includes across the code base.

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I90928b0da3927b7ca1a23683aa80d4b53bbf63fd

src/plugins/nsh/nsh_pop.c
src/vat/api_format.c
src/vnet/gre/gre.h
src/vnet/gre/gre_api.c
src/vnet/ipsec/esp_decrypt.c
src/vnet/mpls/pg.c
src/vnet/vnet_all_api_h.h
src/vpp/api/custom_dump.c

index 188c513..46b3521 100644 (file)
@@ -18,7 +18,7 @@
 #include <vnet/vnet.h>
 #include <vnet/plugin/plugin.h>
 #include <nsh/nsh.h>
-#include <vnet/gre/gre.h>
+#include <vnet/gre/packet.h>
 #include <vnet/vxlan/vxlan.h>
 #include <vnet/vxlan-gpe/vxlan_gpe.h>
 #include <vnet/l2/l2_classify.h>
index 366e60e..3f4d74f 100644 (file)
@@ -28,7 +28,6 @@
 #include <vnet/ip/ip_types_api.h>
 #include <vnet/l2/l2_input.h>
 #include <vnet/vxlan/vxlan.h>
-#include <vnet/gre/gre.h>
 #include <vnet/vxlan-gpe/vxlan_gpe.h>
 #include <vnet/udp/udp_local.h>
 
@@ -2397,40 +2396,6 @@ static void vl_api_vxlan_gpe_add_del_tunnel_reply_t_handler_json
   vam->result_ready = 1;
 }
 
-static void vl_api_gre_tunnel_add_del_reply_t_handler
-  (vl_api_gre_tunnel_add_del_reply_t * mp)
-{
-  vat_main_t *vam = &vat_main;
-  i32 retval = ntohl (mp->retval);
-  if (vam->async_mode)
-    {
-      vam->async_errors += (retval < 0);
-    }
-  else
-    {
-      vam->retval = retval;
-      vam->sw_if_index = ntohl (mp->sw_if_index);
-      vam->result_ready = 1;
-    }
-}
-
-static void vl_api_gre_tunnel_add_del_reply_t_handler_json
-  (vl_api_gre_tunnel_add_del_reply_t * mp)
-{
-  vat_main_t *vam = &vat_main;
-  vat_json_node_t node;
-
-  vat_json_init_object (&node);
-  vat_json_object_add_int (&node, "retval", ntohl (mp->retval));
-  vat_json_object_add_uint (&node, "sw_if_index", ntohl (mp->sw_if_index));
-
-  vat_json_print (vam->ofp, &node);
-  vat_json_free (&node);
-
-  vam->retval = ntohl (mp->retval);
-  vam->result_ready = 1;
-}
-
 static void vl_api_create_vhost_user_if_reply_t_handler
   (vl_api_create_vhost_user_if_reply_t * mp)
 {
@@ -3451,8 +3416,6 @@ _(ADD_NODE_NEXT_REPLY, add_node_next_reply)                             \
 _(VXLAN_ADD_DEL_TUNNEL_REPLY, vxlan_add_del_tunnel_reply)               \
 _(VXLAN_OFFLOAD_RX_REPLY, vxlan_offload_rx_reply)               \
 _(VXLAN_TUNNEL_DETAILS, vxlan_tunnel_details)                           \
-_(GRE_TUNNEL_ADD_DEL_REPLY, gre_tunnel_add_del_reply)                   \
-_(GRE_TUNNEL_DETAILS, gre_tunnel_details)                               \
 _(L2_FIB_CLEAR_TABLE_REPLY, l2_fib_clear_table_reply)                   \
 _(L2_INTERFACE_EFP_FILTER_REPLY, l2_interface_efp_filter_reply)         \
 _(L2_INTERFACE_VLAN_TAG_REWRITE_REPLY, l2_interface_vlan_tag_rewrite_reply) \
@@ -9709,165 +9672,6 @@ api_vxlan_tunnel_dump (vat_main_t * vam)
   return ret;
 }
 
-static int
-api_gre_tunnel_add_del (vat_main_t * vam)
-{
-  unformat_input_t *line_input = vam->input;
-  vl_api_address_t src = { }, dst =
-  {
-  };
-  vl_api_gre_tunnel_add_del_t *mp;
-  vl_api_gre_tunnel_type_t t_type;
-  u8 is_add = 1;
-  u8 src_set = 0;
-  u8 dst_set = 0;
-  u32 outer_table_id = 0;
-  u32 session_id = 0;
-  u32 instance = ~0;
-  int ret;
-
-  t_type = GRE_API_TUNNEL_TYPE_L3;
-
-  while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
-    {
-      if (unformat (line_input, "del"))
-       is_add = 0;
-      else if (unformat (line_input, "instance %d", &instance))
-       ;
-      else if (unformat (line_input, "src %U", unformat_vl_api_address, &src))
-       {
-         src_set = 1;
-       }
-      else if (unformat (line_input, "dst %U", unformat_vl_api_address, &dst))
-       {
-         dst_set = 1;
-       }
-      else if (unformat (line_input, "outer-table-id %d", &outer_table_id))
-       ;
-      else if (unformat (line_input, "teb"))
-       t_type = GRE_API_TUNNEL_TYPE_TEB;
-      else if (unformat (line_input, "erspan %d", &session_id))
-       t_type = GRE_API_TUNNEL_TYPE_ERSPAN;
-      else
-       {
-         errmsg ("parse error '%U'", format_unformat_error, line_input);
-         return -99;
-       }
-    }
-
-  if (src_set == 0)
-    {
-      errmsg ("tunnel src address not specified");
-      return -99;
-    }
-  if (dst_set == 0)
-    {
-      errmsg ("tunnel dst address not specified");
-      return -99;
-    }
-
-  M (GRE_TUNNEL_ADD_DEL, mp);
-
-  clib_memcpy (&mp->tunnel.src, &src, sizeof (mp->tunnel.src));
-  clib_memcpy (&mp->tunnel.dst, &dst, sizeof (mp->tunnel.dst));
-
-  mp->tunnel.instance = htonl (instance);
-  mp->tunnel.outer_table_id = htonl (outer_table_id);
-  mp->is_add = is_add;
-  mp->tunnel.session_id = htons ((u16) session_id);
-  mp->tunnel.type = htonl (t_type);
-
-  S (mp);
-  W (ret);
-  return ret;
-}
-
-static void vl_api_gre_tunnel_details_t_handler
-  (vl_api_gre_tunnel_details_t * mp)
-{
-  vat_main_t *vam = &vat_main;
-
-  print (vam->ofp, "%11d%11d%24U%24U%13d%14d%12d",
-        ntohl (mp->tunnel.sw_if_index),
-        ntohl (mp->tunnel.instance),
-        format_vl_api_address, &mp->tunnel.src,
-        format_vl_api_address, &mp->tunnel.dst,
-        mp->tunnel.type, ntohl (mp->tunnel.outer_table_id),
-        ntohl (mp->tunnel.session_id));
-}
-
-static void vl_api_gre_tunnel_details_t_handler_json
-  (vl_api_gre_tunnel_details_t * mp)
-{
-  vat_main_t *vam = &vat_main;
-  vat_json_node_t *node = NULL;
-
-  if (VAT_JSON_ARRAY != vam->json_tree.type)
-    {
-      ASSERT (VAT_JSON_NONE == vam->json_tree.type);
-      vat_json_init_array (&vam->json_tree);
-    }
-  node = vat_json_array_add (&vam->json_tree);
-
-  vat_json_init_object (node);
-  vat_json_object_add_uint (node, "sw_if_index",
-                           ntohl (mp->tunnel.sw_if_index));
-  vat_json_object_add_uint (node, "instance", ntohl (mp->tunnel.instance));
-
-  vat_json_object_add_address (node, "src", &mp->tunnel.src);
-  vat_json_object_add_address (node, "dst", &mp->tunnel.dst);
-  vat_json_object_add_uint (node, "tunnel_type", mp->tunnel.type);
-  vat_json_object_add_uint (node, "outer_table_id",
-                           ntohl (mp->tunnel.outer_table_id));
-  vat_json_object_add_uint (node, "session_id", mp->tunnel.session_id);
-}
-
-static int
-api_gre_tunnel_dump (vat_main_t * vam)
-{
-  unformat_input_t *i = vam->input;
-  vl_api_gre_tunnel_dump_t *mp;
-  vl_api_control_ping_t *mp_ping;
-  u32 sw_if_index;
-  u8 sw_if_index_set = 0;
-  int ret;
-
-  /* Parse args required to build the message */
-  while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
-    {
-      if (unformat (i, "sw_if_index %d", &sw_if_index))
-       sw_if_index_set = 1;
-      else
-       break;
-    }
-
-  if (sw_if_index_set == 0)
-    {
-      sw_if_index = ~0;
-    }
-
-  if (!vam->json_output)
-    {
-      print (vam->ofp, "%11s%11s%24s%24s%13s%14s%12s",
-            "sw_if_index", "instance", "src_address", "dst_address",
-            "tunnel_type", "outer_fib_id", "session_id");
-    }
-
-  /* Get list of gre-tunnel interfaces */
-  M (GRE_TUNNEL_DUMP, mp);
-
-  mp->sw_if_index = htonl (sw_if_index);
-
-  S (mp);
-
-  /* Use a control ping for synchronization */
-  MPING (CONTROL_PING, mp_ping);
-  S (mp_ping);
-
-  W (ret);
-  return ret;
-}
-
 static int
 api_l2_fib_clear_table (vat_main_t * vam)
 {
@@ -15218,10 +15022,6 @@ _(vxlan_add_del_tunnel,                                                 \
   "{ <intfc> | mcast_sw_if_index <nn> } [instance <id>]}\n"            \
   "vni <vni> [encap-vrf-id <nn>] [decap-next <l2|nn>] [del]")           \
 _(vxlan_tunnel_dump, "[<intfc> | sw_if_index <nn>]")                    \
-_(gre_tunnel_add_del,                                                   \
-  "src <ip-addr> dst <ip-addr> [outer-fib-id <nn>] [instance <n>]\n"    \
-  "[teb | erspan <session-id>] [del]")                                 \
-_(gre_tunnel_dump, "[<intfc> | sw_if_index <nn>]")                      \
 _(l2_fib_clear_table, "")                                               \
 _(l2_interface_efp_filter, "sw_if_index <nn> enable | disable")         \
 _(l2_interface_vlan_tag_rewrite,                                        \
index 0fe1f84..ea085bf 100644 (file)
@@ -286,6 +286,8 @@ typedef struct
 
   /* Record used instances */
   uword *instance_used;
+
+  u16 msg_id_base;
 } gre_main_t;
 
 /**
index 934fc66..f4c8efa 100644 (file)
 #include <vnet/tunnel/tunnel_types_api.h>
 #include <vnet/ip/ip_types_api.h>
 
-#include <vnet/vnet_msg_enum.h>
-
-#define vl_typedefs            /* define message structures */
-#include <vnet/vnet_all_api_h.h>
-#undef vl_typedefs
-
-#define vl_endianfun           /* define message structures */
-#include <vnet/vnet_all_api_h.h>
-#undef vl_endianfun
-
-/* instantiate all the print functions we know about */
-#define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__)
-#define vl_printfun
-#include <vnet/vnet_all_api_h.h>
-#undef vl_printfun
+#include <vnet/gre/gre.api_enum.h>
+#include <vnet/gre/gre.api_types.h>
 
+#define REPLY_MSG_ID_BASE gre_main.msg_id_base
 #include <vlibapi/api_helper_macros.h>
 
-#define foreach_vpe_api_msg                             \
-_(GRE_TUNNEL_ADD_DEL, gre_tunnel_add_del)               \
-_(GRE_TUNNEL_DUMP, gre_tunnel_dump)
-
 static int
 gre_tunnel_type_decode (vl_api_gre_tunnel_type_t in, gre_tunnel_type_t * out)
 {
@@ -143,30 +127,28 @@ out:
 }
 
 static void send_gre_tunnel_details
-  (gre_tunnel_t * t, vl_api_registration_t * reg, u32 context)
+  (gre_tunnel_t * t, vl_api_gre_tunnel_dump_t * mp)
 {
   vl_api_gre_tunnel_details_t *rmp;
+  int rv = 0;
 
-  rmp = vl_msg_api_alloc (sizeof (*rmp));
-  clib_memset (rmp, 0, sizeof (*rmp));
-  rmp->_vl_msg_id = htons (VL_API_GRE_TUNNEL_DETAILS);
-
-  ip_address_encode (&t->tunnel_src, IP46_TYPE_ANY, &rmp->tunnel.src);
-  ip_address_encode (&t->tunnel_dst.fp_addr, IP46_TYPE_ANY, &rmp->tunnel.dst);
-
-  rmp->tunnel.outer_table_id =
-    htonl (fib_table_get_table_id
-          (t->outer_fib_index, t->tunnel_dst.fp_proto));
-
-  rmp->tunnel.type = gre_tunnel_type_encode (t->type);
-  rmp->tunnel.mode = tunnel_mode_encode (t->mode);
-  rmp->tunnel.instance = htonl (t->user_instance);
-  rmp->tunnel.sw_if_index = htonl (t->sw_if_index);
-  rmp->tunnel.session_id = htons (t->session_id);
-
-  rmp->context = context;
-
-  vl_api_send_msg (reg, (u8 *) rmp);
+  /* *INDENT-OFF* */
+  REPLY_MACRO_DETAILS2(VL_API_GRE_TUNNEL_DETAILS,
+  ({
+    ip_address_encode (&t->tunnel_src, IP46_TYPE_ANY, &rmp->tunnel.src);
+    ip_address_encode (&t->tunnel_dst.fp_addr, IP46_TYPE_ANY, &rmp->tunnel.dst);
+
+    rmp->tunnel.outer_table_id =
+      htonl (fib_table_get_table_id
+             (t->outer_fib_index, t->tunnel_dst.fp_proto));
+
+    rmp->tunnel.type = gre_tunnel_type_encode (t->type);
+    rmp->tunnel.mode = tunnel_mode_encode (t->mode);
+    rmp->tunnel.instance = htonl (t->user_instance);
+    rmp->tunnel.sw_if_index = htonl (t->sw_if_index);
+    rmp->tunnel.session_id = htons (t->session_id);
+  }));
+  /* *INDENT-ON* */
 }
 
 static void
@@ -188,10 +170,11 @@ vl_api_gre_tunnel_dump_t_handler (vl_api_gre_tunnel_dump_t * mp)
       /* *INDENT-OFF* */
       pool_foreach (t, gm->tunnels,
       ({
-        send_gre_tunnel_details(t, reg, mp->context);
+        send_gre_tunnel_details(t, mp);
       }));
       /* *INDENT-ON* */
     }
+
   else
     {
       if ((sw_if_index >= vec_len (gm->tunnel_index_by_sw_if_index)) ||
@@ -200,7 +183,7 @@ vl_api_gre_tunnel_dump_t_handler (vl_api_gre_tunnel_dump_t * mp)
          return;
        }
       t = &gm->tunnels[gm->tunnel_index_by_sw_if_index[sw_if_index]];
-      send_gre_tunnel_details (t, reg, mp->context);
+      send_gre_tunnel_details (t, mp);
     }
 }
 
@@ -211,37 +194,17 @@ vl_api_gre_tunnel_dump_t_handler (vl_api_gre_tunnel_dump_t * mp)
  * added the client registration handlers.
  * See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
  */
-#define vl_msg_name_crc_list
-#include <vnet/vnet_all_api_h.h>
-#undef vl_msg_name_crc_list
-
-static void
-setup_message_id_table (api_main_t * am)
-{
-#define _(id,n,crc) vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id);
-  foreach_vl_msg_name_crc_gre;
-#undef _
-}
+/* API definitions */
+#include <vnet/format_fns.h>
+#include <vnet/gre/gre.api.c>
 
 static clib_error_t *
 gre_api_hookup (vlib_main_t * vm)
 {
-  api_main_t *am = vlibapi_get_main ();
-
-#define _(N,n)                                                  \
-    vl_msg_api_set_handlers(VL_API_##N, #n,                     \
-                           vl_api_##n##_t_handler,              \
-                           vl_noop_handler,                     \
-                           vl_api_##n##_t_endian,               \
-                           vl_api_##n##_t_print,                \
-                           sizeof(vl_api_##n##_t), 1);
-  foreach_vpe_api_msg;
-#undef _
-
   /*
    * Set up the (msg_name, crc, message-id) table
    */
-  setup_message_id_table (am);
+  gre_main.msg_id_base = setup_message_id_table ();
 
   return 0;
 }
index 45d08a6..879e8f4 100644 (file)
@@ -25,7 +25,7 @@
 #include <vnet/ipsec/ipsec_io.h>
 #include <vnet/ipsec/ipsec_tun.h>
 
-#include <vnet/gre/gre.h>
+#include <vnet/gre/packet.h>
 
 #define foreach_esp_decrypt_next                \
 _(DROP, "error-drop")                           \
index 6ff86e3..e543bbb 100644 (file)
@@ -17,7 +17,6 @@
 
 #include <vlib/vlib.h>
 #include <vnet/pg/pg.h>
-#include <vnet/gre/gre.h>
 #include <vnet/mpls/mpls.h>
 
 typedef struct {
index e48d439..2a5b6bd 100644 (file)
@@ -37,7 +37,6 @@
 #include <vnet/devices/af_packet/af_packet.api.h>
 #include <vnet/devices/virtio/vhost_user.api.h>
 #include <vnet/devices/tap/tapv2.api.h>
-#include <vnet/gre/gre.api.h>
 #include <vnet/interface.api.h>
 #include <vnet/l2/l2.api.h>
 #include <vnet/span/span.api.h>
index f530da2..447b9d2 100644 (file)
@@ -27,7 +27,6 @@
 #include <vnet/l2/l2_input.h>
 #include <vnet/srv6/sr.h>
 #include <vnet/srmpls/sr_mpls.h>
-#include <vnet/gre/gre.h>
 #include <vnet/vxlan-gpe/vxlan_gpe.h>
 #include <vnet/classify/policer_classify.h>
 #include <vnet/policer/xlate.h>
@@ -1539,45 +1538,6 @@ static void *vl_api_sw_interface_set_vxlan_gbp_bypass_t_print
   FINISH;
 }
 
-static void *vl_api_gre_tunnel_add_del_t_print
-  (vl_api_gre_tunnel_add_del_t * mp, void *handle)
-{
-  u8 *s;
-
-  s = format (0, "SCRIPT: gre_tunnel_add_del ");
-
-  s = format (s, "dst %U ", format_vl_api_address, &mp->tunnel.dst);
-  s = format (s, "src %U ", format_vl_api_address, &mp->tunnel.src);
-
-  s = format (s, "instance %d ", (mp->tunnel.instance));
-
-  if (mp->tunnel.type == GRE_API_TUNNEL_TYPE_TEB)
-    s = format (s, "teb ");
-
-  if (mp->tunnel.type == GRE_API_TUNNEL_TYPE_ERSPAN)
-    s = format (s, "erspan %d ", (mp->tunnel.session_id));
-
-  if (mp->tunnel.outer_table_id)
-    s = format (s, "outer-table-id %d ", mp->tunnel.outer_table_id);
-
-  if (mp->is_add == 0)
-    s = format (s, "del ");
-
-  FINISH;
-}
-
-static void *vl_api_gre_tunnel_dump_t_print
-  (vl_api_gre_tunnel_dump_t * mp, void *handle)
-{
-  u8 *s;
-
-  s = format (0, "SCRIPT: gre_tunnel_dump ");
-
-  s = format (s, "sw_if_index %d ", (mp->sw_if_index));
-
-  FINISH;
-}
-
 static void *vl_api_l2_fib_clear_table_t_print
   (vl_api_l2_fib_clear_table_t * mp, void *handle)
 {
@@ -3092,8 +3052,6 @@ _(ADD_NODE_NEXT, add_node_next)                                           \
 _(VXLAN_ADD_DEL_TUNNEL, vxlan_add_del_tunnel)                           \
 _(VXLAN_TUNNEL_DUMP, vxlan_tunnel_dump)                                 \
 _(VXLAN_OFFLOAD_RX, vxlan_offload_rx)                                   \
-_(GRE_TUNNEL_ADD_DEL, gre_tunnel_add_del)                               \
-_(GRE_TUNNEL_DUMP, gre_tunnel_dump)                                     \
 _(L2_FIB_CLEAR_TABLE, l2_fib_clear_table)                               \
 _(L2_INTERFACE_EFP_FILTER, l2_interface_efp_filter)                     \
 _(L2_INTERFACE_VLAN_TAG_REWRITE, l2_interface_vlan_tag_rewrite)         \