Annotation of sys/compat/ibcs2/ibcs2_socksys.c, Revision 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