mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-16 18:17:31 +02:00
NXM: Add MFTunId class
This is to handle TUN_ID and TUN_ID_W NXM fields. This will be used when sending NXT_FLOW_MOD messages. 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
cda7026742
commit
bb7d3e8dd2
@ -41,6 +41,7 @@ class Flow(object):
|
||||
|
||||
class FlowWildcards(object):
|
||||
def __init__(self):
|
||||
self.tun_id_mask = 0
|
||||
self.wildcards = FWW_ALL
|
||||
|
||||
|
||||
@ -53,6 +54,14 @@ class ClsRule(object):
|
||||
self.wc.wildcards &= ~FWW_IN_PORT
|
||||
self.flow.in_port = port
|
||||
|
||||
def set_tun_id(self, tun_id):
|
||||
self.set_tun_id_masked(tun_id, UINT64_MAX)
|
||||
|
||||
def set_tun_id_masked(self, tun_id, mask):
|
||||
self.wc.tun_id_mask = mask
|
||||
self.flow.tun_id = tun_id & mask
|
||||
|
||||
|
||||
def _set_nxm_headers(nxm_headers):
|
||||
'''Annotate corresponding NXM header'''
|
||||
def _set_nxm_headers(self):
|
||||
@ -116,6 +125,17 @@ class MFInPort(MFField):
|
||||
return self._put(buf, offset, rule.flow.in_port)
|
||||
|
||||
|
||||
@_register_make
|
||||
@_set_nxm_headers([ofproto_v1_0.NXM_NX_TUN_ID, ofproto_v1_0.NXM_NX_TUN_ID_W])
|
||||
class MFTunId(MFField):
|
||||
@classmethod
|
||||
def make(cls):
|
||||
return cls(MF_PACK_STRING_BE64)
|
||||
|
||||
def put(self, buf, offset, rule):
|
||||
return self.putm(buf, offset, rule.flow.tun_id, rule.wc.tun_id_mask)
|
||||
|
||||
|
||||
def serialize_nxm_match(rule, buf, offset):
|
||||
old_offset = offset
|
||||
|
||||
|
||||
@ -517,4 +517,7 @@ def nxm_header_w(vendor, field, length):
|
||||
|
||||
NXM_OF_IN_PORT = nxm_header(0x0000, 0, 2)
|
||||
|
||||
NXM_NX_TUN_ID = nxm_header(0x0001, 16, 8)
|
||||
NXM_NX_TUN_ID_W = nxm_header_w(0x0001, 16, 8)
|
||||
|
||||
NXM_HEADER_PACK_STRING = '!I'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user