---
 drivers/stemodem/gprs-context.c |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/drivers/stemodem/gprs-context.c b/drivers/stemodem/gprs-context.c
index e247f35..7266810 100644
--- a/drivers/stemodem/gprs-context.c
+++ b/drivers/stemodem/gprs-context.c
@@ -246,7 +246,7 @@ static void ste_eppsd_down_cb(gboolean ok, GAtResult 
*result,
 static void ste_eppsd_up_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
        struct cb_data *cbd = user_data;
-       ofono_gprs_context_up_cb_t cb = cbd->cb;
+       ofono_gprs_context_cb_t cb = cbd->cb;
        struct ofono_gprs_context *gc = cbd->user;
        struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc);
        struct conn_info *conn;
@@ -276,7 +276,7 @@ static void ste_eppsd_up_cb(gboolean ok, GAtResult *result, 
gpointer user_data)
                conn->cid = 0;
                gcd->active_context = 0;
                decode_at_error(&error, g_at_result_final_response(result));
-               cb(&error, NULL, 0, NULL, NULL, NULL, NULL, cbd->data);
+               cb(&error, cbd->data);
                return;
        }
 
@@ -305,9 +305,13 @@ static void ste_eppsd_up_cb(gboolean ok, GAtResult 
*result, gpointer user_data)
        dns[1] = rsp.dns_server2;
        dns[2] = NULL;
 
-       CALLBACK_WITH_SUCCESS(cb, conn->interface, TRUE, rsp.ip_address,
-                               rsp.subnet_mask, NULL,
-                               dns, cbd->data);
+       ofono_gprs_context_set_interface(gc, conn->interface);
+       ofono_gprs_context_set_ip_addrconf(gc, OFONO_GPRS_ADDRCONF_STATIC);
+       ofono_gprs_context_set_ip_address(gc, rsp.ip_address);
+       ofono_gprs_context_set_ip_netmask(gc, rsp.subnet_mask);
+       ofono_gprs_context_set_dns_servers(gc, dns);
+
+       CALLBACK_WITH_SUCCESS(cb, cbd->data);
        return;
 
 error:
@@ -320,13 +324,13 @@ error:
 error_no_device:
        DBG("ste_eppsd_up_cb error");
        gcd->active_context = 0;
-       CALLBACK_WITH_FAILURE(cb, NULL, 0, NULL, NULL, NULL, NULL, cbd->data);
+       CALLBACK_WITH_FAILURE(cb, cbd->data);
 }
 
 static void ste_cgdcont_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
        struct cb_data *cbd = user_data;
-       ofono_gprs_context_up_cb_t cb = cbd->cb;
+       ofono_gprs_context_cb_t cb = cbd->cb;
        struct ofono_gprs_context *gc = cbd->user;
        struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc);
        struct cb_data *ncbd;
@@ -351,7 +355,7 @@ static void ste_cgdcont_cb(gboolean ok, GAtResult *result, 
gpointer user_data)
                conn->cid = 0;
                gcd->active_context = 0;
                decode_at_error(&error, g_at_result_final_response(result));
-               cb(&error, NULL, 0, NULL, NULL, NULL, NULL, cbd->data);
+               cb(&error, cbd->data);
                return;
        }
 
@@ -368,13 +372,12 @@ static void ste_cgdcont_cb(gboolean ok, GAtResult 
*result, gpointer user_data)
 
 error_no_device:
        gcd->active_context = 0;
-       CALLBACK_WITH_FAILURE(cb, NULL, 0, NULL, NULL,
-                               NULL, NULL, cbd->data);
+       CALLBACK_WITH_FAILURE(cb, cbd->data);
 }
 
 static void ste_gprs_activate_primary(struct ofono_gprs_context *gc,
                                const struct ofono_gprs_primary_context *ctx,
-                               ofono_gprs_context_up_cb_t cb, void *data)
+                               ofono_gprs_context_cb_t cb, void *data)
 {
        struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc);
        struct cb_data *cbd = cb_data_new(cb, data);
@@ -383,6 +386,10 @@ static void ste_gprs_activate_primary(struct 
ofono_gprs_context *gc,
        GSList *l;
        struct conn_info *conn;
 
+       /* IPv6 support not implemented */
+       if (ctx->proto != OFONO_GPRS_PROTO_IP)
+               goto error_no_device;
+
        gcd->active_context = ctx->cid;
        cbd->user = gc;
 
@@ -432,7 +439,7 @@ error_no_device:
        gcd->active_context = 0;
        g_free(cbd);
 
-       CALLBACK_WITH_FAILURE(cb, NULL, 0, NULL, NULL, NULL, NULL, data);
+       CALLBACK_WITH_FAILURE(cb, data);
 }
 
 static void ste_gprs_deactivate_primary(struct ofono_gprs_context *gc,
-- 
1.7.1

_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to