mptcp: Do not send the remove-addr twice on the master-socket

When removing the IP from a master-sk and the socket is owned by the
user, we end up in full_mesh_release_sock. There, we iterate over the
sockets and check if the IP is still there. If not, we remove it.

The loc_id of tcp_sk(sk)->mptcp is the local address-id, set to 0 on the
master-sk. As this check mpcb->master_sk == sk returns true, we actually
already did call update_remove_address with 0 as loc_id.

So, we can avoid this double-call.

Fixes: c31d21d039d (Modularize the path-manager)
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Fix fullmesh path-manager address removal

There were still some issues.

First, update_remove_addrs with addr_id 0 on a master-sk is wrong.
Because, it will also update announced_v4_addrs - which will then be set
incorrectly.

Then, this "if (!found)" should have been the opposite. If we found a
subflow, there is no need to call again update_remove_addrs.

So, we fix this by splitting update_remove_addrs in two.

First, announce_remove_addr, which based on the loc_id will announce the
remove-addr message.

Second, update_addr_bitfields, which does a simple & with loc4_bits to
update the bitfields.

Fixes:a6f8c5ab66cf (mptcp: Handle address-events differently)
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Use inet_rcv_saddr and rcv_saddr for /proc/net/mptcp

This patch alters inet_saddr/saddr to inet_rcv_saddr/rcv_saddr to get
source address for /proc/net/mptcp.

That's the way it is done in get_tcp4_sock and get_tcp6_sock.

Fixes: 5ad9689e4b6f8 (Update /proc/net/mptcp_pm to be like /proc/net/tcp)
Signed-off-by: Kenjiro Nakayama <nakayamakenjiro@gmail.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>