diff options
| -rw-r--r-- | include/linux/skbuff.h | 7 | ||||
| -rw-r--r-- | net/bridge/br_forward.c | 2 | ||||
| -rw-r--r-- | net/ipv4/ip_forward.c | 2 | ||||
| -rw-r--r-- | net/ipv6/ip6_output.c | 2 |
4 files changed, 10 insertions, 3 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 37247901ebd2..1c19b2d55c2b 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1654,5 +1654,12 @@ static inline int skb_is_gso(const struct sk_buff *skb) | |||
| 1654 | return skb_shinfo(skb)->gso_size; | 1654 | return skb_shinfo(skb)->gso_size; |
| 1655 | } | 1655 | } |
| 1656 | 1656 | ||
| 1657 | static inline void skb_forward_csum(struct sk_buff *skb) | ||
| 1658 | { | ||
| 1659 | /* Unfortunately we don't support this one. Any brave souls? */ | ||
| 1660 | if (skb->ip_summed == CHECKSUM_COMPLETE) | ||
| 1661 | skb->ip_summed = CHECKSUM_NONE; | ||
| 1662 | } | ||
| 1663 | |||
| 1657 | #endif /* __KERNEL__ */ | 1664 | #endif /* __KERNEL__ */ |
| 1658 | #endif /* _LINUX_SKBUFF_H */ | 1665 | #endif /* _LINUX_SKBUFF_H */ |
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c index 3e45c1a1aa96..ada7f495445c 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c | |||
| @@ -71,7 +71,7 @@ static void __br_forward(const struct net_bridge_port *to, struct sk_buff *skb) | |||
| 71 | 71 | ||
| 72 | indev = skb->dev; | 72 | indev = skb->dev; |
| 73 | skb->dev = to->dev; | 73 | skb->dev = to->dev; |
| 74 | skb->ip_summed = CHECKSUM_NONE; | 74 | skb_forward_csum(skb); |
| 75 | 75 | ||
| 76 | NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, indev, skb->dev, | 76 | NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, indev, skb->dev, |
| 77 | br_forward_finish); | 77 | br_forward_finish); |
diff --git a/net/ipv4/ip_forward.c b/net/ipv4/ip_forward.c index 61b30d100676..9cb04df0054b 100644 --- a/net/ipv4/ip_forward.c +++ b/net/ipv4/ip_forward.c | |||
| @@ -67,7 +67,7 @@ int ip_forward(struct sk_buff *skb) | |||
| 67 | if (skb->pkt_type != PACKET_HOST) | 67 | if (skb->pkt_type != PACKET_HOST) |
| 68 | goto drop; | 68 | goto drop; |
| 69 | 69 | ||
| 70 | skb->ip_summed = CHECKSUM_NONE; | 70 | skb_forward_csum(skb); |
| 71 | 71 | ||
| 72 | /* | 72 | /* |
| 73 | * According to the RFC, we must first decrease the TTL field. If | 73 | * According to the RFC, we must first decrease the TTL field. If |
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index e2b8db6b9aef..be3f082a87ed 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
| @@ -378,7 +378,7 @@ int ip6_forward(struct sk_buff *skb) | |||
| 378 | goto drop; | 378 | goto drop; |
| 379 | } | 379 | } |
| 380 | 380 | ||
| 381 | skb->ip_summed = CHECKSUM_NONE; | 381 | skb_forward_csum(skb); |
| 382 | 382 | ||
| 383 | /* | 383 | /* |
| 384 | * We DO NOT make any processing on | 384 | * We DO NOT make any processing on |
