Two fixes: 1) cpqd emulation of ofdpa pops off internal vlan before sending to controller
2) Arp handler does not need to send flowmod to switch as hostmanager listener is doing that Change-Id: I5460aa36bcb3cfce3bc1887e304a63b2221495b9
Showing
2 changed files
with
4 additions
and
5 deletions
... | @@ -76,7 +76,7 @@ public class ArpHandler { | ... | @@ -76,7 +76,7 @@ public class ArpHandler { |
76 | * hosts in the same subnet. | 76 | * hosts in the same subnet. |
77 | * For an ARP packet with broadcast destination MAC, | 77 | * For an ARP packet with broadcast destination MAC, |
78 | * some switches pipelines will send it to the controller due to table miss, | 78 | * some switches pipelines will send it to the controller due to table miss, |
79 | - * other swithches will flood the packets directly in the data plane without | 79 | + * other switches will flood the packets directly in the data plane without |
80 | * packet in. | 80 | * packet in. |
81 | * We can deal with both cases. | 81 | * We can deal with both cases. |
82 | * | 82 | * |
... | @@ -92,10 +92,6 @@ public class ArpHandler { | ... | @@ -92,10 +92,6 @@ public class ArpHandler { |
92 | DeviceId deviceId = connectPoint.deviceId(); | 92 | DeviceId deviceId = connectPoint.deviceId(); |
93 | byte[] senderMacAddressByte = arp.getSenderHardwareAddress(); | 93 | byte[] senderMacAddressByte = arp.getSenderHardwareAddress(); |
94 | Ip4Address hostIpAddress = Ip4Address.valueOf(arp.getSenderProtocolAddress()); | 94 | Ip4Address hostIpAddress = Ip4Address.valueOf(arp.getSenderProtocolAddress()); |
95 | - | ||
96 | - srManager.routingRulePopulator.populateIpRuleForHost(deviceId, hostIpAddress, MacAddress. | ||
97 | - valueOf(senderMacAddressByte), inPort); | ||
98 | - | ||
99 | if (arp.getOpCode() == ARP.OP_REQUEST) { | 95 | if (arp.getOpCode() == ARP.OP_REQUEST) { |
100 | handleArpRequest(deviceId, connectPoint, ethernet); | 96 | handleArpRequest(deviceId, connectPoint, ethernet); |
101 | } else { | 97 | } else { | ... | ... |
... | @@ -588,6 +588,9 @@ public class CpqdOFDPA2Pipeline extends OFDPA2Pipeline { | ... | @@ -588,6 +588,9 @@ public class CpqdOFDPA2Pipeline extends OFDPA2Pipeline { |
588 | if (ins instanceof OutputInstruction) { | 588 | if (ins instanceof OutputInstruction) { |
589 | OutputInstruction o = (OutputInstruction) ins; | 589 | OutputInstruction o = (OutputInstruction) ins; |
590 | if (o.port() == PortNumber.CONTROLLER) { | 590 | if (o.port() == PortNumber.CONTROLLER) { |
591 | + // emulating real ofdpa behavior by popping off internal | ||
592 | + // vlan before sending to controller | ||
593 | + ttBuilder.popVlan(); | ||
591 | ttBuilder.add(o); | 594 | ttBuilder.add(o); |
592 | } else { | 595 | } else { |
593 | log.warn("Only allowed treatments in versatile forwarding " | 596 | log.warn("Only allowed treatments in versatile forwarding " | ... | ... |
-
Please register or login to post a comment