SAI Metadata
Loading...
Searching...
No Matches
SAI - Mirror specific public APIs and data structures

Classes

struct  _sai_mirror_api_t
 MIRROR method table retrieved with sai_api_query() More...
 

Typedefs

typedef enum _sai_mirror_session_type_t sai_mirror_session_type_t
 SAI type of mirroring.
 
typedef enum _sai_erspan_encapsulation_type_t sai_erspan_encapsulation_type_t
 SAI type of encapsulation for RSPAN and ERSPAN.
 
typedef enum _sai_mirror_session_congestion_mode_t sai_mirror_session_congestion_mode_t
 Mirror session congestion mode.
 
typedef enum _sai_mirror_session_attr_t sai_mirror_session_attr_t
 SAI attributes for mirror session.
 
typedef sai_status_t(* sai_create_mirror_session_fn) (_Out_ sai_object_id_t *mirror_session_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create mirror session.
 
typedef sai_status_t(* sai_remove_mirror_session_fn) (_In_ sai_object_id_t mirror_session_id)
 Remove mirror session.
 
typedef sai_status_t(* sai_set_mirror_session_attribute_fn) (_In_ sai_object_id_t mirror_session_id, _In_ const sai_attribute_t *attr)
 Set mirror session attributes.
 
typedef sai_status_t(* sai_get_mirror_session_attribute_fn) (_In_ sai_object_id_t mirror_session_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get mirror session attributes.
 
typedef struct _sai_mirror_api_t sai_mirror_api_t
 MIRROR method table retrieved with sai_api_query()
 

Enumerations

enum  _sai_mirror_session_type_t { SAI_MIRROR_SESSION_TYPE_LOCAL , SAI_MIRROR_SESSION_TYPE_REMOTE , SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE , SAI_MIRROR_SESSION_TYPE_SFLOW }
 SAI type of mirroring. More...
 
enum  _sai_erspan_encapsulation_type_t { SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL }
 SAI type of encapsulation for RSPAN and ERSPAN. More...
 
enum  _sai_mirror_session_congestion_mode_t { SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT , SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED }
 Mirror session congestion mode. More...
 
enum  _sai_mirror_session_attr_t {
  SAI_MIRROR_SESSION_ATTR_START , SAI_MIRROR_SESSION_ATTR_TYPE = SAI_MIRROR_SESSION_ATTR_START , SAI_MIRROR_SESSION_ATTR_MONITOR_PORT , SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE ,
  SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE , SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE , SAI_MIRROR_SESSION_ATTR_TC , SAI_MIRROR_SESSION_ATTR_VLAN_TPID ,
  SAI_MIRROR_SESSION_ATTR_VLAN_ID , SAI_MIRROR_SESSION_ATTR_VLAN_PRI , SAI_MIRROR_SESSION_ATTR_VLAN_CFI , SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID ,
  SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE , SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION , SAI_MIRROR_SESSION_ATTR_TOS , SAI_MIRROR_SESSION_ATTR_TTL ,
  SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS , SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS , SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS , SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS ,
  SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE , SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID , SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST , SAI_MIRROR_SESSION_ATTR_POLICER ,
  SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT , SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT , SAI_MIRROR_SESSION_ATTR_COUNTER_ID , SAI_MIRROR_SESSION_ATTR_END ,
  SAI_MIRROR_SESSION_ATTR_CUSTOM_RANGE_START = 0x10000000 , SAI_MIRROR_SESSION_ATTR_CUSTOM_RANGE_END
}
 SAI attributes for mirror session. More...
 

Detailed Description

Typedef Documentation

◆ sai_create_mirror_session_fn

typedef sai_status_t(* sai_create_mirror_session_fn) (_Out_ sai_object_id_t *mirror_session_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)

Create mirror session.

Parameters
[out]mirror_session_idPort mirror session id
[in]switch_idSwitch id
[in]attr_countNumber of attributes
[in]attr_listValue of attributes
Returns
SAI_STATUS_SUCCESS if operation is successful otherwise a different error code is returned.

Definition at line 389 of file saimirror.h.

◆ sai_get_mirror_session_attribute_fn

typedef sai_status_t(* sai_get_mirror_session_attribute_fn) (_In_ sai_object_id_t mirror_session_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)

Get mirror session attributes.

Parameters
[in]mirror_session_idPort mirror session id
[in]attr_countNumber of attributes
[in,out]attr_listValue of attribute
Returns
SAI_STATUS_SUCCESS if operation is successful otherwise a different error code is returned.

Definition at line 429 of file saimirror.h.

◆ sai_remove_mirror_session_fn

typedef sai_status_t(* sai_remove_mirror_session_fn) (_In_ sai_object_id_t mirror_session_id)

Remove mirror session.

Parameters
[in]mirror_session_idPort mirror session id
Returns
SAI_STATUS_SUCCESS if operation is successful otherwise a different error code is returned.

Definition at line 403 of file saimirror.h.

◆ sai_set_mirror_session_attribute_fn

typedef sai_status_t(* sai_set_mirror_session_attribute_fn) (_In_ sai_object_id_t mirror_session_id, _In_ const sai_attribute_t *attr)

Set mirror session attributes.

Parameters
[in]mirror_session_idPort mirror session id
[in]attrValue of attribute
Returns
SAI_STATUS_SUCCESS if operation is successful otherwise a different error code is returned.

Definition at line 415 of file saimirror.h.

Enumeration Type Documentation

◆ _sai_erspan_encapsulation_type_t

SAI type of encapsulation for RSPAN and ERSPAN.

Enumerator
SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL 

L3 GRE Tunnel Encapsulation | L2 Ethernet header | IP header | GRE header | Original mirrored packet.

Definition at line 58 of file saimirror.h.

◆ _sai_mirror_session_attr_t

SAI attributes for mirror session.

Enumerator
SAI_MIRROR_SESSION_ATTR_START 

Start of attributes.

SAI_MIRROR_SESSION_ATTR_TYPE 

Mirror type SPAN/RSPAN/ERSPAN.

Value Type:
sai_mirror_session_type_t
Flags:
MANDATORY_ON_CREATE | CREATE_ONLY
SAI_MIRROR_SESSION_ATTR_MONITOR_PORT 

Destination/Analyzer/Monitor Port.

Value Type:
sai_object_id_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_PORT, SAI_OBJECT_TYPE_LAG, SAI_OBJECT_TYPE_SYSTEM_PORT
Condition:
SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID == false
SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE 

Truncate size. Truncate mirrored packets to this size to reduce SPAN traffic bandwidth.

Value 0 to no truncation

Value Type:
sai_uint16_t
Flags:
CREATE_AND_SET
IsVlan:
false
Default value:
0
SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE 

Mirror sample rate. Every 1/sample_rate the packets will be mirrored.

Value 0 to no sampling Value 1 to every packet sampling (normal mirror)

Value Type:
sai_uint32_t
Flags:
CREATE_AND_SET
Default value:
1
SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE 

Controls whether mirroring traffic can cause back pressure and packet drop of the original traffic.

Value Type:
sai_mirror_session_congestion_mode_t
Flags:
CREATE_AND_SET
Default value:
SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT
SAI_MIRROR_SESSION_ATTR_TC 

Class-of-Service (Traffic Class)

Value Type:
sai_uint8_t
Flags:
CREATE_AND_SET
Default value:
0
SAI_MIRROR_SESSION_ATTR_VLAN_TPID 

L2 header TPID.

Valid for RSPAN or ERSPAN with valid Vlan header.

Value Type:
sai_uint16_t
Flags:
CREATE_AND_SET
IsVlan:
false
Default value:
0x8100
Valid only when:
SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID == true or SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_REMOTE
SAI_MIRROR_SESSION_ATTR_VLAN_ID 

L2 header VLAN Id.

Valid for RSPAN or ERSPAN with valid Vlan header.

Value Type:
sai_uint16_t
Flags:
CREATE_AND_SET
IsVlan:
true
Default value:
0
Valid only when:
SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID == true or SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_REMOTE
SAI_MIRROR_SESSION_ATTR_VLAN_PRI 

L2 header packet priority (3 bits).

Valid for RSPAN or ERSPAN with valid Vlan header.

Value Type:
sai_uint8_t
Flags:
CREATE_AND_SET
Default value:
0
Valid only when:
SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID == true or SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_REMOTE
SAI_MIRROR_SESSION_ATTR_VLAN_CFI 

L2 header Vlan CFI (1 bit).

Valid for RSPAN or ERSPAN with valid Vlan header.

Value Type:
sai_uint8_t
Flags:
CREATE_AND_SET
Default value:
0
Valid only when:
SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID == true or SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_REMOTE
SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID 

Vlan header valid.

Value Type:
bool
Flags:
CREATE_AND_SET
Default value:
false
Valid only when:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE 

Encapsulation type.

Value Type:
sai_erspan_encapsulation_type_t
Flags:
MANDATORY_ON_CREATE | CREATE_ONLY
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION 

Tunnel IP header version.

Value Type:
sai_uint8_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_TOS 

Tunnel header TOS.

Value Type:
sai_uint8_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_TTL 

Tunnel header TTL.

Value Type:
sai_uint8_t
Flags:
CREATE_AND_SET
Default value:
255
SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS 

Tunnel source IP.

Value Type:
sai_ip_address_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS 

Tunnel destination IP.

Value Type:
sai_ip_address_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS 

L2 source MAC address.

Value Type:
sai_mac_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS 

L2 destination MAC address.

Value Type:
sai_mac_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE 

Valid for ERSPAN, GRE protocol Id.

Value Type:
sai_uint16_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
IsVlan:
false
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE
SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID 

Monitor port list is valid.

Value Type:
bool
Flags:
CREATE_ONLY
Default value:
false
SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST 

Destination/Analyzer/Monitor Port List.

Value Type:
sai_object_list_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_PORT, SAI_OBJECT_TYPE_LAG, SAI_OBJECT_TYPE_SYSTEM_PORT
Condition:
SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID == true
SAI_MIRROR_SESSION_ATTR_POLICER 

Mirror session policer object ID.

Value Type:
sai_object_id_t
Flags:
CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_POLICER
Allows NULL object ID
true
Default value:
SAI_NULL_OBJECT_ID
SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT 

UDP source port. UDP source port to encapsulate SFLOW packets.

Value Type:
sai_uint16_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
IsVlan:
false
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_SFLOW
SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT 

UDP destination port. UDP destination port to encapsulate SFLOW packets.

Value Type:
sai_uint16_t
Flags:
MANDATORY_ON_CREATE | CREATE_AND_SET
IsVlan:
false
Condition:
SAI_MIRROR_SESSION_ATTR_TYPE == SAI_MIRROR_SESSION_TYPE_SFLOW
SAI_MIRROR_SESSION_ATTR_COUNTER_ID 

Attach a counter.

SAI_COUNTER_STAT_PACKETS reflects the total number of packets mirrored.

SAI_COUNTER_STAT_BYTES reflects the total number of bytes mirrored, after truncation, including headers.

Value Type:
sai_object_id_t
Flags:
CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_COUNTER
Allows NULL object ID
true
Default value:
SAI_NULL_OBJECT_ID
SAI_MIRROR_SESSION_ATTR_END 

End of attributes.

SAI_MIRROR_SESSION_ATTR_CUSTOM_RANGE_START 

Custom range base value

SAI_MIRROR_SESSION_ATTR_CUSTOM_RANGE_END 

End of custom range base

Definition at line 83 of file saimirror.h.

◆ _sai_mirror_session_congestion_mode_t

Mirror session congestion mode.

Enumerator
SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT 

Mirroring traffic is independent from original traffic, original traffic not affected by congestion of mirroring traffic

SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED 

Mirroring traffic is correlated with original traffic, and can cause back pressure and discards of original traffic if there is congestion

Definition at line 70 of file saimirror.h.

◆ _sai_mirror_session_type_t

SAI type of mirroring.

Enumerator
SAI_MIRROR_SESSION_TYPE_LOCAL 

Local SPAN

SAI_MIRROR_SESSION_TYPE_REMOTE 

Remote SPAN

SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE 

Enhanced Remote SPAN

SAI_MIRROR_SESSION_TYPE_SFLOW 

SFLOW tunnel SPAN

Definition at line 39 of file saimirror.h.