From 12606cf2db309b5fc14f271fac6f414ee6f56351 Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Thu, 5 Dec 2024 03:26:46 +0000 Subject: [PATCH] Update SAI specs to have more p4 meta info --- dash-pipeline/SAI/specs/dash_acl.yaml | 370 +++++++++++++-- dash-pipeline/SAI/specs/dash_appliance.yaml | 22 +- .../SAI/specs/dash_direction_lookup.yaml | 19 +- dash-pipeline/SAI/specs/dash_eni.yaml | 287 +++++++++++- dash-pipeline/SAI/specs/dash_flow.yaml | 434 ++++++++++++++++-- dash-pipeline/SAI/specs/dash_ha.yaml | 152 +++++- .../SAI/specs/dash_inbound_routing.yaml | 69 ++- dash-pipeline/SAI/specs/dash_meter.yaml | 72 ++- .../SAI/specs/dash_outbound_ca_to_pa.yaml | 148 +++++- .../SAI/specs/dash_outbound_routing.yaml | 239 ++++++++-- .../SAI/specs/dash_pa_validation.yaml | 20 +- dash-pipeline/SAI/specs/dash_tunnel.yaml | 96 +++- dash-pipeline/SAI/specs/dash_vip.yaml | 12 +- dash-pipeline/SAI/specs/dash_vnet.yaml | 22 +- dash-pipeline/SAI/specs/route.yaml | 26 +- .../SAI/utils/dash_p4/dash_p4_table.py | 42 +- dash-pipeline/SAI/utils/sai_spec/__init__.py | 3 +- .../SAI/utils/sai_spec/sai_api_p4_meta.py | 28 +- 18 files changed, 1873 insertions(+), 188 deletions(-) diff --git a/dash-pipeline/SAI/specs/dash_acl.yaml b/dash-pipeline/SAI/specs/dash_acl.yaml index 879eca6f7..fabda4103 100644 --- a/dash-pipeline/SAI/specs/dash_acl.yaml +++ b/dash-pipeline/SAI/specs/dash_acl.yaml @@ -28,11 +28,27 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 37949057 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_DASH_ACL_GROUP_ACTION_SET_ACL_GROUP_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_DASH_ACL_GROUP_ACTION_SET_ACL_GROUP_ATTRS id: 21989040 - attr_param_id: {} + attr_params: + SAI_DASH_ACL_GROUP_ATTR_IP_ADDR_FAMILY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: dash_acl_rule description: DASH ACL rule @@ -195,115 +211,415 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 43936368 + stage: acl.stage1 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 24892843 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 26577723 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 31332881 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 24146215 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 48549629 + stage: acl.stage2 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 24892843 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 26577723 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 31332881 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 24146215 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 40869404 + stage: acl.stage3 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 24892843 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 26577723 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 31332881 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 24146215 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49672642 + stage: acl.stage1 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 22622424 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 27458076 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 27228779 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 29275145 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 37932124 + stage: acl.stage2 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 22622424 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 27458076 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 27228779 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 29275145 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 46113118 + stage: acl.stage3 + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_acl_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: list + field: ipprefixlist + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: protocol + id: 4 + match_type: list + field: u8list + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: range_list + field: u16rangelist + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DASH_ACL_RULE_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT id: 22622424 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_PERMIT_AND_CONTINUE id: 27458076 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY id: 27228779 - attr_param_id: {} + attr_params: {} SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DASH_ACL_RULE_ACTION_DENY_AND_CONTINUE id: 29275145 - attr_param_id: {} + attr_params: {} diff --git a/dash-pipeline/SAI/specs/dash_appliance.yaml b/dash-pipeline/SAI/specs/dash_appliance.yaml index f8bbf8b1f..7c3b1820a 100644 --- a/dash-pipeline/SAI/specs/dash_appliance.yaml +++ b/dash-pipeline/SAI/specs/dash_appliance.yaml @@ -28,8 +28,24 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 45177948 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: appliance_id + id: 1 + match_type: exact + field: u16 + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_DASH_APPLIANCE_ACTION_SET_APPLIANCE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_DASH_APPLIANCE_ACTION_SET_APPLIANCE id: 17143042 - attr_param_id: {} + attr_params: + SAI_DASH_APPLIANCE_ATTR_LOCAL_REGION_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u8 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_direction_lookup.yaml b/dash-pipeline/SAI/specs/dash_direction_lookup.yaml index 14cd33034..7ae162c22 100644 --- a/dash-pipeline/SAI/specs/dash_direction_lookup.yaml +++ b/dash-pipeline/SAI/specs/dash_direction_lookup.yaml @@ -65,9 +65,24 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49875338 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: VNI + id: 1 + match_type: exact + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_DIRECTION_LOOKUP_ENTRY_ACTION_SET_OUTBOUND_DIRECTION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_DIRECTION_LOOKUP_ENTRY_ACTION_SET_OUTBOUND_DIRECTION id: 32588257 - attr_param_id: - SAI_DIRECTION_LOOKUP_ENTRY_ATTR_DASH_ENI_MAC_OVERRIDE_TYPE: 1 + attr_params: + SAI_DIRECTION_LOOKUP_ENTRY_ATTR_DASH_ENI_MAC_OVERRIDE_TYPE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: s32 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_eni.yaml b/dash-pipeline/SAI/specs/dash_eni.yaml index 0651f9011..d7bafd7fb 100644 --- a/dash-pipeline/SAI/specs/dash_eni.yaml +++ b/dash-pipeline/SAI/specs/dash_eni.yaml @@ -65,12 +65,27 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 39883185 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: address + id: 1 + match_type: exact + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ACTION_SET_ENI: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ACTION_SET_ENI id: 19019152 - attr_param_id: - SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ATTR_ENI_ID: 1 + attr_params: + SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ATTR_ENI_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: eni description: ENI @@ -1643,8 +1658,270 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 38483381 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: eni_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_ENI_ACTION_SET_ENI_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_ENI_ACTION_SET_ENI_ATTRS id: 30359009 - attr_param_id: {} + attr_params: + SAI_ENI_ATTR_CPS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_PPS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_FLOWS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_ADMIN_STATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_HA_SCOPE_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_VM_UNDERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_VM_VNI: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_PL_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_PL_SIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_PL_UNDERLAY_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 11 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_V4_METER_POLICY_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 12 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_V6_METER_POLICY_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 13 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_DASH_TUNNEL_DSCP_MODE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 14 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_DSCP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 15 + field: u8 + bitwidth: 6 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V4_STAGE1_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 16 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V4_STAGE2_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 17 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V4_STAGE3_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 18 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V4_STAGE4_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 19 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V4_STAGE5_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 20 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V6_STAGE1_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 21 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V6_STAGE2_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 22 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V6_STAGE3_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 23 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V6_STAGE4_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 24 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_INBOUND_V6_STAGE5_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 25 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V4_STAGE1_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 26 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V4_STAGE2_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 27 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V4_STAGE3_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 28 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V4_STAGE4_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 29 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V4_STAGE5_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 30 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V6_STAGE1_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 31 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V6_STAGE2_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 32 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V6_STAGE3_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 33 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V6_STAGE4_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 34 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_V6_STAGE5_DASH_ACL_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 35 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_DISABLE_FAST_PATH_ICMP_FLOW_REDIRECTION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 36 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_FULL_FLOW_RESIMULATION_REQUESTED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 37 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_MAX_RESIMULATED_FLOW_PER_SECOND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 38 + field: u64 + bitwidth: 64 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_OUTBOUND_ROUTING_GROUP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 39 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_ENABLE_REVERSE_TUNNEL_LEARNING: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 40 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_REVERSE_TUNNEL_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 41 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ENI_ATTR_IS_HA_FLOW_OWNER: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 42 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_flow.yaml b/dash-pipeline/SAI/specs/dash_flow.yaml index b7ea10e0a..e8641d62d 100644 --- a/dash-pipeline/SAI/specs/dash_flow.yaml +++ b/dash-pipeline/SAI/specs/dash_flow.yaml @@ -54,11 +54,39 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 38557285 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_FLOW_TABLE_ACTION_SET_FLOW_TABLE_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_FLOW_TABLE_ACTION_SET_FLOW_TABLE_ATTR id: 33071001 - attr_param_id: {} + attr_params: + SAI_FLOW_TABLE_ATTR_MAX_FLOW_COUNT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_TABLE_ATTR_DASH_FLOW_ENABLED_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_TABLE_ATTR_FLOW_TTL_IN_MILLISECONDS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: flow_entry description: flow entry @@ -573,43 +601,261 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49035675 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: eni_mac + id: 1 + match_type: exact + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: vnet_id + id: 2 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_ip + id: 3 + match_type: exact + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 8 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_ip + id: 4 + match_type: exact + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: src_port + id: 5 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_port + id: 6 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: ip_proto + id: 7 + match_type: exact + field: u8 + bitwidth: 8 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_FLOW_ENTRY_ACTION_SET_FLOW_ENTRY_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_FLOW_ENTRY_ACTION_SET_FLOW_ENTRY_ATTR id: 26241621 - attr_param_id: - SAI_FLOW_ENTRY_ATTR_VERSION: 1 - SAI_FLOW_ENTRY_ATTR_DASH_DIRECTION: 2 - SAI_FLOW_ENTRY_ATTR_DASH_FLOW_ACTION: 3 - SAI_FLOW_ENTRY_ATTR_METER_CLASS: 4 - SAI_FLOW_ENTRY_ATTR_IS_UNIDIRECTIONAL_FLOW: 5 - SAI_FLOW_ENTRY_ATTR_DASH_FLOW_SYNC_STATE: 6 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_ENI_MAC: 7 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_VNET_ID: 8 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_IP_PROTO: 9 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_SRC_IP: 10 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_DST_IP: 11 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_SRC_PORT: 12 - SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_DST_PORT: 13 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_VNET_ID: 15 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_SIP: 16 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DIP: 17 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_SMAC: 18 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DMAC: 19 - SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DASH_ENCAPSULATION: 20 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_VNET_ID: 21 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_SIP: 22 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DIP: 23 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_SMAC: 24 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DMAC: 25 - SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DASH_ENCAPSULATION: 26 - SAI_FLOW_ENTRY_ATTR_DST_MAC: 27 - SAI_FLOW_ENTRY_ATTR_SIP: 28 - SAI_FLOW_ENTRY_ATTR_DIP: 29 - SAI_FLOW_ENTRY_ATTR_SIP_MASK: 30 - SAI_FLOW_ENTRY_ATTR_DIP_MASK: 31 - SAI_FLOW_ENTRY_ATTR_VENDOR_METADATA: 33 - SAI_FLOW_ENTRY_ATTR_FLOW_DATA_PB: 34 + attr_params: + SAI_FLOW_ENTRY_ATTR_VERSION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DASH_DIRECTION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DASH_FLOW_ACTION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: s32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_METER_CLASS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_IS_UNIDIRECTIONAL_FLOW: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DASH_FLOW_SYNC_STATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: s32 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_ENI_MAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_IP_PROTO: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: u8 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_SRC_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_DST_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 11 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 14 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_SRC_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 12 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_REVERSE_FLOW_DST_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 13 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 15 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 16 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 17 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_SMAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 18 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DMAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 19 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY0_DASH_ENCAPSULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 20 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 21 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 22 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 23 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_SMAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 24 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DMAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 25 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_UNDERLAY1_DASH_ENCAPSULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 26 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DST_MAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 27 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 28 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 29 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 32 + skipattr: null + SAI_FLOW_ENTRY_ATTR_SIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 30 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_DIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 31 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_VENDOR_METADATA: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 33 + field: u8list + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_ATTR_FLOW_DATA_PB: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 34 + field: u8list + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: flow_entry_bulk_get_session_filter description: flow entry bulk get session filter @@ -687,11 +933,51 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 38861669 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: bulk_get_session_filter_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ACTION_SET_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ACTION_SET_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR id: 19436677 - attr_param_id: {} + attr_params: + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: s32 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR_INT_VALUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u64 + bitwidth: 64 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR_IP_VALUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ATTR_MAC_VALUE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: flow_entry_bulk_get_session description: flow entry bulk get session @@ -821,8 +1107,72 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 38230977 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: bulk_get_session_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_FLOW_ENTRY_BULK_GET_SESSION_ACTION_SET_FLOW_ENTRY_BULK_GET_SESSION_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_FLOW_ENTRY_BULK_GET_SESSION_ACTION_SET_FLOW_ENTRY_BULK_GET_SESSION_ATTR id: 24218189 - attr_param_id: {} + attr_params: + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_BULK_GET_ENTRY_LIMITATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_BULK_GET_SESSION_SERVER_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_BULK_GET_SESSION_SERVER_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_FIRST_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_SECOND_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_THIRD_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_FOURTH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_FLOW_ENTRY_BULK_GET_SESSION_ATTR_FIFTH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_ha.yaml b/dash-pipeline/SAI/specs/dash_ha.yaml index e428fe64b..676211ac3 100644 --- a/dash-pipeline/SAI/specs/dash_ha.yaml +++ b/dash-pipeline/SAI/specs/dash_ha.yaml @@ -405,11 +405,81 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 45319666 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: ha_set_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_HA_SET_ACTION_SET_HA_SET_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_HA_SET_ACTION_SET_HA_SET_ATTR id: 21324178 - attr_param_id: {} + attr_params: + SAI_HA_SET_ATTR_LOCAL_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 1 + skipattr: null + SAI_HA_SET_ATTR_PEER_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 3 + skipattr: null + SAI_HA_SET_ATTR_CP_DATA_CHANNEL_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_DST_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_MIN_SRC_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_MAX_SRC_PORT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_PROBE_INTERVAL_MS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_PROBE_FAIL_THRESHOLD: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_IS_ALIVE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 11 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SET_ATTR_DPU_DRIVEN_HA_SWITCHOVER_WAIT_TIME_MS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 12 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: ha_scope description: HA scope @@ -552,8 +622,78 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49681752 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: ha_scope_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_HA_SCOPE_ACTION_SET_HA_SCOPE_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_HA_SCOPE_ACTION_SET_HA_SCOPE_ATTR id: 25507507 - attr_param_id: {} + attr_params: + SAI_HA_SCOPE_ATTR_HA_SET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_DASH_HA_ROLE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: s32 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_FLOW_VERSION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_FLOW_RECONCILE_REQUESTED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_FLOW_RECONCILE_NEEDED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_VIP_V4: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_VIP_V6: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_ADMIN_STATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_ACTIVATE_ROLE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_HA_SCOPE_ATTR_DASH_HA_STATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: s32 + bitwidth: 8 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_inbound_routing.yaml b/dash-pipeline/SAI/specs/dash_inbound_routing.yaml index 228223821..6c59fb0b2 100644 --- a/dash-pipeline/SAI/specs/dash_inbound_routing.yaml +++ b/dash-pipeline/SAI/specs/dash_inbound_routing.yaml @@ -142,25 +142,76 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 35881437 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: eni_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: VNI + id: 2 + match_type: exact + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 3 + match_type: ternary + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_INBOUND_ROUTING_ENTRY_ACTION_TUNNEL_DECAP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_INBOUND_ROUTING_ENTRY_ACTION_TUNNEL_DECAP id: 26741158 - attr_param_id: - SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 1 - SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 2 + attr_params: + SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_INBOUND_ROUTING_ENTRY_ACTION_TUNNEL_DECAP_PA_VALIDATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_INBOUND_ROUTING_ENTRY_ACTION_TUNNEL_DECAP_PA_VALIDATE id: 26064107 - attr_param_id: - SAI_INBOUND_ROUTING_ENTRY_ATTR_SRC_VNET_ID: 1 - SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 2 - SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 3 + attr_params: + SAI_INBOUND_ROUTING_ENTRY_ATTR_SRC_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_INBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP id: 24482615 - attr_param_id: {} + attr_params: {} SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP_PA_VALIDATE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP_PA_VALIDATE id: 24695752 - attr_param_id: {} + attr_params: {} diff --git a/dash-pipeline/SAI/specs/dash_meter.yaml b/dash-pipeline/SAI/specs/dash_meter.yaml index dadc1ab35..90efd0d71 100644 --- a/dash-pipeline/SAI/specs/dash_meter.yaml +++ b/dash-pipeline/SAI/specs/dash_meter.yaml @@ -84,11 +84,29 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 45482818 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: eni_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: meter_class + id: 2 + match_type: exact + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_METER_BUCKET_ENTRY_ACTION_UPDATE_METER_BUCKET: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_METER_BUCKET_ENTRY_ACTION_UPDATE_METER_BUCKET id: 23515737 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api.SaiApi name: meter_policy description: meter policy @@ -114,11 +132,27 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 40733610 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: meter_policy_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_METER_POLICY_ACTION_CHECK_IP_ADDR_FAMILY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_METER_POLICY_ACTION_CHECK_IP_ADDR_FAMILY id: 20564717 - attr_param_id: {} + attr_params: + SAI_METER_POLICY_ATTR_IP_ADDR_FAMILY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: meter_rule description: meter rule @@ -209,8 +243,32 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 44484556 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: meter_policy_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 2 + match_type: ternary + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_METER_RULE_ACTION_SET_POLICY_METER_CLASS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_METER_RULE_ACTION_SET_POLICY_METER_CLASS id: 19652160 - attr_param_id: {} + attr_params: + SAI_METER_RULE_ATTR_METER_CLASS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_outbound_ca_to_pa.yaml b/dash-pipeline/SAI/specs/dash_outbound_ca_to_pa.yaml index 7c594d82e..945fecfc8 100644 --- a/dash-pipeline/SAI/specs/dash_outbound_ca_to_pa.yaml +++ b/dash-pipeline/SAI/specs/dash_outbound_ca_to_pa.yaml @@ -262,30 +262,138 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 48765007 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dst_vnet_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dip + id: 3 + match_type: exact + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 2 + is_object_key: false actions: SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING id: 25614729 - attr_param_id: - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP: 1 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC: 2 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI: 3 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR: 4 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_TUNNEL_ID: 5 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_FLOW_RESIMULATION_REQUESTED: 6 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 7 + attr_params: + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: mac + bitwidth: 48 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_FLOW_RESIMULATION_REQUESTED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_PRIVATE_LINK_MAPPING: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_PRIVATE_LINK_MAPPING id: 31441909 - attr_param_id: - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP: 1 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_SIP: 2 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_SIP_MASK: 3 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DIP: 4 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DIP_MASK: 5 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_ENCAPSULATION: 6 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_TUNNEL_KEY: 7 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR: 8 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_TUNNEL_ID: 9 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_FLOW_RESIMULATION_REQUESTED: 10 - SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 11 + attr_params: + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_SIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_ENCAPSULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_TUNNEL_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 9 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_FLOW_RESIMULATION_REQUESTED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 11 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_outbound_routing.yaml b/dash-pipeline/SAI/specs/dash_outbound_routing.yaml index 05effc7b2..ad6533117 100644 --- a/dash-pipeline/SAI/specs/dash_outbound_routing.yaml +++ b/dash-pipeline/SAI/specs/dash_outbound_routing.yaml @@ -295,54 +295,207 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 38546097 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: outbound_routing_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: destination + id: 3 + match_type: lpm + field: ipPrefix + bitwidth: 128 + ip_is_v6_field_id: 2 + is_object_key: false actions: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET id: 21392322 - attr_param_id: - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID: 1 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: 2 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 3 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 4 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 5 + attr_params: + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET_DIRECT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET_DIRECT id: 24813914 - attr_param_id: - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID: 1 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: 2 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_IP: 4 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 5 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 6 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 7 + attr_params: + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_IP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 3 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 7 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT id: 31102279 - attr_param_id: - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: 1 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 2 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 3 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 4 + attr_params: + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_SERVICE_TUNNEL: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_SERVICE_TUNNEL id: 26982790 - attr_param_id: - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_DIP: 2 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_DIP_MASK: 4 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_SIP: 6 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_SIP_MASK: 8 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_UNDERLAY_DIP: 10 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_UNDERLAY_SIP: 12 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_ENCAPSULATION: 13 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_TUNNEL_KEY: 14 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: 15 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: 16 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: 17 - SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: 18 + attr_params: + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 1 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_DIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 3 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 6 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 5 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_SIP_MASK: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 8 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 7 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_UNDERLAY_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 10 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 9 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_UNDERLAY_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 12 + field: ipaddr + bitwidth: 128 + ip_is_v6_field_id: 11 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_ENCAPSULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 13 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_TUNNEL_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 14 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 15 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 16 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 17 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ROUTING_ACTIONS_DISABLED_IN_FLOW_RESIMULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 18 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null SAI_OUTBOUND_ROUTING_ENTRY_ACTION_DROP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_OUTBOUND_ROUTING_ENTRY_ACTION_DROP id: 18759588 - attr_param_id: {} + attr_params: {} - !!python/object:utils.sai_spec.sai_api.SaiApi name: outbound_routing_group description: outbound routing group @@ -368,8 +521,24 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 40572680 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: outbound_routing_group_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_OUTBOUND_ROUTING_GROUP_ACTION_SET_OUTBOUND_ROUTING_GROUP_ATTR: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_OUTBOUND_ROUTING_GROUP_ACTION_SET_OUTBOUND_ROUTING_GROUP_ATTR id: 30077100 - attr_param_id: {} + attr_params: + SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: booldata + bitwidth: 1 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_pa_validation.yaml b/dash-pipeline/SAI/specs/dash_pa_validation.yaml index 7a80e2d53..9b115e6a4 100644 --- a/dash-pipeline/SAI/specs/dash_pa_validation.yaml +++ b/dash-pipeline/SAI/specs/dash_pa_validation.yaml @@ -71,8 +71,26 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49415809 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: vnet_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: false + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: sip + id: 2 + match_type: exact + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_PA_VALIDATION_ENTRY_ACTION_PERMIT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_PA_VALIDATION_ENTRY_ACTION_PERMIT id: 17521061 - attr_param_id: {} + attr_params: {} diff --git a/dash-pipeline/SAI/specs/dash_tunnel.yaml b/dash-pipeline/SAI/specs/dash_tunnel.yaml index 688357744..6cb76b8e1 100644 --- a/dash-pipeline/SAI/specs/dash_tunnel.yaml +++ b/dash-pipeline/SAI/specs/dash_tunnel.yaml @@ -80,11 +80,51 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49206552 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_tunnel_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_DASH_TUNNEL_ACTION_SET_TUNNEL_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_DASH_TUNNEL_ACTION_SET_TUNNEL_ATTRS id: 27084508 - attr_param_id: {} + attr_params: + SAI_DASH_TUNNEL_ATTR_DASH_ENCAPSULATION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: s32 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_DASH_TUNNEL_ATTR_TUNNEL_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null + SAI_DASH_TUNNEL_ATTR_MAX_MEMBER_SIZE: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 3 + field: u32 + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_DASH_TUNNEL_ATTR_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 4 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null + SAI_DASH_TUNNEL_ATTR_SIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 5 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: dash_tunnel_member description: DASH tunnel member @@ -123,11 +163,33 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 41269458 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_tunnel_member_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_DASH_TUNNEL_MEMBER_ACTION_SET_TUNNEL_MEMBER_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_DASH_TUNNEL_MEMBER_ACTION_SET_TUNNEL_MEMBER_ATTRS id: 19698973 - attr_param_id: {} + attr_params: + SAI_DASH_TUNNEL_MEMBER_ATTR_DASH_TUNNEL_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null + SAI_DASH_TUNNEL_MEMBER_ATTR_DASH_TUNNEL_NEXT_HOP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: dash_tunnel_next_hop description: DASH tunnel next hop @@ -153,8 +215,24 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 37329198 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: dash_tunnel_next_hop_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_DASH_TUNNEL_NEXT_HOP_ACTION_SET_TUNNEL_NEXT_HOP_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_DASH_TUNNEL_NEXT_HOP_ACTION_SET_TUNNEL_NEXT_HOP_ATTRS id: 17571304 - attr_param_id: {} + attr_params: + SAI_DASH_TUNNEL_NEXT_HOP_ATTR_DIP: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/dash_vip.yaml b/dash-pipeline/SAI/specs/dash_vip.yaml index ff280333f..58458e3ee 100644 --- a/dash-pipeline/SAI/specs/dash_vip.yaml +++ b/dash-pipeline/SAI/specs/dash_vip.yaml @@ -65,8 +65,18 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 36083221 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: VIP + id: 1 + match_type: exact + field: ipaddr + bitwidth: 32 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_VIP_ENTRY_ACTION_ACCEPT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_VIP_ENTRY_ACTION_ACCEPT id: 21715559 - attr_param_id: {} + attr_params: {} diff --git a/dash-pipeline/SAI/specs/dash_vnet.yaml b/dash-pipeline/SAI/specs/dash_vnet.yaml index 8240bcab4..609d70462 100644 --- a/dash-pipeline/SAI/specs/dash_vnet.yaml +++ b/dash-pipeline/SAI/specs/dash_vnet.yaml @@ -28,8 +28,24 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 39583935 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: vnet_id + id: 1 + match_type: exact + field: u16 + bitwidth: 16 + ip_is_v6_field_id: 0 + is_object_key: true actions: - default: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction - name: default + SAI_VNET_ACTION_SET_VNET_ATTRS: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction + name: SAI_VNET_ACTION_SET_VNET_ATTRS id: 28116018 - attr_param_id: {} + attr_params: + SAI_VNET_ATTR_VNI: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/specs/route.yaml b/dash-pipeline/SAI/specs/route.yaml index 1b5921c09..bfef31e74 100644 --- a/dash-pipeline/SAI/specs/route.yaml +++ b/dash-pipeline/SAI/specs/route.yaml @@ -91,10 +91,30 @@ sai_apis: tables: - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaTable id: 49279256 + stage: null + keys: + - !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaKey + name: destination + id: 1 + match_type: lpm + field: ipPrefix + bitwidth: 128 + ip_is_v6_field_id: 0 + is_object_key: false actions: SAI_ROUTE_ENTRY_ACTION_PKT_ACT: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaAction name: SAI_ROUTE_ENTRY_ACTION_PKT_ACT id: 32404057 - attr_param_id: - SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: 1 - SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: 2 + attr_params: + SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 1 + field: u16 + bitwidth: 9 + ip_is_v6_field_id: 0 + skipattr: null + SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 2 + field: u16 + bitwidth: 9 + ip_is_v6_field_id: 0 + skipattr: null diff --git a/dash-pipeline/SAI/utils/dash_p4/dash_p4_table.py b/dash-pipeline/SAI/utils/dash_p4/dash_p4_table.py index f931d57cb..a2c01f5a9 100644 --- a/dash-pipeline/SAI/utils/dash_p4/dash_p4_table.py +++ b/dash-pipeline/SAI/utils/dash_p4/dash_p4_table.py @@ -5,7 +5,8 @@ from .dash_p4_table_action_param import * from .dash_p4_table_key import * from .dash_p4_table_action import * -from ..sai_spec import SaiApi, SaiStruct, SaiEnum, SaiEnumMember, SaiAttribute, SaiApiP4MetaAction, SaiApiP4MetaTable +from ..sai_spec import SaiApi, SaiStruct, SaiEnum, SaiEnumMember, SaiAttribute, \ + SaiApiP4MetaAction, SaiApiP4MetaActionParam, SaiApiP4MetaKey, SaiApiP4MetaTable @dash_p4rt_parser @@ -264,24 +265,31 @@ def __build_sai_attributes_after_parsing(self): # def to_sai(self) -> SaiApi: sai_api = SaiApi(self.name, self.name.replace('_', ' '), self.is_object != "false") - sai_api.p4_meta.tables.append(SaiApiP4MetaTable(self.id)) + sai_api.p4_meta.tables.append(SaiApiP4MetaTable(self.id, self.stage)) self.create_sai_action_enum(sai_api) self.create_sai_structs(sai_api) self.create_sai_attributes(sai_api) self.create_sai_stats(sai_api) + self.create_p4_meta_keys(sai_api) return sai_api - def create_sai_action_enum(self, sai_api: SaiApi) -> None: - # If the table represents an SAI object, it should not have an action enum. - # If the table has only 1 action, we don't need to create the action enum. - if len(self.actions) <= 1 and self.is_object != "false": - # We still need to create the p4 meta action here for generating default action code in libsai. - if len(self.actions) == 1: - sai_api.p4_meta.tables[0].actions["default"] = SaiApiP4MetaAction("default", self.actions[0].id) - return + def create_p4_meta_keys(self, sai_api: SaiApi) -> None: + for key in self.keys: + sai_api.p4_meta.tables[0].keys.append( + SaiApiP4MetaKey( + name=key.name, + id=key.id, + match_type=key.match_type, + field=key.field, + bitwidth=key.bitwidth, + ip_is_v6_field_id=key.ip_is_v6_field_id, + is_object_key=key.is_object_key, + ) + ) + def create_sai_action_enum(self, sai_api: SaiApi) -> None: action_enum_member_value = 0 action_enum_members: List[SaiEnumMember] = [] for action in self.actions: @@ -301,12 +309,24 @@ def create_sai_action_enum(self, sai_api: SaiApi) -> None: ) for action_param in action.params: - p4_meta_action.attr_param_id[action_param.get_sai_name(self.name)] = action_param.id + p4_meta_action.attr_params[action_param.get_sai_name(self.name)] = \ + SaiApiP4MetaActionParam( + id=action_param.id, + field=action_param.field, + bitwidth=action_param.bitwidth, + ip_is_v6_field_id=action_param.ip_is_v6_field_id, + skipattr=action_param.skipattr, + ) sai_api.p4_meta.tables[0].actions[action_enum_member_name] = p4_meta_action action_enum_member_value += 1 + # If the table represents an SAI object, it should not have an action enum. + # If the table has only 1 action, we don't need to create the action enum. + if len(self.actions) <= 1 and self.is_object != "false": + return + action_enum_type_name = f"sai_{self.name.lower()}_action_t" action_enum = SaiEnum( diff --git a/dash-pipeline/SAI/utils/sai_spec/__init__.py b/dash-pipeline/SAI/utils/sai_spec/__init__.py index 3542b4756..d29a2c30f 100644 --- a/dash-pipeline/SAI/utils/sai_spec/__init__.py +++ b/dash-pipeline/SAI/utils/sai_spec/__init__.py @@ -7,4 +7,5 @@ from .sai_struct import SaiStruct from .sai_struct_entry import SaiStructEntry from .sai_attribute import SaiAttribute -from .sai_api_p4_meta import SaiApiP4Meta, SaiApiP4MetaTable, SaiApiP4MetaAction \ No newline at end of file +from .sai_api_p4_meta import SaiApiP4Meta, SaiApiP4MetaTable, \ + SaiApiP4MetaAction, SaiApiP4MetaActionParam, SaiApiP4MetaKey diff --git a/dash-pipeline/SAI/utils/sai_spec/sai_api_p4_meta.py b/dash-pipeline/SAI/utils/sai_spec/sai_api_p4_meta.py index e1279faeb..cfe9fe4cd 100644 --- a/dash-pipeline/SAI/utils/sai_spec/sai_api_p4_meta.py +++ b/dash-pipeline/SAI/utils/sai_spec/sai_api_p4_meta.py @@ -1,16 +1,38 @@ -from typing import Dict, List +from typing import Dict, List, Optional +class SaiApiP4MetaActionParam: + def __init__(self, id: int, field: str, bitwidth: int, + ip_is_v6_field_id: int, skipattr: str): + self.id: int = id + self.field: str = field + self.bitwidth: int = bitwidth + self.ip_is_v6_field_id: int = ip_is_v6_field_id + self.skipattr: str = skipattr + class SaiApiP4MetaAction: def __init__(self, name: str, id: int): self.name: str = name self.id: int = id - self.attr_param_id: Dict[str, int] = {} + self.attr_params: Dict[str, SaiApiP4MetaActionParam] = {} +class SaiApiP4MetaKey: + def __init__(self, name: str, id: int, match_type: str, + field: str, bitwidth: int, ip_is_v6_field_id: int, + is_object_key: bool): + self.name: str = name + self.id: int = id + self.match_type: int = match_type + self.field: str = field + self.bitwidth: int = bitwidth + self.ip_is_v6_field_id: int = ip_is_v6_field_id + self.is_object_key: bool = is_object_key class SaiApiP4MetaTable: - def __init__(self, id: int): + def __init__(self, id: int, stage: Optional[str] = None): self.id: int = id + self.stage: Optional[str] = stage + self.keys: List[SaiApiP4MetaKey] = [] self.actions: Dict[str, SaiApiP4MetaAction] = {}