From d50c987ead437610dfaecddd15d34461a9ff2ec2 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Tue, 27 Mar 2018 15:02:56 +0200 Subject: [PATCH] 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 --- src/plugins/memif/memif.h | 1 + src/plugins/memif/socket.c | 4 ++++ 2 files changed, 5 insertions(+) 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)) -- 2.16.6