From 148619f0ba836ff894185663633556dd04700a60 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 28 Oct 2013 09:33:32 -0400 Subject: [PATCH] Make tap build on OSX 10.9, though not in a way that is easy for users. Instead package binaries. --- Makefile.mac | 16 ++++---- ext/bin/tap-mac/tap.kext/Contents/Info.plist | 36 ++++++++++++++++++ ext/bin/tap-mac/tap.kext/Contents/MacOS/tap | Bin 0 -> 81288 bytes {mac-tap => tap-mac}/README.txt | 0 {mac-tap => tap-mac}/tuntap/Changelog | 0 {mac-tap => tap-mac}/tuntap/INSTALL | 0 {mac-tap => tap-mac}/tuntap/Makefile | 0 {mac-tap => tap-mac}/tuntap/README | 0 {mac-tap => tap-mac}/tuntap/README.installer | 0 tap-mac/tuntap/README.zerotier-build | 18 +++++++++ .../tuntap/pkg/res/License.rtfd/TXT.rtf | 0 .../tuntap/pkg/res/Welcome.rtfd/TXT.rtf | 0 .../pkg/res/Welcome.rtfd/paypal_button.gif | Bin .../pkg/scripts/startup_item_tap/postflight | 0 .../pkg/scripts/startup_item_tun/postflight | 0 .../tuntap/pkg/scripts/tap/postflight | 0 .../tuntap/pkg/scripts/tun/postflight | 0 .../pkg/tuntap.pmdoc/01tun-contents.xml | 0 .../tuntap/pkg/tuntap.pmdoc/01tun.xml | 0 .../pkg/tuntap.pmdoc/02tap-contents.xml | 0 .../tuntap/pkg/tuntap.pmdoc/02tap.xml | 0 .../pkg/tuntap.pmdoc/03tap-contents.xml | 0 .../tuntap/pkg/tuntap.pmdoc/03tap.xml | 0 .../pkg/tuntap.pmdoc/04tun-contents.xml | 0 .../tuntap/pkg/tuntap.pmdoc/04tun.xml | 0 .../tuntap/pkg/tuntap.pmdoc/index.xml | 0 {mac-tap => tap-mac}/tuntap/src/lock.cc | 0 {mac-tap => tap-mac}/tuntap/src/lock.h | 0 {mac-tap => tap-mac}/tuntap/src/mem.cc | 0 {mac-tap => tap-mac}/tuntap/src/mem.h | 0 .../tuntap/src/tap/Info.plist | 0 {mac-tap => tap-mac}/tuntap/src/tap/Makefile | 6 ++- {mac-tap => tap-mac}/tuntap/src/tap/kmod.cc | 0 {mac-tap => tap-mac}/tuntap/src/tap/tap.cc | 0 {mac-tap => tap-mac}/tuntap/src/tap/tap.h | 3 +- .../tuntap/src/tun/Info.plist | 0 {mac-tap => tap-mac}/tuntap/src/tun/Makefile | 0 {mac-tap => tap-mac}/tuntap/src/tun/kmod.cc | 0 {mac-tap => tap-mac}/tuntap/src/tun/tun.cc | 0 {mac-tap => tap-mac}/tuntap/src/tun/tun.h | 0 .../tuntap/src/tun/tun_inet6_proto.c | 0 .../tuntap/src/tun/tun_inet_proto.c | 0 .../tuntap/src/tun/tun_ioctls.h | 0 {mac-tap => tap-mac}/tuntap/src/tuntap.cc | 0 {mac-tap => tap-mac}/tuntap/src/tuntap.h | 0 {mac-tap => tap-mac}/tuntap/src/tuntap_mgr.cc | 0 {mac-tap => tap-mac}/tuntap/src/util.h | 0 .../English.lproj/Localizable.strings | 0 .../startup_item/tap/StartupParameters.plist | 0 .../tuntap/startup_item/tap/tap | 0 .../English.lproj/Localizable.strings | 0 .../startup_item/tun/StartupParameters.plist | 0 .../tuntap/startup_item/tun/tun | 0 .../tuntap/test/tuntap/__init__.py | 0 .../tuntap/test/tuntap/char_dev_harness.py | 0 .../tuntap/test/tuntap/interface_harness.py | 0 .../tuntap/test/tuntap/ioctl.py | 0 .../tuntap/test/tuntap/packet.py | 0 .../tuntap/test/tuntap/packet_codec.py | 0 .../tuntap/test/tuntap/packet_reader.py | 0 .../tuntap/test/tuntap/route.py | 0 .../tuntap/test/tuntap/sockaddr.py | 0 .../tuntap/test/tuntap/test_char_dev.py | 0 .../tuntap/test/tuntap/test_interface.py | 0 .../tuntap/test/tuntap/test_ip.py | 0 .../tuntap/test/tuntap/tun_tap_harness.py | 0 .../tuntap/test/tuntap/tun_tap_test_case.py | 0 .../tuntap/test/tuntap/tuntap_tests.py | 0 68 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 ext/bin/tap-mac/tap.kext/Contents/Info.plist create mode 100755 ext/bin/tap-mac/tap.kext/Contents/MacOS/tap rename {mac-tap => tap-mac}/README.txt (100%) rename {mac-tap => tap-mac}/tuntap/Changelog (100%) rename {mac-tap => tap-mac}/tuntap/INSTALL (100%) rename {mac-tap => tap-mac}/tuntap/Makefile (100%) rename {mac-tap => tap-mac}/tuntap/README (100%) rename {mac-tap => tap-mac}/tuntap/README.installer (100%) create mode 100644 tap-mac/tuntap/README.zerotier-build rename {mac-tap => tap-mac}/tuntap/pkg/res/License.rtfd/TXT.rtf (100%) rename {mac-tap => tap-mac}/tuntap/pkg/res/Welcome.rtfd/TXT.rtf (100%) rename {mac-tap => tap-mac}/tuntap/pkg/res/Welcome.rtfd/paypal_button.gif (100%) rename {mac-tap => tap-mac}/tuntap/pkg/scripts/startup_item_tap/postflight (100%) rename {mac-tap => tap-mac}/tuntap/pkg/scripts/startup_item_tun/postflight (100%) rename {mac-tap => tap-mac}/tuntap/pkg/scripts/tap/postflight (100%) rename {mac-tap => tap-mac}/tuntap/pkg/scripts/tun/postflight (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/01tun-contents.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/01tun.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/02tap-contents.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/02tap.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/03tap-contents.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/03tap.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/04tun-contents.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/04tun.xml (100%) rename {mac-tap => tap-mac}/tuntap/pkg/tuntap.pmdoc/index.xml (100%) rename {mac-tap => tap-mac}/tuntap/src/lock.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/lock.h (100%) rename {mac-tap => tap-mac}/tuntap/src/mem.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/mem.h (100%) rename {mac-tap => tap-mac}/tuntap/src/tap/Info.plist (100%) rename {mac-tap => tap-mac}/tuntap/src/tap/Makefile (88%) rename {mac-tap => tap-mac}/tuntap/src/tap/kmod.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/tap/tap.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/tap/tap.h (98%) rename {mac-tap => tap-mac}/tuntap/src/tun/Info.plist (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/Makefile (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/kmod.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/tun.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/tun.h (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/tun_inet6_proto.c (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/tun_inet_proto.c (100%) rename {mac-tap => tap-mac}/tuntap/src/tun/tun_ioctls.h (100%) rename {mac-tap => tap-mac}/tuntap/src/tuntap.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/tuntap.h (100%) rename {mac-tap => tap-mac}/tuntap/src/tuntap_mgr.cc (100%) rename {mac-tap => tap-mac}/tuntap/src/util.h (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tap/Resources/English.lproj/Localizable.strings (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tap/StartupParameters.plist (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tap/tap (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tun/Resources/English.lproj/Localizable.strings (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tun/StartupParameters.plist (100%) rename {mac-tap => tap-mac}/tuntap/startup_item/tun/tun (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/__init__.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/char_dev_harness.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/interface_harness.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/ioctl.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/packet.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/packet_codec.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/packet_reader.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/route.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/sockaddr.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/test_char_dev.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/test_interface.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/test_ip.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/tun_tap_harness.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/tun_tap_test_case.py (100%) rename {mac-tap => tap-mac}/tuntap/test/tuntap/tuntap_tests.py (100%) diff --git a/Makefile.mac b/Makefile.mac index 335357984..25bfab110 100644 --- a/Makefile.mac +++ b/Makefile.mac @@ -35,18 +35,18 @@ idtool: $(OBJS) $(CXX) $(CXXFLAGS) -o zerotier-idtool idtool.cpp $(OBJS) $(LIBS) $(STRIP) zerotier-idtool -mac-tap: FORCE - cd mac-tap/tuntap ; make tap.kext +#mac-tap: FORCE +# cd mac-tap/tuntap ; make tap.kext -install-mac-tap: FORCE - mkdir -p /Library/Application\ Support/ZeroTier/One - rm -rf /Library/Application\ Support/ZeroTier/One/tap.kext - cp -R mac-tap/tuntap/tap.kext /Library/Application\ Support/ZeroTier/One - chown -R root:wheel /Library/Application\ Support/ZeroTier/One/tap.kext +#install-mac-tap: FORCE +# mkdir -p /Library/Application\ Support/ZeroTier/One +# rm -rf /Library/Application\ Support/ZeroTier/One/tap.kext +# cp -R mac-tap/tuntap/tap.kext /Library/Application\ Support/ZeroTier/One +# chown -R root:wheel /Library/Application\ Support/ZeroTier/One/tap.kext clean: rm -rf *.dSYM rm -f $(OBJS) zerotier-* - cd mac-tap/tuntap ; make clean + cd tap-mac/tuntap ; make clean FORCE: diff --git a/ext/bin/tap-mac/tap.kext/Contents/Info.plist b/ext/bin/tap-mac/tap.kext/Contents/Info.plist new file mode 100644 index 000000000..3cc41b073 --- /dev/null +++ b/ext/bin/tap-mac/tap.kext/Contents/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + tap + CFBundleIdentifier + com.zerotier.tap + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + tap + CFBundlePackageType + KEXT + CFBundleShortVersionString + 20111101 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + OSBundleLibraries + + com.apple.kpi.mach + 8.0 + com.apple.kpi.bsd + 8.0 + com.apple.kpi.libkern + 8.0 + com.apple.kpi.unsupported + 8.0 + + + + diff --git a/ext/bin/tap-mac/tap.kext/Contents/MacOS/tap b/ext/bin/tap-mac/tap.kext/Contents/MacOS/tap new file mode 100755 index 0000000000000000000000000000000000000000..d464702f4b5a81b492ac7a46bd3668e7030df48c GIT binary patch literal 81288 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 z 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 Cj+rU| literal 0 HcmV?d00001 diff --git a/mac-tap/README.txt b/tap-mac/README.txt similarity index 100% rename from mac-tap/README.txt rename to tap-mac/README.txt diff --git a/mac-tap/tuntap/Changelog b/tap-mac/tuntap/Changelog similarity index 100% rename from mac-tap/tuntap/Changelog rename to tap-mac/tuntap/Changelog diff --git a/mac-tap/tuntap/INSTALL b/tap-mac/tuntap/INSTALL similarity index 100% rename from mac-tap/tuntap/INSTALL rename to tap-mac/tuntap/INSTALL diff --git a/mac-tap/tuntap/Makefile b/tap-mac/tuntap/Makefile similarity index 100% rename from mac-tap/tuntap/Makefile rename to tap-mac/tuntap/Makefile diff --git a/mac-tap/tuntap/README b/tap-mac/tuntap/README similarity index 100% rename from mac-tap/tuntap/README rename to tap-mac/tuntap/README diff --git a/mac-tap/tuntap/README.installer b/tap-mac/tuntap/README.installer similarity index 100% rename from mac-tap/tuntap/README.installer rename to tap-mac/tuntap/README.installer diff --git a/tap-mac/tuntap/README.zerotier-build b/tap-mac/tuntap/README.zerotier-build new file mode 100644 index 000000000..20d6d461f --- /dev/null +++ b/tap-mac/tuntap/README.zerotier-build @@ -0,0 +1,18 @@ +Building the tap for both x86_64 and i386 requires an older version of the +Xcode tools than what now ships for Mavericks (10.9). The newer version +does not support creating i386 kernel images. + +These can be obtained from: + +https://developer.apple.com/downloads + +It requires a bit of a dance to unpack the package and obtain an unpacked +tree, but once it's there you can change the line in tap/Makefile and +build for both architectures. + +This will go on until i386 is thoroughly legacy, at which point we'll +probably start just supporting x86_64. But that might be a while. We want +to support old Macs through their entire useful life. + +Since this build is irritating, a pre-built copy is packaged in ext/ and +is installed by 'make install'. So users shouldn't have to build this. diff --git a/mac-tap/tuntap/pkg/res/License.rtfd/TXT.rtf b/tap-mac/tuntap/pkg/res/License.rtfd/TXT.rtf similarity index 100% rename from mac-tap/tuntap/pkg/res/License.rtfd/TXT.rtf rename to tap-mac/tuntap/pkg/res/License.rtfd/TXT.rtf diff --git a/mac-tap/tuntap/pkg/res/Welcome.rtfd/TXT.rtf b/tap-mac/tuntap/pkg/res/Welcome.rtfd/TXT.rtf similarity index 100% rename from mac-tap/tuntap/pkg/res/Welcome.rtfd/TXT.rtf rename to tap-mac/tuntap/pkg/res/Welcome.rtfd/TXT.rtf diff --git a/mac-tap/tuntap/pkg/res/Welcome.rtfd/paypal_button.gif b/tap-mac/tuntap/pkg/res/Welcome.rtfd/paypal_button.gif similarity index 100% rename from mac-tap/tuntap/pkg/res/Welcome.rtfd/paypal_button.gif rename to tap-mac/tuntap/pkg/res/Welcome.rtfd/paypal_button.gif diff --git a/mac-tap/tuntap/pkg/scripts/startup_item_tap/postflight b/tap-mac/tuntap/pkg/scripts/startup_item_tap/postflight similarity index 100% rename from mac-tap/tuntap/pkg/scripts/startup_item_tap/postflight rename to tap-mac/tuntap/pkg/scripts/startup_item_tap/postflight diff --git a/mac-tap/tuntap/pkg/scripts/startup_item_tun/postflight b/tap-mac/tuntap/pkg/scripts/startup_item_tun/postflight similarity index 100% rename from mac-tap/tuntap/pkg/scripts/startup_item_tun/postflight rename to tap-mac/tuntap/pkg/scripts/startup_item_tun/postflight diff --git a/mac-tap/tuntap/pkg/scripts/tap/postflight b/tap-mac/tuntap/pkg/scripts/tap/postflight similarity index 100% rename from mac-tap/tuntap/pkg/scripts/tap/postflight rename to tap-mac/tuntap/pkg/scripts/tap/postflight diff --git a/mac-tap/tuntap/pkg/scripts/tun/postflight b/tap-mac/tuntap/pkg/scripts/tun/postflight similarity index 100% rename from mac-tap/tuntap/pkg/scripts/tun/postflight rename to tap-mac/tuntap/pkg/scripts/tun/postflight diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/01tun-contents.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/01tun-contents.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/01tun-contents.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/01tun-contents.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/01tun.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/01tun.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/01tun.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/01tun.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/02tap-contents.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/02tap-contents.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/02tap-contents.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/02tap-contents.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/02tap.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/02tap.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/02tap.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/02tap.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/03tap-contents.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/03tap-contents.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/03tap-contents.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/03tap-contents.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/03tap.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/03tap.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/03tap.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/03tap.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/04tun-contents.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/04tun-contents.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/04tun-contents.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/04tun-contents.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/04tun.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/04tun.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/04tun.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/04tun.xml diff --git a/mac-tap/tuntap/pkg/tuntap.pmdoc/index.xml b/tap-mac/tuntap/pkg/tuntap.pmdoc/index.xml similarity index 100% rename from mac-tap/tuntap/pkg/tuntap.pmdoc/index.xml rename to tap-mac/tuntap/pkg/tuntap.pmdoc/index.xml diff --git a/mac-tap/tuntap/src/lock.cc b/tap-mac/tuntap/src/lock.cc similarity index 100% rename from mac-tap/tuntap/src/lock.cc rename to tap-mac/tuntap/src/lock.cc diff --git a/mac-tap/tuntap/src/lock.h b/tap-mac/tuntap/src/lock.h similarity index 100% rename from mac-tap/tuntap/src/lock.h rename to tap-mac/tuntap/src/lock.h diff --git a/mac-tap/tuntap/src/mem.cc b/tap-mac/tuntap/src/mem.cc similarity index 100% rename from mac-tap/tuntap/src/mem.cc rename to tap-mac/tuntap/src/mem.cc diff --git a/mac-tap/tuntap/src/mem.h b/tap-mac/tuntap/src/mem.h similarity index 100% rename from mac-tap/tuntap/src/mem.h rename to tap-mac/tuntap/src/mem.h diff --git a/mac-tap/tuntap/src/tap/Info.plist b/tap-mac/tuntap/src/tap/Info.plist similarity index 100% rename from mac-tap/tuntap/src/tap/Info.plist rename to tap-mac/tuntap/src/tap/Info.plist diff --git a/mac-tap/tuntap/src/tap/Makefile b/tap-mac/tuntap/src/tap/Makefile similarity index 88% rename from mac-tap/tuntap/src/tap/Makefile rename to tap-mac/tuntap/src/tap/Makefile index 428555d0c..a69b967e2 100644 --- a/mac-tap/tuntap/src/tap/Makefile +++ b/tap-mac/tuntap/src/tap/Makefile @@ -19,7 +19,7 @@ BUNDLE_SIGNATURE = ???? BUNDLE_PACKAGETYPE = KEXT BUNDLE_VERSION = $(TAP_KEXT_VERSION) -INCLUDE = -I.. -I/System/Library/Frameworks/Kernel.framework/Headers +INCLUDE = -I.. -I/System/Library/Frameworks/Kernel.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Kernel.framework/Headers CFLAGS = -Wall -mkernel -force_cpusubtype_ALL \ -fno-builtin -fno-stack-protector -arch i386 -arch x86_64 \ -DKERNEL -D__APPLE__ -DKERNEL_PRIVATE -DTUNTAP_VERSION=\"$(TUNTAP_VERSION)\" \ @@ -27,7 +27,9 @@ CFLAGS = -Wall -mkernel -force_cpusubtype_ALL \ CCFLAGS = $(CFLAGS) LDFLAGS = -Wall -mkernel -nostdlib -r -lcc_kext -arch i386 -arch x86_64 -Xlinker -kext -CCP = $(shell if [ -f /usr/bin/llvm-g++ ]; then echo llvm-g++; else echo g++; fi) +#CCP = g++ +CCP = $(HOME)/Code/llvm-g++-Xcode4.6.2/bin/llvm-g++ + CC = gcc all: $(KMOD_BIN) bundle diff --git a/mac-tap/tuntap/src/tap/kmod.cc b/tap-mac/tuntap/src/tap/kmod.cc similarity index 100% rename from mac-tap/tuntap/src/tap/kmod.cc rename to tap-mac/tuntap/src/tap/kmod.cc diff --git a/mac-tap/tuntap/src/tap/tap.cc b/tap-mac/tuntap/src/tap/tap.cc similarity index 100% rename from mac-tap/tuntap/src/tap/tap.cc rename to tap-mac/tuntap/src/tap/tap.cc diff --git a/mac-tap/tuntap/src/tap/tap.h b/tap-mac/tuntap/src/tap/tap.h similarity index 98% rename from mac-tap/tuntap/src/tap/tap.h rename to tap-mac/tuntap/src/tap/tap.h index 95e2f13f4..b3070676e 100644 --- a/mac-tap/tuntap/src/tap/tap.h +++ b/tap-mac/tuntap/src/tap/tap.h @@ -34,8 +34,7 @@ #define TAP_IF_COUNT 16 /* max number of tap interfaces */ -// ZeroTier default MTU, see Constants.hpp -#define TAP_MTU 2800 +#define TAP_MTU 4000 #define TAP_LLADDR tap_lladdr diff --git a/mac-tap/tuntap/src/tun/Info.plist b/tap-mac/tuntap/src/tun/Info.plist similarity index 100% rename from mac-tap/tuntap/src/tun/Info.plist rename to tap-mac/tuntap/src/tun/Info.plist diff --git a/mac-tap/tuntap/src/tun/Makefile b/tap-mac/tuntap/src/tun/Makefile similarity index 100% rename from mac-tap/tuntap/src/tun/Makefile rename to tap-mac/tuntap/src/tun/Makefile diff --git a/mac-tap/tuntap/src/tun/kmod.cc b/tap-mac/tuntap/src/tun/kmod.cc similarity index 100% rename from mac-tap/tuntap/src/tun/kmod.cc rename to tap-mac/tuntap/src/tun/kmod.cc diff --git a/mac-tap/tuntap/src/tun/tun.cc b/tap-mac/tuntap/src/tun/tun.cc similarity index 100% rename from mac-tap/tuntap/src/tun/tun.cc rename to tap-mac/tuntap/src/tun/tun.cc diff --git a/mac-tap/tuntap/src/tun/tun.h b/tap-mac/tuntap/src/tun/tun.h similarity index 100% rename from mac-tap/tuntap/src/tun/tun.h rename to tap-mac/tuntap/src/tun/tun.h diff --git a/mac-tap/tuntap/src/tun/tun_inet6_proto.c b/tap-mac/tuntap/src/tun/tun_inet6_proto.c similarity index 100% rename from mac-tap/tuntap/src/tun/tun_inet6_proto.c rename to tap-mac/tuntap/src/tun/tun_inet6_proto.c diff --git a/mac-tap/tuntap/src/tun/tun_inet_proto.c b/tap-mac/tuntap/src/tun/tun_inet_proto.c similarity index 100% rename from mac-tap/tuntap/src/tun/tun_inet_proto.c rename to tap-mac/tuntap/src/tun/tun_inet_proto.c diff --git a/mac-tap/tuntap/src/tun/tun_ioctls.h b/tap-mac/tuntap/src/tun/tun_ioctls.h similarity index 100% rename from mac-tap/tuntap/src/tun/tun_ioctls.h rename to tap-mac/tuntap/src/tun/tun_ioctls.h diff --git a/mac-tap/tuntap/src/tuntap.cc b/tap-mac/tuntap/src/tuntap.cc similarity index 100% rename from mac-tap/tuntap/src/tuntap.cc rename to tap-mac/tuntap/src/tuntap.cc diff --git a/mac-tap/tuntap/src/tuntap.h b/tap-mac/tuntap/src/tuntap.h similarity index 100% rename from mac-tap/tuntap/src/tuntap.h rename to tap-mac/tuntap/src/tuntap.h diff --git a/mac-tap/tuntap/src/tuntap_mgr.cc b/tap-mac/tuntap/src/tuntap_mgr.cc similarity index 100% rename from mac-tap/tuntap/src/tuntap_mgr.cc rename to tap-mac/tuntap/src/tuntap_mgr.cc diff --git a/mac-tap/tuntap/src/util.h b/tap-mac/tuntap/src/util.h similarity index 100% rename from mac-tap/tuntap/src/util.h rename to tap-mac/tuntap/src/util.h diff --git a/mac-tap/tuntap/startup_item/tap/Resources/English.lproj/Localizable.strings b/tap-mac/tuntap/startup_item/tap/Resources/English.lproj/Localizable.strings similarity index 100% rename from mac-tap/tuntap/startup_item/tap/Resources/English.lproj/Localizable.strings rename to tap-mac/tuntap/startup_item/tap/Resources/English.lproj/Localizable.strings diff --git a/mac-tap/tuntap/startup_item/tap/StartupParameters.plist b/tap-mac/tuntap/startup_item/tap/StartupParameters.plist similarity index 100% rename from mac-tap/tuntap/startup_item/tap/StartupParameters.plist rename to tap-mac/tuntap/startup_item/tap/StartupParameters.plist diff --git a/mac-tap/tuntap/startup_item/tap/tap b/tap-mac/tuntap/startup_item/tap/tap similarity index 100% rename from mac-tap/tuntap/startup_item/tap/tap rename to tap-mac/tuntap/startup_item/tap/tap diff --git a/mac-tap/tuntap/startup_item/tun/Resources/English.lproj/Localizable.strings b/tap-mac/tuntap/startup_item/tun/Resources/English.lproj/Localizable.strings similarity index 100% rename from mac-tap/tuntap/startup_item/tun/Resources/English.lproj/Localizable.strings rename to tap-mac/tuntap/startup_item/tun/Resources/English.lproj/Localizable.strings diff --git a/mac-tap/tuntap/startup_item/tun/StartupParameters.plist b/tap-mac/tuntap/startup_item/tun/StartupParameters.plist similarity index 100% rename from mac-tap/tuntap/startup_item/tun/StartupParameters.plist rename to tap-mac/tuntap/startup_item/tun/StartupParameters.plist diff --git a/mac-tap/tuntap/startup_item/tun/tun b/tap-mac/tuntap/startup_item/tun/tun similarity index 100% rename from mac-tap/tuntap/startup_item/tun/tun rename to tap-mac/tuntap/startup_item/tun/tun diff --git a/mac-tap/tuntap/test/tuntap/__init__.py b/tap-mac/tuntap/test/tuntap/__init__.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/__init__.py rename to tap-mac/tuntap/test/tuntap/__init__.py diff --git a/mac-tap/tuntap/test/tuntap/char_dev_harness.py b/tap-mac/tuntap/test/tuntap/char_dev_harness.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/char_dev_harness.py rename to tap-mac/tuntap/test/tuntap/char_dev_harness.py diff --git a/mac-tap/tuntap/test/tuntap/interface_harness.py b/tap-mac/tuntap/test/tuntap/interface_harness.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/interface_harness.py rename to tap-mac/tuntap/test/tuntap/interface_harness.py diff --git a/mac-tap/tuntap/test/tuntap/ioctl.py b/tap-mac/tuntap/test/tuntap/ioctl.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/ioctl.py rename to tap-mac/tuntap/test/tuntap/ioctl.py diff --git a/mac-tap/tuntap/test/tuntap/packet.py b/tap-mac/tuntap/test/tuntap/packet.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/packet.py rename to tap-mac/tuntap/test/tuntap/packet.py diff --git a/mac-tap/tuntap/test/tuntap/packet_codec.py b/tap-mac/tuntap/test/tuntap/packet_codec.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/packet_codec.py rename to tap-mac/tuntap/test/tuntap/packet_codec.py diff --git a/mac-tap/tuntap/test/tuntap/packet_reader.py b/tap-mac/tuntap/test/tuntap/packet_reader.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/packet_reader.py rename to tap-mac/tuntap/test/tuntap/packet_reader.py diff --git a/mac-tap/tuntap/test/tuntap/route.py b/tap-mac/tuntap/test/tuntap/route.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/route.py rename to tap-mac/tuntap/test/tuntap/route.py diff --git a/mac-tap/tuntap/test/tuntap/sockaddr.py b/tap-mac/tuntap/test/tuntap/sockaddr.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/sockaddr.py rename to tap-mac/tuntap/test/tuntap/sockaddr.py diff --git a/mac-tap/tuntap/test/tuntap/test_char_dev.py b/tap-mac/tuntap/test/tuntap/test_char_dev.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/test_char_dev.py rename to tap-mac/tuntap/test/tuntap/test_char_dev.py diff --git a/mac-tap/tuntap/test/tuntap/test_interface.py b/tap-mac/tuntap/test/tuntap/test_interface.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/test_interface.py rename to tap-mac/tuntap/test/tuntap/test_interface.py diff --git a/mac-tap/tuntap/test/tuntap/test_ip.py b/tap-mac/tuntap/test/tuntap/test_ip.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/test_ip.py rename to tap-mac/tuntap/test/tuntap/test_ip.py diff --git a/mac-tap/tuntap/test/tuntap/tun_tap_harness.py b/tap-mac/tuntap/test/tuntap/tun_tap_harness.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/tun_tap_harness.py rename to tap-mac/tuntap/test/tuntap/tun_tap_harness.py diff --git a/mac-tap/tuntap/test/tuntap/tun_tap_test_case.py b/tap-mac/tuntap/test/tuntap/tun_tap_test_case.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/tun_tap_test_case.py rename to tap-mac/tuntap/test/tuntap/tun_tap_test_case.py diff --git a/mac-tap/tuntap/test/tuntap/tuntap_tests.py b/tap-mac/tuntap/test/tuntap/tuntap_tests.py similarity index 100% rename from mac-tap/tuntap/test/tuntap/tuntap_tests.py rename to tap-mac/tuntap/test/tuntap/tuntap_tests.py