Support UDP dialling with gvisor (#1181)

This commit is contained in:
Jack Doan
2024-08-26 10:38:32 -07:00
committed by GitHub
parent 0736cfa562
commit 3dc56e1184
2 changed files with 58 additions and 24 deletions

View File

@@ -4,6 +4,7 @@ import (
"bufio"
"fmt"
"log"
"net"
"github.com/slackhq/nebula/config"
"github.com/slackhq/nebula/service"
@@ -54,16 +55,16 @@ pki:
cert: /home/rice/Developer/nebula-config/app.crt
key: /home/rice/Developer/nebula-config/app.key
`
var config config.C
if err := config.LoadString(configStr); err != nil {
var cfg config.C
if err := cfg.LoadString(configStr); err != nil {
return err
}
service, err := service.New(&config)
svc, err := service.New(&cfg)
if err != nil {
return err
}
ln, err := service.Listen("tcp", ":1234")
ln, err := svc.Listen("tcp", ":1234")
if err != nil {
return err
}
@@ -73,16 +74,24 @@ pki:
log.Printf("accept error: %s", err)
break
}
defer conn.Close()
defer func(conn net.Conn) {
_ = conn.Close()
}(conn)
log.Printf("got connection")
conn.Write([]byte("hello world\n"))
_, err = conn.Write([]byte("hello world\n"))
if err != nil {
log.Printf("write error: %s", err)
}
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
message := scanner.Text()
fmt.Fprintf(conn, "echo: %q\n", message)
_, err = fmt.Fprintf(conn, "echo: %q\n", message)
if err != nil {
log.Printf("write error: %s", err)
}
log.Printf("got message %q", message)
}
@@ -92,8 +101,8 @@ pki:
}
}
service.Close()
if err := service.Wait(); err != nil {
_ = svc.Close()
if err := svc.Wait(); err != nil {
return err
}
return nil