root/compat/ibcs2/ibcs2_socksys.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ibcs2_socksys

    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 }

/* [<][>][^][v][top][bottom][index][help] */