diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 1eb618bd45..9f03042093 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -185,6 +185,9 @@ R/O DAHDI span related to this channel. + + R/O DAHDI logical group related to this channel. + R/O DAHDI channel type, one of: @@ -462,6 +465,9 @@ Raised when a DAHDI channel is created or an underlying technology is associated with a DAHDI channel. + + The DAHDI logical group associated with this channel. + The DAHDI span associated with this channel. @@ -1727,21 +1733,24 @@ static struct ast_manager_event_blob *dahdichannel_to_ami(struct stasis_message { RAII_VAR(struct ast_str *, channel_string, NULL, ast_free); struct ast_channel_blob *obj = stasis_message_data(msg); - struct ast_json *span, *channel; + struct ast_json *group, *span, *channel; channel_string = ast_manager_build_channel_state_string(obj->snapshot); if (!channel_string) { return NULL; } + group = ast_json_object_get(obj->blob, "group"); span = ast_json_object_get(obj->blob, "span"); channel = ast_json_object_get(obj->blob, "channel"); return ast_manager_event_blob_create(EVENT_FLAG_CALL, "DAHDIChannel", "%s" + "DAHDIGroup: %llu\r\n" "DAHDISpan: %u\r\n" "DAHDIChannel: %s\r\n", ast_str_buffer(channel_string), + (ast_group_t)ast_json_integer_get(group), (unsigned int)ast_json_integer_get(span), ast_json_string_get(channel)); } @@ -1751,13 +1760,14 @@ STASIS_MESSAGE_TYPE_DEFN_LOCAL(dahdichannel_type, ); /*! \brief Sends a DAHDIChannel channel blob used to produce DAHDIChannel AMI messages */ -static void publish_dahdichannel(struct ast_channel *chan, int span, const char *dahdi_channel) +static void publish_dahdichannel(struct ast_channel *chan, ast_group_t group, int span, const char *dahdi_channel) { RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref); ast_assert(dahdi_channel != NULL); - blob = ast_json_pack("{s: i, s: s}", + blob = ast_json_pack("{s: i, s: i, s: s}", + "group", group, "span", span, "channel", dahdi_channel); if (!blob) { @@ -1793,7 +1803,7 @@ static void dahdi_ami_channel_event(struct dahdi_pvt *p, struct ast_channel *cha /* Real channel */ snprintf(ch_name, sizeof(ch_name), "%d", p->channel); } - publish_dahdichannel(chan, p->span, ch_name); + publish_dahdichannel(chan, p->group, p->span, ch_name); } #ifdef HAVE_PRI @@ -6692,6 +6702,10 @@ static int dahdi_func_read(struct ast_channel *chan, const char *function, char ast_mutex_lock(&p->lock); snprintf(buf, len, "%d", p->span); ast_mutex_unlock(&p->lock); + } else if (!strcasecmp(data, "dahdi_group")) { + ast_mutex_lock(&p->lock); + snprintf(buf, len, "%llu", p->group); + ast_mutex_unlock(&p->lock); } else if (!strcasecmp(data, "dahdi_type")) { ast_mutex_lock(&p->lock); switch (p->sig) {