This project is implement TCP/IP Network Stack on xv6.
The network stack uses https://github.com/pandax381/microps
microps is a user-mode TCP/IP stack that I'm developing. This project ported it to the xv6 kernel.
- Network device
- PCI
- Bus scan
- Find device driver
- Intel 8254x (e1000) driver
- Initialization
- Basic operation of RX/TX with DMA
- Interrupt trap
- Detect interrupt souce (if multiple NICs)
- Device abstraction
- Define structure for physical device abstraction (struct netdev)
- Support multiple link protocols and physical devices
- PCI
- Protocols
- Ethernet
- ARP
- IP
- ICMP
- UDP
- TCP
- Network Interface
- Interface abstraction
- Define structure for logical interface abstraction (struct netif)
- Support multiple address family and logical interfaces
- Configuration
- Makeshift systemcalls and commands
- ifget
- ifset
- ifup
- ifdown
- Makeshift systemcalls and commands
- Interface abstraction
- Socket API
- Systemcalls
- socket
- bind
- connect
- listen
- accept
- recv
- send
- recvfrom
- sendto
- Socket descriptor (compatible with File descriptor)
- Socket address (struct sockaddr)
- Systemcalls
- ARP resolution waiting queue (Currently discards data)
- TCP timer (Currently retransmission timer is not working)
- DHCP client
- DNS stub resolver
xv6: Under the MIT License. See LICENSE file.
Additional code: Under the MIT License. See header of each source code.