vrrp: prevent segfault in multicast join due to missing LL Addr
If an IPv6 Link Layer Address is missing from an interface,
treat it as a down interface. While this fails to send a
VRRP multicast group join, it also prevents a seg fault.
Type: fix
Fixes: 39e9428b90
Signed-off-by: Jon Loeliger <jdl@netgate.com>
Change-Id: Iebf69bb30604a96de6587655eb872aa818158a56
This commit is contained in:
committed by
Neale Ranns
parent
905c15319c
commit
dabdc19798
@@ -691,6 +691,11 @@ vrrp_vr_multicast_group_join (vrrp_vr_t * vr)
|
||||
if (!vnet_sw_interface_is_up (vnm, vr->config.sw_if_index))
|
||||
return 0;
|
||||
|
||||
is_ipv6 = vrrp_vr_is_ipv6 (vr);
|
||||
|
||||
if (is_ipv6 && ip6_link_is_enabled (vr->config.sw_if_index) == 0)
|
||||
return 0;
|
||||
|
||||
if (vlib_buffer_alloc (vm, &bi, n_buffers) != n_buffers)
|
||||
{
|
||||
clib_warning ("Buffer allocation failed for %U", format_vrrp_vr_key,
|
||||
@@ -698,8 +703,6 @@ vrrp_vr_multicast_group_join (vrrp_vr_t * vr)
|
||||
return -1;
|
||||
}
|
||||
|
||||
is_ipv6 = vrrp_vr_is_ipv6 (vr);
|
||||
|
||||
b = vlib_get_buffer (vm, bi);
|
||||
|
||||
b->flags |= VNET_BUFFER_F_LOCALLY_ORIGINATED;
|
||||
|
||||
Reference in New Issue
Block a user