X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=interface.c;h=f1cb3f2b96a51a11fb23e1dffd1633f52f4f113f;hp=3fc0a79dcd68194119f56198c111b5b9f6570ab3;hb=5566f74eb29be75da44e29ba72ee6f015249ce61;hpb=6642360dcf1eecba954ad04d2d0a78753f8e5182 diff --git a/interface.c b/interface.c index 3fc0a79..f1cb3f2 100644 --- a/interface.c +++ b/interface.c @@ -880,18 +880,12 @@ static int inter_dialmax(struct interface *interface, char *filename, int line, } static int inter_tones_dir(struct interface *interface, char *filename, int line, char *parameter, char *value) { - struct interface_port *ifport; - - /* port in chain ? */ - if (!interface->ifport) { - SPRINT(interface_error, "Error in %s (line %d): parameter '%s' expects previous 'port' definition.\n", filename, line, parameter); + if (!value || !value[0]) { + SPRINT(interface_error, "Error in %s (line %d): Missing tones directory.\n", filename, line); return(-1); } - /* goto end of chain */ - ifport = interface->ifport; - while(ifport->next) - ifport = ifport->next; - SCPY(ifport->tones_dir, value); + SCPY(interface->tones_dir, value); + return(0); } static int inter_gsm(struct interface *interface, char *filename, int line, char *parameter, char *value) @@ -907,18 +901,23 @@ static int inter_gsm_bs(struct interface *interface, char *filename, int line, c #else struct interface *searchif; + interface->gsm_bs = 1; + + if (!value) + interface->gsm_bs_name[0] = '\0'; + else + SCPY(interface->gsm_bs_name, value); + + /* check if name is used multiple times */ searchif = interface_newlist; while(searchif) { - if (searchif->gsm_bs) { - SPRINT(interface_error, "Error in %s (line %d): interface '%s' already uses gsm BS side.\n", filename, line, searchif->name); + if (searchif != interface && searchif->gsm_bs && !strcmp(searchif->gsm_bs_name, interface->gsm_bs_name)) { + SPRINT(interface_error, "Error in %s (line %d): network '%s' already uses the given MS name '%s', choose a different one.\n", filename, line, interface->gsm_bs_name, searchif->gsm_bs_name); return(-1); } searchif = searchif->next; } - /* goto end of chain again to set gsmflag */ - interface->gsm_bs = 1; - return(0); #endif } @@ -953,7 +952,7 @@ static int inter_gsm_ms(struct interface *interface, char *filename, int line, c /* check if name is used multiple times */ searchif = interface_newlist; while(searchif) { - if (searchif != interface && !strcmp(searchif->gsm_ms_name, interface->gsm_ms_name)) { + if (searchif != interface && searchif->gsm_bs && !strcmp(searchif->gsm_ms_name, interface->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, interface->gsm_ms_name, searchif->gsm_ms_name); return(-1); } @@ -1100,9 +1099,11 @@ static int inter_ss5(struct interface *interface, char *filename, int line, char if (!strcasecmp(element, "release")) ifport->ss5 |= SS5_FEATURE_RELEASE; else - if (!strcasecmp(element, "suppress") - || !strcasecmp(element, "mute")) - ifport->ss5 |= SS5_FEATURE_MUTE; + if (!strcasecmp(element, "mute-rx")) + ifport->ss5 |= SS5_FEATURE_MUTE_RX; + else + if (!strcasecmp(element, "mute-tx")) + ifport->ss5 |= SS5_FEATURE_MUTE_TX; else if (!strcasecmp(element, "quality")) ifport->ss5 |= SS5_FEATURE_QUALITY; @@ -1347,18 +1348,21 @@ struct interface_param interface_param[] = { {"tones_dir", &inter_tones_dir, "", "Overrides the given tone_dir in options.conf.\n" "To used kernel tones in mISDN_dsp.ko, say 'american', 'german', or 'oldgerman'."}, + {"tones-dir", &inter_tones_dir, "", + "Overrides the given tone_dir in options.conf.\n" + "To used kernel tones in mISDN_dsp.ko, say 'american', 'german', or 'oldgerman'."}, {"gsm", &inter_gsm, "", ""}, - {"gsm-bs", &inter_gsm_bs, "", - "Sets up GSM base station interface for using OpenBSC."}, + {"gsm-bs", &inter_gsm_bs, "[]", + "Sets up GSM base station interface for using OpenBSC.\n" + "The socket is /tmp/bsc_mncc by default. If socket name is given, the socket will be\n" + "extended to /tmp/bsc_mncc_."}, {"hr", &inter_gsm_bs_hr, "", "Enable and prefer half rate for mobile terminating calls."}, - {"gsm-ms", &inter_gsm_ms, "", + {"gsm-ms", &inter_gsm_ms, "", "Sets up GSM mobile station interface for using Osmocom-BB.\n" - "The name of the MS folows the interface name.\n" - "The socket is /tmp/osmocom_l2 by default and need to be changed when multiple\n" - "MS interfaces are used."}, + "The socket will be /tmp/ms_mncc_."}, {"sip", &inter_sip, " ", "Sets up SIP interface that represents one SIP endpoint.\n" "Give SIP configuration file."}, @@ -1394,8 +1398,9 @@ struct interface_param interface_param[] = { " bell - Allow releasing and pulse-dialing via 2600 Hz like old Bell systems.\n" " pulsedialing - Use pulse dialing on outgoing exchange. (takes long!)\n" " delay - Use on incomming exchange, to make you feel a delay when blueboxing.\n" - " starrelease - Pulse dialing a star (11 pulses per digit) clears current call.\n" - " suppress - Suppress received tones, as they will be recognized."}, + " release - Pulse dialing a star (11 pulses per digit) clears current call.\n" + " mutes-rx - Mute received 2600 and 2400 Hz tones when detected. (more realistic)\n" + " mutes-tx - Mute received 2600 and 2400 Hz tones while transmitting reply tone. (more hackable)"}, #endif {"remote", &inter_remote, "", @@ -1694,7 +1699,7 @@ void relink_interfaces(void) #endif #ifdef WITH_GSM_BS if (interface->gsm_bs) - gsm_bs_exit(0); + gsm_bs_delete(interface->gsm_bs_name); #endif #ifdef WITH_SIP if (interface->sip) @@ -1729,7 +1734,7 @@ void relink_interfaces(void) #endif #ifdef WITH_GSM_BS if (interface->gsm_bs) - gsm_bs_init(interface); + gsm_bs_new(interface); #endif #ifdef WITH_SIP if (interface->sip)