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
26 * $FreeBSD: src/usr.sbin/ppp/id.c,v 1.18.2.3 2002/09/01 02:12:27 brian Exp $
27 * $DragonFly: src/usr.sbin/ppp/id.c,v 1.4 2005/11/24 23:42:54 swildner Exp $
30 #include <sys/param.h>
31 #include <sys/socket.h>
34 #include <sys/ioctl.h>
44 #if defined(__DragonFly__) && !defined(NOKLDLOAD)
45 #include <sys/linker.h>
72 if (seteuid(uid
) == -1) {
73 log_Printf(LogERROR
, "ID0setuser: Unable to seteuid!\n");
74 AbortProgram(EX_NOPERM
);
87 if (seteuid(euid
) == -1) {
88 log_Printf(LogERROR
, "ID0set0: Unable to seteuid!\n");
89 AbortProgram(EX_NOPERM
);
94 ID0ioctl(int fd
, unsigned long req
, void *arg
)
99 ret
= ioctl(fd
, req
, arg
);
100 log_Printf(LogID0
, "%d = ioctl(%d, %lu, %p)\n", ret
, fd
, req
, arg
);
106 ID0unlink(const char *name
)
112 log_Printf(LogID0
, "%d = unlink(\"%s\")\n", ret
, name
);
118 ID0socket(int domain
, int type
, int protocol
)
123 ret
= socket(domain
, type
, protocol
);
124 log_Printf(LogID0
, "%d = socket(%d, %d, %d)\n", ret
, domain
, type
, protocol
);
130 ID0fopen(const char *path
, const char *mode
)
135 ret
= fopen(path
, mode
);
136 log_Printf(LogID0
, "%p = fopen(\"%s\", \"%s\")\n", ret
, path
, mode
);
142 ID0open(const char *path
, int flags
, ...)
149 ret
= open(path
, flags
, va_arg(ap
, int));
150 log_Printf(LogID0
, "%d = open(\"%s\", %d)\n", ret
, path
, flags
);
157 ID0write(int fd
, const void *data
, size_t len
)
162 ret
= write(fd
, data
, len
);
163 log_Printf(LogID0
, "%d = write(%d, data, %ld)\n", ret
, fd
, (long)len
);
169 ID0uu_lock(const char *basettyname
)
174 ret
= uu_lock(basettyname
);
175 log_Printf(LogID0
, "%d = uu_lock(\"%s\")\n", ret
, basettyname
);
181 ID0uu_lock_txfr(const char *basettyname
, pid_t newpid
)
186 ret
= uu_lock_txfr(basettyname
, newpid
);
187 log_Printf(LogID0
, "%d = uu_lock_txfr(\"%s\", %ld)\n", ret
, basettyname
,
194 ID0uu_unlock(const char *basettyname
)
199 ret
= uu_unlock(basettyname
);
200 log_Printf(LogID0
, "%d = uu_unlock(\"%s\")\n", ret
, basettyname
);
206 ID0login(struct utmp
*ut
)
209 if (logout(ut
->ut_line
)) {
210 log_Printf(LogID0
, "logout(\"%s\")\n", ut
->ut_line
);
211 logwtmp(ut
->ut_line
, "", "");
212 log_Printf(LogID0
, "logwtmp(\"%s\", \"\", \"\")\n", ut
->ut_line
);
215 log_Printf(LogID0
, "login(\"%s\", \"%.*s\")\n",
216 ut
->ut_line
, (int)(sizeof ut
->ut_name
), ut
->ut_name
);
221 ID0logout(const char *device
, int nologout
)
224 char ut_line
[sizeof ut
.ut_line
+ 1];
226 strncpy(ut_line
, device
, sizeof ut_line
- 1);
227 ut_line
[sizeof ut_line
- 1] = '\0';
230 if (nologout
|| logout(ut_line
)) {
231 log_Printf(LogID0
, "logout(\"%s\")\n", ut_line
);
232 logwtmp(ut_line
, "", "");
233 log_Printf(LogID0
, "logwtmp(\"%s\", \"\", \"\")\n", ut_line
);
235 log_Printf(LogERROR
, "ID0logout: No longer logged in on %s\n", ut_line
);
240 ID0bind_un(int s
, const struct sockaddr_un
*name
)
245 result
= bind(s
, (const struct sockaddr
*)name
, sizeof *name
);
246 log_Printf(LogID0
, "%d = bind(%d, \"%s\", %d)\n",
247 result
, s
, name
->sun_path
, (int)sizeof(*name
));
253 ID0connect_un(int s
, const struct sockaddr_un
*name
)
258 result
= connect(s
, (const struct sockaddr
*)name
, sizeof *name
);
259 log_Printf(LogID0
, "%d = connect(%d, \"%s\", %d)\n",
260 result
, s
, name
->sun_path
, (int)sizeof(*name
));
266 ID0kill(pid_t pid
, int sig
)
271 result
= kill(pid
, sig
);
272 log_Printf(LogID0
, "%d = kill(%ld, %d)\n", result
, (long)pid
, sig
);
277 #if defined(__DragonFly__) && !defined(NOKLDLOAD)
279 ID0kldload(const char *dev
)
284 result
= kldload(dev
);
285 log_Printf(LogID0
, "%d = kldload(\"%s\")\n", result
, dev
);
293 ID0NgMkSockNode(const char *name
, int *cs
, int *ds
)
298 result
= NgMkSockNode(name
, cs
, ds
);
299 log_Printf(LogID0
, "%d = NgMkSockNode(\"%s\", &cs, &ds)\n",
300 result
, name
? name
: "");