Currently, the Extended Length flag in path attributes is evaluated only when the length exceeds 1 byte (max 255) field. This patch enables this flags if explicitly specified.
Signed-off-by: IWASE Yusuke <[email protected]> --- ryu/lib/packet/bgp.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py index 9d77cdb..0086a92 100644 --- a/ryu/lib/packet/bgp.py +++ b/ryu/lib/packet/bgp.py @@ -2248,12 +2248,15 @@ class _PathAttribute(StringifyMixin, _TypeDisp, _Value): def serialize(self): # fixup if self._ATTR_FLAGS is not None: - self.flags = self.flags \ - & ~(BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANSITIVE) \ - | self._ATTR_FLAGS + self.flags = ( + self.flags + & ~(BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANSITIVE) + | self._ATTR_FLAGS) value = self.serialize_value() self.length = len(value) - if self.length > 255: + if self.flags & BGP_ATTR_FLAG_EXTENDED_LENGTH: + len_pack_str = self._PACK_STR_EXT_LEN + elif self.length > 255: self.flags |= BGP_ATTR_FLAG_EXTENDED_LENGTH len_pack_str = self._PACK_STR_EXT_LEN else: -- 2.7.4 ------------------------------------------------------------------------------ The Command Line: Reinvented for Modern Developers Did the resurgence of CLI tooling catch you by surprise? Reconnect with the command line and become more productive. Learn the new .NET and ASP.NET CLI. Get your free copy! http://sdm.link/telerik _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
