|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
23: /*
24: * Copyright (c) 1982, 1986, 1989, 1993
25: * The Regents of the University of California. All rights reserved.
26: *
27: * Redistribution and use in source and binary forms, with or without
28: * modification, are permitted provided that the following conditions
29: * are met:
30: * 1. Redistributions of source code must retain the above copyright
31: * notice, this list of conditions and the following disclaimer.
32: * 2. Redistributions in binary form must reproduce the above copyright
33: * notice, this list of conditions and the following disclaimer in the
34: * documentation and/or other materials provided with the distribution.
35: * 3. All advertising materials mentioning features or use of this software
36: * must display the following acknowledgement:
37: * This product includes software developed by the University of
38: * California, Berkeley and its contributors.
39: * 4. Neither the name of the University nor the names of its contributors
40: * may be used to endorse or promote products derived from this software
41: * without specific prior written permission.
42: *
43: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
44: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
47: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53: * SUCH DAMAGE.
54: *
55: * @(#)kern_xxx.c 8.2 (Berkeley) 11/14/93
56: */
57:
58: #import <cputypes.h>
59:
60: #include <sys/param.h>
61: #include <sys/systm.h>
62: #include <sys/kernel.h>
63: #include <sys/proc.h>
64: #include <sys/reboot.h>
65: #include <sys/vm.h>
66: #include <sys/sysctl.h>
67:
68: #include <sys/mount.h>
69:
70: #if COMPAT_43
71: /* ARGSUSED */
72: int
73: ogethostid(p, uap, retval)
74: struct proc *p;
75: void *uap;
76: register_t *retval;
77: {
78:
79: *retval = hostid;
80: return 0;
81: }
82:
83: struct osethostid_args {
84: long hostid;
85: };
86: /* ARGSUSED */
87: int
88: osethostid(p, uap, retval)
89: struct proc *p;
90: register struct osethostid_args *uap;
91: register_t *retval;
92: {
93: int error;
94:
95: if (error = suser(p->p_ucred, &p->p_acflag))
96: return (error);
97: hostid = uap->hostid;
98: return (0);
99:
100: }
101:
102: struct ogethostname_args {
103: char *hostname;
104: u_int len;
105: };
106: /* ARGSUSED */
107: int
108: ogethostname(p, uap, retval)
109: struct proc *p;
110: register struct ogethostname_args *uap;
111: register_t *retval;
112: {
113: int name;
114:
115: name = KERN_HOSTNAME;
116:
117: return (kern_sysctl(&name, 1, uap->hostname, &uap->len),
118: 0, 0);
119: }
120:
121: struct osethostname_args {
122: char *hostname;
123: u_int len;
124: };
125: /* ARGSUSED */
126: int
127: osethostname(p, uap, retval)
128: struct proc *p;
129: register struct osethostname_args *uap;
130: register_t *retval;
131: {
132: int name;
133: int error;
134:
135: if (error = suser(p->p_ucred, &p->p_acflag))
136: return (error);
137:
138: name = KERN_HOSTNAME;
139: return (kern_sysctl(&name, 1, 0, 0, uap->hostname,
140: uap->len));
141: }
142:
143: struct ogetdomainname_args {
144: char *domainname;
145: int len;
146: };
147: /* ARGSUSED */
148: int
149: ogetdomainname(p, uap, retval)
150: struct proc *p;
151: register struct ogetdomainname_args *uap;
152: register_t *retval;
153: {
154: int name;
155:
156: name = KERN_DOMAINNAME;
157: return (kern_sysctl(&name, 1, uap->domainname,
158: &uap->len, 0, 0));
159: }
160:
161: struct osetdomainname_args {
162: char *domainname;
163: u_int len;
164: };
165: /* ARGSUSED */
166: int
167: osetdomainname(p, uap, retval)
168: struct proc *p;
169: register struct osetdomainname_args *uap;
170: register_t *retval;
171: {
172: int name;
173: int error;
174:
175: if (error = suser(p->p_ucred, &p->p_acflag))
176: return (error);
177: name = KERN_DOMAINNAME;
178: return (kern_sysctl(&name, 1, 0, 0, uap->domainname,
179: uap->len));
180: }
181: #endif /* COMPAT_43 */
182:
183: struct reboot_args {
184: int opt;
185: char *command;
186: };
187:
188: reboot(p, uap, retval)
189: struct proc *p;
190: register struct reboot_args *uap;
191: register_t *retval;
192: {
193: char command[64];
194: int error;
195: int dummy=0;
196:
197: command[0] = '\0';
198:
199: if (error = suser(p->p_cred->pc_ucred, &p->p_acflag))
200: return(error);
201:
202: if (uap->opt & RB_COMMAND)
203: error = copyinstr(uap->command,
204: command, sizeof(command), &dummy);
205: if (!error)
206: boot(RB_BOOT, uap->opt, command);
207: return(error);
208: }
209:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.