network.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package adapter
  2. import (
  3. "time"
  4. C "github.com/sagernet/sing-box/constant"
  5. "github.com/sagernet/sing-tun"
  6. "github.com/sagernet/sing/common/control"
  7. )
  8. type NetworkManager interface {
  9. Lifecycle
  10. InterfaceFinder() control.InterfaceFinder
  11. UpdateInterfaces() error
  12. DefaultNetworkInterface() *NetworkInterface
  13. NetworkInterfaces() []NetworkInterface
  14. AutoDetectInterface() bool
  15. AutoDetectInterfaceFunc() control.Func
  16. ProtectFunc() control.Func
  17. DefaultOptions() NetworkOptions
  18. RegisterAutoRedirectOutputMark(mark uint32) error
  19. AutoRedirectOutputMark() uint32
  20. NetworkMonitor() tun.NetworkUpdateMonitor
  21. InterfaceMonitor() tun.DefaultInterfaceMonitor
  22. PackageManager() tun.PackageManager
  23. WIFIState() WIFIState
  24. ResetNetwork()
  25. }
  26. type NetworkOptions struct {
  27. DefaultNetworkStrategy C.NetworkStrategy
  28. DefaultFallbackDelay time.Duration
  29. DefaultInterface string
  30. DefaultMark uint32
  31. }
  32. type InterfaceUpdateListener interface {
  33. InterfaceUpdated()
  34. }
  35. type WIFIState struct {
  36. SSID string
  37. BSSID string
  38. }
  39. type NetworkInterface struct {
  40. control.Interface
  41. Type string
  42. DNSServers []string
  43. Expensive bool
  44. Constrained bool
  45. }