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()
232 static void rose_insert_socket(struct sock *sk) in rose_insert_socket() argument
236 sk_add_node(sk, &rose_list); in rose_insert_socket()
331 void rose_destroy_socket(struct sock *sk) in rose_destroy_socket() argument
335 rose_remove_socket(sk); in rose_destroy_socket()
336 rose_stop_heartbeat(sk); in rose_destroy_socket()
337 rose_stop_idletimer(sk); in rose_destroy_socket()
338 rose_stop_timer(sk); in rose_destroy_socket()
340 rose_clear_queues(sk); /* Flush the queues */ in rose_destroy_socket()
342 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in rose_destroy_socket()
343 if (skb->sk != sk) { /* A pending connection */ in rose_destroy_socket()
345 sock_set_flag(skb->sk, SOCK_DEAD); in rose_destroy_socket()
346 rose_start_heartbeat(skb->sk); in rose_destroy_socket()
347 rose_sk(skb->sk)->state = ROSE_STATE_0; in rose_destroy_socket()
353 if (sk_has_allocations(sk)) { in rose_destroy_socket()
355 setup_timer(&sk->sk_timer, rose_destroy_timer, in rose_destroy_socket()
356 (unsigned long)sk); in rose_destroy_socket()
357 sk->sk_timer.expires = jiffies + 10 * HZ; in rose_destroy_socket()
358 add_timer(&sk->sk_timer); in rose_destroy_socket()
360 sock_put(sk); in rose_destroy_socket()
371 struct sock *sk = sock->sk; in rose_setsockopt() local
372 struct rose_sock *rose = rose_sk(sk); in rose_setsockopt()
431 struct sock *sk = sock->sk; in rose_getsockopt() local
432 struct rose_sock *rose = rose_sk(sk); in rose_getsockopt()
488 struct sock *sk = sock->sk; in rose_listen() local
490 if (sk->sk_state != TCP_LISTEN) { in rose_listen()
491 struct rose_sock *rose = rose_sk(sk); in rose_listen()
497 sk->sk_max_ack_backlog = backlog; in rose_listen()
498 sk->sk_state = TCP_LISTEN; in rose_listen()
514 struct sock *sk; in rose_create() local
523 sk = sk_alloc(net, PF_ROSE, GFP_ATOMIC, &rose_proto); in rose_create()
524 if (sk == NULL) in rose_create()
527 rose = rose_sk(sk); in rose_create()
529 sock_init_data(sock, sk); in rose_create()
538 sk->sk_protocol = protocol; in rose_create()
556 struct sock *sk; in rose_make_new() local
562 sk = sk_alloc(sock_net(osk), PF_ROSE, GFP_ATOMIC, &rose_proto); in rose_make_new()
563 if (sk == NULL) in rose_make_new()
566 rose = rose_sk(sk); in rose_make_new()
568 sock_init_data(NULL, sk); in rose_make_new()
576 sk->sk_type = osk->sk_type; in rose_make_new()
577 sk->sk_priority = osk->sk_priority; in rose_make_new()
578 sk->sk_protocol = osk->sk_protocol; in rose_make_new()
579 sk->sk_rcvbuf = osk->sk_rcvbuf; in rose_make_new()
580 sk->sk_sndbuf = osk->sk_sndbuf; in rose_make_new()
581 sk->sk_state = TCP_ESTABLISHED; in rose_make_new()
582 sock_copy_flags(sk, osk); in rose_make_new()
597 return sk; in rose_make_new()
602 struct sock *sk = sock->sk; in rose_release() local
605 if (sk == NULL) return 0; in rose_release()
607 sock_hold(sk); in rose_release()
608 sock_orphan(sk); in rose_release()
609 lock_sock(sk); in rose_release()
610 rose = rose_sk(sk); in rose_release()
614 release_sock(sk); in rose_release()
615 rose_disconnect(sk, 0, -1, -1); in rose_release()
616 lock_sock(sk); in rose_release()
617 rose_destroy_socket(sk); in rose_release()
622 release_sock(sk); in rose_release()
623 rose_disconnect(sk, 0, -1, -1); in rose_release()
624 lock_sock(sk); in rose_release()
625 rose_destroy_socket(sk); in rose_release()
632 rose_clear_queues(sk); in rose_release()
633 rose_stop_idletimer(sk); in rose_release()
634 rose_write_internal(sk, ROSE_CLEAR_REQUEST); in rose_release()
635 rose_start_t3timer(sk); in rose_release()
637 sk->sk_state = TCP_CLOSE; in rose_release()
638 sk->sk_shutdown |= SEND_SHUTDOWN; in rose_release()
639 sk->sk_state_change(sk); in rose_release()
640 sock_set_flag(sk, SOCK_DEAD); in rose_release()
641 sock_set_flag(sk, SOCK_DESTROY); in rose_release()
648 sock->sk = NULL; in rose_release()
649 release_sock(sk); in rose_release()
650 sock_put(sk); in rose_release()
657 struct sock *sk = sock->sk; in rose_bind() local
658 struct rose_sock *rose = rose_sk(sk); in rose_bind()
665 if (!sock_flag(sk, SOCK_ZAPPED)) in rose_bind()
709 rose_insert_socket(sk); in rose_bind()
711 sock_reset_flag(sk, SOCK_ZAPPED); in rose_bind()
718 struct sock *sk = sock->sk; in rose_connect() local
719 struct rose_sock *rose = rose_sk(sk); in rose_connect()
742 lock_sock(sk); in rose_connect()
744 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) { in rose_connect()
750 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) { in rose_connect()
756 if (sk->sk_state == TCP_ESTABLISHED) { in rose_connect()
762 sk->sk_state = TCP_CLOSE; in rose_connect()
778 if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */ in rose_connect()
779 sock_reset_flag(sk, SOCK_ZAPPED); in rose_connect()
797 rose_insert_socket(sk); /* Finish the bind */ in rose_connect()
816 sk->sk_state = TCP_SYN_SENT; in rose_connect()
822 rose_write_internal(sk, ROSE_CALL_REQUEST); in rose_connect()
823 rose_start_heartbeat(sk); in rose_connect()
824 rose_start_t1timer(sk); in rose_connect()
827 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) { in rose_connect()
836 if (sk->sk_state == TCP_SYN_SENT) { in rose_connect()
840 prepare_to_wait(sk_sleep(sk), &wait, in rose_connect()
842 if (sk->sk_state != TCP_SYN_SENT) in rose_connect()
845 release_sock(sk); in rose_connect()
847 lock_sock(sk); in rose_connect()
853 finish_wait(sk_sleep(sk), &wait); in rose_connect()
859 if (sk->sk_state != TCP_ESTABLISHED) { in rose_connect()
861 err = sock_error(sk); /* Always set at this point */ in rose_connect()
868 release_sock(sk); in rose_connect()
878 struct sock *sk; in rose_accept() local
881 if ((sk = sock->sk) == NULL) in rose_accept()
884 lock_sock(sk); in rose_accept()
885 if (sk->sk_type != SOCK_SEQPACKET) { in rose_accept()
890 if (sk->sk_state != TCP_LISTEN) { in rose_accept()
900 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in rose_accept()
902 skb = skb_dequeue(&sk->sk_receive_queue); in rose_accept()
911 release_sock(sk); in rose_accept()
913 lock_sock(sk); in rose_accept()
919 finish_wait(sk_sleep(sk), &wait); in rose_accept()
923 newsk = skb->sk; in rose_accept()
927 skb->sk = NULL; in rose_accept()
929 sk->sk_ack_backlog--; in rose_accept()
932 release_sock(sk); in rose_accept()
941 struct sock *sk = sock->sk; in rose_getname() local
942 struct rose_sock *rose = rose_sk(sk); in rose_getname()
947 if (sk->sk_state != TCP_ESTABLISHED) in rose_getname()
970 struct sock *sk; in rose_rx_call_request() local
976 skb->sk = NULL; /* Initially we don't know who it's for */ in rose_rx_call_request()
990 sk = rose_find_listener(&facilities.source_addr, &facilities.source_call); in rose_rx_call_request()
995 if (sk == NULL || sk_acceptq_is_full(sk) || in rose_rx_call_request()
996 (make = rose_make_new(sk)) == NULL) { in rose_rx_call_request()
1001 skb->sk = make; in rose_rx_call_request()
1022 if (rose_sk(sk)->defer) { in rose_rx_call_request()
1035 sk->sk_ack_backlog++; in rose_rx_call_request()
1039 skb_queue_head(&sk->sk_receive_queue, skb); in rose_rx_call_request()
1043 if (!sock_flag(sk, SOCK_DEAD)) in rose_rx_call_request()
1044 sk->sk_data_ready(sk); in rose_rx_call_request()
1051 struct sock *sk = sock->sk; in rose_sendmsg() local
1052 struct rose_sock *rose = rose_sk(sk); in rose_sendmsg()
1063 if (sock_flag(sk, SOCK_ZAPPED)) in rose_sendmsg()
1066 if (sk->sk_shutdown & SEND_SHUTDOWN) { in rose_sendmsg()
1093 if (sk->sk_state != TCP_ESTABLISHED) in rose_sendmsg()
1111 if ((skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)) == NULL) in rose_sendmsg()
1151 if (sk->sk_state != TCP_ESTABLISHED) { in rose_sendmsg()
1171 if ((skbn = sock_alloc_send_skb(sk, frontlen + ROSE_PACLEN, 0, &err)) == NULL) { in rose_sendmsg()
1176 skbn->sk = sk; in rose_sendmsg()
1195 skb_queue_tail(&sk->sk_write_queue, skbn); /* Throw it on the queue */ in rose_sendmsg()
1201 skb_queue_tail(&sk->sk_write_queue, skb); /* Throw it on the queue */ in rose_sendmsg()
1204 skb_queue_tail(&sk->sk_write_queue, skb); /* Shove it onto the queue */ in rose_sendmsg()
1207 rose_kick(sk); in rose_sendmsg()
1216 struct sock *sk = sock->sk; in rose_recvmsg() local
1217 struct rose_sock *rose = rose_sk(sk); in rose_recvmsg()
1227 if (sk->sk_state != TCP_ESTABLISHED) in rose_recvmsg()
1231 if ((skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &er)) == NULL) in rose_recvmsg()
1269 skb_free_datagram(sk, skb); in rose_recvmsg()
1277 struct sock *sk = sock->sk; in rose_ioctl() local
1278 struct rose_sock *rose = rose_sk(sk); in rose_ioctl()
1285 amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); in rose_ioctl()
1295 if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) in rose_ioctl()
1301 return sock_get_timestamp(sk, (struct timeval __user *) argp); in rose_ioctl()
1304 return sock_get_timestampns(sk, (struct timespec __user *) argp); in rose_ioctl()
1357 rose_write_internal(sk, ROSE_CALL_ACCEPTED); in rose_ioctl()
1358 rose_start_idletimer(sk); in rose_ioctl()