[syslinux] syslinux.efi pxeboot across multiple subnets

Gene Cumm gene.cumm at gmail.com
Sat Nov 9 10:39:15 PST 2013


On Sat, Nov 9, 2013 at 1:03 PM, Gene Cumm <gene.cumm at gmail.com> wrote:
> 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

Per UEFI_Spec_2_3_1.pdf p1342, GatewayAddress is only to override the
existing routing table.  In my opinion, it should never need to be
touched.

This smells of a broken UEFI implementation on your servers.  I guess
it's time for a test build that dumps your route table.

-- 
-Gene


More information about the Syslinux mailing list