Ok, I've finished (well, close enough).<div><br></div><div>Some time ago Geoff Lywood posted to gpxe-devel his draft at the time.  I've taken that work and a few other things he gave me and ported it over to iPXE head and changed a few things.</div>
<div><br></div><div>First there is the implementation of the download protocol:</div><div><a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/d748ebf72206dcde1379b063fd9b533f7572caa5">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/d748ebf72206dcde1379b063fd9b533f7572caa5</a> </div>
<div><br></div><div>Then changing efi_image to install the protocol before starting an efi image (this one may warrant having the uninstall moved like Itay moved the rest of the related code, I don't quite understand how all that works)</div>
<div><a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/e7b41890bc67350a9f5bcf7291ec859fa2174e26">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/e7b41890bc67350a9f5bcf7291ec859fa2174e26</a></div><div><br>
</div><div>Then, he had some other work to flesh out the loaded image structure before starting the image (bad things like elilo hanging would occur without this patch, plus the efi argument list means nothing without it)</div>
<div><a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/45a51f99fd51b231a388b1db00dfc4b18a5e9e4f">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/45a51f99fd51b231a388b1db00dfc4b18a5e9e4f</a></div><div><br>
</div><div>Finally, I changed his code to install the protocol on iPXE's boot handle.  This is sufficient for snponly.efi, but other cases could be very wrong.  If someone who understands the lay of the land better wanted to adopt this and make it specifically determine the handle providing the SNP protocol instance in use at the time, that would probably be more robust.  I would think that possible since this is only installed as efi_image is about to start an image that was presumably transferred via IPXE already, so some SNP instance is already active.</div>
<div><a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/23aea6c209965546c39569a770823eabf1358a71">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/23aea6c209965546c39569a770823eabf1358a71</a></div><div><br>
</div><div><br></div><div>Many thanks for Geoff's original contribution and his help in testing that last change.</div><div><br></div><div>Now I'm going to go modify elilo netfs to detect and prefer this protocol for transferring data in a way analogous to haw syslinux does things in non-uefi mode.</div>