From 6bdc3bd98fd899f48b792f9d1ae82a313c159450 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Thu, 24 Mar 2016 01:41:10 -0400 Subject: Fix crash when # of mac-ip mapping entries exceed than 255. --- src/tuple_gen.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index d3538ce6..36f70c39 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -84,13 +84,16 @@ void CClientPool::Create(IP_DIST_t dist_value, if (total_ip > ((l_flow*t_cps/MAX_PORT))) { if (has_mac_map) { + int skip_cnt=0; for(int idx=0;idxget_mac_addr_by_ip( min_ip+idx); if (mac_adr != NULL) { - m_ip_info[idx] = new CClientInfoL(has_mac_map); - m_ip_info[idx]->set_ip(min_ip+idx); - m_ip_info[idx]->set_mac(mac_adr); + m_ip_info[idx-skip_cnt] = new CClientInfoL(has_mac_map); + m_ip_info[idx-skip_cnt]->set_ip(min_ip+idx); + m_ip_info[idx-skip_cnt]->set_mac(mac_adr); + } else { + skip_cnt++; } } } else { @@ -101,13 +104,16 @@ void CClientPool::Create(IP_DIST_t dist_value, } } else { if (has_mac_map) { + int skip_cnt=0; for(int idx=0;idxget_mac_addr_by_ip(min_ip+idx); if (mac_adr != NULL) { - m_ip_info[idx] = new CClientInfo(has_mac_map); - m_ip_info[idx]->set_ip(min_ip+idx); - m_ip_info[idx]->set_mac(mac_adr); + m_ip_info[idx-skip_cnt] = new CClientInfo(has_mac_map); + m_ip_info[idx-skip_cnt]->set_ip(min_ip+idx); + m_ip_info[idx-skip_cnt]->set_mac(mac_adr); + } else { + skip_cnt++; } } } else { -- cgit 1.2.3-korg From 3e53fc4cc4bcfcd1e13bf3e136462b15eda238de Mon Sep 17 00:00:00 2001 From: wenxian li Date: Thu, 24 Mar 2016 01:44:36 -0400 Subject: minor. --- src/tuple_gen.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index 36f70c39..f7326901 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -82,9 +82,10 @@ void CClientPool::Create(IP_DIST_t dist_value, m_ip_info.resize(total_ip); } + int skip_cnt=0; if (total_ip > ((l_flow*t_cps/MAX_PORT))) { if (has_mac_map) { - int skip_cnt=0; + skip_cnt=0; for(int idx=0;idxget_mac_addr_by_ip( min_ip+idx); @@ -104,7 +105,7 @@ void CClientPool::Create(IP_DIST_t dist_value, } } else { if (has_mac_map) { - int skip_cnt=0; + skip_cnt=0; for(int idx=0;idxget_mac_addr_by_ip(min_ip+idx); -- cgit 1.2.3-korg From 79eff3545a1e38dd027e1fd94050ec27cfd1e412 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Thu, 24 Mar 2016 10:21:43 -0400 Subject: When mapping file is invalid, directly force stop TRex with error log. --- src/tuple_gen.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index f7326901..d221a4d9 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -77,9 +77,8 @@ void CClientPool::Create(IP_DIST_t dist_value, if (avail_ip!=0) { m_ip_info.resize(avail_ip); } else { - printf("\n Error, empty mac file is configured.\n" - "Will ignore the mac file configuration.\n"); - m_ip_info.resize(total_ip); + printf("\n Error, invalid mac file is configured.\n"); + assert(0); } int skip_cnt=0; -- cgit 1.2.3-korg