[xfer] Add xfer_deliver_raw_meta()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
364b92521a
commit
0329673833
@ -34,8 +34,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||||||
/**
|
/**
|
||||||
* Dummy transfer metadata
|
* Dummy transfer metadata
|
||||||
*
|
*
|
||||||
* This gets passed to xfer_interface::deliver_iob() and equivalents
|
* This gets passed to xfer_interface::deliver() and equivalents when
|
||||||
* when no metadata is available.
|
* no metadata is available.
|
||||||
*/
|
*/
|
||||||
static struct xfer_metadata dummy_metadata;
|
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
|
* Deliver datagram as raw data
|
||||||
*
|
*
|
||||||
* @v intf Data transfer interface
|
* @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
|
* @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;
|
struct io_buffer *iobuf;
|
||||||
|
|
||||||
iobuf = xfer_alloc_iob ( intf, len );
|
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;
|
return -ENOMEM;
|
||||||
|
|
||||||
memcpy ( iob_put ( iobuf, len ), data, len );
|
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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,6 +74,8 @@ extern int xfer_deliver ( struct interface *intf,
|
|||||||
extern int xfer_redirect ( struct interface *xfer, int type, ... );
|
extern int xfer_redirect ( struct interface *xfer, int type, ... );
|
||||||
extern int xfer_deliver_iob ( struct interface *intf,
|
extern int xfer_deliver_iob ( struct interface *intf,
|
||||||
struct io_buffer *iobuf );
|
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,
|
extern int xfer_deliver_raw ( struct interface *intf,
|
||||||
const void *data, size_t len );
|
const void *data, size_t len );
|
||||||
extern int xfer_vprintf ( struct interface *intf,
|
extern int xfer_vprintf ( struct interface *intf,
|
||||||
|
Reference in New Issue
Block a user