From d63d4b106218279b78a4627a786c1af1e6403291 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Mon, 10 Jun 2013 11:32:19 +0900 Subject: packet lib: icmp support time exceeded type Used mainly for traceroute. Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/icmp.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 -- cgit v1.2.3