From 7a74ad5a61c82ab0062a62dbc9ea6ab91d480485 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 30 Mar 2021 16:59:11 +0200 Subject: [PATCH] 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. --- proto/bgp/attrs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index 6752cb7f..24ba00ba 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;