David van Moolenbroek ef8d499e2d Add lwip: a new lwIP-based TCP/IP service
This commit adds a new TCP/IP service to MINIX 3.  As its core, the
service uses the lwIP TCP/IP stack for maintenance reasons.  The
service aims to be compatible with NetBSD userland, including its
low-level network management utilities.  It also aims to support
modern features such as IPv6.  In summary, the new LWIP service has
support for the following main features:

- TCP, UDP, RAW sockets with mostly standard BSD API semantics;
- IPv6 support: host mode (complete) and router mode (partial);
- most of the standard BSD API socket options (SO_);
- all of the standard BSD API message flags (MSG_);
- the most used protocol-specific socket and control options;
- a default loopback interface and the ability to create one more;
- configuration-free ethernet interfaces and driver tracking;
- queuing and multiple concurrent requests to each ethernet driver;
- standard ioctl(2)-based BSD interface management;
- radix tree backed, destination-based routing;
- routing sockets for standard BSD route reporting and management;
- multicast traffic and multicast group membership tracking;
- Berkeley Packet Filter (BPF) devices;
- standard and custom sysctl(7) nodes for many internals;
- a slab allocation based, hybrid static/dynamic memory pool model.

Many of its modules come with fairly elaborate comments that cover
many aspects of what is going on.  The service is primarily a socket
driver built on top of the libsockdriver library, but for BPF devices
it is at the same time also a character driver.

Change-Id: Ib0c02736234b21143915e5fcc0fda8fe408f046f
2017-04-30 13:16:03 +00:00
..
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-01-13 20:32:37 +01:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-03-09 12:11:57 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-03-09 12:11:57 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-03-09 12:11:57 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2015-07-20 13:55:10 +00:00
2015-09-23 12:03:13 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2015-09-28 14:06:59 +00:00
2014-07-31 16:00:30 +02:00
2017-03-09 23:39:56 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2015-09-21 15:09:04 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-03-09 12:11:57 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2017-02-16 10:18:26 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-09-30 20:35:56 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-03-09 12:11:57 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2016-06-18 12:20:48 +00:00
2016-06-18 12:20:48 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-09-30 20:35:56 +00:00
2014-09-30 20:35:56 +00:00
2014-07-31 16:00:30 +02:00
2017-03-09 23:39:56 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-09-30 20:35:56 +00:00
2016-03-09 12:11:57 +00:00
2014-09-30 20:35:56 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-09-29 16:15:21 +00:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2014-07-31 16:00:30 +02:00
2015-09-29 18:15:28 +00:00