diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 7913f33facf93ac3c13886578c414ec67ec36ba3..69b235b27f8ce97c46d6a287f832fdf394bb26aa 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -522,6 +522,8 @@ struct chan_iax2_pvt { char ani[80]; /*! DNID */ char dnid[80]; + /*! RDNIS */ + char rdnis[80]; /*! Requested Extension */ char exten[AST_MAX_EXTENSION]; /*! Expected Username */ @@ -2995,6 +2997,8 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout) iax_ie_append_str(&ied, IAX_IE_LANGUAGE, c->language); if (!ast_strlen_zero(c->cid.cid_dnid)) iax_ie_append_str(&ied, IAX_IE_DNID, c->cid.cid_dnid); + if (!ast_strlen_zero(c->cid.cid_rdnis)) + iax_ie_append_str(&ied, IAX_IE_RDNIS, c->cid.cid_rdnis); if (pds.context) iax_ie_append_str(&ied, IAX_IE_CALLED_CONTEXT, pds.context); @@ -3402,6 +3406,8 @@ static struct ast_channel *ast_iax2_new(int callno, int state, int capability) ast_copy_string(tmp->language, i->language, sizeof(tmp->language)); if (!ast_strlen_zero(i->dnid)) tmp->cid.cid_dnid = ast_strdup(i->dnid); + if (!ast_strlen_zero(i->rdnis)) + tmp->cid.cid_rdnis = ast_strdup(i->rdnis); tmp->cid.cid_pres = i->calling_pres; tmp->cid.cid_ton = i->calling_ton; tmp->cid.cid_tns = i->calling_tns; @@ -4711,6 +4717,8 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies ast_copy_string(iaxs[callno]->ani, ies->calling_ani, sizeof(iaxs[callno]->ani)); if (ies->dnid) ast_copy_string(iaxs[callno]->dnid, ies->dnid, sizeof(iaxs[callno]->dnid)); + if (ies->rdnis) + ast_copy_string(iaxs[callno]->rdnis, ies->rdnis, sizeof(iaxs[callno]->rdnis)); if (ies->called_context) ast_copy_string(iaxs[callno]->context, ies->called_context, sizeof(iaxs[callno]->context)); if (ies->language)