diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-08-05 18:59:21 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-08-05 18:59:21 +0000 |
commit | 0632e854728e8e64552ae08f90852d4a2658539e (patch) | |
tree | 0fab7d52e01da7ab9b81b8409dcf70cceb7d2852 /avahi-common/rr.c | |
parent | d76069e946b4e89c828c96340677e40f583080c9 (diff) |
* add proper error codes and patch everything to make use of it
* parameter validity checkin in all user visible functions of libavahi-core
* two new python tools/examples avahi-resolve-host-name and avahi-resolve-address
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@238 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-common/rr.c')
-rw-r--r-- | avahi-common/rr.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/avahi-common/rr.c b/avahi-common/rr.c index c510e7f..1a30146 100644 --- a/avahi-common/rr.c +++ b/avahi-common/rr.c @@ -552,3 +552,49 @@ gboolean avahi_record_is_goodbye(AvahiRecord *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; +} |