ONE-2: Add new LISP dump API for lisp gpe
[vpp.git] / vpp / api / api.c
index 724bcf9..18c00bd 100644 (file)
@@ -331,6 +331,8 @@ _(LISP_LOCATOR_SET_DUMP, lisp_locator_set_dump)                         \
 _(LISP_LOCAL_EID_TABLE_DUMP, lisp_local_eid_table_dump)                 \
 _(LISP_GPE_TUNNEL_DUMP, lisp_gpe_tunnel_dump)                           \
 _(LISP_MAP_RESOLVER_DUMP, lisp_map_resolver_dump)                       \
+_(LISP_GPE_ENABLE_DISABLE_STATUS_DUMP,                                  \
+  lisp_gpe_enable_disable_status_dump)                                  \
 _(SR_MULTICAST_MAP_ADD_DEL, sr_multicast_map_add_del)
 
 #define QUOTE_(x) #x
@@ -4543,7 +4545,7 @@ vl_api_nsh_gre_add_del_tunnel_t_handler
     decap_next_index = ntohl(mp->decap_next_index);
 
     /* Interpret decap_vrf_id as an opaque if sending to other-than-ip4-input */
-    if (decap_next_index == NSH_INPUT_NEXT_IP4_INPUT) {
+    if (decap_next_index == NSH_GRE_INPUT_NEXT_IP4_INPUT) {
         p = hash_get (im->fib_index_by_table_id, ntohl(mp->decap_vrf_id));
         if (! p) {
             rv = VNET_API_ERROR_NO_SUCH_INNER_FIB;
@@ -4563,20 +4565,20 @@ vl_api_nsh_gre_add_del_tunnel_t_handler
     a->encap_fib_index = encap_fib_index;
     a->decap_fib_index = decap_fib_index;
     a->decap_next_index = decap_next_index;
-    a->ver_o_c = mp->ver_o_c;
-    a->length = mp->length;
-    a->md_type = mp->md_type;
-    a->next_protocol = mp->next_protocol;
-    a->spi_si = ntohl(mp->spi_si);
-    a->c1 = ntohl(mp->c1);
-    a->c2 = ntohl(mp->c2);
-    a->c3 = ntohl(mp->c3);
-    a->c4 = ntohl(mp->c4);
+    a->nsh_hdr.ver_o_c = mp->ver_o_c;
+    a->nsh_hdr.length = mp->length;
+    a->nsh_hdr.md_type = mp->md_type;
+    a->nsh_hdr.next_protocol = mp->next_protocol;
+    a->nsh_hdr.spi_si = ntohl(mp->spi_si);
+    a->nsh_hdr.c1 = ntohl(mp->c1);
+    a->nsh_hdr.c2 = ntohl(mp->c2);
+    a->nsh_hdr.c3 = ntohl(mp->c3);
+    a->nsh_hdr.c4 = ntohl(mp->c4);
 
     for (i = 0; i < mp->tlv_len_in_words; i++)
         vec_add1 (tlvs, ntohl(mp->tlvs[i]));
 
-    a->tlvs = tlvs;
+    a->nsh_hdr.tlvs = tlvs;
 
     rv = vnet_nsh_gre_add_del_tunnel (a, &sw_if_index);
     
@@ -4612,7 +4614,7 @@ vl_api_nsh_vxlan_gpe_add_del_tunnel_t_handler
     decap_next_index = ntohl(mp->decap_next_index);
 
     /* Interpret decap_vrf_id as an opaque if sending to other-than-ip4-input */
-    if (decap_next_index == NSH_INPUT_NEXT_IP4_INPUT) {
+    if (decap_next_index == NSH_GRE_INPUT_NEXT_IP4_INPUT) {
         p = hash_get (im->fib_index_by_table_id, ntohl(mp->decap_vrf_id));
         if (! p) {
             rv = VNET_API_ERROR_NO_SUCH_INNER_FIB;
@@ -4633,20 +4635,20 @@ vl_api_nsh_vxlan_gpe_add_del_tunnel_t_handler
     a->decap_fib_index = decap_fib_index;
     a->decap_next_index = decap_next_index;
     a->vni = ntohl(mp->vni);
-    a->ver_o_c = mp->ver_o_c;
-    a->length = mp->length;
-    a->md_type = mp->md_type;
-    a->next_protocol = mp->next_protocol;
-    a->spi_si = ntohl(mp->spi_si);
-    a->c1 = ntohl(mp->c1);
-    a->c2 = ntohl(mp->c2);
-    a->c3 = ntohl(mp->c3);
-    a->c4 = ntohl(mp->c4);
+    a->nsh_hdr.ver_o_c = mp->ver_o_c;
+    a->nsh_hdr.length = mp->length;
+    a->nsh_hdr.md_type = mp->md_type;
+    a->nsh_hdr.next_protocol = mp->next_protocol;
+    a->nsh_hdr.spi_si = ntohl(mp->spi_si);
+    a->nsh_hdr.c1 = ntohl(mp->c1);
+    a->nsh_hdr.c2 = ntohl(mp->c2);
+    a->nsh_hdr.c3 = ntohl(mp->c3);
+    a->nsh_hdr.c4 = ntohl(mp->c4);
 
     for (i = 0; i < mp->tlv_len_in_words; i++)
         vec_add1 (tlvs, ntohl(mp->tlvs[i]));
 
-    a->tlvs = tlvs;
+    a->nsh_hdr.tlvs = tlvs;
 
     rv = vnet_nsh_vxlan_gpe_add_del_tunnel (a, &sw_if_index);
     
@@ -4680,7 +4682,7 @@ vl_api_lisp_gpe_add_del_tunnel_t_handler
     decap_next_index = ntohl(mp->decap_next_index);
 
     /* Interpret decap_vrf_id as an opaque if sending to other-than-ip4-input */
-    if (decap_next_index == NSH_INPUT_NEXT_IP4_INPUT) {
+    if (decap_next_index == NSH_GRE_INPUT_NEXT_IP4_INPUT) {
         p = hash_get (im->fib_index_by_table_id, ntohl(mp->decap_vrf_id));
         if (! p) {
             rv = VNET_API_ERROR_NO_SUCH_INNER_FIB;
@@ -5171,6 +5173,38 @@ vl_api_lisp_map_resolver_dump_t_handler (
 
 }
 
+static void
+send_lisp_gpe_enable_disable_details (unix_shared_memory_queue_t *q,
+                                      u32 context)
+{
+    vl_api_lisp_gpe_enable_disable_status_details_t *rmp = NULL;
+    u8 is_en;
+
+    rmp = vl_msg_api_alloc (sizeof (*rmp));
+    memset (rmp, 0, sizeof (*rmp));
+    rmp->_vl_msg_id = ntohs(VL_API_LISP_GPE_ENABLE_DISABLE_STATUS_DETAILS);
+
+    is_en = vnet_lisp_gpe_enable_disable_status();
+    rmp->is_en = is_en;
+    rmp->context = context;
+
+    vl_msg_api_send_shmem (q, (u8 *)&rmp);
+}
+
+static void
+vl_api_lisp_gpe_enable_disable_status_dump_t_handler
+(vl_api_lisp_gpe_enable_disable_status_dump_t *mp)
+{
+    unix_shared_memory_queue_t * q = NULL;
+
+    q = vl_api_client_index_to_input_queue (mp->client_index);
+    if (q == 0) {
+        return;
+    }
+
+    send_lisp_gpe_enable_disable_details(q, mp->context);
+}
+
 static void 
 vl_api_interface_name_renumber_t_handler (vl_api_interface_name_renumber_t *mp)
 {