diff options
Diffstat (limited to 'VES5.0/evel/evel-library/code/evel_library/evel.h')
-rw-r--r-- | VES5.0/evel/evel-library/code/evel_library/evel.h | 4204 |
1 files changed, 0 insertions, 4204 deletions
diff --git a/VES5.0/evel/evel-library/code/evel_library/evel.h b/VES5.0/evel/evel-library/code/evel_library/evel.h deleted file mode 100644 index c824ca06..00000000 --- a/VES5.0/evel/evel-library/code/evel_library/evel.h +++ /dev/null @@ -1,4204 +0,0 @@ -#ifndef EVEL_INCLUDED -#define EVEL_INCLUDED -/**************************************************************************//** - * @file - * Header for EVEL library - * - * This file implements the EVEL library which is intended to provide a - * simple wrapper around the complexity of AT&T's Vendor Event Listener API so - * that VNFs can use it without worrying about details of the API transport. - * - * Zero return value is success (::EVEL_SUCCESS), non-zero is failure and will - * be one of ::EVEL_ERR_CODES. - * - * License - * ------- - * - * Copyright(c) <2016>, AT&T Intellectual Property. All other rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: This product includes - * software developed by the AT&T. - * 4. Neither the name of AT&T nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdbool.h> -#include <stdio.h> -#include <stdarg.h> -#include <time.h> - -#include "jsmn.h" -#include "double_list.h" -#include "hashtable.h" - -/*****************************************************************************/ -/* Supported API version. */ -/*****************************************************************************/ -#define EVEL_API_MAJOR_VERSION 5 -#define EVEL_API_MINOR_VERSION 0 - -/**************************************************************************//** - * Error codes - * - * Error codes for EVEL low level interface - *****************************************************************************/ -typedef enum { - EVEL_SUCCESS, /** The operation was successful. */ - EVEL_ERR_GEN_FAIL, /** Non-specific failure. */ - EVEL_CURL_LIBRARY_FAIL, /** A cURL library operation failed. */ - EVEL_PTHREAD_LIBRARY_FAIL, /** A Posix threads operation failed. */ - EVEL_OUT_OF_MEMORY, /** A memory allocation failure occurred. */ - EVEL_EVENT_BUFFER_FULL, /** Too many events in the ring-buffer. */ - EVEL_EVENT_HANDLER_INACTIVE, /** Attempt to raise event when inactive. */ - EVEL_NO_METADATA, /** Failed to retrieve OpenStack metadata. */ - EVEL_BAD_METADATA, /** OpenStack metadata invalid format. */ - EVEL_BAD_JSON_FORMAT, /** JSON failed to parse correctly. */ - EVEL_JSON_KEY_NOT_FOUND, /** Failed to find the specified JSON key. */ - EVEL_MAX_ERROR_CODES /** Maximum number of valid error codes. */ -} EVEL_ERR_CODES; - -/**************************************************************************//** - * Logging levels - * - * Variable levels of verbosity in the logging functions. - *****************************************************************************/ -typedef enum { - EVEL_LOG_MIN = 0, - EVEL_LOG_SPAMMY = 30, - EVEL_LOG_DEBUG = 40, - EVEL_LOG_INFO = 50, - EVEL_LOG_ERROR = 60, - EVEL_LOG_MAX = 101 -} EVEL_LOG_LEVELS; - -/*****************************************************************************/ -/* Maximum string lengths. */ -/*****************************************************************************/ -#define EVEL_MAX_STRING_LEN 4096 -#define EVEL_MAX_JSON_BODY 16000 -#define EVEL_MAX_ERROR_STRING_LEN 255 -#define EVEL_MAX_URL_LEN 511 - -/**************************************************************************//** - * This value represents there being no restriction on the reporting interval. - *****************************************************************************/ -static const int EVEL_MEASUREMENT_INTERVAL_UKNOWN = 0; - -/**************************************************************************//** - * How many events can be backed-up before we start dropping events on the - * floor. - * - * @note This value should be tuned in accordance with expected burstiness of - * the event load and the expected response time of the ECOMP event - * listener so that the probability of the buffer filling is suitably - * low. - *****************************************************************************/ -static const int EVEL_EVENT_BUFFER_DEPTH = 100; - -/*****************************************************************************/ -/* How many different IP Types-of-Service are supported. */ -/*****************************************************************************/ -#define EVEL_TOS_SUPPORTED 256 - -/**************************************************************************//** - * Event domains for the various events we support. - * JSON equivalent field: domain - *****************************************************************************/ -typedef enum { - EVEL_DOMAIN_INTERNAL, /** Internal event, not for external routing. */ - EVEL_DOMAIN_HEARTBEAT, /** A Heartbeat event (event header only). */ - EVEL_DOMAIN_FAULT, /** A Fault event. */ - EVEL_DOMAIN_MEASUREMENT, /** A Measurement for VF Scaling event. */ - EVEL_DOMAIN_MOBILE_FLOW, /** A Mobile Flow event. */ - EVEL_DOMAIN_REPORT, /** A Measurement for VF Reporting event. */ - EVEL_DOMAIN_HEARTBEAT_FIELD,/** A Heartbeat field event. */ - EVEL_DOMAIN_SIPSIGNALING, /** A Signaling event. */ - EVEL_DOMAIN_STATE_CHANGE, /** A State Change event. */ - EVEL_DOMAIN_SYSLOG, /** A Syslog event. */ - EVEL_DOMAIN_OTHER, /** Another event. */ - EVEL_DOMAIN_VOICE_QUALITY, /** A Voice Quality Event */ - EVEL_MAX_DOMAINS /** Maximum number of recognized Event types. */ -} EVEL_EVENT_DOMAINS; - -/**************************************************************************//** - * Event priorities. - * JSON equivalent field: priority - *****************************************************************************/ -typedef enum { - EVEL_PRIORITY_HIGH, - EVEL_PRIORITY_MEDIUM, - EVEL_PRIORITY_NORMAL, - EVEL_PRIORITY_LOW, - EVEL_MAX_PRIORITIES -} EVEL_EVENT_PRIORITIES; - -/**************************************************************************//** - * Fault / Threshold severities. - * JSON equivalent field: eventSeverity - *****************************************************************************/ -typedef enum { - EVEL_SEVERITY_CRITICAL, - EVEL_SEVERITY_MAJOR, - EVEL_SEVERITY_MINOR, - EVEL_SEVERITY_WARNING, - EVEL_SEVERITY_NORMAL, - EVEL_MAX_SEVERITIES -} EVEL_SEVERITIES; - -/**************************************************************************//** - * Fault source types. - * JSON equivalent field: eventSourceType - *****************************************************************************/ -typedef enum { - EVEL_SOURCE_OTHER, - EVEL_SOURCE_ROUTER, - EVEL_SOURCE_SWITCH, - EVEL_SOURCE_HOST, - EVEL_SOURCE_CARD, - EVEL_SOURCE_PORT, - EVEL_SOURCE_SLOT_THRESHOLD, - EVEL_SOURCE_PORT_THRESHOLD, - EVEL_SOURCE_VIRTUAL_MACHINE, - EVEL_SOURCE_VIRTUAL_NETWORK_FUNCTION, - /***************************************************************************/ - /* START OF VENDOR-SPECIFIC VALUES */ - /* */ - /* Vendor-specific values should be added here, and handled appropriately */ - /* in evel_event.c. */ - /***************************************************************************/ - - /***************************************************************************/ - /* END OF VENDOR-SPECIFIC VALUES */ - /***************************************************************************/ - EVEL_MAX_SOURCE_TYPES -} EVEL_SOURCE_TYPES; - -/**************************************************************************//** - * Fault VNF Status. - * JSON equivalent field: vfStatus - *****************************************************************************/ -typedef enum { - EVEL_VF_STATUS_ACTIVE, - EVEL_VF_STATUS_IDLE, - EVEL_VF_STATUS_PREP_TERMINATE, - EVEL_VF_STATUS_READY_TERMINATE, - EVEL_VF_STATUS_REQ_TERMINATE, - EVEL_MAX_VF_STATUSES -} EVEL_VF_STATUSES; - -/**************************************************************************//** - * Counter criticalities. - * JSON equivalent field: criticality - *****************************************************************************/ -typedef enum { - EVEL_COUNTER_CRITICALITY_CRIT, - EVEL_COUNTER_CRITICALITY_MAJ, - EVEL_MAX_COUNTER_CRITICALITIES -} EVEL_COUNTER_CRITICALITIES; - -/**************************************************************************//** - * Alert actions. - * JSON equivalent field: alertAction - *****************************************************************************/ -typedef enum { - EVEL_ALERT_ACTION_CLEAR, - EVEL_ALERT_ACTION_CONT, - EVEL_ALERT_ACTION_SET, - EVEL_MAX_ALERT_ACTIONS -} EVEL_ALERT_ACTIONS; - -/**************************************************************************//** - * Alert types. - * JSON equivalent field: alertType - *****************************************************************************/ -typedef enum { - EVEL_ALERT_TYPE_CARD, - EVEL_ALERT_TYPE_ELEMENT, - EVEL_ALERT_TYPE_INTERFACE, - EVEL_ALERT_TYPE_SERVICE, - EVEL_MAX_ALERT_TYPES -} EVEL_ALERT_TYPES; - -/**************************************************************************//** - * Alert types. - * JSON equivalent fields: newState, oldState - *****************************************************************************/ -typedef enum { - EVEL_ENTITY_STATE_IN_SERVICE, - EVEL_ENTITY_STATE_MAINTENANCE, - EVEL_ENTITY_STATE_OUT_OF_SERVICE, - EVEL_MAX_ENTITY_STATES -} EVEL_ENTITY_STATE; - -/**************************************************************************//** - * Syslog facilities. - * JSON equivalent field: syslogFacility - *****************************************************************************/ -typedef enum { - EVEL_SYSLOG_FACILITY_KERNEL, - EVEL_SYSLOG_FACILITY_USER, - EVEL_SYSLOG_FACILITY_MAIL, - EVEL_SYSLOG_FACILITY_SYSTEM_DAEMON, - EVEL_SYSLOG_FACILITY_SECURITY_AUTH, - EVEL_SYSLOG_FACILITY_INTERNAL, - EVEL_SYSLOG_FACILITY_LINE_PRINTER, - EVEL_SYSLOG_FACILITY_NETWORK_NEWS, - EVEL_SYSLOG_FACILITY_UUCP, - EVEL_SYSLOG_FACILITY_CLOCK_DAEMON, - EVEL_SYSLOG_FACILITY_SECURITY_AUTH2, - EVEL_SYSLOG_FACILITY_FTP_DAEMON, - EVEL_SYSLOG_FACILITY_NTP, - EVEL_SYSLOG_FACILITY_LOG_AUDIT, - EVEL_SYSLOG_FACILITY_LOG_ALERT, - EVEL_SYSLOG_FACILITY_CLOCK_DAEMON2, - EVEL_SYSLOG_FACILITY_LOCAL0, - EVEL_SYSLOG_FACILITY_LOCAL1, - EVEL_SYSLOG_FACILITY_LOCAL2, - EVEL_SYSLOG_FACILITY_LOCAL3, - EVEL_SYSLOG_FACILITY_LOCAL4, - EVEL_SYSLOG_FACILITY_LOCAL5, - EVEL_SYSLOG_FACILITY_LOCAL6, - EVEL_SYSLOG_FACILITY_LOCAL7, - EVEL_MAX_SYSLOG_FACILITIES -} EVEL_SYSLOG_FACILITIES; - -/**************************************************************************//** - * TCP flags. - * JSON equivalent fields: tcpFlagCountList, tcpFlagList - *****************************************************************************/ -typedef enum { - EVEL_TCP_NS, - EVEL_TCP_CWR, - EVEL_TCP_ECE, - EVEL_TCP_URG, - EVEL_TCP_ACK, - EVEL_TCP_PSH, - EVEL_TCP_RST, - EVEL_TCP_SYN, - EVEL_TCP_FIN, - EVEL_MAX_TCP_FLAGS -} EVEL_TCP_FLAGS; - -/**************************************************************************//** - * Mobile QCI Classes of Service. - * JSON equivalent fields: mobileQciCosCountList, mobileQciCosList - *****************************************************************************/ -typedef enum { - - /***************************************************************************/ - /* UMTS Classes of Service. */ - /***************************************************************************/ - EVEL_QCI_COS_UMTS_CONVERSATIONAL, - EVEL_QCI_COS_UMTS_STREAMING, - EVEL_QCI_COS_UMTS_INTERACTIVE, - EVEL_QCI_COS_UMTS_BACKGROUND, - - /***************************************************************************/ - /* LTE Classes of Service. */ - /***************************************************************************/ - EVEL_QCI_COS_LTE_1, - EVEL_QCI_COS_LTE_2, - EVEL_QCI_COS_LTE_3, - EVEL_QCI_COS_LTE_4, - EVEL_QCI_COS_LTE_65, - EVEL_QCI_COS_LTE_66, - EVEL_QCI_COS_LTE_5, - EVEL_QCI_COS_LTE_6, - EVEL_QCI_COS_LTE_7, - EVEL_QCI_COS_LTE_8, - EVEL_QCI_COS_LTE_9, - EVEL_QCI_COS_LTE_69, - EVEL_QCI_COS_LTE_70, - EVEL_MAX_QCI_COS_TYPES -} EVEL_QCI_COS_TYPES; - -/**************************************************************************//** - * Service Event endpoint description - * JSON equivalent field: endpointDesc - *****************************************************************************/ -typedef enum { - EVEL_SERVICE_ENDPOINT_CALLEE, - EVEL_SERVICE_ENDPOINT_CALLER, - EVEL_MAX_SERVICE_ENDPOINT_DESC -} EVEL_SERVICE_ENDPOINT_DESC; - -/**************************************************************************//** - * Boolean type for EVEL library. - *****************************************************************************/ -typedef enum { - EVEL_FALSE, - EVEL_TRUE -} EVEL_BOOLEAN; - -/**************************************************************************//** - * Optional parameter holder for double. - *****************************************************************************/ -typedef struct evel_option_double -{ - double value; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_DOUBLE; - -/**************************************************************************//** - * Optional parameter holder for string. - *****************************************************************************/ -typedef struct evel_option_string -{ - char * value; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_STRING; - -/**************************************************************************//** - * Optional parameter holder for int. - *****************************************************************************/ -typedef struct evel_option_int -{ - int value; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_INT; - -/**************************************************************************//** - * Optional parameter holder for unsigned long long. - *****************************************************************************/ -typedef struct evel_option_ull -{ - unsigned long long value; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_ULL; - -/**************************************************************************//** - * Optional parameter holder for time_t. - *****************************************************************************/ -typedef struct evel_option_time -{ - time_t value; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_TIME; - -/**************************************************************************//** - * enrichment fields for internal VES Event Listener service use only, - * not supplied by event sources - *****************************************************************************/ -typedef struct internal_header_fields -{ - void *object; - EVEL_BOOLEAN is_set; -} EVEL_OPTION_INTHEADER_FIELDS; - -/*****************************************************************************/ -/* Supported Common Event Header version. */ -/*****************************************************************************/ -#define EVEL_HEADER_MAJOR_VERSION 1 -#define EVEL_HEADER_MINOR_VERSION 2 - -/**************************************************************************//** - * Event header. - * JSON equivalent field: commonEventHeader - *****************************************************************************/ -typedef struct event_header { - /***************************************************************************/ - /* Version */ - /***************************************************************************/ - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - EVEL_EVENT_DOMAINS event_domain; - char * event_id; - char * event_name; - char * source_name; - char * reporting_entity_name; - EVEL_EVENT_PRIORITIES priority; - unsigned long long start_epoch_microsec; - unsigned long long last_epoch_microsec; - int sequence; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING event_type; - EVEL_OPTION_STRING source_id; - EVEL_OPTION_STRING reporting_entity_id; - EVEL_OPTION_INTHEADER_FIELDS internal_field; - EVEL_OPTION_STRING nfcnaming_code; - EVEL_OPTION_STRING nfnaming_code; - -} EVENT_HEADER; - -/*****************************************************************************/ -/* Supported Fault version. */ -/*****************************************************************************/ -#define EVEL_FAULT_MAJOR_VERSION 2 -#define EVEL_FAULT_MINOR_VERSION 1 - -/**************************************************************************//** - * Fault. - * JSON equivalent field: faultFields - *****************************************************************************/ -typedef struct event_fault { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - EVEL_SEVERITIES event_severity; - EVEL_SOURCE_TYPES event_source_type; - char * alarm_condition; - char * specific_problem; - EVEL_VF_STATUSES vf_status; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING category; - EVEL_OPTION_STRING alarm_interface_a; - DLIST additional_info; - -} EVENT_FAULT; - -/**************************************************************************//** - * Fault Additional Info. - * JSON equivalent field: alarmAdditionalInformation - *****************************************************************************/ -typedef struct fault_additional_info { - char * name; - char * value; -} FAULT_ADDL_INFO; - - -/**************************************************************************//** - * optional field block for fields specific to heartbeat events - *****************************************************************************/ -typedef struct event_heartbeat_fields -{ - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - double heartbeat_version; - int heartbeat_interval; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - DLIST additional_info; - -} EVENT_HEARTBEAT_FIELD; - -/**************************************************************************//** - * tuple which provides the name of a key along with its value and - * relative order - *****************************************************************************/ -typedef struct internal_key -{ - char *keyname; - EVEL_OPTION_INT keyorder; - EVEL_OPTION_STRING keyvalue; -} EVEL_INTERNAL_KEY; - -/**************************************************************************//** - * meta-information about an instance of a jsonObject along with - * the actual object instance - *****************************************************************************/ -typedef struct json_object_instance -{ - - char *jsonstring; - unsigned long long objinst_epoch_microsec; - DLIST object_keys; /*EVEL_INTERNAL_KEY list */ - -} EVEL_JSON_OBJECT_INSTANCE; -#define MAX_JSON_TOKENS 128 -/**************************************************************************//** - * Create a new json object instance. - * - * @note The mandatory fields on the Other 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 - * Other has immutable properties. - * @param yourjson json string. - * @returns pointer to the newly manufactured ::EVEL_JSON_OBJECT_INSTANCE. - * not used (i.e. posted) it must be released using ::evel_free_jsonobjectinstance. - * @retval NULL Failed to create the json object instance. - *****************************************************************************/ -EVEL_JSON_OBJECT_INSTANCE * evel_new_jsonobjinstance(const char *const yourjson); -/**************************************************************************//** - * Free an json object instance. - * - * Free off the json object instance supplied. - * Will free all the contained allocated memory. - * - *****************************************************************************/ -void evel_free_jsonobjinst(EVEL_JSON_OBJECT_INSTANCE * objinst); - -/**************************************************************************//** - * enrichment fields for internal VES Event Listener service use only, - * not supplied by event sources - *****************************************************************************/ -typedef struct json_object -{ - - char *object_name; - EVEL_OPTION_STRING objectschema; - EVEL_OPTION_STRING objectschemaurl; - EVEL_OPTION_STRING nfsubscribedobjname; - EVEL_OPTION_STRING nfsubscriptionid; - DLIST jsonobjectinstances; /* EVEL_JSON_OBJECT_INSTANCE list */ - -} EVEL_JSON_OBJECT; - -/**************************************************************************//** - * Create a new json object. - * - * @note The mandatory fields on the Other 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 - * Other has immutable properties. - * @param name name of the object. - * @returns pointer to the newly manufactured ::EVEL_JSON_OBJECT. - * not used (i.e. posted) it must be released using ::evel_free_jsonobject. - * @retval NULL Failed to create the json object. - *****************************************************************************/ -EVEL_JSON_OBJECT * evel_new_jsonobject(const char *const name); -/**************************************************************************//** - * Free an json object. - * - * Free off the json object instance supplied. - * Will free all the contained allocated memory. - * - *****************************************************************************/ -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; - -/**************************************************************************//** - * Measurement. - * JSON equivalent field: measurementsForVfScalingFields - *****************************************************************************/ -typedef struct event_measurement { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - double measurement_interval; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - DLIST additional_info; - DLIST additional_measurements; - DLIST additional_objects; - DLIST codec_usage; - EVEL_OPTION_INT concurrent_sessions; - EVEL_OPTION_INT configured_entities; - DLIST cpu_usage; - DLIST disk_usage; - MEASUREMENT_ERRORS * errors; - DLIST 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_INT vnfc_scaling_metric; - DLIST vnic_usage; - -} EVENT_MEASUREMENT; - -/**************************************************************************//** - * CPU Usage. - * JSON equivalent field: cpuUsage - *****************************************************************************/ -typedef struct measurement_cpu_use { - char * id; - double usage; - EVEL_OPTION_DOUBLE idle; - EVEL_OPTION_DOUBLE intrpt; - EVEL_OPTION_DOUBLE nice; - EVEL_OPTION_DOUBLE softirq; - EVEL_OPTION_DOUBLE steal; - EVEL_OPTION_DOUBLE sys; - EVEL_OPTION_DOUBLE user; - EVEL_OPTION_DOUBLE wait; -} MEASUREMENT_CPU_USE; - - -/**************************************************************************//** - * Disk Usage. - * JSON equivalent field: diskUsage - *****************************************************************************/ -typedef struct measurement_disk_use { - char * id; - EVEL_OPTION_DOUBLE iotimeavg; - EVEL_OPTION_DOUBLE iotimelast; - EVEL_OPTION_DOUBLE iotimemax; - EVEL_OPTION_DOUBLE iotimemin; - EVEL_OPTION_DOUBLE mergereadavg; - EVEL_OPTION_DOUBLE mergereadlast; - EVEL_OPTION_DOUBLE mergereadmax; - EVEL_OPTION_DOUBLE mergereadmin; - EVEL_OPTION_DOUBLE mergewriteavg; - EVEL_OPTION_DOUBLE mergewritelast; - EVEL_OPTION_DOUBLE mergewritemax; - EVEL_OPTION_DOUBLE mergewritemin; - EVEL_OPTION_DOUBLE octetsreadavg; - EVEL_OPTION_DOUBLE octetsreadlast; - EVEL_OPTION_DOUBLE octetsreadmax; - EVEL_OPTION_DOUBLE octetsreadmin; - EVEL_OPTION_DOUBLE octetswriteavg; - EVEL_OPTION_DOUBLE octetswritelast; - EVEL_OPTION_DOUBLE octetswritemax; - EVEL_OPTION_DOUBLE octetswritemin; - EVEL_OPTION_DOUBLE opsreadavg; - EVEL_OPTION_DOUBLE opsreadlast; - EVEL_OPTION_DOUBLE opsreadmax; - EVEL_OPTION_DOUBLE opsreadmin; - EVEL_OPTION_DOUBLE opswriteavg; - EVEL_OPTION_DOUBLE opswritelast; - EVEL_OPTION_DOUBLE opswritemax; - EVEL_OPTION_DOUBLE opswritemin; - EVEL_OPTION_DOUBLE pendingopsavg; - EVEL_OPTION_DOUBLE pendingopslast; - EVEL_OPTION_DOUBLE pendingopsmax; - EVEL_OPTION_DOUBLE pendingopsmin; - EVEL_OPTION_DOUBLE timereadavg; - EVEL_OPTION_DOUBLE timereadlast; - EVEL_OPTION_DOUBLE timereadmax; - EVEL_OPTION_DOUBLE timereadmin; - EVEL_OPTION_DOUBLE timewriteavg; - EVEL_OPTION_DOUBLE timewritelast; - EVEL_OPTION_DOUBLE timewritemax; - EVEL_OPTION_DOUBLE timewritemin; - -} MEASUREMENT_DISK_USE; - -/**************************************************************************//** - * Add an additional Disk usage 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 id ASCIIZ string with the CPU's identifier. - * @param usage Disk utilization. - *****************************************************************************/ -MEASUREMENT_DISK_USE * evel_measurement_new_disk_use_add(EVENT_MEASUREMENT * measurement, char * id); - -/**************************************************************************//** - * Filesystem Usage. - * JSON equivalent field: filesystemUsage - *****************************************************************************/ -typedef struct measurement_fsys_use { - char * filesystem_name; - double block_configured; - int block_iops; - double block_used; - double ephemeral_configured; - int ephemeral_iops; - double ephemeral_used; -} MEASUREMENT_FSYS_USE; - -/**************************************************************************//** - * Memory Usage. - * JSON equivalent field: memoryUsage - *****************************************************************************/ -typedef struct measurement_mem_use { - char * id; - char * vmid; - 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; -} MEASUREMENT_MEM_USE; - -/**************************************************************************//** - * Add an additional Memory usage 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 id ASCIIZ string with the Memory identifier. - * @param vmidentifier ASCIIZ string with the VM's identifier. - * @param membuffsz Memory Size. - * - * @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); - -/**************************************************************************//** - * Set kilobytes of memory used for cache - * - * @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_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 - * - * @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_memconfig_set(MEASUREMENT_MEM_USE * const mem_use, - const double val); -/**************************************************************************//** - * Set kilobytes of physical RAM left unused by the system - * - * @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_memfree_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 - * - * @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_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 - * - * @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_slab_unreclaimable_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 - * - * @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_usedup_set(MEASUREMENT_MEM_USE * const mem_use, - const double val); -/**************************************************************************//** - * Latency Bucket. - * JSON equivalent field: latencyBucketMeasure - *****************************************************************************/ -typedef struct measurement_latency_bucket { - int count; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_DOUBLE high_end; - EVEL_OPTION_DOUBLE low_end; - -} MEASUREMENT_LATENCY_BUCKET; - -/**************************************************************************//** - * Virtual NIC usage. - * JSON equivalent field: vNicUsage - *****************************************************************************/ -typedef struct measurement_vnic_performance { - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - /*Cumulative count of broadcast packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_bcast_packets_acc; - /*Count of broadcast packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_bcast_packets_delta; - /*Cumulative count of discarded packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_discarded_packets_acc; - /*Count of discarded packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_discarded_packets_delta; - /*Cumulative count of error packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_error_packets_acc; - /*Count of error packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_error_packets_delta; - /*Cumulative count of multicast packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_mcast_packets_acc; - /*Count of mcast packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_mcast_packets_delta; - /*Cumulative count of octets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_octets_acc; - /*Count of octets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_octets_delta; - /*Cumulative count of all packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_total_packets_acc; - /*Count of all packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_total_packets_delta; - /*Cumulative count of unicast packets received as read at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_ucast_packets_acc; - /*Count of unicast packets received within the measurement interval*/ - EVEL_OPTION_DOUBLE recvd_ucast_packets_delta; - /*Cumulative count of transmitted broadcast packets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_bcast_packets_acc; - /*Count of transmitted broadcast packets within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_bcast_packets_delta; - /*Cumulative count of transmit discarded packets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_discarded_packets_acc; - /*Count of transmit discarded packets within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_discarded_packets_delta; - /*Cumulative count of transmit error packets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_error_packets_acc; - /*Count of transmit error packets within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_error_packets_delta; - /*Cumulative count of transmit multicast packets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_mcast_packets_acc; - /*Count of transmit multicast packets within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_mcast_packets_delta; - /*Cumulative count of transmit octets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_octets_acc; - /*Count of transmit octets received within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_octets_delta; - /*Cumulative count of all transmit packets at the end of - the measurement interval*/ - EVEL_OPTION_DOUBLE tx_total_packets_acc; - /*Count of transmit packets within the measurement interval*/ - EVEL_OPTION_DOUBLE tx_total_packets_delta; - /*Cumulative count of all transmit unicast packets at the end of - the measurement interval*/ - 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; - -/**************************************************************************//** - * Codec Usage. - * JSON equivalent field: codecsInUse - *****************************************************************************/ -typedef struct measurement_codec_use { - char * codec_id; - int number_in_use; -} MEASUREMENT_CODEC_USE; - -/**************************************************************************//** - * Feature Usage. - * JSON equivalent field: featuresInUse - *****************************************************************************/ -typedef struct measurement_feature_use { - char * feature_id; - int feature_utilization; -} MEASUREMENT_FEATURE_USE; - -/**************************************************************************//** - * Measurement Group. - * JSON equivalent field: additionalMeasurements - *****************************************************************************/ -typedef struct measurement_group { - char * name; - DLIST measurements; -} MEASUREMENT_GROUP; - -/**************************************************************************//** - * Custom Defined Measurement. - * JSON equivalent field: measurements - *****************************************************************************/ -typedef struct custom_measurement { - char * name; - char * value; -} CUSTOM_MEASUREMENT; - -/*****************************************************************************/ -/* Supported Report version. */ -/*****************************************************************************/ -#define EVEL_REPORT_MAJOR_VERSION 1 -#define EVEL_REPORT_MINOR_VERSION 1 - -/**************************************************************************//** - * Report. - * JSON equivalent field: measurementsForVfReportingFields - * - * @note This is an experimental event type and is not currently a formal part - * of AT&T's specification. - *****************************************************************************/ -typedef struct event_report { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - double measurement_interval; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - DLIST feature_usage; - DLIST measurement_groups; - -} EVENT_REPORT; - -/**************************************************************************//** - * Mobile GTP Per Flow Metrics. - * JSON equivalent field: gtpPerFlowMetrics - *****************************************************************************/ -typedef struct mobile_gtp_per_flow_metrics { - double avg_bit_error_rate; - double avg_packet_delay_variation; - int avg_packet_latency; - int avg_receive_throughput; - int avg_transmit_throughput; - int flow_activation_epoch; - int flow_activation_microsec; - int flow_deactivation_epoch; - int flow_deactivation_microsec; - time_t flow_deactivation_time; - char * flow_status; - int max_packet_delay_variation; - int num_activation_failures; - int num_bit_errors; - int num_bytes_received; - int num_bytes_transmitted; - int num_dropped_packets; - int num_l7_bytes_received; - int num_l7_bytes_transmitted; - int num_lost_packets; - int num_out_of_order_packets; - int num_packet_errors; - int num_packets_received_excl_retrans; - int num_packets_received_incl_retrans; - int num_packets_transmitted_incl_retrans; - int num_retries; - int num_timeouts; - int num_tunneled_l7_bytes_received; - int round_trip_time; - int time_to_first_byte; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_INT ip_tos_counts[EVEL_TOS_SUPPORTED]; - EVEL_OPTION_INT tcp_flag_counts[EVEL_MAX_TCP_FLAGS]; - EVEL_OPTION_INT qci_cos_counts[EVEL_MAX_QCI_COS_TYPES]; - EVEL_OPTION_INT dur_connection_failed_status; - EVEL_OPTION_INT dur_tunnel_failed_status; - EVEL_OPTION_STRING flow_activated_by; - EVEL_OPTION_TIME flow_activation_time; - EVEL_OPTION_STRING flow_deactivated_by; - EVEL_OPTION_STRING gtp_connection_status; - EVEL_OPTION_STRING gtp_tunnel_status; - EVEL_OPTION_INT large_packet_rtt; - EVEL_OPTION_DOUBLE large_packet_threshold; - EVEL_OPTION_INT max_receive_bit_rate; - EVEL_OPTION_INT max_transmit_bit_rate; - EVEL_OPTION_INT num_gtp_echo_failures; - EVEL_OPTION_INT num_gtp_tunnel_errors; - EVEL_OPTION_INT num_http_errors; - -} MOBILE_GTP_PER_FLOW_METRICS; - -/*****************************************************************************/ -/* Supported Mobile Flow version. */ -/*****************************************************************************/ -#define EVEL_MOBILE_FLOW_MAJOR_VERSION 1 -#define EVEL_MOBILE_FLOW_MINOR_VERSION 2 - -/**************************************************************************//** - * Mobile Flow. - * JSON equivalent field: mobileFlow - *****************************************************************************/ -typedef struct event_mobile_flow { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - char * flow_direction; - MOBILE_GTP_PER_FLOW_METRICS * gtp_per_flow_metrics; - char * ip_protocol_type; - char * ip_version; - char * other_endpoint_ip_address; - int other_endpoint_port; - char * reporting_endpoint_ip_addr; - int reporting_endpoint_port; - DLIST additional_info; /* JSON: additionalFields */ - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING application_type; - EVEL_OPTION_STRING app_protocol_type; - EVEL_OPTION_STRING app_protocol_version; - EVEL_OPTION_STRING cid; - EVEL_OPTION_STRING connection_type; - EVEL_OPTION_STRING ecgi; - EVEL_OPTION_STRING gtp_protocol_type; - EVEL_OPTION_STRING gtp_version; - EVEL_OPTION_STRING http_header; - EVEL_OPTION_STRING imei; - EVEL_OPTION_STRING imsi; - EVEL_OPTION_STRING lac; - EVEL_OPTION_STRING mcc; - EVEL_OPTION_STRING mnc; - EVEL_OPTION_STRING msisdn; - EVEL_OPTION_STRING other_functional_role; - EVEL_OPTION_STRING rac; - EVEL_OPTION_STRING radio_access_technology; - EVEL_OPTION_STRING sac; - EVEL_OPTION_INT sampling_algorithm; - EVEL_OPTION_STRING tac; - EVEL_OPTION_STRING tunnel_id; - EVEL_OPTION_STRING vlan_id; - -} EVENT_MOBILE_FLOW; - -/*****************************************************************************/ -/* Supported Other field version. */ -/*****************************************************************************/ -#define EVEL_OTHER_EVENT_MAJOR_VERSION 1 -#define EVEL_OTHER_EVENT_MINOR_VERSION 1 - -/**************************************************************************//** - * Other. - * JSON equivalent field: otherFields - *****************************************************************************/ -typedef struct event_other { - EVENT_HEADER header; - int major_version; - int minor_version; - - HASHTABLE_T *namedarrays; /* HASHTABLE_T */ - DLIST jsonobjects; /* DLIST of EVEL_JSON_OBJECT */ - DLIST namedvalues; -} EVENT_OTHER; - -/**************************************************************************//** - * Other Field. - * JSON equivalent field: otherFields - *****************************************************************************/ -typedef struct other_field { - char * name; - char * value; -} OTHER_FIELD; - - -/*****************************************************************************/ -/* Supported Service Events version. */ -/*****************************************************************************/ -#define EVEL_HEARTBEAT_FIELD_MAJOR_VERSION 1 -#define EVEL_HEARTBEAT_FIELD_MINOR_VERSION 1 - - -/*****************************************************************************/ -/* Supported Signaling version. */ -/*****************************************************************************/ -#define EVEL_SIGNALING_MAJOR_VERSION 2 -#define EVEL_SIGNALING_MINOR_VERSION 1 - -/**************************************************************************//** - * Vendor VNF Name fields. - * JSON equivalent field: vendorVnfNameFields - *****************************************************************************/ -typedef struct vendor_vnfname_field { - char * vendorname; - EVEL_OPTION_STRING vfmodule; - EVEL_OPTION_STRING vnfname; -} VENDOR_VNFNAME_FIELD; - -/**************************************************************************//** - * Signaling. - * JSON equivalent field: signalingFields - *****************************************************************************/ -typedef struct event_signaling { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - VENDOR_VNFNAME_FIELD vnfname_field; - EVEL_OPTION_STRING correlator; /* JSON: correlator */ - EVEL_OPTION_STRING local_ip_address; /* JSON: localIpAddress */ - EVEL_OPTION_STRING local_port; /* JSON: localPort */ - EVEL_OPTION_STRING remote_ip_address; /* JSON: remoteIpAddress */ - EVEL_OPTION_STRING remote_port; /* JSON: remotePort */ - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING compressed_sip; /* JSON: compressedSip */ - EVEL_OPTION_STRING summary_sip; /* JSON: summarySip */ - DLIST 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 - -/**************************************************************************//** - * State Change. - * JSON equivalent field: stateChangeFields - *****************************************************************************/ -typedef struct event_state_change { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - EVEL_ENTITY_STATE new_state; - EVEL_ENTITY_STATE old_state; - char * state_interface; - double version; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - DLIST additional_fields; - -} EVENT_STATE_CHANGE; - -/**************************************************************************//** - * State Change Additional Field. - * JSON equivalent field: additionalFields - *****************************************************************************/ -typedef struct state_change_additional_field { - char * name; - char * value; -} STATE_CHANGE_ADDL_FIELD; - -/*****************************************************************************/ -/* Supported Syslog version. */ -/*****************************************************************************/ -#define EVEL_SYSLOG_MAJOR_VERSION 1 -#define EVEL_SYSLOG_MINOR_VERSION 2 - -/**************************************************************************//** - * Syslog. - * JSON equivalent field: syslogFields - *****************************************************************************/ -typedef struct event_syslog { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - EVEL_SOURCE_TYPES event_source_type; - char * syslog_msg; - char * syslog_tag; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING additional_filters; - EVEL_OPTION_STRING event_source_host; - EVEL_OPTION_INT syslog_facility; - EVEL_OPTION_INT syslog_priority; - EVEL_OPTION_STRING syslog_proc; - EVEL_OPTION_INT syslog_proc_id; - EVEL_OPTION_STRING syslog_s_data; - EVEL_OPTION_STRING syslog_sdid; - EVEL_OPTION_STRING syslog_severity; - double syslog_fver; - EVEL_OPTION_INT syslog_ver; - -} EVENT_SYSLOG; - -/**************************************************************************//** - * Copyright. - * JSON equivalent object: attCopyrightNotice - *****************************************************************************/ -typedef struct copyright { - char * useAndRedistribution; - char * condition1; - char * condition2; - char * condition3; - char * condition4; - char * disclaimerLine1; - char * disclaimerLine2; - char * disclaimerLine3; - char * disclaimerLine4; -} COPYRIGHT; - -/**************************************************************************//** - * Library initialization. - * - * Initialize the EVEL library. - * - * @note This function initializes the cURL library. Applications making use - * of libcurl may need to pull the initialization out of here. Note - * also that this function is not threadsafe as a result - refer to - * libcurl's API documentation for relevant warnings. - * - * @sa Matching Term function. - * - * @param fqdn The API's FQDN or IP address. - * @param 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 secure Whether to use HTTPS (0=HTTP, 1=HTTPS). - * @param username Username for Basic Authentication of requests. - * @param password Password for Basic Authentication of requests. - * @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 - * logs. - * - * @returns Status code - * @retval EVEL_SUCCESS On success - * @retval ::EVEL_ERR_CODES On failure. - *****************************************************************************/ -EVEL_ERR_CODES evel_initialize(const char * const fqdn, - int port, - const char * const path, - const char * const topic, - int secure, - const char * const username, - const char * const password, - EVEL_SOURCE_TYPES source_type, - const char * const role, - int verbosity - ); - -/**************************************************************************//** - * Clean up the EVEL library. - * - * @note that at present don't expect Init/Term cycling not to leak memory! - * - * @returns Status code - * @retval EVEL_SUCCESS On success - * @retval "One of ::EVEL_ERR_CODES" On failure. - *****************************************************************************/ -EVEL_ERR_CODES evel_terminate(void); - -EVEL_ERR_CODES evel_post_event(EVENT_HEADER * event); -const char * evel_error_string(void); - - -/**************************************************************************//** - * Free an event. - * - * Free off the event supplied. Will free all the contained allocated memory. - * - * @note It is safe to free a NULL pointer. - *****************************************************************************/ -void evel_free_event(void * event); - -/**************************************************************************//** - * Encode the event as a JSON event object according to AT&T's schema. - * - * @param json Pointer to where to store the JSON encoded data. - * @param max_size Size of storage available in json_body. - * @param event Pointer to the ::EVENT_HEADER to encode. - * @returns Number of bytes actually written. - *****************************************************************************/ -int evel_json_encode_event(char * json, - int max_size, - EVENT_HEADER * event); - -/**************************************************************************//** - * Callback function to provide returned data. - * - * Copy data into the supplied buffer, write_callback::ptr, checking size - * limits. - * - * @returns Number of bytes placed into write_callback::ptr. 0 for EOF. - *****************************************************************************/ -size_t evel_write_callback(void *contents, - size_t size, - size_t nmemb, - void *userp); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* HEARTBEAT - (includes common header, too) */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new heartbeat event. - * - * @note that the heartbeat is just a "naked" commonEventHeader! - * - * @returns pointer to the newly manufactured ::EVENT_HEADER. If the event is - * not used it must be released using ::evel_free_event - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_HEADER * evel_new_heartbeat(void); - -/**************************************************************************//** - * Free an event header. - * - * Free off the event header supplied. Will free all the contained allocated - * memory. - * - * @note It does not free the header itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_header(EVENT_HEADER * const event); - -/**************************************************************************//** - * Initialize a newly created event header. - * - * @param header Pointer to the header being initialized. - *****************************************************************************/ -void evel_init_header(EVENT_HEADER * const header,const char *const eventname); - -/**************************************************************************//** - * Set the Event Type property of the event header. - * - * @param header Pointer to the ::EVENT_HEADER. - * @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_header_type_set(EVENT_HEADER * const header, - const char * const type); - -/**************************************************************************//** - * Set the Start Epoch property of the event header. - * - * @note The Start Epoch defaults to the time of event creation. - * - * @param header Pointer to the ::EVENT_HEADER. - * @param start_epoch_microsec - * The start epoch to set, in microseconds. - *****************************************************************************/ -void evel_start_epoch_set(EVENT_HEADER * const header, - const unsigned long long start_epoch_microsec); - -/**************************************************************************//** - * Set the Last Epoch property of the event header. - * - * @note The Last Epoch defaults to the time of event creation. - * - * @param header Pointer to the ::EVENT_HEADER. - * @param last_epoch_microsec - * The last epoch to set, in microseconds. - *****************************************************************************/ -void evel_last_epoch_set(EVENT_HEADER * const header, - const unsigned long long last_epoch_microsec); - -/**************************************************************************//** - * Set the Reporting Entity Name property of the event header. - * - * @note The Reporting Entity Name defaults to the OpenStack VM Name. - * - * @param header Pointer to the ::EVENT_HEADER. - * @param entity_name The entity name to set. - *****************************************************************************/ -void evel_reporting_entity_name_set(EVENT_HEADER * const header, - const char * const entity_name); - -/**************************************************************************//** - * Set the Reporting Entity Id property of the event header. - * - * @note The Reporting Entity Id defaults to the OpenStack VM UUID. - * - * @param header Pointer to the ::EVENT_HEADER. - * @param entity_id The entity id to set. - *****************************************************************************/ -void evel_reporting_entity_id_set(EVENT_HEADER * const header, - const char * const entity_id); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* FAULT */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new fault event. - * - * @note The mandatory fields on the Fault 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 - * Fault has immutable properties. - * @param condition The condition indicated by the Fault. - * @param specific_problem The specific problem triggering the fault. - * @param priority The priority of the event. - * @param severity The severity of the Fault. - * @param ev_source_type Source of Alarm event - * @param version fault version - * @param status status of Virtual Function - * @returns pointer to the newly manufactured ::EVENT_FAULT. If the event is - * not used (i.e. posted) it must be released using ::evel_free_fault. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_FAULT * evel_new_fault(const char * const condition, - const char * const specific_problem, - EVEL_EVENT_PRIORITIES priority, - EVEL_SEVERITIES severity, - EVEL_SOURCE_TYPES ev_source_type, - EVEL_VF_STATUSES status); - -/**************************************************************************//** - * Free a Fault. - * - * Free off the Fault supplied. Will free all the contained allocated memory. - * - * @note It does not free the Fault itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_fault(EVENT_FAULT * event); - -/**************************************************************************//** - * Set the Fault Category property of the Fault. - * - * @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 fault Pointer to the fault. - * @param category Category : license, link, routing, security, signaling. - * ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_fault_category_set(EVENT_FAULT * fault, - const char * const category); - -/**************************************************************************//** - * Set the Alarm Interface A property of the Fault. - * - * @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 fault Pointer to the fault. - * @param interface The Alarm Interface A to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_fault_interface_set(EVENT_FAULT * fault, - const char * const interface); - -/**************************************************************************//** - * Add an additional value name/value pair to the Fault. - * - * 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 fault. - * @param name ASCIIZ string with the attribute's name. - * @param value ASCIIZ string with the attribute's value. - *****************************************************************************/ -void evel_fault_addl_info_add(EVENT_FAULT * fault, char * name, char * value); - -/**************************************************************************//** - * Set the Event Type property of the Fault. - * - * @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 fault Pointer to the fault. - * @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_fault_type_set(EVENT_FAULT * fault, const char * const type); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* MEASUREMENT */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new Measurement event. - * - * @note The mandatory fields on the Measurement 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 has immutable properties. - * - * @param measurement_interval - * - * @returns pointer to the newly manufactured ::EVENT_MEASUREMENT. If the - * event is not used (i.e. posted) it must be released using - * ::evel_free_event. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_MEASUREMENT * evel_new_measurement(double measurement_interval); - -/**************************************************************************//** - * Free a Measurement. - * - * Free off the Measurement supplied. Will free all the contained allocated - * memory. - * - * @note It does not free the Measurement itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_measurement(EVENT_MEASUREMENT * event); - -/**************************************************************************//** - * Set the Event Type property of 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 type The Event Type to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_measurement_type_set(EVENT_MEASUREMENT * measurement, - const char * const type); - -/**************************************************************************//** - * Set the Concurrent Sessions property of 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 concurrent_sessions The Concurrent Sessions to be set. - *****************************************************************************/ -void evel_measurement_conc_sess_set(EVENT_MEASUREMENT * measurement, - int concurrent_sessions); - -/**************************************************************************//** - * Set the Configured Entities property of 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 configured_entities The Configured Entities to be set. - *****************************************************************************/ -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. - * - * @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 mean_request_latency The Mean Request Latency to be set. - *****************************************************************************/ -void evel_measurement_mean_req_lat_set(EVENT_MEASUREMENT * measurement, - double mean_request_latency); - -/**************************************************************************//** - * Set the Request Rate property of 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 request_rate The Request Rate to be set. - *****************************************************************************/ -void evel_measurement_request_rate_set(EVENT_MEASUREMENT * measurement, - int request_rate); - -/**************************************************************************//** - * Add an additional CPU usage 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 id ASCIIZ string with the CPU's identifier. - * @param usage CPU utilization. - *****************************************************************************/ -MEASUREMENT_CPU_USE * evel_measurement_new_cpu_use_add(EVENT_MEASUREMENT * measurement, char * id, double usage); - -/**************************************************************************//** - * Set the CPU Idle value in measurement interval - * percentage of CPU time spent in the idle task - * - * @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_idle_set(MEASUREMENT_CPU_USE *const cpu_use, - const double val); - -/**************************************************************************//** - * Set the percentage of time spent servicing interrupts - * - * @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_interrupt_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); - -/**************************************************************************//** - * Set the percentage of time spent running user space processes that have been niced - * - * @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_nice_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); - -/**************************************************************************//** - * Set the percentage of time spent handling soft irq interrupts - * - * @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_softirq_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); -/**************************************************************************//** - * Set the percentage of time spent in involuntary wait - * - * @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_steal_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); -/**************************************************************************//** - * Set the percentage of time spent on system tasks running the kernel - * - * @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_system_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); -/**************************************************************************//** - * Set the percentage of time spent running un-niced user space processes - * - * @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_usageuser_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); -/**************************************************************************//** - * Set the percentage of CPU time spent waiting for I/O operations to complete - * - * @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_wait_set(MEASUREMENT_CPU_USE * const cpu_use, - const double val); - -/**************************************************************************//** - * Add an additional File System usage value name/value pair to the - * Measurement. - * - * The filesystem_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 filesystem_name ASCIIZ string with the file-system's UUID. - * @param block_configured Block storage configured. - * @param block_used Block storage in use. - * @param block_iops Block storage IOPS. - * @param ephemeral_configured Ephemeral storage configured. - * @param ephemeral_used Ephemeral storage in use. - * @param ephemeral_iops Ephemeral storage IOPS. - *****************************************************************************/ -void evel_measurement_fsys_use_add(EVENT_MEASUREMENT * measurement, - char * filesystem_name, - double block_configured, - double block_used, - int block_iops, - double ephemeral_configured, - double ephemeral_used, - int ephemeral_iops); - -/**************************************************************************//** - * Add a Feature usage value name/value pair 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 feature ASCIIZ string with the feature's name. - * @param utilization Utilization of the feature. - *****************************************************************************/ -void evel_measurement_feature_use_add(EVENT_MEASUREMENT * measurement, - char * feature, - int utilization); - -/**************************************************************************//** - * Add a Additional Measurement value name/value pair 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 measurement's name. - * @param name 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); - -/**************************************************************************//** - * Add a Codec usage value name/value pair 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 codec ASCIIZ string with the codec's name. - * @param utilization Utilization of the feature. - *****************************************************************************/ -void evel_measurement_codec_use_add(EVENT_MEASUREMENT * measurement, - char * codec, - int utilization); - -/**************************************************************************//** - * Set the Media Ports in Use property of 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 media_ports_in_use The media port usage to set. - *****************************************************************************/ -void evel_measurement_media_port_use_set(EVENT_MEASUREMENT * measurement, - int media_ports_in_use); - -/**************************************************************************//** - * Set the VNFC Scaling Metric property of 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 scaling_metric The scaling metric to set. - *****************************************************************************/ -void evel_measurement_vnfc_scaling_metric_set(EVENT_MEASUREMENT * measurement, - int scaling_metric); - -/**************************************************************************//** - * Create a new Latency Bucket to be added to a Measurement event. - * - * @note The mandatory fields on the ::MEASUREMENT_LATENCY_BUCKET 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_LATENCY_BUCKET has - * immutable properties. - * - * @param count Count of events in this bucket. - * - * @returns pointer to the newly manufactured ::MEASUREMENT_LATENCY_BUCKET. - * @retval NULL Failed to create the Latency Bucket. - *****************************************************************************/ -MEASUREMENT_LATENCY_BUCKET * evel_new_meas_latency_bucket(const int count); - -/**************************************************************************//** - * Set the High End property of the Measurement Latency Bucket. - * - * @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 bucket Pointer to the Measurement Latency Bucket. - * @param high_end High end of the bucket's range. - *****************************************************************************/ -void evel_meas_latency_bucket_high_end_set( - MEASUREMENT_LATENCY_BUCKET * const bucket, - const double high_end); - -/**************************************************************************//** - * Set the Low End property of the Measurement Latency Bucket. - * - * @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 bucket Pointer to the Measurement Latency Bucket. - * @param low_end Low end of the bucket's range. - *****************************************************************************/ -void evel_meas_latency_bucket_low_end_set( - MEASUREMENT_LATENCY_BUCKET * const bucket, - const double low_end); - -/**************************************************************************//** - * Add an additional Measurement Latency Bucket to the specified event. - * - * @param measurement Pointer to the Measurement event. - * @param bucket Pointer to the Measurement Latency Bucket to add. - *****************************************************************************/ -void evel_meas_latency_bucket_add(EVENT_MEASUREMENT * const measurement, - MEASUREMENT_LATENCY_BUCKET * const bucket); - -/**************************************************************************//** - * Add an additional Latency Distribution bucket to the Measurement. - * - * This function implements the previous API, purely for convenience. - * - * @param measurement Pointer to the measurement. - * @param low_end Low end of the bucket's range. - * @param high_end High end of the bucket's range. - * @param count Count of events in this bucket. - *****************************************************************************/ -void evel_measurement_latency_add(EVENT_MEASUREMENT * const measurement, - const double low_end, - const double high_end, - const int count); - -/**************************************************************************//** - * Create a new vNIC Use to be added to a Measurement event. - * - * @note The mandatory fields on the ::MEASUREMENT_VNIC_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 - * properties. - * - * @param vnic_id ASCIIZ string with the vNIC's ID. - * @param val_suspect True or false confidence in data. - * - * @returns pointer to the newly manufactured ::MEASUREMENT_VNIC_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. - *****************************************************************************/ -MEASUREMENT_VNIC_PERFORMANCE * evel_measurement_new_vnic_performance(char * const vnic_id, char * const val_suspect); - -/**************************************************************************//** - * Free a vNIC Use. - * - * Free off the ::MEASUREMENT_VNIC_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 - * larger structure. - *****************************************************************************/ -void evel_measurement_free_vnic_performance(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance); - -/**************************************************************************//** - * Set the Accumulated Broadcast Packets Received in measurement interval - * property of the vNIC 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 recvd_bcast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_bcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_bcast_packets_acc); -/**************************************************************************//** - * Set the Delta Broadcast Packets Received in measurement interval - * property of the vNIC 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 recvd_bcast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_bcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_bcast_packets_delta); -/**************************************************************************//** - * Set the Discarded Packets Received in measurement interval - * property of the vNIC 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 recvd_discard_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_discard_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_discard_packets_acc); -/**************************************************************************//** - * Set the Delta Discarded Packets Received in measurement interval - * property of the vNIC 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 recvd_discard_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_discard_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_discard_packets_delta); -/**************************************************************************//** - * Set the Error Packets Received in measurement interval - * property of the vNIC 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 recvd_error_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_error_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_error_packets_acc); -/**************************************************************************//** - * Set the Delta Error Packets Received in measurement interval - * property of the vNIC 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 recvd_error_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_error_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_error_packets_delta); -/**************************************************************************//** - * Set the Accumulated Multicast Packets Received in measurement interval - * property of the vNIC 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 recvd_mcast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_mcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_mcast_packets_acc); -/**************************************************************************//** - * Set the Delta Multicast Packets Received in measurement interval - * property of the vNIC 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 recvd_mcast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_mcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_mcast_packets_delta); -/**************************************************************************//** - * Set the Accumulated Octets Received in measurement interval - * property of the vNIC 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 recvd_octets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_octets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_octets_acc); -/**************************************************************************//** - * Set the Delta Octets Received in measurement interval - * property of the vNIC 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 recvd_octets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_octets_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_octets_delta); -/**************************************************************************//** - * Set the Accumulated Total Packets Received in measurement interval - * property of the vNIC 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 recvd_total_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_total_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_total_packets_acc); -/**************************************************************************//** - * Set the Delta Total Packets Received in measurement interval - * property of the vNIC 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 recvd_total_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_total_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_total_packets_delta); -/**************************************************************************//** - * Set the Accumulated Unicast Packets Received in measurement interval - * property of the vNIC 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 recvd_ucast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_rx_ucast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_ucast_packets_acc); -/**************************************************************************//** - * Set the Delta Unicast packets Received in measurement interval - * property of the vNIC 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 recvd_ucast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_rx_ucast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double recvd_ucast_packets_delta); -/**************************************************************************//** - * Set the Transmitted Broadcast Packets in measurement interval - * property of the vNIC 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 tx_bcast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_bcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_bcast_packets_acc); -/**************************************************************************//** - * Set the Delta Broadcast packets Transmitted in measurement interval - * property of the vNIC 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 tx_bcast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_bcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_bcast_packets_delta); -/**************************************************************************//** - * Set the Transmitted Discarded Packets in measurement interval - * property of the vNIC 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 tx_discarded_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_discarded_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_discarded_packets_acc); -/**************************************************************************//** - * Set the Delta Discarded packets Transmitted in measurement interval - * property of the vNIC 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 tx_discarded_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_discarded_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_discarded_packets_delta); -/**************************************************************************//** - * Set the Transmitted Errored Packets in measurement interval - * property of the vNIC 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 tx_error_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_error_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_error_packets_acc); -/**************************************************************************//** - * Set the Delta Errored packets Transmitted in measurement interval - * property of the vNIC 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 tx_error_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_error_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_error_packets_delta); -/**************************************************************************//** - * Set the Transmitted Multicast Packets in measurement interval - * property of the vNIC 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 tx_mcast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_mcast_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_mcast_packets_acc); -/**************************************************************************//** - * Set the Delta Multicast packets Transmitted in measurement interval - * property of the vNIC 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 tx_mcast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_mcast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_mcast_packets_delta); -/**************************************************************************//** - * Set the Transmitted Octets in measurement interval - * property of the vNIC 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 tx_octets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_octets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_octets_acc); -/**************************************************************************//** - * Set the Delta Octets Transmitted in measurement interval - * property of the vNIC 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 tx_octets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_octets_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_octets_delta); -/**************************************************************************//** - * Set the Transmitted Total Packets in measurement interval - * property of the vNIC 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 tx_total_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_total_pkt_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_total_packets_acc); -/**************************************************************************//** - * Set the Delta Total Packets Transmitted in measurement interval - * property of the vNIC 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 tx_total_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_total_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_total_packets_delta); -/**************************************************************************//** - * Set the Transmitted Unicast Packets in measurement interval - * property of the vNIC 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 tx_ucast_packets_acc - *****************************************************************************/ -void evel_vnic_performance_tx_ucast_packets_acc_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_ucast_packets_acc); -/**************************************************************************//** - * Set the Delta Octets Transmitted in measurement interval - * property of the vNIC 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 tx_ucast_packets_delta - *****************************************************************************/ -void evel_vnic_performance_tx_ucast_pkt_delta_set(MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance, - const double tx_ucast_packets_delta); - -/**************************************************************************//** - * Add an additional vNIC Use to the specified Measurement event. - * - * @param measurement Pointer to the measurement. - * @param vnic_performance Pointer to the vNIC Use to add. - *****************************************************************************/ -void evel_meas_vnic_performance_add(EVENT_MEASUREMENT * const measurement, - MEASUREMENT_VNIC_PERFORMANCE * const vnic_performance); - -/**************************************************************************//** - * Add an additional vNIC usage record Measurement. - * - * This function implements the previous API, purely for convenience. - * - * The ID 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 vnic_id ASCIIZ string with the vNIC's ID. - * @param valset true or false confidence level - * @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 - * @param recvd_discarded_packets_delta Received discarded delta packets - * @param recvd_error_packets_acc Received error packets - * @param recvd_error_packets_delta, Received delta error packets - * @param recvd_mcast_packets_acc Received multicast packets - * @param recvd_mcast_packets_delta Received delta multicast packets - * @param recvd_octets_acc Received octets - * @param recvd_octets_delta Received delta octets - * @param recvd_total_packets_acc Received total packets - * @param recvd_total_packets_delta Received delta total packets - * @param recvd_ucast_packets_acc Received Unicast packets - * @param recvd_ucast_packets_delta Received delta unicast packets - * @param tx_bcast_packets_acc Transmitted broadcast packets - * @param tx_bcast_packets_delta Transmitted delta broadcast packets - * @param tx_discarded_packets_acc Transmitted packets discarded - * @param tx_discarded_packets_delta Transmitted delta discarded packets - * @param tx_error_packets_acc Transmitted error packets - * @param tx_error_packets_delta Transmitted delta error packets - * @param tx_mcast_packets_acc Transmitted multicast packets accumulated - * @param tx_mcast_packets_delta Transmitted delta multicast packets - * @param tx_octets_acc Transmitted octets - * @param tx_octets_delta Transmitted delta octets - * @param tx_total_packets_acc Transmitted total packets - * @param tx_total_packets_delta Transmitted delta total packets - * @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, - char * valset, - double recvd_bcast_packets_acc, - double recvd_bcast_packets_delta, - double recvd_discarded_packets_acc, - double recvd_discarded_packets_delta, - double recvd_error_packets_acc, - double recvd_error_packets_delta, - double recvd_mcast_packets_acc, - double recvd_mcast_packets_delta, - double recvd_octets_acc, - double recvd_octets_delta, - double recvd_total_packets_acc, - double recvd_total_packets_delta, - double recvd_ucast_packets_acc, - double recvd_ucast_packets_delta, - double tx_bcast_packets_acc, - double tx_bcast_packets_delta, - double tx_discarded_packets_acc, - double tx_discarded_packets_delta, - double tx_error_packets_acc, - double tx_error_packets_delta, - double tx_mcast_packets_acc, - double tx_mcast_packets_delta, - double tx_octets_acc, - double tx_octets_delta, - double tx_total_packets_acc, - double tx_total_packets_delta, - double tx_ucast_packets_acc, - double tx_ucast_packets_delta); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* REPORT */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new Report event. - * - * @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. - * - * @param measurement_interval - * - * @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. - *****************************************************************************/ -EVENT_REPORT * evel_new_report(double measurement_interval); - -/**************************************************************************//** - * Free a Report. - * - * Free off the Report supplied. Will free all the contained allocated memory. - * - * @note It does not free the Report itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_report(EVENT_REPORT * event); - -/**************************************************************************//** - * Set the Event Type property of the Report. - * - * @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. - *****************************************************************************/ -void evel_report_type_set(EVENT_REPORT * report, const char * const type); - -/**************************************************************************//** - * Add a Feature usage value name/value pair to the Report. - * - * 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 report Pointer to the report. - * @param feature ASCIIZ string with the feature's name. - * @param utilization Utilization of the feature. - *****************************************************************************/ -void evel_report_feature_use_add(EVENT_REPORT * report, - char * feature, - int utilization); - -/**************************************************************************//** - * Add a Additional Measurement value name/value pair to the Report. - * - * 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 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. - *****************************************************************************/ -void evel_report_custom_measurement_add(EVENT_REPORT * report, - const char * const group, - const char * const name, - const char * const value); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* MOBILE_FLOW */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new Mobile Flow event. - * - * @note The mandatory fields on the Mobile Flow 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 Mobile Flow has immutable properties. - * - * @param flow_direction - * @param gtp_per_flow_metrics - * @param ip_protocol_type - * @param ip_version - * @param other_endpoint_ip_address - * @param other_endpoint_port - * @param reporting_endpoint_ip_addr - * @param reporting_endpoint_port - * - * @returns pointer to the newly manufactured ::EVENT_MOBILE_FLOW. If the - * event is not used (i.e. posted) it must be released using - * ::evel_free_mobile_flow. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_MOBILE_FLOW * evel_new_mobile_flow( - const char * const flow_direction, - MOBILE_GTP_PER_FLOW_METRICS * gtp_per_flow_metrics, - const char * const ip_protocol_type, - const char * const ip_version, - const char * const other_endpoint_ip_address, - int other_endpoint_port, - const char * const reporting_endpoint_ip_addr, - int reporting_endpoint_port); - -/**************************************************************************//** - * Free a Mobile Flow. - * - * Free off the Mobile Flow supplied. Will free all the contained allocated - * memory. - * - * @note It does not free the Mobile Flow itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_mobile_flow(EVENT_MOBILE_FLOW * event); - -/**************************************************************************//** - * Set the Event Type property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @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_mobile_flow_type_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const type); - -/**************************************************************************//** - * Set the Application Type property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param type The Application Type to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_mobile_flow_app_type_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const type); - -/**************************************************************************//** - * Set the Application Protocol Type property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param type The Application Protocol Type to be set. ASCIIZ string. - * The caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_flow_app_prot_type_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const type); - -/**************************************************************************//** - * Set the Application Protocol Version property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param version The Application Protocol Version to be set. ASCIIZ - * string. The caller does not need to preserve the value - * once the function returns. - *****************************************************************************/ -void evel_mobile_flow_app_prot_ver_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const version); - -/**************************************************************************//** - * Set the CID property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param cid The CID to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_cid_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const cid); - -/**************************************************************************//** - * Set the Connection Type property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param type The Connection Type to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_mobile_flow_con_type_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const type); - -/**************************************************************************//** - * Set the ECGI property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param ecgi The ECGI to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_ecgi_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const ecgi); - -/**************************************************************************//** - * Set the GTP Protocol Type property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param type The GTP Protocol Type to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_flow_gtp_prot_type_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const type); - -/**************************************************************************//** - * Set the GTP Protocol Version property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param version The GTP Protocol Version to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_flow_gtp_prot_ver_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const version); - -/**************************************************************************//** - * Set the HTTP Header property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param header The HTTP header to be set. ASCIIZ string. The caller does - * not need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_http_header_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const header); - -/**************************************************************************//** - * Set the IMEI property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param imei The IMEI to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_imei_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const imei); - -/**************************************************************************//** - * Set the IMSI property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param imsi The IMSI to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_imsi_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const imsi); - -/**************************************************************************//** - * Set the LAC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param lac The LAC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_lac_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const lac); - -/**************************************************************************//** - * Set the MCC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param mcc The MCC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_mcc_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const mcc); - -/**************************************************************************//** - * Set the MNC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param mnc The MNC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_mnc_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const mnc); - -/**************************************************************************//** - * Set the MSISDN property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param msisdn The MSISDN to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_msisdn_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const msisdn); - -/**************************************************************************//** - * Set the Other Functional Role property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param role The Other Functional Role to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_flow_other_func_role_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const role); - -/**************************************************************************//** - * Set the RAC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param rac The RAC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_rac_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const rac); - -/**************************************************************************//** - * Set the Radio Access Technology property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param tech The Radio Access Technology to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_flow_radio_acc_tech_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const tech); - -/**************************************************************************//** - * Set the SAC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param sac The SAC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_sac_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const sac); - -/**************************************************************************//** - * Set the Sampling Algorithm property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param algorithm The Sampling Algorithm to be set. - *****************************************************************************/ -void evel_mobile_flow_samp_alg_set(EVENT_MOBILE_FLOW * mobile_flow, - int algorithm); - -/**************************************************************************//** - * Set the TAC property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param tac The TAC to be set. ASCIIZ string. The caller does not - * need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_tac_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const tac); - -/**************************************************************************//** - * Set the Tunnel ID property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param tunnel_id The Tunnel ID to be set. ASCIIZ string. The caller does - * not need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_tunnel_id_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const tunnel_id); - -/**************************************************************************//** - * Set the VLAN ID property of the Mobile Flow. - * - * @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 mobile_flow Pointer to the Mobile Flow. - * @param vlan_id The VLAN ID to be set. ASCIIZ string. The caller does - * not need to preserve the value once the function returns. - *****************************************************************************/ -void evel_mobile_flow_vlan_id_set(EVENT_MOBILE_FLOW * mobile_flow, - const char * const vlan_id); - -/**************************************************************************//** - * Create a new Mobile GTP Per Flow Metrics. - * - * @note The mandatory fields on the Mobile GTP Per Flow Metrics 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 Mobile GTP Per Flow Metrics has - * immutable properties. - * - * @param avg_bit_error_rate - * @param avg_packet_delay_variation - * @param avg_packet_latency - * @param avg_receive_throughput - * @param avg_transmit_throughput - * @param flow_activation_epoch - * @param flow_activation_microsec - * @param flow_deactivation_epoch - * @param flow_deactivation_microsec - * @param flow_deactivation_time - * @param flow_status - * @param max_packet_delay_variation - * @param num_activation_failures - * @param num_bit_errors - * @param num_bytes_received - * @param num_bytes_transmitted - * @param num_dropped_packets - * @param num_l7_bytes_received - * @param num_l7_bytes_transmitted - * @param num_lost_packets - * @param num_out_of_order_packets - * @param num_packet_errors - * @param num_packets_received_excl_retrans - * @param num_packets_received_incl_retrans - * @param num_packets_transmitted_incl_retrans - * @param num_retries - * @param num_timeouts - * @param num_tunneled_l7_bytes_received - * @param round_trip_time - * @param time_to_first_byte - * - * @returns pointer to the newly manufactured ::MOBILE_GTP_PER_FLOW_METRICS. - * If the structure is not used it must be released using - * ::evel_free_mobile_gtp_flow_metrics. - * @retval NULL Failed to create the event. - *****************************************************************************/ -MOBILE_GTP_PER_FLOW_METRICS * evel_new_mobile_gtp_flow_metrics( - double avg_bit_error_rate, - double avg_packet_delay_variation, - int avg_packet_latency, - int avg_receive_throughput, - int avg_transmit_throughput, - int flow_activation_epoch, - int flow_activation_microsec, - int flow_deactivation_epoch, - int flow_deactivation_microsec, - time_t flow_deactivation_time, - const char * const flow_status, - int max_packet_delay_variation, - int num_activation_failures, - int num_bit_errors, - int num_bytes_received, - int num_bytes_transmitted, - int num_dropped_packets, - int num_l7_bytes_received, - int num_l7_bytes_transmitted, - int num_lost_packets, - int num_out_of_order_packets, - int num_packet_errors, - int num_packets_received_excl_retrans, - int num_packets_received_incl_retrans, - int num_packets_transmitted_incl_retrans, - int num_retries, - int num_timeouts, - int num_tunneled_l7_bytes_received, - int round_trip_time, - int time_to_first_byte); - -/**************************************************************************//** - * Free a Mobile GTP Per Flow Metrics. - * - * Free off the Mobile GTP Per Flow Metrics supplied. Will free all the - * contained allocated memory. - * - * @note It does not free the Mobile GTP Per Flow Metrics itself, since that - * may be part of a larger structure. - *****************************************************************************/ -void evel_free_mobile_gtp_flow_metrics(MOBILE_GTP_PER_FLOW_METRICS * metrics); - -/**************************************************************************//** - * Set the Duration of Connection Failed Status property of the Mobile GTP Per - * Flow 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 duration The Duration of Connection Failed Status to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_dur_con_fail_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int duration); - -/**************************************************************************//** - * Set the Duration of Tunnel Failed Status property of the Mobile GTP Per Flow - * 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 duration The Duration of Tunnel Failed Status to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_dur_tun_fail_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int duration); - -/**************************************************************************//** - * Set the Activated By property of the Mobile GTP Per Flow 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 act_by The Activated By to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_mobile_gtp_metrics_act_by_set(MOBILE_GTP_PER_FLOW_METRICS * metrics, - const char * const act_by); - -/**************************************************************************//** - * Set the Activation Time property of the Mobile GTP Per Flow 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 act_time The Activation Time to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_mobile_gtp_metrics_act_time_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - time_t act_time); - -/**************************************************************************//** - * Set the Deactivated By property of the Mobile GTP Per Flow 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 deact_by The Deactivated By to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_mobile_gtp_metrics_deact_by_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - const char * const deact_by); - -/**************************************************************************//** - * Set the GTP Connection Status property of the Mobile GTP Per Flow 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 status The GTP Connection Status to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_mobile_gtp_metrics_con_status_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - const char * const status); - -/**************************************************************************//** - * Set the GTP Tunnel Status property of the Mobile GTP Per Flow 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 status The GTP Tunnel Status to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -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 - * 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 rtt The Large Packet Round-Trip Time to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_large_pkt_rtt_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int rtt); - -/**************************************************************************//** - * Set the Large Packet Threshold property of the Mobile GTP Per Flow 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 threshold The Large Packet Threshold to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_large_pkt_thresh_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - double threshold); - -/**************************************************************************//** - * Set the Max Receive Bit Rate property of the Mobile GTP Per Flow 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 rate The Max Receive Bit Rate to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_max_rcv_bit_rate_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int rate); - -/**************************************************************************//** - * Set the Max Transmit Bit Rate property of the Mobile GTP Per Flow 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 rate The Max Transmit Bit Rate to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_max_trx_bit_rate_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int rate); - -/**************************************************************************//** - * Set the Number of GTP Echo Failures property of the Mobile GTP Per Flow - * 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 num The Number of GTP Echo Failures to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_num_echo_fail_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int num); - -/**************************************************************************//** - * Set the Number of GTP Tunnel Errors property of the Mobile GTP Per Flow - * 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 num The Number of GTP Tunnel Errors to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_num_tun_fail_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int num); - -/**************************************************************************//** - * Set the Number of HTTP Errors property of the Mobile GTP Per Flow 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 num The Number of HTTP Errors to be set. - *****************************************************************************/ -void evel_mobile_gtp_metrics_num_http_errors_set( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - int num); - -/**************************************************************************//** - * Add a TCP flag count 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. - *****************************************************************************/ -void evel_mobile_gtp_metrics_tcp_flag_count_add( - MOBILE_GTP_PER_FLOW_METRICS * metrics, - const EVEL_TCP_FLAGS tcp_flag, - const int count); - -/**************************************************************************//** - * Add a QCI COS count 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. - *****************************************************************************/ -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); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* SIGNALING */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new Signaling event. - * - * @note The mandatory fields on the Signaling 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 vendor_name The vendor id to encode in the event vnf field. - * @param module The module to encode in the event. - * @param vnfname The Virtual network function to encode in the event. - * @returns pointer to the newly manufactured ::EVENT_SIGNALING. If the event - * is not used (i.e. posted) it must be released using - * ::evel_free_signaling. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_SIGNALING * evel_new_signaling(const char * const vendor_name, - const char * const correlator, - const char * const local_ip_address, - const char * const local_port, - const char * const remote_ip_address, - const char * const remote_port); - -/**************************************************************************//** - * Free a Signaling 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_signaling(EVENT_SIGNALING * const event); - -/**************************************************************************//** - * Set the Event Type property of the Signaling 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 Signaling event. - * @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_signaling_type_set(EVENT_SIGNALING * const event, - const char * const type); - -/**************************************************************************//** - * Add an additional value name/value pair to the SIP signaling. - * - * 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 fault. - * @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_signaling_addl_info_add(EVENT_SIGNALING * event, char * name, char * value); - -/**************************************************************************//** - * Set the Correlator property of the Signaling 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 Signaling event. - * @param correlator The correlator to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_correlator_set(EVENT_SIGNALING * const event, - const char * const correlator); - -/**************************************************************************//** - * Set the Local Ip Address property of the Signaling 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 Signaling event. - * @param local_ip_address - * The Local Ip Address to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_signaling_local_ip_address_set(EVENT_SIGNALING * const event, - const char * const local_ip_address); - -/**************************************************************************//** - * Set the Local Port property of the Signaling 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 Signaling event. - * @param local_port The Local Port to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_local_port_set(EVENT_SIGNALING * const event, - const char * const local_port); - -/**************************************************************************//** - * Set the Remote Ip Address property of the Signaling 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 Signaling event. - * @param remote_ip_address - * The Remote Ip Address to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_signaling_remote_ip_address_set(EVENT_SIGNALING * const event, - const char * const remote_ip_address); - -/**************************************************************************//** - * Set the Remote Port property of the Signaling 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 Signaling event. - * @param remote_port The Remote Port to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_remote_port_set(EVENT_SIGNALING * const event, - const char * const remote_port); -/**************************************************************************//** - * Set the Vendor module property of the Signaling 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 Signaling event. - * @param modulename The module name to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_vnfmodule_name_set(EVENT_SIGNALING * const event, - const char * const module_name); -/**************************************************************************//** - * Set the Vendor module property of the Signaling 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 Signaling event. - * @param vnfname The Virtual Network function to be set. ASCIIZ string. - * The caller does not need to preserve the value once - * the function returns. - *****************************************************************************/ -void evel_signaling_vnfname_set(EVENT_SIGNALING * const event, - const char * const vnfname); - -/**************************************************************************//** - * Set the Compressed SIP property of the Signaling 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 Signaling event. - * @param compressed_sip - * The Compressed SIP to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_compressed_sip_set(EVENT_SIGNALING * const event, - const char * const compressed_sip); - -/**************************************************************************//** - * Set the Summary SIP property of the Signaling 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 Signaling event. - * @param summary_sip The Summary SIP to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_signaling_summary_sip_set(EVENT_SIGNALING * const event, - const char * const summary_sip); - - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* STATE CHANGE */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new State Change 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 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_STATE_CHANGE. If the - * event is not used it must be released using - * ::evel_free_state_change - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_STATE_CHANGE * evel_new_state_change(const EVEL_ENTITY_STATE new_state, - const EVEL_ENTITY_STATE old_state, - const char * const interface); - -/**************************************************************************//** - * Free a State Change. - * - * Free off the State Change supplied. Will free all the contained allocated - * memory. - * - * @note It does not free the State Change itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_state_change(EVENT_STATE_CHANGE * const state_change); - -/**************************************************************************//** - * Set the Event Type property of the State Change. - * - * @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 state_change Pointer to the ::EVENT_STATE_CHANGE. - * @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_state_change_type_set(EVENT_STATE_CHANGE * const state_change, - const char * const type); - -/**************************************************************************//** - * Add an additional field name/value pair to the State Change. - * - * 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 state_change Pointer to the ::EVENT_STATE_CHANGE. - * @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_state_change_addl_field_add(EVENT_STATE_CHANGE * const state_change, - const char * const name, - const char * const value); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* SYSLOG */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new syslog 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_source_type - * @param syslog_msg - * @param syslog_tag - * @param version - * - * @returns pointer to the newly manufactured ::EVENT_SYSLOG. If the event is - * not used it must be released using ::evel_free_syslog - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_SYSLOG * evel_new_syslog(EVEL_SOURCE_TYPES event_source_type, - const char * const syslog_msg, - const char * const syslog_tag); - -/**************************************************************************//** - * Set the Event Type property 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 type The Event Type to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_syslog_type_set(EVENT_SYSLOG * syslog, - const char * const type); - -/**************************************************************************//** - * Free a Syslog. - * - * Free off the Syslog supplied. Will free all the contained allocated memory. - * - * @note It does not free the Syslog itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_syslog(EVENT_SYSLOG * event); - -/**************************************************************************//** - * Add an additional field 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_field_add(EVENT_SYSLOG * syslog, - char * name, - char * value); - -/**************************************************************************//** - * Set the Event Source Host property 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 host The Event Source Host to be set. ASCIIZ string. The - * caller does not need to preserve the value once the - * function returns. - *****************************************************************************/ -void evel_syslog_event_source_host_set(EVENT_SYSLOG * syslog, - const char * const host); - -/**************************************************************************//** - * Set the Syslog Facility property 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 facility The Syslog Facility to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_syslog_facility_set(EVENT_SYSLOG * syslog, - EVEL_SYSLOG_FACILITIES facility); - -/**************************************************************************//** - * Set the Process property 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 proc The Process to be set. ASCIIZ string. The caller does - * not need to preserve the value once the function returns. - *****************************************************************************/ -void evel_syslog_proc_set(EVENT_SYSLOG * syslog, const char * const proc); - -/**************************************************************************//** - * Set the Process ID property 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 proc_id The Process ID to be set. - *****************************************************************************/ -void evel_syslog_proc_id_set(EVENT_SYSLOG * syslog, int proc_id); - -/**************************************************************************//** - * Set the Version property 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 version The Version to be set. - *****************************************************************************/ -void evel_syslog_version_set(EVENT_SYSLOG * syslog, int version); - -/**************************************************************************//** - * Set the Structured Data property 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 s_data The Structured Data to be set. ASCIIZ string. The caller - * does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_syslog_s_data_set(EVENT_SYSLOG * syslog, const char * const s_data); - -/**************************************************************************//** - * Set the Structured SDID property 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 sdid The Structured Data to be set. ASCIIZ string. name@number - * Caller does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_syslog_sdid_set(EVENT_SYSLOG * syslog, const char * const sdid); - -/**************************************************************************//** - * Set the Structured Severity property 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 sdid The Structured Data to be set. ASCIIZ string. - * Caller does not need to preserve the value once the function - * returns. - *****************************************************************************/ -void evel_syslog_severity_set(EVENT_SYSLOG * syslog, const char * const severty); - - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* OTHER */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Create a new other event. - * - * - * @returns pointer to the newly manufactured ::EVENT_OTHER. If the event is - * not used it must be released using ::evel_free_other. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_OTHER * evel_new_other(void); - -/**************************************************************************//** - * Free an Other. - * - * Free off the Other supplied. Will free all the contained allocated memory. - * - * @note It does not free the Other itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_other(EVENT_OTHER * event); - -/**************************************************************************//** - * Set the Event Type property of the Other. - * - * @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 other Pointer to the Other. - * @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_other_type_set(EVENT_OTHER * other, - const char * const type); - -/**************************************************************************//** - * Add a value name/value pair to the 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_field_add(EVENT_OTHER * other, - char * name, - char * value); - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* THROTTLING */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/**************************************************************************//** - * Return the current measurement interval provided by the Event Listener. - * - * @returns The current measurement interval - * @retval EVEL_MEASUREMENT_INTERVAL_UKNOWN (0) - interval has not been - * specified - *****************************************************************************/ -int evel_get_measurement_interval(); - -/*****************************************************************************/ -/* Supported Report version. */ -/*****************************************************************************/ -#define EVEL_VOICEQ_MAJOR_VERSION 1 -#define EVEL_VOICEQ_MINOR_VERSION 1 - -/**************************************************************************//** -* Voice QUality. -* JSON equivalent field: voiceQualityFields -*****************************************************************************/ - -typedef struct event_voiceQuality { - /***************************************************************************/ - /* Header and version */ - /***************************************************************************/ - EVENT_HEADER header; - int major_version; - int minor_version; - - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - - char *calleeSideCodec; - char *callerSideCodec; - char *correlator; - char *midCallRtcp; - VENDOR_VNFNAME_FIELD vendorVnfNameFields; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_STRING phoneNumber; - DLIST additionalInformation; - DLIST endOfCallVqmSummaries; - -} EVENT_VOICE_QUALITY; - -/**************************************************************************//** - * End of Call Voice Quality Metrices - * JSON equivalent field: endOfCallVqmSummaries - *****************************************************************************/ -typedef struct end_of_call_vqm_summaries { - /***************************************************************************/ - /* Mandatory fields */ - /***************************************************************************/ - char* adjacencyName; - char* endpointDescription; - - /***************************************************************************/ - /* Optional fields */ - /***************************************************************************/ - EVEL_OPTION_INT endpointJitter; - 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 localRtpOctetsDiscarded; - EVEL_OPTION_INT localRtpOctetsReceived; - EVEL_OPTION_INT localRtpOctetsSent; - EVEL_OPTION_INT localRtpPacketsDiscarded; - EVEL_OPTION_INT localRtpPacketsReceived; - EVEL_OPTION_INT localRtpPacketsSent; - EVEL_OPTION_INT mosCqe; - EVEL_OPTION_INT packetsLost; - EVEL_OPTION_INT packetLossPercent; - EVEL_OPTION_INT rFactor; - EVEL_OPTION_INT roundTripDelay; - -} END_OF_CALL_VOICE_QUALITY_METRICS; - -/**************************************************************************//** - * 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. - * - * @note The mandatory fields on the Voice Quality 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 Voice Quality has immutable properties. - * @param calleeSideCodec Callee codec for the call. - * @param callerSideCodec Caller codec for the call. - * @param correlator Constant across all events on this call. - * @param midCallRtcp Base64 encoding of the binary RTCP data - * (excluding Eth/IP/UDP headers). - * @param vendorVnfNameFields Vendor, VNF and VfModule names. - * @returns pointer to the newly manufactured ::EVENT_VOICE_QUALITY. If the - * event is not used (i.e. posted) it must be released using - ::evel_free_voice_quality. - * @retval NULL Failed to create the event. - *****************************************************************************/ -EVENT_VOICE_QUALITY * evel_new_voice_quality(const char * const calleeSideCodec, - const char * const callerSideCodec, const char * const correlator, - const char * const midCallRtcp, const char * const vendorVnfNameFields); - -/**************************************************************************//** - * Set the Callee side codec for Call 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 Callee Side Codec to be set. ASCIIZ - * string. The caller does not need to - * preserve the value once the function - * returns. - *****************************************************************************/ -void evel_voice_quality_callee_codec_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const calleeCodecForCall); - -/**************************************************************************//** - * Set the Caller side codec for Call 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 callerCodecForCall The Caller Side Codec to be set. ASCIIZ - * string. The caller does not need to - * preserve the value once the function - * returns. - *****************************************************************************/ -void evel_voice_quality_caller_codec_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const callerCodecForCall); - -/**************************************************************************//** - * Set 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 correlator The correlator value to be set. ASCIIZ - * string. The caller does not need to - * preserve the value once the function - * returns. - *****************************************************************************/ -void evel_voice_quality_correlator_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const vCorrelator); - -/**************************************************************************//** - * Set the RTCP Call Data 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 rtcpCallData The RTCP Call Data to be set. ASCIIZ - * string. The caller does not need to - * preserve the value once the function - * returns. - *****************************************************************************/ -void evel_voice_quality_rtcp_data_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const rtcpCallData); - -/**************************************************************************//** - * 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 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. - *****************************************************************************/ -void evel_voice_quality_name_fields_set(EVENT_VOICE_QUALITY * voiceQuality, - const char * const nameFields); - -/**************************************************************************//** - * Add an End of Call Voice Quality Metrices - - * The adjacencyName and endpointDescription is null delimited ASCII string. - * The library takes a copy so the caller does not have to preserve values - * 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 - *****************************************************************************/ -void evel_voice_quality_end_metrics_add(EVENT_VOICE_QUALITY * voiceQuality, - const char * adjacencyName, EVEL_SERVICE_ENDPOINT_DESC endpointDescription, - int endpointJitter, - int endpointRtpOctetsDiscarded, - int endpointRtpOctetsReceived, - int endpointRtpOctetsSent, - int endpointRtpPacketsDiscarded, - int endpointRtpPacketsReceived, - int endpointRtpPacketsSent, - int localJitter, - int localRtpOctetsDiscarded, - int localRtpOctetsReceived, - int localRtpOctetsSent, - int localRtpPacketsDiscarded, - int localRtpPacketsReceived, - int localRtpPacketsSent, - int mosCqe, - int packetsLost, - int packetLossPercent, - int rFactor, - int roundTripDelay); - -/**************************************************************************//** - * Free a Voice Quality. - * - * Free off the Voce Quality supplied. Will free all the contained allocated - * memory. - * - * @note It does not free the Voice Quality itself, since that may be part of a - * larger structure. - *****************************************************************************/ -void evel_free_voice_quality(EVENT_VOICE_QUALITY * voiceQuality); - -/**************************************************************************//** - * Add an additional value name/value pair to the Voice Quality. - * - * 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 fault. - * @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_voice_quality_addl_info_add(EVENT_VOICE_QUALITY * voiceQuality, char * name, char * value); - - -/*****************************************************************************/ -/*****************************************************************************/ -/* */ -/* LOGGING */ -/* */ -/*****************************************************************************/ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Debug macros. */ -/*****************************************************************************/ -#define EVEL_DEBUG(FMT, ...) log_debug(EVEL_LOG_DEBUG, (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, \ - ##__VA_ARGS__) -#define EVEL_ENTER() \ - { \ - log_debug(EVEL_LOG_DEBUG, "Enter %s {", __FUNCTION__); \ - debug_indent += 2; \ - } -#define EVEL_EXIT() \ - { \ - debug_indent -= 2; \ - log_debug(EVEL_LOG_DEBUG, "Exit %s }", __FUNCTION__); \ - } - -#define INDENT_SEPARATORS \ - "| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | " - -extern EVEL_LOG_LEVELS debug_level; -extern int debug_indent; -extern FILE * fout; - -#define EVEL_DEBUG_ON() ((debug_level) >= EVEL_LOG_DEBUG) - -/**************************************************************************//** - * Initialize logging - * - * @param[in] level The debugging level - one of ::EVEL_LOG_LEVELS. - * @param[in] ident The identifier for our logs. - *****************************************************************************/ -void log_initialize(EVEL_LOG_LEVELS level, const char * ident); - -/**************************************************************************//** - * Log debug information - * - * Logs debugging information in a platform independent manner. - * - * @param[in] level The debugging level - one of ::EVEL_LOG_LEVELS. - * @param[in] format Log formatting string in printf format. - * @param[in] ... Variable argument list. - *****************************************************************************/ -void log_debug(EVEL_LOG_LEVELS level, char * format, ...); - -/***************************************************************************//* - * Store the formatted string into the static error string and log the error. - * - * @param format Error string in standard printf format. - * @param ... Variable parameters to be substituted into the format string. - *****************************************************************************/ -void log_error_state(char * format, ...); - -#ifdef __cplusplus -} -#endif - -#endif - |