From e47c5bf16ab006a8c831840fe8c96deccabaa471 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Thu, 3 Sep 2015 22:35:02 +0900 Subject: [PATCH] packet: udp should detect dhcp Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/udp.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ryu/lib/packet/udp.py b/ryu/lib/packet/udp.py index a80e1010..bae6d735 100644 --- a/ryu/lib/packet/udp.py +++ b/ryu/lib/packet/udp.py @@ -17,6 +17,7 @@ import struct from . import packet_base from . import packet_utils +from . import dhcp class udp(packet_base.PacketBase): @@ -48,12 +49,18 @@ class udp(packet_base.PacketBase): self.total_length = total_length self.csum = csum + @classmethod + def get_packet_type(cls, src_port, dst_port): + if (src_port == 68 and dst_port == 67) or (src_port == 67 and dst_port == 68): + return dhcp.dhcp + return None + @classmethod def parser(cls, buf): (src_port, dst_port, total_length, csum) = struct.unpack_from( cls._PACK_STR, buf) msg = cls(src_port, dst_port, total_length, csum) - return msg, None, buf[msg._MIN_LEN:total_length] + return msg, cls.get_packet_type(src_port, dst_port), buf[msg._MIN_LEN:total_length] def serialize(self, payload, prev): if self.total_length == 0: