Lines Matching refs:msk

10 void mptcp_free_local_addr_list(struct mptcp_sock *msk)
13 struct sock *sk = (struct sock *)msk;
16 if (!mptcp_pm_is_userspace(msk))
19 spin_lock_bh(&msk->pm.lock);
20 list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list);
21 spin_unlock_bh(&msk->pm.lock);
28 static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
34 struct sock *sk = (struct sock *)msk;
42 spin_lock_bh(&msk->pm.lock);
43 list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
72 list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list);
73 msk->pm.local_addr_used++;
80 spin_unlock_bh(&msk->pm.lock);
89 static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
94 list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
101 msk->pm.local_addr_used--;
109 int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
115 spin_lock_bh(&msk->pm.lock);
116 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
122 spin_unlock_bh(&msk->pm.lock);
131 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
136 inet_sk((struct sock *)msk))->inet_sport;
138 spin_lock_bh(&msk->pm.lock);
139 list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
145 spin_unlock_bh(&msk->pm.lock);
157 return mptcp_userspace_pm_append_new_local_addr(msk, &new_entry, true);
165 struct mptcp_sock *msk;
176 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val);
177 if (!msk) {
182 if (!mptcp_pm_is_userspace(msk)) {
199 err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val, false);
205 lock_sock((struct sock *)msk);
206 spin_lock_bh(&msk->pm.lock);
208 if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) {
209 msk->pm.add_addr_signaled++;
210 mptcp_pm_announce_addr(msk, &addr_val.addr, false);
211 mptcp_pm_nl_addr_send_ack(msk);
214 spin_unlock_bh(&msk->pm.lock);
215 release_sock((struct sock *)msk);
219 sock_put((struct sock *)msk);
223 static int mptcp_userspace_pm_remove_id_zero_address(struct mptcp_sock *msk,
228 struct sock *sk = (struct sock *)msk;
233 mptcp_for_each_subflow(msk, subflow) {
246 spin_lock_bh(&msk->pm.lock);
247 mptcp_pm_remove_addr(msk, &list);
248 spin_unlock_bh(&msk->pm.lock);
263 struct mptcp_sock *msk;
277 msk = mptcp_token_get_sock(sock_net(skb->sk), token_val);
278 if (!msk) {
283 if (!mptcp_pm_is_userspace(msk)) {
289 err = mptcp_userspace_pm_remove_id_zero_address(msk, info);
293 lock_sock((struct sock *)msk);
295 list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
304 release_sock((struct sock *)msk);
310 mptcp_pm_remove_addrs(msk, &free_list);
312 release_sock((struct sock *)msk);
315 sock_kfree_s((struct sock *)msk, match, sizeof(*match));
320 sock_put((struct sock *)msk);
332 struct mptcp_sock *msk;
344 msk = mptcp_token_get_sock(genl_info_net(info), token_val);
345 if (!msk) {
350 if (!mptcp_pm_is_userspace(msk)) {
367 sk = (struct sock *)msk;
376 err = mptcp_userspace_pm_append_new_local_addr(msk, &local, false);
388 spin_lock_bh(&msk->pm.lock);
390 mptcp_userspace_pm_delete_local_addr(msk, &local);
392 msk->pm.subflows++;
393 spin_unlock_bh(&msk->pm.lock);
396 sock_put((struct sock *)msk);
400 static struct sock *mptcp_nl_find_ssk(struct mptcp_sock *msk,
409 mptcp_for_each_subflow(msk, subflow) {
455 struct mptcp_sock *msk;
467 msk = mptcp_token_get_sock(genl_info_net(info), token_val);
468 if (!msk) {
473 if (!mptcp_pm_is_userspace(msk)) {
512 sk = (struct sock *)msk;
514 ssk = mptcp_nl_find_ssk(msk, &addr_l, &addr_r);
519 spin_lock_bh(&msk->pm.lock);
520 mptcp_userspace_pm_delete_local_addr(msk, &entry);
521 spin_unlock_bh(&msk->pm.lock);
532 sock_put((struct sock *)msk);
540 struct mptcp_sock *msk;
546 msk = mptcp_token_get_sock(net, token_val);
547 if (!msk)
550 if (!mptcp_pm_is_userspace(msk))
557 lock_sock((struct sock *)msk);
558 ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc->addr, &rem->addr, bkup);
559 release_sock((struct sock *)msk);
562 sock_put((struct sock *)msk);