ip: fix IPv6 mask to prefix length conversion

make sure we don't pass a 0 (zero) to log2.

Type: fix

Signed-off-by: Andreas Schultz <andreas.schultz@travelping.com>
Change-Id: Ib3386ad4686835d3836f48294cee4058e897847a
This commit is contained in:
Andreas Schultz
2020-05-12 14:41:16 +02:00
committed by Florin Coras
parent 63c672c440
commit 3b519b38b0
2 changed files with 10 additions and 20 deletions

View File

@ -511,16 +511,11 @@ ip6_prefix_max_address_host_order (ip6_address_t * ip, u8 plen,
u32
ip6_mask_to_preflen (ip6_address_t * mask)
{
u8 first1, first0;
if (mask->as_u64[0] == 0 && mask->as_u64[1] == 0)
return 0;
first1 = log2_first_set (clib_net_to_host_u64 (mask->as_u64[1]));
first0 = log2_first_set (clib_net_to_host_u64 (mask->as_u64[0]));
if (first1 != 0)
return 128 - first1;
else
return 64 - first0;
if (mask->as_u64[1] != 0)
return 128 - log2_first_set (clib_net_to_host_u64 (mask->as_u64[1]));
if (mask->as_u64[0] != 0)
return 64 - log2_first_set (clib_net_to_host_u64 (mask->as_u64[0]));
return 0;
}
/*

View File

@ -511,16 +511,11 @@ ip6_prefix_max_address_host_order (ip6_address_t * ip, u8 plen,
u32
ip6_mask_to_preflen (ip6_address_t * mask)
{
u8 first1, first0;
if (mask->as_u64[0] == 0 && mask->as_u64[1] == 0)
return 0;
first1 = log2_first_set (clib_net_to_host_u64 (mask->as_u64[1]));
first0 = log2_first_set (clib_net_to_host_u64 (mask->as_u64[0]));
if (first1 != 0)
return 128 - first1;
else
return 64 - first0;
if (mask->as_u64[1] != 0)
return 128 - log2_first_set (clib_net_to_host_u64 (mask->as_u64[1]));
if (mask->as_u64[0] != 0)
return 64 - log2_first_set (clib_net_to_host_u64 (mask->as_u64[0]));
return 0;
}
/*