[ipxe-devel] multicast tftp working after scary hack made to udp_demux()

Erik Jacobson erikj at sgi.com
Wed Dec 10 21:43:23 UTC 2014

I decided to post this in a new thread because I made a bit of a breakthrough
on the multicast tftp problem today and I wanted to be sure the right people
saw my note.

Basically, multicast tftp transport is not working properly in the latest
iPXE code (tftp multicast, I'm not talking about mtftp here).

I have now been able to hack iPXE so that multicast tftp works.

The key was enabling the udp debugging.

When multicast is in play, it appears udp_demux() is returning NULL.
It appears that the st_family and st_port checks are OK. It appears
that the problem is likely this check in udp_demux():

if ( memcmp ( udp->local.pad, empty_sockaddr.pad,sizeof ( udp->local.pad ) ) == 0 )

If that's zero, we return NULL instead of the 'udp' pointer in udp_demux().

Now I don't know what I'm doing at all but if I force the return of the udp
pointer even if the above mentioned check is zero, then multicast tftp works

I was able to successfully multicast-transfer grub2 core.0 using multicast
tftp in iPXE, then it successfully brought up the grub2 menu.

At this point, I am hoping an expert can take a look to see what the
real fix might be. Since I'm a novice in network programming, I really
don't know what bad side effect my evil hack has.

For now, I'll run locally with my evil hack so I can continue experimenting
with the iPXE multicast tftp-based solution I'm working on.

Thank you for any help you can provide me.


More information about the ipxe-devel mailing list