code: func NewRfc2136Provider(host string, port int, zoneName string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter DomainFilter, dryRun bool, actions rfc2136Actions) (Provider, error) {
  	secretAlgChecked, ok := tsigAlgs[secretAlg]
  	if !ok && !insecure {
  		return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg)
  	}
  
  	r := &rfc2136Provider{
  		nameserver:   net.JoinHostPort(host, strconv.Itoa(port)),
  		zoneName:     dns.Fqdn(zoneName),
  		insecure:     insecure,
  		domainFilter: domainFilter,
  		dryRun:       dryRun,
  		axfr:         axfr,
  	}
  	if actions != nil {
  		r.actions = actions
  	} else {
  		r.actions = r
  	}
  
  	if !insecure {
  		r.tsigKeyName = dns.Fqdn(keyName)
  		r.tsigSecret = secret
  		r.tsigSecretAlg = secretAlgChecked
  	}
  
  	log.Infof("Configured RFC2136 with zone '%s' and nameserver '%s'", r.zoneName, r.nameserver)
  	return r, nil
  }
docs: // NewRfc2136Provider is a factory function for OpenStack rfc2136 providers