@ -50,10 +50,11 @@ extern "C" {
# define PRIORITY_HINT -1 /*!< Special Priority for a hint */
/*! \brief Extension states
\ note States can be combined
- \ ref AstExtState
*/
/*!
* \ brief Extension states
* \ note States can be combined
* \ ref AstExtState
*/
enum ast_extension_states {
AST_EXTENSION_REMOVED = - 2 , /*!< Extension removed */
AST_EXTENSION_DEACTIVATED = - 1 , /*!< Extension hint removed */
@ -67,7 +68,7 @@ enum ast_extension_states {
struct ast_context ;
struct ast_exten ;
struct ast_exten ;
struct ast_include ;
struct ast_ignorepat ;
struct ast_sw ;
@ -113,7 +114,7 @@ struct ast_switch {
AST_LIST_ENTRY ( ast_switch ) list ;
const char * name ; /*!< Name of the switch */
const char * description ; /*!< Description of the switch */
ast_switch_f * exists ;
ast_switch_f * canmatch ;
ast_switch_f * exec ;
@ -129,20 +130,23 @@ struct ast_timing {
char * timezone ; /*!< NULL, or zoneinfo style timezone */
} ;
/*!\brief Construct a timing bitmap, for use in time-based conditionals.
/*!
* \ brief Construct a timing bitmap , for use in time - based conditionals .
* \ param i Pointer to an ast_timing structure .
* \ param info Standard string containing a timerange , weekday range , monthday range , and month range , as well as an optional timezone .
* \ retval Returns 1 on success or 0 on failure .
*/
int ast_build_timing ( struct ast_timing * i , const char * info ) ;
/*!\brief Evaluate a pre-constructed bitmap as to whether the current time falls within the range specified.
/*!
* \ brief Evaluate a pre - constructed bitmap as to whether the current time falls within the range specified .
* \ param i Pointer to an ast_timing structure .
* \ retval Returns 1 , if the time matches or 0 , if the current time falls outside of the specified range .
*/
int ast_check_timing ( const struct ast_timing * i ) ;
/*!\brief Deallocates memory structures associated with a timing bitmap.
/*!
* \ brief Deallocates memory structures associated with a timing bitmap .
* \ param i Pointer to an ast_timing structure .
* \ retval 0 success
* \ retval non - zero failure ( number suitable to pass to \ see strerror )
@ -172,7 +176,7 @@ int ast_register_switch(struct ast_switch *sw);
* \ brief Unregister an alternative switch
*
* \ param sw switch to unregister
*
*
* Unregisters a switch from asterisk .
*
* \ return nothing
@ -229,13 +233,13 @@ int pbx_exec(struct ast_channel *c, struct ast_app *app, const char *data);
struct ast_context * ast_context_find_or_create ( struct ast_context * * extcontexts , struct ast_hashtab * exttable , const char * name , const char * registrar ) ;
/*!
* \ brief Merge the temporary contexts into a global contexts list and delete from the
* \ brief Merge the temporary contexts into a global contexts list and delete from the
* global list the ones that are being added
*
* \ param extcontexts pointer to the ast_context structure
* \ param exttable pointer to the ast_hashtab structure that contains all the elements in extcontexts
* \ param registrar of the context ; if it ' s set the routine will delete all contexts
* that belong to that registrar ; if NULL only the contexts that are specified
* \ param registrar of the context ; if it ' s set the routine will delete all contexts
* that belong to that registrar ; if NULL only the contexts that are specified
* in extcontexts
*/
void ast_merge_contexts_and_delete ( struct ast_context * * extcontexts , struct ast_hashtab * exttable , const char * registrar ) ;
@ -264,8 +268,10 @@ void ast_context_destroy(struct ast_context *con, const char *registrar);
*/
struct ast_context * ast_context_find ( const char * name ) ;
/*! \brief The result codes when starting the PBX on a channel with \see ast_pbx_start.
AST_PBX_CALL_LIMIT refers to the maxcalls call limit in asterisk . conf
/*!
* \ brief The result codes when starting the PBX on a channel with ast_pbx_start .
* \ note AST_PBX_CALL_LIMIT refers to the maxcalls call limit in asterisk . conf
* \ see ast_pbx_start
*/
enum ast_pbx_result {
AST_PBX_SUCCESS = 0 ,
@ -295,7 +301,7 @@ enum ast_pbx_result ast_pbx_start(struct ast_channel *c);
* PBX structure for the channel , and provides all PBX functionality .
* See ast_pbx_start for an asynchronous function to run the PBX in a
* new thread as opposed to the current one .
*
*
* \ retval Zero on success
* \ retval non - zero on failure
*/
@ -326,15 +332,15 @@ struct ast_pbx_args {
* PBX structure for the channel , and provides all PBX functionality .
* See ast_pbx_start for an asynchronous function to run the PBX in a
* new thread as opposed to the current one .
*
*
* \ retval Zero on success
* \ retval non - zero on failure
*/
enum ast_pbx_result ast_pbx_run_args ( struct ast_channel * c , struct ast_pbx_args * args ) ;
/*!
* \ brief Add and extension to an extension context .
*
/*!
* \ brief Add and extension to an extension context .
*
* \ param context context to add the extension to
* \ param replace
* \ param extension extension to add
@ -346,20 +352,20 @@ enum ast_pbx_result ast_pbx_run_args(struct ast_channel *c, struct ast_pbx_args
* \ param datad
* \ param registrar who registered the extension
*
* \ retval 0 success
* \ retval 0 success
* \ retval - 1 failure
*/
int ast_add_extension ( const char * context , int replace , const char * extension ,
int ast_add_extension ( const char * context , int replace , const char * extension ,
int priority , const char * label , const char * callerid ,
const char * application , void * data , void ( * datad ) ( void * ) , const char * registrar ) ;
/*!
/*!
* \ brief Add an extension to an extension context , this time with an ast_context * .
*
* \ note For details about the arguments , check ast_add_extension ( )
*/
int ast_add_extension2 ( struct ast_context * con , int replace , const char * extension ,
int priority , const char * label , const char * callerid ,
int priority , const char * label , const char * callerid ,
const char * application , void * data , void ( * datad ) ( void * ) , const char * registrar ) ;
/*!
@ -371,7 +377,7 @@ int ast_add_extension2(struct ast_context *con, int replace, const char *extensi
*/
enum ast_extension_states ast_devstate_to_extenstate ( enum ast_device_state devstate ) ;
/*!
/*!
* \ brief Uses hint and devicestate callback to get the state of an extension
*
* \ param c this is not important
@ -382,9 +388,9 @@ enum ast_extension_states ast_devstate_to_extenstate(enum ast_device_state devst
*/
int ast_extension_state ( struct ast_channel * c , const char * context , const char * exten ) ;
/*!
/*!
* \ brief Return string representation of the state of an extension
*
*
* \ param extension_state is the numerical state delivered by ast_extension_state
*
* \ return the state of an extension as string
@ -393,7 +399,7 @@ const char *ast_extension_state2str(int extension_state);
/*!
* \ brief Registers a state change callback
*
*
* \ param context which context to look in
* \ param exten which extension to get state
* \ param callback callback to call if state changed
@ -403,26 +409,26 @@ const char *ast_extension_state2str(int extension_state);
*
* \ retval - 1 on failure
* \ retval ID on success
*/
int ast_extension_state_add ( const char * context , const char * exten ,
*/
int ast_extension_state_add ( const char * context , const char * exten ,
ast_state_cb_type callback , void * data ) ;
/*!
/*!
* \ brief Deletes a registered state change callback by ID
*
*
* \ param id of the callback to delete
* \ param callback callback
*
* Removes the callback from list of callbacks
*
* \ retval 0 success
* \ retval 0 success
* \ retval - 1 failure
*/
int ast_extension_state_del ( int id , ast_state_cb_type callback ) ;
/*!
/*!
* \ brief If an extension hint exists , return non - zero
*
*
* \ param hint buffer for hint
* \ param hintsize size of hint buffer , in bytes
* \ param name buffer for name portion of hint
@ -438,9 +444,9 @@ int ast_extension_state_del(int id, ast_state_cb_type callback);
int ast_get_hint ( char * hint , int hintsize , char * name , int namesize ,
struct ast_channel * c , const char * context , const char * exten ) ;
/*!
/*!
* \ brief If an extension hint exists , return non - zero
*
*
* \ param hint buffer for hint
* \ param hintsize Maximum size of hint buffer ( < 0 to prevent growth , > 0 to limit growth to that number of bytes , or 0 for unlimited growth )
* \ param name buffer for name portion of hint
@ -469,15 +475,15 @@ int ast_str_get_hint(struct ast_str **hint, ssize_t hintsize, struct ast_str **n
* function call , it is important that c is not locked prior to calling this . Otherwise
* a deadlock may occur
*
* \ return If an extension within the given context ( or callerid ) with the given priority
* \ return If an extension within the given context ( or callerid ) with the given priority
* is found a non zero value will be returned . Otherwise , 0 is returned .
*/
int ast_exists_extension ( struct ast_channel * c , const char * context , const char * exten ,
int ast_exists_extension ( struct ast_channel * c , const char * context , const char * exten ,
int priority , const char * callerid ) ;
/*!
/*!
* \ brief Find the priority of an extension that has the specified label
*
*
* \ param c this is not important
* \ param context which context to look in
* \ param exten which extension to search for
@ -491,7 +497,7 @@ int ast_exists_extension(struct ast_channel *c, const char *context, const char
* \ retval the priority which matches the given label in the extension
* \ retval - 1 if not found .
*/
int ast_findlabel_extension ( struct ast_channel * c , const char * context ,
int ast_findlabel_extension ( struct ast_channel * c , const char * context ,
const char * exten , const char * label , const char * callerid ) ;
/*!
@ -505,12 +511,12 @@ int ast_findlabel_extension(struct ast_channel *c, const char *context,
* a pointer to an ast_context structure to specify the context instead of the
* name of the context . Otherwise , the functions behave the same .
*/
int ast_findlabel_extension2 ( struct ast_channel * c , struct ast_context * con ,
int ast_findlabel_extension2 ( struct ast_channel * c , struct ast_context * con ,
const char * exten , const char * label , const char * callerid ) ;
/*!
/*!
* \ brief Looks for a valid matching extension
*
*
* \ param c not really important
* \ param context context to serach within
* \ param exten extension to check
@ -525,10 +531,10 @@ int ast_findlabel_extension2(struct ast_channel *c, struct ast_context *con,
* some more digits , return non - zero . Basically , when this returns 0 , no matter
* what you add to exten , it ' s not going to be a valid extension anymore
*/
int ast_canmatch_extension ( struct ast_channel * c , const char * context ,
int ast_canmatch_extension ( struct ast_channel * c , const char * context ,
const char * exten , int priority , const char * callerid ) ;
/*!
/*!
* \ brief Looks to see if adding anything to this extension might match something . ( exists ^ canmatch )
*
* \ param c not really important XXX
@ -546,12 +552,12 @@ int ast_canmatch_extension(struct ast_channel *c, const char *context,
* an exact - match only . Basically , when this returns 0 , no matter
* what you add to exten , it ' s not going to be a valid extension anymore
*/
int ast_matchmore_extension ( struct ast_channel * c , const char * context ,
int ast_matchmore_extension ( struct ast_channel * c , const char * context ,
const char * exten , int priority , const char * callerid ) ;
/*!
/*!
* \ brief Determine if a given extension matches a given pattern ( in NXX format )
*
*
* \ param pattern pattern to match
* \ param extension extension to check against the pattern .
*
@ -564,9 +570,9 @@ int ast_extension_match(const char *pattern, const char *extension);
int ast_extension_close ( const char * pattern , const char * data , int needmore ) ;
/*!
/*!
* \ brief Determine if one extension should match before another
*
*
* \ param a extension to compare with b
* \ param b extension to compare with a
*
@ -578,16 +584,16 @@ int ast_extension_close(const char *pattern, const char *data, int needmore);
*/
int ast_extension_cmp ( const char * a , const char * b ) ;
/*!
/*!
* \ brief Launch a new extension ( i . e . new stack )
*
*
* \ param c not important
* \ param context which context to generate the extension within
* \ param exten new extension to add
* \ param priority priority of new extension
* \ param callerid callerid of extension
* \ param found
* \ param combined_find_spawn
* \ param combined_find_spawn
*
* This adds a new extension to the asterisk extension list .
*
@ -595,13 +601,13 @@ int ast_extension_cmp(const char *a, const char *b);
* function call , it is important that c is not locked prior to calling this . Otherwise
* a deadlock may occur
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure .
*/
int ast_spawn_extension ( struct ast_channel * c , const char * context ,
int ast_spawn_extension ( struct ast_channel * c , const char * context ,
const char * exten , int priority , const char * callerid , int * found , int combined_find_spawn ) ;
/*!
/*!
* \ brief Add a context include
*
* \ param context context to add include to
@ -610,62 +616,62 @@ int ast_spawn_extension(struct ast_channel *c, const char *context,
*
* Adds an include taking a char * string as the context parameter
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on error
*/
int ast_context_add_include ( const char * context , const char * include ,
int ast_context_add_include ( const char * context , const char * include ,
const char * registrar ) ;
/*!
/*!
* \ brief Add a context include
*
*
* \ param con context to add the include to
* \ param include include to add
* \ param registrar who registered the context
*
* Adds an include taking a struct ast_context as the first parameter
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_add_include2 ( struct ast_context * con , const char * include ,
int ast_context_add_include2 ( struct ast_context * con , const char * include ,
const char * registrar ) ;
/*!
/*!
* \ brief Remove a context include
*
*
* \ note See ast_context_add_include for information on arguments
*
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_remove_include ( const char * context , const char * include ,
int ast_context_remove_include ( const char * context , const char * include ,
const char * registrar ) ;
/*!
* \ brief Removes an include by an ast_context structure
*
/*!
* \ brief Removes an include by an ast_context structure
*
* \ note See ast_context_add_include2 for information on arguments
*
* \ retval 0 on success
* \ retval - 1 on success
*/
int ast_context_remove_include2 ( struct ast_context * con , const char * include ,
int ast_context_remove_include2 ( struct ast_context * con , const char * include ,
const char * registrar ) ;
/*!
/*!
* \ brief Verifies includes in an ast_contect structure
*
*
* \ param con context in which to verify the includes
*
* \ retval 0 if no problems found
* \ retval 0 if no problems found
* \ retval - 1 if there were any missing context
*/
int ast_context_verify_includes ( struct ast_context * con ) ;
/*!
/*!
* \ brief Add a switch
*
*
* \ param context context to which to add the switch
* \ param sw switch to add
* \ param data data to pass to switch
@ -674,39 +680,39 @@ int ast_context_verify_includes(struct ast_context *con);
*
* This function registers a switch with the asterisk switch architecture
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_add_switch ( const char * context , const char * sw , const char * data ,
int ast_context_add_switch ( const char * context , const char * sw , const char * data ,
int eval , const char * registrar ) ;
/*!
/*!
* \ brief Adds a switch ( first param is a ast_context )
*
*
* \ note See ast_context_add_switch ( ) for argument information , with the exception of
* the first argument . In this case , it ' s a pointer to an ast_context structure
* as opposed to the name .
*/
int ast_context_add_switch2 ( struct ast_context * con , const char * sw , const char * data ,
int ast_context_add_switch2 ( struct ast_context * con , const char * sw , const char * data ,
int eval , const char * registrar ) ;
/*!
/*!
* \ brief Remove a switch
*
*
* Removes a switch with the given parameters
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_remove_switch ( const char * context , const char * sw ,
int ast_context_remove_switch ( const char * context , const char * sw ,
const char * data , const char * registrar ) ;
int ast_context_remove_switch2 ( struct ast_context * con , const char * sw ,
int ast_context_remove_switch2 ( struct ast_context * con , const char * sw ,
const char * data , const char * registrar ) ;
/*!
/*!
* \ brief Simply remove extension from context
*
*
* \ param context context to remove extension from
* \ param extension which extension to remove
* \ param priority priority of extension to remove ( 0 to remove all )
@ -716,7 +722,7 @@ int ast_context_remove_switch2(struct ast_context *con, const char *sw,
*
* This function removes an extension from a given context .
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*
* @ {
@ -735,57 +741,57 @@ int ast_context_remove_extension_callerid2(struct ast_context *con, const char *
int already_locked ) ;
/*! @} */
/*!
/*!
* \ brief Add an ignorepat
*
*
* \ param context which context to add the ignorpattern to
* \ param ignorepat ignorepattern to set up for the extension
* \ param registrar registrar of the ignore pattern
*
* Adds an ignore pattern to a particular context .
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_add_ignorepat ( const char * context , const char * ignorepat , const char * registrar ) ;
int ast_context_add_ignorepat2 ( struct ast_context * con , const char * ignorepat , const char * registrar ) ;
/*
/*
* \ brief Remove an ignorepat
*
*
* \ param context context from which to remove the pattern
* \ param ignorepat the pattern to remove
* \ param registrar the registrar of the ignore pattern
*
* This removes the given ignorepattern
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_context_remove_ignorepat ( const char * context , const char * ignorepat , const char * registrar ) ;
int ast_context_remove_ignorepat2 ( struct ast_context * con , const char * ignorepat , const char * registrar ) ;
/*!
/*!
* \ brief Checks to see if a number should be ignored
*
*
* \ param context context to search within
* \ param pattern to check whether it should be ignored or not
*
* Check if a number should be ignored with respect to dialtone cancellation .
*
* \ retval 0 if the pattern should not be ignored
* \ retval non - zero if the pattern should be ignored
* \ retval 0 if the pattern should not be ignored
* \ retval non - zero if the pattern should be ignored
*/
int ast_ignore_pattern ( const char * context , const char * pattern ) ;
/* Locking functions for outer modules, especially for completion functions */
/*!
/*!
* \ brief Write locks the context list
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on error
*/
int ast_wrlock_contexts ( void ) ;
@ -798,20 +804,20 @@ int ast_wrlock_contexts(void);
*/
int ast_rdlock_contexts ( void ) ;
/*!
/*!
* \ brief Unlocks contexts
*
* \ retval 0 on success
*
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_unlock_contexts ( void ) ;
/*!
/*!
* \ brief Write locks a given context
*
*
* \ param con context to lock
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_wrlock_context ( struct ast_context * con ) ;
@ -826,17 +832,17 @@ int ast_wrlock_context(struct ast_context *con);
*/
int ast_rdlock_context ( struct ast_context * con ) ;
/*!
/*!
* \ retval Unlocks the given context
*
*
* \ param con context to unlock
*
* \ retval 0 on success
* \ retval 0 on success
* \ retval - 1 on failure
*/
int ast_unlock_context ( struct ast_context * con ) ;
/*!
/*!
* \ brief locks the macrolock in the given given context
*
* \ param macrocontext name of the macro - context to lock
@ -860,12 +866,14 @@ int ast_context_lockmacro(const char *macrocontext);
*/
int ast_context_unlockmacro ( const char * macrocontext ) ;
/*!\brief Set the channel to next execute the specified dialplan location.
/*!
* \ brief Set the channel to next execute the specified dialplan location .
* \ see ast_async_parseable_goto , ast_async_goto_if_exists
*/
int ast_async_goto ( struct ast_channel * chan , const char * context , const char * exten , int priority ) ;
/*!\brief Set the channel to next execute the specified dialplan location.
/*!
* \ brief Set the channel to next execute the specified dialplan location .
*/
int ast_async_goto_by_name ( const char * chan , const char * context , const char * exten , int priority ) ;
@ -887,7 +895,7 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout,
*/
int pbx_checkcondition ( const char * condition ) ;
/*! @name
/*! @name
* Functions for returning values from structures */
/*! @{ */
const char * ast_get_context_name ( struct ast_context * con ) ;
@ -898,7 +906,7 @@ const char *ast_get_ignorepat_name(struct ast_ignorepat *ip);
const char * ast_get_switch_name ( struct ast_sw * sw ) ;
const char * ast_get_switch_data ( struct ast_sw * sw ) ;
int ast_get_switch_eval ( struct ast_sw * sw ) ;
/*! @} */
/*! @name Other Extension stuff */
@ -934,14 +942,17 @@ struct ast_ignorepat *ast_walk_context_ignorepats(struct ast_context *con,
struct ast_sw * ast_walk_context_switches ( struct ast_context * con , struct ast_sw * sw ) ;
/*! @} */
/*!\brief Create a human-readable string, specifying all variables and their corresponding values.
/*!
* \ brief Create a human - readable string , specifying all variables and their corresponding values .
* \ param chan Channel from which to read variables
* \ param buf Dynamic string in which to place the result ( should be allocated with \ see ast_str_create ) .
* \ param buf Dynamic string in which to place the result ( should be allocated with ast_str_create ) .
* \ see ast_str_create
* \ note Will lock the channel .
*/
int pbx_builtin_serialize_variables ( struct ast_channel * chan , struct ast_str * * buf ) ;
/*!\brief Return a pointer to the value of the corresponding channel variable.
/*!
* \ brief Return a pointer to the value of the corresponding channel variable .
* \ note Will lock the channel .
*
* \ note This function will return a pointer to the buffer inside the channel
@ -960,29 +971,34 @@ int pbx_builtin_serialize_variables(struct ast_channel *chan, struct ast_str **b
*/
const char * pbx_builtin_getvar_helper ( struct ast_channel * chan , const char * name ) ;
/*!\brief Add a variable to the channel variable stack, without removing any previously set value.
/*!
* \ brief Add a variable to the channel variable stack , without removing any previously set value .
* \ note Will lock the channel .
*/
void pbx_builtin_pushvar_helper ( struct ast_channel * chan , const char * name , const char * value ) ;
/*!\brief Add a variable to the channel variable stack, removing the most recently set value for the same name.
/*!
* \ brief Add a variable to the channel variable stack , removing the most recently set value for the same name .
* \ note Will lock the channel . May also be used to set a channel dialplan function to a particular value .
* \ see ast_func_write
*/
void pbx_builtin_setvar_helper ( struct ast_channel * chan , const char * name , const char * value ) ;
/*!\brief Retrieve the value of a builtin variable or variable from the channel variable stack.
/*!
* \ brief Retrieve the value of a builtin variable or variable from the channel variable stack .
* \ note Will lock the channel .
*/
void pbx_retrieve_variable ( struct ast_channel * c , const char * var , char * * ret , char * workspace , int workspacelen , struct varshead * headp ) ;
void pbx_builtin_clear_globals ( void ) ;
/*!\brief Parse and set a single channel variable, where the name and value are separated with an '=' character.
/*!
* \ brief Parse and set a single channel variable , where the name and value are separated with an ' = ' character .
* \ note Will lock the channel .
*/
int pbx_builtin_setvar ( struct ast_channel * chan , const char * data ) ;
/*!\brief Parse and set multiple channel variables, where the pairs are separated by the ',' character, and name and value are separated with an '=' character.
/*!
* \ brief Parse and set multiple channel variables , where the pairs are separated by the ' , ' character , and name and value are separated with an ' = ' character .
* \ note Will lock the channel .
*/
int pbx_builtin_setvar_multiple ( struct ast_channel * chan , const char * data ) ;
@ -1051,7 +1067,7 @@ int pbx_set_extenpatternmatchnew(int newval);
* will be tried directly through the named switch prior to any other
* matching within that context .
* \ since 1.6 .1
*/
*/
void pbx_set_overrideswitch ( const char * newval ) ;
/*!
@ -1096,22 +1112,22 @@ int ast_custom_function_unregister(struct ast_custom_function *acf);
*/
int __ast_custom_function_register ( struct ast_custom_function * acf , struct ast_module * mod ) ;
/*!
/*!
* \ brief Retrieve the number of active calls
*/
int ast_active_calls ( void ) ;
/*!
/*!
* \ brief Retrieve the total number of calls processed through the PBX since last restart
*/
int ast_processed_calls ( void ) ;
/*!
* \ brief executes a read operation on a function
* \ brief executes a read operation on a function
*
* \ param chan Channel to execute on
* \ param function Data containing the function call string ( will be modified )
* \ param workspace A pointer to safe memory to use for a return value
* \ param workspace A pointer to safe memory to use for a return value
* \ param len the number of bytes in workspace
*
* This application executes a function in read mode on a given channel .
@ -1122,7 +1138,7 @@ int ast_processed_calls(void);
int ast_func_read ( struct ast_channel * chan , const char * function , char * workspace , size_t len ) ;
/*!
* \ brief executes a read operation on a function
* \ brief executes a read operation on a function
*
* \ param chan Channel to execute on
* \ param function Data containing the function call string ( will be modified )
@ -1151,12 +1167,13 @@ int ast_func_read2(struct ast_channel *chan, const char *function, struct ast_st
int ast_func_write ( struct ast_channel * chan , const char * function , const char * value ) ;
/*!
* \ details
* When looking up extensions , we can have different requests
* identified by the ' action ' argument , as follows .
* Note that the coding is such that the low 4 bits are the
*
* \ note that the coding is such that the low 4 bits are the
* third argument to extension_match_core .
*/
enum ext_match_t {
E_MATCHMORE = 0x00 , /* extension can match but only with more 'digits' */
E_CANMATCH = 0x01 , /* extension can match with or without more 'digits' */
@ -1170,7 +1187,7 @@ enum ext_match_t {
# define STATUS_NO_EXTENSION 2
# define STATUS_NO_PRIORITY 3
# define STATUS_NO_LABEL 4
# define STATUS_SUCCESS 5
# define STATUS_SUCCESS 5
# define AST_PBX_MAX_STACK 128
/* request and result for pbx_find_extension */
@ -1188,7 +1205,7 @@ struct pbx_find_info {
const char * data ; /* set on return */
const char * foundcontext ; /* set on return */
} ;
struct ast_exten * pbx_find_extension ( struct ast_channel * chan ,
struct ast_context * bypass , struct pbx_find_info * q ,
const char * context , const char * exten , int priority ,
@ -1200,9 +1217,9 @@ struct ast_exten *pbx_find_extension(struct ast_channel *chan,
following func */
int ast_wrlock_contexts_version ( void ) ;
/*!\brief hashtable functions for contexts */
/*! \brief hashtable functions for contexts */
/*! @{ */
int ast_hashtab_compare_contexts ( const void * ah_a , const void * ah_b ) ;
unsigned int ast_hashtab_hash_contexts ( const void * obj ) ;