summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas.abraitis@gmail.com>2021-07-01 23:29:26 +0300
committerDonatas Abraitis <donatas.abraitis@gmail.com>2021-07-01 23:54:39 +0300
commit8643c2e5f7b5541f136a3dfff5abe5b537159442 (patch)
tree5951d4ae8a28244fa2545c56d06629ef009ccf87
parent12256b84a540434485b16433f83aa23928405560 (diff)
*: Replace 4/16 integers to IPV4_MAX_BYTELEN/IPV6_MAX_BYTELEN
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
-rw-r--r--babeld/babel_interface.c83
-rw-r--r--babeld/util.c17
-rw-r--r--bgpd/bgp_encap_tlv.c14
-rw-r--r--bgpd/bgp_evpn.c9
-rw-r--r--lib/filter.c10
-rw-r--r--pbrd/pbr_zebra.c8
-rw-r--r--sharpd/sharp_vty.c2
-rw-r--r--staticd/static_nht.c3
-rw-r--r--zebra/zebra_nhg.c3
9 files changed, 84 insertions, 65 deletions
diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index 41391c51ac..43ed97cf17 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -177,10 +177,11 @@ babel_interface_address_delete (ZAPI_CALLBACK_ARGS)
if (prefix->family == AF_INET) {
flush_interface_routes(ifc->ifp, 0);
babel_ifp = babel_get_if_nfo(ifc->ifp);
- if (babel_ifp->ipv4 != NULL
- && memcmp(babel_ifp->ipv4, &prefix->u.prefix4, 4) == 0) {
- free(babel_ifp->ipv4);
- babel_ifp->ipv4 = NULL;
+ if (babel_ifp->ipv4 != NULL
+ && memcmp(babel_ifp->ipv4, &prefix->u.prefix4, IPV4_MAX_BYTELEN)
+ == 0) {
+ free(babel_ifp->ipv4);
+ babel_ifp->ipv4 = NULL;
}
}
@@ -825,9 +826,11 @@ is_interface_ll_address(struct interface *ifp, const unsigned char *address)
return 0;
FOR_ALL_INTERFACES_ADDRESSES(ifp, connected, node) {
- if(connected->address->family == AF_INET6 &&
- memcmp(&connected->address->u.prefix6, address, 16) == 0)
- return 1;
+ if (connected->address->family == AF_INET6
+ && memcmp(&connected->address->u.prefix6, address,
+ IPV6_MAX_BYTELEN)
+ == 0)
+ return 1;
}
return 0;
@@ -941,13 +944,13 @@ static int
babel_prefix_eq(struct prefix *prefix, unsigned char *p, int plen)
{
if(prefix->family == AF_INET6) {
- if(prefix->prefixlen != plen ||
- memcmp(&prefix->u.prefix6, p, 16) != 0)
- return 0;
+ if (prefix->prefixlen != plen
+ || memcmp(&prefix->u.prefix6, p, IPV6_MAX_BYTELEN) != 0)
+ return 0;
} else if(prefix->family == AF_INET) {
- if(plen < 96 || !v4mapped(p) || prefix->prefixlen != plen - 96 ||
- memcmp(&prefix->u.prefix4, p + 12, 4) != 0)
- return 0;
+ if (plen < 96 || !v4mapped(p) || prefix->prefixlen != plen - 96
+ || memcmp(&prefix->u.prefix4, p + 12, IPV4_MAX_BYTELEN) != 0)
+ return 0;
} else {
return 0;
}
@@ -959,31 +962,35 @@ static void
show_babel_routes_sub(struct babel_route *route, struct vty *vty,
struct prefix *prefix)
{
- const unsigned char *nexthop =
- memcmp(route->nexthop, route->neigh->address, 16) == 0 ?
- NULL : route->nexthop;
- char channels[100];
-
- if(prefix && !babel_prefix_eq(prefix, route->src->prefix, route->src->plen))
- return;
-
- if(route->channels[0] == 0)
- channels[0] = '\0';
- else {
- int k, j = 0;
- snprintf(channels, sizeof(channels), " chan (");
- j = strlen(channels);
- for(k = 0; k < DIVERSITY_HOPS; k++) {
- if(route->channels[k] == 0)
- break;
- if(k > 0)
- channels[j++] = ',';
- snprintf(channels + j, 100 - j, "%u", route->channels[k]);
- j = strlen(channels);
- }
- snprintf(channels + j, 100 - j, ")");
- if(k == 0)
- channels[0] = '\0';
+ const unsigned char *nexthop =
+ memcmp(route->nexthop, route->neigh->address, IPV6_MAX_BYTELEN)
+ == 0
+ ? NULL
+ : route->nexthop;
+ char channels[100];
+
+ if (prefix
+ && !babel_prefix_eq(prefix, route->src->prefix, route->src->plen))
+ return;
+
+ if (route->channels[0] == 0)
+ channels[0] = '\0';
+ else {
+ int k, j = 0;
+ snprintf(channels, sizeof(channels), " chan (");
+ j = strlen(channels);
+ for (k = 0; k < DIVERSITY_HOPS; k++) {
+ if (route->channels[k] == 0)
+ break;
+ if (k > 0)
+ channels[j++] = ',';
+ snprintf(channels + j, 100 - j, "%u",
+ route->channels[k]);
+ j = strlen(channels);
+ }
+ snprintf(channels + j, 100 - j, ")");
+ if (k == 0)
+ channels[0] = '\0';
}
vty_out (vty,
diff --git a/babeld/util.c b/babeld/util.c
index be838fa438..e2db75996e 100644
--- a/babeld/util.c
+++ b/babeld/util.c
@@ -220,9 +220,9 @@ unsigned char *
mask_prefix(unsigned char *restrict ret,
const unsigned char *restrict prefix, unsigned char plen)
{
- if(plen >= 128) {
- memcpy(ret, prefix, 16);
- return ret;
+ if (plen >= IPV6_MAX_BITLEN) {
+ memcpy(ret, prefix, IPV6_MAX_BYTELEN);
+ return ret;
}
memset(ret, 0, 16);
@@ -309,9 +309,10 @@ parse_address(const char *address, unsigned char *addr_r, int *af_r)
rc = inet_pton(AF_INET6, address, &ina6);
if(rc > 0) {
- memcpy(addr_r, &ina6, 16);
- if(af_r) *af_r = AF_INET6;
- return 0;
+ memcpy(addr_r, &ina6, IPV6_MAX_BYTELEN);
+ if (af_r)
+ *af_r = AF_INET6;
+ return 0;
}
return -1;
@@ -413,13 +414,13 @@ uchar_to_inaddr(struct in_addr *dest, const unsigned char *src)
void
in6addr_to_uchar(unsigned char *dest, const struct in6_addr *src)
{
- memcpy(dest, src, 16);
+ memcpy(dest, src, IPV6_MAX_BYTELEN);
}
void
uchar_to_in6addr(struct in6_addr *dest, const unsigned char *src)
{
- memcpy(dest, src, 16);
+ memcpy(dest, src, IPV6_MAX_BYTELEN);
}
int
diff --git a/bgpd/bgp_encap_tlv.c b/bgpd/bgp_encap_tlv.c
index 964adec9b6..fd429120e6 100644
--- a/bgpd/bgp_encap_tlv.c
+++ b/bgpd/bgp_encap_tlv.c
@@ -212,12 +212,12 @@ subtlv_encode_remote_endpoint(struct bgp_tea_subtlv_remote_endpoint *st)
new->length = total;
p = new->value;
if (st->family == AF_INET) {
- memcpy(p, &(st->ip_address.v4.s_addr), 4);
- p += 4;
+ memcpy(p, &(st->ip_address.v4.s_addr), IPV4_MAX_BYTELEN);
+ p += IPV4_MAX_BYTELEN;
} else {
assert(st->family == AF_INET6);
- memcpy(p, &(st->ip_address.v6.s6_addr), 16);
- p += 16;
+ memcpy(p, &(st->ip_address.v6.s6_addr), IPV6_MAX_BYTELEN);
+ p += IPV6_MAX_BYTELEN;
}
memcpy(p, &(st->as4), 4);
return new;
@@ -577,10 +577,12 @@ subtlv_decode_remote_endpoint(struct bgp_attr_encap_subtlv *subtlv,
}
if (subtlv->length == 8) {
st->family = AF_INET;
- memcpy(&st->ip_address.v4.s_addr, subtlv->value, 4);
+ memcpy(&st->ip_address.v4.s_addr, subtlv->value,
+ IPV4_MAX_BYTELEN);
} else {
st->family = AF_INET6;
- memcpy(&(st->ip_address.v6.s6_addr), subtlv->value, 16);
+ memcpy(&(st->ip_address.v6.s6_addr), subtlv->value,
+ IPV6_MAX_BYTELEN);
}
i = subtlv->length - 4;
ptr_get_be32(subtlv->value + i, &st->as4);
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c
index 5ef593b9c0..c99f539c7b 100644
--- a/bgpd/bgp_evpn.c
+++ b/bgpd/bgp_evpn.c
@@ -4114,10 +4114,11 @@ static int process_type5_route(struct peer *peer, afi_t afi, safi_t safi,
gw_afi = AF_INET;
} else {
SET_IPADDR_V6(&p.prefix.prefix_addr.ip);
- memcpy(&p.prefix.prefix_addr.ip.ipaddr_v6, pfx, 16);
- pfx += 16;
- memcpy(&evpn.gw_ip.ipv6, pfx, 16);
- pfx += 16;
+ memcpy(&p.prefix.prefix_addr.ip.ipaddr_v6, pfx,
+ IPV6_MAX_BYTELEN);
+ pfx += IPV6_MAX_BYTELEN;
+ memcpy(&evpn.gw_ip.ipv6, pfx, IPV6_MAX_BYTELEN);
+ pfx += IPV6_MAX_BYTELEN;
gw_afi = AF_INET6;
}
diff --git a/lib/filter.c b/lib/filter.c
index b7a935d076..72a66d85ad 100644
--- a/lib/filter.c
+++ b/lib/filter.c
@@ -108,10 +108,14 @@ static int filter_match_cisco(struct filter *mfilter, const struct prefix *p)
masklen2ip(p->prefixlen, &mask);
check_mask = mask.s_addr & ~filter->mask_mask.s_addr;
- if (memcmp(&check_addr, &filter->addr.s_addr, 4) == 0
- && memcmp(&check_mask, &filter->mask.s_addr, 4) == 0)
+ if (memcmp(&check_addr, &filter->addr.s_addr, IPV4_MAX_BYTELEN)
+ == 0
+ && memcmp(&check_mask, &filter->mask.s_addr,
+ IPV4_MAX_BYTELEN)
+ == 0)
return 1;
- } else if (memcmp(&check_addr, &filter->addr.s_addr, 4) == 0)
+ } else if (memcmp(&check_addr, &filter->addr.s_addr, IPV4_MAX_BYTELEN)
+ == 0)
return 1;
return 0;
diff --git a/pbrd/pbr_zebra.c b/pbrd/pbr_zebra.c
index a2eecbbf50..fc5303c9d8 100644
--- a/pbrd/pbr_zebra.c
+++ b/pbrd/pbr_zebra.c
@@ -286,11 +286,13 @@ static void route_add_helper(struct zapi_route *api, struct nexthop_group nhg,
api_nh->ifindex = nhop->ifindex;
break;
case NEXTHOP_TYPE_IPV6:
- memcpy(&api_nh->gate.ipv6, &nhop->gate.ipv6, 16);
+ memcpy(&api_nh->gate.ipv6, &nhop->gate.ipv6,
+ IPV6_MAX_BYTELEN);
break;
case NEXTHOP_TYPE_IPV6_IFINDEX:
api_nh->ifindex = nhop->ifindex;
- memcpy(&api_nh->gate.ipv6, &nhop->gate.ipv6, 16);
+ memcpy(&api_nh->gate.ipv6, &nhop->gate.ipv6,
+ IPV6_MAX_BYTELEN);
break;
case NEXTHOP_TYPE_BLACKHOLE:
api_nh->bh_type = nhop->bh_type;
@@ -465,7 +467,7 @@ void pbr_send_rnh(struct nexthop *nhop, bool reg)
case NEXTHOP_TYPE_IPV6:
case NEXTHOP_TYPE_IPV6_IFINDEX:
p.family = AF_INET6;
- memcpy(&p.u.prefix6, &nhop->gate.ipv6, 16);
+ memcpy(&p.u.prefix6, &nhop->gate.ipv6, IPV6_MAX_BYTELEN);
p.prefixlen = IPV6_MAX_BITLEN;
if (IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6))
/*
diff --git a/sharpd/sharp_vty.c b/sharpd/sharp_vty.c
index f8c46894ba..b6581cd9e6 100644
--- a/sharpd/sharp_vty.c
+++ b/sharpd/sharp_vty.c
@@ -98,7 +98,7 @@ DEFPY(watch_nexthop_v6, watch_nexthop_v6_cmd,
if (n) {
type_import = false;
p.prefixlen = IPV6_MAX_BITLEN;
- memcpy(&p.u.prefix6, &nhop, 16);
+ memcpy(&p.u.prefix6, &nhop, IPV6_MAX_BYTELEN);
p.family = AF_INET6;
} else {
type_import = true;
diff --git a/staticd/static_nht.c b/staticd/static_nht.c
index feb6e0f993..d42c5c2777 100644
--- a/staticd/static_nht.c
+++ b/staticd/static_nht.c
@@ -52,7 +52,8 @@ static void static_nht_update_path(struct route_node *rn,
nh->nh_valid = !!nh_num;
if (nhp->family == AF_INET6
- && memcmp(&nhp->u.prefix6, &nh->addr.ipv6, 16) == 0)
+ && memcmp(&nhp->u.prefix6, &nh->addr.ipv6, IPV6_MAX_BYTELEN)
+ == 0)
nh->nh_valid = !!nh_num;
if (nh->state == STATIC_START)
diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c
index cfd4ccf817..af86263a16 100644
--- a/zebra/zebra_nhg.c
+++ b/zebra/zebra_nhg.c
@@ -2052,7 +2052,8 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
&& ((top->family == AF_INET && top->prefixlen == IPV4_MAX_BITLEN
&& nexthop->gate.ipv4.s_addr == top->u.prefix4.s_addr)
|| (top->family == AF_INET6 && top->prefixlen == IPV6_MAX_BITLEN
- && memcmp(&nexthop->gate.ipv6, &top->u.prefix6, 16)
+ && memcmp(&nexthop->gate.ipv6, &top->u.prefix6,
+ IPV6_MAX_BYTELEN)
== 0))) {
if (IS_ZEBRA_DEBUG_RIB_DETAILED)
zlog_debug(