Lines Matching refs:sk
82 struct sock sk; member
105 static int tipc_backlog_rcv(struct sock *sk, struct sk_buff *skb);
106 static void tipc_data_ready(struct sock *sk);
107 static void tipc_write_space(struct sock *sk);
108 static void tipc_sock_destruct(struct sock *sk);
232 static struct tipc_sock *tipc_sk(const struct sock *sk) in tipc_sk() argument
234 return container_of(sk, struct tipc_sock, sk); in tipc_sk()
247 static void tsk_advance_rx_queue(struct sock *sk) in tsk_advance_rx_queue() argument
249 kfree_skb(__skb_dequeue(&sk->sk_receive_queue)); in tsk_advance_rx_queue()
254 static void tipc_sk_respond(struct sock *sk, struct sk_buff *skb, int err) in tipc_sk_respond() argument
258 u32 onode = tipc_own_addr(sock_net(sk)); in tipc_sk_respond()
265 tipc_node_xmit_skb(sock_net(sk), skb, dnode, selector); in tipc_sk_respond()
273 static void tsk_rej_rx_queue(struct sock *sk) in tsk_rej_rx_queue() argument
277 while ((skb = __skb_dequeue(&sk->sk_receive_queue))) in tsk_rej_rx_queue()
278 tipc_sk_respond(sk, skb, TIPC_ERR_NO_PORT); in tsk_rej_rx_queue()
288 struct tipc_net *tn = net_generic(sock_net(&tsk->sk), tipc_net_id); in tsk_peer_msg()
332 struct sock *sk; in tipc_sk_create() local
359 sk = sk_alloc(net, AF_TIPC, GFP_KERNEL, &tipc_proto, kern); in tipc_sk_create()
360 if (sk == NULL) in tipc_sk_create()
363 tsk = tipc_sk(sk); in tipc_sk_create()
367 tn = net_generic(sock_net(sk), tipc_net_id); in tipc_sk_create()
374 sock_init_data(sock, sk); in tipc_sk_create()
380 setup_timer(&sk->sk_timer, tipc_sk_timeout, (unsigned long)tsk); in tipc_sk_create()
381 sk->sk_backlog_rcv = tipc_backlog_rcv; in tipc_sk_create()
382 sk->sk_rcvbuf = sysctl_tipc_rmem[1]; in tipc_sk_create()
383 sk->sk_data_ready = tipc_data_ready; in tipc_sk_create()
384 sk->sk_write_space = tipc_write_space; in tipc_sk_create()
385 sk->sk_destruct = tipc_sock_destruct; in tipc_sk_create()
402 sock_put(&tsk->sk); in tipc_sk_callback()
423 struct sock *sk = sock->sk; in tipc_release() local
433 if (sk == NULL) in tipc_release()
436 net = sock_net(sk); in tipc_release()
437 tsk = tipc_sk(sk); in tipc_release()
438 lock_sock(sk); in tipc_release()
446 skb = __skb_dequeue(&sk->sk_receive_queue); in tipc_release()
458 tipc_sk_respond(sk, skb, TIPC_ERR_NO_PORT); in tipc_release()
463 sk_stop_timer(sk, &sk->sk_timer); in tipc_release()
477 release_sock(sk); in tipc_release()
480 sock->sk = NULL; in tipc_release()
503 struct sock *sk = sock->sk; in tipc_bind() local
505 struct tipc_sock *tsk = tipc_sk(sk); in tipc_bind()
508 lock_sock(sk); in tipc_bind()
541 release_sock(sk); in tipc_bind()
562 struct tipc_sock *tsk = tipc_sk(sock->sk); in tipc_getname()
563 struct tipc_net *tn = net_generic(sock_net(sock->sk), tipc_net_id); in tipc_getname()
629 struct sock *sk = sock->sk; in tipc_poll() local
630 struct tipc_sock *tsk = tipc_sk(sk); in tipc_poll()
633 sock_poll_wait(file, sk_sleep(sk), wait); in tipc_poll()
647 if (!skb_queue_empty(&sk->sk_receive_queue)) in tipc_poll()
672 struct sock *sk = sock->sk; in tipc_sendmcast() local
673 struct tipc_sock *tsk = tipc_sk(sk); in tipc_sendmcast()
674 struct net *net = sock_net(sk); in tipc_sendmcast()
782 struct sock *sk = &tsk->sk; in tipc_sk_proto_rcv() local
795 tipc_sk_respond(sk, skb, TIPC_OK); in tipc_sk_proto_rcv()
801 sk->sk_write_space(sk); in tipc_sk_proto_rcv()
811 struct sock *sk = sock->sk; in tipc_wait_for_sndmsg() local
812 struct tipc_sock *tsk = tipc_sk(sk); in tipc_wait_for_sndmsg()
817 int err = sock_error(sk); in tipc_wait_for_sndmsg()
827 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in tipc_wait_for_sndmsg()
828 done = sk_wait_event(sk, timeo_p, !tsk->link_cong); in tipc_wait_for_sndmsg()
829 finish_wait(sk_sleep(sk), &wait); in tipc_wait_for_sndmsg()
850 struct sock *sk = sock->sk; in tipc_sendmsg() local
853 lock_sock(sk); in tipc_sendmsg()
855 release_sock(sk); in tipc_sendmsg()
863 struct sock *sk = sock->sk; in __tipc_sendmsg() local
864 struct tipc_sock *tsk = tipc_sk(sk); in __tipc_sendmsg()
865 struct net *net = sock_net(sk); in __tipc_sendmsg()
900 timeo = sock_sndtimeo(sk, m->msg_flags & MSG_DONTWAIT); in __tipc_sendmsg()
965 struct sock *sk = sock->sk; in tipc_wait_for_sndpkt() local
966 struct tipc_sock *tsk = tipc_sk(sk); in tipc_wait_for_sndpkt()
971 int err = sock_error(sk); in tipc_wait_for_sndpkt()
983 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in tipc_wait_for_sndpkt()
984 done = sk_wait_event(sk, timeo_p, in tipc_wait_for_sndpkt()
988 finish_wait(sk_sleep(sk), &wait); in tipc_wait_for_sndpkt()
1006 struct sock *sk = sock->sk; in tipc_send_stream() local
1009 lock_sock(sk); in tipc_send_stream()
1011 release_sock(sk); in tipc_send_stream()
1018 struct sock *sk = sock->sk; in __tipc_send_stream() local
1019 struct net *net = sock_net(sk); in __tipc_send_stream()
1020 struct tipc_sock *tsk = tipc_sk(sk); in __tipc_send_stream()
1048 timeo = sock_sndtimeo(sk, m->msg_flags & MSG_DONTWAIT); in __tipc_send_stream()
1112 struct sock *sk = &tsk->sk; in tipc_sk_finish_conn() local
1113 struct net *net = sock_net(sk); in tipc_sk_finish_conn()
1125 sk_reset_timer(sk, &sk->sk_timer, jiffies + tsk->probing_intv); in tipc_sk_finish_conn()
1226 struct net *net = sock_net(&tsk->sk); in tipc_sk_send_ack()
1246 struct sock *sk = sock->sk; in tipc_wait_for_rcvmsg() local
1252 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in tipc_wait_for_rcvmsg()
1253 if (timeo && skb_queue_empty(&sk->sk_receive_queue)) { in tipc_wait_for_rcvmsg()
1258 release_sock(sk); in tipc_wait_for_rcvmsg()
1260 lock_sock(sk); in tipc_wait_for_rcvmsg()
1263 if (!skb_queue_empty(&sk->sk_receive_queue)) in tipc_wait_for_rcvmsg()
1272 finish_wait(sk_sleep(sk), &wait); in tipc_wait_for_rcvmsg()
1291 struct sock *sk = sock->sk; in tipc_recvmsg() local
1292 struct tipc_sock *tsk = tipc_sk(sk); in tipc_recvmsg()
1304 lock_sock(sk); in tipc_recvmsg()
1311 timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); in tipc_recvmsg()
1320 buf = skb_peek(&sk->sk_receive_queue); in tipc_recvmsg()
1327 tsk_advance_rx_queue(sk); in tipc_recvmsg()
1364 tsk_advance_rx_queue(sk); in tipc_recvmsg()
1367 release_sock(sk); in tipc_recvmsg()
1385 struct sock *sk = sock->sk; in tipc_recv_stream() local
1386 struct tipc_sock *tsk = tipc_sk(sk); in tipc_recv_stream()
1400 lock_sock(sk); in tipc_recv_stream()
1407 target = sock_rcvlowat(sk, flags & MSG_WAITALL, buf_len); in tipc_recv_stream()
1408 timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); in tipc_recv_stream()
1417 buf = skb_peek(&sk->sk_receive_queue); in tipc_recv_stream()
1424 tsk_advance_rx_queue(sk); in tipc_recv_stream()
1473 tsk_advance_rx_queue(sk); in tipc_recv_stream()
1478 (!skb_queue_empty(&sk->sk_receive_queue) || in tipc_recv_stream()
1485 release_sock(sk); in tipc_recv_stream()
1493 static void tipc_write_space(struct sock *sk) in tipc_write_space() argument
1498 wq = rcu_dereference(sk->sk_wq); in tipc_write_space()
1510 static void tipc_data_ready(struct sock *sk) in tipc_data_ready() argument
1515 wq = rcu_dereference(sk->sk_wq); in tipc_data_ready()
1522 static void tipc_sock_destruct(struct sock *sk) in tipc_sock_destruct() argument
1524 __skb_queue_purge(&sk->sk_receive_queue); in tipc_sock_destruct()
1536 struct sock *sk = &tsk->sk; in filter_connect() local
1537 struct net *net = sock_net(sk); in filter_connect()
1538 struct socket *sock = sk->sk_socket; in filter_connect()
1568 sk->sk_err = ECONNREFUSED; in filter_connect()
1574 sk->sk_err = EINVAL; in filter_connect()
1587 if (waitqueue_active(sk_sleep(sk))) in filter_connect()
1588 wake_up_interruptible(sk_sleep(sk)); in filter_connect()
1627 static unsigned int rcvbuf_limit(struct sock *sk, struct sk_buff *buf) in rcvbuf_limit() argument
1634 return sk->sk_rcvbuf >> TIPC_CRITICAL_IMPORTANCE << in rcvbuf_limit()
1650 static bool filter_rcv(struct sock *sk, struct sk_buff *skb) in filter_rcv() argument
1652 struct socket *sock = sk->sk_socket; in filter_rcv()
1653 struct tipc_sock *tsk = tipc_sk(sk); in filter_rcv()
1655 unsigned int limit = rcvbuf_limit(sk, skb); in filter_rcv()
1667 sk->sk_write_space(sk); in filter_rcv()
1689 if (unlikely(sk_rmem_alloc_get(sk) + skb->truesize >= limit)) { in filter_rcv()
1696 __skb_queue_tail(&sk->sk_receive_queue, skb); in filter_rcv()
1697 skb_set_owner_r(skb, sk); in filter_rcv()
1699 sk->sk_data_ready(sk); in filter_rcv()
1703 tipc_sk_respond(sk, skb, err); in filter_rcv()
1716 static int tipc_backlog_rcv(struct sock *sk, struct sk_buff *skb) in tipc_backlog_rcv() argument
1720 if (likely(filter_rcv(sk, skb))) in tipc_backlog_rcv()
1721 atomic_add(truesize, &tipc_sk(sk)->dupl_rcvcnt); in tipc_backlog_rcv()
1734 static void tipc_sk_enqueue(struct sk_buff_head *inputq, struct sock *sk, in tipc_sk_enqueue() argument
1751 if (!sock_owned_by_user(sk)) { in tipc_sk_enqueue()
1752 filter_rcv(sk, skb); in tipc_sk_enqueue()
1757 dcnt = &tipc_sk(sk)->dupl_rcvcnt; in tipc_sk_enqueue()
1758 if (sk->sk_backlog.len) in tipc_sk_enqueue()
1760 lim = rcvbuf_limit(sk, skb) + atomic_read(dcnt); in tipc_sk_enqueue()
1761 if (likely(!sk_add_backlog(sk, skb, lim))) in tipc_sk_enqueue()
1765 tipc_sk_respond(sk, skb, TIPC_ERR_OVERLOAD); in tipc_sk_enqueue()
1781 struct sock *sk; in tipc_sk_rcv() local
1789 sk = &tsk->sk; in tipc_sk_rcv()
1790 if (likely(spin_trylock_bh(&sk->sk_lock.slock))) { in tipc_sk_rcv()
1791 tipc_sk_enqueue(inputq, sk, dport); in tipc_sk_rcv()
1792 spin_unlock_bh(&sk->sk_lock.slock); in tipc_sk_rcv()
1794 sock_put(sk); in tipc_sk_rcv()
1819 struct sock *sk = sock->sk; in tipc_wait_for_connect() local
1824 int err = sock_error(sk); in tipc_wait_for_connect()
1832 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in tipc_wait_for_connect()
1833 done = sk_wait_event(sk, timeo_p, sock->state != SS_CONNECTING); in tipc_wait_for_connect()
1834 finish_wait(sk_sleep(sk), &wait); in tipc_wait_for_connect()
1851 struct sock *sk = sock->sk; in tipc_connect() local
1852 struct tipc_sock *tsk = tipc_sk(sk); in tipc_connect()
1859 lock_sock(sk); in tipc_connect()
1925 release_sock(sk); in tipc_connect()
1938 struct sock *sk = sock->sk; in tipc_listen() local
1941 lock_sock(sk); in tipc_listen()
1950 release_sock(sk); in tipc_listen()
1956 struct sock *sk = sock->sk; in tipc_wait_for_accept() local
1966 prepare_to_wait_exclusive(sk_sleep(sk), &wait, in tipc_wait_for_accept()
1968 if (timeo && skb_queue_empty(&sk->sk_receive_queue)) { in tipc_wait_for_accept()
1969 release_sock(sk); in tipc_wait_for_accept()
1971 lock_sock(sk); in tipc_wait_for_accept()
1974 if (!skb_queue_empty(&sk->sk_receive_queue)) in tipc_wait_for_accept()
1986 finish_wait(sk_sleep(sk), &wait); in tipc_wait_for_accept()
2000 struct sock *new_sk, *sk = sock->sk; in tipc_accept() local
2007 lock_sock(sk); in tipc_accept()
2013 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in tipc_accept()
2018 buf = skb_peek(&sk->sk_receive_queue); in tipc_accept()
2020 res = tipc_sk_create(sock_net(sock->sk), new_sock, 0, 1); in tipc_accept()
2023 security_sk_clone(sock->sk, new_sock->sk); in tipc_accept()
2025 new_sk = new_sock->sk; in tipc_accept()
2055 tsk_advance_rx_queue(sk); in tipc_accept()
2058 __skb_dequeue(&sk->sk_receive_queue); in tipc_accept()
2064 release_sock(sk); in tipc_accept()
2079 struct sock *sk = sock->sk; in tipc_shutdown() local
2080 struct net *net = sock_net(sk); in tipc_shutdown()
2081 struct tipc_sock *tsk = tipc_sk(sk); in tipc_shutdown()
2092 lock_sock(sk); in tipc_shutdown()
2102 skb = __skb_dequeue(&sk->sk_receive_queue); in tipc_shutdown()
2108 tipc_sk_respond(sk, skb, TIPC_CONN_SHUTDOWN); in tipc_shutdown()
2124 __skb_queue_purge(&sk->sk_receive_queue); in tipc_shutdown()
2127 sk->sk_state_change(sk); in tipc_shutdown()
2135 release_sock(sk); in tipc_shutdown()
2142 struct sock *sk = &tsk->sk; in tipc_sk_timeout() local
2147 bh_lock_sock(sk); in tipc_sk_timeout()
2149 bh_unlock_sock(sk); in tipc_sk_timeout()
2156 if (!sock_owned_by_user(sk)) { in tipc_sk_timeout()
2157 sk->sk_socket->state = SS_DISCONNECTING; in tipc_sk_timeout()
2159 tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk), in tipc_sk_timeout()
2161 sk->sk_state_change(sk); in tipc_sk_timeout()
2164 sk_reset_timer(sk, &sk->sk_timer, (HZ / 20)); in tipc_sk_timeout()
2172 sk_reset_timer(sk, &sk->sk_timer, jiffies + tsk->probing_intv); in tipc_sk_timeout()
2174 bh_unlock_sock(sk); in tipc_sk_timeout()
2176 tipc_node_xmit_skb(sock_net(sk), skb, peer_node, tsk->portid); in tipc_sk_timeout()
2178 sock_put(sk); in tipc_sk_timeout()
2184 struct net *net = sock_net(&tsk->sk); in tipc_sk_publish()
2208 struct net *net = sock_net(&tsk->sk); in tipc_sk_withdraw()
2253 spin_lock_bh(&tsk->sk.sk_lock.slock); in tipc_sk_reinit()
2257 spin_unlock_bh(&tsk->sk.sk_lock.slock); in tipc_sk_reinit()
2271 sock_hold(&tsk->sk); in tipc_sk_lookup()
2279 struct sock *sk = &tsk->sk; in tipc_sk_insert() local
2280 struct net *net = sock_net(sk); in tipc_sk_insert()
2290 sock_hold(&tsk->sk); in tipc_sk_insert()
2294 sock_put(&tsk->sk); in tipc_sk_insert()
2302 struct sock *sk = &tsk->sk; in tipc_sk_remove() local
2303 struct tipc_net *tn = net_generic(sock_net(sk), tipc_net_id); in tipc_sk_remove()
2306 WARN_ON(atomic_read(&sk->sk_refcnt) == 1); in tipc_sk_remove()
2307 __sock_put(sk); in tipc_sk_remove()
2354 struct sock *sk = sock->sk; in tipc_setsockopt() local
2355 struct tipc_sock *tsk = tipc_sk(sk); in tipc_setsockopt()
2369 lock_sock(sk); in tipc_setsockopt()
2385 tipc_sk(sk)->conn_timeout = value; in tipc_setsockopt()
2392 release_sock(sk); in tipc_setsockopt()
2413 struct sock *sk = sock->sk; in tipc_getsockopt() local
2414 struct tipc_sock *tsk = tipc_sk(sk); in tipc_getsockopt()
2427 lock_sock(sk); in tipc_getsockopt()
2447 value = skb_queue_len(&sk->sk_receive_queue); in tipc_getsockopt()
2453 release_sock(sk); in tipc_getsockopt()
2469 struct sock *sk = sock->sk; in tipc_ioctl() local
2477 if (!tipc_node_get_linkname(sock_net(sk), in tipc_ioctl()
2644 struct net *net = sock_net(skb->sk); in __tipc_nl_add_sk()
2687 struct net *net = sock_net(skb->sk); in tipc_nl_sk_dump()
2696 spin_lock_bh(&tsk->sk.sk_lock.slock); in tipc_nl_sk_dump()
2698 spin_unlock_bh(&tsk->sk.sk_lock.slock); in tipc_nl_sk_dump()
2705 spin_unlock_bh(&tsk->sk.sk_lock.slock); in tipc_nl_sk_dump()
2709 spin_unlock_bh(&tsk->sk.sk_lock.slock); in tipc_nl_sk_dump()
2806 struct net *net = sock_net(skb->sk); in tipc_nl_publ_dump()
2839 lock_sock(&tsk->sk); in tipc_nl_publ_dump()
2843 release_sock(&tsk->sk); in tipc_nl_publ_dump()
2844 sock_put(&tsk->sk); in tipc_nl_publ_dump()