/* check for port already assigned, but not for shared gsm interface */
searchif = interface_newlist;
#if defined WITH_GSM_BS || defined WITH_GSM_MS
- if (!strcmp(value, gsm->conf.interface_lcr))
+ if (options.gsm && !strcmp(value, gsm->conf.interface_lcr))
#endif
{
while(searchif) {
}
/* set portname */
- if (inter_portname(interface, filename, line, (char *)"portname", gsm->conf.interface_lcr))
+ if (inter_portname(interface, filename, line, (char *)"portname", options.loopback_lcr))
return(-1);
/* goto end of chain again to set gsmflag */
}
/* set portname */
- if (inter_portname(interface, filename, line, (char *)"portname", gsm->conf.interface_lcr))
+ if (inter_portname(interface, filename, line, (char *)"portname", options.loopback_lcr))
return(-1);
/* goto end of chain again to set gsmflag and socket */
return(0);
}
#endif
+static int inter_remote(struct interface *interface, char *filename, int line, char *parameter, char *value)
+{
+ struct interface_port *ifport;
+ struct interface *searchif;
+
+ if (!value[0]) {
+ SPRINT(interface_error, "Error in %s (line %d): parameter '%s' expects application name as value.\n", filename, line, parameter);
+ return(-1);
+ }
+ searchif = interface_newlist;
+ while(searchif) {
+ ifport = searchif->ifport;
+ while(ifport) {
+ if (ifport->remote && !strcmp(ifport->remote_app, value)) {
+ SPRINT(interface_error, "Error in %s (line %d): port '%s' already uses remote application '%s'.\n", filename, line, ifport->portname, value);
+ return(-1);
+ }
+ ifport = ifport->next;
+ }
+ searchif = searchif->next;
+ }
+
+ /* set portname */
+ if (inter_portname(interface, filename, line, (char *)"portname", options.loopback_lcr))
+ return(-1);
+
+ /* goto end of chain again to set application name */
+ ifport = interface->ifport;
+ while(ifport->next)
+ ifport = ifport->next;
+ ifport->remote = 1;
+ SCPY(ifport->remote_app, value);
+
+
+ return(0);
+}
/*
"Channel selection list for all outgoing calls to the interface.\n"
"A free channels is searched in order of appearance.\n"
"This parameter must follow a 'port' parameter.\n"
- " force - Forces the selected port with no acceptable alternative (see DSS1).\n"
+ " force - Forces the selected port with no acceptable alternative (see Q.931).\n"
+ " -> this will be automatically set for multipoint (ptmp) NT-mode ports\n"
" <number>[,...] - List of channels to search.\n"
" free - Select any free channel\n"
" any - On outgoing calls, signal 'any channel acceptable'. (see DSS1)\n"
" suppress - Suppress received tones, as they will be recognized."},
#endif
+ {"remote", &inter_remote, "<application>",
+ "Sets up an interface that communicates with the remote application.\n"
+ "Use \"asterisk\" to use chan_lcr as remote application."},
+
{NULL, NULL, NULL, NULL}
};
default_out_channel(ifport);
if (!ifport->in_channel)
default_in_channel(ifport);
+ /* must force the channel on PTMP/NT ports */
+ if (!ifport->mISDNport->ptp && ifport->mISDNport->ntmode)
+ ifport->channel_force = 1;
/* default is_tones */
if (ifport->interface->is_tones)
ifport->mISDNport->tones = (ifport->interface->is_tones==IS_YES);