Zeal Networking Stack Notes Departures from Shrine: ARP Cache is Hashtable. Keys are U32 ip addresses converted to "%X" string. DNS Cache is Hashtable. Keys are U8 *hostname. NetFIFO is NetQueue. If problems arise, maybe set a #define max for the length of the Queue. Not defining ntohl and friends. Using Endian functions. Many file global vars have been condensed into global classes. Sockets are a non-standard finite state machine. Protocols extend these to create protocol-specific sockets. Stack progress: (# done, ~ WIP, . N/A) # PCNet-II Driver . Other Network Card Drivers? See Roadmap. # NetQueue # Ethernet - double check. # ARP (Address Resolution Protocol) - double check. # Sockets - Implemented a Finite State Machine through Socket function calls. Sockets themselves do nothing, all calls simply do/don't alter socket state. Protocols will need to detect socket states and respond appropriately. - keep eyes on verifying socket logic sanity. # IPV4 (Internet Protocol Version 4) - double check, some TODOs. ~ ICMP (Internet Control Message Protocol) - needs ICMPSendRequest implemented. ~ TCP (Transmission Control Protocol) - needs much testing, still many bugs/oddities. - needs reviewing RFC for better compliance. # UDP (User Datagram Protocol) - double check, some TODOs. ~ DNS (Domain Name System) - needs clarifying/rewriting in certain methods. ~ DHCP (Dynamic Host Configuration Protocol) - needs clarifying/rewriting in certain methods. # NetHandler - Uses a switch case with packet ethertype, then directly calls the appropriate handler. - IPV4Handler was moved to NetHandler file.