diff options
| -rw-r--r-- | include/net/tcp.h | 19 | ||||
| -rw-r--r-- | net/ipv4/tcp_input.c | 2 |
2 files changed, 19 insertions, 2 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index e9b48b094683..acc620a4a45f 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -431,17 +431,34 @@ extern int tcp_disconnect(struct sock *sk, int flags); | |||
| 431 | extern __u32 syncookie_secret[2][16-4+SHA_DIGEST_WORDS]; | 431 | extern __u32 syncookie_secret[2][16-4+SHA_DIGEST_WORDS]; |
| 432 | extern struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, | 432 | extern struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, |
| 433 | struct ip_options *opt); | 433 | struct ip_options *opt); |
| 434 | #ifdef CONFIG_SYN_COOKIES | ||
| 434 | extern __u32 cookie_v4_init_sequence(struct sock *sk, struct sk_buff *skb, | 435 | extern __u32 cookie_v4_init_sequence(struct sock *sk, struct sk_buff *skb, |
| 435 | __u16 *mss); | 436 | __u16 *mss); |
| 437 | #else | ||
| 438 | static inline __u32 cookie_v4_init_sequence(struct sock *sk, | ||
| 439 | struct sk_buff *skb, | ||
| 440 | __u16 *mss) | ||
| 441 | { | ||
| 442 | return 0; | ||
| 443 | } | ||
| 444 | #endif | ||
| 436 | 445 | ||
| 437 | extern __u32 cookie_init_timestamp(struct request_sock *req); | 446 | extern __u32 cookie_init_timestamp(struct request_sock *req); |
| 438 | extern bool cookie_check_timestamp(struct tcp_options_received *opt, bool *); | 447 | extern bool cookie_check_timestamp(struct tcp_options_received *opt, bool *); |
| 439 | 448 | ||
| 440 | /* From net/ipv6/syncookies.c */ | 449 | /* From net/ipv6/syncookies.c */ |
| 441 | extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb); | 450 | extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb); |
| 451 | #ifdef CONFIG_SYN_COOKIES | ||
| 442 | extern __u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb, | 452 | extern __u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb, |
| 443 | __u16 *mss); | 453 | __u16 *mss); |
| 444 | 454 | #else | |
| 455 | static inline __u32 cookie_v6_init_sequence(struct sock *sk, | ||
| 456 | struct sk_buff *skb, | ||
| 457 | __u16 *mss) | ||
| 458 | { | ||
| 459 | return 0; | ||
| 460 | } | ||
| 461 | #endif | ||
| 445 | /* tcp_output.c */ | 462 | /* tcp_output.c */ |
| 446 | 463 | ||
| 447 | extern void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss, | 464 | extern void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss, |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index ea0d2183df4b..21fab3edb92c 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -1124,7 +1124,7 @@ static int tcp_is_sackblock_valid(struct tcp_sock *tp, int is_dsack, | |||
| 1124 | return 0; | 1124 | return 0; |
| 1125 | 1125 | ||
| 1126 | /* ...Then it's D-SACK, and must reside below snd_una completely */ | 1126 | /* ...Then it's D-SACK, and must reside below snd_una completely */ |
| 1127 | if (!after(end_seq, tp->snd_una)) | 1127 | if (after(end_seq, tp->snd_una)) |
| 1128 | return 0; | 1128 | return 0; |
| 1129 | 1129 | ||
| 1130 | if (!before(start_seq, tp->undo_marker)) | 1130 | if (!before(start_seq, tp->undo_marker)) |
