comments in-line.

Giorgos Keramidas ([EMAIL PROTECTED]) wrote:
> 
> This looks rather strange.  ip_fastforward() should pass an mtu of 1500
> but somehow the negative strange value gets passed.  It would be
> interesting to see the value of ``mtu'' in frame 13 too, if you still
> have this crash dump stored somewhere.

included right below - i have a few other questions while i'm looking @ these

 - the value of hlen (looks from the code that it should be ip->ip_hl << 2 
(5*4=20 right?)
        not some large -value - plus the value of hlen is sortof close to crazy 
mtu value
 - ip->ip_len = 10240 ??? not sure why this would be either
 - i think mtu should have a value of 1500 here - both the ifp struct and ro 
struct
        have values of 1500, but even if it did have a value of 1500 - since
        ip->ip_len = 10240 - it's still going to drop through to else of line 
542
        (ie. ip->ip_len <= mtu) which leaves either can't frag/drop or frag 
(where
        we are i think) - unless I'm missing something


(kgdb) f 13
#13 0xc06933c1 in ip_fastforward (m=0xc12e6c00) at 
/usr/src/sys/netinet/ip_fastfwd.c:572
warning: Source file is more recent than executable.

572                             if (ip_fragment(ip, &m, mtu, ifp->if_hwassist,
(kgdb) i loc
ip = (struct ip *) 0xc12f700e
m0 = (struct mbuf *) 0xc12f700e
ro = {ro_rt = 0xc11f8420, ro_dst = {sa_len = 16 '\020', sa_family = 2 '\002',
    sa_data = "\000\000�\002\005\000\000\000\000\000\000\000"}}
dst = (struct sockaddr_in *) 0xc76bfc3c
ia = (struct in_ifaddr *) 0x0
ifa = (struct ifaddr *) 0x0
ifp = (struct ifnet *) 0xc0f91800
odest = {s_addr = 84060352}
dest = {s_addr = 84060352}
sum = 0
ip_len = 0
error = 84060352
hlen = -1057417216
mtu = 0
__func__ = "ip_fastforward"
(kgdb) p *ip
$1 = {ip_hl = 5, ip_v = 4, ip_tos = 0 '\0', ip_len = 10240, ip_id = 61249, 
ip_off = 0, ip_ttl = 63 '?',  ip_p = 17 '\021', ip_sum = 31921, ip_src = 
{s_addr = 67479744}, ip_dst = {s_addr = 84060352}}
(kgdb)


> 
> You are not running a kernel with optimization and/or architecture-
> dependent optimization flags, right?
> 

ntiko - i have added CPU_GEODE/CPU_SOEKRIS to my config - but same crash on the 
generic
config as well..this is a soekris net4801 box (w/ geode proc - i586). generic
'make buildkernel KERNCONF=D1-0722' command line (ie no other make/compiler 
options).


mbsd05# diff /root/kernels/D1-0722 /root/kernels/GENERIC 
21,22d20
< makeoptions   DEBUG=-g
< 
24c22
< #cpu          I486_CPU
---
> cpu           I486_CPU
26,27c24,25
< #cpu          I686_CPU
< ident         D1-0722
---
> cpu           I686_CPU
> ident         GENERIC
31,48d28
< 
< options               KDB
< options               DDB
< options               INVARIANTS
< options               INVARIANT_SUPPORT
< 
< options               CPU_SOEKRIS
< options               CPU_GEODE
< 
< options               HZ=1000
< options               DEVICE_POLLING
< 
< options               IPFIREWALL
< options               IPFIREWALL_VERBOSE
< options               IPFIREWALL_VERBOSE_LIMIT
< options               IPFIREWALL_DEFAULT_TO_ACCEPT
< options               DUMMYNET
< options               IPDIVERT
mbsd05# 

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to