netfilter: nft_payload: do not update layer 4 checksum when mangling fragments
IP fragments do not come with the transport header, hence skip bogus
layer 4 checksum updates.
Fixes: 1814096980
("netfilter: nft_payload: layer 4 checksum adjustment for pseudoheader fields")
Reported-and-tested-by: Steffen Weinreich <steve@weinreich.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
1585f590a2
commit
4e1860a386
1 changed files with 3 additions and 0 deletions
|
@ -546,6 +546,9 @@ static int nft_payload_l4csum_offset(const struct nft_pktinfo *pkt,
|
||||||
struct sk_buff *skb,
|
struct sk_buff *skb,
|
||||||
unsigned int *l4csum_offset)
|
unsigned int *l4csum_offset)
|
||||||
{
|
{
|
||||||
|
if (pkt->fragoff)
|
||||||
|
return -1;
|
||||||
|
|
||||||
switch (pkt->tprot) {
|
switch (pkt->tprot) {
|
||||||
case IPPROTO_TCP:
|
case IPPROTO_TCP:
|
||||||
*l4csum_offset = offsetof(struct tcphdr, check);
|
*l4csum_offset = offsetof(struct tcphdr, check);
|
||||||
|
|
Loading…
Add table
Reference in a new issue