enable kexec
[linux-2.6.git] / net / ipv4 / tcp_minisocks.c
index dc719ac..51ac81b 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/module.h>
 #include <linux/sysctl.h>
 #include <linux/workqueue.h>
+#include <linux/vs_limit.h>
 #include <linux/vs_socket.h>
 #include <net/tcp.h>
 #include <net/inet_common.h>
@@ -267,7 +268,7 @@ kill:
        }
 
        if (paws_reject)
-               NET_INC_STATS_BH(PAWSEstabRejected);
+               NET_INC_STATS_BH(LINUX_MIB_PAWSESTABREJECTED);
 
        if(!th->rst) {
                /* In this case we must reset the TIMEWAIT timer.
@@ -468,7 +469,7 @@ rescan:
        }
 
        tcp_tw_count -= killed;
-       NET_ADD_STATS_BH(TimeWaited, killed);
+       NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITED, killed);
 
        return ret;
 }
@@ -678,7 +679,7 @@ void tcp_twcal_tick(unsigned long dummy)
 out:
        if ((tcp_tw_count -= killed) == 0)
                del_timer(&tcp_tw_timer);
-       NET_ADD_STATS_BH(TimeWaitKilled, killed);
+       NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITKILLED, killed);
        spin_unlock(&tw_death_lock);
 }
 
@@ -734,6 +735,9 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct open_request *req,
                if ((filter = newsk->sk_filter) != NULL)
                        sk_filter_charge(newsk, filter);
 
+               if (sk->sk_create_child)
+                       sk->sk_create_child(sk, newsk);
+
                if (unlikely(xfrm_sk_clone_policy(newsk))) {
                        /* It is still raw copy of parent, so invalidate
                         * destructor and make plain sk_free() */
@@ -775,9 +779,6 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct open_request *req,
                newtp->snd_cwnd = 2;
                newtp->snd_cwnd_cnt = 0;
 
-               newtp->bictcp.cnt = 0;
-               newtp->bictcp.last_max_cwnd = newtp->bictcp.last_cwnd = 0;
-
                newtp->frto_counter = 0;
                newtp->frto_highmark = 0;
 
@@ -814,9 +815,11 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct open_request *req,
                newsk->sk_priority = 0;
                atomic_set(&newsk->sk_refcnt, 2);
 
-               /* hmm, maybe from socket? */
-               set_vx_info(&newsk->sk_vx_info, current->vx_info);
-               set_nx_info(&newsk->sk_nx_info, current->nx_info);
+               set_vx_info(&newsk->sk_vx_info, sk->sk_vx_info);
+               newsk->sk_xid = sk->sk_xid;
+               vx_sock_inc(newsk);
+               set_nx_info(&newsk->sk_nx_info, sk->sk_nx_info);
+               newsk->sk_nid = sk->sk_nid;
 #ifdef INET_REFCNT_DEBUG
                atomic_inc(&inet_sock_nr);
 #endif
@@ -864,7 +867,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct open_request *req,
                        newsk->sk_no_largesend = 1;
 
                tcp_vegas_init(newtp);
-               TCP_INC_STATS_BH(TcpPassiveOpens);
+               TCP_INC_STATS_BH(TCP_MIB_PASSIVEOPENS);
        }
        return newsk;
 }
@@ -995,7 +998,7 @@ struct sock *tcp_check_req(struct sock *sk,struct sk_buff *skb,
                if (!(flg & TCP_FLAG_RST))
                        req->class->send_ack(skb, req);
                if (paws_reject)
-                       NET_INC_STATS_BH(PAWSEstabRejected);
+                       NET_INC_STATS_BH(LINUX_MIB_PAWSESTABREJECTED);
                return NULL;
        }
 
@@ -1052,7 +1055,7 @@ listen_overflow:
        }
 
 embryonic_reset:
-       NET_INC_STATS_BH(EmbryonicRsts);
+       NET_INC_STATS_BH(LINUX_MIB_EMBRYONICRSTS);
        if (!(flg & TCP_FLAG_RST))
                req->class->send_reset(skb);