Lines Matching refs:sk

154 static void rose_remove_socket(struct sock *sk)  in rose_remove_socket()  argument
157 sk_del_node_init(sk); in rose_remove_socket()
233 static void rose_insert_socket(struct sock *sk) in rose_insert_socket() argument
237 sk_add_node(sk, &rose_list); in rose_insert_socket()
332 void rose_destroy_socket(struct sock *sk) in rose_destroy_socket() argument
336 rose_remove_socket(sk); in rose_destroy_socket()
337 rose_stop_heartbeat(sk); in rose_destroy_socket()
338 rose_stop_idletimer(sk); in rose_destroy_socket()
339 rose_stop_timer(sk); in rose_destroy_socket()
341 rose_clear_queues(sk); /* Flush the queues */ in rose_destroy_socket()
343 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in rose_destroy_socket()
344 if (skb->sk != sk) { /* A pending connection */ in rose_destroy_socket()
346 sock_set_flag(skb->sk, SOCK_DEAD); in rose_destroy_socket()
347 rose_start_heartbeat(skb->sk); in rose_destroy_socket()
348 rose_sk(skb->sk)->state = ROSE_STATE_0; in rose_destroy_socket()
354 if (sk_has_allocations(sk)) { in rose_destroy_socket()
356 setup_timer(&sk->sk_timer, rose_destroy_timer, in rose_destroy_socket()
357 (unsigned long)sk); in rose_destroy_socket()
358 sk->sk_timer.expires = jiffies + 10 * HZ; in rose_destroy_socket()
359 add_timer(&sk->sk_timer); in rose_destroy_socket()
361 sock_put(sk); in rose_destroy_socket()
372 struct sock *sk = sock->sk; in rose_setsockopt() local
373 struct rose_sock *rose = rose_sk(sk); in rose_setsockopt()
432 struct sock *sk = sock->sk; in rose_getsockopt() local
433 struct rose_sock *rose = rose_sk(sk); in rose_getsockopt()
489 struct sock *sk = sock->sk; in rose_listen() local
491 if (sk->sk_state != TCP_LISTEN) { in rose_listen()
492 struct rose_sock *rose = rose_sk(sk); in rose_listen()
498 sk->sk_max_ack_backlog = backlog; in rose_listen()
499 sk->sk_state = TCP_LISTEN; in rose_listen()
515 struct sock *sk; in rose_create() local
524 sk = sk_alloc(net, PF_ROSE, GFP_ATOMIC, &rose_proto, kern); in rose_create()
525 if (sk == NULL) in rose_create()
528 rose = rose_sk(sk); in rose_create()
530 sock_init_data(sock, sk); in rose_create()
539 sk->sk_protocol = protocol; in rose_create()
557 struct sock *sk; in rose_make_new() local
563 sk = sk_alloc(sock_net(osk), PF_ROSE, GFP_ATOMIC, &rose_proto, 0); in rose_make_new()
564 if (sk == NULL) in rose_make_new()
567 rose = rose_sk(sk); in rose_make_new()
569 sock_init_data(NULL, sk); in rose_make_new()
577 sk->sk_type = osk->sk_type; in rose_make_new()
578 sk->sk_priority = osk->sk_priority; in rose_make_new()
579 sk->sk_protocol = osk->sk_protocol; in rose_make_new()
580 sk->sk_rcvbuf = osk->sk_rcvbuf; in rose_make_new()
581 sk->sk_sndbuf = osk->sk_sndbuf; in rose_make_new()
582 sk->sk_state = TCP_ESTABLISHED; in rose_make_new()
583 sock_copy_flags(sk, osk); in rose_make_new()
598 return sk; in rose_make_new()
603 struct sock *sk = sock->sk; in rose_release() local
606 if (sk == NULL) return 0; in rose_release()
608 sock_hold(sk); in rose_release()
609 sock_orphan(sk); in rose_release()
610 lock_sock(sk); in rose_release()
611 rose = rose_sk(sk); in rose_release()
615 release_sock(sk); in rose_release()
616 rose_disconnect(sk, 0, -1, -1); in rose_release()
617 lock_sock(sk); in rose_release()
618 rose_destroy_socket(sk); in rose_release()
623 release_sock(sk); in rose_release()
624 rose_disconnect(sk, 0, -1, -1); in rose_release()
625 lock_sock(sk); in rose_release()
626 rose_destroy_socket(sk); in rose_release()
633 rose_clear_queues(sk); in rose_release()
634 rose_stop_idletimer(sk); in rose_release()
635 rose_write_internal(sk, ROSE_CLEAR_REQUEST); in rose_release()
636 rose_start_t3timer(sk); in rose_release()
638 sk->sk_state = TCP_CLOSE; in rose_release()
639 sk->sk_shutdown |= SEND_SHUTDOWN; in rose_release()
640 sk->sk_state_change(sk); in rose_release()
641 sock_set_flag(sk, SOCK_DEAD); in rose_release()
642 sock_set_flag(sk, SOCK_DESTROY); in rose_release()
649 sock->sk = NULL; in rose_release()
650 release_sock(sk); in rose_release()
651 sock_put(sk); in rose_release()
658 struct sock *sk = sock->sk; in rose_bind() local
659 struct rose_sock *rose = rose_sk(sk); in rose_bind()
666 if (!sock_flag(sk, SOCK_ZAPPED)) in rose_bind()
710 rose_insert_socket(sk); in rose_bind()
712 sock_reset_flag(sk, SOCK_ZAPPED); in rose_bind()
719 struct sock *sk = sock->sk; in rose_connect() local
720 struct rose_sock *rose = rose_sk(sk); in rose_connect()
743 lock_sock(sk); in rose_connect()
745 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) { in rose_connect()
751 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) { in rose_connect()
757 if (sk->sk_state == TCP_ESTABLISHED) { in rose_connect()
763 sk->sk_state = TCP_CLOSE; in rose_connect()
779 if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */ in rose_connect()
780 sock_reset_flag(sk, SOCK_ZAPPED); in rose_connect()
798 rose_insert_socket(sk); /* Finish the bind */ in rose_connect()
817 sk->sk_state = TCP_SYN_SENT; in rose_connect()
823 rose_write_internal(sk, ROSE_CALL_REQUEST); in rose_connect()
824 rose_start_heartbeat(sk); in rose_connect()
825 rose_start_t1timer(sk); in rose_connect()
828 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) { in rose_connect()
837 if (sk->sk_state == TCP_SYN_SENT) { in rose_connect()
841 prepare_to_wait(sk_sleep(sk), &wait, in rose_connect()
843 if (sk->sk_state != TCP_SYN_SENT) in rose_connect()
846 release_sock(sk); in rose_connect()
848 lock_sock(sk); in rose_connect()
854 finish_wait(sk_sleep(sk), &wait); in rose_connect()
860 if (sk->sk_state != TCP_ESTABLISHED) { in rose_connect()
862 err = sock_error(sk); /* Always set at this point */ in rose_connect()
869 release_sock(sk); in rose_connect()
879 struct sock *sk; in rose_accept() local
882 if ((sk = sock->sk) == NULL) in rose_accept()
885 lock_sock(sk); in rose_accept()
886 if (sk->sk_type != SOCK_SEQPACKET) { in rose_accept()
891 if (sk->sk_state != TCP_LISTEN) { in rose_accept()
901 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in rose_accept()
903 skb = skb_dequeue(&sk->sk_receive_queue); in rose_accept()
912 release_sock(sk); in rose_accept()
914 lock_sock(sk); in rose_accept()
920 finish_wait(sk_sleep(sk), &wait); in rose_accept()
924 newsk = skb->sk; in rose_accept()
928 skb->sk = NULL; in rose_accept()
930 sk->sk_ack_backlog--; in rose_accept()
933 release_sock(sk); in rose_accept()
942 struct sock *sk = sock->sk; in rose_getname() local
943 struct rose_sock *rose = rose_sk(sk); in rose_getname()
948 if (sk->sk_state != TCP_ESTABLISHED) in rose_getname()
971 struct sock *sk; in rose_rx_call_request() local
977 skb->sk = NULL; /* Initially we don't know who it's for */ in rose_rx_call_request()
991 sk = rose_find_listener(&facilities.source_addr, &facilities.source_call); in rose_rx_call_request()
996 if (sk == NULL || sk_acceptq_is_full(sk) || in rose_rx_call_request()
997 (make = rose_make_new(sk)) == NULL) { in rose_rx_call_request()
1002 skb->sk = make; in rose_rx_call_request()
1023 if (rose_sk(sk)->defer) { in rose_rx_call_request()
1036 sk->sk_ack_backlog++; in rose_rx_call_request()
1040 skb_queue_head(&sk->sk_receive_queue, skb); in rose_rx_call_request()
1044 if (!sock_flag(sk, SOCK_DEAD)) in rose_rx_call_request()
1045 sk->sk_data_ready(sk); in rose_rx_call_request()
1052 struct sock *sk = sock->sk; in rose_sendmsg() local
1053 struct rose_sock *rose = rose_sk(sk); in rose_sendmsg()
1064 if (sock_flag(sk, SOCK_ZAPPED)) in rose_sendmsg()
1067 if (sk->sk_shutdown & SEND_SHUTDOWN) { in rose_sendmsg()
1094 if (sk->sk_state != TCP_ESTABLISHED) in rose_sendmsg()
1112 if ((skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)) == NULL) in rose_sendmsg()
1152 if (sk->sk_state != TCP_ESTABLISHED) { in rose_sendmsg()
1172 if ((skbn = sock_alloc_send_skb(sk, frontlen + ROSE_PACLEN, 0, &err)) == NULL) { in rose_sendmsg()
1177 skbn->sk = sk; in rose_sendmsg()
1196 skb_queue_tail(&sk->sk_write_queue, skbn); /* Throw it on the queue */ in rose_sendmsg()
1202 skb_queue_tail(&sk->sk_write_queue, skb); /* Throw it on the queue */ in rose_sendmsg()
1205 skb_queue_tail(&sk->sk_write_queue, skb); /* Shove it onto the queue */ in rose_sendmsg()
1208 rose_kick(sk); in rose_sendmsg()
1217 struct sock *sk = sock->sk; in rose_recvmsg() local
1218 struct rose_sock *rose = rose_sk(sk); in rose_recvmsg()
1228 if (sk->sk_state != TCP_ESTABLISHED) in rose_recvmsg()
1232 if ((skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &er)) == NULL) in rose_recvmsg()
1270 skb_free_datagram(sk, skb); in rose_recvmsg()
1278 struct sock *sk = sock->sk; in rose_ioctl() local
1279 struct rose_sock *rose = rose_sk(sk); in rose_ioctl()
1286 amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); in rose_ioctl()
1296 if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) in rose_ioctl()
1302 return sock_get_timestamp(sk, (struct timeval __user *) argp); in rose_ioctl()
1305 return sock_get_timestampns(sk, (struct timespec __user *) argp); in rose_ioctl()
1358 rose_write_internal(sk, ROSE_CALL_ACCEPTED); in rose_ioctl()
1359 rose_start_idletimer(sk); in rose_ioctl()