From 88ce0edf76c746fb7f0d317b264c741bb041f96b Mon Sep 17 00:00:00 2001 From: Nate Brown Date: Wed, 10 Nov 2021 21:52:26 -0600 Subject: [PATCH] Start the overlay package with the old Inside interface (#576) --- interface.go | 15 +++------------ main.go | 3 ++- overlay/device.go | 15 +++++++++++++++ tun_windows.go | 7 ++++--- 4 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 overlay/device.go diff --git a/interface.go b/interface.go index bf79f0f..610578d 100644 --- a/interface.go +++ b/interface.go @@ -4,7 +4,6 @@ import ( "context" "errors" "io" - "net" "os" "runtime" "sync/atomic" @@ -16,24 +15,16 @@ import ( "github.com/slackhq/nebula/config" "github.com/slackhq/nebula/firewall" "github.com/slackhq/nebula/iputil" + "github.com/slackhq/nebula/overlay" "github.com/slackhq/nebula/udp" ) const mtu = 9001 -type Inside interface { - io.ReadWriteCloser - Activate() error - CidrNet() *net.IPNet - DeviceName() string - WriteRaw([]byte) error - NewMultiQueueReader() (io.ReadWriteCloser, error) -} - type InterfaceConfig struct { HostMap *HostMap Outside *udp.Conn - Inside Inside + Inside overlay.Device certState *CertState Cipher string Firewall *Firewall @@ -57,7 +48,7 @@ type InterfaceConfig struct { type Interface struct { hostMap *HostMap outside *udp.Conn - inside Inside + inside overlay.Device certState *CertState cipher string firewall *Firewall diff --git a/main.go b/main.go index 8dc9536..2d62176 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "github.com/sirupsen/logrus" "github.com/slackhq/nebula/config" "github.com/slackhq/nebula/iputil" + "github.com/slackhq/nebula/overlay" "github.com/slackhq/nebula/sshd" "github.com/slackhq/nebula/udp" "github.com/slackhq/nebula/util" @@ -137,7 +138,7 @@ func Main(c *config.C, configTest bool, buildVersion string, logger *logrus.Logg l.WithField("duration", conntrackCacheTimeout).Info("Using routine-local conntrack cache") } - var tun Inside + var tun overlay.Device if !configTest { c.CatchHUP(ctx) diff --git a/overlay/device.go b/overlay/device.go new file mode 100644 index 0000000..24037af --- /dev/null +++ b/overlay/device.go @@ -0,0 +1,15 @@ +package overlay + +import ( + "io" + "net" +) + +type Device interface { + io.ReadWriteCloser + Activate() error + CidrNet() *net.IPNet + DeviceName() string + WriteRaw([]byte) error + NewMultiQueueReader() (io.ReadWriteCloser, error) +} diff --git a/tun_windows.go b/tun_windows.go index 5c73459..d55ae5f 100644 --- a/tun_windows.go +++ b/tun_windows.go @@ -13,10 +13,11 @@ import ( "syscall" "github.com/sirupsen/logrus" + "github.com/slackhq/nebula/overlay" ) type Tun struct { - Inside + overlay.Device } func newTunFromFd(l *logrus.Logger, deviceFd int, cidr *net.IPNet, defaultMTU int, routes []route, unsafeRoutes []route, txQueueLen int) (ifce *Tun, err error) { @@ -34,7 +35,7 @@ func newTun(l *logrus.Logger, deviceName string, cidr *net.IPNet, defaultMTU int useWintun = false } - var inside Inside + var inside overlay.Device if useWintun { inside, err = newWinTun(deviceName, cidr, defaultMTU, unsafeRoutes, txQueueLen) if err != nil { @@ -48,7 +49,7 @@ func newTun(l *logrus.Logger, deviceName string, cidr *net.IPNet, defaultMTU int } return &Tun{ - Inside: inside, + Device: inside, }, nil }