Browse Source

[xfer] Add xfer_deliver_raw_meta()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 14 years ago
parent
commit
0329673833
2 changed files with 22 additions and 5 deletions
  1. 20
    5
      src/core/xfer.c
  2. 2
    0
      src/include/ipxe/xfer.h

+ 20
- 5
src/core/xfer.c View File

34
 /**
34
 /**
35
  * Dummy transfer metadata
35
  * Dummy transfer metadata
36
  *
36
  *
37
- * This gets passed to xfer_interface::deliver_iob() and equivalents
38
- * when no metadata is available.
37
+ * This gets passed to xfer_interface::deliver() and equivalents when
38
+ * no metadata is available.
39
  */
39
  */
40
 static struct xfer_metadata dummy_metadata;
40
 static struct xfer_metadata dummy_metadata;
41
 
41
 
216
  * Deliver datagram as raw data
216
  * Deliver datagram as raw data
217
  *
217
  *
218
  * @v intf		Data transfer interface
218
  * @v intf		Data transfer interface
219
- * @v iobuf		Datagram I/O buffer
219
+ * @v data		Data
220
+ * @v len		Length of data
221
+ * @v meta		Data transfer metadata
220
  * @ret rc		Return status code
222
  * @ret rc		Return status code
221
  */
223
  */
222
-int xfer_deliver_raw ( struct interface *intf, const void *data, size_t len ) {
224
+int xfer_deliver_raw_meta ( struct interface *intf, const void *data,
225
+			    size_t len, struct xfer_metadata *meta ) {
223
 	struct io_buffer *iobuf;
226
 	struct io_buffer *iobuf;
224
 
227
 
225
 	iobuf = xfer_alloc_iob ( intf, len );
228
 	iobuf = xfer_alloc_iob ( intf, len );
227
 		return -ENOMEM;
230
 		return -ENOMEM;
228
 
231
 
229
 	memcpy ( iob_put ( iobuf, len ), data, len );
232
 	memcpy ( iob_put ( iobuf, len ), data, len );
230
-	return xfer_deliver_iob ( intf, iobuf );
233
+	return xfer_deliver ( intf, iobuf, meta );
234
+}
235
+
236
+/**
237
+ * Deliver datagram as raw data without metadata
238
+ *
239
+ * @v intf		Data transfer interface
240
+ * @v data		Data
241
+ * @v len		Length of data
242
+ * @ret rc		Return status code
243
+ */
244
+int xfer_deliver_raw ( struct interface *intf, const void *data, size_t len ) {
245
+	return xfer_deliver_raw_meta ( intf, data, len, &dummy_metadata );
231
 }
246
 }
232
 
247
 
233
 /**
248
 /**

+ 2
- 0
src/include/ipxe/xfer.h View File

74
 extern int xfer_redirect ( struct interface *xfer, int type, ... );
74
 extern int xfer_redirect ( struct interface *xfer, int type, ... );
75
 extern int xfer_deliver_iob ( struct interface *intf,
75
 extern int xfer_deliver_iob ( struct interface *intf,
76
 			      struct io_buffer *iobuf );
76
 			      struct io_buffer *iobuf );
77
+extern int xfer_deliver_raw_meta ( struct interface *intf, const void *data,
78
+				   size_t len, struct xfer_metadata *meta );
77
 extern int xfer_deliver_raw ( struct interface *intf,
79
 extern int xfer_deliver_raw ( struct interface *intf,
78
 			      const void *data, size_t len );
80
 			      const void *data, size_t len );
79
 extern int xfer_vprintf ( struct interface *intf,
81
 extern int xfer_vprintf ( struct interface *intf,

Loading…
Cancel
Save