| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package torrent
- import "strings"
- var allPeerNetworks = func() (ret []network) {
- for _, s := range []string{"tcp4", "tcp6", "udp4", "udp6"} {
- ret = append(ret, parseNetworkString(s))
- }
- return
- }()
- type network struct {
- Ipv4 bool
- Ipv6 bool
- Udp bool
- Tcp bool
- }
- func (n network) String() (ret string) {
- a := func(b bool, s string) {
- if b {
- ret += s
- }
- }
- a(n.Udp, "udp")
- a(n.Tcp, "tcp")
- a(n.Ipv4, "4")
- a(n.Ipv6, "6")
- return
- }
- func parseNetworkString(network string) (ret network) {
- c := func(s string) bool {
- return strings.Contains(network, s)
- }
- ret.Ipv4 = c("4")
- ret.Ipv6 = c("6")
- ret.Udp = c("udp")
- ret.Tcp = c("tcp")
- return
- }
- func peerNetworkEnabled(n network, cfg *ClientConfig) bool {
- if cfg.DisableUTP && n.Udp {
- return false
- }
- if cfg.DisableTCP && n.Tcp {
- return false
- }
- if cfg.DisableIPv6 && n.Ipv6 {
- return false
- }
- if cfg.DisableIPv4 && n.Ipv4 {
- return false
- }
- return true
- }
|