Subject: Re: inetd / tftpd regression
To: None <current-users@netbsd.org>
From: Jukka Salmi <j+nbsd@2005.salmi.ch>
List: current-users
Date: 04/06/2005 23:11:39
Some more information:
I tried running inetd and tftpd from the netbsd-2 system on the current
host - same behaviour as with current binaries, i.e. not working.
I'll try to describe the problem again:
$ sudo /usr/sbin/inetd -d
ADD : tftp proto=udp, wait.max=1.40, user:group=root:(null) builtin=0 \
server=/usr/libexec/tftpd policy=
registered /usr/libexec/tftpd on 5
So far so good. Client starts PXE boot, gets an IP assigned by DHCP,
and is directed to the TFTP server. Tcpdump on the TFTP server host
shows:
22:37:46.931471 IP (tos 0x0, ttl 20, id 4, offset 0, flags [none], \
length: 71) 212.254.26.72.2071 > 212.254.26.77.69: [udp sum ok] 43 \
RRQ "pxeboot_ia32_com0.bin" octet blksize 1456
and inetd prints:
someone wants tftp
19143 execl /usr/libexec/tftpd
but nothing else happens. The client resends this packet some times and
finally times out.
But - and this is the really strange part, at least for me - if I
interrupt and restart inetd while the client sends these tftp packets,
it suddenly works:
$ sudo /usr/sbin/inetd -d
ADD : tftp proto=udp, wait.max=1.40, user:group=root:(null) builtin=0 \
server=/usr/libexec/tftpd policy=
registered /usr/libexec/tftpd on 5
----------[client starts booting now]----------
someone wants tftp
20548 execl /usr/libexec/tftpd
On a second terminal, I see
22:50:41.534617 IP (tos 0x0, ttl 20, id 2, offset 0, flags [none], \
length: 66) 212.254.26.72.2070 > 212.254.26.77.69: [udp sum ok] 38 \
RRQ "pxeboot_ia32_com0.bin" octet tsize 0
22:50:41.637023 IP (tos 0x0, ttl 20, id 4, offset 0, flags [none], \
length: 71) 212.254.26.72.2071 > 212.254.26.77.69: [udp sum ok] 43 \
RRQ "pxeboot_ia32_com0.bin" octet blksize 1456
...no response... until I restart inetd:
^C$ sudo /usr/sbin/inetd -d
ADD : tftp proto=udp, wait.max=1.40, user:group=root:(null) builtin=0 \
server=/usr/libexec/tftpd policy=
registered /usr/libexec/tftpd on 5
As soon as the client starts his next attempt, inetd prints
someone wants tftp
8911 execl /usr/libexec/tftpd
again, but this time the client succeeds to fetch the kernel via NFS
and boots fine.
So far, this is 100% reproducible.
Any hints what I could try next to solve this problem? Help is appreciated!
Jukka
--
bashian roulette:
$ ((RANDOM%6)) || rm -rf ~