uint32_t packet_length = rte_pktmbuf_pkt_len(pkt);
uint32_t dest_if = INVALID_DESTIF;
+ uint32_t dst_phy_port = INVALID_DESTIF;
uint32_t src_phy_port = pkt->port;
+ if(is_phy_port_privte(src_phy_port))
+ dst_phy_port = prv_to_pub_map[src_phy_port];
+ else
+ dst_phy_port = pub_to_prv_map[src_phy_port];
+
if(is_gateway()){
uint32_t nhip = 0;
uint32_t dst_ip_addr = rte_bswap32(ipv4hdr->dst_addr);
- gw_get_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip);
+ gw_get_route_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip, dst_phy_port);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if, &dst_mac);
uint32_t dest_if = INVALID_DESTIF;
uint32_t src_phy_port = pkt->port;
+ uint32_t dst_phy_port = INVALID_DESTIF;
+ if(is_phy_port_privte(src_phy_port))
+ dst_phy_port = prv_to_pub_map[src_phy_port];
+ else
+ dst_phy_port = pub_to_prv_map[src_phy_port];
if(is_gateway()){
uint32_t src_phy_port = pkt->port;
uint32_t dst_ip_addr = rte_bswap32(ipv4hdr->dst_addr);
- gw_get_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip);
+ gw_get_route_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip, dst_phy_port);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if, &dst_mac);
struct arp_entry_data *ret_arp_data = NULL;
uint32_t src_phy_port = *src_port;
- gw_get_nh_port_ipv4(dest_address,
- &dest_if, &nhip);
+ dest_if = prv_to_pub_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
if (dest_if == INVALID_DESTIF) {
p_nat->invalid_packets |=
struct arp_entry_data *ret_arp_data = NULL;
dest_if = INVALID_DESTIF;
uint32_t src_phy_port = *src_port;
-
- gw_get_nh_port_ipv4(dest_address,
- &dest_if, &nhip);
+ dest_if = pub_to_prv_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
if (dest_if == INVALID_DESTIF) {
p_nat->invalid_packets |=
struct arp_entry_data *ret_arp_data = NULL;
uint32_t src_phy_port = *src_port;
-
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+ dest_if = prv_to_pub_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);
uint32_t src_phy_port = *src_port;
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+
+ dest_if = pub_to_prv_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);
struct arp_entry_data *ret_arp_data = NULL;
uint64_t start, end;
uint32_t src_phy_port = *src_port;
-
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+ dest_if = prv_to_pub_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);
dest_address = entry->data.u.prv_ip;
struct arp_entry_data *ret_arp_data = NULL;
uint32_t src_phy_port = *src_port;
-
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+ dest_if = pub_to_prv_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);
uint32_t src_phy_port = *src_port;
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+ dest_if = prv_to_pub_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);
{
struct arp_entry_data *ret_arp_data;
uint32_t src_phy_port = *src_port;
-
- gw_get_nh_port_ipv4(dest_address, &dest_if, &nhip);
+ dest_if = prv_to_pub_map[src_phy_port];
+ gw_get_route_nh_port_ipv4(dest_address,
+ &dest_if, &nhip, dest_if);
ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if,
(struct ether_addr *)eth_dest);