vrrp: fix vrrp_garp_or_na_send()'s memory leak
[vpp.git] / src / plugins / vrrp / vrrp_packet.c
index 89a6ede..69e635f 100644 (file)
@@ -338,8 +338,7 @@ vrrp_adv_send (vrrp_vr_t * vr, int shutdown)
 
       if (-1 == vrrp_adv_l3_build (vr, b, dst))
        {
-         vlib_frame_free (vm, vlib_node_get_runtime (vm, node_index),
-                          to_frame);
+         vlib_frame_free (vm, to_frame);
          vlib_buffer_free (vm, bi, n_buffers);
          return -1;
        }
@@ -354,6 +353,12 @@ vrrp_adv_send (vrrp_vr_t * vr, int shutdown)
 
   vlib_put_frame_to_node (vm, node_index, to_frame);
 
+  vrrp_incr_stat_counter (VRRP_STAT_COUNTER_ADV_SENT, vr->stat_index);
+  if (shutdown)
+    {
+      vrrp_incr_stat_counter (VRRP_STAT_COUNTER_PRIO0_SENT, vr->stat_index);
+    }
+
   vec_free (bi);
 
   return 0;
@@ -533,6 +538,8 @@ vrrp_garp_or_na_send (vrrp_vr_t * vr)
 
   vlib_put_frame_to_node (vm, vmp->intf_output_node_idx, to_frame);
 
+  vec_free (bi);
+
   return 0;
 }