rename mdns_add_records to cache_dump_records and move it to cache.c
authorFelix Fietkau <nbd@openwrt.org>
Mon, 9 Jun 2014 20:46:54 +0000 (22:46 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 9 Jun 2014 20:47:50 +0000 (22:47 +0200)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
cache.c
cache.h
ubus.c

diff --git a/cache.c b/cache.c
index 9addc3c75b008ab9429b7b7097a0de791a67c29a..2658bd6b6816259f0bd33c1efb031a68922b3a03 100644 (file)
--- 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);
 }
        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 0dfacd42eb0de384ff0c8953c84e69ab57d1e78e..2286afbbe20476b9e3c9a068310b6a80d5a801a6 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -16,6 +16,7 @@
 
 #include <libubox/avl.h>
 #include <libubox/list.h>
 
 #include <libubox/avl.h>
 #include <libubox/list.h>
+#include <libubox/blob.h>
 
 #include "dns.h"
 
 
 #include "dns.h"
 
@@ -43,12 +44,13 @@ struct cache_record {
 
 extern struct avl_tree records, entries;
 
 
 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
 
 #endif
diff --git a/ubus.c b/ubus.c
index 1009a3af147aa1dec79631d0e0b1ff9b93079533..6d0cdeaa4c0496a42257dcf3387b3ecc1bc29374 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -45,48 +45,6 @@ mdns_scan(struct ubus_context *ctx, struct ubus_object *obj,
        return 0;
 }
 
        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,
 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);
                        *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)) {
                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);
                        *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);
                blobmsg_close_table(&b, c);
        }
        ubus_send_reply(ctx, req, b.head);