[gnome-control-center] network: Fix application of the default gateway
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Fix application of the default gateway
- Date: Tue, 20 Sep 2016 08:34:05 +0000 (UTC)
commit 7dfc6a6c23ef62e37b96207eff6626917bbe68f6
Author: Bastien Nocera <hadess hadess net>
Date: Fri Sep 16 17:01:36 2016 +0200
network: Fix application of the default gateway
Now that we ensured that only the first address has a gateway entry,
read it and apply it.
See https://bugzilla.gnome.org/show_bug.cgi?id=765969
https://bugzilla.gnome.org/show_bug.cgi?id=771515
panels/network/connection-editor/ce-page-ip4.c | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-ip4.c b/panels/network/connection-editor/ce-page-ip4.c
index 8d77324..502408a 100644
--- a/panels/network/connection-editor/ce-page-ip4.c
+++ b/panels/network/connection-editor/ce-page-ip4.c
@@ -697,6 +697,7 @@ ui_to_setting (CEPageIP4 *page)
GPtrArray *routes = NULL;
GList *children, *l;
gboolean ret = TRUE;
+ const char *default_gateway = NULL;
if (!gtk_switch_get_active (page->enabled)) {
method = NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
@@ -724,9 +725,10 @@ ui_to_setting (CEPageIP4 *page)
for (l = children; l; l = l->next) {
GtkWidget *row = l->data;
GtkEntry *entry;
+ GtkEntry *gateway_entry;
const gchar *text_address;
const gchar *text_netmask;
- const gchar *text_gateway;
+ const gchar *text_gateway = "";
NMIPAddress *addr;
guint32 prefix;
@@ -736,15 +738,15 @@ ui_to_setting (CEPageIP4 *page)
text_address = gtk_entry_get_text (entry);
text_netmask = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row),
"network")));
- text_gateway = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row),
"gateway")));
- /* FIXME handle gateway
- * https://bugzilla.gnome.org/show_bug.cgi?id=765969 */
+ gateway_entry = g_object_get_data (G_OBJECT (row), "gateway");
+ if (gtk_widget_is_visible (GTK_WIDGET (gateway_entry)))
+ text_gateway = gtk_entry_get_text (gateway_entry);
if (!*text_address && !*text_netmask && !*text_gateway) {
/* ignore empty rows */
widget_unset_error (GTK_WIDGET (entry));
widget_unset_error (g_object_get_data (G_OBJECT (row), "network"));
- widget_unset_error (g_object_get_data (G_OBJECT (row), "gateway"));
+ widget_unset_error (GTK_WIDGET (gateway_entry));
continue;
}
@@ -762,11 +764,16 @@ ui_to_setting (CEPageIP4 *page)
widget_unset_error (g_object_get_data (G_OBJECT (row), "network"));
}
- if (text_gateway && !nm_utils_ipaddr_valid (AF_INET, text_gateway)) {
+ if (gtk_widget_is_visible (GTK_WIDGET (gateway_entry)) &&
+ text_gateway && !nm_utils_ipaddr_valid (AF_INET, text_gateway)) {
widget_set_error (g_object_get_data (G_OBJECT (row), "gateway"));
ret = FALSE;
} else {
- widget_unset_error (g_object_get_data (G_OBJECT (row), "gateway"));
+ widget_unset_error (GTK_WIDGET (gateway_entry));
+ if (gtk_widget_is_visible (GTK_WIDGET (gateway_entry))) {
+ g_assert (default_gateway == NULL);
+ default_gateway = text_gateway;
+ }
}
if (!ret)
@@ -914,6 +921,7 @@ ui_to_setting (CEPageIP4 *page)
g_object_set (page->setting,
NM_SETTING_IP_CONFIG_METHOD, method,
NM_SETTING_IP_CONFIG_ADDRESSES, addresses,
+ NM_SETTING_IP_CONFIG_GATEWAY, default_gateway,
NM_SETTING_IP_CONFIG_DNS, dns_servers ? dns_servers->pdata : NULL,
NM_SETTING_IP_CONFIG_ROUTES, routes,
NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, ignore_auto_dns,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]