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 ~