[syslinux] Problem in getting tftp transfer to succeed

Josef Siemes jsiemes at web.de
Sun Apr 13 08:52:51 PDT 2003


Hi,

Louis Van den Broek <vandenbroek.y at skynet.be> schrieb am 13.04.03 11:18:05:
> 
> Setup:
> Server: Mac OS X Server which serves dhcp and tftp requests
> client: Acer with PXE boot agent 4.0.19
> file to transfer: -rw-r--r--   1 root    wheel    10988 Apr 12 13:50  
> pxelinux.0
> 
> The default tftpd daemon doesn't support the tsize option (I think,  
> look at the packet trace at the end, it reports the file isn't found,  
> but I think this is because of tsize ... but I could be wrong)

Hmm. Seems your client doesn't like the server? See below.

> Now when I try to load pxelinux.0 with the Acer PXE client I get the  
> following error: Missing mode.

Never seen that.

> Here is the packet trace ...
> 
> [xserve:/usr/libexec] yves% sudo tcpdump -i en0 -s 0 -X host  
> 192.168.1.10
> tcpdump: listening on en0
> 10:42:49.273193 192.168.1.1.bootps > 192.168.1.10.bootpc:   
> xid:0x40ab183f flags:0x8000 Y:192.168.1.10 S:192.168.1.1 sname "xserve"  
> vend-rfc1048 DHCP:OFFER SID:192.168.1.1 LT:3564 SM:255.255.255.0  
> DG:192.168.1.1 NS:192.168.1.1 DN:"" BF:"/private/tftpboot/pxelinux.0"

> 10:42:50.316668 192.168.1.1.bootps > 192.168.1.10.bootpc:   
> xid:0x40ab183f flags:0x8000 Y:192.168.1.10 S:192.168.1.1 sname "xserve"  
> vend-rfc1048 DHCP:ACK SID:192.168.1.1 LT:3564 SM:255.255.255.0  
> DG:192.168.1.1 NS:192.168.1.1 DN:"" BF:"/private/tftpboot/pxelinux.0"
> 10:42:50.321376 arp who-has 192.168.1.1 tell 192.168.1.10
> 10:42:50.321402 arp reply 192.168.1.1 is-at 0:3:93:db:7c:6
> 10:42:50.321473 192.168.1.10.2070 > 192.168.1.1.tftp:  45 RRQ  
> "/private/tftpboot/pxelinux.0"

These all look ok.

> 10:42:50.341634 192.168.1.1.49234 > 192.168.1.10.2070: udp 14
> 0x0000   4500 002a 4070 0000 4011 b6f7 c0a8 0101        E..*@p.. at .......
> 0x0010   c0a8 010a c052 0816 0016 cea0 0006 7473        .....R........ts
> 0x0020   697a 6500 3130 3938 3800                       ize.10988.

OACK packet: 'tsize is 10988'.

> 10:42:50.341752 192.168.1.10.2070 > 192.168.1.1.49234: udp 17
> 0x0000   4500 002d 0003 0000 1411 2362 c0a8 010a        E..-......#b....
> 0x0010   c0a8 0101 0816 c052 0019 b0d2 0005 0000        .......R........
> 0x0020   5446 5450 2041 626f 7274 6564 0000 c595        TFTP.Aborted....
> 0x0030   e0e5                                           ..

Client responds with 'TFTP ERR' (Errorcode 0: 'TFTP Aborted).


> 10:42:50.343263 192.168.1.10.2071 > 192.168.1.1.tftp:  22 RRQ ""
> 0x0000   4500 0032 0004 0000 1411 235c c0a8 010a        E..2......#\....
> 0x0010   c0a8 0101 0817 0045 001e e59e 0001 006f        .......E.......o
> 0x0020   6374 6574 0062 6c6b 7369 7a65 0031 3435        ctet.blksize.145
> 0x0030   3600 375d 80b8                                 6.7]..

That's really funny: The client left out the filename!

> 10:42:50.344614 192.168.1.1.49235 > 192.168.1.10.2071: udp 17
> 0x0000   4500 002d 4071 0000 4011 b6f3 c0a8 0101        E..- at q..@.......
> 0x0010   c0a8 010a c053 0817 0019 50ac 0005 0004        .....S....P.....
> 0x0020   4d69 7373 696e 6720 6d6f 6465 00               Missing.mode.

So the server responds 'Missing mode' (it requires a tftp filename, and
misses the zero-lengt name. So it seems that 'octet' is taken as the
filename, and missing from the options - so  the 'mode'-field with
octet/netascii is missing.

> Packet trace with original tftpd:
[see above ...]
> 10:18:12.051520 192.168.1.10.2070 > 192.168.1.1.tftp:  45 RRQ  
> "/private/tftpboot/pxelinux.0"
> 10:18:12.190504 192.168.1.1.49189 > 192.168.1.10.2070: udp 516

First Data packet from the server.

> 0x0020   5446 5450 2041 626f 7274 6564 0000 a478        TFTP.Aborted...x
> 0x0030   ab84                                           ..

Client aborts?!?

> 10:18:12.192161 192.168.1.10.2071 > 192.168.1.1.tftp:  22 RRQ ""

And issues the same empty RRQ?

> 10:18:12.202722 192.168.1.1.49190 > 192.168.1.10.2071: udp 19

Server responds 'file not found'

This should have worked for the first transfer anyway, because the
tsize option isn't required by the pxe rom, it's only used for pxelinux 
itself. So the tftp transfer for pxelinux.0 should have succeeded,
regardless of the standard or tftp-hpa tftp server. Only the 
pxelinux tftp requests (for /private/tftpboot/pxelinux.cfg/default e.g)
depend on the tsize option.

So I think this is a more general problem - maybe even with your network
card. Could you perhaps try to set this up under a linux server, and after
that switch back to MacOS? I think noone tried this under MacOS already
(anyone?), though tftp-hpa also works on Solaris, AIX and even cygwin.

Regards,

Josef

______________________________________________________________________________
UNICEF bittet um Spenden fur die Kinder im Irak! Hier online an
UNICEF spenden: https://spenden.web.de/unicef/special/?mc=021101



More information about the Syslinux mailing list