mirror of https://github.com/FRRouting/frr.git
*: Replace 4/16 integers to IPV4_MAX_BYTELEN/IPV6_MAX_BYTELEN
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
parent
12256b84a5
commit
8643c2e5f7
|
@ -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];
|
||||
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 (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';
|
||||
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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
10
lib/filter.c
10
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;
|
||||
|
|
|
@ -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))
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue