af_x25.c (25aa4efe4feb4150fe613169795df505c5018f2b) af_x25.c (90c27297a9bfb8ea11c0e3f73ad90c4c66e8501e)
1/*
2 * X.25 Packet Layer release 002
3 *
4 * This is ALPHA test software. This code may break your machine,
5 * randomly fail to work with new releases, misbehave and/or generally
6 * screw up. It might even work.
7 *
8 * This code REQUIRES 2.1.15 or higher

--- 674 unchanged lines hidden (view full) ---

683}
684
685static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
686{
687 struct sock *sk = sock->sk;
688 struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr;
689 int len, i, rc = 0;
690
1/*
2 * X.25 Packet Layer release 002
3 *
4 * This is ALPHA test software. This code may break your machine,
5 * randomly fail to work with new releases, misbehave and/or generally
6 * screw up. It might even work.
7 *
8 * This code REQUIRES 2.1.15 or higher

--- 674 unchanged lines hidden (view full) ---

683}
684
685static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
686{
687 struct sock *sk = sock->sk;
688 struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr;
689 int len, i, rc = 0;
690
691 lock_kernel();
692 if (!sock_flag(sk, SOCK_ZAPPED) ||
693 addr_len != sizeof(struct sockaddr_x25) ||
694 addr->sx25_family != AF_X25) {
695 rc = -EINVAL;
696 goto out;
697 }
698
699 len = strlen(addr->sx25_addr.x25_addr);
700 for (i = 0; i < len; i++) {
701 if (!isdigit(addr->sx25_addr.x25_addr[i])) {
702 rc = -EINVAL;
703 goto out;
704 }
705 }
706
691 if (!sock_flag(sk, SOCK_ZAPPED) ||
692 addr_len != sizeof(struct sockaddr_x25) ||
693 addr->sx25_family != AF_X25) {
694 rc = -EINVAL;
695 goto out;
696 }
697
698 len = strlen(addr->sx25_addr.x25_addr);
699 for (i = 0; i < len; i++) {
700 if (!isdigit(addr->sx25_addr.x25_addr[i])) {
701 rc = -EINVAL;
702 goto out;
703 }
704 }
705
706 lock_sock(sk);
707 x25_sk(sk)->source_addr = addr->sx25_addr;
708 x25_insert_socket(sk);
709 sock_reset_flag(sk, SOCK_ZAPPED);
707 x25_sk(sk)->source_addr = addr->sx25_addr;
708 x25_insert_socket(sk);
709 sock_reset_flag(sk, SOCK_ZAPPED);
710 release_sock(sk);
710 SOCK_DEBUG(sk, "x25_bind: socket is bound\n");
711out:
711 SOCK_DEBUG(sk, "x25_bind: socket is bound\n");
712out:
712 unlock_kernel();
713 return rc;
714}
715
716static int x25_wait_for_connection_establishment(struct sock *sk)
717{
718 DECLARE_WAITQUEUE(wait, current);
719 int rc;
720

--- 1125 unchanged lines hidden ---
713 return rc;
714}
715
716static int x25_wait_for_connection_establishment(struct sock *sk)
717{
718 DECLARE_WAITQUEUE(wait, current);
719 int rc;
720

--- 1125 unchanged lines hidden ---