diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-06-10 11:32:19 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-06-10 23:38:07 +0900 |
commit | d63d4b106218279b78a4627a786c1af1e6403291 (patch) | |
tree | 962780506fcfbf7f532ba3653f56e7d82df2edb1 | |
parent | 3d9014733cfe3e4e107091548aefe13387097d03 (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.py | 18 |
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 |