From: Felix Fietkau Date: Thu, 13 Oct 2011 13:03:29 +0000 (+0200) Subject: proto-shell: add dns server support X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2ac630138173e111e16b9c544d9da53f3af97f2e;p=oweals%2Fnetifd.git proto-shell: add dns server support --- diff --git a/dummy/netifd-proto.sh b/dummy/netifd-proto.sh index c50d776..ae05b9c 100755 --- a/dummy/netifd-proto.sh +++ b/dummy/netifd-proto.sh @@ -53,6 +53,12 @@ proto_init_update() { [ -n "$3" ] && json_add_boolean "address-external" "$external" } +proto_add_dns_server() { + local address="$1" + + jshn_append PROTO_DNS "$address" +} + proto_add_ipv4_address() { local address="$1" local mask="$2" @@ -125,6 +131,7 @@ proto_send_update() { _proto_push_array "ip6addr" "$PROTO_IP6ADDR" _proto_push_ip _proto_push_array "route" "$PROTO_ROUTE" _proto_push_route _proto_push_array "route6" "$PROTO_ROUTE6" _proto_push_route + _proto_push_array "dns" "$PROTO_DNS" _proto_push_ip _proto_notify } diff --git a/dummy/proto/ppp.sh b/dummy/proto/ppp.sh index 13c4ebb..e7b9839 100755 --- a/dummy/proto/ppp.sh +++ b/dummy/proto/ppp.sh @@ -38,6 +38,7 @@ pppoe_setup() { echo "pppoe_setup($1, $2), username=$username, password=$password" proto_init_update ppp0 1 proto_add_ipv4_address "192.168.2.1" 32 + proto_add_dns_server "192.168.2.2" proto_send_update "$1" proto_run_command sleep 10 } diff --git a/interface-ip.c b/interface-ip.c index c0a1bb9..8dae80d 100644 --- a/interface-ip.c +++ b/interface-ip.c @@ -97,6 +97,8 @@ interface_add_dns_server(struct interface *iface, const char *str) return; add: + D(INTERFACE, "Add IPv%c DNS server: %s\n", + s->af == AF_INET6 ? '6' : '4', str); list_add_tail(&s->list, &iface->proto_dns_servers); } diff --git a/proto-shell.c b/proto-shell.c index 32a3016..3ed4b8e 100644 --- a/proto-shell.c +++ b/proto-shell.c @@ -303,6 +303,7 @@ enum { NOTIFY_IP6ADDR, NOTIFY_ROUTES, NOTIFY_ROUTES6, + NOTIFY_DNS, __NOTIFY_LAST }; @@ -316,6 +317,7 @@ static const struct blobmsg_policy notify_attr[__NOTIFY_LAST] = { [NOTIFY_IP6ADDR] = { .name = "ip6addr", .type = BLOBMSG_TYPE_ARRAY }, [NOTIFY_ROUTES] = { .name = "routes", .type = BLOBMSG_TYPE_ARRAY }, [NOTIFY_ROUTES6] = { .name = "routes6", .type = BLOBMSG_TYPE_ARRAY }, + [NOTIFY_DNS] = { .name = "dns", .type = BLOBMSG_TYPE_ARRAY }, }; static int @@ -359,6 +361,9 @@ proto_shell_update_link(struct proto_shell_state *state, struct blob_attr **tb) if ((cur = tb[NOTIFY_ROUTES6]) != NULL) proto_shell_parse_route_list(state->proto.iface, cur, true); + if ((cur = tb[NOTIFY_DNS]) != NULL) + interface_add_dns_server_list(state->proto.iface, cur); + return 0; }