summaryrefslogtreecommitdiffstats
path: root/interface.c
diff options
context:
space:
mode:
authorSuper User2007-07-07 17:13:20 +0200
committerSuper User2007-07-07 17:13:20 +0200
commit3754d8f73ff7cb55e204f7ede6569028407a00e5 (patch)
treead989d2f0beba3a985ac4f53c973afa630c56de1 /interface.c
parentbackup (diff)
downloadlcr-3754d8f73ff7cb55e204f7ede6569028407a00e5.tar.gz
lcr-3754d8f73ff7cb55e204f7ede6569028407a00e5.tar.xz
lcr-3754d8f73ff7cb55e204f7ede6569028407a00e5.zip
backup
compiles, runs, but not enough debugged
Diffstat (limited to 'interface.c')
-rw-r--r--interface.c74
1 files changed, 44 insertions, 30 deletions
diff --git a/interface.c b/interface.c
index 2fe7b2c..7b90d15 100644
--- a/interface.c
+++ b/interface.c
@@ -256,7 +256,6 @@ static int inter_port(struct interface *interface, char *filename, int line, cha
{
struct interface_port *ifport, **ifportp;
struct interface *searchif;
- struct interface_port *searchport;
int val;
val = get_number(value);
@@ -269,7 +268,7 @@ static int inter_port(struct interface *interface, char *filename, int line, cha
searchif = interface_newlist;
while(searchif)
{
- searchport = searchif->ifport;
+ ifport = searchif->ifport;
while(ifport)
{
if (ifport->portnum == val)
@@ -883,7 +882,7 @@ struct interface *read_interfaces(void)
parameter[strlen(parameter)-1] = '\0';
/* check if interface name already exists */
- interface = interface_first;
+ interface = interface_newlist;
while(interface)
{
if (!strcasecmp(interface->name, parameter+1))
@@ -921,10 +920,12 @@ struct interface *read_interfaces(void)
{
if (ifparam->func(interface, filename, line, parameter, value))
goto error;
- continue;
+ break;
}
ifparam++;
}
+ if (ifparam->name)
+ continue;
SPRINT(interface_error, "Error in %s (line %d): unknown parameter: '%s'.\n", filename, line, parameter);
goto error;
@@ -1092,38 +1093,52 @@ void relink_interfaces(void)
{
if (!ifport->mISDNport)
{
- /* open new port */
- mISDNport = mISDNport_open(ifport->portnum, ifport->ptp, ifport->ptmp);
- if (mISDNport)
- {
- ifport->mISDNport = mISDNport;
- mISDNport->ifport = ifport;
- }
- }
- if (ifport->mISDNport)
- {
- /* default channel selection list */
- if (!ifport->out_channel)
- default_out_channel(ifport);
- if (!ifport->in_channel)
- default_in_channel(ifport);
- /* default is_tones */
- if (ifport->interface->is_tones)
- ifport->mISDNport->is_tones = (ifport->interface->is_tones==IS_YES);
- else
- ifport->mISDNport->is_tones = (ifport->mISDNport->ntmode)?1:0;
- /* default is_earlyb */
- if (ifport->interface->is_earlyb)
- ifport->mISDNport->is_earlyb = (ifport->interface->is_earlyb==IS_YES);
- else
- ifport->mISDNport->is_earlyb = (ifport->mISDNport->ntmode)?0:1;
+ load_port(ifport);
}
+ ifport = ifport->next;
}
interface = interface->next;
}
}
+
+/*
+ * load port
+ */
+void load_port(struct interface_port *ifport)
+{
+ struct mISDNport *mISDNport;
+
+ /* open new port */
+ mISDNport = mISDNport_open(ifport->portnum, ifport->ptp, ifport->ptmp, ifport->interface);
+ if (mISDNport)
+ {
+ /* link port */
+ ifport->mISDNport = mISDNport;
+ mISDNport->ifport = ifport;
+
+ /* default channel selection list */
+ if (!ifport->out_channel)
+ default_out_channel(ifport);
+ if (!ifport->in_channel)
+ default_in_channel(ifport);
+ /* default is_tones */
+ if (ifport->interface->is_tones)
+ ifport->mISDNport->tones = (ifport->interface->is_tones==IS_YES);
+ else
+ ifport->mISDNport->tones = (ifport->mISDNport->ntmode)?1:0;
+ /* default is_earlyb */
+ if (ifport->interface->is_earlyb)
+ ifport->mISDNport->earlyb = (ifport->interface->is_earlyb==IS_YES);
+ else
+ ifport->mISDNport->earlyb = (ifport->mISDNport->ntmode)?0:1;
+ } else
+ {
+ ifport->block = 2; /* not available */
+ }
+}
+
/*
* give summary of interface syntax
*/
@@ -1151,4 +1166,3 @@ void doc_interface(void)
}
}
-