Initial GENEVE TUNNEL implementation and tests.
[vpp.git] / src / vpp / api / custom_dump.c
index 7f3a58d..ecb0ab1 100644 (file)
@@ -26,6 +26,7 @@
 #include <vnet/l2/l2_input.h>
 #include <vnet/srv6/sr.h>
 #include <vnet/vxlan-gpe/vxlan_gpe.h>
+#include <vnet/geneve/geneve.h>
 #include <vnet/classify/policer_classify.h>
 #include <vnet/policer/xlate.h>
 #include <vnet/policer/policer.h>
@@ -103,6 +104,22 @@ static void *vl_api_sw_interface_set_flags_t_print
 
   s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index));
 
+  if (mp->admin_up_down)
+    s = format (s, "admin-up ");
+  else
+    s = format (s, "admin-down ");
+
+  FINISH;
+}
+
+static void *vl_api_sw_interface_event_t_print
+  (vl_api_sw_interface_event_t * mp, void *handle)
+{
+  u8 *s;
+  s = format (0, "SCRIPT: sw_interface_event ");
+
+  s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index));
+
   if (mp->admin_up_down)
     s = format (s, "admin-up ");
   else
@@ -113,6 +130,9 @@ static void *vl_api_sw_interface_set_flags_t_print
   else
     s = format (s, "link-down");
 
+  if (mp->deleted)
+    s = format (s, " deleted");
+
   FINISH;
 }
 
@@ -210,6 +230,26 @@ static void *vl_api_sw_interface_set_vxlan_bypass_t_print
   FINISH;
 }
 
+static void *vl_api_sw_interface_set_geneve_bypass_t_print
+  (vl_api_sw_interface_set_geneve_bypass_t * mp, void *handle)
+{
+  u8 *s;
+
+  s = format (0, "SCRIPT: sw_interface_set_geneve_bypass ");
+
+  s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index));
+
+  if (mp->is_ipv6)
+    s = format (s, "ip6 ");
+
+  if (mp->enable)
+    s = format (s, "enable ");
+  else
+    s = format (s, "disable ");
+
+  FINISH;
+}
+
 static void *vl_api_sw_interface_set_l2_xconnect_t_print
   (vl_api_sw_interface_set_l2_xconnect_t * mp, void *handle)
 {
@@ -260,6 +300,8 @@ static void *vl_api_bridge_domain_add_del_t_print
 
   if (mp->is_add)
     {
+      if (mp->bd_tag[0])
+       s = format (s, "bd_tag %s ", mp->bd_tag);
       s = format (s, "flood %d uu-flood %d ", mp->flood, mp->uu_flood);
       s = format (s, "forward %d learn %d ", mp->forward, mp->learn);
       s = format (s, "arp-term %d mac-age %d", mp->arp_term, mp->mac_age);
@@ -373,10 +415,19 @@ vl_api_l2_flags_t_print (vl_api_l2_flags_t * mp, void *handle)
 
   s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index));
 
-#define _(a,b) \
-    if (flags & L2INPUT_FEAT_ ## a) s = format (s, #a " ");
-  foreach_l2input_feat;
-#undef _
+  if (flags & L2_LEARN)
+    s = format (s, "learn ");
+  if (flags & L2_FWD)
+    s = format (s, "forward ");
+  if (flags & L2_FLOOD)
+    s = format (s, "flood ");
+  if (flags & L2_UU_FLOOD)
+    s = format (s, "uu-flood ");
+  if (flags & L2_ARP_TERM)
+    s = format (s, "arp-term ");
+
+  if (mp->is_set == 0)
+    s = format (s, "clear ");
 
   FINISH;
 }
@@ -532,9 +583,6 @@ static void *vl_api_ip_add_del_route_t_print
   if (mp->table_id != 0)
     s = format (s, "vrf %d ", ntohl (mp->table_id));
 
-  if (mp->create_vrf_if_needed)
-    s = format (s, "create-vrf ");
-
   if (mp->next_hop_weight != 1)
     s = format (s, "weight %d ", mp->next_hop_weight);
 
@@ -1468,6 +1516,50 @@ static void *vl_api_vxlan_tunnel_dump_t_print
   FINISH;
 }
 
+static void *vl_api_geneve_add_del_tunnel_t_print
+  (vl_api_geneve_add_del_tunnel_t * mp, void *handle)
+{
+  u8 *s;
+  s = format (0, "SCRIPT: geneve_add_del_tunnel ");
+
+  ip46_address_t local = to_ip46 (mp->is_ipv6, mp->local_address);
+  ip46_address_t remote = to_ip46 (mp->is_ipv6, mp->remote_address);
+
+  u8 is_grp = ip46_address_is_multicast (&remote);
+  char *remote_name = is_grp ? "group" : "dst";
+
+  s = format (s, "src %U ", format_ip46_address, &local, IP46_TYPE_ANY);
+  s = format (s, "%s %U ", remote_name, format_ip46_address,
+             &remote, IP46_TYPE_ANY);
+
+  if (is_grp)
+    s = format (s, "mcast_sw_if_index %d ", ntohl (mp->mcast_sw_if_index));
+
+  if (mp->encap_vrf_id)
+    s = format (s, "encap-vrf-id %d ", ntohl (mp->encap_vrf_id));
+
+  s = format (s, "decap-next %d ", ntohl (mp->decap_next_index));
+
+  s = format (s, "vni %d ", ntohl (mp->vni));
+
+  if (mp->is_add == 0)
+    s = format (s, "del ");
+
+  FINISH;
+}
+
+static void *vl_api_geneve_tunnel_dump_t_print
+  (vl_api_geneve_tunnel_dump_t * mp, void *handle)
+{
+  u8 *s;
+
+  s = format (0, "SCRIPT: geneve_tunnel_dump ");
+
+  s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index));
+
+  FINISH;
+}
+
 static void *vl_api_gre_add_del_tunnel_t_print
   (vl_api_gre_add_del_tunnel_t * mp, void *handle)
 {
@@ -1683,6 +1775,16 @@ static void *vl_api_memclnt_create_t_print
   FINISH;
 }
 
+static void *vl_api_sockclnt_create_t_print
+  (vl_api_sockclnt_create_t * mp, void *handle)
+{
+  u8 *s;
+
+  s = format (0, "SCRIPT: sockclnt_create name %s ", mp->name);
+
+  FINISH;
+}
+
 static void *vl_api_show_version_t_print
   (vl_api_show_version_t * mp, void *handle)
 {
@@ -1783,6 +1885,21 @@ static void *vl_api_want_ip6_nd_events_t_print
   FINISH;
 }
 
+static void *vl_api_want_l2_macs_events_t_print
+  (vl_api_want_l2_macs_events_t * mp, void *handle)
+{
+  u8 *s;
+
+  s = format (0, "SCRIPT: want_l2_macs_events ");
+  s = format (s, "learn-limit %d ", ntohl (mp->learn_limit));
+  s = format (s, "scan-delay %d ", (u32) mp->scan_delay);
+  s = format (s, "max-entries %d ", (u32) mp->max_macs_in_event * 10);
+  if (mp->enable_disable == 0)
+    s = format (s, "disable");
+
+  FINISH;
+}
+
 static void *vl_api_input_acl_set_interface_t_print
   (vl_api_input_acl_set_interface_t * mp, void *handle)
 {
@@ -2227,6 +2344,9 @@ static void *vl_api_sw_interface_span_enable_disable_t_print
   s = format (s, "src_sw_if_index %u ", ntohl (mp->sw_if_index_from));
   s = format (s, "dst_sw_if_index %u ", ntohl (mp->sw_if_index_to));
 
+  if (mp->is_l2)
+    s = format (s, "l2 ");
+
   switch (mp->state)
     {
     case 0:
@@ -2255,6 +2375,9 @@ vl_api_sw_interface_span_dump_t_print (vl_api_sw_interface_span_dump_t * mp,
 
   s = format (0, "SCRIPT: sw_interface_span_dump ");
 
+  if (mp->is_l2)
+    s = format (s, "l2 ");
+
   FINISH;
 }
 
@@ -2958,6 +3081,27 @@ static void *vl_api_p2p_ethernet_del_t_print
   FINISH;
 }
 
+static void *vl_api_tcp_configure_src_addresses_t_print
+  (vl_api_tcp_configure_src_addresses_t * mp, void *handle)
+{
+  u8 *s;
+
+  s = format (0, "SCRIPT: tcp_configure_src_addresses ");
+  if (mp->is_ipv6)
+    s = format (s, "%U - %U ",
+               format_ip6_address, (ip6_address_t *) mp->first_address,
+               format_ip6_address, (ip6_address_t *) mp->last_address);
+  else
+    s = format (s, "%U - %U ",
+               format_ip4_address, (ip4_address_t *) mp->first_address,
+               format_ip4_address, (ip4_address_t *) mp->last_address);
+
+  if (mp->vrf_id)
+    s = format (s, "vrf %d ", ntohl (mp->vrf_id));
+
+  FINISH;
+}
+
 #define foreach_custom_print_no_arg_function                            \
 _(lisp_eid_table_vni_dump)                                              \
 _(lisp_map_resolver_dump)                                               \
@@ -2980,11 +3124,13 @@ foreach_custom_print_no_arg_function
 _(CREATE_LOOPBACK, create_loopback)                                     \
 _(CREATE_LOOPBACK_INSTANCE, create_loopback_instance)                   \
 _(SW_INTERFACE_SET_FLAGS, sw_interface_set_flags)                       \
+_(SW_INTERFACE_EVENT, sw_interface_event)                               \
 _(SW_INTERFACE_ADD_DEL_ADDRESS, sw_interface_add_del_address)           \
 _(SW_INTERFACE_SET_TABLE, sw_interface_set_table)                       \
 _(SW_INTERFACE_SET_MPLS_ENABLE, sw_interface_set_mpls_enable)           \
 _(SW_INTERFACE_SET_VPATH, sw_interface_set_vpath)                       \
 _(SW_INTERFACE_SET_VXLAN_BYPASS, sw_interface_set_vxlan_bypass)         \
+_(SW_INTERFACE_SET_GENEVE_BYPASS, sw_interface_set_geneve_bypass)       \
 _(TAP_CONNECT, tap_connect)                                             \
 _(TAP_MODIFY, tap_modify)                                               \
 _(TAP_DELETE, tap_delete)                                               \
@@ -3038,6 +3184,8 @@ _(L2TPV3_SET_LOOKUP_KEY, l2tpv3_set_lookup_key)                         \
 _(SW_IF_L2TPV3_TUNNEL_DUMP, sw_if_l2tpv3_tunnel_dump)                   \
 _(VXLAN_ADD_DEL_TUNNEL, vxlan_add_del_tunnel)                           \
 _(VXLAN_TUNNEL_DUMP, vxlan_tunnel_dump)                                 \
+_(GENEVE_ADD_DEL_TUNNEL, geneve_add_del_tunnel)                         \
+_(GENEVE_TUNNEL_DUMP, geneve_tunnel_dump)                               \
 _(GRE_ADD_DEL_TUNNEL, gre_add_del_tunnel)                               \
 _(GRE_TUNNEL_DUMP, gre_tunnel_dump)                                     \
 _(L2_FIB_CLEAR_TABLE, l2_fib_clear_table)                               \
@@ -3052,6 +3200,7 @@ _(WANT_INTERFACE_EVENTS, want_interface_events)                           \
 _(CLI, cli)                                                            \
 _(CLI_INBAND, cli_inband)                                              \
 _(MEMCLNT_CREATE, memclnt_create)                                      \
+_(SOCKCLNT_CREATE, sockclnt_create)                                    \
 _(SW_INTERFACE_VHOST_USER_DUMP, sw_interface_vhost_user_dump)           \
 _(SHOW_VERSION, show_version)                                           \
 _(L2_FIB_TABLE_DUMP, l2_fib_table_dump)                                 \
@@ -3060,6 +3209,7 @@ _(VXLAN_GPE_TUNNEL_DUMP, vxlan_gpe_tunnel_dump)                         \
 _(INTERFACE_NAME_RENUMBER, interface_name_renumber)                    \
 _(WANT_IP4_ARP_EVENTS, want_ip4_arp_events)                             \
 _(WANT_IP6_ND_EVENTS, want_ip6_nd_events)                               \
+_(WANT_L2_MACS_EVENTS, want_l2_macs_events)                             \
 _(INPUT_ACL_SET_INTERFACE, input_acl_set_interface)                     \
 _(IP_ADDRESS_DUMP, ip_address_dump)                                     \
 _(IP_DUMP, ip_dump)                                                     \
@@ -3140,7 +3290,8 @@ _(FEATURE_ENABLE_DISABLE, feature_enable_disable)                 \
 _(SW_INTERFACE_TAG_ADD_DEL, sw_interface_tag_add_del)                  \
 _(SW_INTERFACE_SET_MTU, sw_interface_set_mtu)                           \
 _(P2P_ETHERNET_ADD, p2p_ethernet_add)                                   \
-_(P2P_ETHERNET_DEL, p2p_ethernet_del)
+_(P2P_ETHERNET_DEL, p2p_ethernet_del)                                  \
+_(TCP_CONFIGURE_SRC_ADDRESSES, tcp_configure_src_addresses)
   void
 vl_msg_api_custom_dump_configure (api_main_t * am)
 {