diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-12-19 16:25:31 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:34 +0100 |
commit | 4b8b99ee96f16e3f2d623cb896a4d1bf7f12820f (patch) | |
tree | 22904c9076494eb1d3fc9fdeb7c51354643c9f52 | |
parent | 85b14b0008f217c3124e381c998fcf7ead6d999b (diff) |
bearer-3gpp: set ip method when connecting the bearer
Currently, assume PPP when we have an AT data port, and DHCP otherwise.
-rw-r--r-- | src/mm-bearer-3gpp.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mm-bearer-3gpp.c b/src/mm-bearer-3gpp.c index 11e3e3ee..b82c9407 100644 --- a/src/mm-bearer-3gpp.c +++ b/src/mm-bearer-3gpp.c @@ -92,12 +92,28 @@ connect_context_complete_and_free (ConnectContext *ctx) g_simple_async_result_take_error (ctx->result, ctx->error); } else { + GVariant *ip_config; + GVariantBuilder builder; + MMBearerIpMethod ip_method; + /* Port is connected; update the state */ mm_port_set_connected (ctx->data, TRUE); mm_gdbus_bearer_set_connected (MM_GDBUS_BEARER (ctx->bearer), TRUE); mm_gdbus_bearer_set_interface (MM_GDBUS_BEARER (ctx->bearer), mm_port_get_device (ctx->data)); + + /* If serial port, set PPP method */ + ip_method = (MM_IS_AT_SERIAL_PORT (ctx->data) ? + MM_BEARER_IP_METHOD_PPP : + MM_BEARER_IP_METHOD_DHCP); + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + g_variant_builder_add (&builder, "{sv}", "method", g_variant_new_uint32 (ip_method)); + ip_config = g_variant_builder_end (&builder); + mm_gdbus_bearer_set_ip4_config (MM_GDBUS_BEARER (ctx->bearer), ip_config); + mm_gdbus_bearer_set_ip6_config (MM_GDBUS_BEARER (ctx->bearer), ip_config); + /* Keep data port and CID around while connected */ MM_BEARER_3GPP (ctx->bearer)->priv->cid = ctx->cid; MM_BEARER_3GPP (ctx->bearer)->priv->port = g_object_ref (ctx->data); @@ -521,6 +537,8 @@ disconnect_context_complete_and_free (DisconnectContext *ctx) mm_port_set_connected (ctx->data, FALSE); mm_gdbus_bearer_set_connected (MM_GDBUS_BEARER (ctx->bearer), FALSE); mm_gdbus_bearer_set_interface (MM_GDBUS_BEARER (ctx->bearer), NULL); + mm_gdbus_bearer_set_ip4_config (MM_GDBUS_BEARER (ctx->bearer), NULL); + mm_gdbus_bearer_set_ip6_config (MM_GDBUS_BEARER (ctx->bearer), NULL); /* Clear data port and CID */ MM_BEARER_3GPP (ctx->bearer)->priv->cid = 0; g_clear_object (&(MM_BEARER_3GPP (ctx->bearer)->priv->port)); |