diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2019-10-17 16:11:57 +0200 | 
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2020-08-21 13:37:08 +0200 | 
| commit | 8f2421871071160ad5c856d6c389a3f7d17a2325 (patch) | |
| tree | a575e1aefb7f523b68aacdc517660f5c894f725d /bgpd/bgp_pbr.c | |
| parent | 9a659715dfcb6c0b1e3ef8004b6c9d14c55f2081 (diff) | |
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.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/bgpd/bgp_pbr.c b/bgpd/bgp_pbr.c index dd01ba3e35..552f6a51fe 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);  | 
