/*!
* \internal
* \brief Determine if sig_pri handles the signaling.
- * \since 1.6.3
+ * \since 1.8
*
* \param signaling Signaling to determine if is for sig_pri.
*
/*!
* \internal
* \brief Set the caller id information.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt DAHDI private structure
* \param caller Caller-id information to set.
/*!
* \internal
* \brief Set the Dialed Number Identifier.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt DAHDI private structure
* \param dnid Dialed Number Identifier string.
/*!
* \internal
* \brief Set the Redirecting Directory Number Information Service (RDNIS).
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt DAHDI private structure
* \param rdnis Redirecting Directory Number Information Service (RDNIS) string.
/*!
* \internal
* \brief Insert the given chan_dahdi interface structure into the interface list.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt chan_dahdi private interface structure to insert.
*
/*!
* \internal
* \brief Extract the given chan_dahdi interface structure from the interface list.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt chan_dahdi private interface structure to extract.
*
/*!
* \internal
* \brief Insert the given chan_dahdi interface structure into the no B channel list.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri span control structure holding no B channel list.
* \param pvt chan_dahdi private interface structure to insert.
/*!
* \internal
* \brief Extract the given chan_dahdi interface structure from the no B channel list.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri span control structure holding no B channel list.
* \param pvt chan_dahdi private interface structure to extract.
/*!
* \internal
* \brief Unlink the channel interface from the PRI private pointer array.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt chan_dahdi private interface structure to unlink.
*
/*!
* \internal
* \brief Create a no B channel interface.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri span controller to add interface.
*
/*!
* \internal
* \brief Determine if the given dialed party matches our MSN.
- * \since 1.6.3
+ * \since 1.8
*
* \param port ISDN port
* \param dialed Dialed party information of incoming call.
/*!
* \brief Delete the analog private structure.
- * \since 1.6.3
+ * \since 1.8
*
* \param doomed Analog private structure to delete.
*
/*!
* \internal
* \brief Set the caller id information in the parent module.
- * \since 1.6.3
+ * \since 1.8
*
* \param p sig_pri channel structure.
*
/*!
* \internal
* \brief Set the Dialed Number Identifier.
- * \since 1.6.3
+ * \since 1.8
*
* \param p sig_pri channel structure.
* \param dnid Dialed Number Identifier string.
/*!
* \internal
* \brief Set the Redirecting Directory Number Information Service (RDNIS).
- * \since 1.6.3
+ * \since 1.8
*
* \param p sig_pri channel structure.
* \param rdnis Redirecting Directory Number Information Service (RDNIS) string.
/*!
* \internal
* \brief Convert PRI redirecting reason to asterisk version.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri_reason PRI redirecting reason.
*
/*!
* \internal
* \brief Convert asterisk redirecting reason to PRI version.
- * \since 1.6.3
+ * \since 1.8
*
* \param ast_reason Asterisk redirecting reason.
*
/*!
* \internal
* \brief Convert PRI number presentation to asterisk version.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri_presentation PRI number presentation.
*
/*!
* \internal
* \brief Convert asterisk number presentation to PRI version.
- * \since 1.6.3
+ * \since 1.8
*
* \param ast_presentation Asterisk number presentation.
*
/*!
* \internal
* \brief Determine the overall presentation value for the given party.
- * \since 1.6.3
+ * \since 1.8
*
* \param id Party to determine the overall presentation value.
*
/*!
* \internal
* \brief Fill in the asterisk party subaddress from the given PRI party subaddress.
- * \since 1.6.3
+ * \since 1.8
*
* \param ast_subaddress Asterisk party subaddress structure.
* \param pri_subaddress PRI party subaddress structure.
* \internal
* \brief Convert a null terminated hexadecimal string to a packed hex byte array.
* \details left justified, with 0 padding if odd length.
- * \since 1.6.3
+ * \since 1.8
*
* \param dst pointer to packed byte array.
* \param src pointer to null terminated hexadecimal string.
/*!
* \internal
* \brief Fill in the PRI party subaddress from the given asterisk party subaddress.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri_subaddress PRI party subaddress structure.
* \param ast_subaddress Asterisk party subaddress structure.
/*!
* \internal
* \brief Fill in the PRI party id from the given asterisk party id.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri_id PRI party id structure.
* \param ast_id Asterisk party id structure.
/*!
* \internal
* \brief Update the PRI redirecting information for the current call.
- * \since 1.6.3
+ * \since 1.8
*
* \param pvt sig_pri private channel structure.
* \param ast Asterisk channel
/*!
* \internal
* \brief Reset DTMF detector.
- * \since 1.6.3
+ * \since 1.8
*
* \param p sig_pri channel structure.
*
/*!
* \internal
* \brief Find or create an empty no-B-channel interface to use.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri span controller to find interface.
*
/*!
* \internal
* \brief Find the channel associated with the libpri call.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri span controller to find interface.
* \param call LibPRI opaque call pointer to find.
/*!
* \internal
* \brief Convert libpri party id into asterisk party id.
- * \since 1.6.3
+ * \since 1.8
*
* \param ast_id Asterisk party id structure to fill. Must already be set initialized.
* \param pri_id libpri party id structure containing source information.
/*!
* \internal
* \brief Convert libpri redirecting information into asterisk redirecting information.
- * \since 1.6.3
+ * \since 1.8
*
* \param ast_redirecting Asterisk redirecting structure to fill.
* \param pri_redirecting libpri redirecting structure containing source information.
/*!
* \internal
* \brief Determine if the given extension matches one of the MSNs in the pattern list.
- * \since 1.6.3
+ * \since 1.8
*
* \param msn_patterns Comma separated list of MSN patterns to match.
* \param exten Extension to match in the MSN list.
/*!
* \internal
* \brief Obtain the sig_pri owner channel lock if the owner exists.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri PRI control structure.
* \param chanpos Channel position in the span.
/*!
* \internal
* \brief Handle the call associated PRI subcommand events.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri PRI control structure.
* \param chanpos Channel position in the span.
/*!
* \internal
* \brief Attempt to transfer the active call to the held call.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri PRI control structure.
* \param active_call Active call to transfer.
/*!
* \internal
* \brief Handle the hold event from libpri.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri PRI control structure.
* \param ev Hold event received.
/*!
* \internal
* \brief Handle the retrieve event from libpri.
- * \since 1.6.3
+ * \since 1.8
*
* \param pri sig_pri PRI control structure.
* \param ev Retrieve event received.
/*!
* \brief Extract the called number and subaddress from the dial string.
- * \since 1.6.3
+ * \since 1.8
*
* \param p sig_pri channel structure.
* \param rdest Dial string buffer to extract called number and subaddress.
/*!
* \brief Delete the sig_pri private channel structure.
- * \since 1.6.3
+ * \since 1.8
*
* \param doomed sig_pri private channel structure to delete.
*
# sudo stop asterisk
description "Asterisk PBX"
-version "1.6.3"
+version "1.8"
start on runlevel 2
start on runlevel 3
#
description "Asterisk PBX"
-#version "1.6.3"
+#version "1.8"
start on runlevel [2345]
stop on runlevel [!2345]
int ast_app_getdata_full(struct ast_channel *c, const char *prompt, char *s, int maxlen, int timeout, int audiofd, int ctrlfd);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Run a macro on a channel, placing a second channel into autoservice.
*
* This is a shorthand method that makes it very easy to run a macro on any given
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert redirecting reason text code to value (used in config file parsing)
*
* \param data text string from config file
int ast_redirecting_reason_parse(const char *data);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert redirecting reason value to explanatory string
*
* \param data Q931_REDIRECTING_REASON from callerid.h
const char *ast_redirecting_reason_describe(int data);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert redirecting reason value to text code
*
* \param data Q931_REDIRECTING_REASON from callerid.h
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert connected line update source text code to value (used in config file parsing)
*
* \param data text string from config file
int ast_connected_line_source_parse(const char *data);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert connected line update source value to explanatory string
*
* \param data AST_CONNECTED_LINE_UPDATE_SOURCE from callerid.h
const char *ast_connected_line_source_describe(int data);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Convert connected line update source value to text code
*
* \param data AST_CONNECTED_LINE_UPDATE_SOURCE from callerid.h
/*!
* \brief Check to see if CEL is enabled
*
- * \since 1.6.3
+ * \since 1.8
*
* \retval zero not enabled
* \retval non-zero enabled
/*!
* \brief Allocate a CEL record
*
- * \since 1.6.3
+ * \since 1.8
*
* \note The CEL record must be destroyed with ast_cel_destroy().
*
*
* \param cel the record to destroy
*
- * \since 1.6.3
+ * \since 1.8
*
* \return nothing.
*/
*
* \param type the type to get the name of
*
- * \since 1.6.3
+ * \since 1.8
*
* \return the string representation of the type
*/
*
* \param name the event type name as a string
*
- * \since 1.6.3
+ * \since 1.8
*
* \return the ast_cel_event_type given by the string
*/
*
* \param[in] flag the flag to convert to a string
*
- * \since 1.6.3
+ * \since 1.8
*
* \return the string representation of the flag
*/
*
* \param chan channel that is being destroyed or its linkedid is changing
*
- * \since 1.6.3
+ * \since 1.8
*
* If at least one CEL backend is looking for CEL_LINKEDID_END
* events, this function will check if the given channel is the last
*
* \param event the CEL event
*
- * \since 1.6.3
+ * \since 1.8
*
* \return a channel with the data filled in, or NULL on error
*
* of peer2 will go into the "peer name" field. If neither are available, the
* peer name field will be blank.
*
- * \since 1.6.3
+ * \since 1.8
*
* \pre chan and peer2 are both unlocked
*
* \param[in] event the CEL event
* \param[out] r the ast_cel_event_record to fill in
*
- * \since 1.6.3
+ * \since 1.8
*
* \retval 0 success
* \retval non-zero failure
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Information needed to specify a subaddress in a call.
* \note All string fields here are malloc'ed, so they need to be
* freed when the structure is deleted.
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Information needed to identify an endpoint in a call.
* \note All string fields here are malloc'ed, so they need to be
* freed when the structure is deleted.
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Caller Party information.
* \note All string fields here are malloc'ed, so they need to be
* freed when the structure is deleted.
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Connected Line/Party information.
* \note All string fields here are malloc'ed, so they need to be
* freed when the structure is deleted.
};
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Redirecting Line information.
* RDNIS (Redirecting Directory Number Information Service)
* Where a call diversion or transfer was invoked.
/*!
* \brief Create a channel structure
- * \since 1.6.3
+ * \since 1.8
*
* \retval NULL failure
* \retval non-NULL successfully allocated channel
*
* \return NULL, convenient for clearing invalid pointers
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_release(struct ast_channel *chan);
* \param chan channel to set the field on
* \param source a string describing the source of the hangup for this channel
*
- * \since 1.6.3
+ * \since 1.8
*
* Hangupsource is generally the channel name that caused the bridge to be
* hung up, but it can also be other things such as "dialplan/agi"
*
* \retval c always
*
- * \since 1.6.3
+ * \since 1.8
*/
#define ast_channel_ref(c) ({ ao2_ref(c, +1); (c); })
*
* \retval NULL always
*
- * \since 1.6.3
+ * \since 1.8
*/
#define ast_channel_unref(c) ({ ao2_ref(c, -1); (struct ast_channel *) (NULL); })
* \return NULL, for convenience to clear out the pointer to the iterator that
* was just destroyed.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel_iterator *ast_channel_iterator_destroy(struct ast_channel_iterator *i);
* \retval NULL on failure
* \retval a new channel iterator based on the specified parameters
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel_iterator *ast_channel_iterator_by_exten_new(const char *exten, const char *context);
* \retval NULL on failure
* \retval a new channel iterator based on the specified parameters
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel_iterator *ast_channel_iterator_by_name_new(const char *name, size_t name_len);
* \retval NULL on failure
* \retval a new channel iterator
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel_iterator *ast_channel_iterator_all_new(void);
* was created.
* \retval NULL, if no more channels match the iterator parameters.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_iterator_next(struct ast_channel_iterator *i);
* This function executes a callback one time for each active channel on the
* system. The channel is provided as an argument to the function.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_callback(ao2_callback_data_fn *cb_fn, void *arg,
void *data, int ao2_flags);
* \retval a channel with the name specified by the argument
* \retval NULL if no channel was found
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_get_by_name(const char *name);
* \retval a channel with the name prefix specified by the arguments
* \retval NULL if no channel was found
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_get_by_name_prefix(const char *name, size_t name_len);
* \retval a channel that is at the specified extension and context
* \retval NULL if no channel was found
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_channel_get_by_exten(const char *exten, const char *context);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given subaddress structure.
*
* \param init Subaddress structure to initialize.
void ast_party_subaddress_init(struct ast_party_subaddress *init);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the source party subaddress information to the destination party subaddress.
*
* \param dest Destination party subaddress
void ast_party_subaddress_copy(struct ast_party_subaddress *dest, const struct ast_party_subaddress *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given party subadress structure using the given guide
* for a set update operation.
*
void ast_party_subaddress_set_init(struct ast_party_subaddress *init, const struct ast_party_subaddress *guide);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Set the source party subaddress information into the destination party subaddress.
*
* \param dest Destination party subaddress
void ast_party_subaddress_set(struct ast_party_subaddress *dest, const struct ast_party_subaddress *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Destroy the party subaddress contents
*
* \param doomed The party subaddress to destroy.
void ast_party_subaddress_free(struct ast_party_subaddress *doomed);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given caller structure.
*
* \param init Caller structure to initialize.
void ast_party_caller_init(struct ast_party_caller *init);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the source caller information to the destination caller.
*
* \param dest Destination caller
void ast_party_caller_copy(struct ast_callerid *dest, const struct ast_callerid *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given connected line structure.
*
* \param init Connected line structure to initialize.
void ast_party_connected_line_init(struct ast_party_connected_line *init);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the source connected line information to the destination connected line.
*
* \param dest Destination connected line
void ast_party_connected_line_copy(struct ast_party_connected_line *dest, const struct ast_party_connected_line *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given connected line structure using the given
* guide for a set update operation.
*
void ast_party_connected_line_set_init(struct ast_party_connected_line *init, const struct ast_party_connected_line *guide);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Set the connected line information based on another connected line source
*
* This is similar to ast_party_connected_line_copy, except that NULL values for
void ast_party_connected_line_set(struct ast_party_connected_line *dest, const struct ast_party_connected_line *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Collect the caller party information into a connected line structure.
*
* \param connected Collected caller information for the connected line
void ast_party_connected_line_collect_caller(struct ast_party_connected_line *connected, struct ast_callerid *cid);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Destroy the connected line information contents
*
* \param doomed The connected line information to destroy.
void ast_party_connected_line_free(struct ast_party_connected_line *doomed);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the source redirecting information to the destination redirecting.
*
* \param dest Destination redirecting
void ast_party_redirecting_copy(struct ast_party_redirecting *dest, const struct ast_party_redirecting *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Initialize the given redirecting id structure using the given guide
* for a set update operation.
*
void ast_party_redirecting_set_init(struct ast_party_redirecting *init, const struct ast_party_redirecting *guide);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Destroy the redirecting information contents
*
* \param doomed The redirecting information to destroy.
void ast_party_redirecting_free(struct ast_party_redirecting *doomed);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the caller information to the connected line information.
*
* \param dest Destination connected line information
void ast_connected_line_copy_from_caller(struct ast_party_connected_line *dest, const struct ast_callerid *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Copy the connected line information to the caller information.
*
* \param dest Destination caller information
void ast_connected_line_copy_to_caller(struct ast_callerid *dest, const struct ast_party_connected_line *src);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Set the connected line information in the Asterisk channel
*
* \param chan Asterisk channel to set connected line information
void ast_channel_set_connected_line(struct ast_channel *chan, const struct ast_party_connected_line *connected);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Build the connected line information data frame.
*
* \param data Buffer to fill with the frame data
int ast_connected_line_build_data(unsigned char *data, size_t datalen, const struct ast_party_connected_line *connected);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Parse connected line indication frame data
*
* \param data Buffer with the frame data to parse
int ast_connected_line_parse_data(const unsigned char *data, size_t datalen, struct ast_party_connected_line *connected);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Indicate that the connected line information has changed
*
* \param chan Asterisk channel to indicate connected line information
void ast_channel_update_connected_line(struct ast_channel *chan, const struct ast_party_connected_line *connected);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Queue a connected line update frame on a channel
*
* \param chan Asterisk channel to indicate connected line information
void ast_channel_queue_connected_line_update(struct ast_channel *chan, const struct ast_party_connected_line *connected);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Set the redirecting id information in the Asterisk channel
*
* \param chan Asterisk channel to set redirecting id information
void ast_channel_set_redirecting(struct ast_channel *chan, const struct ast_party_redirecting *redirecting);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Build the redirecting id data frame.
*
* \param data Buffer to fill with the frame data
int ast_redirecting_build_data(unsigned char *data, size_t datalen, const struct ast_party_redirecting *redirecting);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Parse redirecting indication frame data
*
* \param data Buffer with the frame data to parse
int ast_redirecting_parse_data(const unsigned char *data, size_t datalen, struct ast_party_redirecting *redirecting);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Indicate that the redirecting id has changed
*
* \param chan Asterisk channel to indicate redirecting id information
void ast_channel_update_redirecting(struct ast_channel *chan, const struct ast_party_redirecting *redirecting);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Queue a redirecting update frame on a channel
*
* \param chan Asterisk channel to indicate redirecting id information
void ast_channel_queue_redirecting_update(struct ast_channel *chan, const struct ast_party_redirecting *redirecting);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Run a connected line interception macro and update a channel's connected line
* information
*
*
* \section Changes162 Version 1.6.2
*
- * \section Changes163 Version 1.6.3
+ * \section Changes18 Version 1.8
* \li ast_channel_alloc()
*/
*
* \retval 0 success
* \retval non-zero failure
- * \since 1.6.3
+ * \since 1.8
*/
int ast_event_sub_append_ie_bitflags(struct ast_event_sub *sub,
enum ast_event_ie_type ie_type, uint32_t flags);
*
* \retval 0 success
* \retval -1 failure
- * \since 1.6.3
+ * \since 1.8
*
* The pointer to the event will get updated with the new location for the event
* that now contains the appended information element. If the re-allocation of
void ast_http_uri_unlink_all_with_key(const char *key);
/*!\brief Return http method name string
- * \since 1.6.3
+ * \since 1.8
*/
const char *ast_get_http_method(enum ast_http_method method) attribute_pure;
/*!\brief Return mime type based on extension
* \param ftype filename extension
* \return String containing associated MIME type
- * \since 1.6.3
+ * \since 1.8
*/
const char *ast_http_ftype2mtype(const char *ftype) attribute_pure;
/*!\brief Return manager id, if exist, from request headers
* \param headers List of HTTP headers
* \return 32-bit associated manager session identifier
- * \since 1.6.3
+ * \since 1.8
*/
uint32_t ast_http_manid_from_vars(struct ast_variable *headers) attribute_pure;
* Both the http_header and out arguments will be freed by this function;
* however, if FD is open, it will remain open.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_http_send(struct ast_tcptls_session_instance *ser, enum ast_http_method method, int status_code, const char *status_title, struct ast_str *http_header, struct ast_str *out, const int fd, unsigned int static_content);
* \param headers List of HTTP headers
* \return List of variables within the POST body
* \note Since returned list is malloc'd, list should be free'd by the calling function
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_variable *ast_http_get_post_vars(struct ast_tcptls_session_instance *ser, struct ast_variable *headers);
* \param name The name of the level to be registered
* \retval -1 if an error occurs
* \retval non-zero level to be used with ast_log for sending messages to this level
- * \since 1.6.3
+ * \since 1.8
*/
int ast_logger_register_level(const char *name);
* \brief Unregister a previously registered logger level
* \param name The name of the level to be unregistered
* \return nothing
- * \since 1.6.3
+ * \since 1.8
*/
void ast_logger_unregister_level(const char *name);
* the log message.
*
* \return nothing
- * \since 1.6.3
+ * \since 1.8
*/
#define ast_log_dynamic_level(level, ...) ast_log(level, __FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
* \param category Event category, matches manager authorization
* \param event Event name
* \param contents Format string describing event
- * \since 1.6.3
+ * \since 1.8
*/
int __ast_manager_event_multichan(int category, const char *event, int chancount,
struct ast_channel **chans, const char *file, int line, const char *func,
* \note It is recommended that you use the ast_rtp_engine_register macro so that the module is
* associated with the RTP engine and use counting is performed.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_engine_register2(struct ast_rtp_engine *engine, struct ast_module *module);
* This unregisters the RTP engine declared as example_rtp_engine from the RTP engine core. If a module
* reference was provided when it was registered then this will only be called once the RTP engine is no longer in use.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_engine_unregister(struct ast_rtp_engine *engine);
* \note It is recommended that you use the ast_rtp_glue_register macro so that the module is
* associated with the RTP glue and use counting is performed.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_glue_register2(struct ast_rtp_glue *glue, struct ast_module *module);
* This unregisters the RTP glue declared as example_rtp_gkue from the RTP engine core. If a module
* reference was provided when it was registered then this will only be called once the RTP engine is no longer in use.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_glue_unregister(struct ast_rtp_glue *glue);
* \note The RTP engine does not have to use the address provided when creating an RTP instance. It may choose to use
* another depending on it's own configuration.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_instance *ast_rtp_instance_new(const char *engine_name, struct sched_context *sched, struct sockaddr_in *sin, void *data);
* This destroys the RTP instance pointed to by instance. Once this function returns instance no longer points to valid
* memory and may not be used again.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_destroy(struct ast_rtp_instance *instance);
* This sets the data pointer on the RTP instance pointed to by 'instance' to
* blob.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_data(struct ast_rtp_instance *instance, void *data);
*
* This gets the data pointer on the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
void *ast_rtp_instance_get_data(struct ast_rtp_instance *instance);
* This gives the frame pointed to by frame to the RTP engine being used for the instance
* and asks that it be transmitted to the current remote address set on the RTP instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_write(struct ast_rtp_instance *instance, struct ast_frame *frame);
*
* This asks the RTP engine to read in RTP from the instance and return it as an Asterisk frame.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_frame *ast_rtp_instance_read(struct ast_rtp_instance *instance, int rtcp);
* This changes the remote address that RTP will be sent to on instance to the address given in the sin
* structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_remote_address(struct ast_rtp_instance *instance, struct sockaddr_in *address);
* This changes the alternate remote address that RTP will be sent to on instance to the address given in the sin
* structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_alt_remote_address(struct ast_rtp_instance *instance, struct sockaddr_in *address);
* This changes the local address that RTP is expected on to the address given in the sin
* structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_local_address(struct ast_rtp_instance *instance, struct sockaddr_in *address);
*
* This gets the local address that we are expecting RTP on and stores it in the 'sin' structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_local_address(struct ast_rtp_instance *instance, struct sockaddr_in *address);
* This retrieves the current remote address set on the instance pointed to by instance and puts the value
* into the sin structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_remote_address(struct ast_rtp_instance *instance, struct sockaddr_in *address);
* \param property The extended property to set
* \param value The value to set the extended property to
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_extended_prop(struct ast_rtp_instance *instance, int property, void *value);
* \param instance The RTP instance to get the extended property on
* \param property The extended property to get
*
- * \since 1.6.3
+ * \since 1.8
*/
void *ast_rtp_instance_get_extended_prop(struct ast_rtp_instance *instance, int property);
*
* This enables the AST_RTP_PROPERTY_NAT property on the instance pointed to by instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_prop(struct ast_rtp_instance *instance, enum ast_rtp_property property, int value);
*
* This returns the current value of the NAT property on the instance pointed to by instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_prop(struct ast_rtp_instance *instance, enum ast_rtp_property property);
*
* This gets the codecs structure on the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_codecs *ast_rtp_instance_get_codecs(struct ast_rtp_instance *instance);
*
* This clears the codecs structure and puts it into a pristine state.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payloads_clear(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance);
*
* This sets the default payloads on the codecs structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payloads_default(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance);
*
* This copies the payloads from the codecs0 structure to the codecs1 structure, overwriting any current values.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payloads_copy(struct ast_rtp_codecs *src, struct ast_rtp_codecs *dest, struct ast_rtp_instance *instance);
*
* This records that the numerical payload '0' was seen in the codecs structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payloads_set_m_type(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance, int payload);
*
* This records that the numerical payload '0' was seen with mime type 'audio' and sub mime type 'PCMU' in the codecs structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_codecs_payloads_set_rtpmap_type(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance, int payload, char *mimetype, char *mimesubtype, enum ast_rtp_options options);
* \retval -1 if the payload type is out of range
* \retval -2 if the mimeType/mimeSubtype combination was not found
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_codecs_payloads_set_rtpmap_type_rate(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance, int pt,
char *mimetype, char *mimesubtype,
*
* This clears the payload '0' from the codecs structure. It will be as if it was never set.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payloads_unset(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance, int payload);
*
* This looks up the information for payload '0' from the codecs structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_payload_type ast_rtp_codecs_payload_lookup(struct ast_rtp_codecs *codecs, int payload);
*
* \return the sample rate if the format was found, zero if it was not found
*
- * \since 1.6.3
+ * \since 1.8
*/
unsigned int ast_rtp_lookup_sample_rate2(int asterisk_format, format_t code);
* This retrieves all the formats known about in the codecs structure and puts the Asterisk ones in the integer
* pointed to by astformats and the non-Asterisk ones in the integer pointed to by nonastformats.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_payload_formats(struct ast_rtp_codecs *codecs, format_t *astformats, int *nonastformats);
*
* This looks for the numerical payload for ULAW in the codecs structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_codecs_payload_code(struct ast_rtp_codecs *codecs, const int asterisk_format, const format_t code);
*
* This looks up the mime subtype for the ULAW format.
*
- * \since 1.6.3
+ * \since 1.8
*/
const char *ast_rtp_lookup_mime_subtype2(const int asterisk_format, const format_t code, enum ast_rtp_options options);
*
* This returns the mime values for ULAW and ALAW in the buffer pointed to by buf.
*
- * \since 1.6.3
+ * \since 1.8
*/
char *ast_rtp_lookup_mime_multiple2(struct ast_str *buf, const format_t capability, const int asterisk_format, enum ast_rtp_options options);
*
* This sets the packetization preferences pointed to by prefs on the codecs structure pointed to by codecs.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_codecs_packetization_set(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance, struct ast_codec_pref *prefs);
* This starts sending the DTMF '1' on the RTP instance pointed to by instance. It will
* continue being sent until it is ended.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_dtmf_begin(struct ast_rtp_instance *instance, char digit);
*
* This stops sending the DTMF '1' on the RTP instance pointed to by instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_dtmf_end(struct ast_rtp_instance *instance, char digit);
*
* This sets the RTP instance to use RFC2833 for DTMF transmission and receiving.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_dtmf_mode_set(struct ast_rtp_instance *instance, enum ast_rtp_dtmf_mode dtmf_mode);
*
* This gets the DTMF mode set on the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
enum ast_rtp_dtmf_mode ast_rtp_instance_dtmf_mode_get(struct ast_rtp_instance *instance);
* This indicates that a new source of media is feeding the instance pointed to by
* instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_new_source(struct ast_rtp_instance *instance);
*
* This sets the TOS and COS values to 0 on the instance pointed to by instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_qos(struct ast_rtp_instance *instance, int tos, int cos, const char *desc);
* This tells the RTP engine being used for the instance pointed to by instance
* that media is no longer going to it at this time, but may in the future.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_stop(struct ast_rtp_instance *instance);
* This retrieves the file descriptor for the socket carrying media on the instance
* pointed to by instance.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_fd(struct ast_rtp_instance *instance, int rtcp);
*
* This retrieves the RTP glue that has the name 'Example'.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_glue *ast_rtp_instance_get_glue(const char *type);
*
* \note This should only be used by channel drivers in their technology declaration.
*
- * \since 1.6.3
+ * \since 1.8
*/
enum ast_bridge_result ast_rtp_instance_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc, int timeoutms);
*
* This gets the RTP instance that instance0 is bridged to.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_instance *ast_rtp_instance_get_bridged(struct ast_rtp_instance *instance);
* \param c0 First channel part of the bridge
* \param c1 Second channel part of the bridge
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_early_bridge_make_compatible(struct ast_channel *c0, struct ast_channel *c1);
*
* \note This should only be used by channel drivers in their technology declaration.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_early_bridge(struct ast_channel *c0, struct ast_channel *c1);
* \retval 0 success
* \retval -1 failure
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_red_init(struct ast_rtp_instance *instance, int buffer_time, int *payloads, int generations);
* \retval 0 success
* \retval -1 failure
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_red_buffer(struct ast_rtp_instance *instance, struct ast_frame *frame);
* This retrieves all statistics the underlying RTP engine supports and puts the values into the
* stats structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_stats(struct ast_rtp_instance *instance, struct ast_rtp_instance_stats *stats, enum ast_rtp_instance_stat stat);
* This retrieves standard statistics from the RTP instance rtp and sets it on the channel pointed to
* by chan.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_stats_vars(struct ast_channel *chan, struct ast_rtp_instance *instance);
*
* This retrieves general quality statistics and places a text representation into the buf pointed to by buf.
*
- * \since 1.6.3
+ * \since 1.8
*/
char *ast_rtp_instance_get_quality(struct ast_rtp_instance *instance, enum ast_rtp_instance_stat_field field, char *buf, size_t size);
*
* This requests that the RTP engine provide audio frames in the ULAW format.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_read_format(struct ast_rtp_instance *instance, format_t format);
*
* This tells the underlying RTP engine that audio frames will be provided to it in ULAW format.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_set_write_format(struct ast_rtp_instance *instance, format_t format);
*
* This makes the RTP instance for 'peer' compatible with 'instance' and vice versa.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_make_compatible(struct ast_channel *chan, struct ast_rtp_instance *instance, struct ast_channel *peer);
*
* This sees if it is possible to have ulaw communicated to the endpoint but signed linear received into Asterisk.
*
- * \since 1.6.3
+ * \since 1.8
*/
format_t ast_rtp_instance_available_formats(struct ast_rtp_instance *instance, format_t to_endpoint, format_t to_asterisk);
*
* This tells the underlying RTP engine of instance that packets will now flow.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_activate(struct ast_rtp_instance *instance);
* This requests that the RTP engine send a STUN BIND request on the session pointed to by
* 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_stun_request(struct ast_rtp_instance *instance, struct sockaddr_in *suggestion, const char *username);
*
* This sets the RTP timeout value on 'instance' to be 5000.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_timeout(struct ast_rtp_instance *instance, int timeout);
*
* This sets the RTP hold timeout value on 'instance' to be 5000.
*
- * \since 1.6.3
+ * \since 1.8
*/
void ast_rtp_instance_set_hold_timeout(struct ast_rtp_instance *instance, int timeout);
*
* This gets the RTP timeout value for the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_timeout(struct ast_rtp_instance *instance);
*
* This gets the RTP hold timeout value for the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
int ast_rtp_instance_get_hold_timeout(struct ast_rtp_instance *instance);
*
* This gets the RTP engine currently in use on the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *instance);
*
* This gets the RTP glue currently in use on the RTP instance pointed to by 'instance'.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_rtp_glue *ast_rtp_instance_get_active_glue(struct ast_rtp_instance *instance);
*
* \note This will only return a channel while in a local or remote bridge.
*
- * \since 1.6.3
+ * \since 1.8
*/
struct ast_channel *ast_rtp_instance_get_chan(struct ast_rtp_instance *instance);
* \retval NULL invalid event_type
* \retval non-NULL An array terminated with the value AST_EVENT_IE_END
*
- * \since 1.6.3
+ * \since 1.8
*/
const struct ast_security_event_ie_type *ast_security_event_get_required_ies(
const enum ast_security_event_type event_type);
* \retval NULL invalid event_type
* \retval non-NULL An array terminated with the value AST_EVENT_IE_END
*
- * \since 1.6.3
+ * \since 1.8
*/
const struct ast_security_event_ie_type *ast_security_event_get_optional_ies(
const enum ast_security_event_type event_type);
* \retval NULL if event_type is invalid
* \retval non-NULL the name of the security event type
*
- * \since 1.6.3
+ * \since 1.8
*/
const char *ast_security_event_get_name(const enum ast_security_event_type event_type);
* \retval NULL if severity is invalid
* \retval non-NULL the name of the security event severity
*
- * \since 1.6.3
+ * \since 1.8
*/
const char *ast_security_event_severity_get_name(
const enum ast_security_event_severity severity);
* also allocate space for the stringfields and initialize the stringfield management
* structure embedded in the outer structure.
*
- * \since 1.6.3
+ * \since 1.8
*/
#define ast_calloc_with_stringfields(n, type, size) \
__ast_calloc_with_stringfields(n, sizeof(type), offsetof(type, __field_mgr), offsetof(type, __field_mgr_pool), \
#endif
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Maps a syslog facility name from a string to a syslog facility
* constant.
*
int ast_syslog_facility(const char *facility);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Maps a syslog facility constant to a string.
*
* \param facility syslog facility constant to map (i.e. LOG_DAEMON)
const char *ast_syslog_facility_name(int facility);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Maps a syslog priority name from a string to a syslog priority
* constant.
*
int ast_syslog_priority(const char *priority);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Maps a syslog priority constant to a string.
*
* \param priority syslog priority constant to map (i.e. LOG_NOTICE)
const char *ast_syslog_priority_name(int priority);
/*!
- * \since 1.6.3
+ * \since 1.8
* \brief Maps an Asterisk log level (i.e. LOG_ERROR) to a syslog priority
* constant.
*
/*!\internal
* \brief Counting in Urdu, the national language of Pakistan
- * \since 1.6.3
+ * \since 1.8
*/
static int ast_say_number_full_ur(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
{