diff --git a/.azure-pipelines/test-docker-sonic-vs-template.yml b/.azure-pipelines/test-docker-sonic-vs-template.yml index bfc89ad43..95845a6b0 100644 --- a/.azure-pipelines/test-docker-sonic-vs-template.yml +++ b/.azure-pipelines/test-docker-sonic-vs-template.yml @@ -95,7 +95,7 @@ jobs: params='--graceful-stop' fi all_tests=$(ls test_*.py) - all_tests="${all_tests} p4rt" + all_tests="${all_tests} p4rt dash" RETRY=3 IMAGE_NAME=docker-sonic-vs:$(Build.DefinitionName).$(Build.BuildNumber).asan-${{ parameters.asan }} echo $all_tests | xargs -n 1 | xargs -P 8 -I TEST_MODULE sudo ./run-tests.sh "$IMAGE_NAME" "$params" "TEST_MODULE" "$RETRY" diff --git a/SAI b/SAI index be523777d..684a8ee78 160000 --- a/SAI +++ b/SAI @@ -1 +1 @@ -Subproject commit be523777da96504758d3bb6b3696ae7d1129419d +Subproject commit 684a8ee78d4f7393e355ddc4bf1181f8aa57708e diff --git a/meta/MetaKeyHasher.cpp b/meta/MetaKeyHasher.cpp index 61247c39c..65fe6c592 100644 --- a/meta/MetaKeyHasher.cpp +++ b/meta/MetaKeyHasher.cpp @@ -309,7 +309,7 @@ static bool operator==( { // SWSS_LOG_ENTER(); // disabled for performance reasons - return a.switch_id == b.switch_id && a.eni_id == b.eni_id && a.destination == b.destination; + return a.switch_id == b.switch_id && a.destination == b.destination && a.outbound_routing_group_id == b.outbound_routing_group_id; } static bool operator==( @@ -673,8 +673,8 @@ static inline std::size_t sai_get_hash( // SWSS_LOG_ENTER(); // disabled for performance reasons std::size_t hash = 0; - boost::hash_combine(hash, oe.eni_id); boost::hash_combine(hash, sai_get_hash(oe.destination)); + boost::hash_combine(hash, oe.outbound_routing_group_id); return hash; } diff --git a/meta/SaiSerialize.cpp b/meta/SaiSerialize.cpp index 3d9605ad5..53960a001 100644 --- a/meta/SaiSerialize.cpp +++ b/meta/SaiSerialize.cpp @@ -1822,8 +1822,8 @@ std::string sai_serialize_outbound_routing_entry( json j; j["switch_id"] = sai_serialize_object_id(outbound_routing_entry.switch_id); - j["eni_id"] = sai_serialize_object_id(outbound_routing_entry.eni_id); j["destination"] = sai_serialize_ip_prefix(outbound_routing_entry.destination); + j["outbound_routing_group_id"] = sai_serialize_object_id(outbound_routing_entry.outbound_routing_group_id); return j.dump(); } @@ -4703,8 +4703,8 @@ void sai_deserialize_outbound_routing_entry( json j = json::parse(s); sai_deserialize_object_id(j["switch_id"], outbound_routing_entry.switch_id); - sai_deserialize_object_id(j["eni_id"], outbound_routing_entry.eni_id); sai_deserialize_ip_prefix(j["destination"], outbound_routing_entry.destination); + sai_deserialize_object_id(j["outbound_routing_group_id"], outbound_routing_entry.outbound_routing_group_id); } void sai_deserialize_outbound_ca_to_pa_entry( diff --git a/saiplayer/SaiPlayer.cpp b/saiplayer/SaiPlayer.cpp index 51b5cf13f..915c0e10c 100644 --- a/saiplayer/SaiPlayer.cpp +++ b/saiplayer/SaiPlayer.cpp @@ -880,7 +880,7 @@ sai_status_t SaiPlayer::handle_dash_outbound_routing( sai_deserialize_outbound_routing_entry(str_object_id, entry); entry.switch_id = translate_local_to_redis(entry.switch_id); - entry.eni_id = translate_local_to_redis(entry.eni_id); + entry.outbound_routing_group_id = translate_local_to_redis(entry.outbound_routing_group_id); switch (api) { @@ -1796,7 +1796,7 @@ sai_status_t SaiPlayer::handle_bulk_entry( sai_deserialize_outbound_routing_entry(object_ids[it], entries[it]); entries[it].switch_id = translate_local_to_redis(entries[it].switch_id); - entries[it].eni_id = translate_local_to_redis(entries[it].eni_id); + entries[it].outbound_routing_group_id = translate_local_to_redis(entries[it].outbound_routing_group_id); } CALL_BULK_CREATE_API_WITH_TIMER("outbound_routing_entry"); @@ -1991,7 +1991,7 @@ sai_status_t SaiPlayer::handle_bulk_entry( sai_deserialize_outbound_routing_entry(object_ids[it], entries[it]); entries[it].switch_id = translate_local_to_redis(entries[it].switch_id); - entries[it].eni_id = translate_local_to_redis(entries[it].eni_id); + entries[it].outbound_routing_group_id = translate_local_to_redis(entries[it].outbound_routing_group_id); } CALL_BULK_REMOVE_API_WITH_TIMER("outbound_routing_entry"); @@ -2193,7 +2193,7 @@ sai_status_t SaiPlayer::handle_bulk_entry( sai_deserialize_outbound_routing_entry(object_ids[it], entries[it]); entries[it].switch_id = translate_local_to_redis(entries[it].switch_id); - entries[it].eni_id = translate_local_to_redis(entries[it].eni_id); + entries[it].outbound_routing_group_id = translate_local_to_redis(entries[it].outbound_routing_group_id); } CALL_BULK_SET_API_WITH_TIMER("outbound_routing_entry"); diff --git a/syncd/SwitchNotifications.h b/syncd/SwitchNotifications.h index 2921a9cc1..6901855a7 100644 --- a/syncd/SwitchNotifications.h +++ b/syncd/SwitchNotifications.h @@ -118,6 +118,7 @@ namespace syncd .on_switch_asic_sdk_health_event = &Slot::onSwitchAsicSdkHealthEvent, .on_port_host_tx_ready = &Slot::onPortHostTxReady, .on_twamp_session_event = &Slot::onTwampSessionEvent, + .on_icmp_echo_session_state_change = nullptr, .on_ha_set_event = nullptr, .on_ha_scope_event = nullptr, }) { } diff --git a/syncd/Syncd.cpp b/syncd/Syncd.cpp index 9e2cd1971..c755b5b18 100644 --- a/syncd/Syncd.cpp +++ b/syncd/Syncd.cpp @@ -1239,7 +1239,7 @@ sai_status_t Syncd::processBulkCreateEntry( sai_deserialize_outbound_routing_entry(objectIds[it], entries[it]); entries[it].switch_id = m_translator->translateVidToRid(entries[it].switch_id); - entries[it].eni_id = m_translator->translateVidToRid(entries[it].eni_id); + entries[it].outbound_routing_group_id = m_translator->translateVidToRid(entries[it].outbound_routing_group_id); } status = m_vendorSai->bulkCreate( @@ -1525,7 +1525,7 @@ sai_status_t Syncd::processBulkRemoveEntry( sai_deserialize_outbound_routing_entry(objectIds[it], entries[it]); entries[it].switch_id = m_translator->translateVidToRid(entries[it].switch_id); - entries[it].eni_id = m_translator->translateVidToRid(entries[it].eni_id); + entries[it].outbound_routing_group_id = m_translator->translateVidToRid(entries[it].outbound_routing_group_id); } status = m_vendorSai->bulkRemove( diff --git a/syncd/tests/TestSyncdNvdaBf.cpp b/syncd/tests/TestSyncdNvdaBf.cpp index f86ba08a9..f2776d5de 100644 --- a/syncd/tests/TestSyncdNvdaBf.cpp +++ b/syncd/tests/TestSyncdNvdaBf.cpp @@ -239,6 +239,28 @@ void SyncdNvdaBfTest::RemoveEni(sai_object_id_t eni) EXPECT_EQ(SAI_STATUS_SUCCESS, m_sairedis->remove((sai_object_type_t)SAI_OBJECT_TYPE_ENI, eni)); } +sai_object_id_t SyncdNvdaBfTest::CreateOutboundRoutingGroup(bool disabled) +{ + SWSS_LOG_ENTER(); + + sai_object_id_t oid; + sai_attribute_t attr; + + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = disabled; + + EXPECT_EQ(SAI_STATUS_SUCCESS, m_sairedis->create((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, &oid, m_switchId, 1, &attr)); + + return oid; +} + +void SyncdNvdaBfTest::RemoveOutboundRoutingGroup(sai_object_id_t outbound_routing_group) +{ + SWSS_LOG_ENTER(); + + EXPECT_EQ(SAI_STATUS_SUCCESS, m_sairedis->remove((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, outbound_routing_group)); +} + TEST_F(SyncdNvdaBfTest, dashDirectionLookup) { sai_attribute_t attr; @@ -1100,7 +1122,7 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntry) sai_object_id_t counter = CreateCounter(); sai_object_id_t vnet = CreateVnet(101); - sai_object_id_t eni = CreateEni(vnet); + sai_object_id_t outbound_routing_group = CreateOutboundRoutingGroup(false); sai_ip_address_t oip6; oip6.addr_family = SAI_IP_ADDR_FAMILY_IPV6; @@ -1108,7 +1130,7 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntry) sai_outbound_routing_entry_t entry0; entry0.switch_id = m_switchId; - entry0.eni_id = eni; + entry0.outbound_routing_group_id = outbound_routing_group; entry0.destination.addr_family = SAI_IP_ADDR_FAMILY_IPV4; inet_pton(AF_INET, "192.168.1.0", &entry0.destination.addr.ip4); inet_pton(AF_INET, "255.255.255.0", &entry0.destination.mask.ip4); @@ -1140,7 +1162,7 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntry) EXPECT_EQ(SAI_STATUS_SUCCESS, m_sairedis->remove(&entry0)); - RemoveEni(eni); + RemoveOutboundRoutingGroup(outbound_routing_group); RemoveVnet(vnet); RemoveCounter(counter); } @@ -1161,8 +1183,8 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntryBulk) sai_object_id_t vnet0 = CreateVnet(101); sai_object_id_t vnet1 = CreateVnet(102); - sai_object_id_t eni0 = CreateEni(vnet0); - sai_object_id_t eni1 = CreateEni(vnet1); + sai_object_id_t outbound_routing_group0 = CreateOutboundRoutingGroup(false); + sai_object_id_t outbound_routing_group1 = CreateOutboundRoutingGroup(false); sai_ip_prefix_t dst0 = {}; sai_ip_prefix_t dst1 = {}; @@ -1196,8 +1218,8 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntryBulk) sai_status_t statuses[entries_count] = {}; sai_outbound_routing_entry_t entries[entries_count] = { - { .switch_id = m_switchId, .eni_id = eni0, .destination = dst0}, - { .switch_id = m_switchId, .eni_id = eni1, .destination = dst1}, + { .switch_id = m_switchId, .destination = dst0, .outbound_routing_group_id = outbound_routing_group0}, + { .switch_id = m_switchId, .destination = dst1, .outbound_routing_group_id = outbound_routing_group1}, }; EXPECT_EQ(SAI_STATUS_SUCCESS, m_sairedis->bulkCreate(entries_count, entries, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR, statuses)); @@ -1210,8 +1232,8 @@ TEST_F(SyncdNvdaBfTest, dashOutboundRoutingEntryBulk) EXPECT_EQ(SAI_STATUS_SUCCESS, statuses[i]); } - RemoveEni(eni0); - RemoveEni(eni1); + RemoveOutboundRoutingGroup(outbound_routing_group0); + RemoveOutboundRoutingGroup(outbound_routing_group1); RemoveVnet(vnet0); RemoveVnet(vnet1); RemoveCounter(counter0); diff --git a/syncd/tests/TestSyncdNvdaBf.h b/syncd/tests/TestSyncdNvdaBf.h index fa8e547b9..65c79107e 100644 --- a/syncd/tests/TestSyncdNvdaBf.h +++ b/syncd/tests/TestSyncdNvdaBf.h @@ -39,6 +39,9 @@ class SyncdNvdaBfTest : public ::testing::Test sai_object_id_t CreateEni(sai_object_id_t vnet); void RemoveEni(sai_object_id_t eni); + sai_object_id_t CreateOutboundRoutingGroup(bool disabled); + void RemoveOutboundRoutingGroup(sai_object_id_t outbound_routing_group); + protected: std::shared_ptr m_worker; std::shared_ptr m_sairedis; diff --git a/tests/NVDAMBF2H536C/dashapis.rec b/tests/NVDAMBF2H536C/dashapis.rec index cd6d2dd68..878dc162b 100644 --- a/tests/NVDAMBF2H536C/dashapis.rec +++ b/tests/NVDAMBF2H536C/dashapis.rec @@ -112,21 +112,21 @@ 2022-11-17.15:01:04.231296|r|SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY:{"sip":"192.3.3.3","switch_id":"oid:0x21000000000000","vnet_id":"oid:0x0e00800000007e"} 2022-11-17.15:01:04.231665|r|SAI_OBJECT_TYPE_VNET:oid:0x0e00800000007e 2022-11-17.15:01:04.232160|c|SAI_OBJECT_TYPE_VNET:oid:0x0e00800000007f|SAI_VNET_ATTR_VNI=101 -2022-11-17.15:01:04.232663|c|SAI_OBJECT_TYPE_ENI:oid:0x07008000000080|SAI_ENI_ATTR_VNET_ID=oid:0x0e00800000007f -2022-11-17.15:01:04.233159|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e00800000007f -2022-11-17.15:01:04.233627|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 +2022-11-17.15:01:04.232663|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x14008000000080|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.233159|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e00800000007f +2022-11-17.15:01:04.233627|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 2022-11-17.15:01:04.234212|G|SAI_STATUS_SUCCESS|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e00800000007f -2022-11-17.15:01:04.234260|s|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT -2022-11-17.15:01:04.234724|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 +2022-11-17.15:01:04.234260|s|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT +2022-11-17.15:01:04.234724|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000080","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 2022-11-17.15:01:04.235311|G|SAI_STATUS_SUCCESS|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_DIRECT|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e00800000007f -2022-11-17.15:01:04.235346|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000080","switch_id":"oid:0x21000000000000"} -2022-11-17.15:01:04.235726|r|SAI_OBJECT_TYPE_ENI:oid:0x07008000000080 +2022-11-17.15:01:04.235346|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000080","switch_id":"oid:0x21000000000000"} +2022-11-17.15:01:04.235726|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x14008000000080 2022-11-17.15:01:04.236151|r|SAI_OBJECT_TYPE_VNET:oid:0x0e00800000007f 2022-11-17.15:01:04.236650|c|SAI_OBJECT_TYPE_VNET:oid:0x0e008000000081|SAI_VNET_ATTR_VNI=101 -2022-11-17.15:01:04.237179|c|SAI_OBJECT_TYPE_ENI:oid:0x07008000000082|SAI_ENI_ATTR_VNET_ID=oid:0x0e008000000081 -2022-11-17.15:01:04.237663|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000082","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e008000000081 -2022-11-17.15:01:04.238082|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","eni_id":"oid:0x07008000000082","switch_id":"oid:0x21000000000000"} -2022-11-17.15:01:04.238459|r|SAI_OBJECT_TYPE_ENI:oid:0x07008000000082 +2022-11-17.15:01:04.237179|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x14008000000082|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.237663|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000082","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e008000000081 +2022-11-17.15:01:04.238082|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.168.1.0/24","outbound_routing_group_id":"oid:0x14008000000082","switch_id":"oid:0x21000000000000"} +2022-11-17.15:01:04.238459|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x14008000000082 2022-11-17.15:01:04.238878|r|SAI_OBJECT_TYPE_VNET:oid:0x0e008000000081 2022-11-17.15:01:04.239377|c|SAI_OBJECT_TYPE_VNET:oid:0x0e008000000083|SAI_VNET_ATTR_VNI=10 2022-11-17.15:01:04.239866|c|SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY:{"dip":"192.168.0.1","dst_vnet_id":"oid:0x0e008000000083","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP=192.168.0.1|SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC=00:01:02:03:04:05|SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_USE_DST_VNET_VNI=false @@ -272,26 +272,26 @@ 2022-11-17.15:01:04.301434|r|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000ae 2022-11-17.15:01:04.301926|c|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000af|SAI_VNET_ATTR_VNI=101 2022-11-17.15:01:04.302418|c|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b0|SAI_VNET_ATTR_VNI=102 -2022-11-17.15:01:04.302911|c|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b1|SAI_ENI_ATTR_VNET_ID=oid:0x0e0080000000af -2022-11-17.15:01:04.303405|c|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b2|SAI_ENI_ATTR_VNET_ID=oid:0x0e0080000000b0 -2022-11-17.15:01:04.303897|C|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","eni_id":"oid:0x070080000000b1","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000af||{"destination":"fe80::886a:feff:fe31:bfe0/32","eni_id":"oid:0x070080000000b2","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b0 -2022-11-17.15:01:04.304429|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.1.1.1/24","eni_id":"oid:0x070080000000b1","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 +2022-11-17.15:01:04.302911|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b1|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.303405|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b2|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.303897|C|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","outbound_routing_group_id":"oid:0x140080000000b1","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000af||{"destination":"fe80::886a:feff:fe31:bfe0/32","outbound_routing_group_id":"oid:0x140080000000b2","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b0 +2022-11-17.15:01:04.304429|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"192.1.1.1/24","outbound_routing_group_id":"oid:0x140080000000b1","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 2022-11-17.15:01:04.305140|G|SAI_STATUS_SUCCESS|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000af -2022-11-17.15:01:04.305194|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"fe80::886a:feff:fe31:bfe0/32","eni_id":"oid:0x070080000000b2","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 +2022-11-17.15:01:04.305194|g|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY:{"destination":"fe80::886a:feff:fe31:bfe0/32","outbound_routing_group_id":"oid:0x140080000000b2","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0 2022-11-17.15:01:04.305774|G|SAI_STATUS_SUCCESS|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b0 -2022-11-17.15:01:04.305822|R|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","eni_id":"oid:0x070080000000b1","switch_id":"oid:0x21000000000000"}||{"destination":"fe80::886a:feff:fe31:bfe0/32","eni_id":"oid:0x070080000000b2","switch_id":"oid:0x21000000000000"} -2022-11-17.15:01:04.306284|r|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b1 -2022-11-17.15:01:04.306706|r|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b2 +2022-11-17.15:01:04.305822|R|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","outbound_routing_group_id":"oid:0x140080000000b1","switch_id":"oid:0x21000000000000"}||{"destination":"fe80::886a:feff:fe31:bfe0/32","outbound_routing_group_id":"oid:0x140080000000b2","switch_id":"oid:0x21000000000000"} +2022-11-17.15:01:04.306284|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b1 +2022-11-17.15:01:04.306706|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b2 2022-11-17.15:01:04.307119|r|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000af 2022-11-17.15:01:04.307526|r|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b0 2022-11-17.15:01:04.308017|c|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b3|SAI_VNET_ATTR_VNI=101 2022-11-17.15:01:04.308505|c|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b4|SAI_VNET_ATTR_VNI=102 -2022-11-17.15:01:04.309013|c|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b5|SAI_ENI_ATTR_VNET_ID=oid:0x0e0080000000b3 -2022-11-17.15:01:04.309511|c|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b6|SAI_ENI_ATTR_VNET_ID=oid:0x0e0080000000b4 -2022-11-17.15:01:04.310006|C|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","eni_id":"oid:0x070080000000b5","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b3||{"destination":"fe80::886a:feff:fe31:bfe0/32","eni_id":"oid:0x070080000000b6","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b4 -2022-11-17.15:01:04.310513|R|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","eni_id":"oid:0x070080000000b5","switch_id":"oid:0x21000000000000"}||{"destination":"fe80::886a:feff:fe31:bfe0/32","eni_id":"oid:0x070080000000b6","switch_id":"oid:0x21000000000000"} -2022-11-17.15:01:04.311049|r|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b5 -2022-11-17.15:01:04.311483|r|SAI_OBJECT_TYPE_ENI:oid:0x070080000000b6 +2022-11-17.15:01:04.309013|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b5|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.309511|c|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b6|SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED=false +2022-11-17.15:01:04.310006|C|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","outbound_routing_group_id":"oid:0x140080000000b5","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b3||{"destination":"fe80::886a:feff:fe31:bfe0/32","outbound_routing_group_id":"oid:0x140080000000b6","switch_id":"oid:0x21000000000000"}|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION=SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET|SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID=oid:0x0e0080000000b4 +2022-11-17.15:01:04.310513|R|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY||{"destination":"192.1.1.1/24","outbound_routing_group_id":"oid:0x140080000000b5","switch_id":"oid:0x21000000000000"}||{"destination":"fe80::886a:feff:fe31:bfe0/32","outbound_routing_group_id":"oid:0x140080000000b6","switch_id":"oid:0x21000000000000"} +2022-11-17.15:01:04.311049|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b5 +2022-11-17.15:01:04.311483|r|SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP:oid:0x140080000000b6 2022-11-17.15:01:04.311891|r|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b3 2022-11-17.15:01:04.312295|r|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b4 2022-11-17.15:01:04.312788|c|SAI_OBJECT_TYPE_VNET:oid:0x0e0080000000b7|SAI_VNET_ATTR_VNI=10 diff --git a/tests/TestDash.cpp b/tests/TestDash.cpp index 49da8e510..623d64712 100644 --- a/tests/TestDash.cpp +++ b/tests/TestDash.cpp @@ -1276,12 +1276,10 @@ TEST(API, outbound_routing_entry) auto switchid = TestDashEnv::instance()->getSwitchOid(); - sai_dash_eni_api_t *dash_eni_api = nullptr; sai_dash_vnet_api_t *dash_vnet_api = nullptr; sai_counter_api_t *counter_api = nullptr; sai_dash_outbound_routing_api_t *dash_api = nullptr; - ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_ENI, (void**)&dash_eni_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_VNET, (void**)&dash_vnet_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_COUNTER, (void**)&counter_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_OUTBOUND_ROUTING, (void**)&dash_api)); @@ -1290,14 +1288,14 @@ TEST(API, outbound_routing_entry) ASSERT_SUCCESS(counter_api->create_counter(&counter, switchid, 0, nullptr)); sai_attribute_t attr; - sai_object_id_t eni, vnet; + sai_object_id_t outbound_routing_group, vnet; attr.id = SAI_VNET_ATTR_VNI; attr.value.u32 = 101; ASSERT_SUCCESS(dash_vnet_api->create_vnet(&vnet, switchid, 1, &attr)); - attr.id = SAI_ENI_ATTR_VNET_ID; - attr.value.oid = vnet; - ASSERT_SUCCESS(dash_eni_api->create_eni(&eni, switchid, 1, &attr)); + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = false; + ASSERT_SUCCESS(dash_api->create_outbound_routing_group(&outbound_routing_group, switchid, 1, &attr)); sai_ip_address_t oip6; oip6.addr_family = SAI_IP_ADDR_FAMILY_IPV6; @@ -1305,7 +1303,7 @@ TEST(API, outbound_routing_entry) sai_outbound_routing_entry_t entry0; entry0.switch_id = switchid; - entry0.eni_id = eni; + entry0.outbound_routing_group_id = outbound_routing_group; entry0.destination.addr_family = SAI_IP_ADDR_FAMILY_IPV4; inet_pton(AF_INET, "192.168.1.0", &entry0.destination.addr.ip4); inet_pton(AF_INET, "255.255.255.0", &entry0.destination.mask.ip4); @@ -1343,7 +1341,7 @@ TEST(API, outbound_routing_entry) ASSERT_SUCCESS(dash_api->remove_outbound_routing_entry(&entry0)); - ASSERT_SUCCESS(dash_eni_api->remove_eni(eni)); + ASSERT_SUCCESS(dash_api->remove_outbound_routing_group(outbound_routing_group)); ASSERT_SUCCESS(dash_vnet_api->remove_vnet(vnet)); ASSERT_SUCCESS(counter_api->remove_counter(counter)); } @@ -1357,12 +1355,10 @@ TEST(APIBulk, outbound_routing_entry) const uint32_t entries_count = 2; const uint32_t entry_attrs_count = 4; - sai_dash_eni_api_t *dash_eni_api = nullptr; sai_dash_outbound_routing_api_t *dash_api = nullptr; sai_counter_api_t *counter_api = nullptr; sai_dash_vnet_api_t *dash_vnet_api = nullptr; - ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_ENI, (void**)&dash_eni_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_VNET, (void**)&dash_vnet_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_COUNTER, (void**)&counter_api)); ASSERT_SUCCESS(sai_api_query((sai_api_t)SAI_API_DASH_OUTBOUND_ROUTING, (void**)&dash_api)); @@ -1379,7 +1375,7 @@ TEST(APIBulk, outbound_routing_entry) sai_attribute_t attr; sai_object_id_t vnet0, vnet1; - sai_object_id_t eni0, eni1; + sai_object_id_t outbound_routing_group0, outbound_routing_group1; attr.id = SAI_VNET_ATTR_VNI; attr.value.u32 = 101; ASSERT_SUCCESS(dash_vnet_api->create_vnet(&vnet0, switchid, 1, &attr)); @@ -1388,13 +1384,13 @@ TEST(APIBulk, outbound_routing_entry) attr.value.u32 = 102; ASSERT_SUCCESS(dash_vnet_api->create_vnet(&vnet1, switchid, 1, &attr)); - attr.id = SAI_ENI_ATTR_VNET_ID; - attr.value.oid = vnet0; - ASSERT_SUCCESS(dash_eni_api->create_eni(&eni0, switchid, 1, &attr)); + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = false; + ASSERT_SUCCESS(dash_api->create_outbound_routing_group(&outbound_routing_group0, switchid, 1, &attr)); - attr.id = SAI_ENI_ATTR_VNET_ID; - attr.value.oid = vnet1; - ASSERT_SUCCESS(dash_eni_api->create_eni(&eni1, switchid, 1, &attr)); + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = false; + ASSERT_SUCCESS(dash_api->create_outbound_routing_group(&outbound_routing_group1, switchid, 1, &attr)); sai_ip_prefix_t dst0 = {}; sai_ip_prefix_t dst1 = {}; @@ -1428,8 +1424,8 @@ TEST(APIBulk, outbound_routing_entry) sai_status_t statuses[entries_count] = {}; sai_outbound_routing_entry_t entries[entries_count] = { - { .switch_id = switchid, .eni_id = eni0, .destination = dst0}, - { .switch_id = switchid, .eni_id = eni1, .destination = dst1}, + { .switch_id = switchid, .destination = dst0, .outbound_routing_group_id = outbound_routing_group0}, + { .switch_id = switchid, .destination = dst0, .outbound_routing_group_id = outbound_routing_group1}, }; ASSERT_SUCCESS(dash_api->create_outbound_routing_entries(entries_count, entries, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR, statuses)); @@ -1457,8 +1453,8 @@ TEST(APIBulk, outbound_routing_entry) ASSERT_SUCCESS(statuses[i]); } - ASSERT_SUCCESS(dash_eni_api->remove_eni(eni0)); - ASSERT_SUCCESS(dash_eni_api->remove_eni(eni1)); + ASSERT_SUCCESS(dash_api->remove_outbound_routing_group(outbound_routing_group0)); + ASSERT_SUCCESS(dash_api->remove_outbound_routing_group(outbound_routing_group1)); ASSERT_SUCCESS(dash_vnet_api->remove_vnet(vnet0)); ASSERT_SUCCESS(dash_vnet_api->remove_vnet(vnet1)); ASSERT_SUCCESS(counter_api->remove_counter(counter0)); diff --git a/unittest/meta/TestMetaDash.cpp b/unittest/meta/TestMetaDash.cpp index b7b4234d1..d7bc7b037 100644 --- a/unittest/meta/TestMetaDash.cpp +++ b/unittest/meta/TestMetaDash.cpp @@ -138,6 +138,28 @@ static void remove_eni(Meta &m, sai_object_id_t eni) EXPECT_EQ(SAI_STATUS_SUCCESS, m.remove((sai_object_type_t)SAI_OBJECT_TYPE_ENI, eni)); } +static sai_object_id_t create_outbound_routing_group(Meta &m, sai_object_id_t switchid, bool disabled) +{ + SWSS_LOG_ENTER(); + + sai_object_id_t oid; + sai_attribute_t attr; + + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = disabled; + + EXPECT_EQ(SAI_STATUS_SUCCESS, m.create((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, &oid, switchid, 1, &attr)); + + return oid; +} + +static void remove_outbound_routing_group(Meta &m, sai_object_id_t outbound_routing_group) +{ + SWSS_LOG_ENTER(); + + EXPECT_EQ(SAI_STATUS_SUCCESS, m.remove((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, outbound_routing_group)); +} + TEST(Meta, dash_get_availability) { Meta m(std::make_shared()); @@ -1105,7 +1127,7 @@ TEST(Meta, quad_dash_outbound_routing_entry) sai_object_id_t counter = create_counter(m, switchid); sai_object_id_t vnet = create_vnet(m, switchid, 101); - sai_object_id_t eni = create_eni(m, switchid, vnet); + sai_object_id_t outbound_routing_group = create_outbound_routing_group(m, switchid, false); sai_ip_address_t oip6; oip6.addr_family = SAI_IP_ADDR_FAMILY_IPV6; @@ -1113,7 +1135,7 @@ TEST(Meta, quad_dash_outbound_routing_entry) sai_outbound_routing_entry_t entry0; entry0.switch_id = switchid; - entry0.eni_id = eni; + entry0.outbound_routing_group_id = outbound_routing_group; entry0.destination.addr_family = SAI_IP_ADDR_FAMILY_IPV4; inet_pton(AF_INET, "192.168.1.0", &entry0.destination.addr.ip4); inet_pton(AF_INET, "255.255.255.0", &entry0.destination.mask.ip4); @@ -1145,7 +1167,7 @@ TEST(Meta, quad_dash_outbound_routing_entry) EXPECT_EQ(SAI_STATUS_SUCCESS, m.remove(&entry0)); - remove_eni(m, eni); + remove_outbound_routing_group(m, outbound_routing_group); remove_vnet(m, vnet); remove_counter(m, counter); } @@ -1170,8 +1192,8 @@ TEST(Meta, bulk_dash_outbound_routing_entry) sai_object_id_t vnet0 = create_vnet(m, switchid, 101); sai_object_id_t vnet1 = create_vnet(m, switchid, 102); - sai_object_id_t eni0 = create_eni(m, switchid, vnet0); - sai_object_id_t eni1 = create_eni(m, switchid, vnet1); + sai_object_id_t outbound_routing_group0 = create_outbound_routing_group(m, switchid, false); + sai_object_id_t outbound_routing_group1 = create_outbound_routing_group(m, switchid, false); sai_ip_prefix_t dst0 = {}; sai_ip_prefix_t dst1 = {}; @@ -1205,8 +1227,8 @@ TEST(Meta, bulk_dash_outbound_routing_entry) sai_status_t statuses[entries_count] = {}; sai_outbound_routing_entry_t entries[entries_count] = { - { .switch_id = switchid, .eni_id = eni0, .destination = dst0}, - { .switch_id = switchid, .eni_id = eni1, .destination = dst1}, + { .switch_id = switchid, .destination = dst0, .outbound_routing_group_id = outbound_routing_group0}, + { .switch_id = switchid, .destination = dst1, .outbound_routing_group_id = outbound_routing_group1}, }; EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkCreate(entries_count, entries, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR, statuses)); @@ -1219,8 +1241,8 @@ TEST(Meta, bulk_dash_outbound_routing_entry) EXPECT_EQ(SAI_STATUS_SUCCESS, statuses[i]); } - remove_eni(m, eni0); - remove_eni(m, eni1); + remove_outbound_routing_group(m, outbound_routing_group0); + remove_outbound_routing_group(m, outbound_routing_group1); remove_vnet(m, vnet0); remove_vnet(m, vnet1); remove_counter(m, counter0); diff --git a/unittest/syncd/TestVendorSai.cpp b/unittest/syncd/TestVendorSai.cpp index 10a0c1356..d369d40e9 100644 --- a/unittest/syncd/TestVendorSai.cpp +++ b/unittest/syncd/TestVendorSai.cpp @@ -377,6 +377,28 @@ static void remove_eni(VendorSai &sai, sai_object_id_t eni) EXPECT_EQ(SAI_STATUS_SUCCESS, sai.remove((sai_object_type_t)SAI_OBJECT_TYPE_ENI, eni)); } +static sai_object_id_t create_outbound_routing_group(VendorSai &sai, sai_object_id_t switchid, bool disabled) +{ + SWSS_LOG_ENTER(); + + sai_object_id_t oid; + sai_attribute_t attr; + + attr.id = SAI_OUTBOUND_ROUTING_GROUP_ATTR_DISABLED; + attr.value.booldata = disabled; + + EXPECT_EQ(SAI_STATUS_SUCCESS, sai.create((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, &oid, switchid, 1, &attr)); + + return oid; +} + +static void remove_outbound_routing_group(VendorSai &sai, sai_object_id_t outbound_routing_group) +{ + SWSS_LOG_ENTER(); + + EXPECT_EQ(SAI_STATUS_SUCCESS, sai.remove((sai_object_type_t)SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP, outbound_routing_group)); +} + TEST(VendorSai, quad_dash_direction_lookup) { VendorSai sai; @@ -1172,7 +1194,7 @@ TEST(VendorSai, quad_dash_outbound_routing_entry) sai_object_id_t counter = create_counter(sai, switchid); sai_object_id_t vnet = create_vnet(sai, switchid, 101); - sai_object_id_t eni = create_eni(sai, switchid, vnet); + sai_object_id_t outbound_routing_group = create_outbound_routing_group(sai, switchid, false); sai_ip_address_t oip6; oip6.addr_family = SAI_IP_ADDR_FAMILY_IPV6; @@ -1180,7 +1202,7 @@ TEST(VendorSai, quad_dash_outbound_routing_entry) sai_outbound_routing_entry_t entry0; entry0.switch_id = switchid; - entry0.eni_id = eni; + entry0.outbound_routing_group_id = outbound_routing_group; entry0.destination.addr_family = SAI_IP_ADDR_FAMILY_IPV4; inet_pton(AF_INET, "192.168.1.0", &entry0.destination.addr.ip4); inet_pton(AF_INET, "255.255.255.0", &entry0.destination.mask.ip4); @@ -1202,7 +1224,7 @@ TEST(VendorSai, quad_dash_outbound_routing_entry) EXPECT_EQ(SAI_STATUS_SUCCESS, sai.remove(&entry0)); - remove_eni(sai, eni); + remove_outbound_routing_group(sai, outbound_routing_group); remove_vnet(sai, vnet); remove_counter(sai, counter); } @@ -1228,8 +1250,8 @@ TEST(VendorSai, bulk_dash_outbound_routing_entry) sai_object_id_t vnet0 = create_vnet(sai, switchid, 101); sai_object_id_t vnet1 = create_vnet(sai, switchid, 102); - sai_object_id_t eni0 = create_eni(sai, switchid, vnet0); - sai_object_id_t eni1 = create_eni(sai, switchid, vnet1); + sai_object_id_t outbound_routing_group0 = create_outbound_routing_group(sai, switchid, false); + sai_object_id_t outbound_routing_group1 = create_outbound_routing_group(sai, switchid, false); sai_ip_prefix_t dst0 = {}; sai_ip_prefix_t dst1 = {}; @@ -1263,8 +1285,8 @@ TEST(VendorSai, bulk_dash_outbound_routing_entry) sai_status_t statuses[entries_count] = {}; sai_outbound_routing_entry_t entries[entries_count] = { - { .switch_id = switchid, .eni_id = eni0, .destination = dst0}, - { .switch_id = switchid, .eni_id = eni1, .destination = dst1}, + { .switch_id = switchid, .destination = dst0, .outbound_routing_group_id = outbound_routing_group0}, + { .switch_id = switchid, .destination = dst1, .outbound_routing_group_id = outbound_routing_group1}, }; EXPECT_EQ(SAI_STATUS_SUCCESS, sai.bulkCreate(entries_count, entries, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR, statuses)); @@ -1277,8 +1299,8 @@ TEST(VendorSai, bulk_dash_outbound_routing_entry) EXPECT_EQ(SAI_STATUS_SUCCESS, statuses[i]); } - remove_eni(sai, eni0); - remove_eni(sai, eni1); + remove_outbound_routing_group(sai, outbound_routing_group0); + remove_outbound_routing_group(sai, outbound_routing_group1); remove_vnet(sai, vnet0); remove_vnet(sai, vnet1); remove_counter(sai, counter0);