Skip to content

LwipWrapper - let the user manage DNS servers #200

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions libraries/Ethernet/src/Ethernet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,23 @@ int CEthernet::begin(IPAddress local_ip, IPAddress subnet, IPAddress gateway, IP

/* If there is a local DHCP informs it of our manual IP configuration to prevent IP conflict */
ni->DhcpNotUsed();
CLwipIf::getInstance().addDns(dns_server);
CLwipIf::getInstance().setDns(0, dns_server);
return 1;
}

/* -------------------------------------------------------------------------- */
void CEthernet::setDNS(IPAddress dns_server) {
/* -------------------------------------------------------------------------- */
CLwipIf::getInstance().addDns(dns_server);
CLwipIf::getInstance().setDns(0, dns_server);
}

/* -------------------------------------------------------------------------- */
void CEthernet::setDNS(IPAddress dns_server1, IPAddress dns_server2) {
/* -------------------------------------------------------------------------- */
CLwipIf::getInstance().setDns(0, dns_server1);
CLwipIf::getInstance().setDns(1, dns_server2);
}

/* -------------------------------------------------------------------------- */
int CEthernet::begin(uint8_t *mac, unsigned long timeout, unsigned long responseTimeout) {
/* -------------------------------------------------------------------------- */
Expand Down
1 change: 1 addition & 0 deletions libraries/Ethernet/src/EthernetC33.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class CEthernet {
EthernetHardwareStatus hardwareStatus();

void setDNS(IPAddress dns_server);
void setDNS(IPAddress dns_server1, IPAddress dns_server2);

int disconnect(void);
int maintain();
Expand Down
12 changes: 6 additions & 6 deletions libraries/WiFi/src/WiFi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,35 +116,35 @@ void CWifi::_config(IPAddress local_ip, IPAddress gateway, IPAddress subnet) {
void CWifi::config(IPAddress local_ip, IPAddress dns_server) {
/* -------------------------------------------------------------------------- */
config(local_ip);
CLwipIf::getInstance().addDns(dns_server);
setDNS(dns_server);
}

/* -------------------------------------------------------------------------- */
void CWifi::config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway) {
/* -------------------------------------------------------------------------- */
IPAddress _nm(255, 255, 255, 0);
_config(local_ip, gateway, _nm);
CLwipIf::getInstance().addDns(dns_server);
setDNS(dns_server);
}

/* -------------------------------------------------------------------------- */
void CWifi::config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet) {
/* -------------------------------------------------------------------------- */
_config(local_ip, gateway, subnet);
CLwipIf::getInstance().addDns(dns_server);
setDNS(dns_server);
}

/* -------------------------------------------------------------------------- */
void CWifi::setDNS(IPAddress dns_server1) {
/* -------------------------------------------------------------------------- */
CLwipIf::getInstance().addDns(dns_server1);
CLwipIf::getInstance().setDns(0, dns_server1);
}

/* -------------------------------------------------------------------------- */
void CWifi::setDNS(IPAddress dns_server1, IPAddress dns_server2) {
/* -------------------------------------------------------------------------- */
CLwipIf::getInstance().addDns(dns_server1);
CLwipIf::getInstance().addDns(dns_server2);
CLwipIf::getInstance().setDns(0, dns_server1);
CLwipIf::getInstance().setDns(1, dns_server2);

}

Expand Down
6 changes: 2 additions & 4 deletions libraries/lwIpWrapper/src/CNetIf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ static uint8_t Encr2wl_enc(int enc)
/* -------------------------------------------------------------------------- */
CLwipIf::CLwipIf()
: eth_initialized(false)
, dns_num(-1)
, willing_to_start_sync_req(false)
, async_requests_ongoing(true)
{
Expand Down Expand Up @@ -916,18 +915,17 @@ int CLwipIf::inet2aton(const char* address, IPAddress& result)
void CLwipIf::beginDns(IPAddress aDNSServer)
{
/* -------------------------------------------------------------------------- */
addDns(aDNSServer);
setDns(0, aDNSServer);
}



/* -------------------------------------------------------------------------- */
void CLwipIf::addDns(IPAddress aDNSServer)
void CLwipIf::setDns(uint8_t dns_num, IPAddress aDNSServer)
{
/* -------------------------------------------------------------------------- */
#if LWIP_DNS
ip_addr_t ip;
dns_num++;
/* DNS initialized by DHCP when call dhcp_start() */
bool dhcp_started = false;

Expand Down
3 changes: 1 addition & 2 deletions libraries/lwIpWrapper/src/CNetIf.h
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,6 @@ class CLwipIf {
private:
bool eth_initialized;

int dns_num;
bool willing_to_start_sync_req;
bool async_requests_ongoing;

Expand Down Expand Up @@ -375,7 +374,7 @@ class CLwipIf {

int getHostByName(const char* aHostname, IPAddress& aResult);
void beginDns(IPAddress aDNSServer);
void addDns(IPAddress aDNSServer);
void setDns(uint8_t num, IPAddress aDNSServer);
IPAddress getDns(int _num = 0);

/* when you 'get' a network interface, you get a pointer to one of the pointers
Expand Down