]> Zhao Yanbai Git Server - minix.git/commit
Add lwip: a new lwIP-based TCP/IP service 81/3481/2
authorDavid van Moolenbroek <david@minix3.org>
Thu, 29 Sep 2016 23:07:07 +0000 (23:07 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Sun, 30 Apr 2017 13:16:03 +0000 (13:16 +0000)
commitef8d499e2d2af900e9b2ab297171d7b088652482
tree2a3dfebb1d27327192453b046673dfadf52da415
parent0f03189a6a8bafe2a370ea990cf2cbb19da81b70
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
60 files changed:
distrib/sets/lists/minix-base/mi
distrib/sets/lists/minix-comp/mi
distrib/sets/lists/minix-debug/mi
minix/commands/DESCRIBE/DESCRIBE.sh
minix/commands/MAKEDEV/MAKEDEV.sh
minix/fs/procfs/service.c
minix/include/minix/Makefile
minix/include/minix/bpf.h [new file with mode: 0644]
minix/include/minix/dmap.h
minix/include/minix/if.h [new file with mode: 0644]
minix/include/minix/sysctl.h
minix/lib/libc/sys/ioctl.c
minix/net/Makefile
minix/net/lwip/Makefile [new file with mode: 0644]
minix/net/lwip/addr.c [new file with mode: 0644]
minix/net/lwip/addr.h [new file with mode: 0644]
minix/net/lwip/addrpol.c [new file with mode: 0644]
minix/net/lwip/bpf_filter.c [new file with mode: 0644]
minix/net/lwip/bpfdev.c [new file with mode: 0644]
minix/net/lwip/bpfdev.h [new file with mode: 0644]
minix/net/lwip/ethif.c [new file with mode: 0644]
minix/net/lwip/ethif.h [new file with mode: 0644]
minix/net/lwip/ifaddr.c [new file with mode: 0644]
minix/net/lwip/ifaddr.h [new file with mode: 0644]
minix/net/lwip/ifconf.c [new file with mode: 0644]
minix/net/lwip/ifdev.c [new file with mode: 0644]
minix/net/lwip/ifdev.h [new file with mode: 0644]
minix/net/lwip/ipsock.c [new file with mode: 0644]
minix/net/lwip/ipsock.h [new file with mode: 0644]
minix/net/lwip/lldata.c [new file with mode: 0644]
minix/net/lwip/lldata.h [new file with mode: 0644]
minix/net/lwip/lnksock.c [new file with mode: 0644]
minix/net/lwip/loopif.c [new file with mode: 0644]
minix/net/lwip/lwip.c [new file with mode: 0644]
minix/net/lwip/lwip.conf [new file with mode: 0644]
minix/net/lwip/lwip.h [new file with mode: 0644]
minix/net/lwip/mcast.c [new file with mode: 0644]
minix/net/lwip/mcast.h [new file with mode: 0644]
minix/net/lwip/mempool.c [new file with mode: 0644]
minix/net/lwip/mibtree.c [new file with mode: 0644]
minix/net/lwip/ndev.c [new file with mode: 0644]
minix/net/lwip/ndev.h [new file with mode: 0644]
minix/net/lwip/pchain.c [new file with mode: 0644]
minix/net/lwip/pktsock.c [new file with mode: 0644]
minix/net/lwip/pktsock.h [new file with mode: 0644]
minix/net/lwip/rawsock.c [new file with mode: 0644]
minix/net/lwip/route.c [new file with mode: 0644]
minix/net/lwip/route.h [new file with mode: 0644]
minix/net/lwip/rtsock.c [new file with mode: 0644]
minix/net/lwip/rtsock.h [new file with mode: 0644]
minix/net/lwip/rttree.c [new file with mode: 0644]
minix/net/lwip/rttree.h [new file with mode: 0644]
minix/net/lwip/tcpisn.c [new file with mode: 0644]
minix/net/lwip/tcpisn.h [new file with mode: 0644]
minix/net/lwip/tcpsock.c [new file with mode: 0644]
minix/net/lwip/udpsock.c [new file with mode: 0644]
minix/net/lwip/util.c [new file with mode: 0644]
minix/net/lwip/util.h [new file with mode: 0644]
minix/servers/mib/minix.c
minix/usr.bin/trace/ioctl/net.c