X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip_types.c;h=323cf4d456cc4dfd97095e4b185c16d6de12f622;hb=3a1a86f87fd7d9c84ad4b12124c50fc3927ec6cf;hp=3e5ecebf142f151d73999522d6559816ce4175d3;hpb=1523c96deb2bc2f03e7823be4545342309da18fc;p=vpp.git diff --git a/src/vnet/ip/ip_types.c b/src/vnet/ip/ip_types.c index 3e5ecebf142..323cf4d456c 100644 --- a/src/vnet/ip/ip_types.c +++ b/src/vnet/ip/ip_types.c @@ -287,6 +287,13 @@ ip_address_to_fib_prefix (const ip_address_t * addr, fib_prefix_t * prefix) prefix->___fp___pad = 0; } +void +ip_address_to_prefix (const ip_address_t *addr, ip_prefix_t *prefix) +{ + prefix->len = (addr->version == AF_IP4 ? 32 : 128); + clib_memcpy (&prefix->addr, addr, sizeof (prefix->addr)); +} + void ip_address_increment (ip_address_t * ip) { @@ -380,23 +387,24 @@ ip_prefix_copy (void *dst, void *src) } int -ip_prefix_cmp (ip_prefix_t * p1, ip_prefix_t * p2) +ip_prefix_cmp (const ip_prefix_t *ipp1, const ip_prefix_t *ipp2) { + ip_prefix_t p1 = *ipp1, p2 = *ipp2; int cmp = 0; - ip_prefix_normalize (p1); - ip_prefix_normalize (p2); + ip_prefix_normalize (&p1); + ip_prefix_normalize (&p2); - cmp = ip_address_cmp (&ip_prefix_addr (p1), &ip_prefix_addr (p2)); + cmp = ip_address_cmp (&ip_prefix_addr (&p1), &ip_prefix_addr (&p2)); if (cmp == 0) { - if (ip_prefix_len (p1) < ip_prefix_len (p2)) + if (ip_prefix_len (&p1) < ip_prefix_len (&p2)) { cmp = 1; } else { - if (ip_prefix_len (p1) > ip_prefix_len (p2)) + if (ip_prefix_len (&p1) > ip_prefix_len (&p2)) cmp = 2; } }