123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- /*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 2007 - 2008, Digium, Inc.
- *
- * Russell Bryant <russell@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
- /*!
- * \file
- * \author Russell Bryant <russell@digium.com>
- * \brief Generic event system
- */
- #ifndef AST_EVENT_DEFS_H
- #define AST_EVENT_DEFS_H
- enum ast_event_type {
- /*! Reserved to provide the ability to subscribe to all events. A specific
- * event should never have a payload of 0. */
- AST_EVENT_ALL = 0x00,
- /*! This event type is reserved for use by third-party modules to create
- * custom events without having to modify this file.
- * \note There are no "custom" IE types, because IEs only have to be
- * unique to the event itself, not necessarily across all events. */
- AST_EVENT_CUSTOM = 0x01,
- /*! Voicemail message waiting indication */
- AST_EVENT_MWI = 0x02,
- /*! Someone has subscribed to events */
- AST_EVENT_SUB = 0x03,
- /*! Someone has unsubscribed from events */
- AST_EVENT_UNSUB = 0x04,
- /*! The aggregate state of a device across all servers configured to be
- * a part of a device state cluster has changed. */
- AST_EVENT_DEVICE_STATE = 0x05,
- /*! The state of a device has changed on _one_ server. This should not be used
- * directly, in general. Use AST_EVENT_DEVICE_STATE instead. */
- AST_EVENT_DEVICE_STATE_CHANGE = 0x06,
- /*! Channel Event Logging events */
- AST_EVENT_CEL = 0x07,
- /*! A report of a security related event (see security_events.h) */
- AST_EVENT_SECURITY = 0x08,
- /*! Used by res_stun_monitor to alert listeners to an exernal network address change. */
- AST_EVENT_NETWORK_CHANGE = 0x09,
- /*! The presence state for a presence provider */
- AST_EVENT_PRESENCE_STATE = 0x0a,
- /*! Used to alert listeners when a named ACL has changed. */
- AST_EVENT_ACL_CHANGE = 0x0b,
- /*! Send out a ping for debugging distributed events */
- AST_EVENT_PING = 0x0c,
- /*! A cluster discovery message */
- AST_EVENT_CLUSTER_DISCOVERY = 0x0d,
- /*! Number of event types. This should be the last event type + 1 */
- AST_EVENT_TOTAL = 0x0e,
- };
- /*! \brief Event Information Element types */
- enum ast_event_ie_type {
- /*! Used to terminate the arguments to event functions */
- AST_EVENT_IE_END = -1,
- /*!
- * \brief Number of new messages
- * Used by: AST_EVENT_MWI
- * Payload type: UINT
- */
- AST_EVENT_IE_NEWMSGS = 0x0001,
- /*!
- * \brief Number of
- * Used by: AST_EVENT_MWI
- * Payload type: UINT
- */
- AST_EVENT_IE_OLDMSGS = 0x0002,
- /*!
- * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim
- * Used by: AST_EVENT_MWI
- * Payload type: STR
- */
- AST_EVENT_IE_MAILBOX = 0x0003,
- /*!
- * \brief Unique ID
- * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
- * Payload type: UINT
- */
- AST_EVENT_IE_UNIQUEID = 0x0004,
- /*!
- * \brief Event type
- * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
- * Payload type: UINT
- */
- AST_EVENT_IE_EVENTTYPE = 0x0005,
- /*!
- * \brief Hint that someone cares that an IE exists
- * Used by: AST_EVENT_SUB
- * Payload type: UINT (ast_event_ie_type)
- */
- AST_EVENT_IE_EXISTS = 0x0006,
- /*!
- * \brief Device Name
- * Used by AST_EVENT_DEVICE_STATE_CHANGE
- * Payload type: STR
- */
- AST_EVENT_IE_DEVICE = 0x0007,
- /*!
- * \brief Generic State IE
- * Used by AST_EVENT_DEVICE_STATE_CHANGE
- * Payload type: UINT
- * The actual state values depend on the event which
- * this IE is a part of.
- */
- AST_EVENT_IE_STATE = 0x0008,
- /*!
- * \brief Context IE
- * Used by AST_EVENT_MWI
- * Payload type: str
- */
- AST_EVENT_IE_CONTEXT = 0x0009,
- /*!
- * \brief Channel Event Type
- * Used by: AST_EVENT_CEL
- * Payload type: UINT
- */
- AST_EVENT_IE_CEL_EVENT_TYPE = 0x000a,
- /*!
- * \brief Channel Event Time (seconds)
- * Used by: AST_EVENT_CEL
- * Payload type: UINT
- */
- AST_EVENT_IE_CEL_EVENT_TIME = 0x000b,
- /*!
- * \brief Channel Event Time (micro-seconds)
- * Used by: AST_EVENT_CEL
- * Payload type: UINT
- */
- AST_EVENT_IE_CEL_EVENT_TIME_USEC = 0x000c,
- /*!
- * \brief Channel Event User Event Name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_USEREVENT_NAME = 0x000d,
- /*!
- * \brief Channel Event CID name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CIDNAME = 0x000e,
- /*!
- * \brief Channel Event CID num
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CIDNUM = 0x000f,
- /*!
- * \brief Channel Event extension name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_EXTEN = 0x0010,
- /*!
- * \brief Channel Event context name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CONTEXT = 0x0011,
- /*!
- * \brief Channel Event channel name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CHANNAME = 0x0012,
- /*!
- * \brief Channel Event app name
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_APPNAME = 0x0013,
- /*!
- * \brief Channel Event app args/data
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_APPDATA = 0x0014,
- /*!
- * \brief Channel Event AMA flags
- * Used by: AST_EVENT_CEL
- * Payload type: UINT
- */
- AST_EVENT_IE_CEL_AMAFLAGS = 0x0015,
- /*!
- * \brief Channel Event AccountCode
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_ACCTCODE = 0x0016,
- /*!
- * \brief Channel Event UniqueID
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_UNIQUEID = 0x0017,
- /*!
- * \brief Channel Event Userfield
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_USERFIELD = 0x0018,
- /*!
- * \brief Channel Event CID ANI field
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CIDANI = 0x0019,
- /*!
- * \brief Channel Event CID RDNIS field
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CIDRDNIS = 0x001a,
- /*!
- * \brief Channel Event CID dnid
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_CIDDNID = 0x001b,
- /*!
- * \brief Channel Event Peer -- for Things involving multiple channels, like BRIDGE
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_PEER = 0x001c,
- /*!
- * \brief Channel Event LinkedID
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_LINKEDID = 0x001d,
- /*!
- * \brief Channel Event peeraccount
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_PEERACCT = 0x001e,
- /*!
- * \brief Channel Event extra data
- * Used by: AST_EVENT_CEL
- * Payload type: STR
- */
- AST_EVENT_IE_CEL_EXTRA = 0x001f,
- /*!
- * \brief Description
- * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
- * Payload type: STR
- */
- AST_EVENT_IE_DESCRIPTION = 0x0020,
- /*!
- * \brief Entity ID
- * Used by All events
- * Payload type: RAW
- * This IE indicates which server the event originated from
- */
- AST_EVENT_IE_EID = 0x0021,
- AST_EVENT_IE_SECURITY_EVENT = 0x0022,
- AST_EVENT_IE_EVENT_VERSION = 0x0023,
- AST_EVENT_IE_SERVICE = 0x0024,
- AST_EVENT_IE_MODULE = 0x0025,
- AST_EVENT_IE_ACCOUNT_ID = 0x0026,
- AST_EVENT_IE_SESSION_ID = 0x0027,
- AST_EVENT_IE_SESSION_TV = 0x0028,
- AST_EVENT_IE_ACL_NAME = 0x0029,
- AST_EVENT_IE_LOCAL_ADDR = 0x002a,
- AST_EVENT_IE_REMOTE_ADDR = 0x002b,
- AST_EVENT_IE_EVENT_TV = 0x002c,
- AST_EVENT_IE_REQUEST_TYPE = 0x002d,
- AST_EVENT_IE_REQUEST_PARAMS = 0x002e,
- AST_EVENT_IE_AUTH_METHOD = 0x002f,
- AST_EVENT_IE_SEVERITY = 0x0030,
- AST_EVENT_IE_EXPECTED_ADDR = 0x0031,
- AST_EVENT_IE_CHALLENGE = 0x0032,
- AST_EVENT_IE_RESPONSE = 0x0033,
- AST_EVENT_IE_EXPECTED_RESPONSE = 0x0034,
- AST_EVENT_IE_RECEIVED_CHALLENGE = 0x0035,
- AST_EVENT_IE_RECEIVED_HASH = 0x0036,
- AST_EVENT_IE_USING_PASSWORD = 0x0037,
- AST_EVENT_IE_ATTEMPTED_TRANSPORT = 0x0038,
- AST_EVENT_IE_PRESENCE_PROVIDER = 0x0039,
- AST_EVENT_IE_PRESENCE_STATE = 0x003a,
- AST_EVENT_IE_PRESENCE_SUBTYPE = 0x003b,
- AST_EVENT_IE_PRESENCE_MESSAGE = 0x003c,
- /*!
- * \brief Event non-cachability flag
- * Used by: All events
- * Payload type: UINT
- */
- AST_EVENT_IE_CACHABLE = 0x003d,
- /*!
- * \brief Cluster node ID
- * Used by: Corosync
- * Payload type: UINT
- */
- AST_EVENT_IE_NODE_ID = 0x003e,
- /*! \brief Must be the last IE value +1 */
- AST_EVENT_IE_TOTAL = 0x003f,
- };
- /*!
- * \brief Payload types for event information elements
- */
- enum ast_event_ie_pltype {
- AST_EVENT_IE_PLTYPE_UNKNOWN = -1,
- /*! Just check if it exists, not the value */
- AST_EVENT_IE_PLTYPE_EXISTS,
- /*! Unsigned Integer (Can be used for signed, too ...) */
- AST_EVENT_IE_PLTYPE_UINT,
- /*! String */
- AST_EVENT_IE_PLTYPE_STR,
- /*! Raw data, compared with memcmp */
- AST_EVENT_IE_PLTYPE_RAW,
- /*! Bit flags (unsigned integer, compared using boolean logic) */
- AST_EVENT_IE_PLTYPE_BITFLAGS,
- };
- /*!
- * \brief Results for checking for subscribers
- *
- * \ref ast_event_check_subscriber()
- */
- enum ast_event_subscriber_res {
- /*! No subscribers exist */
- AST_EVENT_SUB_NONE,
- /*! At least one subscriber exists */
- AST_EVENT_SUB_EXISTS,
- };
- struct ast_event;
- struct ast_event_ie;
- struct ast_event_iterator;
- /*!
- * \brief supposed to be an opaque type
- *
- * This is only here so that it can be declared on the stack.
- */
- struct ast_event_iterator {
- uint16_t event_len;
- const struct ast_event *event;
- struct ast_event_ie *ie;
- };
- #endif /* AST_EVENT_DEFS_H */
|