Saurav Das

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
...@@ -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 "
......