summaryrefslogtreecommitdiff
path: root/src/bsd
diff options
context:
space:
mode:
Diffstat (limited to 'src/bsd')
-rw-r--r--src/bsd/tunDevice.cpp40
1 files changed, 17 insertions, 23 deletions
diff --git a/src/bsd/tunDevice.cpp b/src/bsd/tunDevice.cpp
index f55462f..29fe971 100644
--- a/src/bsd/tunDevice.cpp
+++ b/src/bsd/tunDevice.cpp
@@ -130,6 +130,8 @@ void TunDevice::init_post()
}
ti.flags |= IFF_MULTICAST;
+ if(conf_.type_ == TYPE_TUN)
+ ti.flags &= ~IFF_POINTOPOINT;
if (ioctl(fd_, TUNSIFINFO, &ti) < 0) {
::close(fd_);
@@ -226,30 +228,22 @@ int TunDevice::write(u_int8_t* buf, u_int32_t len)
void TunDevice::do_ifconfig()
{
std::ostringstream command;
- command << "/sbin/ifconfig " << actual_name_ << " " << conf_.addr_.toString();
+ command << "/sbin/ifconfig " << actual_name_ << " " << conf_.addr_.toString()
+ << " netmask " << conf_.netmask_.toString() << " mtu " << conf_.mtu_;
-
- // TODO: figure out how to configure the interface BSD
-// if(conf_.type_ == TYPE_TAP)
-// command << " netmask ";
-// else
-// command << " ";
-
-// command << conf_.netmask_.toString() << " mtu " << conf_.mtu_;
-
-// if(conf_.type_ == TYPE_TUN)
-// command << " netmask 255.255.255.255 up";
-// else {
-// #if defined(__GNUC__) && defined(__OpenBSD__)
-// command << " link0";
-// #elif defined(__GNUC__) && defined(__FreeBSD__)
-// command << " up";
-// #elif defined(__GNUC__) && defined(__NetBSD__)
-// command << "";
-// #else
-// #error This Device works just for OpenBSD, FreeBSD or NetBSD
-// #endif
-// }
+ if(conf_.type_ == TYPE_TUN)
+ command << " up";
+ else {
+#if defined(__GNUC__) && defined(__OpenBSD__)
+ command << " link0";
+#elif defined(__GNUC__) && defined(__FreeBSD__)
+ command << " up";
+#elif defined(__GNUC__) && defined(__NetBSD__)
+ command << "";
+#else
+ #error This Device works just for OpenBSD, FreeBSD or NetBSD
+#endif
+ }
int result = system(command.str().c_str());
if(result == -1)