Allow compiling with SYN_COOKIES

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Allow compiling with TCP_MD5SIG

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Set retrans_stamp when retransmitting FAST_CLOSE

This is necessary to correctly detect retransmission timeouts, in
retransmits_timed_out.

Further, this implicitly fixes a bug, because retransmits_timed_out will
access the write-queue if retrans_stamp is unset.

Reported-by: Alexandru Agache <alexandruag@gmail.com>
Tested-by: Alexandru Agache <alexandruag@gmail.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Meta-level retransmission timeout based on retrans_stamp

retrans_stamp must be set back again to 0, in order to have correct
retransmission timeouts at the meta-level.
For MPTCP we just set it back, as soon as something got acked. Also, in
tcp_connect, it is initialized when sending the SYN. We set it back to 0
when creating the mpcb.

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Don't use double-pointer in dss-copy

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Wrap call to pskb_copy for TCP-segments

We must make sure that the DSS-option is handled correctly too.
So, we need to make the skb_push/pull as in tcp_transmit_skb.

Additionally, pskb_copy may fail, so we should check nskb before pulling
it.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Correctly detect mapping if a DATA_FIN is inside.

We have to add mp_data_fin, instead of subtracting, because mp_data_len
equals data_len, minus the data_fin.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Allow meta-retransmission on already chosen subsocket

We may need to meta-retransmit on a subflow where we have already sent
data. This patch allows to achieve this.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Set end_seq when splitting segments

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Don't accept new subflows while falling back

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Reception of MP_FAIL and fallback to infinite

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