+ AVAHI_CHECK_VALIDITY_RETURN_NULL(s, r->key->clazz == AVAHI_DNS_CLASS_IN, AVAHI_ERR_INVALID_DNS_CLASS);
+ AVAHI_CHECK_VALIDITY_RETURN_NULL(s,
+ (r->key->type != 0) &&
+ (r->key->type != AVAHI_DNS_TYPE_ANY) &&
+ (r->key->type != AVAHI_DNS_TYPE_OPT) &&
+ (r->key->type != AVAHI_DNS_TYPE_TKEY) &&
+ (r->key->type != AVAHI_DNS_TYPE_TSIG) &&
+ (r->key->type != AVAHI_DNS_TYPE_IXFR) &&
+ (r->key->type != AVAHI_DNS_TYPE_AXFR), AVAHI_ERR_INVALID_DNS_TYPE);
+
+ transport_flags_from_domain(s, &flags, r->key->name);
+ AVAHI_CHECK_VALIDITY_RETURN_NULL(s, flags & AVAHI_PUBLISH_USE_MULTICAST, AVAHI_ERR_NOT_SUPPORTED);
+ AVAHI_CHECK_VALIDITY_RETURN_NULL(s, !s->config.disable_publishing, AVAHI_ERR_NOT_PERMITTED);
+ AVAHI_CHECK_VALIDITY_RETURN_NULL(s,
+ !g ||
+ (g->state != AVAHI_ENTRY_GROUP_ESTABLISHED && g->state != AVAHI_ENTRY_GROUP_REGISTERING) ||
+ (flags & AVAHI_PUBLISH_UPDATE), AVAHI_ERR_BAD_STATE);
+