VPP-108 : API calls to read classify table and sessions
[vpp.git] / vpp / api / custom_dump.c
index 85740ee..123883f 100644 (file)
@@ -26,8 +26,7 @@
 #include <vnet/l2tp/l2tp.h>
 #include <vnet/l2/l2_input.h>
 #include <vnet/sr/sr_packet.h>
-#include <vnet/nsh-gre/nsh_gre.h>
-#include <vnet/nsh-vxlan-gpe/nsh_vxlan_gpe.h>
+#include <vnet/vxlan-gpe/vxlan_gpe.h>
 #include <vlib/vlib.h>
 #include <vlib/unix/unix.h>
 #include <vlibapi/api.h>
@@ -1014,6 +1013,9 @@ static void *vl_api_sr_tunnel_add_del_t_print
 
     s = format (0, "SCRIPT: sr_tunnel_add_del ");
 
+    if (mp->name[0])
+      s = format (s, "name %s ", mp->name);
+
     s = format (s, "src %U dst %U/%d ", format_ip6_address, 
                 (ip6_address_t *) mp->src_address,
                 format_ip6_address,
@@ -1062,12 +1064,78 @@ static void *vl_api_sr_tunnel_add_del_t_print
         }
     }
 
+    if (mp->policy_name[0])
+      s = format (s, "policy_name %s ", mp->policy_name);
+
     if (mp->is_add == 0)
         s = format (s, "del ");
     
     FINISH;
 }
 
+static void *vl_api_sr_policy_add_del_t_print
+(vl_api_sr_policy_add_del_t * mp, void *handle)
+{
+  u8 * s;
+  int i;
+
+  s = format (0, "SCRIPT: sr_policy_add_del ");
+
+  if (mp->name[0])
+    s = format (s, "name %s ", mp->name);
+
+
+  if (mp->tunnel_names[0])
+    {
+    // start deserializing tunnel_names
+    int num_tunnels = mp->tunnel_names[0]; //number of tunnels
+    u8 * deser_tun_names = mp->tunnel_names;
+    deser_tun_names += 1; //moving along
+
+    u8 * tun_name = 0;
+    int tun_name_len = 0;
+
+    for (i=0; i < num_tunnels; i++)
+      {
+       tun_name_len= *deser_tun_names;
+       deser_tun_names += 1;
+       vec_resize (tun_name, tun_name_len);
+       memcpy(tun_name, deser_tun_names, tun_name_len);
+       s = format (s, "tunnel %s ", tun_name);
+       deser_tun_names += tun_name_len;
+       tun_name = 0;
+      }
+    }
+
+  if (mp->is_add == 0)
+    s = format (s, "del ");
+
+  FINISH;
+}
+
+static void *vl_api_sr_multicast_map_add_del_t_print
+(vl_api_sr_multicast_map_add_del_t * mp, void *handle)
+{
+
+  u8 * s = 0;
+  /* int i; */
+
+  s = format (0, "SCRIPT: sr_multicast_map_add_del ");
+
+  if (mp->multicast_address[0])
+    s = format (s, "address %U ", format_ip6_address, &mp->multicast_address);
+
+  if (mp->policy_name[0])
+    s = format (s, "sr-policy %s ", &mp->policy_name);
+
+
+  if (mp->is_add == 0)
+    s = format (s, "del ");
+
+  FINISH;
+}
+
+
 static void *vl_api_classify_add_del_table_t_print
 (vl_api_classify_add_del_table_t * mp, void *handle)
 {
@@ -1266,11 +1334,13 @@ static void * vl_api_vxlan_add_del_tunnel_t_print
 
     s = format (0, "SCRIPT: vxlan_add_del_tunnel ");
 
-    s = format (s, "dst %U ", format_ip4_address, 
-                (ip4_address_t *)&(mp->dst_address));
+    s = format (s, "dst %U ", format_ip46_address,
+                (ip46_address_t *)&(mp->dst_address),
+               mp->is_ipv6 ? IP46_TYPE_IP6 : IP46_TYPE_IP4);
 
-    s = format (s, "src %U ", format_ip4_address, 
-                (ip4_address_t *)&(mp->src_address));
+    s = format (s, "src %U ", format_ip46_address,
+                (ip46_address_t *)&(mp->src_address),
+               mp->is_ipv6 ? IP46_TYPE_IP6 : IP46_TYPE_IP4);
 
     if (mp->encap_vrf_id)
         s = format (s, "encap-vrf-id %d ", ntohl(mp->encap_vrf_id));
@@ -1297,6 +1367,40 @@ static void * vl_api_vxlan_tunnel_dump_t_print
     FINISH;
 }
 
+static void * vl_api_gre_add_del_tunnel_t_print
+(vl_api_gre_add_del_tunnel_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: gre_add_del_tunnel ");
+
+    s = format (s, "dst %U ", format_ip4_address,
+                (ip4_address_t *)&(mp->dst_address));
+
+    s = format (s, "src %U ", format_ip4_address,
+                (ip4_address_t *)&(mp->src_address));
+
+    if (mp->outer_table_id)
+        s = format (s, "outer-fib-id %d ", ntohl(mp->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 ", ntohl(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)
 {
@@ -1471,77 +1575,18 @@ static void *vl_api_show_version_t_print
     FINISH;
 }
 
-static void *vl_api_nsh_gre_add_del_tunnel_t_print
-(vl_api_nsh_gre_add_del_tunnel_t * mp, void *handle)
+static void *vl_api_vxlan_gpe_add_del_tunnel_t_print
+(vl_api_vxlan_gpe_add_del_tunnel_t * mp, void *handle)
 {
     u8 * s;
-    int i;
-    u32 spi_si;
-
-    s = format (0, "SCRIPT: nsh_gre_add_del_tunnel ");
-
-    s = format (s, "src %U dst %U ", format_ip4_address, &mp->src,
-                format_ip4_address, &mp->dst);
-
-    spi_si = ntohl(mp->spi_si);
-
-    s = format (s, "spi %d si %d ", (spi_si>>8), (spi_si & 0xff));
-
-    s = format (s, "decap-next %d ", ntohl(mp->decap_next_index));
-
-    if (mp->is_add == 0)
-        s = format (s, "del ");
-
-    if (mp->encap_vrf_id)
-        s = format (s, "encap-vrf-id %d ", ntohl(mp->encap_vrf_id));
-    
-    if (mp->decap_vrf_id)
-        s = format (s, "decap-vrf-id %d ", ntohl(mp->decap_vrf_id));
-
-    if (mp->ver_o_c & 0xc)
-        s = format (s, "version %d ", mp->ver_o_c>>6);
-    if (mp->ver_o_c & NSH_GRE_O_BIT)
-        s = format (s, "o-bit 1 ");
-    if (mp->ver_o_c & NSH_GRE_C_BIT)
-        s = format (s, "c-bit 1 ");
-    if (mp->md_type)
-        s = format (s, "md-type %d ", mp->md_type);
-    if (mp->next_protocol == 1)
-        s = format (s, "next-ip4 ");
-    else if (mp->next_protocol == 2)
-        s = format (s, "next-ip6 ");
-    else if (mp->next_protocol == 3)
-        s = format (s, "next-ethernet");
-    
-    s = format (s, "c1 %d ", ntohl(mp->c1));
-    s = format (s, "c2 %d ", ntohl(mp->c2));
-    s = format (s, "c3 %d ", ntohl(mp->c3));
-    s = format (s, "c4 %d ", ntohl(mp->c4));
-            
-    for (i = 0; i < mp->tlv_len_in_words; i++) {
-        s = format (s, "tlv %x ", ntohl(mp->tlvs[i]));
-    }
-        
-    FINISH;
-}
-
-static void *vl_api_nsh_vxlan_gpe_add_del_tunnel_t_print
-(vl_api_nsh_vxlan_gpe_add_del_tunnel_t * mp, void *handle)
-{
-    u8 * s;
-    int i;
-    u32 spi_si;
 
-    s = format (0, "SCRIPT: nsh_vxlan_gpe_add_del_tunnel ");
+    s = format (0, "SCRIPT: vxlan_gpe_add_del_tunnel ");
 
-    s = format (s, "src %U dst %U ", format_ip4_address, &mp->src,
-                format_ip4_address, &mp->dst);
+    s = format (s, "local %U ", format_ip46_address, &mp->local, mp->is_ipv6);
 
-    spi_si = ntohl(mp->spi_si);
+    s = format (s, "remote %U ", format_ip46_address, &mp->remote, mp->is_ipv6);
 
-    s = format (s, "spi %d si %d ", (spi_si>>8), (spi_si & 0xff));
-
-    s = format (s, "decap-next %d ", ntohl(mp->decap_next_index));
+    s = format (s, "protocol %d ", ntohl(mp->protocol));
 
     s = format (s, "vni %d ", ntohl(mp->vni));
 
@@ -1554,73 +1599,18 @@ static void *vl_api_nsh_vxlan_gpe_add_del_tunnel_t_print
     if (mp->decap_vrf_id)
         s = format (s, "decap-vrf-id %d ", ntohl(mp->decap_vrf_id));
 
-    if (mp->ver_o_c & 0xc)
-        s = format (s, "version %d ", mp->ver_o_c>>6);
-    if (mp->ver_o_c & NSH_GRE_O_BIT)
-        s = format (s, "o-bit 1 ");
-    if (mp->ver_o_c & NSH_GRE_C_BIT)
-        s = format (s, "c-bit 1 ");
-    if (mp->md_type)
-        s = format (s, "md-type %d ", mp->md_type);
-    if (mp->next_protocol == 1)
-        s = format (s, "next-ip4 ");
-    else if (mp->next_protocol == 2)
-        s = format (s, "next-ip6 ");
-    else if (mp->next_protocol == 3)
-        s = format (s, "next-ethernet");
-    
-    s = format (s, "c1 %d ", ntohl(mp->c1));
-    s = format (s, "c2 %d ", ntohl(mp->c2));
-    s = format (s, "c3 %d ", ntohl(mp->c3));
-    s = format (s, "c4 %d ", ntohl(mp->c4));
-            
-    for (i = 0; i < mp->tlv_len_in_words; i++) {
-        s = format (s, "tlv %x ", ntohl(mp->tlvs[i]));
-    }
-        
     FINISH;
 }
 
-static void *vl_api_lisp_gpe_add_del_tunnel_t_print
-(vl_api_lisp_gpe_add_del_tunnel_t * mp, void *handle)
+static void * vl_api_vxlan_gpe_tunnel_dump_t_print
+(vl_api_vxlan_gpe_tunnel_dump_t * mp, void *handle)
 {
     u8 * s;
 
-    s = format (0, "SCRIPT: lisp_gpe_add_del_tunnel ");
-
-    s = format (s, "src %U dst %U ", format_ip4_address, &mp->src,
-                format_ip4_address, &mp->dst);
+    s = format (0, "SCRIPT: vxlan_gpe_tunnel_dump ");
 
-    if (mp->encap_vrf_id)
-        s = format (s, "encap-vrf-id %d ", ntohl(mp->encap_vrf_id));
-    
-    if (mp->decap_vrf_id)
-        s = format (s, "decap-vrf-id %d ", ntohl(mp->decap_vrf_id));
-
-    s = format (s, "decap-next %d ", ntohl(mp->decap_next_index));
-
-    s = format (s, "flags %x ", (u32)(mp->flags));
-
-    if (mp->ver_res)
-        s = format (s, "ver_res %x ", (u32)(mp->ver_res));
-
-    if (mp->res)
-        s = format (s, "res %x ", (u32)(mp->res));
-
-    s = format (s, "iid %d ", ntohl (mp->iid));
-
-    if (mp->is_add == 0)
-        s = format (s, "del ");
+    s = format (s, "sw_if_index %d ", ntohl(mp->sw_if_index));
 
-    if (mp->next_protocol == 1)
-        s = format (s, "next-ip4 ");
-    else if (mp->next_protocol == 2)
-        s = format (s, "next-ip6 ");
-    else if (mp->next_protocol == 3)
-        s = format (s, "next-ethernet ");
-    else if (mp->next_protocol == 4)
-        s = format (s, "next-nsh ");
-    
     FINISH;
 }
 
@@ -1694,6 +1684,167 @@ static void * vl_api_ip_dump_t_print
     FINISH;
 }
 
+static void * vl_api_cop_interface_enable_disable_t_print
+(vl_api_cop_interface_enable_disable_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: cop_interface_enable_disable ");
+    s = format (s, "sw_if_index %d ", ntohl(mp->sw_if_index));
+    if (mp->enable_disable)
+        s = format (s, "enable ");
+    else
+        s = format (s, "disable ");
+
+    FINISH;
+}
+
+static void * vl_api_cop_whitelist_enable_disable_t_print
+(vl_api_cop_whitelist_enable_disable_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: cop_whitelist_enable_disable ");
+    s = format (s, "sw_if_index %d ", ntohl(mp->sw_if_index));
+    s = format (s, "fib-id %d ", ntohl(mp->fib_id));
+    if (mp->ip4)
+        s = format (s, "ip4 ");
+    if (mp->ip6)
+        s = format (s, "ip6 ");
+    if (mp->default_cop)
+        s = format (s, "default ");
+
+    FINISH;
+}
+
+static void * vl_api_af_packet_create_t_print 
+(vl_api_af_packet_create_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: af_packet_create ");
+    s = format (s, "host_if_name %s ", mp->host_if_name);
+    if ( mp->use_random_hw_addr)
+      s = format (s, "hw_addr random ");
+    else
+      s = format (s, "hw_addr %U ", format_ethernet_address, mp->hw_addr);
+
+    FINISH;
+}
+
+static void * vl_api_af_packet_delete_t_print 
+(vl_api_af_packet_delete_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: af_packet_delete ");
+    s = format (s, "host_if_name %s ", mp->host_if_name);
+
+    FINISH;
+}
+
+static void *vl_api_sw_interface_clear_stats_t_print
+(vl_api_sw_interface_clear_stats_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: sw_interface_clear_stats ");
+    if (mp->sw_if_index != ~0)
+      s = format (s, "sw_if_index %d ", ntohl(mp->sw_if_index));
+
+    FINISH;
+}
+
+static void *vl_api_mpls_gre_tunnel_dump_t_print
+(vl_api_mpls_gre_tunnel_dump_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: mpls_gre_tunnel_dump ");
+
+    s = format (s, "tunnel_index %d ", ntohl(mp->tunnel_index));
+
+    FINISH;
+}
+
+static void *vl_api_mpls_eth_tunnel_dump_t_print
+(vl_api_mpls_eth_tunnel_dump_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: mpls_eth_tunnel_dump ");
+
+    s = format (s, "tunnel_index %d ", ntohl(mp->tunnel_index));
+
+    FINISH;
+}
+
+static void *vl_api_mpls_fib_encap_dump_t_print
+(vl_api_mpls_fib_encap_dump_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: mpls_fib_encap_dump ");
+
+    FINISH;
+}
+
+static void *vl_api_mpls_fib_decap_dump_t_print
+(vl_api_mpls_fib_decap_dump_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: mpls_fib_decap_dump ");
+
+    FINISH;
+}
+
+static void *vl_api_classify_table_ids_t_print
+(vl_api_classify_table_ids_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: classify_table_ids ");
+
+    FINISH;
+}
+
+static void *vl_api_classify_table_by_interface_t_print
+(vl_api_classify_table_by_interface_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: classify_table_by_interface ");
+    if (mp->sw_if_index != ~0)
+      s = format (s, "sw_if_index %d ", ntohl(mp->sw_if_index));
+
+    FINISH;
+}
+
+static void *vl_api_classify_table_info_t_print
+(vl_api_classify_table_info_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: classify_table_info ");
+    if (mp->table_id != ~0)
+      s = format (s, "table_id %d ", ntohl(mp->table_id));
+
+    FINISH;
+}
+
+static void *vl_api_classify_session_dump_t_print
+(vl_api_classify_session_dump_t * mp, void *handle)
+{
+    u8 * s;
+
+    s = format (0, "SCRIPT: classify_session_dump ");
+    if (mp->table_id != ~0)
+      s = format (s, "table_id %d ", ntohl(mp->table_id));
+
+    FINISH;
+}
+
 #define foreach_custom_print_function                                   \
 _(CREATE_LOOPBACK, create_loopback)                                     \
 _(SW_INTERFACE_SET_FLAGS, sw_interface_set_flags)                       \
@@ -1729,6 +1880,8 @@ _(SW_INTERFACE_IP6ND_RA_CONFIG, sw_interface_ip6nd_ra_config)           \
 _(SET_ARP_NEIGHBOR_LIMIT, set_arp_neighbor_limit)                       \
 _(L2_PATCH_ADD_DEL, l2_patch_add_del)                                   \
 _(SR_TUNNEL_ADD_DEL, sr_tunnel_add_del)                                        \
+_(SR_POLICY_ADD_DEL, sr_policy_add_del)                                        \
+_(SR_MULTICAST_MAP_ADD_DEL, sr_multicast_map_add_del)                   \
 _(SW_INTERFACE_SET_L2_XCONNECT, sw_interface_set_l2_xconnect)           \
 _(L2FIB_ADD_DEL, l2fib_add_del)                                         \
 _(L2_FLAGS, l2_flags)                                                   \
@@ -1737,7 +1890,7 @@ _(CLASSIFY_ADD_DEL_TABLE, classify_add_del_table)                 \
 _(CLASSIFY_ADD_DEL_SESSION, classify_add_del_session)                  \
 _(SW_INTERFACE_SET_L2_BRIDGE, sw_interface_set_l2_bridge)              \
 _(BRIDGE_DOMAIN_ADD_DEL, bridge_domain_add_del)                         \
-_(BRIDGE_DOMAIN_DUMP, bridge_domain_dump)                            \
+_(BRIDGE_DOMAIN_DUMP, bridge_domain_dump)                               \
 _(CLASSIFY_SET_INTERFACE_IP_TABLE, classify_set_interface_ip_table)    \
 _(CLASSIFY_SET_INTERFACE_L2_TABLES, classify_set_interface_l2_tables)  \
 _(ADD_NODE_NEXT, add_node_next)                                                \
@@ -1750,6 +1903,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)                                 \
+_(GRE_ADD_DEL_TUNNEL, gre_add_del_tunnel)                               \
+_(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)         \
@@ -1763,17 +1918,29 @@ _(CLI_REQUEST, cli_request)                                             \
 _(MEMCLNT_CREATE, memclnt_create)                                      \
 _(SW_INTERFACE_VHOST_USER_DUMP, sw_interface_vhost_user_dump)           \
 _(SHOW_VERSION, show_version)                                           \
-_(NSH_GRE_ADD_DEL_TUNNEL, nsh_gre_add_del_tunnel)                      \
 _(L2_FIB_TABLE_DUMP, l2_fib_table_dump)                                 \
-_(NSH_VXLAN_GPE_ADD_DEL_TUNNEL, nsh_vxlan_gpe_add_del_tunnel)          \
-_(LISP_GPE_ADD_DEL_TUNNEL, lisp_gpe_add_del_tunnel)                    \
+_(VXLAN_GPE_ADD_DEL_TUNNEL, vxlan_gpe_add_del_tunnel)                          \
+_(VXLAN_GPE_TUNNEL_DUMP, vxlan_gpe_tunnel_dump)                         \
 _(INTERFACE_NAME_RENUMBER, interface_name_renumber)                    \
 _(WANT_IP4_ARP_EVENTS, want_ip4_arp_events)                             \
 _(INPUT_ACL_SET_INTERFACE, input_acl_set_interface)                     \
 _(IP_ADDRESS_DUMP, ip_address_dump)                                     \
 _(IP_DUMP, ip_dump)                                                     \
 _(DELETE_LOOPBACK, delete_loopback)                                     \
-_(BD_IP_MAC_ADD_DEL, bd_ip_mac_add_del)
+_(BD_IP_MAC_ADD_DEL, bd_ip_mac_add_del)                                        \
+_(COP_INTERFACE_ENABLE_DISABLE, cop_interface_enable_disable)          \
+_(COP_WHITELIST_ENABLE_DISABLE, cop_whitelist_enable_disable)           \
+_(AF_PACKET_CREATE, af_packet_create)                                  \
+_(AF_PACKET_DELETE, af_packet_delete)                                  \
+_(SW_INTERFACE_CLEAR_STATS, sw_interface_clear_stats)                   \
+_(MPLS_GRE_TUNNEL_DUMP, mpls_gre_tunnel_dump)                           \
+_(MPLS_ETH_TUNNEL_DUMP, mpls_eth_tunnel_dump)                           \
+_(MPLS_FIB_ENCAP_DUMP, mpls_fib_encap_dump)                             \
+_(MPLS_FIB_DECAP_DUMP, mpls_fib_decap_dump)                             \
+_(CLASSIFY_TABLE_IDS,classify_table_ids)                                \
+_(CLASSIFY_TABLE_BY_INTERFACE, classify_table_by_interface)             \
+_(CLASSIFY_TABLE_INFO,classify_table_info)                              \
+_(CLASSIFY_SESSION_DUMP,classify_session_dump)
 
 void vl_msg_api_custom_dump_configure (api_main_t *am) 
 {