calculated_remote_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package nebula
  2. import (
  3. "net/netip"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestCalculatedRemoteApply(t *testing.T) {
  9. // Test v4 addresses
  10. ipNet := netip.MustParsePrefix("192.168.1.0/24")
  11. c, err := newCalculatedRemote(ipNet, ipNet, 4242)
  12. require.NoError(t, err)
  13. input, err := netip.ParseAddr("10.0.10.182")
  14. require.NoError(t, err)
  15. expected, err := netip.ParseAddr("192.168.1.182")
  16. require.NoError(t, err)
  17. assert.Equal(t, netAddrToProtoV4AddrPort(expected, 4242), c.ApplyV4(input))
  18. // Test v6 addresses
  19. ipNet = netip.MustParsePrefix("ffff:ffff:ffff:ffff::0/64")
  20. c, err = newCalculatedRemote(ipNet, ipNet, 4242)
  21. require.NoError(t, err)
  22. input, err = netip.ParseAddr("beef:beef:beef:beef:beef:beef:beef:beef")
  23. require.NoError(t, err)
  24. expected, err = netip.ParseAddr("ffff:ffff:ffff:ffff:beef:beef:beef:beef")
  25. require.NoError(t, err)
  26. assert.Equal(t, netAddrToProtoV6AddrPort(expected, 4242), c.ApplyV6(input))
  27. // Test v6 addresses part 2
  28. ipNet = netip.MustParsePrefix("ffff:ffff:ffff:ffff:ffff::0/80")
  29. c, err = newCalculatedRemote(ipNet, ipNet, 4242)
  30. require.NoError(t, err)
  31. input, err = netip.ParseAddr("beef:beef:beef:beef:beef:beef:beef:beef")
  32. require.NoError(t, err)
  33. expected, err = netip.ParseAddr("ffff:ffff:ffff:ffff:ffff:beef:beef:beef")
  34. require.NoError(t, err)
  35. assert.Equal(t, netAddrToProtoV6AddrPort(expected, 4242), c.ApplyV6(input))
  36. // Test v6 addresses part 2
  37. ipNet = netip.MustParsePrefix("ffff:ffff:ffff::0/48")
  38. c, err = newCalculatedRemote(ipNet, ipNet, 4242)
  39. require.NoError(t, err)
  40. input, err = netip.ParseAddr("beef:beef:beef:beef:beef:beef:beef:beef")
  41. require.NoError(t, err)
  42. expected, err = netip.ParseAddr("ffff:ffff:ffff:beef:beef:beef:beef:beef")
  43. require.NoError(t, err)
  44. assert.Equal(t, netAddrToProtoV6AddrPort(expected, 4242), c.ApplyV6(input))
  45. }
  46. func Test_newCalculatedRemote(t *testing.T) {
  47. c, err := newCalculatedRemote(netip.MustParsePrefix("1::1/128"), netip.MustParsePrefix("1.0.0.0/32"), 4242)
  48. require.EqualError(t, err, "invalid mask: 1.0.0.0/32 for cidr: 1::1/128")
  49. require.Nil(t, c)
  50. c, err = newCalculatedRemote(netip.MustParsePrefix("1.0.0.0/32"), netip.MustParsePrefix("1::1/128"), 4242)
  51. require.EqualError(t, err, "invalid mask: 1::1/128 for cidr: 1.0.0.0/32")
  52. require.Nil(t, c)
  53. c, err = newCalculatedRemote(netip.MustParsePrefix("1.0.0.0/32"), netip.MustParsePrefix("1.0.0.0/32"), 4242)
  54. require.NoError(t, err)
  55. require.NotNil(t, c)
  56. c, err = newCalculatedRemote(netip.MustParsePrefix("1::1/128"), netip.MustParsePrefix("1::1/128"), 4242)
  57. require.NoError(t, err)
  58. require.NotNil(t, c)
  59. }