struct mansession *s;
/*! Manager message */
const struct message *m;
+ /*! Manager Action ID */
+ const char *action_id;
/*! user specified argument data */
void *arg;
};
}
ast_str_set(&buf, 0, "Event: %s\r\n", event);
+ if (!ast_strlen_zero(ami->action_id)) {
+ ast_str_append(&buf, 0, "ActionID: %s\r\n", ami->action_id);
+ }
return buf;
}
static int ami_show_endpoint(struct mansession *s, const struct message *m)
{
- struct ast_sip_ami ami = { .s = s, .m = m };
+ struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), };
RAII_VAR(struct ast_sip_endpoint *, endpoint, NULL, ao2_cleanup);
const char *endpoint_name = astman_get_header(m, "Endpoint");
int count = 0;
endpoint_name);
}
- astman_append(s,
- "Event: EndpointDetailComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: EndpointDetailComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", count + 1);
return 0;
}
static int ami_show_endpoints(struct mansession *s, const struct message *m)
{
- struct ast_sip_ami ami = { .s = s, .m = m };
+ struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), };
RAII_VAR(struct ao2_container *, endpoints, NULL, ao2_cleanup);
int num;
ao2_callback(endpoints, OBJ_NODATA, format_ami_endpoints, &ami);
- astman_append(s,
- "Event: EndpointListComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: EndpointListComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", num);
return 0;
}
static int ami_show_outbound_registrations(struct mansession *s,
const struct message *m)
{
- struct ast_sip_ami ami = { .s = s, .m = m };
+ struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), };
struct sip_ami_outbound ami_outbound = { .ami = &ami };
RAII_VAR(struct ao2_container *, regs, ast_sorcery_retrieve_by_fields(
ast_sip_get_sorcery(), "registration", AST_RETRIEVE_FLAG_MULTIPLE |
ao2_callback(regs, OBJ_NODATA, ami_outbound_registration_detail, &ami_outbound);
- astman_append(s,
- "Event: OutboundRegistrationDetailComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: OutboundRegistrationDetailComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"Registered: %d\r\n"
"NotRegistered: %d\r\n\r\n",
ami_outbound.registered,
sip_outbound_registration_perform_all();
ast_manager_register_xml("PJSIPUnregister", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_unregister);
- ast_manager_register_xml("PJSIPShowRegistrationsOutbound", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING,ami_show_outbound_registrations);
+ ast_manager_register_xml("PJSIPShowRegistrationsOutbound", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_show_outbound_registrations);
cli_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL);
if (!cli_formatter) {
static int ami_show_subscriptions_inbound(struct mansession *s, const struct message *m)
{
- struct ast_sip_ami ami = { .s = s, .m = m };
+ struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), };
int num;
astman_send_listack(s, m, "Following are Events for "
num = for_each_subscription(ami_subscription_detail_inbound, &ami);
- astman_append(s,
- "Event: InboundSubscriptionDetailComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: InboundSubscriptionDetailComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", num);
return 0;
}
static int ami_show_subscriptions_outbound(struct mansession *s, const struct message *m)
{
- struct ast_sip_ami ami = { .s = s, .m = m };
+ struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), };
int num;
astman_send_listack(s, m, "Following are Events for "
num = for_each_subscription(ami_subscription_detail_outbound, &ami);
- astman_append(s,
- "Event: OutboundSubscriptionDetailComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: OutboundSubscriptionDetailComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", num);
return 0;
}
static int ami_show_registrations(struct mansession *s, const struct message *m)
{
int count = 0;
- struct ast_sip_ami ami = { .s = s, .m = m, .arg = &count };
+ struct ast_sip_ami ami = { .s = s, .m = m, .arg = &count, .action_id = astman_get_header(m, "ActionID"), };
astman_send_listack(s, m, "Following are Events for each Inbound "
"registration", "start");
ami_registrations_endpoints(&ami);
- astman_append(s,
- "Event: InboundRegistrationDetailComplete\r\n"
- "EventList: Complete\r\n"
+ astman_append(s, "Event: InboundRegistrationDetailComplete\r\n");
+ if (!ast_strlen_zero(ami.action_id)) {
+ astman_append(s, "ActionID: %s\r\n", ami.action_id);
+ }
+ astman_append(s, "EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", count);
return 0;
}