--- cci/sys/netinet/ip_output.c 2019/07/28 12:24:19 1.1 +++ cci/sys/netinet/ip_output.c 2019/07/28 12:29:35 1.1.1.2 @@ -155,9 +155,15 @@ gotif: } else mh->m_len = sizeof (struct ip); mhip->ip_off = off >> 3; - if (off + len >= ip->ip_len-hlen) + if (off + len >= ip->ip_len-hlen) { len = mhip->ip_len = ip->ip_len - hlen - off; - else { + /* + * if the output packet has M flag set, make sure + * this flag is set for the last fragment + */ + if (ip->ip_off & IP_MF) + mhip->ip_off |= IP_MF; + } else { mhip->ip_len = len; mhip->ip_off |= IP_MF; }