Merge pull request #5120 from sworleys/PBR-LL-FIX

pbrd: Don't track ipv6 link locals
This commit is contained in:
Jafar Al-Gharaibeh 2019-10-08 09:49:02 -07:00 committed by GitHub
commit 6eb3b18a09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 4 deletions

View File

@ -267,7 +267,9 @@ void pbr_nhgroup_add_nexthop_cb(const struct nexthop_group_cmd *nhgc,
pbr_nht_install_nexthop_group(pnhgc, nhgc->nhg);
pbr_map_check_nh_group_change(nhgc->name);
if (nhop->type == NEXTHOP_TYPE_IFINDEX) {
if (nhop->type == NEXTHOP_TYPE_IFINDEX
|| (nhop->type == NEXTHOP_TYPE_IPV6_IFINDEX
&& IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6))) {
struct interface *ifp;
ifp = if_lookup_by_index(nhop->ifindex, nhop->vrf_id);
@ -772,10 +774,15 @@ pbr_nht_individual_nexthop_update(struct pbr_nexthop_cache *pnhc,
case NEXTHOP_TYPE_IFINDEX:
pbr_nht_individual_nexthop_interface_update(pnhc, pnhi);
break;
case NEXTHOP_TYPE_IPV6_IFINDEX:
if (IN6_IS_ADDR_LINKLOCAL(&pnhc->nexthop->gate.ipv6)) {
pbr_nht_individual_nexthop_interface_update(pnhc, pnhi);
break;
}
/* Intentional fall thru */
case NEXTHOP_TYPE_IPV4_IFINDEX:
case NEXTHOP_TYPE_IPV4:
case NEXTHOP_TYPE_IPV6:
case NEXTHOP_TYPE_IPV4_IFINDEX:
case NEXTHOP_TYPE_IPV6_IFINDEX:
pbr_nht_individual_nexthop_gw_update(pnhc, pnhi);
break;
case NEXTHOP_TYPE_BLACKHOLE:

View File

@ -363,7 +363,9 @@ DEFPY(pbr_map_nexthop, pbr_map_nexthop_cmd,
pbr_map_check(pbrms);
}
if (nhop.type == NEXTHOP_TYPE_IFINDEX) {
if (nhop.type == NEXTHOP_TYPE_IFINDEX
|| (nhop.type == NEXTHOP_TYPE_IPV6_IFINDEX
&& IN6_IS_ADDR_LINKLOCAL(&nhop.gate.ipv6))) {
struct interface *ifp;
ifp = if_lookup_by_index(nhop.ifindex, nhop.vrf_id);

View File

@ -450,6 +450,12 @@ void pbr_send_rnh(struct nexthop *nhop, bool reg)
p.family = AF_INET6;
memcpy(&p.u.prefix6, &nhop->gate.ipv6, 16);
p.prefixlen = 128;
if (IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6))
/*
* Don't bother tracking link locals, just track their
* interface state.
*/
return;
break;
}