diff --git a/ryu/ofproto/nicira_ext.py b/ryu/ofproto/nicira_ext.py new file mode 100644 index 00000000..03a2d951 --- /dev/null +++ b/ryu/ofproto/nicira_ext.py @@ -0,0 +1,241 @@ +# Copyright (C) 2011, 2012 Nippon Telegraph and Telephone Corporation. +# Copyright (C) 2011, 2012 Isaku Yamahata +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Nicira extensions +# Many of these definitions are common among OpenFlow versions. + +from struct import calcsize + +from ofproto_common import OFP_HEADER_SIZE + +# Action subtypes +NXAST_RESUBMIT = 1 +NXAST_SET_TUNNEL = 2 +NXAST_DROP_SPOOFED_ARP__OBSOLETE = 3 +NXAST_SET_QUEUE = 4 +NXAST_POP_QUEUE = 5 +NXAST_REG_MOVE = 6 +NXAST_REG_LOAD = 7 +NXAST_NOTE = 8 +NXAST_SET_TUNNEL64 = 9 +NXAST_MULTIPATH = 10 +NXAST_AUTOPATH = 11 +NXAST_BUNDLE = 12 +NXAST_BUNDLE_LOAD = 13 +NXAST_RESUBMIT_TABLE = 14 +NXAST_OUTPUT_REG = 15 +NXAST_LEARN = 16 +NXAST_EXIT = 17 +NXAST_DEC_TTL = 18 +NXAST_FIN_TIMEOUT = 19 +NXAST_CONTROLLER = 20 + +NX_ACTION_RESUBMIT_PACK_STR = '!HHIHHB3x' +NX_ACTION_RESUBMIT_SIZE = 16 +assert calcsize(NX_ACTION_RESUBMIT_PACK_STR) == NX_ACTION_RESUBMIT_SIZE + +NX_ACTION_SET_TUNNEL_PACK_STR = '!HHIH2xI' +NX_ACTION_SET_TUNNEL_SIZE = 16 +assert calcsize(NX_ACTION_SET_TUNNEL_PACK_STR) == NX_ACTION_SET_TUNNEL_SIZE + +NX_ACTION_SET_QUEUE_PACK_STR = '!HHIH2xI' +NX_ACTION_SET_QUEUE_SIZE = 16 +assert calcsize(NX_ACTION_SET_QUEUE_PACK_STR) == NX_ACTION_SET_QUEUE_SIZE + +NX_ACTION_POP_QUEUE_PACK_STR = '!HHIH6x' +NX_ACTION_POP_QUEUE_SIZE = 16 +assert calcsize(NX_ACTION_POP_QUEUE_PACK_STR) == NX_ACTION_POP_QUEUE_SIZE + +NX_ACTION_REG_MOVE_PACK_STR = '!HHIHHHHII' +NX_ACTION_REG_MOVE_SIZE = 24 +assert calcsize(NX_ACTION_REG_MOVE_PACK_STR) == NX_ACTION_REG_MOVE_SIZE + +NX_ACTION_REG_LOAD_PACK_STR = '!HHIHHIQ' +NX_ACTION_REG_LOAD_SIZE = 24 +assert calcsize(NX_ACTION_REG_LOAD_PACK_STR) == NX_ACTION_REG_LOAD_SIZE + +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_NOTE_PACK_STR = '!HHIH6B' +NX_ACTION_NOTE_SIZE = 16 +assert calcsize(NX_ACTION_NOTE_PACK_STR) == NX_ACTION_NOTE_SIZE + +NX_ACTION_BUNDLE_PACK_STR = '!HHIHHHHIHHI4x' +NX_ACTION_BUNDLE_SIZE = 32 +assert calcsize(NX_ACTION_BUNDLE_PACK_STR) == NX_ACTION_BUNDLE_SIZE + +NX_ACTION_AUTOPATH_PACK_STR = '!HHIHHII4x' +NX_ACTION_AUTOPATH_SIZE = 24 +assert calcsize(NX_ACTION_AUTOPATH_PACK_STR) == NX_ACTION_AUTOPATH_SIZE + +NX_ACTION_OUTPUT_REG_PACK_STR = '!HHIHHIH6x' +NX_ACTION_OUTPUT_REG_SIZE = 24 +assert calcsize(NX_ACTION_OUTPUT_REG_PACK_STR) == NX_ACTION_OUTPUT_REG_SIZE + +NX_ACTION_LEARN_PACK_STR = '!HHIHHHHQHBxHH' +NX_ACTION_LEARN_SIZE = 32 +assert calcsize(NX_ACTION_LEARN_PACK_STR) == NX_ACTION_LEARN_SIZE + +NX_ACTION_CONTROLLER_PACK_STR = '!HHIHHHBB' +NX_ACTION_CONTROLLER_SIZE = 16 +assert calcsize(NX_ACTION_CONTROLLER_PACK_STR) == NX_ACTION_CONTROLLER_SIZE + +NX_ACTION_FIN_TIMEOUT_PACK_STR = '!HHIHHH2x' +NX_ACTION_FIN_TIMEOUT_SIZE = 16 +assert calcsize(NX_ACTION_FIN_TIMEOUT_PACK_STR) == NX_ACTION_FIN_TIMEOUT_SIZE + +NX_ACTION_HEADER_PACK_STR = '!HHIH6x' +NX_ACTION_HEADER_SIZE = 16 +assert calcsize(NX_ACTION_HEADER_PACK_STR) == NX_ACTION_HEADER_SIZE + +# Messages +NXT_ROLE_REQUEST = 10 +NXT_ROLE_REPLY = 11 +NXT_SET_FLOW_FORMAT = 12 +NXT_FLOW_MOD = 13 +NXT_FLOW_REMOVED = 14 +NXT_FLOW_MOD_TABLE_ID = 15 +NXT_SET_PACKET_IN_FORMAT = 16 +NXT_PACKET_IN = 17 +NXT_FLOW_AGE = 18 +NXT_SET_ASYNC_CONFIG = 19 +NXT_SET_CONTROLLER_ID = 20 + +# enum nx_role +NX_ROLE_OTHER = 0 +NX_ROLE_MASTER = 1 +NX_ROLE_SLAVE = 2 + +# enum nx_flow_format +NXFF_OPENFLOW10 = 0 +NXFF_NXM = 2 + +# enum nx_packet_in_format +NXPIF_OPENFLOW10 = 0 +NXPIF_NXM = 1 + +# enum nx_stats_types +NXST_FLOW = 0 +NXST_AGGREGATE = 1 +NXST_FLOW_MONITOR = 2 + +NICIRA_HEADER_PACK_STR = '!II' +NICIRA_HEADER_SIZE = 16 +assert (calcsize(NICIRA_HEADER_PACK_STR) + + OFP_HEADER_SIZE == NICIRA_HEADER_SIZE) + +NX_ROLE_PACK_STR = '!I' +NX_ROLE_SIZE = 20 +assert (calcsize(NX_ROLE_PACK_STR) + + NICIRA_HEADER_SIZE == NX_ROLE_SIZE) + +NX_FLOW_MOD_PACK_STR = '!Q4HI3H6x' +NX_FLOW_MOD_SIZE = 48 +assert (calcsize(NX_FLOW_MOD_PACK_STR) + + NICIRA_HEADER_SIZE == NX_FLOW_MOD_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) + +NX_FLOW_REMOVED_PACK_STR = '!QHBxIIHHQQ' +NX_FLOW_REMOVED_SIZE = 56 +assert (calcsize(NX_FLOW_REMOVED_PACK_STR) + + NICIRA_HEADER_SIZE == NX_FLOW_REMOVED_SIZE) + +NX_FLOW_MOD_TABLE_ID_PACK_STR = '!B7x' +NX_FLOW_MOD_TABLE_ID_SIZE = 24 +assert (calcsize(NX_FLOW_MOD_TABLE_ID_PACK_STR) + + NICIRA_HEADER_SIZE == NX_FLOW_MOD_TABLE_ID_SIZE) + +NX_SET_PACKET_IN_FORMAT_PACK_STR = '!I' +NX_SET_PACKET_IN_FORMAT_SIZE = 20 +assert (calcsize(NX_SET_PACKET_IN_FORMAT_PACK_STR) + + NICIRA_HEADER_SIZE == NX_SET_PACKET_IN_FORMAT_SIZE) + +NX_PACKET_IN_PACK_STR = '!IHBBQH6x' +NX_PACKET_IN_SIZE = 40 +assert (calcsize(NX_PACKET_IN_PACK_STR) + + NICIRA_HEADER_SIZE == NX_PACKET_IN_SIZE) + +NX_ASYNC_CONFIG_PACK_STR = '!IIIIII' +NX_ASYNC_CONFIG_SIZE = 40 +assert (calcsize(NX_ASYNC_CONFIG_PACK_STR) + + NICIRA_HEADER_SIZE == NX_ASYNC_CONFIG_SIZE) + +NX_CONTROLLER_ID_PACK_STR = '!6xH' +NX_CONTROLLER_ID_SIZE = 24 +assert (calcsize(NX_CONTROLLER_ID_PACK_STR) + + NICIRA_HEADER_SIZE == NX_CONTROLLER_ID_SIZE) + +NX_STATS_MSG_PACK_STR = '!I4x' +NX_STATS_MSG0_SIZE = 8 +assert calcsize(NX_STATS_MSG_PACK_STR) == NX_STATS_MSG0_SIZE +NX_STATS_MSG_SIZE = 24 +_OFP_VENDOR_STATS_MSG_SIZE = 16 +assert (calcsize(NX_STATS_MSG_PACK_STR) + _OFP_VENDOR_STATS_MSG_SIZE == + NX_STATS_MSG_SIZE) + +NX_FLOW_STATS_REQUEST_PACK_STR = '!2HB3x' +NX_FLOW_STATS_REQUEST_SIZE = 8 +assert (calcsize(NX_FLOW_STATS_REQUEST_PACK_STR) == + NX_FLOW_STATS_REQUEST_SIZE) + +NX_FLOW_STATS_PACK_STR = '!HBxIIHHHHHHQQQ' +NX_FLOW_STATS_SIZE = 48 +assert calcsize(NX_FLOW_STATS_PACK_STR) == NX_FLOW_STATS_SIZE + +NX_AGGREGATE_STATS_REQUEST_PACK_STR = '!2HB3x' +NX_AGGREGATE_STATS_REQUEST_SIZE = 8 +assert (calcsize(NX_AGGREGATE_STATS_REQUEST_PACK_STR) == + NX_AGGREGATE_STATS_REQUEST_SIZE) + +NX_AGGREGATE_STATS_REPLY_PACK_STR = '!QQI4x' +NX_AGGREGATE_STATS_REPLY_SIZE = 24 +assert (calcsize(NX_AGGREGATE_STATS_REPLY_PACK_STR) == + NX_AGGREGATE_STATS_REPLY_SIZE) + +# 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 + +# enum nx_bd_algorithm +NX_BD_ALG_ACTIVE_BACKUP = 0 +NX_BD_ALG_HRW = 1 + +# nx_learn constants +NX_LEARN_N_BITS_MASK = 0x3ff +NX_LEARN_SRC_FIELD = 0 << 13 # Copy from field. +NX_LEARN_SRC_IMMEDIATE = 1 << 13 # Copy from immediate value. +NX_LEARN_SRC_MASK = 1 << 13 +NX_LEARN_DST_MATCH = 0 << 11 # Add match criterion. +NX_LEARN_DST_LOAD = 1 << 11 # Add NXAST_REG_LOAD action +NX_LEARN_DST_OUTPUT = 2 << 11 # Add OFPAT_OUTPUT action. +NX_LEARN_DST_RESERVED = 3 << 11 # Not yet defined. +NX_LEARN_DST_MASK = 3 << 11 diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py index 3e8078ef..eb5324de 100644 --- a/ryu/ofproto/ofproto_v1_0.py +++ b/ryu/ofproto/ofproto_v1_0.py @@ -242,92 +242,6 @@ OFP_ACTION_PACK_STR = '!H' # OFP_ACTION_SIZE = 8 # assert calcsize(OFP_ACTION_PACK_STR) == OFP_ACTION_SIZE -# enum nx_action_subtype -NXAST_RESUBMIT = 1 -NXAST_SET_TUNNEL = 2 -NXAST_DROP_SPOOFED_ARP__OBSOLETE = 3 -NXAST_SET_QUEUE = 4 -NXAST_POP_QUEUE = 5 -NXAST_REG_MOVE = 6 -NXAST_REG_LOAD = 7 -NXAST_NOTE = 8 -NXAST_SET_TUNNEL64 = 9 -NXAST_MULTIPATH = 10 -NXAST_AUTOPATH = 11 -NXAST_BUNDLE = 12 -NXAST_BUNDLE_LOAD = 13 -NXAST_RESUBMIT_TABLE = 14 -NXAST_OUTPUT_REG = 15 -NXAST_LEARN = 16 -NXAST_EXIT = 17 -NXAST_DEC_TTL = 18 -NXAST_FIN_TIMEOUT = 19 -NXAST_CONTROLLER = 20 - -NX_ACTION_RESUBMIT_PACK_STR = '!HHIHHB3x' -NX_ACTION_RESUBMIT_SIZE = 16 -assert calcsize(NX_ACTION_RESUBMIT_PACK_STR) == NX_ACTION_RESUBMIT_SIZE - -NX_ACTION_SET_TUNNEL_PACK_STR = '!HHIH2xI' -NX_ACTION_SET_TUNNEL_SIZE = 16 -assert calcsize(NX_ACTION_SET_TUNNEL_PACK_STR) == NX_ACTION_SET_TUNNEL_SIZE - -NX_ACTION_SET_QUEUE_PACK_STR = '!HHIH2xI' -NX_ACTION_SET_QUEUE_SIZE = 16 -assert calcsize(NX_ACTION_SET_QUEUE_PACK_STR) == NX_ACTION_SET_QUEUE_SIZE - -NX_ACTION_POP_QUEUE_PACK_STR = '!HHIH6x' -NX_ACTION_POP_QUEUE_SIZE = 16 -assert calcsize(NX_ACTION_POP_QUEUE_PACK_STR) == NX_ACTION_POP_QUEUE_SIZE - -NX_ACTION_REG_MOVE_PACK_STR = '!HHIHHHHII' -NX_ACTION_REG_MOVE_SIZE = 24 -assert calcsize(NX_ACTION_REG_MOVE_PACK_STR) == NX_ACTION_REG_MOVE_SIZE - -NX_ACTION_REG_LOAD_PACK_STR = '!HHIHHIQ' -NX_ACTION_REG_LOAD_SIZE = 24 -assert calcsize(NX_ACTION_REG_LOAD_PACK_STR) == NX_ACTION_REG_LOAD_SIZE - -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_NOTE_PACK_STR = '!HHIH6B' -NX_ACTION_NOTE_SIZE = 16 -assert calcsize(NX_ACTION_NOTE_PACK_STR) == NX_ACTION_NOTE_SIZE - -NX_ACTION_BUNDLE_PACK_STR = '!HHIHHHHIHHI4x' -NX_ACTION_BUNDLE_SIZE = 32 -assert calcsize(NX_ACTION_BUNDLE_PACK_STR) == NX_ACTION_BUNDLE_SIZE - -NX_ACTION_AUTOPATH_PACK_STR = '!HHIHHII4x' -NX_ACTION_AUTOPATH_SIZE = 24 -assert calcsize(NX_ACTION_AUTOPATH_PACK_STR) == NX_ACTION_AUTOPATH_SIZE - -NX_ACTION_OUTPUT_REG_PACK_STR = '!HHIHHIH6x' -NX_ACTION_OUTPUT_REG_SIZE = 24 -assert calcsize(NX_ACTION_OUTPUT_REG_PACK_STR) == NX_ACTION_OUTPUT_REG_SIZE - -NX_ACTION_LEARN_PACK_STR = '!HHIHHHHQHBxHH' -NX_ACTION_LEARN_SIZE = 32 -assert calcsize(NX_ACTION_LEARN_PACK_STR) == NX_ACTION_LEARN_SIZE - -NX_ACTION_CONTROLLER_PACK_STR = '!HHIHHHBB' -NX_ACTION_CONTROLLER_SIZE = 16 -assert calcsize(NX_ACTION_CONTROLLER_PACK_STR) == NX_ACTION_CONTROLLER_SIZE - -NX_ACTION_FIN_TIMEOUT_PACK_STR = '!HHIHHH2x' -NX_ACTION_FIN_TIMEOUT_SIZE = 16 -assert calcsize(NX_ACTION_FIN_TIMEOUT_PACK_STR) == NX_ACTION_FIN_TIMEOUT_SIZE - -NX_ACTION_HEADER_PACK_STR = '!HHIH6x' -NX_ACTION_HEADER_SIZE = 16 -assert calcsize(NX_ACTION_HEADER_PACK_STR) == NX_ACTION_HEADER_SIZE - OFP_PACKET_OUT_PACK_STR = '!IHH' OFP_PACKET_OUT_SIZE = 16 assert (calcsize(OFP_PACKET_OUT_PACK_STR) + OFP_HEADER_SIZE == @@ -583,113 +497,6 @@ assert (calcsize(OFP_QUEUE_PROP_MIN_RATE_PACK_STR) + NX_VENDOR_ID = 0x00002320 -# enum nicira_type (abridged) -NXT_ROLE_REQUEST = 10 -NXT_ROLE_REPLY = 11 -NXT_SET_FLOW_FORMAT = 12 -NXT_FLOW_MOD = 13 -NXT_FLOW_REMOVED = 14 -NXT_FLOW_MOD_TABLE_ID = 15 -NXT_SET_PACKET_IN_FORMAT = 16 -NXT_PACKET_IN = 17 -NXT_FLOW_AGE = 18 -NXT_SET_ASYNC_CONFIG = 19 -NXT_SET_CONTROLLER_ID = 20 - -# enum nx_role -NX_ROLE_OTHER = 0 -NX_ROLE_MASTER = 1 -NX_ROLE_SLAVE = 2 - -# enum nx_flow_format -NXFF_OPENFLOW10 = 0 -NXFF_NXM = 2 - -# enum nx_packet_in_format -NXPIF_OPENFLOW10 = 0 -NXPIF_NXM = 1 - -# enum nx_stats_types -NXST_FLOW = 0 -NXST_AGGREGATE = 1 -NXST_FLOW_MONITOR = 2 - -NICIRA_HEADER_PACK_STR = '!II' -NICIRA_HEADER_SIZE = 16 -assert (calcsize(NICIRA_HEADER_PACK_STR) + - OFP_HEADER_SIZE == NICIRA_HEADER_SIZE) - -NX_ROLE_PACK_STR = '!I' -NX_ROLE_SIZE = 20 -assert (calcsize(NX_ROLE_PACK_STR) + - NICIRA_HEADER_SIZE == NX_ROLE_SIZE) - -NX_FLOW_MOD_PACK_STR = '!Q4HI3H6x' -NX_FLOW_MOD_SIZE = 48 -assert (calcsize(NX_FLOW_MOD_PACK_STR) + - NICIRA_HEADER_SIZE == NX_FLOW_MOD_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) - -NX_FLOW_REMOVED_PACK_STR = '!QHBxIIHHQQ' -NX_FLOW_REMOVED_SIZE = 56 -assert (calcsize(NX_FLOW_REMOVED_PACK_STR) + - NICIRA_HEADER_SIZE == NX_FLOW_REMOVED_SIZE) - -NX_FLOW_MOD_TABLE_ID_PACK_STR = '!B7x' -NX_FLOW_MOD_TABLE_ID_SIZE = 24 -assert (calcsize(NX_FLOW_MOD_TABLE_ID_PACK_STR) + - NICIRA_HEADER_SIZE == NX_FLOW_MOD_TABLE_ID_SIZE) - -NX_SET_PACKET_IN_FORMAT_PACK_STR = '!I' -NX_SET_PACKET_IN_FORMAT_SIZE = 20 -assert (calcsize(NX_SET_PACKET_IN_FORMAT_PACK_STR) + - NICIRA_HEADER_SIZE == NX_SET_PACKET_IN_FORMAT_SIZE) - -NX_PACKET_IN_PACK_STR = '!IHBBQH6x' -NX_PACKET_IN_SIZE = 40 -assert (calcsize(NX_PACKET_IN_PACK_STR) + - NICIRA_HEADER_SIZE == NX_PACKET_IN_SIZE) - -NX_ASYNC_CONFIG_PACK_STR = '!IIIIII' -NX_ASYNC_CONFIG_SIZE = 40 -assert (calcsize(NX_ASYNC_CONFIG_PACK_STR) + - NICIRA_HEADER_SIZE == NX_ASYNC_CONFIG_SIZE) - -NX_CONTROLLER_ID_PACK_STR = '!6xH' -NX_CONTROLLER_ID_SIZE = 24 -assert (calcsize(NX_CONTROLLER_ID_PACK_STR) + - NICIRA_HEADER_SIZE == NX_CONTROLLER_ID_SIZE) - -NX_STATS_MSG_PACK_STR = '!I4x' -NX_STATS_MSG0_SIZE = 8 -assert calcsize(NX_STATS_MSG_PACK_STR) == NX_STATS_MSG0_SIZE -NX_STATS_MSG_SIZE = 24 -assert (calcsize(NX_STATS_MSG_PACK_STR) + OFP_VENDOR_STATS_MSG_SIZE == - NX_STATS_MSG_SIZE) - -NX_FLOW_STATS_REQUEST_PACK_STR = '!2HB3x' -NX_FLOW_STATS_REQUEST_SIZE = 8 -assert (calcsize(NX_FLOW_STATS_REQUEST_PACK_STR) == - NX_FLOW_STATS_REQUEST_SIZE) - -NX_FLOW_STATS_PACK_STR = '!HBxIIHHHHHHQQQ' -NX_FLOW_STATS_SIZE = 48 -assert calcsize(NX_FLOW_STATS_PACK_STR) == NX_FLOW_STATS_SIZE - -NX_AGGREGATE_STATS_REQUEST_PACK_STR = '!2HB3x' -NX_AGGREGATE_STATS_REQUEST_SIZE = 8 -assert (calcsize(NX_AGGREGATE_STATS_REQUEST_PACK_STR) == - NX_AGGREGATE_STATS_REQUEST_SIZE) - -NX_AGGREGATE_STATS_REPLY_PACK_STR = '!QQI4x' -NX_AGGREGATE_STATS_REPLY_SIZE = 24 -assert (calcsize(NX_AGGREGATE_STATS_REPLY_PACK_STR) == - NX_AGGREGATE_STATS_REPLY_SIZE) - def nxm_header__(vendor, field, hasmask, length): return (vendor << 16) | (field << 9) | (hasmask << 8) | length @@ -787,27 +594,4 @@ def nxm_nx_reg_w(idx): 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 - -# enum nx_bd_algorithm -NX_BD_ALG_ACTIVE_BACKUP = 0 -NX_BD_ALG_HRW = 1 - -# nx_learn constants -NX_LEARN_N_BITS_MASK = 0x3ff -NX_LEARN_SRC_FIELD = 0 << 13 # Copy from field. -NX_LEARN_SRC_IMMEDIATE = 1 << 13 # Copy from immediate value. -NX_LEARN_SRC_MASK = 1 << 13 -NX_LEARN_DST_MATCH = 0 << 11 # Add match criterion. -NX_LEARN_DST_LOAD = 1 << 11 # Add NXAST_REG_LOAD action -NX_LEARN_DST_OUTPUT = 2 << 11 # Add OFPAT_OUTPUT action. -NX_LEARN_DST_RESERVED = 3 << 11 # Not yet defined. -NX_LEARN_DST_MASK = 3 << 11 +from nicira_ext import * # For API compat