mirror of
https://github.com/slackhq/nebula.git
synced 2026-11-15 18:36:52 +01:00
smoke-extra / freebsd-amd64 (push) Failing after 25s
smoke-extra / linux-amd64-ipv6disable (push) Failing after 13s
smoke-extra / netbsd-amd64 (push) Failing after 11s
smoke-extra / openbsd-amd64 (push) Failing after 12s
smoke-extra / linux-386 (push) Failing after 14s
smoke / Run multi node smoke test (push) Failing after 1m43s
Build and test / Static checks (push) Successful in 2m25s
Build and test / Test linux (push) Failing after 1m28s
Build and test / Test linux-pkcs11 (push) Failing after 2m5s
Build and test / Test linux-boringcrypto (push) Failing after 2m56s
Build and test / Test linux-fips140 (push) Failing after 3m3s
Build and test / Cross-build linux-arm (push) Successful in 3m14s
Build and test / Cross-build linux-mips (push) Successful in 3m48s
Build and test / Cross-build linux-other (push) Successful in 3m13s
Build and test / Cross-build windows (push) Successful in 1m3s
Build and test / Cross-build freebsd (push) Successful in 1m34s
Build and test / Cross-build netbsd (push) Successful in 1m36s
Build and test / Cross-build openbsd (push) Successful in 1m37s
Build and test / Cross-build mobile (push) Successful in 3m33s
smoke / Run self traffic smoke test on macOS (push) Canceled after 0s
Build and test / Test macos (push) Canceled after 0s
Build and test / Test windows (push) Canceled after 0s
Build and test / CI status (push) Canceled after 0s
smoke-extra / Run windows smoke test (push) Canceled after 0s
81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
//go:build (openbsd || netbsd) && !e2e_testing
|
|
|
|
package overlay
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"github.com/slackhq/nebula/config"
|
|
"github.com/slackhq/nebula/test"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// A tun.dev that isn't tunN is ignored like darwin does, and the first free tun is used. Only naming a different tun
|
|
// asks for a restart
|
|
func TestTunReloadDevRestart(t *testing.T) {
|
|
newWithDev := func(dev string) (*config.C, *tun, error) {
|
|
c := config.NewC(test.NewLogger())
|
|
require.NoError(t, c.LoadString("tun:\n dev: "+dev+"\n"))
|
|
tn, err := newTun(c, test.NewLogger(), []netip.Prefix{netip.MustParsePrefix("10.1.0.2/24")}, false)
|
|
if err == nil {
|
|
t.Cleanup(func() { _ = tn.Close() })
|
|
}
|
|
return c, tn, err
|
|
}
|
|
if _, _, err := newWithDev(""); err != nil {
|
|
t.Skipf("can't create a tun device here: %v", err)
|
|
}
|
|
c, tn, err := newWithDev("nope")
|
|
require.NoError(t, err, "a bad name should fall back to a free tun")
|
|
require.Regexp(t, `^tun[0-9]+$`, tn.Device)
|
|
|
|
for _, dev := range []string{"nope", "", tn.Device, "nope"} {
|
|
res := c.ReloadConfigString("tun:\n dev: " + dev + "\n")
|
|
require.NoError(t, res.Err)
|
|
assert.False(t, res.Failed, dev)
|
|
assert.False(t, res.RestartRequired, dev)
|
|
}
|
|
|
|
other := "tun0"
|
|
if tn.Device == other {
|
|
other = "tun1"
|
|
}
|
|
res := c.ReloadConfigString("tun:\n dev: " + other + "\n")
|
|
require.NoError(t, res.Err)
|
|
assert.Equal(t, []string{"tun.dev"}, res.RestartKeys)
|
|
}
|
|
|
|
// An empty tun.dev takes the first tun nothing else has open. Reloading it empty, or naming the one we have, needs
|
|
// no restart
|
|
func TestTunEmptyDevPicksAFreeOne(t *testing.T) {
|
|
newEmpty := func() (*config.C, *tun, error) {
|
|
c := config.NewC(test.NewLogger())
|
|
require.NoError(t, c.LoadString("tun: {}\n"))
|
|
tn, err := newTun(c, test.NewLogger(), []netip.Prefix{netip.MustParsePrefix("10.1.0.2/24")}, false)
|
|
if err == nil {
|
|
t.Cleanup(func() { _ = tn.Close() })
|
|
}
|
|
return c, tn, err
|
|
}
|
|
c, first, err := newEmpty()
|
|
if err != nil {
|
|
t.Skipf("can't create a tun device here: %v", err)
|
|
}
|
|
_, second, err := newEmpty()
|
|
require.NoError(t, err, "the second tun should skip the one the first has open")
|
|
assert.NotEqual(t, first.Device, second.Device)
|
|
|
|
for _, cfg := range []string{
|
|
"tun: {}\npunchy:\n punch: true\n",
|
|
"tun:\n dev: " + first.Device + "\n",
|
|
"tun: {}\n",
|
|
} {
|
|
res := c.ReloadConfigString(cfg)
|
|
require.NoError(t, res.Err)
|
|
assert.False(t, res.Failed)
|
|
assert.False(t, res.RestartRequired, cfg)
|
|
}
|
|
}
|