Lines Matching refs:msk

11 void mptcp_free_local_addr_list(struct mptcp_sock *msk)  in mptcp_free_local_addr_list()  argument
14 struct sock *sk = (struct sock *)msk; in mptcp_free_local_addr_list()
17 if (!mptcp_pm_is_userspace(msk)) in mptcp_free_local_addr_list()
20 spin_lock_bh(&msk->pm.lock); in mptcp_free_local_addr_list()
21 list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list); in mptcp_free_local_addr_list()
22 spin_unlock_bh(&msk->pm.lock); in mptcp_free_local_addr_list()
29 static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_append_new_local_addr() argument
35 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_append_new_local_addr()
43 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
44 list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_append_new_local_addr()
73 list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list); in mptcp_userspace_pm_append_new_local_addr()
74 msk->pm.local_addr_used++; in mptcp_userspace_pm_append_new_local_addr()
81 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
90 static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_delete_local_addr() argument
94 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_delete_local_addr()
96 list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_delete_local_addr()
103 msk->pm.local_addr_used--; in mptcp_userspace_pm_delete_local_addr()
112 mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id) in mptcp_userspace_pm_lookup_addr_by_id() argument
116 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_lookup_addr_by_id()
123 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, in mptcp_userspace_pm_get_local_id() argument
128 inet_sk((struct sock *)msk))->inet_sport; in mptcp_userspace_pm_get_local_id()
130 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_local_id()
131 list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_get_local_id()
137 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_local_id()
149 return mptcp_userspace_pm_append_new_local_addr(msk, &new_entry, true); in mptcp_userspace_pm_get_local_id()
152 bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk, in mptcp_userspace_pm_is_backup() argument
158 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_is_backup()
159 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_is_backup()
165 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_is_backup()
175 struct mptcp_sock *msk; in mptcp_pm_nl_announce_doit() local
187 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val); in mptcp_pm_nl_announce_doit()
188 if (!msk) { in mptcp_pm_nl_announce_doit()
193 sk = (struct sock *)msk; in mptcp_pm_nl_announce_doit()
195 if (!mptcp_pm_is_userspace(msk)) { in mptcp_pm_nl_announce_doit()
212 err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val, false); in mptcp_pm_nl_announce_doit()
219 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_announce_doit()
221 if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { in mptcp_pm_nl_announce_doit()
222 msk->pm.add_addr_signaled++; in mptcp_pm_nl_announce_doit()
223 mptcp_pm_announce_addr(msk, &addr_val.addr, false); in mptcp_pm_nl_announce_doit()
224 mptcp_pm_nl_addr_send_ack(msk); in mptcp_pm_nl_announce_doit()
227 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_announce_doit()
236 static int mptcp_userspace_pm_remove_id_zero_address(struct mptcp_sock *msk, in mptcp_userspace_pm_remove_id_zero_address() argument
241 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_remove_id_zero_address()
246 mptcp_for_each_subflow(msk, subflow) { in mptcp_userspace_pm_remove_id_zero_address()
259 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_remove_id_zero_address()
260 mptcp_pm_remove_addr(msk, &list); in mptcp_userspace_pm_remove_id_zero_address()
261 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_remove_id_zero_address()
276 struct mptcp_sock *msk; in mptcp_pm_nl_remove_doit() local
291 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val); in mptcp_pm_nl_remove_doit()
292 if (!msk) { in mptcp_pm_nl_remove_doit()
297 sk = (struct sock *)msk; in mptcp_pm_nl_remove_doit()
299 if (!mptcp_pm_is_userspace(msk)) { in mptcp_pm_nl_remove_doit()
305 err = mptcp_userspace_pm_remove_id_zero_address(msk, info); in mptcp_pm_nl_remove_doit()
311 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
312 match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val); in mptcp_pm_nl_remove_doit()
315 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
321 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
323 mptcp_pm_remove_addrs(msk, &free_list); in mptcp_pm_nl_remove_doit()
345 struct mptcp_sock *msk; in mptcp_pm_nl_subflow_create_doit() local
357 msk = mptcp_token_get_sock(genl_info_net(info), token_val); in mptcp_pm_nl_subflow_create_doit()
358 if (!msk) { in mptcp_pm_nl_subflow_create_doit()
363 sk = (struct sock *)msk; in mptcp_pm_nl_subflow_create_doit()
365 if (!mptcp_pm_is_userspace(msk)) { in mptcp_pm_nl_subflow_create_doit()
395 err = mptcp_userspace_pm_append_new_local_addr(msk, &entry, false); in mptcp_pm_nl_subflow_create_doit()
409 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_create_doit()
411 mptcp_userspace_pm_delete_local_addr(msk, &entry); in mptcp_pm_nl_subflow_create_doit()
413 msk->pm.subflows++; in mptcp_pm_nl_subflow_create_doit()
414 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_create_doit()
421 static struct sock *mptcp_nl_find_ssk(struct mptcp_sock *msk, in mptcp_nl_find_ssk() argument
430 mptcp_for_each_subflow(msk, subflow) { in mptcp_nl_find_ssk()
476 struct mptcp_sock *msk; in mptcp_pm_nl_subflow_destroy_doit() local
488 msk = mptcp_token_get_sock(genl_info_net(info), token_val); in mptcp_pm_nl_subflow_destroy_doit()
489 if (!msk) { in mptcp_pm_nl_subflow_destroy_doit()
494 sk = (struct sock *)msk; in mptcp_pm_nl_subflow_destroy_doit()
496 if (!mptcp_pm_is_userspace(msk)) { in mptcp_pm_nl_subflow_destroy_doit()
536 ssk = mptcp_nl_find_ssk(msk, &addr_l, &addr_r); in mptcp_pm_nl_subflow_destroy_doit()
541 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_destroy_doit()
542 mptcp_userspace_pm_delete_local_addr(msk, &entry); in mptcp_pm_nl_subflow_destroy_doit()
543 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_destroy_doit()
567 struct mptcp_sock *msk; in mptcp_userspace_pm_set_flags() local
575 msk = mptcp_token_get_sock(net, token_val); in mptcp_userspace_pm_set_flags()
576 if (!msk) { in mptcp_userspace_pm_set_flags()
581 sk = (struct sock *)msk; in mptcp_userspace_pm_set_flags()
583 if (!mptcp_pm_is_userspace(msk)) { in mptcp_userspace_pm_set_flags()
608 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_set_flags()
609 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_set_flags()
617 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_set_flags()
620 ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc.addr, &rem.addr, bkup); in mptcp_userspace_pm_set_flags()
637 struct mptcp_sock *msk; in mptcp_userspace_pm_dump_addr() local
646 msk = mptcp_token_get_sock(net, nla_get_u32(token)); in mptcp_userspace_pm_dump_addr()
647 if (!msk) { in mptcp_userspace_pm_dump_addr()
652 sk = (struct sock *)msk; in mptcp_userspace_pm_dump_addr()
654 if (!mptcp_pm_is_userspace(msk)) { in mptcp_userspace_pm_dump_addr()
660 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_dump_addr()
661 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { in mptcp_userspace_pm_dump_addr()
679 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_dump_addr()
695 struct mptcp_sock *msk; in mptcp_userspace_pm_get_addr() local
701 msk = mptcp_token_get_sock(net, nla_get_u32(token)); in mptcp_userspace_pm_get_addr()
702 if (!msk) { in mptcp_userspace_pm_get_addr()
707 sk = (struct sock *)msk; in mptcp_userspace_pm_get_addr()
709 if (!mptcp_pm_is_userspace(msk)) { in mptcp_userspace_pm_get_addr()
733 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_addr()
734 entry = mptcp_userspace_pm_lookup_addr_by_id(msk, addr.addr.id); in mptcp_userspace_pm_get_addr()
747 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_addr()
753 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_addr()