Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
session: add support for proxying apps
[vpp.git]
/
src
/
vnet
/
ip
/
ip.c
diff --git
a/src/vnet/ip/ip.c
b/src/vnet/ip/ip.c
index
e6d9934
..
0c4687d
100644
(file)
--- a/
src/vnet/ip/ip.c
+++ b/
src/vnet/ip/ip.c
@@
-190,6
+190,8
@@
ip4_preflen_to_mask (u8 pref_len, ip4_address_t * ip)
u32
ip4_mask_to_preflen (ip4_address_t * mask)
{
u32
ip4_mask_to_preflen (ip4_address_t * mask)
{
+ if (mask->as_u32 == 0)
+ return 0;
return (32 - log2_first_set (clib_net_to_host_u32 (mask->as_u32)));
}
return (32 - log2_first_set (clib_net_to_host_u32 (mask->as_u32)));
}
@@
-228,15
+230,20
@@
ip6_prefix_max_address_host_order (ip6_address_t * ip, u8 plen,
ip6_address_t * res)
{
u64 not_mask;
ip6_address_t * res)
{
u64 not_mask;
- if (plen
<= 64
)
+ if (plen
== 0
)
{
{
- not_mask = (1 << (64 - plen)) - 1;
+ res->as_u64[0] = 0xffffffffffffffffL;
+ res->as_u64[1] = 0xffffffffffffffffL;
+ }
+ else if (plen <= 64)
+ {
+ not_mask = ((u64) 1 << (64 - plen)) - 1;
res->as_u64[0] = clib_net_to_host_u64 (ip->as_u64[0]) + not_mask;
res->as_u64[1] = 0xffffffffffffffffL;
}
else
{
res->as_u64[0] = clib_net_to_host_u64 (ip->as_u64[0]) + not_mask;
res->as_u64[1] = 0xffffffffffffffffL;
}
else
{
- not_mask = (1 << (128 - plen)) - 1;
+ not_mask = (
(u64)
1 << (128 - plen)) - 1;
res->as_u64[1] = clib_net_to_host_u64 (ip->as_u64[1]) + not_mask;
}
}
res->as_u64[1] = clib_net_to_host_u64 (ip->as_u64[1]) + not_mask;
}
}
@@
-246,7
+253,7
@@
ip6_mask_to_preflen (ip6_address_t * mask)
{
u8 first1, first0;
if (mask->as_u64[0] == 0 && mask->as_u64[1] == 0)
{
u8 first1, first0;
if (mask->as_u64[0] == 0 && mask->as_u64[1] == 0)
- return
128
;
+ return
0
;
first1 = log2_first_set (mask->as_u64[1]);
first0 = log2_first_set (mask->as_u64[0]);
first1 = log2_first_set (mask->as_u64[1]);
first0 = log2_first_set (mask->as_u64[0]);