Skip to content

Commit

Permalink
Merge branch 'master' into neighbor_bulk
Browse files Browse the repository at this point in the history
  • Loading branch information
Ndancejic authored May 28, 2024
2 parents fb2e304 + 20bcfe1 commit ea49a5d
Show file tree
Hide file tree
Showing 181 changed files with 5,355 additions and 53 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*.so
*.pyc
*_wrap.cpp
*.bak

# Packaging Files #
###################
Expand Down Expand Up @@ -111,6 +112,8 @@ unittest/meta/tests
unittest/syncd/tests
unittest/vslib/tests
unittest/vslib/testslibsaivs
unittest/proxylib/tests
unittest/proxylib/testslibsaiproxy
vslib/tests

# Temporary files #
Expand Down
2 changes: 1 addition & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBDIRS = meta lib vslib pyext
SUBDIRS = meta lib vslib pyext proxylib

if SYNCD
SUBDIRS += syncd saiplayer saidump saidiscovery saisdkdump saiasiccmp tests unittest
Expand Down
2 changes: 2 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -290,11 +290,13 @@ AC_OUTPUT(Makefile
saidiscovery/Makefile
saiasiccmp/Makefile
tests/Makefile
proxylib/Makefile
unittest/Makefile
unittest/meta/Makefile
unittest/lib/Makefile
unittest/vslib/Makefile
unittest/syncd/Makefile
unittest/proxylib/Makefile
pyext/Makefile
pyext/py2/Makefile
pyext/py3/Makefile)
12 changes: 12 additions & 0 deletions lib/ClientSai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1497,3 +1497,15 @@ sai_status_t ClientSai::logSet(

return SAI_STATUS_SUCCESS;
}

sai_status_t ClientSai::queryApiVersion(
_Out_ sai_api_version_t *version)
{
MUTEX();
SWSS_LOG_ENTER();
REDIS_CHECK_API_INITIALIZED();

SWSS_LOG_ERROR("queryApiVersion not implemented, FIXME");

return SAI_STATUS_NOT_IMPLEMENTED;
}
3 changes: 3 additions & 0 deletions lib/ClientSai.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

private: // QUAD API helpers

sai_status_t create(
Expand Down
10 changes: 10 additions & 0 deletions lib/ClientServerSai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -592,3 +592,13 @@ sai_status_t ClientServerSai::logSet(

return m_sai->logSet(api, log_level);
}

sai_status_t ClientServerSai::queryApiVersion(
_Out_ sai_api_version_t *version)
{
MUTEX();
SWSS_LOG_ENTER();
REDIS_CHECK_API_INITIALIZED();

return m_sai->queryApiVersion(version);
}
3 changes: 3 additions & 0 deletions lib/ClientServerSai.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

private:

bool m_apiInitialized;
Expand Down
1 change: 1 addition & 0 deletions lib/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ libsairedis_la_SOURCES = \
sai_redis_ars.cpp \
sai_redis_ars_profile.cpp \
sai_redis_twamp.cpp \
sai_redis_poe.cpp \
sai_redis_dash_meter.cpp

libSaiRedis_a_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
Expand Down
21 changes: 21 additions & 0 deletions lib/RedisRemoteSaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1854,6 +1854,27 @@ sai_status_t RedisRemoteSaiInterface::logSet(
return SAI_STATUS_SUCCESS;
}

sai_status_t RedisRemoteSaiInterface::queryApiVersion(
_Out_ sai_api_version_t *version)
{
SWSS_LOG_ENTER();

if (version)
{
*version = SAI_API_VERSION;

// TODO FIXME implement proper query for syncd, currently this is not an issue since swss is not using this API

SWSS_LOG_WARN("retruning SAI API version %d with sairedis compiled SAI headers, not actual libsai.so", SAI_API_VERSION);

return SAI_STATUS_SUCCESS;
}

SWSS_LOG_ERROR("version parameter is NULL");

return SAI_STATUS_INVALID_PARAMETER;
}

sai_status_t RedisRemoteSaiInterface::sai_redis_notify_syncd(
_In_ sai_object_id_t switchId,
_In_ const sai_attribute_t *attr)
Expand Down
3 changes: 3 additions & 0 deletions lib/RedisRemoteSaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

public: // notify syncd

virtual sai_status_t notifySyncd(
Expand Down
25 changes: 25 additions & 0 deletions lib/Sai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -700,6 +700,31 @@ sai_status_t Sai::logSet(
return SAI_STATUS_SUCCESS;
}

sai_status_t Sai::queryApiVersion(
_Out_ sai_api_version_t *version)
{
MUTEX();
SWSS_LOG_ENTER();
REDIS_CHECK_API_INITIALIZED();

// TODO we should use specific context, but we don't know which one since
// there is no object ID parameter, we can use default context or cast
// version as context id same as passed in SAI_REDIS_SWITCH_ATTR_CONTEXT
// currently we will return just first context on context map, since
// user maybe not aware of trick with casting context

for (auto&kvp: m_contextMap)
{
SWSS_LOG_WARN("using first context");

return kvp.second->m_meta->queryApiVersion(version);
}

SWSS_LOG_ERROR("context map is empty");

return SAI_STATUS_FAILURE;
}

/*
* NOTE: Notifications during switch create and switch remove.
*
Expand Down
3 changes: 3 additions & 0 deletions lib/Sai.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

private:

sai_switch_notifications_t handle_notification(
Expand Down
10 changes: 10 additions & 0 deletions lib/ServerSai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,16 @@ sai_status_t ServerSai::logSet(
return m_sai->logSet(api, log_level);
}

sai_status_t ServerSai::queryApiVersion(
_Out_ sai_api_version_t *version)
{
MUTEX();
SWSS_LOG_ENTER();
REDIS_CHECK_API_INITIALIZED();

return m_sai->queryApiVersion(version);
}

void ServerSai::serverThreadFunction()
{
SWSS_LOG_ENTER();
Expand Down
3 changes: 3 additions & 0 deletions lib/ServerSai.h
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

private:

void serverThreadFunction();
Expand Down
3 changes: 3 additions & 0 deletions lib/SkipRecordAttrContainer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ SkipRecordAttrContainer::SkipRecordAttrContainer()
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY);
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE);
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP);
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_TEMP_LIST);
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_MAX_TEMP);
add(SAI_OBJECT_TYPE_SWITCH, SAI_SWITCH_ATTR_AVERAGE_TEMP);

add(SAI_OBJECT_TYPE_ACL_TABLE, SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY);
add(SAI_OBJECT_TYPE_ACL_TABLE, SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER);
Expand Down
1 change: 1 addition & 0 deletions lib/sai_redis.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ PRIVATE extern const sai_my_mac_api_t redis_my_mac_api;
PRIVATE extern const sai_ipsec_api_t redis_ipsec_api;
PRIVATE extern const sai_twamp_api_t redis_twamp_api;
PRIVATE extern const sai_dash_meter_api_t redis_dash_meter_api;
PRIVATE extern const sai_poe_api_t redis_poe_api;

PRIVATE extern std::shared_ptr<sairedis::SaiInterface> redis_sai;

Expand Down
16 changes: 2 additions & 14 deletions lib/sai_redis_interfacequery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ static sai_apis_t redis_apis = {
API(ars),
API(ars_profile),
API(twamp),
API(poe),
API(bmtor),
API(dash_acl),
API(dash_direction_lookup),
Expand Down Expand Up @@ -260,20 +261,7 @@ sai_status_t sai_query_api_version(
{
SWSS_LOG_ENTER();

if (version)
{
*version = SAI_API_VERSION;

// TODO FIXME implement proper query for syncd, currently this is not an issue since swss is not using this API

SWSS_LOG_WARN("retruning SAI API version %d with sairedis compiled SAI headers, not actual libsai.so", SAI_API_VERSION);

return SAI_STATUS_SUCCESS;
}

SWSS_LOG_ERROR("version parameter is NULL");

return SAI_STATUS_INVALID_PARAMETER;
return redis_sai->queryApiVersion(version);
}

sai_status_t sai_bulk_object_get_stats(
Expand Down
12 changes: 12 additions & 0 deletions lib/sai_redis_poe.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "sai_redis.h"

REDIS_GENERIC_QUAD(POE_DEVICE,poe_device);
REDIS_GENERIC_QUAD(POE_PSE,poe_pse);
REDIS_GENERIC_QUAD(POE_PORT,poe_port);

const sai_poe_api_t redis_poe_api = {

REDIS_GENERIC_QUAD_API(poe_device)
REDIS_GENERIC_QUAD_API(poe_pse)
REDIS_GENERIC_QUAD_API(poe_port)
};
17 changes: 17 additions & 0 deletions meta/DummySaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -418,3 +418,20 @@ sai_status_t DummySaiInterface::logSet(

return m_status;
}

sai_status_t DummySaiInterface::queryApiVersion(
_Out_ sai_api_version_t *version)
{
SWSS_LOG_ENTER();

if (version)
{
*version = SAI_API_VERSION;

return m_status;
}

SWSS_LOG_ERROR("version parameter is NULL");

return m_status;
}
3 changes: 3 additions & 0 deletions meta/DummySaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,9 @@ namespace saimeta
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

protected:

sai_status_t m_status;
Expand Down
10 changes: 10 additions & 0 deletions meta/Meta.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1377,6 +1377,16 @@ sai_status_t Meta::logSet(
return m_implementation->logSet(api, log_level);
}

sai_status_t Meta::queryApiVersion(
_Out_ sai_api_version_t *version)
{
SWSS_LOG_ENTER();

PARAMETER_CHECK_IF_NOT_NULL(version);

return m_implementation->queryApiVersion(version);
}

void Meta::clean_after_switch_remove(
_In_ sai_object_id_t switchId)
{
Expand Down
3 changes: 3 additions & 0 deletions meta/Meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,9 @@ namespace saimeta
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) override;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) override;

public:

void meta_init_db();
Expand Down
3 changes: 3 additions & 0 deletions meta/SaiInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,9 @@ namespace sairedis
_In_ sai_api_t api,
_In_ sai_log_level_t log_level) = 0;

virtual sai_status_t queryApiVersion(
_Out_ sai_api_version_t *version) = 0;

public: // non SAI API

virtual sai_log_level_t logGet(
Expand Down
Loading

0 comments on commit ea49a5d

Please sign in to comment.