- if (iface_v4)
- dns_send_question(iface_v4, question, type, 0);
-
- if (iface_v6)
- dns_send_question(iface_v6, question, type, 0);
-
- return UBUS_STATUS_OK;
+ if (!strcmp(method, "query")) {
+ if (iface_v4)
+ dns_send_question(iface_v4, NULL, question, type, 1);
+
+ if (iface_v6)
+ dns_send_question(iface_v6, NULL, question, type, 1);
+
+ return UBUS_STATUS_OK;
+ } else if (!strcmp(method, "fetch")) {
+ blob_buf_init(&b, 0);
+ void *k = blobmsg_open_array(&b, "records");
+ cache_dump_recursive(&b, question, type, iface_v4 ? iface_v4 : iface_v6);
+ blobmsg_close_array(&b, k);
+ ubus_send_reply(ctx, req, b.head);
+ return UBUS_STATUS_OK;
+ } else {
+ return UBUS_STATUS_INVALID_ARGUMENT;
+ }