*: Convert numeric 128 into IPV6_MAX_BITLEN for prefixlen

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
Donatas Abraitis 2021-07-01 17:53:21 +03:00
parent 936fbaef47
commit 13ccce6e7e
19 changed files with 40 additions and 37 deletions

View File

@ -391,7 +391,7 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,
} }
if ((afi == AFI_IP && p.prefixlen > 32) if ((afi == AFI_IP && p.prefixlen > 32)
|| (afi == AFI_IP6 && p.prefixlen > 128)) || (afi == AFI_IP6 && p.prefixlen > IPV6_MAX_BITLEN))
return BGP_NLRI_PARSE_ERROR_PREFIX_LENGTH; return BGP_NLRI_PARSE_ERROR_PREFIX_LENGTH;
/* Fetch prefix from NLRI packet */ /* Fetch prefix from NLRI packet */

View File

@ -1457,7 +1457,7 @@ vpn_leak_to_vrf_update_onevrf(struct bgp *bgp_vrf, /* to */
case AF_INET6: case AF_INET6:
/* save */ /* save */
nexthop_orig.u.prefix6 = path_vpn->attr->mp_nexthop_global; nexthop_orig.u.prefix6 = path_vpn->attr->mp_nexthop_global;
nexthop_orig.prefixlen = 128; nexthop_orig.prefixlen = IPV6_MAX_BITLEN;
if (CHECK_FLAG(bgp_vrf->af_flags[afi][safi], if (CHECK_FLAG(bgp_vrf->af_flags[afi][safi],
BGP_CONFIG_VRF_TO_VRF_IMPORT)) { BGP_CONFIG_VRF_TO_VRF_IMPORT)) {

View File

@ -1615,7 +1615,7 @@ rfapi_query_inner(void *handle, struct rfapi_ip_addr *target,
if (target->addr_family == AF_INET) { if (target->addr_family == AF_INET) {
rprefix.length = 32; rprefix.length = 32;
} else { } else {
rprefix.length = 128; rprefix.length = IPV6_MAX_BITLEN;
} }
pNHE = rfapiEthRouteTable2NextHopList( pNHE = rfapiEthRouteTable2NextHopList(
@ -1692,7 +1692,7 @@ rfapi_query_inner(void *handle, struct rfapi_ip_addr *target,
if (target->addr_family == AF_INET) { if (target->addr_family == AF_INET) {
rprefix.length = 32; rprefix.length = 32;
} else { } else {
rprefix.length = 128; rprefix.length = IPV6_MAX_BITLEN;
} }
pNHE = rfapiEthRouteNode2NextHopList( pNHE = rfapiEthRouteNode2NextHopList(

View File

@ -269,7 +269,7 @@ struct rfapi {
(((prefix)->family == AF_INET) \ (((prefix)->family == AF_INET) \
? ((prefix)->prefixlen == 32) \ ? ((prefix)->prefixlen == 32) \
: (((prefix)->family == AF_INET6) \ : (((prefix)->family == AF_INET6) \
? ((prefix)->prefixlen == 128) \ ? ((prefix)->prefixlen == IPV6_MAX_BITLEN) \
: 0)) : 0))
extern int rfapi_find_rfd(struct bgp *bgp, struct rfapi_ip_addr *vn_addr, extern int rfapi_find_rfd(struct bgp *bgp, struct rfapi_ip_addr *vn_addr,

View File

@ -179,7 +179,7 @@ int rfapiQprefix2Raddr(struct prefix *qprefix, struct rfapi_ip_addr *raddr)
raddr->addr.v4 = qprefix->u.prefix4; raddr->addr.v4 = qprefix->u.prefix4;
break; break;
case AF_INET6: case AF_INET6:
if (qprefix->prefixlen != 128) if (qprefix->prefixlen != IPV6_MAX_BITLEN)
return -1; return -1;
raddr->addr.v6 = qprefix->u.prefix6; raddr->addr.v6 = qprefix->u.prefix6;
break; break;
@ -1741,7 +1741,7 @@ int rfapiCliGetPrefixAddr(struct vty *vty, const char *str, struct prefix *p)
} }
break; break;
case AF_INET6: case AF_INET6:
if (p->prefixlen != 128) { if (p->prefixlen != IPV6_MAX_BITLEN) {
vty_out(vty, "Not a host address: \"%s\"%s", str, vty_out(vty, "Not a host address: \"%s\"%s", str,
HVTYNL); HVTYNL);
return CMD_WARNING; return CMD_WARNING;

View File

@ -600,7 +600,7 @@ encap_attr_export(struct attr *new, struct attr *orig,
orig_nexthop.prefixlen = 32; orig_nexthop.prefixlen = 32;
orig_nexthop.u.prefix4 = orig->mp_nexthop_global_in; orig_nexthop.u.prefix4 = orig->mp_nexthop_global_in;
} else if (orig_nexthop.family == AF_INET6) { } else if (orig_nexthop.family == AF_INET6) {
orig_nexthop.prefixlen = 128; orig_nexthop.prefixlen = IPV6_MAX_BITLEN;
orig_nexthop.u.prefix6 = orig->mp_nexthop_global; orig_nexthop.u.prefix6 = orig->mp_nexthop_global;
} else { } else {
return -1; /* FAIL - can't compute nexthop */ return -1; /* FAIL - can't compute nexthop */

View File

@ -110,7 +110,7 @@ static int is_host_prefix(const struct prefix *p)
case AF_INET: case AF_INET:
return (p->prefixlen == 32); return (p->prefixlen == 32);
case AF_INET6: case AF_INET6:
return (p->prefixlen == 128); return (p->prefixlen == IPV6_MAX_BITLEN);
} }
return 0; return 0;
} }
@ -1083,7 +1083,7 @@ static void vnc_import_bgp_del_route_mode_plain(struct bgp *bgp,
break; break;
case AF_INET6: case AF_INET6:
if (vn_pfx->prefixlen != 128) { if (vn_pfx->prefixlen != IPV6_MAX_BITLEN) {
vnc_zlog_debug_verbose( vnc_zlog_debug_verbose(
"%s: redist VN plen (%d) != 128, skipping", "%s: redist VN plen (%d) != 128, skipping",
__func__, vn_pfx->prefixlen); __func__, vn_pfx->prefixlen);
@ -1157,7 +1157,7 @@ static void vnc_import_bgp_del_route_mode_nvegroup(struct bgp *bgp,
break; break;
case AF_INET6: case AF_INET6:
if (vn_pfx->prefixlen != 128) { if (vn_pfx->prefixlen != IPV6_MAX_BITLEN) {
vnc_zlog_debug_verbose( vnc_zlog_debug_verbose(
"%s: redist VN plen (%d) != 128, skipping", "%s: redist VN plen (%d) != 128, skipping",
__func__, vn_pfx->prefixlen); __func__, vn_pfx->prefixlen);

View File

@ -117,7 +117,8 @@ static void vnc_redistribute_add(struct prefix *p, uint32_t metric,
bgp->rfapi_cfg->rfg_redist->vn_prefix.u.prefix4; bgp->rfapi_cfg->rfg_redist->vn_prefix.u.prefix4;
break; break;
case AF_INET6: case AF_INET6:
if (bgp->rfapi_cfg->rfg_redist->vn_prefix.prefixlen != 128) { if (bgp->rfapi_cfg->rfg_redist->vn_prefix.prefixlen
!= IPV6_MAX_BITLEN) {
vnc_zlog_debug_verbose( vnc_zlog_debug_verbose(
"%s: redist nve group VN prefix len (%d) != 128, skipping", "%s: redist nve group VN prefix len (%d) != 128, skipping",
__func__, __func__,
@ -161,7 +162,7 @@ static void vnc_redistribute_add(struct prefix *p, uint32_t metric,
} }
break; break;
case AF_INET6: case AF_INET6:
if (pfx_un.length != 128) { if (pfx_un.length != IPV6_MAX_BITLEN) {
vnc_zlog_debug_verbose( vnc_zlog_debug_verbose(
"%s: redist nve group UN prefix len (%d) != 128, skipping", "%s: redist nve group UN prefix len (%d) != 128, skipping",
__func__, pfx_un.length); __func__, pfx_un.length);

View File

@ -225,7 +225,7 @@ isis_route_info_new(struct prefix *prefix, struct prefix_ipv6 *src_p,
adj->router_address = prefix->u.prefix4; adj->router_address = prefix->u.prefix4;
break; break;
case AF_INET6: case AF_INET6:
if (depth == 2 && prefix->prefixlen == 128 if (depth == 2 && prefix->prefixlen == IPV6_MAX_BITLEN
&& (!src_p || !src_p->prefixlen)) { && (!src_p || !src_p->prefixlen)) {
adj->router_address6 = prefix->u.prefix6; adj->router_address6 = prefix->u.prefix6;
} }

View File

@ -967,7 +967,7 @@ static int unpack_subtlv_ipv6_source_prefix(enum isis_tlv_context context,
} }
p.prefixlen = stream_getc(s); p.prefixlen = stream_getc(s);
if (p.prefixlen > 128) { if (p.prefixlen > IPV6_MAX_BITLEN) {
sbuf_push(log, indent, "Prefixlen %u is implausible for IPv6\n", sbuf_push(log, indent, "Prefixlen %u is implausible for IPv6\n",
p.prefixlen); p.prefixlen);
return 1; return 1;
@ -2542,7 +2542,7 @@ static int unpack_item_ipv6_reach(uint16_t mtid, uint8_t len, struct stream *s,
rv->prefix.family = AF_INET6; rv->prefix.family = AF_INET6;
rv->prefix.prefixlen = stream_getc(s); rv->prefix.prefixlen = stream_getc(s);
if (rv->prefix.prefixlen > 128) { if (rv->prefix.prefixlen > IPV6_MAX_BITLEN) {
sbuf_push(log, indent, "Prefixlen %u is implausible for IPv6\n", sbuf_push(log, indent, "Prefixlen %u is implausible for IPv6\n",
rv->prefix.prefixlen); rv->prefix.prefixlen);
goto out; goto out;

View File

@ -760,8 +760,8 @@ lde_update_label(struct fec_node *fn)
return (NO_LABEL); return (NO_LABEL);
break; break;
case FEC_TYPE_IPV6: case FEC_TYPE_IPV6:
if ((ldeconf->ipv6.flags & F_LDPD_AF_ALLOCHOSTONLY) && if ((ldeconf->ipv6.flags & F_LDPD_AF_ALLOCHOSTONLY)
fn->fec.u.ipv6.prefixlen != 128) && fn->fec.u.ipv6.prefixlen != IPV6_MAX_BITLEN)
return (NO_LABEL); return (NO_LABEL);
if (lde_acl_check(ldeconf->ipv6.acl_label_allocate_for, if (lde_acl_check(ldeconf->ipv6.acl_label_allocate_for,
AF_INET6, (union ldpd_addr *)&fn->fec.u.ipv6.prefix, AF_INET6, (union ldpd_addr *)&fn->fec.u.ipv6.prefix,

View File

@ -191,7 +191,7 @@ ldp_prefixcmp(int af, const union ldpd_addr *a, const union ldpd_addr *b,
case AF_INET6: case AF_INET6:
if (prefixlen == 0) if (prefixlen == 0)
return (0); return (0);
if (prefixlen > 128) if (prefixlen > IPV6_MAX_BITLEN)
fatalx("ldp_prefixcmp: bad IPv6 prefixlen"); fatalx("ldp_prefixcmp: bad IPv6 prefixlen");
for (i = 0; i < prefixlen / 8; i++) for (i = 0; i < prefixlen / 8; i++)
if (a->v6.s6_addr[i] != b->v6.s6_addr[i]) if (a->v6.s6_addr[i] != b->v6.s6_addr[i])

View File

@ -948,7 +948,7 @@ static enum match_type match_ipv6_prefix(const char *str, bool prefix)
if (*endptr != '\0') if (*endptr != '\0')
return no_match; return no_match;
if (mask < 0 || mask > 128) if (mask < 0 || mask > IPV6_MAX_BITLEN)
return no_match; return no_match;
return exact_match; return exact_match;

View File

@ -446,7 +446,7 @@ enum zclient_send_status zclient_send_localsid(struct zclient *zclient,
struct nexthop nh = {}; struct nexthop nh = {};
p.family = AF_INET6; p.family = AF_INET6;
p.prefixlen = 128; p.prefixlen = IPV6_MAX_BITLEN;
p.prefix = *sid; p.prefix = *sid;
api.vrf_id = VRF_DEFAULT; api.vrf_id = VRF_DEFAULT;

View File

@ -466,7 +466,7 @@ void pbr_send_rnh(struct nexthop *nhop, bool reg)
case NEXTHOP_TYPE_IPV6_IFINDEX: case NEXTHOP_TYPE_IPV6_IFINDEX:
p.family = AF_INET6; p.family = AF_INET6;
memcpy(&p.u.prefix6, &nhop->gate.ipv6, 16); memcpy(&p.u.prefix6, &nhop->gate.ipv6, 16);
p.prefixlen = 128; p.prefixlen = IPV6_MAX_BITLEN;
if (IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6)) if (IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6))
/* /*
* Don't bother tracking link locals, just track their * Don't bother tracking link locals, just track their

View File

@ -1194,7 +1194,7 @@ static void ripng_response_process(struct ripng_packet *packet, int size,
/* - is the prefix length valid (i.e., between 0 and 128, /* - is the prefix length valid (i.e., between 0 and 128,
inclusive) */ inclusive) */
if (rte->prefixlen > 128) { if (rte->prefixlen > IPV6_MAX_BITLEN) {
zlog_warn("Invalid prefix length %pI6/%d from %pI6%%%s", zlog_warn("Invalid prefix length %pI6/%d from %pI6%%%s",
&rte->addr, rte->prefixlen, &rte->addr, rte->prefixlen,
&from->sin6_addr, ifp->name); &from->sin6_addr, ifp->name);

View File

@ -97,7 +97,7 @@ DEFPY(watch_nexthop_v6, watch_nexthop_v6_cmd,
if (n) { if (n) {
type_import = false; type_import = false;
p.prefixlen = 128; p.prefixlen = IPV6_MAX_BITLEN;
memcpy(&p.u.prefix6, &nhop, 16); memcpy(&p.u.prefix6, &nhop, 16);
p.family = AF_INET6; p.family = AF_INET6;
} else { } else {
@ -243,7 +243,7 @@ DEFPY (install_routes,
prefix.u.prefix4 = start4; prefix.u.prefix4 = start4;
} else { } else {
prefix.family = AF_INET6; prefix.family = AF_INET6;
prefix.prefixlen = 128; prefix.prefixlen = IPV6_MAX_BITLEN;
prefix.u.prefix6 = start6; prefix.u.prefix6 = start6;
} }
sg.r.orig_prefix = prefix; sg.r.orig_prefix = prefix;
@ -387,7 +387,7 @@ DEFPY (install_seg6_routes,
prefix.u.prefix4 = start4; prefix.u.prefix4 = start4;
} else { } else {
prefix.family = AF_INET6; prefix.family = AF_INET6;
prefix.prefixlen = 128; prefix.prefixlen = IPV6_MAX_BITLEN;
prefix.u.prefix6 = start6; prefix.u.prefix6 = start6;
} }
sg.r.orig_prefix = prefix; sg.r.orig_prefix = prefix;
@ -572,7 +572,7 @@ DEFPY (remove_routes,
prefix.u.prefix4 = start4; prefix.u.prefix4 = start4;
} else { } else {
prefix.family = AF_INET6; prefix.family = AF_INET6;
prefix.prefixlen = 128; prefix.prefixlen = IPV6_MAX_BITLEN;
prefix.u.prefix6 = start6; prefix.u.prefix6 = start6;
} }

View File

@ -98,7 +98,7 @@ int router_id_get(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf)
case AFI_IP6: case AFI_IP6:
p->u.prefix6 = in6addr_any; p->u.prefix6 = in6addr_any;
p->family = AF_INET6; p->family = AF_INET6;
p->prefixlen = 128; p->prefixlen = IPV6_MAX_BITLEN;
if (!router_id_v6_is_any(&zvrf->rid6_user_assigned)) if (!router_id_v6_is_any(&zvrf->rid6_user_assigned))
addr = &zvrf->rid6_user_assigned.u.prefix6; addr = &zvrf->rid6_user_assigned.u.prefix6;
else if (!list_isempty(zvrf->rid6_lo_sorted_list)) { else if (!list_isempty(zvrf->rid6_lo_sorted_list)) {
@ -313,7 +313,7 @@ DEFUN (ipv6_router_id,
if (!inet_pton(AF_INET6, argv[idx]->arg, &rid.u.prefix6)) if (!inet_pton(AF_INET6, argv[idx]->arg, &rid.u.prefix6))
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
rid.prefixlen = 128; rid.prefixlen = IPV6_MAX_BITLEN;
rid.family = AF_INET6; rid.family = AF_INET6;
argv_find(argv, argc, "NAME", &idx); argv_find(argv, argc, "NAME", &idx);
@ -372,7 +372,7 @@ DEFUN (ipv6_router_id_in_vrf,
if (!inet_pton(AF_INET6, argv[idx]->arg, &rid.u.prefix6)) if (!inet_pton(AF_INET6, argv[idx]->arg, &rid.u.prefix6))
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;
rid.prefixlen = 128; rid.prefixlen = IPV6_MAX_BITLEN;
rid.family = AF_INET6; rid.family = AF_INET6;
router_id_set(AFI_IP6, &rid, zvrf); router_id_set(AFI_IP6, &rid, zvrf);
@ -601,5 +601,5 @@ void router_id_init(struct zebra_vrf *zvrf)
zvrf->rid_user_assigned.family = AF_INET; zvrf->rid_user_assigned.family = AF_INET;
zvrf->rid_user_assigned.prefixlen = 32; zvrf->rid_user_assigned.prefixlen = 32;
zvrf->rid6_user_assigned.family = AF_INET6; zvrf->rid6_user_assigned.family = AF_INET6;
zvrf->rid6_user_assigned.prefixlen = 128; zvrf->rid6_user_assigned.prefixlen = IPV6_MAX_BITLEN;
} }

View File

@ -2048,11 +2048,12 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
return 1; return 1;
} }
if (top && if (top
((top->family == AF_INET && top->prefixlen == 32 && ((top->family == AF_INET && top->prefixlen == 32
&& nexthop->gate.ipv4.s_addr == top->u.prefix4.s_addr) && nexthop->gate.ipv4.s_addr == top->u.prefix4.s_addr)
|| (top->family == AF_INET6 && top->prefixlen == 128 || (top->family == AF_INET6 && top->prefixlen == IPV6_MAX_BITLEN
&& memcmp(&nexthop->gate.ipv6, &top->u.prefix6, 16) == 0))) { && memcmp(&nexthop->gate.ipv6, &top->u.prefix6, 16)
== 0))) {
if (IS_ZEBRA_DEBUG_RIB_DETAILED) if (IS_ZEBRA_DEBUG_RIB_DETAILED)
zlog_debug( zlog_debug(
" :%s: Attempting to install a max prefixlength route through itself", " :%s: Attempting to install a max prefixlength route through itself",
@ -2151,7 +2152,8 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
*/ */
if (prefix_same(&rn->p, top)) if (prefix_same(&rn->p, top))
if (((afi == AFI_IP) && (rn->p.prefixlen != 32)) if (((afi == AFI_IP) && (rn->p.prefixlen != 32))
|| ((afi == AFI_IP6) && (rn->p.prefixlen != 128))) { || ((afi == AFI_IP6)
&& (rn->p.prefixlen != IPV6_MAX_BITLEN))) {
if (IS_ZEBRA_DEBUG_RIB_DETAILED) if (IS_ZEBRA_DEBUG_RIB_DETAILED)
zlog_debug( zlog_debug(
" %s: Matched against ourself and prefix length is not max bit length", " %s: Matched against ourself and prefix length is not max bit length",