From: Ondrej Zajicek (work) Date: Tue, 30 Mar 2021 14:59:11 +0000 (+0200) Subject: BGP: Do not keep BAF_EXT_LEN flag internally X-Git-Tag: v2.0.9~92 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7a74ad5a61c82ab0062a62dbc9ea6ab91d480485;p=thirdparty%2Fbird.git BGP: Do not keep BAF_EXT_LEN flag internally The flag makes sense just in external representation. It is reset during BGP export, but keeping it internally broke MRT dumps for short attributes that used it anyways. Thanks to Simon Marsh for the bugreport and the patch. --- diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index 6752cb7f0..24ba00ba7 100644 --- a/proto/bgp/attrs.c +++ b/proto/bgp/attrs.c @@ -88,7 +88,7 @@ bgp_set_attr(ea_list **attrs, struct linpool *pool, uint code, uint flags, uintp attrs, pool, EA_CODE(PROTOCOL_BGP, code), - flags, + flags & ~BAF_EXT_LEN, bgp_attr_table[code].type, val ); @@ -118,7 +118,7 @@ bgp_set_attr(ea_list **attrs, struct linpool *pool, uint code, uint flags, uintp static inline int bgp_put_attr_hdr3(byte *buf, uint code, uint flags, uint len) { - *buf++ = flags; + *buf++ = flags & ~BAF_EXT_LEN; *buf++ = code; *buf++ = len; return 3;