aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-70.local>2023-10-02 19:22:21 -0400
committerDavid Doan <daviddoan@Davids-MacBook-Pro-70.local>2023-10-02 19:22:21 -0400
commit7bb2015a1f2de7a31c3f2b3092a574602a2a3d53 (patch)
tree828a1c1ac6237bed4db915b6e96fb29e735fea0f /cmd
parent18ff290bd2545a5a681d047a70576d694a9ab20b (diff)
initializations
Diffstat (limited to 'cmd')
-rw-r--r--cmd/pkg/protocol.go66
-rw-r--r--cmd/vhost/main.go17
-rw-r--r--cmd/vrouter/main.go17
3 files changed, 100 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
+}
diff --git a/cmd/vhost/main.go b/cmd/vhost/main.go
new file mode 100644
index 0000000..82b8195
--- /dev/null
+++ b/cmd/vhost/main.go
@@ -0,0 +1,17 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+)
+
+func main() {
+
+ scanner := bufio.NewScanner(os.Stdin)
+
+ for scanner.Scan() {
+ line := scanner.Text()
+ fmt.Println(line)
+ }
+} \ No newline at end of file
diff --git a/cmd/vrouter/main.go b/cmd/vrouter/main.go
new file mode 100644
index 0000000..82b8195
--- /dev/null
+++ b/cmd/vrouter/main.go
@@ -0,0 +1,17 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+)
+
+func main() {
+
+ scanner := bufio.NewScanner(os.Stdin)
+
+ for scanner.Scan() {
+ line := scanner.Text()
+ fmt.Println(line)
+ }
+} \ No newline at end of file