diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index cbbafe546c0f..3a51582bef55 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -94,12 +94,18 @@ static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, | |||
94 | struct inet_hashinfo tcp_hashinfo; | 94 | struct inet_hashinfo tcp_hashinfo; |
95 | EXPORT_SYMBOL(tcp_hashinfo); | 95 | EXPORT_SYMBOL(tcp_hashinfo); |
96 | 96 | ||
97 | static u32 tcp_v4_init_seq_and_tsoff(const struct sk_buff *skb, u32 *tsoff) | 97 | static u32 tcp_v4_init_seq(const struct sk_buff *skb) |
98 | { | 98 | { |
99 | return secure_tcp_seq_and_tsoff(ip_hdr(skb)->daddr, | 99 | return secure_tcp_seq(ip_hdr(skb)->daddr, |
100 | ip_hdr(skb)->saddr, | 100 | ip_hdr(skb)->saddr, |
101 | tcp_hdr(skb)->dest, | 101 | tcp_hdr(skb)->dest, |
102 | tcp_hdr(skb)->source, tsoff); | 102 | tcp_hdr(skb)->source); |
103 | } | ||
104 | |||
105 | static u32 tcp_v4_init_ts_off(const struct sk_buff *skb) | ||
106 | { | ||
107 | return secure_tcp_ts_off(ip_hdr(skb)->daddr, | ||
108 | ip_hdr(skb)->saddr); | ||
103 | } | 109 | } |
104 | 110 | ||
105 | int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp) | 111 | int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp) |
@@ -145,7 +151,6 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
145 | struct flowi4 *fl4; | 151 | struct flowi4 *fl4; |
146 | struct rtable *rt; | 152 | struct rtable *rt; |
147 | int err; | 153 | int err; |
148 | u32 seq; | ||
149 | struct ip_options_rcu *inet_opt; | 154 | struct ip_options_rcu *inet_opt; |
150 | struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row; | 155 | struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row; |
151 | 156 | ||
@@ -232,13 +237,13 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
232 | rt = NULL; | 237 | rt = NULL; |
233 | 238 | ||
234 | if (likely(!tp->repair)) { | 239 | if (likely(!tp->repair)) { |
235 | seq = secure_tcp_seq_and_tsoff(inet->inet_saddr, | ||
236 | inet->inet_daddr, | ||
237 | inet->inet_sport, | ||
238 | usin->sin_port, | ||
239 | &tp->tsoffset); | ||
240 | if (!tp->write_seq) | 240 | if (!tp->write_seq) |
241 | tp->write_seq = seq; | 241 | tp->write_seq = secure_tcp_seq(inet->inet_saddr, |
242 | inet->inet_daddr, | ||
243 | inet->inet_sport, | ||
244 | usin->sin_port); | ||
245 | tp->tsoffset = secure_tcp_ts_off(inet->inet_saddr, | ||
246 | inet->inet_daddr); | ||
242 | } | 247 | } |
243 | 248 | ||
244 | inet->inet_id = tp->write_seq ^ jiffies; | 249 | inet->inet_id = tp->write_seq ^ jiffies; |
@@ -1239,7 +1244,8 @@ static const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = { | |||
1239 | .cookie_init_seq = cookie_v4_init_sequence, | 1244 | .cookie_init_seq = cookie_v4_init_sequence, |
1240 | #endif | 1245 | #endif |
1241 | .route_req = tcp_v4_route_req, | 1246 | .route_req = tcp_v4_route_req, |
1242 | .init_seq_tsoff = tcp_v4_init_seq_and_tsoff, | 1247 | .init_seq = tcp_v4_init_seq, |
1248 | .init_ts_off = tcp_v4_init_ts_off, | ||
1243 | .send_synack = tcp_v4_send_synack, | 1249 | .send_synack = tcp_v4_send_synack, |
1244 | }; | 1250 | }; |
1245 | 1251 | ||