network.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package constant
  2. import (
  3. "github.com/sagernet/sing/common"
  4. F "github.com/sagernet/sing/common/format"
  5. )
  6. const (
  7. InterfaceTypeWIFI = "wifi"
  8. InterfaceTypeCellular = "cellular"
  9. InterfaceTypeEthernet = "ethernet"
  10. InterfaceTypeOther = "other"
  11. )
  12. type NetworkStrategy int
  13. const (
  14. NetworkStrategyDefault NetworkStrategy = iota
  15. NetworkStrategyFallback
  16. NetworkStrategyHybrid
  17. NetworkStrategyWIFI
  18. NetworkStrategyCellular
  19. NetworkStrategyEthernet
  20. NetworkStrategyWIFIOnly
  21. NetworkStrategyCellularOnly
  22. NetworkStrategyEthernetOnly
  23. )
  24. var (
  25. NetworkStrategyToString = map[NetworkStrategy]string{
  26. NetworkStrategyDefault: "default",
  27. NetworkStrategyFallback: "fallback",
  28. NetworkStrategyHybrid: "hybrid",
  29. NetworkStrategyWIFI: "wifi",
  30. NetworkStrategyCellular: "cellular",
  31. NetworkStrategyEthernet: "ethernet",
  32. NetworkStrategyWIFIOnly: "wifi_only",
  33. NetworkStrategyCellularOnly: "cellular_only",
  34. NetworkStrategyEthernetOnly: "ethernet_only",
  35. }
  36. StringToNetworkStrategy = common.ReverseMap(NetworkStrategyToString)
  37. )
  38. func (s NetworkStrategy) String() string {
  39. name, loaded := NetworkStrategyToString[s]
  40. if !loaded {
  41. return F.ToString(int(s))
  42. }
  43. return name
  44. }