VPP-108 : API calls to read classify table and sessions
[vpp.git] / vpp / api / custom_dump.c
index 6ae8c76..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,7 +1013,7 @@ static void *vl_api_sr_tunnel_add_del_t_print
 
     s = format (0, "SCRIPT: sr_tunnel_add_del ");
 
-    if (mp->name)
+    if (mp->name[0])
       s = format (s, "name %s ", mp->name);
 
     s = format (s, "src %U dst %U/%d ", format_ip6_address, 
@@ -1065,7 +1064,7 @@ static void *vl_api_sr_tunnel_add_del_t_print
         }
     }
 
-    if (mp->policy_name)
+    if (mp->policy_name[0])
       s = format (s, "policy_name %s ", mp->policy_name);
 
     if (mp->is_add == 0)
@@ -1082,11 +1081,11 @@ static void *vl_api_sr_policy_add_del_t_print
 
   s = format (0, "SCRIPT: sr_policy_add_del ");
 
-  if (mp->name)
+  if (mp->name[0])
     s = format (s, "name %s ", mp->name);
 
 
-  if (mp->tunnel_names)
+  if (mp->tunnel_names[0])
     {
     // start deserializing tunnel_names
     int num_tunnels = mp->tunnel_names[0]; //number of tunnels
@@ -1110,7 +1109,7 @@ static void *vl_api_sr_policy_add_del_t_print
 
   if (mp->is_add == 0)
     s = format (s, "del ");
-    
+
   FINISH;
 }
 
@@ -1123,16 +1122,16 @@ static void *vl_api_sr_multicast_map_add_del_t_print
 
   s = format (0, "SCRIPT: sr_multicast_map_add_del ");
 
-  if (mp->multicast_address)
-    s = format (s, "address %U ", format_ip6_address, &mp->multicast_address); 
+  if (mp->multicast_address[0])
+    s = format (s, "address %U ", format_ip6_address, &mp->multicast_address);
 
-  if (mp->policy_name)
+  if (mp->policy_name[0])
     s = format (s, "sr-policy %s ", &mp->policy_name);
 
 
-  if (mp->is_add == 0) 
+  if (mp->is_add == 0)
     s = format (s, "del ");
-    
+
   FINISH;
 }
 
@@ -1336,10 +1335,12 @@ static void * vl_api_vxlan_add_del_tunnel_t_print
     s = format (0, "SCRIPT: vxlan_add_del_tunnel ");
 
     s = format (s, "dst %U ", format_ip46_address,
-                (ip46_address_t *)&(mp->dst_address));
+                (ip46_address_t *)&(mp->dst_address),
+               mp->is_ipv6 ? IP46_TYPE_IP6 : IP46_TYPE_IP4);
 
     s = format (s, "src %U ", format_ip46_address,
-                (ip46_address_t *)&(mp->src_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));
@@ -1574,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);
+    s = format (0, "SCRIPT: vxlan_gpe_add_del_tunnel ");
 
-    spi_si = ntohl(mp->spi_si);
+    s = format (s, "local %U ", format_ip46_address, &mp->local, 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, "remote %U ", format_ip46_address, &mp->remote, mp->is_ipv6);
 
-    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 (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));
+    s = format (s, "protocol %d ", ntohl(mp->protocol));
 
     s = format (s, "vni %d ", ntohl(mp->vni));
 
@@ -1657,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);
-
-    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));
+    s = format (0, "SCRIPT: vxlan_gpe_tunnel_dump ");
 
-    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;
 }
 
@@ -1830,6 +1717,32 @@ static void * vl_api_cop_whitelist_enable_disable_t_print
     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)
 {
@@ -1842,6 +1755,96 @@ static void *vl_api_sw_interface_clear_stats_t_print
     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)                       \
@@ -1915,10 +1918,9 @@ _(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)                     \
@@ -1928,7 +1930,17 @@ _(DELETE_LOOPBACK, delete_loopback)                                     \
 _(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)           \
-_(SW_INTERFACE_CLEAR_STATS, sw_interface_clear_stats)
+_(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) 
 {