summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYAMAMOTO Takashi <yamamoto@valinux.co.jp>2013-10-18 16:12:11 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-10-21 11:40:38 +0900
commit97aff06df429d7067e481a52bbf1e6ee63a43a80 (patch)
tree755533652929865231f94c58d9b023281600a447
parent96f857c64389e527ae6325ff7c047f120ed495f8 (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.py5
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