mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-08 05:46:10 +02:00
of1.0: of-wire json adapt
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
ec47fd0732
commit
2c5fb2c12c
@ -14,7 +14,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import collections
|
||||
import struct
|
||||
import binascii
|
||||
|
||||
@ -79,7 +78,7 @@ def _set_msg_reply(msg_reply):
|
||||
# common structures
|
||||
#
|
||||
|
||||
class OFPPhyPort(collections.namedtuple('OFPPhyPort', (
|
||||
class OFPPhyPort(ofproto_parser.namedtuple('OFPPhyPort', (
|
||||
'port_no', 'hw_addr', 'name', 'config', 'state', 'curr', 'advertised',
|
||||
'supported', 'peer'))):
|
||||
|
||||
@ -196,6 +195,8 @@ class OFPMatch(StringifyMixin):
|
||||
|
||||
|
||||
class OFPActionHeader(StringifyMixin):
|
||||
_base_attributes = ['type', 'len']
|
||||
|
||||
def __init__(self, type_, len_):
|
||||
self.type = type_
|
||||
self.len = len_
|
||||
@ -970,7 +971,7 @@ class NXActionFinTimeout(NXActionHeader):
|
||||
return cls(fin_idle_timeout, fin_hard_timeout)
|
||||
|
||||
|
||||
class OFPDescStats(collections.namedtuple('OFPDescStats', (
|
||||
class OFPDescStats(ofproto_parser.namedtuple('OFPDescStats', (
|
||||
'mfr_desc', 'hw_desc', 'sw_desc', 'serial_num', 'dp_desc'))):
|
||||
@classmethod
|
||||
def parser(cls, buf, offset):
|
||||
@ -1031,7 +1032,7 @@ class OFPFlowStats(StringifyMixin):
|
||||
return flow_stats
|
||||
|
||||
|
||||
class OFPAggregateStats(collections.namedtuple('OFPAggregateStats', (
|
||||
class OFPAggregateStats(ofproto_parser.namedtuple('OFPAggregateStats', (
|
||||
'packet_count', 'byte_count', 'flow_count'))):
|
||||
@classmethod
|
||||
def parser(cls, buf, offset):
|
||||
@ -1042,7 +1043,7 @@ class OFPAggregateStats(collections.namedtuple('OFPAggregateStats', (
|
||||
return stats
|
||||
|
||||
|
||||
class OFPTableStats(collections.namedtuple('OFPTableStats', (
|
||||
class OFPTableStats(ofproto_parser.namedtuple('OFPTableStats', (
|
||||
'table_id', 'name', 'wildcards', 'max_entries', 'active_count',
|
||||
'lookup_count', 'matched_count'))):
|
||||
@classmethod
|
||||
@ -1054,7 +1055,7 @@ class OFPTableStats(collections.namedtuple('OFPTableStats', (
|
||||
return stats
|
||||
|
||||
|
||||
class OFPPortStats(collections.namedtuple('OFPPortStats', (
|
||||
class OFPPortStats(ofproto_parser.namedtuple('OFPPortStats', (
|
||||
'port_no', 'rx_packets', 'tx_packets', 'rx_bytes', 'tx_bytes',
|
||||
'rx_dropped', 'tx_dropped', 'rx_errors', 'tx_errors',
|
||||
'rx_frame_err', 'rx_over_err', 'rx_crc_err', 'collisions'))):
|
||||
@ -1067,7 +1068,7 @@ class OFPPortStats(collections.namedtuple('OFPPortStats', (
|
||||
return stats
|
||||
|
||||
|
||||
class OFPQueueStats(collections.namedtuple('OFPQueueStats', (
|
||||
class OFPQueueStats(ofproto_parser.namedtuple('OFPQueueStats', (
|
||||
'port_no', 'queue_id', 'tx_bytes', 'tx_packets', 'tx_errors'))):
|
||||
@classmethod
|
||||
def parser(cls, buf, offset):
|
||||
@ -1078,8 +1079,8 @@ class OFPQueueStats(collections.namedtuple('OFPQueueStats', (
|
||||
return stats
|
||||
|
||||
|
||||
class OFPVendorStats(collections.namedtuple('OFPVendorStats',
|
||||
('specific_data'))):
|
||||
class OFPVendorStats(ofproto_parser.namedtuple('OFPVendorStats',
|
||||
('specific_data'))):
|
||||
@classmethod
|
||||
def parser(cls, buf, offset):
|
||||
stats = cls(buf[offset:])
|
||||
@ -1141,7 +1142,7 @@ class NXFlowStats(StringifyMixin):
|
||||
return nxflow_stats
|
||||
|
||||
|
||||
class NXAggregateStats(collections.namedtuple('NXAggregateStats', (
|
||||
class NXAggregateStats(ofproto_parser.namedtuple('NXAggregateStats', (
|
||||
'packet_count', 'byte_count', 'flow_count'))):
|
||||
@classmethod
|
||||
def parser(cls, buf, offset):
|
||||
@ -1248,11 +1249,11 @@ class OFPHello(MsgBase):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_ERROR)
|
||||
class OFPErrorMsg(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, type_=None, code=None, data=None):
|
||||
super(OFPErrorMsg, self).__init__(datapath)
|
||||
self.type = None
|
||||
self.code = None
|
||||
self.data = None
|
||||
self.type = type_
|
||||
self.code = code
|
||||
self.data = data
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -1274,9 +1275,9 @@ class OFPErrorMsg(MsgBase):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_ECHO_REQUEST)
|
||||
class OFPEchoRequest(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, data=None):
|
||||
super(OFPEchoRequest, self).__init__(datapath)
|
||||
self.data = None
|
||||
self.data = data
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -1293,9 +1294,9 @@ class OFPEchoRequest(MsgBase):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_ECHO_REPLY)
|
||||
class OFPEchoReply(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, data=None):
|
||||
super(OFPEchoReply, self).__init__(datapath)
|
||||
self.data = None
|
||||
self.data = data
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -1609,8 +1610,15 @@ class NXTSetControllerId(NiciraHeader):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_FEATURES_REPLY)
|
||||
class OFPSwitchFeatures(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, datapath_id=None, n_buffers=None,
|
||||
n_tables=None, capabilities=None, actions=None, ports=None):
|
||||
super(OFPSwitchFeatures, self).__init__(datapath)
|
||||
self.datapath_id = datapath_id
|
||||
self.n_buffers = n_buffers
|
||||
self.n_tables = n_tables
|
||||
self.capabilities = capabilities
|
||||
self.actions = actions
|
||||
self.ports = ports
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -1640,8 +1648,10 @@ class OFPSwitchFeatures(MsgBase):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_PORT_STATUS)
|
||||
class OFPPortStatus(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, reason=None, desc=None):
|
||||
super(OFPPortStatus, self).__init__(datapath)
|
||||
self.reason = reason
|
||||
self.desc = desc
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -1658,8 +1668,14 @@ class OFPPortStatus(MsgBase):
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_PACKET_IN)
|
||||
class OFPPacketIn(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
def __init__(self, datapath, buffer_id=None, total_len=None, in_port=None,
|
||||
reason=None, data=None):
|
||||
super(OFPPacketIn, self).__init__(datapath)
|
||||
self.buffer_id = buffer_id
|
||||
self.total_len = total_len
|
||||
self.in_port = in_port
|
||||
self.reason = reason
|
||||
self.data = data
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
@ -2015,22 +2031,22 @@ class OFPPacketOut(MsgBase):
|
||||
super(OFPPacketOut, self).__init__(datapath)
|
||||
self.buffer_id = buffer_id
|
||||
self.in_port = in_port
|
||||
self.actions_len = None
|
||||
self._actions_len = None
|
||||
self.actions = actions
|
||||
self.data = data
|
||||
|
||||
def _serialize_body(self):
|
||||
assert self.buffer_id is not None
|
||||
assert self.in_port is not None
|
||||
assert self.actions_len is None
|
||||
assert self._actions_len is None
|
||||
assert self.actions is not None
|
||||
|
||||
self.actions_len = 0
|
||||
self._actions_len = 0
|
||||
offset = ofproto_v1_0.OFP_PACKET_OUT_SIZE
|
||||
for a in self.actions:
|
||||
a.serialize(self.buf, offset)
|
||||
offset += a.len
|
||||
self.actions_len += a.len
|
||||
self._actions_len += a.len
|
||||
|
||||
if self.data is not None:
|
||||
assert self.buffer_id == 0xffffffff
|
||||
@ -2038,7 +2054,7 @@ class OFPPacketOut(MsgBase):
|
||||
|
||||
msg_pack_into(ofproto_v1_0.OFP_PACKET_OUT_PACK_STR,
|
||||
self.buf, ofproto_v1_0.OFP_HEADER_SIZE,
|
||||
self.buffer_id, self.in_port, self.actions_len)
|
||||
self.buffer_id, self.in_port, self._actions_len)
|
||||
|
||||
|
||||
@_set_msg_type(ofproto_v1_0.OFPT_FLOW_MOD)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user