X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2Ftest%2FTestFromSalConversionsUtils.java;h=b6e611bf1155087e4faf965e148443e34692308b;hp=96b8cafdf8ca3ed512c1ab65fedf0e4d3919ba3d;hb=5c53e1eb83bfcbc4da37f995691ca14112dad4d3;hpb=f27f2337e171c9f944de55a3ac6650b3b1ec0af2 diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java index 96b8cafdf8..b6e611bf11 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013-2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -10,8 +10,8 @@ package org.opendaylight.controller.sal.compatibility.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.CRUDP; import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.ETHERNET_ARP; -import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.SCTP; import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.TCP; import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.UDP; @@ -19,16 +19,58 @@ import java.util.ArrayList; import java.util.List; import org.junit.Test; -import org.opendaylight.controller.sal.action.*; +import org.opendaylight.controller.sal.action.Action; +import org.opendaylight.controller.sal.action.Flood; +import org.opendaylight.controller.sal.action.FloodAll; +import org.opendaylight.controller.sal.action.HwPath; +import org.opendaylight.controller.sal.action.Loopback; +import org.opendaylight.controller.sal.action.PopVlan; +import org.opendaylight.controller.sal.action.PushVlan; +import org.opendaylight.controller.sal.action.SetDlDst; +import org.opendaylight.controller.sal.action.SetDlSrc; +import org.opendaylight.controller.sal.action.SetDlType; +import org.opendaylight.controller.sal.action.SetNextHop; +import org.opendaylight.controller.sal.action.SetNwDst; +import org.opendaylight.controller.sal.action.SetNwSrc; +import org.opendaylight.controller.sal.action.SetNwTos; +import org.opendaylight.controller.sal.action.SetTpDst; +import org.opendaylight.controller.sal.action.SetTpSrc; +import org.opendaylight.controller.sal.action.SetVlanCfi; +import org.opendaylight.controller.sal.action.SetVlanId; +import org.opendaylight.controller.sal.action.SetVlanPcp; +import org.opendaylight.controller.sal.action.SwPath; import org.opendaylight.controller.sal.compatibility.MDFlowMapping; import org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils; +import org.opendaylight.controller.sal.core.ConstructionException; +import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.Node.NodeIDType; +import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType; import org.opendaylight.controller.sal.flowprogrammer.Flow; import org.opendaylight.controller.sal.match.Match; import org.opendaylight.controller.sal.match.MatchType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlow; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer4Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch; @@ -42,11 +84,11 @@ import com.google.common.net.InetAddresses; public class TestFromSalConversionsUtils { private enum MtchType { - other, ipv4, ipv6, arp, sctp, tcp, udp + other, untagged, ipv4, ipv6, arp, sctp, tcp, udp } @Test - public void testFromSalConversion() { + public void testFromSalConversion() throws ConstructionException { Flow salFlow = prepareSalFlowCommon(); NodeFlow odNodeFlow = MDFlowMapping.flowAdded(salFlow); @@ -56,6 +98,9 @@ public class TestFromSalConversionsUtils { odNodeFlow = MDFlowMapping.flowAdded(prepareSalMatch(salFlow, MtchType.other)); checkOdMatch(odNodeFlow.getMatch(), MtchType.other); + odNodeFlow = MDFlowMapping.flowAdded(prepareSalMatch(salFlow, MtchType.untagged)); + checkOdMatch(odNodeFlow.getMatch(), MtchType.untagged); + odNodeFlow = MDFlowMapping.flowAdded(prepareSalMatch(salFlow, MtchType.arp)); checkOdMatch(odNodeFlow.getMatch(), MtchType.arp); @@ -123,23 +168,34 @@ public class TestFromSalConversionsUtils { assertNotNull("Ipv6 wasn't found", ipv6Found); break; case other: + assertEquals("Incoming port is wrong.", "openflow:12345:10", match.getInPort().getValue()); assertEquals("Source MAC address is wrong.", "ff:ee:dd:cc:bb:aa", match.getEthernetMatch() .getEthernetSource().getAddress().getValue()); assertEquals("Destinatio MAC address is wrong.", "ff:ee:dd:cc:bb:aa", match.getEthernetMatch() .getEthernetDestination().getAddress().getValue()); + assertEquals("Vlan ID is not present.", Boolean.TRUE, match.getVlanMatch().getVlanId().isVlanIdPresent()); assertEquals("Vlan ID is wrong.", (Integer) 0xfff, match.getVlanMatch().getVlanId().getVlanId().getValue()); assertEquals("Vlan ID priority is wrong.", (short) 0x7, (short) match.getVlanMatch().getVlanPcp() .getValue()); assertEquals("DCSP is wrong.", (short) 0x3f, (short) match.getIpMatch().getIpDscp().getValue()); break; + case untagged: + assertEquals("Source MAC address is wrong.", "ff:ee:dd:cc:bb:aa", match.getEthernetMatch() + .getEthernetSource().getAddress().getValue()); + assertEquals("Destinatio MAC address is wrong.", "ff:ee:dd:cc:bb:aa", match.getEthernetMatch() + .getEthernetDestination().getAddress().getValue()); + assertEquals("Vlan ID is present.", Boolean.FALSE, match.getVlanMatch().getVlanId().isVlanIdPresent()); + assertEquals("Vlan ID is wrong.", Integer.valueOf(0), match.getVlanMatch().getVlanId().getVlanId().getValue()); + assertEquals("DCSP is wrong.", (short) 0x3f, (short) match.getIpMatch().getIpDscp().getValue()); + break; case sctp: boolean sctpFound = false; - assertEquals("Wrong protocol", SCTP, match.getIpMatch().getIpProtocol().byteValue()); + assertEquals("Wrong protocol", CRUDP, match.getIpMatch().getIpProtocol().byteValue()); Layer4Match layer4Match = match.getLayer4Match(); if (layer4Match instanceof SctpMatch) { assertEquals("Sctp source port is incorrect.", 0xffff, (int) ((SctpMatch) layer4Match) .getSctpSourcePort().getValue()); - assertEquals("Sctp dest port is incorrect.", (int) 0xfffe, (int) ((SctpMatch) layer4Match) + assertEquals("Sctp dest port is incorrect.", 0xfffe, (int) ((SctpMatch) layer4Match) .getSctpDestinationPort().getValue()); sctpFound = true; } @@ -150,9 +206,9 @@ public class TestFromSalConversionsUtils { assertEquals("Wrong protocol", TCP, match.getIpMatch().getIpProtocol().byteValue()); layer4Match = match.getLayer4Match(); if (layer4Match instanceof TcpMatch) { - assertEquals("Tcp source port is incorrect.", (int) 0xabcd, (int) ((TcpMatch) layer4Match) + assertEquals("Tcp source port is incorrect.", 0xabcd, (int) ((TcpMatch) layer4Match) .getTcpSourcePort().getValue()); - assertEquals("Tcp dest port is incorrect.", (int) 0xdcba, (int) ((TcpMatch) layer4Match) + assertEquals("Tcp dest port is incorrect.", 0xdcba, (int) ((TcpMatch) layer4Match) .getTcpDestinationPort().getValue()); sctpFound = true; } @@ -163,9 +219,9 @@ public class TestFromSalConversionsUtils { assertEquals("Wrong protocol", UDP, match.getIpMatch().getIpProtocol().byteValue()); layer4Match = match.getLayer4Match(); if (layer4Match instanceof UdpMatch) { - assertEquals("Udp source port is incorrect.", (int) 0xcdef, (int) ((UdpMatch) layer4Match) + assertEquals("Udp source port is incorrect.", 0xcdef, (int) ((UdpMatch) layer4Match) .getUdpSourcePort().getValue()); - assertEquals("Udp dest port is incorrect.", (int) 0xfedc, (int) ((UdpMatch) layer4Match) + assertEquals("Udp dest port is incorrect.", 0xfedc, (int) ((UdpMatch) layer4Match) .getUdpDestinationPort().getValue()); sctpFound = true; } @@ -176,7 +232,7 @@ public class TestFromSalConversionsUtils { } private void checkOdFlow(NodeFlow odNodeFlow) { - assertEquals("Cookie is incorrect.", 9223372036854775807L, odNodeFlow.getCookie().longValue()); + assertEquals("Cookie is incorrect.", 9223372036854775807L, odNodeFlow.getCookie().getValue().longValue()); assertEquals("Hard timeout is incorrect.", 32765, odNodeFlow.getHardTimeout().shortValue()); assertEquals("Iddle timeout is incorrect.", 32766, odNodeFlow.getIdleTimeout().shortValue()); assertEquals("Priority is incorrect.", 32767, odNodeFlow.getPriority().shortValue()); @@ -186,25 +242,25 @@ public class TestFromSalConversionsUtils { private void checkOdActions( List actions) { - checkOdAction(actions, FloodAction.class, false); - checkOdAction(actions, FloodAllAction.class, false); - checkOdAction(actions, HwPathAction.class, false); - checkOdAction(actions, LoopbackAction.class, false); - checkOdAction(actions, PopVlanAction.class, false); - checkOdAction(actions, PushVlanAction.class, true); - checkOdAction(actions, SetDlDstAction.class, true); - checkOdAction(actions, SetDlSrcAction.class, true); - checkOdAction(actions, SetDlTypeAction.class, true); - checkOdAction(actions, SetNwTosAction.class, true); - checkOdAction(actions, SetNwDstAction.class, true); - checkOdAction(actions, SetNwSrcAction.class, true); - checkOdAction(actions, SetNextHopAction.class, true); - checkOdAction(actions, SetTpDstAction.class, true); - checkOdAction(actions, SetTpSrcAction.class, true); - checkOdAction(actions, SetVlanCfiAction.class, true); - checkOdAction(actions, SetVlanIdAction.class, true); - checkOdAction(actions, SetVlanPcpAction.class, true); - checkOdAction(actions, SwPathAction.class, false); + checkOdAction(actions, FloodActionCase.class, false); + checkOdAction(actions, FloodAllActionCase.class, false); + checkOdAction(actions, HwPathActionCase.class, false); + checkOdAction(actions, LoopbackActionCase.class, false); + checkOdAction(actions, PopVlanActionCase.class, false); + checkOdAction(actions, PushVlanActionCase.class, true); + checkOdAction(actions, SetDlDstActionCase.class, true); + checkOdAction(actions, SetDlSrcActionCase.class, true); + checkOdAction(actions, SetDlTypeActionCase.class, true); + checkOdAction(actions, SetNwTosActionCase.class, true); + checkOdAction(actions, SetNwDstActionCase.class, true); + checkOdAction(actions, SetNwSrcActionCase.class, true); + checkOdAction(actions, SetNextHopActionCase.class, true); + checkOdAction(actions, SetTpDstActionCase.class, true); + checkOdAction(actions, SetTpSrcActionCase.class, true); + checkOdAction(actions, SetVlanCfiActionCase.class, true); + checkOdAction(actions, SetVlanIdActionCase.class, true); + checkOdAction(actions, SetVlanPcpActionCase.class, true); + checkOdAction(actions, SwPathActionCase.class, false); } private void checkOdAction( @@ -212,30 +268,30 @@ public class TestFromSalConversionsUtils { boolean b) { int numOfFoundActions = 0; for (org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action action : actions) { - org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action innerAction = action + org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action innerAction = action .getAction(); if (cl.isInstance(innerAction)) { numOfFoundActions++; - if (innerAction instanceof PushVlanAction) { - assertEquals("Wrong value of cfi in PushVlanAction.", (Integer) 1, ((PushVlanAction) innerAction) + if (innerAction instanceof PushVlanActionCase) { + assertEquals("Wrong value of cfi in PushVlanAction.", (Integer) 1, ((PushVlanActionCase) innerAction).getPushVlanAction() .getCfi().getValue()); assertEquals("Wrong value of pcp in PushVlanAction.", (Integer) 7, - ((PushVlanAction) innerAction).getPcp()); + ((PushVlanActionCase) innerAction).getPushVlanAction().getPcp()); assertEquals("Wrong value of tag in PushVlanAction.", (Integer) 0x8100, - ((PushVlanAction) innerAction).getTag()); + ((PushVlanActionCase) innerAction).getPushVlanAction().getTag()); assertEquals("Wrong value of vlad ID in PushVlanAction.", (Integer) 4095, - ((PushVlanAction) innerAction).getVlanId().getValue()); - } else if (innerAction instanceof SetDlDstAction) { - assertEquals("Wrong MAC destination address in SetDlDstAction.", "ff:ee:dd:cc:bb:aa", - ((SetDlDstAction) innerAction).getAddress().getValue()); - } else if (innerAction instanceof SetDlSrcAction) { - assertEquals("Wrong MAC source address in SetDlDstAction.", "ff:ee:dd:cc:bb:aa", - ((SetDlSrcAction) innerAction).getAddress().getValue()); - } else if (innerAction instanceof SetDlTypeAction) { - assertEquals("Wrong data link type in SetDlTypeAction.", (long) 513, - (long) ((SetDlTypeAction) innerAction).getDlType().getValue()); - } else if (innerAction instanceof SetNextHopAction) { - Address address = ((SetNextHopAction) innerAction).getAddress(); + ((PushVlanActionCase) innerAction).getPushVlanAction().getVlanId().getValue()); + } else if (innerAction instanceof SetDlDstActionCase) { + assertEquals("Wrong MAC destination address in SetDlDstAction.", "ff:ee:dd:cc:bb:aa", + ((SetDlDstActionCase) innerAction).getSetDlDstAction().getAddress().getValue()); + } else if (innerAction instanceof SetDlSrcActionCase) { + assertEquals("Wrong MAC source address in SetDlDstAction.", "ff:ee:dd:cc:bb:aa", + ((SetDlSrcActionCase) innerAction).getSetDlSrcAction().getAddress().getValue()); + } else if (innerAction instanceof SetDlTypeActionCase) { + assertEquals("Wrong data link type in SetDlTypeAction.", 513, + (long) ((SetDlTypeActionCase) innerAction).getSetDlTypeAction().getDlType().getValue()); + } else if (innerAction instanceof SetNextHopActionCase) { + Address address = ((SetNextHopActionCase) innerAction).getSetNextHopAction().getAddress(); boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; @@ -243,10 +299,10 @@ public class TestFromSalConversionsUtils { .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); - } else if (innerAction instanceof SetNwTosAction) { - assertEquals("Wrong TOS in SetNwTosAction.", (Integer) 63, ((SetNwTosAction) innerAction).getTos()); - } else if (innerAction instanceof SetNwDstAction) { - Address address = ((SetNwDstAction) innerAction).getAddress(); + } else if (innerAction instanceof SetNwTosActionCase) { + assertEquals("Wrong TOS in SetNwTosAction.", (Integer) 63, ((SetNwTosActionCase) innerAction).getSetNwTosAction().getTos()); + } else if (innerAction instanceof SetNwDstActionCase) { + Address address = ((SetNwDstActionCase) innerAction).getSetNwDstAction().getAddress(); boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; @@ -254,8 +310,8 @@ public class TestFromSalConversionsUtils { .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); - } else if (innerAction instanceof SetNwSrcAction) { - Address address = ((SetNwSrcAction) innerAction).getAddress(); + } else if (innerAction instanceof SetNwSrcActionCase) { + Address address = ((SetNwSrcActionCase) innerAction).getSetNwSrcAction().getAddress(); boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; @@ -263,21 +319,21 @@ public class TestFromSalConversionsUtils { .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); - } else if (innerAction instanceof SetTpDstAction) { + } else if (innerAction instanceof SetTpDstActionCase) { assertEquals("Port number is incorrect in SetTpDstAction.", (Integer) 65534, - ((SetTpDstAction) innerAction).getPort().getValue()); - } else if (innerAction instanceof SetTpSrcAction) { + ((SetTpDstActionCase) innerAction).getSetTpDstAction().getPort().getValue()); + } else if (innerAction instanceof SetTpSrcActionCase) { assertEquals("Port number is incorrect in SetTpSrcAction.", (Integer) 65535, - ((SetTpSrcAction) innerAction).getPort().getValue()); - } else if (innerAction instanceof SetVlanCfiAction) { + ((SetTpSrcActionCase) innerAction).getSetTpSrcAction().getPort().getValue()); + } else if (innerAction instanceof SetVlanCfiActionCase) { assertEquals("Vlan cfi number is incorrect in SetVlanCfiAction.", (Integer) 1, - ((SetVlanCfiAction) innerAction).getVlanCfi().getValue()); - } else if (innerAction instanceof SetVlanIdAction) { + ((SetVlanCfiActionCase) innerAction).getSetVlanCfiAction().getVlanCfi().getValue()); + } else if (innerAction instanceof SetVlanIdActionCase) { assertEquals("Vlan id number is incorrect in SetVlanIdAction.", (Integer) 4095, - ((SetVlanIdAction) innerAction).getVlanId().getValue()); - } else if (innerAction instanceof SetVlanPcpAction) { + ((SetVlanIdActionCase) innerAction).getSetVlanIdAction().getVlanId().getValue()); + } else if (innerAction instanceof SetVlanPcpActionCase) { assertEquals("Vlan pcp number is incorrect in SetVlanPcpAction.", new Short((short) 7), - ((SetVlanPcpAction) innerAction).getVlanPcp().getValue()); + ((SetVlanPcpActionCase) innerAction).getSetVlanPcpAction().getVlanPcp().getValue()); } } } @@ -297,7 +353,7 @@ public class TestFromSalConversionsUtils { return salFlow; } - private Flow prepareSalMatch(Flow salFlow, MtchType mt) { + private Flow prepareSalMatch(Flow salFlow, MtchType mt) throws ConstructionException { Match salMatch = new Match(); switch (mt) { case arp: @@ -318,14 +374,23 @@ public class TestFromSalConversionsUtils { salMatch.setField(MatchType.NW_DST, InetAddresses.forString("2001:0db8:85a3:0000:0000:8a2e:0370:7336")); break; case other: + Node node = new Node(NodeIDType.OPENFLOW, 12345L); + NodeConnector port = new NodeConnector(NodeConnectorIDType.OPENFLOW, Short.valueOf((short)10), node); + salMatch.setField(MatchType.IN_PORT, port); salMatch.setField(MatchType.DL_SRC, new byte[]{(byte )0xff,(byte )0xee,(byte )0xdd,(byte )0xcc,(byte )0xbb,(byte )0xaa}); salMatch.setField(MatchType.DL_DST, new byte[]{(byte )0xff,(byte )0xee,(byte )0xdd,(byte )0xcc,(byte )0xbb,(byte )0xaa}); salMatch.setField(MatchType.DL_VLAN, (short) 0xfff); salMatch.setField(MatchType.DL_VLAN_PR, (byte) 0x7); salMatch.setField(MatchType.NW_TOS, (byte) 0x3f); break; + case untagged: + salMatch.setField(MatchType.DL_SRC, new byte[]{(byte )0xff,(byte )0xee,(byte )0xdd,(byte )0xcc,(byte )0xbb,(byte )0xaa}); + salMatch.setField(MatchType.DL_DST, new byte[]{(byte )0xff,(byte )0xee,(byte )0xdd,(byte )0xcc,(byte )0xbb,(byte )0xaa}); + salMatch.setField(MatchType.DL_VLAN, MatchType.DL_VLAN_NONE); + salMatch.setField(MatchType.NW_TOS, (byte) 0x3f); + break; case sctp: - salMatch.setField(MatchType.NW_PROTO, SCTP); + salMatch.setField(MatchType.NW_PROTO, CRUDP); salMatch.setField(MatchType.TP_SRC, (short) 0xffff); salMatch.setField(MatchType.TP_DST, (short) 0xfffe); break;