udp_linux_reload_test.go 864 B

12345678910111213141516171819202122232425262728293031
  1. //go:build linux && !android && !e2e_testing
  2. package udp
  3. import (
  4. "net/netip"
  5. "os"
  6. "testing"
  7. "github.com/slackhq/nebula/config"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/stretchr/testify/require"
  10. )
  11. // A setting the kernel refuses fails the reload
  12. func TestReloadConfig_RefusedSettingFailsTheReload(t *testing.T) {
  13. if os.Geteuid() == 0 {
  14. t.Skip("root may set listen.so_mark, run as an unprivileged user")
  15. }
  16. conn, err := NewListener(testLogger(), Settings{Listen: netip.MustParseAddrPort("127.0.0.1:0"), Batch: 1})
  17. require.NoError(t, err)
  18. t.Cleanup(func() { _ = conn.Close() })
  19. c := config.NewC(testLogger())
  20. require.NoError(t, c.LoadString("listen:\n port: 0\n"))
  21. c.RegisterReloadCallback(conn.ReloadConfig)
  22. res := c.ReloadConfigString("listen:\n port: 0\n so_mark: 42\n")
  23. require.NoError(t, res.Err)
  24. assert.True(t, res.Failed)
  25. }