summaryrefslogtreecommitdiff
path: root/extra/networkmanager
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-04-26 00:01:31 +0000
committerroot <root@rshg054.dnsready.net>2012-04-26 00:01:31 +0000
commit00e1a2f0886e471d594c22dc14fc9d80ce5098c4 (patch)
treeb8c721e8b8050ead04f92a5051e4bee881defa9b /extra/networkmanager
parent98bf2ac3fdd6f7bcb6ce45c932fc13c07fecc03f (diff)
Thu Apr 26 00:01:31 UTC 2012
Diffstat (limited to 'extra/networkmanager')
-rw-r--r--extra/networkmanager/PKGBUILD15
-rw-r--r--extra/networkmanager/dont-fight-over-ipv6.patch121
-rw-r--r--extra/networkmanager/initialize-GError.patch23
3 files changed, 154 insertions, 5 deletions
diff --git a/extra/networkmanager/PKGBUILD b/extra/networkmanager/PKGBUILD
index 8d75599c2..7587d3e38 100644
--- a/extra/networkmanager/PKGBUILD
+++ b/extra/networkmanager/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 156944 2012-04-23 09:09:38Z ibiru $
+# $Id: PKGBUILD 157134 2012-04-24 18:49:00Z heftig $
# Maintainer: Jan de Groot <jgc@archlinxu.org>
# Contri-butor: Wael Nasreddine <gandalf@siemens-mobiles.org>
# Contributor: Tor Krill <tor@krill.nu>
@@ -8,7 +8,7 @@
pkgname=networkmanager
_pkgname=NetworkManager
pkgver=0.9.4.0
-pkgrel=2
+pkgrel=4
pkgdesc="Network Management daemon"
arch=('i686' 'x86_64')
license=('GPL')
@@ -27,17 +27,22 @@ backup=('etc/NetworkManager/NetworkManager.conf')
install=networkmanager.install
#source=(http://cgit.freedesktop.org/$_pkgname/$_pkgname/snapshot/$_pkgname-master.tar.xz
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)
+ 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-$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
./configure \
--prefix=/usr \
@@ -50,9 +55,9 @@ build() {
--with-dhcpcd=/sbin/dhcpcd \
--with-iptables=/usr/sbin/iptables \
--with-systemdsystemunitdir=/usr/lib/systemd/system \
+ --with-udev-dir=/usr/lib/udev \
--with-resolvconf=/usr/sbin/resolvconf \
--with-session-tracking=ck \
- --with-wext=no \
--disable-static \
--enable-more-warnings=no \
--disable-wimax
diff --git a/extra/networkmanager/dont-fight-over-ipv6.patch b/extra/networkmanager/dont-fight-over-ipv6.patch
new file mode 100644
index 000000000..f7945335f
--- /dev/null
+++ b/extra/networkmanager/dont-fight-over-ipv6.patch
@@ -0,0 +1,121 @@
+From 77de91e5a8b1c1993ae65c54b37e0411e78e6fe6 Mon Sep 17 00:00:00 2001
+From: Dan Winship <danw@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
diff --git a/extra/networkmanager/initialize-GError.patch b/extra/networkmanager/initialize-GError.patch
new file mode 100644
index 000000000..58f0b9cb3
--- /dev/null
+++ b/extra/networkmanager/initialize-GError.patch
@@ -0,0 +1,23 @@
+From 8bb278944496102a4afad46b53e1e8279425aaac Mon Sep 17 00:00:00 2001
+From: Jiří Klimeš <jklimes@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