Fix trex-308. Stateful latency with NAT does not work on more than 2 ports 66/5166/1
authorIdo Barnea <[email protected]>
Thu, 15 Dec 2016 19:11:34 +0000 (21:11 +0200)
committerIdo Barnea <[email protected]>
Thu, 15 Dec 2016 19:11:34 +0000 (21:11 +0200)
Signed-off-by: Ido Barnea <[email protected]>
src/stateful_rx_core.cpp

index cd2263a..dced736 100644 (file)
@@ -126,32 +126,32 @@ void CLatencyPktInfo::Create(class CLatencyPktMode *m_l_pkt_info){
 
 }
 
-rte_mbuf_t * CLatencyPktInfo::generate_pkt(int port_id,uint32_t extern_ip){
-    bool is_client_to_server=(port_id%2==0)?true:false;
-
-    int dual_port_index=(port_id>>1);
-    uint32_t c=m_client_ip.v4;
-    uint32_t s=m_server_ip.v4;
-    if ( extern_ip ){
-        c=extern_ip;
+rte_mbuf_t * CLatencyPktInfo::generate_pkt(int port_id, uint32_t extern_ip) {
+    bool is_client_to_server = (port_id % 2 == 0) ? true:false;
+    int dual_port_index = port_id >> 1;
+    uint32_t mask = dual_port_index * m_dual_port_mask;
+    uint32_t c = m_client_ip.v4;
+    uint32_t s = m_server_ip.v4;
+
+    if (is_client_to_server) {
+        if ( extern_ip ) {
+            m_dummy_node.m_src_ip = extern_ip;
+        } else {
+            m_dummy_node.m_src_ip = c + mask;
+        }
+        m_dummy_node.m_dest_ip = s + mask;
+    } else {
+        if ( extern_ip ) {
+            m_dummy_node.m_dest_ip = extern_ip;
+        } else {
+            m_dummy_node.m_dest_ip = c + mask;
+        }
+        m_dummy_node.m_src_ip = s + mask;
     }
 
-    if (!is_client_to_server) {
-        /*swap */
-        uint32_t t=c;
-        c=s;
-        s=t;
-    }
-    uint32_t mask=dual_port_index*m_dual_port_mask;
-    if ( extern_ip==0 ){
-       c+=mask;
-    }
-    s+=mask;
-    m_dummy_node.m_src_ip  = c;
-    m_dummy_node.m_dest_ip   = s;
+    rte_mbuf_t *m = m_pkt_info.generate_new_mbuf(&m_dummy_node);
 
-    rte_mbuf_t * m=m_pkt_info.generate_new_mbuf(&m_dummy_node);
-    return (m);
+    return m;
 }
 
 void CLatencyPktInfo::set_ip(uint32_t src,