aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r--net/ipv6/tcp_ipv6.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 8e42e8f54b70..aeb9497b5bb7 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -101,12 +101,18 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
101 } 101 }
102} 102}
103 103
104static u32 tcp_v6_init_seq_and_tsoff(const struct sk_buff *skb, u32 *tsoff) 104static u32 tcp_v6_init_seq(const struct sk_buff *skb)
105{ 105{
106 return secure_tcpv6_seq_and_tsoff(ipv6_hdr(skb)->daddr.s6_addr32, 106 return secure_tcpv6_seq(ipv6_hdr(skb)->daddr.s6_addr32,
107 ipv6_hdr(skb)->saddr.s6_addr32, 107 ipv6_hdr(skb)->saddr.s6_addr32,
108 tcp_hdr(skb)->dest, 108 tcp_hdr(skb)->dest,
109 tcp_hdr(skb)->source, tsoff); 109 tcp_hdr(skb)->source);
110}
111
112static u32 tcp_v6_init_ts_off(const struct sk_buff *skb)
113{
114 return secure_tcpv6_ts_off(ipv6_hdr(skb)->daddr.s6_addr32,
115 ipv6_hdr(skb)->saddr.s6_addr32);
110} 116}
111 117
112static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, 118static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
@@ -122,7 +128,6 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
122 struct flowi6 fl6; 128 struct flowi6 fl6;
123 struct dst_entry *dst; 129 struct dst_entry *dst;
124 int addr_type; 130 int addr_type;
125 u32 seq;
126 int err; 131 int err;
127 struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row; 132 struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;
128 133
@@ -282,13 +287,13 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
282 sk_set_txhash(sk); 287 sk_set_txhash(sk);
283 288
284 if (likely(!tp->repair)) { 289 if (likely(!tp->repair)) {
285 seq = secure_tcpv6_seq_and_tsoff(np->saddr.s6_addr32,
286 sk->sk_v6_daddr.s6_addr32,
287 inet->inet_sport,
288 inet->inet_dport,
289 &tp->tsoffset);
290 if (!tp->write_seq) 290 if (!tp->write_seq)
291 tp->write_seq = seq; 291 tp->write_seq = secure_tcpv6_seq(np->saddr.s6_addr32,
292 sk->sk_v6_daddr.s6_addr32,
293 inet->inet_sport,
294 inet->inet_dport);
295 tp->tsoffset = secure_tcpv6_ts_off(np->saddr.s6_addr32,
296 sk->sk_v6_daddr.s6_addr32);
292 } 297 }
293 298
294 if (tcp_fastopen_defer_connect(sk, &err)) 299 if (tcp_fastopen_defer_connect(sk, &err))
@@ -749,7 +754,8 @@ static const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = {
749 .cookie_init_seq = cookie_v6_init_sequence, 754 .cookie_init_seq = cookie_v6_init_sequence,
750#endif 755#endif
751 .route_req = tcp_v6_route_req, 756 .route_req = tcp_v6_route_req,
752 .init_seq_tsoff = tcp_v6_init_seq_and_tsoff, 757 .init_seq = tcp_v6_init_seq,
758 .init_ts_off = tcp_v6_init_ts_off,
753 .send_synack = tcp_v6_send_synack, 759 .send_synack = tcp_v6_send_synack,
754}; 760};
755 761