From 0329673833cf878fc094c13b1d32bfed2d17cacf Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 25 Jul 2010 01:49:00 +0100 Subject: [PATCH] [xfer] Add xfer_deliver_raw_meta() Signed-off-by: Michael Brown --- src/core/xfer.c | 25 ++++++++++++++++++++----- src/include/ipxe/xfer.h | 2 ++ 2 files changed, 22 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 ); } /** diff --git a/src/include/ipxe/xfer.h b/src/include/ipxe/xfer.h index 21614284..2aa35f8d 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,