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
Jason Matthews
2013-Nov-13 20:58 UTC
[syslinux] syslinux.efi pxeboot across multiple subnets
I tried the efi-fixes-2-for-mfleming, but it doesn't look like it's getting much further. It looks like it's now storing the local port but is still bailing out after the jiffies loop. Here are the pcaps from that: http://ge.tt/4O5N9Az/v/0 I played around with the udp4_cb function and it looked like it was coming back with token->Status == 512, which (if I read the spec right) isn't a valid value. I'm not sure what is coming through on that. I changed the if to if (token->Event) { cb_status = 0; } and set the jiffies loop to set cb_status to 1 on timeout. It went through and downloaded ldlinux.e64, searched and found the config and downloaded it. Now, it looks like it's failing to download the linux kernel (via http). Gives me "failed: No such file or directory" Here's the udp.c I used (modified from efi-fixes-2-for-mfleming) and the pcaps going to http error: http://ge.tt/2R26ZAz/v/0 Thanks again for all your help. On Mon, Nov 11, 2013 at 6:04 PM, Gene Cumm <gene.cumm at gmail.com> wrote:> 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 > _______________________________________________ > Syslinux mailing list > Submissions to Syslinux at zytor.com > Unsubscribe or set options at: > http://www.zytor.com/mailman/listinfo/syslinux > Please do not send private replies to mailing list traffic. > >
Jason Matthews
2013-Nov-13 21:26 UTC
[syslinux] syslinux.efi pxeboot across multiple subnets
>I played around with the udp4_cb function and it looked like it was comingback with token->Status == 512, which (if I read the spec right) isn't a valid value. I'm not sure what is coming through on that. I changed the if to if (token->Event) { cb_status = 0; } Looks like the same thing with tcp.c. After I changed that callback, everything went through and I go into the OS install. But, if I go back to 1 subnet after those changes, it errors out with Invalid Parameter when attempting to send the first packet. (Sorry for the top posting.)