---
 drivers/rilmodem/gprs-context.c |  3 ++-
 drivers/rilmodem/rilutil.c      | 51 ++++++++++++++++-------------------------
 2 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/drivers/rilmodem/gprs-context.c b/drivers/rilmodem/gprs-context.c
index 2bc6445..1e5f6ed 100644
--- a/drivers/rilmodem/gprs-context.c
+++ b/drivers/rilmodem/gprs-context.c
@@ -304,7 +304,8 @@ static void ril_setup_data_call_cb(struct ril_msg *message, 
gpointer user_data)
                        goto error_free;
                }
 
-               ofono_gprs_context_set_ipv4_netmask(gc, netmask);
+               if (netmask)
+                       ofono_gprs_context_set_ipv4_netmask(gc, netmask);
 
                ofono_gprs_context_set_ipv4_address(gc, split_ip_addr[0], TRUE);
        }
diff --git a/drivers/rilmodem/rilutil.c b/drivers/rilmodem/rilutil.c
index dc9c3cc..44e5a9c 100644
--- a/drivers/rilmodem/rilutil.c
+++ b/drivers/rilmodem/rilutil.c
@@ -52,39 +52,28 @@ void decode_ril_error(struct ofono_error *error, const char 
*final)
 
 gchar *ril_util_get_netmask(const gchar *address)
 {
-       char *result;
-
-       if (g_str_has_suffix(address, "/30")) {
-               result = PREFIX_30_NETMASK;
-       } else if (g_str_has_suffix(address, "/29")) {
-               result = PREFIX_29_NETMASK;
-       } else if (g_str_has_suffix(address, "/28")) {
-               result = PREFIX_28_NETMASK;
-       } else if (g_str_has_suffix(address, "/27")) {
-               result = PREFIX_27_NETMASK;
-       } else if (g_str_has_suffix(address, "/26")) {
-               result = PREFIX_26_NETMASK;
-       } else if (g_str_has_suffix(address, "/25")) {
-               result = PREFIX_25_NETMASK;
-       } else if (g_str_has_suffix(address, "/24")) {
-               result = PREFIX_24_NETMASK;
-       } else {
-               /*
-                * This handles the case where the
-                * Samsung RILD returns an address without
-                * a prefix, however it explicitly sets a
-                * /24 netmask ( which isn't returned as
-                * an attribute of the DATA_CALL.
-                *
-                * TODO/OEM: this might need to be quirked
-                * for specific devices.
-                */
-               result = PREFIX_24_NETMASK;
-       }
+       if (g_str_has_suffix(address, "/30"))
+               return PREFIX_30_NETMASK;
+
+       if (g_str_has_suffix(address, "/29"))
+               return PREFIX_29_NETMASK;
+
+       if (g_str_has_suffix(address, "/28"))
+               return PREFIX_28_NETMASK;
+
+       if (g_str_has_suffix(address, "/27"))
+               return PREFIX_27_NETMASK;
+
+       if (g_str_has_suffix(address, "/26"))
+               return PREFIX_26_NETMASK;
+
+       if (g_str_has_suffix(address, "/25"))
+               return PREFIX_25_NETMASK;
 
-       DBG("address: %s netmask: %s", address, result);
+       if (g_str_has_suffix(address, "/24"))
+               return PREFIX_24_NETMASK;
 
-       return result;
+       return NULL;
 }
 
 void ril_util_build_deactivate_data_call(GRil *gril, struct parcel *rilp,
-- 
1.9.1

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

Reply via email to