summaryrefslogtreecommitdiffstats
path: root/src/trex_client_config.h
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-06-29 10:35:54 +0300
committerimarom <imarom@cisco.com>2016-07-03 13:40:21 +0300
commit1dfd42ceb79677e171d5dedcac34900776574000 (patch)
treeed1dfd5964d6fb2cde139a55f4ef482005edb13e /src/trex_client_config.h
parentf03fa158116cfd65659d14698c91446dc9bdb4c4 (diff)
added enhanced parsing for the YAML wrapper module
Diffstat (limited to 'src/trex_client_config.h')
-rw-r--r--src/trex_client_config.h49
1 files changed, 29 insertions, 20 deletions
diff --git a/src/trex_client_config.h b/src/trex_client_config.h
index f934517d..b6e7d32d 100644
--- a/src/trex_client_config.h
+++ b/src/trex_client_config.h
@@ -25,19 +25,21 @@ limitations under the License.
#include <string>
#include <map>
+class YAMLParserWrapper;
+
/**
* single client config
*
- * @author imarom (27-Jun-16)
*/
class ClientCfg {
public:
- uint8_t m_init_mac[6];
- uint16_t m_init_vlan;
-
- uint8_t m_res_mac[6];
- uint16_t m_res_vlan;
-
+ struct dir_st {
+ uint8_t m_dst_mac[6];
+ uint16_t m_vlan;
+ };
+
+ dir_st m_initiator;
+ dir_st m_responder;
};
/**
@@ -73,15 +75,16 @@ public:
*/
void assign(ClientCfg &info) {
+ /* assigns MAC addrs as big endian */
for (int i = 0; i < 6; i++) {
- info.m_init_mac[i] = ( (m_init_mac + m_iterator) >> ((5 - i) * 8) ) & 0xFF;
- info.m_res_mac[i] = ( (m_res_mac + m_iterator) >> ((5 - i) * 8) ) & 0xFF;
+ info.m_initiator.m_dst_mac[i] = ( (m_initiator.m_dst_mac + m_iterator) >> ((5 - i) * 8) ) & 0xFF;
+ info.m_responder.m_dst_mac[i] = ( (m_responder.m_dst_mac + m_iterator) >> ((5 - i) * 8) ) & 0xFF;
}
- info.m_init_vlan = m_init_vlan;
- info.m_res_vlan = m_res_vlan;
+ info.m_initiator.m_vlan = m_initiator.m_vlan;
+ info.m_responder.m_vlan = m_responder.m_vlan;
- /* advance */
+ /* advance for the next assign */
m_iterator = (m_iterator + 1) % m_count;
}
@@ -89,28 +92,32 @@ public:
uint32_t m_ip_start;
uint32_t m_ip_end;
- uint64_t m_init_mac;
- uint16_t m_init_vlan;
+ struct cfg_dir_st {
+ //uint64_t m_src_mac;
+ uint64_t m_dst_mac;
+ uint16_t m_vlan;
+ };
- uint64_t m_res_mac;
- uint16_t m_res_vlan;
+ cfg_dir_st m_initiator;
+ cfg_dir_st m_responder;
- uint32_t m_count;
+ uint32_t m_count;
private:
uint32_t m_iterator;
};
/**
- * describes the DB of every client group
+ * holds all the configured clients groups
*
*/
class ClientCfgDB {
public:
ClientCfgDB() {
- m_is_empty = true;
+ m_is_empty = true;
m_cache_group = NULL;
+ m_under_vlan = false;
}
/**
@@ -139,7 +146,7 @@ public:
ClientCfgEntry * lookup(const std::string &ip);
private:
-
+ void parse_single_group(YAMLParserWrapper &parser, const YAML::Node &node);
void yaml_parse_err(const std::string &err, const YAML::Mark *mark = NULL) const;
/**
@@ -150,6 +157,8 @@ private:
/* maps the IP start value to client groups */
std::map<uint32_t, ClientCfgEntry> m_groups;
+ bool m_under_vlan;
+
ClientCfgEntry *m_cache_group;
std::string m_filename;
bool m_is_empty;