}
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)
#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
}
/* 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);
}
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;
{"tones_dir", &inter_tones_dir, "<path>",
"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, "<path>",
+ "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, "[<socket name>]",
+ "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_<socket name>."},
{"hr", &inter_gsm_bs_hr, "",
"Enable and prefer half rate for mobile terminating calls."},
- {"gsm-ms", &inter_gsm_ms, "<socket>",
+ {"gsm-ms", &inter_gsm_ms, "<socket name>",
"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_<socket name>."},
{"sip", &inter_sip, "<local IP> <remote IP>",
"Sets up SIP interface that represents one SIP endpoint.\n"
"Give SIP configuration file."},
" 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, "<application>",
#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)
#endif
#ifdef WITH_GSM_BS
if (interface->gsm_bs)
- gsm_bs_init(interface);
+ gsm_bs_new(interface);
#endif
#ifdef WITH_SIP
if (interface->sip)