* Implement the missing OpenFlow 1.0 matching conditions

* Code cleanup: reorder the implementation of the matching
  conditions so the order everywhere is always same and matches the
  order of listing those conditions in the OpenFlow-1.0 spec.
diff --git a/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowEntryTest.java b/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowEntryTest.java
index eba7447..717d688 100644
--- a/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowEntryTest.java
+++ b/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowEntryTest.java
@@ -177,22 +177,6 @@
 	
 	/**
 	 * Desc:
-	 *  Test method for set and get MatchEthernetFrameType.
-	 * Condition:
-	 *  N/A
-	 * Expect:
-	 * 1. Should set MatchEthernetFrameType.
-	 * 2. Should get MatchEthernetFrameType.
-	 */
-	@Test
-	public void testSetGetMatchEthernetFrameType() {
-		Short matchEthernetFrameType = 1;
-		flowEntry.setMatchEthernetFrameType(matchEthernetFrameType);
-		assertEquals(flowEntry.getMatchEthernetFrameType(), matchEthernetFrameType);
-	}
-	
-	/**
-	 * Desc:
 	 *  Test method for set and get MatchSrcMac.
 	 * Condition:
 	 *  N/A
@@ -222,6 +206,54 @@
 		flowEntry.setMatchDstMac(matchDstMac);
 		assertEquals(flowEntry.getMatchDstMac(), matchDstMac);
 	}	
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchEthernetFrameType.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchEthernetFrameType.
+	 * 2. Should get MatchEthernetFrameType.
+	 */
+	@Test
+	public void testSetGetMatchEthernetFrameType() {
+		Short matchEthernetFrameType = 1;
+		flowEntry.setMatchEthernetFrameType(matchEthernetFrameType);
+		assertEquals(flowEntry.getMatchEthernetFrameType(), matchEthernetFrameType);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchVlanId.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchVlanId.
+	 * 2. Should get MatchVlanId.
+	 */
+	@Test
+	public void testSetGetMatchVlanId() {
+		Short matchVlanId = 10;
+		flowEntry.setMatchVlanId(matchVlanId);
+		assertEquals(flowEntry.getMatchVlanId(), matchVlanId);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchVlanPriority.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchVlanPriority.
+	 * 2. Should get MatchVlanPriority.
+	 */
+	@Test
+	public void testSetGetMatchVlanPriority() {
+		Byte matchVlanPriority = 10;
+		flowEntry.setMatchVlanPriority(matchVlanPriority);
+		assertEquals(flowEntry.getMatchVlanPriority(), matchVlanPriority);
+	}
 	
 	/**
 	 * Desc:
@@ -254,6 +286,70 @@
 		flowEntry.setMatchDstIPv4Net(dstIPv4Net);
 		assertEquals(flowEntry.getMatchDstIPv4Net(), dstIPv4Net);
 	}	
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchIpProto.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchIpProto.
+	 * 2. Should get MatchIpProto.
+	 */
+	@Test
+	public void testSetGetMatchIpProto() {
+		Byte matchIpProto = 20;
+		flowEntry.setMatchIpProto(matchIpProto);
+		assertEquals(flowEntry.getMatchIpProto(), matchIpProto);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchIpToS.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchIpToS.
+	 * 2. Should get MatchIpToS.
+	 */
+	@Test
+	public void testSetGetMatchIpToS() {
+		Byte matchIpToS = 20;
+		flowEntry.setMatchIpToS(matchIpToS);
+		assertEquals(flowEntry.getMatchIpToS(), matchIpToS);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchSrcTcpUdpPort.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchSrcTcpUdpPort.
+	 * 2. Should get MatchSrcTcpUdpPort.
+	 */
+	@Test
+	public void testSetGetMatchSrcTcpUdpPort() {
+		Short srcTcpUdpPort = (short)65535;
+		flowEntry.setMatchSrcTcpUdpPort(srcTcpUdpPort);
+		assertEquals(flowEntry.getMatchSrcTcpUdpPort(), srcTcpUdpPort);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchDstTcpUdpPort.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchDstTcpUdpPort.
+	 * 2. Should get MatchDstTcpUdpPort.
+	 */
+	@Test
+	public void testSetGetMatchDstTcpUdpPort() {
+		Short dstTcpUdpPort = (short)65535;
+		flowEntry.setMatchDstTcpUdpPort(dstTcpUdpPort);
+		assertEquals(flowEntry.getMatchDstTcpUdpPort(), dstTcpUdpPort);
+	}
 	
 	/**
 	 * Desc:
diff --git a/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowPathTest.java b/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowPathTest.java
index 9765af8..85072e3 100644
--- a/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowPathTest.java
+++ b/src/test/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjectsIFlowPathTest.java
@@ -241,24 +241,6 @@
 	
 	/**
 	 * Desc:
-	 *  Test method for set and get MatchEthernetFrameType
-	 * Condition:
-	 *  N/A
-	 * Expect:
-	 * 1. Should set MatchEthernetFrameType.
-	 * 2. Should get MatchEthernetFrameType.
-	 */
-	@Test
-	public void testSetGetMatchEthernetFrameType() {
-		String flowId = "xx";
-		Short matchEthernetFrameTypeShort = 1;
-		flowPath.setFlowId(flowId);
-		flowPath.setMatchEthernetFrameType(matchEthernetFrameTypeShort);
-		assertEquals(flowPath.getMatchEthernetFrameType(), matchEthernetFrameTypeShort);
-	}
-	
-	/**
-	 * Desc:
 	 *  Test method for set and get MatchSrcMac
 	 * Condition:
 	 *  N/A
@@ -292,15 +274,69 @@
 		flowPath.setMatchDstMac(matchDstMac);
 		assertEquals(flowPath.getMatchDstMac(), matchDstMac);
 	}
-	
+
 	/**
 	 * Desc:
-	 *  Test method for set and get SrcIPv4Net.
+	 *  Test method for set and get MatchEthernetFrameType
 	 * Condition:
 	 *  N/A
 	 * Expect:
-	 * 1. Should set SrcIPv4Net.
-	 * 2. Should get SrcIPv4Net.
+	 * 1. Should set MatchEthernetFrameType.
+	 * 2. Should get MatchEthernetFrameType.
+	 */
+	@Test
+	public void testSetGetMatchEthernetFrameType() {
+		String flowId = "xx";
+		Short matchEthernetFrameType = 1;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchEthernetFrameType(matchEthernetFrameType);
+		assertEquals(flowPath.getMatchEthernetFrameType(), matchEthernetFrameType);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchVlanId
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchVlanId.
+	 * 2. Should get MatchVlanId.
+	 */
+	@Test
+	public void testSetGetMatchVlanId() {
+		String flowId = "xx";
+		Short matchVlanId = 10;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchVlanId(matchVlanId);
+		assertEquals(flowPath.getMatchVlanId(), matchVlanId);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchVlanPriority
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchVlanPriority.
+	 * 2. Should get MatchVlanPriority.
+	 */
+	@Test
+	public void testSetGetMatchVlanPriority() {
+		String flowId = "xx";
+		Byte matchVlanPriority = 20;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchVlanPriority(matchVlanPriority);
+		assertEquals(flowPath.getMatchVlanPriority(), matchVlanPriority);
+	}
+	
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchSrcIPv4Net.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchSrcIPv4Net.
+	 * 2. Should get MatchSrcIPv4Net.
 	 */
 	@Test
 	public void testSetGetMatchSrcIPv4Net() {
@@ -313,12 +349,12 @@
 	
 	/**
 	 * Desc:
-	 *  Test method for set and get DstIPv4Net.
+	 *  Test method for set and get MatchDstIPv4Net.
 	 * Condition:
 	 *  N/A
 	 * Expect:
-	 * 1. Should set DstIPv4Net.
-	 * 2. Should get DstIPv4Net.
+	 * 1. Should set MatchDstIPv4Net.
+	 * 2. Should get MatchDstIPv4Net.
 	 */
 	@Test
 	public void testSetGetMatchDstIPv4Net() {
@@ -328,7 +364,79 @@
 		flowPath.setMatchDstIPv4Net(ip);
 		assertEquals(flowPath.getMatchDstIPv4Net(), ip);
 	}
-	
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchIpProto
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchIpProto.
+	 * 2. Should get MatchIpProto.
+	 */
+	@Test
+	public void testSetGetMatchIpProto() {
+		String flowId = "xx";
+		Byte matchIpProto = 20;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchIpProto(matchIpProto);
+		assertEquals(flowPath.getMatchIpProto(), matchIpProto);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchIpToS
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchIpToS.
+	 * 2. Should get MatchIpToS.
+	 */
+	@Test
+	public void testSetGetMatchIpToS() {
+		String flowId = "xx";
+		Byte matchIpToS = 20;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchIpToS(matchIpToS);
+		assertEquals(flowPath.getMatchIpToS(), matchIpToS);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchSrcTcpUdpPort.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchSrcTcpUdpPort.
+	 * 2. Should get MatchSrcTcpUdpPort.
+	 */
+	@Test
+	public void testSetGetMatchSrcTcpUdpPort() {
+		String flowId = "xx";
+		Short srcTcpUdpPort = (short)65535;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchSrcTcpUdpPort(srcTcpUdpPort);
+		assertEquals(flowPath.getMatchSrcTcpUdpPort(), srcTcpUdpPort);
+	}
+
+	/**
+	 * Desc:
+	 *  Test method for set and get MatchDstTcpUdpPort.
+	 * Condition:
+	 *  N/A
+	 * Expect:
+	 * 1. Should set MatchDstTcpUdpPort.
+	 * 2. Should get MatchDstTcpUdpPort.
+	 */
+	@Test
+	public void testSetGetMatchDstTcpUdpPort() {
+		String flowId = "xx";
+		Short dstTcpUdpPort = (short)65535;
+		flowPath.setFlowId(flowId);
+		flowPath.setMatchDstTcpUdpPort(dstTcpUdpPort);
+		assertEquals(flowPath.getMatchDstTcpUdpPort(), dstTcpUdpPort);
+	}
+
 	/**
 	 * Desc:
 	 *  Test method for set and get UserState.
diff --git a/src/test/java/net/onrc/onos/ofcontroller/core/internal/TestableGraphDBOperation.java b/src/test/java/net/onrc/onos/ofcontroller/core/internal/TestableGraphDBOperation.java
index 658aaaf..fb5227f 100644
--- a/src/test/java/net/onrc/onos/ofcontroller/core/internal/TestableGraphDBOperation.java
+++ b/src/test/java/net/onrc/onos/ofcontroller/core/internal/TestableGraphDBOperation.java
@@ -416,16 +416,28 @@
 	public static class TestFlowPath implements IFlowPath {
 		private String state,type,flowId,installerId,srcSw,dstSw;
 		private String dataPathSummary,userState;
-		private String matchSrcMac,matchDstMac,matchSrcIpaddr,matchDstIpaddr;
-		private Short srcPort,dstPort,matchEthernetFrameType;
+		private Short srcPort,dstPort;
+		private String matchSrcMac,matchDstMac;
+		private Short matchEthernetFrameType;
+		private Short matchVlanId;
+		private Byte matchVlanPriority;
+		private String matchSrcIpaddr,matchDstIpaddr;
+		private Byte matchIpProto, matchIpToS;
+		private Short matchSrcTcpUdpPort, matchDstTcpUdpPort;
 		
 		private List<IFlowEntry> entries;
 		private List<ISwitchObject> switches;
 
 		private String stateToUpdate,typeToUpdate,flowIdToUpdate,installerIdToUpdate,srcSwToUpdate,dstSwToUpdate;
 		private String dataPathSummaryToUpdate,userStateToUpdate;
-		private String matchSrcMacToUpdate,matchDstMacToUpdate,matchSrcIpaddrToUpdate,matchDstIpaddrToUpdate;
-		private Short srcPortToUpdate,dstPortToUpdate,matchEthernetFrameTypeToUpdate;
+		private Short srcPortToUpdate,dstPortToUpdate;
+		private String matchSrcMacToUpdate,matchDstMacToUpdate;
+		private Short matchEthernetFrameTypeToUpdate;
+		private Short matchVlanIdToUpdate;
+		private Byte matchVlanPriorityToUpdate;
+		private String matchSrcIpaddrToUpdate,matchDstIpaddrToUpdate;
+		private Byte matchIpProtoToUpdate, matchIpToSToUpdate;
+		private Short matchSrcTcpUdpPortToUpdate, matchDstTcpUdpPortToUpdate;
 
 		private List<IFlowEntry> flowsToAdd;
 		private List<IFlowEntry> flowsToRemove;
@@ -457,13 +469,19 @@
 			if(dstSwToUpdate != null) { dstSw = dstSwToUpdate; }
 			if(dataPathSummaryToUpdate != null) { dataPathSummary = dataPathSummaryToUpdate; }
 			if(userStateToUpdate != null) { userState = userStateToUpdate; }
-			if(matchSrcMacToUpdate != null) { matchSrcMac = matchSrcMacToUpdate; }
-			if(matchDstMacToUpdate != null) { matchDstMac = matchDstMacToUpdate; }
-			if(matchSrcIpaddrToUpdate != null) { matchSrcIpaddr = matchSrcIpaddrToUpdate; }
-			if(matchDstIpaddrToUpdate != null) { matchDstIpaddr = matchDstIpaddrToUpdate; }
 			if(srcPortToUpdate != null) { srcPort = srcPortToUpdate; }
 			if(dstPortToUpdate != null) { dstPort = dstPortToUpdate; }
+			if(matchSrcMacToUpdate != null) { matchSrcMac = matchSrcMacToUpdate; }
+			if(matchDstMacToUpdate != null) { matchDstMac = matchDstMacToUpdate; }
 			if(matchEthernetFrameTypeToUpdate != null) { matchEthernetFrameType = matchEthernetFrameTypeToUpdate; }
+			if(matchVlanIdToUpdate != null) { matchVlanId = matchVlanIdToUpdate; }
+			if(matchVlanPriorityToUpdate != null) { matchVlanPriority = matchVlanPriorityToUpdate; }
+			if(matchSrcIpaddrToUpdate != null) { matchSrcIpaddr = matchSrcIpaddrToUpdate; }
+			if(matchDstIpaddrToUpdate != null) { matchDstIpaddr = matchDstIpaddrToUpdate; }
+			if(matchIpProtoToUpdate != null) { matchIpProto = matchIpProtoToUpdate; }
+			if(matchIpToSToUpdate != null) { matchIpToS = matchIpToSToUpdate; }
+			if(matchSrcTcpUdpPortToUpdate != null) { matchSrcTcpUdpPort = matchSrcTcpUdpPortToUpdate; }
+			if(matchDstTcpUdpPortToUpdate != null) { matchDstTcpUdpPort = matchDstTcpUdpPortToUpdate; }
 		}
 		
 		public void rollback() {
@@ -476,8 +494,14 @@
 			
 			stateToUpdate = typeToUpdate = flowIdToUpdate = installerIdToUpdate = null;
 			srcSwToUpdate = dstSwToUpdate = dataPathSummaryToUpdate = userStateToUpdate = null;
-			matchSrcMacToUpdate = matchDstMacToUpdate = matchSrcIpaddrToUpdate = matchDstIpaddrToUpdate = null;
-			srcPortToUpdate = dstPortToUpdate = matchEthernetFrameTypeToUpdate = null;
+			srcPortToUpdate = dstPortToUpdate = null;
+			matchSrcMacToUpdate = matchDstMacToUpdate = null;
+			matchEthernetFrameTypeToUpdate = null;
+			matchVlanIdToUpdate = null;
+			matchVlanPriorityToUpdate = null;
+			matchSrcIpaddrToUpdate = matchDstIpaddrToUpdate = null;
+			matchIpProtoToUpdate = matchIpToSToUpdate = null;
+			matchSrcTcpUdpPortToUpdate = matchDstTcpUdpPortToUpdate = null;
 		}
 		
 		// Setter methods for test
@@ -489,13 +513,19 @@
 		public void setDstSwForTest(String dstSw) { this.dstSw = dstSw; }
 		public void setDataPathSummaryForTest(String dataPathSummary) { this.dataPathSummary = dataPathSummary; }
 		public void setUserStateForTest(String userState) { this.userState = userState; }
-		public void setMatchSrcMacForTest(String matchSrcMac) { this.matchSrcMac = matchSrcMac; }
-		public void setMatchDstMacForTest(String matchDstMac) { this.matchDstMac = matchDstMac; }
-		public void setMatchSrcIpaddrForTest(String matchSrcIpaddr) { this.matchSrcIpaddr = matchSrcIpaddr; }
-		public void setMatchDstIpaddrForTest(String matchDstIpaddr) { this.matchDstIpaddr = matchDstIpaddr; }
 		public void setSrcPortForTest(Short srcPort) { this.srcPort = srcPort; }
 		public void setDstPortForTest(Short dstPort) { this.dstPort = dstPort; }
+		public void setMatchSrcMacForTest(String matchSrcMac) { this.matchSrcMac = matchSrcMac; }
+		public void setMatchDstMacForTest(String matchDstMac) { this.matchDstMac = matchDstMac; }
 		public void setMatchEthernetFrameTypeForTest(Short matchEthernetFrameType) { this.matchEthernetFrameType = matchEthernetFrameType; }
+		public void setMatchVlanIdForTest(Short matchVlanId) { this.matchVlanId = matchVlanId; }
+		public void setMatchVlanPriorityForTest(Byte matchVlanPriority) { this.matchVlanPriority = matchVlanPriority; }
+		public void setMatchSrcIpaddrForTest(String matchSrcIpaddr) { this.matchSrcIpaddr = matchSrcIpaddr; }
+		public void setMatchDstIpaddrForTest(String matchDstIpaddr) { this.matchDstIpaddr = matchDstIpaddr; }
+		public void setMatchIpProtoForTest(Byte matchIpProto) { this.matchIpProto = matchIpProto; }
+		public void setMatchIpToSForTest(Byte matchIpToS) { this.matchIpToS = matchIpToS; }
+		public void setMatchSrcTcpUdpPortForTest(Short matchSrcTcpUdpPort) { this.matchSrcTcpUdpPort = matchSrcTcpUdpPort; }
+		public void setMatchDstTcpUdpPortForTest(Short matchDstTcpUdpPort) { this.matchDstTcpUdpPort = matchDstTcpUdpPort; }
 		public void addFlowEntryForTest(IFlowEntry entry) { entries.add(entry); }
 		public void addSwitchForTest(ISwitchObject sw) { switches.add(sw); }
 
@@ -577,13 +607,6 @@
 		}
 
 		@Override
-		public Short getMatchEthernetFrameType() { return matchEthernetFrameType; }
-
-		@Override
-		public void setMatchEthernetFrameType(Short matchEthernetFrameType) {
-			matchEthernetFrameTypeToUpdate = matchEthernetFrameType; }
-
-		@Override
 		public String getMatchSrcMac() { return matchSrcMac; }
 
 		@Override
@@ -596,6 +619,27 @@
 		public void setMatchDstMac(String matchDstMac) { matchDstMacToUpdate = matchDstMac; }
 
 		@Override
+		public Short getMatchEthernetFrameType() { return matchEthernetFrameType; }
+
+		@Override
+		public void setMatchEthernetFrameType(Short matchEthernetFrameType) {
+			matchEthernetFrameTypeToUpdate = matchEthernetFrameType; }
+
+		@Override
+		public Short getMatchVlanId() { return matchVlanId; }
+
+		@Override
+		public void setMatchVlanId(Short matchVlanId) {
+			matchVlanIdToUpdate = matchVlanId; }
+
+		@Override
+		public Byte getMatchVlanPriority() { return matchVlanPriority; }
+
+		@Override
+		public void setMatchVlanPriority(Byte matchVlanPriority) {
+			matchVlanPriorityToUpdate = matchVlanPriority; }
+
+		@Override
 		public String getMatchSrcIPv4Net() { return matchSrcIpaddr; }
 
 		@Override
@@ -610,6 +654,34 @@
 			matchDstIpaddrToUpdate = matchDstIPv4Net; }
 
 		@Override
+		public Byte getMatchIpProto() { return matchIpProto; }
+
+		@Override
+		public void setMatchIpProto(Byte matchIpProto) {
+			matchIpProtoToUpdate = matchIpProto; }
+
+		@Override
+		public Byte getMatchIpToS() { return matchIpToS; }
+
+		@Override
+		public void setMatchIpToS(Byte matchIpToS) {
+			matchIpToSToUpdate = matchIpToS; }
+
+		@Override
+		public Short getMatchSrcTcpUdpPort() { return matchSrcTcpUdpPort; }
+
+		@Override
+		public void setMatchSrcTcpUdpPort(Short matchSrcTcpUdpPort) {
+			matchSrcTcpUdpPortToUpdate = matchSrcTcpUdpPort; }
+
+		@Override
+		public Short getMatchDstTcpUdpPort() { return matchDstTcpUdpPort; }
+
+		@Override
+		public void setMatchDstTcpUdpPort(Short matchDstTcpUdpPort) {
+			matchDstTcpUdpPortToUpdate = matchDstTcpUdpPort; }
+
+		@Override
 		public Iterable<ISwitchObject> getSwitches() { return switches; }
 
 		@Override
@@ -621,8 +693,15 @@
 
 	public static class TestFlowEntry implements IFlowEntry {
 		private String state,type,entryId,dpid,userState,switchState,errorStateType,errorStateCode;
-		private String matchSrcMac,matchDstMac,matchSrcIpaddr,matchDstIpaddr;
-		private Short matchInPort,matchEtherFrameType,actionOutput;
+		private Short matchInPort;
+		private String matchSrcMac,matchDstMac;
+		private Short matchEtherFrameType;
+		private Short matchVlanId;
+		private Byte matchVlanPriority;
+		private String matchSrcIpaddr,matchDstIpaddr;
+		private Byte matchIpProto, matchIpToS;
+		private Short matchSrcTcpUdpPort, matchDstTcpUdpPort;
+		private Short actionOutput;
 		
 		private IFlowPath flowPath;
 		private ISwitchObject sw;
@@ -630,9 +709,15 @@
 	
 		private String stateToUpdate,typeToUpdate,entryIdToUpdate,dpidToUpdate,
 			userStateToUpdate,switchStateToUpdate,errorStateTypeToUpdate,errorStateCodeToUpdate;
-		private String matchSrcMacToUpdate,matchDstMacToUpdate,matchSrcIpaddrToUpdate,matchDstIpaddrToUpdate;
-	
-		private Short matchInPortToUpdate,matchEtherFrameTypeToUpdate,actionOutputToUpdate;
+		private Short matchInPortToUpdate;
+		private String matchSrcMacToUpdate,matchDstMacToUpdate;
+		private Short matchEtherFrameTypeToUpdate;
+		private Short matchVlanIdToUpdate;
+		private Byte matchVlanPriorityToUpdate;
+		private String matchSrcIpaddrToUpdate,matchDstIpaddrToUpdate;
+		private Byte matchIpProtoToUpdate, matchIpToSToUpdate;
+		private Short matchSrcTcpUdpPortToUpdate, matchDstTcpUdpPortToUpdate;
+		private Short actionOutputToUpdate;
 	
 		private IFlowPath flowPathToUpdate;
 		private ISwitchObject swToUpdate;
@@ -653,12 +738,18 @@
 			if(switchStateToUpdate != null) { switchState = switchStateToUpdate; }
 			if(errorStateTypeToUpdate != null) { errorStateType = errorStateTypeToUpdate; }
 			if(errorStateCodeToUpdate != null) { errorStateCode = errorStateCodeToUpdate; }
+			if(matchInPortToUpdate != null) { matchInPort = matchInPortToUpdate; }
 			if(matchSrcMacToUpdate != null) { matchSrcMac = matchSrcMacToUpdate; }
 			if(matchDstMacToUpdate != null) { matchDstMac = matchDstMacToUpdate; }
+			if(matchEtherFrameTypeToUpdate != null) { matchEtherFrameType = matchEtherFrameTypeToUpdate; }
+			if(matchVlanIdToUpdate != null) { matchVlanId = matchVlanIdToUpdate; }
+			if(matchVlanPriorityToUpdate != null) { matchVlanPriority = matchVlanPriorityToUpdate; }
 			if(matchSrcIpaddrToUpdate != null) { matchSrcIpaddr = matchSrcIpaddrToUpdate; }
 			if(matchDstIpaddrToUpdate != null) { matchDstIpaddr = matchDstIpaddrToUpdate; }
-			if(matchInPortToUpdate != null) { matchInPort = matchInPortToUpdate; }
-			if(matchEtherFrameTypeToUpdate != null) { matchEtherFrameType = matchEtherFrameTypeToUpdate; }
+			if(matchIpProtoToUpdate != null) { matchIpProto = matchIpProtoToUpdate; }
+			if(matchIpToSToUpdate != null) { matchIpToS = matchIpToSToUpdate; }
+			if(matchSrcTcpUdpPortToUpdate != null) { matchSrcTcpUdpPort = matchSrcTcpUdpPortToUpdate; }
+			if(matchDstTcpUdpPortToUpdate != null) { matchDstTcpUdpPort = matchDstTcpUdpPortToUpdate; }
 			if(actionOutputToUpdate != null) { actionOutput = actionOutputToUpdate; }
 			
 			if(flowPathToUpdate != null) { flowPath = flowPathToUpdate; }
@@ -676,8 +767,15 @@
 		public void clearUncommitedData() {
 			stateToUpdate = typeToUpdate = entryIdToUpdate = dpidToUpdate = null;
 			userStateToUpdate = switchStateToUpdate = errorStateTypeToUpdate = errorStateCodeToUpdate = null;
-			matchSrcMacToUpdate = matchDstMacToUpdate = matchSrcIpaddrToUpdate = matchDstIpaddrToUpdate = null;
-			matchInPortToUpdate = matchEtherFrameTypeToUpdate = actionOutputToUpdate = null;
+			matchInPortToUpdate = null;
+			matchSrcMacToUpdate = matchDstMacToUpdate = null;
+			matchEtherFrameTypeToUpdate = null;
+			matchVlanIdToUpdate = null;
+			matchVlanPriorityToUpdate = null;
+			matchSrcIpaddrToUpdate = matchDstIpaddrToUpdate = null;
+			matchIpProtoToUpdate = matchIpToSToUpdate = null;
+			matchSrcTcpUdpPortToUpdate = matchDstTcpUdpPortToUpdate = null;
+			actionOutputToUpdate = null;
 			flowPathToUpdate = null;
 			swToUpdate = null;
 			inportToUpdate = outportToUpdate = null;
@@ -692,12 +790,18 @@
 		public void setSwitchStateForTest(String switchState) { this.switchState = switchState; }
 		public void setErrorStateTypeForTest(String errorStateType) { this.errorStateType = errorStateType; }
 		public void setErrorStateCodeForTest(String errorStateCode) { this.errorStateCode = errorStateCode; }
+		public void setMatchInPortForTest(Short matchInPort) { this.matchInPort = matchInPort; }
 		public void setMatchSrcMacForTest(String matchSrcMac) { this.matchSrcMac = matchSrcMac; }
 		public void setMatchDstMacForTest(String matchDstMac) { this.matchDstMac = matchDstMac; }
+		public void setMatchEtherFrameTypeForTest(Short matchEtherFrameType) { this.matchEtherFrameType = matchEtherFrameType; }
+		public void setMatchVlanIdForTest(Short matchVlanId) { this.matchVlanId = matchVlanId; }
+		public void setMatchVlanPriorityForTest(Byte matchVlanPriority) { this.matchVlanPriority = matchVlanPriority; }
 		public void setMatchSrcIpaddrForTest(String matchSrcIpaddr) { this.matchSrcIpaddr = matchSrcIpaddr; }
 		public void setMatchDstIpaddrForTest(String matchDstIpaddr) { this.matchDstIpaddr = matchDstIpaddr; }
-		public void setMatchInPortForTest(Short matchInPort) { this.matchInPort = matchInPort; }
-		public void setMatchEtherFrameTypeForTest(Short matchEtherFrameType) { this.matchEtherFrameType = matchEtherFrameType; }
+		public void setMatchIpProtoForTest(Byte matchIpProto) { this.matchIpProto = matchIpProto; }
+		public void setMatchIpToSForTest(Byte matchIpToS) { this.matchIpToS = matchIpToS; }
+		public void setMatchSrcTcpUdpPortForTest(Short matchSrcTcpUdpPort) { this.matchSrcTcpUdpPort = matchSrcTcpUdpPort; }
+		public void setMatchDstTcpUdpPortForTest(Short matchDstTcpUdpPort) { this.matchDstTcpUdpPort = matchDstTcpUdpPort; }
 		public void setActionOutputForTest(Short actionOutput) { this.actionOutput = actionOutput; }
 		public void setFlowPathForTest(IFlowPath flowPath) { this.flowPath = flowPath; }
 		public void setSwitchForTest(ISwitchObject sw) { this.sw = sw; }
@@ -765,12 +869,6 @@
 		public void setMatchInPort(Short matchInPort) { matchInPortToUpdate = matchInPort; }
 	
 		@Override
-		public Short getMatchEthernetFrameType() {return matchEtherFrameType; }
-	
-		@Override
-		public void setMatchEthernetFrameType(Short matchEthernetFrameType) { matchEtherFrameTypeToUpdate = matchEthernetFrameType; }
-		
-		@Override
 		public String getMatchSrcMac() { return matchSrcMac; }
 	
 		@Override
@@ -781,8 +879,26 @@
 	
 		@Override
 		public void setMatchDstMac(String matchDstMac) { matchDstMacToUpdate = matchDstMac; }
+
+		@Override
+		public Short getMatchEthernetFrameType() {return matchEtherFrameType; }
 	
 		@Override
+		public void setMatchEthernetFrameType(Short matchEthernetFrameType) { matchEtherFrameTypeToUpdate = matchEthernetFrameType; }
+
+		@Override
+		public Short getMatchVlanId() {return matchVlanId; }
+	
+		@Override
+		public void setMatchVlanId(Short matchVlanId) { matchVlanId = matchVlanId; }
+
+		@Override
+		public Byte getMatchVlanPriority() {return matchVlanPriority; }
+	
+		@Override
+		public void setMatchVlanPriority(Byte matchVlanPriority) { matchVlanPriority = matchVlanPriority; }
+		
+		@Override
 		public String getMatchSrcIPv4Net() { return matchSrcIpaddr; }
 	
 		@Override
@@ -793,6 +909,30 @@
 	
 		@Override
 		public void setMatchDstIPv4Net(String matchDstIPv4Net) { matchDstIpaddrToUpdate = matchDstIPv4Net; }
+
+		@Override
+		public Byte getMatchIpProto() {return matchIpProto; }
+	
+		@Override
+		public void setMatchIpProto(Byte matchIpProto) { matchIpProto = matchIpProto; }
+
+		@Override
+		public Byte getMatchIpToS() {return matchIpToS; }
+	
+		@Override
+		public void setMatchIpToS(Byte matchIpToS) { matchIpToS = matchIpToS; }
+
+		@Override
+		public Short getMatchSrcTcpUdpPort() {return matchSrcTcpUdpPort; }
+	
+		@Override
+		public void setMatchSrcTcpUdpPort(Short matchSrcTcpUdpPort) { matchSrcTcpUdpPortToUpdate = matchSrcTcpUdpPort; }
+
+		@Override
+		public Short getMatchDstTcpUdpPort() {return matchDstTcpUdpPort; }
+	
+		@Override
+		public void setMatchDstTcpUdpPort(Short matchDstTcpUdpPort) { matchDstTcpUdpPortToUpdate = matchDstTcpUdpPort; }
 	
 		@Override
 		public Short getActionOutput() { return actionOutput; }
diff --git a/src/test/java/net/onrc/onos/ofcontroller/flowmanager/FlowManagerTest.java b/src/test/java/net/onrc/onos/ofcontroller/flowmanager/FlowManagerTest.java
index fb1d708..750bfba 100644
--- a/src/test/java/net/onrc/onos/ofcontroller/flowmanager/FlowManagerTest.java
+++ b/src/test/java/net/onrc/onos/ofcontroller/flowmanager/FlowManagerTest.java
@@ -1140,11 +1140,17 @@
 		expect(iFlowEntry.getUserState()).andReturn("FE_USER_ADD");
 		iFlowEntry.setSwitchState("FE_SWITCH_UPDATED");
 		expect(iFlowEntry.getMatchInPort()).andReturn(new Short((short) 1));
-		expect(iFlowEntry.getMatchEthernetFrameType()).andReturn(new Short((short)0x0800));
-		expect(iFlowEntry.getMatchSrcIPv4Net()).andReturn("192.168.0.1");
-		expect(iFlowEntry.getMatchDstIPv4Net()).andReturn("192.168.0.2");
 		expect(iFlowEntry.getMatchSrcMac()).andReturn("01:23:45:67:89:01");
 		expect(iFlowEntry.getMatchDstMac()).andReturn("01:23:45:67:89:02");
+		expect(iFlowEntry.getMatchEthernetFrameType()).andReturn(new Short((short)0x0800));
+		expect(iFlowEntry.getMatchVlanId()).andReturn(new Short((short)0x1234));
+		expect(iFlowEntry.getMatchVlanPriority()).andReturn(new Byte((byte)0x10));
+		expect(iFlowEntry.getMatchSrcIPv4Net()).andReturn("192.168.0.1");
+		expect(iFlowEntry.getMatchDstIPv4Net()).andReturn("192.168.0.2");
+		expect(iFlowEntry.getMatchIpProto()).andReturn(new Byte((byte)0x20));
+		expect(iFlowEntry.getMatchIpToS()).andReturn(new Byte((byte)0x3));
+		expect(iFlowEntry.getMatchSrcTcpUdpPort()).andReturn(new Short((short)40000));
+		expect(iFlowEntry.getMatchDstTcpUdpPort()).andReturn(new Short((short)80));
 		expect(iFlowEntry.getActionOutput()).andReturn(new Short((short) 2));
 		expect(floodlightProvider.getOFMessageFactory()).andReturn(basicFactory);
 		expect(basicFactory.getMessage(OFType.FLOW_MOD)).andReturn(new OFFlowMod());