73{
79 int res;
80
84 );
85
86
89 return -1;
90 }
91
93
96 return -1;
97 }
98
101 return -1;
102 }
103
105 if (!pjsip_sorcery) {
107 return -1;
108 }
109
111 if (!endpoint_obj) {
113 return -1;
114 }
115
117 if (!change_set) {
119 return -1;
120 }
121
122 for (it_change_set = change_set; it_change_set; it_change_set = it_change_set->
next) {
123 if (!strcmp(it_change_set->
name,
args.field_name)) {
124 if (!strcmp(it_change_set->
name,
"disallow")) {
126 } else {
128 }
129 break;
130 }
131 }
132
133 res = it_change_set ? 0 : 1;
134 if (res) {
136 }
137
139
140 return res;
141}
#define ast_strdupa(s)
duplicate a string in memory from the stack
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
#define AST_APP_ARG(name)
Define an application argument.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
void ast_variables_destroy(struct ast_variable *var)
Free variable list.
struct ast_sorcery * ast_sip_get_sorcery(void)
Get a pointer to the SIP sorcery structure.
#define ast_sorcery_objectset_create(sorcery, object)
Create an object set (KVP list) for an object.
void * ast_sorcery_retrieve_by_id(const struct ast_sorcery *sorcery, const char *type, const char *id)
Retrieve an object using its unique identifier.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
Full structure for sorcery.
Structure for variables, used for configurations and for channel variables.
struct ast_variable * next
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.