public NxmHeader getHeaderWithoutHasMask() { if (headerWithoutMask == null) { headerWithoutMask = new NxmHeader(getOxmClassCode(), getNxmFieldCode(), false, getValueLength()); } return headerWithoutMask; }
private Long serializeHeaderToLong(boolean hasMask) { if (hasMask) { return getHeaderWithHasMask().toLong(); } return getHeaderWithoutHasMask().toLong(); }
private static Class<? extends NxmNxReg> resolveReg(long value) { if (value == NiciraMatchCodecs.REG0_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg0.class; } if (value == NiciraMatchCodecs.REG1_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg1.class; } if (value == NiciraMatchCodecs.REG2_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg2.class; } if (value == NiciraMatchCodecs.REG3_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg3.class; } if (value == NiciraMatchCodecs.REG4_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg4.class; } if (value == NiciraMatchCodecs.REG5_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg5.class; } if (value == NiciraMatchCodecs.REG6_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg6.class; } if (value == NiciraMatchCodecs.REG7_CODEC.getHeaderWithoutHasMask().toLong()) { return NxmNxReg7.class; } return null; }
return NiciraMatchCodecs.TUN_ID_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_SHA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_THA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_OP_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_SPA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_TPA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ETH_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ETH_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.NSP_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.NSI_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.NSC1_CODEC.getHeaderWithoutHasMask().toLong();
private static Class<? extends ExtensionKey> resolveRegKey(Class<? extends MatchField> oxmMatchField) { if (NiciraMatchCodecs.REG0_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg0Key.class; } if (NiciraMatchCodecs.REG1_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg1Key.class; } if (NiciraMatchCodecs.REG2_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg2Key.class; } if (NiciraMatchCodecs.REG3_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg3Key.class; } if (NiciraMatchCodecs.REG4_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg4Key.class; } if (NiciraMatchCodecs.REG5_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg5Key.class; } if (NiciraMatchCodecs.REG6_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg6Key.class; } if (NiciraMatchCodecs.REG7_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg7Key.class; } throw new CodecPreconditionException("There is no key for " + oxmMatchField); }
protected MatchEntryBuilder deserializeHeader(ByteBuf message) { MatchEntryBuilder builder = new MatchEntryBuilder(); builder.setOxmClass(getOxmClass()); // skip oxm_class - provided message.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES); builder.setOxmMatchField(getNxmField()); boolean hasMask = (message.readUnsignedByte() & 1) != 0; builder.setHasMask(hasMask); // skip match entry length - not needed message.skipBytes(EncodeConstants.SIZE_OF_BYTE_IN_BYTES); return builder; }
public NxmHeader(long header) { this.headerAsLong = header; this.oxmClass = Ints.checkedCast(extractSub(header, 16, 16)); this.nxmField = Ints.checkedCast(extractSub(header, 7, 9)); this.hasMask = extractSub(header, 1, 8) == 1 ? true : false; this.length = Ints.checkedCast(extractSub(header, 8, 0)); }
protected void serializeHeader(MatchEntry input, ByteBuf outBuffer) { outBuffer.writeInt(serializeHeaderToLong(input.isHasMask()).intValue()); }
@Override public void serialize(MatchEntry input, ByteBuf outBuffer) { serializeHeader(input, outBuffer); EthTypeCaseValue value = (EthTypeCaseValue) input.getMatchEntryValue(); outBuffer.writeShort(value.getEthTypeValues().getValue()); }
@Override public void serialize(MatchEntry input, ByteBuf outBuffer) { serializeHeader(input, outBuffer); ArpOpCaseValue arpOpCase = ((ArpOpCaseValue) input.getMatchEntryValue()); outBuffer.writeShort(arpOpCase.getArpOpValues().getValue()); }
@Override public void serialize(MatchEntry input, ByteBuf outBuffer) { serializeHeader(input, outBuffer); CtZoneCaseValue ctZoneCase = ((CtZoneCaseValue) input.getMatchEntryValue()); outBuffer.writeShort(ctZoneCase.getCtZoneValues().getCtZone()); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message); ArpTpaCaseValueBuilder caseBuilder = new ArpTpaCaseValueBuilder(); caseBuilder.setArpTpaValues(new ArpTpaValuesBuilder().setValue(message.readUnsignedInt()).build()); matchEntriesBuilder.setMatchEntryValue(caseBuilder.build()); return matchEntriesBuilder.build(); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message); TunIpv4SrcCaseValueBuilder caseBuilder = new TunIpv4SrcCaseValueBuilder(); TunIpv4SrcValuesBuilder valuesBuilder = new TunIpv4SrcValuesBuilder(); valuesBuilder.setValue(message.readUnsignedInt()); caseBuilder.setTunIpv4SrcValues(valuesBuilder.build()); matchEntriesBuilder.setMatchEntryValue(caseBuilder.build()); return matchEntriesBuilder.build(); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntryBuilder = deserializeHeader(message); EthTypeCaseValueBuilder caseBuilder = new EthTypeCaseValueBuilder(); EthTypeValuesBuilder valuesBuilder = new EthTypeValuesBuilder(); valuesBuilder.setValue(message.readUnsignedShort()).build(); caseBuilder.setEthTypeValues(valuesBuilder.build()); matchEntryBuilder.setMatchEntryValue(caseBuilder.build()); return matchEntryBuilder.build(); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message); IcmpTypeCaseValueBuilder icmpTypeCaseValueBuilder = new IcmpTypeCaseValueBuilder(); icmpTypeCaseValueBuilder.setIcmpTypeValues(new IcmpTypeValuesBuilder().setValue(message.readUnsignedByte()).build()); matchEntriesBuilder.setMatchEntryValue(icmpTypeCaseValueBuilder.build()); matchEntriesBuilder.setHasMask(false); return matchEntriesBuilder.build(); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message); NsiCaseValueBuilder nsiCaseValueBuilder = new NsiCaseValueBuilder(); nsiCaseValueBuilder.setNsiValues(new NsiValuesBuilder().setNsi(message.readUnsignedByte()).build()); matchEntriesBuilder.setMatchEntryValue(nsiCaseValueBuilder.build()); matchEntriesBuilder.setHasMask(false); return matchEntriesBuilder.build(); }
@Override public MatchEntry deserialize(ByteBuf message) { MatchEntryBuilder matchEntryBuilder = deserializeHeader(message); EncapEthTypeCaseValueBuilder encapEthTypeCaseValueBuilder= new EncapEthTypeCaseValueBuilder(); encapEthTypeCaseValueBuilder.setEncapEthTypeValues(new EncapEthTypeValuesBuilder().setEncapEthType(message.readUnsignedShort()).build()); matchEntryBuilder.setMatchEntryValue(encapEthTypeCaseValueBuilder.build()); matchEntryBuilder.setHasMask(false); return matchEntryBuilder.build(); }
return NiciraMatchCodecs.TUN_ID_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_SHA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_THA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_OP_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_SPA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ARP_TPA_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ETH_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ETH_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.ETH_TYPE_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.TUN_IPV4_SRC_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.NSP_CODEC.getHeaderWithoutHasMask().toLong(); return NiciraMatchCodecs.NSI_CODEC.getHeaderWithoutHasMask().toLong();
private static long resolveReg(Class<? extends NxmNxReg> reg) { if (reg.equals(NxmNxReg0.class)) { return NiciraMatchCodecs.REG0_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg1.class)) { return NiciraMatchCodecs.REG1_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg2.class)) { return NiciraMatchCodecs.REG2_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg3.class)) { return NiciraMatchCodecs.REG3_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg4.class)) { return NiciraMatchCodecs.REG4_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg5.class)) { return NiciraMatchCodecs.REG5_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg6.class)) { return NiciraMatchCodecs.REG6_CODEC.getHeaderWithoutHasMask().toLong(); } if (reg.equals(NxmNxReg7.class)) { return NiciraMatchCodecs.REG7_CODEC.getHeaderWithoutHasMask().toLong(); } throw new CodecPreconditionException("Missing codec for nxm_nx_reg?" + reg); }
public NxmHeader getHeaderWithHasMask() { if (headerWithMask == null) { headerWithMask = new NxmHeader(getOxmClassCode(), getNxmFieldCode(), true, getValueLength()); } return headerWithMask; }