git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 2.0 rc7
[linux-2.6.git]
/
net
/
ipv4
/
tcp_ipv4.c
diff --git
a/net/ipv4/tcp_ipv4.c
b/net/ipv4/tcp_ipv4.c
index
ee3a221
..
daedaa3
100644
(file)
--- a/
net/ipv4/tcp_ipv4.c
+++ b/
net/ipv4/tcp_ipv4.c
@@
-221,10
+221,13
@@
static int tcp_v4_get_port(struct sock *sk, unsigned short snum)
int rover;
spin_lock(&tcp_portalloc_lock);
int rover;
spin_lock(&tcp_portalloc_lock);
- rover = tcp_port_rover;
+ if (tcp_port_rover < low)
+ rover = low;
+ else
+ rover = tcp_port_rover;
do {
rover++;
do {
rover++;
- if (rover
< low || rover
> high)
+ if (rover > high)
rover = low;
head = &tcp_bhash[tcp_bhashfn(rover)];
spin_lock(&head->lock);
rover = low;
head = &tcp_bhash[tcp_bhashfn(rover)];
spin_lock(&head->lock);
@@
-849,7
+852,6
@@
int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
/* OK, now commit destination to socket. */
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
/* OK, now commit destination to socket. */
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
- tp->ext2_header_len = rt->u.dst.header_len;
if (!tp->write_seq)
tp->write_seq = secure_tcp_sequence_number(inet->saddr,
if (!tp->write_seq)
tp->write_seq = secure_tcp_sequence_number(inet->saddr,
@@
-959,10
+961,10
@@
static inline void do_pmtu_discovery(struct sock *sk, struct iphdr *iph,
/* Something is about to be wrong... Remember soft error
* for the case, if this connection will not able to recover.
*/
/* Something is about to be wrong... Remember soft error
* for the case, if this connection will not able to recover.
*/
- if (mtu < dst_
p
mtu(dst) && ip_dont_fragment(sk, dst))
+ if (mtu < dst_mtu(dst) && ip_dont_fragment(sk, dst))
sk->sk_err_soft = EMSGSIZE;
sk->sk_err_soft = EMSGSIZE;
- mtu = dst_
p
mtu(dst);
+ mtu = dst_mtu(dst);
if (inet->pmtudisc != IP_PMTUDISC_DONT &&
tp->pmtu_cookie > mtu) {
if (inet->pmtudisc != IP_PMTUDISC_DONT &&
tp->pmtu_cookie > mtu) {
@@
-1596,10
+1598,9
@@
struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
newtp->ext_header_len = 0;
if (newinet->opt)
newtp->ext_header_len = newinet->opt->optlen;
newtp->ext_header_len = 0;
if (newinet->opt)
newtp->ext_header_len = newinet->opt->optlen;
- newtp->ext2_header_len = dst->header_len;
newinet->id = newtp->write_seq ^ jiffies;
newinet->id = newtp->write_seq ^ jiffies;
- tcp_sync_mss(newsk, dst_
p
mtu(dst));
+ tcp_sync_mss(newsk, dst_mtu(dst));
newtp->advmss = dst_metric(dst, RTAX_ADVMSS);
tcp_initialize_rcv_mss(newsk);
newtp->advmss = dst_metric(dst, RTAX_ADVMSS);
tcp_initialize_rcv_mss(newsk);
@@
-1886,7
+1887,7
@@
static int tcp_v4_reselect_saddr(struct sock *sk)
/* Query new route. */
err = ip_route_connect(&rt, daddr, 0,
/* Query new route. */
err = ip_route_connect(&rt, daddr, 0,
- RT_
TOS(inet->tos) | sk->sk_localroute
,
+ RT_
CONN_FLAGS(sk)
,
sk->sk_bound_dev_if,
IPPROTO_TCP,
inet->sport, inet->dport, sk);
sk->sk_bound_dev_if,
IPPROTO_TCP,
inet->sport, inet->dport, sk);
@@
-1895,7
+1896,6
@@
static int tcp_v4_reselect_saddr(struct sock *sk)
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
- tcp_sk(sk)->ext2_header_len = rt->u.dst.header_len;
new_saddr = rt->rt_src;
new_saddr = rt->rt_src;
@@
-1955,7
+1955,6
@@
int tcp_v4_rebuild_header(struct sock *sk)
if (!err) {
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
if (!err) {
__sk_dst_set(sk, &rt->u.dst);
tcp_v4_setup_caps(sk, &rt->u.dst);
- tcp_sk(sk)->ext2_header_len = rt->u.dst.header_len;
return 0;
}
return 0;
}
@@
-2086,7
+2085,7
@@
static int tcp_v4_init_sock(struct sock *sk)
sk->sk_state = TCP_CLOSE;
sk->sk_write_space = sk_stream_write_space;
sk->sk_state = TCP_CLOSE;
sk->sk_write_space = sk_stream_write_space;
- s
k->sk_use_write_queue = 1
;
+ s
ock_set_flag(sk, SOCK_USE_WRITE_QUEUE)
;
tp->af_specific = &ipv4_specific;
tp->af_specific = &ipv4_specific;
@@
-2660,7
+2659,7
@@
struct proto tcp_prot = {
.sysctl_wmem = sysctl_tcp_wmem,
.sysctl_rmem = sysctl_tcp_rmem,
.max_header = MAX_TCP_HEADER,
.sysctl_wmem = sysctl_tcp_wmem,
.sysctl_rmem = sysctl_tcp_rmem,
.max_header = MAX_TCP_HEADER,
- .
slab_obj_size
= sizeof(struct tcp_sock),
+ .
obj_size
= sizeof(struct tcp_sock),
};
};
@@
-2705,4
+2704,5
@@
EXPORT_SYMBOL(tcp_proc_unregister);
EXPORT_SYMBOL(sysctl_local_port_range);
EXPORT_SYMBOL(sysctl_max_syn_backlog);
EXPORT_SYMBOL(sysctl_tcp_low_latency);
EXPORT_SYMBOL(sysctl_local_port_range);
EXPORT_SYMBOL(sysctl_max_syn_backlog);
EXPORT_SYMBOL(sysctl_tcp_low_latency);
+EXPORT_SYMBOL(sysctl_tcp_tw_reuse);