如何解决dpdk 20.11 中 IP 地址的接口或端口 ID
dpdk(从 20.11 LTS 开始)中是否有任何现有的 API 来将 IP 地址映射到接口(端口 ID),反之亦然?
解决方法
根据当前可用的 DPDK 21.05.0
版本,没有支持 IP 地址到端口号映射的直接 API。这是因为 DPDK API 没有实现IP 堆栈。
如果需要维护一个简单的 IP 地址到 DPDK 端口的映射,我强烈建议使用一个简单的数组来实现。
uin8_t mapPortIp4[RTE_MAX_ETHPORTS][4] = {0};
uint8_t rte_ipv6_hdr mapPortIp6[RTE_MAX_ETHPORTS][16] = {0};
int updateIp4(uin8_t Ip4[4],uint16_t port)
{
if (port >= rte_eth_dev_count_avail())
return -1;
mapPortIp4[port][0] = Ip4[0];
mapPortIp4[port][1] = Ip4[1];
mapPortIp4[port][2] = Ip4[2];
mapPortIp4[port][3] = Ip4[3];
return 0;
}
int updateIp6(uin8_t Ip6[16],uint16_t port)
{
if (port >= rte_eth_dev_count_avail())
return -1;
mapPortIp6[port][0] = Ip6[0];
mapPortIp6[port][1] = Ip6[1];
mapPortIp6[port][2] = Ip6[2];
mapPortIp6[port][3] = Ip6[3];
mapPortIp6[port][4] = Ip6[4];
mapPortIp6[port][5] = Ip6[5];
mapPortIp6[port][6] = Ip6[6];
mapPortIp6[port][7] = Ip6[7];
mapPortIp6[port][8] = Ip6[8];
mapPortIp6[port][9] = Ip6[9];
mapPortIp6[port][10] = Ip6[10];
mapPortIp6[port][11] = Ip6[11];
mapPortIp6[port][12] = Ip6[12];
mapPortIp6[port][13] = Ip6[13];
mapPortIp6[port][14] = Ip6[14];
mapPortIp6[port][15] = Ip6[15];
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。