X-Git-Url: https://git.syn-net.org/debian/?p=anytun.git;a=blobdiff_plain;f=src%2Fbsd%2FtunDevice.cpp;h=9cd58df1e4e5276296b3eba0cdfe65b9a58bb9a8;hp=4fdd5fddf7808717a276f9d06e5eb9ed9fb0e9cd;hb=ece844834d2cecc028ce81ca283f5d441088580e;hpb=bb834fe0ed7a38b724f49b944adb801634eb6194 diff --git a/src/bsd/tunDevice.cpp b/src/bsd/tunDevice.cpp index 4fdd5fd..9cd58df 100644 --- a/src/bsd/tunDevice.cpp +++ b/src/bsd/tunDevice.cpp @@ -54,7 +54,7 @@ #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; @@ -149,7 +149,7 @@ void TunDevice::init_post() } } -#elif defined(__GNUC__) && defined(__FreeBSD__) +#elif defined(__GNUC__) && (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) void TunDevice::init_post() { @@ -262,7 +262,7 @@ void TunDevice::do_ifconfig() 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 @@ -270,6 +270,12 @@ void TunDevice::do_ifconfig() #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_); } +