network.go 1.3 KB

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