Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
01008cc
[counter]: support enable/disable counter query (#322)
sihuihan88 Jun 19, 2018
5fee797
[syncd]: Clean-up log messages (#331)
Jun 19, 2018
9846397
Use MAC from EEPROM for Interfaces (#329)
andriymoroz-mlnx Jul 3, 2018
8585fc8
SAI 1.3 changes (#327)
prsunny Jul 3, 2018
c808a0f
Add syncd/saiplayer feature: inspect ASIC (#332)
qiluo-msft Jul 10, 2018
c2c5e7c
Dataplane telemetry support in SONiC (#328)
shruthi9 Jul 12, 2018
9380373
Suppress FDB events if notifier queue exceeds limit (#334)
prsunny Aug 1, 2018
76a7d1a
[SAI] upgrade to SAI header version v1.3.3
yxieca Aug 16, 2018
713afc4
[redis router interface] define dummy functions for newly added sai APIs
yxieca Aug 16, 2018
7561626
[router interface] define dummy functions for newly added APIs
yxieca Aug 16, 2018
1c06195
Merge pull request #338 from yxieca/v1.3.3
yxieca Aug 17, 2018
7cd75c0
[saimeta]: Fix typo: > then -> >; don't exists -> doesn't exist (#339)
Aug 26, 2018
bc5dea0
SAI redis api idempotation support
jipanyang May 6, 2018
1b4b91c
Minor optimization for idempotent libsairedis API
jipanyang May 29, 2018
8e10399
Add lookup cache for mapping of attributes to OID and OID to owner
jipanyang May 30, 2018
b5af673
Fix the default object removal check on asic DB
jipanyang Jun 6, 2018
1ee0945
Fix sai-redis unit test. view comparison is not compatible with libsa…
jipanyang Jun 23, 2018
4cb64fd
Use the new RedisClient library function
jipanyang Jul 20, 2018
e82105a
Fix switch attribute set logic error
jipanyang Aug 27, 2018
b59918c
Move major idempentent API functions to separate files
jipanyang Aug 28, 2018
2c2a13c
Cleanup usage (#340)
qiluo-msft Aug 28, 2018
2322375
Use syncd -u option (#341)
qiluo-msft Aug 29, 2018
50e1915
[misc]: Fix typos (#342)
Aug 29, 2018
83e8adc
Put restoreDB operation to the same pipeline as libsairedis asicDB se…
jipanyang Sep 7, 2018
04f618b
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Sep 7, 2018
0e98931
Fix restore problem with default objects from ASIC
jipanyang Sep 8, 2018
fd75e54
sairedis: add while loop to make syncd processEvent() handle as many …
dzhangalibaba Sep 11, 2018
e402ff6
update SAI header (#344)
lguohan Sep 11, 2018
5ef97ca
Fix findBridgeVlanForPortVlan for 1Q bridge (#345)
qiluo-msft Sep 12, 2018
1707792
Fix default attributes entry removal problem
jipanyang Sep 12, 2018
d3fa78c
sairedis: add RedisPipeline instance(redispipeline enabled by default…
dzhangalibaba Sep 19, 2018
b9424f0
Fix: FDB flush notification may have no bridge port id attr (#346)
qiluo-msft Sep 22, 2018
db30204
[syncd] setup warm reboot when requested and possible
yxieca Sep 14, 2018
bee3196
[syncd] rename restartType to shutdownType since it only controls shu…
yxieca Sep 25, 2018
e90430e
Disable idempotent libsairedis API if request for SAI_REDIS_SWITCH_AT…
jipanyang Sep 25, 2018
6f99237
code refactoring
jipanyang Sep 26, 2018
acadc12
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Sep 26, 2018
1e74e71
Merge pull request #347 from yxieca/warmshut
yxieca Oct 1, 2018
55f0b1d
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Oct 2, 2018
bc88348
Comparison logic handle port speed attribute (#348)
kcudnik Oct 5, 2018
1590e81
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Oct 10, 2018
9408686
[watarmark] add watermark support (#349)
mykolaf Oct 10, 2018
05ef677
Add special comparison logic for LAG (#351)
kcudnik Oct 10, 2018
64ffc8c
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Oct 10, 2018
6fdf6ff
Add next hop group specific comparison logic (#353)
kcudnik Oct 16, 2018
9756e98
Submodule update to SAI v1.3.4 (#356)
prsunny Oct 17, 2018
004ce33
Add support for ACL table group specific logic (#358)
kcudnik Oct 19, 2018
85a579b
Fix optimized remove in comparison logic (#357)
kcudnik Oct 22, 2018
151e199
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Oct 22, 2018
a4ee3ad
Add VS support for counters (#363)
kcudnik Oct 26, 2018
15ef685
Add option to generate current dep graph to saidump (#361)
kcudnik Oct 27, 2018
39e70cd
Fix bulk route api signature (#365)
kcudnik Oct 27, 2018
1fdaf47
Add VS support for setting stats via redis DB channel (#366)
kcudnik Oct 29, 2018
4d9aa18
Add missing object types to virtual switch (#364)
kcudnik Oct 29, 2018
d655d20
[syncd] partial warm recovery support (#352)
yxieca Oct 29, 2018
88eb454
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Oct 30, 2018
a6b709a
[syncd] re-establish notifications after warm boot (#368)
yxieca Oct 31, 2018
c612c5e
Add specific comparison logic for more objects (#360)
kcudnik Oct 31, 2018
8ae173b
Refactor saidump graph generator (#367)
kcudnik Nov 1, 2018
8618212
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Nov 3, 2018
e8df347
Add best candidate search for router interface using tunnel term tabl…
kcudnik Nov 5, 2018
d1e26c3
Ignore order when compare QOS MAP list entries (#372)
kcudnik Nov 7, 2018
248a095
Add best candidate search for acl table (#371)
kcudnik Nov 7, 2018
38deb1e
update SAI submodule (#373)
lguohan Nov 9, 2018
9e1fa99
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Nov 10, 2018
333c5ff
Refactor sairedis (#375)
kcudnik Nov 11, 2018
72d8cc3
Add warm boot support for virtual switch (#374)
kcudnik Nov 12, 2018
ebb9b7a
[syncd] provide docker name when checking warm restart (#377)
yxieca Nov 14, 2018
11c386e
[syncd] always log ASIC operations performed after warm restart (#378)
yxieca Nov 14, 2018
b011f3d
Add cold discovered oids (#379)
kcudnik Nov 15, 2018
4d5a7bb
Rebuild VS local metadata on warm boot (#380)
kcudnik Nov 15, 2018
08fccb0
Add buffer pool logic and unittests (#381)
kcudnik Nov 15, 2018
398d24a
Add comments aspell check (#382)
kcudnik Nov 16, 2018
c88dc41
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Nov 16, 2018
4ad15f2
Fix the case of attribute add to an existing object
jipanyang Nov 17, 2018
5ddafbc
support virtual switch (#384)
lguohan Nov 18, 2018
efdd86f
Add support for lane map in virtual switch (#385)
kcudnik Nov 20, 2018
d146572
Fix interface name used on link message using lane map (#386)
kcudnik Nov 22, 2018
d96a668
Add asic operations count log by object type (#387)
kcudnik Nov 23, 2018
06418bb
[SAI header] upgrade SAI header to version v1.3.6 (#390)
yxieca Nov 26, 2018
11fc262
[sycnd] add 2 stage shutdown support for warm reboot (#391)
yxieca Nov 28, 2018
b4a7160
Drain asic queue before processing shutdown request (#388)
kcudnik Dec 3, 2018
cd97c60
Add support for recreate host interfaces tap devices on warm start (#…
kcudnik Dec 3, 2018
1288f77
[Mellanox|FFB]: Add support for Mellanox fast-fast boot in syncd (#389)
Dec 3, 2018
a732858
Process only shutdown requests after pre shutdown (#395)
kcudnik Dec 5, 2018
b5ba6c4
Add check ASIC vs DB state after comparison logic (#393)
kcudnik Dec 5, 2018
f734752
[.gitignore]: Add more files in .gitignore file (#396)
Dec 6, 2018
31fd65e
Fix pre shutdown select (#397)
kcudnik Dec 7, 2018
bb3ff64
[meta]: Add support for ip prefix (#402)
marian-pritsak Dec 14, 2018
ebd8dfc
Move stop notifications thread after remove switch (#401)
kcudnik Dec 18, 2018
dec9cde
[flex counter] lower the severity of log during stat support check (#…
mykolaf Dec 18, 2018
7846ab6
Don't generate asic operations when attr value is same as default (#404)
kcudnik Dec 20, 2018
e90bb63
Allow saiplayer to ignore failed GET responses (#406)
kcudnik Dec 20, 2018
ad56b2b
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Jan 2, 2019
60f97c3
[mellanox|ffb] use system level warm reboot for Mellanox fastfast boo…
stepanblyschak Jan 7, 2019
b1b739b
Add support for any number of ports in virtual switch using lane map …
kcudnik Jan 9, 2019
07bb9bf
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Jan 9, 2019
0a162ef
Remove obsoleted code
jipanyang Jan 9, 2019
fab5b55
Skip init/apply view request if idempotent libsairedis api is enabled.
jipanyang Jan 15, 2019
dc6328f
skipping redundant FDB create if entry found in asicDB
jipanyang Jan 16, 2019
03f14e5
Record libsairedis operations during restore phase at warning level.
jipanyang Jan 17, 2019
8793562
Update SAI pointer to latest master (#408)
marian-pritsak Jan 18, 2019
02d92f1
Add log info for not matching SG/IPG/QUEUES (#409)
kcudnik Jan 23, 2019
849525a
Initialize notification queue pointer before switch create (#411)
kcudnik Jan 24, 2019
1b6a661
install SAI extension header files into /usr/include/sai (#412)
lguohan Jan 24, 2019
c0a948d
Add WRED specific comparison logic (#413)
kcudnik Jan 30, 2019
29f1e3c
Update SAI pointer (#414)
marian-pritsak Jan 31, 2019
c03d639
Add more information on failed map sizes (#416)
kcudnik Feb 2, 2019
145ea44
[flex counter] handle router interface stats (#410)
mykolaf Feb 2, 2019
71f018a
Merge remote-tracking branch 'origin/master' into idempotent
jipanyang Feb 6, 2019
3cc391e
Update oid to attr mapping for non-oid objects upon sai set.
jipanyang Feb 16, 2019
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
44 changes: 44 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,44 @@
# Packaging Files #
###################
debian/files
debian/libsairedis-dbg/
debian/libsairedis-dbg.debhelper.log
debian/libsairedis-dbg.substvars
debian/libsairedis-dev.debhelper.log
debian/libsairedis-dev.substvars
debian/libsairedis.debhelper.log
debian/libsairedis.postinst.debhelper
debian/libsairedis.postrm.debhelper
debian/libsairedis.substvars
debian/libsaimetadata-dbg.debhelper.log
debian/libsaimetadata-dbg.substvars
debian/libsaimetadata-dbg/
debian/libsaimetadata-dev.debhelper.log
debian/libsaimetadata-dev.substvars
debian/libsaimetadata.debhelper.log
debian/libsaimetadata.postinst.debhelper
debian/libsaimetadata.postrm.debhelper
debian/libsaimetadata.substvars
debian/libsaivs-dbg/
debian/libsaivs-dbg.debhelper.log
debian/libsaivs-dbg.substvars
debian/libsaivs-dev.debhelper.log
debian/libsaivs-dev.substvars
debian/libsaivs.debhelper.log
debian/libsaivs.postinst.debhelper
debian/libsaivs.postrm.debhelper
debian/libsaivs.substvars
debian/syncd-rpc-dbg.debhelper.log
debian/syncd-rpc-dbg.substvars
debian/syncd-rpc-dbg/
debian/syncd-rpc.debhelper.log
debian/syncd-vs-dbg.debhelper.log
debian/syncd-vs-dbg.substvars
debian/syncd-vs-dbg/
debian/syncd-vs.debhelper.log
debian/syncd-dbg.debhelper.log
debian/syncd-dbg.substvars
debian/syncd-dbg/
debian/syncd.debhelper.log
debian/syncd.postinst.debhelper
debian/syncd.postrm.debhelper
Expand Down Expand Up @@ -57,6 +77,28 @@ stamp-h1
m4
config

# Test Files #
##############
meta/test-suite.log
meta/tests.log
meta/tests.trs

syncd/test-suite.log
syncd/tests

tests/brcm.pl.log
tests/brcm.pl.trs
tests/mlnx.pl.log
tests/mlnx.pl.trs
tests/swsslogentercheck.sh.log
tests/swsslogentercheck.sh.trs
tests/test-suite.log

vslib/src/test-suite.log
vslib/src/tests
vslib/src/tests.log
vslib/src/tests.trs

# Dependency Folder #
#####################
deps/
Expand All @@ -65,10 +107,12 @@ deps/
###############
syncd/syncd
syncd/syncd_request_shutdown
saidiscovery/saidiscovery
saiplayer/saiplayer
saidump/saidump
saisdkdump/saisdkdump
meta/tests
tests/vssyncd

# Temporary files #
###################
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
path = SAI
url = https://github.com/opencomputeproject/SAI.git
ignore = dirty
branch = v1.2
branch = v1.3
2 changes: 1 addition & 1 deletion SAI
Submodule SAI updated 352 files
3 changes: 3 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ AC_PROG_CXX
AC_PROG_LIBTOOL
AC_HEADER_STDC

AM_CONDITIONAL(sonic_asic_platform_barefoot, test x$CONFIGURED_PLATFORM = xbarefoot)
AM_CONDITIONAL(sonic_asic_platform_mellanox, test x$CONFIGURED_PLATFORM = xmellanox)

AC_ARG_ENABLE(debug,
[ --enable-debug turn on debugging],
[case "${enableval}" in
Expand Down
1 change: 1 addition & 0 deletions debian/libsairedis-dev.install
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
lib/inc/sairedis.h usr/include/sai
lib/inc/sai_redis_idempotent.h usr/include/sai
1 change: 1 addition & 0 deletions debian/libsaivs-dev.install
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
SAI/inc/*.h usr/include/sai/
SAI/experimental/*.h usr/include/sai/
181 changes: 102 additions & 79 deletions lib/inc/sai_redis.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ extern "C" {
#include "swss/select.h"
#include "swss/logger.h"
#include "meta/sai_meta.h"
#include "swss/warm_restart.h"

/*
* Switch index is encoded on 1 byte so we can have
Expand Down Expand Up @@ -50,7 +51,7 @@ extern void clear_local_state();
extern void setRecording(bool record);
extern sai_status_t setRecordingOutputDir(
_In_ const sai_attribute_t &attr);
extern void recordLine(std::string s);
extern void recordLine(const std::string &s);
extern std::string joinFieldValues(
_In_ const std::vector<swss::FieldValueTuple> &values);

Expand All @@ -70,13 +71,22 @@ extern std::shared_ptr<swss::RedisClient> g_redisClient;
extern std::mutex g_apimutex;

extern const sai_acl_api_t redis_acl_api;
extern const sai_buffer_api_t redis_buffer_api;
extern const sai_bfd_api_t redis_bfd_api;
extern const sai_bmtor_api_t redis_bmtor_api;
extern const sai_bridge_api_t redis_bridge_api;
extern const sai_buffer_api_t redis_buffer_api;
extern const sai_dtel_api_t redis_dtel_api;
extern const sai_fdb_api_t redis_fdb_api;
extern const sai_hash_api_t redis_hash_api;
extern const sai_hostif_api_t redis_hostif_api;
extern const sai_ipmc_api_t redis_ipmc_api;
extern const sai_ipmc_group_api_t redis_ipmc_group_api;
extern const sai_l2mc_api_t redis_l2mc_api;
extern const sai_l2mc_group_api_t redis_l2mc_group_api;
extern const sai_lag_api_t redis_lag_api;
extern const sai_mcast_fdb_api_t redis_mcast_fdb_api;
extern const sai_mirror_api_t redis_mirror_api;
extern const sai_mpls_api_t redis_mpls_api;
extern const sai_neighbor_api_t redis_neighbor_api;
extern const sai_next_hop_api_t redis_next_hop_api;
extern const sai_next_hop_group_api_t redis_next_hop_group_api;
Expand All @@ -86,12 +96,16 @@ extern const sai_qos_map_api_t redis_qos_map_api;
extern const sai_queue_api_t redis_queue_api;
extern const sai_route_api_t redis_route_api;
extern const sai_router_interface_api_t redis_router_interface_api;
extern const sai_rpf_group_api_t redis_rpf_group_api;
extern const sai_samplepacket_api_t redis_samplepacket_api;
extern const sai_scheduler_api_t redis_scheduler_api;
extern const sai_scheduler_group_api_t redis_scheduler_group_api;
extern const sai_segmentroute_api_t redis_segmentroute_api;
extern const sai_stp_api_t redis_stp_api;
extern const sai_switch_api_t redis_switch_api;
extern const sai_tam_api_t redis_tam_api;
extern const sai_tunnel_api_t redis_tunnel_api;
extern const sai_uburst_api_t redis_uburst_api;
extern const sai_udf_api_t redis_udf_api;
extern const sai_virtual_router_api_t redis_virtual_router_api;
extern const sai_vlan_api_t redis_vlan_api;
Expand All @@ -110,36 +124,76 @@ const sai_attribute_t* redis_get_attribute_by_id(
_In_ const sai_attribute_t *attr_list);

sai_object_id_t redis_create_virtual_object_id(
_In_ sai_object_type_t object_type);
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t switch_id);

void translate_rid_to_vid(
_In_ sai_object_type_t object_type,
_In_ uint32_t attr_count,
_In_ sai_attribute_t *attr_list);

// CREATE
// OID QUAD

sai_status_t redis_generic_create(
_In_ sai_object_type_t object_type,
_Out_ sai_object_id_t* object_id,
_Out_ sai_object_id_t *object_id,
_In_ sai_object_id_t switch_id,
_In_ uint32_t attr_count,
_In_ const sai_attribute_t *attr_list);

sai_status_t redis_generic_create_fdb_entry(
_In_ const sai_fdb_entry_t *fdb_entry,
_In_ uint32_t attr_count,
_In_ const sai_attribute_t *attr_list);
sai_status_t redis_generic_remove(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id);

sai_status_t redis_generic_create_neighbor_entry(
_In_ const sai_neighbor_entry_t* neighbor_entry,
_In_ uint32_t attr_count,
_In_ const sai_attribute_t *attr_list);
sai_status_t redis_generic_set(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ const sai_attribute_t *attr);

sai_status_t redis_generic_create_route_entry(
_In_ const sai_route_entry_t* route_entry,
sai_status_t redis_generic_get(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ uint32_t attr_count,
_In_ const sai_attribute_t *attr_list);
_Out_ sai_attribute_t *attr_list);

// ENTRY QUAD

#define REDIS_CREATE_ENTRY_DEF(ot) \
sai_status_t redis_generic_create_ ## ot( \
_In_ const sai_ ## ot ## _t * ot, \
_In_ uint32_t attr_count, \
_In_ const sai_attribute_t *attr_list);

#define REDIS_REMOVE_ENTRY_DEF(ot) \
sai_status_t redis_generic_remove_ ## ot( \
_In_ const sai_ ## ot ## _t * ot);

#define REDIS_SET_ENTRY_DEF(ot) \
sai_status_t redis_generic_set_ ## ot( \
_In_ const sai_ ## ot ## _t * ot, \
_In_ const sai_attribute_t *attr);

#define REDIS_GET_ENTRY_DEF(ot) \
sai_status_t redis_generic_get_ ## ot( \
_In_ const sai_ ## ot ## _t * ot, \
_In_ uint32_t attr_count, \
_Out_ sai_attribute_t *attr_list);

#define REDIS_ENTRY_QUAD(ot) \
REDIS_CREATE_ENTRY_DEF(ot) \
REDIS_REMOVE_ENTRY_DEF(ot) \
REDIS_SET_ENTRY_DEF(ot) \
REDIS_GET_ENTRY_DEF(ot)

REDIS_ENTRY_QUAD(fdb_entry);
REDIS_ENTRY_QUAD(inseg_entry);
REDIS_ENTRY_QUAD(ipmc_entry);
REDIS_ENTRY_QUAD(l2mc_entry);
REDIS_ENTRY_QUAD(mcast_fdb_entry);
REDIS_ENTRY_QUAD(neighbor_entry);
REDIS_ENTRY_QUAD(route_entry);

// BULK

sai_status_t redis_bulk_generic_create(
_In_ sai_object_type_t object_type,
Expand All @@ -148,29 +202,14 @@ sai_status_t redis_bulk_generic_create(
_In_ sai_object_id_t switch_id,
_In_ const uint32_t *attr_count, /* array */
_In_ const sai_attribute_t *const *attr_list, /* array */
_Inout_ sai_status_t *object_statuses) /* array */;
_Inout_ sai_status_t *object_statuses); /* array */

sai_status_t internal_redis_bulk_generic_create(
_In_ sai_object_type_t object_type,
_In_ const std::vector<std::string> &serialized_object_ids,
_In_ const uint32_t *attr_count,
_In_ const sai_attribute_t *const *attr_list,
_Inout_ sai_status_t *object_statuses);

// REMOVE

sai_status_t redis_generic_remove(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id);

sai_status_t redis_generic_remove_fdb_entry(
_In_ const sai_fdb_entry_t* fdb_entry);

sai_status_t redis_generic_remove_neighbor_entry(
_In_ const sai_neighbor_entry_t* neighbor_entry);

sai_status_t redis_generic_remove_route_entry(
_In_ const sai_route_entry_t* route_entry);
_In_ const sai_attribute_t *const *attr_list, /* array */
_Inout_ sai_status_t *object_statuses) /* array */;

sai_status_t redis_bulk_generic_remove(
_In_ sai_object_type_t object_type,
Expand All @@ -181,55 +220,13 @@ sai_status_t redis_bulk_generic_remove(
sai_status_t internal_redis_bulk_generic_remove(
_In_ sai_object_type_t object_type,
_In_ const std::vector<std::string> &serialized_object_ids,
_Out_ sai_status_t *object_statuses) /* array */;

// SET

sai_status_t redis_generic_set(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ const sai_attribute_t *attr);

sai_status_t redis_generic_set_fdb_entry(
_In_ const sai_fdb_entry_t *fdb_entry,
_In_ const sai_attribute_t *attr);

sai_status_t redis_generic_set_neighbor_entry(
_In_ const sai_neighbor_entry_t* neighbor_entry,
_In_ const sai_attribute_t *attr);

sai_status_t redis_generic_set_route_entry(
_In_ const sai_route_entry_t* route_entry,
_In_ const sai_attribute_t *attr);
_Out_ sai_status_t *object_statuses); /* array */

sai_status_t internal_redis_bulk_generic_set(
_In_ sai_object_type_t object_type,
_In_ const std::vector<std::string> &serialized_object_ids,
_In_ const sai_attribute_t *attr_list,
_In_ const sai_status_t *object_statuses);

// GET

sai_status_t redis_generic_get(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ uint32_t attr_count,
_Out_ sai_attribute_t *attr_list);

sai_status_t redis_generic_get_fdb_entry(
_In_ const sai_fdb_entry_t *fdb_entry,
_In_ uint32_t attr_count,
_Out_ sai_attribute_t *attr_list);

sai_status_t redis_generic_get_neighbor_entry(
_In_ const sai_neighbor_entry_t* neighbor_entry,
_In_ uint32_t attr_count,
_Out_ sai_attribute_t *attr_list);

sai_status_t redis_generic_get_route_entry(
_In_ const sai_route_entry_t* route_entry,
_In_ uint32_t attr_count,
_Out_ sai_attribute_t *attr_list);
_In_ const sai_attribute_t *attr_list, /* array */
_In_ const sai_status_t *object_statuses); /* array */

// get_stats

Expand All @@ -248,4 +245,30 @@ void handle_notification(
_In_ const std::string &data,
_In_ const std::vector<swss::FieldValueTuple> &values);

// STATS

sai_status_t redis_generic_get_stats(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ const sai_enum_metadata_t *enum_metadata,
_In_ uint32_t number_of_counters,
_In_ const int32_t *counter_ids,
_Out_ uint64_t *counters);

sai_status_t redis_generic_get_stats_ext(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ const sai_enum_metadata_t *enum_metadata,
_In_ uint32_t number_of_counters,
_In_ const int32_t *counter_ids,
_In_ sai_stats_mode_t mode,
_Out_ uint64_t *counters);

sai_status_t redis_generic_clear_stats(
_In_ sai_object_type_t object_type,
_In_ sai_object_id_t object_id,
_In_ const sai_enum_metadata_t *enum_metadata,
_In_ uint32_t number_of_counters,
_In_ const int32_t *counter_ids);

#endif // __SAI_REDIS__
Loading