diff options
Diffstat (limited to 'cmd/pkg/protocol.go')
-rw-r--r-- | cmd/pkg/protocol.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/cmd/pkg/protocol.go b/cmd/pkg/protocol.go new file mode 100644 index 0000000..84444c3 --- /dev/null +++ b/cmd/pkg/protocol.go @@ -0,0 +1,66 @@ +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 +} |