experimental/saitypesextensions.h (132 lines of code) (raw):
/**
* Copyright (c) 2018 Microsoft Open Technologies, Inc.
*
* 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
*
* THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
* LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS
* FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT.
*
* See the Apache Version 2.0 License for specific language governing
* permissions and limitations under the License.
*
* Microsoft would like to thank the following companies for their review and
* assistance with these files: Intel Corporation, Mellanox Technologies Ltd,
* Dell Products, L.P., Facebook, Inc., Marvell International Ltd.
*
* @file saitypesextensions.h
*
* @brief This module defines type extensions of the Switch Abstraction Interface (SAI)
*/
#ifndef __SAITYPESEXTENSIONS_H_
#define __SAITYPESEXTENSIONS_H_
#include <saitypes.h>
/**
* @brief SAI object type extensions
*
* @flags free
*/
typedef enum _sai_object_type_extensions_t
{
SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START = SAI_OBJECT_TYPE_EXTENSIONS_RANGE_BASE,
SAI_OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY = SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START,
SAI_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY,
SAI_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY,
SAI_OBJECT_TYPE_DASH_ACL_GROUP,
SAI_OBJECT_TYPE_DASH_ACL_RULE,
SAI_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY,
SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY,
SAI_OBJECT_TYPE_ENI,
SAI_OBJECT_TYPE_INBOUND_ROUTING_ENTRY,
SAI_OBJECT_TYPE_METER_BUCKET_ENTRY,
SAI_OBJECT_TYPE_METER_POLICY,
SAI_OBJECT_TYPE_METER_RULE,
SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY,
SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY,
SAI_OBJECT_TYPE_VNET,
SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY,
SAI_OBJECT_TYPE_VIP_ENTRY,
SAI_OBJECT_TYPE_HA_SET,
SAI_OBJECT_TYPE_HA_SCOPE,
SAI_OBJECT_TYPE_DASH_TUNNEL,
SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP,
SAI_OBJECT_TYPE_FLOW_TABLE,
SAI_OBJECT_TYPE_FLOW_ENTRY,
SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER,
SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION,
SAI_OBJECT_TYPE_DASH_APPLIANCE,
/* Add new experimental object types above this line */
SAI_OBJECT_TYPE_EXTENSIONS_RANGE_END
} sai_object_type_extensions_t;
typedef enum _sai_dash_direction_t
{
SAI_DASH_DIRECTION_INVALID,
SAI_DASH_DIRECTION_OUTBOUND,
SAI_DASH_DIRECTION_INBOUND,
} sai_dash_direction_t;
typedef enum _sai_dash_encapsulation_t
{
SAI_DASH_ENCAPSULATION_INVALID,
SAI_DASH_ENCAPSULATION_VXLAN,
SAI_DASH_ENCAPSULATION_NVGRE,
} sai_dash_encapsulation_t;
typedef enum _sai_dash_tunnel_dscp_mode_t
{
SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL,
SAI_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL,
} sai_dash_tunnel_dscp_mode_t;
/**
* @brief Defines a list of enums for dash_routing_actions
*
* @flags strict
*/
typedef enum _sai_dash_routing_actions_t
{
SAI_DASH_ROUTING_ACTIONS_STATIC_ENCAP = 1,
SAI_DASH_ROUTING_ACTIONS_NAT = 2,
SAI_DASH_ROUTING_ACTIONS_NAT46 = 4,
SAI_DASH_ROUTING_ACTIONS_NAT64 = 8,
SAI_DASH_ROUTING_ACTIONS_NAT_PORT = 16,
} sai_dash_routing_actions_t;
typedef enum _sai_dash_ha_role_t
{
SAI_DASH_HA_ROLE_DEAD,
SAI_DASH_HA_ROLE_ACTIVE,
SAI_DASH_HA_ROLE_STANDBY,
SAI_DASH_HA_ROLE_STANDALONE,
SAI_DASH_HA_ROLE_SWITCHING_TO_ACTIVE,
} sai_dash_ha_role_t;
/**
* @brief Defines a list of enums for dash_flow_enabled_key
*
* @flags strict
*/
typedef enum _sai_dash_flow_enabled_key_t
{
SAI_DASH_FLOW_ENABLED_KEY_ENI_MAC = 1,
SAI_DASH_FLOW_ENABLED_KEY_VNI = 2,
SAI_DASH_FLOW_ENABLED_KEY_PROTOCOL = 4,
SAI_DASH_FLOW_ENABLED_KEY_SRC_IP = 8,
SAI_DASH_FLOW_ENABLED_KEY_DST_IP = 16,
SAI_DASH_FLOW_ENABLED_KEY_SRC_PORT = 32,
SAI_DASH_FLOW_ENABLED_KEY_DST_PORT = 64,
} sai_dash_flow_enabled_key_t;
/**
* @brief Defines a list of enums for dash_flow_action
*/
typedef enum _sai_dash_flow_action_t
{
SAI_DASH_FLOW_ACTION_NONE,
} sai_dash_flow_action_t;
/**
* @brief Defines a list of enums for dash_ha_state
*/
typedef enum _sai_dash_ha_state_t
{
SAI_DASH_HA_STATE_DEAD,
SAI_DASH_HA_STATE_CONNECTING,
SAI_DASH_HA_STATE_CONNECTED,
SAI_DASH_HA_STATE_INITIALIZING_TO_ACTIVE,
SAI_DASH_HA_STATE_INITIALIZING_TO_STANDBY,
SAI_DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION,
SAI_DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION,
SAI_DASH_HA_STATE_PENDING_STANDBY_ACTIVATION,
SAI_DASH_HA_STATE_STANDALONE,
SAI_DASH_HA_STATE_ACTIVE,
SAI_DASH_HA_STATE_STANDBY,
SAI_DASH_HA_STATE_DESTROYING,
SAI_DASH_HA_STATE_SWITCHING_TO_STANDALONE,
} sai_dash_ha_state_t;
/**
* @brief Defines a list of enums for dash_flow_entry_bulk_get_session_op_key
*/
typedef enum _sai_dash_flow_entry_bulk_get_session_op_key_t
{
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO,
} sai_dash_flow_entry_bulk_get_session_op_key_t;
/**
* @brief Defines a list of enums for dash_flow_entry_bulk_get_session_mode
*/
typedef enum _sai_dash_flow_entry_bulk_get_session_mode_t
{
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE,
} sai_dash_flow_entry_bulk_get_session_mode_t;
/**
* @brief Defines a list of enums for dash_flow_entry_bulk_get_session_filter_key
*/
typedef enum _sai_dash_flow_entry_bulk_get_session_filter_key_t
{
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT,
SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION,
} sai_dash_flow_entry_bulk_get_session_filter_key_t;
/**
* @brief Defines a list of enums for dash_eni_mac_override_type
*/
typedef enum _sai_dash_eni_mac_override_type_t
{
SAI_DASH_ENI_MAC_OVERRIDE_TYPE_NONE,
SAI_DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC,
SAI_DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC,
} sai_dash_eni_mac_override_type_t;
#endif /* __SAITYPESEXTENSIONS_H_ */