diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-05-07 21:34:45 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-05-07 21:34:45 +0900 |
commit | 3e84089d2c64167046d6a817b5a5d292098bebd1 (patch) | |
tree | 8a4fae5c7458686a151a3e901857f94f4645e864 | |
parent | 875ebcb90107f980a7f4975975dc831331ab5a36 (diff) |
add Nicira Extension NXAST_MULTIPATH action
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/ofproto/ofproto_v1_0.py | 15 | ||||
-rw-r--r-- | ryu/ofproto/ofproto_v1_0_parser.py | 21 |
2 files changed, 36 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py index dff4c3a7..43e41162 100644 --- a/ryu/ofproto/ofproto_v1_0.py +++ b/ryu/ofproto/ofproto_v1_0.py @@ -235,6 +235,7 @@ OFP_ACTION_PACK_STR = '!H' NXAST_RESUBMIT = 1 NXAST_SET_TUNNEL = 2 NXAST_SET_TUNNEL64 = 9 +NXAST_MULTIPATH = 10 NXAST_RESUBMIT_TABLE = 14 NX_ACTION_RESUBMIT_PACK_STR = '!HHIHHB3x' @@ -249,6 +250,10 @@ NX_ACTION_SET_TUNNEL64_PACK_STR = '!HHIH6xQ' NX_ACTION_SET_TUNNEL64_SIZE = 24 assert calcsize(NX_ACTION_SET_TUNNEL64_PACK_STR) == NX_ACTION_SET_TUNNEL64_SIZE +NX_ACTION_MULTIPATH_PACK_STR = '!HHIHHH2xHHI2xHI' +NX_ACTION_MULTIPATH_SIZE = 32 +assert calcsize(NX_ACTION_MULTIPATH_PACK_STR) == NX_ACTION_MULTIPATH_SIZE + NX_ACTION_HEADER_PACK_STR = '!H' NX_ACTION_HEADER_SIZE = 10 assert (OFP_ACTION_VENDOR_HEADER_SIZE + @@ -566,3 +571,13 @@ NXM_NX_TUN_ID_W = nxm_header_w(0x0001, 16, 8) NXM_NX_IP_ECN = nxm_header(0x0001, 28, 1) NXM_HEADER_PACK_STRING = '!I' + +# enum nx_hash_fields +NX_HASH_FIELDS_ETH_SRC = 0 +NX_HASH_FIELDS_SYMMETRIC_L4 = 1 + +# enum nx_mp_algorithm +NX_MP_ALG_MODULO_N = 0 +NX_MP_ALG_HASH_THRESHOLD = 1 +NX_MP_ALG_HRW = 2 +NX_MP_ALG_ITER_HASH = 3 diff --git a/ryu/ofproto/ofproto_v1_0_parser.py b/ryu/ofproto/ofproto_v1_0_parser.py index 8ea3321d..069354bd 100644 --- a/ryu/ofproto/ofproto_v1_0_parser.py +++ b/ryu/ofproto/ofproto_v1_0_parser.py @@ -420,6 +420,27 @@ class NXActionSetTunnel64(NXActionHeader): msg_pack_into(ofproto_v1_0.NX_ACTION_SET_TUNNEL64_PACK_STR, buf, offset, self.type, self.len, self.vendor, self.subtype, self.tun_id) + + +class NXActionMultipath(NXActionHeader): + def __init__(self, fields, basis, algorithm, max_link, arg, + ofs_nbits, dst): + super(NXActionMultipath, self).__init__( + ofproto_v1_0.NXAST_MULTIPATH, + ofproto_v1_0.NX_ACTION_MULTIPATH_SIZE) + self.fields = fields + self.basis = basis + self.algorithm = algorithm + self.max_link = max_link + self.arg = arg + self.ofs_nbits = ofs_nbits + self.dst = dst + + def serialize(self, buf, offset): + msg_pack_into(ofproto_v1_0.NX_ACTION_MULTIPATH_PACK_STR, buf, + offset, self.type, self.len, self.vendor, self.subtype, + self.fields, self.basis, self.algorithm, self.max_link, + self.arg, self.ofs_nbits, self.dst) class OFPDescStats(collections.namedtuple('OFPDescStats', |