Fixed Findbugs issues in forwarding and arp modules
Change-Id: I25582ed3ea49848d77f88229303a964c510e578b
diff --git a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
index 4624617..15aed60 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -93,7 +93,7 @@
private final Object lock = new Object();
- private class PacketToPush {
+ private static class PacketToPush {
public final OFPacketOut packet;
public final long dpid;
@@ -103,7 +103,7 @@
}
}
- private class PushedFlow {
+ private static class PushedFlow {
public final String intentId;
public boolean installed = false;
public short firstOutPort;
@@ -113,7 +113,7 @@
}
}
- private final class Path {
+ private static final class Path {
public final MACAddress srcMac;
public final MACAddress dstMac;
@@ -228,7 +228,7 @@
public Command receive(
IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
- if (msg.getType() != OFType.PACKET_IN) {
+ if (msg.getType() != OFType.PACKET_IN || !(msg instanceof OFPacketIn)) {
return Command.CONTINUE;
}
diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java b/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
index c0b56a7..a3cbb28 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
@@ -1,6 +1,7 @@
package net.onrc.onos.apps.proxyarp;
import java.io.Serializable;
+import java.util.Arrays;
/**
* A PacketOutNotification contains data sent between ONOS instances that
@@ -24,6 +25,6 @@
}
public PacketOutNotification(byte[] packet) {
- this.packet = packet;
+ this.packet = Arrays.copyOf(packet, packet.length);
}
}
diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
index 4691149..017b260 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -434,6 +434,9 @@
@Override
public Command receive(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
+ if (!(msg instanceof OFPacketIn)) {
+ return Command.CONTINUE;
+ }
OFPacketIn pi = (OFPacketIn) msg;
@@ -642,10 +645,17 @@
byte[] senderIPAddress = zeroIpv4;
Interface intf = configService.getOutgoingInterface(ipAddress);
- if (intf != null) {
- senderIPAddress = intf.getIpAddress().getAddress();
+ if (intf == null) {
+ // TODO handle the case where the controller needs to send an ARP
+ // request but there's not IP configuration. In this case the
+ // request should be broadcast out all edge ports in the network.
+ log.warn("Sending ARP requests with default configuration "
+ + "not supported");
+ return;
}
+ senderIPAddress = intf.getIpAddress().getAddress();
+
arpRequest.setSenderProtocolAddress(senderIPAddress);
Ethernet eth = new Ethernet();