mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-15 17:46:45 +02:00
Add support for NXT_SET_FLOW_FORMAT
This message may be used to request that the NXM flow format may be used. NXM is used as the match in NX vendor extension messages such as NXT_FLOW_MOD. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
0f8c795c99
commit
85fe60abe0
@ -98,6 +98,7 @@ class Datapath(object):
|
||||
self.xid = random.randint(0, self.ofproto.MAX_XID)
|
||||
self.id = None # datapath_id is unknown yet
|
||||
self.ports = None
|
||||
self.flow_format = ofproto_v1_0.NXFF_OPENFLOW10
|
||||
|
||||
def close(self):
|
||||
"""
|
||||
@ -228,6 +229,21 @@ class Datapath(object):
|
||||
barrier_request = self.ofproto_parser.OFPBarrierRequest(self)
|
||||
self.send_msg(barrier_request)
|
||||
|
||||
def send_nxt_set_flow_format(self, format):
|
||||
assert (format == ofproto_v1_0.NXFF_OPENFLOW10 or
|
||||
format == ofproto_v1_0.NXFF_NXM)
|
||||
if self.flow_format == format:
|
||||
# Nothing to do
|
||||
return
|
||||
self.flow_format = format
|
||||
set_format = self.ofproto_parser.NXTSetFlowFormat(self, format)
|
||||
# FIXME: If NXT_SET_FLOW_FORMAT or NXFF_NXM is not supported by
|
||||
# the switch then an error message will be received. It may be
|
||||
# handled by setting self.flow_format to
|
||||
# ofproto_v1_0.NXFF_OPENFLOW10 but currently isn't.
|
||||
self.send_msg(set_format)
|
||||
self.send_barrier()
|
||||
|
||||
|
||||
def datapath_connection_factory(socket, address):
|
||||
LOG.debug('connected socket:%s address:%s', socket, address)
|
||||
|
||||
@ -485,7 +485,19 @@ assert (calcsize(OFP_QUEUE_PROP_MIN_RATE_PACK_STR) +
|
||||
|
||||
NX_VENDOR_ID = 0x00002320
|
||||
|
||||
# enum nicira_type (abridged)
|
||||
NXT_SET_FLOW_FORMAT = 12
|
||||
|
||||
# enum nx_flow_format
|
||||
NXFF_OPENFLOW10 = 0
|
||||
NXFF_NXM = 2
|
||||
|
||||
NICIRA_HEADER_PACK_STR = '!II'
|
||||
NICIRA_HEADER_SIZE = 16
|
||||
assert (calcsize(NICIRA_HEADER_PACK_STR) +
|
||||
OFP_HEADER_SIZE == NICIRA_HEADER_SIZE)
|
||||
|
||||
NX_SET_FLOW_FORMAT_PACK_STR = '!I'
|
||||
NX_SET_FLOW_FORMAT_SIZE = 20
|
||||
assert (calcsize(NX_SET_FLOW_FORMAT_PACK_STR) +
|
||||
NICIRA_HEADER_SIZE == NX_SET_FLOW_FORMAT_SIZE)
|
||||
|
||||
@ -661,6 +661,18 @@ class NXTRequest(OFPVendor):
|
||||
self.vendor, self.subtype)
|
||||
|
||||
|
||||
class NXTSetFlowFormat(NXTRequest):
|
||||
def __init__(self, datapath, format):
|
||||
super(NXTSetFlowFormat, self).__init__(datapath)
|
||||
self.subtype = ofproto_v1_0.NXT_SET_FLOW_FORMAT
|
||||
self.format = format
|
||||
|
||||
def _serialize_body(self):
|
||||
self.serialize_header()
|
||||
msg_pack_into(ofproto_v1_0.NX_SET_FLOW_FORMAT_PACK_STR,
|
||||
self.buf, ofproto_v1_0.NICIRA_HEADER_SIZE, self.format)
|
||||
|
||||
|
||||
#
|
||||
# asymmetric message (datapath -> controller)
|
||||
# parser only
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user