void sai_deserialize_attr_value()

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());
    }
}