Browse Source

fix device binding & possible loopback issue on FreeBSD

Grant Limberg 4 years ago
parent
commit
0a8b692482
1 changed files with 6 additions and 0 deletions
  1. 6 0
      service/OneService.cpp

+ 6 - 0
service/OneService.cpp

@@ -3027,6 +3027,7 @@ public:
 		if ((ifname[0] == 't') && (ifname[1] == 'a') && (ifname[2] == 'p')) return false; // tap# is probably an OpenVPN tunnel or similar
 		if ((ifname[0] == 'u') && (ifname[1] == 't') && (ifname[2] == 'u') && (ifname[3] == 'n')) return false; // ... as is utun#
 #endif
+
 #ifdef _WIN32
 		if ((ifname[0] == 'Z') && (ifname[1] == 'e') && (ifname[2] == 'r') && ifname[3] == 'o' &&
 			(ifname[4] == 'T') && (ifname[5] == 'i') && (ifname[6] == 'e') && (ifname[7] == 'r')) {
@@ -3034,6 +3035,11 @@ public:
 		}
 #endif
 
+#ifdef __FreeBSD__
+		if ((ifname[0] == 'l') && (ifname[1] == 'o')) return false; // loopback
+		if ((ifname[0] == 'z') && (ifname[1] == 't')) return false; // sanity check: zt#
+#endif
+
 		{
 			Mutex::Lock _l(_localConfig_m);
 			for(std::vector<std::string>::const_iterator p(_interfacePrefixBlacklist.begin());p!=_interfacePrefixBlacklist.end();++p) {