Update MAC address to match the next hop 38/7238/1
authorschillinge <ablu@mail.uni-paderborn.de>
Wed, 20 Feb 2019 10:04:08 +0000 (11:04 +0100)
committerschillinge <ablu@mail.uni-paderborn.de>
Wed, 20 Feb 2019 10:05:28 +0000 (11:05 +0100)
If the mac address is not updated the receiving host will reject the
packet since it sees a MAC address which does not belong to him.

Change-Id: I95edc11572b2ada8841b504ed8eee743613cce09
Signed-off-by: schillinge <ablu@mail.uni-paderborn.de>
src/emuvim/api/openstack/resources/port_chain.py
src/emuvim/dcemulator/net.py

index 1f2a367..e9ce057 100644 (file)
@@ -96,6 +96,7 @@ class PortChain(object):
             compute.dc.net.setChain(
                 server_egress.name, server_ingress.name,
                 egress_port.intf_name, ingress_port.intf_name,
+                mod_dl_dst=ingress_port.mac_address,
                 cmd="add-flow", cookie=self.cookie, priority=10, bidirectional=False,
                 monitor=False, skip_vlan_tag=True
             )
index 1bbc5bf..340f340 100755 (executable)
@@ -759,6 +759,7 @@ class DCNetwork(Containernet):
         cmd = kwargs.get('cmd')
         path = kwargs.get('path')
         index = kwargs.get('pathindex')
+        mod_dl_dst = kwargs.get('mod_dl_dst')
 
         vlan = kwargs.get('vlan')
         priority = kwargs.get('priority', DEFAULT_PRIORITY)
@@ -826,6 +827,12 @@ class DCNetwork(Containernet):
 
                 else:  # middle nodes
                     match += ',dl_vlan=%s' % vlan
+            if mod_dl_dst:
+                action = {}
+                action['type'] = 'SET_FIELD'
+                action['field'] = 'eth_dst'
+                action['value'] = mod_dl_dst
+                flow['actions'].append(action)
 
             # output action must come last
             action = {}