X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=gsm_conf.c;h=a64f2ff8863b9a750f30d027eb1e2714a4c5abc9;hp=50e85486c02b0689d07d0c438d1edb3383688dc6;hb=8a4387be03a34632a6c0cc1d997c74d98f2fb1ae;hpb=6bf7c7f9db360d6031417b012dcb0e90e2251cd6 diff --git a/gsm_conf.c b/gsm_conf.c index 50e8548..a64f2ff 100644 --- a/gsm_conf.c +++ b/gsm_conf.c @@ -10,16 +10,13 @@ \*****************************************************************************/ #include "main.h" -#include "openbsc/gsm_data.h" -char *gsm_conf_error = ""; - /* read options * * read options from options.conf */ -int gsm_conf(struct gsm_conf *gsm_conf) +int gsm_conf(struct gsm_conf *gsm_conf, char *conf_error) { FILE *fp=NULL; char filename[128]; @@ -34,30 +31,21 @@ int gsm_conf(struct gsm_conf *gsm_conf) SCPY(gsm_conf->debug, ""); SCPY(gsm_conf->interface_bsc, "mISDN_l1loop.1"); SCPY(gsm_conf->interface_lcr, "mISDN_l1loop.2"); - SCPY(gsm_conf->short_name, "LCR"); - SCPY(gsm_conf->long_name, "Linux-Call-Router"); - gsm_conf->mcc = 1; - gsm_conf->mnc = 1; - gsm_conf->lac = 1; SCPY(gsm_conf->hlr, "hlr.sqlite3"); - gsm_conf->allow_all = 0; + SCPY(gsm_conf->openbsc_cfg, "openbsc.cfg"); + gsm_conf->reject_cause = 0; gsm_conf->keep_l2 = 0; - gsm_conf->numbts = 0; - //gsm_conf->bts[xx] - gsm_conf->noemergshut = 0; SPRINT(filename, "%s/gsm.conf", CONFIG_DATA); if (!(fp=fopen(filename,"r"))) { - SPRINT(gsm_conf_error, "Cannot open %s\n",filename); + UPRINT(conf_error, "Cannot open %s\n",filename); return(0); } line=0; - while((fgets(buffer,sizeof(buffer),fp))) { + while((GETLINE(buffer, fp))) { line++; - buffer[sizeof(buffer)-1]=0; - if (buffer[0]) buffer[strlen(buffer)-1]=0; p=buffer; while(*p <= 32) { /* skip spaces */ @@ -72,7 +60,7 @@ int gsm_conf(struct gsm_conf *gsm_conf) i=0; /* read option */ while(*p > 32) { if (i+1 >= sizeof(option)) { - SPRINT(gsm_conf_error, "Error in %s (line %d): option too long.\n",filename,line); + UPRINT(conf_error, "Error in %s (line %d): option too long.\n",filename,line); goto error; } option[i+1] = '\0'; @@ -91,7 +79,7 @@ int gsm_conf(struct gsm_conf *gsm_conf) i=0; /* read param */ while(*p > 32) { if (i+1 >= sizeof(params[pnum])) { - SPRINT(gsm_conf_error, "Error in %s (line %d): param too long.\n",filename,line); + UPRINT(conf_error, "Error in %s (line %d): param too long.\n",filename,line); goto error; } params[pnum][i+1] = '\0'; @@ -111,7 +99,7 @@ int gsm_conf(struct gsm_conf *gsm_conf) /* check option */ if (!strcmp(option,"debug")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line,option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line,option); goto error; } SCPY(gsm_conf->debug, params[0]); @@ -119,7 +107,7 @@ int gsm_conf(struct gsm_conf *gsm_conf) } else if (!strcmp(option,"interface-bsc")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); goto error; } SCPY(gsm_conf->interface_bsc, params[0]); @@ -127,60 +115,32 @@ int gsm_conf(struct gsm_conf *gsm_conf) } else if (!strcmp(option,"interface-lcr")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); goto error; } SCPY(gsm_conf->interface_lcr, params[0]); } else - if (!strcmp(option,"short-name")) { - if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); - goto error; - } - SCPY(gsm_conf->short_name, params[0]); - - } else - if (!strcmp(option,"long-name")) { - if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); - goto error; - } - SCPY(gsm_conf->long_name, params[0]); - - } else - if (!strcmp(option,"mcc")) { - if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); - goto error; - } - gsm_conf->mcc = atoi(params[0]); - - } else - if (!strcmp(option,"mnc")) { + if (!strcmp(option,"config")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); goto error; } - gsm_conf->mnc = atoi(params[0]); - - } else - if (!strcmp(option,"lac")) { - if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); - goto error; - } - gsm_conf->lac = atoi(params[0]); + SCPY(gsm_conf->openbsc_cfg, params[0]); } else if (!strcmp(option,"hlr")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); goto error; } SCPY(gsm_conf->hlr, params[0]); } else + if (!strcmp(option,"reject-cause")) { + UPRINT(conf_error, "Option '%s' in gsm.conf has moved to openbsc.cfg", option); + goto error; + } else if (!strcmp(option,"allow-all")) { gsm_conf->allow_all = 1; } else @@ -188,51 +148,14 @@ int gsm_conf(struct gsm_conf *gsm_conf) gsm_conf->keep_l2 = 1; } else - if (!strcmp(option,"no-mergency-shutdown")) { - gsm_conf->noemergshut = 1; - } else if (!strcmp(option,"pcapfile")) { if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); + UPRINT(conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line, option); goto error; } SCPY(gsm_conf->pcapfile, params[0]); - } else - if (!strcmp(option,"bts")) { - if (gsm_conf->numbts == 8) { - SPRINT(gsm_conf_error, "Error in %s (line %d): too many BTS defined.\n",filename,line); - goto error; - } - if (params[0][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line,option); - goto error; - } - if (params[1][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line,option); - goto error; - } - if (params[2][0]==0) { - SPRINT(gsm_conf_error, "Error in %s (line %d): parameter for option %s missing.\n",filename,line,option); - goto error; - } - if (!strcmp(params[0], "bs11")) { - gsm_conf->bts[gsm_conf->numbts].type = GSM_BTS_TYPE_BS11; - } else { - SPRINT(gsm_conf_error, "Error in %s (line %d): unknown BTS type '%s'.\n",filename,line,params[0]); - goto error; - } - gsm_conf->bts[gsm_conf->numbts].card = atoi(params[1]); - gsm_conf->bts[gsm_conf->numbts].numtrx = 0; - while (params[gsm_conf->bts[gsm_conf->numbts].numtrx+2][0]) { - if (gsm_conf->bts[gsm_conf->numbts].numtrx == 8) { - SPRINT(gsm_conf_error, "Error in %s (line %d): too many frequencies defined.\n",filename,line); - goto error; - } - gsm_conf->bts[gsm_conf->numbts].frequency[gsm_conf->bts[gsm_conf->numbts].numtrx++] = atoi(params[gsm_conf->bts[gsm_conf->numbts].numtrx+2]); - } - gsm_conf->numbts++; } else { - SPRINT(gsm_conf_error, "Error in %s (line %d): wrong option keyword %s.\n", filename,line,option); + UPRINT(conf_error, "Error in %s (line %d): wrong option keyword %s.\n", filename,line,option); goto error; } }