Skip to content

Commit

Permalink
Fix entry action search in saiapi.cpp.j2 (#558)
Browse files Browse the repository at this point in the history
The refactoring introduced in #438 only looks for a proper action attribute in SAI objects, not entries. In case of SAI entry, it iterates through all the attributes and matches the values regardless of attribute ID.

This PR aligns action search for both objects and entries, and adds action ID attributes to missing create_entry calls in tests.
  • Loading branch information
marian-pritsak authored May 14, 2024
1 parent 5d18e4d commit aa7d2ec
Show file tree
Hide file tree
Showing 13 changed files with 52 additions and 16 deletions.
27 changes: 15 additions & 12 deletions dash-pipeline/SAI/templates/saiapi.cpp.j2
Original file line number Diff line number Diff line change
Expand Up @@ -451,22 +451,25 @@ static sai_status_t dash_sai_create_{{ table.name }}(
// Search the action
for (uint32_t i = 0; i < attr_count; i++)
{
switch(attr_list[i].value.s32)
if (SAI_{{ table.name | upper }}_ATTR_ACTION == attr_list[i].id)
{
{% for action in table.actions %}
case SAI_{{ table.name | upper }}_ACTION_{{ action.name | upper }}:
switch(attr_list[i].value.s32)
{
actionId = {{action.id}};
//expectedParams = {{ action.params|length }};
break;
{% for action in table.actions %}
case SAI_{{ table.name | upper }}_ACTION_{{ action.name | upper }}:
{
actionId = {{action.id}};
//expectedParams = {{ action.params|length }};
break;
}
{% endfor %}
default:
DASH_LOG_ERROR("attribute value [%d] %d not supported yet", i, attr_list[i].value.s32);
break;
}
{% endfor %}
default:
DASH_LOG_ERROR("attribute value [%d] %d not supported yet", i, attr_list[i].value.s32);
break;
// only one action
break;
}
// only one action
break;
}
{% endif %}
action->set_action_id(actionId);
Expand Down
1 change: 1 addition & 0 deletions test/test-cases/functional/ptf/sai_dash_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ def outbound_ca_to_pa_create(self, dst_vnet_id, dip, underlay_dip,
dst_vnet_id=dst_vnet_id,
dip=sai_ipaddress(dip))
sai_thrift_create_outbound_ca_to_pa_entry(self.client, ca_to_pa_entry,
action=SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING,
underlay_dip=sai_ipaddress(underlay_dip),
use_dst_vnet_vni=use_dst_vnet_vni,
overlay_dmac=overlay_dmac,
Expand Down
3 changes: 2 additions & 1 deletion test/test-cases/functional/ptf/saidashacl.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,8 @@ def setUpSwitch(self):
switch_id=self.switch_id, dst_vnet_id=self.vnet, dip=dip)

self.create_entry(sai_thrift_create_outbound_ca_to_pa_entry, sai_thrift_remove_outbound_ca_to_pa_entry,
self.ocpe, underlay_dip=underlay_dip, overlay_dmac=self.dst_ca_mac, use_dst_vnet_vni=True,
self.ocpe, action=SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING,
underlay_dip=underlay_dip, overlay_dmac=self.dst_ca_mac, use_dst_vnet_vni=True,
meter_class_or=0)

def setupTest(self):
Expand Down
3 changes: 2 additions & 1 deletion test/test-cases/functional/ptf/saidashvnet_sanity.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,8 @@ def configureVnet(self):
underlay_dip = sai_thrift_ip_address_t(addr_family=SAI_IP_ADDR_FAMILY_IPV4,
addr=sai_thrift_ip_addr_t(ip4=self.dst_pa_ip))
self.ocpe = sai_thrift_outbound_ca_to_pa_entry_t(switch_id=self.switch_id, dst_vnet_id=self.vnet, dip=dip)
status = sai_thrift_create_outbound_ca_to_pa_entry(self.client, self.ocpe, underlay_dip = underlay_dip,
status = sai_thrift_create_outbound_ca_to_pa_entry(self.client, self.ocpe, action=SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING,
underlay_dip = underlay_dip,
overlay_dmac=self.dst_ca_mac, use_dst_vnet_vni = True,
meter_class_or=0)
assert(status == SAI_STATUS_SUCCESS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@
"dip": NETWORK_IP1
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", NETWORK_VTEP_IP,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", INNER_DST_MAC,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -398,6 +399,7 @@
"dip": NETWORK_IP2
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", NETWORK_VTEP_IP,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", INNER_DST_MAC2,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -414,6 +416,7 @@
"dip": ENI_IP
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", ENI_VTEP_IP,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", INNER_SRC_MAC,
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@
"dip": "1.128.0.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "221.0.2.101",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:1b:6e:00:00:01",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -232,6 +233,7 @@
"dip": "1.1.0.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "221.0.1.11",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:1A:C5:00:00:01",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ def make_create_commands(self):
"SAI_ENI_ATTR_DASH_TUNNEL_DSCP_MODE", "SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL", "SAI_ENI_ATTR_DSCP", "0",
"SAI_ENI_ATTR_DISABLE_FAST_PATH_ICMP_FLOW_REDIRECTION", "False", "SAI_ENI_ATTR_HA_SCOPE_ID", "0"])

ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY', ret, [ 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR', '0' ])
ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY', ret, [ 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR', '0',
'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION', 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING' ])

ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY', ret, [ 'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR', '0',
'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND', '-1' ])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,8 @@
"dip": "1.128.0.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"221.0.2.100",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand All @@ -332,6 +334,8 @@
"dip": "2.128.0.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"221.0.2.101",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand Down
3 changes: 2 additions & 1 deletion test/test-cases/scale/saic/test_sai_vnet_outbound_scale.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ def make_create_vnet_config(self):
"SAI_ENI_ATTR_DASH_TUNNEL_DSCP_MODE", "SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL", "SAI_ENI_ATTR_DSCP", "0",
"SAI_ENI_ATTR_DISABLE_FAST_PATH_ICMP_FLOW_REDIRECTION", "False", "SAI_ENI_ATTR_HA_SCOPE_ID", "0"])

ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY', ret, [ 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR', '0' ])
ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY', ret, [ 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_METER_CLASS_OR', '0',
'SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION', 'SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING' ])

ret = add_extra_attrs('SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY', ret, [ 'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_OR', '0',
'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_METER_CLASS_AND', '-1' ])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@
"dip": "10.1.1.0"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.1.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:00",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -301,6 +302,7 @@
"dip": "10.1.1.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.2.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:01",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -317,6 +319,7 @@
"dip": "10.1.1.2"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.3.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:02",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -333,6 +336,7 @@
"dip": "10.1.1.3"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.4.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:03",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -349,6 +353,7 @@
"dip": "10.1.1.0"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.5.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:04",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -365,6 +370,7 @@
"dip": "10.1.1.1"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.6.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:05",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -381,6 +387,7 @@
"dip": "10.1.1.2"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.7.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:06",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand All @@ -397,6 +404,7 @@
"dip": "10.1.1.3"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.8.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:DD:07",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
"dip": "10.1.2.50"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP", "172.16.1.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC", "00:DD:DD:DD:00:00",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI", "True",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,8 @@
"dip": "10.1.2.50"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"172.16.1.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand All @@ -529,6 +531,8 @@
"dip": "172.19.1.100"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"10.10.2.15",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand All @@ -549,6 +553,8 @@
"dip": "171.18.1.100"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"10.11.1.15",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand All @@ -569,6 +575,8 @@
"dip": "12.1.2.50"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"170.16.1.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@
"dip": "10.1.2.50"
},
"attributes": [
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_ACTION",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ACTION_SET_TUNNEL_MAPPING",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP",
"172.16.1.20",
"SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC",
Expand Down

0 comments on commit aa7d2ec

Please sign in to comment.