in meta/SaiSerialize.cpp [2014:2201]
std::string sai_serialize_attr_value(
_In_ const sai_attr_metadata_t& meta,
_In_ const sai_attribute_t &attr,
_In_ const bool countOnly)
{
SWSS_LOG_ENTER();
switch (meta.attrvaluetype)
{
case SAI_ATTR_VALUE_TYPE_BOOL:
return sai_serialize_bool(attr.value.booldata);
case SAI_ATTR_VALUE_TYPE_CHARDATA:
return sai_serialize_chardata(attr.value.chardata);
case SAI_ATTR_VALUE_TYPE_UINT8:
return sai_serialize_number(attr.value.u8);
case SAI_ATTR_VALUE_TYPE_INT8:
return sai_serialize_number(attr.value.s8);
case SAI_ATTR_VALUE_TYPE_UINT16:
return sai_serialize_number(attr.value.u16);
case SAI_ATTR_VALUE_TYPE_JSON:
return sai_serialize_json(attr.value.json);
case SAI_ATTR_VALUE_TYPE_INT16:
return sai_serialize_number(attr.value.s16);
case SAI_ATTR_VALUE_TYPE_UINT32:
return sai_serialize_number(attr.value.u32);
case SAI_ATTR_VALUE_TYPE_INT32:
return sai_serialize_enum(attr.value.s32, meta.enummetadata);
case SAI_ATTR_VALUE_TYPE_UINT64:
return sai_serialize_number(attr.value.u64);
// case SAI_ATTR_VALUE_TYPE_INT64:
// return sai_serialize_number(attr.value.s64);
case SAI_ATTR_VALUE_TYPE_MAC:
return sai_serialize_mac(attr.value.mac);
case SAI_ATTR_VALUE_TYPE_IPV4:
return sai_serialize_ipv4(attr.value.ip4);
case SAI_ATTR_VALUE_TYPE_IPV6:
return sai_serialize_ipv6(attr.value.ip6);
case SAI_ATTR_VALUE_TYPE_POINTER:
return sai_serialize_pointer(attr.value.ptr);
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
return sai_serialize_ip_address(attr.value.ipaddr);
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
return sai_serialize_ip_prefix(attr.value.ipprefix);
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
return sai_serialize_object_id(attr.value.oid);
case SAI_ATTR_VALUE_TYPE_OBJECT_LIST:
return sai_serialize_oid_list(attr.value.objlist, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT8_LIST:
return sai_serialize_number_list(attr.value.u8list, countOnly);
case SAI_ATTR_VALUE_TYPE_INT8_LIST:
return sai_serialize_number_list(attr.value.s8list, countOnly);
case SAI_ATTR_VALUE_TYPE_LATCH_STATUS:
return sai_serialize_latch_status(attr.value.latchstatus);
case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
return sai_serialize_port_lane_latch_status_list(attr.value.portlanelatchstatuslist, countOnly);
// case SAI_ATTR_VALUE_TYPE_UINT16_LIST:
// return sai_serialize_number_list(attr.value.u16list, countOnly);
//
// case SAI_ATTR_VALUE_TYPE_INT16_LIST:
// return sai_serialize_number_list(attr.value.s16list, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT32_LIST:
return sai_serialize_number_list(attr.value.u32list, countOnly);
case SAI_ATTR_VALUE_TYPE_INT32_LIST:
return sai_serialize_enum_list(attr.value.s32list, meta.enummetadata, countOnly);
case SAI_ATTR_VALUE_TYPE_UINT32_RANGE:
return sai_serialize_range(attr.value.u32range);
// case SAI_ATTR_VALUE_TYPE_INT32_RANGE:
// return sai_serialize_range(attr.value.s32range);
case SAI_ATTR_VALUE_TYPE_UINT16_RANGE_LIST:
return sai_serialize_u16_range_list(attr.value.u16rangelist, countOnly);
case SAI_ATTR_VALUE_TYPE_VLAN_LIST:
return sai_serialize_number_list(attr.value.vlanlist, countOnly);
case SAI_ATTR_VALUE_TYPE_QOS_MAP_LIST:
return sai_serialize_qos_map_list(attr.value.qosmap, countOnly);
case SAI_ATTR_VALUE_TYPE_MAP_LIST:
return sai_serialize_map_list(attr.value.maplist, countOnly);
case SAI_ATTR_VALUE_TYPE_ACL_RESOURCE_LIST:
return sai_serialize_acl_resource_list(attr.value.aclresource, countOnly);
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
return sai_serialize_ip_address_list(attr.value.ipaddrlist, countOnly);
case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
return sai_serialize_segment_list(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_serialize_acl_field(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_serialize_acl_action(meta, attr.value.aclaction, countOnly);
case SAI_ATTR_VALUE_TYPE_ACL_CAPABILITY:
return sai_serialize_acl_capability(meta, attr.value.aclcapability, countOnly);
// MACsec Attributions
case SAI_ATTR_VALUE_TYPE_MACSEC_SAK:
return sai_serialize_hex_binary(attr.value.macsecsak);
case SAI_ATTR_VALUE_TYPE_MACSEC_AUTH_KEY:
return sai_serialize_hex_binary(attr.value.macsecauthkey);
case SAI_ATTR_VALUE_TYPE_MACSEC_SALT:
return sai_serialize_hex_binary(attr.value.macsecsalt);
case SAI_ATTR_VALUE_TYPE_AUTH_KEY:
return sai_serialize_hex_binary(attr.value.authkey);
case SAI_ATTR_VALUE_TYPE_ENCRYPT_KEY:
return sai_serialize_hex_binary(attr.value.encrypt_key);
case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG:
return sai_serialize_system_port_config(meta, attr.value.sysportconfig);
case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG_LIST:
return sai_serialize_system_port_config_list(meta, attr.value.sysportconfiglist, countOnly);
case SAI_ATTR_VALUE_TYPE_IP_PREFIX_LIST:
return sai_serialize_ip_prefix_list(attr.value.ipprefixlist, countOnly);
case SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION:
return sai_serialize_poe_port_power_consumption(attr.value.portpowerconsumption);
default:
SWSS_LOG_THROW("sai attr value type %s is not implemented, FIXME", sai_serialize_attr_value_type(meta.attrvaluetype).c_str());
}
}