From 0a3eeab8b96ca691497ac797836036d673742f18 Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Fri, 26 Jan 2018 18:36:24 +0100 Subject: [PATCH] bgpd: allow flowspec entries to be announced to zebra Flowspec entries are allowed to be announced. Signed-off-by: Philippe Guibert --- bgpd/bgp_pbr.c | 1 + bgpd/bgp_route.h | 3 ++- bgpd/bgp_zebra.c | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/bgpd/bgp_pbr.c b/bgpd/bgp_pbr.c index 0e6a0dbbad..83710f046d 100644 --- a/bgpd/bgp_pbr.c +++ b/bgpd/bgp_pbr.c @@ -30,6 +30,7 @@ #include "bgpd/bgp_route.h" #include "bgpd/bgp_attr.h" #include "bgpd/bgp_zebra.h" +#include "bgpd/bgp_mplsvpn.h" DEFINE_MTYPE_STATIC(BGPD, PBR_MATCH_ENTRY, "PBR match entry") DEFINE_MTYPE_STATIC(BGPD, PBR_MATCH, "PBR match") diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h index 89b8eb70cd..00e5677fe0 100644 --- a/bgpd/bgp_route.h +++ b/bgpd/bgp_route.h @@ -320,7 +320,8 @@ static inline void bgp_bump_version(struct bgp_node *node) static inline int bgp_fibupd_safi(safi_t safi) { if (safi == SAFI_UNICAST || safi == SAFI_MULTICAST - || safi == SAFI_LABELED_UNICAST) + || safi == SAFI_LABELED_UNICAST + || safi == SAFI_FLOWSPEC) return 1; return 0; } diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 852c5fdec9..2c1ccfd932 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -1174,6 +1174,10 @@ void bgp_zebra_announce(struct bgp_node *rn, struct prefix *p, if (bgp_debug_zebra(p)) prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix)); + if (safi == SAFI_FLOWSPEC) + return bgp_pbr_update_entry(bgp, &rn->p, + info, afi, safi, true); + /* * vrf leaking support (will have only one nexthop) */ @@ -1467,6 +1471,10 @@ void bgp_zebra_withdraw(struct prefix *p, struct bgp_info *info, if (!bgp_install_info_to_zebra(bgp)) return; + if (safi == SAFI_FLOWSPEC) + return bgp_pbr_update_entry(peer->bgp, p, + info, AFI_IP, safi, false); + memset(&api, 0, sizeof(api)); memcpy(&api.rmac, &(info->attr->rmac), sizeof(struct ethaddr)); api.vrf_id = bgp->vrf_id; -- 2.39.5