From 1c765b39888c290551c2a4294199db1190164857 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 27 Apr 2007 00:02:23 +0000 Subject: Added deliver-as-iobuf/deliver-as-raw concepts. --- src/include/gpxe/xfer.h | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/include') diff --git a/src/include/gpxe/xfer.h b/src/include/gpxe/xfer.h index 0e577e933..7a10b860b 100644 --- a/src/include/gpxe/xfer.h +++ b/src/include/gpxe/xfer.h @@ -18,13 +18,32 @@ struct xfer_interface_operations { /** Deliver datagram * * @v xfer Data-transfer interface - * @v src Source interface + * @v src Source interface * @v iobuf Datagram I/O buffer * @ret rc Return status code + * + * A data transfer interface that wishes to support only raw + * data delivery should set this method to + * deliver_as_raw(). */ int ( * deliver ) ( struct xfer_interface *xfer, struct xfer_interface *src, struct io_buffer *iobuf ); + /** Deliver datagram as raw data + * + * @v xfer Data-transfer interface + * @v src Source interface + * @v data Data buffer + * @v len Length of data buffer + * @ret rc Return status code + * + * A data transfer interface that wishes to support only I/O + * buffer delivery should set this method to + * deliver_as_iobuf(). + */ + int ( * deliver_raw ) ( struct xfer_interface *xfer, + struct xfer_interface *src, + const void *data, size_t len ); }; /** A data transfer interface */ @@ -38,6 +57,19 @@ struct xfer_interface { extern struct xfer_interface null_xfer; extern struct xfer_interface_operations null_xfer_ops; +extern int deliver_as_raw ( struct xfer_interface *xfer, + struct xfer_interface *src, + struct io_buffer *iobuf ); +extern int deliver_as_iobuf ( struct xfer_interface *xfer, + struct xfer_interface *src, + const void *data, size_t len ); + +/** + * Get destination data-transfer interface + * + * @v xfer Data-transfer interface + * @ret dest Destination interface + */ static inline struct xfer_interface * xfer_dest ( struct xfer_interface *xfer ) { return container_of ( xfer->intf.dest, struct xfer_interface, intf ); -- cgit v1.2.3-55-g7522