LISP-GPE: return index of newly created fwd entry, VPP-868
[vpp.git] / src / vnet / lisp-gpe / lisp_gpe_api.c
index 9edffa1..ab081b3 100644 (file)
@@ -198,11 +198,11 @@ gpe_fwd_entries_copy (vl_api_gpe_fwd_entry_t * dst,
 
   vec_foreach (e, src)
   {
-    memset (dst, 0, sizeof (*dst));
-    dst[i].dp_table = src->dp_table;
-    dst[i].fwd_entry_index = src->fwd_entry_index;
-    dst[i].vni = src->vni;
-    dst[i].action = src->action;
+    memset (&dst[i], 0, sizeof (*dst));
+    dst[i].dp_table = e->dp_table;
+    dst[i].fwd_entry_index = e->fwd_entry_index;
+    dst[i].vni = e->vni;
+    dst[i].action = e->action;
     switch (fid_addr_type (&e->leid))
       {
       case FID_ADDR_IP_PREF:
@@ -358,7 +358,12 @@ vl_api_gpe_add_del_fwd_entry_t_handler (vl_api_gpe_add_del_fwd_entry_t * mp)
   rv = vnet_lisp_gpe_add_del_fwd_entry (a, 0);
   vec_free (pairs);
 send_reply:
-  REPLY_MACRO (VL_API_GPE_ADD_DEL_FWD_ENTRY_REPLY);
+  /* *INDENT-OFF* */
+  REPLY_MACRO2 (VL_API_GPE_ADD_DEL_FWD_ENTRY_REPLY,
+  {
+    rmp->fwd_entry_index = clib_host_to_net_u32 (a->fwd_entry_index);
+  });
+  /* *INDENT-ON* */
 }
 
 static void