#define DEVICE_FILE_MAX 255
-TunDevice::TunDevice(std::string dev_name, std::string dev_type, std::string ifcfg_addr, u_int16_t ifcfg_prefix) : conf_(dev_name, dev_type, ifcfg_addr, ifcfg_prefix, 1400)
+TunDevice::TunDevice(std::string dev_name, std::string dev_type, std::string ifcfg_addr, u_int16_t ifcfg_prefix) : conf_(dev_name, dev_type, ifcfg_addr, ifcfg_prefix, 1400),sys_exec_(NULL)
{
std::string device_file = "/dev/";
bool dynamic = true;
}
}
-#elif defined(__GNUC__) && defined(__FreeBSD__)
+#elif defined(__GNUC__) && (defined(__FreeBSD__) || defined(__FreeBSD_kernel__))
void TunDevice::init_post()
{
else {
#if defined(__GNUC__) && defined(__OpenBSD__)
args.push_back("link0");
-#elif defined(__GNUC__) && defined(__FreeBSD__)
+#elif defined(__GNUC__) && (defined(__FreeBSD__) || defined(__FreeBSD_kernel__))
args.push_back("up");
#elif defined(__GNUC__) && defined(__NetBSD__)
// nothing to be done here
#error This Device works just for OpenBSD, FreeBSD or NetBSD
#endif
}
+ sys_exec_ = new SysExec("/sbin/ifconfig", args);
+}
- anytun_exec("/sbin/ifconfig", args);
+void TunDevice::waitUntilReady()
+{
+ if(sys_exec_)
+ SysExec::waitAndDestroy(sys_exec_);
}
+