diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-03-30 16:59:11 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-03-30 16:59:11 +0200 |
commit | 7a74ad5a61c82ab0062a62dbc9ea6ab91d480485 (patch) | |
tree | 1544c3c9fd69bb76b3d1cbe338574dae86cd220f | |
parent | a06469d9fc1d3ec4b17b3109627aff7d9877ba0e (diff) |
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.
-rw-r--r-- | proto/bgp/attrs.c | 4 |
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; |