2 * Copyright (c) 1997 Brian Somers <brian@Awfulhak.org>
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #include <sys/param.h>
30 #include <sys/socket.h>
33 #include <sys/ioctl.h>
43 #if defined(__FreeBSD__) && !defined(NOKLDLOAD)
44 #include <sys/linker.h>
71 if (seteuid(uid
) == -1) {
72 log_Printf(LogERROR
, "ID0setuser: Unable to seteuid!\n");
73 AbortProgram(EX_NOPERM
);
86 if (seteuid(euid
) == -1) {
87 log_Printf(LogERROR
, "ID0set0: Unable to seteuid!\n");
88 AbortProgram(EX_NOPERM
);
93 ID0ioctl(int fd
, unsigned long req
, void *arg
)
98 ret
= ioctl(fd
, req
, arg
);
99 log_Printf(LogID0
, "%d = ioctl(%d, %lu, %p)\n", ret
, fd
, req
, arg
);
105 ID0unlink(const char *name
)
111 log_Printf(LogID0
, "%d = unlink(\"%s\")\n", ret
, name
);
117 ID0socket(int domain
, int type
, int protocol
)
122 ret
= socket(domain
, type
, protocol
);
123 log_Printf(LogID0
, "%d = socket(%d, %d, %d)\n", ret
, domain
, type
, protocol
);
129 ID0fopen(const char *path
, const char *mode
)
134 ret
= fopen(path
, mode
);
135 log_Printf(LogID0
, "%p = fopen(\"%s\", \"%s\")\n", ret
, path
, mode
);
141 ID0open(const char *path
, int flags
, ...)
148 ret
= open(path
, flags
, va_arg(ap
, int));
149 log_Printf(LogID0
, "%d = open(\"%s\", %d)\n", ret
, path
, flags
);
156 ID0write(int fd
, const void *data
, size_t len
)
161 ret
= write(fd
, data
, len
);
162 log_Printf(LogID0
, "%d = write(%d, data, %ld)\n", ret
, fd
, (long)len
);
168 ID0uu_lock(const char *basettyname
)
173 ret
= uu_lock(basettyname
);
174 log_Printf(LogID0
, "%d = uu_lock(\"%s\")\n", ret
, basettyname
);
180 ID0uu_lock_txfr(const char *basettyname
, pid_t newpid
)
185 ret
= uu_lock_txfr(basettyname
, newpid
);
186 log_Printf(LogID0
, "%d = uu_lock_txfr(\"%s\", %ld)\n", ret
, basettyname
,
193 ID0uu_unlock(const char *basettyname
)
198 ret
= uu_unlock(basettyname
);
199 log_Printf(LogID0
, "%d = uu_unlock(\"%s\")\n", ret
, basettyname
);
205 ID0login(const struct utmpx
*ut
)
209 log_Printf(LogID0
, "pututxline(\"%.*s\", \"%.*s\", \"%.*s\", \"%.*s\")\n",
210 (int)sizeof ut
->ut_id
, ut
->ut_id
,
211 (int)sizeof ut
->ut_user
, ut
->ut_user
,
212 (int)sizeof ut
->ut_line
, ut
->ut_line
,
213 (int)sizeof ut
->ut_host
, ut
->ut_host
);
218 ID0logout(const struct utmpx
*ut
)
222 log_Printf(LogID0
, "pututxline(\"%.*s\")\n",
223 (int)sizeof ut
->ut_id
, ut
->ut_id
);
228 ID0bind_un(int s
, const struct sockaddr_un
*name
)
233 result
= bind(s
, (const struct sockaddr
*)name
, sizeof *name
);
234 log_Printf(LogID0
, "%d = bind(%d, \"%s\", %d)\n",
235 result
, s
, name
->sun_path
, (int)sizeof(*name
));
241 ID0connect_un(int s
, const struct sockaddr_un
*name
)
246 result
= connect(s
, (const struct sockaddr
*)name
, sizeof *name
);
247 log_Printf(LogID0
, "%d = connect(%d, \"%s\", %d)\n",
248 result
, s
, name
->sun_path
, (int)sizeof(*name
));
254 ID0kill(pid_t pid
, int sig
)
259 result
= kill(pid
, sig
);
260 log_Printf(LogID0
, "%d = kill(%ld, %d)\n", result
, (long)pid
, sig
);
265 #if defined(__FreeBSD__) && !defined(NOKLDLOAD)
267 ID0kldload(const char *dev
)
272 result
= kldload(dev
);
273 log_Printf(LogID0
, "%d = kldload(\"%s\")\n", result
, dev
);
281 ID0NgMkSockNode(const char *name
, int *cs
, int *ds
)
286 result
= NgMkSockNode(name
, cs
, ds
);
287 log_Printf(LogID0
, "%d = NgMkSockNode(\"%s\", &cs, &ds)\n",
288 result
, name
? name
: "");