mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
[NET] Move DF check to ip_forward
Do fragmentation check in ip_forward, similar to ipv6 forwarding. Signed-off-by: John Heffner <jheffner@psc.edu> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b3da2cf37c
commit
9af3912ec9
1 changed files with 8 additions and 0 deletions
|
@ -85,6 +85,14 @@ int ip_forward(struct sk_buff *skb)
|
|||
if (opt->is_strictroute && rt->rt_dst != rt->rt_gateway)
|
||||
goto sr_failed;
|
||||
|
||||
if (unlikely(skb->len > dst_mtu(&rt->u.dst) &&
|
||||
(ip_hdr(skb)->frag_off & htons(IP_DF))) && !skb->local_df) {
|
||||
IP_INC_STATS(IPSTATS_MIB_FRAGFAILS);
|
||||
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,
|
||||
htonl(dst_mtu(&rt->u.dst)));
|
||||
goto drop;
|
||||
}
|
||||
|
||||
/* We are about to mangle packet. Copy it! */
|
||||
if (skb_cow(skb, LL_RESERVED_SPACE(rt->u.dst.dev)+rt->u.dst.header_len))
|
||||
goto drop;
|
||||
|
|
Loading…
Reference in a new issue