X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/eb5f3fea8a65306e424a353951208b11bd3aac22..e0603e88c6092fcbc70ceecc2144c9aaa8aeffaf:/server/tun-unet.c diff --git a/server/tun-unet.c b/server/tun-unet.c index 88ce83d0..19dc5e60 100644 --- a/server/tun-unet.c +++ b/server/tun-unet.c @@ -32,7 +32,7 @@ #ifdef TUN_UNET # include -# include +# include # include #endif @@ -65,7 +65,8 @@ static void t_read(int fd, unsigned mode, void *v) n = read(fd, buf_i, sizeof(buf_i)); if (n < 0) { - a_warn("TUN", "%s", p_ifname(t->p), "read-error", "?ERRNO", A_END); + a_warn("TUN", "%s", p_ifname(t->p), "unet", + "read-error", "?ERRNO", A_END); return; } IF_TRACING(T_TUNNEL, { @@ -88,44 +89,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; - int f; - struct unet_info uni; - - if ((fd = open("/dev/unet", O_RDWR)) < 0) { - a_warn("TUN", "-", "unet", "open-error", "/dev/unet", "?ERRNO", A_END); - goto fail_0; - } - if ((f = ioctl(fd, UNIOCGIFFLAGS)) < 0 || - ioctl(fd, UNIOCSIFFLAGS, f | IFF_POINTOPOINT)) { - a_warn("TUN", "-", "unet", "config-error", "?ERRNO", A_END); - goto fail_1; - } - if (ioctl(t->f.fd, UNIOCGINFO, &uni)) { - a_warn("TUN", "-", "unet", "getinfo-error", "?ERRNO", A_END); - goto fail_1; - } - *ifn = xstrdup(uni.uni_ifname); - return (fd); - -fail_1: - close(fd); -fail_0: - return (-1); -} - /* --- @t_create@ --- * * * Arguments: @peer *p@ = pointer to peer block @@ -166,7 +129,7 @@ static void t_inject(tunnel *t, buf *b) trace(T_TUNNEL, "tun-unet: inject decrypted packet"); trace_block(T_PACKET, "tun-unet: packet contents", BBASE(b), BLEN(b)); }) - write(t->f.fd, BBASE(b), BLEN(b)); + IGNORE(write(t->f.fd, BBASE(b), BLEN(b))); } /* --- @t_destroy@ --- * @@ -183,8 +146,8 @@ static void t_destroy(tunnel *t) const tunnel_ops tun_unet = { "unet", + TUNF_PRIVOPEN, t_init, - t_open, t_create, 0, t_inject,