+
+int avahi_key_is_valid(AvahiKey *k) {
+ assert(k);
+
+ if (!avahi_is_valid_domain_name(k->name))
+ return 0;
+
+ return 1;
+}
+
+int avahi_record_is_valid(AvahiRecord *r) {
+ assert(r);
+
+ if (!avahi_key_is_valid(r->key))
+ return 0;
+
+ switch (r->key->type) {
+
+ case AVAHI_DNS_TYPE_PTR:
+ case AVAHI_DNS_TYPE_CNAME:
+ return avahi_is_valid_domain_name(r->data.ptr.name);
+
+ case AVAHI_DNS_TYPE_SRV:
+ return avahi_is_valid_domain_name(r->data.srv.name);
+
+ case AVAHI_DNS_TYPE_HINFO:
+ return
+ strlen(r->data.hinfo.os) <= 255 &&
+ strlen(r->data.hinfo.cpu) <= 255;
+
+
+ case AVAHI_DNS_TYPE_TXT: {
+
+ AvahiStringList *strlst;
+
+ for (strlst = r->data.txt.string_list; strlst; strlst = strlst->next)
+ if (strlst->size > 255)
+ return 0;
+
+ return 1;
+ }
+ }
+
+
+ return 1;
+}