drivers: wifi: esp_at: Bind DNS to device net interface
Make sure received DNS server information is bound to the wifi network interface. Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
This commit is contained in:
parent
57c452fb79
commit
0e57844b2d
1 changed files with 7 additions and 2 deletions
|
@ -490,18 +490,23 @@ static void esp_dns_work(struct k_work *work)
|
||||||
struct dns_resolve_context *dnsctx;
|
struct dns_resolve_context *dnsctx;
|
||||||
struct sockaddr_in *addrs = data->dns_addresses;
|
struct sockaddr_in *addrs = data->dns_addresses;
|
||||||
const struct sockaddr *dns_servers[ESP_MAX_DNS + 1] = {};
|
const struct sockaddr *dns_servers[ESP_MAX_DNS + 1] = {};
|
||||||
|
int interfaces[ESP_MAX_DNS];
|
||||||
size_t i;
|
size_t i;
|
||||||
int err;
|
int err, ifindex;
|
||||||
|
|
||||||
|
ifindex = net_if_get_by_ifindex(data->net_iface);
|
||||||
|
|
||||||
for (i = 0; i < ESP_MAX_DNS; i++) {
|
for (i = 0; i < ESP_MAX_DNS; i++) {
|
||||||
if (!addrs[i].sin_addr.s_addr) {
|
if (!addrs[i].sin_addr.s_addr) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dns_servers[i] = (struct sockaddr *) &addrs[i];
|
dns_servers[i] = (struct sockaddr *) &addrs[i];
|
||||||
|
interfaces[i] = ifindex;
|
||||||
}
|
}
|
||||||
|
|
||||||
dnsctx = dns_resolve_get_default();
|
dnsctx = dns_resolve_get_default();
|
||||||
err = dns_resolve_reconfigure(dnsctx, NULL, dns_servers);
|
err = dns_resolve_reconfigure_with_interfaces(dnsctx, NULL, dns_servers,
|
||||||
|
interfaces);
|
||||||
if (err) {
|
if (err) {
|
||||||
LOG_ERR("Could not set DNS servers: %d", err);
|
LOG_ERR("Could not set DNS servers: %d", err);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue