SAI Metadata
Loading...
Searching...
No Matches
saiipsec.h File Reference

This module defines SAI IPsec interface. More...

#include <saitypes.h>

Go to the source code of this file.

Classes

struct  _sai_ipsec_sa_status_notification_t
 IPsec SA status for notification. More...
 
struct  _sai_ipsec_api_t
 IPsec methods table retrieved with sai_api_query() More...
 

Typedefs

typedef enum _sai_ipsec_direction_t sai_ipsec_direction_t
 IPsec direction types For PHY ASIC Egress is system to line direction and ingress is the opposite.
 
typedef enum _sai_ipsec_cipher_t sai_ipsec_cipher_t
 IPsec cipher suite types.
 
typedef enum _sai_ipsec_sa_octet_count_status_t sai_ipsec_sa_octet_count_status_t
 IPsec SA sequence number status type.
 
typedef struct _sai_ipsec_sa_status_notification_t sai_ipsec_sa_status_notification_t
 IPsec SA status for notification.
 
typedef enum _sai_ipsec_attr_t sai_ipsec_attr_t
 Attribute Id for sai_ipsec.
 
typedef enum _sai_ipsec_port_attr_t sai_ipsec_port_attr_t
 Attribute Id for sai_ipsec_port.
 
typedef enum _sai_ipsec_port_stat_t sai_ipsec_port_stat_t
 IPsec flow counter IDs in sai_get_ipsec_sa_stats() call.
 
typedef enum _sai_ipsec_sa_attr_t sai_ipsec_sa_attr_t
 Attribute Id for sai_ipsec_sa.
 
typedef enum _sai_ipsec_sa_stat_t sai_ipsec_sa_stat_t
 IPsec flow counter IDs in sai_get_ipsec_sa_stats() call.
 
typedef sai_status_t(* sai_create_ipsec_fn) (_Out_ sai_object_id_t *ipsec_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create a IPsec object.
 
typedef sai_status_t(* sai_remove_ipsec_fn) (_In_ sai_object_id_t ipsec_id)
 Delete the IPsec object.
 
typedef sai_status_t(* sai_set_ipsec_attribute_fn) (_In_ sai_object_id_t ipsec_id, _In_ const sai_attribute_t *attr)
 Set IPsec attribute.
 
typedef sai_status_t(* sai_get_ipsec_attribute_fn) (_In_ sai_object_id_t ipsec_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get IPsec attribute.
 
typedef sai_status_t(* sai_create_ipsec_port_fn) (_Out_ sai_object_id_t *ipsec_port_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create a IPsec port.
 
typedef sai_status_t(* sai_remove_ipsec_port_fn) (_In_ sai_object_id_t ipsec_port_id)
 Delete a IPsec port.
 
typedef sai_status_t(* sai_set_ipsec_port_attribute_fn) (_In_ sai_object_id_t ipsec_port_id, _In_ const sai_attribute_t *attr)
 Set IPsec port attribute.
 
typedef sai_status_t(* sai_get_ipsec_port_attribute_fn) (_In_ sai_object_id_t ipsec_port_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get IPsec port attribute.
 
typedef sai_status_t(* sai_get_ipsec_port_stats_fn) (_In_ sai_object_id_t ipsec_port_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids, _Out_ uint64_t *counters)
 Get IPsec port counters.
 
typedef sai_status_t(* sai_get_ipsec_port_stats_ext_fn) (_In_ sai_object_id_t ipsec_port_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids, _In_ sai_stats_mode_t mode, _Out_ uint64_t *counters)
 Get IPsec port counters extended.
 
typedef sai_status_t(* sai_clear_ipsec_port_stats_fn) (_In_ sai_object_id_t ipsec_port_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids)
 Clear IPsec port counters.
 
typedef sai_status_t(* sai_create_ipsec_sa_fn) (_Out_ sai_object_id_t *ipsec_sa_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create a IPsec Security Association.
 
typedef sai_status_t(* sai_remove_ipsec_sa_fn) (_In_ sai_object_id_t ipsec_sa_id)
 Delete a IPsec Security Association.
 
typedef sai_status_t(* sai_set_ipsec_sa_attribute_fn) (_In_ sai_object_id_t ipsec_sa_id, _In_ const sai_attribute_t *attr)
 Set IPsec Security Association attribute.
 
typedef sai_status_t(* sai_get_ipsec_sa_attribute_fn) (_In_ sai_object_id_t ipsec_sa_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get IPsec Security Association attribute.
 
typedef sai_status_t(* sai_get_ipsec_sa_stats_fn) (_In_ sai_object_id_t ipsec_sa_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids, _Out_ uint64_t *counters)
 Get IPsec Security Association counters.
 
typedef sai_status_t(* sai_get_ipsec_sa_stats_ext_fn) (_In_ sai_object_id_t ipsec_sa_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids, _In_ sai_stats_mode_t mode, _Out_ uint64_t *counters)
 Get IPsec Security Association counters extended.
 
typedef sai_status_t(* sai_clear_ipsec_sa_stats_fn) (_In_ sai_object_id_t ipsec_sa_id, _In_ uint32_t number_of_counters, _In_ const sai_stat_id_t *counter_ids)
 Clear IPsec Security Association counters.
 
typedef void(* sai_ipsec_sa_status_change_notification_fn) (_In_ uint32_t count, _In_ const sai_ipsec_sa_status_notification_t *data)
 IPsec SA status change notification.
 
typedef struct _sai_ipsec_api_t sai_ipsec_api_t
 IPsec methods table retrieved with sai_api_query()
 

Enumerations

enum  _sai_ipsec_direction_t { SAI_IPSEC_DIRECTION_EGRESS , SAI_IPSEC_DIRECTION_INGRESS }
 IPsec direction types For PHY ASIC Egress is system to line direction and ingress is the opposite. More...
 
enum  _sai_ipsec_cipher_t { SAI_IPSEC_CIPHER_AES128_GCM16 , SAI_IPSEC_CIPHER_AES256_GCM16 , SAI_IPSEC_CIPHER_AES128_GMAC , SAI_IPSEC_CIPHER_AES256_GMAC }
 IPsec cipher suite types. More...
 
enum  _sai_ipsec_sa_octet_count_status_t { SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK , SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK , SAI_IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK }
 IPsec SA sequence number status type. More...
 
enum  _sai_ipsec_attr_t {
  SAI_IPSEC_ATTR_START , SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED = SAI_IPSEC_ATTR_START , SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED , SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED ,
  SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED , SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED , SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED , SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED ,
  SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST , SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU , SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED , SAI_IPSEC_ATTR_WARM_BOOT_ENABLE ,
  SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE , SAI_IPSEC_ATTR_CTAG_TPID , SAI_IPSEC_ATTR_STAG_TPID , SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED ,
  SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK , SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK , SAI_IPSEC_ATTR_STATS_MODE , SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA ,
  SAI_IPSEC_ATTR_SA_LIST , SAI_IPSEC_ATTR_END , SAI_IPSEC_ATTR_CUSTOM_RANGE_START = 0x10000000 , SAI_IPSEC_ATTR_CUSTOM_RANGE_END
}
 Attribute Id for sai_ipsec. More...
 
enum  _sai_ipsec_port_attr_t {
  SAI_IPSEC_PORT_ATTR_START , SAI_IPSEC_PORT_ATTR_PORT_ID = SAI_IPSEC_PORT_ATTR_START , SAI_IPSEC_PORT_ATTR_CTAG_ENABLE , SAI_IPSEC_PORT_ATTR_STAG_ENABLE ,
  SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID , SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE , SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE , SAI_IPSEC_PORT_ATTR_END ,
  SAI_IPSEC_PORT_ATTR_CUSTOM_RANGE_START = 0x10000000 , SAI_IPSEC_PORT_ATTR_CUSTOM_RANGE_END
}
 Attribute Id for sai_ipsec_port. More...
 
enum  _sai_ipsec_port_stat_t {
  SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS , SAI_IPSEC_PORT_STAT_TX_IPSEC_PKTS , SAI_IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS , SAI_IPSEC_PORT_STAT_RX_ERROR_PKTS ,
  SAI_IPSEC_PORT_STAT_RX_IPSEC_PKTS , SAI_IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS
}
 IPsec flow counter IDs in sai_get_ipsec_sa_stats() call. More...
 
enum  _sai_ipsec_sa_attr_t {
  SAI_IPSEC_SA_ATTR_START , SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION = SAI_IPSEC_SA_ATTR_START , SAI_IPSEC_SA_ATTR_IPSEC_ID , SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS ,
  SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX , SAI_IPSEC_SA_ATTR_SA_INDEX , SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST , SAI_IPSEC_SA_ATTR_IPSEC_SPI ,
  SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE , SAI_IPSEC_SA_ATTR_IPSEC_CIPHER , SAI_IPSEC_SA_ATTR_ENCRYPT_KEY , SAI_IPSEC_SA_ATTR_SALT ,
  SAI_IPSEC_SA_ATTR_AUTH_KEY , SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE , SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW , SAI_IPSEC_SA_ATTR_TERM_DST_IP ,
  SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE , SAI_IPSEC_SA_ATTR_TERM_VLAN_ID , SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE , SAI_IPSEC_SA_ATTR_TERM_SRC_IP ,
  SAI_IPSEC_SA_ATTR_EGRESS_ESN , SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN , SAI_IPSEC_SA_ATTR_END , SAI_IPSEC_SA_ATTR_CUSTOM_RANGE_START = 0x10000000 ,
  SAI_IPSEC_SA_ATTR_CUSTOM_RANGE_END
}
 Attribute Id for sai_ipsec_sa. More...
 
enum  _sai_ipsec_sa_stat_t {
  SAI_IPSEC_SA_STAT_PROTECTED_OCTETS , SAI_IPSEC_SA_STAT_PROTECTED_PKTS , SAI_IPSEC_SA_STAT_GOOD_PKTS , SAI_IPSEC_SA_STAT_BAD_HEADER_PKTS_IN ,
  SAI_IPSEC_SA_STAT_REPLAYED_PKTS_IN , SAI_IPSEC_SA_STAT_LATE_PKTS_IN , SAI_IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN , SAI_IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN ,
  SAI_IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN , SAI_IPSEC_SA_STAT_OTHER_DROPPED_PKTS
}
 IPsec flow counter IDs in sai_get_ipsec_sa_stats() call. More...
 

Detailed Description

This module defines SAI IPsec interface.

Copyright (c) 2014 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.

Definition in file saiipsec.h.