Skip to content

Commit d286bcd

Browse files
author
Shuotian Cheng
authored
Merge pull request sonic-net#70 from kcudnik/metadata
Add static metadata
2 parents 03817ac + 867ced0 commit d286bcd

File tree

96 files changed

+22549
-1605
lines changed

Some content is hidden

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

96 files changed

+22549
-1605
lines changed

common/redisclient.cpp

+24-24
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ int64_t RedisClient::del(std::string key)
1313
{
1414
char *temp;
1515
int len = redisFormatCommand(&temp, "DEL %s", key.c_str());
16-
std::string del(temp, len);
16+
std::string sdel(temp, len);
1717
free(temp);
1818

19-
RedisReply r(m_db, del, REDIS_REPLY_INTEGER, true);
19+
RedisReply r(m_db, sdel, REDIS_REPLY_INTEGER, true);
2020

2121
if (r.getContext()->type != REDIS_REPLY_INTEGER)
2222
throw std::runtime_error("DEL operation failed");
@@ -28,10 +28,10 @@ int64_t RedisClient::hdel(std::string key, std::string field)
2828
{
2929
char *temp;
3030
int len = redisFormatCommand(&temp, "HDEL %s %s", key.c_str(), field.c_str());
31-
std::string hdel(temp, len);
31+
std::string shdel(temp, len);
3232
free(temp);
3333

34-
RedisReply r(m_db, hdel, REDIS_REPLY_INTEGER, true);
34+
RedisReply r(m_db, shdel, REDIS_REPLY_INTEGER, true);
3535

3636
if (r.getContext()->type != REDIS_REPLY_INTEGER)
3737
throw std::runtime_error("HDEL operation failed");
@@ -43,10 +43,10 @@ void RedisClient::hset(std::string key, std::string field, std::string value)
4343
{
4444
char *temp;
4545
int len = redisFormatCommand(&temp, "HSET %s %s %s", key.c_str(), field.c_str(), value.c_str());
46-
std::string hset(temp, len);
46+
std::string shset(temp, len);
4747
free(temp);
4848

49-
RedisReply r(m_db, hset, REDIS_REPLY_INTEGER, true);
49+
RedisReply r(m_db, shset, REDIS_REPLY_INTEGER, true);
5050

5151
if (r.getContext()->type != REDIS_REPLY_INTEGER)
5252
throw std::runtime_error("HSET operation failed");
@@ -56,10 +56,10 @@ void RedisClient::set(std::string key, std::string value)
5656
{
5757
char *temp;
5858
int len = redisFormatCommand(&temp, "SET %s %s", key.c_str(), value.c_str());
59-
std::string set(temp, len);
59+
std::string sset(temp, len);
6060
free(temp);
6161

62-
RedisReply r(m_db, set, REDIS_REPLY_STATUS, true);
62+
RedisReply r(m_db, sset, REDIS_REPLY_STATUS, true);
6363

6464
if (r.getContext()->type != REDIS_REPLY_STATUS)
6565
throw std::runtime_error("SET operation failed");
@@ -72,10 +72,10 @@ std::unordered_map<std::string, std::string> RedisClient::hgetall(std::string ke
7272
char *temp;
7373
int len = redisFormatCommand(&temp, "HGETALL %s", key.c_str());
7474

75-
std::string incr(temp, len);
75+
std::string sincr(temp, len);
7676
free(temp);
7777

78-
RedisReply r(m_db, incr, REDIS_REPLY_ARRAY, true);
78+
RedisReply r(m_db, sincr, REDIS_REPLY_ARRAY, true);
7979

8080
if (r.getContext()->type != REDIS_REPLY_ARRAY)
8181
throw std::runtime_error("HGETALL operation failed");
@@ -95,10 +95,10 @@ std::vector<std::string> RedisClient::keys(std::string key)
9595
char *temp;
9696
int len = redisFormatCommand(&temp, "KEYS %s", key.c_str());
9797

98-
std::string keys(temp, len);
98+
std::string skeys(temp, len);
9999
free(temp);
100100

101-
RedisReply r(m_db, keys, REDIS_REPLY_ARRAY, true);
101+
RedisReply r(m_db, skeys, REDIS_REPLY_ARRAY, true);
102102

103103
if (r.getContext()->type != REDIS_REPLY_ARRAY)
104104
throw std::runtime_error("KEYS operation failed");
@@ -116,10 +116,10 @@ int64_t RedisClient::incr(std::string key)
116116
char *temp;
117117
int len = redisFormatCommand(&temp, "INCR %s", key.c_str());
118118

119-
std::string incr(temp, len);
119+
std::string sincr(temp, len);
120120
free(temp);
121121

122-
RedisReply r(m_db, incr, REDIS_REPLY_INTEGER, true);
122+
RedisReply r(m_db, sincr, REDIS_REPLY_INTEGER, true);
123123

124124
if (r.getContext()->type != REDIS_REPLY_INTEGER)
125125
throw std::runtime_error("INCR command failed");
@@ -132,10 +132,10 @@ int64_t RedisClient::decr(std::string key)
132132
char *temp;
133133
int len = redisFormatCommand(&temp, "DECR %s", key.c_str());
134134

135-
std::string decr(temp, len);
135+
std::string sdecr(temp, len);
136136
free(temp);
137137

138-
RedisReply r(m_db, decr, REDIS_REPLY_INTEGER, true);
138+
RedisReply r(m_db, sdecr, REDIS_REPLY_INTEGER, true);
139139

140140
if (r.getContext()->type != REDIS_REPLY_INTEGER)
141141
throw std::runtime_error("DECR command failed");
@@ -148,12 +148,12 @@ std::shared_ptr<std::string> RedisClient::get(std::string key)
148148
char *temp;
149149
int len = redisFormatCommand(&temp, "GET %s", key.c_str());
150150

151-
std::string get(temp, len);
151+
std::string sget(temp, len);
152152
free(temp);
153153

154154
redisReply *reply;
155155

156-
redisAppendFormattedCommand(m_db->getContext(), get.c_str(), get.length());
156+
redisAppendFormattedCommand(m_db->getContext(), sget.c_str(), sget.length());
157157
redisGetReply(m_db->getContext(), (void**)&reply);
158158

159159
if (!reply)
@@ -182,12 +182,12 @@ std::shared_ptr<std::string> RedisClient::hget(std::string key, std::string fiel
182182
char *temp;
183183
int len = redisFormatCommand(&temp, "HGET %s %s", key.c_str(), field.c_str());
184184

185-
std::string hget(temp, len);
185+
std::string shget(temp, len);
186186
free(temp);
187187

188188
redisReply *reply;
189189

190-
redisAppendFormattedCommand(m_db->getContext(), hget.c_str(), hget.length());
190+
redisAppendFormattedCommand(m_db->getContext(), shget.c_str(), shget.length());
191191
redisGetReply(m_db->getContext(), (void**)&reply);
192192

193193
if (!reply)
@@ -222,10 +222,10 @@ int64_t RedisClient::rpush(std::string list, std::string item)
222222
char *temp;
223223
int len = redisFormatCommand(&temp, "RPUSH %s %s", list.c_str(), item.c_str());
224224

225-
std::string rpush(temp, len);
225+
std::string srpush(temp, len);
226226
free(temp);
227227

228-
RedisReply r(m_db, rpush, REDIS_REPLY_INTEGER, true);
228+
RedisReply r(m_db, srpush, REDIS_REPLY_INTEGER, true);
229229

230230
if (r.getContext()->type != REDIS_REPLY_INTEGER)
231231
throw std::runtime_error("RPUSH command failed");
@@ -238,12 +238,12 @@ std::shared_ptr<std::string> RedisClient::blpop(std::string list, int timeout)
238238
char *temp;
239239
int len = redisFormatCommand(&temp, "BLPOP %s %d", list.c_str(), timeout);
240240

241-
std::string blpop(temp, len);
241+
std::string sblpop(temp, len);
242242
free(temp);
243243

244244
redisReply *reply;
245245

246-
redisAppendFormattedCommand(m_db->getContext(), blpop.c_str(), blpop.length());
246+
redisAppendFormattedCommand(m_db->getContext(), sblpop.c_str(), sblpop.length());
247247
redisGetReply(m_db->getContext(), (void**)&reply);
248248

249249
if (!reply)

common/saiattributelist.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ SaiAttributeList::SaiAttributeList(
55
_In_ const std::vector<swss::FieldValueTuple> &values,
66
_In_ bool onlyCount)
77
{
8-
uint32_t attr_count = values.size();
8+
size_t attr_count = values.size();
99

10-
for (uint32_t i = 0; i < attr_count; ++i)
10+
for (size_t i = 0; i < attr_count; ++i)
1111
{
1212
const std::string &str_attr_id = fvField(values[i]);
1313
const std::string &str_attr_value = fvValue(values[i]);
@@ -44,9 +44,9 @@ SaiAttributeList::SaiAttributeList(
4444

4545
SaiAttributeList::~SaiAttributeList()
4646
{
47-
uint32_t attr_count = m_attr_list.size();
47+
size_t attr_count = m_attr_list.size();
4848

49-
for (uint32_t i = 0; i < attr_count; ++i)
49+
for (size_t i = 0; i < attr_count; ++i)
5050
{
5151
sai_attribute_t &attr = m_attr_list[i];
5252

@@ -118,5 +118,5 @@ sai_attribute_t* SaiAttributeList::get_attr_list()
118118

119119
uint32_t SaiAttributeList::get_attr_count()
120120
{
121-
return m_attr_list.size();
121+
return (uint32_t)m_attr_list.size();
122122
}

common/saiserialize.cpp

+64-3
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,33 @@ sai_serialization_map_t sai_get_serialization_map()
168168
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE] = SAI_SERIALIZATION_TYPE_BOOL;
169169
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE] = SAI_SERIALIZATION_TYPE_UINT32;
170170
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
171+
172+
map[SAI_OBJECT_TYPE_TUNNEL_MAP][SAI_TUNNEL_MAP_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
173+
map[SAI_OBJECT_TYPE_TUNNEL_MAP][SAI_TUNNEL_MAP_ATTR_MAP_TO_VALUE_LIST] = SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST;
174+
175+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
176+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
177+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_OVERLAY_INTERFACE] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
178+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_SRC_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
179+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_TTL_MODE] = SAI_SERIALIZATION_TYPE_INT32;
180+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_TTL_VAL] = SAI_SERIALIZATION_TYPE_UINT8;
181+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE] = SAI_SERIALIZATION_TYPE_INT32;
182+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL] = SAI_SERIALIZATION_TYPE_UINT8;
183+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID] = SAI_SERIALIZATION_TYPE_BOOL;
184+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_GRE_KEY] = SAI_SERIALIZATION_TYPE_UINT32;
185+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_ECN_MODE] = SAI_SERIALIZATION_TYPE_INT32;
186+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_MAPPERS] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
187+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_ECN_MODE] = SAI_SERIALIZATION_TYPE_INT32;
188+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_MAPPERS] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
189+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_TTL_MODE] = SAI_SERIALIZATION_TYPE_INT32;
190+
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_DSCP_MODE] = SAI_SERIALIZATION_TYPE_INT32;
191+
192+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
193+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
194+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
195+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
196+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
197+
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
171198
return map;
172199
}
173200

@@ -398,12 +425,12 @@ void sai_deserialize_buffer(
398425
int u = char_to_int(ptr[2 * i]);
399426
int l = char_to_int(ptr[2 * i + 1]);
400427

401-
unsigned char c = (u << 4) | l;
428+
int c = (u << 4) | l;
402429

403-
mem[i] = c;
430+
mem[i] = (unsigned char) c;
404431
}
405432

406-
index += buffer_size * 2;
433+
index += (int)(buffer_size * 2);
407434
}
408435

409436
void sai_free_buffer(void *buffer)
@@ -554,8 +581,17 @@ sai_status_t sai_serialize_attr_value(
554581
sai_serialize_list(attr.value.qosmap, s, countOnly);
555582
break;
556583

584+
case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
585+
sai_serialize_list(attr.value.tunnelmap, s, countOnly);
586+
break;
587+
557588
/* ACL FIELD DATA */
558589

590+
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL:
591+
sai_serialize_primitive(attr.value.aclfield.enable, s);
592+
sai_serialize_primitive(attr.value.aclfield.data.booldata, s);
593+
break;
594+
559595
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
560596
sai_serialize_primitive(attr.value.aclfield.enable, s);
561597
sai_serialize_primitive(attr.value.aclfield.mask.u8, s);
@@ -836,8 +872,17 @@ sai_status_t sai_deserialize_attr_value(
836872
sai_deserialize_list(s, index, attr.value.qosmap, countOnly);
837873
break;
838874

875+
case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
876+
sai_deserialize_list(s, index, attr.value.tunnelmap, countOnly);
877+
break;
878+
839879
/* ACL FIELD DATA */
840880

881+
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL:
882+
sai_deserialize_primitive(s, index, attr.value.aclfield.enable);
883+
sai_deserialize_primitive(s, index, attr.value.aclfield.data.booldata);
884+
break;
885+
841886
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
842887
sai_deserialize_primitive(s, index, attr.value.aclfield.enable);
843888
sai_deserialize_primitive(s, index, attr.value.aclfield.mask.u8);
@@ -1071,8 +1116,15 @@ sai_status_t sai_deserialize_free_attribute_value(
10711116
sai_free_list(attr.value.qosmap);
10721117
break;
10731118

1119+
case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
1120+
sai_free_list(attr.value.tunnelmap);
1121+
break;
1122+
10741123
/* ACL FIELD DATA */
10751124

1125+
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL:
1126+
break;
1127+
10761128
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
10771129
break;
10781130

@@ -1409,8 +1461,17 @@ sai_status_t transfer_attribute(
14091461
transfer_list(src_attr.value.qosmap, dst_attr.value.qosmap, countOnly);
14101462
break;
14111463

1464+
case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
1465+
transfer_list(src_attr.value.tunnelmap, dst_attr.value.tunnelmap, countOnly);
1466+
break;
1467+
14121468
/* ACL FIELD DATA */
14131469

1470+
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL:
1471+
transfer_primitive(src_attr.value.aclfield.enable, dst_attr.value.aclfield.enable);
1472+
transfer_primitive(src_attr.value.aclfield.data.booldata, dst_attr.value.aclfield.data.booldata);
1473+
break;
1474+
14141475
case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
14151476
transfer_primitive(src_attr.value.aclfield.enable, dst_attr.value.aclfield.enable);
14161477
transfer_primitive(src_attr.value.aclfield.mask.u8, dst_attr.value.aclfield.mask.u8);

common/saiserialize.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#ifndef __SAI_SERIALIZE__
22
#define __SAI_SERIALIZE__
33

4+
extern "C" {
45
#include "sai.h"
6+
}
57

68
#include <iostream>
79
#include <fstream>
@@ -43,8 +45,8 @@ typedef enum _sai_attr_serialization_type_t
4345
SAI_SERIALIZATION_TYPE_UINT32_RANGE,
4446
SAI_SERIALIZATION_TYPE_INT32_RANGE,
4547
SAI_SERIALIZATION_TYPE_VLAN_LIST,
46-
SAI_SERIALIZATION_TYPE_VLAN_PORT_LIST,
4748

49+
SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL,
4850
SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8,
4951
SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_INT8,
5052
SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT16,
@@ -71,7 +73,8 @@ typedef enum _sai_attr_serialization_type_t
7173
SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_OBJECT_LIST,
7274

7375
SAI_SERIALIZATION_TYPE_PORT_BREAKOUT,
74-
SAI_SERIALIZATION_TYPE_QOS_MAP_LIST
76+
SAI_SERIALIZATION_TYPE_QOS_MAP_LIST,
77+
SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST
7578

7679
} sai_attr_serialization_type_t;
7780

@@ -184,12 +187,12 @@ void sai_deserialize_primitive(
184187
int u = char_to_int(ptr[2 * i]);
185188
int l = char_to_int(ptr[2 * i + 1]);
186189

187-
unsigned char c = (u << 4) | l;
190+
int c = (u << 4) | l;
188191

189-
mem[i] = c;
192+
mem[i] = (unsigned char)c;
190193
}
191194

192-
index += count * 2;
195+
index += (int)(count * 2);
193196
}
194197

195198
template<typename T>

0 commit comments

Comments
 (0)