david/ipxe
Archived
1
0

[xfer] Add xfer_deliver_raw_meta()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2010-07-25 01:49:00 +01:00
parent 364b92521a
commit 0329673833
2 changed files with 22 additions and 5 deletions

View File

@ -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 );
}
/**

View File

@ -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,