--- chan_dahdi.c +++ chan_dahdi.c @@ -381,6 +381,7 @@ static int cur_adjpointcode = -1; static int cur_networkindicator = -1; static int cur_defaultdpc = -1; +static int cur_slc = -1; #endif /* HAVE_SS7 */ #ifdef HAVE_PRI @@ -13948,6 +13949,11 @@ return -1; } else ss7_set_pc(link->ss7, cur_pointcode); + + if (cur_slc < 0) { + ast_log(LOG_ERROR, "Unspecified SLC!\n"); + return -1; + } if (sigchan < 0) { ast_log(LOG_ERROR, "Invalid sigchan!\n"); @@ -13993,9 +13999,9 @@ } if (p.sigtype == DAHDI_SIG_MTP2) - ss7_add_link(link->ss7, SS7_TRANSPORT_DAHDIMTP2, link->fds[curfd]); + ss7_add_link(link->ss7, SS7_TRANSPORT_DAHDIMTP2, link->fds[curfd], cur_slc); else - ss7_add_link(link->ss7, SS7_TRANSPORT_DAHDIDCHAN, link->fds[curfd]); + ss7_add_link(link->ss7, SS7_TRANSPORT_DAHDIDCHAN, link->fds[curfd], cur_slc); link->numsigchans++; @@ -16086,6 +16092,8 @@ if (res < 0) return -1; + } else if (!strcasecmp(v->name, "slc")) { + cur_slc = atoi(v->value); } else if (!strcasecmp(v->name, "ss7_explicitacm")) { struct dahdi_ss7 *link; link = ss7_resolve_linkset(cur_linkset);