diff -Nru network-manager-0.9.4.0/debian/changelog network-manager-0.9.4.0/debian/changelog --- network-manager-0.9.4.0/debian/changelog 2013-10-11 16:23:02.000000000 +0200 +++ network-manager-0.9.4.0/debian/changelog 2013-12-18 10:21:14.000000000 +0100 @@ -1,3 +1,10 @@ +network-manager (0.9.4.0-0ubuntu4.5) precise; urgency=low + + * debian/patches/fix-incorrect-ipv6-netmask.patch + (Closes: #661885, LP: #1254028) + + -- Gianfranco Costamagna Wed, 18 Dec 2013 10:20:28 +0100 + network-manager (0.9.4.0-0ubuntu4.4) precise; urgency=low * debian/patches/bluetooth.patch: DUN via bluetooth fails (lp: #1186273) diff -Nru network-manager-0.9.4.0/debian/patches/fix-incorrect-ipv6-netmask.patch network-manager-0.9.4.0/debian/patches/fix-incorrect-ipv6-netmask.patch --- network-manager-0.9.4.0/debian/patches/fix-incorrect-ipv6-netmask.patch 1970-01-01 01:00:00.000000000 +0100 +++ network-manager-0.9.4.0/debian/patches/fix-incorrect-ipv6-netmask.patch 2013-12-18 10:17:59.000000000 +0100 @@ -0,0 +1,96 @@ +From eb460b70dad82d366d35fa5703c0e79a1389e4d1 Mon Sep 17 00:00:00 2001 +From: Tore Anderson +Date: Thu, 31 May 2012 20:47:55 +0000 +Subject: dhcp: use /128 as prefix length for IPv6 IA_NA assignments (bgo #656610) (debian #661885) + +DHCPv6 IA_NA assignments do not contain a prefix length, they are for a +single address (/128) only. However, the ISC DHCPv6 client incorrectly +assumes IA_NA assignments come with a implicit prefix length of /64, and +passes this incorrect information on to NetworkManager, which adds this +prefix as a on-link route. This will cause communication failures in +certain networks, for example NBMA networks, and in organisations using +longer prefix lengths than /64 for their LANs. For more discussion +regarding this problem, see RFC 5942 section 5. + +This patch makes NM ignore the false prefix length attribute provided by +the ISC DHCPv6 client, instead setting it to a /128 (single address) in +all cases. Note that this does not preclude an on-link prefix from being +added by NM if it is being advertised in the correct way, i.e., by +including a Prefix Information Option with the L flag set in an ICMPv6 +Router Advertisement. + +For what it's worth I've also sent a patch to ISC to change the hard- +coded implicit prefix length value from /64 to /128 in [ISC-Bugs #29468]. +--- +diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c +index f6fec0a..ea4084a 100644 +--- a/src/dhcp-manager/nm-dhcp-client.c ++++ b/src/dhcp-manager/nm-dhcp-client.c +@@ -1229,12 +1229,6 @@ ip6_options_to_config (NMDHCPClient *self) + return NULL; + } + +- addr = nm_ip6_address_new (); +- if (!addr) { +- nm_log_warn (LOGD_DHCP6, "(%s): couldn't allocate memory for an IP6 Address!", priv->iface); +- goto error; +- } +- + str = g_hash_table_lookup (priv->options, "new_ip6_address"); + if (str) { + if (!inet_pton (AF_INET6, str, &tmp_addr)) { +@@ -1243,35 +1237,17 @@ ip6_options_to_config (NMDHCPClient *self) + goto error; + } + ++ addr = nm_ip6_address_new (); ++ g_assert (addr); + nm_ip6_address_set_address (addr, &tmp_addr); +- nm_log_info (LOGD_DHCP6, " address %s", str); +- } else { +- /* No address in managed mode is a hard error */ +- if (priv->info_only == FALSE) +- goto error; +- +- /* But "info-only" setups don't necessarily need an address */ +- nm_ip6_address_unref (addr); +- addr = NULL; +- } +- +- /* Only care about prefix if we got an address */ +- if (addr) { +- str = g_hash_table_lookup (priv->options, "new_ip6_prefixlen"); +- if (str) { +- long unsigned int prefix; +- +- errno = 0; +- prefix = strtoul (str, NULL, 10); +- if (errno != 0 || prefix > 128) +- goto error; +- +- nm_ip6_address_set_prefix (addr, (guint32) prefix); +- nm_log_info (LOGD_DHCP6, " prefix %lu", prefix); +- } ++ /* DHCPv6 IA_NA assignments are single address only */ ++ nm_ip6_address_set_prefix (addr, 128); ++ nm_log_info (LOGD_DHCP6, " address %s/128", str); + + nm_ip6_config_take_address (ip6_config, addr); +- addr = NULL; ++ } else if (priv->info_only == FALSE) { ++ /* No address in Managed mode is a hard error */ ++ goto error; + } + + str = g_hash_table_lookup (priv->options, "new_host_name"); +@@ -1300,8 +1276,6 @@ ip6_options_to_config (NMDHCPClient *self) + return ip6_config; + + error: +- if (addr) +- nm_ip6_address_unref (addr); + g_object_unref (ip6_config); + return NULL; + } +-- +cgit v0.9.0.2-2-gbebe diff -Nru network-manager-0.9.4.0/debian/patches/series network-manager-0.9.4.0/debian/patches/series --- network-manager-0.9.4.0/debian/patches/series 2013-10-11 16:23:11.000000000 +0200 +++ network-manager-0.9.4.0/debian/patches/series 2013-12-18 10:19:26.000000000 +0100 @@ -28,3 +28,4 @@ nm-ipv6-route-cache.patch dnsmasq-dbus-updates.patch bluetooth.patch +fix-incorrect-ipv6-netmask.patch