diff --git a/src/main/java/net/floodlightcontroller/packet/Ethernet.java b/src/main/java/net/floodlightcontroller/packet/Ethernet.java index 41f6e56752c1ce0084a638999a02de8f6b2bd91e..4fc2380762a5c71e019886cb6c0da82e6b84fc19 100644 --- a/src/main/java/net/floodlightcontroller/packet/Ethernet.java +++ b/src/main/java/net/floodlightcontroller/packet/Ethernet.java @@ -22,7 +22,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import net.floodlightcontroller.core.annotations.LogMessageDoc; import net.floodlightcontroller.util.MACAddress; import org.openflow.util.HexString; @@ -229,12 +228,6 @@ public class Ethernet extends BasePacket { return data; } - @LogMessageDoc(level="INFO", - message="Failed to parse ethernet packet payload", - explanation="Was unable to parse ethernet payload, often caused " + - "by packet truncation. Packet is forwarded as a plain " + - "ethernet packet.", - recommendation=LogMessageDoc.GENERIC_ACTION) @Override public IPacket deserialize(byte[] data, int offset, int length) { if (length <= 16) // Ethernet packet minium should be 60, this is reasonable @@ -270,12 +263,13 @@ public class Ethernet extends BasePacket { payload = clazz.newInstance(); this.payload = payload.deserialize(data, bb.position(), bb.limit()-bb.position()); } catch (Exception e) { - log.info("Failed to parse ethernet packet {}->{} payload as {}," + - " treat as plain ethernet packet", - new Object[] {this.sourceMACAddress, this.destinationMACAddress, - clazz.getClass().getName()}); - if (log.isDebugEnabled()) { - log.debug("Exception from parsing {}", e); + if (log.isTraceEnabled()) { + log.trace("Failed to parse ethernet packet {}->{}" + + " payload as {}, treat as plain ethernet packet", + new Object[] {this.sourceMACAddress, + this.destinationMACAddress, + clazz.getClass().getName()}); + log.trace("Exception from parsing {}", e); } payload = new Data(); this.payload = payload.deserialize(data, bb.position(), bb.limit()-bb.position()); diff --git a/src/main/java/net/floodlightcontroller/packet/IPv4.java b/src/main/java/net/floodlightcontroller/packet/IPv4.java index 461d24df972f84a1b6bd3e1d26bb1e4689f327b7..507cef88cb408c8af5c4301c3b5f925177061814 100644 --- a/src/main/java/net/floodlightcontroller/packet/IPv4.java +++ b/src/main/java/net/floodlightcontroller/packet/IPv4.java @@ -26,8 +26,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; -import net.floodlightcontroller.core.annotations.LogMessageDoc; - /** * @author David Erickson (daviderickson@cs.stanford.edu) * @@ -60,6 +58,7 @@ public class IPv4 extends BasePacket { protected byte[] options; protected boolean isTruncated; + protected boolean isFragment; /** * Default constructor that sets the version to 4. @@ -68,6 +67,7 @@ public class IPv4 extends BasePacket { super(); this.version = 4; isTruncated = false; + isFragment = false; } /** @@ -129,6 +129,14 @@ public class IPv4 extends BasePacket { this.isTruncated = isTruncated; } + public boolean isFragment() { + return isFragment; + } + + public void setFragment(boolean isFrag) { + this.isFragment = isFrag; + } + /** * @param identification the identification to set */ @@ -336,11 +344,6 @@ public class IPv4 extends BasePacket { return data; } - @LogMessageDoc(level="INFO", - message="IP fragment detected", - explanation="Packet in is an IP fragment. Controller forwards " + - "it using IP header only. Transport headers are ignored.", - recommendation=LogMessageDoc.GENERIC_ACTION) @Override public IPacket deserialize(byte[] data, int offset, int length) { ByteBuffer bb = ByteBuffer.wrap(data, offset, length); @@ -368,8 +371,8 @@ public class IPv4 extends BasePacket { } IPacket payload; - boolean is_frag = ((this.flags & 0x1) != 0) || (this.fragmentOffset != 0); - if (!is_frag && IPv4.protocolClassMap.containsKey(this.protocol)) { + isFragment = ((this.flags & 0x1) != 0) || (this.fragmentOffset != 0); + if (!isFragment && IPv4.protocolClassMap.containsKey(this.protocol)) { Class<? extends IPacket> clazz = IPv4.protocolClassMap.get(this.protocol); try { payload = clazz.newInstance(); @@ -377,8 +380,8 @@ public class IPv4 extends BasePacket { throw new RuntimeException("Error parsing payload for IPv4 packet", e); } } else { - if (is_frag) { - log.info("IPv4 fragment detected {}->{}, forward using IP header only", + if (log.isTraceEnabled() && isFragment) { + log.trace("IPv4 fragment detected {}->{}, forward using IP header only", fromIPv4Address(this.sourceAddress), fromIPv4Address(this.destinationAddress)); }