packages: kernel/kernel.spec, kernel/vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fi...
arekm
arekm at pld-linux.org
Sun Nov 1 16:18:28 CET 2009
Author: arekm Date: Sun Nov 1 15:18:28 2009 GMT
Module: packages Tag: HEAD
---- Log message:
- rel 1; ipv6 issue seems to be finally fixed
---- Files affected:
packages/kernel:
kernel.spec (1.720 -> 1.721) , vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/kernel/kernel.spec
diff -u packages/kernel/kernel.spec:1.720 packages/kernel/kernel.spec:1.721
--- packages/kernel/kernel.spec:1.720 Sun Nov 1 15:21:14 2009
+++ packages/kernel/kernel.spec Sun Nov 1 16:18:22 2009
@@ -113,7 +113,7 @@
%define basever 2.6.31
%define postver .5
-%define rel 0.3
+%define rel 1
%define _enable_debug_packages 0
@@ -278,6 +278,8 @@
# based on http://vserver.13thfloor.at/Experimental/patch-2.6.31.5-vs2.3.0.36.21.diff
Patch100: kernel-vserver-2.3.patch
Patch101: kernel-vserver-fixes.patch
+# http://people.linux-vserver.org/~bonbons/patches/vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff
+Patch102: vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff
# Wake-On-Lan fix for nForce drivers; using http://atlas.et.tudelft.nl/verwei90/nforce2/wol.html
# Fix verified for that kernel version.
@@ -822,6 +824,7 @@
%if %{with vserver}
%patch100 -p1
%patch101 -p1
+%patch102 -p4
%endif
# forcedeth
@@ -1500,7 +1503,7 @@
%files doc
%defattr(644,root,root,755)
-%{_kernelsrcdir}/Documentation
+%{_docdir}/%{name}-%{version}
%if %{with source}
%files source -f aux_files_exc
@@ -1567,6 +1570,9 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.721 2009/11/01 15:18:22 arekm
+- rel 1; ipv6 issue seems to be finally fixed
+
Revision 1.720 2009/11/01 14:21:14 arekm
- rel 0.3; vserver patch updated to patch-2.6.31.5-vs2.3.0.36.21.diff
================================================================
Index: packages/kernel/vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff
diff -u /dev/null packages/kernel/vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff:1.1
--- /dev/null Sun Nov 1 16:18:28 2009
+++ packages/kernel/vserver-2.6.31.5-vs2.3.0.36.21-ipv6-fix02.diff Sun Nov 1 16:18:22 2009
@@ -0,0 +1,82 @@
+diff -NurpP /usr/src/linux-2.6.31.5-vs2.3.0.36.21.orig/net/ipv6/udp.c /usr/src/linux-2.6.31.5-vs2.3.0.36.21/net/ipv6/udp.c
+--- /usr/src/linux-2.6.31.5-vs2.3.0.36.21.orig/net/ipv6/udp.c 2009-11-01 14:32:37.092311264 +0100
++++ /usr/src/linux-2.6.31.5-vs2.3.0.36.21/net/ipv6/udp.c 2009-11-01 15:05:42.886773802 +0100
+@@ -61,41 +61,48 @@ int ipv6_rcv_saddr_equal(const struct so
+ int addr_type = ipv6_addr_type(sk_rcv_saddr6);
+ int addr_type2 = sk2_rcv_saddr6 ? ipv6_addr_type(sk2_rcv_saddr6) : IPV6_ADDR_MAPPED;
+
+- if (sk2_ipv6only && !sk2_rcv_saddr6)
+- addr_type2 = IPV6_ADDR_ANY;
+-
+- /* if both are mapped or any, treat as IPv4 */
+- if ((addr_type == IPV6_ADDR_MAPPED || (addr_type == IPV6_ADDR_ANY && !sk_ipv6only)) &&
+- (addr_type2 == IPV6_ADDR_MAPPED || (addr_type2 == IPV6_ADDR_ANY && !sk2_ipv6only))) {
+- if (!sk_rcv_saddr && !sk2_rcv_saddr) {
+- if (nx_v4_addr_conflict(sk->sk_nx_info, sk2->sk_nx_info))
+- return 1;
+- else if (addr_type != IPV6_ADDR_ANY && sk2_rcv_saddr6)
+- return 0;
+- /* remaining cases are at least one ANY */
+- } else if (!sk_rcv_saddr)
+- return v4_addr_in_nx_info(sk->sk_nx_info, sk2_rcv_saddr, -1);
+- else if (!sk2_rcv_saddr)
+- return v4_addr_in_nx_info(sk2->sk_nx_info, sk_rcv_saddr, -1);
++ /* if both are mapped, treat as IPv4 */
++ if (addr_type == IPV6_ADDR_MAPPED && addr_type2 == IPV6_ADDR_MAPPED)
++ if (!sk2_ipv6only &&
++ (!sk_rcv_saddr || !sk2_rcv_saddr ||
++ sk_rcv_saddr == sk2_rcv_saddr))
++ goto vs_v4;
+ else
+- return (sk_rcv_saddr == sk2_rcv_saddr);
+- }
++ return 0;
+
+- if (!sk2_rcv_saddr6)
+- addr_type2 = IPV6_ADDR_ANY;
+-
+- /* both are IPv6 */
+- if (addr_type == IPV6_ADDR_ANY && addr_type2 == IPV6_ADDR_ANY)
+- return nx_v6_addr_conflict(sk->sk_nx_info, sk2->sk_nx_info);
++ if (addr_type2 == IPV6_ADDR_ANY &&
++ !(sk2_ipv6only && addr_type == IPV6_ADDR_MAPPED))
++ goto vs;
++
++ if (addr_type == IPV6_ADDR_ANY &&
++ !(sk_ipv6only && addr_type2 == IPV6_ADDR_MAPPED))
++ goto vs;
++
++ if (sk2_rcv_saddr6 &&
++ ipv6_addr_equal(sk_rcv_saddr6, sk2_rcv_saddr6))
++ goto vs;
+
+- if (addr_type == IPV6_ADDR_ANY)
+- return v6_addr_in_nx_info(sk->sk_nx_info,
+- sk2_rcv_saddr6 ? sk2_rcv_saddr6 : &in6addr_any, -1);
++ return 0;
+
+- if (addr_type2 == IPV6_ADDR_ANY)
++vs_v4:
++ if (!sk_rcv_saddr && !sk2_rcv_saddr)
++ return nx_v4_addr_conflict(sk->sk_nx_info, sk2->sk_nx_info);
++ if (!sk2_rcv_saddr)
++ return v4_addr_in_nx_info(sk->sk_nx_info, sk2_rcv_saddr, -1);
++ if (!sk_rcv_saddr)
++ return v4_addr_in_nx_info(sk2->sk_nx_info, sk_rcv_saddr, -1);
++ return 1;
++vs:
++ if (addr_type2 == IPV6_ADDR_ANY && addr_type == IPV6_ADDR_ANY)
++ return nx_v6_addr_conflict(sk->sk_nx_info, sk2->sk_nx_info);
++ else if (addr_type2 == IPV6_ADDR_ANY)
+ return v6_addr_in_nx_info(sk2->sk_nx_info, sk_rcv_saddr6, -1);
+-
+- return ipv6_addr_equal(sk_rcv_saddr6, sk2_rcv_saddr6);
++ else if (addr_type == IPV6_ADDR_ANY)
++ if (addr_type2 == IPV6_ADDR_MAPPED)
++ return nx_v4_addr_conflict(sk->sk_nx_info, sk2->sk_nx_info);
++ else
++ return v6_addr_in_nx_info(sk->sk_nx_info, sk2_rcv_saddr6, -1);
++ return 1;
+ }
+
+ int udp_v6_get_port(struct sock *sk, unsigned short snum)
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel.spec?r1=1.720&r2=1.721&f=u
More information about the pld-cvs-commit
mailing list