tun_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package overlay
  2. import (
  3. "bytes"
  4. "net/netip"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestLinkLocal(t *testing.T) {
  9. r := bytes.NewReader([]byte{42, 99})
  10. result := genLinkLocal(r)
  11. assert.Equal(t, netip.MustParsePrefix("169.254.42.99/32"), result, "genLinkLocal with a deterministic randomizer")
  12. result = genLinkLocal(nil)
  13. assert.True(t, result.IsValid(), "genLinkLocal with nil randomizer should be valid")
  14. assert.True(t, result.Addr().IsLinkLocalUnicast(), "genLinkLocal with nil randomizer should be link-local")
  15. result = coerceLinkLocal([]byte{169, 254, 100, 50})
  16. assert.Equal(t, netip.MustParsePrefix("169.254.100.50/32"), result, "coerceLinkLocal should pass through normal values")
  17. result = coerceLinkLocal([]byte{169, 254, 0, 0})
  18. assert.Equal(t, netip.MustParsePrefix("169.254.0.1/32"), result, "coerceLinkLocal should bump .0 last octet to .1")
  19. result = coerceLinkLocal([]byte{169, 254, 255, 255})
  20. assert.Equal(t, netip.MustParsePrefix("169.254.255.254/32"), result, "coerceLinkLocal should bump broadcast 255.255 to 255.254")
  21. result = coerceLinkLocal([]byte{169, 254, 0, 1})
  22. assert.Equal(t, netip.MustParsePrefix("169.254.0.1/32"), result, "coerceLinkLocal should leave .1 last octet unchanged")
  23. result = coerceLinkLocal([]byte{169, 254, 255, 254})
  24. assert.Equal(t, netip.MustParsePrefix("169.254.255.254/32"), result, "coerceLinkLocal should leave 255.254 unchanged")
  25. result = coerceLinkLocal([]byte{169, 254, 255, 100})
  26. assert.Equal(t, netip.MustParsePrefix("169.254.255.100/32"), result, "coerceLinkLocal should leave 255.100 unchanged")
  27. }