use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match in project openflowplugin by opendaylight.
the class Ipv6NdTargetEntryDeserializerTest method deserializeEntry.
@Test
public void deserializeEntry() throws Exception {
final ByteBuf in = UnpooledByteBufAllocator.DEFAULT.buffer();
final Ipv6Address address = new Ipv6Address("2001:db8::");
writeHeader(in, false);
in.writeBytes(IetfInetUtil.INSTANCE.ipv6AddressBytes(address));
Ipv6Match match = Ipv6Match.class.cast(deserialize(in).getLayer3Match());
assertArrayEquals(IetfInetUtil.INSTANCE.ipv6AddressBytes(address), IetfInetUtil.INSTANCE.ipv6AddressBytes(match.getIpv6NdTarget()));
assertEquals(0, in.readableBytes());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match in project netvirt by opendaylight.
the class AclMatches method addIpV6Match.
private void addIpV6Match(AceIp aceIp) {
setIpv6EtherType();
AceIpv6 aceIpv6 = (AceIpv6) aceIp.getAceIpVersion();
if (aceIpv6.getSourceIpv6Network() != null) {
Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder();
ipv6match.setIpv6Source(aceIpv6.getSourceIpv6Network());
matchBuilder.setLayer3Match(mergeIpv6Match(matchBuilder, ipv6match));
}
if (aceIpv6.getDestinationIpv6Network() != null) {
Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder();
ipv6match.setIpv6Destination(aceIpv6.getDestinationIpv6Network());
matchBuilder.setLayer3Match(mergeIpv6Match(matchBuilder, ipv6match));
}
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match in project openflowplugin by opendaylight.
the class OpenflowpluginTestCommandProvider method createL3IPv6Match.
private static MatchBuilder createL3IPv6Match() {
final MatchBuilder match = new MatchBuilder();
final EthernetMatchBuilder eth = new EthernetMatchBuilder();
final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
ethTypeBuilder.setType(new EtherType(0x86ddL));
eth.setEthernetType(ethTypeBuilder.build());
match.setEthernetMatch(eth.build());
final MacAddress ndsll = new MacAddress("c2:00:54:f5:00:00");
final MacAddress ndtll = new MacAddress("00:0c:29:0e:4c:67");
final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder();
nextheader.setIpv6Exthdr(58);
final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder();
final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L);
ipv6label.setIpv6Flabel(label);
ipv6label.setFlabelMask(new Ipv6FlowLabel(1L));
// icmpv6
final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder();
// match
icmpv6match.setIcmpv6Type((short) 135);
icmpv6match.setIcmpv6Code((short) 0);
match.setIcmpv6Match(icmpv6match.build());
final Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder();
// ipv6match.setIpv6Source(srcip6);
// ipv6match.setIpv6Destination(dstip6);
// ipv6match.setIpv6ExtHeader(nextheader.build());
ipv6match.setIpv6NdSll(ndsll);
ipv6match.setIpv6NdTll(ndtll);
// ipv6match.setIpv6NdTarget(ndtarget);
ipv6match.setIpv6Label(ipv6label.build());
match.setLayer3Match(ipv6match.build());
return match;
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match in project openflowplugin by opendaylight.
the class SalToOfIpv6MatchCase method process.
@Override
public Optional<List<MatchEntry>> process(@Nonnull Ipv6Match source, VersionConvertorData data, ConvertorExecutor convertorExecutor) {
List<MatchEntry> result = new ArrayList<>();
if (source.getIpv6Source() != null) {
Ipv6Prefix ipv6Prefix = source.getIpv6Source();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Src.class);
Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();
Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();
final Integer prefix = IpConversionUtil.extractIpv6Prefix(ipv6Prefix);
boolean hasMask = false;
if (null != prefix) {
ipv6SrcBuilder.setMask(IpConversionUtil.convertIpv6PrefixToByteArray(prefix));
hasMask = true;
}
ipv6SrcBuilder.setIpv6Address(IpConversionUtil.extractIpv6Address(ipv6Prefix));
ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());
matchEntryBuilder.setHasMask(hasMask);
matchEntryBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
result.add(matchEntryBuilder.build());
}
if (source.getIpv6Destination() != null) {
Ipv6Prefix ipv6Prefix = source.getIpv6Destination();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Dst.class);
Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();
Ipv6DstBuilder ipv6DstBuilder = new Ipv6DstBuilder();
final Integer prefix = IpConversionUtil.extractIpv6Prefix(ipv6Prefix);
boolean hasMask = false;
if (null != prefix) {
ipv6DstBuilder.setMask(IpConversionUtil.convertIpv6PrefixToByteArray(prefix));
hasMask = true;
}
ipv6DstBuilder.setIpv6Address(IpConversionUtil.extractIpv6Address(ipv6Prefix));
ipv6DstCaseBuilder.setIpv6Dst(ipv6DstBuilder.build());
matchEntryBuilder.setHasMask(hasMask);
matchEntryBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
result.add(matchEntryBuilder.build());
}
if (source.getIpv6Label() != null) {
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
boolean hasmask = false;
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Flabel.class);
Ipv6FlabelCaseBuilder ipv6FlabelCaseBuilder = new Ipv6FlabelCaseBuilder();
Ipv6FlabelBuilder ipv6FlabelBuilder = new Ipv6FlabelBuilder();
ipv6FlabelBuilder.setIpv6Flabel(source.getIpv6Label().getIpv6Flabel());
if (source.getIpv6Label().getFlabelMask() != null) {
hasmask = true;
ipv6FlabelBuilder.setMask(ByteUtil.unsignedIntToBytes(source.getIpv6Label().getFlabelMask().getValue()));
}
ipv6FlabelCaseBuilder.setIpv6Flabel(ipv6FlabelBuilder.build());
matchEntryBuilder.setMatchEntryValue(ipv6FlabelCaseBuilder.build());
matchEntryBuilder.setHasMask(hasmask);
result.add(matchEntryBuilder.build());
}
if (source.getIpv6NdTarget() != null) {
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setOxmMatchField(Ipv6NdTarget.class);
Ipv6NdTargetCaseBuilder ipv6NdTargetCaseBuilder = new Ipv6NdTargetCaseBuilder();
Ipv6NdTargetBuilder ipv6NdTargetBuilder = new Ipv6NdTargetBuilder();
ipv6NdTargetBuilder.setIpv6Address(source.getIpv6NdTarget());
ipv6NdTargetCaseBuilder.setIpv6NdTarget(ipv6NdTargetBuilder.build());
matchEntryBuilder.setMatchEntryValue(ipv6NdTargetCaseBuilder.build());
result.add(matchEntryBuilder.build());
}
if (source.getIpv6NdSll() != null) {
MacAddress ipv6NdSll = source.getIpv6NdSll();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6NdSll.class);
Ipv6NdSllCaseBuilder ipv6NdSllCaseBuilder = new Ipv6NdSllCaseBuilder();
Ipv6NdSllBuilder ipv6NdSllBuilder = new Ipv6NdSllBuilder();
ipv6NdSllBuilder.setMacAddress(ipv6NdSll);
ipv6NdSllCaseBuilder.setIpv6NdSll(ipv6NdSllBuilder.build());
matchEntryBuilder.setMatchEntryValue(ipv6NdSllCaseBuilder.build());
matchEntryBuilder.setHasMask(false);
result.add(matchEntryBuilder.build());
}
if (source.getIpv6NdTll() != null) {
MacAddress ipv6NdSll = source.getIpv6NdTll();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6NdTll.class);
Ipv6NdTllCaseBuilder ipv6NdTllCaseBuilder = new Ipv6NdTllCaseBuilder();
Ipv6NdTllBuilder ipv6NdTllBuilder = new Ipv6NdTllBuilder();
ipv6NdTllBuilder.setMacAddress(ipv6NdSll);
ipv6NdTllCaseBuilder.setIpv6NdTll(ipv6NdTllBuilder.build());
matchEntryBuilder.setMatchEntryValue(ipv6NdTllCaseBuilder.build());
matchEntryBuilder.setHasMask(false);
result.add(matchEntryBuilder.build());
}
if (source.getIpv6ExtHeader() != null) {
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
boolean hasmask = false;
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Exthdr.class);
Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();
Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();
int bitmap = source.getIpv6ExtHeader().getIpv6Exthdr();
ipv6ExthdrBuilder.setPseudoField(makeIpv6ExthdrFlags(bitmap));
if (source.getIpv6ExtHeader().getIpv6ExthdrMask() != null) {
hasmask = true;
ipv6ExthdrBuilder.setMask(ByteUtil.unsignedShortToBytes(source.getIpv6ExtHeader().getIpv6ExthdrMask()));
}
ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());
matchEntryBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());
matchEntryBuilder.setHasMask(hasmask);
result.add(matchEntryBuilder.build());
}
return Optional.of(result);
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match in project openflowplugin by opendaylight.
the class Ipv6NdSllEntryDeserializer method deserializeEntry.
@Override
public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
processHeader(message);
final MacAddress address = OxmDeserializerHelper.convertMacAddress(message);
if (Objects.isNull(builder.getLayer3Match())) {
builder.setLayer3Match(new Ipv6MatchBuilder().setIpv6NdSll(address).build());
} else if (Ipv6Match.class.isInstance(builder.getLayer3Match()) && Objects.isNull(Ipv6Match.class.cast(builder.getLayer3Match()).getIpv6NdSll())) {
final Ipv6Match match = Ipv6Match.class.cast(builder.getLayer3Match());
builder.setLayer3Match(new Ipv6MatchBuilder(match).setIpv6NdSll(address).build());
} else {
throwErrorOnMalformed(builder, "layer3Match", "ipv6NdSll");
}
}
Aggregations