aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2018-03-27 15:02:56 +0200
committerDamjan Marion <dmarion.lists@gmail.com>2018-03-27 16:04:23 +0000
commitd50c987ead437610dfaecddd15d34461a9ff2ec2 (patch)
tree5d3c87e2982c27065e820850453cbc6a7c0a815d /src/plugins
parent18c0f229cec4695cf77a0e3a9033d2ff0d1e085a (diff)
memif: add private header size field
private header size allows to reserve firs X bytes of payload to be considered as private metadata. For now we just support value 0 but adding this field to address future needs without changing protocol version. Change-Id: Id77336584c0194a303b20210aff584c7372cba01 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/memif/memif.h1
-rw-r--r--src/plugins/memif/socket.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/src/plugins/memif/memif.h b/src/plugins/memif/memif.h
index 38b54029e46..3fbce91d68f 100644
--- a/src/plugins/memif/memif.h
+++ b/src/plugins/memif/memif.h
@@ -103,6 +103,7 @@ typedef struct __attribute__ ((packed))
memif_region_index_t region;
memif_region_offset_t offset;
memif_log2_ring_size_t log2_ring_size;
+ uint16_t private_hdr_size; /* used for private metadata */
} memif_msg_add_ring_t;
typedef struct __attribute__ ((packed))
diff --git a/src/plugins/memif/socket.c b/src/plugins/memif/socket.c
index 384a7b173c5..34bff166d79 100644
--- a/src/plugins/memif/socket.c
+++ b/src/plugins/memif/socket.c
@@ -153,6 +153,7 @@ memif_msg_enq_add_ring (memif_if_t * mif, u8 index, u8 direction)
ar->offset = mq->offset;
ar->log2_ring_size = mq->log2_ring_size;
ar->flags = (direction == MEMIF_RING_S2M) ? MEMIF_MSG_ADD_RING_FLAG_S2M : 0;
+ ar->private_hdr_size = 0;
}
static void
@@ -326,6 +327,9 @@ memif_msg_receive_add_ring (memif_if_t * mif, memif_msg_t * msg, int fd)
if (fd < 0)
return clib_error_return (0, "missing ring interrupt fd");
+ if (ar->private_hdr_size != 0)
+ return clib_error_return (0, "private headers not supported");
+
if (ar->flags & MEMIF_MSG_ADD_RING_FLAG_S2M)
{
if (ar->index != vec_len (mif->rx_queues))