summaryrefslogtreecommitdiff
path: root/ubus.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-05-20 15:54:53 +0200
committerFelix Fietkau <nbd@openwrt.org>2012-05-20 15:54:53 +0200
commite7ac4074bf497cd19e38adbb49e2b3eb275eeb05 (patch)
tree1aaa7f27e81f1a1785c7a7a8761b0066cc1c5277 /ubus.c
parente383571250615faf1d251b08c8b2f92e970d6f85 (diff)
downloadnetifd-e7ac4074bf497cd19e38adbb49e2b3eb275eeb05.tar.gz
export dns server and search list in the ubus interface status
Diffstat (limited to 'ubus.c')
-rw-r--r--ubus.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/ubus.c b/ubus.c
index a00226f..5e51d3e 100644
--- a/ubus.c
+++ b/ubus.c
@@ -323,8 +323,8 @@ static void
interface_ip_dump_route_list(struct interface_ip_settings *ip)
{
struct device_route *route;
- static char *buf;
int buflen = 128;
+ char *buf;
void *r;
int af;
@@ -350,6 +350,30 @@ interface_ip_dump_route_list(struct interface_ip_settings *ip)
}
}
+static void
+interface_ip_dump_dns_server_list(struct interface_ip_settings *ip)
+{
+ struct dns_server *dns;
+ int buflen = 128;
+ char *buf;
+
+ vlist_simple_for_each_element(&ip->dns_servers, dns, node) {
+ buf = blobmsg_alloc_string_buffer(&b, NULL, buflen);
+ inet_ntop(dns->af, &dns->addr, buf, buflen);
+ blobmsg_add_string_buffer(&b);
+ }
+}
+
+static void
+interface_ip_dump_dns_search_list(struct interface_ip_settings *ip)
+{
+ struct dns_search_domain *dns;
+
+ vlist_simple_for_each_element(&ip->dns_search, dns, node) {
+ blobmsg_add_string(&b, NULL, dns->name);
+ }
+}
+
static int
netifd_handle_status(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method,
@@ -391,6 +415,14 @@ netifd_handle_status(struct ubus_context *ctx, struct ubus_object *obj,
interface_ip_dump_route_list(&iface->config_ip);
interface_ip_dump_route_list(&iface->proto_ip);
blobmsg_close_array(&b, a);
+ a = blobmsg_open_array(&b, "dns-server");
+ interface_ip_dump_dns_server_list(&iface->config_ip);
+ interface_ip_dump_dns_server_list(&iface->proto_ip);
+ blobmsg_close_array(&b, a);
+ a = blobmsg_open_array(&b, "dns-search");
+ interface_ip_dump_dns_search_list(&iface->config_ip);
+ interface_ip_dump_dns_search_list(&iface->proto_ip);
+ blobmsg_close_array(&b, a);
}
a = blobmsg_open_table(&b, "data");