mptcp: allow ADD_ADDR reissuance by userspace PMs
authorKishen Maloor <kishen.maloor@intel.com>
Mon, 2 May 2022 20:52:37 +0000 (13:52 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 3 May 2022 23:54:55 +0000 (16:54 -0700)
This change allows userspace PM implementations to reissue ADD_ADDR
announcements (if necessary) based on their chosen policy.

Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/pm_netlink.c

index a4430c576ce903dd43f566ca2213980e57945127..98b205c2c101ce4556ef4d50f156e7396e81a0d4 100644 (file)
@@ -369,8 +369,16 @@ static bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
 
        lockdep_assert_held(&msk->pm.lock);
 
-       if (mptcp_lookup_anno_list_by_saddr(msk, &entry->addr))
-               return false;
+       add_entry = mptcp_lookup_anno_list_by_saddr(msk, &entry->addr);
+
+       if (add_entry) {
+               if (mptcp_pm_is_kernel(msk))
+                       return false;
+
+               sk_reset_timer(sk, &add_entry->add_timer,
+                              jiffies + mptcp_get_add_addr_timeout(net));
+               return true;
+       }
 
        add_entry = kmalloc(sizeof(*add_entry), GFP_ATOMIC);
        if (!add_entry)