diff options
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/callerid.h | 6 | ||||
-rw-r--r-- | include/asterisk/channel.h | 89 |
2 files changed, 87 insertions, 8 deletions
diff --git a/include/asterisk/callerid.h b/include/asterisk/callerid.h index 7c4905e13..4f32dbf66 100644 --- a/include/asterisk/callerid.h +++ b/include/asterisk/callerid.h @@ -424,15 +424,17 @@ int ast_redirecting_reason_parse(const char *data); */ const char *ast_redirecting_reason_describe(int data); +struct ast_party_redirecting_reason; + /*! * \since 1.8 * \brief Convert redirecting reason value to text code * - * \param data Q931_REDIRECTING_REASON from callerid.h + * \param data ast_party_redirecting_reason structure from channel.h * * \return string for config file */ -const char *ast_redirecting_reason_name(int data); +const char *ast_redirecting_reason_name(const struct ast_party_redirecting_reason *data); /*! * \brief Connected line update source code diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index b60c8ad00..fed032a3d 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -450,6 +450,21 @@ struct ast_set_party_connected_line { }; /*! + * \brief Redirecting reason information + */ +struct ast_party_redirecting_reason { + /*! \brief a string value for the redirecting reason + * + * Useful for cases where an endpoint has specified a redirecting reason + * that does not correspond to an enum AST_REDIRECTING_REASON + */ + char *str; + + /*! \brief enum AST_REDIRECTING_REASON value for redirection */ + int code; +}; + +/*! * \since 1.8 * \brief Redirecting Line information. * RDNIS (Redirecting Directory Number Information Service) @@ -477,14 +492,14 @@ struct ast_party_redirecting { /*! \brief Call is redirecting to a new party (Sent to the caller) - private representation */ struct ast_party_id priv_to; - /*! \brief Number of times the call was redirected */ - int count; + /*! \brief Reason for the redirection */ + struct ast_party_redirecting_reason reason; - /*! \brief enum AST_REDIRECTING_REASON value for redirection */ - int reason; + /*! \brief Reason for the redirection by the original party */ + struct ast_party_redirecting_reason orig_reason; - /*! \brief enum AST_REDIRECTING_REASON value for redirection by original party */ - int orig_reason; + /*! \brief Number of times the call was redirected */ + int count; }; /*! @@ -3229,6 +3244,68 @@ void ast_party_connected_line_collect_caller(struct ast_party_connected_line *co void ast_party_connected_line_free(struct ast_party_connected_line *doomed); /*! + * \brief Initialize the given redirecting reason structure + * + * \param init Redirecting reason structure to initialize + * + * \return Nothing + */ +void ast_party_redirecting_reason_init(struct ast_party_redirecting_reason *init); + +/*! + * \brief Copy the source redirecting reason information to the destination redirecting reason. + * + * \param dest Destination redirecting reason + * \param src Source redirecting reason + * + * \return Nothing + */ +void ast_party_redirecting_reason_copy(struct ast_party_redirecting_reason *dest, + const struct ast_party_redirecting_reason *src); + +/*! + * \brief Initialize the given redirecting reason structure using the given guide + * for a set update operation. + * + * \details + * The initialization is needed to allow a set operation to know if a + * value needs to be updated. Simple integers need the guide's original + * value in case the set operation is not trying to set a new value. + * String values are simply set to NULL pointers if they are not going + * to be updated. + * + * \param init Redirecting reason structure to initialize. + * \param guide Source redirecting reason to use as a guide in initializing. + * + * \return Nothing + */ +void ast_party_redirecting_reason_set_init(struct ast_party_redirecting_reason *init, + const struct ast_party_redirecting_reason *guide); + +/*! + * \brief Set the redirecting reason information based on another redirecting reason source + * + * This is similar to ast_party_redirecting_reason_copy, except that NULL values for + * strings in the src parameter indicate not to update the corresponding dest values. + * + * \param dest The redirecting reason one wishes to update + * \param src The new redirecting reason values to update the dest + * + * \return Nothing + */ +void ast_party_redirecting_reason_set(struct ast_party_redirecting_reason *dest, + const struct ast_party_redirecting_reason *src); + +/*! + * \brief Destroy the redirecting reason contents + * + * \param doomed The redirecting reason to destroy. + * + * \return Nothing + */ +void ast_party_redirecting_reason_free(struct ast_party_redirecting_reason *doomed); + +/*! * \brief Initialize the given redirecting structure. * \since 1.8 * |