PERFORCE change 114119 for review
Paolo Pisati
piso at FreeBSD.org
Tue Feb 6 19:05:52 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=114119
Change 114119 by piso at 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 */
{
More information about the p4-projects
mailing list