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