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.