diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-10-27 15:09:33 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-10-27 15:09:33 +0200 |
commit | 87cd9f57b335c2e65d11de5e5d1c785367a1116c (patch) | |
tree | 1462e24aafb29e5a4dfcb8173afe292f915acad8 /src/gprs.c | |
parent | 9c476f1f0a818c6990e75d9b83c53c539396f710 (diff) | |
download | ofono-87cd9f57b335c2e65d11de5e5d1c785367a1116c.tar.bz2 |
gprs: Add support for exposing proxy information for MMS context
Diffstat (limited to 'src/gprs.c')
-rw-r--r-- | src/gprs.c | 23 |
1 files changed, 20 insertions, 3 deletions
@@ -90,12 +90,14 @@ struct ofono_gprs_context { }; struct context_settings { + enum ofono_gprs_context_type type; char *interface; gboolean static_ip; char *ip; char *netmask; char *gateway; char **dns; + char *proxy; }; struct pri_context { @@ -219,6 +221,7 @@ static void context_settings_free(struct context_settings *settings) g_free(settings->netmask); g_free(settings->gateway); g_strfreev(settings->dns); + g_free(settings->proxy); g_free(settings); } @@ -245,11 +248,18 @@ static void context_settings_append_variant(struct context_settings *settings, dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typesig, &array); if (settings == NULL) - goto end; + goto done; ofono_dbus_dict_append(&array, "Interface", DBUS_TYPE_STRING, &settings->interface); + if (settings->type == OFONO_GPRS_CONTEXT_TYPE_MMS) { + if (settings->proxy) + ofono_dbus_dict_append(&array, "Proxy", + DBUS_TYPE_STRING, &settings->proxy); + goto done; + } + if (settings->static_ip == TRUE) method = "static"; else @@ -274,7 +284,7 @@ static void context_settings_append_variant(struct context_settings *settings, DBUS_TYPE_STRING, &settings->dns); -end: +done: dbus_message_iter_close_container(&variant, &array); dbus_message_iter_close_container(iter, &variant); @@ -384,7 +394,11 @@ static void pri_update_context_settings(struct pri_context *ctx, if (ctx->settings) context_settings_free(ctx->settings); - ctx->settings = g_new0(struct context_settings, 1); + ctx->settings = g_try_new0(struct context_settings, 1); + if (!ctx->settings) + return; + + ctx->settings->type = ctx->type; ctx->settings->interface = g_strdup(interface); ctx->settings->static_ip = static_ip; @@ -393,6 +407,9 @@ static void pri_update_context_settings(struct pri_context *ctx, ctx->settings->gateway = g_strdup(gateway); ctx->settings->dns = g_strdupv((char **)dns); + if (ctx->type == OFONO_GPRS_CONTEXT_TYPE_MMS && ctx->message_proxy) + ctx->settings->proxy = g_strdup(ctx->message_proxy); + pri_ifupdown(interface, TRUE); pri_context_signal_settings(ctx); |