aboutsummaryrefslogtreecommitdiffstats
path: root/VES5.0/evel/evel-library/code/evel_library/evel.h
diff options
context:
space:
mode:
authorMarco Platania <platania@research.att.com>2017-05-18 11:09:08 -0400
committerMarco Platania <platania@research.att.com>2017-05-18 11:09:08 -0400
commitfee6de844f9d4c3aad87733734d35df50117b6b0 (patch)
tree3f42567107ac4a10795c8e80c42b479c4502cbda /VES5.0/evel/evel-library/code/evel_library/evel.h
parentf3fe765461685a753c0f5b061c5c47383c75829f (diff)
Change location of VES5.0 code
Change-Id: If8a1173813eb4d5c14c04b132269696a748505e7 Signed-off-by: Marco Platania <platania@research.att.com>
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.h4204
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
-