Hi, I've come across what I believe to be a bug in if_spppsubr.c. I have verified that it also exists in 4-STABLE. When using PPP encapsulation and header compression, m->m_pkthdr.len is never adjusted after the call to sl_compress_tcp(). Included is a patch against 4-STABLE that seems to fix the problem.
regards, jacques
--- if_spppsubr.c.orig Mon Sep 29 14:12:17 2003 +++ if_spppsubr.c Mon Sep 29 14:17:31 2003 @@ -778,6 +778,7 @@ int s, rv = 0; int ipproto = PPP_IP; int debug = ifp->if_flags & IFF_DEBUG; + int uc_len; s = splimp(); @@ -864,7 +865,9 @@ * Do IP Header compression */ if (sp->pp_mode != IFF_CISCO && (sp->ipcp.flags & IPCP_VJ) && - ip->ip_p == IPPROTO_TCP) + ip->ip_p == IPPROTO_TCP) { + uc_len = m->m_len; + switch (sl_compress_tcp(m, ip, sp->pp_comp, sp->ipcp.compress_cid)) { case TYPE_COMPRESSED_TCP: @@ -881,6 +884,10 @@ splx(s); return (EINVAL); } + + if (m->m_flags & M_PKTHDR) + m->m_pkthdr.len += m->m_len - uc_len; + } } #endif
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"