Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
59 changes: 52 additions & 7 deletions common/saiserialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ sai_serialization_map_t sai_get_serialization_map()
map[SAI_OBJECT_TYPE_QOS_MAPS][SAI_QOS_MAP_ATTR_MAP_TO_VALUE_LIST] = SAI_SERIALIZATION_TYPE_QOS_MAP_LIST;

map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_GREEN_ENABLE] = SAI_SERIALIZATION_TYPE_BOOL;
map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_GREEN_MIN_THRESHOLD] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_GREEN_MIN_THRESHOLD] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_GREEN_MAX_THRESHOLD] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_GREEN_DROP_PROBABILITY] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_WRED][SAI_WRED_ATTR_YELLOW_ENABLE] = SAI_SERIALIZATION_TYPE_BOOL;
Expand Down Expand Up @@ -57,8 +57,8 @@ sai_serialization_map_t sai_get_serialization_map()
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_NUMBER_OF_PRIORITY_GROUPS] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_PRIORITY_GROUP_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_PRIORITY_GROUP_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_QUEUE_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_PORT][SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
Expand All @@ -71,11 +71,11 @@ sai_serialization_map_t sai_get_serialization_map()
map[SAI_OBJECT_TYPE_SCHEDULER][SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE] = SAI_SERIALIZATION_TYPE_UINT64;
map[SAI_OBJECT_TYPE_SCHEDULER][SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE] = SAI_SERIALIZATION_TYPE_UINT64;
map[SAI_OBJECT_TYPE_SCHEDULER][SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE] = SAI_SERIALIZATION_TYPE_UINT64;

map[SAI_OBJECT_TYPE_SCHEDULER_GROUP][SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_SCHEDULER_GROUP][SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_SCHEDULER_GROUP][SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;

map[SAI_OBJECT_TYPE_PRIORITY_GROUP][SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE] = SAI_SERIALIZATION_TYPE_OBJECT_ID;

map[SAI_OBJECT_TYPE_QUEUE][SAI_QUEUE_ATTR_WRED_PROFILE_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
Expand Down Expand Up @@ -116,7 +116,7 @@ sai_serialization_map_t sai_get_serialization_map()
map[SAI_OBJECT_TYPE_SWITCH][SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
map[SAI_OBJECT_TYPE_SWITCH][SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_SWITCH][SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_SWITCH][SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_SWITCH][SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP] = SAI_SERIALIZATION_TYPE_INT32;

map[SAI_OBJECT_TYPE_FDB][SAI_FDB_ENTRY_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_FDB][SAI_FDB_ENTRY_ATTR_PORT_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
Expand Down Expand Up @@ -165,6 +165,34 @@ sai_serialization_map_t sai_get_serialization_map()
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE] = SAI_SERIALIZATION_TYPE_BOOL;
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_TRAP_GROUP][SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER] = SAI_SERIALIZATION_TYPE_OBJECT_ID;

map[SAI_OBJECT_TYPE_TUNNEL_MAP][SAI_TUNNEL_MAP_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL_MAP][SAI_TUNNEL_MAP_ATTR_MAP_TO_VALUE_LIST] = SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST;

map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_OVERLAY_INTERFACE] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_SRC_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_TTL_MODE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_TTL_VAL] = SAI_SERIALIZATION_TYPE_UINT8;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL] = SAI_SERIALIZATION_TYPE_UINT8; // 6 bits ?
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID] = SAI_SERIALIZATION_TYPE_BOOL;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_GRE_KEY] = SAI_SERIALIZATION_TYPE_UINT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_ECN_MODE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_ENCAP_MAPPERS] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_ECN_MODE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_MAPPERS] = SAI_SERIALIZATION_TYPE_OBJECT_LIST;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_TTL_MODE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL][SAI_TUNNEL_ATTR_DECAP_DSCP_MODE] = SAI_SERIALIZATION_TYPE_INT32;

map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP] = SAI_SERIALIZATION_TYPE_IP_ADDRESS;
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE] = SAI_SERIALIZATION_TYPE_INT32;
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY][SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID] = SAI_SERIALIZATION_TYPE_OBJECT_ID;

return map;
}

Expand Down Expand Up @@ -213,6 +241,7 @@ sai_object_type_to_string_map_t sai_get_object_type_map()
map[SAI_OBJECT_TYPE_VLAN] = TO_STR(SAI_OBJECT_TYPE_VLAN);
map[SAI_OBJECT_TYPE_TUNNEL] = TO_STR(SAI_OBJECT_TYPE_TUNNEL);
map[SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY] = TO_STR(SAI_OBJECT_TYPE_TUNNEL_TABLE_ENTRY);
map[SAI_OBJECT_TYPE_TUNNEL_MAP] = TO_STR(SAI_OBJECT_TYPE_TUNNEL_MAP);

return map;
}
Expand Down Expand Up @@ -383,7 +412,7 @@ sai_status_t sai_get_serialization_type(
void sai_deserialize_buffer(
_In_ const std::string &s,
_In_ int index,
_In_ size_t buffer_size,
_In_ size_t buffer_size,
_In_ void *buffer)
{
unsigned char *mem = reinterpret_cast<unsigned char*>(buffer);
Expand Down Expand Up @@ -551,6 +580,10 @@ sai_status_t sai_serialize_attr_value(
sai_serialize_list(attr.value.qosmap, s, countOnly);
break;

case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
sai_serialize_list(attr.value.tunnelmap, s, countOnly);
break;

/* ACL FIELD DATA */

case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
Expand Down Expand Up @@ -833,6 +866,10 @@ sai_status_t sai_deserialize_attr_value(
sai_deserialize_list(s, index, attr.value.qosmap, countOnly);
break;

case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
sai_deserialize_list(s, index, attr.value.tunnelmap, countOnly);
break;

/* ACL FIELD DATA */

case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
Expand Down Expand Up @@ -1068,6 +1105,10 @@ sai_status_t sai_deserialize_free_attribute_value(
sai_free_list(attr.value.qosmap);
break;

case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
sai_free_list(attr.value.tunnelmap);
break;

/* ACL FIELD DATA */

case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
Expand Down Expand Up @@ -1406,6 +1447,10 @@ sai_status_t transfer_attribute(
transfer_list(src_attr.value.qosmap, dst_attr.value.qosmap, countOnly);
break;

case SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST:
transfer_list(src_attr.value.tunnelmap, dst_attr.value.tunnelmap, countOnly);
break;

/* ACL FIELD DATA */

case SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8:
Expand Down
5 changes: 4 additions & 1 deletion common/saiserialize.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@ typedef enum _sai_attr_serialization_type_t
SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_OBJECT_LIST,

SAI_SERIALIZATION_TYPE_PORT_BREAKOUT,
SAI_SERIALIZATION_TYPE_QOS_MAP_LIST
SAI_SERIALIZATION_TYPE_QOS_MAP_LIST,

SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST,
SAI_SERIALIZATION_TYPE_ACL_CAPABILITY,

} sai_attr_serialization_type_t;

Expand Down