From 0319b7bbeef689fe3732092f56432ff112badc70 Mon Sep 17 00:00:00 2001 From: Vishnu Emmadi <vishnu.emmadi@bigswitch.com> Date: Mon, 24 Jun 2013 07:57:59 -0700 Subject: [PATCH] Flow Mod Events --- .../floodlight/vendor/OFActionMirror.java | 16 ++++++++++++++ .../vendor/OFActionNiciraTtlDecrement.java | 10 ++++++++- .../vendor/OFActionTunnelDstIP.java | 9 +++++++- .../debugevent/Event.java | 21 +++++++++++++++++++ .../debugevent/IDebugEventService.java | 1 + .../protocol/action/OFActionDataLayer.java | 11 ++++++++++ .../protocol/action/OFActionEnqueue.java | 14 ++++++++++++- .../action/OFActionNetworkLayerAddress.java | 12 +++++++++++ .../action/OFActionNetworkTypeOfService.java | 11 +++++++++- .../protocol/action/OFActionOutput.java | 9 +++++--- .../action/OFActionStripVirtualLan.java | 7 +++++++ .../action/OFActionTransportLayer.java | 10 +++++++++ 12 files changed, 124 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/bigswitch/floodlight/vendor/OFActionMirror.java b/src/main/java/com/bigswitch/floodlight/vendor/OFActionMirror.java index e8a5bbfc1..3b55ca720 100644 --- a/src/main/java/com/bigswitch/floodlight/vendor/OFActionMirror.java +++ b/src/main/java/com/bigswitch/floodlight/vendor/OFActionMirror.java @@ -95,4 +95,20 @@ public class OFActionMirror extends OFActionBigSwitchVendor { data.writeByte(this.pad1); data.writeByte(this.pad2); } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append("BSN-MIRROR"); + builder.append(", Dest Port: "); + builder.append(destPort); + builder.append(", Vlan: "); + builder.append(vlanTag); + builder.append(", Copy Stage: "); + builder.append(copyStage); + builder.append("]"); + return builder.toString(); + } } diff --git a/src/main/java/com/bigswitch/floodlight/vendor/OFActionNiciraTtlDecrement.java b/src/main/java/com/bigswitch/floodlight/vendor/OFActionNiciraTtlDecrement.java index 943fb26de..51b829a81 100644 --- a/src/main/java/com/bigswitch/floodlight/vendor/OFActionNiciraTtlDecrement.java +++ b/src/main/java/com/bigswitch/floodlight/vendor/OFActionNiciraTtlDecrement.java @@ -24,5 +24,13 @@ public class OFActionNiciraTtlDecrement extends OFActionNiciraVendor { data.writeZero(6); } - + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append("NICIRA-TTL-DECR"); + builder.append("]"); + return builder.toString(); + } } diff --git a/src/main/java/com/bigswitch/floodlight/vendor/OFActionTunnelDstIP.java b/src/main/java/com/bigswitch/floodlight/vendor/OFActionTunnelDstIP.java index 4ee67650e..9cd851c63 100644 --- a/src/main/java/com/bigswitch/floodlight/vendor/OFActionTunnelDstIP.java +++ b/src/main/java/com/bigswitch/floodlight/vendor/OFActionTunnelDstIP.java @@ -64,6 +64,13 @@ public class OFActionTunnelDstIP extends OFActionBigSwitchVendor { @Override public String toString() { - return super.toString() + "; dstIP=" + IPv4.fromIPv4Address(dstIPAddr); + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append("BSN-SET-TUNNEL-DST-IP"); + builder.append(", IP: "); + builder.append(IPv4.fromIPv4Address(dstIPAddr)); + builder.append("]"); + return builder.toString(); } } diff --git a/src/main/java/net/floodlightcontroller/debugevent/Event.java b/src/main/java/net/floodlightcontroller/debugevent/Event.java index 9da23f170..e45ec5e7b 100644 --- a/src/main/java/net/floodlightcontroller/debugevent/Event.java +++ b/src/main/java/net/floodlightcontroller/debugevent/Event.java @@ -12,6 +12,7 @@ import net.floodlightcontroller.debugevent.IDebugEventService.EventFieldType; import net.floodlightcontroller.devicemanager.SwitchPort; import net.floodlightcontroller.packet.IPv4; +import org.openflow.protocol.OFFlowMod; import org.openflow.util.HexString; public class Event { @@ -143,6 +144,25 @@ public class Event { case IPv4: retMap.put(ec.name(), IPv4.fromIPv4Address((Integer) obj)); break; + case FLOW_MOD_FLAGS: + int flags = (Integer)obj; + StringBuilder builder = new StringBuilder(); + if (flags == 0) { + builder.append("None"); + } + else { + if ((flags & OFFlowMod.OFPFF_SEND_FLOW_REM) != 0) { + builder.append("SEND_FLOW_REM "); + } + if ((flags & OFFlowMod.OFPFF_CHECK_OVERLAP) != 0) { + builder.append("CHECK_OVERLAP "); + } + if ((flags & OFFlowMod.OFPFF_EMERG) != 0) { + builder.append("EMERG "); + } + } + retMap.put(ec.name(), builder.toString()); + break; case LIST_IPV4: @SuppressWarnings("unchecked") List<Integer> ipv4Addresses = (List<Integer>)obj; @@ -216,6 +236,7 @@ public class Event { } else { retMap.put(ec.name(), "-- reference not available --"); } + break; case STRING: case OBJECT: case PRIMITIVE: diff --git a/src/main/java/net/floodlightcontroller/debugevent/IDebugEventService.java b/src/main/java/net/floodlightcontroller/debugevent/IDebugEventService.java index 300f8fa09..d40784877 100644 --- a/src/main/java/net/floodlightcontroller/debugevent/IDebugEventService.java +++ b/src/main/java/net/floodlightcontroller/debugevent/IDebugEventService.java @@ -27,6 +27,7 @@ public interface IDebugEventService extends IFloodlightService { enum EventFieldType { DPID, IPv4, MAC, STRING, OBJECT, PRIMITIVE, LIST_IPV4, LIST_ATTACHMENT_POINT, LIST_OBJECT, SREF_LIST_OBJECT, SREF_OBJECT, + FLOW_MOD_FLAGS } /** diff --git a/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java b/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java index de6a92bb6..644dc5f2f 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java +++ b/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java @@ -23,6 +23,7 @@ package org.openflow.protocol.action; import java.util.Arrays; import net.floodlightcontroller.core.web.serializers.ByteArrayMACSerializer; +import net.floodlightcontroller.util.MACAddress; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.jboss.netty.buffer.ChannelBuffer; @@ -95,4 +96,14 @@ public abstract class OFActionDataLayer extends OFAction { } return true; } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append(MACAddress.valueOf(dataLayerAddress).toString()); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java b/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java index 0ec2fa331..537716612 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java +++ b/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java @@ -20,7 +20,6 @@ */ package org.openflow.protocol.action; - import org.jboss.netty.buffer.ChannelBuffer; /** @@ -121,4 +120,17 @@ public class OFActionEnqueue extends OFAction { } return true; } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append("Port: "); + builder.append(port); + builder.append(", Queue Id: "); + builder.append(queueId); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java index dc65ae916..67bc5a822 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java +++ b/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java @@ -21,6 +21,8 @@ package org.openflow.protocol.action; +import net.floodlightcontroller.packet.IPv4; + import org.jboss.netty.buffer.ChannelBuffer; /** @@ -83,4 +85,14 @@ public abstract class OFActionNetworkLayerAddress extends OFAction { } return true; } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append(IPv4.fromIPv4Address(networkAddress)); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java index 0d381802c..ec91c7649 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java +++ b/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java @@ -20,7 +20,6 @@ */ package org.openflow.protocol.action; - import org.jboss.netty.buffer.ChannelBuffer; /** @@ -98,4 +97,14 @@ public class OFActionNetworkTypeOfService extends OFAction { } return true; } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append(networkTypeOfService); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionOutput.java b/src/main/java/org/openflow/protocol/action/OFActionOutput.java index b9521d09a..beca7e4f2 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionOutput.java +++ b/src/main/java/org/openflow/protocol/action/OFActionOutput.java @@ -22,7 +22,6 @@ package org.openflow.protocol.action; import org.jboss.netty.buffer.ChannelBuffer; -import org.openflow.util.U16; /** * @author David Erickson (daviderickson@cs.stanford.edu) - Mar 11, 2010 @@ -152,7 +151,11 @@ public class OFActionOutput extends OFAction implements Cloneable { */ @Override public String toString() { - return "OFActionOutput [maxLength=" + maxLength + ", port=" + U16.f(port) - + ", length=" + length + ", type=" + type + "]"; + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append(port); + builder.append("]"); + return builder.toString(); } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java b/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java index 7d6b849a6..f79c84d39 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java +++ b/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java @@ -50,4 +50,11 @@ public class OFActionStripVirtualLan extends OFAction { // PAD data.writeInt(0); } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java b/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java index 0bc09c958..696c1c7a2 100644 --- a/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java +++ b/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java @@ -85,4 +85,14 @@ public abstract class OFActionTransportLayer extends OFAction { } return true; } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(type); + builder.append("["); + builder.append(transportPort); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file -- GitLab