use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder in project openflowplugin by opendaylight.
the class SalToOfSetVlanIdActionCase method process.
@Nonnull
@Override
public Optional<Action> process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setOxmMatchField(VlanVid.class);
matchBuilder.setHasMask(false);
VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
vlanVidBuilder.setCfiBit(true);
SetVlanIdAction setvlanidaction = source.getSetVlanIdAction();
vlanVidBuilder.setVlanVid(setvlanidaction.getVlanId().getValue());
vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
matchBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
List<MatchEntry> entries = new ArrayList<>();
entries.add(matchBuilder.build());
SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
setFieldBuilder.setMatchEntry(entries);
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
setFieldCaseBuilder.setSetFieldAction(setFieldBuilder.build());
return Optional.of(new ActionBuilder().setActionChoice(setFieldCaseBuilder.build()).build());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder in project openflowplugin by opendaylight.
the class MatchResponseConvertorTest method toOfVlanVid.
private static MatchEntry toOfVlanVid(final int vid) {
MatchEntryBuilder builder = new MatchEntryBuilder();
boolean cfi = true;
Integer vidValue = vid;
byte[] mask = null;
builder.setOxmClass(OpenflowBasicClass.class);
builder.setOxmMatchField(VlanVid.class);
if (vid == 0) {
// Match untagged frame.
cfi = false;
} else if (vid < 0) {
// Match packet with VLAN tag regardless of its value.
mask = new byte[] { 0x10, 0x00 };
vidValue = 0;
}
VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
vlanVidBuilder.setCfiBit(cfi);
vlanVidBuilder.setVlanVid(vidValue);
boolean hasMask = mask != null;
if (hasMask) {
vlanVidBuilder.setMask(mask);
}
VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
builder.setHasMask(hasMask);
builder.setMatchEntryValue(vlanVidCaseBuilder.build());
return builder.build();
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder in project openflowplugin by opendaylight.
the class SalToOfStripVlanActionCase method process.
@Nonnull
@Override
public Optional<Action> process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setOxmMatchField(VlanVid.class);
matchBuilder.setHasMask(false);
VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();
VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();
vlanVidBuilder.setCfiBit(true);
vlanVidBuilder.setVlanVid(0x0000);
vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());
matchBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());
matchBuilder.setHasMask(false);
List<MatchEntry> entries = new ArrayList<>();
entries.add(matchBuilder.build());
SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
setFieldBuilder.setMatchEntry(entries);
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
setFieldCaseBuilder.setSetFieldAction(setFieldBuilder.build());
return Optional.of(new ActionBuilder().setActionChoice(setFieldCaseBuilder.build()).build());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder in project openflowplugin by opendaylight.
the class OxmVlanVidDeserializer method addVlanVidValue.
private static void addVlanVidValue(ByteBuf input, MatchEntryBuilder builder) {
final VlanVidCaseBuilder caseBuilder = new VlanVidCaseBuilder();
VlanVidBuilder vlanBuilder = new VlanVidBuilder();
int vidEntryValue = input.readUnsignedShort();
// cfi is 13-th bit
vlanBuilder.setCfiBit((vidEntryValue & 1 << 12) != 0);
// value without 13-th bit
vlanBuilder.setVlanVid(vidEntryValue & (1 << 12) - 1);
if (builder.isHasMask()) {
vlanBuilder.setMask(OxmDeserializerHelper.convertMask(input, EncodeConstants.SIZE_OF_SHORT_IN_BYTES));
}
caseBuilder.setVlanVid(vlanBuilder.build());
builder.setMatchEntryValue(caseBuilder.build());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder in project openflowplugin by opendaylight.
the class OF10ActionsSerializerTest method test.
/**
* Testing correct serialization of actions (OF v1.0).
*/
@Test
public void test() {
final List<Action> actions = new ArrayList<>();
OutputActionCaseBuilder caseBuilder = new OutputActionCaseBuilder();
OutputActionBuilder outputBuilder = new OutputActionBuilder();
outputBuilder.setPort(new PortNumber(42L));
outputBuilder.setMaxLength(32);
caseBuilder.setOutputAction(outputBuilder.build());
ActionBuilder actionBuilder = new ActionBuilder();
actionBuilder.setActionChoice(caseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetVlanVidCaseBuilder vlanVidCaseBuilder = new SetVlanVidCaseBuilder();
SetVlanVidActionBuilder vlanVidBuilder = new SetVlanVidActionBuilder();
vlanVidBuilder.setVlanVid(15);
vlanVidCaseBuilder.setSetVlanVidAction(vlanVidBuilder.build());
actionBuilder.setActionChoice(vlanVidCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetVlanPcpCaseBuilder vlanPcpCaseBuilder = new SetVlanPcpCaseBuilder();
SetVlanPcpActionBuilder vlanPcpBuilder = new SetVlanPcpActionBuilder();
vlanPcpBuilder.setVlanPcp((short) 16);
vlanPcpCaseBuilder.setSetVlanPcpAction(vlanPcpBuilder.build());
actionBuilder.setActionChoice(vlanPcpCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
actionBuilder.setActionChoice(new StripVlanCaseBuilder().build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetDlSrcCaseBuilder dlSrcCaseBuilder = new SetDlSrcCaseBuilder();
SetDlSrcActionBuilder dlSrcBuilder = new SetDlSrcActionBuilder();
dlSrcBuilder.setDlSrcAddress(new MacAddress("00:00:00:02:03:04"));
dlSrcCaseBuilder.setSetDlSrcAction(dlSrcBuilder.build());
actionBuilder.setActionChoice(dlSrcCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetDlDstCaseBuilder dlDstCaseBuilder = new SetDlDstCaseBuilder();
SetDlDstActionBuilder dlDstBuilder = new SetDlDstActionBuilder();
dlDstBuilder.setDlDstAddress(new MacAddress("00:00:00:01:02:03"));
dlDstCaseBuilder.setSetDlDstAction(dlDstBuilder.build());
actionBuilder.setActionChoice(dlDstCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetNwSrcCaseBuilder nwSrcCaseBuilder = new SetNwSrcCaseBuilder();
SetNwSrcActionBuilder nwSrcBuilder = new SetNwSrcActionBuilder();
nwSrcBuilder.setIpAddress(new Ipv4Address("10.0.0.1"));
nwSrcCaseBuilder.setSetNwSrcAction(nwSrcBuilder.build());
actionBuilder.setActionChoice(nwSrcCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetNwDstCaseBuilder nwDstCaseBuilder = new SetNwDstCaseBuilder();
SetNwDstActionBuilder nwDstBuilder = new SetNwDstActionBuilder();
nwDstBuilder.setIpAddress(new Ipv4Address("10.0.0.3"));
nwDstCaseBuilder.setSetNwDstAction(nwDstBuilder.build());
actionBuilder.setActionChoice(nwDstCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetNwTosCaseBuilder tosCaseBuilder = new SetNwTosCaseBuilder();
SetNwTosActionBuilder tosBuilder = new SetNwTosActionBuilder();
tosBuilder.setNwTos((short) 204);
tosCaseBuilder.setSetNwTosAction(tosBuilder.build());
actionBuilder.setActionChoice(tosCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetTpSrcCaseBuilder tpSrcCaseBuilder = new SetTpSrcCaseBuilder();
SetTpSrcActionBuilder tpSrcBuilder = new SetTpSrcActionBuilder();
tpSrcBuilder.setPort(new PortNumber(6653L));
tpSrcCaseBuilder.setSetTpSrcAction(tpSrcBuilder.build());
actionBuilder.setActionChoice(tpSrcCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
SetTpDstCaseBuilder tpDstCaseBuilder = new SetTpDstCaseBuilder();
SetTpDstActionBuilder tpDstBuilder = new SetTpDstActionBuilder();
tpDstBuilder.setPort(new PortNumber(6633L));
tpDstCaseBuilder.setSetTpDstAction(tpDstBuilder.build());
actionBuilder.setActionChoice(tpDstCaseBuilder.build());
actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
EnqueueCaseBuilder enqueueCaseBuilder = new EnqueueCaseBuilder();
EnqueueActionBuilder enqueueBuilder = new EnqueueActionBuilder();
enqueueBuilder.setPort(new PortNumber(6613L));
enqueueBuilder.setQueueId(new QueueId(400L));
enqueueCaseBuilder.setEnqueueAction(enqueueBuilder.build());
actionBuilder.setActionChoice(enqueueCaseBuilder.build());
actions.add(actionBuilder.build());
ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
ListSerializer.serializeList(actions, TypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF10_VERSION_ID), registry, out);
Assert.assertEquals("Wrong action type", 0, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong port", 42, out.readUnsignedShort());
Assert.assertEquals("Wrong max-length", 32, out.readUnsignedShort());
Assert.assertEquals("Wrong action type", 1, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong vlan-vid", 15, out.readUnsignedShort());
out.skipBytes(2);
Assert.assertEquals("Wrong action type", 2, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong vlan-pcp", 16, out.readUnsignedByte());
out.skipBytes(3);
Assert.assertEquals("Wrong action type", 3, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
out.skipBytes(4);
Assert.assertEquals("Wrong action type", 4, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 16, out.readUnsignedShort());
byte[] data = new byte[EncodeConstants.MAC_ADDRESS_LENGTH];
out.readBytes(data);
Assert.assertArrayEquals("Wrong dl-address", ByteBufUtils.macAddressToBytes("00:00:00:02:03:04"), data);
out.skipBytes(6);
Assert.assertEquals("Wrong action type", 5, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 16, out.readUnsignedShort());
data = new byte[EncodeConstants.MAC_ADDRESS_LENGTH];
out.readBytes(data);
Assert.assertArrayEquals("Wrong dl-address", ByteBufUtils.macAddressToBytes("00:00:00:01:02:03"), data);
out.skipBytes(6);
Assert.assertEquals("Wrong action type", 6, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong ip-address(1)", 10, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(2)", 0, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(3)", 0, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(4)", 1, out.readUnsignedByte());
Assert.assertEquals("Wrong action type", 7, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong ip-address(1)", 10, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(2)", 0, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(3)", 0, out.readUnsignedByte());
Assert.assertEquals("Wrong ip-address(4)", 3, out.readUnsignedByte());
Assert.assertEquals("Wrong action type", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong nw-tos", 204, out.readUnsignedByte());
out.skipBytes(3);
Assert.assertEquals("Wrong action type", 9, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong port", 6653, out.readUnsignedShort());
out.skipBytes(2);
Assert.assertEquals("Wrong action type", 10, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());
Assert.assertEquals("Wrong port", 6633, out.readUnsignedShort());
out.skipBytes(2);
Assert.assertEquals("Wrong action type", 11, out.readUnsignedShort());
Assert.assertEquals("Wrong action length", 16, out.readUnsignedShort());
Assert.assertEquals("Wrong port", 6613, out.readUnsignedShort());
out.skipBytes(6);
Assert.assertEquals("Wrong queue-id", 400, out.readUnsignedInt());
Assert.assertTrue("Written more bytes than needed", out.readableBytes() == 0);
}
Aggregations