aboutsummaryrefslogtreecommitdiff
path: root/cmd/pkg/protocol.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/pkg/protocol.go')
-rw-r--r--cmd/pkg/protocol.go66
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
+}