dpdk 20.11 中 IP 地址的接口或端口 ID

Interface or port id to IP address in dpdk 20.11

dpdk(自 20.11 LTS 起)中是否存在用于将 IP 地址映射到接口(端口 ID)或反之的 API?

根据当前可用的 DPDK 21.05.0 版本,没有直接 API 支持 IP 地址到端口号的映射。这是因为DPDKAPI没有实现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;
}