summaryrefslogtreecommitdiffstats
path: root/avahi-core/dns-test.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-10-25 19:24:40 +0000
committerLennart Poettering <lennart@poettering.net>2005-10-25 19:24:40 +0000
commit943a6b93697fc0a7bcd0cc574744d7de609c189c (patch)
tree2821ff9e179934f9170d62fe002124f14d1c0569 /avahi-core/dns-test.c
parent07e6c12e6281814797bf4973a6936f0951c65172 (diff)
* add new core API functions avahi_rdata_serialize() and avahi_rdata_parse()
* add new definition AVAHI_DNS_RDATA_MAX * update dns-test.c and add examples for avahi_rdata_{serialize,parse}() git-svn-id: file:///home/lennart/svn/public/avahi/trunk@867 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core/dns-test.c')
-rw-r--r--avahi-core/dns-test.c52
1 files changed, 43 insertions, 9 deletions
diff --git a/avahi-core/dns-test.c b/avahi-core/dns-test.c
index e5369a9..2336f42 100644
--- a/avahi-core/dns-test.c
+++ b/avahi-core/dns-test.c
@@ -24,43 +24,77 @@
#endif
#include <assert.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
#include <avahi-common/domain.h>
+#include <avahi-common/malloc.h>
#include "dns.h"
#include "log.h"
#include "util.h"
int main(int argc, char *argv[]) {
- char t[256];
+ char t[AVAHI_DOMAIN_NAME_MAX];
const char *a, *b, *c, *d;
AvahiDnsPacket *p;
+ AvahiRecord *r, *r2;
+ uint8_t rdata[AVAHI_DNS_RDATA_MAX];
+ size_t l;
p = avahi_dns_packet_new(0);
- avahi_dns_packet_append_name(p, a = "hello.hello.hello.de.");
- avahi_dns_packet_append_name(p, b = "this is a test.hello.de.");
- avahi_dns_packet_append_name(p, c = "this\\.is\\.a\\.test\\.with\\.dots.hello.de.");
- avahi_dns_packet_append_name(p, d = "this\\\\is another\\ \\test.hello.de.");
+ assert(avahi_dns_packet_append_name(p, a = "Ahello.hello.hello.de."));
+ assert(avahi_dns_packet_append_name(p, b = "Bthis is a test.hello.de."));
+ assert(avahi_dns_packet_append_name(p, c = "Cthis\\.is\\.a\\.test\\.with\\.dots.hello.de."));
+ assert(avahi_dns_packet_append_name(p, d = "Dthis\\\\is another test.hello.de."));
avahi_hexdump(AVAHI_DNS_PACKET_DATA(p), p->size);
- avahi_dns_packet_consume_name(p, t, sizeof(t));
+ assert(avahi_dns_packet_consume_name(p, t, sizeof(t)) == 0);
avahi_log_debug(">%s<", t);
assert(avahi_domain_equal(a, t));
- avahi_dns_packet_consume_name(p, t, sizeof(t));
+ assert(avahi_dns_packet_consume_name(p, t, sizeof(t)) == 0);
avahi_log_debug(">%s<", t);
assert(avahi_domain_equal(b, t));
- avahi_dns_packet_consume_name(p, t, sizeof(t));
+ assert(avahi_dns_packet_consume_name(p, t, sizeof(t)) == 0);
avahi_log_debug(">%s<", t);
assert(avahi_domain_equal(c, t));
- avahi_dns_packet_consume_name(p, t, sizeof(t));
+ assert(avahi_dns_packet_consume_name(p, t, sizeof(t)) == 0);
avahi_log_debug(">%s<", t);
assert(avahi_domain_equal(d, t));
avahi_dns_packet_free(p);
+
+ /* RDATA PARSING AND SERIALIZATION */
+
+ /* Create an AvahiRecord with some usful data */
+ r = avahi_record_new_full("foobar.local", AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_HINFO, AVAHI_DEFAULT_TTL);
+ assert(r);
+ r->data.hinfo.cpu = avahi_strdup("FOO");
+ r->data.hinfo.os = avahi_strdup("BAR");
+
+ /* Serialize it into a blob */
+ assert((l = avahi_rdata_serialize(r, rdata, sizeof(rdata))) != (size_t) -1);
+
+ /* Print it */
+ avahi_hexdump(rdata, l);
+
+ /* Create a new record and fill in the data from the blob */
+ r2 = avahi_record_new(r->key, AVAHI_DEFAULT_TTL);
+ assert(r2);
+ assert(avahi_rdata_parse(r2, rdata, l) >= 0);
+
+ /* Compare both versions */
+ assert(avahi_record_equal_no_ttl(r, r2));
+
+ /* Free the records */
+ avahi_record_unref(r);
+ avahi_record_unref(r2);
+
return 0;
}