Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion SAI
Submodule SAI updated 62 files
+40 −0 azure-pipelines.yml
+114 −0 doc/Override-VRF.md
+158 −0 doc/Pre-Ingress-ACL.md
+98 −0 doc/SAI-Proposal-versioning.md
+1 −1 experimental/saiextensions.h
+2 −2 flexsai/p4/backend/json_stage/analyzer.h
+1 −1 flexsai/p4/backend/json_stage/expression.h
+1 −1 flexsai/p4/backend/json_stage/lower.cpp
+1 −1 flexsai/p4/backend/json_stage/lower.h
+1 −1 flexsai/p4/backend/json_stage/saiSwitch.cpp
+3 −3 flexsai/p4/backend/output_stage/SAI_templates/sai_template.h
+14 −1 inc/saiacl.h
+3 −0 inc/saihash.h
+39 −8 inc/saimacsec.h
+97 −0 inc/saimpls.h
+4 −2 inc/saineighbor.h
+10 −19 inc/saiport.h
+9 −0 inc/sairouterinterface.h
+344 −20 inc/saiswitch.h
+21 −59 inc/saitunnel.h
+33 −0 inc/saitypes.h
+1 −0 meta/Doxyfile
+10 −1 meta/Makefile
+3 −0 meta/acronyms.txt
+71 −69 meta/aspell.en.pws
+255 −7 meta/parse.pl
+15 −0 meta/saimetadatatypes.h
+2 −2 meta/saimetadatautils.c
+100 −18 meta/saisanitycheck.c
+9 −9 meta/saiserializetest.c
+36 −0 saiversion.h
+0 −6 stub/Makefile.am
+0 −39 stub/README.md
+0 −8 stub/autoclean.sh
+0 −75 stub/autogen.sh
+0 −0 stub/config/.gitignore
+0 −91 stub/configure.ac
+0 −279 stub/inc/stub_sai.h
+0 −9 stub/sai_interface.ver
+0 −39 stub/src/Makefile.am
+0 −380 stub/src/stub_sai_fdb.c
+0 −369 stub/src/stub_sai_host_interface.c
+0 −296 stub/src/stub_sai_interfacequery.c
+0 −298 stub/src/stub_sai_neighbor.c
+0 −295 stub/src/stub_sai_nexthop.c
+0 −682 stub/src/stub_sai_nexthopgroup.c
+0 −1,384 stub/src/stub_sai_port.c
+0 −423 stub/src/stub_sai_rif.c
+0 −315 stub/src/stub_sai_route.c
+0 −370 stub/src/stub_sai_router.c
+0 −1,233 stub/src/stub_sai_switch.c
+0 −869 stub/src/stub_sai_utils.c
+0 −527 stub/src/stub_sai_vlan.c
+3 −3 test/basic_router/basic_router.cpp
+2 −2 test/basic_router/ip.cpp
+1 −1 test/basic_router/nexthopgrp_mgr.cpp
+4 −4 test/basic_router/route_mgr.cpp
+1 −1 test/sai_ut/routing/sai_l3_neighbor_unit_test.cpp
+1 −1 test/sai_ut/routing/sai_l3_nexthop_unit_test.cpp
+1 −1 test/sai_ut/routing/sai_l3_nexthopgroup_unit_test.cpp
+1 −1 test/sai_ut/routing/sai_l3_rif_unit_test.cpp
+1 −1 test/saithrift/src/switch_sai_rpc_server.cpp
3 changes: 3 additions & 0 deletions lib/inc/RedisRemoteSaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,18 +185,21 @@ namespace sairedis
public: // bulk create ENTRY

SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(fdb_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(inseg_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(nat_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(route_entry);

public: // bulk remove ENTRY

SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(fdb_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(inseg_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(nat_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(route_entry);

public: // bulk set ENTRY

SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_SET_ENTRY(fdb_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_SET_ENTRY(inseg_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_SET_ENTRY(nat_entry);
SAIREDIS_REDISREMOTESAIINTERFACE_DECLARE_BULK_SET_ENTRY(route_entry);

Expand Down
3 changes: 3 additions & 0 deletions lib/inc/Sai.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,21 @@ namespace sairedis
public: // bulk create ENTRY

SAIREDIS_SAI_DECLARE_BULK_CREATE_ENTRY(fdb_entry);
SAIREDIS_SAI_DECLARE_BULK_CREATE_ENTRY(inseg_entry);
SAIREDIS_SAI_DECLARE_BULK_CREATE_ENTRY(nat_entry);
SAIREDIS_SAI_DECLARE_BULK_CREATE_ENTRY(route_entry);

public: // bulk remove ENTRY

SAIREDIS_SAI_DECLARE_BULK_REMOVE_ENTRY(fdb_entry);
SAIREDIS_SAI_DECLARE_BULK_REMOVE_ENTRY(inseg_entry);
SAIREDIS_SAI_DECLARE_BULK_REMOVE_ENTRY(nat_entry);
SAIREDIS_SAI_DECLARE_BULK_REMOVE_ENTRY(route_entry);

public: // bulk set ENTRY

SAIREDIS_SAI_DECLARE_BULK_SET_ENTRY(fdb_entry);
SAIREDIS_SAI_DECLARE_BULK_SET_ENTRY(inseg_entry);
SAIREDIS_SAI_DECLARE_BULK_SET_ENTRY(nat_entry);
SAIREDIS_SAI_DECLARE_BULK_SET_ENTRY(route_entry);

Expand Down
3 changes: 3 additions & 0 deletions lib/inc/SaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,18 +168,21 @@ namespace sairedis
public: // bulk create ENTRY

SAIREDIS_SAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(fdb_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(inseg_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(nat_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(route_entry);

public: // bulk remove ENTRY

SAIREDIS_SAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(fdb_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(inseg_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(nat_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(route_entry);

public: // bulk set ENTRY

SAIREDIS_SAIINTERFACE_DECLARE_BULK_SET_ENTRY(fdb_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_SET_ENTRY(inseg_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_SET_ENTRY(nat_entry);
SAIREDIS_SAIINTERFACE_DECLARE_BULK_SET_ENTRY(route_entry);

Expand Down
76 changes: 76 additions & 0 deletions lib/src/RedisRemoteSaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1410,6 +1410,24 @@ sai_status_t RedisRemoteSaiInterface::bulkRemove(
return bulkRemove(SAI_OBJECT_TYPE_NAT_ENTRY, serializedObjectIds, mode, object_statuses);
}

sai_status_t RedisRemoteSaiInterface::bulkRemove(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t *inseg_entry,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

std::vector<std::string> serializedObjectIds;

for (uint32_t idx = 0; idx < object_count; idx++)
{
serializedObjectIds.emplace_back(sai_serialize_inseg_entry(inseg_entry[idx]));
}

return bulkRemove(SAI_OBJECT_TYPE_INSEG_ENTRY, serializedObjectIds, mode, object_statuses);
}

sai_status_t RedisRemoteSaiInterface::bulkRemove(
_In_ uint32_t object_count,
_In_ const sai_fdb_entry_t *fdb_entry,
Expand Down Expand Up @@ -1486,6 +1504,25 @@ sai_status_t RedisRemoteSaiInterface::bulkSet(
return bulkSet(SAI_OBJECT_TYPE_NAT_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
}

sai_status_t RedisRemoteSaiInterface::bulkSet(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t *inseg_entry,
_In_ const sai_attribute_t *attr_list,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

std::vector<std::string> serializedObjectIds;

for (uint32_t idx = 0; idx < object_count; idx++)
{
serializedObjectIds.emplace_back(sai_serialize_inseg_entry(inseg_entry[idx]));
}

return bulkSet(SAI_OBJECT_TYPE_INSEG_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
}

sai_status_t RedisRemoteSaiInterface::bulkSet(
_In_ uint32_t object_count,
_In_ const sai_fdb_entry_t *fdb_entry,
Expand Down Expand Up @@ -1714,6 +1751,45 @@ sai_status_t RedisRemoteSaiInterface::bulkCreate(
object_statuses);
}

sai_status_t RedisRemoteSaiInterface::bulkCreate(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t* inseg_entry,
_In_ const uint32_t *attr_count,
_In_ const sai_attribute_t **attr_list,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

// TODO support mode

static PerformanceIntervalTimer timer("RedisRemoteSaiInterface::bulkCreate(inseg_entry)");

timer.start();

std::vector<std::string> serialized_object_ids;

// on create vid is put in db by syncd
for (uint32_t idx = 0; idx < object_count; idx++)
{
std::string str_object_id = sai_serialize_inseg_entry(inseg_entry[idx]);
serialized_object_ids.push_back(str_object_id);
}

auto status = bulkCreate(
SAI_OBJECT_TYPE_INSEG_ENTRY,
serialized_object_ids,
attr_count,
attr_list,
mode,
object_statuses);

timer.stop();

timer.inc(object_count);

return status;
}

sai_status_t RedisRemoteSaiInterface::bulkCreate(
_In_ uint32_t object_count,
Expand Down
3 changes: 3 additions & 0 deletions lib/src/Sai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,7 @@ sai_status_t Sai::bulkCreate( \

DECLARE_BULK_CREATE_ENTRY(ROUTE_ENTRY,route_entry)
DECLARE_BULK_CREATE_ENTRY(FDB_ENTRY,fdb_entry);
DECLARE_BULK_CREATE_ENTRY(INSEG_ENTRY,inseg_entry);
DECLARE_BULK_CREATE_ENTRY(NAT_ENTRY,nat_entry)


Expand All @@ -530,6 +531,7 @@ sai_status_t Sai::bulkRemove( \

DECLARE_BULK_REMOVE_ENTRY(ROUTE_ENTRY,route_entry)
DECLARE_BULK_REMOVE_ENTRY(FDB_ENTRY,fdb_entry);
DECLARE_BULK_REMOVE_ENTRY(INSEG_ENTRY,inseg_entry);
DECLARE_BULK_REMOVE_ENTRY(NAT_ENTRY,nat_entry)

// BULK SET
Expand All @@ -556,6 +558,7 @@ sai_status_t Sai::bulkSet( \

DECLARE_BULK_SET_ENTRY(ROUTE_ENTRY,route_entry);
DECLARE_BULK_SET_ENTRY(FDB_ENTRY,fdb_entry);
DECLARE_BULK_SET_ENTRY(INSEG_ENTRY,inseg_entry);
DECLARE_BULK_SET_ENTRY(NAT_ENTRY,nat_entry);

// NON QUAD API
Expand Down
12 changes: 12 additions & 0 deletions lib/src/SaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ sai_status_t SaiInterface::create(
case SAI_OBJECT_TYPE_NAT_ENTRY:
return create(&metaKey.objectkey.key.nat_entry, attr_count, attr_list);

case SAI_OBJECT_TYPE_INSEG_ENTRY:
return create(&metaKey.objectkey.key.inseg_entry, attr_count, attr_list);

default:

SWSS_LOG_ERROR("object type %s not implemented, FIXME", info->objecttypename);
Expand Down Expand Up @@ -81,6 +84,9 @@ sai_status_t SaiInterface::remove(
case SAI_OBJECT_TYPE_NAT_ENTRY:
return remove(&metaKey.objectkey.key.nat_entry);

case SAI_OBJECT_TYPE_INSEG_ENTRY:
return remove(&metaKey.objectkey.key.inseg_entry);

default:

SWSS_LOG_ERROR("object type %s not implemented, FIXME", info->objecttypename);
Expand Down Expand Up @@ -123,6 +129,9 @@ sai_status_t SaiInterface::set(
case SAI_OBJECT_TYPE_NAT_ENTRY:
return set(&metaKey.objectkey.key.nat_entry, attr);

case SAI_OBJECT_TYPE_INSEG_ENTRY:
return set(&metaKey.objectkey.key.inseg_entry, attr);

default:

SWSS_LOG_ERROR("object type %s not implemented, FIXME", info->objecttypename);
Expand Down Expand Up @@ -166,6 +175,9 @@ sai_status_t SaiInterface::get(
case SAI_OBJECT_TYPE_NAT_ENTRY:
return get(&metaKey.objectkey.key.nat_entry, attr_count, attr_list);

case SAI_OBJECT_TYPE_INSEG_ENTRY:
return get(&metaKey.objectkey.key.inseg_entry, attr_count, attr_list);

default:

SWSS_LOG_ERROR("object type %s not implemented, FIXME", info->objecttypename);
Expand Down
2 changes: 2 additions & 0 deletions lib/src/sai_redis_mpls.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#include "sai_redis.h"

REDIS_GENERIC_QUAD_ENTRY(INSEG_ENTRY,inseg_entry);
REDIS_BULK_QUAD_ENTRY(INSEG_ENTRY,inseg_entry);

const sai_mpls_api_t redis_mpls_api = {

REDIS_GENERIC_QUAD_API(inseg_entry)
REDIS_BULK_QUAD_API(inseg_entry)
};
3 changes: 3 additions & 0 deletions lib/src/sai_redis_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ static sai_status_t redis_switch_mdio_write(

REDIS_GENERIC_QUAD(SWITCH,switch);
REDIS_GENERIC_STATS(SWITCH,switch);
REDIS_GENERIC_QUAD(SWITCH_TUNNEL,switch_tunnel);

static sai_status_t redis_create_switch_uniq(
_Out_ sai_object_id_t *switch_id,
Expand All @@ -52,4 +53,6 @@ const sai_switch_api_t redis_switch_api = {

redis_switch_mdio_read,
redis_switch_mdio_write,

REDIS_GENERIC_QUAD_API(switch_tunnel)
};
45 changes: 45 additions & 0 deletions meta/DummySaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,20 @@ sai_status_t DummySaiInterface::bulkRemove(
return m_status;
}

sai_status_t DummySaiInterface::bulkRemove(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t *inseg_entry,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

for (uint32_t idx = 0; idx < object_count; idx++)
object_statuses[idx] = m_status;

return m_status;
}

sai_status_t DummySaiInterface::bulkRemove(
_In_ uint32_t object_count,
_In_ const sai_fdb_entry_t *fdb_entry,
Expand Down Expand Up @@ -319,6 +333,21 @@ sai_status_t DummySaiInterface::bulkSet(
return m_status;
}

sai_status_t DummySaiInterface::bulkSet(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t *inseg_entry,
_In_ const sai_attribute_t *attr_list,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

for (uint32_t idx = 0; idx < object_count; idx++)
object_statuses[idx] = m_status;

return m_status;
}

sai_status_t DummySaiInterface::bulkSet(
_In_ uint32_t object_count,
_In_ const sai_fdb_entry_t *fdb_entry,
Expand Down Expand Up @@ -384,6 +413,22 @@ sai_status_t DummySaiInterface::bulkCreate(
return m_status;
}

sai_status_t DummySaiInterface::bulkCreate(
_In_ uint32_t object_count,
_In_ const sai_inseg_entry_t *inseg_entry,
_In_ const uint32_t *attr_count,
_In_ const sai_attribute_t **attr_list,
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses)
{
SWSS_LOG_ENTER();

for (uint32_t idx = 0; idx < object_count; idx++)
object_statuses[idx] = m_status;

return m_status;
}

sai_status_t DummySaiInterface::bulkCreate(
_In_ uint32_t object_count,
_In_ const sai_nat_entry_t *nat_entry,
Expand Down
3 changes: 3 additions & 0 deletions meta/DummySaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,18 +176,21 @@ namespace saimeta
public: // bulk create ENTRY

SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(fdb_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(inseg_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(nat_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_CREATE_ENTRY(route_entry);

public: // bulk remove ENTRY

SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(fdb_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(inseg_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(nat_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_REMOVE_ENTRY(route_entry);

public: // bulk set ENTRY

SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_SET_ENTRY(fdb_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_SET_ENTRY(inseg_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_SET_ENTRY(nat_entry);
SAIMETA_DUMMYSAIINTERFACE_DECLARE_BULK_SET_ENTRY(route_entry);

Expand Down
Loading