X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=interface.c;h=ee753a90713f405d15000735301946f5790cf09d;hp=4b894cfd9772cb84c22a9e0ff2447a3acf1965bb;hb=29ba196ca5cc26f5b61e8c4e405f883040b30bf9;hpb=d5e639588de9c88d5398cd047c5c73f6d439a5a7 diff --git a/interface.c b/interface.c index 4b894cf..ee753a9 100644 --- a/interface.c +++ b/interface.c @@ -897,11 +897,6 @@ static int inter_gsm_bs(struct interface *interface, char *filename, int line, c struct interface_port *ifport; struct interface *searchif; - /* check gsm */ - if (!gsm) { - SPRINT(interface_error, "Error in %s (line %d): GSM is not activated.\n", filename, line); - return(-1); - } searchif = interface_newlist; while(searchif) { ifport = searchif->ifport; @@ -936,13 +931,6 @@ static int inter_gsm_ms(struct interface *interface, char *filename, int line, c #else struct interface_port *ifport, *searchifport; struct interface *searchif; - char *element; - - /* check gsm */ - if (!gsm) { - SPRINT(interface_error, "Error in %s (line %d): GSM is not activated.\n", filename, line); - return(-1); - } /* set portname */ if (inter_portname(interface, filename, line, (char *)"portname", options.loopback_lcr)) @@ -955,27 +943,20 @@ static int inter_gsm_ms(struct interface *interface, char *filename, int line, c ifport->gsm_ms = 1; /* copy values */ - element = strsep(&value, " "); - if (!element || !element[0]) { + if (!value || !value[0]) { SPRINT(interface_error, "Error in %s (line %d): Missing MS name and socket name.\n", filename, line); return(-1); } - SCPY(ifport->gsm_ms_name, element); - element = strsep(&value, " "); - if (!element || !element[0]) { - SPRINT(interface_error, "Error in %s (line %d): Missing socket name after MS name.\n", filename, line); - return(-1); - } - SCPY(ifport->gsm_ms_socket, element); + SCPY(ifport->gsm_ms_name, value); - /* check if socket is used multiple times */ + /* check if name is used multiple times */ searchif = interface_newlist; while(searchif) { searchifport = searchif->ifport; while(searchifport) { if (searchifport != ifport - && !strcmp(searchifport->gsm_ms_socket, ifport->gsm_ms_socket)) { - SPRINT(interface_error, "Error in %s (line %d): mobile '%s' already uses the given socket '%s', choose a different one.\n", filename, line, ifport->gsm_ms_name, searchifport->gsm_ms_socket); + && !strcmp(searchifport->gsm_ms_name, ifport->gsm_ms_name)) { + SPRINT(interface_error, "Error in %s (line %d): mobile '%s' already uses the given MS name '%s', choose a different one.\n", filename, line, ifport->gsm_ms_name, searchifport->gsm_ms_name); return(-1); } searchifport = searchifport->next; @@ -1508,6 +1489,17 @@ void relink_interfaces(void) /* unlink all mISDNports */ mISDNport = mISDNport_first; while(mISDNport) { + if (mISDNport->ifport) { + ifport = mISDNport->ifport; +#ifdef WITH_GSM_MS + if (ifport->gsm_ms) + gsm_ms_delete(ifport->gsm_ms_name); +#endif +#ifdef WITH_GSM_BS + if (ifport->gsm_bs) + gsm_bs_exit(0); +#endif + } mISDNport->ifport = NULL; mISDNport = mISDNport->next; } @@ -1540,11 +1532,7 @@ void relink_interfaces(void) while(mISDNport) { if (mISDNport->ifport == NULL) { PDEBUG(DEBUG_ISDN, "Port %d is not used anymore and will be closed\n", mISDNport->portnum); - /* remove all port objects and destroy port */ -#ifdef WITH_GSM_MS - if (ifport->gsm_ms) - gsm_ms_delete(ifport->gsm_ms_name); -#endif + /* destroy port */ mISDNport_close(mISDNport); goto closeagain; } @@ -1589,7 +1577,11 @@ void load_port(struct interface_port *ifport) mISDNport_static(mISDNport); #ifdef WITH_GSM_MS if (ifport->gsm_ms) - gsm_ms_new(ifport->gsm_ms_name, ifport->gsm_ms_socket); + gsm_ms_new(ifport->gsm_ms_name); +#endif +#ifdef WITH_GSM_BS + if (ifport->gsm_bs) + gsm_bs_init(); #endif } else { ifport->block = 2; /* not available */