[syslinux] syslinux.efi pxeboot across multiple subnets

Gene Cumm gene.cumm at gmail.com
Sat Nov 9 10:03:23 PST 2013


On Sat, Nov 9, 2013 at 11:33 AM, Gene Cumm <gene.cumm at gmail.com> wrote:
> On Sat, Nov 9, 2013 at 11:20 AM, Gene Cumm <gene.cumm at gmail.com> wrote:
>> On Fri, Nov 8, 2013 at 5:08 PM, Jason Matthews
>> <jason.david.matthews at gmail.com> wrote:
>>> I attempted the patch, but had to add a declaration to get it to compile. I
>>> also added the gateway like before. Here's a link to the modified diff I
>>> used and the pcaps from tftpserver and mirrored port from boot to reset.
>>>
>>> http://ge.tt/136167y/v/0
>>>
>>> I'm also not sure about if I'm building correctly or not. Considering that
>>> I get a different syslinux.efi when I compile without making modifications
>>> to the source (one that doesn't work with same subnet) makes me wonder if
>>> some of my libraries are bad or something.
>>>
>>> At any rate, thanks for all the help. I think I've learned more trying to
>>> figure out what's going on with this than I have in the past year.
>>
>> Try
>>     txdata->GatewayAddress = &IPInfo.gateway;
>> not
>>     txdata->GatewayAddress = IPInfo.gateway;
>
> And with this forced, it does send the requests but it may not route
> properly, depending on the gateway.
>
> The gateway must be NULL if local or the address of the gateway if not local.
>
> --
> -Gene
>
>>> On Fri, Nov 8, 2013 at 2:57 PM, H. Peter Anvin <hpa at zytor.com> wrote:
>>>> Here is a completely untested patch if someone wants to try and take it
>>>> for a spin?

core_udp_open() should bind to the local IP address and obtain a local
UDP port allocation.  core_udp_close() should release the UDP port
allocation.

core_udp_sendto() knows the remote IP address and remote UDP port and
must calculate the GatewayAddress.  core_udp_connect() is passed the
remote IP address and UDP port, calculates the GatewayAddress and
stores all three for core_udp_send().  core_udp_send() should only
copy the local/remote IP address/UDP port and GatewayAddress, then set
the other flags/values as needed.

Now to get core_udp_connect() to calculate/store the values for reuse.

-- 
-Gene


More information about the Syslinux mailing list