in meta/SaiSerialize.cpp [4072:4261]
void sai_deserialize_attr_value(
_In_ const std::string& s,
_In_ const sai_attr_metadata_t& meta,
_Out_ sai_attribute_t &attr,
_In_ const bool countOnly)
{
SWSS_LOG_ENTER();
memset(&attr.value, 0, sizeof(attr.value));
switch (meta.attrvaluetype)
{
case SAI_ATTR_VALUE_TYPE_BOOL:
return sai_deserialize_bool(s, attr.value.booldata);
case SAI_ATTR_VALUE_TYPE_CHARDATA:
return sai_deserialize_chardata(s, attr.value.chardata);
case SAI_ATTR_VALUE_TYPE_UINT8:
return sai_deserialize_number(s, attr.value.u8);
case SAI_ATTR_VALUE_TYPE_INT8:
return sai_deserialize_number(s, attr.value.s8);
case SAI_ATTR_VALUE_TYPE_UINT16:
return sai_deserialize_number(s, attr.value.u16);
case SAI_ATTR_VALUE_TYPE_JSON:
return sai_deserialize_json(s, attr.value.json);
case SAI_ATTR_VALUE_TYPE_INT16:
return sai_deserialize_number(s, attr.value.s16);
case SAI_ATTR_VALUE_TYPE_UINT32:
return sai_deserialize_number(s, attr.value.u32);
case SAI_ATTR_VALUE_TYPE_INT32:
return sai_deserialize_enum(s, meta.enummetadata, attr.value.s32);
case SAI_ATTR_VALUE_TYPE_UINT64:
return sai_deserialize_number(s, attr.value.u64);
// case SAI_ATTR_VALUE_TYPE_INT64:
// return sai_deserialize_number(s, attr.value.s64);
case SAI_ATTR_VALUE_TYPE_MAC:
return sai_deserialize_mac(s, attr.value.mac);
case SAI_ATTR_VALUE_TYPE_IPV4:
return sai_deserialize_ipv4(s, attr.value.ip4);
case SAI_ATTR_VALUE_TYPE_IPV6:
return sai_deserialize_ipv6(s, attr.value.ip6);
case SAI_ATTR_VALUE_TYPE_POINTER:
return sai_deserialize_pointer(s, attr.value.ptr);
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
return sai_deserialize_ip_address(s, attr.value.ipaddr);
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
return sai_deserialize_ip_prefix(s, attr.value.ipprefix);
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
return sai_deserialize_object_id(s, attr.value.oid);
case SAI_ATTR_VALUE_TYPE_OBJECT_LIST:
return sai_deserialize_oid_list(s, attr.value.objlist, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT8_LIST:
return sai_deserialize_number_list(s, attr.value.u8list, countOnly);
case SAI_ATTR_VALUE_TYPE_INT8_LIST:
return sai_deserialize_number_list(s, attr.value.s8list, countOnly);
case SAI_ATTR_VALUE_TYPE_LATCH_STATUS:
return sai_deserialize_latch_status(s, attr.value.latchstatus);
case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
return sai_deserialize_port_lane_latch_status_list(s, attr.value.portlanelatchstatuslist, countOnly);
// case SAI_ATTR_VALUE_TYPE_UINT16_LIST:
// return sai_deserialize_number_list(s, attr.value.u16list, countOnly);
//
// case SAI_ATTR_VALUE_TYPE_INT16_LIST:
// return sai_deserialize_number_list(s, attr.value.s16list, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT32_LIST:
return sai_deserialize_number_list(s, attr.value.u32list, countOnly);
case SAI_ATTR_VALUE_TYPE_INT32_LIST:
return sai_deserialize_enum_list(s, meta.enummetadata, attr.value.s32list, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT32_RANGE:
return sai_deserialize_range(s, attr.value.u32range);
// case SAI_ATTR_VALUE_TYPE_INT32_RANGE:
// return sai_deserialize_range(s, attr.value.s32range);
case SAI_ATTR_VALUE_TYPE_UINT16_RANGE_LIST:
return sai_deserialize_u16_range_list(s, attr.value.u16rangelist, countOnly);
case SAI_ATTR_VALUE_TYPE_VLAN_LIST:
return sai_deserialize_number_list(s, attr.value.vlanlist, countOnly);
case SAI_ATTR_VALUE_TYPE_QOS_MAP_LIST:
return sai_deserialize_qos_map_list(s, attr.value.qosmap, countOnly);
case SAI_ATTR_VALUE_TYPE_MAP_LIST:
return sai_deserialize_map_list(s, attr.value.maplist, countOnly);
case SAI_ATTR_VALUE_TYPE_ACL_RESOURCE_LIST:
return sai_deserialize_acl_resource_list(s, attr.value.aclresource, countOnly);
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
return sai_deserialize_ip_address_list(s, attr.value.ipaddrlist, countOnly);
case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
return sai_deserialize_segment_list(s, attr.value.segmentlist, countOnly);
// ACL FIELD DATA
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_BOOL:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT8:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_INT8:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT16:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_INT16:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT32:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_INT32:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT64:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_MAC:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_IPV4:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_IPV6:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_OBJECT_ID:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_OBJECT_LIST:
case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT8_LIST:
return sai_deserialize_acl_field(s, meta, attr.value.aclfield, countOnly);
// ACL ACTION DATA
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_BOOL:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_UINT8:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_INT8:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_UINT16:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_INT16:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_UINT32:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_INT32:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_MAC:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_IPV4:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_IPV6:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_OBJECT_ID:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_OBJECT_LIST:
case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_IP_ADDRESS:
return sai_deserialize_acl_action(s, meta, attr.value.aclaction, countOnly);
case SAI_ATTR_VALUE_TYPE_ACL_CAPABILITY:
return sai_deserialize_acl_capability(s, attr.value.aclcapability);
case SAI_ATTR_VALUE_TYPE_AUTH_KEY:
return sai_deserialize_hex_binary(s, attr.value.authkey);
case SAI_ATTR_VALUE_TYPE_ENCRYPT_KEY:
return sai_deserialize_hex_binary(s, attr.value.encrypt_key);
case SAI_ATTR_VALUE_TYPE_MACSEC_SAK:
return sai_deserialize_hex_binary(s, attr.value.macsecsak);
case SAI_ATTR_VALUE_TYPE_MACSEC_AUTH_KEY:
return sai_deserialize_hex_binary(s, attr.value.macsecauthkey);
case SAI_ATTR_VALUE_TYPE_MACSEC_SALT:
return sai_deserialize_hex_binary(s, attr.value.macsecsalt);
case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG:
return sai_deserialize_system_port_config(s, attr.value.sysportconfig);
case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG_LIST:
return sai_deserialize_system_port_config_list(s, attr.value.sysportconfiglist, countOnly);
case SAI_ATTR_VALUE_TYPE_IP_PREFIX_LIST:
return sai_deserialize_ip_prefix_list(s, attr.value.ipprefixlist, countOnly);
case SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION:
return sai_deserialize_poe_port_power_consumption(s, attr.value.portpowerconsumption);
default:
SWSS_LOG_THROW("deserialize type %s is not supported yet FIXME",
sai_serialize_attr_value_type(meta.attrvaluetype).c_str());
}
}