SAI Metadata
Loading...
Searching...
No Matches
SAI - Hash specific API definitions.

Classes

struct  _sai_hash_api_t
 Hash methods, retrieved via sai_api_query() More...
 

Typedefs

typedef enum _sai_native_hash_field_t sai_native_hash_field_t
 Attribute data for SAI native hash fields.
 
typedef enum _sai_fine_grained_hash_field_attr_t sai_fine_grained_hash_field_attr_t
 Fine-grained hash field attribute IDs.
 
typedef enum _sai_hash_attr_t sai_hash_attr_t
 Hash attribute IDs.
 
typedef sai_status_t(* sai_create_fine_grained_hash_field_fn) (_Out_ sai_object_id_t *fine_grained_hash_field_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create fine-grained hash field.
 
typedef sai_status_t(* sai_remove_fine_grained_hash_field_fn) (_In_ sai_object_id_t fine_grained_hash_field_id)
 Remove fine-grained hash field.
 
typedef sai_status_t(* sai_set_fine_grained_hash_field_attribute_fn) (_In_ sai_object_id_t fine_grained_hash_field_id, _In_ const sai_attribute_t *attr)
 Set fine-grained hash field attribute.
 
typedef sai_status_t(* sai_get_fine_grained_hash_field_attribute_fn) (_In_ sai_object_id_t fine_grained_hash_field_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get fine-grained hash field attribute value.
 
typedef sai_status_t(* sai_create_hash_fn) (_Out_ sai_object_id_t *hash_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)
 Create hash.
 
typedef sai_status_t(* sai_remove_hash_fn) (_In_ sai_object_id_t hash_id)
 Remove hash.
 
typedef sai_status_t(* sai_set_hash_attribute_fn) (_In_ sai_object_id_t hash_id, _In_ const sai_attribute_t *attr)
 Set hash attribute.
 
typedef sai_status_t(* sai_get_hash_attribute_fn) (_In_ sai_object_id_t hash_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)
 Get hash attribute value.
 
typedef struct _sai_hash_api_t sai_hash_api_t
 Hash methods, retrieved via sai_api_query()
 

Enumerations

enum  _sai_native_hash_field_t {
  SAI_NATIVE_HASH_FIELD_SRC_IP = 0x00000000 , SAI_NATIVE_HASH_FIELD_DST_IP = 0x00000001 , SAI_NATIVE_HASH_FIELD_INNER_SRC_IP = 0x00000002 , SAI_NATIVE_HASH_FIELD_INNER_DST_IP = 0x00000003 ,
  SAI_NATIVE_HASH_FIELD_SRC_IPV4 = 0x00000019 , SAI_NATIVE_HASH_FIELD_DST_IPV4 = 0x0000001a , SAI_NATIVE_HASH_FIELD_SRC_IPV6 = 0x0000001b , SAI_NATIVE_HASH_FIELD_DST_IPV6 = 0x0000001c ,
  SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4 = 0x0000001d , SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4 = 0x0000001e , SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6 = 0x0000001f , SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6 = 0x00000020 ,
  SAI_NATIVE_HASH_FIELD_VLAN_ID = 0x00000004 , SAI_NATIVE_HASH_FIELD_IP_PROTOCOL = 0x00000005 , SAI_NATIVE_HASH_FIELD_ETHERTYPE = 0x00000006 , SAI_NATIVE_HASH_FIELD_L4_SRC_PORT = 0x00000007 ,
  SAI_NATIVE_HASH_FIELD_L4_DST_PORT = 0x00000008 , SAI_NATIVE_HASH_FIELD_SRC_MAC = 0x00000009 , SAI_NATIVE_HASH_FIELD_DST_MAC = 0x0000000a , SAI_NATIVE_HASH_FIELD_IN_PORT = 0x0000000b ,
  SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL = 0x0000000c , SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE = 0x0000000d , SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT = 0x0000000e , SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT = 0x0000000f ,
  SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC = 0x00000010 , SAI_NATIVE_HASH_FIELD_INNER_DST_MAC = 0x00000011 , SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL = 0x00000012 , SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0 = 0x00000013 ,
  SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1 = 0x00000014 , SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2 = 0x00000015 , SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3 = 0x00000016 , SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4 = 0x00000017 ,
  SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL = 0x00000018 , SAI_NATIVE_HASH_FIELD_NONE = 0x00000021
}
 Attribute data for SAI native hash fields. More...
 
enum  _sai_fine_grained_hash_field_attr_t {
  SAI_FINE_GRAINED_HASH_FIELD_ATTR_START , SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD = SAI_FINE_GRAINED_HASH_FIELD_ATTR_START , SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK , SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK ,
  SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID , SAI_FINE_GRAINED_HASH_FIELD_ATTR_END , SAI_FINE_GRAINED_HASH_FIELD_ATTR_CUSTOM_RANGE_START = 0x10000000 , SAI_FINE_GRAINED_HASH_FIELD_ATTR_CUSTOM_RANGE_END
}
 Fine-grained hash field attribute IDs. More...
 
enum  _sai_hash_attr_t {
  SAI_HASH_ATTR_START , SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST = SAI_HASH_ATTR_START , SAI_HASH_ATTR_UDF_GROUP_LIST , SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST ,
  SAI_HASH_ATTR_END , SAI_HASH_ATTR_CUSTOM_RANGE_START = 0x10000000 , SAI_HASH_ATTR_CUSTOM_RANGE_END
}
 Hash attribute IDs. More...
 

Detailed Description

Typedef Documentation

◆ sai_create_fine_grained_hash_field_fn

typedef sai_status_t(* sai_create_fine_grained_hash_field_fn) (_Out_ sai_object_id_t *fine_grained_hash_field_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)

Create fine-grained hash field.

Parameters
[out]fine_grained_hash_field_idFine-grained hash field id
[in]switch_idSwitch object id
[in]attr_countNumber of attributes
[in]attr_listArray of attributes
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 302 of file saihash.h.

◆ sai_create_hash_fn

typedef sai_status_t(* sai_create_hash_fn) (_Out_ sai_object_id_t *hash_id, _In_ sai_object_id_t switch_id, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list)

Create hash.

Parameters
[out]hash_idHash id
[in]switch_idSwitch object id
[in]attr_countNumber of attributes
[in]attr_listArray of attributes
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 354 of file saihash.h.

◆ sai_get_fine_grained_hash_field_attribute_fn

typedef sai_status_t(* sai_get_fine_grained_hash_field_attribute_fn) (_In_ sai_object_id_t fine_grained_hash_field_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)

Get fine-grained hash field attribute value.

Parameters
[in]fine_grained_hash_field_idFine-grained hash field id
[in]attr_countNumber of attributes
[in,out]attr_listArray of attributes
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 339 of file saihash.h.

◆ sai_get_hash_attribute_fn

typedef sai_status_t(* sai_get_hash_attribute_fn) (_In_ sai_object_id_t hash_id, _In_ uint32_t attr_count, _Inout_ sai_attribute_t *attr_list)

Get hash attribute value.

Parameters
[in]hash_idHash id
[in]attr_countNumber of attributes
[in,out]attr_listArray of attributes
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 391 of file saihash.h.

◆ sai_remove_fine_grained_hash_field_fn

typedef sai_status_t(* sai_remove_fine_grained_hash_field_fn) (_In_ sai_object_id_t fine_grained_hash_field_id)

Remove fine-grained hash field.

Parameters
[in]fine_grained_hash_field_idFine-grained hash field id
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 315 of file saihash.h.

◆ sai_remove_hash_fn

typedef sai_status_t(* sai_remove_hash_fn) (_In_ sai_object_id_t hash_id)

Remove hash.

Parameters
[in]hash_idHash id
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 367 of file saihash.h.

◆ sai_set_fine_grained_hash_field_attribute_fn

typedef sai_status_t(* sai_set_fine_grained_hash_field_attribute_fn) (_In_ sai_object_id_t fine_grained_hash_field_id, _In_ const sai_attribute_t *attr)

Set fine-grained hash field attribute.

Parameters
[in]fine_grained_hash_field_idFine-grained hash field id
[in]attrAttribute
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 326 of file saihash.h.

◆ sai_set_hash_attribute_fn

typedef sai_status_t(* sai_set_hash_attribute_fn) (_In_ sai_object_id_t hash_id, _In_ const sai_attribute_t *attr)

Set hash attribute.

Parameters
[in]hash_idHash id
[in]attrAttribute
Returns
SAI_STATUS_SUCCESS on success, failure status code on error

Definition at line 378 of file saihash.h.

Enumeration Type Documentation

◆ _sai_fine_grained_hash_field_attr_t

Fine-grained hash field attribute IDs.

Enumerator
SAI_FINE_GRAINED_HASH_FIELD_ATTR_START 

Start of attributes.

SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD 

Hash native field ID.

Value Type:
sai_native_hash_field_t
Flags:
CREATE_ONLY
Default value:
SAI_NATIVE_HASH_FIELD_NONE
SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK 

Mask for a IPv4 address.

Value Type:
sai_ip4_t
Flags:
MANDATORY_ON_CREATE | CREATE_ONLY
Condition:
SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_SRC_IPV4 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_DST_IPV4 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4
SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK 

Mask for a IPv6 address.

Value Type:
sai_ip6_t
Flags:
MANDATORY_ON_CREATE | CREATE_ONLY
Condition:
SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_SRC_IPV6 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_DST_IPV6 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6 or SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD == SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6
SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID 

Optional field ordering.

Specifies in which order the fields are hashed, and defines in which fields should be associative for CRC with the same sequence ID. If not provided, it's up to SAI driver to choose.

Value Type:
sai_uint32_t
Flags:
CREATE_ONLY
Default value:
0
SAI_FINE_GRAINED_HASH_FIELD_ATTR_END 

End of attributes.

SAI_FINE_GRAINED_HASH_FIELD_ATTR_CUSTOM_RANGE_START 

Custom range base value

SAI_FINE_GRAINED_HASH_FIELD_ATTR_CUSTOM_RANGE_END 

End of custom range base

Definition at line 180 of file saihash.h.

◆ _sai_hash_attr_t

Hash attribute IDs.

Enumerator
SAI_HASH_ATTR_START 

Start of attributes.

SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST 

Hash native fields.

Value Type:
sai_s32_list_t sai_native_hash_field_t
Flags:
CREATE_AND_SET
Default value:
empty
SAI_HASH_ATTR_UDF_GROUP_LIST 

Hash UDF group.

Value Type:
sai_object_list_t
Flags:
CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_UDF_GROUP
Default value:
empty
SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST 

Hash fine-grained field list.

Value Type:
sai_object_list_t
Flags:
CREATE_AND_SET
Allowed object types
SAI_OBJECT_TYPE_FINE_GRAINED_HASH_FIELD
Default value:
empty
SAI_HASH_ATTR_END 

End of attributes.

SAI_HASH_ATTR_CUSTOM_RANGE_START 

Custom range base value

SAI_HASH_ATTR_CUSTOM_RANGE_END 

End of custom range base

Definition at line 243 of file saihash.h.

◆ _sai_native_hash_field_t

Attribute data for SAI native hash fields.

Enumerator
SAI_NATIVE_HASH_FIELD_SRC_IP 

Native hash field source IP.

Also, refers to the outer source IP in case for encapsulated packets. Used for both IPv4 and IPv6

SAI_NATIVE_HASH_FIELD_DST_IP 

Native hash field destination IP.

Also, refers to the outer source IP in case for encapsulated packets. Used for both IPv4 and IPv6

SAI_NATIVE_HASH_FIELD_INNER_SRC_IP 

Native hash field inner source IP

SAI_NATIVE_HASH_FIELD_INNER_DST_IP 

Native hash field inner destination IP

SAI_NATIVE_HASH_FIELD_SRC_IPV4 

Native hash field source IPv4.

Also, refers to the outer source IPv4 in case for encapsulated packets

SAI_NATIVE_HASH_FIELD_DST_IPV4 

Native hash field destination IPv4.

Also, refers to the outer source IPv4 in case for encapsulated packets

SAI_NATIVE_HASH_FIELD_SRC_IPV6 

Native hash field source IPv6.

Also, refers to the outer source IPv6 in case for encapsulated packets

SAI_NATIVE_HASH_FIELD_DST_IPV6 

Native hash field destination IPv6.

Also, refers to the outer source IPv6 in case for encapsulated packets

SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4 

Native hash field inner source IPv4

SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4 

Native hash field inner destination IPv4

SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6 

Native hash field inner source IPv6

SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6 

Native hash field inner destination IPv6

SAI_NATIVE_HASH_FIELD_VLAN_ID 

Native hash field vlan id

SAI_NATIVE_HASH_FIELD_IP_PROTOCOL 

Native hash field IP protocol

SAI_NATIVE_HASH_FIELD_ETHERTYPE 

Native hash field Ethernet type

SAI_NATIVE_HASH_FIELD_L4_SRC_PORT 

Native hash field L4 source port

SAI_NATIVE_HASH_FIELD_L4_DST_PORT 

Native hash field L4 destination port

SAI_NATIVE_HASH_FIELD_SRC_MAC 

Native hash field source MAC

SAI_NATIVE_HASH_FIELD_DST_MAC 

Native hash field destination MAC

SAI_NATIVE_HASH_FIELD_IN_PORT 

Native hash field source port

SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL 

Native hash field inner IP protocol

SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE 

Native hash field inner Ethernet type

SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT 

Native hash field inner L4 source port

SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT 

Native hash field inner L4 destination port

SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC 

Native hash field inner source MAC

SAI_NATIVE_HASH_FIELD_INNER_DST_MAC 

Native hash field inner destination MAC

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL 

Native hash field entire MPLS label stack

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0 

Native hash field the top MPLS label

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1 

Native hash field second MPLS label from the top

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2 

Native hash field third MPLS label from the top

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3 

Native hash field fourth MPLS label from the top

SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4 

Native hash field fifth MPLS label from the top

SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL 

Native hash field IPv6 flow label

SAI_NATIVE_HASH_FIELD_NONE 

No field - for compatibility, must be last

Definition at line 39 of file saihash.h.