Skip to content

Commit

Permalink
fix(IPaddress): IPv6 restore zone id (#10546)
Browse files Browse the repository at this point in the history
* IPv6 restore zone id

This PR restores the IPv6 zone-id in String representation of IPv6 address as well as parsing. This follows 20a28b5 that disabled it due to a crash in `netif_index_to_name()`.

The fixed code scans through `netif_list` to find the `netif` name and id.

Note: zone-id are incremented by 1 compared to `netif` id.

For example internal zoneid value `3` actually translates to `%st2`

* ci(pre-commit): Apply automatic fixes

---------

Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
  • Loading branch information
s-hadinger and pre-commit-ci-lite[bot] authored Nov 5, 2024
1 parent de93e6e commit a80b03e
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion cores/esp32/IPAddress.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,13 @@ bool IPAddress::fromString6(const char *address) {
colons++;
acc = 0;
} else if (c == '%') {
_zone = netif_name_to_index(address);
// netif_index_to_name crashes on latest esp-idf
// _zone = netif_name_to_index(address);
// in the interim, we parse the suffix as a zone number
while ((*address != '\0') && (!isdigit(*address))) { // skip all non-digit after '%'
address++;
}
_zone = atol(address) + 1; // increase by one by convention, so we can have zone '0'
while (*address != '\0') {
address++;
}
Expand Down Expand Up @@ -351,6 +357,19 @@ size_t IPAddress::printTo(Print &p, bool includeZone) const {
// netif_index_to_name(_zone, if_name);
// n += p.print(if_name);
// }
// In the interim, we just output the index number
if (_zone > 0 && includeZone) {
n += p.print('%');
// look for the interface name
for (netif *intf = netif_list; intf != nullptr; intf = intf->next) {
if (_zone - 1 == intf->num) {
n += p.print(intf->name[0]);
n += p.print(intf->name[1]);
break;
}
}
n += p.print(_zone - 1);
}
return n;
}

Expand Down

0 comments on commit a80b03e

Please sign in to comment.