]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[http] Allow HTTP connection to be described using an EFI device path
authorMichael Brown <mcb30@ipxe.org>
Fri, 16 Oct 2020 14:08:19 +0000 (15:08 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 19 Oct 2020 12:07:40 +0000 (13:07 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/tcp/httpcore.c

index f755fb72d00896140bd7cd235db899ef9bb69f27..01bb496b214dc450602475bd85205d19e2b81083 100644 (file)
@@ -56,6 +56,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 #include <ipxe/profile.h>
 #include <ipxe/vsprintf.h>
 #include <ipxe/errortab.h>
+#include <ipxe/efi/efi_path.h>
 #include <ipxe/http.h>
 
 /* Disambiguate the various error causes */
@@ -519,6 +520,18 @@ __weak int http_block_read_capacity ( struct http_transaction *http __unused,
        return -ENOTSUP;
 }
 
+/**
+ * Describe as an EFI device path
+ *
+ * @v http             HTTP transaction
+ * @ret path           EFI device path, or NULL on error
+ */
+static EFI_DEVICE_PATH_PROTOCOL *
+http_efi_describe ( struct http_transaction *http ) {
+
+       return efi_uri_path ( http->uri );
+}
+
 /** HTTP data transfer interface operations */
 static struct interface_operation http_xfer_operations[] = {
        INTF_OP ( block_read, struct http_transaction *, http_block_read ),
@@ -526,6 +539,8 @@ static struct interface_operation http_xfer_operations[] = {
                  http_block_read_capacity ),
        INTF_OP ( xfer_window_changed, struct http_transaction *, http_step ),
        INTF_OP ( intf_close, struct http_transaction *, http_close ),
+       EFI_INTF_OP ( efi_describe, struct http_transaction *,
+                     http_efi_describe ),
 };
 
 /** HTTP data transfer interface descriptor */