config.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package freedom
  2. var strategy = [][]byte{
  3. // name strategy, prefer, fallback
  4. {0, 0, 0}, // AsIs none, /, /
  5. {1, 0, 0}, // UseIP use, both, none
  6. {1, 4, 0}, // UseIPv4 use, 4, none
  7. {1, 6, 0}, // UseIPv6 use, 6, none
  8. {1, 4, 6}, // UseIPv4v6 use, 4, 6
  9. {1, 6, 4}, // UseIPv6v4 use, 6, 4
  10. {2, 0, 0}, // ForceIP force, both, none
  11. {2, 4, 0}, // ForceIPv4 force, 4, none
  12. {2, 6, 0}, // ForceIPv6 force, 6, none
  13. {2, 4, 6}, // ForceIPv4v6 force, 4, 6
  14. {2, 6, 4}, // ForceIPv6v4 force, 6, 4
  15. }
  16. func (c *Config) hasStrategy() bool {
  17. return strategy[c.DomainStrategy][0] != 0
  18. }
  19. func (c *Config) forceIP() bool {
  20. return strategy[c.DomainStrategy][0] == 2
  21. }
  22. func (c *Config) preferIP4() bool {
  23. return strategy[c.DomainStrategy][1] == 4 || strategy[c.DomainStrategy][1] == 0
  24. }
  25. func (c *Config) preferIP6() bool {
  26. return strategy[c.DomainStrategy][1] == 6 || strategy[c.DomainStrategy][1] == 0
  27. }
  28. func (c *Config) hasFallback() bool {
  29. return strategy[c.DomainStrategy][2] != 0
  30. }
  31. func (c *Config) fallbackIP4() bool {
  32. return strategy[c.DomainStrategy][2] == 4
  33. }
  34. func (c *Config) fallbackIP6() bool {
  35. return strategy[c.DomainStrategy][2] == 6
  36. }