network.go 1.3 KB

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