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 _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
