1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-13 03:41:54 +00:00

Update MPTCP

This commit is contained in:
Ycarus 2018-11-27 14:11:49 +01:00
parent 4891797626
commit 85acbc94ae

View file

@ -1,6 +1,6 @@
diff -aurN a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt diff -aurN a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
--- a/Documentation/networking/ip-sysctl.txt 2018-09-29 12:06:07.000000000 +0200 --- a/Documentation/networking/ip-sysctl.txt 2018-11-04 14:52:51.000000000 +0100
+++ b/Documentation/networking/ip-sysctl.txt 2018-10-01 18:37:13.000000000 +0200 +++ b/Documentation/networking/ip-sysctl.txt 2018-11-27 13:37:16.000000000 +0100
@@ -725,6 +725,18 @@ @@ -725,6 +725,18 @@
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
Default: 100 Default: 100
@ -21,8 +21,8 @@ diff -aurN a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/i
udp_l3mdev_accept - BOOLEAN udp_l3mdev_accept - BOOLEAN
diff -aurN a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c diff -aurN a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
--- a/drivers/infiniband/hw/cxgb4/cm.c 2018-09-29 12:06:07.000000000 +0200 --- a/drivers/infiniband/hw/cxgb4/cm.c 2018-11-04 14:52:51.000000000 +0100
+++ b/drivers/infiniband/hw/cxgb4/cm.c 2018-10-01 18:37:13.000000000 +0200 +++ b/drivers/infiniband/hw/cxgb4/cm.c 2018-11-27 13:37:16.000000000 +0100
@@ -3752,7 +3752,7 @@ @@ -3752,7 +3752,7 @@
*/ */
memset(&tmp_opt, 0, sizeof(tmp_opt)); memset(&tmp_opt, 0, sizeof(tmp_opt));
@ -33,8 +33,8 @@ diff -aurN a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
req = __skb_push(skb, sizeof(*req)); req = __skb_push(skb, sizeof(*req));
memset(req, 0, sizeof(*req)); memset(req, 0, sizeof(*req));
diff -aurN a/include/linux/skbuff.h b/include/linux/skbuff.h diff -aurN a/include/linux/skbuff.h b/include/linux/skbuff.h
--- a/include/linux/skbuff.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/linux/skbuff.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/linux/skbuff.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/linux/skbuff.h 2018-11-27 13:37:16.000000000 +0100
@@ -690,7 +690,7 @@ @@ -690,7 +690,7 @@
* want to keep them across layers you have to do a skb_clone() * want to keep them across layers you have to do a skb_clone()
* first. This is owned by whoever has the skb queued ATM. * first. This is owned by whoever has the skb queued ATM.
@ -45,8 +45,8 @@ diff -aurN a/include/linux/skbuff.h b/include/linux/skbuff.h
unsigned long _skb_refdst; unsigned long _skb_refdst;
void (*destructor)(struct sk_buff *skb); void (*destructor)(struct sk_buff *skb);
diff -aurN a/include/linux/tcp.h b/include/linux/tcp.h diff -aurN a/include/linux/tcp.h b/include/linux/tcp.h
--- a/include/linux/tcp.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/linux/tcp.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/linux/tcp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/linux/tcp.h 2018-11-27 13:37:16.000000000 +0100
@@ -58,7 +58,7 @@ @@ -58,7 +58,7 @@
/* TCP Fast Open */ /* TCP Fast Open */
#define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */ #define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */
@ -204,8 +204,8 @@ diff -aurN a/include/linux/tcp.h b/include/linux/tcp.h
static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk)
diff -aurN a/include/net/inet_common.h b/include/net/inet_common.h diff -aurN a/include/net/inet_common.h b/include/net/inet_common.h
--- a/include/net/inet_common.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/inet_common.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/inet_common.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/inet_common.h 2018-11-27 13:37:16.000000000 +0100
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
#ifndef _INET_COMMON_H #ifndef _INET_COMMON_H
#define _INET_COMMON_H #define _INET_COMMON_H
@ -225,8 +225,8 @@ diff -aurN a/include/net/inet_common.h b/include/net/inet_common.h
int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
int addr_len, int flags); int addr_len, int flags);
diff -aurN a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h diff -aurN a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
--- a/include/net/inet_connection_sock.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/inet_connection_sock.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/inet_connection_sock.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/inet_connection_sock.h 2018-11-27 13:37:16.000000000 +0100
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
struct inet_bind_bucket; struct inet_bind_bucket;
@ -236,8 +236,8 @@ diff -aurN a/include/net/inet_connection_sock.h b/include/net/inet_connection_so
/* /*
* Pointers to address related TCP functions * Pointers to address related TCP functions
diff -aurN a/include/net/inet_sock.h b/include/net/inet_sock.h diff -aurN a/include/net/inet_sock.h b/include/net/inet_sock.h
--- a/include/net/inet_sock.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/inet_sock.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/inet_sock.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/inet_sock.h 2018-11-27 13:37:16.000000000 +0100
@@ -90,7 +90,9 @@ @@ -90,7 +90,9 @@
wscale_ok : 1, wscale_ok : 1,
ecn_ok : 1, ecn_ok : 1,
@ -251,7 +251,7 @@ diff -aurN a/include/net/inet_sock.h b/include/net/inet_sock.h
struct ip_options_rcu __rcu *ireq_opt; struct ip_options_rcu __rcu *ireq_opt;
diff -aurN a/include/net/mptcp.h b/include/net/mptcp.h diff -aurN a/include/net/mptcp.h b/include/net/mptcp.h
--- a/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 --- a/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100
+++ b/include/net/mptcp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/mptcp.h 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,1510 @@ @@ -0,0 +1,1510 @@
+/* +/*
+ * MPTCP implementation + * MPTCP implementation
@ -1765,7 +1765,7 @@ diff -aurN a/include/net/mptcp.h b/include/net/mptcp.h
+#endif /* _MPTCP_H */ +#endif /* _MPTCP_H */
diff -aurN a/include/net/mptcp_v4.h b/include/net/mptcp_v4.h diff -aurN a/include/net/mptcp_v4.h b/include/net/mptcp_v4.h
--- a/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 --- a/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100
+++ b/include/net/mptcp_v4.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/mptcp_v4.h 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
+/* +/*
+ * MPTCP implementation + * MPTCP implementation
@ -1837,7 +1837,7 @@ diff -aurN a/include/net/mptcp_v4.h b/include/net/mptcp_v4.h
+#endif /* MPTCP_V4_H_ */ +#endif /* MPTCP_V4_H_ */
diff -aurN a/include/net/mptcp_v6.h b/include/net/mptcp_v6.h diff -aurN a/include/net/mptcp_v6.h b/include/net/mptcp_v6.h
--- a/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 --- a/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100
+++ b/include/net/mptcp_v6.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/mptcp_v6.h 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
+/* +/*
+ * MPTCP implementation + * MPTCP implementation
@ -1909,8 +1909,8 @@ diff -aurN a/include/net/mptcp_v6.h b/include/net/mptcp_v6.h
+ +
+#endif /* _MPTCP_V6_H */ +#endif /* _MPTCP_V6_H */
diff -aurN a/include/net/net_namespace.h b/include/net/net_namespace.h diff -aurN a/include/net/net_namespace.h b/include/net/net_namespace.h
--- a/include/net/net_namespace.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/net_namespace.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/net_namespace.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/net_namespace.h 2018-11-27 13:37:16.000000000 +0100
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
#include <net/netns/packet.h> #include <net/netns/packet.h>
#include <net/netns/ipv4.h> #include <net/netns/ipv4.h>
@ -1931,7 +1931,7 @@ diff -aurN a/include/net/net_namespace.h b/include/net/net_namespace.h
#endif #endif
diff -aurN a/include/net/netns/mptcp.h b/include/net/netns/mptcp.h diff -aurN a/include/net/netns/mptcp.h b/include/net/netns/mptcp.h
--- a/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 --- a/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100
+++ b/include/net/netns/mptcp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/netns/mptcp.h 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
+/* +/*
+ * MPTCP implementation - MPTCP namespace + * MPTCP implementation - MPTCP namespace
@ -1986,8 +1986,8 @@ diff -aurN a/include/net/netns/mptcp.h b/include/net/netns/mptcp.h
+ +
+#endif /* __NETNS_MPTCP_H__ */ +#endif /* __NETNS_MPTCP_H__ */
diff -aurN a/include/net/snmp.h b/include/net/snmp.h diff -aurN a/include/net/snmp.h b/include/net/snmp.h
--- a/include/net/snmp.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/snmp.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/snmp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/snmp.h 2018-11-27 13:37:16.000000000 +0100
@@ -91,7 +91,6 @@ @@ -91,7 +91,6 @@
atomic_long_t mibs[ICMP6MSG_MIB_MAX]; atomic_long_t mibs[ICMP6MSG_MIB_MAX];
}; };
@ -1997,8 +1997,8 @@ diff -aurN a/include/net/snmp.h b/include/net/snmp.h
#define TCP_MIB_MAX __TCP_MIB_MAX #define TCP_MIB_MAX __TCP_MIB_MAX
struct tcp_mib { struct tcp_mib {
diff -aurN a/include/net/sock.h b/include/net/sock.h diff -aurN a/include/net/sock.h b/include/net/sock.h
--- a/include/net/sock.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/sock.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/sock.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/sock.h 2018-11-27 13:37:16.000000000 +0100
@@ -771,6 +771,7 @@ @@ -771,6 +771,7 @@
SOCK_FILTER_LOCKED, /* Filter cannot be changed anymore */ SOCK_FILTER_LOCKED, /* Filter cannot be changed anymore */
SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */
@ -2016,8 +2016,8 @@ diff -aurN a/include/net/sock.h b/include/net/sock.h
/* Keeping track of sockets in use */ /* Keeping track of sockets in use */
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
diff -aurN a/include/net/tcp.h b/include/net/tcp.h diff -aurN a/include/net/tcp.h b/include/net/tcp.h
--- a/include/net/tcp.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/tcp.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/tcp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/tcp.h 2018-11-27 13:37:16.000000000 +0100
@@ -185,6 +185,7 @@ @@ -185,6 +185,7 @@
#define TCPOPT_SACK 5 /* SACK Block */ #define TCPOPT_SACK 5 /* SACK Block */
#define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */
@ -2339,8 +2339,8 @@ diff -aurN a/include/net/tcp.h b/include/net/tcp.h
__u16 *mss) __u16 *mss)
{ {
diff -aurN a/include/net/tcp_states.h b/include/net/tcp_states.h diff -aurN a/include/net/tcp_states.h b/include/net/tcp_states.h
--- a/include/net/tcp_states.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/tcp_states.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/tcp_states.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/tcp_states.h 2018-11-27 13:37:16.000000000 +0100
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
TCP_LISTEN, TCP_LISTEN,
TCP_CLOSING, /* Now a valid state */ TCP_CLOSING, /* Now a valid state */
@ -2358,8 +2358,8 @@ diff -aurN a/include/net/tcp_states.h b/include/net/tcp_states.h
#endif /* _LINUX_TCP_STATES_H */ #endif /* _LINUX_TCP_STATES_H */
diff -aurN a/include/net/transp_v6.h b/include/net/transp_v6.h diff -aurN a/include/net/transp_v6.h b/include/net/transp_v6.h
--- a/include/net/transp_v6.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/net/transp_v6.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/net/transp_v6.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/net/transp_v6.h 2018-11-27 13:37:16.000000000 +0100
@@ -59,6 +59,8 @@ @@ -59,6 +59,8 @@
/* address family specific functions */ /* address family specific functions */
@ -2370,8 +2370,8 @@ diff -aurN a/include/net/transp_v6.h b/include/net/transp_v6.h
void inet6_destroy_sock(struct sock *sk); void inet6_destroy_sock(struct sock *sk);
diff -aurN a/include/uapi/linux/if.h b/include/uapi/linux/if.h diff -aurN a/include/uapi/linux/if.h b/include/uapi/linux/if.h
--- a/include/uapi/linux/if.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/uapi/linux/if.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/uapi/linux/if.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/uapi/linux/if.h 2018-11-27 13:37:16.000000000 +0100
@@ -132,6 +132,9 @@ @@ -132,6 +132,9 @@
#define IFF_ECHO IFF_ECHO #define IFF_ECHO IFF_ECHO
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
@ -2383,8 +2383,8 @@ diff -aurN a/include/uapi/linux/if.h b/include/uapi/linux/if.h
IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
diff -aurN a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h diff -aurN a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
--- a/include/uapi/linux/tcp.h 2018-09-29 12:06:07.000000000 +0200 --- a/include/uapi/linux/tcp.h 2018-11-04 14:52:51.000000000 +0100
+++ b/include/uapi/linux/tcp.h 2018-10-01 18:37:13.000000000 +0200 +++ b/include/uapi/linux/tcp.h 2018-11-27 13:37:16.000000000 +0100
@@ -18,9 +18,15 @@ @@ -18,9 +18,15 @@
#ifndef _UAPI_LINUX_TCP_H #ifndef _UAPI_LINUX_TCP_H
#define _UAPI_LINUX_TCP_H #define _UAPI_LINUX_TCP_H
@ -2470,9 +2470,9 @@ diff -aurN a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
#define TCP_MD5SIG_MAXKEYLEN 80 #define TCP_MD5SIG_MAXKEYLEN 80
diff -aurN a/net/core/dev.c b/net/core/dev.c diff -aurN a/net/core/dev.c b/net/core/dev.c
--- a/net/core/dev.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/core/dev.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/core/dev.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/core/dev.c 2018-11-27 13:37:16.000000000 +0100
@@ -6740,7 +6740,7 @@ @@ -6762,7 +6762,7 @@
dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL | IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
@ -2482,8 +2482,8 @@ diff -aurN a/net/core/dev.c b/net/core/dev.c
IFF_ALLMULTI)); IFF_ALLMULTI));
diff -aurN a/net/core/skbuff.c b/net/core/skbuff.c diff -aurN a/net/core/skbuff.c b/net/core/skbuff.c
--- a/net/core/skbuff.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/core/skbuff.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/core/skbuff.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/core/skbuff.c 2018-11-27 13:37:16.000000000 +0100
@@ -532,7 +532,7 @@ @@ -532,7 +532,7 @@
skb_drop_list(&skb_shinfo(skb)->frag_list); skb_drop_list(&skb_shinfo(skb)->frag_list);
} }
@ -2503,8 +2503,8 @@ diff -aurN a/net/core/skbuff.c b/net/core/skbuff.c
__copy_skb_header(new, old); __copy_skb_header(new, old);
diff -aurN a/net/core/sock.c b/net/core/sock.c diff -aurN a/net/core/sock.c b/net/core/sock.c
--- a/net/core/sock.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/core/sock.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/core/sock.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/core/sock.c 2018-11-27 13:37:16.000000000 +0100
@@ -139,6 +139,11 @@ @@ -139,6 +139,11 @@
#include <trace/events/sock.h> #include <trace/events/sock.h>
@ -2565,8 +2565,8 @@ diff -aurN a/net/core/sock.c b/net/core/sock.c
cgroup_sk_alloc(&newsk->sk_cgrp_data); cgroup_sk_alloc(&newsk->sk_cgrp_data);
diff -aurN a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c diff -aurN a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
--- a/net/ipv4/af_inet.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/af_inet.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/af_inet.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/af_inet.c 2018-11-27 13:37:16.000000000 +0100
@@ -104,6 +104,7 @@ @@ -104,6 +104,7 @@
#include <net/ip_fib.h> #include <net/ip_fib.h>
#include <net/inet_connection_sock.h> #include <net/inet_connection_sock.h>
@ -2630,8 +2630,8 @@ diff -aurN a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
tcp_init(); tcp_init();
diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
--- a/net/ipv4/inet_connection_sock.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/inet_connection_sock.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/inet_connection_sock.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/inet_connection_sock.c 2018-11-27 13:37:16.000000000 +0100
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
#include <net/route.h> #include <net/route.h>
#include <net/tcp_states.h> #include <net/tcp_states.h>
@ -2640,7 +2640,7 @@ diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
#include <net/tcp.h> #include <net/tcp.h>
#include <net/sock_reuseport.h> #include <net/sock_reuseport.h>
#include <net/addrconf.h> #include <net/addrconf.h>
@@ -686,7 +687,10 @@ @@ -689,7 +690,10 @@
int max_retries, thresh; int max_retries, thresh;
u8 defer_accept; u8 defer_accept;
@ -2652,7 +2652,7 @@ diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
goto drop; goto drop;
max_retries = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_synack_retries; max_retries = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_synack_retries;
@@ -780,7 +784,9 @@ @@ -783,7 +787,9 @@
const struct request_sock *req, const struct request_sock *req,
const gfp_t priority) const gfp_t priority)
{ {
@ -2663,7 +2663,7 @@ diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
if (newsk) { if (newsk) {
struct inet_connection_sock *newicsk = inet_csk(newsk); struct inet_connection_sock *newicsk = inet_csk(newsk);
@@ -980,7 +986,12 @@ @@ -983,7 +989,12 @@
*/ */
while ((req = reqsk_queue_remove(queue, sk)) != NULL) { while ((req = reqsk_queue_remove(queue, sk)) != NULL) {
struct sock *child = req->sk; struct sock *child = req->sk;
@ -2676,7 +2676,7 @@ diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
local_bh_disable(); local_bh_disable();
bh_lock_sock(child); bh_lock_sock(child);
WARN_ON(sock_owned_by_user(child)); WARN_ON(sock_owned_by_user(child));
@@ -990,6 +1001,8 @@ @@ -993,6 +1004,8 @@
reqsk_put(req); reqsk_put(req);
bh_unlock_sock(child); bh_unlock_sock(child);
local_bh_enable(); local_bh_enable();
@ -2686,8 +2686,8 @@ diff -aurN a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
cond_resched(); cond_resched();
diff -aurN a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c diff -aurN a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
--- a/net/ipv4/ip_sockglue.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/ip_sockglue.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/ip_sockglue.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/ip_sockglue.c 2018-11-27 13:37:16.000000000 +0100
@@ -44,6 +44,8 @@ @@ -44,6 +44,8 @@
#endif #endif
#include <net/ip_fib.h> #include <net/ip_fib.h>
@ -2697,7 +2697,7 @@ diff -aurN a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
#include <linux/errqueue.h> #include <linux/errqueue.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
@@ -755,6 +757,17 @@ @@ -754,6 +756,17 @@
inet->tos = val; inet->tos = val;
sk->sk_priority = rt_tos2priority(val); sk->sk_priority = rt_tos2priority(val);
sk_dst_reset(sk); sk_dst_reset(sk);
@ -2716,8 +2716,8 @@ diff -aurN a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
break; break;
case IP_TTL: case IP_TTL:
diff -aurN a/net/ipv4/Kconfig b/net/ipv4/Kconfig diff -aurN a/net/ipv4/Kconfig b/net/ipv4/Kconfig
--- a/net/ipv4/Kconfig 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/Kconfig 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/Kconfig 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/Kconfig 2018-11-27 13:37:16.000000000 +0100
@@ -675,6 +675,38 @@ @@ -675,6 +675,38 @@
bufferbloat, policers, or AQM schemes that do not provide a delay bufferbloat, policers, or AQM schemes that do not provide a delay
signal. It requires the fq ("Fair Queue") pacing packet scheduler. signal. It requires the fq ("Fair Queue") pacing packet scheduler.
@ -2788,8 +2788,8 @@ diff -aurN a/net/ipv4/Kconfig b/net/ipv4/Kconfig
default "dctcp" if DEFAULT_DCTCP default "dctcp" if DEFAULT_DCTCP
default "cdg" if DEFAULT_CDG default "cdg" if DEFAULT_CDG
diff -aurN a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c diff -aurN a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
--- a/net/ipv4/syncookies.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/syncookies.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/syncookies.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/syncookies.c 2018-11-27 13:37:16.000000000 +0100
@@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
#include <linux/siphash.h> #include <linux/siphash.h>
#include <linux/kernel.h> #include <linux/kernel.h>
@ -2903,8 +2903,8 @@ diff -aurN a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
ireq->rcv_wscale = rcv_wscale; ireq->rcv_wscale = rcv_wscale;
ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst); ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst);
diff -aurN a/net/ipv4/tcp.c b/net/ipv4/tcp.c diff -aurN a/net/ipv4/tcp.c b/net/ipv4/tcp.c
--- a/net/ipv4/tcp.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp.c 2018-11-27 13:37:16.000000000 +0100
@@ -273,6 +273,7 @@ @@ -273,6 +273,7 @@
#include <net/icmp.h> #include <net/icmp.h>
@ -3533,8 +3533,8 @@ diff -aurN a/net/ipv4/tcp.c b/net/ipv4/tcp.c
} }
EXPORT_SYMBOL_GPL(tcp_abort); EXPORT_SYMBOL_GPL(tcp_abort);
diff -aurN a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c diff -aurN a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c
--- a/net/ipv4/tcp_fastopen.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_fastopen.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_fastopen.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_fastopen.c 2018-11-27 13:37:16.000000000 +0100
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
#include <linux/rculist.h> #include <linux/rculist.h>
#include <net/inetpeer.h> #include <net/inetpeer.h>
@ -3588,8 +3588,8 @@ diff -aurN a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c
* and queues the child into listener accept queue. * and queues the child into listener accept queue.
*/ */
diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
--- a/net/ipv4/tcp_input.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_input.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_input.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_input.c 2018-11-27 13:37:16.000000000 +0100
@@ -76,6 +76,9 @@ @@ -76,6 +76,9 @@
#include <linux/ipsec.h> #include <linux/ipsec.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
@ -4250,7 +4250,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
{ {
struct tcp_sock *tp = tcp_sk(sk); struct tcp_sock *tp = tcp_sk(sk);
struct inet_connection_sock *icsk = inet_csk(sk); struct inet_connection_sock *icsk = inet_csk(sk);
@@ -5930,6 +6064,16 @@ @@ -5932,6 +6066,16 @@
tp->rx_opt.saw_tstamp = 0; tp->rx_opt.saw_tstamp = 0;
tcp_mstamp_refresh(tp); tcp_mstamp_refresh(tp);
queued = tcp_rcv_synsent_state_process(sk, skb, th); queued = tcp_rcv_synsent_state_process(sk, skb, th);
@ -4267,7 +4267,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
if (queued >= 0) if (queued >= 0)
return queued; return queued;
@@ -5937,6 +6081,8 @@ @@ -5939,6 +6083,8 @@
tcp_urg(sk, skb, th); tcp_urg(sk, skb, th);
__kfree_skb(skb); __kfree_skb(skb);
tcp_data_snd_check(sk); tcp_data_snd_check(sk);
@ -4276,7 +4276,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
return 0; return 0;
} }
@@ -5987,7 +6133,7 @@ @@ -5989,7 +6135,7 @@
tcp_mtup_init(sk); tcp_mtup_init(sk);
tp->copied_seq = tp->rcv_nxt; tp->copied_seq = tp->rcv_nxt;
@ -4285,7 +4285,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
} }
smp_mb(); smp_mb();
tcp_set_state(sk, TCP_ESTABLISHED); tcp_set_state(sk, TCP_ESTABLISHED);
@@ -6006,6 +6152,8 @@ @@ -6008,6 +6154,8 @@
if (tp->rx_opt.tstamp_ok) if (tp->rx_opt.tstamp_ok)
tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; tp->advmss -= TCPOLEN_TSTAMP_ALIGNED;
@ -4294,7 +4294,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
if (req) { if (req) {
/* Re-arm the timer because data may have been sent out. /* Re-arm the timer because data may have been sent out.
@@ -6028,6 +6176,16 @@ @@ -6030,6 +6178,16 @@
tcp_initialize_rcv_mss(sk); tcp_initialize_rcv_mss(sk);
tcp_fast_path_on(tp); tcp_fast_path_on(tp);
@ -4311,7 +4311,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
break; break;
case TCP_FIN_WAIT1: { case TCP_FIN_WAIT1: {
@@ -6075,7 +6233,8 @@ @@ -6077,7 +6235,8 @@
tmo = tcp_fin_time(sk); tmo = tcp_fin_time(sk);
if (tmo > TCP_TIMEWAIT_LEN) { if (tmo > TCP_TIMEWAIT_LEN) {
inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN);
@ -4321,7 +4321,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
/* Bad case. We could lose such FIN otherwise. /* Bad case. We could lose such FIN otherwise.
* It is not a big problem, but it looks confusing * It is not a big problem, but it looks confusing
* and not so rare event. We still can lose it now, * and not so rare event. We still can lose it now,
@@ -6084,7 +6243,7 @@ @@ -6086,7 +6245,7 @@
*/ */
inet_csk_reset_keepalive_timer(sk, tmo); inet_csk_reset_keepalive_timer(sk, tmo);
} else { } else {
@ -4330,7 +4330,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
goto discard; goto discard;
} }
break; break;
@@ -6092,7 +6251,7 @@ @@ -6094,7 +6253,7 @@
case TCP_CLOSING: case TCP_CLOSING:
if (tp->snd_una == tp->write_seq) { if (tp->snd_una == tp->write_seq) {
@ -4339,7 +4339,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
goto discard; goto discard;
} }
break; break;
@@ -6104,6 +6263,9 @@ @@ -6106,6 +6265,9 @@
goto discard; goto discard;
} }
break; break;
@ -4349,7 +4349,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
} }
/* step 6: check the URG bit */ /* step 6: check the URG bit */
@@ -6124,7 +6286,8 @@ @@ -6126,7 +6288,8 @@
*/ */
if (sk->sk_shutdown & RCV_SHUTDOWN) { if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq && if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
@ -4359,7 +4359,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA); NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
tcp_reset(sk); tcp_reset(sk);
return 1; return 1;
@@ -6221,6 +6384,8 @@ @@ -6223,6 +6386,8 @@
ireq->wscale_ok = rx_opt->wscale_ok; ireq->wscale_ok = rx_opt->wscale_ok;
ireq->acked = 0; ireq->acked = 0;
ireq->ecn_ok = 0; ireq->ecn_ok = 0;
@ -4368,7 +4368,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
ireq->ir_rmt_port = tcp_hdr(skb)->source; ireq->ir_rmt_port = tcp_hdr(skb)->source;
ireq->ir_num = ntohs(tcp_hdr(skb)->dest); ireq->ir_num = ntohs(tcp_hdr(skb)->dest);
ireq->ir_mark = inet_request_mark(sk, skb); ireq->ir_mark = inet_request_mark(sk, skb);
@@ -6315,12 +6480,17 @@ @@ -6317,12 +6482,17 @@
/* TW buckets are converted to open requests without /* TW buckets are converted to open requests without
* limitations, they conserve resources and peer is * limitations, they conserve resources and peer is
* evidently real one. * evidently real one.
@ -4387,7 +4387,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
} }
if (sk_acceptq_is_full(sk)) { if (sk_acceptq_is_full(sk)) {
@@ -6338,8 +6508,8 @@ @@ -6340,8 +6510,8 @@
tcp_clear_options(&tmp_opt); tcp_clear_options(&tmp_opt);
tmp_opt.mss_clamp = af_ops->mss_clamp; tmp_opt.mss_clamp = af_ops->mss_clamp;
tmp_opt.user_mss = tp->rx_opt.user_mss; tmp_opt.user_mss = tp->rx_opt.user_mss;
@ -4398,7 +4398,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
if (want_cookie && !tmp_opt.saw_tstamp) if (want_cookie && !tmp_opt.saw_tstamp)
tcp_clear_options(&tmp_opt); tcp_clear_options(&tmp_opt);
@@ -6351,7 +6521,8 @@ @@ -6353,7 +6523,8 @@
/* Note: tcp_v6_init_req() might override ir_iif for link locals */ /* Note: tcp_v6_init_req() might override ir_iif for link locals */
inet_rsk(req)->ir_iif = inet_request_bound_dev_if(sk, skb); inet_rsk(req)->ir_iif = inet_request_bound_dev_if(sk, skb);
@ -4408,7 +4408,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
if (security_inet_conn_request(sk, skb, req)) if (security_inet_conn_request(sk, skb, req))
goto drop_and_free; goto drop_and_free;
@@ -6387,7 +6558,7 @@ @@ -6389,7 +6560,7 @@
tcp_ecn_create_request(req, skb, sk, dst); tcp_ecn_create_request(req, skb, sk, dst);
if (want_cookie) { if (want_cookie) {
@ -4417,7 +4417,7 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
req->cookie_ts = tmp_opt.tstamp_ok; req->cookie_ts = tmp_opt.tstamp_ok;
if (!tmp_opt.tstamp_ok) if (!tmp_opt.tstamp_ok)
inet_rsk(req)->ecn_ok = 0; inet_rsk(req)->ecn_ok = 0;
@@ -6401,12 +6572,18 @@ @@ -6403,12 +6574,18 @@
fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc); fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc);
} }
if (fastopen_sk) { if (fastopen_sk) {
@ -4438,8 +4438,8 @@ diff -aurN a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
} else { } else {
tcp_rsk(req)->tfo_listener = false; tcp_rsk(req)->tfo_listener = false;
diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
--- a/net/ipv4/tcp_ipv4.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_ipv4.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_ipv4.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_ipv4.c 2018-11-27 13:37:16.000000000 +0100
@@ -67,6 +67,8 @@ @@ -67,6 +67,8 @@
#include <net/icmp.h> #include <net/icmp.h>
#include <net/inet_hashtables.h> #include <net/inet_hashtables.h>
@ -4680,7 +4680,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
{ {
const struct inet_request_sock *ireq = inet_rsk(req); const struct inet_request_sock *ireq = inet_rsk(req);
struct flowi4 fl4; struct flowi4 fl4;
@@ -887,7 +923,7 @@ @@ -889,7 +925,7 @@
/* /*
* IPv4 request_sock destructor. * IPv4 request_sock destructor.
*/ */
@ -4689,7 +4689,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
{ {
kfree(rcu_dereference_protected(inet_rsk(req)->ireq_opt, 1)); kfree(rcu_dereference_protected(inet_rsk(req)->ireq_opt, 1));
} }
@@ -1260,9 +1296,10 @@ @@ -1262,9 +1298,10 @@
return false; return false;
} }
@ -4703,7 +4703,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
{ {
struct inet_request_sock *ireq = inet_rsk(req); struct inet_request_sock *ireq = inet_rsk(req);
struct net *net = sock_net(sk_listener); struct net *net = sock_net(sk_listener);
@@ -1270,6 +1307,8 @@ @@ -1272,6 +1309,8 @@
sk_rcv_saddr_set(req_to_sk(req), ip_hdr(skb)->daddr); sk_rcv_saddr_set(req_to_sk(req), ip_hdr(skb)->daddr);
sk_daddr_set(req_to_sk(req), ip_hdr(skb)->saddr); sk_daddr_set(req_to_sk(req), ip_hdr(skb)->saddr);
RCU_INIT_POINTER(ireq->ireq_opt, tcp_v4_save_options(net, skb)); RCU_INIT_POINTER(ireq->ireq_opt, tcp_v4_save_options(net, skb));
@ -4712,7 +4712,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
} }
static struct dst_entry *tcp_v4_route_req(const struct sock *sk, static struct dst_entry *tcp_v4_route_req(const struct sock *sk,
@@ -1289,7 +1328,7 @@ @@ -1291,7 +1330,7 @@
.syn_ack_timeout = tcp_syn_ack_timeout, .syn_ack_timeout = tcp_syn_ack_timeout,
}; };
@ -4721,7 +4721,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
.mss_clamp = TCP_MSS_DEFAULT, .mss_clamp = TCP_MSS_DEFAULT,
#ifdef CONFIG_TCP_MD5SIG #ifdef CONFIG_TCP_MD5SIG
.req_md5_lookup = tcp_v4_md5_lookup, .req_md5_lookup = tcp_v4_md5_lookup,
@@ -1426,7 +1465,7 @@ @@ -1428,7 +1467,7 @@
} }
EXPORT_SYMBOL(tcp_v4_syn_recv_sock); EXPORT_SYMBOL(tcp_v4_syn_recv_sock);
@ -4730,7 +4730,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
{ {
#ifdef CONFIG_SYN_COOKIES #ifdef CONFIG_SYN_COOKIES
const struct tcphdr *th = tcp_hdr(skb); const struct tcphdr *th = tcp_hdr(skb);
@@ -1449,6 +1488,9 @@ @@ -1451,6 +1490,9 @@
{ {
struct sock *rsk; struct sock *rsk;
@ -4740,7 +4740,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
struct dst_entry *dst = sk->sk_rx_dst; struct dst_entry *dst = sk->sk_rx_dst;
@@ -1607,6 +1649,10 @@ @@ -1609,6 +1651,10 @@
TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin + TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin +
skb->len - th->doff * 4); skb->len - th->doff * 4);
TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq); TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq);
@ -4751,7 +4751,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
TCP_SKB_CB(skb)->tcp_flags = tcp_flag_byte(th); TCP_SKB_CB(skb)->tcp_flags = tcp_flag_byte(th);
TCP_SKB_CB(skb)->tcp_tw_isn = 0; TCP_SKB_CB(skb)->tcp_tw_isn = 0;
TCP_SKB_CB(skb)->ip_dsfield = ipv4_get_dsfield(iph); TCP_SKB_CB(skb)->ip_dsfield = ipv4_get_dsfield(iph);
@@ -1625,8 +1671,8 @@ @@ -1627,8 +1673,8 @@
int sdif = inet_sdif(skb); int sdif = inet_sdif(skb);
const struct iphdr *iph; const struct iphdr *iph;
const struct tcphdr *th; const struct tcphdr *th;
@ -4761,7 +4761,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
int ret; int ret;
if (skb->pkt_type != PACKET_HOST) if (skb->pkt_type != PACKET_HOST)
@@ -1679,7 +1725,7 @@ @@ -1681,7 +1727,7 @@
reqsk_put(req); reqsk_put(req);
goto csum_error; goto csum_error;
} }
@ -4770,7 +4770,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
inet_csk_reqsk_queue_drop_and_put(sk, req); inet_csk_reqsk_queue_drop_and_put(sk, req);
goto lookup; goto lookup;
} }
@@ -1688,6 +1734,36 @@ @@ -1690,6 +1736,36 @@
*/ */
sock_hold(sk); sock_hold(sk);
refcounted = true; refcounted = true;
@ -4807,7 +4807,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
nsk = NULL; nsk = NULL;
if (!tcp_filter(sk, skb)) { if (!tcp_filter(sk, skb)) {
th = (const struct tcphdr *)skb->data; th = (const struct tcphdr *)skb->data;
@@ -1697,11 +1773,15 @@ @@ -1699,11 +1775,15 @@
} }
if (!nsk) { if (!nsk) {
reqsk_put(req); reqsk_put(req);
@ -4823,7 +4823,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
} else if (tcp_child_process(sk, nsk, skb)) { } else if (tcp_child_process(sk, nsk, skb)) {
tcp_v4_send_reset(nsk, skb); tcp_v4_send_reset(nsk, skb);
goto discard_and_relse; goto discard_and_relse;
@@ -1738,15 +1818,24 @@ @@ -1740,15 +1820,24 @@
sk_incoming_cpu_update(sk); sk_incoming_cpu_update(sk);
@ -4852,7 +4852,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
put_and_return: put_and_return:
if (refcounted) if (refcounted)
@@ -1760,6 +1849,19 @@ @@ -1762,6 +1851,19 @@
tcp_v4_fill_cb(skb, iph, th); tcp_v4_fill_cb(skb, iph, th);
@ -4872,7 +4872,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
if (tcp_checksum_complete(skb)) { if (tcp_checksum_complete(skb)) {
csum_error: csum_error:
__TCP_INC_STATS(net, TCP_MIB_CSUMERRORS); __TCP_INC_STATS(net, TCP_MIB_CSUMERRORS);
@@ -1808,6 +1910,18 @@ @@ -1810,6 +1912,18 @@
refcounted = false; refcounted = false;
goto process; goto process;
} }
@ -4891,7 +4891,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
/* Fall through to ACK */ /* Fall through to ACK */
} }
case TCP_TW_ACK: case TCP_TW_ACK:
@@ -1876,7 +1990,12 @@ @@ -1878,7 +1992,12 @@
tcp_init_sock(sk); tcp_init_sock(sk);
@ -4905,7 +4905,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
#ifdef CONFIG_TCP_MD5SIG #ifdef CONFIG_TCP_MD5SIG
tcp_sk(sk)->af_specific = &tcp_sock_ipv4_specific; tcp_sk(sk)->af_specific = &tcp_sock_ipv4_specific;
@@ -1893,6 +2012,11 @@ @@ -1895,6 +2014,11 @@
tcp_cleanup_congestion_control(sk); tcp_cleanup_congestion_control(sk);
@ -4917,7 +4917,7 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
tcp_cleanup_ulp(sk); tcp_cleanup_ulp(sk);
/* Cleanup up the write buffer. */ /* Cleanup up the write buffer. */
@@ -2439,7 +2563,15 @@ @@ -2441,7 +2565,15 @@
.compat_setsockopt = compat_tcp_setsockopt, .compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt, .compat_getsockopt = compat_tcp_getsockopt,
#endif #endif
@ -4934,8 +4934,8 @@ diff -aurN a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
EXPORT_SYMBOL(tcp_prot); EXPORT_SYMBOL(tcp_prot);
diff -aurN a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c diff -aurN a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
--- a/net/ipv4/tcp_minisocks.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_minisocks.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_minisocks.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_minisocks.c 2018-11-27 13:37:16.000000000 +0100
@@ -18,11 +18,13 @@ @@ -18,11 +18,13 @@
* Jorge Cwik, <jorge@laser.satlink.net> * Jorge Cwik, <jorge@laser.satlink.net>
*/ */
@ -5147,8 +5147,8 @@ diff -aurN a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
return ret; return ret;
} }
diff -aurN a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c diff -aurN a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
--- a/net/ipv4/tcp_output.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_output.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_output.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_output.c 2018-11-27 13:37:16.000000000 +0100
@@ -36,6 +36,12 @@ @@ -36,6 +36,12 @@
#define pr_fmt(fmt) "TCP: " fmt #define pr_fmt(fmt) "TCP: " fmt
@ -5750,8 +5750,8 @@ diff -aurN a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
if (tp->packets_out || !tcp_send_head(sk)) { if (tp->packets_out || !tcp_send_head(sk)) {
/* Cancel probe timer, if it is not required. */ /* Cancel probe timer, if it is not required. */
diff -aurN a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c diff -aurN a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
--- a/net/ipv4/tcp_timer.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv4/tcp_timer.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv4/tcp_timer.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv4/tcp_timer.c 2018-11-27 13:37:16.000000000 +0100
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
#include <linux/module.h> #include <linux/module.h>
@ -5950,8 +5950,8 @@ diff -aurN a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
} }
diff -aurN a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c diff -aurN a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
--- a/net/ipv6/addrconf.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv6/addrconf.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv6/addrconf.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv6/addrconf.c 2018-11-27 13:37:16.000000000 +0100
@@ -928,6 +928,7 @@ @@ -928,6 +928,7 @@
kfree_rcu(ifp, rcu); kfree_rcu(ifp, rcu);
@ -5961,8 +5961,8 @@ diff -aurN a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
static void static void
ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
diff -aurN a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c diff -aurN a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
--- a/net/ipv6/af_inet6.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv6/af_inet6.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv6/af_inet6.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv6/af_inet6.c 2018-11-27 13:37:16.000000000 +0100
@@ -107,8 +107,7 @@ @@ -107,8 +107,7 @@
return (struct ipv6_pinfo *)(((u8 *)sk) + offset); return (struct ipv6_pinfo *)(((u8 *)sk) + offset);
} }
@ -5974,8 +5974,8 @@ diff -aurN a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
struct inet_sock *inet; struct inet_sock *inet;
struct ipv6_pinfo *np; struct ipv6_pinfo *np;
diff -aurN a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c diff -aurN a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
--- a/net/ipv6/ipv6_sockglue.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv6/ipv6_sockglue.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv6/ipv6_sockglue.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv6/ipv6_sockglue.c 2018-11-27 13:37:16.000000000 +0100
@@ -48,6 +48,8 @@ @@ -48,6 +48,8 @@
#include <net/addrconf.h> #include <net/addrconf.h>
#include <net/inet_common.h> #include <net/inet_common.h>
@ -6000,8 +6000,8 @@ diff -aurN a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
sk->sk_family = PF_INET; sk->sk_family = PF_INET;
tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
diff -aurN a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c diff -aurN a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
--- a/net/ipv6/syncookies.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv6/syncookies.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv6/syncookies.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv6/syncookies.c 2018-11-27 13:37:16.000000000 +0100
@@ -20,6 +20,8 @@ @@ -20,6 +20,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <net/secure_seq.h> #include <net/secure_seq.h>
@ -6084,8 +6084,8 @@ diff -aurN a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
ireq->rcv_wscale = rcv_wscale; ireq->rcv_wscale = rcv_wscale;
ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst); ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst);
diff -aurN a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c diff -aurN a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
--- a/net/ipv6/tcp_ipv6.c 2018-09-29 12:06:07.000000000 +0200 --- a/net/ipv6/tcp_ipv6.c 2018-11-04 14:52:51.000000000 +0100
+++ b/net/ipv6/tcp_ipv6.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/ipv6/tcp_ipv6.c 2018-11-27 13:37:16.000000000 +0100
@@ -61,6 +61,8 @@ @@ -61,6 +61,8 @@
#include <net/timewait_sock.h> #include <net/timewait_sock.h>
#include <net/inet_common.h> #include <net/inet_common.h>
@ -6708,8 +6708,8 @@ diff -aurN a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
/* thinking of making this const? Don't. /* thinking of making this const? Don't.
diff -aurN a/net/Kconfig b/net/Kconfig diff -aurN a/net/Kconfig b/net/Kconfig
--- a/net/Kconfig 2018-09-29 12:06:07.000000000 +0200 --- a/net/Kconfig 2018-11-04 14:52:51.000000000 +0100
+++ b/net/Kconfig 2018-10-01 18:37:13.000000000 +0200 +++ b/net/Kconfig 2018-11-27 13:37:16.000000000 +0100
@@ -88,6 +88,7 @@ @@ -88,6 +88,7 @@
source "net/ipv4/Kconfig" source "net/ipv4/Kconfig"
source "net/ipv6/Kconfig" source "net/ipv6/Kconfig"
@ -6719,8 +6719,8 @@ diff -aurN a/net/Kconfig b/net/Kconfig
endif # if INET endif # if INET
diff -aurN a/net/Makefile b/net/Makefile diff -aurN a/net/Makefile b/net/Makefile
--- a/net/Makefile 2018-09-29 12:06:07.000000000 +0200 --- a/net/Makefile 2018-11-04 14:52:51.000000000 +0100
+++ b/net/Makefile 2018-10-01 18:37:13.000000000 +0200 +++ b/net/Makefile 2018-11-27 13:37:16.000000000 +0100
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
obj-$(CONFIG_XFRM) += xfrm/ obj-$(CONFIG_XFRM) += xfrm/
obj-$(CONFIG_UNIX) += unix/ obj-$(CONFIG_UNIX) += unix/
@ -6731,7 +6731,7 @@ diff -aurN a/net/Makefile b/net/Makefile
obj-$(CONFIG_BRIDGE) += bridge/ obj-$(CONFIG_BRIDGE) += bridge/
diff -aurN a/net/mptcp/Kconfig b/net/mptcp/Kconfig diff -aurN a/net/mptcp/Kconfig b/net/mptcp/Kconfig
--- a/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/Kconfig 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/Kconfig 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,129 @@ @@ -0,0 +1,129 @@
+# +#
+# MPTCP configuration +# MPTCP configuration
@ -6864,7 +6864,7 @@ diff -aurN a/net/mptcp/Kconfig b/net/mptcp/Kconfig
+ +
diff -aurN a/net/mptcp/Makefile b/net/mptcp/Makefile diff -aurN a/net/mptcp/Makefile b/net/mptcp/Makefile
--- a/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/Makefile 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/Makefile 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
+# +#
+## Makefile for MultiPath TCP support code. +## Makefile for MultiPath TCP support code.
@ -6890,7 +6890,7 @@ diff -aurN a/net/mptcp/Makefile b/net/mptcp/Makefile
+ +
diff -aurN a/net/mptcp/mptcp_balia.c b/net/mptcp/mptcp_balia.c diff -aurN a/net/mptcp/mptcp_balia.c b/net/mptcp/mptcp_balia.c
--- a/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_balia.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_balia.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,268 @@ @@ -0,0 +1,268 @@
+/* +/*
+ * MPTCP implementation - Balia Congestion Control + * MPTCP implementation - Balia Congestion Control
@ -7162,7 +7162,7 @@ diff -aurN a/net/mptcp/mptcp_balia.c b/net/mptcp/mptcp_balia.c
+MODULE_VERSION("0.1"); +MODULE_VERSION("0.1");
diff -aurN a/net/mptcp/mptcp_binder.c b/net/mptcp/mptcp_binder.c diff -aurN a/net/mptcp/mptcp_binder.c b/net/mptcp/mptcp_binder.c
--- a/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_binder.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_binder.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,486 @@ @@ -0,0 +1,486 @@
+#include <linux/module.h> +#include <linux/module.h>
+ +
@ -7652,7 +7652,7 @@ diff -aurN a/net/mptcp/mptcp_binder.c b/net/mptcp/mptcp_binder.c
+MODULE_VERSION("0.1"); +MODULE_VERSION("0.1");
diff -aurN a/net/mptcp/mptcp_coupled.c b/net/mptcp/mptcp_coupled.c diff -aurN a/net/mptcp/mptcp_coupled.c b/net/mptcp/mptcp_coupled.c
--- a/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_coupled.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_coupled.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,271 @@ @@ -0,0 +1,271 @@
+/* +/*
+ * MPTCP implementation - Linked Increase congestion control Algorithm (LIA) + * MPTCP implementation - Linked Increase congestion control Algorithm (LIA)
@ -7927,8 +7927,8 @@ diff -aurN a/net/mptcp/mptcp_coupled.c b/net/mptcp/mptcp_coupled.c
+MODULE_VERSION("0.1"); +MODULE_VERSION("0.1");
diff -aurN a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c diff -aurN a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c
--- a/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_ctrl.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_ctrl.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,2928 @@ @@ -0,0 +1,2931 @@
+/* +/*
+ * MPTCP implementation - MPTCP-control + * MPTCP implementation - MPTCP-control
+ * + *
@ -7995,6 +7995,7 @@ diff -aurN a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c
+static struct kmem_cache *mptcp_tw_cache __read_mostly; +static struct kmem_cache *mptcp_tw_cache __read_mostly;
+ +
+int sysctl_mptcp_enabled __read_mostly = 1; +int sysctl_mptcp_enabled __read_mostly = 1;
+EXPORT_SYMBOL(sysctl_mptcp_enabled);
+int sysctl_mptcp_version __read_mostly = 0; +int sysctl_mptcp_version __read_mostly = 0;
+static int min_mptcp_version; +static int min_mptcp_version;
+static int max_mptcp_version = 1; +static int max_mptcp_version = 1;
@ -9028,32 +9029,34 @@ diff -aurN a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c
+ +
+#if IS_ENABLED(CONFIG_IPV6) +#if IS_ENABLED(CONFIG_IPV6)
+ if (meta_icsk->icsk_af_ops == &mptcp_v6_mapped) { + if (meta_icsk->icsk_af_ops == &mptcp_v6_mapped) {
+ struct tcp6_sock *master_tp6 = (struct tcp6_sock *)master_sk;
+ struct ipv6_pinfo *newnp, *np = inet6_sk(meta_sk); + struct ipv6_pinfo *newnp, *np = inet6_sk(meta_sk);
+ +
+ inet_sk(master_sk)->pinet6 = &((struct tcp6_sock *)master_sk)->inet6; + inet_sk(master_sk)->pinet6 = &master_tp6->inet6;
+ +
+ newnp = inet6_sk(master_sk); + newnp = inet6_sk(master_sk);
+ memcpy(newnp, np, sizeof(struct ipv6_pinfo)); + memcpy(newnp, np, sizeof(struct ipv6_pinfo));
+
+ newnp->ipv6_mc_list = NULL;
+ newnp->ipv6_ac_list = NULL;
+ newnp->ipv6_fl_list = NULL;
+ newnp->opt = NULL;
+ newnp->pktoptions = NULL;
+ (void)xchg(&newnp->rxpmtu, NULL);
+ } else if (meta_sk->sk_family == AF_INET6) { + } else if (meta_sk->sk_family == AF_INET6) {
+ struct tcp6_sock *master_tp6 = (struct tcp6_sock *)master_sk;
+ struct ipv6_pinfo *newnp, *np = inet6_sk(meta_sk); + struct ipv6_pinfo *newnp, *np = inet6_sk(meta_sk);
+ struct ipv6_txoptions *opt;
+ +
+ inet_sk(master_sk)->pinet6 = &((struct tcp6_sock *)master_sk)->inet6; + inet_sk(master_sk)->pinet6 = &master_tp6->inet6;
+ +
+ /* The following heavily inspired from tcp_v6_syn_recv_sock() */
+ newnp = inet6_sk(master_sk); + newnp = inet6_sk(master_sk);
+ memcpy(newnp, np, sizeof(struct ipv6_pinfo)); + memcpy(newnp, np, sizeof(struct ipv6_pinfo));
+ +
+ newnp->hop_limit = -1; + opt = rcu_dereference(np->opt);
+ newnp->mcast_hops = IPV6_DEFAULT_MCASTHOPS; + if (opt) {
+ newnp->mc_loop = 1; + opt = ipv6_dup_options(master_sk, opt);
+ newnp->pmtudisc = IPV6_PMTUDISC_WANT; + RCU_INIT_POINTER(newnp->opt, opt);
+ master_sk->sk_ipv6only = sock_net(master_sk)->ipv6.sysctl.bindv6only; + }
+ inet_csk(master_sk)->icsk_ext_hdr_len = 0;
+ if (opt)
+ inet_csk(master_sk)->icsk_ext_hdr_len = opt->opt_nflen +
+ opt->opt_flen;
+
+ } + }
+#endif +#endif
+ +
@ -10859,7 +10862,7 @@ diff -aurN a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c
+} +}
diff -aurN a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c diff -aurN a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c
--- a/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_fullmesh.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_fullmesh.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,2013 @@ @@ -0,0 +1,2013 @@
+#include <linux/module.h> +#include <linux/module.h>
+#include <linux/proc_fs.h> +#include <linux/proc_fs.h>
@ -12094,7 +12097,7 @@ diff -aurN a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c
+ event == NETDEV_CHANGE)) + event == NETDEV_CHANGE))
+ return NOTIFY_DONE; + return NOTIFY_DONE;
+ +
+ if (!ipv6_dad_finished(ifa6)) + if (sysctl_mptcp_enabled && !ipv6_dad_finished(ifa6))
+ dad_setup_timer(ifa6); + dad_setup_timer(ifa6);
+ else + else
+ addr6_event_handler(ifa6, event, net); + addr6_event_handler(ifa6, event, net);
@ -12876,7 +12879,7 @@ diff -aurN a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c
+MODULE_VERSION("0.88"); +MODULE_VERSION("0.88");
diff -aurN a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c diff -aurN a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c
--- a/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_input.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_input.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,2465 @@ @@ -0,0 +1,2465 @@
+/* +/*
+ * MPTCP implementation - Sending side + * MPTCP implementation - Sending side
@ -15345,7 +15348,7 @@ diff -aurN a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c
+} +}
diff -aurN a/net/mptcp/mptcp_ipv4.c b/net/mptcp/mptcp_ipv4.c diff -aurN a/net/mptcp/mptcp_ipv4.c b/net/mptcp/mptcp_ipv4.c
--- a/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_ipv4.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_ipv4.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,437 @@ @@ -0,0 +1,437 @@
+/* +/*
+ * MPTCP implementation - IPv4-specific functions + * MPTCP implementation - IPv4-specific functions
@ -15786,7 +15789,7 @@ diff -aurN a/net/mptcp/mptcp_ipv4.c b/net/mptcp/mptcp_ipv4.c
+} +}
diff -aurN a/net/mptcp/mptcp_ipv6.c b/net/mptcp/mptcp_ipv6.c diff -aurN a/net/mptcp/mptcp_ipv6.c b/net/mptcp/mptcp_ipv6.c
--- a/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_ipv6.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_ipv6.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,465 @@ @@ -0,0 +1,465 @@
+/* +/*
+ * MPTCP implementation - IPv6-specific functions + * MPTCP implementation - IPv6-specific functions
@ -16255,7 +16258,7 @@ diff -aurN a/net/mptcp/mptcp_ipv6.c b/net/mptcp/mptcp_ipv6.c
+} +}
diff -aurN a/net/mptcp/mptcp_ndiffports.c b/net/mptcp/mptcp_ndiffports.c diff -aurN a/net/mptcp/mptcp_ndiffports.c b/net/mptcp/mptcp_ndiffports.c
--- a/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_ndiffports.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_ndiffports.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,169 @@ @@ -0,0 +1,169 @@
+#include <linux/module.h> +#include <linux/module.h>
+ +
@ -16428,7 +16431,7 @@ diff -aurN a/net/mptcp/mptcp_ndiffports.c b/net/mptcp/mptcp_ndiffports.c
+MODULE_VERSION("0.88"); +MODULE_VERSION("0.88");
diff -aurN a/net/mptcp/mptcp_olia.c b/net/mptcp/mptcp_olia.c diff -aurN a/net/mptcp/mptcp_olia.c b/net/mptcp/mptcp_olia.c
--- a/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_olia.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_olia.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,310 @@ @@ -0,0 +1,310 @@
+/* +/*
+ * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL: + * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL:
@ -16742,7 +16745,7 @@ diff -aurN a/net/mptcp/mptcp_olia.c b/net/mptcp/mptcp_olia.c
+MODULE_VERSION("0.1"); +MODULE_VERSION("0.1");
diff -aurN a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c diff -aurN a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c
--- a/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_output.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_output.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,1816 @@ @@ -0,0 +1,1816 @@
+/* +/*
+ * MPTCP implementation - Sending side + * MPTCP implementation - Sending side
@ -18562,7 +18565,7 @@ diff -aurN a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c
+ +
diff -aurN a/net/mptcp/mptcp_pm.c b/net/mptcp/mptcp_pm.c diff -aurN a/net/mptcp/mptcp_pm.c b/net/mptcp/mptcp_pm.c
--- a/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_pm.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_pm.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,226 @@ @@ -0,0 +1,226 @@
+/* +/*
+ * MPTCP implementation - MPTCP-subflow-management + * MPTCP implementation - MPTCP-subflow-management
@ -18792,7 +18795,7 @@ diff -aurN a/net/mptcp/mptcp_pm.c b/net/mptcp/mptcp_pm.c
+late_initcall(mptcp_path_manager_default); +late_initcall(mptcp_path_manager_default);
diff -aurN a/net/mptcp/mptcp_redundant.c b/net/mptcp/mptcp_redundant.c diff -aurN a/net/mptcp/mptcp_redundant.c b/net/mptcp/mptcp_redundant.c
--- a/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_redundant.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_redundant.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,301 @@ @@ -0,0 +1,301 @@
+/* +/*
+ * MPTCP Scheduler to reduce latency and jitter. + * MPTCP Scheduler to reduce latency and jitter.
@ -19097,7 +19100,7 @@ diff -aurN a/net/mptcp/mptcp_redundant.c b/net/mptcp/mptcp_redundant.c
+MODULE_VERSION("0.90"); +MODULE_VERSION("0.90");
diff -aurN a/net/mptcp/mptcp_rr.c b/net/mptcp/mptcp_rr.c diff -aurN a/net/mptcp/mptcp_rr.c b/net/mptcp/mptcp_rr.c
--- a/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_rr.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_rr.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,301 @@ @@ -0,0 +1,301 @@
+/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */
+ +
@ -19402,7 +19405,7 @@ diff -aurN a/net/mptcp/mptcp_rr.c b/net/mptcp/mptcp_rr.c
+MODULE_VERSION("0.89"); +MODULE_VERSION("0.89");
diff -aurN a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c diff -aurN a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c
--- a/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_sched.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_sched.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,634 @@ @@ -0,0 +1,634 @@
+/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */
+ +
@ -20040,7 +20043,7 @@ diff -aurN a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c
+late_initcall(mptcp_scheduler_default); +late_initcall(mptcp_scheduler_default);
diff -aurN a/net/mptcp/mptcp_wvegas.c b/net/mptcp/mptcp_wvegas.c diff -aurN a/net/mptcp/mptcp_wvegas.c b/net/mptcp/mptcp_wvegas.c
--- a/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 --- a/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100
+++ b/net/mptcp/mptcp_wvegas.c 2018-10-01 18:37:13.000000000 +0200 +++ b/net/mptcp/mptcp_wvegas.c 2018-11-27 13:37:16.000000000 +0100
@@ -0,0 +1,270 @@ @@ -0,0 +1,270 @@
+/* +/*
+ * MPTCP implementation - WEIGHTED VEGAS + * MPTCP implementation - WEIGHTED VEGAS