From 31b0f1625b02409a24a108eac1e20946fe9014d3 Mon Sep 17 00:00:00 2001 From: Yuichi Ito Date: Mon, 16 Dec 2013 17:34:30 +0900 Subject: packet lib: improve readability of json this patch makes some json members of several packet libraries human-readable. ex) ethernet.ethernet before applying this patch: {'ethernet': {'ethertype': 2048, 'dst': 'ZmY6ZmY6ZmY6ZmY6ZmY6ZmY=', 'src': 'MDA6MDA6MDA6MDA6MDA6MDA='}} after applying this patch: {'ethernet': {'ethertype': 2048, 'dst': u'ff:ff:ff:ff:ff:ff', 'src': u'00:00:00:00:00:00'}} Signed-off-by: Yuichi Ito Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/arp.py | 5 +++++ ryu/lib/packet/bgp.py | 26 ++++++++++++++++++++++++++ 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/slow.py | 6 ++++++ 10 files changed, 87 insertions(+) diff --git a/ryu/lib/packet/arp.py b/ryu/lib/packet/arp.py index 1ede650f..5ccdb02b 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 49ded71f..04e37779 100644 --- a/ryu/lib/packet/bgp.py +++ b/ryu/lib/packet/bgp.py @@ -151,6 +151,12 @@ class _BinAddrPrefix(_AddrPrefix): class _IPAddrPrefix(_AddrPrefix): + _TYPE = { + 'ascii': [ + 'addr' + ] + } + @staticmethod def _to_bin(addr): return addrconv.ipv4.text_to_bin(addr) @@ -526,6 +532,11 @@ class BGPPathAttributeAs4Path(_BGPPathAttributeAsPathCommon): class BGPPathAttributeNextHop(_PathAttribute): _VALUE_PACK_STR = '!4s' _ATTR_FLAGS = BGP_ATTR_FLAG_TRANSITIVE + _TYPE = { + 'ascii': [ + 'value' + ] + } @classmethod def parse_value(cls, buf): @@ -566,6 +577,11 @@ class BGPPathAttributeAtomicAggregate(_PathAttribute): class _BGPPathAttributeAggregatorCommon(_PathAttribute): _VALUE_PACK_STR = None _ATTR_FLAGS = BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANSITIVE + _TYPE = { + 'ascii': [ + 'addr' + ] + } def __init__(self, as_number, addr, flags=0, type_=None, length=None): super(_BGPPathAttributeAggregatorCommon, self).__init__(flags=flags, @@ -741,6 +757,11 @@ class BGPTwoOctetAsSpecificExtendedCommunity(_ExtendedCommunity): class BGPIPv4AddressSpecificExtendedCommunity(_ExtendedCommunity): _VALUE_PACK_STR = '!B4sH' # sub type, IPv4 address, local adm _VALUE_FIELDS = ['subtype', 'ipv4_address', 'local_administrator'] + _TYPE = { + 'ascii': [ + 'ipv4_address' + ] + } def __init__(self, type_=_ExtendedCommunity.IPV4_ADDRESS_SPECIFIC, **kwargs): @@ -990,6 +1011,11 @@ class BGPOpen(BGPMessage): _PACK_STR = '!BHH4sB' _MIN_LEN = BGPMessage._HDR_LEN + struct.calcsize(_PACK_STR) + _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 9834df79..8c39ec5a 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 00d1de8c..c8fb16a9 100644 --- a/ryu/lib/packet/dhcp.py +++ b/ryu/lib/packet/dhcp.py @@ -140,6 +140,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, @@ -232,6 +237,11 @@ class options(stringify.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 4568eb6e..1d89e0d7 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='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00', ethertype=ether.ETH_TYPE_IP): diff --git a/ryu/lib/packet/icmpv6.py b/ryu/lib/packet/icmpv6.py index 54e36fa7..bef1bd76 100644 --- a/ryu/lib/packet/icmpv6.py +++ b/ryu/lib/packet/icmpv6.py @@ -172,6 +172,11 @@ class nd_neighbor(stringify.StringifyMixin): _PACK_STR = '!I16s' _MIN_LEN = struct.calcsize(_PACK_STR) _ND_OPTION_TYPES = {} + _TYPE = { + 'ascii': [ + 'dst' + ] + } @staticmethod def register_nd_option_type(*args): @@ -404,6 +409,11 @@ class nd_option_la(nd_option): _PACK_STR = '!BB6s' _MIN_LEN = struct.calcsize(_PACK_STR) + _TYPE = { + 'ascii': [ + 'hw_src' + ] + } @abc.abstractmethod def __init__(self, length, hw_src, data): @@ -553,6 +563,11 @@ class nd_option_pi(nd_option): _PACK_STR = '!BBBBIII16s' _MIN_LEN = struct.calcsize(_PACK_STR) + _TYPE = { + 'ascii': [ + 'prefix' + ] + } @classmethod def option_type(cls): diff --git a/ryu/lib/packet/igmp.py b/ryu/lib/packet/igmp.py index 88eab854..7fabb242 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=IGMP_TYPE_QUERY, maxresp=0, csum=0, address='0.0.0.0'): diff --git a/ryu/lib/packet/ipv4.py b/ryu/lib/packet/ipv4.py index c6dba6cd..a252c70c 100644 --- a/ryu/lib/packet/ipv4.py +++ b/ryu/lib/packet/ipv4.py @@ -70,6 +70,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 59d7e18f..1c481b5c 100644 --- a/ryu/lib/packet/ipv6.py +++ b/ryu/lib/packet/ipv6.py @@ -60,6 +60,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/slow.py b/ryu/lib/packet/slow.py index 71be6ae5..d2d39c33 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', -- cgit v1.2.3