From ad85c125133258bf19a5a8dff4b43a56506445ff Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Mon, 2 Nov 2020 11:45:14 -0500 Subject: [PATCH] checking for APN/DNN in case insensitive #617 --- lib/pfcp/context.c | 6 +++--- src/mme/mme-context.c | 6 +++--- src/sgwc/context.c | 4 ++-- src/smf/context.c | 4 ++-- src/smf/nudm-handler.c | 3 ++- src/udr/nudr-handler.c | 2 +- tests/310014/epc-test.c | 2 +- tests/common/context.c | 2 +- 8 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/pfcp/context.c b/lib/pfcp/context.c index 2c306b273..f4c2a3890 100644 --- a/lib/pfcp/context.c +++ b/lib/pfcp/context.c @@ -755,7 +755,7 @@ ogs_pfcp_gtpu_resource_t *ogs_pfcp_gtpu_resource_find(ogs_list_t *list, if (resource->info.assoni && strlen(resource->info.network_instance) && apn && strlen(apn) && - strcmp(apn, resource->info.network_instance) != 0) { + ogs_strcasecmp(apn, resource->info.network_instance) != 0) { match = false; } @@ -1599,7 +1599,7 @@ ogs_pfcp_dev_t *ogs_pfcp_dev_find_by_ifname(const char *ifname) ogs_assert(ifname); ogs_list_for_each(&ogs_pfcp_self()->dev_list, dev) { - if (strcmp(dev->ifname, ifname) == 0) + if (ogs_strcasecmp(dev->ifname, ifname) == 0) return dev; } @@ -1678,7 +1678,7 @@ ogs_pfcp_subnet_t *ogs_pfcp_find_subnet(int family, const char *apn) ogs_list_for_each(&self.subnet_list, subnet) { if ((subnet->family == AF_UNSPEC || subnet->family == family) && (strlen(subnet->apn) == 0 || - (strlen(subnet->apn) && strcmp(subnet->apn, apn) == 0))) + (strlen(subnet->apn) && ogs_strcasecmp(subnet->apn, apn) == 0))) break; } diff --git a/src/mme/mme-context.c b/src/mme/mme-context.c index 1e82a5ee0..63b3f35ed 100644 --- a/src/mme/mme-context.c +++ b/src/mme/mme-context.c @@ -1730,7 +1730,7 @@ ogs_sockaddr_t *mme_pgw_addr_find_by_apn( while (addr) { if (addr->ogs_sa_family == family && - (!apn || (pgw->apn && !strcmp(apn, pgw->apn)))) { + (!apn || (pgw->apn && !ogs_strcasecmp(apn, pgw->apn)))) { return addr; } addr = addr->next; @@ -2748,7 +2748,7 @@ mme_sess_t *mme_sess_find_by_apn(mme_ue_t *mme_ue, char *apn) sess = mme_sess_first(mme_ue); while (sess) { - if (sess->pdn && strcmp(sess->pdn->apn, apn) == 0) + if (sess->pdn && ogs_strcasecmp(sess->pdn->apn, apn) == 0) return sess; sess = mme_sess_next(sess); @@ -3120,7 +3120,7 @@ ogs_pdn_t *mme_pdn_find_by_apn(mme_ue_t *mme_ue, char *apn) for (i = 0; i < subscription_data->num_of_pdn; i++) { pdn = &subscription_data->pdn[i]; - if (strcmp(pdn->apn, apn) == 0) + if (ogs_strcasecmp(pdn->apn, apn) == 0) return pdn; } diff --git a/src/sgwc/context.c b/src/sgwc/context.c index ab58b8652..886db9ad1 100644 --- a/src/sgwc/context.c +++ b/src/sgwc/context.c @@ -432,7 +432,7 @@ static bool compare_ue_info(ogs_pfcp_node_t *node, sgwc_sess_t *sess) ogs_assert(sgwc_ue); for (i = 0; i < node->num_of_apn; i++) - if (strcmp(node->apn[i], sess->pdn.apn) == 0) return true; + if (ogs_strcasecmp(node->apn[i], sess->pdn.apn) == 0) return true; for (i = 0; i < node->num_of_e_cell_id; i++) if (node->e_cell_id[i] == sgwc_ue->e_cgi.cell_id) return true; @@ -574,7 +574,7 @@ sgwc_sess_t* sgwc_sess_find_by_apn(sgwc_ue_t *sgwc_ue, char *apn) ogs_assert(apn); ogs_list_for_each(&sgwc_ue->sess_list, sess) { - if (!strcmp(sess->pdn.apn, apn)) + if (!ogs_strcasecmp(sess->pdn.apn, apn)) return sess; } diff --git a/src/smf/context.c b/src/smf/context.c index a057086e6..3f4daa8ca 100644 --- a/src/smf/context.c +++ b/src/smf/context.c @@ -612,7 +612,7 @@ static bool compare_ue_info(ogs_pfcp_node_t *node, smf_sess_t *sess) ogs_assert(sess); for (i = 0; i < node->num_of_apn; i++) - if (strcmp(node->apn[i], sess->pdn.apn) == 0) return true; + if (ogs_strcasecmp(node->apn[i], sess->pdn.apn) == 0) return true; for (i = 0; i < node->num_of_e_cell_id; i++) if (node->e_cell_id[i] == sess->e_cgi.cell_id) return true; @@ -1101,7 +1101,7 @@ smf_sess_t *smf_sess_find_by_apn(smf_ue_t *smf_ue, char *apn) ogs_assert(apn); ogs_list_for_each(&smf_ue->sess_list, sess) { - if (!strcmp(sess->pdn.apn, apn)) + if (!ogs_strcasecmp(sess->pdn.apn, apn)) return sess; } diff --git a/src/smf/nudm-handler.c b/src/smf/nudm-handler.c index d582fd6e6..50a26500d 100644 --- a/src/smf/nudm-handler.c +++ b/src/smf/nudm-handler.c @@ -103,7 +103,8 @@ bool smf_nudm_sdm_handle_get(smf_sess_t *sess, ogs_sbi_session_t *session, continue; } - if (sess->dnn && strcmp(sess->dnn, dnnConfigurationMap->key) != 0) + if (sess->dnn && + ogs_strcasecmp(sess->dnn, dnnConfigurationMap->key) != 0) continue; if (sess->ue_pdu_session_type) { diff --git a/src/udr/nudr-handler.c b/src/udr/nudr-handler.c index ae4ca567d..43f635984 100644 --- a/src/udr/nudr-handler.c +++ b/src/udr/nudr-handler.c @@ -441,7 +441,7 @@ bool udr_nudr_dr_handle_subscription_provisioned( ogs_assert(pdn); if (recvmsg->param.dnn && - strcmp(recvmsg->param.dnn, pdn->apn) != 0) continue; + ogs_strcasecmp(recvmsg->param.dnn, pdn->apn) != 0) continue; if (!pdn->qos.qci) { ogs_error("No QCI"); diff --git a/tests/310014/epc-test.c b/tests/310014/epc-test.c index 6b39e8a8a..3a89b36c4 100644 --- a/tests/310014/epc-test.c +++ b/tests/310014/epc-test.c @@ -118,7 +118,7 @@ static void test1_func(abts_case *tc, void *data) OGS_HEX(_k_string, strlen(_k_string), test_ue->k); OGS_HEX(_opc_string, strlen(_opc_string), test_ue->opc); - sess = test_sess_add_by_apn(test_ue, "internet"); + sess = test_sess_add_by_apn(test_ue, "INTERNET"); ogs_assert(sess); /* eNB connects to MME */ diff --git a/tests/common/context.c b/tests/common/context.c index 819cc159c..044c1e3d9 100644 --- a/tests/common/context.c +++ b/tests/common/context.c @@ -1014,7 +1014,7 @@ test_sess_t *test_sess_find_by_apn(test_ue_t *test_ue, char *apn) ogs_assert(apn); ogs_list_for_each(&test_ue->sess_list, sess) - if (strcmp(sess->apn, apn) == 0) return sess; + if (ogs_strcasecmp(sess->apn, apn) == 0) return sess; return NULL; }