+ if (inter_portname(interface, filename, line, (char *)"portname", options.loopback_lcr))
+ return(-1);
+
+ /* goto end of chain again to set gsmflag */
+ ifport = interface->ifport;
+ while(ifport->next)
+ ifport = ifport->next;
+ ifport->gsm_bs = 1;
+
+ return(0);
+#endif
+}
+static int inter_gsm_ms(struct interface *interface, char *filename, int line, char *parameter, char *value)
+{
+#ifndef WITH_GSM_MS
+ SPRINT(interface_error, "Error in %s (line %d): GSM MS side not compiled in.\n", filename, line);
+ return(-1);
+#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))
+ return(-1);
+
+ /* goto end of chain again to set gsmflag and socket */
+ ifport = interface->ifport;
+ while(ifport->next)
+ ifport = ifport->next;
+ ifport->gsm_ms = 1;
+
+ /* copy values */
+ element = strsep(&value, " ");
+ if (!element || !element[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);
+
+ /* check if name is used multiple times */
+ searchif = interface_newlist;
+ while(searchif) {
+ searchifport = searchif->ifport;
+ while(searchifport) {
+ if (searchifport != ifport
+ && !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;
+ }
+ searchif = searchif->next;
+ }
+
+ return(0);
+#endif
+}
+static int inter_nonotify(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);
+ return(-1);
+ }
+ /* goto end of chain */
+ ifport = interface->ifport;
+ while(ifport->next)
+ ifport = ifport->next;
+ ifport->nonotify = 1;
+ return(0);
+}
+#ifdef WITH_SS5
+static int inter_ss5(struct interface *interface, char *filename, int line, char *parameter, char *value)
+{
+ struct interface_port *ifport;
+ char *element;
+
+ /* port in chain ? */
+ if (!interface->ifport) {
+ SPRINT(interface_error, "Error in %s (line %d): parameter '%s' expects previous 'port' definition.\n", filename, line, parameter);