Lines Matching refs:msk
10 void mptcp_free_local_addr_list(struct mptcp_sock *msk) in mptcp_free_local_addr_list() argument
13 struct sock *sk = (struct sock *)msk; in mptcp_free_local_addr_list()
16 if (!mptcp_pm_is_userspace(msk)) in mptcp_free_local_addr_list()
19 spin_lock_bh(&msk->pm.lock); in mptcp_free_local_addr_list()
20 list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list); in mptcp_free_local_addr_list()
21 spin_unlock_bh(&msk->pm.lock); in mptcp_free_local_addr_list()
28 static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_append_new_local_addr() argument
33 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_append_new_local_addr()
41 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
42 list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_append_new_local_addr()
71 list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list); in mptcp_userspace_pm_append_new_local_addr()
72 msk->pm.local_addr_used++; in mptcp_userspace_pm_append_new_local_addr()
79 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
88 static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_delete_local_addr() argument
93 list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_delete_local_addr()
100 msk->pm.local_addr_used--; in mptcp_userspace_pm_delete_local_addr()
108 int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, in mptcp_userspace_pm_get_flags_and_ifindex_by_id() argument
114 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_flags_and_ifindex_by_id()
115 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_get_flags_and_ifindex_by_id()
121 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_flags_and_ifindex_by_id()
130 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, in mptcp_userspace_pm_get_local_id() argument
135 inet_sk((struct sock *)msk))->inet_sport; in mptcp_userspace_pm_get_local_id()
145 return mptcp_userspace_pm_append_new_local_addr(msk, &new_entry); in mptcp_userspace_pm_get_local_id()
153 struct mptcp_sock *msk; in mptcp_nl_cmd_announce() local
164 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val); in mptcp_nl_cmd_announce()
165 if (!msk) { in mptcp_nl_cmd_announce()
170 if (!mptcp_pm_is_userspace(msk)) { in mptcp_nl_cmd_announce()
187 err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val); in mptcp_nl_cmd_announce()
193 lock_sock((struct sock *)msk); in mptcp_nl_cmd_announce()
194 spin_lock_bh(&msk->pm.lock); in mptcp_nl_cmd_announce()
196 if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { in mptcp_nl_cmd_announce()
197 msk->pm.add_addr_signaled++; in mptcp_nl_cmd_announce()
198 mptcp_pm_announce_addr(msk, &addr_val.addr, false); in mptcp_nl_cmd_announce()
199 mptcp_pm_nl_addr_send_ack(msk); in mptcp_nl_cmd_announce()
202 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_cmd_announce()
203 release_sock((struct sock *)msk); in mptcp_nl_cmd_announce()
207 sock_put((struct sock *)msk); in mptcp_nl_cmd_announce()
217 struct mptcp_sock *msk; in mptcp_nl_cmd_remove() local
231 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val); in mptcp_nl_cmd_remove()
232 if (!msk) { in mptcp_nl_cmd_remove()
237 if (!mptcp_pm_is_userspace(msk)) { in mptcp_nl_cmd_remove()
242 lock_sock((struct sock *)msk); in mptcp_nl_cmd_remove()
244 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_nl_cmd_remove()
253 release_sock((struct sock *)msk); in mptcp_nl_cmd_remove()
259 mptcp_pm_remove_addrs(msk, &free_list); in mptcp_nl_cmd_remove()
261 release_sock((struct sock *)msk); in mptcp_nl_cmd_remove()
264 sock_kfree_s((struct sock *)msk, match, sizeof(*match)); in mptcp_nl_cmd_remove()
269 sock_put((struct sock *)msk); in mptcp_nl_cmd_remove()
281 struct mptcp_sock *msk; in mptcp_nl_cmd_sf_create() local
293 msk = mptcp_token_get_sock(genl_info_net(info), token_val); in mptcp_nl_cmd_sf_create()
294 if (!msk) { in mptcp_nl_cmd_sf_create()
299 if (!mptcp_pm_is_userspace(msk)) { in mptcp_nl_cmd_sf_create()
316 sk = (struct sock *)msk; in mptcp_nl_cmd_sf_create()
325 err = mptcp_userspace_pm_append_new_local_addr(msk, &local); in mptcp_nl_cmd_sf_create()
337 spin_lock_bh(&msk->pm.lock); in mptcp_nl_cmd_sf_create()
339 mptcp_userspace_pm_delete_local_addr(msk, &local); in mptcp_nl_cmd_sf_create()
341 msk->pm.subflows++; in mptcp_nl_cmd_sf_create()
342 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_cmd_sf_create()
345 sock_put((struct sock *)msk); in mptcp_nl_cmd_sf_create()
349 static struct sock *mptcp_nl_find_ssk(struct mptcp_sock *msk, in mptcp_nl_find_ssk() argument
358 mptcp_for_each_subflow(msk, subflow) { in mptcp_nl_find_ssk()
404 struct mptcp_sock *msk; in mptcp_nl_cmd_sf_destroy() local
416 msk = mptcp_token_get_sock(genl_info_net(info), token_val); in mptcp_nl_cmd_sf_destroy()
417 if (!msk) { in mptcp_nl_cmd_sf_destroy()
422 if (!mptcp_pm_is_userspace(msk)) { in mptcp_nl_cmd_sf_destroy()
451 sk = (struct sock *)msk; in mptcp_nl_cmd_sf_destroy()
453 ssk = mptcp_nl_find_ssk(msk, &addr_l, &addr_r); in mptcp_nl_cmd_sf_destroy()
458 spin_lock_bh(&msk->pm.lock); in mptcp_nl_cmd_sf_destroy()
459 mptcp_userspace_pm_delete_local_addr(msk, &entry); in mptcp_nl_cmd_sf_destroy()
460 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_cmd_sf_destroy()
471 sock_put((struct sock *)msk); in mptcp_nl_cmd_sf_destroy()
479 struct mptcp_sock *msk; in mptcp_userspace_pm_set_flags() local
485 msk = mptcp_token_get_sock(net, token_val); in mptcp_userspace_pm_set_flags()
486 if (!msk) in mptcp_userspace_pm_set_flags()
489 if (!mptcp_pm_is_userspace(msk)) in mptcp_userspace_pm_set_flags()
496 lock_sock((struct sock *)msk); in mptcp_userspace_pm_set_flags()
497 ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc->addr, &rem->addr, bkup); in mptcp_userspace_pm_set_flags()
498 release_sock((struct sock *)msk); in mptcp_userspace_pm_set_flags()
501 sock_put((struct sock *)msk); in mptcp_userspace_pm_set_flags()