interface.go 943 B

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