k = g_new(AvahiKey, 1);
k->ref = 1;
k->name = avahi_normalize_name(name);
- k->class = class;
+ k->clazz = class;
k->type = type;
/* g_message("%p %% ref=1", k); */
}
}
-
gchar *avahi_key_to_string(const AvahiKey *k) {
g_assert(k);
g_assert(k->ref >= 1);
return g_strdup_printf("%s\t%s\t%s",
k->name,
- avahi_dns_class_to_string(k->class),
+ avahi_dns_class_to_string(k->clazz),
avahi_dns_type_to_string(k->type));
}
return avahi_domain_equal(a->name, b->name) &&
a->type == b->type &&
- a->class == b->class;
+ a->clazz == b->clazz;
}
gboolean avahi_key_pattern_match(const AvahiKey *pattern, const AvahiKey *k) {
return avahi_domain_equal(pattern->name, k->name) &&
(pattern->type == k->type || pattern->type == AVAHI_DNS_TYPE_ANY) &&
- (pattern->class == k->class || pattern->type == AVAHI_DNS_CLASS_ANY);
+ (pattern->clazz == k->clazz || pattern->clazz == AVAHI_DNS_CLASS_ANY);
}
gboolean avahi_key_is_pattern(const AvahiKey *k) {
return
k->type == AVAHI_DNS_TYPE_ANY ||
- k->class == AVAHI_DNS_CLASS_ANY;
+ k->clazz == AVAHI_DNS_CLASS_ANY;
}
guint avahi_key_hash(const AvahiKey *k) {
return
avahi_domain_hash(k->name) +
k->type +
- k->class;
+ k->clazz;
}
static gboolean rdata_equal(const AvahiRecord *a, const AvahiRecord *b) {
if (a == b)
return 0;
- if ((r = uint16_cmp(a->key->class, b->key->class)) ||
+ if ((r = uint16_cmp(a->key->clazz, b->key->clazz)) ||
(r = uint16_cmp(a->key->type, b->key->type)))
return r;
return r->ttl == 0;
}
+
+gboolean avahi_key_valid(AvahiKey *k) {
+ g_assert(k);
+
+ if (!avahi_valid_domain_name(k->name))
+ return FALSE;
+
+ return TRUE;
+}
+
+gboolean avahi_record_valid(AvahiRecord *r) {
+ g_assert(r);
+
+ if (!avahi_key_valid(r->key))
+ return FALSE;
+
+ switch (r->key->type) {
+
+ case AVAHI_DNS_TYPE_PTR:
+ case AVAHI_DNS_TYPE_CNAME:
+ return avahi_valid_domain_name(r->data.ptr.name);
+
+ case AVAHI_DNS_TYPE_SRV:
+ return avahi_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 FALSE;
+
+ return TRUE;
+ }
+ }
+
+
+ return TRUE;
+}