From: Felix Fietkau Date: Mon, 9 Jun 2014 20:46:54 +0000 (+0200) Subject: rename mdns_add_records to cache_dump_records and move it to cache.c X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fmdnsd.git;a=commitdiff_plain;h=2c1fe9afacc9379dcfd0db911fc9ee45adfdc0f4 rename mdns_add_records to cache_dump_records and move it to cache.c Signed-off-by: Felix Fietkau --- diff --git a/cache.c b/cache.c index 9addc3c..2658bd6 100644 --- a/cache.c +++ b/cache.c @@ -337,3 +337,45 @@ cache_answer(struct interface *iface, uint8_t *base, int blen, char *name, struc else DBG(1, "A -> %s %s ttl:%d\n", dns_type_string(r->type), r->record, r->ttl); } + +void +cache_dump_records(struct blob_buf *buf, const char *name) +{ + struct cache_record *r, *q = avl_find_element(&records, name, r, avl); + const char *txt; + char buffer[MAX_NAME_LEN]; + + if (!q) + return; + + do { + r = q; + switch (r->type) { + case TYPE_TXT: + if (r->txt && strlen(r->txt)) { + txt = r->txt; + do { + blobmsg_add_string(buf, "txt", txt); + txt = &txt[strlen(txt) + 1]; + } while (*txt); + } + break; + + case TYPE_SRV: + if (r->port) + blobmsg_add_u32(buf, "port", r->port); + break; + + case TYPE_A: + if ((r->rdlength == 4) && inet_ntop(AF_INET, r->rdata, buffer, INET6_ADDRSTRLEN)) + blobmsg_add_string(buf, "ipv4", buffer); + break; + + case TYPE_AAAA: + if ((r->rdlength == 16) && inet_ntop(AF_INET6, r->rdata, buffer, INET6_ADDRSTRLEN)) + blobmsg_add_string(buf, "ipv6", buffer); + break; + } + q = avl_next_element(r, avl); + } while (q && !strcmp(r->record, q->record)); +} diff --git a/cache.h b/cache.h index 0dfacd4..2286afb 100644 --- a/cache.h +++ b/cache.h @@ -16,6 +16,7 @@ #include #include +#include #include "dns.h" @@ -43,12 +44,13 @@ struct cache_record { extern struct avl_tree records, entries; -extern int cache_init(void); -extern void cache_scan(void); -extern void cache_cleanup(void); -extern void cache_answer(struct interface *iface, uint8_t *base, int blen, - char *name, struct dns_answer *a, uint8_t *rdata); -extern int cache_host_is_known(char *record); -extern char* cache_lookup_name(const char *key); +int cache_init(void); +void cache_scan(void); +void cache_cleanup(void); +void cache_answer(struct interface *iface, uint8_t *base, int blen, + char *name, struct dns_answer *a, uint8_t *rdata); +int cache_host_is_known(char *record); +char *cache_lookup_name(const char *key); +void cache_dump_records(struct blob_buf *buf, const char *name); #endif diff --git a/ubus.c b/ubus.c index 1009a3a..6d0cdea 100644 --- a/ubus.c +++ b/ubus.c @@ -45,48 +45,6 @@ mdns_scan(struct ubus_context *ctx, struct ubus_object *obj, return 0; } -static void -mdns_add_records(const char *name) -{ - struct cache_record *r, *q = avl_find_element(&records, name, r, avl); - const char *txt; - char buffer[MAX_NAME_LEN]; - - if (!q) - return; - - do { - r = q; - switch (r->type) { - case TYPE_TXT: - if (r->txt && strlen(r->txt)) { - txt = r->txt; - do { - blobmsg_add_string(&b, "txt", txt); - txt = &txt[strlen(txt) + 1]; - } while (*txt); - } - break; - - case TYPE_SRV: - if (r->port) - blobmsg_add_u32(&b, "port", r->port); - break; - - case TYPE_A: - if ((r->rdlength == 4) && inet_ntop(AF_INET, r->rdata, buffer, INET6_ADDRSTRLEN)) - blobmsg_add_string(&b, "ipv4", buffer); - break; - - case TYPE_AAAA: - if ((r->rdlength == 16) && inet_ntop(AF_INET6, r->rdata, buffer, INET6_ADDRSTRLEN)) - blobmsg_add_string(&b, "ipv6", buffer); - break; - } - q = avl_next_element(r, avl); - } while (q && !strcmp(r->record, q->record)); -} - static int mdns_browse(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, @@ -117,8 +75,8 @@ mdns_browse(struct ubus_context *ctx, struct ubus_object *obj, *local = '\0'; c2 = blobmsg_open_table(&b, buffer); strncat(buffer, ".local", MAX_NAME_LEN); - mdns_add_records(buffer); - mdns_add_records(s->entry); + cache_dump_records(&b, buffer); + cache_dump_records(&b, s->entry); blobmsg_close_table(&b, c2); q = avl_next_element(s, avl); if (!q || avl_is_last(&entries, &s->avl) || strcmp(s->avl.key, q->avl.key)) { @@ -151,8 +109,8 @@ mdns_hosts(struct ubus_context *ctx, struct ubus_object *obj, *local = '\0'; c = blobmsg_open_table(&b, buffer); strncat(buffer, ".local", MAX_NAME_LEN); - mdns_add_records(buffer); - mdns_add_records(s->entry); + cache_dump_records(&b, buffer); + cache_dump_records(&b, s->entry); blobmsg_close_table(&b, c); } ubus_send_reply(ctx, req, b.head);