diff options
Diffstat (limited to 'net/mptcp/pm_netlink.c')
| -rw-r--r-- | net/mptcp/pm_netlink.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index bc343dab5e3f..59f8f3124855 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1558,6 +1558,24 @@ static int mptcp_nl_cmd_del_addr(struct sk_buff *skb, struct genl_info *info)  	return ret;  } +void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list) +{ +	struct mptcp_rm_list alist = { .nr = 0 }; +	struct mptcp_pm_addr_entry *entry; + +	list_for_each_entry(entry, rm_list, list) { +		remove_anno_list_by_saddr(msk, &entry->addr); +		if (alist.nr < MPTCP_RM_IDS_MAX) +			alist.ids[alist.nr++] = entry->addr.id; +	} + +	if (alist.nr) { +		spin_lock_bh(&msk->pm.lock); +		mptcp_pm_remove_addr(msk, &alist); +		spin_unlock_bh(&msk->pm.lock); +	} +} +  void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,  					struct list_head *rm_list)  {  | 
