Я довольно новичок в DPDK и вообще работаю с байтами.
Я пытаюсь изменить длину полученного пакета, скопировав его в mempool, а затем создав rte_mbuf с указанным mempool, который я могу изменить.
Для создания Mempool я использую
mem_pool = rte_pktmbuf_pool_create(packet, 1,
RTE_MBUF_DEFAULT_DATAROOM, <?>,
RTE_MBUF_DEFAULT_BUF_SIZE,
SOCKET_ID_ANY);
описанный в http://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962
Я, кажется, всегда получаю неправильное значение для priv_size в этом вызове, поскольку я получаю эту ошибку:
MBUF: mbuf priv_size=<variable> is not aligned
Segmentation fault
Я не могу найти больше информации в описании и много гуглюл проблему, но я не найду решение, кто-нибудь может осветить меня?
ссылка на документацию Вы предоставили цитаты:
priv_size Размер частного приложения находится между структурой rte_mbuf и буфером данных. Это значение должно быть выровнено по RTE_MBUF_PRIV_ALIGN.
Так что да, priv_size должен быть выровнен по RTE_MBUF_PRIV_ALIGN, который составляет 8 байтов.
Так что вы должны перейти к rte_pktmbuf_pool_create
priv_size 0, 8, 16, 24 и т. д.
Других решений пока нет …