fake_netfilter.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build linux
  4. package linuxfw
  5. import (
  6. "net/netip"
  7. "tailscale.com/types/logger"
  8. )
  9. // FakeNetfilterRunner is a fake netfilter runner for tests.
  10. type FakeNetfilterRunner struct {
  11. // services is a map that tracks the firewall rules added/deleted via
  12. // EnsureDNATRuleForSvc/DeleteDNATRuleForSvc.
  13. services map[string]struct {
  14. TailscaleServiceIP netip.Addr
  15. ClusterIP netip.Addr
  16. }
  17. }
  18. // NewFakeNetfilterRunner creates a new FakeNetfilterRunner.
  19. func NewFakeNetfilterRunner() *FakeNetfilterRunner {
  20. return &FakeNetfilterRunner{
  21. services: make(map[string]struct {
  22. TailscaleServiceIP netip.Addr
  23. ClusterIP netip.Addr
  24. }),
  25. }
  26. }
  27. func (f *FakeNetfilterRunner) EnsureDNATRuleForSvc(svcName string, origDst, dst netip.Addr) error {
  28. f.services[svcName] = struct {
  29. TailscaleServiceIP netip.Addr
  30. ClusterIP netip.Addr
  31. }{origDst, dst}
  32. return nil
  33. }
  34. func (f *FakeNetfilterRunner) DeleteDNATRuleForSvc(svcName string, origDst, dst netip.Addr) error {
  35. delete(f.services, svcName)
  36. return nil
  37. }
  38. func (f *FakeNetfilterRunner) GetServiceState() map[string]struct {
  39. TailscaleServiceIP netip.Addr
  40. ClusterIP netip.Addr
  41. } {
  42. return f.services
  43. }
  44. func (f *FakeNetfilterRunner) HasIPV6() bool {
  45. return true
  46. }
  47. func (f *FakeNetfilterRunner) HasIPV6Filter() bool {
  48. return true
  49. }
  50. func (f *FakeNetfilterRunner) HasIPV6NAT() bool {
  51. return true
  52. }
  53. func (f *FakeNetfilterRunner) AddBase(tunname string) error { return nil }
  54. func (f *FakeNetfilterRunner) DelBase() error { return nil }
  55. func (f *FakeNetfilterRunner) AddChains() error { return nil }
  56. func (f *FakeNetfilterRunner) DelChains() error { return nil }
  57. func (f *FakeNetfilterRunner) AddHooks() error { return nil }
  58. func (f *FakeNetfilterRunner) DelHooks(logf logger.Logf) error { return nil }
  59. func (f *FakeNetfilterRunner) AddSNATRule() error { return nil }
  60. func (f *FakeNetfilterRunner) DelSNATRule() error { return nil }
  61. func (f *FakeNetfilterRunner) AddStatefulRule(tunname string) error { return nil }
  62. func (f *FakeNetfilterRunner) DelStatefulRule(tunname string) error { return nil }
  63. func (f *FakeNetfilterRunner) AddLoopbackRule(addr netip.Addr) error { return nil }
  64. func (f *FakeNetfilterRunner) DelLoopbackRule(addr netip.Addr) error { return nil }
  65. func (f *FakeNetfilterRunner) AddDNATRule(origDst, dst netip.Addr) error { return nil }
  66. func (f *FakeNetfilterRunner) DNATWithLoadBalancer(origDst netip.Addr, dsts []netip.Addr) error {
  67. return nil
  68. }
  69. func (f *FakeNetfilterRunner) EnsureSNATForDst(src, dst netip.Addr) error { return nil }
  70. func (f *FakeNetfilterRunner) DNATNonTailscaleTraffic(tun string, dst netip.Addr) error { return nil }
  71. func (f *FakeNetfilterRunner) ClampMSSToPMTU(tun string, addr netip.Addr) error { return nil }
  72. func (f *FakeNetfilterRunner) AddMagicsockPortRule(port uint16, network string) error { return nil }
  73. func (f *FakeNetfilterRunner) DelMagicsockPortRule(port uint16, network string) error { return nil }
  74. func (f *FakeNetfilterRunner) DeletePortMapRuleForSvc(svc, tun string, targetIP netip.Addr, pm PortMap) error {
  75. return nil
  76. }
  77. func (f *FakeNetfilterRunner) DeleteSvc(svc, tun string, targetIPs []netip.Addr, pms []PortMap) error {
  78. return nil
  79. }
  80. func (f *FakeNetfilterRunner) EnsurePortMapRuleForSvc(svc, tun string, targetIP netip.Addr, pm PortMap) error {
  81. return nil
  82. }