Skip to content

Commit 921cf0b

Browse files
author
Kumaresh Perumal
authored
Sonic sairedis changes for SAI SRV6 and SAI refpoint update to v1.9.0 (#937)
Update SAI SEGMENTROUTE object to SAI SRV6 object Serialize and deserialize APIs for SRV6 MY_SID_ENTRY object SAI refpoint update to V1.9.0
1 parent 362b34e commit 921cf0b

44 files changed

Lines changed: 1351 additions & 121 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SAI

Submodule SAI updated 71 files

lib/ClientSai.cpp

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,6 +1179,38 @@ sai_status_t ClientSai::bulkCreate(
11791179
object_statuses);
11801180
}
11811181

1182+
sai_status_t ClientSai::bulkCreate(
1183+
_In_ uint32_t object_count,
1184+
_In_ const sai_my_sid_entry_t* my_sid_entry,
1185+
_In_ const uint32_t *attr_count,
1186+
_In_ const sai_attribute_t **attr_list,
1187+
_In_ sai_bulk_op_error_mode_t mode,
1188+
_Out_ sai_status_t *object_statuses)
1189+
{
1190+
MUTEX();
1191+
SWSS_LOG_ENTER();
1192+
REDIS_CHECK_API_INITIALIZED();
1193+
1194+
// TODO support mode
1195+
1196+
std::vector<std::string> serialized_object_ids;
1197+
1198+
// on create vid is put in db by syncd
1199+
for (uint32_t idx = 0; idx < object_count; idx++)
1200+
{
1201+
std::string str_object_id = sai_serialize_my_sid_entry(my_sid_entry[idx]);
1202+
serialized_object_ids.push_back(str_object_id);
1203+
}
1204+
1205+
return bulkCreate(
1206+
SAI_OBJECT_TYPE_MY_SID_ENTRY,
1207+
serialized_object_ids,
1208+
attr_count,
1209+
attr_list,
1210+
mode,
1211+
object_statuses);
1212+
}
1213+
11821214
// BULK CREATE HELPERS
11831215

11841216
sai_status_t ClientSai::bulkCreate(
@@ -1335,6 +1367,26 @@ sai_status_t ClientSai::bulkRemove(
13351367
return bulkRemove(SAI_OBJECT_TYPE_FDB_ENTRY, serializedObjectIds, mode, object_statuses);
13361368
}
13371369

1370+
sai_status_t ClientSai::bulkRemove(
1371+
_In_ uint32_t object_count,
1372+
_In_ const sai_my_sid_entry_t *my_sid_entry,
1373+
_In_ sai_bulk_op_error_mode_t mode,
1374+
_Out_ sai_status_t *object_statuses)
1375+
{
1376+
MUTEX();
1377+
SWSS_LOG_ENTER();
1378+
REDIS_CHECK_API_INITIALIZED();
1379+
1380+
std::vector<std::string> serializedObjectIds;
1381+
1382+
for (uint32_t idx = 0; idx < object_count; idx++)
1383+
{
1384+
serializedObjectIds.emplace_back(sai_serialize_my_sid_entry(my_sid_entry[idx]));
1385+
}
1386+
1387+
return bulkRemove(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, mode, object_statuses);
1388+
}
1389+
13381390
// BULK REMOVE HELPERS
13391391

13401392
sai_status_t ClientSai::bulkRemove(
@@ -1485,6 +1537,27 @@ sai_status_t ClientSai::bulkSet(
14851537
return bulkSet(SAI_OBJECT_TYPE_FDB_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
14861538
}
14871539

1540+
sai_status_t ClientSai::bulkSet(
1541+
_In_ uint32_t object_count,
1542+
_In_ const sai_my_sid_entry_t *my_sid_entry,
1543+
_In_ const sai_attribute_t *attr_list,
1544+
_In_ sai_bulk_op_error_mode_t mode,
1545+
_Out_ sai_status_t *object_statuses)
1546+
{
1547+
MUTEX();
1548+
SWSS_LOG_ENTER();
1549+
REDIS_CHECK_API_INITIALIZED();
1550+
1551+
std::vector<std::string> serializedObjectIds;
1552+
1553+
for (uint32_t idx = 0; idx < object_count; idx++)
1554+
{
1555+
serializedObjectIds.emplace_back(sai_serialize_my_sid_entry(my_sid_entry[idx]));
1556+
}
1557+
1558+
return bulkSet(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
1559+
}
1560+
14881561
// BULK SET HELPERS
14891562

14901563
sai_status_t ClientSai::bulkSet(

lib/Makefile.am

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ libsairedis_la_SOURCES = \
6565
sai_redis_samplepacket.cpp \
6666
sai_redis_scheduler.cpp \
6767
sai_redis_schedulergroup.cpp \
68-
sai_redis_segmentroute.cpp \
68+
sai_redis_srv6.cpp \
6969
sai_redis_stp.cpp \
7070
sai_redis_switch.cpp \
7171
sai_redis_system_port.cpp \
@@ -74,7 +74,9 @@ libsairedis_la_SOURCES = \
7474
sai_redis_udf.cpp \
7575
sai_redis_virtual_router.cpp \
7676
sai_redis_vlan.cpp \
77-
sai_redis_wred.cpp
77+
sai_redis_wred.cpp \
78+
sai_redis_ipsec.cpp \
79+
sai_redis_my_mac.cpp
7880

7981
libSaiRedis_a_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
8082
libSaiRedis_a_CXXFLAGS = $(DBGFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS_COMMON) $(CODE_COVERAGE_CXXFLAGS)

lib/Recorder.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ namespace sairedis
170170
SAI_REDIS_RECORDER_DECLARE_RECORD_CREATE(neighbor_entry);
171171
SAI_REDIS_RECORDER_DECLARE_RECORD_CREATE(route_entry);
172172
SAI_REDIS_RECORDER_DECLARE_RECORD_CREATE(nat_entry);
173+
SAI_REDIS_RECORDER_DECLARE_RECORD_CREATE(my_sid_entry);
173174

174175
public: // remove ENTRY
175176

@@ -181,6 +182,7 @@ namespace sairedis
181182
SAI_REDIS_RECORDER_DECLARE_RECORD_REMOVE(neighbor_entry);
182183
SAI_REDIS_RECORDER_DECLARE_RECORD_REMOVE(route_entry);
183184
SAI_REDIS_RECORDER_DECLARE_RECORD_REMOVE(nat_entry);
185+
SAI_REDIS_RECORDER_DECLARE_RECORD_REMOVE(my_sid_entry);
184186

185187
public: // set ENTRY
186188

@@ -192,6 +194,7 @@ namespace sairedis
192194
SAI_REDIS_RECORDER_DECLARE_RECORD_SET(neighbor_entry);
193195
SAI_REDIS_RECORDER_DECLARE_RECORD_SET(route_entry);
194196
SAI_REDIS_RECORDER_DECLARE_RECORD_SET(nat_entry);
197+
SAI_REDIS_RECORDER_DECLARE_RECORD_SET(my_sid_entry);
195198

196199
public: // get ENTRY
197200

@@ -203,7 +206,7 @@ namespace sairedis
203206
SAI_REDIS_RECORDER_DECLARE_RECORD_GET(neighbor_entry);
204207
SAI_REDIS_RECORDER_DECLARE_RECORD_GET(route_entry);
205208
SAI_REDIS_RECORDER_DECLARE_RECORD_GET(nat_entry);
206-
209+
SAI_REDIS_RECORDER_DECLARE_RECORD_GET(my_sid_entry);
207210

208211
public: // SAI stats API
209212

lib/RedisRemoteSaiInterface.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,24 @@ sai_status_t RedisRemoteSaiInterface::bulkRemove(
13901390
return bulkRemove(SAI_OBJECT_TYPE_FDB_ENTRY, serializedObjectIds, mode, object_statuses);
13911391
}
13921392

1393+
sai_status_t RedisRemoteSaiInterface::bulkRemove(
1394+
_In_ uint32_t object_count,
1395+
_In_ const sai_my_sid_entry_t *my_sid_entry,
1396+
_In_ sai_bulk_op_error_mode_t mode,
1397+
_Out_ sai_status_t *object_statuses)
1398+
{
1399+
SWSS_LOG_ENTER();
1400+
1401+
std::vector<std::string> serializedObjectIds;
1402+
1403+
for (uint32_t idx = 0; idx < object_count; idx++)
1404+
{
1405+
serializedObjectIds.emplace_back(sai_serialize_my_sid_entry(my_sid_entry[idx]));
1406+
}
1407+
1408+
return bulkRemove(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, mode, object_statuses);
1409+
}
1410+
13931411
sai_status_t RedisRemoteSaiInterface::bulkSet(
13941412
_In_ sai_object_type_t object_type,
13951413
_In_ uint32_t object_count,
@@ -1486,6 +1504,25 @@ sai_status_t RedisRemoteSaiInterface::bulkSet(
14861504
return bulkSet(SAI_OBJECT_TYPE_FDB_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
14871505
}
14881506

1507+
sai_status_t RedisRemoteSaiInterface::bulkSet(
1508+
_In_ uint32_t object_count,
1509+
_In_ const sai_my_sid_entry_t *my_sid_entry,
1510+
_In_ const sai_attribute_t *attr_list,
1511+
_In_ sai_bulk_op_error_mode_t mode,
1512+
_Out_ sai_status_t *object_statuses)
1513+
{
1514+
SWSS_LOG_ENTER();
1515+
1516+
std::vector<std::string> serializedObjectIds;
1517+
1518+
for (uint32_t idx = 0; idx < object_count; idx++)
1519+
{
1520+
serializedObjectIds.emplace_back(sai_serialize_my_sid_entry(my_sid_entry[idx]));
1521+
}
1522+
1523+
return bulkSet(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
1524+
}
1525+
14891526
sai_status_t RedisRemoteSaiInterface::bulkSet(
14901527
_In_ sai_object_type_t object_type,
14911528
_In_ const std::vector<std::string> &serialized_object_ids,
@@ -1765,6 +1802,36 @@ sai_status_t RedisRemoteSaiInterface::bulkCreate(
17651802
object_statuses);
17661803
}
17671804

1805+
sai_status_t RedisRemoteSaiInterface::bulkCreate(
1806+
_In_ uint32_t object_count,
1807+
_In_ const sai_my_sid_entry_t* my_sid_entry,
1808+
_In_ const uint32_t *attr_count,
1809+
_In_ const sai_attribute_t **attr_list,
1810+
_In_ sai_bulk_op_error_mode_t mode,
1811+
_Out_ sai_status_t *object_statuses)
1812+
{
1813+
SWSS_LOG_ENTER();
1814+
1815+
// TODO support mode
1816+
1817+
std::vector<std::string> serialized_object_ids;
1818+
1819+
// on create vid is put in db by syncd
1820+
for (uint32_t idx = 0; idx < object_count; idx++)
1821+
{
1822+
std::string str_object_id = sai_serialize_my_sid_entry(my_sid_entry[idx]);
1823+
serialized_object_ids.push_back(str_object_id);
1824+
}
1825+
1826+
return bulkCreate(
1827+
SAI_OBJECT_TYPE_MY_SID_ENTRY,
1828+
serialized_object_ids,
1829+
attr_count,
1830+
attr_list,
1831+
mode,
1832+
object_statuses);
1833+
}
1834+
17681835
sai_status_t RedisRemoteSaiInterface::notifySyncd(
17691836
_In_ sai_object_id_t switchId,
17701837
_In_ sai_redis_notify_syncd_t redisNotifySyncd)

lib/ServerSai.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,25 @@ sai_status_t ServerSai::processBulkCreateEntry(
12551255
}
12561256
break;
12571257

1258+
case SAI_OBJECT_TYPE_MY_SID_ENTRY:
1259+
{
1260+
std::vector<sai_my_sid_entry_t> entries(object_count);
1261+
1262+
for (uint32_t it = 0; it < object_count; it++)
1263+
{
1264+
sai_deserialize_my_sid_entry(objectIds[it], entries[it]);
1265+
}
1266+
1267+
status = m_sai->bulkCreate(
1268+
object_count,
1269+
entries.data(),
1270+
attr_counts.data(),
1271+
attr_lists.data(),
1272+
mode,
1273+
statuses.data());
1274+
}
1275+
break;
1276+
12581277
default:
12591278
return SAI_STATUS_NOT_SUPPORTED;
12601279
}
@@ -1345,6 +1364,23 @@ sai_status_t ServerSai::processBulkRemoveEntry(
13451364
}
13461365
break;
13471366

1367+
case SAI_OBJECT_TYPE_MY_SID_ENTRY:
1368+
{
1369+
std::vector<sai_my_sid_entry_t> entries(object_count);
1370+
1371+
for (uint32_t it = 0; it < object_count; it++)
1372+
{
1373+
sai_deserialize_my_sid_entry(objectIds[it], entries[it]);
1374+
}
1375+
1376+
status = m_sai->bulkRemove(
1377+
object_count,
1378+
entries.data(),
1379+
mode,
1380+
statuses.data());
1381+
}
1382+
break;
1383+
13481384
default:
13491385
return SAI_STATUS_NOT_SUPPORTED;
13501386
}
@@ -1447,6 +1483,24 @@ sai_status_t ServerSai::processBulkSetEntry(
14471483
}
14481484
break;
14491485

1486+
case SAI_OBJECT_TYPE_MY_SID_ENTRY:
1487+
{
1488+
std::vector<sai_my_sid_entry_t> entries(object_count);
1489+
1490+
for (uint32_t it = 0; it < object_count; it++)
1491+
{
1492+
sai_deserialize_my_sid_entry(objectIds[it], entries[it]);
1493+
}
1494+
1495+
status = m_sai->bulkSet(
1496+
object_count,
1497+
entries.data(),
1498+
attr_lists.data(),
1499+
mode,
1500+
statuses.data());
1501+
}
1502+
break;
1503+
14501504
default:
14511505
return SAI_STATUS_NOT_SUPPORTED;
14521506
}

lib/sai_redis.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ PRIVATE extern const sai_rpf_group_api_t redis_rpf_group_api;
4848
PRIVATE extern const sai_samplepacket_api_t redis_samplepacket_api;
4949
PRIVATE extern const sai_scheduler_api_t redis_scheduler_api;
5050
PRIVATE extern const sai_scheduler_group_api_t redis_scheduler_group_api;
51-
PRIVATE extern const sai_segmentroute_api_t redis_segmentroute_api;
51+
PRIVATE extern const sai_srv6_api_t redis_srv6_api;
5252
PRIVATE extern const sai_stp_api_t redis_stp_api;
5353
PRIVATE extern const sai_switch_api_t redis_switch_api;
5454
PRIVATE extern const sai_system_port_api_t redis_system_port_api;
@@ -58,6 +58,8 @@ PRIVATE extern const sai_udf_api_t redis_udf_api;
5858
PRIVATE extern const sai_virtual_router_api_t redis_virtual_router_api;
5959
PRIVATE extern const sai_vlan_api_t redis_vlan_api;
6060
PRIVATE extern const sai_wred_api_t redis_wred_api;
61+
PRIVATE extern const sai_my_mac_api_t redis_my_mac_api;
62+
PRIVATE extern const sai_ipsec_api_t redis_ipsec_api;
6163

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

lib/sai_redis_interfacequery.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ static sai_apis_t redis_apis = {
6767
API(mcast_fdb),
6868
API(bridge),
6969
API(tam),
70-
API(segmentroute),
70+
API(srv6),
7171
API(mpls),
7272
API(dtel),
7373
API(bfd),
@@ -77,6 +77,8 @@ static sai_apis_t redis_apis = {
7777
API(debug_counter),
7878
API(macsec),
7979
API(system_port),
80+
API(my_mac),
81+
API(ipsec),
8082
API(bmtor),
8183
};
8284

lib/sai_redis_ipsec.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "sai_redis.h"
2+
3+
REDIS_GENERIC_QUAD(IPSEC,ipsec);
4+
REDIS_GENERIC_QUAD(IPSEC_PORT,ipsec_port);
5+
REDIS_GENERIC_QUAD(IPSEC_SA,ipsec_sa);
6+
REDIS_GENERIC_STATS(IPSEC_PORT,ipsec_port);
7+
REDIS_GENERIC_STATS(IPSEC_SA,ipsec_sa);
8+
9+
const sai_ipsec_api_t redis_ipsec_api = {
10+
11+
REDIS_GENERIC_QUAD_API(ipsec)
12+
REDIS_GENERIC_QUAD_API(ipsec_port)
13+
REDIS_GENERIC_STATS_API(ipsec_port)
14+
REDIS_GENERIC_QUAD_API(ipsec_sa)
15+
REDIS_GENERIC_STATS_API(ipsec_sa)
16+
};

lib/sai_redis_my_mac.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#include "sai_redis.h"
2+
3+
REDIS_GENERIC_QUAD(MY_MAC,my_mac);
4+
5+
const sai_my_mac_api_t redis_my_mac_api = {
6+
7+
REDIS_GENERIC_QUAD_API(my_mac)
8+
};

0 commit comments

Comments
 (0)