{"push_id":778538304,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"3376fa520b0ce4ba3f0d9bad626617acf88908df","before":"be51713474e015eea2ed268348d26fb6b06e3105","commits":[{"sha":"53d2d9e3c37d6170341818a254e18d341ee15511","author":{"email":"67f92fe466c1cf7071cd98d44dd3637d867a9144@ipxe.org","name":"Michael Brown"},"message":"[uri] Generalise tftp_uri() to pxe_uri()\n\nMerge the functionality of parse_next_server_and_filename() and\ntftp_uri() into a single pxe_uri(), which takes a server address\n(IPv4/IPv6/none) and a filename, and produces a URI using the rule:\n\n - if the filename is a hierarchical absolute URI (i.e. includes a\n   scheme such as \"http://\" or \"tftp://\") then use that URI and ignore\n   the server address,\n\n - otherwise, if the server address is recognised (according to\n   sa_family) then construct a TFTP URI based on the server address,\n   port, and filename\n\n - otherwise fail.\n\nSigned-off-by: Michael Brown <mcb30@ipxe.org>","distinct":true,"url":"https://api.github.com/repos/ipxe/ipxe/commits/53d2d9e3c37d6170341818a254e18d341ee15511"},{"sha":"3376fa520b0ce4ba3f0d9bad626617acf88908df","author":{"email":"67f92fe466c1cf7071cd98d44dd3637d867a9144@ipxe.org","name":"Michael Brown"},"message":"[efi] Implement the EFI_PXE_BASE_CODE_PROTOCOL\n\nMany UEFI NBPs expect to find an EFI_PXE_BASE_CODE_PROTOCOL installed\nin addition to the EFI_SIMPLE_NETWORK_PROTOCOL.  Most NBPs use the\nEFI_PXE_BASE_CODE_PROTOCOL only to retrieve the cached DHCP packets.\n\nThis implementation has been tested with grub.efi, shim.efi,\nsyslinux.efi, and wdsmgfw.efi.  Some methods (such as Discover() and\nArp()) are not used by any known NBP and so have not (yet) been\nimplemented.\n\nUsage notes for the tested bootstraps are:\n\n  - grub.efi uses EFI_PXE_BASE_CODE_PROTOCOL only to retrieve the\n    cached DHCP packet, and uses no other methods.\n\n  - shim.efi uses EFI_PXE_BASE_CODE_PROTOCOL to retrieve the cached\n    DHCP packet and to retrieve the next NBP via the Mtftp() method.\n    If shim.efi was downloaded via HTTP (or other non-TFTP protocol)\n    then shim.efi will blindly call Mtftp() with an HTTP URI as the\n    filename: this allows the next NBP (e.g. grubx64.efi) to also be\n    transparently retrieved by HTTP.\n\n    shim.efi can also use the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL to\n    retrieve files previously loaded by \"imgfetch\" or similar commands\n    in iPXE.  The current implementation of shim.efi will use the\n    EFI_SIMPLE_FILE_SYSTEM_PROTOCOL only if it does not find an\n    EFI_PXE_BASE_CODE_PROTOCOL; this patch therefore prevents this\n    usage of our EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.  This logic could be\n    trivially reversed in shim.efi if needed.\n\n  - syslinux.efi uses EFI_PXE_BASE_CODE_PROTOCOL only to retrieve the\n    cached DHCP packet.  Versions 6.03 and earlier have a bug which\n    may cause syslinux.efi to attach to the wrong NIC if there are\n    multiple NICs in the system (or if the UEFI firmware supports\n    IPv6).\n\n  - wdsmgfw.efi (ab)uses EFI_PXE_BASE_CODE_PROTOCOL to retrieve the\n    cached DHCP packets, and to send and retrieve UDP packets via the\n    UdpWrite() and UdpRead() methods.  (This was presumably done in\n    order to minimise the amount of benefit obtainable by switching to\n    UEFI, by replicating all of the design mistakes present in the\n    original PXE specification.)\n\nThe EFI_DOWNGRADE_UX configuration option remains available for now,\nuntil this implementation has received more widespread testing.\n\nSigned-off-by: Michael Brown <mcb30@ipxe.org>","distinct":true,"url":"https://api.github.com/repos/ipxe/ipxe/commits/3376fa520b0ce4ba3f0d9bad626617acf88908df"}]}