]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[xfer] Add xfer_deliver_raw_meta()
authorMichael Brown <mcb30@ipxe.org>
Sun, 25 Jul 2010 00:49:00 +0000 (01:49 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 3 Sep 2010 20:23:16 +0000 (21:23 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/xfer.c
src/include/ipxe/xfer.h

index 112adfcba0cfff3d009514268848bc4fa80e4f8a..222af52a83d4905a2abce23b55b77fbe67db80d5 100644 (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 );
 }
 
 /**
index 21614284bb2dd99dd1d68e25a053ea7a5facf05d..2aa35f8def2a40d009d469dafb800531d05fb1fe 100644 (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,