aboutsummaryrefslogtreecommitdiffstats
path: root/proto
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2021-03-30 16:59:11 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-03-30 16:59:11 +0200
commit7a74ad5a61c82ab0062a62dbc9ea6ab91d480485 (patch)
tree1544c3c9fd69bb76b3d1cbe338574dae86cd220f /proto
parenta06469d9fc1d3ec4b17b3109627aff7d9877ba0e (diff)
downloadbird-7a74ad5a61c82ab0062a62dbc9ea6ab91d480485.tar.gz
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.
Diffstat (limited to 'proto')
-rw-r--r--proto/bgp/attrs.c4
1 files 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;