diff options
author | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-08-19 15:55:14 +0000 |
---|---|---|
committer | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-08-19 15:55:14 +0000 |
commit | b69d5cc8f54d159ee4df3e3bd36b185fa183da40 (patch) | |
tree | 7ebf1b53a8cf3ff06cb19c47a4f9cd49d1fa1893 | |
parent | Fixed build problem when ./configure --disable-server is used. (diff) | |
download | openvpn-b69d5cc8f54d159ee4df3e3bd36b185fa183da40.tar.xz |
Fixed ifconfig command for "topology subnet" on FreeBSD (Stefan Bethke).
git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@4837 e7ae566f-a301-0410-adde-c780ea21d3b5
-rw-r--r-- | tun.c | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -863,11 +863,10 @@ do_ifconfig (struct tuntap *tt, else { if (tt->topology == TOP_SUBNET) argv_printf (&argv, - "%s %s %s %s netmask %s mtu %d up", + "%s %s %s netmask %s mtu %d up", IFCONFIG_PATH, actual, ifconfig_local, - ifconfig_local, ifconfig_remote_netmask, tun_mtu ); @@ -1745,14 +1744,19 @@ open_tun (const char *dev, const char *dev_type, const char *dev_node, bool ipv6 { open_tun_generic (dev, dev_type, dev_node, ipv6, true, true, tt); - if (tt->fd >= 0) + if (tt->fd >= 0 && tt->type == DEV_TYPE_TUN) { int i = 0; - /* Disable extended modes */ - ioctl (tt->fd, TUNSLMODE, &i); + i = tt->topology == TOP_SUBNET ? IFF_BROADCAST : IFF_POINTOPOINT; + i |= IFF_MULTICAST; + if (ioctl (tt->fd, TUNSIFMODE, &i) < 0) { + msg (M_WARN | M_ERRNO, "ioctl(TUNSIFMODE): %s", strerror(errno)); + } i = 1; - ioctl (tt->fd, TUNSIFHEAD, &i); + if (ioctl (tt->fd, TUNSIFHEAD, &i) < 0) { + msg (M_WARN | M_ERRNO, "ioctl(TUNSIFHEAD): %s", strerror(errno)); + } } } |