if (instructions != null) {\r
for (Instructions instruction : instructions) {\r
Class<? extends Instruction> type = instruction.getType();\r
- if (type.equals(GotoTable.class)) {\r
+ if (type.isAssignableFrom(GotoTable.class)) {\r
final byte GOTO_TABLE_TYPE = 1;\r
final byte GOTO_TABLE_LENGTH = 8;\r
final byte PADDING_IN_GOTO_TABLE = 3;\r
writeTypeAndLength(out, GOTO_TABLE_TYPE, GOTO_TABLE_LENGTH);\r
out.writeByte(instruction.getAugmentation(TableIdInstruction.class).getTableId());\r
ByteBufUtils.padBuffer(PADDING_IN_GOTO_TABLE, out);\r
- } else if (type.equals(WriteMetadata.class)) {\r
+ } else if (type.isAssignableFrom(WriteMetadata.class)) {\r
final byte WRITE_METADATA_TYPE = 2;\r
final byte WRITE_METADATA_LENGTH = 24;\r
final byte PADDING_IN_WRITE_METADATA = 4;\r
MetadataInstruction metadata = instruction.getAugmentation(MetadataInstruction.class);\r
out.writeBytes(metadata.getMetadata());\r
out.writeBytes(metadata.getMetadataMask());\r
- } else if (type.equals(WriteActions.class)) {\r
+ } else if (type.isAssignableFrom(WriteActions.class)) {\r
final byte WRITE_ACTIONS_TYPE = 3;\r
writeActionsInstruction(out, instruction, WRITE_ACTIONS_TYPE);\r
- } else if (type.equals(ApplyActions.class)) {\r
+ } else if (type.isAssignableFrom(ApplyActions.class)) {\r
final byte APPLY_ACTIONS_TYPE = 4;\r
writeActionsInstruction(out, instruction, APPLY_ACTIONS_TYPE);\r
- } else if (type.equals(ClearActions.class)) {\r
+ } else if (type.isAssignableFrom(ClearActions.class)) {\r
final byte CLEAR_ACTIONS_TYPE = 5;\r
final byte CLEAR_ACTIONS_LENGTH = 8;\r
final byte PADDING_IN_CLEAR_ACTIONS = 4;\r
writeTypeAndLength(out, CLEAR_ACTIONS_TYPE, CLEAR_ACTIONS_LENGTH);\r
ByteBufUtils.padBuffer(PADDING_IN_CLEAR_ACTIONS, out);\r
- } else if (type.equals(Meter.class)) {\r
+ } else if (type.isAssignableFrom(Meter.class)) {\r
final byte METER_TYPE = 6;\r
final byte METER_LENGTH = 8;\r
writeTypeAndLength(out, METER_TYPE, METER_LENGTH);\r
out.writeInt(instruction.getAugmentation(MeterIdInstruction.class).getMeterId().intValue());\r
- } else if (type.equals(Experimenter.class)) {\r
+ } else if (type.isAssignableFrom(Experimenter.class)) {\r
final byte EXPERIMENTER_TYPE = 7;\r
final byte EXPERIMENTER_LENGTH = 8;\r
ExperimenterInstruction experimenter = instruction.getAugmentation(ExperimenterInstruction.class);\r
if (instructions != null) {\r
for (Instructions instruction : instructions) {\r
Class<? extends Instruction> type = instruction.getType();\r
- if (type.equals(GotoTable.class)) {\r
+ if (type.isAssignableFrom(GotoTable.class)) {\r
final byte GOTO_TABLE_LENGTH = 8;\r
length += GOTO_TABLE_LENGTH;\r
- } else if (type.equals(WriteMetadata.class)) {\r
+ } else if (type.isAssignableFrom(WriteMetadata.class)) {\r
final byte WRITE_METADATA_LENGTH = 24;\r
length += WRITE_METADATA_LENGTH;\r
- } else if (type.equals(WriteActions.class)) {\r
+ } else if (type.isAssignableFrom(WriteActions.class)) {\r
final byte WRITE_ACTIONS_LENGTH = 8;\r
length += WRITE_ACTIONS_LENGTH + ActionsSerializer.computeLengthOfActions(\r
instruction.getAugmentation(ActionsInstruction.class).getActionsList());\r
- } else if (type.equals(ApplyActions.class)) {\r
+ } else if (type.isAssignableFrom(ApplyActions.class)) {\r
final byte APPLY_ACTIONS_LENGTH = 8;\r
length += APPLY_ACTIONS_LENGTH + ActionsSerializer.computeLengthOfActions(\r
instruction.getAugmentation(ActionsInstruction.class).getActionsList());\r
- } else if (type.equals(ClearActions.class)) {\r
+ } else if (type.isAssignableFrom(ClearActions.class)) {\r
final byte CLEAR_ACTIONS_LENGTH = 8;\r
length += CLEAR_ACTIONS_LENGTH;\r
- } else if (type.equals(Meter.class)) {\r
+ } else if (type.isAssignableFrom(Meter.class)) {\r
final byte METER_LENGTH = 8;\r
length += METER_LENGTH;\r
- } else if (type.equals(Experimenter.class)) {\r
+ } else if (type.isAssignableFrom(Experimenter.class)) {\r
final byte EXPERIMENTER_LENGTH = 8;\r
ExperimenterInstruction experimenter = instruction.getAugmentation(ExperimenterInstruction.class);\r
byte[] data = experimenter.getData();\r
}\r
encodeType(match, out);\r
// Length of ofp_match (excluding padding)\r
- int length = computeMatchLength(match);\r
+ int length = computeMatchLengthInternal(match);\r
out.writeShort(length);\r
encodeMatchEntries(match.getMatchEntries(), out);\r
int paddingRemainder = length % EncodeConstants.PADDING;\r
private static void encodeType(Match match, ByteBuf out) {\r
final byte STANDARD_MATCH_TYPE_CODE = 0;\r
final byte OXM_MATCH_TYPE_CODE = 1;\r
- if (match.getType().equals(StandardMatchType.class)) {\r
+ if (match.getType().isAssignableFrom(StandardMatchType.class)) {\r
out.writeShort(STANDARD_MATCH_TYPE_CODE);\r
- } else if (match.getType().equals(OxmMatchType.class)) {\r
+ } else if (match.getType().isAssignableFrom(OxmMatchType.class)) {\r
out.writeShort(OXM_MATCH_TYPE_CODE);\r
}\r
}\r
final int NXM1_CLASS_CODE = 0x0001;\r
final int OPENFLOW_BASIC_CLASS_CODE = 0x8000;\r
final int EXPERIMENTER_CLASS_CODE = 0xFFFF;\r
- if (Nxm0Class.class.equals(clazz)) {\r
+ if (clazz.isAssignableFrom(Nxm0Class.class)) {\r
out.writeShort(NXM0_CLASS_CODE);\r
- } else if (Nxm1Class.class.equals(clazz)) {\r
+ } else if (clazz.isAssignableFrom(Nxm1Class.class)) {\r
out.writeShort(NXM1_CLASS_CODE);\r
- } else if (OpenflowBasicClass.class.equals(clazz)) {\r
+ } else if (clazz.isAssignableFrom(OpenflowBasicClass.class)) {\r
out.writeShort(OPENFLOW_BASIC_CLASS_CODE);\r
- } else if (ExperimenterClass.class.equals(clazz)) {\r
+ } else if (clazz.isAssignableFrom(ExperimenterClass.class)) {\r
out.writeShort(EXPERIMENTER_CLASS_CODE);\r
}\r
}\r
private static void encodeRest(MatchEntries entry, ByteBuf out) {\r
int fieldValue = 0;\r
Class<? extends MatchField> field = entry.getOxmMatchField();\r
- if (field.equals(InPort.class)) {\r
+ if (field.isAssignableFrom(InPort.class)) {\r
fieldValue = 0;\r
writeOxmFieldAndLength(out, fieldValue, Integer.SIZE / Byte.SIZE);\r
out.writeInt(entry.getAugmentation(PortNumberMatchEntry.class).getPortNumber().getValue().intValue());\r
- } else if (field.equals(InPhyPort.class)) {\r
+ } else if (field.isAssignableFrom(InPhyPort.class)) {\r
fieldValue = 1;\r
writeOxmFieldAndLength(out, fieldValue, Integer.SIZE / Byte.SIZE);\r
out.writeInt(entry.getAugmentation(PortNumberMatchEntry.class).getPortNumber().getValue().intValue());\r
- } else if (field.equals(Metadata.class)) {\r
+ } else if (field.isAssignableFrom(Metadata.class)) {\r
fieldValue = 2;\r
writeMetadataRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(EthDst.class)) {\r
+ } else if (field.isAssignableFrom(EthDst.class)) {\r
fieldValue = 3;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(EthSrc.class)) {\r
+ } else if (field.isAssignableFrom(EthSrc.class)) {\r
fieldValue = 4;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(EthType.class)) {\r
+ } else if (field.isAssignableFrom(EthType.class)) {\r
fieldValue = 5;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(EthTypeMatchEntry.class).getEthType().getValue().shortValue());\r
- } else if (field.equals(VlanVid.class)) {\r
+ } else if (field.isAssignableFrom(VlanVid.class)) {\r
fieldValue = 6;\r
fieldValue = fieldValue << 1;\r
VlanVidMatchEntry vlanVid = entry.getAugmentation(VlanVidMatchEntry.class);\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(vlanVidValue);\r
}\r
- } else if (field.equals(VlanPcp.class)) {\r
+ } else if (field.isAssignableFrom(VlanPcp.class)) {\r
fieldValue = 7;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(VlanPcpMatchEntry.class).getVlanPcp().byteValue());\r
- } else if (field.equals(IpDscp.class)) {\r
+ } else if (field.isAssignableFrom(IpDscp.class)) {\r
fieldValue = 8;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(DscpMatchEntry.class).getDscp().getValue());\r
- } else if (field.equals(IpEcn.class)) {\r
+ } else if (field.isAssignableFrom(IpEcn.class)) {\r
fieldValue = 9;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(EcnMatchEntry.class).getEcn());\r
- } else if (field.equals(IpProto.class)) {\r
+ } else if (field.isAssignableFrom(IpProto.class)) {\r
fieldValue = 10;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(ProtocolNumberMatchEntry.class).getProtocolNumber());\r
- } else if (field.equals(Ipv4Src.class)) {\r
+ } else if (field.isAssignableFrom(Ipv4Src.class)) {\r
fieldValue = 11;\r
writeIpv4AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv4Dst.class)) {\r
+ } else if (field.isAssignableFrom(Ipv4Dst.class)) {\r
fieldValue = 12;\r
writeIpv4AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(TcpSrc.class)) {\r
+ } else if (field.isAssignableFrom(TcpSrc.class)) {\r
fieldValue = 13;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(TcpDst.class)) {\r
+ } else if (field.isAssignableFrom(TcpDst.class)) {\r
fieldValue = 14;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(UdpSrc.class)) {\r
+ } else if (field.isAssignableFrom(UdpSrc.class)) {\r
fieldValue = 15;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(UdpDst.class)) {\r
+ } else if (field.isAssignableFrom(UdpDst.class)) {\r
fieldValue = 16;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(SctpSrc.class)) {\r
+ } else if (field.isAssignableFrom(SctpSrc.class)) {\r
fieldValue = 17;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(SctpDst.class)) {\r
+ } else if (field.isAssignableFrom(SctpDst.class)) {\r
fieldValue = 18;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(PortMatchEntry.class).getPort().getValue().intValue());\r
- } else if (field.equals(Icmpv4Type.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv4Type.class)) {\r
fieldValue = 19;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(Icmpv4TypeMatchEntry.class).getIcmpv4Type());\r
- } else if (field.equals(Icmpv4Code.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv4Code.class)) {\r
fieldValue = 20;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(Icmpv4CodeMatchEntry.class).getIcmpv4Code());\r
- } else if (field.equals(ArpOp.class)) {\r
+ } else if (field.isAssignableFrom(ArpOp.class)) {\r
fieldValue = 21;\r
writeOxmFieldAndLength(out, fieldValue, Short.SIZE / Byte.SIZE);\r
out.writeShort(entry.getAugmentation(OpCodeMatchEntry.class).getOpCode());\r
- } else if (field.equals(ArpSpa.class)) {\r
+ } else if (field.isAssignableFrom(ArpSpa.class)) {\r
fieldValue = 22;\r
writeIpv4AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(ArpTpa.class)) {\r
+ } else if (field.isAssignableFrom(ArpTpa.class)) {\r
fieldValue = 23;\r
writeIpv4AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(ArpSha.class)) {\r
+ } else if (field.isAssignableFrom(ArpSha.class)) {\r
fieldValue = 24;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(ArpTha.class)) {\r
+ } else if (field.isAssignableFrom(ArpTha.class)) {\r
fieldValue = 25;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6Src.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Src.class)) {\r
fieldValue = 26;\r
writeIpv6AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6Dst.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Dst.class)) {\r
fieldValue = 27;\r
writeIpv6AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6Flabel.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Flabel.class)) {\r
fieldValue = 28;\r
fieldValue = fieldValue << 1;\r
if (entry.isHasMask()) {\r
LOGGER.warn("Ipv6Flabel match entry: possible wrong length written (wrote 4 - maybe must be 3)");\r
out.writeInt(entry.getAugmentation(Ipv6FlabelMatchEntry.class).getIpv6Flabel().getValue().intValue());\r
}\r
- } else if (field.equals(Icmpv6Type.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv6Type.class)) {\r
fieldValue = 29;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(Icmpv6TypeMatchEntry.class).getIcmpv6Type());\r
- } else if (field.equals(Icmpv6Code.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv6Code.class)) {\r
fieldValue = 30;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(Icmpv6CodeMatchEntry.class).getIcmpv6Code());\r
- } else if (field.equals(Ipv6NdTarget.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdTarget.class)) {\r
fieldValue = 31;\r
writeIpv6AddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6NdSll.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdSll.class)) {\r
fieldValue = 32;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6NdTll.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdTll.class)) {\r
fieldValue = 33;\r
writeMacAddressRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(MplsLabel.class)) {\r
+ } else if (field.isAssignableFrom(MplsLabel.class)) {\r
fieldValue = 34;\r
writeOxmFieldAndLength(out, fieldValue, Integer.SIZE / Byte.SIZE);\r
LOGGER.warn("MplsLabel match entry: possible wrong length written (wrote 4 - maybe must be 3)");\r
out.writeInt(entry.getAugmentation(MplsLabelMatchEntry.class).getMplsLabel().intValue());\r
- } else if (field.equals(MplsTc.class)) {\r
+ } else if (field.isAssignableFrom(MplsTc.class)) {\r
fieldValue = 35;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeByte(entry.getAugmentation(TcMatchEntry.class).getTc());\r
- } else if (field.equals(MplsBos.class)) {\r
+ } else if (field.isAssignableFrom(MplsBos.class)) {\r
fieldValue = 36;\r
writeOxmFieldAndLength(out, fieldValue, Byte.SIZE / Byte.SIZE);\r
out.writeBoolean(entry.getAugmentation(BosMatchEntry.class).isBos().booleanValue());\r
- } else if (field.equals(PbbIsid.class)) {\r
+ } else if (field.isAssignableFrom(PbbIsid.class)) {\r
fieldValue = 37;\r
fieldValue = fieldValue << 1;\r
if (entry.isHasMask()) {\r
LOGGER.warn("PbbIsid match entry: possible wrong length written (wrote 4 - maybe must be 3)");\r
out.writeInt(entry.getAugmentation(IsidMatchEntry.class).getIsid().intValue());\r
}\r
- } else if (field.equals(TunnelId.class)) {\r
+ } else if (field.isAssignableFrom(TunnelId.class)) {\r
fieldValue = 38;\r
writeMetadataRelatedEntry(entry, out, fieldValue);\r
- } else if (field.equals(Ipv6Exthdr.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Exthdr.class)) {\r
fieldValue = 39;\r
fieldValue = fieldValue << 1;\r
PseudoField pseudoField = entry.getAugmentation(PseudoFieldMatchEntry.class).getPseudoField();\r
}\r
\r
private static void writeIpv4Address(MatchEntries entry, ByteBuf out) {\r
- String[] addressGroups = entry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue().split(".");\r
+ String[] addressGroups = entry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue().split("\\.");\r
for (int i = 0; i < addressGroups.length; i++) {\r
out.writeByte(Integer.parseInt(addressGroups[i]));\r
}\r
* @param match\r
* @return length of ofp_match (excluding padding)\r
*/\r
- public static int computeMatchLength(Match match) {\r
+ public static int computeMatchLengthInternal(Match match) {\r
final byte MATCH_TYPE_AND_LENGTH_SIZE = 4;\r
int length = 0;\r
if (match != null) {\r
}\r
return length;\r
}\r
+ \r
+ /**\r
+ * Computes length of match (in bytes)\r
+ * @param match\r
+ * @return length of ofp_match (excluding padding)\r
+ */\r
+ public static int computeMatchLength(Match match) {\r
+ int length = computeMatchLengthInternal(match);\r
+ int paddingRemainder = length % EncodeConstants.PADDING;\r
+ if (paddingRemainder != 0) {\r
+ length += EncodeConstants.PADDING - paddingRemainder;\r
+ }\r
+ return length;\r
+ }\r
\r
/**\r
* Computes length of MatchEntries (in bytes)\r
for (MatchEntries entry : matchEntries) {\r
length += MATCH_ENTRY_HEADER_LENGTH;\r
Class<? extends MatchField> field = entry.getOxmMatchField();\r
- if (field.equals(InPort.class)) {\r
+ if (field.isAssignableFrom(InPort.class)) {\r
length += Integer.SIZE / Byte.SIZE;\r
- } else if (field.equals(InPhyPort.class)) {\r
+ } else if (field.isAssignableFrom(InPhyPort.class)) {\r
length += Integer.SIZE / Byte.SIZE;\r
- } else if (field.equals(Metadata.class)) {\r
+ } else if (field.isAssignableFrom(Metadata.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(EthDst.class)) {\r
+ } else if (field.isAssignableFrom(EthDst.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(EthSrc.class)) {\r
+ } else if (field.isAssignableFrom(EthSrc.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(EthType.class)) {\r
+ } else if (field.isAssignableFrom(EthType.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(VlanVid.class)) {\r
+ } else if (field.isAssignableFrom(VlanVid.class)) {\r
length += computePossibleMaskEntryLength(entry, Short.SIZE / Byte.SIZE);\r
- } else if (field.equals(VlanPcp.class)) {\r
+ } else if (field.isAssignableFrom(VlanPcp.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(IpDscp.class)) {\r
+ } else if (field.isAssignableFrom(IpDscp.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(IpEcn.class)) {\r
+ } else if (field.isAssignableFrom(IpEcn.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(IpProto.class)) {\r
+ } else if (field.isAssignableFrom(IpProto.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(Ipv4Src.class)) {\r
+ } else if (field.isAssignableFrom(Ipv4Src.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(Ipv4Dst.class)) {\r
+ } else if (field.isAssignableFrom(Ipv4Dst.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(TcpSrc.class)) {\r
+ } else if (field.isAssignableFrom(TcpSrc.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(TcpDst.class)) {\r
+ } else if (field.isAssignableFrom(TcpDst.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(UdpSrc.class)) {\r
+ } else if (field.isAssignableFrom(UdpSrc.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(UdpDst.class)) {\r
+ } else if (field.isAssignableFrom(UdpDst.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(SctpSrc.class)) {\r
+ } else if (field.isAssignableFrom(SctpSrc.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(SctpDst.class)) {\r
+ } else if (field.isAssignableFrom(SctpDst.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(Icmpv4Type.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv4Type.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(Icmpv4Code.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv4Code.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(ArpOp.class)) {\r
+ } else if (field.isAssignableFrom(ArpOp.class)) {\r
length += Short.SIZE / Byte.SIZE;\r
- } else if (field.equals(ArpSpa.class)) {\r
+ } else if (field.isAssignableFrom(ArpSpa.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(ArpTpa.class)) {\r
+ } else if (field.isAssignableFrom(ArpTpa.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(ArpSha.class)) {\r
+ } else if (field.isAssignableFrom(ArpSha.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(ArpTha.class)) {\r
+ } else if (field.isAssignableFrom(ArpTha.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(Ipv6Src.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Src.class)) {\r
length += computePossibleMaskEntryLength(entry, 8 * (Short.SIZE / Byte.SIZE));\r
- } else if (field.equals(Ipv6Dst.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Dst.class)) {\r
length += computePossibleMaskEntryLength(entry, 8 * (Short.SIZE / Byte.SIZE));\r
- } else if (field.equals(Ipv6Flabel.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Flabel.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(Icmpv6Type.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv6Type.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(Icmpv6Code.class)) {\r
+ } else if (field.isAssignableFrom(Icmpv6Code.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(Ipv6NdTarget.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdTarget.class)) {\r
length += computePossibleMaskEntryLength(entry, 8 * (Short.SIZE / Byte.SIZE));\r
- } else if (field.equals(Ipv6NdSll.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdSll.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(Ipv6NdTll.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6NdTll.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(MplsLabel.class)) {\r
+ } else if (field.isAssignableFrom(MplsLabel.class)) {\r
length += Integer.SIZE / Byte.SIZE;\r
- } else if (field.equals(MplsTc.class)) {\r
+ } else if (field.isAssignableFrom(MplsTc.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(MplsBos.class)) {\r
+ } else if (field.isAssignableFrom(MplsBos.class)) {\r
length += Byte.SIZE / Byte.SIZE;\r
- } else if (field.equals(PbbIsid.class)) {\r
+ } else if (field.isAssignableFrom(PbbIsid.class)) {\r
length += computePossibleMaskEntryLength(entry, Integer.SIZE / Byte.SIZE);\r
- } else if (field.equals(TunnelId.class)) {\r
+ } else if (field.isAssignableFrom(TunnelId.class)) {\r
length += computePossibleMaskEntryLength(entry, Long.SIZE / Byte.SIZE);\r
- } else if (field.equals(Ipv6Exthdr.class)) {\r
+ } else if (field.isAssignableFrom(Ipv6Exthdr.class)) {\r
length += computePossibleMaskEntryLength(entry, Short.SIZE / Byte.SIZE);\r
}\r
}\r