Handled IPv6 address after activating PDP context
---
 drivers/ifxmodem/gprs-context.c | 33 +++++++++++++++++++++++----------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/drivers/ifxmodem/gprs-context.c b/drivers/ifxmodem/gprs-context.c
index 6042004..55d72a6 100644
--- a/drivers/ifxmodem/gprs-context.c
+++ b/drivers/ifxmodem/gprs-context.c
@@ -352,10 +352,12 @@ static void cgcontrdp_cb(gboolean ok, GAtResult *result, 
gpointer user_data)
 
        DBG("DNS: %s, %s\n", gcd->dns1, gcd->dns2);
 
-       if (!laddrnetmask || at_util_get_ipv4_address_and_netmask(laddrnetmask,
-                                       gcd->address, gcd->netmask) < 0) {
-               failed_setup(gc, NULL, TRUE);
-               return;
+       if(gcd->proto == OFONO_GPRS_PROTO_IP) {
+               if (!laddrnetmask || 
at_util_get_ipv4_address_and_netmask(laddrnetmask,
+                                               gcd->address, gcd->netmask) < 
0) {
+                       failed_setup(gc, NULL, TRUE);
+                       return;
+               }
        }
 
        if (gw)
@@ -373,15 +375,26 @@ static void cgcontrdp_cb(gboolean ok, GAtResult *result, 
gpointer user_data)
        interface = ofono_gprs_context_get_interface(gc);
        datapath = get_datapath(modem, interface);
 
-       ofono_gprs_context_set_ipv4_address(gc, gcd->address, TRUE);
+       if(gcd->proto == OFONO_GPRS_PROTO_IP) {
+               ofono_gprs_context_set_ipv4_address(gc, gcd->address, TRUE);
 
-       if (gcd->netmask[0])
-               ofono_gprs_context_set_ipv4_netmask(gc, gcd->netmask);
+               if (gcd->netmask[0])
+                       ofono_gprs_context_set_ipv4_netmask(gc, gcd->netmask);
 
-       if (gcd->gateway[0])
-               ofono_gprs_context_set_ipv4_gateway(gc, gcd->gateway);
+               if (gcd->gateway[0])
+                       ofono_gprs_context_set_ipv4_gateway(gc, gcd->gateway);
 
-       ofono_gprs_context_set_ipv4_dns_servers(gc, dns);
+               ofono_gprs_context_set_ipv4_dns_servers(gc, dns);
+       }
+
+       if(gcd->proto == OFONO_GPRS_PROTO_IPV6) {
+               ofono_gprs_context_set_ipv6_address(gc, gcd->address);
+
+               if (gcd->gateway[0])
+                       ofono_gprs_context_set_ipv6_gateway(gc, gcd->gateway);
+
+               ofono_gprs_context_set_ipv6_dns_servers(gc, dns);
+       }
 
        snprintf(buf, sizeof(buf), "AT+XDATACHANNEL=1,1,\"%s\",\"%s\",2,%u",
                        ctrlpath, datapath, gcd->active_context);
-- 
1.9.1

_______________________________________________
ofono mailing list
ofono@ofono.org
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to