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