mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 20:34:33 +00:00
bgpd: Remove peer->obuf_work
This is never used. Free up another 65k of stream data never used per peer. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
b157af0ac1
commit
acf4defcd8
@ -1517,8 +1517,6 @@ enum bgp_fsm_state_progress bgp_stop(struct peer *peer)
|
|||||||
|
|
||||||
if (peer->ibuf_work)
|
if (peer->ibuf_work)
|
||||||
ringbuf_wipe(peer->ibuf_work);
|
ringbuf_wipe(peer->ibuf_work);
|
||||||
if (peer->obuf_work)
|
|
||||||
stream_reset(peer->obuf_work);
|
|
||||||
|
|
||||||
if (peer->curr) {
|
if (peer->curr) {
|
||||||
stream_free(peer->curr);
|
stream_free(peer->curr);
|
||||||
|
19
bgpd/bgpd.c
19
bgpd/bgpd.c
@ -1415,20 +1415,6 @@ struct peer *peer_new(struct bgp *bgp)
|
|||||||
peer->obuf = stream_fifo_new();
|
peer->obuf = stream_fifo_new();
|
||||||
pthread_mutex_init(&peer->io_mtx, NULL);
|
pthread_mutex_init(&peer->io_mtx, NULL);
|
||||||
|
|
||||||
/* We use a larger buffer for peer->obuf_work in the event that:
|
|
||||||
* - We RX a BGP_UPDATE where the attributes alone are just
|
|
||||||
* under BGP_EXTENDED_MESSAGE_MAX_PACKET_SIZE.
|
|
||||||
* - The user configures an outbound route-map that does many as-path
|
|
||||||
* prepends or adds many communities. At most they can have
|
|
||||||
* CMD_ARGC_MAX args in a route-map so there is a finite limit on how
|
|
||||||
* large they can make the attributes.
|
|
||||||
*
|
|
||||||
* Having a buffer with BGP_MAX_PACKET_SIZE_OVERFLOW allows us to avoid
|
|
||||||
* bounds checking for every single attribute as we construct an
|
|
||||||
* UPDATE.
|
|
||||||
*/
|
|
||||||
peer->obuf_work =
|
|
||||||
stream_new(BGP_MAX_PACKET_SIZE + BGP_MAX_PACKET_SIZE_OVERFLOW);
|
|
||||||
peer->ibuf_work =
|
peer->ibuf_work =
|
||||||
ringbuf_new(BGP_MAX_PACKET_SIZE * BGP_READ_PACKET_MAX);
|
ringbuf_new(BGP_MAX_PACKET_SIZE * BGP_READ_PACKET_MAX);
|
||||||
|
|
||||||
@ -2622,11 +2608,6 @@ int peer_delete(struct peer *peer)
|
|||||||
peer->ibuf_work = NULL;
|
peer->ibuf_work = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer->obuf_work) {
|
|
||||||
stream_free(peer->obuf_work);
|
|
||||||
peer->obuf_work = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Local and remote addresses. */
|
/* Local and remote addresses. */
|
||||||
if (peer->su_local) {
|
if (peer->su_local) {
|
||||||
sockunion_free(peer->su_local);
|
sockunion_free(peer->su_local);
|
||||||
|
@ -1167,7 +1167,6 @@ struct peer {
|
|||||||
uint8_t ibuf_scratch[BGP_EXTENDED_MESSAGE_MAX_PACKET_SIZE
|
uint8_t ibuf_scratch[BGP_EXTENDED_MESSAGE_MAX_PACKET_SIZE
|
||||||
* BGP_READ_PACKET_MAX];
|
* BGP_READ_PACKET_MAX];
|
||||||
struct ringbuf *ibuf_work; // WiP buffer used by bgp_read() only
|
struct ringbuf *ibuf_work; // WiP buffer used by bgp_read() only
|
||||||
struct stream *obuf_work; // WiP buffer used to construct packets
|
|
||||||
|
|
||||||
struct stream *curr; // the current packet being parsed
|
struct stream *curr; // the current packet being parsed
|
||||||
|
|
||||||
|
@ -1252,12 +1252,9 @@ static int rfapi_open_inner(struct rfapi_descriptor *rfd, struct bgp *bgp,
|
|||||||
|
|
||||||
if (rfd->peer->ibuf_work)
|
if (rfd->peer->ibuf_work)
|
||||||
ringbuf_del(rfd->peer->ibuf_work);
|
ringbuf_del(rfd->peer->ibuf_work);
|
||||||
if (rfd->peer->obuf_work)
|
|
||||||
stream_free(rfd->peer->obuf_work);
|
|
||||||
|
|
||||||
rfd->peer->ibuf = NULL;
|
rfd->peer->ibuf = NULL;
|
||||||
rfd->peer->obuf = NULL;
|
rfd->peer->obuf = NULL;
|
||||||
rfd->peer->obuf_work = NULL;
|
|
||||||
rfd->peer->ibuf_work = NULL;
|
rfd->peer->ibuf_work = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,12 +189,9 @@ static void vnc_redistribute_add(struct prefix *p, uint32_t metric,
|
|||||||
|
|
||||||
if (vncHD1VR.peer->ibuf_work)
|
if (vncHD1VR.peer->ibuf_work)
|
||||||
ringbuf_del(vncHD1VR.peer->ibuf_work);
|
ringbuf_del(vncHD1VR.peer->ibuf_work);
|
||||||
if (vncHD1VR.peer->obuf_work)
|
|
||||||
stream_free(vncHD1VR.peer->obuf_work);
|
|
||||||
|
|
||||||
vncHD1VR.peer->ibuf = NULL;
|
vncHD1VR.peer->ibuf = NULL;
|
||||||
vncHD1VR.peer->obuf = NULL;
|
vncHD1VR.peer->obuf = NULL;
|
||||||
vncHD1VR.peer->obuf_work = NULL;
|
|
||||||
vncHD1VR.peer->ibuf_work = NULL;
|
vncHD1VR.peer->ibuf_work = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user