Subject: patch to patch vs2.3.3.9 f. linux-3.4.78
From: Christian Recktenwald <kernel@lihas.de>
Date: Mon, 3 Feb 2014 16:34:10 +0100
Mon, 3 Feb 2014 16:34:10 +0100
* download http://vserver.13thfloor.at/Experimental/patch-3.4.67-vs2.3.3.9.diff
* patch < 01-patch-{patch-3.4.67-vs2.3.3.9.diff}-to-3.4.78.diff
* apply this patched patch to the kernel source

also available on 
	deb http://ftp.lihas.de/lihas-kernel/ stable main

-- 
LiHAS - Adrian Reyer - Hessenwiesenstraße 10 - D-70565 Stuttgart
Fon: +49 (7 11) 78 28 50 90 - Fax:  +49 (7 11) 78 28 50 91
Mail: lihas@lihas.de - Web: http://lihas.de
Linux, Netzwerke, Consulting & Support - USt-ID: DE 227 816 626 Stuttgart


--- patch-3.4.67-vs2.3.3.9.diff	2013-10-26 20:37:43.000000000 +0200
+++ patch-3.4.67-vs2.3.3.9.diff.new	2014-02-03 15:49:11.515183472 +0100
@@ -24676,10 +24676,10 @@ diff -NurpP --minimal linux-3.4.67/net/i
  
  #include <linux/inet_diag.h>
  #include <linux/sock_diag.h>
-@@ -110,8 +112,10 @@ int inet_sk_diag_fill(struct sock *sk, s
+@@ -114,8 +116,10 @@ int inet_sk_diag_fill(struct sock *sk, s
+ 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
+ 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
  
- 	r->id.idiag_sport = inet->inet_sport;
- 	r->id.idiag_dport = inet->inet_dport;
 -	r->id.idiag_src[0] = inet->inet_rcv_saddr;
 -	r->id.idiag_dst[0] = inet->inet_daddr;
 +	r->id.idiag_src[0] = nx_map_sock_lback(sk->sk_nx_info,
@@ -24689,18 +24689,18 @@ diff -NurpP --minimal linux-3.4.67/net/i
  
  	/* IPv6 dual-stack sockets use inet->tos for IPv4 connections,
  	 * hence this needs to be included regardless of socket family.
-@@ -231,8 +235,8 @@ static int inet_twsk_diag_fill(struct in
- 	sock_diag_save_cookie(tw, r->id.idiag_cookie);
- 	r->id.idiag_sport     = tw->tw_sport;
- 	r->id.idiag_dport     = tw->tw_dport;
+@@ -241,8 +245,8 @@ static int inet_twsk_diag_fill(struct in
+ 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
+ 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
+ 
 -	r->id.idiag_src[0]    = tw->tw_rcv_saddr;
 -	r->id.idiag_dst[0]    = tw->tw_daddr;
 +	r->id.idiag_src[0]    = nx_map_sock_lback(tw->tw_nx_info, tw->tw_rcv_saddr);
 +	r->id.idiag_dst[0]    = nx_map_sock_lback(tw->tw_nx_info, tw->tw_daddr);
+ 
  	r->idiag_state	      = tw->tw_substate;
  	r->idiag_timer	      = 3;
- 	r->idiag_expires      = DIV_ROUND_UP(tmo * 1000, HZ);
-@@ -276,12 +280,14 @@ int inet_diag_dump_one_icsk(struct inet_
+@@ -287,12 +291,14 @@ int inet_diag_dump_one_icsk(struct inet_
  
  	err = -EINVAL;
  	if (req->sdiag_family == AF_INET) {
@@ -24715,7 +24715,7 @@ diff -NurpP --minimal linux-3.4.67/net/i
  		sk = inet6_lookup(&init_net, hashinfo,
  				  (struct in6_addr *)req->id.idiag_dst,
  				  req->id.idiag_dport,
-@@ -482,6 +488,7 @@ int inet_diag_bc_sk(const struct nlattr
+@@ -493,6 +499,7 @@ int inet_diag_bc_sk(const struct nlattr
  	} else
  #endif
  	{
@@ -24723,7 +24723,7 @@ diff -NurpP --minimal linux-3.4.67/net/i
  		entry.saddr = &inet->inet_rcv_saddr;
  		entry.daddr = &inet->inet_daddr;
  	}
-@@ -639,6 +646,7 @@ static int inet_twsk_diag_dump(struct in
+@@ -650,6 +657,7 @@ static int inet_twsk_diag_dump(struct in
  		} else
  #endif
  		{
@@ -24731,18 +24731,18 @@ diff -NurpP --minimal linux-3.4.67/net/i
  			entry.saddr = &tw->tw_rcv_saddr;
  			entry.daddr = &tw->tw_daddr;
  		}
-@@ -714,8 +722,8 @@ static int inet_diag_fill_req(struct sk_
+@@ -729,8 +737,8 @@ static int inet_diag_fill_req(struct sk_
+ 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
+ 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
  
- 	r->id.idiag_sport = inet->inet_sport;
- 	r->id.idiag_dport = ireq->rmt_port;
 -	r->id.idiag_src[0] = ireq->loc_addr;
 -	r->id.idiag_dst[0] = ireq->rmt_addr;
 +	r->id.idiag_src[0] = nx_map_sock_lback(sk->sk_nx_info, ireq->loc_addr);
 +	r->id.idiag_dst[0] = nx_map_sock_lback(sk->sk_nx_info, ireq->rmt_addr);
+ 
  	r->idiag_expires = jiffies_to_msecs(tmo);
  	r->idiag_rqueue = 0;
- 	r->idiag_wqueue = 0;
-@@ -784,6 +792,7 @@ static int inet_diag_dump_reqs(struct sk
+@@ -800,6 +808,7 @@ static int inet_diag_dump_reqs(struct sk
  				continue;
  
  			if (bc) {
@@ -24750,7 +24750,7 @@ diff -NurpP --minimal linux-3.4.67/net/i
  				inet_diag_req_addrs(sk, req, &entry);
  				entry.dport = ntohs(ireq->rmt_port);
  
-@@ -834,6 +843,8 @@ void inet_diag_dump_icsk(struct inet_has
+@@ -850,6 +859,8 @@ void inet_diag_dump_icsk(struct inet_has
  			sk_nulls_for_each(sk, node, &ilb->head) {
  				struct inet_sock *inet = inet_sk(sk);
  
@@ -24759,7 +24759,7 @@ diff -NurpP --minimal linux-3.4.67/net/i
  				if (num < s_num) {
  					num++;
  					continue;
-@@ -904,6 +915,8 @@ skip_listen_ht:
+@@ -920,6 +931,8 @@ skip_listen_ht:
  		sk_nulls_for_each(sk, node, &head->chain) {
  			struct inet_sock *inet = inet_sk(sk);
  
@@ -24768,7 +24768,7 @@ diff -NurpP --minimal linux-3.4.67/net/i
  			if (num < s_num)
  				goto next_normal;
  			if (!(r->idiag_states & (1 << sk->sk_state)))
-@@ -931,6 +944,8 @@ next_normal:
+@@ -947,6 +960,8 @@ next_normal:
  			inet_twsk_for_each(tw, node,
  				    &head->twchain) {