Hello, I tried to boot the new syslinux.efi (32bit) from the released syslinux 6 via PXE. In a wireshark trace I can see that the syslinux.efi was loaded successfully via TFTP. Then the client try to load ldlinux.e32. I see the request and also the acknoledgement in the trace. After that the client try to load the file, but the source port is changed to tftp request port + 1. For example: Source Destination Protocal SPort DPort Description 10.0.0.100 10.0.0.1 tftp 1479 69 Read Request: File /syslinux/ldlinux.e32, Transfer type: octet, tsize\000=0\000, blksize\000=1408\000 10.0.0.1 10.0.0.100 tftp 7018 1479 Option Acknoledgment, tsize\000=117160\000, blksize\000=1408\000 10.0.0.100 10.0.0.1 udp 1480 7018 Source port:1480 Destination port: 7018 10.0.0.1 10.0.0.100 icmp Destination unreachable (Port unreachable) 10.0.0.1 10.0.0.100 tftp 7018 1049 Option Acknoledgment, tsize\000=117160\000, blksize\000=1408\000 I'm not sure if this is a config problem or a bug. Thanks and regards Michael
On Mon, 24 Jun, at 11:17:29AM, Michael Szerencsits wrote:> Hello, > > I tried to boot the new syslinux.efi (32bit) from the released > syslinux 6 via PXE. In a wireshark trace I can see that the > syslinux.efi was loaded successfully via TFTP. Then the client try to > load ldlinux.e32. I see the request and also the acknoledgement in the > trace. After that the client try to load the file, but the source port > is changed to tftp request port + 1.Have you tried 5.10 in your environment on a BIOS machine to see whether that works and which port numbers it uses? -- Matt Fleming, Intel Open Source Technology Center
> > Have you tried 5.10 in your environment on a BIOS machine to see whether > that works and which port numbers it uses? > > -- > Matt Fleming, Intel Open Source Technology Center >Hi Matt, I think I've found the problem. In /core/fs/pxe/tftp.c in function tftp_open: First you do a core_udp_connect to port 69 (TFTP) at line 264. -> source port = x After that you sent the filerequest at line 265 You receive the fileinfo and also the used port (y) for the transfer in line 273 Than you perform a core_udp_disconnect at line 286 Now you perform a new core_udp_connect to port y which set the source port to x + 1 at line 287 for example: Client | Server TFTP get file 2900 > 69 Response tsize 2900 < 7012 ACK blk 0 2901 > 7012 <-- wrong source port Now the TFTP is failing, because he expect the filetransfer client port as the same as the initial filerequest. Maybe that help to solve the problem Regards Michael