# LwIP patches

This directory contains patch files for LwIP that enable required or desired
functionality in Matter. Patches that are not yet integrated into mainline LwIP
are provided as a patch file. This file also contains a list of helpful patches
that may not be present in vendor forks of the LwIP codebase

## Un-merged patches

### Route information options (RIO)

Required for wifi devices to support communication with a thread device behind
an open thread border router.

-   patch file: rio_patch_updated.patch
-   savannah link: https://savannah.nongnu.org/patch/?10114

Troubleshooting: The patch uses the `ip6_addr_net_eq` function, which is a
recent API change on upstream LwIP. The previous version of this function is
`ip6_addr_netcmp`, so this function call may need to be replaced on older forks.

### ND6 LLADDR fix

In earlier version of lwIP, there is a bug where the RA processing fails if the
RA includes an LLADDR option with a hw address that is not the max length. This
happens for thread devices. Relevant patches from lwIP main that should be
applied back to any Matter device using an older version of lwIP:

https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=7807f706f357d2eea85d9927d970991dc4b1ef90
https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=6f700a157d1049a06ab9c467057d71e98e7798de

## Important upstream patches

### Malformed neighbor solicitation packet fix

-   issue raised here
    [Issue 9791](https://github.com/project-chip/connectedhomeip/issues/9791)
-   fixed in matter fork by
    [Issue 10160](https://github.com/project-chip/connectedhomeip/pull/10160)
-   fixed in upstream by
    [PATCH](https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=bc08c1d2b79b4763fc0f8f0bf0ed58e0c2899b3a)

### DHCPv6 DNS bug

There was a bug in the DHCPv6 code where if the router sent a DNS using DHCPv6
stateless, it would set the DNS server as an ipv4 address, which ended up being
garbage. This would invalidate the whole DNS table, and lwip does not have a
default backup.

-   fixed in upstream in this
    [commit](https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=941300c21c45a4dbf1c074b29a9ca3c88c9f6553)
