Стриптиз код DPDK VLAN с использованием memcpy приводит к повреждению данных
Код полосы VLAN для выходных пакетов GTP приводит к повреждению исходного IP-адреса ac150569. После удаления тега VLAN(4 байта) исходный IP-адрес в пакете становится ac150000, что неверно.
Дамп пакетов перед удалением тега VLAN: 0ca402e8 deb15254 00b3fb19 81000873 08004500 002a00fc 00003e11 bf42ac15 05690a5f 00aa0868 08680016 001c3202 000600
Код для полосы VLAN:
memcpy( (rte_pktmbuf_mtod(m, unsigned char *)+12), ( rte_pktmbuf_mtod(m, unsigned char *)+16), m->pkt.data_len-16);Дамп пакетов после удаления тега VLAN: 0ca402e8 deb15254 00b3fb19 08004500 002a00fc 00003e11 bf42ac15 00000a5f 00aa0868 08680016 001c3202 1bdb0000 0000004e 00000e00
Не могли бы вы сообщить мне, как 0000 добавляется вместо 0569 для исходного IP-адреса в измененном пакете после удаления тега vlan? Какие изменения в коде необходимо внести?
Спасибо,
Что я уже пробовал:
memcpy( (rte_pktmbuf_mtod(m, unsigned char *)+12), (rte_pktmbuf_mtod(m, unsigned char *)+16), m->pkt.data_len-16 ); m->pkt.data_len -= 4; m->pkt.pkt_len -= 4;