summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2012-08-28 08:13:50 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2012-08-29 08:42:26 +0900
commit77df140ecf18bd083af14d81357706efc62dccbe (patch)
tree5e2602656c57fb56af5015f6c290e79847e315cb
parent4d00bc802543dc0585af01ef88d0b33bb3f6f6aa (diff)
packet lib: set _MIN_LEN class variable
All protocols need to check if the data length is long enough so let's set the minimum length in the same way. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/packet/arp.py3
-rw-r--r--ryu/lib/packet/ethernet.py3
-rw-r--r--ryu/lib/packet/ipv4.py5
-rw-r--r--ryu/lib/packet/tcp.py1
-rw-r--r--ryu/lib/packet/udp.py6
-rw-r--r--ryu/lib/packet/vlan.py3
6 files changed, 12 insertions, 9 deletions
diff --git a/ryu/lib/packet/arp.py b/ryu/lib/packet/arp.py
index f71d5657..24ba2c02 100644
--- a/ryu/lib/packet/arp.py
+++ b/ryu/lib/packet/arp.py
@@ -19,6 +19,7 @@ from . import packet_base
class arp(packet_base.PacketBase):
_PACK_STR = '!HHBBH6sI6sI'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, hwtype, proto, hlen, plen, opcode,
src_mac, src_ip, dst_mac, dst_ip):
@@ -32,7 +33,7 @@ class arp(packet_base.PacketBase):
self.src_ip = src_ip
self.dst_mac = dst_mac
self.dst_ip = dst_ip
- self.length = struct.calcsize(arp._PACK_STR)
+ self.length = arp._MIN_LEN
@classmethod
def parser(cls, buf):
diff --git a/ryu/lib/packet/ethernet.py b/ryu/lib/packet/ethernet.py
index adb706a0..de034562 100644
--- a/ryu/lib/packet/ethernet.py
+++ b/ryu/lib/packet/ethernet.py
@@ -21,13 +21,14 @@ from ryu.ofproto import ether
class ethernet(packet_base.PacketBase):
_PACK_STR = '!6s6sH'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, dst, src, ethertype):
super(ethernet, self).__init__()
self.dst = dst
self.src = src
self.ethertype = ethertype
- self.length = struct.calcsize(ethernet._PACK_STR)
+ self.length = ethernet._MIN_LEN
@classmethod
def parser(cls, buf):
diff --git a/ryu/lib/packet/ipv4.py b/ryu/lib/packet/ipv4.py
index bd7b6330..93c38285 100644
--- a/ryu/lib/packet/ipv4.py
+++ b/ryu/lib/packet/ipv4.py
@@ -23,6 +23,7 @@ from ryu.ofproto import inet
class ipv4(packet_base.PacketBase):
_PACK_STR = '!BBHHHBBHII'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, version, header_length, tos, total_length,
identification, flags, offset, ttl, proto, csum,
@@ -53,8 +54,8 @@ class ipv4(packet_base.PacketBase):
msg = cls(version, header_length, tos, total_length, identification,
flags, offset, ttl, proto, csum, src, dst)
- if msg.length > struct.calcsize(ipv4._PACK_STR):
- self.extra = buf[struct.calcsize(ipv4._PACK_STR):msg.length]
+ if msg.length > ipv4._MIN_LEN:
+ self.extra = buf[ipv4._MIN_LEN:msg.length]
return msg, ipv4.get_packet_type(proto)
diff --git a/ryu/lib/packet/tcp.py b/ryu/lib/packet/tcp.py
index 975bfcca..73e700db 100644
--- a/ryu/lib/packet/tcp.py
+++ b/ryu/lib/packet/tcp.py
@@ -22,6 +22,7 @@ import ipv4
class tcp(packet_base.PacketBase):
_PACK_STR = '!HHIIBBHHH'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, src_port, dst_port, seq, ack, offset,
bits, window_size, csum, urgent):
diff --git a/ryu/lib/packet/udp.py b/ryu/lib/packet/udp.py
index 6fc84fc1..2b858d98 100644
--- a/ryu/lib/packet/udp.py
+++ b/ryu/lib/packet/udp.py
@@ -22,6 +22,7 @@ import ipv4
class udp(packet_base.PacketBase):
_PACK_STR = '!HHHH'
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, src_port, dst_port, length, csum=0):
super(udp, self).__init__()
@@ -35,14 +36,11 @@ class udp(packet_base.PacketBase):
(src_port, dst_port, length, csum) = struct.unpack_from(cls._PACK_STR,
buf)
msg = cls(src_port, dst_port, length, csum)
- if length > struct.calcsize(cls._PACK_STR):
- msg.data = buf[struct.calcsize(cls._PACK_STR):length]
-
return msg, None
def serialize(self, payload, prev):
if self.length == 0:
- self.length = struct.calcsize(udp._PACK_STR) + len(payload)
+ self.length = udp._MIN_LEN + len(payload)
h = struct.pack(udp._PACK_STR, self.src_port, self.dst_port,
self.length, self.csum)
if self.csum == 0:
diff --git a/ryu/lib/packet/vlan.py b/ryu/lib/packet/vlan.py
index bc33f2ff..4fb93a19 100644
--- a/ryu/lib/packet/vlan.py
+++ b/ryu/lib/packet/vlan.py
@@ -23,6 +23,7 @@ from ryu.ofproto.ofproto_parser import msg_pack_into
class vlan(packet_base.PacketBase):
_PACK_STR = "!HH"
+ _MIN_LEN = struct.calcsize(_PACK_STR)
def __init__(self, pcp, cfi, vid, ethertype):
super(vlan, self).__init__()
@@ -30,7 +31,7 @@ class vlan(packet_base.PacketBase):
self.cfi = cfi
self.vid = vid
self.ethertype = ethertype
- self.length = struct.calcsize(vlan._PACK_STR)
+ self.length = vlan._MIN_LEN
@classmethod
def parser(cls, buf):