summaryrefslogtreecommitdiffstats
path: root/rr.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-04-14 01:41:09 +0000
committerLennart Poettering <lennart@poettering.net>2005-04-14 01:41:09 +0000
commit0a985aa6c5453fe09bf0a3a79fe66d49c698b309 (patch)
tree6ce11667f3d215a8dfeba11589b081ca29414557 /rr.c
parentfc174c871b4f85e558766c1ca55661fa7b1b4c9a (diff)
add client part of probing
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@25 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'rr.c')
-rw-r--r--rr.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/rr.c b/rr.c
index fe475eb..f72557b 100644
--- a/rr.c
+++ b/rr.c
@@ -121,6 +121,9 @@ void flx_record_unref(flxRecord *r) {
}
const gchar *flx_dns_class_to_string(guint16 class) {
+ if (class & FLX_DNS_CACHE_FLUSH)
+ return "FLUSH";
+
if (class == FLX_DNS_CLASS_IN)
return "IN";
@@ -143,6 +146,8 @@ const gchar *flx_dns_type_to_string(guint16 type) {
return "TXT";
case FLX_DNS_TYPE_SRV:
return "SRV";
+ case FLX_DNS_TYPE_ANY:
+ return "ANY";
default:
return NULL;
}
@@ -344,3 +349,49 @@ flxRecord *flx_record_copy(flxRecord *r) {
return copy;
}
+
+
+guint flx_key_get_estimate_size(flxKey *k) {
+ g_assert(k);
+
+ return strlen(k->name)+1+4;
+}
+
+guint flx_record_get_estimate_size(flxRecord *r) {
+ guint n;
+ g_assert(r);
+
+ n = flx_key_get_estimate_size(r->key) + 4 + 2;
+
+ switch (r->key->type) {
+ case FLX_DNS_TYPE_PTR:
+ case FLX_DNS_TYPE_CNAME:
+ n += strlen(r->data.ptr.name) + 1;
+ break;
+
+ case FLX_DNS_TYPE_SRV:
+ n += 6 + strlen(r->data.srv.name) + 1;
+ break;
+
+ case FLX_DNS_TYPE_HINFO:
+ n += strlen(r->data.hinfo.os) + 1 + strlen(r->data.hinfo.cpu) + 1;
+ break;
+
+ case FLX_DNS_TYPE_TXT:
+ n += flx_string_list_serialize(r->data.txt.string_list, NULL, 0);
+ break;
+
+ case FLX_DNS_TYPE_A:
+ n += sizeof(flxIPv4Address);
+ break;
+
+ case FLX_DNS_TYPE_AAAA:
+ n += sizeof(flxIPv6Address);
+ break;
+
+ default:
+ n += r->data.generic.size;
+ }
+
+ return n;
+}