package pkg import ( "net" // "netip" ) const ( MAX_IP_PACKET_SIZE = 1400 ) func Initialize(config IpConfig) (error) { // ip config from go parser // initialize ip table // error check // different for router and host?? // host // create node interfaces? } func ipRecv(data []byte) (error) { // parse ip header // check ip checksum // check ip version // check ip length // check ip ttl // check ip protocol // check ip destination // check ip source // check forwarding table } func ipForwarding(dst netip.Addr, protocolNum uint16, data []byte) (error) { // send test packest to dst // lookup forwarding table // locally // not locally } type HandlerFunc = func(*Packet, []interface{}) (error) { // do smth with packet } func RegisterRecvHandler(protocolNum uint8, callbackFunc HandlerFunc) (error) { } func routeRip() (error) { // communicate with other routers // update forwarding table }