mirror of
				https://github.com/open5gs/open5gs.git
				synced 2025-11-03 21:43:25 +00:00 
			
		
		
		
	fix new configuration (#225)
This commit is contained in:
		@@ -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) ==
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user