ip_forward: fix IPv4 forwarding with multiple netifs/offloading
When we have multiple netifs where at least one has checksum offloading capabilities, IP forwarding needs to set various checksum fields to 0 to prevent HW algorithms on calculating an invalid checksum. -> set checksum fields of IP/UDP/TCP/ICMP to 0 in ip4_forward(). See bug #56288 Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
This commit is contained in:
@@ -404,8 +404,10 @@ struct netif {
|
||||
#if LWIP_CHECKSUM_CTRL_PER_NETIF
|
||||
#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags) do { \
|
||||
(netif)->chksum_flags = chksumflags; } while(0)
|
||||
#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) if (((netif) == NULL) || (((netif)->chksum_flags & (chksumflag)) != 0))
|
||||
#define NETIF_CHECKSUM_ENABLED(netif, chksumflag) (((netif) == NULL) || (((netif)->chksum_flags & (chksumflag)) != 0))
|
||||
#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) if NETIF_CHECKSUM_ENABLED(netif, chksumflag)
|
||||
#else /* LWIP_CHECKSUM_CTRL_PER_NETIF */
|
||||
#define NETIF_CHECKSUM_ENABLED(netif, chksumflag) 0
|
||||
#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)
|
||||
#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)
|
||||
#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */
|
||||
|
||||
Reference in New Issue
Block a user