haiku/build/jam
Augustin Cavalier b6c24e6b40 network: Overhaul TUN/TAP subsystem.
* Rename the "tun" network device to "tunnel". FreeBSD calls theirs
   "tuntap" but speaks of both TUN and TAP devices as interfaces for
   tunnels. The other BSDs seem to do likewise.

 * Fold the "tun" driver into the "tunnel" network device. The
   network device now publishes entries in devfs when interfaces
   are created, and unpublishes them when interfaces are destroyed.

   This removes the need for the driver and device to communicate
   through a file descriptor, and thus allows the receive queue
   to be totally eliminated, massively simplifying that logic.

 * Use standard net-stack FIFOs instead of TCP BufferQueue, which is
   specialized to TCP's needs in far too many ways. Thanks to the
   previous commit adding support for interrupting semaphore waits,
   we can use the FIFO wait mechanisms, too.

 * Restructure the TAP logic, and generate MAC addresses more like
   Linux does.

 * Actually set type = IFT_TUN, and use the "loopback" frame handler
   instead of the "ethernet" frame handler. This allows significant
   cleanup of the header handling logic.

 * In TUN mode, reject packets that don't look like IP packets.

 * Delete "tunconfig"; it was mostly stubs and is now unnecessary.

TUN mode tested and confirmed as working by kallisti5 with OpenVPN.
TAP mode partially tested, but not yet confirmed as working.

Fixes #18673.

Change-Id: Ibd803139474e8db556a4f567901da15ee4083621
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7143
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2023-11-30 20:44:44 +00:00
..
board boot/platform/u-boot: Drop ARM support. 2022-06-28 12:27:06 -04:00
images network: Overhaul TUN/TAP subsystem. 2023-11-30 20:44:44 +00:00
packages i2c_elan: Support I2C Elan devices 2023-07-14 20:58:01 +00:00
repositories build-packages: Bump riscv64 for gcc13. Thanks X512! 2023-10-10 11:18:55 -05:00
ArchitectureRules network: Overhaul TUN/TAP subsystem. 2023-11-30 20:44:44 +00:00
BeOSRules build: Remove usage of obsolescent egrep 2022-10-06 16:28:01 +00:00
BootRules build: Define _BOOT_MODE once and for all in ArchitectureRules+BootRules. 2022-11-29 20:18:12 -05:00
BuildFeatureRules kernel & addons: Build with the non-legacy GCC even on x86_gcc2h. 2021-10-02 18:29:40 +00:00
BuildFeatures build-packages: update to the latest packages 2023-08-05 11:52:00 +00:00
BuildSetup build: Define _BOOT_MODE once and for all in ArchitectureRules+BootRules. 2022-11-29 20:18:12 -05:00
CDRules
CommandLineArguments
ConfigRules
DefaultBuildProfiles build-packages: update to the latest packages 2023-08-05 11:52:00 +00:00
FileRules Support repositories created with git worktree 2023-11-01 09:09:27 +00:00
HaikuPackages Remove build logic for creating the userguide and welcome packages. 2022-10-25 18:38:07 -04:00
HeadersRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
HelperRules
ImageRules enable EFI boot for 32-bit ISO image 2022-10-06 20:12:05 +00:00
KernelRules KernelRules: Add the same -fvisibility=hidden logic in KernelStaticLibrary... 2022-09-27 19:46:52 -04:00
LocaleRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
MainBuildRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
MathRules build: remove most of MathRules. 2023-02-26 00:54:53 +00:00
MiscRules
OptionalPackages build: include zstd_devel in Development optional package. 2023-02-10 19:15:28 +00:00
OverriddenJamRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
PackageRules Break translators out of haiku.hpkg into a separate haiku_datatranslators.hpkg. 2021-09-30 16:38:36 +00:00
RepositoryRules
SystemLibraryRules configure & build: make use of 64-bit libgcc and libsupc++ for EFI/x86_64 2022-03-25 09:51:39 +00:00
TestsRules
UserBuildConfig.ReadMe Update build packages repository 2021-05-14 14:59:19 +00:00
UserBuildConfig.sample