diff options
| author | Darren Reed <darrenr@FreeBSD.org> | 2000-10-29 08:08:32 +0000 |
|---|---|---|
| committer | Darren Reed <darrenr@FreeBSD.org> | 2000-10-29 08:08:32 +0000 |
| commit | c91fbe3bb4409b92dc643ba167fbe936b487c822 (patch) | |
| tree | 9a49ed5ba1ccd71e67f5ab927d9587d6b495a3a9 | |
| parent | 2bd1292fe166fd71be0c1c36daf3ef6c7b3e6d30 (diff) | |
Notes
| -rw-r--r-- | contrib/ipfilter/fil.c | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/contrib/ipfilter/fil.c b/contrib/ipfilter/fil.c index bdb3d2f77a30d..9accee84eacf7 100644 --- a/contrib/ipfilter/fil.c +++ b/contrib/ipfilter/fil.c @@ -274,32 +274,35 @@ fr_info_t *fin; int minicmpsz = sizeof(struct icmp); icmphdr_t *icmp; - if (fin->fin_dlen > 1) + if (!off && (fin->fin_dlen > 1)) { fin->fin_data[0] = *(u_short *)tcp; - if ((!(plen >= hlen + minicmpsz) && !off) || - (off && off < sizeof(struct icmp))) { - fi->fi_fl |= FI_SHORT; - if (fin->fin_dlen < 2) - break; - } + icmp = (icmphdr_t *)tcp; - icmp = (icmphdr_t *)tcp; + if (icmp->icmp_type == ICMP_ECHOREPLY || + icmp->icmp_type == ICMP_ECHO) + minicmpsz = ICMP_MINLEN; - if (!off && (icmp->icmp_type == ICMP_ECHOREPLY || - icmp->icmp_type == ICMP_ECHO)) - minicmpsz = ICMP_MINLEN; + /* + * type(1) + code(1) + cksum(2) + id(2) seq(2) + + * 3*timestamp(3*4) + */ + else if (icmp->icmp_type == ICMP_TSTAMP || + icmp->icmp_type == ICMP_TSTAMPREPLY) + minicmpsz = 20; - /* type(1) + code(1) + cksum(2) + id(2) seq(2) + - * 3*timestamp(3*4) */ - else if (!off && (icmp->icmp_type == ICMP_TSTAMP || - icmp->icmp_type == ICMP_TSTAMPREPLY)) - minicmpsz = 20; + /* + * type(1) + code(1) + cksum(2) + id(2) seq(2) + + * mask(4) + */ + else if (icmp->icmp_type == ICMP_MASKREQ || + icmp->icmp_type == ICMP_MASKREPLY) + minicmpsz = 12; + } - /* type(1) + code(1) + cksum(2) + id(2) seq(2) + mask(4) */ - else if (!off && (icmp->icmp_type == ICMP_MASKREQ || - icmp->icmp_type == ICMP_MASKREPLY)) - minicmpsz = 12; + if ((!(plen >= hlen + minicmpsz) && !off) || + (off && off < sizeof(struct icmp))) + fi->fi_fl |= FI_SHORT; break; } @@ -1398,7 +1401,7 @@ nodata: * SUCH DAMAGE. * * @(#)uipc_mbuf.c 8.2 (Berkeley) 1/4/94 - * $Id: fil.c,v 2.35.2.26 2000/10/24 11:58:17 darrenr Exp $ + * $Id: fil.c,v 2.35.2.27 2000/10/26 21:20:54 darrenr Exp $ */ /* * Copy data from an mbuf chain starting "off" bytes from the beginning, |
