diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 32 |
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 | ||
104 | static u32 tcp_v6_init_seq_and_tsoff(const struct sk_buff *skb, u32 *tsoff) | 104 | static 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 | |||
112 | static 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 | ||
112 | static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, | 118 | static 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 | ||