Lines Matching refs:msk

15 void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk)  in mptcp_userspace_pm_free_local_addr_list()  argument
18 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_free_local_addr_list()
21 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_free_local_addr_list()
22 list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list); in mptcp_userspace_pm_free_local_addr_list()
23 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_free_local_addr_list()
31 mptcp_userspace_pm_lookup_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_lookup_addr() argument
36 mptcp_for_each_userspace_pm_addr(msk, entry) { in mptcp_userspace_pm_lookup_addr()
43 static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_append_new_local_addr() argument
48 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_append_new_local_addr()
56 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
57 mptcp_for_each_userspace_pm_addr(msk, e) { in mptcp_userspace_pm_append_new_local_addr()
81 list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list); in mptcp_userspace_pm_append_new_local_addr()
82 msk->pm.local_addr_used++; in mptcp_userspace_pm_append_new_local_addr()
89 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
98 static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk, in mptcp_userspace_pm_delete_local_addr() argument
101 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_delete_local_addr()
104 entry = mptcp_userspace_pm_lookup_addr(msk, &addr->addr); in mptcp_userspace_pm_delete_local_addr()
113 msk->pm.local_addr_used--; in mptcp_userspace_pm_delete_local_addr()
118 mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id) in mptcp_userspace_pm_lookup_addr_by_id() argument
122 mptcp_for_each_userspace_pm_addr(msk, entry) { in mptcp_userspace_pm_lookup_addr_by_id()
129 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, in mptcp_userspace_pm_get_local_id() argument
133 inet_sk((struct sock *)msk))->inet_sport; in mptcp_userspace_pm_get_local_id()
136 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_local_id()
137 entry = mptcp_userspace_pm_lookup_addr(msk, &skc->addr); in mptcp_userspace_pm_get_local_id()
138 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_local_id()
145 return mptcp_userspace_pm_append_new_local_addr(msk, skc, true); in mptcp_userspace_pm_get_local_id()
148 bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk, in mptcp_userspace_pm_is_backup() argument
154 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_is_backup()
155 entry = mptcp_userspace_pm_lookup_addr(msk, skc); in mptcp_userspace_pm_is_backup()
157 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_is_backup()
164 struct mptcp_sock *msk; in mptcp_userspace_pm_get_sock() local
171 msk = mptcp_token_get_sock(genl_info_net(info), nla_get_u32(token)); in mptcp_userspace_pm_get_sock()
172 if (!msk) { in mptcp_userspace_pm_get_sock()
177 if (!mptcp_pm_is_userspace(msk)) { in mptcp_userspace_pm_get_sock()
180 sock_put((struct sock *)msk); in mptcp_userspace_pm_get_sock()
184 return msk; in mptcp_userspace_pm_get_sock()
190 struct mptcp_sock *msk; in mptcp_pm_nl_announce_doit() local
198 msk = mptcp_userspace_pm_get_sock(info); in mptcp_pm_nl_announce_doit()
199 if (!msk) in mptcp_pm_nl_announce_doit()
202 sk = (struct sock *)msk; in mptcp_pm_nl_announce_doit()
221 err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val, false); in mptcp_pm_nl_announce_doit()
229 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_announce_doit()
231 if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { in mptcp_pm_nl_announce_doit()
232 msk->pm.add_addr_signaled++; in mptcp_pm_nl_announce_doit()
233 mptcp_pm_announce_addr(msk, &addr_val.addr, false); in mptcp_pm_nl_announce_doit()
234 mptcp_pm_addr_send_ack(msk); in mptcp_pm_nl_announce_doit()
237 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_announce_doit()
246 static int mptcp_userspace_pm_remove_id_zero_address(struct mptcp_sock *msk) in mptcp_userspace_pm_remove_id_zero_address() argument
250 struct sock *sk = (struct sock *)msk; in mptcp_userspace_pm_remove_id_zero_address()
255 mptcp_for_each_subflow(msk, subflow) { in mptcp_userspace_pm_remove_id_zero_address()
266 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_remove_id_zero_address()
267 mptcp_pm_remove_addr(msk, &list); in mptcp_userspace_pm_remove_id_zero_address()
268 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_remove_id_zero_address()
277 void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, in mptcp_pm_remove_addr_entry() argument
284 if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) in mptcp_pm_remove_addr_entry()
286 else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) in mptcp_pm_remove_addr_entry()
291 spin_lock_bh(&msk->pm.lock); in mptcp_pm_remove_addr_entry()
292 msk->pm.add_addr_signaled -= anno_nr; in mptcp_pm_remove_addr_entry()
293 mptcp_pm_remove_addr(msk, &alist); in mptcp_pm_remove_addr_entry()
294 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_remove_addr_entry()
300 struct mptcp_sock *msk; in mptcp_pm_nl_remove_doit() local
312 msk = mptcp_userspace_pm_get_sock(info); in mptcp_pm_nl_remove_doit()
313 if (!msk) in mptcp_pm_nl_remove_doit()
316 sk = (struct sock *)msk; in mptcp_pm_nl_remove_doit()
319 err = mptcp_userspace_pm_remove_id_zero_address(msk); in mptcp_pm_nl_remove_doit()
325 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
326 match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val); in mptcp_pm_nl_remove_doit()
328 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
334 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_remove_doit()
336 mptcp_pm_remove_addr_entry(msk, match); in mptcp_pm_nl_remove_doit()
363 struct mptcp_sock *msk; in mptcp_pm_nl_subflow_create_doit() local
371 msk = mptcp_userspace_pm_get_sock(info); in mptcp_pm_nl_subflow_create_doit()
372 if (!msk) in mptcp_pm_nl_subflow_create_doit()
375 sk = (struct sock *)msk; in mptcp_pm_nl_subflow_create_doit()
400 err = mptcp_userspace_pm_append_new_local_addr(msk, &entry, false); in mptcp_pm_nl_subflow_create_doit()
418 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_create_doit()
420 mptcp_userspace_pm_delete_local_addr(msk, &entry); in mptcp_pm_nl_subflow_create_doit()
422 msk->pm.subflows++; in mptcp_pm_nl_subflow_create_doit()
423 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_create_doit()
430 static struct sock *mptcp_nl_find_ssk(struct mptcp_sock *msk, in mptcp_nl_find_ssk() argument
439 mptcp_for_each_subflow(msk, subflow) { in mptcp_nl_find_ssk()
481 struct mptcp_sock *msk; in mptcp_pm_nl_subflow_destroy_doit() local
489 msk = mptcp_userspace_pm_get_sock(info); in mptcp_pm_nl_subflow_destroy_doit()
490 if (!msk) in mptcp_pm_nl_subflow_destroy_doit()
493 sk = (struct sock *)msk; in mptcp_pm_nl_subflow_destroy_doit()
534 ssk = mptcp_nl_find_ssk(msk, &addr_l.addr, &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, &addr_l); in mptcp_pm_nl_subflow_destroy_doit()
543 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_subflow_destroy_doit()
561 struct mptcp_sock *msk; in mptcp_userspace_pm_set_flags() local
569 msk = mptcp_userspace_pm_get_sock(info); in mptcp_userspace_pm_set_flags()
570 if (!msk) in mptcp_userspace_pm_set_flags()
573 sk = (struct sock *)msk; in mptcp_userspace_pm_set_flags()
598 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_set_flags()
599 entry = mptcp_userspace_pm_lookup_addr(msk, &local->addr); in mptcp_userspace_pm_set_flags()
606 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_set_flags()
609 ret = mptcp_pm_mp_prio_send_ack(msk, &local->addr, &rem, bkup); in mptcp_userspace_pm_set_flags()
629 struct mptcp_sock *msk; in mptcp_userspace_pm_dump_addr() local
637 msk = mptcp_userspace_pm_get_sock(info); in mptcp_userspace_pm_dump_addr()
638 if (!msk) in mptcp_userspace_pm_dump_addr()
641 sk = (struct sock *)msk; in mptcp_userspace_pm_dump_addr()
644 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_dump_addr()
645 mptcp_for_each_userspace_pm_addr(msk, entry) { in mptcp_userspace_pm_dump_addr()
654 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_dump_addr()
666 struct mptcp_sock *msk; in mptcp_userspace_pm_get_addr() local
670 msk = mptcp_userspace_pm_get_sock(info); in mptcp_userspace_pm_get_addr()
671 if (!msk) in mptcp_userspace_pm_get_addr()
674 sk = (struct sock *)msk; in mptcp_userspace_pm_get_addr()
677 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_addr()
678 entry = mptcp_userspace_pm_lookup_addr_by_id(msk, id); in mptcp_userspace_pm_get_addr()
683 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_get_addr()