vrrp: fix vrrp_garp_or_na_send()'s memory leak
[vpp.git] / src / plugins / vrrp / vrrp.c
index f1ab1b2..fb06596 100644 (file)
@@ -662,7 +662,7 @@ vrrp_vr_addr_add_del (vrrp_vr_t * vr, u8 is_add, ip46_address_t * vr_addr)
          {
            if (!ip46_address_cmp (addr, vr_addr))
              {
-               vec_del1 (vr->config.vr_addrs, vr->config.vr_addrs - addr);
+               vec_del1 (vr->config.vr_addrs, addr - vr->config.vr_addrs);
                break;
              }
          }
@@ -684,7 +684,7 @@ vrrp_vr_addr_add_del (vrrp_vr_t * vr, u8 is_add, ip46_address_t * vr_addr)
          {
            if (!ip46_address_cmp (addr, vr_addr))
              {
-               vec_del1 (vr->config.vr_addrs, vr->config.vr_addrs - addr);
+               vec_del1 (vr->config.vr_addrs, addr - vr->config.vr_addrs);
                break;
              }
          }
@@ -815,6 +815,7 @@ vrrp_vr_del_common (vrrp_vr_t *vr, vrrp_vr_key_t *key)
   vrrp_main_t *vrm = &vrrp_main;
   ip46_address_t *vr_addrs_del_copy;
 
+  vrrp_vr_timer_cancel (vr);
   vrrp_vr_tracking_ifs_add_del (vr, vr->tracking.interfaces, 0);
   vr_addrs_del_copy = vec_dup (vr->config.vr_addrs);
   vrrp_vr_addrs_add_del (vr, 0, vr_addrs_del_copy);
@@ -1518,13 +1519,11 @@ vrrp_init (vlib_main_t * vm)
 VLIB_INIT_FUNCTION (vrrp_init);
 
 
-/* *INDENT-OFF* */
 VLIB_PLUGIN_REGISTER () =
 {
   .version = VPP_BUILD_VER,
   .description = "VRRP v3 (RFC 5798)",
 };
-/* *INDENT-ON* */
 
 /*
  * fd.io coding-style-patch-verification: ON