diff options
author | IWASE Yusuke <iwase.yusuke0@gmail.com> | 2016-11-07 16:04:17 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2016-11-11 15:27:52 +0900 |
commit | 31364ba91d12efe1ef6f6373874c153598405deb (patch) | |
tree | 6ad2db49037af1006be2016c17fa38be334d0b50 | |
parent | b9e4345d5dc3ffff78d0bcf83a66abefcc72d842 (diff) |
packet/bgp: Enable Extended Length flags if specified
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 <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/lib/packet/bgp.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py index 9d77cdb9..0086a927 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: |