Subject: Re: OpenVPN + tun(4) problem
To: None <>
From: Rui Paulo <>
List: current-users
Date: 03/12/2006 10:48:22
Bernd Ernesti <> writes:

> So, maybe we need to add something to openvpn too, whatever NEW_TUN in
> vpnc does.

Right, in tun.c:
#elif defined(TARGET_NETBSD)

 * NetBSD does not support IPv6 on tun out of the box,
 * but there exists a patch. When this patch is applied,
 * only two things are left to openvpn:
 * 1. Activate multicasting (this has already been done
 *    before by the kernel, but we make sure that nobody
 *    has deactivated multicasting inbetween.
 * 2. Deactivate "link layer mode" (otherwise NetBSD 
 *    prepends the address family to the packet, and we
 *    would run into the same trouble as with OpenBSD.

open_tun (const char *dev, const char *dev_type, const char *dev_node, bool ipv6
, struct tuntap *tt)
    open_tun_generic (dev, dev_type, dev_node, ipv6, true, true, tt);
    if (tt->fd >= 0)
        ioctl (tt->fd, TUNSIFMODE, &i);  /* multicast on */
        i = 0;
        ioctl (tt->fd, TUNSLMODE, &i);   /* link layer mode off */

close_tun (struct tuntap *tt)
  if (tt)
      close_tun_generic (tt);
      free (tt);

write_tun (struct tuntap* tt, uint8_t *buf, int len)
    return write (tt->fd, buf, len);

read_tun (struct tuntap* tt, uint8_t *buf, int len)
    return read (tt->fd, buf, len);

  Rui Paulo			<rpaulo@{NetBSD{,-PT}.org,}>