mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-07 22:03:50 +00:00
complete ss7 config by setting context and dial plan
This commit is contained in:
parent
4704a30a45
commit
0abbe4bd0e
@ -2198,11 +2198,15 @@ static switch_status_t load_config(void)
|
|||||||
if ((spans = switch_xml_child(cfg, "ss7_spans"))) {
|
if ((spans = switch_xml_child(cfg, "ss7_spans"))) {
|
||||||
for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) {
|
for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) {
|
||||||
ftdm_status_t zstatus = FTDM_FAIL;
|
ftdm_status_t zstatus = FTDM_FAIL;
|
||||||
|
const char *context = "default";
|
||||||
|
const char *dialplan = "XML";
|
||||||
|
ftdm_conf_parameter_t spanparameters[30];
|
||||||
char *id = (char *) switch_xml_attr(myspan, "id");
|
char *id = (char *) switch_xml_attr(myspan, "id");
|
||||||
char *name = (char *) switch_xml_attr(myspan, "name");
|
char *name = (char *) switch_xml_attr(myspan, "name");
|
||||||
char *configname = (char *) switch_xml_attr(myspan, "config");
|
char *configname = (char *) switch_xml_attr(myspan, "config");
|
||||||
ftdm_span_t *span = NULL;
|
ftdm_span_t *span = NULL;
|
||||||
uint32_t span_id = 0;
|
uint32_t span_id = 0;
|
||||||
|
unsigned paramindex = 0;
|
||||||
if (!name && !id) {
|
if (!name && !id) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ss7 span missing required attribute 'id' or 'name', skipping ...\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ss7 span missing required attribute 'id' or 'name', skipping ...\n");
|
||||||
continue;
|
continue;
|
||||||
@ -2239,14 +2243,38 @@ static switch_status_t load_config(void)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0) {
|
memset(spanparameters, 0, sizeof(spanparameters));
|
||||||
if (ftdm_configure_span("ss7", span, on_ss7_signal,
|
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||||
"confnode", ss7confnode,
|
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||||
TAG_END) != FTDM_SUCCESS) {
|
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||||
ftdm_log(FTDM_LOG_ERROR, "Error configuring ss7 FreeTDM span %d\n", span_id);
|
|
||||||
continue;
|
if (sizeof(spanparameters)/sizeof(spanparameters[0]) == paramindex) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for ss7 span, ignoring any parameter after %s\n", var);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(var, "context")) {
|
||||||
|
context = val;
|
||||||
|
} else if (!strcasecmp(var, "dialplan")) {
|
||||||
|
dialplan = val;
|
||||||
|
} else {
|
||||||
|
spanparameters[paramindex].var = var;
|
||||||
|
spanparameters[paramindex].val = val;
|
||||||
|
paramindex++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ftdm_configure_span("ss7", span, on_ss7_signal,
|
||||||
|
"confnode", ss7confnode,
|
||||||
|
"parameters", spanparameters,
|
||||||
|
TAG_END) != FTDM_SUCCESS) {
|
||||||
|
ftdm_log(FTDM_LOG_ERROR, "Error configuring ss7 FreeTDM span %d\n", span_id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
SPAN_CONFIG[span->span_id].span = span;
|
||||||
|
switch_copy_string(SPAN_CONFIG[span->span_id].context, context, sizeof(SPAN_CONFIG[span->span_id].context));
|
||||||
|
switch_copy_string(SPAN_CONFIG[span->span_id].dialplan, dialplan, sizeof(SPAN_CONFIG[span->span_id].dialplan));
|
||||||
|
switch_copy_string(SPAN_CONFIG[span->span_id].type, "Sangoma (SS7)", sizeof(SPAN_CONFIG[span->span_id].type));
|
||||||
ftdm_log(FTDM_LOG_DEBUG, "Configured ss7 FreeTDM span %d with config node %s\n", span_id, configname);
|
ftdm_log(FTDM_LOG_DEBUG, "Configured ss7 FreeTDM span %d with config node %s\n", span_id, configname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2701,7 +2729,6 @@ static switch_status_t load_config(void)
|
|||||||
const char *dialplan = "XML";
|
const char *dialplan = "XML";
|
||||||
uint32_t span_id = 0;
|
uint32_t span_id = 0;
|
||||||
ftdm_span_t *span = NULL;
|
ftdm_span_t *span = NULL;
|
||||||
const char *tonegroup = NULL;
|
|
||||||
ftdm_conf_parameter_t spanparameters[30];
|
ftdm_conf_parameter_t spanparameters[30];
|
||||||
unsigned paramindex = 0;
|
unsigned paramindex = 0;
|
||||||
|
|
||||||
@ -2723,9 +2750,8 @@ static switch_status_t load_config(void)
|
|||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for boost span, ignoring any parameter after %s\n", var);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for boost span, ignoring any parameter after %s\n", var);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(var, "tonegroup")) {
|
|
||||||
tonegroup = val;
|
if (!strcasecmp(var, "context")) {
|
||||||
} else if (!strcasecmp(var, "context")) {
|
|
||||||
context = val;
|
context = val;
|
||||||
} else if (!strcasecmp(var, "dialplan")) {
|
} else if (!strcasecmp(var, "dialplan")) {
|
||||||
dialplan = val;
|
dialplan = val;
|
||||||
@ -2736,10 +2762,6 @@ static switch_status_t load_config(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tonegroup) {
|
|
||||||
tonegroup = "us";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name) {
|
if (name) {
|
||||||
zstatus = ftdm_span_find_by_name(name, &span);
|
zstatus = ftdm_span_find_by_name(name, &span);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1623,8 +1623,8 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_get_sig_status(ftdm_channel_t *ftdmchan,
|
|||||||
if (ftdmchan->span->get_channel_sig_status) {
|
if (ftdmchan->span->get_channel_sig_status) {
|
||||||
return ftdmchan->span->get_channel_sig_status(ftdmchan, sigstatus);
|
return ftdmchan->span->get_channel_sig_status(ftdmchan, sigstatus);
|
||||||
} else {
|
} else {
|
||||||
ftdm_log(FTDM_LOG_ERROR, "get_channel_sig_status method not implemented!\n");
|
/* don't log error here, it can be called just to test if its supported */
|
||||||
return FTDM_FAIL;
|
return FTDM_NOTIMPL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user