network.go 1.3 KB

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