87 const char *cmd,
char *data,
struct ast_str **
buf, ssize_t
len)
120 if (!pjsip_sorcery) {
126 if ((contact_name = strstr(
args.contact_name,
"@@"))) {
127 size_t aor_name_len = contact_name -
args.contact_name;
128 char aor_name[aor_name_len + 1];
132 strncpy(aor_name,
args.contact_name, aor_name_len);
133 aor_name[aor_name_len] =
'\0';
153 if (!strcmp(
args.field_name,
"status")) {
155 }
else if (!strcmp(
args.field_name,
"rtt")) {
156 if (!contact_status || contact_status->status !=
AVAILABLE) {
159 ast_str_set(buf, len,
"%" PRId64, contact_status->rtt);
172 for (it_change_set = change_set; it_change_set; it_change_set = it_change_set->
next) {
173 if (!strcmp(it_change_set->
name,
args.field_name)) {
179 if (!it_change_set) {
193 .
name =
"PJSIP_CONTACT",
211 .requires =
"res_pjsip",
struct ast_variable * next
Main Channel structure associated with a channel.
Asterisk main include file. File version handling, generic pbx functions.
struct ast_sip_contact_status * ast_sip_get_contact_status(const struct ast_sip_contact *contact)
Retrieve the current status for a contact.
void ast_variables_destroy(struct ast_variable *var)
Free variable list.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
#define ao2_callback(c, flags, cb_fn, arg)
Structure for variables, used for configurations and for channel variables.
Full structure for sorcery.
const char * ast_sip_get_contact_status_label(const enum ast_sip_contact_status_type status)
translate ast_sip_contact_status_type to character string.
int ast_custom_function_unregister(struct ast_custom_function *acf)
Unregister a custom function.
#define ast_strlen_zero(foo)
void * ast_sorcery_retrieve_by_id(const struct ast_sorcery *sorcery, const char *type, const char *id)
Retrieve an object using its unique identifier.
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.
Data structure associated with a custom dialplan function.
#define ast_strdupa(s)
duplicate a string in memory from the stack
const char * ast_sorcery_object_get_id(const void *object)
Get the unique identifier of a sorcery object.
Core PBX routines and definitions.
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field ...
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
#define ast_sorcery_objectset_create(sorcery, object)
Create an object set (KVP list) for an object.
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS|AST_MODFLAG_LOAD_ORDER, "HTTP Phone Provisioning",.support_level=AST_MODULE_SUPPORT_EXTENDED,.load=load_module,.unload=unload_module,.reload=reload,.load_pri=AST_MODPRI_CHANNEL_DEPEND,.requires="http",)
struct ast_sorcery * ast_sip_get_sorcery(void)
Get a pointer to the SIP sorcery structure.
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
Application convenience functions, designed to give consistent look and feel to Asterisk apps...
#define ast_custom_function_register(acf)
Register a custom function.
Sorcery Data Access Layer API.
#define AST_APP_ARG(name)
Define an application argument.