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 (sonic-net#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

Some content is hidden

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

44 files changed

+1351
-121
lines changed

SAI

Submodule SAI updated 71 files

lib/ClientSai.cpp

+73
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

+4-2
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

+4-1
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

+67
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

+54
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

+3-1
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

+3-1
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

+16
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

+8
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+
};

lib/sai_redis_nexthopgroup.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ REDIS_BULK_CREATE(NEXT_HOP_GROUP_MEMBER,next_hop_group_members);
44
REDIS_BULK_REMOVE(NEXT_HOP_GROUP_MEMBER,next_hop_group_members);
55
REDIS_GENERIC_QUAD(NEXT_HOP_GROUP,next_hop_group);
66
REDIS_GENERIC_QUAD(NEXT_HOP_GROUP_MEMBER,next_hop_group_member);
7+
REDIS_GENERIC_QUAD(NEXT_HOP_GROUP_MAP,next_hop_group_map);
78

89
const sai_next_hop_group_api_t redis_next_hop_group_api = {
910

@@ -12,4 +13,5 @@ const sai_next_hop_group_api_t redis_next_hop_group_api = {
1213

1314
redis_bulk_create_next_hop_group_members,
1415
redis_bulk_remove_next_hop_group_members,
16+
REDIS_GENERIC_QUAD_API(next_hop_group_map)
1517
};

0 commit comments

Comments
 (0)