summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_pbr.c
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2019-10-17 16:11:57 +0200
committerPhilippe Guibert <philippe.guibert@6wind.com>2020-08-21 13:37:08 +0200
commit8f2421871071160ad5c856d6c389a3f7d17a2325 (patch)
treea575e1aefb7f523b68aacdc517660f5c894f725d /bgpd/bgp_pbr.c
parentbgpd: support for bgp ipv6 ext community, and flowspec redirect ipv6 (diff)
downloadfrr-8f2421871071160ad5c856d6c389a3f7d17a2325.tar.xz
frr-8f2421871071160ad5c856d6c389a3f7d17a2325.zip
bgpd: support for flowspec interface list per address-family
in addition to ipv4 flowspec, ipv6 flowspec address family can configure its own list of interfaces to monitor. this permits filtering the policy routing only on some interfaces. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'bgpd/bgp_pbr.c')
-rw-r--r--bgpd/bgp_pbr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/bgpd/bgp_pbr.c b/bgpd/bgp_pbr.c
index dd01ba3e3..552f6a51f 100644
--- a/bgpd/bgp_pbr.c
+++ b/bgpd/bgp_pbr.c
@@ -1388,6 +1388,7 @@ void bgp_pbr_cleanup(struct bgp *bgp)
if (bgp->bgp_pbr_cfg == NULL)
return;
bgp_pbr_reset(bgp, AFI_IP);
+ bgp_pbr_reset(bgp, AFI_IP6);
XFREE(MTYPE_PBR, bgp->bgp_pbr_cfg);
}
@@ -2935,10 +2936,12 @@ void bgp_pbr_reset(struct bgp *bgp, afi_t afi)
struct bgp_pbr_interface_head *head;
struct bgp_pbr_interface *pbr_if;
- if (!bgp_pbr_cfg || afi != AFI_IP)
+ if (!bgp_pbr_cfg)
return;
- head = &(bgp_pbr_cfg->ifaces_by_name_ipv4);
-
+ if (afi == AFI_IP)
+ head = &(bgp_pbr_cfg->ifaces_by_name_ipv4);
+ else
+ head = &(bgp_pbr_cfg->ifaces_by_name_ipv6);
while (!RB_EMPTY(bgp_pbr_interface_head, head)) {
pbr_if = RB_ROOT(bgp_pbr_interface_head, head);
RB_REMOVE(bgp_pbr_interface_head, head, pbr_if);