summaryrefslogtreecommitdiffstats
path: root/bgpd/bgpd.c
diff options
context:
space:
mode:
authorFrancois Dumontet <francois.dumontet@6wind.com>2024-01-22 11:53:36 +0100
committerFrancois Dumontet <francois.dumontet@6wind.com>2024-02-02 11:31:47 +0100
commite146ea53ef5a8f33d9bdb2f79410682fe710e37c (patch)
tree2bd2dc807b81134d62b59a34607afdf38d69f83f /bgpd/bgpd.c
parentMerge pull request #15206 from routingrocks/rajesh/pbr_map (diff)
downloadfrr-e146ea53ef5a8f33d9bdb2f79410682fe710e37c.tar.xz
frr-e146ea53ef5a8f33d9bdb2f79410682fe710e37c.zip
bgpd: add [no]neighbor capability fqdn command
cisco routers are not dealing fairly whith unsupported capabilities. When a cisco router receive an unsupported capabilities it reset the negociation without notifying the unmatching capability as described in RFC2842. Cisco suggest the use of neighbor x.x.x.x capability fqdn to avoid the use of fqdn in open message. this new command is to remove the use of fqdn capability in the open message with the peer "x.x.x.x". Link: https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/116189-problemsolution-technology-00.pdf Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
Diffstat (limited to 'bgpd/bgpd.c')
-rw-r--r--bgpd/bgpd.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 90ac529f8..58514566e 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1535,6 +1535,9 @@ struct peer *peer_new(struct bgp *bgp)
if (CHECK_FLAG(bgp->flags, BGP_FLAG_ENFORCE_FIRST_AS))
SET_FLAG(peer->flags, PEER_FLAG_ENFORCE_FIRST_AS);
+ SET_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_FQDN);
+ SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_FQDN);
+
/* Initialize per peer bgp GR FSM */
bgp_peer_gr_init(peer);
@@ -4571,6 +4574,7 @@ static const struct peer_flag_action peer_flag_action_list[] = {
{PEER_FLAG_AIGP, 0, peer_change_none},
{PEER_FLAG_GRACEFUL_SHUTDOWN, 0, peer_change_none},
{PEER_FLAG_CAPABILITY_SOFT_VERSION, 0, peer_change_none},
+ {PEER_FLAG_CAPABILITY_FQDN, 0, peer_change_reset},
{0, 0, 0}};
static const struct peer_flag_action peer_af_flag_action_list[] = {