Lines Matching refs:sk

200 static void x25_remove_socket(struct sock *sk)  in x25_remove_socket()  argument
203 sk_del_node_init(sk); in x25_remove_socket()
265 static void x25_insert_socket(struct sock *sk) in x25_insert_socket() argument
268 sk_add_node(sk, &x25_list); in x25_insert_socket()
353 struct sock *sk; in x25_new_lci() local
357 while ((sk = __x25_find_socket(lci, nb)) != NULL) { in x25_new_lci()
358 sock_put(sk); in x25_new_lci()
389 static void __x25_destroy_socket(struct sock *sk) in __x25_destroy_socket() argument
393 x25_stop_heartbeat(sk); in __x25_destroy_socket()
394 x25_stop_timer(sk); in __x25_destroy_socket()
396 x25_remove_socket(sk); in __x25_destroy_socket()
397 x25_clear_queues(sk); /* Flush the queues */ in __x25_destroy_socket()
399 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in __x25_destroy_socket()
400 if (skb->sk != sk) { /* A pending connection */ in __x25_destroy_socket()
404 skb->sk->sk_state = TCP_LISTEN; in __x25_destroy_socket()
405 sock_set_flag(skb->sk, SOCK_DEAD); in __x25_destroy_socket()
406 x25_start_heartbeat(skb->sk); in __x25_destroy_socket()
407 x25_sk(skb->sk)->state = X25_STATE_0; in __x25_destroy_socket()
413 if (sk_has_allocations(sk)) { in __x25_destroy_socket()
415 sk->sk_timer.expires = jiffies + 10 * HZ; in __x25_destroy_socket()
416 sk->sk_timer.function = x25_destroy_timer; in __x25_destroy_socket()
417 sk->sk_timer.data = (unsigned long)sk; in __x25_destroy_socket()
418 add_timer(&sk->sk_timer); in __x25_destroy_socket()
421 __sock_put(sk); in __x25_destroy_socket()
425 void x25_destroy_socket_from_timer(struct sock *sk) in x25_destroy_socket_from_timer() argument
427 sock_hold(sk); in x25_destroy_socket_from_timer()
428 bh_lock_sock(sk); in x25_destroy_socket_from_timer()
429 __x25_destroy_socket(sk); in x25_destroy_socket_from_timer()
430 bh_unlock_sock(sk); in x25_destroy_socket_from_timer()
431 sock_put(sk); in x25_destroy_socket_from_timer()
443 struct sock *sk = sock->sk; in x25_setsockopt() local
458 set_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_setsockopt()
460 clear_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_setsockopt()
469 struct sock *sk = sock->sk; in x25_getsockopt() local
489 val = test_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_getsockopt()
497 struct sock *sk = sock->sk; in x25_listen() local
500 lock_sock(sk); in x25_listen()
501 if (sk->sk_state != TCP_LISTEN) { in x25_listen()
502 memset(&x25_sk(sk)->dest_addr, 0, X25_ADDR_LEN); in x25_listen()
503 sk->sk_max_ack_backlog = backlog; in x25_listen()
504 sk->sk_state = TCP_LISTEN; in x25_listen()
507 release_sock(sk); in x25_listen()
521 struct sock *sk = sk_alloc(net, AF_X25, GFP_ATOMIC, &x25_proto, kern); in x25_alloc_socket() local
523 if (!sk) in x25_alloc_socket()
526 sock_init_data(NULL, sk); in x25_alloc_socket()
528 x25 = x25_sk(sk); in x25_alloc_socket()
534 return sk; in x25_alloc_socket()
540 struct sock *sk; in x25_create() local
556 if ((sk = x25_alloc_socket(net, kern)) == NULL) in x25_create()
559 x25 = x25_sk(sk); in x25_create()
561 sock_init_data(sock, sk); in x25_create()
563 x25_init_timers(sk); in x25_create()
566 sk->sk_protocol = protocol; in x25_create()
567 sk->sk_backlog_rcv = x25_backlog_rcv; in x25_create()
599 struct sock *sk = NULL; in x25_make_new() local
605 if ((sk = x25_alloc_socket(sock_net(osk), 0)) == NULL) in x25_make_new()
608 x25 = x25_sk(sk); in x25_make_new()
610 sk->sk_type = osk->sk_type; in x25_make_new()
611 sk->sk_priority = osk->sk_priority; in x25_make_new()
612 sk->sk_protocol = osk->sk_protocol; in x25_make_new()
613 sk->sk_rcvbuf = osk->sk_rcvbuf; in x25_make_new()
614 sk->sk_sndbuf = osk->sk_sndbuf; in x25_make_new()
615 sk->sk_state = TCP_ESTABLISHED; in x25_make_new()
616 sk->sk_backlog_rcv = osk->sk_backlog_rcv; in x25_make_new()
617 sock_copy_flags(sk, osk); in x25_make_new()
630 x25_init_timers(sk); in x25_make_new()
632 return sk; in x25_make_new()
637 struct sock *sk = sock->sk; in x25_release() local
640 if (!sk) in x25_release()
643 x25 = x25_sk(sk); in x25_release()
645 sock_hold(sk); in x25_release()
646 lock_sock(sk); in x25_release()
651 x25_disconnect(sk, 0, 0, 0); in x25_release()
652 __x25_destroy_socket(sk); in x25_release()
658 x25_clear_queues(sk); in x25_release()
659 x25_write_internal(sk, X25_CLEAR_REQUEST); in x25_release()
660 x25_start_t23timer(sk); in x25_release()
662 sk->sk_state = TCP_CLOSE; in x25_release()
663 sk->sk_shutdown |= SEND_SHUTDOWN; in x25_release()
664 sk->sk_state_change(sk); in x25_release()
665 sock_set_flag(sk, SOCK_DEAD); in x25_release()
666 sock_set_flag(sk, SOCK_DESTROY); in x25_release()
670 sock_orphan(sk); in x25_release()
672 release_sock(sk); in x25_release()
673 sock_put(sk); in x25_release()
679 struct sock *sk = sock->sk; in x25_bind() local
683 if (!sock_flag(sk, SOCK_ZAPPED) || in x25_bind()
698 lock_sock(sk); in x25_bind()
699 x25_sk(sk)->source_addr = addr->sx25_addr; in x25_bind()
700 x25_insert_socket(sk); in x25_bind()
701 sock_reset_flag(sk, SOCK_ZAPPED); in x25_bind()
702 release_sock(sk); in x25_bind()
703 SOCK_DEBUG(sk, "x25_bind: socket is bound\n"); in x25_bind()
708 static int x25_wait_for_connection_establishment(struct sock *sk) in x25_wait_for_connection_establishment() argument
713 add_wait_queue_exclusive(sk_sleep(sk), &wait); in x25_wait_for_connection_establishment()
719 rc = sock_error(sk); in x25_wait_for_connection_establishment()
721 sk->sk_socket->state = SS_UNCONNECTED; in x25_wait_for_connection_establishment()
725 if (sk->sk_state != TCP_ESTABLISHED) { in x25_wait_for_connection_establishment()
726 release_sock(sk); in x25_wait_for_connection_establishment()
728 lock_sock(sk); in x25_wait_for_connection_establishment()
733 remove_wait_queue(sk_sleep(sk), &wait); in x25_wait_for_connection_establishment()
740 struct sock *sk = sock->sk; in x25_connect() local
741 struct x25_sock *x25 = x25_sk(sk); in x25_connect()
746 lock_sock(sk); in x25_connect()
747 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) { in x25_connect()
753 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) { in x25_connect()
759 if (sk->sk_state == TCP_ESTABLISHED) in x25_connect()
762 sk->sk_state = TCP_CLOSE; in x25_connect()
786 if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */ in x25_connect()
796 sk->sk_state = TCP_SYN_SENT; in x25_connect()
800 x25_write_internal(sk, X25_CALL_REQUEST); in x25_connect()
802 x25_start_heartbeat(sk); in x25_connect()
803 x25_start_t21timer(sk); in x25_connect()
807 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) in x25_connect()
810 rc = x25_wait_for_connection_establishment(sk); in x25_connect()
822 release_sock(sk); in x25_connect()
826 static int x25_wait_for_data(struct sock *sk, long timeout) in x25_wait_for_data() argument
831 add_wait_queue_exclusive(sk_sleep(sk), &wait); in x25_wait_for_data()
834 if (sk->sk_shutdown & RCV_SHUTDOWN) in x25_wait_for_data()
843 if (skb_queue_empty(&sk->sk_receive_queue)) { in x25_wait_for_data()
844 release_sock(sk); in x25_wait_for_data()
846 lock_sock(sk); in x25_wait_for_data()
851 remove_wait_queue(sk_sleep(sk), &wait); in x25_wait_for_data()
857 struct sock *sk = sock->sk; in x25_accept() local
862 if (!sk) in x25_accept()
866 if (sk->sk_type != SOCK_SEQPACKET) in x25_accept()
869 lock_sock(sk); in x25_accept()
871 if (sk->sk_state != TCP_LISTEN) in x25_accept()
874 rc = x25_wait_for_data(sk, sk->sk_rcvtimeo); in x25_accept()
877 skb = skb_dequeue(&sk->sk_receive_queue); in x25_accept()
879 if (!skb->sk) in x25_accept()
881 newsk = skb->sk; in x25_accept()
885 skb->sk = NULL; in x25_accept()
887 sk->sk_ack_backlog--; in x25_accept()
891 release_sock(sk); in x25_accept()
900 struct sock *sk = sock->sk; in x25_getname() local
901 struct x25_sock *x25 = x25_sk(sk); in x25_getname()
905 if (sk->sk_state != TCP_ESTABLISHED) { in x25_getname()
923 struct sock *sk; in x25_rx_call_request() local
977 sk = x25_find_listener(&source_addr,skb); in x25_rx_call_request()
980 if (sk != NULL && sk_acceptq_is_full(sk)) { in x25_rx_call_request()
988 if (sk == NULL) { in x25_rx_call_request()
1006 len = x25_negotiate_facilities(skb, sk, &facilities, &dte_facilities); in x25_rx_call_request()
1020 make = x25_make_new(sk); in x25_rx_call_request()
1029 skb->sk = make; in x25_rx_call_request()
1039 makex25->vc_facil_mask = x25_sk(sk)->vc_facil_mask; in x25_rx_call_request()
1044 makex25->cudmatchlength = x25_sk(sk)->cudmatchlength; in x25_rx_call_request()
1058 sk->sk_ack_backlog++; in x25_rx_call_request()
1062 skb_queue_head(&sk->sk_receive_queue, skb); in x25_rx_call_request()
1066 if (!sock_flag(sk, SOCK_DEAD)) in x25_rx_call_request()
1067 sk->sk_data_ready(sk); in x25_rx_call_request()
1069 sock_put(sk); in x25_rx_call_request()
1073 sock_put(sk); in x25_rx_call_request()
1082 struct sock *sk = sock->sk; in x25_sendmsg() local
1083 struct x25_sock *x25 = x25_sk(sk); in x25_sendmsg()
1092 lock_sock(sk); in x25_sendmsg()
1101 if (sock_flag(sk, SOCK_ZAPPED)) in x25_sendmsg()
1105 if (sk->sk_shutdown & SEND_SHUTDOWN) { in x25_sendmsg()
1132 if (sk->sk_state != TCP_ESTABLISHED) in x25_sendmsg()
1145 SOCK_DEBUG(sk, "x25_sendmsg: sendto: Addresses built.\n"); in x25_sendmsg()
1148 SOCK_DEBUG(sk, "x25_sendmsg: sendto: building packet.\n"); in x25_sendmsg()
1155 release_sock(sk); in x25_sendmsg()
1156 skb = sock_alloc_send_skb(sk, size, noblock, &rc); in x25_sendmsg()
1157 lock_sock(sk); in x25_sendmsg()
1167 SOCK_DEBUG(sk, "x25_sendmsg: Copying user data\n"); in x25_sendmsg()
1191 SOCK_DEBUG(sk, "x25_sendmsg: Building X.25 Header.\n"); in x25_sendmsg()
1225 SOCK_DEBUG(sk, "x25_sendmsg: Built header.\n"); in x25_sendmsg()
1226 SOCK_DEBUG(sk, "x25_sendmsg: Transmitting buffer\n"); in x25_sendmsg()
1229 if (sk->sk_state != TCP_ESTABLISHED) in x25_sendmsg()
1235 rc = x25_output(sk, skb); in x25_sendmsg()
1243 x25_kick(sk); in x25_sendmsg()
1246 release_sock(sk); in x25_sendmsg()
1257 struct sock *sk = sock->sk; in x25_recvmsg() local
1258 struct x25_sock *x25 = x25_sk(sk); in x25_recvmsg()
1266 lock_sock(sk); in x25_recvmsg()
1278 if (sk->sk_state != TCP_ESTABLISHED) in x25_recvmsg()
1283 if (sock_flag(sk, SOCK_URGINLINE) || in x25_recvmsg()
1305 release_sock(sk); in x25_recvmsg()
1306 skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, in x25_recvmsg()
1308 lock_sock(sk); in x25_recvmsg()
1346 x25_check_rbuf(sk); in x25_recvmsg()
1349 skb_free_datagram(sk, skb); in x25_recvmsg()
1351 release_sock(sk); in x25_recvmsg()
1358 struct sock *sk = sock->sk; in x25_ioctl() local
1359 struct x25_sock *x25 = x25_sk(sk); in x25_ioctl()
1367 amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); in x25_ioctl()
1381 lock_sock(sk); in x25_ioctl()
1382 if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) in x25_ioctl()
1384 release_sock(sk); in x25_ioctl()
1391 if (sk) in x25_ioctl()
1392 rc = sock_get_timestamp(sk, in x25_ioctl()
1397 if (sk) in x25_ioctl()
1398 rc = sock_get_timestampns(sk, in x25_ioctl()
1430 lock_sock(sk); in x25_ioctl()
1434 release_sock(sk); in x25_ioctl()
1444 lock_sock(sk); in x25_ioctl()
1445 if (sk->sk_state != TCP_LISTEN && in x25_ioctl()
1446 sk->sk_state != TCP_CLOSE) in x25_ioctl()
1477 release_sock(sk); in x25_ioctl()
1482 lock_sock(sk); in x25_ioctl()
1485 release_sock(sk); in x25_ioctl()
1497 lock_sock(sk); in x25_ioctl()
1498 if (sk->sk_state != TCP_LISTEN && in x25_ioctl()
1499 sk->sk_state != TCP_CLOSE) in x25_ioctl()
1512 release_sock(sk); in x25_ioctl()
1517 lock_sock(sk); in x25_ioctl()
1521 release_sock(sk); in x25_ioctl()
1534 lock_sock(sk); in x25_ioctl()
1536 release_sock(sk); in x25_ioctl()
1542 lock_sock(sk); in x25_ioctl()
1545 release_sock(sk); in x25_ioctl()
1554 lock_sock(sk); in x25_ioctl()
1556 release_sock(sk); in x25_ioctl()
1565 lock_sock(sk); in x25_ioctl()
1566 if(sk->sk_state != TCP_CLOSE) in x25_ioctl()
1578 release_sock(sk); in x25_ioctl()
1584 lock_sock(sk); in x25_ioctl()
1585 if (sk->sk_state == TCP_CLOSE) { in x25_ioctl()
1589 release_sock(sk); in x25_ioctl()
1595 lock_sock(sk); in x25_ioctl()
1596 if (sk->sk_state != TCP_ESTABLISHED) in x25_ioctl()
1601 x25_write_internal(sk, X25_CALL_ACCEPTED); in x25_ioctl()
1605 release_sock(sk); in x25_ioctl()
1676 struct sock *sk = sock->sk; in compat_x25_ioctl() local
1687 if (sk) in compat_x25_ioctl()
1688 rc = compat_sock_get_timestamp(sk, in compat_x25_ioctl()
1693 if (sk) in compat_x25_ioctl()
1694 rc = compat_sock_get_timestampns(sk, in compat_x25_ioctl()