From 0db06e37853405866b5af030ebcf38c519ae9405 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Fri, 2 Jul 2021 16:50:39 +0300 Subject: [PATCH] bgpd: Set 4096 instead of 65535 as new max packet size for a new peer New peers should be initialized with a usual max packet size and later determined on OPEN messages. Testing with different peers supporting/not supporting extended support. 2021/07/02 13:48:00 BGP: [WEV7K-2GAQ5] u2:s2 send UPDATE len 8991 (max message len: 65535) numpfx 1788 2021/07/02 13:48:03 BGP: [WEV7K-2GAQ5] u3:s3 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/07/02 13:48:03 BGP: [WEV7K-2GAQ5] u3:s3 send UPDATE len 4096 (max message len: 4096) numpfx 809 Signed-off-by: Donatas Abraitis --- bgpd/bgp_fsm.c | 1 + bgpd/bgpd.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 4cc096d8e7..79dc0aec9d 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -256,6 +256,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer) from_peer->last_major_event = last_maj_evt; peer->remote_id = from_peer->remote_id; peer->last_reset = from_peer->last_reset; + peer->max_packet_size = from_peer->max_packet_size; peer->peer_gr_present_state = from_peer->peer_gr_present_state; peer->peer_gr_new_status_flag = from_peer->peer_gr_new_status_flag; diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 197133cbb4..b861d13fd1 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1369,7 +1369,7 @@ struct peer *peer_new(struct bgp *bgp) peer->bgp = bgp_lock(bgp); peer = peer_lock(peer); /* initial reference */ peer->password = NULL; - peer->max_packet_size = BGP_MAX_PACKET_SIZE; + peer->max_packet_size = BGP_STANDARD_MESSAGE_MAX_PACKET_SIZE; /* Set default flags. */ FOREACH_AFI_SAFI (afi, safi) { @@ -1466,6 +1466,8 @@ void peer_xfer_config(struct peer *peer_dst, struct peer *peer_src) (void)peer_sort(peer_dst); peer_dst->rmap_type = peer_src->rmap_type; + peer_dst->max_packet_size = peer_src->max_packet_size; + /* Timers */ peer_dst->holdtime = peer_src->holdtime; peer_dst->keepalive = peer_src->keepalive;