summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/xfer.c25
-rw-r--r--src/include/ipxe/xfer.h2
2 files changed, 22 insertions, 5 deletions
diff --git a/src/core/xfer.c b/src/core/xfer.c
index 112adfcba..222af52a8 100644
--- a/src/core/xfer.c
+++ b/src/core/xfer.c
@@ -34,8 +34,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
/**
* Dummy transfer metadata
*
- * This gets passed to xfer_interface::deliver_iob() and equivalents
- * when no metadata is available.
+ * This gets passed to xfer_interface::deliver() and equivalents when
+ * no metadata is available.
*/
static struct xfer_metadata dummy_metadata;
@@ -216,10 +216,13 @@ int xfer_deliver_iob ( struct interface *intf, struct io_buffer *iobuf ) {
* Deliver datagram as raw data
*
* @v intf Data transfer interface
- * @v iobuf Datagram I/O buffer
+ * @v data Data
+ * @v len Length of data
+ * @v meta Data transfer metadata
* @ret rc Return status code
*/
-int xfer_deliver_raw ( struct interface *intf, const void *data, size_t len ) {
+int xfer_deliver_raw_meta ( struct interface *intf, const void *data,
+ size_t len, struct xfer_metadata *meta ) {
struct io_buffer *iobuf;
iobuf = xfer_alloc_iob ( intf, len );
@@ -227,7 +230,19 @@ int xfer_deliver_raw ( struct interface *intf, const void *data, size_t len ) {
return -ENOMEM;
memcpy ( iob_put ( iobuf, len ), data, len );
- return xfer_deliver_iob ( intf, iobuf );
+ return xfer_deliver ( intf, iobuf, meta );
+}
+
+/**
+ * Deliver datagram as raw data without metadata
+ *
+ * @v intf Data transfer interface
+ * @v data Data
+ * @v len Length of data
+ * @ret rc Return status code
+ */
+int xfer_deliver_raw ( struct interface *intf, const void *data, size_t len ) {
+ return xfer_deliver_raw_meta ( intf, data, len, &dummy_metadata );
}
/**
diff --git a/src/include/ipxe/xfer.h b/src/include/ipxe/xfer.h
index 21614284b..2aa35f8de 100644
--- a/src/include/ipxe/xfer.h
+++ b/src/include/ipxe/xfer.h
@@ -74,6 +74,8 @@ extern int xfer_deliver ( struct interface *intf,
extern int xfer_redirect ( struct interface *xfer, int type, ... );
extern int xfer_deliver_iob ( struct interface *intf,
struct io_buffer *iobuf );
+extern int xfer_deliver_raw_meta ( struct interface *intf, const void *data,
+ size_t len, struct xfer_metadata *meta );
extern int xfer_deliver_raw ( struct interface *intf,
const void *data, size_t len );
extern int xfer_vprintf ( struct interface *intf,