X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/eb5f3fea8a65306e424a353951208b11bd3aac22..e99aedcf9373b3305c32e510c086bf3357b4736a:/server/tun-bsd.c diff --git a/server/tun-bsd.c b/server/tun-bsd.c index 200b5d93..bfa528b2 100644 --- a/server/tun-bsd.c +++ b/server/tun-bsd.c @@ -82,43 +82,6 @@ static void t_read(int fd, unsigned mode, void *v) static void t_init(void) { return; } -/* --- @t_open@ --- * - * - * Arguments: @char **ifn@ = where to put the interface name - * - * Returns: A file descriptor, or @-1@ on failure. - * - * Use: Opens a tunnel device. This will run with root privileges - * even if the rest of the server has dropped them. - */ - -static int t_open(char **ifn) -{ - int fd; - unsigned n; - char buf[16]; - - n = 0; - for (;;) { - sprintf(buf, "/dev/tun%u", n); - if ((fd = open(buf, O_RDWR)) >= 0) - break; - switch (errno) { - case EBUSY: - T( trace(T_TUNNEL, "tunnel device %u busy: skipping", n); ) - break; - case ENOENT: - a_warn("TUN", "-", "bsd", "no-tunnel-devices", A_END); - return (-1); - default: - a_warn("TUN", "-", "open-error", "%s", buf, "?ERRNO", A_END); - break; - } - n++; - } - return (fd); -} - /* --- @t_create@ --- * * * Arguments: @peer *p@ = pointer to peer block @@ -176,8 +139,8 @@ static void t_destroy(tunnel *t) const tunnel_ops tun_bsd = { "bsd", + TUNF_PRIVOPEN, t_init, - t_open, t_create, 0, t_inject,