From 894ec2ddcd9965f60c4bc7a0b48edf41bfc167d8 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Thu, 1 Oct 2015 22:29:46 -0400 Subject: Code change according to code review comments after Tuple Generator phase 2 commit. --- src/tuple_gen.h | 104 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 21 deletions(-) (limited to 'src/tuple_gen.h') diff --git a/src/tuple_gen.h b/src/tuple_gen.h index fb856538..8efa07a4 100755 --- a/src/tuple_gen.h +++ b/src/tuple_gen.h @@ -99,6 +99,47 @@ typedef struct mac_mapping_ { #define TYPE2 1 #define MAX_TYPE 3 +class CFlowGenListMac { +public: + CFlowGenListMac() { + set_configured(false); + } + + std::map & + get_mac_info () { + return m_mac_info; + } + + bool is_configured() { + return is_mac_info_configured; + } + + void set_configured(bool is_conf) { + is_mac_info_configured = is_conf; + } + + void clear() { + set_configured(false); + m_mac_info.clear(); + } + + uint32_t get_mac_info_cnt(uint32_t ip) { + if (is_configured()) { + return m_mac_info.count(ip); + } else { + return 0; + } + } + mac_addr_align_t* get_mac_addr_by_ip(uint32_t ip) { + if (get_mac_info_cnt(ip)>0) { + return &(m_mac_info[ip]); + } + return NULL; + } +private: + bool is_mac_info_configured; + std::map m_mac_info; /* global mac info loaded form mac_file*/ +}; class CIpInfoBase { public: @@ -113,7 +154,7 @@ class CIpInfoBase { void set_ip(uint32_t ip) { m_ip = ip; } - public: + private: uint32_t m_ip; }; @@ -254,6 +295,7 @@ class CClientInfo : public CIpInfo { ~CClientInfo() { if (m_mac!=NULL){ delete m_mac; + m_mac=NULL; } } private: @@ -282,6 +324,7 @@ public: ~CClientInfoL() { if (m_mac!=NULL) { delete m_mac; + m_mac=NULL; } } private: @@ -350,6 +393,31 @@ public: m_client_mac.inused = UNUSED; } } + void setClientAll(uint32_t id, uint32_t ip,mac_addr_align_t*mac,uint16_t port) { + setClientId(id); + setClient(ip); + setClientMac(mac); + setClientPort(port); + } + void setClientAll2(uint32_t id, uint32_t ip,uint16_t port) { + setClientId(id); + setClient(ip); + setClientPort(port); + } + + void setServerAll(uint32_t id, uint32_t ip) { + setServerId(id); + setServer(ip); + } + void getClientAll(uint32_t & id, uint32_t & ip, uint32_t & port) { + id = getClientId(); + ip = getClient(); + port = getClientPort(); + } + void getServerAll(uint32_t & id, uint32_t & ip) { + id = getServerId(); + ip = getServer(); + } private: uint32_t m_client_ip; uint32_t m_client_idx; @@ -362,10 +430,6 @@ private: -class CFlowGenList; -mac_addr_align_t * get_mac_addr_by_ip(CFlowGenList *fl_list, - uint32_t ip); -bool is_mac_info_conf(CFlowGenList *fl_list); class CIpPool { public: @@ -493,10 +557,10 @@ class CClientPool : public CIpPool { public: void GenerateTuple(CTupleBase & tuple) { uint32_t idx = generate_ip(); - tuple.setClientId(idx); - tuple.setClient(get_ip(idx)); - tuple.setClientMac(get_mac(idx)); - tuple.setClientPort(GenerateOnePort(idx)); + tuple.setClientAll(idx, + get_ip(idx), + get_mac(idx), + GenerateOnePort(idx)); } uint16_t get_tcp_aging() { return m_tcp_aging; @@ -509,7 +573,7 @@ public: uint32_t max_ip, double l_flow, double t_cps, - CFlowGenList* fl_list, + CFlowGenListMac* mac_info, bool has_mac_map, uint16_t tcp_aging, uint16_t udp_aging); @@ -571,8 +635,7 @@ public: CIpPool *gen; void GenerateTuple(CTupleBase & tuple) { uint32_t idx = gen->generate_ip(); - tuple.setServerId(idx); - tuple.setServer(gen->get_ip(idx)); + tuple.setServerAll(idx, gen->get_ip(idx)); } uint16_t GenerateOnePort(uint32_t idx) { return gen->GenerateOnePort(idx); @@ -587,6 +650,7 @@ public: if (gen!=NULL) { gen->Delete(); delete gen; + gen=NULL; } } uint32_t get_total_ips() { @@ -672,7 +736,7 @@ public: uint32_t max_client, double l_flow, double t_cps, - CFlowGenList* fl_list, + CFlowGenListMac* mac_info, uint16_t tcp_aging, uint16_t udp_aging); bool add_server_pool(IP_DIST_t server_dist, @@ -718,15 +782,13 @@ public: m_server_gen->GenerateTuple(tuple); m_cache_client_ip = tuple.getClient(); m_cache_client_idx = tuple.getClientId(); - m_cache_server_ip = tuple.getServer(); - m_cache_server_idx = tuple.getServerId(); + tuple.getServerAll(m_cache_server_idx, m_cache_server_ip); }else{ - tuple.setServer(m_cache_server_ip); - tuple.setServerId(m_cache_server_idx); - tuple.setClient(m_cache_client_ip); - tuple.setClientId(m_cache_client_idx); - tuple.setClientPort( - m_client_gen->GenerateOnePort(m_cache_client_idx)); + tuple.setServerAll(m_cache_server_idx, + m_cache_server_ip); + tuple.setClientAll2(m_cache_client_idx, + m_cache_client_ip, + m_client_gen->GenerateOnePort(m_cache_client_idx)); } m_cnt++; if (m_cnt>=m_w) { -- cgit From e2b63ecc0544c82590c9aeb9a44a8a4bcb869cb6 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 1 Oct 2015 22:58:16 -0400 Subject: minor change --- src/tuple_gen.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/tuple_gen.h') diff --git a/src/tuple_gen.h b/src/tuple_gen.h index 8efa07a4..205014c5 100755 --- a/src/tuple_gen.h +++ b/src/tuple_gen.h @@ -632,7 +632,6 @@ private: class CServerPool : public CServerPoolBase { public: - CIpPool *gen; void GenerateTuple(CTupleBase & tuple) { uint32_t idx = gen->generate_ip(); tuple.setServerAll(idx, gen->get_ip(idx)); @@ -656,6 +655,8 @@ public: uint32_t get_total_ips() { return gen->m_ip_info.size(); } +private: + CIpPool *gen; }; /* generate for each template */ @@ -712,7 +713,7 @@ public: public: CTupleGeneratorSmart(){ m_was_init=false; - has_mac_mapping = false; + m_has_mac_mapping = false; } bool Create(uint32_t _id, uint32_t thread_id, bool has_mac=false); @@ -763,7 +764,7 @@ private: std::vector m_client_pool; std::vector m_server_pool; bool m_was_init; - bool has_mac_mapping; + bool m_has_mac_mapping; }; class CTupleTemplateGeneratorSmart { -- cgit From 31d21b32b4a9d49bb55115fa50cf9dbf4d8b0d3b Mon Sep 17 00:00:00 2001 From: root Date: Fri, 9 Oct 2015 14:10:38 -0400 Subject: code update after review --- src/tuple_gen.h | 340 +++++++++++++++++++++++++------------------------------- 1 file changed, 154 insertions(+), 186 deletions(-) (limited to 'src/tuple_gen.h') diff --git a/src/tuple_gen.h b/src/tuple_gen.h index 205014c5..204dda0d 100755 --- a/src/tuple_gen.h +++ b/src/tuple_gen.h @@ -37,10 +37,97 @@ limitations under the License. #include "common/c_common.h" #include #include - +#include #include +class CTupleBase { +public: + CTupleBase() { + m_client_mac.inused = UNUSED; + } + uint32_t getClient() { + return m_client_ip; + } + void setClient(uint32_t ip) { + m_client_ip = ip; + } + uint32_t getClientId() { + return m_client_idx; + } + void setClientId(uint32_t id) { + m_client_idx = id; + } + + uint32_t getServer(){ + return m_server_ip; + } + void setServer(uint32_t ip) { + m_server_ip = ip; + } + uint32_t getServerId(){ + return m_server_idx; + } + void setServerId(uint32_t id) { + m_server_idx = id; + } + uint16_t getServerPort() { + return m_server_port; + } + void setServerPort(uint16_t port) { + m_server_port = port; + } + uint16_t getClientPort() { + return m_client_port; + } + void setClientPort(uint16_t port) { + m_client_port = port; + } + mac_addr_align_t* getClientMac() { + return &m_client_mac; + } + void setClientMac(mac_addr_align_t* mac_info) { + if (mac_info != NULL) { + memcpy(&m_client_mac, mac_info, sizeof(mac_addr_align_t)); + m_client_mac.inused = INUSED; + } else { + m_client_mac.inused = UNUSED; + } + } + void setClientTuple(uint32_t ip,mac_addr_align_t*mac,uint16_t port) { + setClient(ip); + setClientMac(mac); + setClientPort(port); + } + void setClientAll2(uint32_t id, uint32_t ip,uint16_t port) { + setClientId(id); + setClient(ip); + setClientPort(port); + } + + void setServerAll(uint32_t id, uint32_t ip) { + setServerId(id); + setServer(ip); + } + void getClientAll(uint32_t & id, uint32_t & ip, uint32_t & port) { + id = getClientId(); + ip = getClient(); + port = getClientPort(); + } + void getServerAll(uint32_t & id, uint32_t & ip) { + id = getServerId(); + ip = getServer(); + } +private: + uint32_t m_client_ip; + uint32_t m_client_idx; + uint32_t m_server_ip; + uint32_t m_server_idx; + mac_addr_align_t m_client_mac; + uint16_t m_client_port; + uint16_t m_server_port; +}; + /* @@ -59,9 +146,8 @@ limitations under the License. #define FOREACH(vector) for(int i=0;i & - get_mac_info () { - return m_mac_info; - } - - bool is_configured() { - return is_mac_info_configured; - } - - void set_configured(bool is_conf) { - is_mac_info_configured = is_conf; - } - - void clear() { - set_configured(false); - m_mac_info.clear(); - } - - uint32_t get_mac_info_cnt(uint32_t ip) { - if (is_configured()) { - return m_mac_info.count(ip); - } else { - return 0; - } - } - mac_addr_align_t* get_mac_addr_by_ip(uint32_t ip) { - if (get_mac_info_cnt(ip)>0) { - return &(m_mac_info[ip]); - } - return NULL; - } -private: - bool is_mac_info_configured; - std::map m_mac_info; /* global mac info loaded form mac_file*/ -}; - class CIpInfoBase { public: virtual mac_addr_align_t* get_mac() { return NULL;} virtual void set_mac(mac_addr_align_t*){;} virtual uint16_t get_new_free_port() = 0; virtual void return_port(uint16_t a) = 0; + virtual void generate_tuple(CTupleBase & tuple) = 0; virtual void return_all_ports() = 0; uint32_t get_ip() { return m_ip; @@ -154,7 +183,7 @@ class CIpInfoBase { void set_ip(uint32_t ip) { m_ip = ip; } - private: + protected: uint32_t m_ip; }; @@ -274,32 +303,37 @@ class CIpInfo : public CIpInfoBase { }; class CClientInfo : public CIpInfo { - public: - CClientInfo (bool has_mac) { - if (has_mac==true) { - m_mac = new mac_addr_align_t(); - } else { - m_mac = NULL; - } - } - CClientInfo () { +public: + CClientInfo (bool has_mac) { + if (has_mac==true) { + m_mac = new mac_addr_align_t(); + } else { m_mac = NULL; } - - mac_addr_align_t* get_mac() { - return m_mac; - } - void set_mac(mac_addr_align_t *mac) { - memcpy(m_mac, mac, sizeof(mac_addr_align_t)); - } - ~CClientInfo() { - if (m_mac!=NULL){ - delete m_mac; - m_mac=NULL; - } + } + CClientInfo () { + m_mac = NULL; + } + + mac_addr_align_t* get_mac() { + return m_mac; + } + void set_mac(mac_addr_align_t *mac) { + memcpy(m_mac, mac, sizeof(mac_addr_align_t)); + } + ~CClientInfo() { + if (m_mac!=NULL){ + delete m_mac; + m_mac=NULL; } - private: - mac_addr_align_t *m_mac; + } + + void generate_tuple(CTupleBase & tuple) { + tuple.setClientTuple(m_ip, m_mac, + get_new_free_port()); + } +private: + mac_addr_align_t *m_mac; }; class CClientInfoL : public CIpInfoL { @@ -314,118 +348,40 @@ public: CClientInfoL () { m_mac = NULL; } - + mac_addr_align_t* get_mac() { return m_mac; } + void set_mac(mac_addr_align_t *mac) { memcpy(m_mac, mac, sizeof(mac_addr_align_t)); } + ~CClientInfoL() { - if (m_mac!=NULL) { + if (m_mac!=NULL){ delete m_mac; m_mac=NULL; } } + + void generate_tuple(CTupleBase & tuple) { + tuple.setClientTuple(m_ip, m_mac, + get_new_free_port()); + } private: mac_addr_align_t *m_mac; }; class CServerInfo : public CIpInfo { - ; + void generate_tuple(CTupleBase & tuple) { + tuple.setServer(m_ip); + } }; class CServerInfoL : public CIpInfoL { - ; -}; - - -class CTupleBase { -public: - CTupleBase() { - m_client_mac.inused = UNUSED; - } - uint32_t getClient() { - return m_client_ip; - } - void setClient(uint32_t ip) { - m_client_ip = ip; - } - uint32_t getClientId() { - return m_client_idx; - } - void setClientId(uint32_t id) { - m_client_idx = id; - } - - uint32_t getServer(){ - return m_server_ip; - } - void setServer(uint32_t ip) { - m_server_ip = ip; - } - uint32_t getServerId(){ - return m_server_idx; - } - void setServerId(uint32_t id) { - m_server_idx = id; - } - uint16_t getServerPort() { - return m_server_port; - } - void setServerPort(uint16_t port) { - m_server_port = port; - } - uint16_t getClientPort() { - return m_client_port; - } - void setClientPort(uint16_t port) { - m_client_port = port; - } - mac_addr_align_t* getClientMac() { - return &m_client_mac; - } - void setClientMac(mac_addr_align_t* mac_info) { - if (mac_info != NULL) { - memcpy(&m_client_mac, mac_info, sizeof(mac_addr_align_t)); - m_client_mac.inused = INUSED; - } else { - m_client_mac.inused = UNUSED; - } - } - void setClientAll(uint32_t id, uint32_t ip,mac_addr_align_t*mac,uint16_t port) { - setClientId(id); - setClient(ip); - setClientMac(mac); - setClientPort(port); - } - void setClientAll2(uint32_t id, uint32_t ip,uint16_t port) { - setClientId(id); - setClient(ip); - setClientPort(port); - } - - void setServerAll(uint32_t id, uint32_t ip) { - setServerId(id); - setServer(ip); - } - void getClientAll(uint32_t & id, uint32_t & ip, uint32_t & port) { - id = getClientId(); - ip = getClient(); - port = getClientPort(); - } - void getServerAll(uint32_t & id, uint32_t & ip) { - id = getServerId(); - ip = getServer(); - } -private: - uint32_t m_client_ip; - uint32_t m_client_idx; - uint32_t m_server_ip; - uint32_t m_server_idx; - mac_addr_align_t m_client_mac; - uint16_t m_client_port; - uint16_t m_server_port; + void generate_tuple(CTupleBase & tuple) { + tuple.setServer(m_ip); + } }; @@ -445,7 +401,8 @@ class CIpPool { m_active_alloc++; return (port); } - bool is_valid_ip(uint32_t ip){ + + bool is_valid_ip(uint32_t ip){ CIpInfoBase* ip_front = m_ip_info.front(); CIpInfoBase* ip_back = m_ip_info.back(); if ((ip>=ip_front->get_ip()) && @@ -486,6 +443,9 @@ class CIpPool { inc_cur_idx(); return res_idx; } + + + void set_dist(IP_DIST_t dist) { if (dist>=cdMAX_DIST) { m_dist = cdSEQ_DIST; @@ -555,13 +515,6 @@ class CIpPool { class CClientPool : public CIpPool { public: - void GenerateTuple(CTupleBase & tuple) { - uint32_t idx = generate_ip(); - tuple.setClientAll(idx, - get_ip(idx), - get_mac(idx), - GenerateOnePort(idx)); - } uint16_t get_tcp_aging() { return m_tcp_aging; } @@ -577,6 +530,21 @@ public: bool has_mac_map, uint16_t tcp_aging, uint16_t udp_aging); + + uint32_t GenerateTuple(CTupleBase & tuple) { + uint32_t idx = generate_ip(); + CIpInfoBase* ip_info = m_ip_info[idx]; + ip_info->generate_tuple(tuple); + + tuple.setClientId(idx); + if (tuple.getClientPort()==ILLEGAL_PORT) { + m_port_allocation_error++; + } + m_active_alloc++; + return idx; + } + + public: uint16_t m_tcp_aging; uint16_t m_udp_aging; -- cgit From 0fa1d736246a7efc9aec1e9030a60954649a8d2d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 9 Oct 2015 14:19:11 -0400 Subject: minor change --- src/tuple_gen.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/tuple_gen.h') diff --git a/src/tuple_gen.h b/src/tuple_gen.h index 204dda0d..4b181ad5 100755 --- a/src/tuple_gen.h +++ b/src/tuple_gen.h @@ -515,6 +515,20 @@ class CIpPool { class CClientPool : public CIpPool { public: + + uint32_t GenerateTuple(CTupleBase & tuple) { + uint32_t idx = generate_ip(); + CIpInfoBase* ip_info = m_ip_info[idx]; + ip_info->generate_tuple(tuple); + + tuple.setClientId(idx); + if (tuple.getClientPort()==ILLEGAL_PORT) { + m_port_allocation_error++; + } + m_active_alloc++; + return idx; + } + uint16_t get_tcp_aging() { return m_tcp_aging; } @@ -531,20 +545,6 @@ public: uint16_t tcp_aging, uint16_t udp_aging); - uint32_t GenerateTuple(CTupleBase & tuple) { - uint32_t idx = generate_ip(); - CIpInfoBase* ip_info = m_ip_info[idx]; - ip_info->generate_tuple(tuple); - - tuple.setClientId(idx); - if (tuple.getClientPort()==ILLEGAL_PORT) { - m_port_allocation_error++; - } - m_active_alloc++; - return idx; - } - - public: uint16_t m_tcp_aging; uint16_t m_udp_aging; -- cgit From 6c7880b9881ed6690954f0c29259dd0b584b3970 Mon Sep 17 00:00:00 2001 From: imarom Date: Sun, 11 Oct 2015 14:42:24 +0200 Subject: DP cores now inject a single packet as a dummy to see stats --- src/tuple_gen.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/tuple_gen.h') diff --git a/src/tuple_gen.h b/src/tuple_gen.h index fb856538..c0add0be 100755 --- a/src/tuple_gen.h +++ b/src/tuple_gen.h @@ -113,6 +113,9 @@ class CIpInfoBase { void set_ip(uint32_t ip) { m_ip = ip; } + + virtual ~CIpInfoBase() {} + public: uint32_t m_ip; }; @@ -388,7 +391,7 @@ class CIpPool { (ip<=ip_back->get_ip())) { return(true); } - printf("invalid ip:%x, min_ip:%x, max_ip:%x, this:%x\n", + printf("invalid ip:%x, min_ip:%x, max_ip:%x, this:%p\n", ip, ip_front->get_ip(), ip_back->get_ip(),this); return(false); -- cgit