[syslinux] syslinux.efi pxeboot across multiple subnets

Gene Cumm gene.cumm at gmail.com
Sat Nov 9 10:47:16 PST 2013


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

Trudging through more spec docs, I don't understand why StationAddress
and SubnetMask are used in place of UseDefaultAddress (which may just
alleviate your issue entirely)

-- 
-Gene


More information about the Syslinux mailing list