aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r--net/ipv4/tcp_ipv4.c32
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,
94struct inet_hashinfo tcp_hashinfo; 94struct inet_hashinfo tcp_hashinfo;
95EXPORT_SYMBOL(tcp_hashinfo); 95EXPORT_SYMBOL(tcp_hashinfo);
96 96
97static u32 tcp_v4_init_seq_and_tsoff(const struct sk_buff *skb, u32 *tsoff) 97static 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
105static 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
105int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp) 111int 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