From: Chris Wright Date: Thu, 22 Jun 2006 08:51:07 +0000 (-0700) Subject: couple IPV6 fixes from DaveM X-Git-Tag: v2.6.16.22~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a94ceccf209587cde8094d95fb84c78970e6430;p=thirdparty%2Fkernel%2Fstable-queue.git couple IPV6 fixes from DaveM --- diff --git a/queue-2.6.17/ipv6-addrconf-fix-default-source-address-selection-without-config_ipv6_privacy.patch b/queue-2.6.17/ipv6-addrconf-fix-default-source-address-selection-without-config_ipv6_privacy.patch new file mode 100644 index 00000000000..811505cf776 --- /dev/null +++ b/queue-2.6.17/ipv6-addrconf-fix-default-source-address-selection-without-config_ipv6_privacy.patch @@ -0,0 +1,33 @@ +From stable-bounces@linux.kernel.org Thu Jun 22 01:43:03 2006 +Date: Thu, 22 Jun 2006 01:42:13 -0700 (PDT) +From: David Miller +To: stable@kernel.org +Cc: +Subject: IPV6 ADDRCONF: Fix default source address selection without CONFIG_IPV6_PRIVACY + +From: YOSHIFUJI Hideaki + +We need to update hiscore.rule even if we don't enable CONFIG_IPV6_PRIVACY, +because we have more less significant rule; longest match. + +Signed-off-by: YOSHIFUJI Hideaki +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- + +--- + net/ipv6/addrconf.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- linux-2.6.17.1.orig/net/ipv6/addrconf.c ++++ linux-2.6.17.1/net/ipv6/addrconf.c +@@ -1075,6 +1075,9 @@ int ipv6_dev_get_saddr(struct net_device + if (hiscore.attrs & IPV6_SADDR_SCORE_PRIVACY) + continue; + } ++#else ++ if (hiscore.rule < 7) ++ hiscore.rule++; + #endif + /* Rule 8: Use longest matching prefix */ + if (hiscore.rule < 8) { diff --git a/queue-2.6.17/ipv6-fix-source-address-selection.patch b/queue-2.6.17/ipv6-fix-source-address-selection.patch new file mode 100644 index 00000000000..18effd8bddf --- /dev/null +++ b/queue-2.6.17/ipv6-fix-source-address-selection.patch @@ -0,0 +1,50 @@ +From stable-bounces@linux.kernel.org Thu Jun 22 01:39:43 2006 +Date: Thu, 22 Jun 2006 01:39:05 -0700 (PDT) +From: David Miller +To: stable@kernel.org +Cc: +Subject: IPV6: Fix source address selection. + +From: $,1 aukasz Stelmach + +Two additional labels (RFC 3484, sec. 10.3) for IPv6 addreses +are defined to make a distinction between global unicast +addresses and Unique Local Addresses (fc00::/7, RFC 4193) and +Teredo (2001::/32, RFC 4380). It is necessary to avoid attempts +of connection that would either fail (eg. fec0:: to 2001:feed::) +or be sub-optimal (2001:0:: to 2001:feed::). + +Signed-off-by: $,1 aukasz Stelmach +Signed-off-by: YOSHIFUJI Hideaki +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- + +--- + net/ipv6/addrconf.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- linux-2.6.17.1.orig/net/ipv6/addrconf.c ++++ linux-2.6.17.1/net/ipv6/addrconf.c +@@ -862,6 +862,8 @@ static int inline ipv6_saddr_label(const + * 2002::/16 2 + * ::/96 3 + * ::ffff:0:0/96 4 ++ * fc00::/7 5 ++ * 2001::/32 6 + */ + if (type & IPV6_ADDR_LOOPBACK) + return 0; +@@ -869,8 +871,12 @@ static int inline ipv6_saddr_label(const + return 3; + else if (type & IPV6_ADDR_MAPPED) + return 4; ++ else if (addr->s6_addr32[0] == htonl(0x20010000)) ++ return 6; + else if (addr->s6_addr16[0] == htons(0x2002)) + return 2; ++ else if ((addr->s6_addr[0] & 0xfe) == 0xfc) ++ return 5; + return 1; + } + diff --git a/queue-2.6.17/series b/queue-2.6.17/series index 22ac34daadc..ab53e538fb1 100644 --- a/queue-2.6.17/series +++ b/queue-2.6.17/series @@ -13,3 +13,5 @@ ntfs-critical-bug-fix.patch x86-compile-fix-for-asm-i386-alternatives.h.patch bcm43xx-init-fix-for-possible-machine-check.patch uml-fix-uptime.patch +ipv6-fix-source-address-selection.patch +ipv6-addrconf-fix-default-source-address-selection-without-config_ipv6_privacy.patch