diff options
Diffstat (limited to 'src/config.c')
-rw-r--r-- | src/config.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/config.c b/src/config.c index b1506f9..ed4db42 100644 --- a/src/config.c +++ b/src/config.c @@ -94,22 +94,25 @@ static int range_print(struct re_printf *pf, const struct range *rng) static int dns_server_handler(const struct pl *pl, void *arg) { + struct config_net *cfg = arg; struct sa sa; int err; - (void)arg; - err = sa_decode(&sa, pl->p, pl->l); if (err) { warning("config: dns_server: could not decode `%r'\n", pl); return err; } - err = net_dnssrv_add(&sa); - if (err) { - warning("config: failed to add nameserver %r: %m\n", pl, err); + if (cfg->nsc >= ARRAY_SIZE(cfg->nsv)) { + warning("config: too many DNS nameservers (max %zu)\n", + ARRAY_SIZE(cfg->nsv)); + return EOVERFLOW; } + /* Append dns_server to the network config */ + cfg->nsv[cfg->nsc++] = sa; + return err; } @@ -216,7 +219,7 @@ int config_parse_conf(struct config *cfg, const struct conf *conf) } /* Network */ - (void)conf_apply(conf, "dns_server", dns_server_handler, NULL); + (void)conf_apply(conf, "dns_server", dns_server_handler, &cfg->net); (void)conf_get_str(conf, "net_interface", cfg->net.ifname, sizeof(cfg->net.ifname)); |