Moved pure ONOS code in net.floodlightcontroller.util to onos package namespace
diff --git a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
index 66db33e..906a579 100644
--- a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
@@ -5,11 +5,11 @@
 import net.floodlightcontroller.routing.IRoutingService;
 import net.floodlightcontroller.routing.Route;
 import net.floodlightcontroller.topology.NodePortTuple;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
 
 import org.openflow.util.HexString;
 import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/util/CallerId.java b/src/main/java/net/floodlightcontroller/util/CallerId.java
deleted file mode 100644
index ade0f0d..0000000
--- a/src/main/java/net/floodlightcontroller/util/CallerId.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package net.floodlightcontroller.util;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing a Caller ID for an ONOS component.
- */
-public class CallerId {
-    private String value;
-
-    /**
-     * Default constructor.
-     */
-    public CallerId() {}
-
-    /**
-     * Constructor from a string value.
-     *
-     * @param value the value to use.
-     */
-    public CallerId(String value) {
-	this.value = value;
-    }
-
-    /**
-     * Get the value of the Caller ID.
-     *
-     * @return the value of the Caller ID.
-     */
-    @JsonProperty("value")
-    public String value() { return value; }
-
-    /**
-     * Set the value of the Caller ID.
-     *
-     * @param value the value to set.
-     */
-    @JsonProperty("value")
-    public void setValue(String value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the Caller ID value to a string.
-     *
-     * @return the Caller ID value to a string.
-     */
-    @Override
-    public String toString() {
-	return value;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/DataPath.java b/src/main/java/net/floodlightcontroller/util/DataPath.java
deleted file mode 100644
index 0ca0d13..0000000
--- a/src/main/java/net/floodlightcontroller/util/DataPath.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package net.floodlightcontroller.util;
-
-import java.util.ArrayList;
-
-import net.floodlightcontroller.util.SwitchPort;
-import net.floodlightcontroller.util.FlowEntry;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Data Path.
- */
-public class DataPath {
-    private SwitchPort srcPort;		// The source port
-    private SwitchPort dstPort;		// The destination port
-    private ArrayList<FlowEntry> flowEntries;	// The Flow Entries
-
-    /**
-     * Default constructor.
-     */
-    public DataPath() {
-	srcPort = new SwitchPort();
-	dstPort = new SwitchPort();
-	flowEntries = new ArrayList<FlowEntry>();
-    }
-
-    /**
-     * Get the data path source port.
-     *
-     * @return the data path source port.
-     */
-    @JsonProperty("srcPort")
-    public SwitchPort srcPort() { return srcPort; }
-
-    /**
-     * Set the data path source port.
-     *
-     * @param srcPort the data path source port to set.
-     */
-    @JsonProperty("srcPort")
-    public void setSrcPort(SwitchPort srcPort) {
-	this.srcPort = srcPort;
-    }
-
-    /**
-     * Get the data path destination port.
-     *
-     * @return the data path destination port.
-     */
-    @JsonProperty("dstPort")
-    public SwitchPort dstPort() { return dstPort; }
-
-    /**
-     * Set the data path destination port.
-     *
-     * @param dstPort the data path destination port to set.
-     */
-    @JsonProperty("dstPort")
-    public void setDstPort(SwitchPort dstPort) {
-	this.dstPort = dstPort;
-    }
-
-    /**
-     * Get the data path flow entries.
-     *
-     * @return the data path flow entries.
-     */
-    @JsonProperty("flowEntries")
-    public ArrayList<FlowEntry> flowEntries() { return flowEntries; }
-
-    /**
-     * Set the data path flow entries.
-     *
-     * @param flowEntries the data path flow entries to set.
-     */
-    @JsonProperty("flowEntries")
-    public void setFlowEntries(ArrayList<FlowEntry> flowEntries) {
-	this.flowEntries = flowEntries;
-    }
-
-    /**
-     * Get a string with the summary of the shortest-path data path
-     * computation.
-     *
-     * NOTE: This method assumes the DataPath was created by
-     * using FlowManager::getShortestPath() so the inPort and outPort
-     * of the Flow Entries are set.
-     * NOTE: This method is a temporary solution and will be removed
-     * in the future.
-     *
-     * @return a string with the summary of the shortest-path
-     * data path computation if valid, otherwise the string "X".
-     * If the shortest-path was valid, The string has the following form:
-     * inPort/dpid/outPort;inPort/dpid/outPort;...
-     */
-    public String dataPathSummary() {
-	String resultStr = new String();
-	if (this.flowEntries != null) {
-	    for (FlowEntry flowEntry : this.flowEntries) {
-		// The data path summary string
-		resultStr = resultStr +
-		    flowEntry.inPort().toString() + "/"
-		    + flowEntry.dpid().toString() + "/" +
-		    flowEntry.outPort().toString() + ";";
-	    }
-	}
-	if (resultStr.isEmpty())
-	    resultStr = "X";		// Invalid shortest-path
-	return resultStr;
-    }
-
-    /**
-     * Convert the data path to a string.
-     *
-     * The string has the following form:
-     * [src=01:01:01:01:01:01:01:01/1111 flowEntry=<entry1> flowEntry=<entry2> flowEntry=<entry3> dst=02:02:02:02:02:02:02:02/2222]
-     *
-     * @return the data path as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[src=" + this.srcPort.toString();
-
-	for (FlowEntry fe : flowEntries) {
-	    ret += " flowEntry=" + fe.toString();
-	}
-	ret += " dst=" + this.dstPort.toString() + "]";
-
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java b/src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java
deleted file mode 100644
index 3ee88d1..0000000
--- a/src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.SwitchPort;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Data Path Endpoints.
- */
-public class DataPathEndpoints {
-    private SwitchPort srcPort;		// The source port
-    private SwitchPort dstPort;		// The destination port
-
-    /**
-     * Default constructor.
-     */
-    public DataPathEndpoints() {
-    }
-
-    /**
-     * Constructor for given source and destination ports.
-     *
-     * @param srcPort the source port to use.
-     * @param dstPort the destination port to use.
-     */
-    public DataPathEndpoints(SwitchPort srcPort, SwitchPort dstPort) {
-	this.srcPort = srcPort;
-	this.dstPort = dstPort;
-    }
-
-    /**
-     * Get the data path source port.
-     *
-     * @return the data path source port.
-     */
-    @JsonProperty("srcPort")
-    public SwitchPort srcPort() { return srcPort; }
-
-    /**
-     * Set the data path source port.
-     *
-     * @param srcPort the data path source port to set.
-     */
-    @JsonProperty("srcPort")
-    public void setSrcPort(SwitchPort srcPort) {
-	this.srcPort = srcPort;
-    }
-
-    /**
-     * Get the data path destination port.
-     *
-     * @return the data path destination port.
-     */
-    @JsonProperty("dstPort")
-    public SwitchPort dstPort() { return dstPort; }
-
-    /**
-     * Set the data path destination port.
-     *
-     * @param dstPort the data path destination port to set.
-     */
-    @JsonProperty("dstPort")
-    public void setDstPort(SwitchPort dstPort) {
-	this.dstPort = dstPort;
-    }
-
-    /**
-     * Convert the data path endpoints to a string.
-     *
-     * The string has the following form:
-     * [src=01:01:01:01:01:01:01:01/1111 dst=02:02:02:02:02:02:02:02/2222]
-     *
-     * @return the data path endpoints as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[src=" + this.srcPort.toString() +
-	    " dst=" + this.dstPort.toString() + "]";
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/Dpid.java b/src/main/java/net/floodlightcontroller/util/Dpid.java
deleted file mode 100644
index 5af6bea..0000000
--- a/src/main/java/net/floodlightcontroller/util/Dpid.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package net.floodlightcontroller.util;
-
-import org.openflow.util.HexString;
-import net.floodlightcontroller.util.serializers.DpidDeserializer;
-import net.floodlightcontroller.util.serializers.DpidSerializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing a network switch DPID.
- */
-@JsonDeserialize(using=DpidDeserializer.class)
-@JsonSerialize(using=DpidSerializer.class)
-public class Dpid {
-    static public long UNKNOWN = 0;
-
-    private long value;
-
-    /**
-     * Default constructor.
-     */
-    public Dpid() {
-	this.value = Dpid.UNKNOWN;
-    }
-
-    /**
-     * Constructor from a long value.
-     *
-     * @param value the value to use.
-     */
-    public Dpid(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public Dpid(String value) {
-	this.value = HexString.toLong(value);
-    }
-
-    /**
-     * Get the value of the DPID.
-     *
-     * @return the value of the DPID.
-     */
-    public long value() { return value; }
-
-    /**
-     * Set the value of the DPID.
-     *
-     * @param value the value to set.
-     */
-    public void setValue(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the DPID value to a ':' separated hexadecimal string.
-     *
-     * @return the DPID value as a ':' separated hexadecimal string.
-     */
-    @Override
-    public String toString() {
-	return HexString.toHexString(this.value);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntry.java b/src/main/java/net/floodlightcontroller/util/FlowEntry.java
deleted file mode 100644
index 21f3a9e..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntry.java
+++ /dev/null
@@ -1,357 +0,0 @@
-package net.floodlightcontroller.util;
-
-import java.util.ArrayList;
-
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntryAction;
-import net.floodlightcontroller.util.FlowEntryErrorState;
-import net.floodlightcontroller.util.FlowEntryId;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowEntrySwitchState;
-import net.floodlightcontroller.util.FlowEntryUserState;
-import net.floodlightcontroller.util.Port;
-
-import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.IPv4;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Flow Entry.
- *
- * NOTE: The specification is incomplete. E.g., the entry needs to
- * support multiple in-ports and multiple out-ports.
- */
-public class FlowEntry {
-    private FlowId flowId;			// FlowID of flowEntry
-    private FlowEntryId flowEntryId;		// The Flow Entry ID
-    private FlowEntryMatch flowEntryMatch;	// The Flow Entry Match
-    private ArrayList<FlowEntryAction> flowEntryActions; // The Flow Entry Actions
-    private Dpid dpid;				// The Switch DPID
-    private Port inPort;		// The Switch incoming port. Used only
-					// when the entry is used to return
-					// Shortest Path computation.
-    private Port outPort;		// The Switch outgoing port. Used only
-					// when the entry is used to return
-					// Shortest Path computation.
-    private FlowEntryUserState flowEntryUserState; // The Flow Entry User state
-    private FlowEntrySwitchState flowEntrySwitchState; // The Flow Entry Switch state
-    // The Flow Entry Error state (if FlowEntrySwitchState is FE_SWITCH_FAILED)
-    private FlowEntryErrorState flowEntryErrorState;
-
-    /**
-     * Default constructor.
-     */
-    public FlowEntry() {
-	// TODO: Test code
-	/*
-	MACAddress mac = MACAddress.valueOf("01:02:03:04:05:06");
-	IPv4 ipv4 = new IPv4("1.2.3.4");
-	IPv4Net ipv4net = new IPv4Net("5.6.7.0/24");
-
-	flowEntryMatch = new FlowEntryMatch();
-	flowEntryMatch.enableInPort(new Port((short)10));
-	flowEntryMatch.enableSrcMac(mac);
-	flowEntryMatch.enableDstMac(mac);
-	flowEntryMatch.enableVlanId((short)20);
-	flowEntryMatch.enableVlanPriority((byte)30);
-	flowEntryMatch.enableEthernetFrameType((short)40);
-	flowEntryMatch.enableIpToS((byte)50);
-	flowEntryMatch.enableIpProto((byte)60);
-	flowEntryMatch.enableSrcIPv4Net(ipv4net);
-	flowEntryMatch.enableDstIPv4Net(ipv4net);
-	flowEntryMatch.enableSrcTcpUdpPort((short)70);
-	flowEntryMatch.enableDstTcpUdpPort((short)80);
-
-	FlowEntryAction action = null;
-	ArrayList<FlowEntryAction> actions = new ArrayList<FlowEntryAction>();
-
-	action = new FlowEntryAction();
-	action.setActionOutput(new Port((short)12));
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionOutputToController((short)13);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetVlanId((short)14);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetVlanPriority((byte)15);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionStripVlan(true);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetEthernetSrcAddr(mac);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetEthernetDstAddr(mac);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetIPv4SrcAddr(ipv4);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetIPv4DstAddr(ipv4);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetIpToS((byte)16);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetTcpUdpSrcPort((short)17);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionSetTcpUdpDstPort((short)18);
-	actions.add(action);
-
-	action = new FlowEntryAction();
-	action.setActionEnqueue(new Port((short)19), 20);
-	actions.add(action);
-
-	setFlowEntryActions(actions);
-	*/
-
-
-	flowEntryUserState = FlowEntryUserState.FE_USER_UNKNOWN;
-	flowEntrySwitchState = FlowEntrySwitchState.FE_SWITCH_UNKNOWN;
-    }
-
-    /**
-     * Get the Flow ID.
-     * @return the Flow ID.
-     */
-    @JsonIgnore
-    public FlowId getFlowId() { return flowId; }
-
-    /**
-     * Set the Flow ID.
-     *
-     * @param flowId the Flow ID to set.
-     */
-    public void setFlowId(FlowId flowId) {
-	this.flowId = flowId;
-    }
-
-    /**
-     * Get the Flow Entry ID.
-     *
-     * @return the Flow Entry ID.
-     */
-    @JsonProperty("flowEntryId")
-    public FlowEntryId flowEntryId() { return flowEntryId; }
-
-    /**
-     * Set the Flow Entry ID.
-     *
-     * @param flowEntryId the Flow Entry ID to set.
-     */
-    @JsonProperty("flowEntryId")
-    public void setFlowEntryId(FlowEntryId flowEntryId) {
-	this.flowEntryId = flowEntryId;
-    }
-
-    /**
-     * Get the Flow Entry Match.
-     *
-     * @return the Flow Entry Match.
-     */
-    @JsonProperty("flowEntryMatch")
-    public FlowEntryMatch flowEntryMatch() { return flowEntryMatch; }
-
-    /**
-     * Set the Flow Entry Match.
-     *
-     * @param flowEntryMatch the Flow Entry Match to set.
-     */
-    @JsonProperty("flowEntryMatch")
-    public void setFlowEntryMatch(FlowEntryMatch flowEntryMatch) {
-	this.flowEntryMatch = flowEntryMatch;
-    }
-
-    /**
-     * Get the Flow Entry Actions.
-     *
-     * @return the Flow Entry Actions.
-     */
-    @JsonProperty("flowEntryActions")
-    public ArrayList<FlowEntryAction> flowEntryActions() {
-	return flowEntryActions;
-    }
-
-    /**
-     * Set the Flow Entry Actions.
-     *
-     * @param flowEntryActions the Flow Entry Actions to set.
-     */
-    @JsonProperty("flowEntryActions")
-    public void setFlowEntryActions(ArrayList<FlowEntryAction> flowEntryActions) {
-	this.flowEntryActions = flowEntryActions;
-    }
-
-    /**
-     * Get the Switch DPID.
-     *
-     * @return the Switch DPID.
-     */
-    @JsonProperty("dpid")
-    public Dpid dpid() { return dpid; }
-
-    /**
-     * Set the Switch DPID.
-     *
-     * @param dpid the Switch DPID to set.
-     */
-    @JsonProperty("dpid")
-    public void setDpid(Dpid dpid) {
-	this.dpid = dpid;
-    }
-
-    /**
-     * Get the Switch incoming port.
-     *
-     * Used only when the entry is used to return Shortest Path computation.
-     *
-     * @return the Switch incoming port.
-     */
-    @JsonProperty("inPort")
-    public Port inPort() { return inPort; }
-
-    /**
-     * Set the Switch incoming port.
-     *
-     * Used only when the entry is used to return Shortest Path computation.
-     *
-     * @param inPort the Switch incoming port to set.
-     */
-    @JsonProperty("inPort")
-    public void setInPort(Port inPort) {
-	this.inPort = inPort;
-    }
-
-    /**
-     * Get the Switch outgoing port.
-     *
-     * Used only when the entry is used to return Shortest Path computation.
-     *
-     * @return the Switch outgoing port.
-     */
-    @JsonProperty("outPort")
-    public Port outPort() { return outPort; }
-
-    /**
-     * Set the Switch outgoing port.
-     *
-     * Used only when the entry is used to return Shortest Path computation.
-     *
-     * @param outPort the Switch outgoing port to set.
-     */
-    @JsonProperty("outPort")
-    public void setOutPort(Port outPort) {
-	this.outPort = outPort;
-    }
-
-    /**
-     * Get the Flow Entry User state.
-     *
-     * @return the Flow Entry User state.
-     */
-    @JsonProperty("flowEntryUserState")
-    public FlowEntryUserState flowEntryUserState() {
-	return flowEntryUserState;
-    }
-
-    /**
-     * Set the Flow Entry User state.
-     *
-     * @param flowEntryUserState the Flow Entry User state to set.
-     */
-    @JsonProperty("flowEntryUserState")
-    public void setFlowEntryUserState(FlowEntryUserState flowEntryUserState) {
-	this.flowEntryUserState = flowEntryUserState;
-    }
-
-    /**
-     * Get the Flow Entry Switch state.
-     *
-     * The Flow Entry Error state is used if FlowEntrySwitchState is
-     * FE_SWITCH_FAILED.
-     *
-     * @return the Flow Entry Switch state.
-     */
-    @JsonProperty("flowEntrySwitchState")
-    public FlowEntrySwitchState flowEntrySwitchState() {
-	return flowEntrySwitchState;
-    }
-
-    /**
-     * Set the Flow Entry Switch state.
-     *
-     * The Flow Entry Error state is used if FlowEntrySwitchState is
-     * FE_SWITCH_FAILED.
-     *
-     * @param flowEntrySwitchState the Flow Entry Switch state to set.
-     */
-    @JsonProperty("flowEntrySwitchState")
-    public void setFlowEntrySwitchState(FlowEntrySwitchState flowEntrySwitchState) {
-	this.flowEntrySwitchState = flowEntrySwitchState;
-    }
-
-    /**
-     * Get the Flow Entry Error state.
-     *
-     * @return the Flow Entry Error state.
-     */
-    @JsonProperty("flowEntryErrorState")
-    public FlowEntryErrorState flowEntryErrorState() {
-	return flowEntryErrorState;
-    }
-
-    /**
-     * Set the Flow Entry Error state.
-     *
-     * @param flowEntryErrorState the Flow Entry Error state to set.
-     */
-    @JsonProperty("flowEntryErrorState")
-    public void setFlowEntryErrorState(FlowEntryErrorState flowEntryErrorState) {
-	this.flowEntryErrorState = flowEntryErrorState;
-    }
-
-    /**
-     * Convert the flow entry to a string.
-     *
-     * The string has the following form:
-     *  [flowEntryId=XXX flowEntryMatch=XXX flowEntryAction=XXX
-     *   flowEntryAction=XXX flowEntryAction=XXX dpid=XXX
-     *   inPort=XXX outPort=XXX flowEntryUserState=XXX flowEntrySwitchState=XXX
-     *   flowEntryErrorState=XXX]
-     * @return the flow entry as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[flowEntryId=" + this.flowEntryId.toString();
-	ret += " flowEntryMatch=" + this.flowEntryMatch.toString();
-	for (FlowEntryAction fa : flowEntryActions) {
-	    ret += " flowEntryAction=" + fa.toString();
-	}
-	ret += " dpid=" + this.dpid.toString();
-	ret += " inPort=" + this.inPort.toString();
-	ret += " outPort=" + this.outPort.toString();
-	ret += " flowEntryUserState=" + this.flowEntryUserState;
-	ret += " flowEntrySwitchState=" + this.flowEntrySwitchState;
-	ret += " flowEntryErrorState=" + this.flowEntryErrorState.toString();
-	ret += "]";
-
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryAction.java b/src/main/java/net/floodlightcontroller/util/FlowEntryAction.java
deleted file mode 100644
index 1fc1783..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryAction.java
+++ /dev/null
@@ -1,1015 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.IPv4;
-import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.Port;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing a single Flow Entry action.
- *
- * A set of Flow Entry actions need to be applied to each packet.
- */
-public class FlowEntryAction {
-    /**
-     * Special action values.
-     *
-     * Those values are taken as-is from the OpenFlow-v1.0.0 specification
-     * (pp 21-22).
-     */
-    public enum ActionValues {
-	ACTION_OUTPUT		((short)0x0),	// Output to switch port
-	ACTION_SET_VLAN_VID	((short)0x1),	// Set the 802.1q VLAN id
-	ACTION_SET_VLAN_PCP	((short)0x2),	// Set the 802.1q priority
-	ACTION_STRIP_VLAN	((short)0x3),	// Strip the 802.1q header
-	ACTION_SET_DL_SRC	((short)0x4),	// Ethernet source address
-	ACTION_SET_DL_DST	((short)0x5),	// Ethernet destination address
-	ACTION_SET_NW_SRC	((short)0x6),	// IP source address
-	ACTION_SET_NW_DST	((short)0x7),	// IP destination address
-	ACTION_SET_NW_TOS	((short)0x8),	// IP ToS (DSCP field, 6 bits)
-	ACTION_SET_TP_SRC	((short)0x9),	// TCP/UDP source port
-	ACTION_SET_TP_DST	((short)0xa),	// TCP/UDP destination port
-	ACTION_ENQUEUE		((short)0xb),	// Output to queue on port
-	ACTION_VENDOR		((short)0xffff); // Vendor-specific
-
-	private final short value;	// The value
-
-	/**
-	 * Constructor for a given value.
-	 *
-	 * @param value the value to use for the initialization.
-	 */
-	private ActionValues(short value) {
-	    this.value = value;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_OUTPUT: Output to switch port.
-     */
-    public class ActionOutput {
-	private Port port;	// Output port
-	private short maxLen;	// Max. length (in bytes) to send to controller
-				// if the port is set to PORT_CONTROLLER
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionOutput() {
-	    this.port = null;
-	    this.maxLen = 0;
-	}
-
-
-	/**
-	 * Constructor for a given output port and maximum length.
-	 *
-	 * @param port the output port to set.
-	 * @param maxLen the maximum length (in bytes) to send to controller
-	 * if the port is set to PORT_CONTROLLER.
-	 */
-	public ActionOutput(Port port, short maxLen) {
-	    this.port = port;
-	    this.maxLen = maxLen;
-	}
-
-	/**
-	 * Constructor for a given output port.
-	 *
-	 * @param port the output port to set.
-	 */
-	public ActionOutput(Port port) {
-	    this.port = port;
-	    this.maxLen = 0;
-	}
-
-	/**
-	 * Get the output port.
-	 *
-	 * @return the output port.
-	 */
-	@JsonProperty("port")
-	public Port port() {
-	    return this.port;
-	}
-
-	/**
-	 * Get the maximum length (in bytes) to send to controller if the
-	 * port is set to PORT_CONTROLLER.
-	 *
-	 * @return the maximum length (in bytes) to send to controller if the
-	 * port is set to PORT_CONTROLLER.
-	 */
-	@JsonProperty("maxLen")
-	public short maxLen() {
-	    return this.maxLen;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [port=XXX maxLen=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "port=" + port.toString();
-	    ret += " maxLen=" + maxLen;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_VLAN_VID: Set the 802.1q VLAN id
-     */
-    public class ActionSetVlanId {
-	private short vlanId;		// The VLAN ID to set
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetVlanId() {
-	    this.vlanId = 0;
-	}
-
-	/**
-	 * Constructor for a given VLAN ID.
-	 *
-	 * @param vlanId the VLAN ID to set.
-	 */
-	public ActionSetVlanId(short vlanId) {
-	    this.vlanId = vlanId;
-	}
-
-	/**
-	 * Get the VLAN ID.
-	 *
-	 * @return the VLAN ID.
-	 */
-	@JsonProperty("vlanId")
-	public short vlanId() {
-	    return this.vlanId;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [vlanId=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "vlanId=" + this.vlanId;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_VLAN_PCP: Set the 802.1q priority
-     */
-    public class ActionSetVlanPriority {
-	private byte vlanPriority;	// The VLAN priority to set
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetVlanPriority() {
-	    this.vlanPriority = 0;
-	}
-
-	/**
-	 * Constructor for a given VLAN priority.
-	 *
-	 * @param vlanPriority the VLAN priority to set.
-	 */
-	public ActionSetVlanPriority(byte vlanPriority) {
-	    this.vlanPriority = vlanPriority;
-	}
-
-	/**
-	 * Get the VLAN priority.
-	 *
-	 * @return the VLAN priority.
-	 */
-	@JsonProperty("vlanPriority")
-	public byte vlanPriority() {
-	    return this.vlanPriority;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [vlanPriority=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "vlanPriority=" + this.vlanPriority;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_STRIP_VLAN: Strip the 802.1q header
-     */
-    public class ActionStripVlan {
-	private boolean stripVlan;	// If true, strip the VLAN header
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionStripVlan() {
-	    this.stripVlan = false;
-	}
-
-	/**
-	 * Constructor for a given boolean flag.
-	 *
-	 * @param stripVlan if true, strip the VLAN header.
-	 */
-	public ActionStripVlan(boolean stripVlan) {
-	    this.stripVlan = stripVlan;
-	}
-
-	/**
-	 * Get the boolean flag whether the VLAN header should be stripped.
-	 *
-	 * @return the boolean flag whether the VLAN header should be stripped.
-	 */
-	@JsonProperty("stripVlan")
-	public boolean stripVlan() {
-	    return this.stripVlan;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [stripVlan=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "stripVlan=" + this.stripVlan;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_DL_SRC and ACTION_SET_DL_DST:
-     * Set the Ethernet source/destination address.
-     */
-    public class ActionSetEthernetAddr {
-	private MACAddress addr;	// The MAC address to set
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetEthernetAddr() {
-	    this.addr = null;
-	}
-
-	/**
-	 * Constructor for a given MAC address.
-	 *
-	 * @param addr the MAC address to set.
-	 */
-	public ActionSetEthernetAddr(MACAddress addr) {
-	    this.addr = addr;
-	}
-
-	/**
-	 * Get the MAC address.
-	 *
-	 * @return the MAC address.
-	 */
-	@JsonProperty("addr")
-	public MACAddress addr() {
-	    return this.addr;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [addr=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "addr=" + addr.toString();
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_NW_SRC and ACTION_SET_NW_DST:
-     * Set the IPv4 source/destination address.
-     */
-    public class ActionSetIPv4Addr {
-	private IPv4 addr;		// The IPv4 address to set
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetIPv4Addr() {
-	    this.addr = null;
-	}
-
-	/**
-	 * Constructor for a given IPv4 address.
-	 *
-	 * @param addr the IPv4 address to set.
-	 */
-	public ActionSetIPv4Addr(IPv4 addr) {
-	    this.addr = addr;
-	}
-
-	/**
-	 * Get the IPv4 address.
-	 *
-	 * @return the IPv4 address.
-	 */
-	@JsonProperty("addr")
-	public IPv4 addr() {
-	    return this.addr;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [addr=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "addr=" + addr.toString();
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_NW_TOS:
-     * Set the IP ToS (DSCP field, 6 bits).
-     */
-    public class ActionSetIpToS {
-	private byte ipToS;	// The IP ToS to set DSCP field, 6 bits)
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetIpToS() {
-	    this.ipToS = 0;
-	}
-
-	/**
-	 * Constructor for a given IP ToS (DSCP field, 6 bits).
-	 *
-	 * @param ipToS the IP ToS (DSCP field, 6 bits) to set.
-	 */
-	public ActionSetIpToS(byte ipToS) {
-	    this.ipToS = ipToS;
-	}
-
-	/**
-	 * Get the IP ToS (DSCP field, 6 bits).
-	 *
-	 * @return the IP ToS (DSCP field, 6 bits).
-	 */
-	@JsonProperty("ipToS")
-	public byte ipToS() {
-	    return this.ipToS;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [ipToS=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "ipToS=" + ipToS;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_SET_TP_SRC and ACTION_SET_TP_DST:
-     * Set the TCP/UDP source/destination port.
-     */
-    public class ActionSetTcpUdpPort {
-	private short port;		// The TCP/UDP port to set
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionSetTcpUdpPort() {
-	    this.port = 0;
-	}
-
-	/**
-	 * Constructor for a given TCP/UDP port.
-	 *
-	 * @param port the TCP/UDP port to set.
-	 */
-	public ActionSetTcpUdpPort(short port) {
-	    this.port = port;
-	}
-
-	/**
-	 * Get the TCP/UDP port.
-	 *
-	 * @return the TCP/UDP port.
-	 */
-	@JsonProperty("port")
-	public short port() {
-	    return this.port;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [port=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "port=" + port;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    /**
-     * Action structure for ACTION_ENQUEUE: Output to queue on port.
-     */
-    public class ActionEnqueue {
-	private Port port;	// Port that queue belongs. Should
-				// refer to a valid physical port
-				// (i.e. < PORT_MAX) or PORT_IN_PORT
-	private int queueId;	// Where to enqueue the packets
-
-	/**
-	 * Default constructor.
-	 */
-	public ActionEnqueue() {
-	    this.port = null;
-	    this.queueId = 0;
-	}
-
-	/**
-	 * Constructor for a given port and queue ID.
-	 *
-	 * @param port the port to set.
-	 * @param queueId the queue ID on the port.
-	 */
-	public ActionEnqueue(Port port, int queueId) {
-	    this.port = port;
-	    this.queueId = queueId;
-	}
-
-	/**
-	 * Get the port.
-	 *
-	 * @return the port.
-	 */
-	@JsonProperty("port")
-	public Port port() {
-	    return this.port;
-	}
-
-	/**
-	 * Get the queue ID.
-	 *
-	 * @return the queue ID.
-	 */
-	@JsonProperty("queueId")
-	public int queueId() {
-	    return this.queueId;
-	}
-
-	/**
-	 * Convert the action to a string.
-	 *
-	 * The string has the following form:
-	 *  [port=XXX queueId=XXX]
-	 *
-	 * @return the action as a string.
-	 */
-	@Override
-	public String toString() {
-	    String ret = "[";
-	    ret += "port=" + port.toString();
-	    ret += " queueId=" + queueId;
-	    ret += "]";
-
-	    return ret;
-	}
-    }
-
-    private ActionValues actionType;	// The action type
-
-    //
-    // The actions.
-    // NOTE: Only one action should be set.
-    //
-    private ActionOutput actionOutput;
-    private ActionSetVlanId actionSetVlanId;
-    private ActionSetVlanPriority actionSetVlanPriority;
-    private ActionStripVlan actionStripVlan;
-    private ActionSetEthernetAddr actionSetEthernetSrcAddr;
-    private ActionSetEthernetAddr actionSetEthernetDstAddr;
-    private ActionSetIPv4Addr actionSetIPv4SrcAddr;
-    private ActionSetIPv4Addr actionSetIPv4DstAddr;
-    private ActionSetIpToS actionSetIpToS;
-    private ActionSetTcpUdpPort actionSetTcpUdpSrcPort;
-    private ActionSetTcpUdpPort actionSetTcpUdpDstPort;
-    private ActionEnqueue actionEnqueue;
-
-    /**
-     * Default constructor.
-     */
-    public FlowEntryAction() {
-	actionType = ActionValues.ACTION_VENDOR;	// XXX: Initial value
-    }
-
-    /**
-     * Get the action type.
-     *
-     * @return the action type.
-     */
-    @JsonProperty("actionType")
-    public ActionValues actionType() { return actionType; }
-
-    /**
-     * Get the output action.
-     *
-     * @return the output action.
-     */
-    @JsonProperty("actionOutput")
-    public ActionOutput actionOutput() { return actionOutput; }
-
-    /**
-     * Set the output action on a port.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionOutput")
-    public void setActionOutput(ActionOutput action) {
-	actionOutput = action;
-	actionType = ActionValues.ACTION_OUTPUT;
-    }
-
-    /**
-     * Set the output action on a port.
-     *
-     * @param port the output port to set.
-     */
-    public void setActionOutput(Port port) {
-	actionOutput = new ActionOutput(port);
-	actionType = ActionValues.ACTION_OUTPUT;
-    }
-
-    /**
-     * Set the output action to controller.
-     *
-     * @param maxLen the maximum length (in bytes) to send to controller.
-     */
-    public void setActionOutputToController(short maxLen) {
-	Port port = new Port(Port.PortValues.PORT_CONTROLLER);
-	actionOutput = new ActionOutput(port, maxLen);
-	actionType = ActionValues.ACTION_OUTPUT;
-    }
-
-    /**
-     * Get the action to set the VLAN ID.
-     *
-     * @return the action to set the VLAN ID.
-     */
-    @JsonProperty("actionSetVlanId")
-    public ActionSetVlanId actionSetVlanId() { return actionSetVlanId; }
-
-    /**
-     * Set the action to set the VLAN ID.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetVlanId")
-    public void setActionSetVlanId(ActionSetVlanId action) {
-	actionSetVlanId = action;
-	actionType = ActionValues.ACTION_SET_VLAN_VID;
-    }
-
-    /**
-     * Set the action to set the VLAN ID.
-     *
-     * @param vlanId the VLAN ID to set.
-     */
-    public void setActionSetVlanId(short vlanId) {
-	actionSetVlanId = new ActionSetVlanId(vlanId);
-	actionType = ActionValues.ACTION_SET_VLAN_VID;
-    }
-
-    /**
-     * Get the action to set the VLAN priority.
-     *
-     * @return the action to set the VLAN priority.
-     */
-    @JsonProperty("actionSetVlanPriority")
-    public ActionSetVlanPriority actionSetVlanPriority() {
-	return actionSetVlanPriority;
-    }
-
-    /**
-     * Set the action to set the VLAN priority.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetVlanPriority")
-    public void setActionSetVlanPriority(ActionSetVlanPriority action) {
-	actionSetVlanPriority = action;
-	actionType = ActionValues.ACTION_SET_VLAN_PCP;
-    }
-
-    /**
-     * Set the action to set the VLAN priority.
-     *
-     * @param vlanPriority the VLAN priority to set.
-     */
-    public void setActionSetVlanPriority(byte vlanPriority) {
-	actionSetVlanPriority = new ActionSetVlanPriority(vlanPriority);
-	actionType = ActionValues.ACTION_SET_VLAN_PCP;
-    }
-
-    /**
-     * Get the action to strip the VLAN header.
-     *
-     * @return the action to strip the VLAN header.
-     */
-    @JsonProperty("actionStripVlan")
-    public ActionStripVlan actionStripVlan() {
-	return actionStripVlan;
-    }
-
-    /**
-     * Set the action to strip the VLAN header.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionStripVlan")
-    public void setActionStripVlan(ActionStripVlan action) {
-	actionStripVlan = action;
-	actionType = ActionValues.ACTION_STRIP_VLAN;
-    }
-
-    /**
-     * Set the action to strip the VLAN header.
-     *
-     * @param stripVlan if true, strip the VLAN header.
-     */
-    public void setActionStripVlan(boolean stripVlan) {
-	actionStripVlan = new ActionStripVlan(stripVlan);
-	actionType = ActionValues.ACTION_STRIP_VLAN;
-    }
-
-    /**
-     * Get the action to set the Ethernet source address.
-     *
-     * @return the action to set the Ethernet source address.
-     */
-    @JsonProperty("actionSetEthernetSrcAddr")
-    public ActionSetEthernetAddr actionSetEthernetSrcAddr() {
-	return actionSetEthernetSrcAddr;
-    }
-
-    /**
-     * Set the action to set the Ethernet source address.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetEthernetSrcAddr")
-    public void setActionSetEthernetSrcAddr(ActionSetEthernetAddr action) {
-	actionSetEthernetSrcAddr = action;
-	actionType = ActionValues.ACTION_SET_DL_SRC;
-    }
-
-    /**
-     * Set the action to set the Ethernet source address.
-     *
-     * @param addr the MAC address to set as the Ethernet source address.
-     */
-    public void setActionSetEthernetSrcAddr(MACAddress addr) {
-	actionSetEthernetSrcAddr = new ActionSetEthernetAddr(addr);
-	actionType = ActionValues.ACTION_SET_DL_SRC;
-    }
-
-    /**
-     * Get the action to set the Ethernet destination address.
-     *
-     * @return the action to set the Ethernet destination address.
-     */
-    @JsonProperty("actionSetEthernetDstAddr")
-    public ActionSetEthernetAddr actionSetEthernetDstAddr() {
-	return actionSetEthernetDstAddr;
-    }
-
-    /**
-     * Set the action to set the Ethernet destination address.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetEthernetDstAddr")
-    public void setActionSetEthernetDstAddr(ActionSetEthernetAddr action) {
-	actionSetEthernetDstAddr = action;
-	actionType = ActionValues.ACTION_SET_DL_DST;
-    }
-
-    /**
-     * Set the action to set the Ethernet destination address.
-     *
-     * @param addr the MAC address to set as the Ethernet destination address.
-     */
-    public void setActionSetEthernetDstAddr(MACAddress addr) {
-	actionSetEthernetDstAddr = new ActionSetEthernetAddr(addr);
-	actionType = ActionValues.ACTION_SET_DL_DST;
-    }
-
-    /**
-     * Get the action to set the IPv4 source address.
-     *
-     * @return the action to set the IPv4 source address.
-     */
-    @JsonProperty("actionSetIPv4SrcAddr")
-    public ActionSetIPv4Addr actionSetIPv4SrcAddr() {
-	return actionSetIPv4SrcAddr;
-    }
-
-    /**
-     * Set the action to set the IPv4 source address.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetIPv4SrcAddr")
-    public void setActionSetIPv4SrcAddr(ActionSetIPv4Addr action) {
-	actionSetIPv4SrcAddr = action;
-	actionType = ActionValues.ACTION_SET_NW_SRC;
-    }
-
-    /**
-     * Set the action to set the IPv4 source address.
-     *
-     * @param addr the IPv4 address to set as the IPv4 source address.
-     */
-    public void setActionSetIPv4SrcAddr(IPv4 addr) {
-	actionSetIPv4SrcAddr = new ActionSetIPv4Addr(addr);
-	actionType = ActionValues.ACTION_SET_NW_SRC;
-    }
-
-    /**
-     * Get the action to set the IPv4 destination address.
-     *
-     * @return the action to set the IPv4 destination address.
-     */
-    @JsonProperty("actionSetIPv4DstAddr")
-    public ActionSetIPv4Addr actionSetIPv4DstAddr() {
-	return actionSetIPv4DstAddr;
-    }
-
-    /**
-     * Set the action to set the IPv4 destination address.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetIPv4DstAddr")
-    public void setActionSetIPv4DstAddr(ActionSetIPv4Addr action) {
-	actionSetIPv4DstAddr = action;
-	actionType = ActionValues.ACTION_SET_NW_DST;
-    }
-
-    /**
-     * Set the action to set the IPv4 destination address.
-     *
-     * @param addr the IPv4 address to set as the IPv4 destination address.
-     */
-    public void setActionSetIPv4DstAddr(IPv4 addr) {
-	actionSetIPv4DstAddr = new ActionSetIPv4Addr(addr);
-	actionType = ActionValues.ACTION_SET_NW_DST;
-    }
-
-    /**
-     * Get the action to set the IP ToS (DSCP field, 6 bits).
-     *
-     * @return the action to set the IP ToS (DSCP field, 6 bits).
-     */
-    @JsonProperty("actionSetIpToS")
-    public ActionSetIpToS actionSetIpToS() {
-	return actionSetIpToS;
-    }
-
-    /**
-     * Set the action to set the IP ToS (DSCP field, 6 bits).
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetIpToS")
-    public void setActionSetIpToS(ActionSetIpToS action) {
-	actionSetIpToS = action;
-	actionType = ActionValues.ACTION_SET_NW_TOS;
-    }
-
-    /**
-     * Set the action to set the IP ToS (DSCP field, 6 bits).
-     *
-     * @param ipToS the IP ToS (DSCP field, 6 bits) to set.
-     */
-    public void setActionSetIpToS(byte ipToS) {
-	actionSetIpToS = new ActionSetIpToS(ipToS);
-	actionType = ActionValues.ACTION_SET_NW_TOS;
-    }
-
-    /**
-     * Get the action to set the TCP/UDP source port.
-     *
-     * @return the action to set the TCP/UDP source port.
-     */
-    @JsonProperty("actionSetTcpUdpSrcPort")
-    public ActionSetTcpUdpPort actionSetTcpUdpSrcPort() {
-	return actionSetTcpUdpSrcPort;
-    }
-
-    /**
-     * Set the action to set the TCP/UDP source port.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetTcpUdpSrcPort")
-    public void setActionSetTcpUdpSrcPort(ActionSetTcpUdpPort action) {
-	actionSetTcpUdpSrcPort = action;
-	actionType = ActionValues.ACTION_SET_TP_SRC;
-    }
-
-    /**
-     * Set the action to set the TCP/UDP source port.
-     *
-     * @param port the TCP/UDP port to set as the TCP/UDP source port.
-     */
-    public void setActionSetTcpUdpSrcPort(short port) {
-	actionSetTcpUdpSrcPort = new ActionSetTcpUdpPort(port);
-	actionType = ActionValues.ACTION_SET_TP_SRC;
-    }
-
-    /**
-     * Get the action to set the TCP/UDP destination port.
-     *
-     * @return the action to set the TCP/UDP destination port.
-     */
-    @JsonProperty("actionSetTcpUdpDstPort")
-    public ActionSetTcpUdpPort actionSetTcpUdpDstPort() {
-	return actionSetTcpUdpDstPort;
-    }
-
-    /**
-     * Set the action to set the TCP/UDP destination port.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionSetTcpUdpDstPort")
-    public void setActionSetTcpUdpDstPort(ActionSetTcpUdpPort action) {
-	actionSetTcpUdpDstPort = action;
-	actionType = ActionValues.ACTION_SET_TP_DST;
-    }
-
-    /**
-     * Set the action to set the TCP/UDP destination port.
-     *
-     * @param port the TCP/UDP port to set as the TCP/UDP destination port.
-     */
-    public void setActionSetTcpUdpDstPort(short port) {
-	actionSetTcpUdpDstPort = new ActionSetTcpUdpPort(port);
-	actionType = ActionValues.ACTION_SET_TP_DST;
-    }
-
-    /**
-     * Get the action to output to queue on a port.
-     *
-     * @return the action to output to queue on a port.
-     */
-    @JsonProperty("actionEnqueue")
-    public ActionEnqueue actionEnqueue() { return actionEnqueue; }
-
-    /**
-     * Set the action to output to queue on a port.
-     *
-     * @param action the action to set.
-     */
-    @JsonProperty("actionEnqueue")
-    public void setActionEnqueue(ActionEnqueue action) {
-	actionEnqueue = action;
-	actionType = ActionValues.ACTION_ENQUEUE;
-    }
-
-    /**
-     * Set the action to output to queue on a port.
-     *
-     * @param port the port to set.
-     * @param int queueId the queue ID to set.
-     */
-    public void setActionEnqueue(Port port, int queueId) {
-	actionEnqueue = new ActionEnqueue(port, queueId);
-	actionType = ActionValues.ACTION_ENQUEUE;
-    }
-
-    /**
-     * Convert the set of actions to a string.
-     *
-     * The string has the following form:
-     *  [type=XXX action=XXX]
-     *
-     * @return the set of actions as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[";
-	ret += "type=" + actionType;
-	switch (actionType) {
-	case ACTION_OUTPUT:
-	    ret += " action=" + actionOutput.toString();
-	    break;
-	case ACTION_SET_VLAN_VID:
-	    ret += " action=" + actionSetVlanId.toString();
-	    break;
-	case ACTION_SET_VLAN_PCP:
-	    ret += " action=" + actionSetVlanPriority.toString();
-	    break;
-	case ACTION_STRIP_VLAN:
-	    ret += " action=" + actionStripVlan.toString();
-	    break;
-	case ACTION_SET_DL_SRC:
-	    ret += " action=" + actionSetEthernetSrcAddr.toString();
-	    break;
-	case ACTION_SET_DL_DST:
-	    ret += " action=" + actionSetEthernetDstAddr.toString();
-	    break;
-	case ACTION_SET_NW_SRC:
-	    ret += " action=" + actionSetIPv4SrcAddr.toString();
-	    break;
-	case ACTION_SET_NW_DST:
-	    ret += " action=" + actionSetIPv4DstAddr.toString();
-	    break;
-	case ACTION_SET_NW_TOS:
-	    ret += " action=" + actionSetIpToS.toString();
-	    break;
-	case ACTION_SET_TP_SRC:
-	    ret += " action=" + actionSetTcpUdpSrcPort.toString();
-	    break;
-	case ACTION_SET_TP_DST:
-	    ret += " action=" + actionSetTcpUdpDstPort.toString();
-	    break;
-	case ACTION_ENQUEUE:
-	    ret += " action=" + actionEnqueue.toString();
-	    break;
-	}
-	ret += "]";
-
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java b/src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java
deleted file mode 100644
index bf1708d..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package net.floodlightcontroller.util;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Flow Entry error state.
- */
-public class FlowEntryErrorState {
-    private short type;	// The error type (e.g., see OF-1.3.1 spec, pp. 95)
-    private short code;	// The error code (e.g., see OF-1.3.1 spec, pp. 95)
-
-    /**
-     * Default constructor.
-     */
-    public FlowEntryErrorState() {
-	this.type = 0;
-	this.code = 0;
-    }
-
-    /**
-     * Constructor for a given error type and code.
-     *
-     * @param type the error type to use.
-     * @param code the error code to use.
-     */
-    public FlowEntryErrorState(short type, short code) {
-	this.type = type;
-	this.code = code;
-    }
-
-    /**
-     * Get the error type.
-     *
-     * @return the error type.
-     */
-    @JsonProperty("type")
-    public short type() { return type; }
-
-    /**
-     * Set the error type.
-     *
-     * @param type the error type to use.
-     */
-    @JsonProperty("type")
-    public void setType(short type) {
-	this.type = type;
-    }
-
-    /**
-     * Get the error code.
-     *
-     * @return the error code.
-     */
-    @JsonProperty("code")
-    public short code() { return code; }
-
-    /**
-     * Set the error code.
-     *
-     * @param code the error code to use.
-     */
-    @JsonProperty("code")
-    public void setCode(short code) {
-	this.code = code;
-    }
-
-    /**
-     * Set the values of the error type and code.
-     *
-     * @param type the error type to use.
-     * @param code the error code to use.
-     */
-    public void setValue(short type, short code) {
-	this.type = type;
-	this.code = code;
-    }
-
-    /**
-     * Convert the error type and code to a string.
-     *
-     * The string has the following form:
-     * [type=1 code=2]
-     *
-     * @return the error type and code as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[type=" + this.type + " code=" + code + "]";
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryId.java b/src/main/java/net/floodlightcontroller/util/FlowEntryId.java
deleted file mode 100644
index e146a3d..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryId.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package net.floodlightcontroller.util;
-
-import java.math.BigInteger;
-
-import net.floodlightcontroller.util.serializers.FlowEntryIdDeserializer;
-import net.floodlightcontroller.util.serializers.FlowEntryIdSerializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing a Flow Entry ID.
- */
-@JsonDeserialize(using=FlowEntryIdDeserializer.class)
-@JsonSerialize(using=FlowEntryIdSerializer.class)
-public class FlowEntryId {
-    private long value;
-
-    /**
-     * Default constructor.
-     */
-    public FlowEntryId() {
-	this.value = 0;
-    }
-
-    /**
-     * Constructor from an integer value.
-     *
-     * @param value the value to use.
-     */
-    public FlowEntryId(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public FlowEntryId(String value) {
-	//
-	// Use the help of BigInteger to parse strings representing
-	// large unsigned hex long values.
-	//
-	char c = 0;
-	if (value.length() > 2)
-	    c = value.charAt(1);
-	if ((c == 'x') || (c == 'X'))
-	    this.value = new BigInteger(value.substring(2), 16).longValue();
-	else
-	    this.value = Long.decode(value);
-    }
-
-    /**
-     * Get the value of the Flow Entry ID.
-     *
-     * @return the value of the Flow Entry ID.
-     */
-    public long value() { return value; }
-
-    /**
-     * Set the value of the Flow Entry ID.
-     *
-     * @param value the value to set.
-     */
-    public void setValue(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the Flow Entry ID value to a hexadecimal string.
-     *
-     * @return the Flow Entry ID value to a hexadecimal string.
-     */
-    @Override
-    public String toString() {
-	return "0x" + Long.toHexString(this.value);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java b/src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java
deleted file mode 100644
index 6c8e71e..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java
+++ /dev/null
@@ -1,712 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.IPv4Net;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Flow Entry Matching filter.
- *
- * The Flow Entry matching filter that is used to specify
- * the network data that would be forwarded on the data path from
- * the source to the destination. Examples: source or destination MAC address,
- * IP prefix that includes the destination's IP address, etc.
- */
-public class FlowEntryMatch {
-    /**
-     * A class for storing a value to match.
-     */
-    class Field<T> {
-	/**
-	 * Default constructor.
-	 */
-	public Field() {
-	    this.enabled = false;
-	}
-
-	/**
-	 * Constructor for a given value to match.
-	 *
-	 * @param value the value to match.
-	 */
-	public Field(T value) {
-	    this.value = value;
-	    this.enabled = true;
-	}
-
-	/**
-	 * Get the value.
-	 *
-	 * @return the value.
-	 */
-	public T value() { return this.value; }
-
-	/**
-	 * Enable the matching for a given value.
-	 *
-	 * @param value the value to set.
-	 */
-	public void enableMatch(T value) {
-	    this.value = value;
-	    this.enabled = true;
-	}
-
-	/**
-	 * Disable the matching.
-	 */
-	public void disableMatch() {
-	    this.enabled = false;
-	}
-
-	/**
-	 * Test whether matching is enabled.
-	 *
-	 * @return true if matching is enabled, otherwise false.
-	 */
-	public boolean enabled() { return this.enabled; }
-
-	private T value;		// The value to match
-	private boolean enabled;	// Set to true, if matching is enabled
-    }
-
-    private Field<Port> inPort;		// Matching input switch port
-    private Field<MACAddress> srcMac;	// Matching source MAC address
-    private Field<MACAddress> dstMac;	// Matching destination MAC address
-    private Field<Short> vlanId;	// Matching VLAN ID
-    private Field<Byte> vlanPriority;	// Matching VLAN priority
-    private Field<Short> ethernetFrameType; // Matching Ethernet frame type
-    private Field<Byte> ipToS;		// Matching IP ToS (DSCP field, 6 bits)
-    private Field<Byte> ipProto;	// Matching IP protocol
-    private Field<IPv4Net> srcIPv4Net;	// Matching source IPv4 prefix
-    private Field<IPv4Net> dstIPv4Net;	// Matching destination IPv4 prefix
-    private Field<Short> srcTcpUdpPort;	// Matching source TCP/UDP port
-    private Field<Short> dstTcpUdpPort;	// Matching destination TCP/UDP port
-
-    /**
-     * Default constructor.
-     */
-    public FlowEntryMatch() {
-    }
-
-    /**
-     * Copy constructor.
-     *
-     * @param other the object to copy from.
-     */
-    public FlowEntryMatch(FlowEntryMatch other) {
-	if ((other.inPort != null) && other.inPort.enabled())
-	    this.enableInPort(other.inPort.value());
-	if ((other.srcMac != null) && other.srcMac.enabled())
-	    this.enableSrcMac(other.srcMac.value());
-	if ((other.dstMac != null) && other.dstMac.enabled())
-	    this.enableDstMac(other.dstMac.value());
-	if ((other.vlanId != null) && other.vlanId.enabled())
-	    this.enableVlanId(other.vlanId.value());
-	if ((other.vlanPriority != null) && other.vlanPriority.enabled())
-	    this.enableVlanPriority(other.vlanPriority.value());
-	if ((other.ethernetFrameType != null) && other.ethernetFrameType.enabled())
-	    this.enableEthernetFrameType(other.ethernetFrameType.value());
-	if ((other.ipToS != null) && other.ipToS.enabled())
-	    this.enableIpToS(other.ipToS.value());
-	if ((other.ipProto != null) && other.ipProto.enabled())
-	    this.enableIpProto(other.ipProto.value());
-	if ((other.srcIPv4Net != null) && other.srcIPv4Net.enabled())
-	    this.enableSrcIPv4Net(other.srcIPv4Net.value());
-	if ((other.dstIPv4Net != null) && other.dstIPv4Net.enabled())
-	    this.enableDstIPv4Net(other.dstIPv4Net.value());
-	if ((other.srcTcpUdpPort != null) && other.srcTcpUdpPort.enabled())
-	    this.enableSrcTcpUdpPort(other.srcTcpUdpPort.value());
-	if ((other.dstTcpUdpPort != null) && other.dstTcpUdpPort.enabled())
-	    this.enableDstTcpUdpPort(other.dstTcpUdpPort.value());
-    }
-
-    /**
-     * Get the matching input switch port.
-     *
-     * @return the matching input switch port.
-     */
-    @JsonProperty("inPort")
-    public Port inPort() {
-	if (inPort != null)
-	    return inPort.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on input switch port.
-     *
-     * @param inPort the input switch port value to enable for matching.
-     */
-    @JsonProperty("inPort")
-    public void enableInPort(Port inPort) {
-	this.inPort = new Field<Port>(inPort);
-    }
-
-    /**
-     * Disable the matching on input switch port.
-     */
-    public void disableInPort() {
-	this.inPort = null;
-    }
-
-    /**
-     * Test if matching on input switch port is enabled.
-     *
-     * @return true if matching on input switch port is enabled.
-     */
-    @JsonProperty("matchInPort")
-    public boolean matchInPort() {
-	if (inPort != null)
-	    return inPort.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching source MAC address.
-     *
-     * @return the matching source MAC address.
-     */
-    @JsonProperty("srcMac")
-    public MACAddress srcMac() {
-	if (srcMac != null)
-	    return srcMac.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on source MAC address.
-     *
-     * @param srcMac the source MAC address value to enable for matching.
-     */
-    @JsonProperty("srcMac")
-    public void enableSrcMac(MACAddress srcMac) {
-	this.srcMac = new Field<MACAddress>(srcMac);
-    }
-
-    /**
-     * Disable the matching on source MAC address.
-     */
-    public void disableSrcMac() {
-	this.srcMac = null;
-    }
-
-    /**
-     * Test if matching on source MAC address is enabled.
-     *
-     * @return true if matching on source MAC address is enabled.
-     */
-    @JsonProperty("matchSrcMac")
-    public boolean matchSrcMac() {
-	if (srcMac != null)
-	    return srcMac.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching destination MAC address.
-     *
-     * @return the matching destination MAC address.
-     */
-    @JsonProperty("dstMac")
-    public MACAddress dstMac() {
-	if (dstMac != null)
-	    return dstMac.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on destination MAC address.
-     *
-     * @param dstMac the destination MAC address value to enable for matching.
-     */
-    @JsonProperty("dstMac")
-    public void enableDstMac(MACAddress dstMac) {
-	this.dstMac = new Field<MACAddress>(dstMac);
-    }
-
-    /**
-     * Disable the matching on destination MAC address.
-     */
-    public void disableDstMac() {
-	this.dstMac = null;
-    }
-
-    /**
-     * Test if matching on destination MAC address is enabled.
-     *
-     * @return true if matching on destination MAC address is enabled.
-     */
-    @JsonProperty("matchDstMac")
-    public boolean matchDstMac() {
-	if (dstMac != null)
-	    return dstMac.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching VLAN ID.
-     *
-     * @return the matching VLAN ID.
-     */
-    @JsonProperty("vlanId")
-    public Short vlanId() {
-	if (vlanId != null)
-	    return vlanId.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on VLAN ID.
-     *
-     * @param vlanId the VLAN ID value to enable for matching.
-     */
-    @JsonProperty("vlanId")
-    public void enableVlanId(Short vlanId) {
-	this.vlanId = new Field<Short>(vlanId);
-    }
-
-    /**
-     * Disable the matching on VLAN ID.
-     */
-    public void disableVlanId() {
-	this.vlanId = null;
-    }
-
-    /**
-     * Test if matching on VLAN ID is enabled.
-     *
-     * @return true if matching on VLAN ID is enabled.
-     */
-    @JsonProperty("matchVlanId")
-    public boolean matchVlanId() {
-	if (vlanId != null)
-	    return vlanId.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching VLAN priority.
-     *
-     * @return the matching VLAN priority.
-     */
-    @JsonProperty("vlanPriority")
-    public Byte vlanPriority() {
-	if (vlanPriority != null)
-	    return vlanPriority.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on VLAN priority.
-     *
-     * @param vlanPriority the VLAN priority value to enable for matching.
-     */
-    @JsonProperty("vlanPriority")
-    public void enableVlanPriority(Byte vlanPriority) {
-	this.vlanPriority = new Field<Byte>(vlanPriority);
-    }
-
-    /**
-     * Disable the matching on VLAN priority.
-     */
-    public void disableVlanPriority() {
-	this.vlanPriority = null;
-    }
-
-    /**
-     * Test if matching on VLAN priority is enabled.
-     *
-     * @return true if matching on VLAN priority is enabled.
-     */
-    @JsonProperty("matchVlanPriority")
-    public boolean matchVlanPriority() {
-	if (vlanPriority != null)
-	    return vlanPriority.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching Ethernet frame type.
-     *
-     * @return the matching Ethernet frame type.
-     */
-    @JsonProperty("ethernetFrameType")
-    public Short ethernetFrameType() {
-	if (ethernetFrameType != null)
-	    return ethernetFrameType.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on Ethernet frame type.
-     *
-     * @param ethernetFrameType the Ethernet frame type value to enable for
-     * matching.
-     */
-    @JsonProperty("ethernetFrameType")
-    public void enableEthernetFrameType(Short ethernetFrameType) {
-	this.ethernetFrameType = new Field<Short>(ethernetFrameType);
-    }
-
-    /**
-     * Disable the matching on Ethernet frame type.
-     */
-    public void disableEthernetFrameType() {
-	this.ethernetFrameType = null;
-    }
-
-    /**
-     * Test if matching on Ethernet frame type is enabled.
-     *
-     * @return true if matching on Ethernet frame type is enabled.
-     */
-    @JsonProperty("matchEthernetFrameType")
-    public boolean matchEthernetFrameType() {
-	if (ethernetFrameType != null)
-	    return ethernetFrameType.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching IP ToS (DSCP field, 6 bits)
-     *
-     * @return the matching IP ToS.
-     */
-    @JsonProperty("ipToS")
-    public Byte ipToS() {
-	if (ipToS != null)
-	    return ipToS.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on IP ToS (DSCP field, 6 bits).
-     *
-     * @param ipToS the IP ToS value to enable for matching.
-     */
-    @JsonProperty("ipToS")
-    public void enableIpToS(Byte ipToS) {
-	this.ipToS = new Field<Byte>(ipToS);
-    }
-
-    /**
-     * Disable the matching on IP ToS (DSCP field, 6 bits).
-     */
-    public void disableIpToS() {
-	this.ipToS = null;
-    }
-
-    /**
-     * Test if matching on IP ToS (DSCP field, 6 bits) is enabled.
-     *
-     * @return true if matching on IP ToS is enabled.
-     */
-    @JsonProperty("matchIpToS")
-    public boolean matchIpToS() {
-	if (ipToS != null)
-	    return ipToS.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching IP protocol.
-     *
-     * @return the matching IP protocol.
-     */
-    @JsonProperty("ipProto")
-    public Byte ipProto() {
-	if (ipProto != null)
-	    return ipProto.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on IP protocol.
-     *
-     * @param ipProto the IP protocol value to enable for matching.
-     */
-    @JsonProperty("ipProto")
-    public void enableIpProto(Byte ipProto) {
-	this.ipProto = new Field<Byte>(ipProto);
-    }
-
-    /**
-     * Disable the matching on IP protocol.
-     */
-    public void disableIpProto() {
-	this.ipProto = null;
-    }
-
-    /**
-     * Test if matching on IP protocol is enabled.
-     *
-     * @return true if matching on IP protocol is enabled.
-     */
-    @JsonProperty("matchIpProto")
-    public boolean matchIpProto() {
-	if (ipProto != null)
-	    return ipProto.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching source IPv4 prefix.
-     *
-     * @return the matching source IPv4 prefix.
-     */
-    @JsonProperty("srcIPv4Net")
-    public IPv4Net srcIPv4Net() {
-	if (srcIPv4Net != null)
-	    return srcIPv4Net.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on source IPv4 prefix.
-     *
-     * @param srcIPv4Net the source IPv4 prefix value to enable for matching.
-     */
-    @JsonProperty("srcIPv4Net")
-    public void enableSrcIPv4Net(IPv4Net srcIPv4Net) {
-	this.srcIPv4Net = new Field<IPv4Net>(srcIPv4Net);
-    }
-
-    /**
-     * Disable the matching on source IPv4 prefix.
-     */
-    public void disableSrcIPv4Net() {
-	this.srcIPv4Net = null;
-    }
-
-    /**
-     * Test if matching on source IPv4 prefix is enabled.
-     *
-     * @return true if matching on source IPv4 prefix is enabled.
-     */
-    @JsonProperty("matchSrcIPv4Net")
-    public boolean matchSrcIPv4Net() {
-	if (srcIPv4Net != null)
-	    return srcIPv4Net.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching destination IPv4 prefix.
-     *
-     * @return the matching destination IPv4 prefix.
-     */
-    @JsonProperty("dstIPv4Net")
-    public IPv4Net dstIPv4Net() {
-	if (dstIPv4Net != null)
-	    return dstIPv4Net.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on destination IPv4 prefix.
-     *
-     * @param dstIPv4Net the destination IPv4 prefix value to enable for
-     * matching.
-     */
-    @JsonProperty("dstIPv4Net")
-    public void enableDstIPv4Net(IPv4Net dstIPv4Net) {
-	this.dstIPv4Net = new Field<IPv4Net>(dstIPv4Net);
-    }
-
-    /**
-     * Disable the matching on destination IPv4 prefix.
-     */
-    public void disableDstIPv4Net() {
-	this.dstIPv4Net = null;
-    }
-
-    /**
-     * Test if matching on destination IPv4 prefix is enabled.
-     *
-     * @return true if matching on destination IPv4 prefix is enabled.
-     */
-    @JsonProperty("matchDstIPv4Net")
-    public boolean matchDstIPv4Net() {
-	if (dstIPv4Net != null)
-	    return dstIPv4Net.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching source TCP/UDP port.
-     *
-     * @return the matching source TCP/UDP port.
-     */
-    @JsonProperty("srcTcpUdpPort")
-    public Short srcTcpUdpPort() {
-	if (srcTcpUdpPort != null)
-	    return srcTcpUdpPort.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on source TCP/UDP port.
-     *
-     * @param srcTcpUdpPort the source TCP/UDP port to enable for matching.
-     */
-    @JsonProperty("srcTcpUdpPort")
-    public void enableSrcTcpUdpPort(Short srcTcpUdpPort) {
-	this.srcTcpUdpPort = new Field<Short>(srcTcpUdpPort);
-    }
-
-    /**
-     * Disable the matching on source TCP/UDP port.
-     */
-    public void disableSrcTcpUdpPort() {
-	this.srcTcpUdpPort = null;
-    }
-
-    /**
-     * Test if matching on source TCP/UDP port is enabled.
-     *
-     * @return true if matching on source TCP/UDP port is enabled.
-     */
-    @JsonProperty("matchSrcTcpUdpPort")
-    public boolean matchSrcTcpUdpPort() {
-	if (srcTcpUdpPort != null)
-	    return srcTcpUdpPort.enabled();
-	return false;
-    }
-
-    /**
-     * Get the matching destination TCP/UDP port.
-     *
-     * @return the matching destination TCP/UDP port.
-     */
-    @JsonProperty("dstTcpUdpPort")
-    public Short dstTcpUdpPort() {
-	if (dstTcpUdpPort != null)
-	    return dstTcpUdpPort.value();
-	return null;
-    }
-
-    /**
-     * Enable the matching on destination TCP/UDP port.
-     *
-     * @param dstTcpUdpPort the destination TCP/UDP port to enable for
-     * matching.
-     */
-    @JsonProperty("dstTcpUdpPort")
-    public void enableDstTcpUdpPort(Short dstTcpUdpPort) {
-	this.dstTcpUdpPort = new Field<Short>(dstTcpUdpPort);
-    }
-
-    /**
-     * Disable the matching on destination TCP/UDP port.
-     */
-    public void disableDstTcpUdpPort() {
-	this.dstTcpUdpPort = null;
-    }
-
-    /**
-     * Test if matching on destination TCP/UDP port is enabled.
-     *
-     * @return true if matching on destination TCP/UDP port is enabled.
-     */
-    @JsonProperty("matchDstTcpUdpPort")
-    public boolean matchDstTcpUdpPort() {
-	if (dstTcpUdpPort != null)
-	    return dstTcpUdpPort.enabled();
-	return false;
-    }
-
-    /**
-     * Convert the matching filter to a string.
-     *
-     * The string has the following form:
-     *  [srcMac=XXX dstMac=XXX srcIPv4Net=XXX dstIPv4Net=XXX]
-     *
-     * @return the matching filter as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[";
-	boolean addSpace = false;
-
-	//
-	// Conditionally add only those matching fields that are enabled
-	//
-	if (matchInPort()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "inPort=" + this.inPort().toString();
-	}
-	if (matchSrcMac()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "srcMac=" + this.srcMac().toString();
-	}
-	if (matchDstMac()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "dstMac=" + this.dstMac().toString();
-	}
-	if (matchVlanId()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "vlanId=" + this.vlanId().toString();
-	}
-	if (matchVlanPriority()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "vlanPriority=" + this.vlanPriority().toString();
-	}
-	if (matchEthernetFrameType()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "ethernetFrameType=" + this.ethernetFrameType().toString();
-	}
-	if (matchIpToS()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "ipToS=" + this.ipToS().toString();
-	}
-	if (matchIpProto()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "ipProto=" + this.ipProto().toString();
-	}
-	if (matchSrcIPv4Net()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "srcIPv4Net=" + this.srcIPv4Net().toString();
-	}
-	if (matchDstIPv4Net()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "dstIPv4Net=" + this.dstIPv4Net().toString();
-	}
-	if (matchSrcTcpUdpPort()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "srcTcpUdpPort=" + this.srcTcpUdpPort().toString();
-	}
-	if (matchDstTcpUdpPort()) {
-	    if (addSpace)
-		ret += " ";
-	    addSpace = true;
-	    ret += "dstTcpUdpPort=" + this.dstTcpUdpPort().toString();
-	}
-
-	ret += "]";
-
-	return ret;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java b/src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java
deleted file mode 100644
index 4f9882a..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package net.floodlightcontroller.util;
-
-/**
- * The Flow Entry state as set by the controller.
- */
-public enum FlowEntrySwitchState {
-	FE_SWITCH_UNKNOWN,		// Initialization value: state unknown
-	FE_SWITCH_NOT_UPDATED,		// Switch not updated with this entry
-	FE_SWITCH_UPDATE_IN_PROGRESS,	// Switch update in progress
-	FE_SWITCH_UPDATED,		// Switch updated with this entry
-	FE_SWITCH_UPDATE_FAILED	// Error updating the switch with this entry
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java b/src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java
deleted file mode 100644
index 8637b4f..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.floodlightcontroller.util;
-
-/**
- * The Flow Entry state as set by the user (via the ONOS API).
- */
-public enum FlowEntryUserState {
-	FE_USER_UNKNOWN,		// Initialization value: state unknown
-	FE_USER_ADD,			// Flow entry that is added
-	FE_USER_MODIFY,			// Flow entry that is modified
-	FE_USER_DELETE			// Flow entry that is deleted
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowId.java b/src/main/java/net/floodlightcontroller/util/FlowId.java
deleted file mode 100644
index 0297e2a..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowId.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package net.floodlightcontroller.util;
-
-import java.math.BigInteger;
-
-import net.floodlightcontroller.util.serializers.FlowIdDeserializer;
-import net.floodlightcontroller.util.serializers.FlowIdSerializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing a Flow ID.
- */
-@JsonDeserialize(using=FlowIdDeserializer.class)
-@JsonSerialize(using=FlowIdSerializer.class)
-public class FlowId {
-    private long value;
-
-    /**
-     * Default constructor.
-     */
-    public FlowId() {
-	this.value = 0;
-    }
-
-    /**
-     * Constructor from an integer value.
-     *
-     * @param value the value to use.
-     */
-    public FlowId(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public FlowId(String value) {
-	//
-	// Use the help of BigInteger to parse strings representing
-	// large unsigned hex long values.
-	//
-	char c = 0;
-	if (value.length() > 2)
-	    c = value.charAt(1);
-	if ((c == 'x') || (c == 'X'))
-	    this.value = new BigInteger(value.substring(2), 16).longValue();
-	else
-	    this.value = Long.decode(value);
-    }
-
-    /**
-     * Get the value of the Flow ID.
-     *
-     * @return the value of the Flow ID.
-     */
-    public long value() { return value; }
-
-    /**
-     * Set the value of the Flow ID.
-     *
-     * @param value the value to set.
-     */
-    public void setValue(long value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the Flow ID value to a hexadecimal string.
-     *
-     * @return the Flow ID value to a hexadecimal string.
-     */
-    @Override
-    public String toString() {
-	return "0x" + Long.toHexString(this.value);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/FlowPath.java b/src/main/java/net/floodlightcontroller/util/FlowPath.java
deleted file mode 100644
index d906444..0000000
--- a/src/main/java/net/floodlightcontroller/util/FlowPath.java
+++ /dev/null
@@ -1,223 +0,0 @@
-package net.floodlightcontroller.util;
-
-import java.util.ArrayList;
-
-import net.floodlightcontroller.util.CallerId;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowId;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing the Flow Path.
- */
-public class FlowPath implements Comparable<FlowPath> {
-    private FlowId flowId;		// The Flow ID
-    private CallerId installerId;	// The Caller ID of the path installer
-    private DataPath dataPath;		// The data path
-    private FlowEntryMatch flowEntryMatch; // Common Flow Entry Match for all
-					// Flow Entries
-
-    /**
-     * Default constructor.
-     */
-    public FlowPath() {
-	dataPath = new DataPath();
-    }
-
-    /**
-     * Constructor to instantiate from object in Network Map
-     */
-    public FlowPath(IFlowPath flowObj) {
-    	dataPath = new DataPath();
-    	this.setFlowId(new FlowId(flowObj.getFlowId()));
-    	this.setInstallerId(new CallerId(flowObj.getInstallerId()));
-    	this.dataPath().srcPort().setDpid(new Dpid(flowObj.getSrcSwitch()));
-    	this.dataPath().srcPort().setPort(new Port(flowObj.getSrcPort()));
-    	this.dataPath().dstPort().setDpid(new Dpid(flowObj.getDstSwitch()));
-    	this.dataPath().dstPort().setPort(new Port(flowObj.getDstPort()));
-	//
-	// Extract the match conditions that are common for all Flow Entries
-	//
-	{
-    	    FlowEntryMatch match = new FlowEntryMatch();
-    	    Short matchEthernetFrameType = flowObj.getMatchEthernetFrameType();
-    	    if (matchEthernetFrameType != null)
-    		match.enableEthernetFrameType(matchEthernetFrameType);
-    	    String matchSrcIPv4Net = flowObj.getMatchSrcIPv4Net();
-    	    if (matchSrcIPv4Net != null)
-    		match.enableSrcIPv4Net(new IPv4Net(matchSrcIPv4Net));
-    	    String matchDstIPv4Net = flowObj.getMatchDstIPv4Net();
-    	    if (matchDstIPv4Net != null)
-    		match.enableDstIPv4Net(new IPv4Net(matchDstIPv4Net));
-    	    String matchSrcMac = flowObj.getMatchSrcMac();
-    	    if (matchSrcMac != null)
-    		match.enableSrcMac(MACAddress.valueOf(matchSrcMac));
-    	    String matchDstMac = flowObj.getMatchDstMac();
-    	    if (matchDstMac != null)
-    		match.enableDstMac(MACAddress.valueOf(matchDstMac));
-    	    this.setFlowEntryMatch(match);
-	}
-
-    	//
-    	// Extract all Flow Entries
-    	//
-    	Iterable<IFlowEntry> flowEntries = flowObj.getFlowEntries();
-    	for (IFlowEntry flowEntryObj : flowEntries) {
-    	    FlowEntry flowEntry = new FlowEntry();
-    	    flowEntry.setFlowEntryId(new FlowEntryId(flowEntryObj.getFlowEntryId()));
-    	    flowEntry.setDpid(new Dpid(flowEntryObj.getSwitchDpid()));
-
-    	    //
-    	    // Extract the match conditions
-    	    //
-    	    FlowEntryMatch match = new FlowEntryMatch();
-    	    Short matchInPort = flowEntryObj.getMatchInPort();
-    	    if (matchInPort != null)
-    		match.enableInPort(new Port(matchInPort));
-    	    Short matchEthernetFrameType = flowEntryObj.getMatchEthernetFrameType();
-    	    if (matchEthernetFrameType != null)
-    		match.enableEthernetFrameType(matchEthernetFrameType);
-    	    String matchSrcIPv4Net = flowEntryObj.getMatchSrcIPv4Net();
-    	    if (matchSrcIPv4Net != null)
-    		match.enableSrcIPv4Net(new IPv4Net(matchSrcIPv4Net));
-    	    String matchDstIPv4Net = flowEntryObj.getMatchDstIPv4Net();
-    	    if (matchDstIPv4Net != null)
-    		match.enableDstIPv4Net(new IPv4Net(matchDstIPv4Net));
-    	    String matchSrcMac = flowEntryObj.getMatchSrcMac();
-    	    if (matchSrcMac != null)
-    		match.enableSrcMac(MACAddress.valueOf(matchSrcMac));
-    	    String matchDstMac = flowEntryObj.getMatchDstMac();
-    	    if (matchDstMac != null)
-    		match.enableDstMac(MACAddress.valueOf(matchDstMac));
-    	    flowEntry.setFlowEntryMatch(match);
-
-    	    //
-    	    // Extract the actions
-    	    //
-    	    ArrayList<FlowEntryAction> actions = new ArrayList<FlowEntryAction>();
-    	    Short actionOutputPort = flowEntryObj.getActionOutput();
-    	    if (actionOutputPort != null) {
-    		FlowEntryAction action = new FlowEntryAction();
-    		action.setActionOutput(new Port(actionOutputPort));
-    		actions.add(action);
-    	    }
-    	    flowEntry.setFlowEntryActions(actions);
-
-    	    String userState = flowEntryObj.getUserState();
-    	    flowEntry.setFlowEntryUserState(FlowEntryUserState.valueOf(userState));
-    	    String switchState = flowEntryObj.getSwitchState();
-    	    flowEntry.setFlowEntrySwitchState(FlowEntrySwitchState.valueOf(switchState));
-    	    //
-    	    // TODO: Take care of the FlowEntryMatch, FlowEntryAction set,
-    	    // and FlowEntryErrorState.
-    	    //
-    	    this.dataPath().flowEntries().add(flowEntry);
-    	}
-    }
-
-    /**
-     * Get the flow path Flow ID.
-     *
-     * @return the flow path Flow ID.
-     */
-    @JsonProperty("flowId")
-    public FlowId flowId() { return flowId; }
-
-    /**
-     * Set the flow path Flow ID.
-     *
-     * @param flowId the flow path Flow ID to set.
-     */
-    @JsonProperty("flowId")
-    public void setFlowId(FlowId flowId) {
-	this.flowId = flowId;
-    }
-
-    /**
-     * Get the Caller ID of the flow path installer.
-     *
-     * @return the Caller ID of the flow path installer.
-     */
-    @JsonProperty("installerId")
-    public CallerId installerId() { return installerId; }
-
-    /**
-     * Set the Caller ID of the flow path installer.
-     *
-     * @param installerId the Caller ID of the flow path installer.
-     */
-    @JsonProperty("installerId")
-    public void setInstallerId(CallerId installerId) {
-	this.installerId = installerId;
-    }
-
-    /**
-     * Get the flow path's data path.
-     *
-     * @return the flow path's data path.
-     */
-    @JsonProperty("dataPath")
-    public DataPath dataPath() { return dataPath; }
-
-    /**
-     * Set the flow path's data path.
-     *
-     * @param dataPath the flow path's data path to set.
-     */
-    @JsonProperty("dataPath")
-    public void setDataPath(DataPath dataPath) {
-	this.dataPath = dataPath;
-    }
-
-    /**
-     * Get the flow path's match conditions common for all Flow Entries.
-     *
-     * @return the flow path's match conditions common for all Flow Entries.
-     */
-    @JsonProperty("flowEntryMatch")
-    public FlowEntryMatch flowEntryMatch() { return flowEntryMatch; }
-
-    /**
-     * Set the flow path's match conditions common for all Flow Entries.
-     *
-     * @param flowEntryMatch the flow path's match conditions common for all
-     * Flow Entries.
-     */
-    @JsonProperty("flowEntryMatch")
-    public void setFlowEntryMatch(FlowEntryMatch flowEntryMatch) {
-	this.flowEntryMatch = flowEntryMatch;
-    }
-
-    /**
-     * Convert the flow path to a string.
-     *
-     * The string has the following form:
-     *  [flowId=XXX installerId=XXX dataPath=XXX]
-     *
-     * @return the flow path as a string.
-     */
-    @Override
-    public String toString() {
-	String ret = "[flowId=" + this.flowId.toString();
-	ret += " installerId=" + this.installerId.toString();
-	if (dataPath != null)
-	    ret += " dataPath=" + this.dataPath.toString();
-	if (flowEntryMatch != null)
-	    ret += " flowEntryMatch=" + this.flowEntryMatch.toString();
-	ret += "]";
-	return ret;
-    }
-    
-    /**
-     * CompareTo method to order flowPath by Id
-     */
-    @Override
-    public int compareTo(FlowPath f) {
-    	return (int) (this.flowId.value() - f.flowId.value());
-    }
-
-}
diff --git a/src/main/java/net/floodlightcontroller/util/IPv4.java b/src/main/java/net/floodlightcontroller/util/IPv4.java
deleted file mode 100644
index ef3a1e5..0000000
--- a/src/main/java/net/floodlightcontroller/util/IPv4.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.serializers.IPv4Deserializer;
-import net.floodlightcontroller.util.serializers.IPv4Serializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing an IPv4 address.
- */
-@JsonDeserialize(using=IPv4Deserializer.class)
-@JsonSerialize(using=IPv4Serializer.class)
-public class IPv4 {
-    private int value;
-
-    /**
-     * Default constructor.
-     */
-    public IPv4() {
-	this.value = 0;
-    }
-
-    /**
-     * Constructor from an integer value.
-     *
-     * @param value the value to use.
-     */
-    public IPv4(int value) {
-	this.value = value;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public IPv4(String value) {
-        String[] splits = value.split("\\.");
-        if (splits.length != 4)
-            throw new IllegalArgumentException("Specified IPv4 address must contain four " +
-					       "numerical digits separated by '.'");
-
-        int result = 0;
-        for (int i = 0; i < 4; ++i) {
-            result |= Integer.valueOf(splits[i]) << ((3-i)*8);
-        }
-	this.value = result;
-    }
-
-    /**
-     * Get the value of the IPv4 address.
-     *
-     * @return the value of the IPv4 address.
-     */
-    public int value() { return value; }
-
-    /**
-     * Set the value of the IPv4 address.
-     *
-     * @param value the value to set.
-     */
-    public void setValue(int value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the IPv4 value to a '.' separated string.
-     *
-     * @return the IPv4 value as a '.' separated string.
-     */
-    @Override
-    public String toString() {
-	return ((this.value >> 24) & 0xFF) + "." +
-	    ((this.value >> 16) & 0xFF) + "." +
-	    ((this.value >> 8) & 0xFF) + "." +
-	    (this.value & 0xFF);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/IPv4Net.java b/src/main/java/net/floodlightcontroller/util/IPv4Net.java
deleted file mode 100644
index 824e3e2..0000000
--- a/src/main/java/net/floodlightcontroller/util/IPv4Net.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.IPv4;
-import net.floodlightcontroller.util.serializers.IPv4NetDeserializer;
-import net.floodlightcontroller.util.serializers.IPv4NetSerializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing an IPv4 network address.
- */
-@JsonDeserialize(using=IPv4NetDeserializer.class)
-@JsonSerialize(using=IPv4NetSerializer.class)
-public class IPv4Net {
-    private IPv4 address;		// The IPv4 address
-    private short prefixLen;		// The prefix length
-
-    /**
-     * Default constructor.
-     */
-    public IPv4Net() {
-	this.prefixLen = 0;
-    }
-
-    /**
-     * Constructor for a given address and prefix length.
-     *
-     * @param address the address to use.
-     * @param prefixLen the prefix length to use.
-     */
-    public IPv4Net(IPv4 address, short prefixLen) {
-	this.address = address;
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public IPv4Net(String value) {
-	String[] splits = value.split("/");
-	if (splits.length != 2) {
-	    throw new IllegalArgumentException("Specified IPv4Net address must contain an IPv4 " +
-					       "address and a prefix length separated by '/'");
-	}
-	this.address = new IPv4(splits[0]);
-	this.prefixLen = Short.decode(splits[1]);
-    }
-
-    /**
-     * Get the address value of the IPv4Net address.
-     *
-     * @return the address value of the IPv4Net address.
-     */
-    public IPv4 address() { return address; }
-
-    /**
-     * Set the address value of the IPv4Net address.
-     *
-     * @param address the address to use.
-     */
-    public void setAddress(IPv4 address) {
-	this.address = address;
-    }
-
-    /**
-     * Get the prefix length value of the IPv4Net address.
-     *
-     * @return the prefix length value of the IPv4Net address.
-     */
-    public short prefixLen() { return prefixLen; }
-
-    /**
-     * Set the prefix length value of the IPv4Net address.
-     *
-     * @param prefixLen the prefix length to use.
-     */
-    public void setPrefixLen(short prefixLen) {
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Set the value of the IPv4Net address.
-     *
-     * @param address the address to use.
-     * @param prefixLen the prefix length to use.
-     */
-    public void setValue(IPv4 address, short prefixLen) {
-	this.address = address;
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Convert the IPv4Net value to an "address/prefixLen" string.
-     *
-     * @return the IPv4Net value as an "address/prefixLen" string.
-     */
-    @Override
-    public String toString() {
-	return this.address.toString() + "/" + this.prefixLen;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/IPv6.java b/src/main/java/net/floodlightcontroller/util/IPv6.java
deleted file mode 100644
index eda4502..0000000
--- a/src/main/java/net/floodlightcontroller/util/IPv6.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package net.floodlightcontroller.util;
-
-import org.openflow.util.HexString;
-import net.floodlightcontroller.util.serializers.IPv6Deserializer;
-import net.floodlightcontroller.util.serializers.IPv6Serializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing an IPv6 address.
- */
-@JsonDeserialize(using=IPv6Deserializer.class)
-@JsonSerialize(using=IPv6Serializer.class)
-public class IPv6 {
-    private long valueHigh;	// The higher (more significant) 64 bits
-    private long valueLow;	// The lower (less significant) 64 bits
-
-    /**
-     * Default constructor.
-     */
-    public IPv6() {
-	this.valueHigh = 0;
-	this.valueLow = 0;
-    }
-
-    /**
-     * Constructor from integer values.
-     *
-     * @param valueHigh the higher (more significant) 64 bits of the address.
-     * @param valueLow the lower (less significant) 64 bits of the address.
-     */
-    public IPv6(long valueHigh, long valueLow) {
-	this.valueHigh = valueHigh;
-	this.valueLow = valueLow;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public IPv6(String value) {
-	// TODO: Implement it!
-	this.valueHigh = 0;
-	this.valueLow = 0;
-    }
-
-    /**
-     * Get the value of the higher (more significant) 64 bits of the address.
-     *
-     * @return the value of the higher (more significant) 64 bits of the
-     * address.
-     */
-    public long valueHigh() { return valueHigh; }
-
-    /**
-     * Set the value of the higher (more significant) 64 bits of the address.
-     *
-     * @param valueHigh the higher (more significant) 64 bits of the address.
-     */
-    public void setValueHigh(long valueHigh) {
-	this.valueHigh = valueHigh;
-    }
-
-    /**
-     * Get the value of the lower (less significant) 64 bits of the address.
-     *
-     * @return the value of the lower (less significant) 64 bits of the
-     * address.
-     */
-    public long valueLow() { return valueLow; }
-
-    /**
-     * Get the value of the lower (less significant) 64 bits of the address.
-     *
-     * @param valueLow the lower (less significant) 64 bits of the address.
-     */
-    public void setValueLow(long valueLow) {
-	this.valueLow = valueLow;
-    }
-
-    /**
-     * Set the value of the IPv6 address.
-     *
-     * @param valueHigh the higher (more significant) 64 bits of the address.
-     * @param valueLow the lower (less significant) 64 bits of the address.
-     */
-    public void setValue(long valueHigh, long valueLow) {
-	this.valueHigh = valueHigh;
-	this.valueLow = valueLow;
-    }
-
-    /**
-     * Convert the IPv6 value to a ':' separated string.
-     *
-     * @return the IPv6 value as a ':' separated string.
-     */
-    @Override
-    public String toString() {
-	return HexString.toHexString(this.valueHigh) + ":" +
-	    HexString.toHexString(this.valueLow);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/IPv6Net.java b/src/main/java/net/floodlightcontroller/util/IPv6Net.java
deleted file mode 100644
index b6f7d67..0000000
--- a/src/main/java/net/floodlightcontroller/util/IPv6Net.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.IPv6;
-import net.floodlightcontroller.util.serializers.IPv6NetDeserializer;
-import net.floodlightcontroller.util.serializers.IPv6NetSerializer;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-/**
- * The class representing an IPv6 network address.
- */
-@JsonDeserialize(using=IPv6NetDeserializer.class)
-@JsonSerialize(using=IPv6NetSerializer.class)
-public class IPv6Net {
-    private IPv6 address;		// The IPv6 address
-    private short prefixLen;		// The prefix length
-
-    /**
-     * Default constructor.
-     */
-    public IPv6Net() {
-	this.prefixLen = 0;
-    }
-
-    /**
-     * Constructor for a given address and prefix length.
-     *
-     * @param address the address to use.
-     * @param prefixLen the prefix length to use.
-     */
-    public IPv6Net(IPv6 address, short prefixLen) {
-	this.address = address;
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Constructor from a string.
-     *
-     * @param value the value to use.
-     */
-    public IPv6Net(String value) {
-	String[] splits = value.split("/");
-	if (splits.length != 2) {
-	    throw new IllegalArgumentException("Specified IPv6Net address must contain an IPv6 " +
-					       "address and a prefix length separated by '/'");
-	}
-	this.address = new IPv6(splits[0]);
-	this.prefixLen = Short.decode(splits[1]);
-    }
-
-    /**
-     * Get the address value of the IPv6Net address.
-     *
-     * @return the address value of the IPv6Net address.
-     */
-    public IPv6 address() { return address; }
-
-    /**
-     * Set the address value of the IPv6Net address.
-     *
-     * @param address the address to use.
-     */
-    public void setAddress(IPv6 address) {
-	this.address = address;
-    }
-
-    /**
-     * Get the prefix length value of the IPv6Net address.
-     *
-     * @return the prefix length value of the IPv6Net address.
-     */
-    public short prefixLen() { return prefixLen; }
-
-    /**
-     * Set the prefix length value of the IPv6Net address.
-     *
-     * @param prefixLen the prefix length to use.
-     */
-    public void setPrefixLen(short prefixLen) {
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Set the value of the IPv6Net address.
-     *
-     * @param address the address to use.
-     * @param prefixLen the prefix length to use.
-     */
-    public void setValue(IPv6 address, short prefixLen) {
-	this.address = address;
-	this.prefixLen = prefixLen;
-    }
-
-    /**
-     * Convert the IPv6Net value to an "address/prefixLen" string.
-     *
-     * @return the IPv6Net value as an "address/prefixLen" string.
-     */
-    @Override
-    public String toString() {
-	return this.address.toString() + "/" + this.prefixLen;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/Port.java b/src/main/java/net/floodlightcontroller/util/Port.java
deleted file mode 100644
index 41f0d55..0000000
--- a/src/main/java/net/floodlightcontroller/util/Port.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package net.floodlightcontroller.util;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing a network port of a switch.
- */
-
-public class Port {
-    /**
-     * Special port values.
-     *
-     * Those values are taken as-is from the OpenFlow-v1.0.0 specification
-     * (pp 18-19).
-     */
-    public enum PortValues {
-	/* Maximum number of physical switch ports. */
-	PORT_MAX		((short)0xff00),
-
-	/* Fake output "ports". */
-
-	/* Send the packet out the input port. This
-	   virtual port must be explicitly used
-	   in order to send back out of the input
-	   port. */
-	PORT_IN_PORT		((short)0xfff8),
-
-	/* Perform actions in flow table.
-	   NB: This can only be the destination
-	   port for packet-out messages. */
-	PORT_TABLE		((short)0xfff9),
-
-	/* Process with normal L2/L3 switching. */
-	PORT_NORMAL		((short)0xfffa),
-
-	/* All physical ports except input port and
-	   those disabled by STP. */
-	PORT_FLOOD		((short)0xfffb),
-
-	/* All physical ports except input port. */
-	PORT_ALL		((short)0xfffc),
-
-	/* Send to controller. */
-	PORT_CONTROLLER		((short)0xfffd),
-
-	/* Local openflow "port". */
-	PORT_LOCAL		((short)0xfffe),
-
-	/* Not associated with a physical port. */
-	PORT_NONE		((short)0xffff);
-
-	private final short value;	// The value
-
-	/**
-	 * Constructor for a given value.
-	 *
-	 * @param value the value to use for the initialization.
-	 */
-	private PortValues(short value) {
-	    this.value = value;
-	}
-
-	/**
-	 * Get the value as a short integer.
-	 *
-	 * @return the value as a short integer.
-	 */
-	private short value() { return this.value; }
-    }
-
-    private short value;
-
-    /**
-     * Default constructor.
-     */
-    public Port() {
-	this.value = 0;
-    }
-
-    /**
-     * Constructor from another entry.
-     *
-     * @param other the other entry to use.
-     */
-    public Port(Port other) {
-	this.value = other.value();
-    }
-
-    /**
-     * Constructor from a short integer value.
-     *
-     * @param value the value to use.
-     */
-    public Port(short value) {
-	this.value = value;
-    }
-
-    /**
-     * Constructor from a PortValues enum value.
-     *
-     * @param value the value to use.
-     */
-    public Port(PortValues value) {
-	this.value = value.value();
-    }
-
-    /**
-     * Get the value of the port.
-     *
-     * @return the value of the port.
-     */
-    @JsonProperty("value")
-    public short value() { return value; }
-
-    /**
-     * Set the value of the port.
-     *
-     * @param value the value to set.
-     */
-    @JsonProperty("value")
-    public void setValue(short value) {
-	this.value = value;
-    }
-
-    /**
-     * Convert the port value to a string.
-     *
-     * @return the port value as a string.
-     */
-    @Override
-    public String toString() {
-	return Short.toString(this.value);
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/SwitchPort.java b/src/main/java/net/floodlightcontroller/util/SwitchPort.java
deleted file mode 100644
index 027b681..0000000
--- a/src/main/java/net/floodlightcontroller/util/SwitchPort.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package net.floodlightcontroller.util;
-
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.Port;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-/**
- * The class representing a Switch-Port.
- */
-public class SwitchPort {
-    private Dpid dpid;		// The DPID of the switch
-    private Port port;		// The port of the switch
-
-    /**
-     * Default constructor.
-     */
-    public SwitchPort() {
-    }
-
-    /**
-     * Constructor for a given DPID and a port.
-     *
-     * @param dpid the DPID to use.
-     * @param port the port to use.
-     */
-    public SwitchPort(Dpid dpid, Port port) {
-	this.dpid = dpid;
-	this.port = port;
-    }
-
-    /**
-     * Get the DPID value of the Switch-Port.
-     *
-     * @return the DPID value of the Switch-Port.
-     */
-    @JsonProperty("dpid")
-    public Dpid dpid() { return dpid; }
-
-    /**
-     * Set the DPID value of the Switch-Port.
-     *
-     * @param dpid the DPID to use.
-     */
-    @JsonProperty("dpid")
-    public void setDpid(Dpid dpid) {
-	this.dpid = dpid;
-    }
-
-    /**
-     * Get the port value of the Switch-Port.
-     *
-     * @return the port value of the Switch-Port.
-     */
-    @JsonProperty("port")
-    public Port port() { return port; }
-
-    /**
-     * Set the port value of the Switch-Port.
-     *
-     * @param port the port to use.
-     */
-    @JsonProperty("port")
-    public void setPort(Port port) {
-	this.port = port;
-    }
-
-    /**
-     * Set the DPID and port values of the Switch-Port.
-     *
-     * @param dpid the DPID to use.
-     * @param port the port to use.
-     */
-    public void setValue(Dpid dpid, Port port) {
-	this.dpid = dpid;
-	this.port = port;
-    }
-
-    /**
-     * Convert the Switch-Port value to a string.
-     *
-     * The string has the following form:
-     *  01:02:03:04:05:06:07:08/1234
-     *
-     * @return the Switch-Port value as a string.
-     */
-    @Override
-    public String toString() {
-	return this.dpid.toString() + "/" + this.port;
-    }
-}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java
index 9297f56..5bb88c1 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Dpid;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
index 06fab62..951ba90 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Dpid;
 
 /**
  * Serialize a DPID as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java
index e6481d5..494746d 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
index 4b6583c..e5b09b7 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
 
 /**
  * Serialize a Flow Entry ID as a hexadecimal string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java
index a7f53d4..d2a895d 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowId;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
index 6f1a6f6..634e09b 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowId;
 
 /**
  * Serialize a Flow ID as a hexadecimal string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java
index 275f9f0..4ca1266 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.IPv4;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java
index 3c36870..dc4c0f4 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.IPv4Net;
+import net.onrc.onos.ofcontroller.util.IPv4Net;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
index 5c5e1d0..83b4e54 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.IPv4Net;
+import net.onrc.onos.ofcontroller.util.IPv4Net;
 
 /**
  * Serialize an IPv4Net address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
index ba7d825..ac0be13 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.IPv4;
 
 /**
  * Serialize an IPv4 address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java
index 818de30..973e47c 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.IPv6;
+import net.onrc.onos.ofcontroller.util.IPv6;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java
index 375dc26..7297249 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java
@@ -10,7 +10,7 @@
 import org.codehaus.jackson.map.JsonDeserializer;
 import org.codehaus.jackson.map.DeserializationContext;
 
-import net.floodlightcontroller.util.IPv6Net;
+import net.onrc.onos.ofcontroller.util.IPv6Net;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
index fc5d262..d0b844e 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.IPv6Net;
+import net.onrc.onos.ofcontroller.util.IPv6Net;
 
 /**
  * Serialize an IPv6Net address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
index 0b08a63..54b565f 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
@@ -7,7 +7,7 @@
 import org.codehaus.jackson.map.JsonSerializer;
 import org.codehaus.jackson.map.SerializerProvider;
 
-import net.floodlightcontroller.util.IPv6;
+import net.onrc.onos.ofcontroller.util.IPv6;
 
 /**
  * Serialize an IPv6 address as a string.