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

Reply via email to