[arch-commits] Commit in networkmanager/trunk (3 files)

Jan Steffens heftig at archlinux.org
Fri Jun 15 19:16:07 UTC 2012


    Date: Friday, June 15, 2012 @ 15:16:06
  Author: heftig
Revision: 161856

Revert due to FS#30305

Added:
  networkmanager/trunk/dont-fight-over-ipv6.patch
    (from rev 160000, networkmanager/trunk/dont-fight-over-ipv6.patch)
  networkmanager/trunk/initialize-GError.patch
    (from rev 160000, networkmanager/trunk/initialize-GError.patch)
Modified:
  networkmanager/trunk/PKGBUILD

----------------------------+
 PKGBUILD                   |   25 ++++----
 dont-fight-over-ipv6.patch |  121 +++++++++++++++++++++++++++++++++++++++++++
 initialize-GError.patch    |   23 ++++++++
 3 files changed, 158 insertions(+), 11 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-06-15 17:07:42 UTC (rev 161855)
+++ PKGBUILD	2012-06-15 19:16:06 UTC (rev 161856)
@@ -8,15 +8,14 @@
 pkgname=networkmanager
 _pkgname=NetworkManager
 pkgver=0.9.4.0
-pkgrel=5
-_snapshot=83760a7
+pkgrel=6
 pkgdesc="Network Management daemon"
 arch=('i686' 'x86_64')
 license=('GPL')
 url="http://www.gnome.org/projects/$_pkgname/"
 depends=('dbus-glib' 'iproute2' 'libnl' 'nss' 'polkit' 'udev' 'wpa_supplicant' 'ppp' 'dhcpcd'
          'libsoup')
-makedepends=('intltool' 'dhclient' 'iptables' 'gobject-introspection' 'gtk-doc')
+makedepends=('intltool' 'dhclient' 'iptables' 'gobject-introspection')
 optdepends=('modemmanager: for modem management service'
             'dhclient: alternative DHCP/DHCPv6 client'
             'iptables: Connection sharing'
@@ -26,21 +25,25 @@
 options=('!libtool')
 backup=('etc/NetworkManager/NetworkManager.conf')
 install=networkmanager.install
-#source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz
-source=(http://cgit.freedesktop.org/$_pkgname/$_pkgname/snapshot/$_pkgname-$_snapshot.tar.xz
-         NetworkManager.conf disable_set_hostname.patch dnsmasq-path.patch)
-sha256sums=('6cb6d6c87306a7cd4aeed786c3445677b6df4e56ddcc4a6c1747c09c44114091'
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz
+        NetworkManager.conf disable_set_hostname.patch dnsmasq-path.patch
+         initialize-GError.patch dont-fight-over-ipv6.patch)
+sha256sums=('eb4f124008b3d855a37205d03ef035b7218639cd7332bdae5567095977e93e0f'
             '44b048804c7c0b8b3b0c29b8632b6ad613c397d0a1635ec918e10c0fbcdadf21'
             '25056837ea92e559f09563ed817e3e0cd9333be861b8914e45f62ceaae2e0460'
-            '65124505048cc8396daf0242c9f5d532fa669b4bbca305998c248ab2329490cb')
+            '65124505048cc8396daf0242c9f5d532fa669b4bbca305998c248ab2329490cb'
+            '95c06ad34c131b1db0f28d6e78003bd8fd0a3ba903f76027381e3c4c411c6cb6'
+            'cc66f2fdf59f4f9873a5b775421e1968861c5541d7e29b83b4d30351ad1f9e94')
 
 build() {
-  cd $_pkgname-$_snapshot
+  cd $_pkgname-$pkgver
 
   patch -Np1 -i ../disable_set_hostname.patch
   patch -Np1 -i ../dnsmasq-path.patch
+  patch -Np1 -i ../initialize-GError.patch
+  patch -Np1 -i ../dont-fight-over-ipv6.patch
 
-  ./autogen.sh \
+  ./configure \
     --prefix=/usr \
     --sysconfdir=/etc \
     --localstatedir=/var \
@@ -62,7 +65,7 @@
 }
 
 package() {
-  cd $_pkgname-$_snapshot
+  cd $_pkgname-$pkgver
   make DESTDIR="$pkgdir" install
 
   install -m644 ../NetworkManager.conf "$pkgdir/etc/NetworkManager/"

Copied: networkmanager/trunk/dont-fight-over-ipv6.patch (from rev 160000, networkmanager/trunk/dont-fight-over-ipv6.patch)
===================================================================
--- dont-fight-over-ipv6.patch	                        (rev 0)
+++ dont-fight-over-ipv6.patch	2012-06-15 19:16:06 UTC (rev 161856)
@@ -0,0 +1,121 @@
+From 77de91e5a8b1c1993ae65c54b37e0411e78e6fe6 Mon Sep 17 00:00:00 2001
+From: Dan Winship <danw at gnome.org>
+Date: Thu, 19 Apr 2012 18:27:12 +0000
+Subject: core: don't fight with the kernel over the default IPv6 route
+
+The kernel wants there to be a default route over every RA-ed IPv6
+interface, and it gets confused and annoyed if we remove that default
+route and replace it with our own (causing it to effectively drop all
+further RAs on the floor, which is particularly bad if some of the
+information in the earlier RA had an expiration time).
+
+So, rather than replacing the kernel's default route(s), just add an
+additional one of our own, with a lower (ie, higher priority) metric.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=785772
+---
+diff --git a/src/nm-system.c b/src/nm-system.c
+index 91153ec..4cebb13 100644
+--- a/src/nm-system.c
++++ b/src/nm-system.c
+@@ -1023,7 +1023,7 @@ add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw)
+ }
+ 
+ static int
+-replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
++add_default_ip6_route (int ifindex, const struct in6_addr *gw)
+ {
+ 	struct rtnl_route *route = NULL;
+ 	struct nl_sock *nlh;
+@@ -1037,22 +1037,36 @@ replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
+ 	route = nm_netlink_route_new (ifindex, AF_INET6, 0,
+ 	                              NMNL_PROP_SCOPE, RT_SCOPE_UNIVERSE,
+ 	                              NMNL_PROP_TABLE, RT_TABLE_MAIN,
++	                              NMNL_PROP_PRIO, 1,
+ 	                              NULL);
+ 	g_return_val_if_fail (route != NULL, -ENOMEM);
+ 
+ 	/* Add the new default route */
+-	err = nm_netlink_route6_add (route, &in6addr_any, 0, gw, NLM_F_REPLACE);
+-	if (err == -NLE_EXIST) {
+-		/* FIXME: even though we use NLM_F_REPLACE the kernel won't replace
+-		 * the route if it's the same.  Suppress the pointless error.
+-		 */
++	err = nm_netlink_route6_add (route, &in6addr_any, 0, gw, NLM_F_CREATE);
++	if (err == -NLE_EXIST)
+ 		err = 0;
+-	}
+ 
+ 	rtnl_route_put (route);
+ 	return err;
+ }
+ 
++static struct rtnl_route *
++find_static_default_routes (struct rtnl_route *route,
++                            struct nl_addr *dst,
++                            const char *iface,
++                            gpointer user_data)
++{
++	GList **def_routes = user_data;
++
++	if (   nl_addr_get_prefixlen (dst) == 0
++	    && rtnl_route_get_protocol (route) == RTPROT_STATIC) {
++		rtnl_route_get (route);
++		*def_routes = g_list_prepend (*def_routes, route);
++	}
++
++	return NULL;
++}
++
+ /*
+  * nm_system_replace_default_ip6_route
+  *
+@@ -1062,12 +1076,35 @@ replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
+ gboolean
+ nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
+ {
+-	struct rtnl_route *gw_route = NULL;
++	GList *def_routes, *iter;
++	struct rtnl_route *route, *gw_route = NULL;
+ 	gboolean success = FALSE;
+ 	char *iface;
+ 	int err;
+ 
+-	err = replace_default_ip6_route (ifindex, gw);
++	/* We can't just use NLM_F_REPLACE here like in the IPv4 case, because
++	 * the kernel doesn't like it if we replace the default routes it
++	 * creates. (See rh#785772.) So we delete any non-kernel default routes,
++	 * and then add a new default route of our own with a lower metric than
++	 * the kernel ones.
++	 */
++	def_routes = NULL;
++	nm_netlink_foreach_route (ifindex, AF_INET6, RT_SCOPE_UNIVERSE, TRUE,
++	                          find_static_default_routes, &def_routes);
++	for (iter = def_routes; iter; iter = iter->next) {
++		route = iter->data;
++		if (!nm_netlink_route_delete (route)) {
++			iface = nm_netlink_index_to_iface (ifindex);
++			nm_log_err (LOGD_DEVICE | LOGD_IP6,
++			            "(%s): failed to delete existing IPv6 default route",
++			            iface);
++			g_free (iface);
++		}
++		rtnl_route_put (route);
++	}
++	g_list_free (def_routes);
++
++	err = add_default_ip6_route (ifindex, gw);
+ 	if (err == 0)
+ 		return TRUE;
+ 
+@@ -1091,7 +1128,7 @@ nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
+ 		goto out;
+ 
+ 	/* Try adding the original route again */
+-	err = replace_default_ip6_route (ifindex, gw);
++	err = add_default_ip6_route (ifindex, gw);
+ 	if (err != 0) {
+ 		nm_netlink_route_delete (gw_route);
+ 		nm_log_err (LOGD_DEVICE | LOGD_IP6,
+--
+cgit v0.9.0.2-2-gbebe

Copied: networkmanager/trunk/initialize-GError.patch (from rev 160000, networkmanager/trunk/initialize-GError.patch)
===================================================================
--- initialize-GError.patch	                        (rev 0)
+++ initialize-GError.patch	2012-06-15 19:16:06 UTC (rev 161856)
@@ -0,0 +1,23 @@
+From 8bb278944496102a4afad46b53e1e8279425aaac Mon Sep 17 00:00:00 2001
+From: Jiří Klimeš <jklimes at redhat.com>
+Date: Mon, 02 Apr 2012 14:37:55 +0000
+Subject: libnm-glib: initialize GError, else invalid free() crash can occur (rh #809123)
+
+---
+(limited to 'libnm-glib/nm-remote-settings.c')
+
+diff --git a/libnm-glib/nm-remote-settings.c b/libnm-glib/nm-remote-settings.c
+index 9a81a8d..68aaeb4 100644
+--- a/libnm-glib/nm-remote-settings.c
++++ b/libnm-glib/nm-remote-settings.c
+@@ -109,7 +109,7 @@ static void
+ _nm_remote_settings_ensure_inited (NMRemoteSettings *self)
+ {
+ 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
+-	GError *error;
++	GError *error = NULL;
+ 
+ 	if (!priv->inited) {
+ 		if (!g_initable_init (G_INITABLE (self), NULL, &error)) {
+--
+cgit v0.9.0.2-2-gbebe




More information about the arch-commits mailing list