diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-11-24 14:11:14 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-11-24 14:11:14 -0800 |
commit | 56cb2f43fae8d876e7e62bae050cfb00a30c1472 (patch) | |
tree | b6348d0f05d676c42b14161732e8ed5228ecacdb /osdep | |
parent | 1fde17bacb565bfc1536ef83276658e8bb6f0a0c (diff) | |
parent | 038476c41204e2fb5c82934beefbd50d8d28c4f8 (diff) | |
download | infinitytier-56cb2f43fae8d876e7e62bae050cfb00a30c1472.tar.gz infinitytier-56cb2f43fae8d876e7e62bae050cfb00a30c1472.zip |
Merge pull request #254 from bonki/fix_iproute2_ip_handling
Fix for GitHub issue #253.
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/LinuxEthernetTap.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/osdep/LinuxEthernetTap.cpp b/osdep/LinuxEthernetTap.cpp index 73eb0cc5..f250abd3 100644 --- a/osdep/LinuxEthernetTap.cpp +++ b/osdep/LinuxEthernetTap.cpp @@ -210,8 +210,8 @@ static bool ___removeIp(const std::string &_dev,const InetAddress &ip) long cpid = (long)vfork(); if (cpid == 0) { OSUtils::redirectUnixOutputs("/dev/null",(const char *)0); - ::execl("/sbin/ip","/sbin/ip","addr","del",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); - ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","del",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); + setenv("PATH", "/sbin:/bin:/usr/sbin:/usr/bin", 1); + ::execlp("ip","ip","addr","del",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); ::_exit(-1); } else { int exitcode = -1; @@ -238,12 +238,11 @@ bool LinuxEthernetTap::addIp(const InetAddress &ip) long cpid = (long)vfork(); if (cpid == 0) { OSUtils::redirectUnixOutputs("/dev/null",(const char *)0); + setenv("PATH", "/sbin:/bin:/usr/sbin:/usr/bin", 1); if (ip.isV4()) { - ::execl("/sbin/ip","/sbin/ip","addr","add",ip.toString().c_str(),"broadcast",ip.broadcast().toIpString().c_str(),"dev",_dev.c_str(),(const char *)0); - ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","add",ip.toString().c_str(),"broadcast",ip.broadcast().toIpString().c_str(),"dev",_dev.c_str(),(const char *)0); + ::execlp("ip","ip","addr","add",ip.toString().c_str(),"broadcast",ip.broadcast().toIpString().c_str(),"dev",_dev.c_str(),(const char *)0); } else { - ::execl("/sbin/ip","/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); - ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); + ::execlp("ip","ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); } ::_exit(-1); } else if (cpid > 0) { |