Rename addr4 to locaddr4

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Move many fields

Move everything MPTCP-related out of tcp_options_received into
mptcp_options_received. And move the remote-addresses out of
mptcp_options_received to the mptcp_cb.

From now on, mptcp_options_received is per subflow. And thus only stores
local information per subflow. This reduces our impact on regular TCP.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Cleanup

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: check state when iterating over the subsockets

They may be closed, or in an inappropriate state to take the action.

We have to prevent this.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Prevent double-close from tcp_disconnect in tcp_close

tcp_close may end up calling tcp_disconnect. Then we will do a double
tcp_close from mptcp_sock_def_error_report. This must be prevented.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Add useful WARN_ON

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Properly handle error in mptcp_init4_subsockets

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Hold socket when processing backlog

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Merge branch 'mptcp_trunk' into mptcp_ipext

Conflicts:
	net/mptcp/mptcp_pm.c

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Merge branch 'mptcp_ipext' into mptcp_sockopt

Conflicts:
	net/ipv6/tcp_ipv6.c
	net/mptcp/mptcp_ctrl.c
	net/mptcp/mptcp_ipv4.c

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>