summaryrefslogtreecommitdiffstats
path: root/src/core/xfer.c
diff options
context:
space:
mode:
authorMichael Brown2010-07-25 02:49:00 +0200
committerMichael Brown2010-09-03 22:23:16 +0200
commit0329673833cf878fc094c13b1d32bfed2d17cacf (patch)
tree10f21ec225b6da924793f683d8a2de6a604f1787 /src/core/xfer.c
parent[xfer] Generalise metadata "whence" field to "flags" field (diff)
downloadipxe-0329673833cf878fc094c13b1d32bfed2d17cacf.tar.gz
ipxe-0329673833cf878fc094c13b1d32bfed2d17cacf.tar.xz
ipxe-0329673833cf878fc094c13b1d32bfed2d17cacf.zip
[xfer] Add xfer_deliver_raw_meta()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/xfer.c')
-rw-r--r--src/core/xfer.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/core/xfer.c b/src/core/xfer.c
index 112adfcb..222af52a 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 );
}
/**