interface.go 960 B

123456789101112131415161718192021222324252627282930313233343536
  1. package platform
  2. import (
  3. "context"
  4. "io"
  5. "net/netip"
  6. "github.com/sagernet/sing-box/adapter"
  7. "github.com/sagernet/sing-box/common/process"
  8. "github.com/sagernet/sing-box/option"
  9. "github.com/sagernet/sing-tun"
  10. "github.com/sagernet/sing/common/control"
  11. "github.com/sagernet/sing/common/logger"
  12. )
  13. type Interface interface {
  14. Initialize(ctx context.Context, router adapter.Router) error
  15. UsePlatformAutoDetectInterfaceControl() bool
  16. AutoDetectInterfaceControl() control.Func
  17. OpenTun(options *tun.Options, platformOptions option.TunPlatformOptions) (tun.Tun, error)
  18. UsePlatformDefaultInterfaceMonitor() bool
  19. CreateDefaultInterfaceMonitor(logger logger.Logger) tun.DefaultInterfaceMonitor
  20. UsePlatformInterfaceGetter() bool
  21. Interfaces() ([]NetworkInterface, error)
  22. UnderNetworkExtension() bool
  23. ClearDNSCache()
  24. process.Searcher
  25. io.Writer
  26. }
  27. type NetworkInterface struct {
  28. Index int
  29. MTU int
  30. Name string
  31. Addresses []netip.Prefix
  32. }