Skip to content

Make IPv6 support compatible with ESP8266 implementation #7114

Closed
@sgryphon

Description

@sgryphon

Related area

Networking support

Hardware specification

n/a

Is your feature request related to a problem?

The implementation of IPv6 as a separate type of address adds complexity.

Particularly for an Arduino-level user with limited experience, having to know which type of address to use complicates things. It would make a lot more sense if something like a DNS lookup simply returned an IP address, or checking the local address of a network connection, without knowing the type.

The implementation is also incompatible with the Arduino ESP8266 libraries, which are just a wrapper around lwIP ip_addr_t from the core Espressif libraries. https://github.com/esp8266/Arduino/blob/master/cores/esp8266/IPAddress.h

For example, a simple example that displays the current IP address for ESP8266 will work in IPv4-only, IPv6-only, and dual stack environments, with a single reference to IPAddress.

The example code would not work for ESP32, and ESP32 would require more complicated code to check both the IPAddress and IPv6Address, and decide which to show.

Describe the solution you'd like

Use an implementation similar (or the same as) ESP8266: https://github.com/esp8266/Arduino/blob/master/cores/esp8266/IPAddress.h

This has full backwards compatibility with IPv4 addresses, adds support for IPv6, does not complicate APIs by adding duplicate methods everywhere. It even preserves the smaller memory footprint (and implementation detail) when compiled without IPv6.

Describe alternatives you've considered

The existing IPv6Address adds complexity and is incompatible. It is not yet widely used, so would be easy to deprecated and change before merging the planned wider IPv6 support.

Additional context

No response

I have checked existing list of Feature requests and the Contribution Guide

  • I confirm I have checked existing list of Feature requests and Contribution Guide.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions