fix new configuration (#225)

This commit is contained in:
Sukchan Lee 2019-07-14 13:48:14 +09:00
parent 3a5930650e
commit b9f7e9c409
3 changed files with 123 additions and 94 deletions

View File

@ -1078,8 +1078,8 @@ int mme_context_parse_config()
do {
mme_vlr_t *vlr = NULL;
plmn_id_t plmn_id;
const char *mcc = NULL, *mnc = NULL;
const char *lai_mcc = NULL, *lai_mnc = NULL;
const char *tai_mcc = NULL, *tai_mnc = NULL;
const char *lai_mcc = NULL, *lai_mnc = NULL;
const char *tac = NULL, *lac = NULL;
ogs_sockaddr_t *addr = NULL;
int family = AF_UNSPEC;
@ -1146,85 +1146,89 @@ int mme_context_parse_config()
self.sgsap_port = port;
}
} else if (!strcmp(sgsap_key, "tai")) {
ogs_yaml_iter_t tai_iter;
ogs_yaml_iter_recurse(&sgsap_iter, &tai_iter);
while (ogs_yaml_iter_next(&tai_iter)) {
const char *tai_id_key =
ogs_yaml_iter_key(&tai_iter);
ogs_assert(tai_id_key);
if(!strcmp(tai_id_key, "plmn_id")) {
ogs_yaml_iter_t plmn_id_iter;
ogs_yaml_iter_recurse(&tai_iter,
&plmn_id_iter);
while (ogs_yaml_iter_next(&plmn_id_iter)) {
const char *plmn_id_key =
ogs_yaml_iter_key(&plmn_id_iter);
ogs_assert(plmn_id_key);
if (!strcmp(plmn_id_key, "mcc")) {
mcc =
ogs_yaml_iter_value(&plmn_id_iter);
lai_mcc =
ogs_yaml_iter_value(&plmn_id_iter);
} else if (!strcmp(plmn_id_key, "mnc")) {
mnc =
ogs_yaml_iter_value(&plmn_id_iter);
lai_mnc =
ogs_yaml_iter_value(&plmn_id_iter);
} else if (!strcmp(plmn_id_key, "tac")) {
tac =
ogs_yaml_iter_value(&plmn_id_iter);
} else
ogs_warn("unknown key `%s`",
plmn_id_key);
}
}
}
} else if (!strcmp(sgsap_key, "lai")) {
ogs_yaml_iter_t tai_iter;
ogs_yaml_iter_recurse(&sgsap_iter, &tai_iter);
while (ogs_yaml_iter_next(&tai_iter)) {
const char *tai_id_key =
ogs_yaml_iter_key(&tai_iter);
ogs_yaml_iter_key(&tai_iter);
ogs_assert(tai_id_key);
if(!strcmp(tai_id_key, "plmn_id")) {
ogs_yaml_iter_t plmn_id_iter;
ogs_yaml_iter_recurse(&tai_iter,
if (!strcmp(tai_id_key, "plmn_id")) {
ogs_yaml_iter_t plmn_id_iter;
ogs_yaml_iter_recurse(&tai_iter,
&plmn_id_iter);
while (ogs_yaml_iter_next(&plmn_id_iter)) {
const char *plmn_id_key =
ogs_yaml_iter_key(&plmn_id_iter);
ogs_assert(plmn_id_key);
if (!strcmp(plmn_id_key, "mcc")) {
lai_mcc =
ogs_yaml_iter_value(&plmn_id_iter);
} else if (!strcmp(plmn_id_key, "mnc")) {
lai_mnc =
ogs_yaml_iter_value(&plmn_id_iter);
} else if (!strcmp(plmn_id_key, "lac")) {
lac =
ogs_yaml_iter_value(&plmn_id_iter);
} else
ogs_warn("unknown key `%s`",
plmn_id_key);
while (ogs_yaml_iter_next(
&plmn_id_iter)) {
const char *plmn_id_key =
ogs_yaml_iter_key(&plmn_id_iter);
ogs_assert(plmn_id_key);
if (!strcmp(plmn_id_key, "mcc")) {
tai_mcc = ogs_yaml_iter_value(
&plmn_id_iter);
} else if (!strcmp(plmn_id_key,
"mnc")) {
tai_mnc = ogs_yaml_iter_value(
&plmn_id_iter);
} else
ogs_warn("unknown key `%s`",
plmn_id_key);
}
} else if (!strcmp(tai_id_key, "tac")) {
tac = ogs_yaml_iter_value(&tai_iter);
} else
ogs_warn("unknown key `%s`",
tai_id_key);
}
} else if (!strcmp(sgsap_key, "lai")) {
ogs_yaml_iter_t lai_iter;
ogs_yaml_iter_recurse(&sgsap_iter, &lai_iter);
}
while (ogs_yaml_iter_next(&lai_iter)) {
const char *lai_id_key =
ogs_yaml_iter_key(&lai_iter);
ogs_assert(lai_id_key);
if (!strcmp(lai_id_key, "plmn_id")) {
ogs_yaml_iter_t plmn_id_iter;
ogs_yaml_iter_recurse(&lai_iter,
&plmn_id_iter);
while (ogs_yaml_iter_next(
&plmn_id_iter)) {
const char *plmn_id_key =
ogs_yaml_iter_key(&plmn_id_iter);
ogs_assert(plmn_id_key);
if (!strcmp(plmn_id_key, "mcc")) {
lai_mcc = ogs_yaml_iter_value(
&plmn_id_iter);
} else if (!strcmp(plmn_id_key,
"mnc")) {
lai_mnc = ogs_yaml_iter_value(
&plmn_id_iter);
} else
ogs_warn("unknown key `%s`",
plmn_id_key);
}
} else if (!strcmp(lai_id_key, "lac")) {
lac = ogs_yaml_iter_value(&lai_iter);
} else
ogs_warn("unknown key `%s`",
lai_id_key);
}
} else
ogs_warn("unknown key `%s`", sgsap_key);
}
if (!mcc || !mnc || !tac || !lac) {
if (!tai_mcc || !tai_mnc || !tac ||
!lai_mcc || !lai_mnc || !lac) {
ogs_error("sgsap.tai configuration failed"
" - (mcc:%p, mnc:%p, tac:%p, lac:%p)",
mcc, mnc, tac, lac);
" - (tai_mcc:%p, tai_mnc:%p, tac:%p)"
" - (lai_mcc:%p, lai_mnc:%p, lac:%p)",
tai_mcc, tai_mnc, tac, lai_mcc, lai_mnc, lac);
return OGS_ERROR;
}
@ -1244,12 +1248,12 @@ int mme_context_parse_config()
ogs_assert(vlr);
plmn_id_build(&plmn_id,
atoi(mcc), atoi(mnc), strlen(mnc));
atoi(tai_mcc), atoi(tai_mnc), strlen(tai_mnc));
nas_from_plmn_id(&vlr->tai.nas_plmn_id, &plmn_id);
vlr->tai.tac = atoi(tac);
plmn_id_build(&plmn_id,
atoi(lai_mcc), atoi(lai_mnc), strlen(lai_mnc));
plmn_id_build(&plmn_id,
atoi(tai_mcc), atoi(tai_mnc), strlen(tai_mnc));
nas_from_plmn_id(&vlr->lai.nas_plmn_id, &plmn_id);
vlr->lai.lac = atoi(lac);
} while (ogs_yaml_iter_type(&sgsap_array) ==

View File

@ -130,34 +130,54 @@ mme:
# sgsap:
# addr: 127.0.0.2
# port: 29119
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4130
# lac: 43690
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4130
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43690
#
# o Multiple MSC/VLR
# sgsap:
# - addr: 127.0.0.2
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4131
# lac: 43692
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4131
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43691
# - addr
# - 127.0.0.3
# - fe80::2%lo0
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4132
# lac: 43692
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
# - name: msc.open5gs.org
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4133
# lac: 43693
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4133
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43693
#
sgsap:

View File

@ -31,11 +31,16 @@ mme:
addr: 127.0.0.1
sgsap:
addr: 127.0.0.2
plmn_id:
mcc: 901
mnc: 70
tac: 7
lac: 2342
tai:
plmn_id:
mcc: 901
mnc: 70
tac: 7
lai:
plmn_id:
mcc: 901
mnc: 70
lac: 2342
gummei:
plmn_id:
mcc: 901