diff --git a/libraries/Network/src/NetworkInterface.cpp b/libraries/Network/src/NetworkInterface.cpp index 564e9ac4a63..01dc53093a9 100644 --- a/libraries/Network/src/NetworkInterface.cpp +++ b/libraries/Network/src/NetworkInterface.cpp @@ -145,7 +145,6 @@ NetworkInterface::NetworkInterface() , _got_ip_event_id(-1) , _lost_ip_event_id(-1) , _interface_id(ESP_NETIF_ID_MAX) - , _is_server_if(false) {} NetworkInterface::~NetworkInterface(){ @@ -247,11 +246,10 @@ void NetworkInterface::destroyNetif() { } } -bool NetworkInterface::initNetif(Network_Interface_ID interface_id, bool server_interface) { +bool NetworkInterface::initNetif(Network_Interface_ID interface_id) { if(_esp_netif == NULL || interface_id >= ESP_NETIF_ID_MAX){ return false; } - _is_server_if = server_interface; _interface_id = interface_id; _got_ip_event_id = esp_netif_get_event_id(_esp_netif, ESP_NETIF_IP_EVENT_GOT_IP); _lost_ip_event_id = esp_netif_get_event_id(_esp_netif, ESP_NETIF_IP_EVENT_LOST_IP); @@ -308,7 +306,8 @@ bool NetworkInterface::dnsIP(uint8_t dns_no, IPAddress ip) if(_esp_netif == NULL || dns_no > 2){ return false; } - if(_is_server_if && dns_no > 0){ + esp_netif_flags_t flags = esp_netif_get_flags(_esp_netif); + if(flags & ESP_NETIF_DHCP_SERVER && dns_no > 0){ log_e("Server interfaces can have only one DNS server."); return false; } @@ -356,7 +355,8 @@ bool NetworkInterface::config(IPAddress local_ip, IPAddress gateway, IPAddress s d3.ip.u_addr.ip4.addr = 0; } - if(_is_server_if){ + esp_netif_flags_t flags = esp_netif_get_flags(_esp_netif); + if(flags & ESP_NETIF_DHCP_SERVER){ // Stop DHCPS err = esp_netif_dhcps_stop(_esp_netif); if(err && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED){ @@ -646,7 +646,7 @@ IPAddress NetworkInterface::dnsIP(uint8_t dns_no) const } if (d.ip.type == ESP_IPADDR_TYPE_V6){ // IPv6 from 4x uint32_t; byte order based on IPV62STR() in esp_netif_ip_addr.h - log_d("DNS got IPv6: " IPV6STR, IPV62STR(d.ip.u_addr.ip6)); + // log_v("DNS got IPv6: " IPV6STR, IPV62STR(d.ip.u_addr.ip6)); uint32_t addr0 esp_netif_htonl(d.ip.u_addr.ip6.addr[0]); uint32_t addr1 esp_netif_htonl(d.ip.u_addr.ip6.addr[1]); uint32_t addr2 esp_netif_htonl(d.ip.u_addr.ip6.addr[2]); @@ -672,7 +672,7 @@ IPAddress NetworkInterface::dnsIP(uint8_t dns_no) const ); } // IPv4 from single uint32_t - log_d("DNS IPv4: " IPSTR, IP2STR(&d.ip.u_addr.ip4)); + // log_v("DNS IPv4: " IPSTR, IP2STR(&d.ip.u_addr.ip4)); return IPAddress(d.ip.u_addr.ip4.addr); } @@ -738,6 +738,12 @@ IPAddress NetworkInterface::globalIPv6() const size_t NetworkInterface::printTo(Print & out) const { size_t bytes = 0; + if(_esp_netif == NULL){ + return bytes; + } + if(isDefault()){ + bytes += out.print("*"); + } const char * dscr = esp_netif_get_desc(_esp_netif); if(dscr != NULL){ bytes += out.print(dscr); @@ -749,7 +755,24 @@ size_t NetworkInterface::printTo(Print & out) const { bytes += out.print(" "); + bytes += out.print(">"); + + bytes += out.print(" ("); + esp_netif_flags_t flags = esp_netif_get_flags(_esp_netif); + if(flags & ESP_NETIF_DHCP_CLIENT){ + bytes += out.print("DHCPC"); + if(getStatusBits() & ESP_NETIF_HAS_STATIC_IP_BIT){ + bytes += out.print("_OFF"); + } + } + if(flags & ESP_NETIF_DHCP_SERVER) bytes += out.print("DHCPS"); + if(flags & ESP_NETIF_FLAG_AUTOUP) bytes += out.print(",AUTOUP"); + if(flags & ESP_NETIF_FLAG_GARP) bytes += out.print(",GARP"); + if(flags & ESP_NETIF_FLAG_EVENT_IP_MODIFIED) bytes += out.print(",IP_MOD"); + if(flags & ESP_NETIF_FLAG_IS_PPP) bytes += out.print(",PPP"); + if(flags & ESP_NETIF_FLAG_IS_BRIDGE) bytes += out.print(",BRIDGE"); + if(flags & ESP_NETIF_FLAG_MLDV6_REPORT) bytes += out.print(",V6_REP"); + bytes += out.println(")"); bytes += out.print(" "); bytes += out.print("ether "); diff --git a/libraries/Network/src/NetworkInterface.h b/libraries/Network/src/NetworkInterface.h index 5a79f82596f..64e606b0849 100644 --- a/libraries/Network/src/NetworkInterface.h +++ b/libraries/Network/src/NetworkInterface.h @@ -83,9 +83,8 @@ class NetworkInterface: public Printable { int32_t _got_ip_event_id; int32_t _lost_ip_event_id; Network_Interface_ID _interface_id; - bool _is_server_if; - bool initNetif(Network_Interface_ID interface_id, bool server_interface=false); + bool initNetif(Network_Interface_ID interface_id); void destroyNetif(); int setStatusBits(int bits); int clearStatusBits(int bits);