浏览代码

Check for /dev/tun as well as /dev/net/tun since some Linux devices put it there.

Adam Ierymenko 9 年之前
父节点
当前提交
7526ed705c
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      osdep/LinuxEthernetTap.cpp

+ 5 - 2
osdep/LinuxEthernetTap.cpp

@@ -83,8 +83,11 @@ LinuxEthernetTap::LinuxEthernetTap(
 		throw std::runtime_error("max tap MTU is 2800");
 		throw std::runtime_error("max tap MTU is 2800");
 
 
 	_fd = ::open("/dev/net/tun",O_RDWR);
 	_fd = ::open("/dev/net/tun",O_RDWR);
-	if (_fd <= 0)
-		throw std::runtime_error(std::string("could not open TUN/TAP device: ") + strerror(errno));
+	if (_fd <= 0) {
+		_fd = ::open("/dev/tun",O_RDWR);
+		if (_fd <= 0)
+			throw std::runtime_error(std::string("could not open TUN/TAP device: ") + strerror(errno));
+	}
 
 
 	struct ifreq ifr;
 	struct ifreq ifr;
 	memset(&ifr,0,sizeof(ifr));
 	memset(&ifr,0,sizeof(ifr));