summaryrefslogtreecommitdiffstats
path: root/src/bp_sim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bp_sim.cpp')
-rwxr-xr-xsrc/bp_sim.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/bp_sim.cpp b/src/bp_sim.cpp
index 2ebffb0d..95f9e2fa 100755
--- a/src/bp_sim.cpp
+++ b/src/bp_sim.cpp
@@ -5049,17 +5049,25 @@ void CErfIF::add_vlan(uint16_t vlan_id) {
void CErfIF::apply_client_config(CGenNode *node, pkt_dir_t dir) {
uint8_t *p =(uint8_t *)m_raw->raw;
- uint16_t vlan_id;
- if (dir == CLIENT_SIDE) {
- memcpy(p, node->m_client_cfg->m_initiator.m_dst_mac, 6);
- vlan_id = node->m_client_cfg->m_responder.m_vlan;
- } else {
- memcpy(p, node->m_client_cfg->m_responder.m_dst_mac, 6);
- vlan_id = node->m_client_cfg->m_responder.m_vlan;
+ ClientCfgDir &cfg_dir = ( (dir == CLIENT_SIDE) ? node->m_client_cfg->m_initiator : node->m_client_cfg->m_responder);
+
+ /* dst mac */
+ if (cfg_dir.has_dst_mac_addr()) {
+ memcpy(p, cfg_dir.get_dst_mac_addr(), 6);
+ }
+
+ /* src mac */
+ if (cfg_dir.has_src_mac_addr()) {
+ memcpy(p + 6, cfg_dir.get_src_mac_addr(), 6);
}
- add_vlan(vlan_id);
+ /* VLAN */
+ if (cfg_dir.has_vlan()) {
+ add_vlan(cfg_dir.get_vlan());
+ }
+
+
}