From 92898e84d6aebc3ab11799476d7ab8c0d1627949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Tue, 3 Jun 2014 12:38:07 +0200 Subject: [PATCH 1/3] tui: fix a crash when editing IPv6 routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jiří Klimeš --- tui/nm-editor-bindings.c | 14 +++++++------- tui/nmt-route-entry.c | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tui/nm-editor-bindings.c b/tui/nm-editor-bindings.c index 7f76f14..5be1358 100644 --- a/tui/nm-editor-bindings.c +++ b/tui/nm-editor-bindings.c @@ -772,7 +772,7 @@ ip6_addresses_to_strv (GBinding *binding, for (i = 0; i < addrs->len; i++) { addrbytes = addrs->pdata[i]; if (IP6_ADDRESS_SET (addrbytes)) - inet_ntop (AF_INET, addrbytes->data, buf, sizeof (buf)); + inet_ntop (AF_INET6, addrbytes->data, buf, sizeof (buf)); else buf[0] = '\0'; strings[i] = g_strdup (buf); @@ -1002,7 +1002,7 @@ ip6_route_transform_to_next_hop_string (GBinding *binding, addrbytes = &in6addr_any; if (IN6_ADDR_SET (addrbytes)) - inet_ntop (AF_INET, &addrbytes, buf, sizeof (buf)); + inet_ntop (AF_INET6, addrbytes, buf, sizeof (buf)); else buf[0] = '\0'; g_value_set_string (target_value, buf); @@ -1035,7 +1035,7 @@ ip6_route_transform_from_dest_string (GBinding *binding, { NMIP6Route *route; const char *text; - const struct in6_addr *addrbytes; + struct in6_addr addrbytes; guint32 prefix; text = g_value_get_string (source_value); @@ -1047,7 +1047,7 @@ ip6_route_transform_from_dest_string (GBinding *binding, g_binding_get_source_property (binding), &route, NULL); - nm_ip6_route_set_dest (route, addrbytes); + nm_ip6_route_set_dest (route, &addrbytes); nm_ip6_route_set_prefix (route, prefix); g_value_take_boxed (target_value, route); @@ -1062,21 +1062,21 @@ ip6_route_transform_from_next_hop_string (GBinding *binding, { NMIP6Route *route; const char *text; - const struct in6_addr *addrbytes; + struct in6_addr addrbytes; text = g_value_get_string (source_value); if (*text) { if (!ip_string_parse (text, AF_INET6, &addrbytes, NULL)) return FALSE; } else - addrbytes = 0; + addrbytes = in6addr_any; /* Fetch the original property value */ g_object_get (g_binding_get_source (binding), g_binding_get_source_property (binding), &route, NULL); - nm_ip6_route_set_next_hop (route, addrbytes); + nm_ip6_route_set_next_hop (route, &addrbytes); g_value_take_boxed (target_value, route); return TRUE; diff --git a/tui/nmt-route-entry.c b/tui/nmt-route-entry.c index db8c254..1b20ca6 100644 --- a/tui/nmt-route-entry.c +++ b/tui/nmt-route-entry.c @@ -206,7 +206,7 @@ nmt_route_entry_set_property (GObject *object, priv->ip4_route = g_value_dup_boxed (value); break; case PROP_IP6_ROUTE: - g_return_if_fail (priv->family == AF_INET); + g_return_if_fail (priv->family == AF_INET6); if (priv->ip6_route) nm_ip6_route_unref (priv->ip6_route); priv->ip6_route = g_value_dup_boxed (value); -- 1.7.11.7 From 5ee85fe46e86fdc9e063c22700697802435503a6 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 3 Jun 2014 09:13:43 -0400 Subject: [PATCH 2/3] tui: fix setting Clone MAC Address properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NmtMacEntry wasn't notifying its mac-address property when it changed, so the change never got saved to the NMSetting. https://bugzilla.gnome.org/show_bug.cgi?id=731160 Signed-off-by: Jiří Klimeš --- tui/nmt-mac-entry.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tui/nmt-mac-entry.c b/tui/nmt-mac-entry.c index d76c097..b065640 100644 --- a/tui/nmt-mac-entry.c +++ b/tui/nmt-mac-entry.c @@ -28,6 +28,8 @@ #include "config.h" +#include + #include #include @@ -129,6 +131,17 @@ nmt_mac_entry_init (NmtMacEntry *entry) } static void +nmt_mac_entry_notify (GObject *object, + GParamSpec *pspec) +{ + if (G_OBJECT_CLASS (nmt_mac_entry_parent_class)->notify) + G_OBJECT_CLASS (nmt_mac_entry_parent_class)->notify (object, pspec); + + if (pspec->owner_type == NMT_TYPE_NEWT_ENTRY && !strcmp (pspec->name, "text")) + g_object_notify (object, "mac-address"); +} + +static void nmt_mac_entry_set_property (GObject *object, guint prop_id, const GValue *value, @@ -189,6 +202,7 @@ nmt_mac_entry_class_init (NmtMacEntryClass *entry_class) g_type_class_add_private (entry_class, sizeof (NmtMacEntryPrivate)); /* virtual methods */ + object_class->notify = nmt_mac_entry_notify; object_class->set_property = nmt_mac_entry_set_property; object_class->get_property = nmt_mac_entry_get_property; -- 1.7.11.7 From d57795d474aaae7865d4d052605d5ddec65c429d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 3 Jun 2014 09:36:17 -0400 Subject: [PATCH 3/3] tui: fix NmtMacEntry validation/display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NmtMacEntry would allow you to input 1 character more than it should have. Fix that. Also, the code to insert ":"s automatically was bumping against some weirdness in NmtNewtEntry that made it so that the ":" didn't get displayed until you typed one more character after the one where it got inserted. Hack around that by manually requesting a redraw. https://bugzilla.gnome.org/show_bug.cgi?id=731160 Signed-off-by: Jiří Klimeš --- tui/nmt-mac-entry.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tui/nmt-mac-entry.c b/tui/nmt-mac-entry.c index b065640..5e1c417 100644 --- a/tui/nmt-mac-entry.c +++ b/tui/nmt-mac-entry.c @@ -82,7 +82,7 @@ mac_filter (NmtNewtEntry *entry, { NmtMacEntryPrivate *priv = NMT_MAC_ENTRY_GET_PRIVATE (entry); - if (position > priv->mac_str_length) + if (position >= priv->mac_str_length) return FALSE; return g_ascii_isxdigit (ch) || ch == ':'; @@ -116,8 +116,13 @@ mac_validator (NmtNewtEntry *entry, if (g_ascii_isxdigit (p[0]) && !p[1]) { char *fixed = g_strdup_printf ("%.*s:%c", (int)(p - text), text, *p); - g_object_set (G_OBJECT (entry), "text", fixed, NULL); - return TRUE; + nmt_newt_entry_set_text (entry, fixed); + g_free (fixed); + + /* FIXME: NmtNewtEntry doesn't correctly deal with us calling set_text() + * from inside the validator. + */ + nmt_newt_widget_needs_rebuild (NMT_NEWT_WIDGET (entry)); } return FALSE; -- 1.7.11.7 From 7f5b2f81b0b4bf86a0086d4004461e4d1bc95950 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 25 Apr 2014 11:01:21 -0400 Subject: [PATCH] tui: fix route editing (rh #1090422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NmtRouteTable's ip4-routes and ip6-routes properties have the D-Bus-based route list types (like the corresponding NMSetting properties) so we have to convert our GSList-of-NMIP[46]Route data into those types when updating the property. https://bugzilla.gnome.org/show_bug.cgi?id=728958 Signed-off-by: Jiří Klimeš --- tui/nmt-route-table.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tui/nmt-route-table.c b/tui/nmt-route-table.c index 75b2b67..d6173a0 100644 --- a/tui/nmt-route-table.c +++ b/tui/nmt-route-table.c @@ -119,7 +119,14 @@ route_list_transform_from_route (GBinding *binding, nm_ip6_route_unref (nth->data); } nth->data = g_value_dup_boxed (source_value); - g_value_take_boxed (target_value, routes); + + if (priv->family == AF_INET) { + nm_utils_ip4_routes_to_gvalue (routes, target_value); + g_slist_free_full (routes, (GDestroyNotify) nm_ip4_route_unref); + } else if (priv->family == AF_INET6) { + nm_utils_ip6_routes_to_gvalue (routes, target_value); + g_slist_free_full (routes, (GDestroyNotify) nm_ip6_route_unref); + } return TRUE; } -- 1.7.11.7