- No ipv6
- Start with just two protocols: ipv4 and ARP
- Try to follow the core guidelines as much as possible
- Use Google Test for unit tests
- Dunno
- Parse ethernet frames
- Parse ARP packets
- Parse IP packets
- Parse TCP packets
- Implement TCP handshake
- Let the application set the ip link interface UP and add the ip addr
- Use epoll for read()
RFC7414 is something of a list of RFC:s that you might want or not want to implement.
- RFC793 - Core functionality (Is this deprecated, which would be better to use?)
- RFC1122 - Congestion control
- RFC791 - The IP Protocol
- RFC826 - ARP
To set capabilities, run:
sudo setcap CAP_NET_ADMIN=ep my_binary
To set tap interface in up state, run:
sudo ip link set my_tap_interface up
To set ip addr for interface, run:
sudo ip addr add x.x.x.x/netmask dev my_tap_interface
I am trying to add support for sending packets back to the client. When this is tested, and the whole chain is implemented from arp-handler and back to tcpp, we can answer an ARP request and show up in the kernels ARP table.