diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2013-10-18 16:12:11 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-10-21 11:40:38 +0900 |
commit | 97aff06df429d7067e481a52bbf1e6ee63a43a80 (patch) | |
tree | 755533652929865231f94c58d9b023281600a447 | |
parent | 96f857c64389e527ae6325ff7c047f120ed495f8 (diff) |
packet lib: icmpv6.nd_router_advert: skip unknown options correctly
this should fix a problem reported by Gabriele Gerbino on ryu-devel.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/lib/packet/icmpv6.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ryu/lib/packet/icmpv6.py b/ryu/lib/packet/icmpv6.py index 6b99e40c..256f53d6 100644 --- a/ryu/lib/packet/icmpv6.py +++ b/ryu/lib/packet/icmpv6.py @@ -373,13 +373,14 @@ class nd_router_advert(stringify.StringifyMixin): msg.length.append(length) cls_ = cls._ND_OPTION_TYPES.get(type_, None) offset += 2 + byte_len = length * 8 - 2 if cls_: msg.data.append(cls_.parser(buf[:offset+cls_._MIN_LEN], offset)) offset += cls_._MIN_LEN else: - msg.data.append(buf[offset:]) - offset = len(buf) + msg.data.append(buf[offset:offset + byte_len]) + offset += byte_len return msg |