From: Pavel TvrdĂ­k Date: Tue, 28 Jul 2015 15:31:44 +0000 (+0200) Subject: Merge branch 'master' into mrtdump X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=018dbac0e0fc83a4d43c524cc6bb1de76818be69;p=thirdparty%2Fbird.git Merge branch 'master' into mrtdump --- 018dbac0e0fc83a4d43c524cc6bb1de76818be69 diff --cc proto/bgp/bgp.h index b40ee9b91,274794f13..f64d8a15a --- a/proto/bgp/bgp.h +++ b/proto/bgp/bgp.h @@@ -181,11 -183,16 +184,17 @@@ struct bgp_bucket #define BGP_PORT 179 #define BGP_VERSION 4 #define BGP_HEADER_LENGTH 19 - #define BGP_MAX_PACKET_LENGTH 4096 + #define BGP_MAX_MESSAGE_LENGTH 4096 + #define BGP_MAX_EXT_MSG_LENGTH 65535 #define BGP_RX_BUFFER_SIZE 4096 - #define BGP_TX_BUFFER_SIZE BGP_MAX_PACKET_LENGTH + #define BGP_TX_BUFFER_SIZE 4096 + #define BGP_RX_BUFFER_EXT_SIZE 65535 + #define BGP_TX_BUFFER_EXT_SIZE 65535 +#define BGP_ATTR_BUFFER_SIZE 2048 /* Default buffer size for encoded bgp attributes */ + static inline int bgp_max_packet_length(struct bgp_proto *p) + { return p->ext_messages ? BGP_MAX_EXT_MSG_LENGTH : BGP_MAX_MESSAGE_LENGTH; } + extern struct linpool *bgp_linpool; diff --cc proto/bgp/packets.c index 74fb637c4,ed99f6236..a117895c9 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@@ -84,8 -84,8 +84,9 @@@ mrt_put_bgp4_hdr(byte *buf, struct bgp_ static void mrt_dump_bgp_packet(struct bgp_conn *conn, byte *pkt, unsigned len) { - byte buf[BGP_MAX_PACKET_LENGTH + 128]; + byte *buf = alloca(128+len); /* 128 is enough for MRT headers */ - byte *bp = buf + MRTDUMP_HDR_LENGTH; + byte *bp = buf + MRT_HDR_LENGTH; ++ int as4 = conn->bgp->as4_session; bp = mrt_put_bgp4_hdr(bp, conn, as4);