Fix memory leak in processing of ICMPv6 RA event (VPP-1360)
[vpp.git] / src / vnet / ip / ip_api.c
index 48e523f..64d6724 100644 (file)
@@ -159,7 +159,7 @@ vl_api_ip_neighbor_dump_t_handler (vl_api_ip_neighbor_dump_t * mp)
       vec_foreach (n, ns)
       {
         send_ip_neighbor_details
-          (sw_if_index, mp->is_ipv6,
+          (n->key.sw_if_index, mp->is_ipv6,
           ((n->flags & IP6_NEIGHBOR_FLAG_STATIC) ? 1 : 0),
            (u8 *) n->link_layer_address,
            (u8 *) & (n->key.ip6_address.as_u8),
@@ -176,7 +176,7 @@ vl_api_ip_neighbor_dump_t_handler (vl_api_ip_neighbor_dump_t * mp)
       /* *INDENT-OFF* */
       vec_foreach (n, ns)
       {
-        send_ip_neighbor_details (sw_if_index, mp->is_ipv6,
+        send_ip_neighbor_details (n->sw_if_index, mp->is_ipv6,
           ((n->flags & ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC) ? 1 : 0),
           (u8*) n->ethernet_address,
           (u8*) & (n->ip4_address.as_u8),
@@ -2463,7 +2463,8 @@ wc_arp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
                    vl_api_send_msg (vl_reg, (u8 *) event);
                  }
               }));
-            /* *INDENT-ON* */
+              /* *INDENT-ON* */
+             vec_free (ra_events[i].prefixes);
            }
        }
       vlib_process_put_event_data (vm, event_data);
@@ -2993,10 +2994,10 @@ vl_api_ip_probe_neighbor_t_handler (vl_api_ip_probe_neighbor_t * mp)
 
   if (mp->is_ipv6)
     error = ip6_probe_neighbor (vm, (ip6_address_t *) mp->dst_address,
-                               sw_if_index);
+                               sw_if_index, 0);
   else
     error = ip4_probe_neighbor (vm, (ip4_address_t *) mp->dst_address,
-                               sw_if_index);
+                               sw_if_index, 0);
 
   if (error)
     {