code: func FindAvailableNetwork(list []*net.IPNet) (*net.IPNet, error) {
  	// We don't check for an error here, because we don't really care if we
  	// can't read /etc/resolv.conf. So instead we skip the append if resolvConf
  	// is nil. It either doesn't exist, or we can't read it for some reason.
  	var nameservers []string
  	if rc, err := resolvconf.Get(); err == nil {
  		nameservers = resolvconf.GetNameserversAsCIDR(rc.Content)
  	}
  	for _, nw := range list {
  		if err := CheckNameserverOverlaps(nameservers, nw); err == nil {
  			if err := CheckRouteOverlaps(nw); err == nil {
  				return nw, nil
  			}
  		}
  	}
  	return nil, fmt.Errorf("no available network")
  }
docs: // FindAvailableNetwork returns a network from the passed list which does not
  // overlap with existing interfaces in the system