From b9f7e9c409ed6f5db1a0859ceb3ff8882c1a6bce Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Sun, 14 Jul 2019 13:48:14 +0900 Subject: [PATCH] fix new configuration (#225) --- src/mme/mme-context.c | 142 +++++++++++++++++---------------- support/config/nextepc.conf.in | 60 +++++++++----- tests/sample-csfb.conf.in | 15 ++-- 3 files changed, 123 insertions(+), 94 deletions(-) diff --git a/src/mme/mme-context.c b/src/mme/mme-context.c index 21547f899..a6a8ccd43 100644 --- a/src/mme/mme-context.c +++ b/src/mme/mme-context.c @@ -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) == diff --git a/support/config/nextepc.conf.in b/support/config/nextepc.conf.in index 4f5059ebb..916647713 100644 --- a/support/config/nextepc.conf.in +++ b/support/config/nextepc.conf.in @@ -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: diff --git a/tests/sample-csfb.conf.in b/tests/sample-csfb.conf.in index a8110f244..7877c05be 100644 --- a/tests/sample-csfb.conf.in +++ b/tests/sample-csfb.conf.in @@ -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