A minimalist IP stack written in ANSI C.
This needs to be run on a Linux machine with root access - ideally on a network interface that does not have an IP address already associated with it.
This also runs on top of the BareMetal exokernel.
Provide enough of a stack to serve a simple static webpage.
Linux:
make
BareMetal:
This version uses hardcoded IP addresses. Make sure to update them if needed in main().
./build.sh
Linux:
./minIP eth1 192.168.0.99 255.255.255.0 192.168.0.1
BareMetal:
minIP.app
If this can be done in Python (see teeceepee and its blog post), then it can be done in C!
Also, its a great proof of concept to learn the fundamentals in preparation for an x86-64 assembly re-write I plan on doing in the future.
Protocol | Functional |
---|---|
ARP | yes |
IP | partially |
ICMP | yes |
TCP | partially |
UDP | no |
TCPv6 | no |
UDPv6 | no |
- Resending dropped packets
- Large packet support
- Handling more than one incoming connection at once