summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-06-10 11:32:19 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-06-10 23:38:07 +0900
commitd63d4b106218279b78a4627a786c1af1e6403291 (patch)
tree962780506fcfbf7f532ba3653f56e7d82df2edb1
parent3d9014733cfe3e4e107091548aefe13387097d03 (diff)
packet lib: icmp support time exceeded type
Used mainly for traceroute. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/packet/icmp.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/ryu/lib/packet/icmp.py b/ryu/lib/packet/icmp.py
index e42fa40f..b049380a 100644
--- a/ryu/lib/packet/icmp.py
+++ b/ryu/lib/packet/icmp.py
@@ -24,6 +24,7 @@ ICMP_DEST_UNREACH = 3
ICMP_SRC_QUENCH = 4
ICMP_REDIRECT = 5
ICMP_ECHO_REQUEST = 8
+ICMP_TIME_EXCEEDED = 11
class icmp(packet_base.PacketBase):
@@ -146,3 +147,20 @@ class echo(object):
hdr += self.data
return hdr
+
+
+@icmp.register_icmp_type(ICMP_TIME_EXCEEDED)
+class TimeExceeded(object):
+ _PACK_STR = '!4x'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
+
+ def __init__(self, data=None):
+ self.data = data
+
+ def serialize(self):
+ hdr = bytearray(TimeExceeded._MIN_LEN)
+
+ if self.data is not None:
+ hdr += self.data
+
+ return hdr