--- ip4_frag.c 2017-09-15 19:05:41.000000000 +0100 +++ ip4_frag_changes.c 2018-06-01 10:03:45.447035015 +0100 @@ -739,7 +739,6 @@ /* Save original offset */ tmp = lwip_ntohs(IPH_OFFSET(iphdr)); ofo = tmp & IP_OFFMASK; - LWIP_ERROR("ip_frag(): MF already set", (tmp & IP_MF) == 0, return ERR_VAL); left = p->tot_len - IP_HLEN; @@ -823,7 +822,7 @@ last = (left <= netif->mtu - IP_HLEN); /* Set new offset and MF flag */ - tmp = (IP_OFFMASK & (ofo)); + tmp = (tmp & IP_MF) | (IP_OFFMASK & (ofo)); if (!last) { tmp = tmp | IP_MF; }