[syslinux] syslinux.efi pxeboot across multiple subnets

Gene Cumm gene.cumm at gmail.com
Mon Nov 11 15:04:30 PST 2013


On Mon, Nov 11, 2013 at 4:53 PM, Jason Matthews
<jason.david.matthews at gmail.com> wrote:
> On Sun, Nov 10, 2013 at 12:23 PM, Gene Cumm <gene.cumm at gmail.com> wrote:
>
>> On Sat, Nov 9, 2013 at 9:22 AM, Jason Matthews
>> <jason.david.matthews at gmail.com> wrote:
>> > The setup I was using was in a chassis. Slot 8 of the chassis is the
>> client
>> > machine. It goes through Switch 1 (a Brocade switch) to the top of rack
>> > (BNT). The mirror is in the chassis switch. Slot 3 of the same chassis is
>> > connected to the mirror port in Switch 1.
>> >
>> > client = 1/0/8
>> > tcpdump = 1/0/3
>> > to TOR = 1/0/43
>> > 1/0/8 mirrored both directions to 1/0/3
>> >
>> > Unfortunately, I don't have access to the switch configs of the TOR
>> > switches so I can't say how many gateways it's going through.
>> 10.16.233.20
>> > goes through 10.16.233.1 and 10.16.195.178 goes through 10.16.194.1. All
>> > the switch magic after that is hidden from me.
>>
>> Any chance you could try this git branch:
>>
>>   git://github.com/geneC/syslinux.git efi-fixes-2-for-mfleming
>>
>> --
>> -Gene
>>
>
> I took a clone of that, but it confuses me. The only reference I can find
> to efi are in gpxe and I can't get that to build (syntax errors in
> util/geniso). The version is listed as 4.07. I was under the impression
> 6.00 was the first version that supported efi.

On an existing repo:

git remote add genec-gh git://github.com/geneC/syslinux.git
git fetch genec-gh
git checkout -b genec-efi-fixes-2-for-mfleming genec-gh/efi-fixes-2-for-mfleming

On a newly cloned repo:

git checkout -b genec-efi-fixes-2-for-mfleming origin/efi-fixes-2-for-mfleming

>> 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.
>
> It looks like it's going into core_udp_open, giving station port to
> socket->net.efi.localport. core_udp_sendto sets the remote port. From
> there, I'm never getting into core_udp_send or core_udp_connect. After
> core_udp_sendto, I go into core_udp_recv, hit the jiffies() loop, time out
> and bail to repeat the same process until reset.
>
> Thanks for pointing out the UEFI_Spec_2_3_1.pdf. It help me get a little
> more grasp on what's happening. I set it to use the Default Address. If you
> set UseDefaultAddress to true and comment out the lines setting
> StationAddress and SubnetMask, it takes a second to pull the dhcp info so I
> had to put the udp->Configure line in a loop until it's status is not
> EFI_NO_MAPPING. Once it's set, It looks like it takes the StationAddress,
> SubnetMask and Gateway from the dhcp.

Excellent info!  I can put another commit on (hopefully tonight) to cover that.

-- 
-Gene


More information about the Syslinux mailing list