[BACK]Return to ibcs2_socksys.c CVS log [TXT][DIR] Up to [local] / sys / compat / ibcs2

Annotation of sys/compat/ibcs2/ibcs2_socksys.c, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: ibcs2_socksys.c,v 1.7 2003/01/30 03:29:49 millert Exp $       */
                      2: /*     $NetBSD: ibcs2_socksys.c,v 1.7 1996/10/13 00:46:51 christos Exp $       */
                      3:
                      4: /*
                      5:  * Copyright (c) 1994, 1995 Scott Bartram
                      6:  * Copyright (c) 1994 Arne H Juul
                      7:  * All rights reserved.
                      8:  *
                      9:  * Redistribution and use in source and binary forms, with or without
                     10:  * modification, are permitted provided that the following conditions
                     11:  * are met:
                     12:  * 1. Redistributions of source code must retain the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer.
                     14:  * 2. The name of the author may not be used to endorse or promote products
                     15:  *    derived from this software without specific prior written permission
                     16:  *
                     17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     18:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     19:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     20:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     21:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     22:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     23:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     24:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     25:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     26:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     27:  */
                     28:
                     29: #include <sys/param.h>
                     30: #include <sys/systm.h>
                     31: #include <sys/proc.h>
                     32: #include <sys/file.h>
                     33: #include <sys/filedesc.h>
                     34: #include <sys/ioctl.h>
                     35: #include <sys/termios.h>
                     36: #include <sys/tty.h>
                     37: #include <sys/socket.h>
                     38: #include <sys/mount.h>
                     39: #include <net/if.h>
                     40:
                     41: #include <sys/syscallargs.h>
                     42:
                     43: #include <compat/ibcs2/ibcs2_socksys.h>
                     44: #include <compat/ibcs2/ibcs2_util.h>
                     45:
                     46: /*
                     47:  * iBCS2 socksys calls.
                     48:  */
                     49:
                     50: struct ibcs2_socksys_args {
                     51:        int     fd;
                     52:        int     magic;
                     53:        caddr_t argsp;
                     54: };
                     55:
                     56: int
                     57: ibcs2_socksys(p, v, retval)
                     58:        register struct proc *p;
                     59:        void *v;
                     60:        register_t *retval;
                     61: {
                     62:        register struct ibcs2_socksys_args *uap = v;
                     63:        int error;
                     64:        int realargs[7]; /* 1 for command, 6 for recvfrom */
                     65:
                     66:        /*
                     67:         * SOCKET should only be legal on /dev/socksys.
                     68:         * GETIPDOMAINNAME should only be legal on /dev/socksys ?
                     69:         * The others are (and should be) only legal on sockets.
                     70:         */
                     71:
                     72:        error = copyin(uap->argsp, (caddr_t)realargs, sizeof(realargs));
                     73:        if (error)
                     74:                return error;
                     75:        DPRINTF(("ibcs2_socksys: %08x %08x %08x %08x %08x %08x %08x\n",
                     76:               realargs[0], realargs[1], realargs[2], realargs[3],
                     77:               realargs[4], realargs[5], realargs[6]));
                     78:        switch (realargs[0]) {
                     79:        case SOCKSYS_ACCEPT:
                     80:                return sys_accept(p, realargs + 1, retval);
                     81:        case SOCKSYS_BIND:
                     82:                return sys_bind(p, realargs + 1, retval);
                     83:        case SOCKSYS_CONNECT:
                     84:                return sys_connect(p, realargs + 1, retval);
                     85:        case SOCKSYS_GETPEERNAME:
                     86:                return sys_getpeername(p, realargs + 1, retval);
                     87:        case SOCKSYS_GETSOCKNAME:
                     88:                return sys_getsockname(p, realargs + 1, retval);
                     89:        case SOCKSYS_GETSOCKOPT:
                     90:                return sys_getsockopt(p, realargs + 1, retval);
                     91:        case SOCKSYS_LISTEN:
                     92:                return sys_listen(p, realargs + 1, retval);
                     93:        case SOCKSYS_RECV:
                     94:                realargs[5] = realargs[6] = 0;
                     95:                /* FALLTHROUGH */
                     96:        case SOCKSYS_RECVFROM:
                     97:                return sys_recvfrom(p, realargs + 1, retval);
                     98:        case SOCKSYS_SEND:
                     99:                realargs[5] = realargs[6] = 0;
                    100:                /* FALLTHROUGH */
                    101:        case SOCKSYS_SENDTO:
                    102:                return sys_sendto(p, realargs + 1, retval);
                    103:        case SOCKSYS_SETSOCKOPT:
                    104:                return sys_setsockopt(p, realargs + 1, retval);
                    105:        case SOCKSYS_SHUTDOWN:
                    106:                return sys_shutdown(p, realargs + 1, retval);
                    107:        case SOCKSYS_SOCKET:
                    108:                return sys_socket(p, realargs + 1, retval);
                    109:        case SOCKSYS_SELECT:
                    110:                return sys_select(p, realargs + 1, retval);
                    111:        case SOCKSYS_GETIPDOMAIN:
                    112:                return compat_09_sys_getdomainname(p, realargs + 1, retval);
                    113:        case SOCKSYS_SETIPDOMAIN:
                    114:                return compat_09_sys_setdomainname(p, realargs + 1, retval);
                    115:        case SOCKSYS_ADJTIME:
                    116:                return sys_adjtime(p, realargs + 1, retval);
                    117:        case SOCKSYS_SETREUID:
                    118:                return sys_setreuid(p, realargs + 1, retval);
                    119:        case SOCKSYS_SETREGID:
                    120:                return sys_setregid(p, realargs + 1, retval);
                    121:        case SOCKSYS_GETTIME:
                    122:                return sys_gettimeofday(p, realargs + 1, retval);
                    123:        case SOCKSYS_SETTIME:
                    124:                return sys_settimeofday(p, realargs + 1, retval);
                    125:        case SOCKSYS_GETITIMER:
                    126:                return sys_getitimer(p, realargs + 1, retval);
                    127:        case SOCKSYS_SETITIMER:
                    128:                return sys_setitimer(p, realargs + 1, retval);
                    129:
                    130:        default:
                    131:                printf("socksys unknown %08x %08x %08x %08x %08x %08x %08x\n",
                    132:                        realargs[0], realargs[1], realargs[2], realargs[3],
                    133:                        realargs[4], realargs[5], realargs[6]);
                    134:                return EINVAL;
                    135:        }
                    136:        /* NOTREACHED */
                    137: }

CVSweb