Imported Upstream version 0.3.3
[anytun.git] / src / linux / tunDevice.cpp
index 57b1c7c..ee6ac0e 100644 (file)
@@ -50,7 +50,7 @@
 #include "anytunError.h"
 #include "sysExec.h"
 
-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)
 {
        struct ifreq ifr;
        memset(&ifr, 0, sizeof(ifr));
@@ -161,5 +161,11 @@ void TunDevice::do_ifconfig()
   std::ostringstream mtu_ss;
   mtu_ss << conf_.mtu_;
   StringVector args = boost::assign::list_of(actual_name_)(conf_.addr_.toString())("netmask")(conf_.netmask_.toString())("mtu")(mtu_ss.str());
-  anytun_exec("/sbin/ifconfig", args);
+  sys_exec_ = new SysExec("/sbin/ifconfig", args);
+}
+
+void TunDevice::waitUntilReady()
+{
+  if(sys_exec_)
+    SysExec::waitAndDestroy(sys_exec_);
 }