haiku/headers/private
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
..
app BFont: allow loading of user fonts from disk or memory 2022-12-17 12:32:09 +00:00
audio
binary_compatibility
bluetooth bluetooth: DoublyLinkedQueue is not actually used. 2023-08-04 13:16:57 -04:00
debug
debugger
device
drivers poke: use phys_addr_t for mem_map_args's physical_address field 2023-01-02 15:02:32 +00:00
file_systems file_systems/fs_ops_support: Add open_mode_to_access. 2023-01-27 23:53:53 -05:00
firewire
fs_shell kernel/util: Clean-ups to DoublyLinkedList insertion routines. 2023-04-01 12:31:39 -04:00
graphics radeon_hd: Add missing USB C connector type 2023-10-14 17:19:12 +00:00
i2c
index_server
input ps2 synaptics: implement 'extended W' mode. 2023-01-28 14:57:53 +00:00
interface View: provide the transform between different coordinate spaces 2022-11-13 04:04:30 +00:00
kernel kernel/x86_64: on context switch, load defaults in fpu control and mxcsr 2023-11-14 21:31:01 +00:00
libroot ICUTimeConversion: Fix buffer overflows and add more error handling. 2023-10-28 16:36:12 -04:00
locale
mail
media
midi
mount
net network: Overhaul TUN/TAP subsystem. 2023-11-30 20:44:44 +00:00
netservices HaikuDepot: Token Based Authentication 2023-09-25 06:20:32 +00:00
netservices2 NetServices: format code using haiku-format 2022-10-29 22:53:57 +01:00
notification
package Package Kit: Use an object_cache in kernel mode for decompression buffers. 2023-02-28 13:49:00 -05:00
preferences
print Game & Print Kits: Fix GCC 11 warnings. 2021-11-17 18:45:58 -05:00
runtime_loader
screen_saver
shared Shared: JSON Parse Perf 2023-11-16 20:38:21 +00:00
storage Disk Device Manager: checks the raw content_name when editing a partition 2022-09-30 17:10:39 +00:00
support ZstdCompressionAlgorithm: 22 is now "best" in libzstd. 2021-10-26 16:47:50 -04:00
syslog_daemon
system riscv64/mmu: use struct bitfield for flags and std::atomic 2023-09-25 15:50:59 +00:00
textencoding
tracker Tracker: Reimplement BSlowContextPopup as BPopUpNavMenu. 2023-08-30 17:04:24 -04:00
usb_vision
userlandfs userlandfs: use std::bitset for FSCapabilities 2023-07-10 06:27:18 +00:00
virtio virtio: support modern devices 2023-10-15 13:02:41 +00:00
vmdk
wmi