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