From: Alfonso Sanchez-Beato <[email protected]>

---
 plugins/mbpi.c      | 7 ++++++-
 plugins/mbpi.h      | 1 +
 plugins/provision.c | 3 ++-
 tools/lookup-apn.c  | 3 ++-
 4 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/plugins/mbpi.c b/plugins/mbpi.c
index 309e1ed..b3e26fd 100644
--- a/plugins/mbpi.c
+++ b/plugins/mbpi.c
@@ -53,6 +53,7 @@ enum MBPI_ERROR {
 struct gsm_data {
        const char *match_mcc;
        const char *match_mnc;
+       enum ofono_gprs_context_type match_type;
        GSList *apns;
        gboolean match_found;
        gboolean allow_duplicates;
@@ -370,7 +371,9 @@ static void gsm_end(GMarkupParseContext *context, const 
gchar *element_name,
                }
        }
 
-       gsm->apns = g_slist_append(gsm->apns, ap);
+       if (gsm->match_type == OFONO_GPRS_CONTEXT_TYPE_ANY ||
+                       gsm->match_type == ap->type)
+               gsm->apns = g_slist_append(gsm->apns, ap);
 }
 
 static const GMarkupParser gsm_parser = {
@@ -565,6 +568,7 @@ static gboolean mbpi_parse(const GMarkupParser *parser, 
gpointer userdata,
 }
 
 GSList *mbpi_lookup_apn(const char *mcc, const char *mnc,
+                       enum ofono_gprs_context_type type,
                        gboolean allow_duplicates, GError **error)
 {
        struct gsm_data gsm;
@@ -573,6 +577,7 @@ GSList *mbpi_lookup_apn(const char *mcc, const char *mnc,
        memset(&gsm, 0, sizeof(gsm));
        gsm.match_mcc = mcc;
        gsm.match_mnc = mnc;
+       gsm.match_type = type;
        gsm.allow_duplicates = allow_duplicates;
 
        if (mbpi_parse(&toplevel_gsm_parser, &gsm, error) == FALSE) {
diff --git a/plugins/mbpi.h b/plugins/mbpi.h
index 64b7ea5..36bbed6 100644
--- a/plugins/mbpi.h
+++ b/plugins/mbpi.h
@@ -24,6 +24,7 @@ const char *mbpi_ap_type(enum ofono_gprs_context_type type);
 void mbpi_ap_free(struct ofono_gprs_provision_data *data);
 
 GSList *mbpi_lookup_apn(const char *mcc, const char *mnc,
+                       enum ofono_gprs_context_type type,
                        gboolean allow_duplicates, GError **error);
 
 char *mbpi_lookup_cdma_provider_name(const char *sid, GError **error);
diff --git a/plugins/provision.c b/plugins/provision.c
index 99c299e..39e037b 100644
--- a/plugins/provision.c
+++ b/plugins/provision.c
@@ -50,7 +50,8 @@ static int provision_get_settings(const char *mcc, const char 
*mnc,
 
        DBG("Provisioning for MCC %s, MNC %s, SPN '%s'", mcc, mnc, spn);
 
-       apns = mbpi_lookup_apn(mcc, mnc, FALSE, &error);
+       apns = mbpi_lookup_apn(mcc, mnc, OFONO_GPRS_CONTEXT_TYPE_INTERNET,
+                               FALSE, &error);
        if (apns == NULL) {
                if (error != NULL) {
                        ofono_error("%s", error->message);
diff --git a/tools/lookup-apn.c b/tools/lookup-apn.c
index 884b32a..4654b03 100644
--- a/tools/lookup-apn.c
+++ b/tools/lookup-apn.c
@@ -42,7 +42,8 @@ static void lookup_apn(const char *match_mcc, const char 
*match_mnc,
 
        g_print("Searching for info for network: %s%s\n", match_mcc, match_mnc);
 
-       apns = mbpi_lookup_apn(match_mcc, match_mnc, allow_duplicates, &error);
+       apns = mbpi_lookup_apn(match_mcc, match_mnc, 
OFONO_GPRS_CONTEXT_TYPE_ANY,
+                               allow_duplicates, &error);
 
        if (apns == NULL) {
                if (error != NULL) {
-- 
1.8.1.2

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to