NXM: Add MFInPort class

This is to handle IN_PORT 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:
Simon Horman 2012-03-13 09:06:15 +09:00 committed by FUJITA Tomonori
parent 8033beab94
commit cda7026742
2 changed files with 16 additions and 0 deletions

@ -49,6 +49,9 @@ class ClsRule(object):
self.wc = FlowWildcards()
self.flow = Flow()
def set_in_port(self, port):
self.wc.wildcards &= ~FWW_IN_PORT
self.flow.in_port = port
def _set_nxm_headers(nxm_headers):
'''Annotate corresponding NXM header'''
@ -102,6 +105,17 @@ class MFField(object):
return self.putw(buf, offset, value, mask)
@_register_make
@_set_nxm_headers([ofproto_v1_0.NXM_OF_IN_PORT])
class MFInPort(MFField):
@classmethod
def make(cls):
return cls(MF_PACK_STRING_BE16)
def put(self, buf, offset, rule):
return self._put(buf, offset, rule.flow.in_port)
def serialize_nxm_match(rule, buf, offset):
old_offset = offset

@ -515,4 +515,6 @@ def nxm_header_w(vendor, field, length):
return nxm_header__(vendor, field, 1, (length) * 2)
NXM_OF_IN_PORT = nxm_header(0x0000, 0, 2)
NXM_HEADER_PACK_STRING = '!I'