From owner-p4-projects@FreeBSD.ORG Tue Feb 6 19:05:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A604816A400; Tue, 6 Feb 2007 19:05:51 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E53DE16A417 for ; Tue, 6 Feb 2007 19:05:50 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9C6C713C4BB for ; Tue, 6 Feb 2007 19:05:50 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l16J5olo041480 for ; Tue, 6 Feb 2007 19:05:50 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l16J5o2C041477 for perforce@freebsd.org; Tue, 6 Feb 2007 19:05:50 GMT (envelope-from piso@freebsd.org) Date: Tue, 6 Feb 2007 19:05:50 GMT Message-Id: <200702061905.l16J5o2C041477@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 114119 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Feb 2007 19:05:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=114119 Change 114119 by piso@piso_newluxor on 2007/02/06 19:05:34 With mbuf support, came the ability to support arbitrary sized packets and thus, we can finally, fix the TSO and big MTU support: in case we pass 0 as maxpacketsize, libalias won't check any more size of packets. NB: actually, for the kernel side, i can completely #ifdef-out the maxpacketsize checks and simplify the API. Perhaps i'll do that later... Affected files ... .. //depot/projects/soc2005/libalias/sys/netgraph/ng_nat.c#10 edit .. //depot/projects/soc2005/libalias/sys/netinet/ip_fw2.c#43 edit .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#57 edit .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias_proxy.c#21 edit Differences ... ==== //depot/projects/soc2005/libalias/sys/netgraph/ng_nat.c#10 (text+ko) ==== @@ -226,14 +226,14 @@ ("ng_nat: ip_len != m_pkthdr.len")); if (hook == priv->in) { - rval = LibAliasIn(priv->lib, &m, MCLBYTES); + rval = LibAliasIn(priv->lib, &m, 0); if (rval != PKT_ALIAS_OK && rval != PKT_ALIAS_FOUND_HEADER_FRAGMENT) { NG_FREE_ITEM(item); return (EINVAL); } } else if (hook == priv->out) { - rval = LibAliasOut(priv->lib, &m, MCLBYTES); + rval = LibAliasOut(priv->lib, &m, 0); if (rval != PKT_ALIAS_OK) { NG_FREE_ITEM(item); return (EINVAL); ==== //depot/projects/soc2005/libalias/sys/netinet/ip_fw2.c#43 (text+ko) ==== @@ -3561,11 +3561,9 @@ ldt = 1; if (oif == NULL) - retval = LibAliasIn(t->lib, &m, - MCLBYTES); + retval = LibAliasIn(t->lib, &m, 0); else - retval = LibAliasOut(t->lib, &m, - MCLBYTES); + retval = LibAliasOut(t->lib, &m, 0); if (retval != PKT_ALIAS_OK) { /* XXX - should i add some logging? */ m_free(m); ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#57 (text+ko) ==== @@ -1304,9 +1304,11 @@ alias_addr = pip->ip_dst; /* Defense against mangled packets */ - if (ntohs(pip->ip_len) > maxpacketsize - || (pip->ip_hl << 2) > maxpacketsize) - goto getout; + if (maxpacketsize != 0) { + if (ntohs(pip->ip_len) > maxpacketsize + || (pip->ip_hl << 2) > maxpacketsize) + goto getout; + } if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0) { switch (pip->ip_p) { @@ -1436,10 +1438,12 @@ } /* Defense against mangled packets */ - if (ntohs(pip->ip_len) > maxpacketsize - || (pip->ip_hl << 2) > maxpacketsize) { - printf("mangled pkt\n"); - goto getout; + if (maxpacketsize != 0) { + if (ntohs(pip->ip_len) > maxpacketsize + || (pip->ip_hl << 2) > maxpacketsize) { + printf("mangled pkt\n"); + goto getout; + } } addr_save = GetDefaultAliasAddress(la); @@ -1526,9 +1530,11 @@ goto getout; /* Defense against mangled packets */ - if (ntohs(pip->ip_len) > maxpacketsize - || (pip->ip_hl << 2) > maxpacketsize) - goto getout; + if (maxpacketsize != 0) { + if (ntohs(pip->ip_len) > maxpacketsize + || (pip->ip_hl << 2) > maxpacketsize) + goto getout; + } /* Let's make enough space for any of the protocols header below */ PULLUP_ICMPHDR(pip, ptr); ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias_proxy.c#21 (text+ko) ==== @@ -428,8 +428,11 @@ } /* Check for packet overflow */ - if ((int)(ntohs(pip->ip_len) + strlen(buffer)) > maxpacketsize) - return; + if (maxpacketsize != 0) { + if ((int)(ntohs(pip->ip_len) + strlen(buffer)) > + maxpacketsize) + return; + } /* Shift existing TCP data and insert destination string */ {