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) {