Signed-off-by: itoyuichi <[email protected]>
---
 ryu/lib/packet/arp.py         |    5 +++++
 ryu/lib/packet/bgp.py         |   10 ++++++++++
 ryu/lib/packet/bpdu.py        |    5 +++++
 ryu/lib/packet/dhcp.py        |   10 ++++++++++
 ryu/lib/packet/ethernet.py    |    5 +++++
 ryu/lib/packet/icmpv6.py      |   15 +++++++++++++++
 ryu/lib/packet/igmp.py        |    5 +++++
 ryu/lib/packet/ipv4.py        |    5 +++++
 ryu/lib/packet/ipv6.py        |    5 +++++
 ryu/lib/packet/lldp.py        |    5 +++++
 ryu/lib/packet/packet_base.py |   20 ++++++++++++++++++++
 ryu/lib/packet/slow.py        |    6 ++++++
 ryu/lib/packet/vrrp.py        |    6 ++++++
 13 files changed, 102 insertions(+)

diff --git a/ryu/lib/packet/arp.py b/ryu/lib/packet/arp.py
index 191ce9a..38504ea 100644
--- a/ryu/lib/packet/arp.py
+++ b/ryu/lib/packet/arp.py
@@ -54,6 +54,11 @@ class arp(packet_base.PacketBase):

     _PACK_STR = '!HHBBH6s4s6s4s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'src_mac', 'src_ip', 'dst_mac', 'dst_ip'
+        ]
+    }

     def __init__(self, hwtype=ARP_HW_TYPE_ETHERNET, proto=ether.ETH_TYPE_IP,
                  hlen=6, plen=4, opcode=ARP_REQUEST,
diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py
index 731ffac..0e1c1e3 100644
--- a/ryu/lib/packet/bgp.py
+++ b/ryu/lib/packet/bgp.py
@@ -79,6 +79,11 @@ def pad(bin, len_):

 class _IPAddrPrefix(packet_base.StringifyMixin):
     _PACK_STR = '!B'  # length
+    _TYPE = {
+        'ascii': [
+            'ip_addr'
+        ]
+    }

     def __init__(self, length, ip_addr):
         self.length = length
@@ -287,6 +292,11 @@ class BGPOpen(BGPMessage):
     _PACK_STR = '!BHH4sB'
     _MIN_LEN = BGPMessage._HDR_LEN + struct.calcsize(_PACK_STR)
     _class_prefixes = ['BGPOptParam']
+    _TYPE = {
+        'ascii': [
+            'bgp_identifier'
+        ]
+    }

     def __init__(self, my_as, bgp_identifier, type_=BGP_MSG_OPEN,
                  opt_param_len=0, opt_param=[],
diff --git a/ryu/lib/packet/bpdu.py b/ryu/lib/packet/bpdu.py
index 91aefa2..b4ece4f 100644
--- a/ryu/lib/packet/bpdu.py
+++ b/ryu/lib/packet/bpdu.py
@@ -247,6 +247,11 @@ class ConfigurationBPDUs(bpdu):
     BPDU_TYPE = TYPE_CONFIG_BPDU
     _PACK_STR = '!BQIQHHHHH'
     PACK_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'root_mac_address', "bridge_mac_address"
+        ]
+    }

     _BRIDGE_PRIORITY_STEP = 4096
     _PORT_PRIORITY_STEP = 16
diff --git a/ryu/lib/packet/dhcp.py b/ryu/lib/packet/dhcp.py
index 257d174..8378aa8 100644
--- a/ryu/lib/packet/dhcp.py
+++ b/ryu/lib/packet/dhcp.py
@@ -139,6 +139,11 @@ class dhcp(packet_base.PacketBase):
     _DHCP_CHADDR_LEN = 16
     _HARDWARE_TYPE_ETHERNET = 1
     _class_prefixes = ['options']
+    _TYPE = {
+        'ascii': [
+            'ciaddr', 'yiaddr', 'siaddr', 'giaddr', 'chaddr', 'sname'
+        ]
+    }

     def __init__(self, op, chaddr, options, htype=_HARDWARE_TYPE_ETHERNET,
                  hlen=0, hops=0, xid=None, secs=0, flags=0,
@@ -231,6 +236,11 @@ class options(packet_base.StringifyMixin):
     _MAGIC_COOKIE = '99.130.83.99'
     _OPT_TAG_LEN_BYTE = 2
     _class_prefixes = ['option']
+    _TYPE = {
+        'ascii': [
+            'magic_cookie'
+        ]
+    }

     def __init__(self, option_list=None, options_len=0,
                  magic_cookie=_MAGIC_COOKIE):
diff --git a/ryu/lib/packet/ethernet.py b/ryu/lib/packet/ethernet.py
index 2b8c932..a76ef9b 100644
--- a/ryu/lib/packet/ethernet.py
+++ b/ryu/lib/packet/ethernet.py
@@ -39,6 +39,11 @@ class ethernet(packet_base.PacketBase):

     _PACK_STR = '!6s6sH'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'src', 'dst'
+        ]
+    }

     def __init__(self, dst, src, ethertype):
         super(ethernet, self).__init__()
diff --git a/ryu/lib/packet/icmpv6.py b/ryu/lib/packet/icmpv6.py
index 9c3872f..bfd2cb9 100644
--- a/ryu/lib/packet/icmpv6.py
+++ b/ryu/lib/packet/icmpv6.py
@@ -160,6 +160,11 @@ class nd_neighbor(packet_base.StringifyMixin):
     _PACK_STR = '!I16s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
     _ND_OPTION_TYPES = {}
+    _TYPE = {
+        'ascii': [
+            'dst'
+        ]
+    }

     # ND option type
     ND_OPTION_SLA = 1  # Source Link-Layer Address
@@ -430,6 +435,11 @@ class nd_option_la(packet_base.StringifyMixin):

     _PACK_STR = '!6s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'hw_src'
+        ]
+    }

     def __init__(self, hw_src, data=None):
         self.hw_src = hw_src
@@ -484,6 +494,11 @@ class nd_option_pi(packet_base.StringifyMixin):

     _PACK_STR = '!BBIII16s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'prefix'
+        ]
+    }

     def __init__(self, pl, res1, val_l, pre_l, res2, prefix):
         self.pl = pl
diff --git a/ryu/lib/packet/igmp.py b/ryu/lib/packet/igmp.py
index a42300f..3e80539 100644
--- a/ryu/lib/packet/igmp.py
+++ b/ryu/lib/packet/igmp.py
@@ -89,6 +89,11 @@ class igmp(packet_base.PacketBase):
     """
     _PACK_STR = '!BBH4s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'address'
+        ]
+    }

     def __init__(self, msgtype, maxresp, csum, address):
         super(igmp, self).__init__()
diff --git a/ryu/lib/packet/ipv4.py b/ryu/lib/packet/ipv4.py
index 032e425..9ef98c3 100644
--- a/ryu/lib/packet/ipv4.py
+++ b/ryu/lib/packet/ipv4.py
@@ -68,6 +68,11 @@ class ipv4(packet_base.PacketBase):

     _PACK_STR = '!BBHHHBBH4s4s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
+    _TYPE = {
+        'ascii': [
+            'src', 'dst'
+        ]
+    }

     def __init__(self, version=4, header_length=5, tos=0,
                  total_length=0, identification=0, flags=0,
diff --git a/ryu/lib/packet/ipv6.py b/ryu/lib/packet/ipv6.py
index 59316ef..56cc65e 100644
--- a/ryu/lib/packet/ipv6.py
+++ b/ryu/lib/packet/ipv6.py
@@ -58,6 +58,11 @@ class ipv6(packet_base.PacketBase):
     _PACK_STR = '!IHBB16s16s'
     _MIN_LEN = struct.calcsize(_PACK_STR)
     _IPV6_EXT_HEADER_TYPE = {}
+    _TYPE = {
+        'ascii': [
+            'src', 'dst'
+        ]
+    }

     @staticmethod
     def register_header_type(type_):
diff --git a/ryu/lib/packet/lldp.py b/ryu/lib/packet/lldp.py
index 71b9829..54de25a 100644
--- a/ryu/lib/packet/lldp.py
+++ b/ryu/lib/packet/lldp.py
@@ -235,6 +235,11 @@ class PortID(LLDPBasicTLV):
     SUB_INTERFACE_NAME = 5      # ifName (IETF RFC 2863)
     SUB_AGENT_CIRCUIT_ID = 6    # agent circuit ID(IETF RFC 3046)
     SUB_LOCALLY_ASSIGNED = 7    # local
+    _TYPE = {
+        'ascii': [
+            'port_id'
+        ]
+    }

     def __init__(self, buf=None, *args, **kwargs):
         super(PortID, self).__init__(buf, *args, **kwargs)
diff --git a/ryu/lib/packet/packet_base.py b/ryu/lib/packet/packet_base.py
index 71a9d2d..ec1d43a 100644
--- a/ryu/lib/packet/packet_base.py
+++ b/ryu/lib/packet/packet_base.py
@@ -17,6 +17,26 @@ import abc
 from ryu.lib import stringify


+class AsciiStringListType(stringify.TypeDescr):
+    @staticmethod
+    def encode(v):
+        assert isinstance(v, list)
+        ret = []
+        for v1 in v:
+            ret.append(unicode(v1, 'ascii'))
+        return ret
+
+    @staticmethod
+    def decode(v):
+        assert isinstance(v, list)
+        ret = []
+        for v1 in v:
+            ret.append(v1.encode('ascii'))
+        return ret
+
+stringify._types['ascii_list'] = AsciiStringListType
+
+
 class StringifyMixin(stringify.StringifyMixin):

     @classmethod
diff --git a/ryu/lib/packet/slow.py b/ryu/lib/packet/slow.py
index 5ace157..94b2e8f 100644
--- a/ryu/lib/packet/slow.py
+++ b/ryu/lib/packet/slow.py
@@ -388,6 +388,12 @@ class lacp(packet_base.PacketBase):

     _MIN_LEN = _ALL_PACK_LEN

+    _TYPE = {
+        'ascii': [
+            'actor_system', 'partner_system'
+        ]
+    }
+
     def __init__(self, version=LACP_VERSION_NUMBER,
                  actor_system_priority=0,
                  actor_system='00:00:00:00:00:00',
diff --git a/ryu/lib/packet/vrrp.py b/ryu/lib/packet/vrrp.py
index ab544e7..cbdb42e 100644
--- a/ryu/lib/packet/vrrp.py
+++ b/ryu/lib/packet/vrrp.py
@@ -209,6 +209,12 @@ class vrrp(packet_base.PacketBase):
     _VRRP_VERSIONS = {}
     _SEC_IN_MAX_ADVER_INT_UNIT = {}

+    _TYPE = {
+        'ascii_list': [
+            'ip_addresses'
+        ]
+    }
+
     @staticmethod
     def get_payload(packet_):
         may_ip = None
-- 
1.7.10.4


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to