+
+int gsm_bs_delete(const char *name)
+{
+ struct lcr_gsm *gsm_bs = gsm_bs_first, **gsm_bs_p = &gsm_bs_first;
+
+ PDEBUG(DEBUG_GSM, "GSM: interface for BS '%s' is deleted\n", name);
+
+ while (gsm_bs) {
+ if (gsm_bs->type == LCR_GSM_TYPE_NETWORK && !strcmp(gsm_bs->name, name))
+ break;
+ gsm_bs_p = &gsm_bs->gsm_next;
+ gsm_bs = gsm_bs->gsm_next;
+ }
+
+ if (!gsm_bs)
+ return 0;
+
+ if (gsm_bs->mncc_lfd.fd > -1) {
+ close(gsm_bs->mncc_lfd.fd);
+ unregister_fd(&gsm_bs->mncc_lfd);
+ }
+ del_timer(&gsm_bs->socket_retry);
+
+ /* remove instance from list */
+ *gsm_bs_p = gsm_bs->gsm_next;
+ FREE(gsm_bs, sizeof(struct lcr_gsm));
+
+ return 0;
+}
+