Index: channels/chan_dahdi.c =================================================================== 472a473 > int h324musellc; 1193a1195 > .h324musellc = 0, 3049a3052,3058 > if (p->digital) { > if (option_verbose > 2) > ast_verbose(VERBOSE_PREFIX_3 "digital call, setting user information layer 1 to %d (0x%x)\n", > ast->userinformationlayer1, ast->userinformationlayer1); > d > } > 3052c3061 < (p->digital ? -1 : --- > (p->digital ? ast->userinformationlayer1 : 3053a3063,3073 > > /* check if h324m is configure to use low layer compatibility instead of bearer capability */ > ast_verbose(VERBOSE_PREFIX_3 "dahdi call: h324musellc=%d, ast->userinformationlayer1=%d\n", > p->pri->h324musellc, ast->userinformationlayer1); > > if (p->pri->h324musellc && (ast->userinformationlayer1==PRI_LAYER_1_H223_H245)) { > pri_sr_set_llc(sr, p->digital ? PRI_TRANS_CAP_DIGITAL : ast->transfercapability, > (p->digital ? ast->userinformationlayer1 : > ((p->law == DAHDI_LAW_ALAW) ? PRI_LAYER_1_ALAW : PRI_LAYER_1_ULAW))); > } > 4696c4716 < static struct ast_channel *dahdi_new(struct dahdi_pvt *, int, int, int, int, int); --- > static struct ast_channel *dahdi_new(struct dahdi_pvt *, int, int, int, int, int, int); 5483c5503 < chan = dahdi_new(p, AST_STATE_RESERVED, 0, SUB_THREEWAY, 0, 0); --- > chan = dahdi_new(p, AST_STATE_RESERVED, 0, SUB_THREEWAY, 0, 0, -1); 6524c6544,6545 < static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, int transfercapability) --- > static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, > int transfercapability, int userinformationlayer1) 6566c6587,6588 < if (ps.curlaw == DAHDI_LAW_ALAW) --- > if (ps.curlaw == DAHDI_LAW_ALAW) { > ast_log(LOG_DEBUG, "dahdi_new: ps.curlaw=DAHDI_LAW_ALAW, setting deflaw to AST_FORMAT_ALAW\n"); 6568c6590,6591 < else --- > } else { > ast_log(LOG_DEBUG, "dahdi_new: ps.curlaw!=DAHDI_LAW_ALAW, setting deflaw to AST_FORMAT_ULAW\n"); 6569a6593 > } 6571c6595,6596 < if (law == DAHDI_LAW_ALAW) --- > if (law == DAHDI_LAW_ALAW) { > ast_log(LOG_DEBUG, "zt_new: law=DAHDI_LAW_ALAW, setting deflaw to AST_FORMAT_ALAW\n"); 6573c6598,6599 < else --- > } else { > ast_log(LOG_DEBUG, "zt_new: law=DAHDI_LAW_ALAW, setting deflaw to AST_FORMAT_ULAW\n"); 6575a6602,6603 > } > 6681a6710 > tmp->userinformationlayer1 = userinformationlayer1; 7660a7690,7695 > if (option_verbose > 2) > /* this only shows up if you have n of the dring patterns filled in */ > ast_verbose( VERBOSE_PREFIX_3 "Checking %d,%d,%d\n", > p->drings.ringnum[counter].ring[0], > p->drings.ringnum[counter].ring[1], > p->drings.ringnum[counter].ring[2]); 8062c8097 < if ((chan = dahdi_new(mtd->pvt, AST_STATE_RING, 0, SUB_REAL, 0, 0))) { --- > if ((chan = dahdi_new(mtd->pvt, AST_STATE_RING, 0, SUB_REAL, 0, 0, -1))) { 8381c8416 < chan = dahdi_new(i, AST_STATE_RING, 1, SUB_REAL, 0, 0); --- > chan = dahdi_new(i, AST_STATE_RING, 1, SUB_REAL, 0, 0, -1); 8390c8425 < chan = dahdi_new(i, AST_STATE_RESERVED, 0, SUB_REAL, 0, 0); --- > chan = dahdi_new(i, AST_STATE_RESERVED, 0, SUB_REAL, 0, 0, -1); 8433c8468 < chan = dahdi_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, 0); --- > chan = dahdi_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, 0, -1); 8435c8470 < chan = dahdi_new(i, AST_STATE_RING, 0, SUB_REAL, 0, 0); --- > chan = dahdi_new(i, AST_STATE_RING, 0, SUB_REAL, 0, 0, -1); 8543c8578 < chan = dahdi_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, 0); --- > chan = dahdi_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, 0, -1); 9920c9955 < tmp = dahdi_new(p, AST_STATE_RESERVED, 0, p->owner ? SUB_CALLWAIT : SUB_REAL, 0, 0); --- > tmp = dahdi_new(p, AST_STATE_RESERVED, 0, p->owner ? SUB_CALLWAIT : SUB_REAL, 0, 0, -1); 11685a11721 > ast_log(LOG_DEBUG, "PRI_EVENT_RING: seting incoming call on channel %d to law=%d\n", pri->pvts[chanpos]->channel, law); 11689c11725,11726 < if (e->ring.layer1 == PRI_LAYER_1_ALAW) --- > ast_log(LOG_DEBUG, "PRI_EVENT_RING: user information layer 1 of incoming call = %d (0x%x)\n",e->ring.layer1, e->ring.layer1); > if (e->ring.layer1 == PRI_LAYER_1_ALAW) { 11691c11728,11729 < else --- > ast_log(LOG_DEBUG, "PRI_EVENT_RING: treat incoming call on channel %d as ALAW(%d)\n", pri->pvts[chanpos]->channel, law); > } else { 11692a11731,11733 > ast_log(LOG_DEBUG, "PRI_EVENT_RING: treat incoming call on channel %d as ULAW(%d)\n", pri->pvts[chanpos]->channel, law); > } > ast_log(LOG_DEBUG, "PRI_EVENT_RING: seting incoming call on channel %d to law=%d\n", pri->pvts[chanpos]->channel, law); 11719c11760 < c = dahdi_new(crv, AST_STATE_RESERVED, 0, SUB_REAL, law, e->ring.ctype); --- > c = dahdi_new(crv, AST_STATE_RESERVED, 0, SUB_REAL, law, e->ring.ctype, e->ring.layer1); 11723c11764 < c = dahdi_new(pri->pvts[chanpos], AST_STATE_RESERVED, 0, SUB_REAL, law, e->ring.ctype); --- > c = dahdi_new(pri->pvts[chanpos], AST_STATE_RESERVED, 0, SUB_REAL, law, e->ring.ctype, e->ring.layer1); 11767c11808,11809 < c = dahdi_new(pri->pvts[chanpos], AST_STATE_RING, 1, SUB_REAL, law, e->ring.ctype); --- > ast_log(LOG_DEBUG, "PRI_EVENT_RING: zt_new: law=%d,ul1=%d\n",law, e->ring.layer1); > c = dahdi_new(pri->pvts[chanpos], AST_STATE_RING, 1, SUB_REAL, law, e->ring.ctype, e->ring.layer1); 13189a13232,13235 > if (tmp->pri->h324musellc == 1) > ast_cli(fd, "H324M Signalling: use 'Low Layer Compatibility' IE\n"); > else > ast_cli(fd, "H324M Signalling: use 'Bearer Capability' IE\n"); 15047a15094,15103 > } else if (!strcasecmp(v->name, "h324m")) { > if (!strcasecmp(v->value, "bc")) { > confp->pri.h324musellc = 0; > ast_log(LOG_WARNING, "h324m mode: confp->pri.h324musellc=%d\n",confp->pri.h324musellc); > } else if (!strcasecmp(v->value, "llc")) { > confp->pri.h324musellc = 1; > ast_log(LOG_WARNING, "h324m mode: confp->pri.h324musellc=%d\n",confp->pri.h324musellc); > } else { > ast_log(LOG_WARNING, "Unknown h324m mode '%s' at line %d. Using default=bc\n", v->value, v->lineno); > } Index: apps/app_dial.c =================================================================== 1746a1747 > tc->userinformationlayer1 = chan->userinformationlayer1; Index: funcs/func_channel.c =================================================================== 94a95,97 > > R/W transfercapability ISDN transfer capability (part of ISDN transfer capability). > 97a101,103 > > R/W userinformationlayer1 ISDN User Information Layer 1 (part of ISDN transfer capability) > 260c266,270 < else if (!strcasecmp(data, "callgroup")) { --- > else if (!strcasecmp(data, "userinformationlayer1")) { > char ul1[10]; > snprintf(ul1,9,"%d",chan->userinformationlayer1); > locked_copy_string(chan, buf, ul1, len); > } else if (!strcasecmp(data, "callgroup")) { 327a338,339 > } else if (!strcasecmp(data, "userinformationlayer1")) { > chan->userinformationlayer1 = atoi(value); 330,331c342 < ast_log(LOG_WARNING, "Unknown or unavailable item requested: '%s'\n", < data); --- > ast_log(LOG_WARNING, "Unknown or unavailable item requested: '%s'\n", data); Index: include/asterisk/channel.h =================================================================== 497a498 > unsigned short userinformationlayer1; /*!< ISDN User Information Layer 1 - transfercapability is not enough */ Index: configs/chan_dahdi.conf.sample =================================================================== 336a337,345 > ; H324M signalling. 3G UMTS video calls require to set a certain User Information Layer 1 > ; value. The UL1 can be set either in the Bearer Capability Information Element or in the > ; Low Layer Compatiblity Information Element. Depending on the switch were your PRI is > ; connected to, you need one or the other. > ; Allowed values: bc or llc > ; Default value: bc > ; > ;h324m=lcc > ;