Lines Matching +full:extended +full:- +full:wait
1 // SPDX-License-Identifier: GPL-2.0-or-later
15 * 2000-03-11 Henner Eisen MSG_EOR handling more POSIX compliant.
16 * 2000-03-22 Daniela Squassoni Allowed disabling/enabling of
19 * 2000-08-27 Arnaldo C. Melo s/suser/capable/ + micro cleanups
20 * 2000-09-04 Henner Eisen Set sock->state in x25_accept().
22 * 2000-10-02 Henner Eisen Made x25_kick() single threaded per socket.
23 * 2000-10-27 Henner Eisen MSG_DONTWAIT for fragment allocation.
24 * 2000-11-14 Henner Eisen Closing datalink from NETDEV_GOING_DOWN
25 * 2002-10-06 Arnaldo C. Melo Get rid of cli/sti, move proc stuff to
27 * 2005-04-02 Shaun Pereira Selective sub address matching
29 * 2005-04-15 Shaun Pereira Fast select with no restriction on
76 char device[200-sizeof(compat_ulong_t)];
78 compat_uint_t extended; member
97 len = *skb->data; in x25_parse_address_block()
103 rc = -1; in x25_parse_address_block()
107 return x25_addr_ntoa(skb->data, called_addr, calling_addr); in x25_parse_address_block()
110 *called_addr->x25_addr = 0; in x25_parse_address_block()
111 *calling_addr->x25_addr = 0; in x25_parse_address_block()
127 called = called_addr->x25_addr; in x25_addr_ntoa()
128 calling = calling_addr->x25_addr; in x25_addr_ntoa()
161 called = called_addr->x25_addr; in x25_addr_aton()
162 calling = calling_addr->x25_addr; in x25_addr_aton()
172 *p |= (*called++ - '0') << 0; in x25_addr_aton()
176 *p |= (*called++ - '0') << 4; in x25_addr_aton()
180 *p |= (*calling++ - '0') << 0; in x25_addr_aton()
184 *p |= (*calling++ - '0') << 4; in x25_addr_aton()
214 if (dev->type == ARPHRD_X25) { in x25_device_event()
274 if ((!strcmp(addr->x25_addr, in x25_find_listener()
275 x25_sk(s)->source_addr.x25_addr) || in x25_find_listener()
276 !strcmp(x25_sk(s)->source_addr.x25_addr, in x25_find_listener()
278 s->sk_state == TCP_LISTEN) { in x25_find_listener()
283 if (x25_sk(s)->cudmatchlength > 0 && in x25_find_listener()
284 skb->len >= x25_sk(s)->cudmatchlength) { in x25_find_listener()
285 if((memcmp(x25_sk(s)->calluserdata.cuddata, in x25_find_listener()
286 skb->data, in x25_find_listener()
287 x25_sk(s)->cudmatchlength)) == 0) { in x25_find_listener()
313 if (x25_sk(s)->lci == lci && x25_sk(s)->neighbour == nb) { in __x25_find_socket()
371 * will touch it and we are (fairly 8-) ) safe.
384 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in __x25_destroy_socket()
385 if (skb->sk != sk) { /* A pending connection */ in __x25_destroy_socket()
389 skb->sk->sk_state = TCP_LISTEN; in __x25_destroy_socket()
390 sock_set_flag(skb->sk, SOCK_DEAD); in __x25_destroy_socket()
391 x25_start_heartbeat(skb->sk); in __x25_destroy_socket()
392 x25_sk(skb->sk)->state = X25_STATE_0; in __x25_destroy_socket()
400 sk->sk_timer.expires = jiffies + 10 * HZ; in __x25_destroy_socket()
401 sk->sk_timer.function = x25_destroy_timer; in __x25_destroy_socket()
402 add_timer(&sk->sk_timer); in __x25_destroy_socket()
427 struct sock *sk = sock->sk; in x25_setsockopt()
428 int rc = -ENOPROTOOPT; in x25_setsockopt()
433 rc = -EINVAL; in x25_setsockopt()
437 rc = -EFAULT; in x25_setsockopt()
442 set_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_setsockopt()
444 clear_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_setsockopt()
453 struct sock *sk = sock->sk; in x25_getsockopt()
454 int val, len, rc = -ENOPROTOOPT; in x25_getsockopt()
459 rc = -EFAULT; in x25_getsockopt()
463 rc = -EINVAL; in x25_getsockopt()
469 rc = -EFAULT; in x25_getsockopt()
473 val = test_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags); in x25_getsockopt()
474 rc = copy_to_user(optval, &val, len) ? -EFAULT : 0; in x25_getsockopt()
481 struct sock *sk = sock->sk; in x25_listen()
482 int rc = -EOPNOTSUPP; in x25_listen()
485 if (sock->state != SS_UNCONNECTED) { in x25_listen()
486 rc = -EINVAL; in x25_listen()
491 if (sk->sk_state != TCP_LISTEN) { in x25_listen()
492 memset(&x25_sk(sk)->dest_addr, 0, X25_ADDR_LEN); in x25_listen()
493 sk->sk_max_ack_backlog = backlog; in x25_listen()
494 sk->sk_state = TCP_LISTEN; in x25_listen()
519 skb_queue_head_init(&x25->ack_queue); in x25_alloc_socket()
520 skb_queue_head_init(&x25->fragment_queue); in x25_alloc_socket()
521 skb_queue_head_init(&x25->interrupt_in_queue); in x25_alloc_socket()
522 skb_queue_head_init(&x25->interrupt_out_queue); in x25_alloc_socket()
532 int rc = -EAFNOSUPPORT; in x25_create()
537 rc = -ESOCKTNOSUPPORT; in x25_create()
538 if (sock->type != SOCK_SEQPACKET) in x25_create()
541 rc = -EINVAL; in x25_create()
545 rc = -ENOMEM; in x25_create()
555 sock->ops = &x25_proto_ops; in x25_create()
556 sk->sk_protocol = protocol; in x25_create()
557 sk->sk_backlog_rcv = x25_backlog_rcv; in x25_create()
559 x25->t21 = sysctl_x25_call_request_timeout; in x25_create()
560 x25->t22 = sysctl_x25_reset_request_timeout; in x25_create()
561 x25->t23 = sysctl_x25_clear_request_timeout; in x25_create()
562 x25->t2 = sysctl_x25_ack_holdback_timeout; in x25_create()
563 x25->state = X25_STATE_0; in x25_create()
564 x25->cudmatchlength = 0; in x25_create()
565 set_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); /* normally no cud */ in x25_create()
568 x25->facilities.winsize_in = X25_DEFAULT_WINDOW_SIZE; in x25_create()
569 x25->facilities.winsize_out = X25_DEFAULT_WINDOW_SIZE; in x25_create()
570 x25->facilities.pacsize_in = X25_DEFAULT_PACKET_SIZE; in x25_create()
571 x25->facilities.pacsize_out = X25_DEFAULT_PACKET_SIZE; in x25_create()
572 x25->facilities.throughput = 0; /* by default don't negotiate in x25_create()
574 x25->facilities.reverse = X25_DEFAULT_REVERSE; in x25_create()
575 x25->dte_facilities.calling_len = 0; in x25_create()
576 x25->dte_facilities.called_len = 0; in x25_create()
577 memset(x25->dte_facilities.called_ae, '\0', in x25_create()
578 sizeof(x25->dte_facilities.called_ae)); in x25_create()
579 memset(x25->dte_facilities.calling_ae, '\0', in x25_create()
580 sizeof(x25->dte_facilities.calling_ae)); in x25_create()
592 if (osk->sk_type != SOCK_SEQPACKET) in x25_make_new()
600 sk->sk_type = osk->sk_type; in x25_make_new()
601 sk->sk_priority = READ_ONCE(osk->sk_priority); in x25_make_new()
602 sk->sk_protocol = osk->sk_protocol; in x25_make_new()
603 sk->sk_rcvbuf = osk->sk_rcvbuf; in x25_make_new()
604 sk->sk_sndbuf = osk->sk_sndbuf; in x25_make_new()
605 sk->sk_state = TCP_ESTABLISHED; in x25_make_new()
606 sk->sk_backlog_rcv = osk->sk_backlog_rcv; in x25_make_new()
610 x25->t21 = ox25->t21; in x25_make_new()
611 x25->t22 = ox25->t22; in x25_make_new()
612 x25->t23 = ox25->t23; in x25_make_new()
613 x25->t2 = ox25->t2; in x25_make_new()
614 x25->flags = ox25->flags; in x25_make_new()
615 x25->facilities = ox25->facilities; in x25_make_new()
616 x25->dte_facilities = ox25->dte_facilities; in x25_make_new()
617 x25->cudmatchlength = ox25->cudmatchlength; in x25_make_new()
619 clear_bit(X25_INTERRUPT_FLAG, &x25->flags); in x25_make_new()
627 struct sock *sk = sock->sk; in x25_release()
637 switch (x25->state) { in x25_release()
651 x25->state = X25_STATE_2; in x25_release()
652 sk->sk_state = TCP_CLOSE; in x25_release()
653 sk->sk_shutdown |= SEND_SHUTDOWN; in x25_release()
654 sk->sk_state_change(sk); in x25_release()
675 struct sock *sk = sock->sk; in x25_bind()
680 addr->sx25_family != AF_X25 || in x25_bind()
681 strnlen(addr->sx25_addr.x25_addr, X25_ADDR_LEN) == X25_ADDR_LEN) { in x25_bind()
682 rc = -EINVAL; in x25_bind()
687 if (strcmp(addr->sx25_addr.x25_addr, null_x25_address.x25_addr)) { in x25_bind()
689 len = strlen(addr->sx25_addr.x25_addr); in x25_bind()
691 if (!isdigit(addr->sx25_addr.x25_addr[i])) { in x25_bind()
692 rc = -EINVAL; in x25_bind()
700 x25_sk(sk)->source_addr = addr->sx25_addr; in x25_bind()
704 rc = -EINVAL; in x25_bind()
714 DECLARE_WAITQUEUE(wait, current); in x25_wait_for_connection_establishment()
717 add_wait_queue_exclusive(sk_sleep(sk), &wait); in x25_wait_for_connection_establishment()
720 rc = -ERESTARTSYS; in x25_wait_for_connection_establishment()
725 sk->sk_socket->state = SS_UNCONNECTED; in x25_wait_for_connection_establishment()
728 rc = -ENOTCONN; in x25_wait_for_connection_establishment()
729 if (sk->sk_state == TCP_CLOSE) { in x25_wait_for_connection_establishment()
730 sk->sk_socket->state = SS_UNCONNECTED; in x25_wait_for_connection_establishment()
734 if (sk->sk_state != TCP_ESTABLISHED) { in x25_wait_for_connection_establishment()
742 remove_wait_queue(sk_sleep(sk), &wait); in x25_wait_for_connection_establishment()
749 struct sock *sk = sock->sk; in x25_connect()
756 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) { in x25_connect()
757 sock->state = SS_CONNECTED; in x25_connect()
761 rc = -ECONNREFUSED; in x25_connect()
762 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) { in x25_connect()
763 sock->state = SS_UNCONNECTED; in x25_connect()
767 rc = -EISCONN; /* No reconnect on a seqpacket socket */ in x25_connect()
768 if (sk->sk_state == TCP_ESTABLISHED) in x25_connect()
771 rc = -EALREADY; /* Do nothing if call is already in progress */ in x25_connect()
772 if (sk->sk_state == TCP_SYN_SENT) in x25_connect()
775 sk->sk_state = TCP_CLOSE; in x25_connect()
776 sock->state = SS_UNCONNECTED; in x25_connect()
778 rc = -EINVAL; in x25_connect()
780 addr->sx25_family != AF_X25 || in x25_connect()
781 strnlen(addr->sx25_addr.x25_addr, X25_ADDR_LEN) == X25_ADDR_LEN) in x25_connect()
784 rc = -ENETUNREACH; in x25_connect()
785 rt = x25_get_route(&addr->sx25_addr); in x25_connect()
789 x25->neighbour = x25_get_neigh(rt->dev); in x25_connect()
790 if (!x25->neighbour) in x25_connect()
793 x25_limit_facilities(&x25->facilities, x25->neighbour); in x25_connect()
795 x25->lci = x25_new_lci(x25->neighbour); in x25_connect()
796 if (!x25->lci) in x25_connect()
799 rc = -EINVAL; in x25_connect()
800 if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */ in x25_connect()
803 if (!strcmp(x25->source_addr.x25_addr, null_x25_address.x25_addr)) in x25_connect()
804 memset(&x25->source_addr, '\0', X25_ADDR_LEN); in x25_connect()
806 x25->dest_addr = addr->sx25_addr; in x25_connect()
809 sock->state = SS_CONNECTING; in x25_connect()
810 sk->sk_state = TCP_SYN_SENT; in x25_connect()
812 x25->state = X25_STATE_1; in x25_connect()
820 rc = -EINPROGRESS; in x25_connect()
821 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) in x25_connect()
828 sock->state = SS_CONNECTED; in x25_connect()
831 if (rc && x25->neighbour) { in x25_connect()
833 x25_neigh_put(x25->neighbour); in x25_connect()
834 x25->neighbour = NULL; in x25_connect()
836 x25->state = X25_STATE_0; in x25_connect()
847 DECLARE_WAITQUEUE(wait, current); in x25_wait_for_data()
850 add_wait_queue_exclusive(sk_sleep(sk), &wait); in x25_wait_for_data()
853 if (sk->sk_shutdown & RCV_SHUTDOWN) in x25_wait_for_data()
855 rc = -ERESTARTSYS; in x25_wait_for_data()
858 rc = -EAGAIN; in x25_wait_for_data()
862 if (skb_queue_empty(&sk->sk_receive_queue)) { in x25_wait_for_data()
870 remove_wait_queue(sk_sleep(sk), &wait); in x25_wait_for_data()
877 struct sock *sk = sock->sk; in x25_accept()
880 int rc = -EINVAL; in x25_accept()
885 rc = -EOPNOTSUPP; in x25_accept()
886 if (sk->sk_type != SOCK_SEQPACKET) in x25_accept()
890 rc = -EINVAL; in x25_accept()
891 if (sk->sk_state != TCP_LISTEN) in x25_accept()
894 rc = x25_wait_for_data(sk, READ_ONCE(sk->sk_rcvtimeo)); in x25_accept()
897 skb = skb_dequeue(&sk->sk_receive_queue); in x25_accept()
898 rc = -EINVAL; in x25_accept()
899 if (!skb->sk) in x25_accept()
901 newsk = skb->sk; in x25_accept()
905 skb->sk = NULL; in x25_accept()
908 newsock->state = SS_CONNECTED; in x25_accept()
920 struct sock *sk = sock->sk; in x25_getname()
925 if (sk->sk_state != TCP_ESTABLISHED) { in x25_getname()
926 rc = -ENOTCONN; in x25_getname()
929 sx25->sx25_addr = x25->dest_addr; in x25_getname()
931 sx25->sx25_addr = x25->source_addr; in x25_getname()
933 sx25->sx25_family = AF_X25; in x25_getname()
976 len = skb->data[0] + 1; in x25_rx_call_request()
984 if (skb->len > X25_MAX_CUD_LEN) in x25_rx_call_request()
991 if (!pskb_may_pull(skb, skb->len)) in x25_rx_call_request()
1027 if (len == -1) in x25_rx_call_request()
1049 skb->sk = make; in x25_rx_call_request()
1050 make->sk_state = TCP_ESTABLISHED; in x25_rx_call_request()
1053 makex25->lci = lci; in x25_rx_call_request()
1054 makex25->dest_addr = dest_addr; in x25_rx_call_request()
1055 makex25->source_addr = source_addr; in x25_rx_call_request()
1057 makex25->neighbour = nb; in x25_rx_call_request()
1058 makex25->facilities = facilities; in x25_rx_call_request()
1059 makex25->dte_facilities= dte_facilities; in x25_rx_call_request()
1060 makex25->vc_facil_mask = x25_sk(sk)->vc_facil_mask; in x25_rx_call_request()
1062 makex25->vc_facil_mask &= ~X25_MASK_REVERSE; in x25_rx_call_request()
1064 makex25->vc_facil_mask &= ~X25_MASK_CALLING_AE; in x25_rx_call_request()
1065 makex25->cudmatchlength = x25_sk(sk)->cudmatchlength; in x25_rx_call_request()
1068 if (test_bit(X25_ACCPT_APPRV_FLAG, &makex25->flags)) { in x25_rx_call_request()
1070 makex25->state = X25_STATE_3; in x25_rx_call_request()
1072 makex25->state = X25_STATE_5; in x25_rx_call_request()
1078 skb_copy_from_linear_data(skb, makex25->calluserdata.cuddata, skb->len); in x25_rx_call_request()
1079 makex25->calluserdata.cudlength = skb->len; in x25_rx_call_request()
1085 skb_queue_head(&sk->sk_receive_queue, skb); in x25_rx_call_request()
1090 sk->sk_data_ready(sk); in x25_rx_call_request()
1105 struct sock *sk = sock->sk; in x25_sendmsg()
1107 DECLARE_SOCKADDR(struct sockaddr_x25 *, usx25, msg->msg_name); in x25_sendmsg()
1111 int noblock = msg->msg_flags & MSG_DONTWAIT; in x25_sendmsg()
1113 int qbit = 0, rc = -EINVAL; in x25_sendmsg()
1116 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_OOB|MSG_EOR|MSG_CMSG_COMPAT)) in x25_sendmsg()
1120 if (!(msg->msg_flags & (MSG_EOR|MSG_OOB))) in x25_sendmsg()
1123 rc = -EADDRNOTAVAIL; in x25_sendmsg()
1127 rc = -EPIPE; in x25_sendmsg()
1128 if (sk->sk_shutdown & SEND_SHUTDOWN) { in x25_sendmsg()
1133 rc = -ENETUNREACH; in x25_sendmsg()
1134 if (!x25->neighbour) in x25_sendmsg()
1138 rc = -EINVAL; in x25_sendmsg()
1139 if (msg->msg_namelen < sizeof(sx25)) in x25_sendmsg()
1142 rc = -EISCONN; in x25_sendmsg()
1143 if (strcmp(x25->dest_addr.x25_addr, sx25.sx25_addr.x25_addr)) in x25_sendmsg()
1145 rc = -EINVAL; in x25_sendmsg()
1150 * FIXME 1003.1g - if the socket is like this because in x25_sendmsg()
1154 rc = -ENOTCONN; in x25_sendmsg()
1155 if (sk->sk_state != TCP_ESTABLISHED) in x25_sendmsg()
1159 sx25.sx25_addr = x25->dest_addr; in x25_sendmsg()
1164 rc = -EMSGSIZE; in x25_sendmsg()
1173 if ((msg->msg_flags & MSG_OOB) && len > 32) in x25_sendmsg()
1183 X25_SKB_CB(skb)->flags = msg->msg_flags; in x25_sendmsg()
1203 if (test_bit(X25_Q_BIT_FLAG, &x25->flags)) { in x25_sendmsg()
1207 qbit = skb->data[0]; in x25_sendmsg()
1216 if (msg->msg_flags & MSG_OOB) { in x25_sendmsg()
1217 if (x25->neighbour->extended) { in x25_sendmsg()
1219 *asmptr++ = ((x25->lci >> 8) & 0x0F) | X25_GFI_EXTSEQ; in x25_sendmsg()
1220 *asmptr++ = (x25->lci >> 0) & 0xFF; in x25_sendmsg()
1224 *asmptr++ = ((x25->lci >> 8) & 0x0F) | X25_GFI_STDSEQ; in x25_sendmsg()
1225 *asmptr++ = (x25->lci >> 0) & 0xFF; in x25_sendmsg()
1229 if (x25->neighbour->extended) { in x25_sendmsg()
1230 /* Build an Extended X.25 header */ in x25_sendmsg()
1232 *asmptr++ = ((x25->lci >> 8) & 0x0F) | X25_GFI_EXTSEQ; in x25_sendmsg()
1233 *asmptr++ = (x25->lci >> 0) & 0xFF; in x25_sendmsg()
1239 *asmptr++ = ((x25->lci >> 8) & 0x0F) | X25_GFI_STDSEQ; in x25_sendmsg()
1240 *asmptr++ = (x25->lci >> 0) & 0xFF; in x25_sendmsg()
1245 skb->data[0] |= X25_Q_BIT; in x25_sendmsg()
1251 rc = -ENOTCONN; in x25_sendmsg()
1252 if (sk->sk_state != TCP_ESTABLISHED) in x25_sendmsg()
1255 if (msg->msg_flags & MSG_OOB) in x25_sendmsg()
1256 skb_queue_tail(&x25->interrupt_out_queue, skb); in x25_sendmsg()
1262 else if (test_bit(X25_Q_BIT_FLAG, &x25->flags)) in x25_sendmsg()
1280 struct sock *sk = sock->sk; in x25_recvmsg()
1282 DECLARE_SOCKADDR(struct sockaddr_x25 *, sx25, msg->msg_name); in x25_recvmsg()
1287 int rc = -ENOTCONN; in x25_recvmsg()
1291 if (x25->neighbour == NULL) in x25_recvmsg()
1294 header_len = x25->neighbour->extended ? in x25_recvmsg()
1301 if (sk->sk_state != TCP_ESTABLISHED) in x25_recvmsg()
1305 rc = -EINVAL; in x25_recvmsg()
1307 !skb_peek(&x25->interrupt_in_queue)) in x25_recvmsg()
1310 skb = skb_dequeue(&x25->interrupt_in_queue); in x25_recvmsg()
1320 if (test_bit(X25_Q_BIT_FLAG, &x25->flags)) { in x25_recvmsg()
1325 msg->msg_flags |= MSG_OOB; in x25_recvmsg()
1337 qbit = (skb->data[0] & X25_Q_BIT) == X25_Q_BIT; in x25_recvmsg()
1341 if (test_bit(X25_Q_BIT_FLAG, &x25->flags)) { in x25_recvmsg()
1348 copied = skb->len; in x25_recvmsg()
1352 msg->msg_flags |= MSG_TRUNC; in x25_recvmsg()
1356 msg->msg_flags |= MSG_EOR; in x25_recvmsg()
1363 sx25->sx25_family = AF_X25; in x25_recvmsg()
1364 sx25->sx25_addr = x25->dest_addr; in x25_recvmsg()
1365 msg->msg_namelen = sizeof(*sx25); in x25_recvmsg()
1380 struct sock *sk = sock->sk; in x25_ioctl()
1389 amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); in x25_ioctl()
1404 if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) in x25_ioctl()
1405 amount = skb->len; in x25_ioctl()
1421 rc = -EINVAL; in x25_ioctl()
1425 rc = -EPERM; in x25_ioctl()
1434 rc = -EPERM; in x25_ioctl()
1441 rc = copy_to_user(argp, &x25->facilities, in x25_ioctl()
1442 sizeof(x25->facilities)) in x25_ioctl()
1443 ? -EFAULT : 0; in x25_ioctl()
1450 rc = -EFAULT; in x25_ioctl()
1453 rc = -EINVAL; in x25_ioctl()
1455 if (sk->sk_state != TCP_LISTEN && in x25_ioctl()
1456 sk->sk_state != TCP_CLOSE) in x25_ioctl()
1484 x25->facilities = facilities; in x25_ioctl()
1493 rc = copy_to_user(argp, &x25->dte_facilities, in x25_ioctl()
1494 sizeof(x25->dte_facilities)); in x25_ioctl()
1497 rc = -EFAULT; in x25_ioctl()
1503 rc = -EFAULT; in x25_ioctl()
1506 rc = -EINVAL; in x25_ioctl()
1508 if (sk->sk_state != TCP_LISTEN && in x25_ioctl()
1509 sk->sk_state != TCP_CLOSE) in x25_ioctl()
1515 x25->dte_facilities = dtefacs; in x25_ioctl()
1524 rc = copy_to_user(argp, &x25->calluserdata, in x25_ioctl()
1525 sizeof(x25->calluserdata)) in x25_ioctl()
1526 ? -EFAULT : 0; in x25_ioctl()
1534 rc = -EFAULT; in x25_ioctl()
1537 rc = -EINVAL; in x25_ioctl()
1541 x25->calluserdata = calluserdata; in x25_ioctl()
1549 rc = copy_to_user(argp, &x25->causediag, sizeof(x25->causediag)) in x25_ioctl()
1550 ? -EFAULT : 0; in x25_ioctl()
1557 rc = -EFAULT; in x25_ioctl()
1561 x25->causediag = causediag; in x25_ioctl()
1570 rc = -EINVAL; in x25_ioctl()
1572 if(sk->sk_state != TCP_CLOSE) in x25_ioctl()
1574 rc = -EFAULT; in x25_ioctl()
1578 rc = -EINVAL; in x25_ioctl()
1581 x25->cudmatchlength = sub_addr.cudmatchlength; in x25_ioctl()
1589 rc = -EINVAL; in x25_ioctl()
1591 if (sk->sk_state == TCP_CLOSE) { in x25_ioctl()
1592 clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); in x25_ioctl()
1600 rc = -EINVAL; in x25_ioctl()
1602 if (sk->sk_state != TCP_ESTABLISHED) in x25_ioctl()
1605 if (test_bit(X25_ACCPT_APPRV_FLAG, &x25->flags)) in x25_ioctl()
1608 x25->state = X25_STATE_3; in x25_ioctl()
1616 rc = -ENOIOCTLCMD; in x25_ioctl()
1636 int rc = -EINVAL; in compat_x25_subscr_ioctl()
1638 rc = -EFAULT; in compat_x25_subscr_ioctl()
1642 rc = -EINVAL; in compat_x25_subscr_ioctl()
1655 x25_subscr.extended = nb->extended; in compat_x25_subscr_ioctl()
1656 x25_subscr.global_facil_mask = nb->global_facil_mask; in compat_x25_subscr_ioctl()
1659 sizeof(*x25_subscr32)) ? -EFAULT : 0; in compat_x25_subscr_ioctl()
1661 rc = -EINVAL; in compat_x25_subscr_ioctl()
1662 if (x25_subscr.extended == 0 || x25_subscr.extended == 1) { in compat_x25_subscr_ioctl()
1665 nb->extended = x25_subscr.extended; in compat_x25_subscr_ioctl()
1666 nb->global_facil_mask = x25_subscr.global_facil_mask; in compat_x25_subscr_ioctl()
1682 int rc = -ENOIOCTLCMD; in compat_x25_ioctl()
1699 rc = -EINVAL; in compat_x25_ioctl()
1703 rc = -EPERM; in compat_x25_ioctl()
1712 rc = -EPERM; in compat_x25_ioctl()
1731 rc = -ENOIOCTLCMD; in compat_x25_ioctl()
1778 if (x25_sk(s)->neighbour == nb) { in x25_kill_by_neigh()
1789 x25_clear_forward_by_dev(nb->dev); in x25_kill_by_neigh()