|
@@ -266,7 +266,6 @@ extern int sysctl_tcp_abort_on_overflow;
|
|
|
extern int sysctl_tcp_max_orphans;
|
|
|
extern int sysctl_tcp_fack;
|
|
|
extern int sysctl_tcp_reordering;
|
|
|
-extern int sysctl_tcp_ecn;
|
|
|
extern int sysctl_tcp_dsack;
|
|
|
extern int sysctl_tcp_wmem[3];
|
|
|
extern int sysctl_tcp_rmem[3];
|
|
@@ -504,7 +503,8 @@ static inline __u32 cookie_v4_init_sequence(struct sock *sk,
|
|
|
#endif
|
|
|
|
|
|
extern __u32 cookie_init_timestamp(struct request_sock *req);
|
|
|
-extern bool cookie_check_timestamp(struct tcp_options_received *opt, bool *);
|
|
|
+extern bool cookie_check_timestamp(struct tcp_options_received *opt,
|
|
|
+ struct net *net, bool *ecn_ok);
|
|
|
|
|
|
/* From net/ipv6/syncookies.c */
|
|
|
extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb);
|
|
@@ -728,11 +728,12 @@ struct tcp_skb_cb {
|
|
|
* notifications, we disable TCP ECN negociation.
|
|
|
*/
|
|
|
static inline void
|
|
|
-TCP_ECN_create_request(struct request_sock *req, const struct sk_buff *skb)
|
|
|
+TCP_ECN_create_request(struct request_sock *req, const struct sk_buff *skb,
|
|
|
+ struct net *net)
|
|
|
{
|
|
|
const struct tcphdr *th = tcp_hdr(skb);
|
|
|
|
|
|
- if (sysctl_tcp_ecn && th->ece && th->cwr &&
|
|
|
+ if (net->ipv4.sysctl_tcp_ecn && th->ece && th->cwr &&
|
|
|
INET_ECN_is_not_ect(TCP_SKB_CB(skb)->ip_dsfield))
|
|
|
inet_rsk(req)->ecn_ok = 1;
|
|
|
}
|