@@ -232,7 +232,7 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_ids[])
spin_lock_bh(&pm->lock);
mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED);
- pm->rm_id = rm_ids[0];
+ memcpy(pm->rm_ids_rx, rm_ids, MPTCP_RM_IDS_MAX);
spin_unlock_bh(&pm->lock);
}
@@ -309,6 +309,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk)
msk->pm.local_addr_used = 0;
msk->pm.subflows = 0;
memset(msk->pm.rm_ids_tx, MAX_ADDR_ID, MPTCP_RM_IDS_MAX);
+ memset(msk->pm.rm_ids_rx, MAX_ADDR_ID, MPTCP_RM_IDS_MAX);
WRITE_ONCE(msk->pm.work_pending, false);
WRITE_ONCE(msk->pm.addr_signal, 0);
WRITE_ONCE(msk->pm.accept_addr, false);
@@ -208,6 +208,7 @@ struct mptcp_pm_data {
u8 subflows;
u8 status;
u8 rm_ids_tx[MPTCP_RM_IDS_MAX];
+ u8 rm_ids_rx[MPTCP_RM_IDS_MAX];
u8 rm_id;
};
This patch added a new member rm_ids_rx for struct mptcp_pm_data as an array of the removing address ids on the incoming direction. Used memset to initialize it, and memcpy to copy it. Signed-off-by: Geliang Tang <geliangtang@gmail.com> --- net/mptcp/pm.c | 3 ++- net/mptcp/protocol.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-)