iPXE
|
Image downloader. More...
#include <stdlib.h>
#include <errno.h>
#include <syslog.h>
#include <ipxe/iobuf.h>
#include <ipxe/xfer.h>
#include <ipxe/open.h>
#include <ipxe/job.h>
#include <ipxe/uaccess.h>
#include <ipxe/umalloc.h>
#include <ipxe/image.h>
#include <ipxe/xferbuf.h>
#include <ipxe/downloader.h>
Go to the source code of this file.
Data Structures | |
struct | downloader |
A downloader. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static void | downloader_free (struct refcnt *refcnt) |
Free downloader object. More... | |
static void | downloader_finished (struct downloader *downloader, int rc) |
Terminate download. More... | |
static int | downloader_progress (struct downloader *downloader, struct job_progress *progress) |
Report progress of download job. More... | |
static int | downloader_deliver (struct downloader *downloader, struct io_buffer *iobuf, struct xfer_metadata *meta) |
Handle received data. More... | |
static struct xfer_buffer * | downloader_buffer (struct downloader *downloader) |
Get underlying data transfer buffer. More... | |
static int | downloader_vredirect (struct downloader *downloader, int type, va_list args) |
Redirect data transfer interface. More... | |
int | create_downloader (struct interface *job, struct image *image) |
Instantiate a downloader. More... | |
Variables | |
static struct interface_operation | downloader_xfer_operations [] |
Downloader data transfer interface operations. More... | |
static struct interface_descriptor | downloader_xfer_desc |
Downloader data transfer interface descriptor. More... | |
static struct interface_operation | downloader_job_op [] |
Downloader job control interface operations. More... | |
static struct interface_descriptor | downloader_job_desc |
Downloader job control interface descriptor. More... | |
Image downloader.
Definition in file downloader.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Free downloader object.
refcnt | Downloader reference counter |
Definition at line 66 of file downloader.c.
References container_of, free, downloader::image, and image_put().
Referenced by create_downloader().
|
static |
Terminate download.
downloader | Downloader |
rc | Reason for termination |
Definition at line 80 of file downloader.c.
References downloader::buffer, downloader::image, intf_shutdown(), downloader::job, xfer_buffer::len, image::len, LOG_ERR, LOG_NOTICE, image::name, rc, strerror(), syslog, and downloader::xfer.
Referenced by create_downloader(), downloader_deliver(), and downloader_vredirect().
|
static |
Report progress of download job.
downloader | Downloader |
progress | Progress report to fill in |
ongoing_rc | Ongoing job status code (if known) |
Definition at line 112 of file downloader.c.
References downloader::buffer, job_progress::completed, xfer_buffer::len, xfer_buffer::pos, rc, job_progress::total, and downloader::xfer.
|
static |
Handle received data.
downloader | Downloader |
iobuf | Datagram I/O buffer |
meta | Data transfer metadata |
rc | Return status code |
Definition at line 146 of file downloader.c.
References downloader::buffer, downloader_finished(), iob_disown, meta(), rc, and xferbuf_deliver().
|
static |
Get underlying data transfer buffer.
downloader | Downloader |
xferbuf | Data transfer buffer, or NULL on error |
Definition at line 170 of file downloader.c.
References downloader::buffer.
|
static |
Redirect data transfer interface.
downloader | Downloader |
type | New location type |
args | Remaining arguments depend upon location type |
rc | Return status code |
Definition at line 184 of file downloader.c.
References downloader_finished(), downloader::image, image_set_uri(), LOCATION_URI, rc, tmp, type, va_arg, va_copy, va_end, downloader::xfer, and xfer_vreopen().
Instantiate a downloader.
job | Job control interface |
image | Image to fill with downloaded file |
rc | Return status code |
Instantiates a downloader object to download the content of the specified image from its URI.
Definition at line 258 of file downloader.c.
References downloader::buffer, image::data, downloader_finished(), downloader_free(), downloader_job_desc, downloader_xfer_desc, ENOMEM, downloader::image, image_get(), intf_init(), intf_plug_plug(), downloader::job, rc, ref_init, ref_put, downloader::refcnt, image::uri, downloader::xfer, xfer_open_uri(), xferbuf_umalloc_init(), and zalloc().
Referenced by imgdownload().
|
static |
Downloader data transfer interface operations.
Definition at line 215 of file downloader.c.
|
static |
Downloader data transfer interface descriptor.
Definition at line 223 of file downloader.c.
Referenced by create_downloader().
|
static |
Downloader job control interface operations.
Definition at line 233 of file downloader.c.
|
static |
Downloader job control interface descriptor.
Definition at line 239 of file downloader.c.
Referenced by create_downloader().