Lines Matching refs:sk

143 	struct sock sk;  member
147 static void dn_keepalive(struct sock *sk);
163 static struct hlist_head *dn_find_list(struct sock *sk) in dn_find_list() argument
165 struct dn_scp *scp = DN_SK(sk); in dn_find_list()
178 struct sock *sk; in check_port() local
183 sk_for_each(sk, &dn_sk_hash[le16_to_cpu(port) & DN_SK_HASH_MASK]) { in check_port()
184 struct dn_scp *scp = DN_SK(sk); in check_port()
191 static unsigned short port_alloc(struct sock *sk) in port_alloc() argument
193 struct dn_scp *scp = DN_SK(sk); in port_alloc()
212 static int dn_hash_sock(struct sock *sk) in dn_hash_sock() argument
214 struct dn_scp *scp = DN_SK(sk); in dn_hash_sock()
218 BUG_ON(sk_hashed(sk)); in dn_hash_sock()
222 if (!scp->addrloc && !port_alloc(sk)) in dn_hash_sock()
226 if ((list = dn_find_list(sk)) == NULL) in dn_hash_sock()
229 sk_add_node(sk, list); in dn_hash_sock()
236 static void dn_unhash_sock(struct sock *sk) in dn_unhash_sock() argument
239 sk_del_node_init(sk); in dn_unhash_sock()
243 static void dn_unhash_sock_bh(struct sock *sk) in dn_unhash_sock_bh() argument
246 sk_del_node_init(sk); in dn_unhash_sock_bh()
271 static void dn_rehash_sock(struct sock *sk) in dn_rehash_sock() argument
274 struct dn_scp *scp = DN_SK(sk); in dn_rehash_sock()
280 sk_del_node_init(sk); in dn_rehash_sock()
281 DN_SK(sk)->addrloc = 0; in dn_rehash_sock()
282 list = listen_hash(&DN_SK(sk)->addr); in dn_rehash_sock()
283 sk_add_node(sk, list); in dn_rehash_sock()
377 struct sock *sk; in dn_sklist_find_listener() local
380 sk_for_each(sk, list) { in dn_sklist_find_listener()
381 struct dn_scp *scp = DN_SK(sk); in dn_sklist_find_listener()
382 if (sk->sk_state != TCP_LISTEN) in dn_sklist_find_listener()
395 sock_hold(sk); in dn_sklist_find_listener()
397 return sk; in dn_sklist_find_listener()
400 sk = sk_head(&dn_wild_sk); in dn_sklist_find_listener()
401 if (sk) { in dn_sklist_find_listener()
402 if (sk->sk_state == TCP_LISTEN) in dn_sklist_find_listener()
403 sock_hold(sk); in dn_sklist_find_listener()
405 sk = NULL; in dn_sklist_find_listener()
409 return sk; in dn_sklist_find_listener()
415 struct sock *sk; in dn_find_by_skb() local
419 sk_for_each(sk, &dn_sk_hash[le16_to_cpu(cb->dst_port) & DN_SK_HASH_MASK]) { in dn_find_by_skb()
420 scp = DN_SK(sk); in dn_find_by_skb()
427 sock_hold(sk); in dn_find_by_skb()
430 sk = NULL; in dn_find_by_skb()
433 return sk; in dn_find_by_skb()
438 static void dn_destruct(struct sock *sk) in dn_destruct() argument
440 struct dn_scp *scp = DN_SK(sk); in dn_destruct()
446 dst_release(rcu_dereference_check(sk->sk_dst_cache, 1)); in dn_destruct()
451 static void dn_enter_memory_pressure(struct sock *sk) in dn_enter_memory_pressure() argument
474 struct sock *sk = sk_alloc(net, PF_DECnet, gfp, &dn_proto, kern); in dn_alloc_sock() local
476 if (!sk) in dn_alloc_sock()
481 sock_init_data(sock, sk); in dn_alloc_sock()
483 sk->sk_backlog_rcv = dn_nsp_backlog_rcv; in dn_alloc_sock()
484 sk->sk_destruct = dn_destruct; in dn_alloc_sock()
485 sk->sk_no_check_tx = 1; in dn_alloc_sock()
486 sk->sk_family = PF_DECnet; in dn_alloc_sock()
487 sk->sk_protocol = 0; in dn_alloc_sock()
488 sk->sk_allocation = gfp; in dn_alloc_sock()
489 sk->sk_sndbuf = sysctl_decnet_wmem[1]; in dn_alloc_sock()
490 sk->sk_rcvbuf = sysctl_decnet_rmem[1]; in dn_alloc_sock()
493 scp = DN_SK(sk); in dn_alloc_sock()
539 dn_start_slow_timer(sk); in dn_alloc_sock()
541 return sk; in dn_alloc_sock()
548 static void dn_keepalive(struct sock *sk) in dn_keepalive() argument
550 struct dn_scp *scp = DN_SK(sk); in dn_keepalive()
558 dn_nsp_send_link(sk, DN_NOCHANGE, 0); in dn_keepalive()
569 int dn_destroy_timer(struct sock *sk) in dn_destroy_timer() argument
571 struct dn_scp *scp = DN_SK(sk); in dn_destroy_timer()
573 scp->persist = dn_nsp_persist(sk); in dn_destroy_timer()
577 dn_nsp_send_disc(sk, NSP_DISCINIT, 0, GFP_ATOMIC); in dn_destroy_timer()
583 dn_nsp_send_disc(sk, NSP_DISCINIT, 0, GFP_ATOMIC); in dn_destroy_timer()
591 dn_nsp_send_disc(sk, NSP_DISCCONF, NSP_REASON_DC, in dn_destroy_timer()
599 if (sk->sk_socket) in dn_destroy_timer()
603 dn_unhash_sock(sk); in dn_destroy_timer()
604 sock_put(sk); in dn_destroy_timer()
611 static void dn_destroy_sock(struct sock *sk) in dn_destroy_sock() argument
613 struct dn_scp *scp = DN_SK(sk); in dn_destroy_sock()
617 if (sk->sk_socket) { in dn_destroy_sock()
618 if (sk->sk_socket->state != SS_UNCONNECTED) in dn_destroy_sock()
619 sk->sk_socket->state = SS_DISCONNECTING; in dn_destroy_sock()
622 sk->sk_state = TCP_CLOSE; in dn_destroy_sock()
626 dn_nsp_send_disc(sk, NSP_DISCCONF, NSP_REASON_DC, in dn_destroy_sock()
627 sk->sk_allocation); in dn_destroy_sock()
629 scp->persist = dn_nsp_persist(sk); in dn_destroy_sock()
639 dn_nsp_send_disc(sk, NSP_DISCINIT, 0, sk->sk_allocation); in dn_destroy_sock()
649 scp->persist = dn_nsp_persist(sk); in dn_destroy_sock()
654 dn_stop_slow_timer(sk); in dn_destroy_sock()
656 dn_unhash_sock_bh(sk); in dn_destroy_sock()
657 sock_put(sk); in dn_destroy_sock()
679 struct sock *sk; in dn_create() local
699 if ((sk = dn_alloc_sock(net, sock, GFP_KERNEL, kern)) == NULL) in dn_create()
702 sk->sk_protocol = protocol; in dn_create()
711 struct sock *sk = sock->sk; in dn_release() local
713 if (sk) { in dn_release()
714 sock_orphan(sk); in dn_release()
715 sock_hold(sk); in dn_release()
716 lock_sock(sk); in dn_release()
717 dn_destroy_sock(sk); in dn_release()
718 release_sock(sk); in dn_release()
719 sock_put(sk); in dn_release()
727 struct sock *sk = sock->sk; in dn_bind() local
728 struct dn_scp *scp = DN_SK(sk); in dn_bind()
771 lock_sock(sk); in dn_bind()
772 if (sock_flag(sk, SOCK_ZAPPED)) { in dn_bind()
774 sock_reset_flag(sk, SOCK_ZAPPED); in dn_bind()
776 rv = dn_hash_sock(sk); in dn_bind()
778 sock_set_flag(sk, SOCK_ZAPPED); in dn_bind()
780 release_sock(sk); in dn_bind()
788 struct sock *sk = sock->sk; in dn_auto_bind() local
789 struct dn_scp *scp = DN_SK(sk); in dn_auto_bind()
792 sock_reset_flag(sk, SOCK_ZAPPED); in dn_auto_bind()
815 rv = dn_hash_sock(sk); in dn_auto_bind()
817 sock_set_flag(sk, SOCK_ZAPPED); in dn_auto_bind()
823 static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation) in dn_confirm_accept() argument
825 struct dn_scp *scp = DN_SK(sk); in dn_confirm_accept()
833 scp->segsize_loc = dst_metric_advmss(__sk_dst_get(sk)); in dn_confirm_accept()
834 dn_send_conn_conf(sk, allocation); in dn_confirm_accept()
836 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_confirm_accept()
838 release_sock(sk); in dn_confirm_accept()
841 lock_sock(sk); in dn_confirm_accept()
845 err = sock_error(sk); in dn_confirm_accept()
854 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_confirm_accept()
856 finish_wait(sk_sleep(sk), &wait); in dn_confirm_accept()
858 sk->sk_socket->state = SS_CONNECTED; in dn_confirm_accept()
860 sk->sk_socket->state = SS_UNCONNECTED; in dn_confirm_accept()
865 static int dn_wait_run(struct sock *sk, long *timeo) in dn_wait_run() argument
867 struct dn_scp *scp = DN_SK(sk); in dn_wait_run()
877 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_wait_run()
879 release_sock(sk); in dn_wait_run()
882 lock_sock(sk); in dn_wait_run()
886 err = sock_error(sk); in dn_wait_run()
895 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_wait_run()
897 finish_wait(sk_sleep(sk), &wait); in dn_wait_run()
900 sk->sk_socket->state = SS_CONNECTED; in dn_wait_run()
902 sk->sk_socket->state = SS_UNCONNECTED; in dn_wait_run()
907 static int __dn_connect(struct sock *sk, struct sockaddr_dn *addr, int addrlen, long *timeo, int fl… in __dn_connect() argument
909 struct socket *sock = sk->sk_socket; in __dn_connect()
910 struct dn_scp *scp = DN_SK(sk); in __dn_connect()
929 return dn_wait_run(sk, timeo); in __dn_connect()
943 if (sock_flag(sk, SOCK_ZAPPED)) { in __dn_connect()
944 err = dn_auto_bind(sk->sk_socket); in __dn_connect()
953 fld.flowidn_oif = sk->sk_bound_dev_if; in __dn_connect()
958 if (dn_route_output_sock(&sk->sk_dst_cache, &fld, sk, flags) < 0) in __dn_connect()
960 dst = __sk_dst_get(sk); in __dn_connect()
961 sk->sk_route_caps = dst->dev->features; in __dn_connect()
966 dn_nsp_send_conninit(sk, NSP_CI); in __dn_connect()
969 err = dn_wait_run(sk, timeo); in __dn_connect()
978 struct sock *sk = sock->sk; in dn_connect() local
980 long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); in dn_connect()
982 lock_sock(sk); in dn_connect()
983 err = __dn_connect(sk, addr, addrlen, &timeo, 0); in dn_connect()
984 release_sock(sk); in dn_connect()
989 static inline int dn_check_state(struct sock *sk, struct sockaddr_dn *addr, int addrlen, long *time… in dn_check_state() argument
991 struct dn_scp *scp = DN_SK(sk); in dn_check_state()
997 return dn_confirm_accept(sk, timeo, sk->sk_allocation); in dn_check_state()
1000 return dn_wait_run(sk, timeo); in dn_check_state()
1002 return __dn_connect(sk, addr, addrlen, timeo, flags); in dn_check_state()
1040 static struct sk_buff *dn_wait_for_connect(struct sock *sk, long *timeo) in dn_wait_for_connect() argument
1046 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_wait_for_connect()
1048 release_sock(sk); in dn_wait_for_connect()
1049 skb = skb_dequeue(&sk->sk_receive_queue); in dn_wait_for_connect()
1052 skb = skb_dequeue(&sk->sk_receive_queue); in dn_wait_for_connect()
1054 lock_sock(sk); in dn_wait_for_connect()
1058 if (sk->sk_state != TCP_LISTEN) in dn_wait_for_connect()
1066 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_wait_for_connect()
1068 finish_wait(sk_sleep(sk), &wait); in dn_wait_for_connect()
1075 struct sock *sk = sock->sk, *newsk; in dn_accept() local
1081 long timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in dn_accept()
1084 lock_sock(sk); in dn_accept()
1086 if (sk->sk_state != TCP_LISTEN || DN_SK(sk)->state != DN_O) { in dn_accept()
1087 release_sock(sk); in dn_accept()
1091 skb = skb_dequeue(&sk->sk_receive_queue); in dn_accept()
1093 skb = dn_wait_for_connect(sk, &timeo); in dn_accept()
1095 release_sock(sk); in dn_accept()
1101 sk->sk_ack_backlog--; in dn_accept()
1102 newsk = dn_alloc_sock(sock_net(sk), newsock, sk->sk_allocation, 0); in dn_accept()
1104 release_sock(sk); in dn_accept()
1108 release_sock(sk); in dn_accept()
1119 DN_SK(newsk)->accept_mode = DN_SK(sk)->accept_mode; in dn_accept()
1128 memcpy(&(DN_SK(newsk)->addr), &(DN_SK(sk)->addr), sizeof(struct sockaddr_dn)); in dn_accept()
1158 memcpy(&(DN_SK(newsk)->conndata_out), &(DN_SK(sk)->conndata_out), in dn_accept()
1160 memcpy(&(DN_SK(newsk)->discdata_out), &(DN_SK(sk)->discdata_out), in dn_accept()
1175 sk->sk_allocation); in dn_accept()
1185 struct sock *sk = sock->sk; in dn_getname() local
1186 struct dn_scp *scp = DN_SK(sk); in dn_getname()
1190 lock_sock(sk); in dn_getname()
1196 release_sock(sk); in dn_getname()
1205 release_sock(sk); in dn_getname()
1213 struct sock *sk = sock->sk; in dn_poll() local
1214 struct dn_scp *scp = DN_SK(sk); in dn_poll()
1225 struct sock *sk = sock->sk; in dn_ioctl() local
1226 struct dn_scp *scp = DN_SK(sk); in dn_ioctl()
1239 lock_sock(sk); in dn_ioctl()
1243 release_sock(sk); in dn_ioctl()
1247 amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); in dn_ioctl()
1254 lock_sock(sk); in dn_ioctl()
1259 skb_queue_walk(&sk->sk_receive_queue, skb) in dn_ioctl()
1262 release_sock(sk); in dn_ioctl()
1276 struct sock *sk = sock->sk; in dn_listen() local
1279 lock_sock(sk); in dn_listen()
1281 if (sock_flag(sk, SOCK_ZAPPED)) in dn_listen()
1284 if ((DN_SK(sk)->state != DN_O) || (sk->sk_state == TCP_LISTEN)) in dn_listen()
1287 sk->sk_max_ack_backlog = backlog; in dn_listen()
1288 sk->sk_ack_backlog = 0; in dn_listen()
1289 sk->sk_state = TCP_LISTEN; in dn_listen()
1291 dn_rehash_sock(sk); in dn_listen()
1294 release_sock(sk); in dn_listen()
1302 struct sock *sk = sock->sk; in dn_shutdown() local
1303 struct dn_scp *scp = DN_SK(sk); in dn_shutdown()
1306 lock_sock(sk); in dn_shutdown()
1322 sk->sk_shutdown = SHUTDOWN_MASK; in dn_shutdown()
1323 dn_destroy_sock(sk); in dn_shutdown()
1327 release_sock(sk); in dn_shutdown()
1334 struct sock *sk = sock->sk; in dn_setsockopt() local
1337 lock_sock(sk); in dn_setsockopt()
1339 release_sock(sk); in dn_setsockopt()
1346 struct sock *sk = sock->sk; in __dn_setsockopt() local
1347 struct dn_scp *scp = DN_SK(sk); in __dn_setsockopt()
1434 timeo = sock_rcvtimeo(sk, 0); in __dn_setsockopt()
1435 err = dn_confirm_accept(sk, &timeo, sk->sk_allocation); in __dn_setsockopt()
1443 sk->sk_shutdown = SHUTDOWN_MASK; in __dn_setsockopt()
1444 dn_nsp_send_disc(sk, 0x38, 0, sk->sk_allocation); in __dn_setsockopt()
1449 return nf_setsockopt(sk, PF_DECnet, optname, optval, optlen); in __dn_setsockopt()
1510 struct sock *sk = sock->sk; in dn_getsockopt() local
1513 lock_sock(sk); in dn_getsockopt()
1515 release_sock(sk); in dn_getsockopt()
1522 struct sock *sk = sock->sk; in __dn_getsockopt() local
1523 struct dn_scp *scp = DN_SK(sk); in __dn_getsockopt()
1589 ret = nf_getsockopt(sk, PF_DECnet, optname, optval, &len); in __dn_getsockopt()
1645 static int dn_data_ready(struct sock *sk, struct sk_buff_head *q, int flags, int target) in dn_data_ready() argument
1659 if (sk->sk_type == SOCK_SEQPACKET) in dn_data_ready()
1678 struct sock *sk = sock->sk; in dn_recvmsg() local
1679 struct dn_scp *scp = DN_SK(sk); in dn_recvmsg()
1680 struct sk_buff_head *queue = &sk->sk_receive_queue; in dn_recvmsg()
1687 long timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); in dn_recvmsg()
1689 lock_sock(sk); in dn_recvmsg()
1691 if (sock_flag(sk, SOCK_ZAPPED)) { in dn_recvmsg()
1696 if (sk->sk_shutdown & RCV_SHUTDOWN) { in dn_recvmsg()
1701 rv = dn_check_state(sk, NULL, 0, &timeo, flags); in dn_recvmsg()
1723 if (sk->sk_err) in dn_recvmsg()
1744 if (dn_data_ready(sk, queue, flags, target)) in dn_recvmsg()
1752 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_recvmsg()
1753 sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk); in dn_recvmsg()
1754 sk_wait_event(sk, &timeo, dn_data_ready(sk, queue, flags, target)); in dn_recvmsg()
1755 sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk); in dn_recvmsg()
1756 finish_wait(sk_sleep(sk), &wait); in dn_recvmsg()
1784 if ((scp->flowloc_sw == DN_DONTSEND) && !dn_congested(sk)) { in dn_recvmsg()
1786 dn_nsp_send_link(sk, DN_SEND, 0); in dn_recvmsg()
1791 if (sk->sk_type == SOCK_SEQPACKET) in dn_recvmsg()
1807 if (eor && (sk->sk_type == SOCK_SEQPACKET)) in dn_recvmsg()
1812 rv = (flags & MSG_PEEK) ? -sk->sk_err : sock_error(sk); in dn_recvmsg()
1820 release_sock(sk); in dn_recvmsg()
1873 static inline unsigned int dn_current_mss(struct sock *sk, int flags) in dn_current_mss() argument
1875 struct dst_entry *dst = __sk_dst_get(sk); in dn_current_mss()
1876 struct dn_scp *scp = DN_SK(sk); in dn_current_mss()
1898 static inline struct sk_buff *dn_alloc_send_pskb(struct sock *sk, in dn_alloc_send_pskb() argument
1902 struct sk_buff *skb = sock_alloc_send_skb(sk, datalen, in dn_alloc_send_pskb()
1913 struct sock *sk = sock->sk; in dn_sendmsg() local
1914 struct dn_scp *scp = DN_SK(sk); in dn_sendmsg()
1934 lock_sock(sk); in dn_sendmsg()
1935 timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); in dn_sendmsg()
1950 err = dn_check_state(sk, addr, addr_len, &timeo, flags); in dn_sendmsg()
1954 if (sk->sk_shutdown & SEND_SHUTDOWN) { in dn_sendmsg()
1961 if ((flags & MSG_TRYHARD) && sk->sk_dst_cache) in dn_sendmsg()
1962 dst_negative_advice(sk); in dn_sendmsg()
1967 mss = dn_current_mss(sk, flags); in dn_sendmsg()
1980 err = sock_error(sk); in dn_sendmsg()
2009 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in dn_sendmsg()
2010 sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk); in dn_sendmsg()
2011 sk_wait_event(sk, &timeo, in dn_sendmsg()
2013 sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk); in dn_sendmsg()
2014 finish_wait(sk_sleep(sk), &wait); in dn_sendmsg()
2024 skb = dn_alloc_send_pskb(sk, len + 64 + DN_MAX_NSP_DATA_HEADER, in dn_sendmsg()
2064 dn_nsp_queue_xmit(sk, skb, sk->sk_allocation, flags & MSG_OOB); in dn_sendmsg()
2067 scp->persist = dn_nsp_persist(sk); in dn_sendmsg()
2074 release_sock(sk); in dn_sendmsg()
2079 err = sk_stream_error(sk, flags, err); in dn_sendmsg()
2080 release_sock(sk); in dn_sendmsg()
2155 struct sock *sk = dn_socket_get_first(seq); in socket_get_idx() local
2157 if (sk) { in socket_get_idx()
2158 while(*pos && (sk = dn_socket_get_next(seq, sk))) in socket_get_idx()
2161 return *pos ? NULL : sk; in socket_get_idx()
2264 static inline void dn_socket_format_entry(struct seq_file *seq, struct sock *sk) in dn_socket_format_entry() argument
2266 struct dn_scp *scp = DN_SK(sk); in dn_socket_format_entry()