network.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. NetworkStrategy *C.NetworkStrategy
  28. NetworkType []C.InterfaceType
  29. FallbackNetworkType []C.InterfaceType
  30. FallbackDelay time.Duration
  31. BindInterface string
  32. RoutingMark uint32
  33. }
  34. type InterfaceUpdateListener interface {
  35. InterfaceUpdated()
  36. }
  37. type WIFIState struct {
  38. SSID string
  39. BSSID string
  40. }
  41. type NetworkInterface struct {
  42. control.Interface
  43. Type C.InterfaceType
  44. DNSServers []string
  45. Expensive bool
  46. Constrained bool
  47. }