void sai_deserialize_free_attribute_value()

in meta/SaiSerialize.cpp [5255:5431]


void sai_deserialize_free_attribute_value(
        _In_ const sai_attr_value_type_t type,
        _In_ sai_attribute_t &attr)
{
    SWSS_LOG_ENTER();

    // if we allocated list, then we need to free it

    switch (type)
    {
        case SAI_ATTR_VALUE_TYPE_BOOL:
        case SAI_ATTR_VALUE_TYPE_CHARDATA:
        case SAI_ATTR_VALUE_TYPE_UINT8:
        case SAI_ATTR_VALUE_TYPE_INT8:
        case SAI_ATTR_VALUE_TYPE_UINT16:
        case SAI_ATTR_VALUE_TYPE_INT16:
        case SAI_ATTR_VALUE_TYPE_UINT32:
        case SAI_ATTR_VALUE_TYPE_INT32:
        case SAI_ATTR_VALUE_TYPE_UINT64:
        case SAI_ATTR_VALUE_TYPE_INT64:
        case SAI_ATTR_VALUE_TYPE_MAC:
        case SAI_ATTR_VALUE_TYPE_IPV4:
        case SAI_ATTR_VALUE_TYPE_IPV6:
        case SAI_ATTR_VALUE_TYPE_POINTER:
        case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
        case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
        case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
        case SAI_ATTR_VALUE_TYPE_LATCH_STATUS:
            break;

        case SAI_ATTR_VALUE_TYPE_JSON:
            sai_free_list(attr.value.json.json);
            break;

        case SAI_ATTR_VALUE_TYPE_OBJECT_LIST:
            sai_free_list(attr.value.objlist);
            break;

        case SAI_ATTR_VALUE_TYPE_UINT8_LIST:
            sai_free_list(attr.value.u8list);
            break;

        case SAI_ATTR_VALUE_TYPE_INT8_LIST:
            sai_free_list(attr.value.s8list);
            break;

//        case SAI_ATTR_VALUE_TYPE_UINT16_LIST:
//            sai_free_list(attr.value.u16list);
//            break;
//
//        case SAI_ATTR_VALUE_TYPE_INT16_LIST:
//            sai_free_list(attr.value.s16list);
//            break;

        case SAI_ATTR_VALUE_TYPE_UINT32_LIST:
            sai_free_list(attr.value.u32list);
            break;

        case SAI_ATTR_VALUE_TYPE_INT32_LIST:
            sai_free_list(attr.value.s32list);
            break;

        case SAI_ATTR_VALUE_TYPE_UINT32_RANGE:
        case SAI_ATTR_VALUE_TYPE_INT32_RANGE:
            break;

        case SAI_ATTR_VALUE_TYPE_UINT16_RANGE_LIST:
            sai_free_list(attr.value.u16rangelist);
            break;

        case SAI_ATTR_VALUE_TYPE_VLAN_LIST:
            sai_free_list(attr.value.vlanlist);
            break;

        case SAI_ATTR_VALUE_TYPE_QOS_MAP_LIST:
            sai_free_list(attr.value.qosmap);
            break;

        case SAI_ATTR_VALUE_TYPE_MAP_LIST:
            sai_free_list(attr.value.maplist);
            break;

        case SAI_ATTR_VALUE_TYPE_ACL_RESOURCE_LIST:
            sai_free_list(attr.value.aclresource);
            break;

        case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
            sai_free_list(attr.value.ipaddrlist);
            break;

        case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
            sai_free_list(attr.value.segmentlist);
            break;

        case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
            sai_free_list(attr.value.portlanelatchstatuslist);
            break;

            /* 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:
            break;
        case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_OBJECT_LIST:
            sai_free_list(attr.value.aclfield.data.objlist);
            break;

        case SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA_UINT8_LIST:
            sai_free_list(attr.value.aclfield.mask.u8list);
            sai_free_list(attr.value.aclfield.data.u8list);
            break;

            /* 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_IP_ADDRESS:
            break;

        case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_OBJECT_LIST:
            sai_free_list(attr.value.aclaction.parameter.objlist);
            break;

        case SAI_ATTR_VALUE_TYPE_ACL_CAPABILITY:
            sai_free_list(attr.value.aclcapability.action_list);
            break;

        case SAI_ATTR_VALUE_TYPE_AUTH_KEY:
            break;

        case SAI_ATTR_VALUE_TYPE_ENCRYPT_KEY:
            break;

        case SAI_ATTR_VALUE_TYPE_MACSEC_SAK:
        case SAI_ATTR_VALUE_TYPE_MACSEC_AUTH_KEY:
        case SAI_ATTR_VALUE_TYPE_MACSEC_SALT:
        case SAI_ATTR_VALUE_TYPE_MACSEC_SCI:
        case SAI_ATTR_VALUE_TYPE_MACSEC_SSCI:
            break;

        case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG:
            break;

        case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG_LIST:
            sai_free_list(attr.value.sysportconfiglist);
            break;

        case SAI_ATTR_VALUE_TYPE_IP_PREFIX_LIST:
            sai_free_list(attr.value.ipprefixlist);
            break;

        case SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION:
            break;

        default:
            SWSS_LOG_THROW("sai attr value %s is not implemented, FIXME", sai_serialize_attr_value_type(type).c_str());
    }
}