diff options
Diffstat (limited to 'veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h')
-rw-r--r-- | veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h | 3565 |
1 files changed, 3150 insertions, 415 deletions
diff --git a/veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h b/veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h index 5c05993..c149749 100644 --- a/veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h +++ b/veslibrary/ves_clibrary/evel/evel-library/code/evel_library/evel.h @@ -46,8 +46,9 @@ extern "C" { /*****************************************************************************/ /* Supported API version. */ /*****************************************************************************/ -#define EVEL_API_MAJOR_VERSION 5 +#define EVEL_API_MAJOR_VERSION 7 #define EVEL_API_MINOR_VERSION 0 +#define EVEL_API_PATCH_VERSION 2 /**************************************************************************//** * Error codes @@ -76,6 +77,7 @@ typedef enum { *****************************************************************************/ typedef enum { EVEL_LOG_MIN = 0, + EVEL_LOG_WARN = 1, EVEL_LOG_SPAMMY = 30, EVEL_LOG_DEBUG = 40, EVEL_LOG_INFO = 50, @@ -131,6 +133,8 @@ typedef enum { EVEL_DOMAIN_OTHER, /** Another event. */ EVEL_DOMAIN_THRESHOLD_CROSS, /** A Threshold Crossing Event */ EVEL_DOMAIN_VOICE_QUALITY, /** A Voice Quality Event */ + EVEL_DOMAIN_NOTIFICATION, /** A Notification event. */ + EVEL_DOMAIN_PNF_REGISTRATION, /** A PNF Registration event. */ EVEL_MAX_DOMAINS /** Maximum number of recognized Event types. */ } EVEL_EVENT_DOMAINS; @@ -234,8 +238,8 @@ typedef enum { } EVEL_ALERT_TYPES; /**************************************************************************//** - * Alert types. - * JSON equivalent fields: newState, oldState + * Entity state. + * JSON equivalent fields: new_state, old_state *****************************************************************************/ typedef enum { EVEL_ENTITY_STATE_IN_SERVICE, @@ -245,6 +249,16 @@ typedef enum { } EVEL_ENTITY_STATE; /**************************************************************************//** + * Operational state. + * JSON equivalent fields: operationalState, administrativeState + *****************************************************************************/ +typedef enum { + EVEL_OPER_STATE_IN_SERVICE, + EVEL_OPER_STATE_OUT_OF_SERVICE, + EVEL_MAX_OPER_STATES +} EVEL_OPER_STATE; + +/**************************************************************************//** * Syslog facilities. * JSON equivalent field: syslogFacility *****************************************************************************/ @@ -362,6 +376,18 @@ typedef struct evel_option_string EVEL_BOOLEAN is_set; } EVEL_OPTION_STRING; +typedef struct evel_option_state +{ + EVEL_ENTITY_STATE state; + EVEL_BOOLEAN is_set; +} EVEL_OPTION_STATE; + +typedef struct evel_option_op_state +{ + EVEL_OPER_STATE state; + EVEL_BOOLEAN is_set; +} EVEL_OPTION_OP_STATE; + /**************************************************************************//** * Optional parameter holder for int. *****************************************************************************/ @@ -402,7 +428,7 @@ typedef struct internal_header_fields /*****************************************************************************/ /* Supported Common Event Header version. */ /*****************************************************************************/ -#define EVEL_HEADER_MAJOR_VERSION 3 +#define EVEL_HEADER_MAJOR_VERSION 4 #define EVEL_HEADER_MINOR_VERSION 0 #define EVEL_BATCH_MAJOR_VERSION 1 @@ -426,6 +452,7 @@ typedef struct event_header { char * event_name; char * source_name; char * reporting_entity_name; + char * event_listener_version; EVEL_EVENT_PRIORITIES priority; unsigned long long start_epoch_microsec; unsigned long long last_epoch_microsec; @@ -440,6 +467,8 @@ typedef struct event_header { EVEL_OPTION_INTHEADER_FIELDS internal_field; EVEL_OPTION_STRING nfcnaming_code; EVEL_OPTION_STRING nfnaming_code; + EVEL_OPTION_STRING nfVendor_name; + EVEL_OPTION_STRING timezone_offset; DLIST batch_events; } EVENT_HEADER; @@ -494,8 +523,8 @@ void evel_free_batch(EVENT_HEADER * event); /*****************************************************************************/ /* Supported Fault version. */ /*****************************************************************************/ -#define EVEL_FAULT_MAJOR_VERSION 2 -#define EVEL_FAULT_MINOR_VERSION 1 +#define EVEL_FAULT_MAJOR_VERSION 4 +#define EVEL_FAULT_MINOR_VERSION 0 /**************************************************************************//** * Fault. @@ -523,7 +552,7 @@ typedef struct event_fault { /***************************************************************************/ EVEL_OPTION_STRING category; EVEL_OPTION_STRING alarm_interface_a; - DLIST additional_info; + HASHTABLE_T *additional_info; } EVENT_FAULT; @@ -531,12 +560,11 @@ typedef struct event_fault { * Fault Additional Info. * JSON equivalent field: alarmAdditionalInformation *****************************************************************************/ -typedef struct fault_additional_info { + typedef struct fault_additional_info { char * name; char * value; } FAULT_ADDL_INFO; - /**************************************************************************//** * optional field block for fields specific to heartbeat events *****************************************************************************/ @@ -558,11 +586,315 @@ typedef struct event_heartbeat_fields /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - DLIST additional_info; + HASHTABLE_T *additional_info; } EVENT_HEARTBEAT_FIELD; /**************************************************************************//** + * Create a new Heartbeat fields event. + * + * @note The mandatory fields on the Heartbeat fields must be supplied to + * this factory function and are immutable once set. Optional fields + * have explicit setter functions, but again values may only be set + * once so that the event has immutable properties. + * @param event_name Unique Event Name confirming Domain AsdcModel Description + * @param event_id A universal identifier of the event for: troubleshooting correlation, analysis, etc + * @param vendor_id The vendor id to encode in the event instance id. + * @param event_id The vendor event id to encode in the event instance id. + * @returns pointer to the newly manufactured ::EVENT_HEARTBEAT_FIELD. If the event + * is not used (i.e. posted) it must be released using + * ::evel_free_hrtbt_field. + * @retval NULL Failed to create the event. + *****************************************************************************/ +EVENT_HEARTBEAT_FIELD * evel_new_heartbeat_field(int interval,const char* ev_name, const char *ev_id); + +/**************************************************************************//** + * Add a name/value pair to the Heartbeat fields, under the additionalFields array. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param event Pointer to the Heartbeat fields event. + * @param name ASCIIZ string with the field's name. The caller does not + * need to preserve the value once the function returns. + * @param value ASCIIZ string with the field's value. The caller does not + * need to preserve the value once the function returns. + *****************************************************************************/ +void evel_hrtbt_field_addl_field_add(EVENT_HEARTBEAT_FIELD * const event, + const char * const name, + const char * const value); + +/**************************************************************************//** + * Set the Interval property of the Heartbeat fields event. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param event Pointer to the Heartbeat fields event. + * @param product_id The vendor product id to be set. ASCIIZ string. The + * caller does not need to preserve the value once the + * function returns. + *****************************************************************************/ +void evel_hrtbt_interval_set(EVENT_HEARTBEAT_FIELD * const event, + const int interval); + +/**************************************************************************//** + * Free a Heartbeat fields event. + * + * Free off the event supplied. Will free all the contained allocated memory. + * + * @note It does not free the event itself, since that may be part of a larger + * structure. + *****************************************************************************/ +void evel_free_hrtbt_field(EVENT_HEARTBEAT_FIELD * const event); + + +/*****************************************************************************/ +/* Supported PNF Registration version. */ +/*****************************************************************************/ +#define EVEL_PNF_REGISTRATION_MAJOR_VERSION 2 +#define EVEL_PNF_REGISTRATION_MINOR_VERSION 0 + +/**************************************************************************//** + * PNF Registration + * JSON equivalent field: pnfRegistrationFields + *****************************************************************************/ +typedef struct event_PNF_REGISTRATION { + /***************************************************************************/ + /* Header and version */ + /***************************************************************************/ + EVENT_HEADER header; + int major_version; + int minor_version; + + /***************************************************************************/ + /* Mandatory fields */ + /***************************************************************************/ + double version; + + /***************************************************************************/ + /* Optional fields */ + /***************************************************************************/ + EVEL_OPTION_STRING last_service_date; + EVEL_OPTION_STRING mac_address; + EVEL_OPTION_STRING manufacture_date; + EVEL_OPTION_STRING model_number; + EVEL_OPTION_STRING oam_v4_ipaddress; + EVEL_OPTION_STRING oam_v6_ipaddress; + EVEL_OPTION_STRING serial_number; + EVEL_OPTION_STRING sw_version; + EVEL_OPTION_STRING unit_family; + EVEL_OPTION_STRING unit_type; + EVEL_OPTION_STRING vendor_name; + HASHTABLE_T *additional_fields; + +} EVENT_PNF_REGISTRATION; + +/**************************************************************************//** + * Create a new PNF Registration event. + * + * @note The mandatory fields on the PNF Registration must be supplied to the + * factory function and are immutable once set. Optional fields have + * explicit setter functions, but again values may only be set once + * so that the State Change has immutable properties. + * + * @param event_name Unique Event Name confirming Domain AsdcModel Description + * @param event_id A universal identifier of the event for: troubleshooting correlation, analysis, etc + * + * @returns pointer to the newly manufactured ::EVENT_PNF_REGISTRATION. If the + * event is not used it must be released using + * ::evel_free_pnf_registration + * @retval NULL Failed to create the event. + *****************************************************************************/ +EVENT_PNF_REGISTRATION * evel_new_pnf_registration(const char* ev_name, const char *ev_id ); + +/**************************************************************************//** + * Free a PNF Registration. + * + * Free off the PNF Registration supplied. Will free all contained allocated + * memory. + * + * @note It does not free the PNF Registration itself, since that may be part + * of a larger structure. + *****************************************************************************/ +void evel_free_pnf_registration(EVENT_PNF_REGISTRATION * const pnf_registration); + +/**************************************************************************//** + * Add an additional field name/value pair to the PNF Registration + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param pnf_registration Pointer to the ::EVENT_PNF_REGISTRATION. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_pnf_registration_addl_field_add( + EVENT_PNF_REGISTRATION * const pnf_registration, + const char * const name, + const char * const value); + + + /****************************************************************//** + * Set the last service date + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param last_service_date The last service date to be set. ASCIIZ + * string. The caller does not need to preserve + * the value once the function returns. +*********************************************************************/ +void evel_pnfRegistration_last_service_date_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const last_service_date); + +/************************************************************************//** + * Set the Mac Address + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param mac_address The mac address to be set. ASCIIZ string. The + * caller does not need to preserve the value once + * the function returns. +***************************************************************************/ +void evel_pnfRegistration_mac_address_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const mac_address); + +/***********************************************************************//** + * Set the Manufacture Date + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param manufacture_date The manufacture date to be set. ASCIIZ string. + * The caller does not need to preserve the value + * once the function returns. +***************************************************************************/ +void evel_pnfRegistration_manufacture_date_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const manufacture_date); + +/***********************************************************************//** + * Set the Model Number + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param model_number The model Number to be set. ASCIIZ string. The caller + * does not need to preserve the value once the + * function returns. +***************************************************************************/ +void evel_pnfRegistration_model_number_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const model_number); + +/***********************************************************************//** + * Set the OAM v4 ipaddress + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param oam_v4_ipaddress Set the oam IP address. ASCIIZ string. + * The caller does not need + * preserve the value once the function returns. +*************************************************************************/ +void evel_pnfRegistration_oam_v4_ipaddress_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const oam_v4_ipaddress); + +/**********************************************************************//** + * Set the oam v6 ipaddress + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param oam_v6_ipaddress Set the oam IP address. ASCIIZ string. + * The caller does not need + * preserve the value once the function returns. +**************************************************************************/ +void evel_pnfRegistration_oam_v6_ipaddress_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const oam_v6_ipaddress); + +/**********************************************************************//** + * Set the Serial Number + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param serial_number The serial number to be set. ASCIIZ string. + * The caller does not need to preserve the + * value once the function returns. +**************************************************************************/ +void evel_pnfRegistration_serial_number_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const serial_number); + +/***********************************************************************//** + * Set the Software Version + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param sw_version The SW Version to be set. ASCIIZ string. The caller does + * not need to preserve the value once the function returns. +****************************************************************************/ +void evel_pnfRegistration_sw_version_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const sw_version); + +/***********************************************************************//** + * Set the Unit Family + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param unit_family The unit family to be set. ASCIIZ string. The caller + * does not need to preserve the value once the function + * returns. +***************************************************************************/ +void evel_pnfRegistration_unit_family_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const unit_family); + +/**********************************************************************//** + * Set the Unit type + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param unit_type The unit type to be set. ASCIIZ string. The caller does + * not need to preserve the value once the function returns. +****************************************************************************/ +void evel_pnfRegistration_unit_type_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const unit_type); + +/***********************************************************************//** + * Set the Vendor name + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries + * to overwrite, just ignoring the update instead. + * + * @param pnfRegistration Pointer to the pnfRegistration + * @param vendor_name The vendor name to be set. ASCIIZ string. The + * caller does not need to preserve the value once + * the function returns. +***************************************************************************/ +void evel_pnfRegistration_vendor_name_set(EVENT_PNF_REGISTRATION * pnfRegistration, const char * const vendor_name); + +/**************************************************************************//** * tuple which provides the name of a key along with its value and * relative order *****************************************************************************/ @@ -581,7 +913,7 @@ typedef struct json_object_instance { char *jsonstring; - unsigned long long objinst_epoch_microsec; + EVEL_OPTION_ULL objinst_epoch_microsec; DLIST object_keys; /*EVEL_INTERNAL_KEY list */ } EVEL_JSON_OBJECT_INSTANCE; @@ -648,19 +980,8 @@ void evel_free_jsonobject(EVEL_JSON_OBJECT * jsobj); /*****************************************************************************/ /* Supported Measurement version. */ /*****************************************************************************/ -#define EVEL_MEASUREMENT_MAJOR_VERSION 2 -#define EVEL_MEASUREMENT_MINOR_VERSION 1 - -/**************************************************************************//** - * Errors. - * JSON equivalent field: errors - *****************************************************************************/ -typedef struct measurement_errors { - int receive_discards; - int receive_errors; - int transmit_discards; - int transmit_errors; -} MEASUREMENT_ERRORS; +#define EVEL_MEASUREMENT_MAJOR_VERSION 4 +#define EVEL_MEASUREMENT_MINOR_VERSION 0 /**************************************************************************//** * Measurement. @@ -682,27 +1003,202 @@ typedef struct event_measurement { /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - DLIST additional_info; - DLIST additional_measurements; - DLIST additional_objects; + HASHTABLE_T * additional_info; + DLIST additional_measurements; // arry of named hashmap + DLIST additional_objects; //array of json objects DLIST codec_usage; EVEL_OPTION_INT concurrent_sessions; EVEL_OPTION_INT configured_entities; DLIST cpu_usage; + + //VES6.0 Added field 14/07/2018 + DLIST huge_pages; + DLIST loads; + DLIST process_stats; + DLIST ipmis; + DLIST disk_usage; - MEASUREMENT_ERRORS * errors; - DLIST feature_usage; + DLIST machine_check_exception; + HASHTABLE_T * feature_usage; DLIST filesystem_usage; DLIST latency_distribution; EVEL_OPTION_DOUBLE mean_request_latency; DLIST mem_usage; EVEL_OPTION_INT media_ports_in_use; - EVEL_OPTION_INT request_rate; + EVEL_OPTION_DOUBLE request_rate; EVEL_OPTION_INT vnfc_scaling_metric; - DLIST vnic_usage; + DLIST nic_performance; } EVENT_MEASUREMENT; +typedef struct Measurement_machine_check_exception { + char * process_id; + EVEL_OPTION_DOUBLE corrected_memory_errors; + EVEL_OPTION_DOUBLE corrected_memory_errors_in_1Hr; + EVEL_OPTION_DOUBLE uncorrected_memory_errors; + EVEL_OPTION_DOUBLE uncorrected_memory_errors_in_1Hr; + +} MACHINE_CHECK_EXCEPTION; +/**************************************************************************//** +* Huge Pages. +* JSON equivalent field: hugePages +*****************************************************************************/ +typedef struct measurement_huge_page { + char * hugePagesIdentifier; + EVEL_OPTION_DOUBLE bytesUsed; + EVEL_OPTION_DOUBLE bytesFree; + EVEL_OPTION_DOUBLE vmPageNumberUsed; + EVEL_OPTION_DOUBLE vmPageNumberFree; + EVEL_OPTION_DOUBLE percentUsed; + EVEL_OPTION_DOUBLE percentFree; + } MEASUREMENT_HUGE_PAGE; + +/**************************************************************************//** +* Process Stats. +* JSON equivalent field: processStats +*****************************************************************************/ +typedef struct measurement_process_stats { + char * processIdentifier; + EVEL_OPTION_DOUBLE forkRate; + EVEL_OPTION_DOUBLE psStateBlocked; + EVEL_OPTION_DOUBLE psStatePaging; + EVEL_OPTION_DOUBLE psStateRunning; + EVEL_OPTION_DOUBLE psStateSleeping; + EVEL_OPTION_DOUBLE psStateStopped; + EVEL_OPTION_DOUBLE psStateZombie; + + } MEASUREMENT_PROCESS_STATS; + +/**************************************************************************//** +* Load. +* JSON equivalent field: load +*****************************************************************************/ +typedef struct measurement_load { + EVEL_OPTION_DOUBLE shortTerm; + EVEL_OPTION_DOUBLE midTerm; + EVEL_OPTION_DOUBLE longTerm; + + } MEASUREMENT_LOAD; + +/**************************************************************************//** + * Convert a ::EVEL_OPTION_OP_STATE to it's string form for JSON encoding. + * + * @param state The entity state to encode. + * + * @returns the corresponding string + *****************************************************************************/ +char * evel_entity_opt_op_state (EVEL_OPTION_OP_STATE * const state); + +/**************************************************************************//** + * Initialize an ::EVEL_OPTION_STATE to a not-set state. + * + * @param option Pointer to the ::EVEL_OPTION_INT. + *****************************************************************************/ +void evel_init_option_op_state(EVEL_OPTION_OP_STATE * const option); + +/**************************************************************************//** + * Set the value of an ::EVEL_OPTION_STATE. + * + * @param option Pointer to the ::EVEL_OPTION_STATE. + * @param value The value to set. + * @param description Description to be used in logging. + *****************************************************************************/ +void evel_set_option_op_state(EVEL_OPTION_OP_STATE * const option, + const int value, + const char * const description); +/**************************************************************************//** + * Add a huge page to measurement + * + * @param measurement Pointer to measurement + * @param hugePagesIdentifier Huge Page Identifier to add + *****************************************************************************/ +MEASUREMENT_HUGE_PAGE * evel_measurement_new_huge_page_add( + EVENT_MEASUREMENT * measurement, + const char * const hugePagesIdentifier ); + +/**************************************************************************//** + * Set bytes used value in a huge page + * + * @param huge_page Pointer to huge page + * @param val bytes used value + *****************************************************************************/ +void evel_measurement_huge_page_bytesUsed_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Set bytes free value in a huge page + * + * @param huge_page Pointer to huge page + * @param val bytes free value + *****************************************************************************/ +void evel_measurement_huge_page_bytesFree_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Set Number of used VM Pages in numbers in a huge page + * + * @param huge_page Pointer to huge page + * @param val value + *****************************************************************************/ +void evel_measurement_huge_page_vmPageNumberUsed_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Set Number of free VM Pages in numbers in a huge page + * + * @param huge_page Pointer to huge page + * @param val value + *****************************************************************************/ +void evel_measurement_huge_page_vmPageNumberFree_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Set Number of used hugePages in percent in a huge page + * + * @param huge_page Pointer to huge page + * @param val value + *****************************************************************************/ +void evel_measurement_huge_page_percentUsed_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Set umber of free hugePages in percent in a huge page + * + * @param huge_page Pointer to huge page + * @param val value + *****************************************************************************/ +void evel_measurement_huge_page_percentFree_set(MEASUREMENT_HUGE_PAGE *huge_page, + const double val); + +/**************************************************************************//** + * Add an additional value name/value pair to the Measurement. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param measurement Pointer to the measurement. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_measurement_addl_info_add(EVENT_MEASUREMENT * measurement, char * name, char * value); + +/**************************************************************************//** + * Add a json object to jsonObject list. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param measurement Pointer to the ScalingMeasurement + * @param jsonobj Pointer to json object + *****************************************************************************/ +void evel_measurement_addl_object_add(EVENT_MEASUREMENT * measurement, EVEL_JSON_OBJECT *jsonobj); + /**************************************************************************//** * CPU Usage. * JSON equivalent field: cpuUsage @@ -718,6 +1214,18 @@ typedef struct measurement_cpu_use { EVEL_OPTION_DOUBLE sys; EVEL_OPTION_DOUBLE user; EVEL_OPTION_DOUBLE wait; + + /* + * Ves6.0 added fields 14/07/2018 + */ + EVEL_OPTION_DOUBLE cpuCapacityContention; + EVEL_OPTION_DOUBLE cpuDemandAvg; + EVEL_OPTION_DOUBLE cpuDemandMhz; + EVEL_OPTION_DOUBLE cpuDemandPct; + EVEL_OPTION_DOUBLE cpuLatencyAvg; + EVEL_OPTION_DOUBLE cpuOverheadAvg; + EVEL_OPTION_DOUBLE cpuSwapWaitTime; + } MEASUREMENT_CPU_USE; @@ -767,6 +1275,23 @@ typedef struct measurement_disk_use { EVEL_OPTION_DOUBLE timewritelast; EVEL_OPTION_DOUBLE timewritemax; EVEL_OPTION_DOUBLE timewritemin; + /* + * VES6.0 Added fields 14/07/2018 + */ + EVEL_OPTION_DOUBLE diskBusResets; + EVEL_OPTION_DOUBLE diskCommandsAborted; + EVEL_OPTION_DOUBLE diskTime; + EVEL_OPTION_DOUBLE diskFlushRequests; + EVEL_OPTION_DOUBLE diskFlushTime; + EVEL_OPTION_DOUBLE diskCommandsAvg; + EVEL_OPTION_DOUBLE diskReadCommandsAvg; + EVEL_OPTION_DOUBLE diskWriteCommandsAvg; + EVEL_OPTION_DOUBLE diskTotalReadLatencyAvg; + EVEL_OPTION_DOUBLE diskTotalWriteLatencyAvg; + EVEL_OPTION_DOUBLE diskWeightedIoTimeAvg; + EVEL_OPTION_DOUBLE diskWeightedIoTimeLast; + EVEL_OPTION_DOUBLE diskWeightedIoTimeMax; + EVEL_OPTION_DOUBLE diskWeightedIoTimeMin; } MEASUREMENT_DISK_USE; @@ -784,6 +1309,785 @@ typedef struct measurement_disk_use { MEASUREMENT_DISK_USE * evel_measurement_new_disk_use_add(EVENT_MEASUREMENT * measurement, char * id); /**************************************************************************//** + * Set milliseconds spent doing input/output operations over 1 sec; treat + * this metric as a device load percentage where 1000ms matches 100% load; + * provide the average over the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_iotimeavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds spent doing input/output operations over 1 sec; treat + * this metric as a device load percentage where 1000ms matches 100% load; + * provide the last value within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_iotimelast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); +/**************************************************************************//** + * Set milliseconds spent doing input/output operations over 1 sec; treat + * this metric as a device load percentage where 1000ms matches 100% load; + * provide the maximum value within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_iotimemax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds spent doing input/output operations over 1 sec; treat + * this metric as a device load percentage where 1000ms matches 100% load; + * provide the minimum value within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_iotimemin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical read operations that were merged into physical read + * operations, e.g., two logical reads were served by one physical disk access; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergereadavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical read operations that were merged into physical read + * operations, e.g., two logical reads were served by one physical disk access; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergereadlast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical read operations that were merged into physical read + * operations, e.g., two logical reads were served by one physical disk access; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergereadmax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); +/**************************************************************************//** + * Set number of logical read operations that were merged into physical read + * operations, e.g., two logical reads were served by one physical disk access; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergereadmin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical write operations that were merged into physical read + * operations, e.g., two logical writes were served by one physical disk access; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergewritelast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical write operations that were merged into physical read + * operations, e.g., two logical writes were served by one physical disk access; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergewritemax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical write operations that were merged into physical read + * operations, e.g., two logical writes were served by one physical disk access; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergewriteavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of logical write operations that were merged into physical read + * operations, e.g., two logical writes were served by one physical disk access; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_mergewritemin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second read from a disk or partition; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetsreadavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second read from a disk or partition; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetsreadlast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second read from a disk or partition; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetsreadmax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second read from a disk or partition; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetsreadmin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second written to a disk or partition; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetswriteavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second written to a disk or partition; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetswritelast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second written to a disk or partition; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetswritemax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of octets per second written to a disk or partition; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_octetswritemin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of read operations per second issued to the disk; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opsreadavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of read operations per second issued to the disk; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opsreadlast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of read operations per second issued to the disk; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opsreadmax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of read operations per second issued to the disk; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opsreadmin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of write operations per second issued to the disk; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opswriteavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of write operations per second issued to the disk; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opswritelast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of write operations per second issued to the disk; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opswritemax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set number of write operations per second issued to the disk; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_opswritemin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set queue size of pending I/O operations per second; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_pendingopsavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set queue size of pending I/O operations per second; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_pendingopslast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set queue size of pending I/O operations per second; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_pendingopsmax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set queue size of pending I/O operations per second; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_pendingopsmin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a read operation took to complete; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timereadavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a read operation took to complete; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timereadlast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a read operation took to complete; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timereadmax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a read operation took to complete; + * provide the minimum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timereadmin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a write operation took to complete; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timewriteavg_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a write operation took to complete; + * provide the last measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timewritelast_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); +/**************************************************************************//** + * Set milliseconds a write operation took to complete; + * provide the maximum measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timewritemax_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set milliseconds a write operation took to complete; + * provide the average measurement within the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_timewritemin_set(MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Number of bus resets over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskBusResets_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Number of disk commands aborted over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskCommandsAborted_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Nanoseconds spent on disk cache reads/writes within the measurement + * interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskTime_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Total flush requests of the disk cache over the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskFlushRequests_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Milliseconds spent on disk cache flushing over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskFlushTime_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Average number of commands per second over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskCommandsAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Average number of read commands issued per second to the disk over the + * measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskReadCommandsAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Average number of write commands issued per second to the disk over the + * measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskWriteCommandsAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Average read time from the perspective of a Guest OS: sum of the Kernel + * Read Latency and Physical Device Read Latency in milliseconds over the + * measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskTotalReadLatencyAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Average write time from the perspective of a Guest OS: sum of the + * Kernel Write Latency and Physical Device Write Latency in milliseconds over + * the measurement interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskTotalWriteLatencyAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Measure in ms over 1 sec of both I/O completion time and the backlog + * that may be accumulating. Value is the average within the collection + * interval. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskWeightedIoTimeAvg_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Measure in ms over 1 sec of both I/O completion time and the backlog + * that may be accumulating. Value is the last within the collection interval. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskWeightedIoTimeLast_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Measure in ms over 1 sec of both I/O completion time and the backlog + * that may be accumulating. Value is the maximum within the collection + * interval. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskWeightedIoTimeMax_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** + * Set Measure in ms over 1 sec of both I/O completion time and the backlog + * that may be accumulating. Value is the minimum within the collection + * interval. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param disk_use Pointer to the Disk Use. + * @param val double + *****************************************************************************/ +void evel_measurement_disk_use_diskWeightedIoTimeMin_set( + MEASUREMENT_DISK_USE * const disk_use, + const double val); + +/**************************************************************************//** * Filesystem Usage. * JSON equivalent field: filesystemUsage *****************************************************************************/ @@ -802,15 +2106,27 @@ typedef struct measurement_fsys_use { * JSON equivalent field: memoryUsage *****************************************************************************/ typedef struct measurement_mem_use { - char * id; char * vmid; - double membuffsz; + double memused; + double memfree; + EVEL_OPTION_DOUBLE membuffsz; EVEL_OPTION_DOUBLE memcache; EVEL_OPTION_DOUBLE memconfig; - EVEL_OPTION_DOUBLE memfree; EVEL_OPTION_DOUBLE slabrecl; EVEL_OPTION_DOUBLE slabunrecl; - EVEL_OPTION_DOUBLE memused; + /* + * VES6.0 Added fields 14/07/2018 + */ + EVEL_OPTION_DOUBLE memoryDemand; + EVEL_OPTION_DOUBLE memoryLatencyAvg; + EVEL_OPTION_DOUBLE memorySharedAvg; + EVEL_OPTION_DOUBLE memorySwapInAvg; + EVEL_OPTION_DOUBLE memorySwapInRateAvg; + EVEL_OPTION_DOUBLE memorySwapOutAvg; + EVEL_OPTION_DOUBLE memorySwapOutRateAvg; + EVEL_OPTION_DOUBLE memorySwapUsedAvg; + EVEL_OPTION_DOUBLE percentMemoryUsage; + } MEASUREMENT_MEM_USE; /**************************************************************************//** @@ -821,14 +2137,17 @@ typedef struct measurement_mem_use { * returns. * * @param measurement Pointer to the measurement. - * @param id ASCIIZ string with the Memory identifier. * @param vmidentifier ASCIIZ string with the VM's identifier. - * @param membuffsz Memory Size. + * @param memfree Memory Free Size. + * @param memused Memory Used * * @return Returns pointer to memory use structure in measurements *****************************************************************************/ -MEASUREMENT_MEM_USE * evel_measurement_new_mem_use_add(EVENT_MEASUREMENT * measurement, - char * id, char *vmidentifier, double membuffsz); +MEASUREMENT_MEM_USE * evel_measurement_new_mem_use_add( + EVENT_MEASUREMENT * measurement, + char *vmidentifier, + double memfree, + double memused); /**************************************************************************//** * Set kilobytes of memory used for cache @@ -843,7 +2162,7 @@ MEASUREMENT_MEM_USE * evel_measurement_new_mem_use_add(EVENT_MEASUREMENT * measu void evel_measurement_mem_use_memcache_set(MEASUREMENT_MEM_USE * const mem_use, const double val); /**************************************************************************//** - * Set kilobytes of memory configured in the virtual machine on which the VNFC reporting + * Set kilobytes of memory Buffered * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to @@ -852,10 +2171,12 @@ void evel_measurement_mem_use_memcache_set(MEASUREMENT_MEM_USE * const mem_use, * @param mem_use Pointer to the Memory Use. * @param val double *****************************************************************************/ -void evel_measurement_mem_use_memconfig_set(MEASUREMENT_MEM_USE * const mem_use, +void evel_measurement_mem_use_mem_buffered_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + /**************************************************************************//** - * Set kilobytes of physical RAM left unused by the system + * Set kilobytes of memory configured in the virtual machine on which the VNFC + * reporting * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to @@ -864,10 +2185,12 @@ void evel_measurement_mem_use_memconfig_set(MEASUREMENT_MEM_USE * const mem_use, * @param mem_use Pointer to the Memory Use. * @param val double *****************************************************************************/ -void evel_measurement_mem_use_memfree_set(MEASUREMENT_MEM_USE * const mem_use, +void evel_measurement_mem_use_memconfig_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + /**************************************************************************//** - * Set the part of the slab that can be reclaimed such as caches measured in kilobytes + * Set the part of the slab that can be reclaimed such as caches measured in + * kilobytes * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to @@ -878,8 +2201,10 @@ void evel_measurement_mem_use_memfree_set(MEASUREMENT_MEM_USE * const mem_use, *****************************************************************************/ void evel_measurement_mem_use_slab_reclaimed_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + /**************************************************************************//** - * Set the part of the slab that cannot be reclaimed such as caches measured in kilobytes + * Set the part of the slab that cannot be reclaimed such as caches measured + * in kilobytes * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to @@ -890,8 +2215,117 @@ void evel_measurement_mem_use_slab_reclaimed_set(MEASUREMENT_MEM_USE * const mem *****************************************************************************/ void evel_measurement_mem_use_slab_unreclaimable_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + +/**************************************************************************//** + * Set the Host demand in kibibytes + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memoryDemand_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + +/**************************************************************************//** + * Set the memory latency average in Percentage of time the VM is + * waiting to access swapped or compressed memory + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memoryLatencyAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the shared memory in kilobytes + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySharedAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the Amount of memory swapped-in from host cache in kibibytes + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySwapInAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the Rate at which memory is swapped from disk into active memory + * during the interval in kilobytes per second + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySwapInRateAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the Amount of memory swapped-out to host cache in kibibytes + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySwapOutAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the Rate at which memory is being swapped from active memory to disk + * during the current interval in kilobytes per second + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySwapOutRateAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + +/**************************************************************************//** + ** Set the Space used for caching swapped pages in the host cache in kibibytes + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param mem_use Pointer to the Memory Use. + * @param val double + *****************************************************************************/ +void evel_measurement_mem_use_memorySwapUsedAvg_set(MEASUREMENT_MEM_USE * const mem_use, + const double val); + /**************************************************************************//** - * Set the total memory minus the sum of free, buffered, cached and slab memory in kilobytes + ** Set the Percentage of memory usage; value = + * (memoryUsed / (memoryUsed + memoryFree) x 100 if denomintor is nonzero, + * or 0, if otherwise. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to @@ -900,8 +2334,9 @@ void evel_measurement_mem_use_slab_unreclaimable_set(MEASUREMENT_MEM_USE * const * @param mem_use Pointer to the Memory Use. * @param val double *****************************************************************************/ -void evel_measurement_mem_use_usedup_set(MEASUREMENT_MEM_USE * const mem_use, +void evel_measurement_mem_use_percentMemoryUsage_set(MEASUREMENT_MEM_USE * const mem_use, const double val); + /**************************************************************************//** * Latency Bucket. * JSON equivalent field: latencyBucketMeasure @@ -918,13 +2353,29 @@ typedef struct measurement_latency_bucket { } MEASUREMENT_LATENCY_BUCKET; /**************************************************************************//** - * Virtual NIC usage. - * JSON equivalent field: vNicUsage + * Virtual NIC performance. + * JSON equivalent field: NicPerformance *****************************************************************************/ -typedef struct measurement_vnic_performance { +typedef struct measurement_nic_performance { + + /* Indicates whether NicPerformance values are likely inaccurate + due to counter overflow or other condtions*/ + char * nic_id; + char * valuesaresuspect; + /***************************************************************************/ /* Optional fields */ /***************************************************************************/ + EVEL_OPTION_OP_STATE administrativeState; + EVEL_OPTION_OP_STATE operationalState; + EVEL_OPTION_DOUBLE receivedPercentDiscard; + EVEL_OPTION_DOUBLE receivedPercentError; + EVEL_OPTION_DOUBLE receivedUtilization; + EVEL_OPTION_DOUBLE speed; + EVEL_OPTION_DOUBLE transmittedPercentDiscard; + EVEL_OPTION_DOUBLE transmittedPercentError; + EVEL_OPTION_DOUBLE transmittedUtilization; + /*Cumulative count of broadcast packets received as read at the end of the measurement interval*/ EVEL_OPTION_DOUBLE recvd_bcast_packets_acc; @@ -995,12 +2446,8 @@ typedef struct measurement_vnic_performance { EVEL_OPTION_DOUBLE tx_ucast_packets_acc; /*Count of transmit unicast packets within the measurement interval*/ EVEL_OPTION_DOUBLE tx_ucast_packets_delta; - /* Indicates whether vNicPerformance values are likely inaccurate - due to counter overflow or other condtions*/ - char *valuesaresuspect; - char *vnic_id; -} MEASUREMENT_VNIC_PERFORMANCE; +} MEASUREMENT_NIC_PERFORMANCE; /**************************************************************************//** * Codec Usage. @@ -1029,6 +2476,101 @@ typedef struct measurement_group { DLIST measurements; } MEASUREMENT_GROUP; +/* +* VES6.0 added fields 14July +*/ + +/**************************************************************************//** +* IPMI. +* JSON equivalent field: Ipmi +*****************************************************************************/ +typedef struct measurement_ipmi { + EVEL_OPTION_DOUBLE exitAirTemperature; + EVEL_OPTION_DOUBLE frontPanelTemperature; + EVEL_OPTION_DOUBLE ioModuleTemperature; + EVEL_OPTION_DOUBLE systemAirflow; + DLIST ipmi_base_board_temparature; + DLIST ipmi_base_board_voltage; + DLIST ipmi_battery; + DLIST ipmi_fan; + DLIST ipmi_hsbp; + DLIST ipmi_global_agg_temp_margin; + DLIST ipmi_nic; + DLIST ipmi_power; + DLIST ipmi_processor; + +} MEASUREMENT_IPMI; + +/**************************************************************************//** +* IPMI base board temperature +* JSON equivalent field: PercentUsage +*****************************************************************************/ +typedef struct measurement_ipmi_bb_temperature { + char * BBTemperatureID; + EVEL_OPTION_DOUBLE BBTemperature; + + } MEASUREMENT_IPMI_BB_TEMPERATURE; + +typedef struct measurement_ipmi_bb_voltage { + char * BBVoltageRegID; + EVEL_OPTION_DOUBLE voltageRegTemperature; + + } MEASUREMENT_IPMI_BB_VOLTAGE; + +typedef struct measurement_ipmi_battery { + char * batteryIdentifier; + EVEL_OPTION_STRING batteryType; + EVEL_OPTION_DOUBLE batteryVoltageLevel; + + } MEASUREMENT_IPMI_BATTERY; + + +typedef struct measurement_ipmi_fan { + char * fanIdentifier; + EVEL_OPTION_DOUBLE fanSpeed; + + } MEASUREMENT_IPMI_FAN; + +typedef struct measurement_ipmi_hsbp { + char * hsbpIdentifier; + EVEL_OPTION_DOUBLE hsbpTemperature; + + } MEASUREMENT_IPMI_HSBP; + +typedef struct measurement_ipmi_global_agg_temp_margin { + char * globalAggTempID; + EVEL_OPTION_DOUBLE globalAggTempMargin; + + } MEASUREMENT_IPMI_GLOBAL_AGG_TEMP_MARGIN; + +typedef struct measurement_ipmi_nic { + char * nicIdentifier; + EVEL_OPTION_DOUBLE nicTemperature; + + } MEASUREMENT_IPMI_NIC; + +typedef struct measurement_ipmi_power_supply { + char * powerSupplyIdentifier; + EVEL_OPTION_DOUBLE powerSupplyInputPower; + EVEL_OPTION_DOUBLE powerSupplyCurrentOutput; + EVEL_OPTION_DOUBLE powerSupplyTemperature; + + } MEASUREMENT_IPMI_POWER_SUPPLY; + +typedef struct measurement_ipmi_processor { + char * processorIdentifier; + EVEL_OPTION_DOUBLE pprocessorThermalControl; + EVEL_OPTION_DOUBLE processorDtsThermalMargin; + DLIST processorDimmAggregateThermalMargin; + + } MEASUREMENT_IPMI_PROCESSOR; + +typedef struct measurement_ipmi_processor_dimmAgg_therm { + char * MarginIdentifier; + double thermalMargin; + + } MEASUREMENT_IPMI_PROCESSOR_DIMMAGG_THERM; + /**************************************************************************//** * Custom Defined Measurement. * JSON equivalent field: measurements @@ -1042,7 +2584,7 @@ typedef struct custom_measurement { /* Supported Report version. */ /*****************************************************************************/ #define EVEL_REPORT_MAJOR_VERSION 1 -#define EVEL_REPORT_MINOR_VERSION 1 +#define EVEL_REPORT_MINOR_VERSION 0 /**************************************************************************//** * Report. @@ -1128,13 +2670,16 @@ typedef struct mobile_gtp_per_flow_metrics { EVEL_OPTION_INT num_gtp_echo_failures; EVEL_OPTION_INT num_gtp_tunnel_errors; EVEL_OPTION_INT num_http_errors; + HASHTABLE_T *ip_tos_count_list; + HASHTABLE_T *mobile_qci_cos_count_list; + HASHTABLE_T *tcp_flag_count_list; } MOBILE_GTP_PER_FLOW_METRICS; /*****************************************************************************/ /* Supported Mobile Flow version. */ /*****************************************************************************/ -#define EVEL_MOBILE_FLOW_MAJOR_VERSION 2 +#define EVEL_MOBILE_FLOW_MAJOR_VERSION 4 #define EVEL_MOBILE_FLOW_MINOR_VERSION 0 /**************************************************************************//** @@ -1160,7 +2705,7 @@ typedef struct event_mobile_flow { int other_endpoint_port; char * reporting_endpoint_ip_addr; int reporting_endpoint_port; - DLIST additional_info; /* JSON: additionalFields */ + HASHTABLE_T *additional_info; /* JSON: additionalFields */ /***************************************************************************/ /* Optional fields */ @@ -1194,8 +2739,8 @@ typedef struct event_mobile_flow { /*****************************************************************************/ /* Supported Other field version. */ /*****************************************************************************/ -#define EVEL_OTHER_EVENT_MAJOR_VERSION 1 -#define EVEL_OTHER_EVENT_MINOR_VERSION 1 +#define EVEL_OTHER_EVENT_MAJOR_VERSION 3 +#define EVEL_OTHER_EVENT_MINOR_VERSION 0 /**************************************************************************//** * Other. @@ -1206,9 +2751,14 @@ typedef struct event_other { int major_version; int minor_version; - HASHTABLE_T *namedarrays; /* HASHTABLE_T */ + DLIST arrayOfNamedHashMap; + HASHTABLE_T *hashMap; DLIST jsonobjects; /* DLIST of EVEL_JSON_OBJECT */ + +/** to delete DLIST namedvalues; + HASHTABLE_T *namedarrays;****/ /* HASHTABLE_T */ + } EVENT_OTHER; /**************************************************************************//** @@ -1224,14 +2774,14 @@ typedef struct other_field { /*****************************************************************************/ /* Supported Service Events version. */ /*****************************************************************************/ -#define EVEL_HEARTBEAT_FIELD_MAJOR_VERSION 1 -#define EVEL_HEARTBEAT_FIELD_MINOR_VERSION 1 +#define EVEL_HEARTBEAT_FIELD_MAJOR_VERSION 3 +#define EVEL_HEARTBEAT_FIELD_MINOR_VERSION 0 /*****************************************************************************/ /* Supported Signaling version. */ /*****************************************************************************/ -#define EVEL_SIGNALING_MAJOR_VERSION 1 +#define EVEL_SIGNALING_MAJOR_VERSION 3 #define EVEL_SIGNALING_MINOR_VERSION 0 /**************************************************************************//** @@ -1271,24 +2821,15 @@ typedef struct event_signaling { /***************************************************************************/ EVEL_OPTION_STRING compressed_sip; /* JSON: compressedSip */ EVEL_OPTION_STRING summary_sip; /* JSON: summarySip */ - DLIST additional_info; + HASHTABLE_T *additional_info; } EVENT_SIGNALING; -/**************************************************************************//** - * Sgnaling Additional Field. - * JSON equivalent field: additionalFields - *****************************************************************************/ -typedef struct signaling_additional_field { - char * name; - char * value; -} SIGNALING_ADDL_FIELD; - /*****************************************************************************/ /* Supported State Change version. */ /*****************************************************************************/ -#define EVEL_STATE_CHANGE_MAJOR_VERSION 1 -#define EVEL_STATE_CHANGE_MINOR_VERSION 2 +#define EVEL_STATE_CHANGE_MAJOR_VERSION 4 +#define EVEL_STATE_CHANGE_MINOR_VERSION 0 /**************************************************************************//** * State Change. @@ -1313,23 +2854,51 @@ typedef struct event_state_change { /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - DLIST additional_fields; + HASHTABLE_T *additional_fields; } EVENT_STATE_CHANGE; +/*****************************************************************************/ +/* Supported Notification version. */ +/*****************************************************************************/ +#define EVEL_NOTIFICATION_MAJOR_VERSION 2 +#define EVEL_NOTIFICATION_MINOR_VERSION 0 + /**************************************************************************//** - * State Change Additional Field. - * JSON equivalent field: additionalFields + * Notification. + * JSON equivalent field: notificationFields *****************************************************************************/ -typedef struct state_change_additional_field { - char * name; - char * value; -} STATE_CHANGE_ADDL_FIELD; +typedef struct event_notification { + /***************************************************************************/ + /* Header and version */ + /***************************************************************************/ + EVENT_HEADER header; + int major_version; + int minor_version; + + /***************************************************************************/ + /* Mandatory fields */ + /***************************************************************************/ + double version; + char * changeIdentifier; + char * changeType; + + /***************************************************************************/ + /* Optional fields */ + /***************************************************************************/ + HASHTABLE_T *additional_fields; + DLIST arrayOfNamedHashMap; + EVEL_OPTION_STRING changeContact; + EVEL_OPTION_STATE new_state; + EVEL_OPTION_STATE old_state; + EVEL_OPTION_STRING state_interface; + +} EVENT_NOTIFICATION; /*****************************************************************************/ /* Supported Syslog version. */ /*****************************************************************************/ -#define EVEL_SYSLOG_MAJOR_VERSION 3 +#define EVEL_SYSLOG_MAJOR_VERSION 4 #define EVEL_SYSLOG_MINOR_VERSION 0 /**************************************************************************//** @@ -1354,7 +2923,7 @@ typedef struct event_syslog { /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - EVEL_OPTION_STRING additional_filters; + HASHTABLE_T * additional_fields; EVEL_OPTION_STRING event_source_host; EVEL_OPTION_INT syslog_facility; EVEL_OPTION_INT syslog_priority; @@ -1365,6 +2934,8 @@ typedef struct event_syslog { EVEL_OPTION_STRING syslog_severity; double syslog_fver; EVEL_OPTION_INT syslog_ver; + EVEL_OPTION_STRING syslog_timeStamp; + EVEL_OPTION_STRING syslog_msgHost; } EVENT_SYSLOG; @@ -1396,12 +2967,15 @@ typedef struct copyright { * * @sa Matching Term function. * - * @param fqdn The API's FQDN or IP address. +* @param fqdn The API's FQDN or IP address. * @param port The API's port. + * @param bakup_fqdn The API's FQDN or IP address. + * @param bakup_port The API's port. * @param path The optional path (may be NULL). * @param topic The optional topic part of the URL (may be NULL). * @param ring_buf_size Ring buffer size (>=100) ~ Avg Messages in 1hr * @param secure Whether to use HTTPS (0=HTTP, 1=HTTPS). + * @param activmode Whether to use ActiveActive or ActiveStandby collector mode * @param cert_file_path Path to client certificate file * @param key_file_path Path to client key file * @param ca_info Path to CA info @@ -1410,7 +2984,10 @@ typedef struct copyright { * @param verify_host SSL verification of host 0 or 1 * @param username Username for Basic Authentication of requests. * @param password Password for Basic Authentication of requests. - * @param source_ip The ip of node we represent.(NULL for default ip) + * @param bakup_username Username for Basic Authentication of Bakup FQDN. + * @param bakup_password Password for Basic Authentication of Bakup FQDN. + * @param source_ip The ip of node we represent.(NULL for default ip) + * @param bakup_source_ip The ip bakup fqdn interface.(NULL for default ip) * @param source_type The kind of node we represent. * @param role The role this node undertakes. * @param verbosity 0 for normal operation, positive values for chattier @@ -1422,19 +2999,25 @@ typedef struct copyright { *****************************************************************************/ EVEL_ERR_CODES evel_initialize(const char * const fqdn, int port, + const char * const bakup_fqdn, + int bakup_port, const char * const path, const char * const topic, int ring_buf_size, int secure, + int activmode, const char * const cert_file_path, const char * const key_file_path, const char * const ca_info, const char * const ca_file_path, - long verify_peer, + long verify_peer, long verify_host, const char * const username, const char * const password, + const char * const bakup_username, + const char * const bakup_password, const char * const source_ip, + const char * const bakup_source_ip, EVEL_SOURCE_TYPES source_type, const char * const role, int verbosity @@ -1490,50 +3073,6 @@ int evel_json_encode_event(char * json, int evel_json_encode_batch_event(char * json, int max_size, EVENT_HEADER * event); -/**************************************************************************//** - * Initialize an event instance id. - * - * @param vfield Pointer to the event vnfname field being initialized. - * @param vendor_id The vendor id to encode in the event instance id. - * @param event_id The event id to encode in the event instance id. - *****************************************************************************/ -void evel_init_vendor_field(VENDOR_VNFNAME_FIELD * const vfield, - const char * const vendor_name); - -/**************************************************************************//** - * Set the Vendor module property of the Vendor. - * - * @note The property is treated as immutable: it is only valid to call - * the setter once. However, we don't assert if the caller tries to - * overwrite, just ignoring the update instead. - * - * @param vfield Pointer to the Vendor field. - * @param module_name The module name to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_vendor_field_module_set(VENDOR_VNFNAME_FIELD * const vfield, - const char * const module_name); -/**************************************************************************//** - * Set the Vendor module property of the Vendor. - * - * @note The property is treated as immutable: it is only valid to call - * the setter once. However, we don't assert if the caller tries to - * overwrite, just ignoring the update instead. - * - * @param vfield Pointer to the Vendor field. - * @param module_name The module name to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_vendor_field_vnfname_set(VENDOR_VNFNAME_FIELD * const vfield, - const char * const vnfname); -/**************************************************************************//** - * Free an event instance id. - * - * @param vfield Pointer to the event vnfname_field being freed. - *****************************************************************************/ -void evel_free_event_vendor_field(VENDOR_VNFNAME_FIELD * const vfield); /**************************************************************************//** * Callback function to provide returned data. @@ -1612,6 +3151,24 @@ void evel_header_type_set(EVENT_HEADER * const header, const char * const type); /**************************************************************************//** + * Set the next event_sequence to use. + * + * @param sequence The next sequence number to use. + *****************************************************************************/ +void evel_set_global_event_sequence(const int sequence); + +/**************************************************************************//** + * Set the Event Sequence property of the event header. + * + * @note This is mainly for tracking fault event sequence numbers + * + * @param header Pointer to the ::EVENT_HEADER. + * @param sequence_number + * + *****************************************************************************/ +void evel_event_sequence_set(EVENT_HEADER * const header,const int sequence_number); + +/**************************************************************************//** * Set the Start Epoch property of the event header. * * @note The Start Epoch defaults to the time of event creation. @@ -1647,6 +3204,17 @@ void evel_reporting_entity_name_set(EVENT_HEADER * const header, const char * const entity_name); /**************************************************************************//** + * Set the source Name property of the event header. + * + * @note The source Name defaults to the OpenStack VM Name. + * + * @param header Pointer to the ::EVENT_HEADER. + * @param source_name The entity name to set. + *****************************************************************************/ +void evel_source_name_set(EVENT_HEADER * const header, + const char * const source_name); + +/**************************************************************************//** * Set the Reporting Entity Id property of the event header. * * @note The Reporting Entity Id defaults to the OpenStack VM UUID. @@ -1674,6 +3242,27 @@ void evel_nfcnamingcode_set(EVENT_HEADER * const header, void evel_nfnamingcode_set(EVENT_HEADER * const header, const char * const nfnam); +/**************************************************************************//** + * Set the NF Vendor Name + * + * @param nfVendorName NF Vendor Name to use + *****************************************************************************/ +void evel_nf_vendor_name_set(EVENT_HEADER * const header, char * nfVendorName); + +/**************************************************************************//** + * Set the time zone offset + * + * @param timeZoneOffset Time zone offset to use. + *****************************************************************************/ +void evel_time_zone_offset_set(EVENT_HEADER * const header, char * timeZoneOffset); + +/**************************************************************************//** + * Set the source ID + * + * @param sourceId source ID to use + *****************************************************************************/ +void evel_source_id_set(EVENT_HEADER * const header, char * sourceId); + /*****************************************************************************/ /*****************************************************************************/ /* */ @@ -1857,24 +3446,6 @@ void evel_measurement_conc_sess_set(EVENT_MEASUREMENT * measurement, void evel_measurement_cfg_ents_set(EVENT_MEASUREMENT * measurement, int configured_entities); -/**************************************************************************//** - * Add an additional set of Errors to the Measurement. - * - * @note The property is treated as immutable: it is only valid to call - * the setter once. However, we don't assert if the caller tries to - * overwrite, just ignoring the update instead. - * - * @param measurement Pointer to the measurement. - * @param receive_discards The number of receive discards. - * @param receive_errors The number of receive errors. - * @param transmit_discards The number of transmit discards. - * @param transmit_errors The number of transmit errors. - *****************************************************************************/ -void evel_measurement_errors_set(EVENT_MEASUREMENT * measurement, - int receive_discards, - int receive_errors, - int transmit_discards, - int transmit_errors); /**************************************************************************//** * Set the Mean Request Latency property of the Measurement. @@ -1900,7 +3471,7 @@ void evel_measurement_mean_req_lat_set(EVENT_MEASUREMENT * measurement, * @param request_rate The Request Rate to be set. *****************************************************************************/ void evel_measurement_request_rate_set(EVENT_MEASUREMENT * measurement, - int request_rate); + double request_rate); /**************************************************************************//** * Add an additional CPU usage value name/value pair to the Measurement. @@ -2017,6 +3588,102 @@ void evel_measurement_cpu_use_wait_set(MEASUREMENT_CPU_USE * const cpu_use, const double val); /**************************************************************************//** + * Set the The amount of time the CPU cannot run due to contention, in + * milliseconds over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuCapacityContention_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the total CPU time that the NF/NFC/VM could use if there was no + * contention, in milliseconds over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuDemandAvg_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the CPU demand in MHz + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuDemandMhz_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the CPU demand as a percentage of the provisioned capacity + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuDemandPct_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the Percentage of time the VM is unable to run because it is + * contending for access to the physical CPUs + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuLatencyAvg_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the overhead demand above available allocations and reservations, + * in milliseconds over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuOverheadAvg_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + +/**************************************************************************//** + * Set the swap wait time, in milliseconds over the measurement Interval + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param cpu_use Pointer to the CPU Use. + * @param val double + *****************************************************************************/ +void evel_measurement_cpu_use_cpuSwapWaitTime_set(MEASUREMENT_CPU_USE * const cpu_use, + const double val); + + +/**************************************************************************//** * Add an additional File System usage value name/value pair to the * Measurement. * @@ -2055,24 +3722,37 @@ void evel_measurement_fsys_use_add(EVENT_MEASUREMENT * measurement, *****************************************************************************/ void evel_measurement_feature_use_add(EVENT_MEASUREMENT * measurement, char * feature, - int utilization); + char * utilization); /**************************************************************************//** - * Add a Additional Measurement value name/value pair to the Measurement. + * Add a new Additional Measurement hashmap to the Measurement. * * The name is null delimited ASCII string. The library takes * a copy so the caller does not have to preserve values after the function * returns. * * @param measurement Pointer to the Measurement. - * @param group ASCIIZ string with the measurement group's name. + * @param name ASCIIZ string containing the hashmap name + *****************************************************************************/ +HASHTABLE_T * evel_measurement_new_addl_measurement( + EVENT_MEASUREMENT * measurement, + const char * const name); + +/**************************************************************************//** + * Add a new Additional Measurement hashmap to the Measurement. + * + * The name is null delimited ASCII string. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param ht Pointer hashmap. * @param name ASCIIZ string containing the measurement's name. - * @param name ASCIIZ string containing the measurement's value. + * @param Value ASCIIZ string containing the measurement's value. *****************************************************************************/ -void evel_measurement_custom_measurement_add(EVENT_MEASUREMENT * measurement, - const char * const group, - const char * const name, - const char * const value); +void evel_measurement_addl_measurement_set ( + HASHTABLE_T * const ht, + const char * const name, + const char * const value); /**************************************************************************//** * Add a Codec usage value name/value pair to the Measurement. @@ -2184,411 +3864,529 @@ void evel_measurement_latency_add(EVENT_MEASUREMENT * const measurement, const int count); /**************************************************************************//** - * Create a new vNIC Use to be added to a Measurement event. + * Create a new NIC Use to be added to a Measurement event. * - * @note The mandatory fields on the ::MEASUREMENT_VNIC_PERFORMANCE must be supplied + * @note The mandatory fields on the ::MEASUREMENT_NIC_PERFORMANCE must be supplied * to this factory function and are immutable once set. Optional * fields have explicit setter functions, but again values may only be - * set once so that the ::MEASUREMENT_VNIC_PERFORMANCE has immutable + * set once so that the ::MEASUREMENT_NIC_PERFORMANCE has immutable * properties. * - * @param vnic_id ASCIIZ string with the vNIC's ID. + * @param nic_id ASCIIZ string with the NIC's ID. * @param val_suspect True or false confidence in data. * - * @returns pointer to the newly manufactured ::MEASUREMENT_VNIC_PERFORMANCE. + * @returns pointer to the newly manufactured ::MEASUREMENT_NIC_PERFORMANCE. * If the structure is not used it must be released using - * ::evel_measurement_free_vnic_performance. - * @retval NULL Failed to create the vNIC Use. + * ::evel_measurement_free_nic_performance. + * @retval NULL Failed to create the NIC Use. *****************************************************************************/ -MEASUREMENT_VNIC_PERFORMANCE * evel_measurement_new_vnic_performance(char * const vnic_id, char * const val_suspect); +MEASUREMENT_NIC_PERFORMANCE * evel_measurement_new_nic_performance(char * const nic_id, char * const val_suspect); /**************************************************************************//** - * Free a vNIC Use. + * Free a NIC Use. * - * Free off the ::MEASUREMENT_VNIC_PERFORMANCE supplied. Will free all the contained + * Free off the ::MEASUREMENT_NIC_PERFORMANCE supplied. Will free all the contained * allocated memory. * - * @note It does not free the vNIC Use itself, since that may be part of a + * @note It does not free the NIC Use itself, since that may be part of a * larger structure. *****************************************************************************/ -void evel_measurement_free_vnic_performance(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance); +void evel_measurement_free_nic_performance(MEASUREMENT_NIC_PERFORMANCE * const nic_performance); + +/**************************************************************************//** + * Set the administrative State of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param state + *****************************************************************************/ +void evel_nic_performance_administrativeState_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const EVEL_OPER_STATE state); + +/**************************************************************************//** + * Set the operational state of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param state + *****************************************************************************/ +void evel_nic_performance_operationalState_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const EVEL_OPER_STATE state); + +/**************************************************************************//** + * Set the Percentage of discarded packets received of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param receivedPercentDiscard + *****************************************************************************/ +void evel_nic_performance_receivedPercentDiscard_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double receivedPercentDiscard); + +/**************************************************************************//** + * Set the Percentage of error packets received of the NIC performance. + * + + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param receivedPercentError + *****************************************************************************/ +void evel_nic_performance_receivedPercentError_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double receivedPercentError); + +/**************************************************************************//** + * Set the Percentage of utilization received of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param receivedUtilization + *****************************************************************************/ +void evel_nic_performance_receivedUtilization_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double receivedUtilization); + +/**************************************************************************//** + * Set the Speed configured in mbps of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param Speed + *****************************************************************************/ +void evel_nic_performance_speed_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double speed); + +/**************************************************************************//** + * Set the Percentage of discarded packets transmitted of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param transmittedPercentDiscard + *****************************************************************************/ +void evel_nic_performance_transmittedPercentDiscard_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double transmittedPercentDiscard); + +/**************************************************************************//** + * Set the Percentage of error packets received of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param transmittedPercentError + *****************************************************************************/ +void evel_nic_performance_transmittedPercentError_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double transmittedPercentError); + +/**************************************************************************//** + * Set the Percentage of utilization transmitted of the NIC performance. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param nic_performance Pointer to the NIC Use. + * @param transmittedUtilization + *****************************************************************************/ +void evel_nic_performance_transmittedUtilization_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, + const double transmittedUtilization); /**************************************************************************//** * Set the Accumulated Broadcast Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_bcast_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_bcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_bcast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_bcast_packets_acc); /**************************************************************************//** * Set the Delta Broadcast Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_bcast_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_bcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_bcast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_bcast_packets_delta); /**************************************************************************//** * Set the Discarded Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_discard_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_discard_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_discard_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_discard_packets_acc); /**************************************************************************//** * Set the Delta Discarded Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_discard_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_discard_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_discard_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_discard_packets_delta); /**************************************************************************//** * Set the Error Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_error_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_error_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_error_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_error_packets_acc); /**************************************************************************//** * Set the Delta Error Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_error_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_error_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_error_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_error_packets_delta); /**************************************************************************//** * Set the Accumulated Multicast Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_mcast_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_mcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_mcast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_mcast_packets_acc); /**************************************************************************//** * Set the Delta Multicast Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_mcast_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_mcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_mcast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_mcast_packets_delta); /**************************************************************************//** * Set the Accumulated Octets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_octets_acc *****************************************************************************/ -void evel_vnic_performance_rx_octets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_octets_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_octets_acc); /**************************************************************************//** * Set the Delta Octets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_octets_delta *****************************************************************************/ -void evel_vnic_performance_rx_octets_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_octets_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_octets_delta); /**************************************************************************//** * Set the Accumulated Total Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_total_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_total_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_total_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_total_packets_acc); /**************************************************************************//** * Set the Delta Total Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_total_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_total_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_total_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_total_packets_delta); /**************************************************************************//** * Set the Accumulated Unicast Packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_ucast_packets_acc *****************************************************************************/ -void evel_vnic_performance_rx_ucast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_ucast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_ucast_packets_acc); /**************************************************************************//** * Set the Delta Unicast packets Received in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param recvd_ucast_packets_delta *****************************************************************************/ -void evel_vnic_performance_rx_ucast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_rx_ucast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double recvd_ucast_packets_delta); /**************************************************************************//** * Set the Transmitted Broadcast Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_bcast_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_bcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_bcast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_bcast_packets_acc); /**************************************************************************//** * Set the Delta Broadcast packets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_bcast_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_bcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_bcast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_bcast_packets_delta); /**************************************************************************//** * Set the Transmitted Discarded Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_discarded_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_discarded_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_discarded_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_discarded_packets_acc); /**************************************************************************//** * Set the Delta Discarded packets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_discarded_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_discarded_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_discarded_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_discarded_packets_delta); /**************************************************************************//** * Set the Transmitted Errored Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_error_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_error_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_error_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_error_packets_acc); /**************************************************************************//** * Set the Delta Errored packets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_error_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_error_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_error_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_error_packets_delta); /**************************************************************************//** * Set the Transmitted Multicast Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_mcast_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_mcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_mcast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_mcast_packets_acc); /**************************************************************************//** * Set the Delta Multicast packets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_mcast_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_mcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_mcast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_mcast_packets_delta); /**************************************************************************//** * Set the Transmitted Octets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_octets_acc *****************************************************************************/ -void evel_vnic_performance_tx_octets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_octets_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_octets_acc); /**************************************************************************//** * Set the Delta Octets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_octets_delta *****************************************************************************/ -void evel_vnic_performance_tx_octets_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_octets_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_octets_delta); /**************************************************************************//** * Set the Transmitted Total Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_total_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_total_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_total_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_total_packets_acc); /**************************************************************************//** * Set the Delta Total Packets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_total_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_total_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_total_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_total_packets_delta); /**************************************************************************//** * Set the Transmitted Unicast Packets in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_ucast_packets_acc *****************************************************************************/ -void evel_vnic_performance_tx_ucast_packets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_ucast_pkt_acc_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_ucast_packets_acc); /**************************************************************************//** * Set the Delta Octets Transmitted in measurement interval - * property of the vNIC performance. + * property of the NIC performance. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param vnic_performance Pointer to the vNIC Use. + * @param nic_performance Pointer to the NIC Use. * @param tx_ucast_packets_delta *****************************************************************************/ -void evel_vnic_performance_tx_ucast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, +void evel_nic_performance_tx_ucast_pkt_delta_set(MEASUREMENT_NIC_PERFORMANCE * const nic_performance, const double tx_ucast_packets_delta); /**************************************************************************//** - * Add an additional vNIC Use to the specified Measurement event. + * Add an additional NIC Use to the specified Measurement event. * * @param measurement Pointer to the measurement. - * @param vnic_performance Pointer to the vNIC Use to add. + * @param nic_performance Pointer to the NIC Use to add. *****************************************************************************/ -void evel_meas_vnic_performance_add(EVENT_MEASUREMENT * const measurement, - MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance); +void evel_meas_nic_performance_add(EVENT_MEASUREMENT * const measurement, + MEASUREMENT_NIC_PERFORMANCE * const nic_performance); /**************************************************************************//** - * Add an additional vNIC usage record Measurement. + * Add an additional NIC usage record Measurement. * * This function implements the previous API, purely for convenience. * @@ -2596,8 +4394,17 @@ void evel_meas_vnic_performance_add(EVENT_MEASUREMENT * const measurement, * caller does not have to preserve values after the function returns. * * @param measurement Pointer to the measurement. - * @param vnic_id ASCIIZ string with the vNIC's ID. + * @param nic_id ASCIIZ string with the NIC's ID. * @param valset true or false confidence level + * @param admin_state Administrative state + * @param op_state Operational state + * @param receivedPercentDiscard Percentage of discarded packets received; + * @param receivedPercentError Percentage of error packets received + * @param receivedUtilization Percentage of utilization received + * @param speed Speed configured in mbps + * @param transmittedPercentDiscard Percentage of discarded packets transmitted + * @param transmittedPercentError Percentage of error packets received + * @param transmittedUtilization Percentage of utilization transmitted * @param recvd_bcast_packets_acc Recieved broadcast packets * @param recvd_bcast_packets_delta Received delta broadcast packets * @param recvd_discarded_packets_acc Recieved discarded packets @@ -2627,9 +4434,18 @@ void evel_meas_vnic_performance_add(EVENT_MEASUREMENT * const measurement, * @param tx_ucast_packets_acc Transmitted Unicast packets * @param tx_ucast_packets_delta Transmitted delta Unicast packets *****************************************************************************/ -void evel_measurement_vnic_performance_add(EVENT_MEASUREMENT * const measurement, - char * const vnic_id, +void evel_measurement_nic_performance_add(EVENT_MEASUREMENT * const measurement, + char * const nic_id, char * valset, + EVEL_OPER_STATE admin_state, + EVEL_OPER_STATE op_state, + double receivedPercentDiscard, + double receivedPercentError, + double receivedUtilization, + double speed, + double transmittedPercentDiscard, + double transmittedPercentError, + double transmittedUtilization, double recvd_bcast_packets_acc, double recvd_bcast_packets_delta, double recvd_discarded_packets_acc, @@ -2659,88 +4475,624 @@ void evel_measurement_vnic_performance_add(EVENT_MEASUREMENT * const measurement double tx_ucast_packets_acc, double tx_ucast_packets_delta); -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* REPORT */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ +MEASUREMENT_IPMI * evel_measurement_new_ipmi_add( + EVENT_MEASUREMENT * measurement); /**************************************************************************//** - * Create a new Report event. + * Set the System fan exit air flow temperature in Celsius of IPMI * - * @note The mandatory fields on the Report must be supplied to this - * factory function and are immutable once set. Optional fields have - * explicit setter functions, but again values may only be set once so - * that the Report has immutable properties. + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. * - * @param measurement_interval - * @param event_name Unique Event Name - * @param event_id A universal identifier of the event for analysis etc + * @param ipmi Pointer to the IPMI + * @param double + *****************************************************************************/ +void evel_measurement_ipmi_exitAirTemperature_set(MEASUREMENT_IPMI *ipmi, + const double val); + +/**************************************************************************//** + * Set the Front panel temp in Celsius of IPMI * - * @returns pointer to the newly manufactured ::EVENT_REPORT. If the event is - * not used (i.e. posted) it must be released using - * ::evel_free_report. - * @retval NULL Failed to create the event. + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param double *****************************************************************************/ -EVENT_REPORT * evel_new_report(double measurement_interval,const char* ev_name, const char *ev_id); +void evel_measurement_ipmi_frontPanelTemperature_set(MEASUREMENT_IPMI *ipmi, + const double val); /**************************************************************************//** - * Free a Report. + * Set the Io module temp in Celsius of IPMI * - * Free off the Report supplied. Will free all the contained allocated memory. + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. * - * @note It does not free the Report itself, since that may be part of a - * larger structure. + * @param ipmi Pointer to the IPMI + * @param double *****************************************************************************/ -void evel_free_report(EVENT_REPORT * event); +void evel_measurement_ipmi_ioModuleTemperature_set(MEASUREMENT_IPMI *ipmi, + const double val); /**************************************************************************//** - * Set the Event Type property of the Report. + * Set the Airflow in cubic feet per minute (cfm) of IPMI * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param report Pointer to the Report. - * @param type The Event Type to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. + * @param ipmi Pointer to the IPMI Use. + * @param double *****************************************************************************/ -void evel_report_type_set(EVENT_REPORT * report, const char * const type); +void evel_measurement_ipmi_systemAirflow_set(MEASUREMENT_IPMI *ipmi, + const double val); /**************************************************************************//** - * Add a Feature usage value name/value pair to the Report. + * Add a new Baseboard Temperature Array element to IPMI * - * The name is null delimited ASCII string. The library takes - * a copy so the caller does not have to preserve values after the function - * returns. + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. * - * @param report Pointer to the report. - * @param feature ASCIIZ string with the feature's name. - * @param utilization Utilization of the feature. + * @param ipmi Pointer to the IPMI + * @param id Indentifier *****************************************************************************/ -void evel_report_feature_use_add(EVENT_REPORT * report, - char * feature, - int utilization); +MEASUREMENT_IPMI_BB_TEMPERATURE *evel_measurement_new_base_board_temp_add( + MEASUREMENT_IPMI * ipmi, + char * id); /**************************************************************************//** - * Add a Additional Measurement value name/value pair to the Report. + * Set the Baseboard temperature in celsius * - * The name is null delimited ASCII string. The library takes - * a copy so the caller does not have to preserve values after the function - * returns. + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. * - * @param report Pointer to the report. - * @param group ASCIIZ string with the measurement group's name. - * @param name ASCIIZ string containing the measurement's name. - * @param value ASCIIZ string containing the measurement's value. + * @param ipmi Pointer to the IPMI + * @param bb_temp Pointer to base board tempeature + * @param id Indentifier + *****************************************************************************/ +void evel_measurement_ipmi_bb_temp_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_BB_TEMPERATURE * bb_temp, + const double val); + +/**************************************************************************//** + * Add a new Baseboard Voltage Regulator Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_BB_VOLTAGE *evel_measurement_new_base_board_volt_add( + MEASUREMENT_IPMI * ipmi, + const char const * id); + +/**************************************************************************//** + * Set the Voltage regulator temperature in celsius + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param bb_volt Pointer to base board Voltage regulator + * @param val value + *****************************************************************************/ +void evel_measurement_ipmi_bb_volt_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_BB_VOLTAGE * bb_volt, + const double val); + +/**************************************************************************//** + * Add a new IPMI Battery Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_BATTERY *evel_measurement_new_ipmi_battery_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the battery type in IPMI Battery + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param ipmiBattery Pointer to IPMI Battery + * @param batteryType Batterry Type + *****************************************************************************/ +void evel_measurement_ipmi_battery_type_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_BATTERY * ipmiBattery, + const char * const batteryType); + +/**************************************************************************//** + * Set the Battery voltage level in IPMI Battery + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param ipmiBattery Pointer to IPMI Battery + * @param val Battery voltage level + *****************************************************************************/ +void evel_measurement_ipmi_battery_voltage_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_BATTERY * ipmiBattery, + const double val); + +/**************************************************************************//** + * Add a new IPMI Fan Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_FAN *evel_measurement_new_ipmi_fan_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the Fan Identifier in IPMI FAN + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param ipmiFan Pointer to IPMI FAN + * @param val Fan Identifier + *****************************************************************************/ +void evel_measurement_ipmi_fan_speed_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_FAN * ipmiFan, + const double val); + +/**************************************************************************//** + * Add a new IPMI HSBP Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_HSBP *evel_measurement_new_ipmi_hsbp_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the Hot swap backplane power temperature in celsius in IPMI HSBP + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI + * @param ipmiHsbp Pointer to ipmi Hsbp + * @param val value + *****************************************************************************/ +void evel_measurement_ipmi_hsbp_temp_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_HSBP * ipmiHsbp, + const double val); + +/**************************************************************************//** + * Add a new IPMI Global Aggregate Temperature Margin Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI. + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_GLOBAL_AGG_TEMP_MARGIN *evel_measurement_new_ipmi_global_temp_add( + MEASUREMENT_IPMI * ipmi, + const char * const id); + +/**************************************************************************//** + * Set the IPMI Global Aggregate Temperature Margin + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI. + * @param ipmig_temp Pointer to IPMI Global Aggregate Temperature Margin + * @param val value *****************************************************************************/ -void evel_report_custom_measurement_add(EVENT_REPORT * report, - const char * const group, - const char * const name, - const char * const value); +void evel_measurement_ipmi_global_temp_margin_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_GLOBAL_AGG_TEMP_MARGIN * ipmig_temp, + const double val); + +/**************************************************************************//** + * Add a new IPMI NIC Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_NIC *evel_measurement_new_ipmi_nic_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the NIC temperature in IPMI NIC + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipminic Pointer to IPMI NIC + * @param val value + *****************************************************************************/ +void evel_measurement_ipmi_nic_temp_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_NIC * ipminic, + const double val); + +/**************************************************************************//** + * Add a new IPMI Power Supply Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_POWER_SUPPLY *evel_measurement_new_ipmi_power_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the Power Supply input power in watts + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmipwr Pointer to IPMI Power Supply + * @param val Value + *****************************************************************************/ +void evel_measurement_ipmi_power_inputpwr_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_POWER_SUPPLY * ipmipwr, + const double val); + +/**************************************************************************//** + * Set the Current output voltage as a percentage of the design specified level + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmipwr Pointer to IPMI Power Supply + * @param val Value + *****************************************************************************/ +void evel_measurement_ipmi_power_current_op_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_POWER_SUPPLY * ipmipwr, + const double val); + +/**************************************************************************//** + * Set the Power supply temperature in Celsius + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmipwr Pointer to IPMI Power Supply + * @param val Value + *****************************************************************************/ +void evel_measurement_ipmi_power_temp_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_POWER_SUPPLY * ipmipwr, + const double val); + +/**************************************************************************//** + * Add a new IPMI Processor Array element to IPMI + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param id Indentifier + *****************************************************************************/ +MEASUREMENT_IPMI_PROCESSOR *evel_measurement_new_ipmi_processor_add( + MEASUREMENT_IPMI * ipmi, + char * id); + +/**************************************************************************//** + * Set the processor thermal control percent + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmi_processor Pointer to IPMI processor + * @param val Value + *****************************************************************************/ +void evel_measurement_ipmi_processor_theralCtrl_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_PROCESSOR * ipmi_processor, + const double val); + +/**************************************************************************//** + * Set the processor DTS thermal margin(Front panel temperature in celsius) + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmi_processor Pointer to IPMI processor + * @param val Value + *****************************************************************************/ +void evel_measurement_ipmi_processor_theralMargin_set(MEASUREMENT_IPMI *ipmi, + MEASUREMENT_IPMI_PROCESSOR * ipmi_processor, + const double val); + +/**************************************************************************//** + * Add a new Array element to Processor + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param ipmi Pointer to the IPMI Use. + * @param ipmi_processor Pointer to IPMI Processor + * @param therm_margin Thermal margin + *****************************************************************************/ +MEASUREMENT_IPMI_PROCESSOR_DIMMAGG_THERM * evel_measurement_ipmi_processor_new_dimmAggThermalMargin_add( + MEASUREMENT_IPMI * ipmi, + MEASUREMENT_IPMI_PROCESSOR *ipmi_processor, + const char * const id, double therm_margin); + +/**************************************************************************//** + * Add a new Array element to loads + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param measurement Pointer to measurement. + *****************************************************************************/ +MEASUREMENT_LOAD * evel_measurement_new_loads_add( + EVENT_MEASUREMENT * measurement); + +/**************************************************************************//** + * Set the short term value in load + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param load Pointer to load. + * @param val value + *****************************************************************************/ +void evel_measurement_load_shortTerm_set(MEASUREMENT_LOAD *load, + const double val); + +/**************************************************************************//** + * Set the MID term value in load + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param load Pointer to load. + * @param val value + *****************************************************************************/ +void evel_measurement_load_midTerm_set(MEASUREMENT_LOAD *load, + const double val); + +/**************************************************************************//** + * Set the Long term value in load + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param load Pointer to load. + * @param val value + *****************************************************************************/ +void evel_measurement_load_longTerm_set(MEASUREMENT_LOAD *load, + const double val); + +/**************************************************************************//** + * Add a new Array element to Process Stats of measurement + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param measurement Pointer to measurement. + * @param processIdentifier process Identifier + *****************************************************************************/ +MEASUREMENT_PROCESS_STATS * evel_measurement_new_process_stats_add( + EVENT_MEASUREMENT * measurement, + const char * const processIdentifier ); + +/**************************************************************************//** + * Set the fork rate (The number of threads created since the last reboot) in + * Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_forkRate_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a blocked state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStateBlocked_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a paging state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStatePaging_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a running state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStateRunning_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a sleeping state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStateSleeping_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a stopped state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStateStopped_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Set the The number of processes in a zombie state in Process Stats + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param process_stat Pointer to process stat. + * @param val value + *****************************************************************************/ +void evel_measurement_process_stat_psStateZombie_set(MEASUREMENT_PROCESS_STATS *process_stat, + const double val); + +/**************************************************************************//** + * Add a new Machine check exception array element to measurement + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param measurement Pointer to measurement. + * @param process_id process Identifier + *****************************************************************************/ +MACHINE_CHECK_EXCEPTION * evel_measurement_new_machine_check_exception_add( + EVENT_MEASUREMENT * measurement, + const char * const process_id ); + +/**************************************************************************//** + * Set the Total hardware errors that were corrected by the hardware + * in Machine check exception + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param machine_check Pointer to Machine check exception. + * @param val value + *****************************************************************************/ +void evel_measurement_machine_check_cor_mem_err_set(MACHINE_CHECK_EXCEPTION *machine_check, + const double val); + +/**************************************************************************//** + * Set the Total hardware errors that were corrected over last one hour + * in Machine check exception + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param machine_check Pointer to Machine check exception. + * @param val value + *****************************************************************************/ +void evel_measurement_machine_check_cor_mem_err_1hr_set(MACHINE_CHECK_EXCEPTION *machine_check, + const double val); + +/**************************************************************************//** + * Set the Total hardware errors that were uncorrected by the hardware + * in Machine check exception + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param machine_check Pointer to Machine check exception. + * @param val value + *****************************************************************************/ +void evel_measurement_machine_check_uncor_mem_err_set(MACHINE_CHECK_EXCEPTION *machine_check, + const double val); + +/**************************************************************************//** + * Set the Total hardware errors that were uncorrected over last one hour + * in Machine check exception + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param machine_check Pointer to Machine check exception. + * @param val value + *****************************************************************************/ +void evel_measurement_machine_check_uncor_mem_err_1hr_set(MACHINE_CHECK_EXCEPTION *machine_check, + const double val); /*****************************************************************************/ /*****************************************************************************/ @@ -2784,7 +5136,22 @@ EVENT_MOBILE_FLOW * evel_new_mobile_flow( int other_endpoint_port, const char * const reporting_endpoint_ip_addr, int reporting_endpoint_port); - +/**************************************************************************//** + * Add an additional value name/value pair to the Mobile flow. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param fault Pointer to the Mobile flow. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_mobile_flow_addl_field_add(EVENT_MOBILE_FLOW * const event, char * name, char * value); /**************************************************************************//** * Free a Mobile Flow. * @@ -3337,16 +5704,6 @@ void evel_mobile_gtp_metrics_tun_status_set( MOBILE_GTP_PER_FLOW_METRICS * metrics, const char * const status); -/**************************************************************************//** - * Set an IP Type-of-Service count property of the Mobile GTP Per Flow metrics. - * - * @param metrics Pointer to the Mobile GTP Per Flow Metrics. - * @param index The index of the IP Type-of-Service. - * @param count The count. - *****************************************************************************/ -void evel_mobile_gtp_metrics_iptos_set(MOBILE_GTP_PER_FLOW_METRICS * metrics, - int index, - int count); /**************************************************************************//** * Set the Large Packet Round-Trip Time property of the Mobile GTP Per Flow @@ -3406,6 +5763,66 @@ void evel_mobile_gtp_metrics_max_trx_bit_rate_set( int rate); /**************************************************************************//** + * Add an IP Tos count list value name/value pair to the Mobile flow. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param fault Pointer to the Mobile GTP Per Flow Metrics. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_mobile_gtp_metrics_ip_tos_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const char * const name, + const char * const value); + +/**************************************************************************//** + * Add an QCI Cos count list value name/value pair to the Mobile flow. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param fault Pointer to the Mobile GTP Per Flow Metrics. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_mobile_gtp_metrics_qci_cos_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const EVEL_QCI_COS_TYPES qci_cos, + const char * const value); + +/**************************************************************************//** + * Add an TCP Flag count list value name/value pair to the Mobile flow. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param fault Pointer to the Mobile GTP Per Flow Metrics. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_mobile_gtp_metrics_tcp_flag_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const EVEL_TCP_FLAGS tcp_flag, + const char * const value); + +/**************************************************************************//** * Set the Number of GTP Echo Failures property of the Mobile GTP Per Flow * Metrics. * @@ -3450,36 +5867,52 @@ void evel_mobile_gtp_metrics_num_http_errors_set( int num); /**************************************************************************//** - * Add a TCP flag count to the metrics. + * Add a IP Tos count list to the metrics. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * * @param metrics Pointer to the Mobile GTP Per Flow Metrics. - * @param tcp_flag The TCP flag count to be updated. - * @param count The associated flag count. + * @param name Key of the hashmap + * @param value Value of the hashmap. *****************************************************************************/ -void evel_mobile_gtp_metrics_tcp_flag_count_add( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - const EVEL_TCP_FLAGS tcp_flag, - const int count); +void evel_mobile_ip_tos_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const char * const name, + const char * const value); /**************************************************************************//** - * Add a QCI COS count to the metrics. + * Add TCP Flag count list to the metrics. * * @note The property is treated as immutable: it is only valid to call * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * * @param metrics Pointer to the Mobile GTP Per Flow Metrics. - * @param qci_cos The QCI COS count to be updated. - * @param count The associated QCI COS count. + * @param name Key of the hashmap + * @param value Value of the hashmap. *****************************************************************************/ -void evel_mobile_gtp_metrics_qci_cos_count_add( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - const EVEL_QCI_COS_TYPES qci_cos, - const int count); +void evel_mobile_tcp_flag_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const char * const name, + const char * const value); + +/**************************************************************************//** + * Add a QCI cos count list to the metrics. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param metrics Pointer to the Mobile GTP Per Flow Metrics. + * @param name Key of the hashmap + * @param value Value of the hashmap. + *****************************************************************************/ +void evel_mobile_qci_cos_count_list_add( + MOBILE_GTP_PER_FLOW_METRICS * metrics, + const char * const name, + const char * const value); /*****************************************************************************/ /*****************************************************************************/ @@ -3769,6 +6202,171 @@ void evel_state_change_type_set(EVENT_STATE_CHANGE * const state_change, void evel_state_change_addl_field_add(EVENT_STATE_CHANGE * const state_change, const char * const name, const char * const value); +/*****************************************************************************/ +/*****************************************************************************/ +/* */ +/* Notification */ +/* */ +/*****************************************************************************/ +/*****************************************************************************/ + +/**************************************************************************//** + * Create a new Notification event. + * + * @note The mandatory fields on the Syslog must be supplied to this factory + * function and are immutable once set. Optional fields have explicit + * setter functions, but again values may only be set once so that the + * Syslog has immutable properties. + * + * @param event_name Unique Event Name + * @param event_id A universal identifier of the event for analysis etc + * @param new_state The new state of the reporting entity. + * @param old_state The old state of the reporting entity. + * @param interface The card or port name of the reporting entity. + * + * @returns pointer to the newly manufactured ::EVENT_NOTIFICATION. If the + * event is not used it must be released using + * ::evel_free_notification + * @retval NULL Failed to create the event. + *****************************************************************************/ +EVENT_NOTIFICATION * evel_new_notification( + const char* ev_name, const char *ev_id, + const char * const changeIdentifier, + const char * const changeType); +/**************************************************************************//** + * Free a Notification. + * + * + * Free off the Notification supplied. Will free all the contained allocated + * memory. + * + * @note It does not free the Notification itself, since that may be part of a + * larger structure. + *****************************************************************************/ +void evel_free_notification(EVENT_NOTIFICATION * const notification); + +/**************************************************************************//** + * Set the Event Type property of the Notification. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param type The Event Type to be set. ASCIIZ string. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_notification_type_set(EVENT_NOTIFICATION * const notification, + const char * const type); + +/**************************************************************************//** + * Add an additional field name/value pair to the Notification. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_notification_addl_field_add(EVENT_NOTIFICATION * const notification, + const char * const name, + const char * const value); + +/**************************************************************************//** + * Convert a ::EVEL_OPTION_STATE to it's string form for JSON encoding. + * + * @param state The entity state to encode. + * + * @returns the corresponding string + *****************************************************************************/ +char * evel_entity_opt_state (EVEL_OPTION_STATE * const state); + +/**************************************************************************//** + * Initialize an ::EVEL_OPTION_STATE to a not-set state. + * + * @param option Pointer to the ::EVEL_OPTION_INT. + *****************************************************************************/ +void evel_init_option_state(EVEL_OPTION_STATE * const option); + +/**************************************************************************//** + * Set the value of an ::EVEL_OPTION_STATE. + * + * @param option Pointer to the ::EVEL_OPTION_STATE. + * @param value The value to set. + * @param description Description to be used in logging. + *****************************************************************************/ +void evel_set_option_state(EVEL_OPTION_STATE * const option, + const int value, + const char * const description); + +/**************************************************************************//** + * Set the Identifier for a contact related to the change of notification event + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param changeContact ASCIIZ string with the attribute's value + *****************************************************************************/ +void evel_notification_changeContact_set( + EVENT_NOTIFICATION * const notification, + const char * const changeContact); + +/**************************************************************************//** + * Set the Card or port name of the entity that changed state of notification + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param state_interface ASCIIZ string with the attribute's value + *****************************************************************************/ +void evel_notification_state_interface_set( + EVENT_NOTIFICATION * const notification, + const char * const state_interface); + +/**************************************************************************//** + * Set the New state of the entity of notification event + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param state Enter value of EVEL_ENTITY_STATE + *****************************************************************************/ +void evel_notification_new_state_set( + EVENT_NOTIFICATION * const notification, + const EVEL_ENTITY_STATE state); + +/**************************************************************************//** + * Set the Old state of entity of notification event + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param state Enter value of EVEL_ENTITY_STATE + *****************************************************************************/ +void evel_notification_old_state_set( + EVENT_NOTIFICATION * const notification, + const EVEL_ENTITY_STATE state); + +/**************************************************************************//** + * Add a new named hashmap to notification event + * + * @param notification Pointer to the ::EVENT_NOTIFICATION. + * @param name Name of the hashmap + *****************************************************************************/ +HASHTABLE_T * evel_notification_add_new_named_hashmap( + EVENT_NOTIFICATION * const notification, + const char * const name); + +/**************************************************************************//** + * Set the name and value for the named hashmap of notification event + * + * @param ht Pointer to named hashmap + * @param name Key name + * @param value value corresponding to key + *****************************************************************************/ +void evel_notification_named_hashmap_set( + HASHTABLE_T * const ht, + const char * const name, + const char * const value); /*****************************************************************************/ /*****************************************************************************/ @@ -3818,6 +6416,25 @@ void evel_syslog_type_set(EVENT_SYSLOG * syslog, const char * const type); /**************************************************************************//** + * Add an additional value name/value pair to the Syslog. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param syslog Pointer to the syslog. + * @param name ASCIIZ string with the attribute's name. The caller + * does not need to preserve the value once the function + * returns. + * @param value ASCIIZ string with the attribute's value. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_syslog_addl_fields_set(EVENT_SYSLOG * syslog, + const char * const name, + const char * const value); + +/**************************************************************************//** * Free a Syslog. * * Free off the Syslog supplied. Will free all the contained allocated memory. @@ -3843,8 +6460,8 @@ void evel_free_syslog(EVENT_SYSLOG * event); * returns. *****************************************************************************/ void evel_syslog_addl_field_add(EVENT_SYSLOG * syslog, - char * name, - char * value); + const char * name, + const char * value); /**************************************************************************//** * Set the Event Source Host property of the Syslog. @@ -3875,6 +6492,20 @@ void evel_syslog_event_source_host_set(EVENT_SYSLOG * syslog, *****************************************************************************/ void evel_syslog_facility_set(EVENT_SYSLOG * syslog, EVEL_SYSLOG_FACILITIES facility); +/**************************************************************************//** + * Set the priority of the Syslog. + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param syslog Pointer to the Syslog. + * @param priority The Syslog priority to be set. ASCIIZ string. The caller + * does not need to preserve the value once the function + * returns. + *****************************************************************************/ +void evel_syslog_priority_set(EVENT_SYSLOG * syslog, + const int priority); /**************************************************************************//** * Set the Process property of the Syslog. @@ -3890,6 +6521,32 @@ void evel_syslog_facility_set(EVENT_SYSLOG * syslog, void evel_syslog_proc_set(EVENT_SYSLOG * syslog, const char * const proc); /**************************************************************************//** + * Set the timestamp parsed from non-VES syslog message + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param syslog Pointer to the Syslog. + * @param time_stamp The timestamp to be set. ASCIIZ string. The caller does + * not need to preserve the value once the function returns. + *****************************************************************************/ +void evel_syslog_timeStamp_set(EVENT_SYSLOG * syslog, const char * const time_stamp); + +/**************************************************************************//** + * Set the hostname parsed from non-VES syslog message + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param syslog Pointer to the Syslog. + * @param msg_host The hostname to be set. ASCIIZ string. The caller does + * not need to preserve the value once the function returns. + *****************************************************************************/ +void evel_syslog_MsgHost_set(EVENT_SYSLOG * syslog, const char * const msg_host); + +/**************************************************************************//** * Set the Process ID property of the Syslog. * * @note The property is treated as immutable: it is only valid to call @@ -4012,9 +6669,32 @@ void evel_other_type_set(EVENT_OTHER * other, * @param name ASCIIZ string with the attribute's name. * @param value ASCIIZ string with the attribute's value. *****************************************************************************/ -void evel_other_field_add(EVENT_OTHER * other, - char * name, - char * value); +void evel_other_field_add_hashmap(EVENT_OTHER * other, char * name, char *value); + +/**************************************************************************//** + * Add a new named hashmap to other event + * + * @param notification Pointer to other + * @param name Name of the hashmap + *****************************************************************************/ +HASHTABLE_T * evel_other_add_new_hashmap_to_hmarray(EVENT_OTHER * const other, + const char * const name); + +/**************************************************************************//** + * Add a value name/value pair to named hashmap of Other. + * + * The name and value are null delimited ASCII strings. The library takes + * a copy so the caller does not have to preserve values after the function + * returns. + * + * @param other Pointer to the Other. + * @param name ASCIIZ string with the attribute's name. + * @param value ASCIIZ string with the attribute's value. + *****************************************************************************/ +void evel_other_set_hashmap_in_hmarray( + HASHTABLE_T * const ht, + const char * const name, + const char * const value); /*****************************************************************************/ /*****************************************************************************/ @@ -4036,8 +6716,8 @@ int evel_get_measurement_interval(); /*****************************************************************************/ /* Supported Report version. */ /*****************************************************************************/ -#define EVEL_VOICEQ_MAJOR_VERSION 1 -#define EVEL_VOICEQ_MINOR_VERSION 1 +#define EVEL_VOICEQ_MAJOR_VERSION 4 +#define EVEL_VOICEQ_MINOR_VERSION 0 /**************************************************************************//** * End of Call Voice Quality Metrices @@ -4053,14 +6733,14 @@ typedef struct end_of_call_vqm_summaries { /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - EVEL_OPTION_INT endpointJitter; + EVEL_OPTION_INT localRtpOctetsLost; EVEL_OPTION_INT endpointRtpOctetsDiscarded; EVEL_OPTION_INT endpointRtpOctetsReceived; EVEL_OPTION_INT endpointRtpOctetsSent; EVEL_OPTION_INT endpointRtpPacketsDiscarded; EVEL_OPTION_INT endpointRtpPacketsReceived; EVEL_OPTION_INT endpointRtpPacketsSent; - EVEL_OPTION_INT localJitter; + EVEL_OPTION_INT localMaxJitterBufferDelay; EVEL_OPTION_INT localRtpOctetsDiscarded; EVEL_OPTION_INT localRtpOctetsReceived; EVEL_OPTION_INT localRtpOctetsSent; @@ -4068,10 +6748,18 @@ typedef struct end_of_call_vqm_summaries { EVEL_OPTION_INT localRtpPacketsReceived; EVEL_OPTION_INT localRtpPacketsSent; EVEL_OPTION_INT mosCqe; - EVEL_OPTION_INT packetsLost; + EVEL_OPTION_INT localRtpPacketsLost; EVEL_OPTION_INT packetLossPercent; EVEL_OPTION_INT rFactor; EVEL_OPTION_INT roundTripDelay; + EVEL_OPTION_INT endpointAverageJitter; + EVEL_OPTION_INT endpointMaxJitter; + EVEL_OPTION_INT endpointRtpOctetsLost; + EVEL_OPTION_INT endpointRtpPacketsLost; + EVEL_OPTION_INT localAverageJitter; + EVEL_OPTION_INT localAverageJitterBufferDelay; + EVEL_OPTION_INT localMaxJitter; + EVEL_OPTION_INT oneWayDelay; } END_OF_CALL_VOICE_QUALITY_METRICS; @@ -4103,17 +6791,9 @@ typedef struct event_voiceQuality { /* Optional fields */ /***************************************************************************/ EVEL_OPTION_STRING phoneNumber; - DLIST additionalInformation; + HASHTABLE_T * additionalInformation; } EVENT_VOICE_QUALITY; -/**************************************************************************//** - * Voice Quality Additional Info. - * JSON equivalent field: additionalInformation - *****************************************************************************/ -typedef struct voice_quality_additional_info { - char * name; - char * value; -} VOICE_QUALITY_ADDL_INFO; /**************************************************************************//** * Create a new voice quality event. @@ -4211,14 +6891,45 @@ void evel_voice_quality_rtcp_data_set(EVENT_VOICE_QUALITY * voiceQuality, * the setter once. However, we don't assert if the caller tries to * overwrite, just ignoring the update instead. * - * @param voiceQuality Pointer to the Voice Quality Event. - * @param nameFields The Vendor, VNF and VfModule names to be set. - * ASCIIZ string. The caller does not need to - * preserve the value once the function - * returns. + * @param voiceQuality Pointer to the Voice Quality Event. + * @param modulename The Vendor, VNF and VfModule names to be set. + * ASCIIZ string. The caller does not need to + * preserve the value once the function + * returns. *****************************************************************************/ -void evel_voice_quality_name_fields_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const nameFields); +void evel_voice_quality_vnfmodule_name_set(EVENT_VOICE_QUALITY * voiceQuality, + const char * const module_name); +/**************************************************************************//** + * Set the Vendor VNF Name fields for domain Voice Quality + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param voiceQuality Pointer to the Voice Quality Event. + * @param modulename The Vendor, VNF and VfModule names to be set. + * ASCIIZ string. The caller does not need to + * preserve the value once the function + * returns. + *****************************************************************************/ +void evel_voice_quality_vnfname_set(EVENT_VOICE_QUALITY * voiceQuality, + const char * const vnfname); + +/**************************************************************************//** + * Set the Phone Number associated with the Correlator for domain Voice Quality + * + * @note The property is treated as immutable: it is only valid to call + * the setter once. However, we don't assert if the caller tries to + * overwrite, just ignoring the update instead. + * + * @param voiceQuality Pointer to the Voice Quality Event. + * @param calleeCodecForCall The Phone Number to be set. ASCIIZ + * string. The caller does not need to + * preserve the value once the function + * returns. + *****************************************************************************/ +void evel_voice_quality_phone_number_set(EVENT_VOICE_QUALITY * voiceQuality, + const char * const phoneNumber); /**************************************************************************//** * Add an End of Call Voice Quality Metrices @@ -4228,39 +6939,39 @@ void evel_voice_quality_name_fields_set(EVENT_VOICE_QUALITY * voiceQuality, * after the function returns. * * @param voiceQuality Pointer to the measurement. - * @param adjacencyName Adjacency name - * @param endpointDescription Enumeration: ‘Caller’, ‘Callee’. - * @param endpointJitter Endpoint jitter - * @param endpointRtpOctetsDiscarded Endpoint RTP octets discarded. - * @param endpointRtpOctetsReceived Endpoint RTP octets received. - * @param endpointRtpOctetsSent Endpoint RTP octets sent - * @param endpointRtpPacketsDiscarded Endpoint RTP packets discarded. - * @param endpointRtpPacketsReceived Endpoint RTP packets received. - * @param endpointRtpPacketsSent Endpoint RTP packets sent. - * @param localJitter Local jitter. - * @param localRtpOctetsDiscarded Local RTP octets discarded. - * @param localRtpOctetsReceived Local RTP octets received. - * @param localRtpOctetsSent Local RTP octets sent. - * @param localRtpPacketsDiscarded Local RTP packets discarded. - * @param localRtpPacketsReceived Local RTP packets received. - * @param localRtpPacketsSent Local RTP packets sent. - * @param mosCqe Decimal range from 1 to 5 - * (1 decimal place) - * @param packetsLost No Packets lost - * @param packetLossPercent Calculated percentage packet loss - * @param rFactor rFactor from 0 to 100 - * @param roundTripDelay Round trip delay in milliseconds + * @param adjacencyName Adjacency name + * @param endpointDescription Enumeration: ‘Caller’, ‘Callee’. + * @param localRtpOctetsLost localRtpOctetsLost + * @param endpointRtpOctetsDiscarded Endpoint RTP octets discarded. + * @param endpointRtpOctetsReceived Endpoint RTP octets received. + * @param endpointRtpOctetsSent Endpoint RTP octets sent + * @param endpointRtpPacketsDiscarded Endpoint RTP packets discarded. + * @param endpointRtpPacketsReceived Endpoint RTP packets received. + * @param endpointRtpPacketsSent Endpoint RTP packets sent. + * @param localMaxJitterBufferDelay Local max jitter buffer Delay. + * @param localRtpOctetsDiscarded Local RTP octets discarded. + * @param localRtpOctetsReceived Local RTP octets received. + * @param localRtpOctetsSent Local RTP octets sent. + * @param localRtpPacketsDiscarded Local RTP packets discarded. + * @param localRtpPacketsReceived Local RTP packets received. + * @param localRtpPacketsSent Local RTP packets sent. + * @param mosCqe Decimal range from 1 to 5 + * (1 decimal place) + * @param localRtpPacketsLost Local RTP Packets lost + * @param packetLossPercent Calculated percentage packet loss + * @param rFactor rFactor from 0 to 100 + * @param roundTripDelay Round trip delay in milliseconds *****************************************************************************/ void evel_voice_quality_end_metrics_add(EVENT_VOICE_QUALITY * voiceQuality, const char * adjacencyName, EVEL_SERVICE_ENDPOINT_DESC endpointDescription, - int endpointJitter, + int localRtpOctetsLost, int endpointRtpOctetsDiscarded, int endpointRtpOctetsReceived, int endpointRtpOctetsSent, int endpointRtpPacketsDiscarded, int endpointRtpPacketsReceived, int endpointRtpPacketsSent, - int localJitter, + int localMaxJitterBufferDelay, int localRtpOctetsDiscarded, int localRtpOctetsReceived, int localRtpOctetsSent, @@ -4268,10 +6979,18 @@ void evel_voice_quality_end_metrics_add(EVENT_VOICE_QUALITY * voiceQuality, int localRtpPacketsReceived, int localRtpPacketsSent, int mosCqe, - int packetsLost, + int localRtpPacketsLost, int packetLossPercent, int rFactor, - int roundTripDelay); + int roundTripDelay, + int endpointAverageJitter, + int endpointMaxJitter, + int endpointRtpOctetsLost, + int endpointRtpPacketsLost, + int localAverageJitter, + int localAverageJitterBufferDelay, + int localMaxJitter, + int oneWayDelay); /**************************************************************************//** * Free a Voice Quality. @@ -4311,9 +7030,9 @@ void evel_voice_quality_addl_info_add(EVENT_VOICE_QUALITY * voiceQuality, char * /*****************************************************************************/ typedef enum evel_event_action { - EVEL_EVENT_ACTION_CLEAR, - EVEL_EVENT_ACTION_CONTINUE, EVEL_EVENT_ACTION_SET, + EVEL_EVENT_ACTION_CONTINUE, + EVEL_EVENT_ACTION_CLEAR, EVEL_MAX_EVENT_ACTION }EVEL_EVENT_ACTION; @@ -4328,16 +7047,15 @@ typedef enum evel_alert_type { typedef struct perf_counter { char * criticality; - char * name; char * thresholdCrossed; - char * value; + HASHTABLE_T *hashmap; }PERF_COUNTER; /*****************************************************************************/ /* Supported Threshold Crossing version. */ /*****************************************************************************/ -#define EVEL_THRESHOLD_CROSS_MAJOR_VERSION 2 +#define EVEL_THRESHOLD_CROSS_MAJOR_VERSION 4 #define EVEL_THRESHOLD_CROSS_MINOR_VERSION 0 /**************************************************************************//** @@ -4355,18 +7073,18 @@ typedef struct event_threshold_cross { /***************************************************************************/ /* Mandatory fields */ /***************************************************************************/ - PERF_COUNTER additionalParameters; + DLIST additionalParameters; EVEL_EVENT_ACTION alertAction; char * alertDescription; EVEL_ALERT_TYPE alertType; - unsigned long long collectionTimestamp; + char * collectionTimestamp; EVEL_SEVERITIES eventSeverity; - unsigned long long eventStartTimestamp; + char * eventStartTimestamp; /***************************************************************************/ /* Optional fields */ /***************************************************************************/ - DLIST additional_info; + HASHTABLE_T *additional_info; EVEL_OPTION_STRING alertValue; DLIST alertidList; EVEL_OPTION_STRING dataCollector; @@ -4388,16 +7106,12 @@ typedef struct event_threshold_cross { * * @param event_name Unique Event Name * @param event_id A universal identifier of the event for analysis etc - * @param char* tcriticality Performance Counter Criticality MAJ MIN, - * @param char* tname Performance Counter Threshold name - * @param char* tthresholdCrossed Counter Threshold crossed value - * @param char* tvalue Counter actual value * @param EVEL_EVENT_ACTION talertAction Alert set continue or clear * @param char* talertDescription * @param EVEL_ALERT_TYPE talertType Kind of anamoly - * @param unsigned long long tcollectionTimestamp time at which alert was collected + * @param char * tcollectionTimestamp time at which alert was collected * @param EVEL_SEVERITIES teventSeverity Severity of Alert - * @param unsigned long long teventStartTimestamp Time when this alert started + * @param char * teventStartTimestamp Time when this alert started * * @returns pointer to the newly manufactured ::EVENT_THRESHOLD_CROSS. If the * event is not used it must be released using @@ -4406,16 +7120,36 @@ typedef struct event_threshold_cross { *****************************************************************************/ EVENT_THRESHOLD_CROSS * evel_new_threshold_cross( const char* ev_name, const char *ev_id, - char * tcriticality, - char * tname, - char * tthresholdCrossed, - char * tvalue, - EVEL_EVENT_ACTION talertAction, + EVEL_ALERT_ACTIONS talertAction, char * talertDescription, EVEL_ALERT_TYPE talertType, - unsigned long long tcollectionTimestamp, + char * tcollectionTimestamp, EVEL_SEVERITIES teventSeverity, - unsigned long long teventStartTimestamp); + char * teventStartTimestamp); + +/**************************************************************************//** + * Add the TCA additional performance counter + * + * @param tcp Pointer to the ::EVENT_THRESHOLD_CROSS. + * @param char* tcriticality Performance Counter criticality + * @param char* tthresholdCrossed Performance Counter Threshold name + *****************************************************************************/ +PERF_COUNTER * evel_threshold_cross_add_addl_parameters( + EVENT_THRESHOLD_CROSS * const event, + char * tcriticality, + char * tthresholdCrossed); + +/**************************************************************************//** + * Set the TCA name / Value for additional performance counter + * + * @param PERF_COUNTER perf_ctr Pointer to additional Parameter array element + * @param char* name Performance Counter Threshold name + * @param char* value Performance Counter actual value + *****************************************************************************/ +void evel_threshold_cross_addl_parameters_hashmap_set( + PERF_COUNTER * perf_ctr, + char * name, + char * value); /**************************************************************************//** * Free a Threshold cross event. @@ -4517,6 +7251,7 @@ void evel_threshold_cross_addl_info_add(EVENT_THRESHOLD_CROSS * const tcp, /* Debug macros. */ /*****************************************************************************/ #define EVEL_DEBUG(FMT, ...) log_debug(EVEL_LOG_DEBUG, (FMT), ##__VA_ARGS__) +#define EVEL_WARN(FMT, ...) log_debug(EVEL_LOG_WARN, (FMT), ##__VA_ARGS__) #define EVEL_INFO(FMT, ...) log_debug(EVEL_LOG_INFO, (FMT), ##__VA_ARGS__) #define EVEL_SPAMMY(FMT, ...) log_debug(EVEL_LOG_SPAMMY, (FMT), ##__VA_ARGS__) #define EVEL_ERROR(FMT, ...) log_debug(EVEL_LOG_ERROR, "ERROR: " FMT, \ |