IP fragmentation can be performed as expected down the stack, without touching irrelevant fields in the included header besides fragment offset, setting IP_MF and header checksum. If the included header has IP_DF set, EMSGSIZE is returned.
This allows users of IP_HDRINCL to have the kernel perform fragmentation. Signed-off-by: Yonatan Goldschmidt <dev.jo...@gmail.com> --- net/ipv4/raw.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 125c1eab3eaa..63167abff05b 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -359,11 +359,6 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi*, struct rtable *rt = *rtp; int hlen, tlen; - if (length > rt->dst.dev->mtu) { - ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport, - rt->dst.dev->mtu); - return -EMSGSIZE; - } if (length < sizeof(struct iphdr)) return -EINVAL; -- 2.15.1