@Nonnull
@Override
- public Optional<Action> process(@Nonnull final GroupActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final GroupActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
GroupAction groupAction = source.getGroupAction();
GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final OutputActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final OutputActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final OutputAction outputAction = source.getOutputAction();
final OutputActionBuilder outputBuilder = new OutputActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PopMplsActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PopMplsActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
PopMplsCaseBuilder popMplsCaseBuilder = new PopMplsCaseBuilder();
PopMplsActionBuilder popMplsBuilder = new PopMplsActionBuilder();
popMplsBuilder.setEthertype(new EtherType(new EtherType(source.getPopMplsAction().getEthernetType())));
.setActionChoice(popMplsCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PopPbbActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PopPbbActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
return Optional.of(new ActionBuilder()
.setActionChoice(new PopPbbCaseBuilder().build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
return Optional.of(new ActionBuilder()
.setActionChoice(new PopVlanCaseBuilder().build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
return Optional.of(new ActionBuilder()
.setActionChoice(new StripVlanCaseBuilder().build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PushMplsActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PushMplsActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
PushMplsCaseBuilder pushMplsCaseBuilder = new PushMplsCaseBuilder();
PushMplsActionBuilder pushMplsBuilder = new PushMplsActionBuilder();
pushMplsBuilder.setEthertype(new EtherType(source.getPushMplsAction().getEthernetType()));
.setActionChoice(pushMplsCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PushPbbActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PushPbbActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
PushPbbCaseBuilder pushPbbCaseBuilder = new PushPbbCaseBuilder();
PushPbbActionBuilder pushPbbBuilder = new PushPbbActionBuilder();
pushPbbBuilder.setEthertype(new EtherType(source.getPushPbbAction().getEthernetType()));
.setActionChoice(pushPbbCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final PushVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final PushVlanActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
PushVlanAction pushVlanAction = source.getPushVlanAction();
PushVlanCaseBuilder pushVlanCaseBuilder = new PushVlanCaseBuilder();
.setActionChoice(pushVlanCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetDlDstAction setdldstaction = source.getSetDlDstAction();
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
-
- List<MatchEntry> entries = new ArrayList<>();
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setHasMask(false);
ethDstCaseBuilder.setEthDst(ethDstBuilder.build());
matchBuilder.setMatchEntryValue(ethDstCaseBuilder.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()
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetDlDstAction setdldstaction = source.getSetDlDstAction();
SetDlDstCaseBuilder setDlDstCaseBuilder = new SetDlDstCaseBuilder();
SetDlDstActionBuilder setDlDstActionBuilder = new SetDlDstActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetDlSrcAction setdlsrcaction = source.getSetDlSrcAction();
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
- List<MatchEntry> entries = new ArrayList<>();
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setOxmMatchField(EthSrc.class);
matchBuilder.setHasMask(false);
ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());
matchBuilder.setMatchEntryValue(ethSrcCaseBuilder.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()
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetDlSrcAction setdlsrcaction = source.getSetDlSrcAction();
SetDlSrcCaseBuilder setDlSrcCaseBuilder = new SetDlSrcCaseBuilder();
SetDlSrcActionBuilder setDlSrcActionBuilder = new SetDlSrcActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetFieldCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetFieldCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final short version = data.getVersion();
final SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetFieldCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetFieldCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetVlanVidCaseBuilder setVlanVidCaseBuilder = new SetVlanVidCaseBuilder();
if (source.getSetField().getVlanMatch() != null) {
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetMplsTtlActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetMplsTtlActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetMplsTtlActionBuilder setMplsTtlBuilder = new SetMplsTtlActionBuilder()
.setMplsTtl(source.getSetMplsTtlAction().getMplsTtl());
.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final ActionBuilder builder = new ActionBuilder();
final Address address = source.getSetNwDstAction().getAddress();
if (address instanceof Ipv4) {
Iterable<String> addressParts = PREFIX_SPLITTER.split(((Ipv4) address).getIpv4Address().getValue());
Ipv4Address result = new Ipv4Address(addressParts.iterator().next());
- List<MatchEntry> matchEntriesList = new ArrayList<>();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv4Dst.class);
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());
+
+ List<MatchEntry> matchEntriesList = new ArrayList<>();
matchEntriesList.add(matchEntryBuilder.build());
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
} else if (address instanceof Ipv6) {
Iterable<String> addressParts = PREFIX_SPLITTER.split(((Ipv6) address).getIpv6Address().getValue());
Ipv6Address result = new Ipv6Address(addressParts.iterator().next());
- List<MatchEntry> matchEntriesList = new ArrayList<>();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Dst.class);
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());
+
+ List<MatchEntry> matchEntriesList = new ArrayList<>();
matchEntriesList.add(matchEntryBuilder.build());
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final ActionBuilder builder = new ActionBuilder();
final Address address = source.getSetNwDstAction().getAddress();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final ActionBuilder builder = new ActionBuilder();
final Address address = source.getSetNwSrcAction().getAddress();
Iterable<String> addressParts = PREFIX_SPLITTER.split(((Ipv4) address).getIpv4Address().getValue());
Ipv4Address result = new Ipv4Address(addressParts.iterator().next());
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
- List<MatchEntry> entries = new ArrayList<>();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv4Src.class);
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());
+
+ List<MatchEntry> entries = new ArrayList<>();
entries.add(matchEntryBuilder.build());
+
+ SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
setFieldBuilder.setMatchEntry(entries);
+
+ SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
setFieldCaseBuilder.setSetFieldAction(setFieldBuilder.build());
builder.setActionChoice(setFieldCaseBuilder.build());
} else if (address instanceof Ipv6) {
Iterable<String> addressParts = PREFIX_SPLITTER.split(((Ipv6) address).getIpv6Address().getValue());
Ipv6Address result = new Ipv6Address(addressParts.iterator().next());
- List<MatchEntry> matchEntriesList = new ArrayList<>();
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setOxmClass(OpenflowBasicClass.class);
matchEntryBuilder.setOxmMatchField(Ipv6Src.class);
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());
+
+ List<MatchEntry> matchEntriesList = new ArrayList<>();
matchEntriesList.add(matchEntryBuilder.build());
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
final ActionBuilder builder = new ActionBuilder();
final Address address = source.getSetNwSrcAction().getAddress();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetNwTosAction setnwtosaction = source.getSetNwTosAction();
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
.setActionChoice(setFieldCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetNwTosAction setnwtosaction = source.getSetNwTosAction();
SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder();
SetNwTosCaseBuilder setNwTosCaseBuilder = new SetNwTosCaseBuilder();
.setActionChoice(setNwTosCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetNwTtlActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetNwTtlActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetNwTtlCaseBuilder nwTtlCaseBuilder = new SetNwTtlCaseBuilder();
SetNwTtlActionBuilder nwTtlBuilder = new SetNwTtlActionBuilder();
nwTtlBuilder.setNwTtl(source.getSetNwTtlAction().getNwTtl());
.setActionChoice(nwTtlCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetQueueActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetQueueActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetQueueAction setQueueAction = source.getSetQueueAction();
SetQueueCaseBuilder setQueueCaseBuilder = new SetQueueCaseBuilder();
SetQueueActionBuilder setQueueBuilder = new SetQueueActionBuilder();
.setActionChoice(setQueueCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
IPProtocols protocol = null;
if (data.getIpProtocol() != null) {
}
SetTpDstAction settpdstaction = source.getSetTpDstAction();
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setOxmMatchField(TcpDst.class);
TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();
TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();
- tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
+ tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types
+ .rev130715.PortNumber(port));
tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());
matchBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());
break;
matchBuilder.setOxmMatchField(UdpDst.class);
UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();
UdpDstBuilder udpDstBuilder = new UdpDstBuilder();
- udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
+ udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types
+ .rev130715.PortNumber(port));
udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());
matchBuilder.setMatchEntryValue(udpDstCaseBuilder.build());
break;
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());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetTpDstAction settpdstaction = source.getSetTpDstAction();
SetTpDstCaseBuilder setTpDstCaseBuilder = new SetTpDstCaseBuilder();
SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder();
.setActionChoice(setTpDstCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
IPProtocols protocol = null;
if (data.getIpProtocol() != null) {
}
SetTpSrcAction settpsrcaction = source.getSetTpSrcAction();
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
MatchEntryBuilder matchBuilder = new MatchEntryBuilder();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setOxmMatchField(TcpSrc.class);
TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();
TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();
- tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
+ tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet
+ .types.rev130715.PortNumber(port));
tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());
matchBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());
break;
matchBuilder.setOxmMatchField(UdpSrc.class);
UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
UdpSrcBuilder udpSrcBuilder = new UdpSrcBuilder();
- udpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
+ udpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet
+ .types.rev130715.PortNumber(port));
udpSrcCaseBuilder.setUdpSrc(udpSrcBuilder.build());
matchBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
break;
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());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetTpSrcAction settpsrcaction = source.getSetTpSrcAction();
SetTpSrcCaseBuilder setTpSrcCaseBuilder = new SetTpSrcCaseBuilder();
SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder();
.setActionChoice(setTpSrcCaseBuilder.build())
.build());
}
-}
\ No newline at end of file
+}
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
- SetVlanIdAction setvlanidaction = source.getSetVlanIdAction();
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
- List<MatchEntry> entries = new ArrayList<>();
+ 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);
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()
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetVlanIdAction setvlanidaction = source.getSetVlanIdAction();
SetVlanVidActionBuilder vlanidActionBuilder = new SetVlanVidActionBuilder();
SetVlanVidCaseBuilder setVlanVidCaseBuilder = new SetVlanVidCaseBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetVlanPcpAction setvlanpcpaction = source.getSetVlanPcpAction();
SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
SetVlanPcpAction setvlanpcpaction = source.getSetVlanPcpAction();
SetVlanPcpActionBuilder setVlanPcpActionBuilder = new SetVlanPcpActionBuilder();
SetVlanPcpCaseBuilder setVlanPcpCaseBuilder = new SetVlanPcpCaseBuilder();
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder();
- List<MatchEntry> entries = new ArrayList<>();
+ 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);
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()
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data,
+ ConvertorExecutor convertorExecutor) {
return Optional.of(new ActionBuilder()
.setActionChoice(new StripVlanCaseBuilder().build())
.build());
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SalToOfVendorCodecCase extends ConvertorCase<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, Action, ActionConvertorData> {
+public class SalToOfVendorCodecCase extends ConvertorCase<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types
+ .rev131112.action.Action, Action, ActionConvertorData> {
private static final Logger LOG = LoggerFactory.getLogger(SalToOfVendorCodecCase.class);
public SalToOfVendorCodecCase() {
- super(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action.class, true, OFConstants.OFP_VERSION_1_0, OFConstants.OFP_VERSION_1_3);
+ super(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action.class, true,
+ OFConstants.OFP_VERSION_1_0, OFConstants.OFP_VERSION_1_3);
}
@SuppressWarnings("unchecked")
@Nonnull
@Override
- public Optional<Action> process(@Nonnull final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
+ public Optional<Action> process(@Nonnull final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112
+ .action.Action source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) {
final short version = data.getVersion();
final TypeVersionKey<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> key =
new TypeVersionKey<>(
- (Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>) source.getImplementedInterface(),
+ (Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112
+ .action.Action>) source.getImplementedInterface(),
version);
ExtensionConverterProvider extensionConverterProvider = OFSessionUtil.getExtensionConvertorProvider();
return Optional.empty();
}
- final ConvertorActionToOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, Action> convertor =
- extensionConverterProvider.getConverter(key);
+ final ConvertorActionToOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112
+ .action.Action, Action> convertor = extensionConverterProvider.getConverter(key);
LOG.trace("OFP Extension action, key:{}, converter:{}", key, convertor);
return convertor != null ? Optional.of(convertor.convert(source)) : Optional.empty();
}
-}
\ No newline at end of file
+}
/**
* Convertor data used in {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor}
- * containing Openflow version, datapath ID and IP protocol from flow
+ * containing Openflow version, datapath ID and IP protocol from flow.
*/
public class ActionConvertorData extends VersionDatapathIdConvertorData {
private Short ipProtocol;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData;
/**
- * Convertor data used in {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor}
- * containing Openflow version and {@link org.opendaylight.openflowplugin.extension.api.path.ActionPath}
+ * Convertor data used in
+ * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor}
+ * containing Openflow version and {@link org.opendaylight.openflowplugin.extension.api.path.ActionPath}.
*/
public class ActionResponseConvertorData extends ConvertorData {
private ActionPath actionPath;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
/**
- * @param <FROM> source type for conversion
+ * Base class for a conversion reactor.
*
+ * @param <F> source type for conversion
*/
-public abstract class ConvertReactor<FROM> {
+public abstract class ConvertReactor<F> {
private final Map<ConvertorKey, ResultInjector<?, ?>> injectionMapping;
- private final Map<Short, ConvertReactorConvertor<FROM, ?>> conversionMapping;
+ private final Map<Short, ConvertReactorConvertor<F, ?>> conversionMapping;
protected ConvertReactor() {
- final Map<Short, ConvertReactorConvertor<FROM, ?>> conversions = new HashMap<>();
+ final Map<Short, ConvertReactorConvertor<F, ?>> conversions = new HashMap<>();
final Map<ConvertorKey, ResultInjector<?, ?>> injections = new HashMap<>();
initMappings(conversions, injections);
}
/**
- * fill conversion and injection mappings
+ * Fill conversion and injection mappings.
+ *
* @param conversions convert from
* @param injections injection
*/
- protected abstract void initMappings(Map<Short, ConvertReactorConvertor<FROM, ?>> conversions,
+ protected abstract void initMappings(Map<Short, ConvertReactorConvertor<F, ?>> conversions,
Map<ConvertorKey, ResultInjector<?, ?>> injections);
/**
- * @param <RESULT> result
- * @param <TARGET> target
+ * Converts a source to a target.
+ *
+ * @param <R> result
+ * @param <T> target
* @param source convert from
* @param version openflow version
* @param target convert to
- * @param convertorExecutor
+ * @param convertorExecutor the convertor executor
*/
@SuppressWarnings("unchecked")
- public <RESULT, TARGET> void convert(final FROM source, final short version, final TARGET target, final ConvertorExecutor convertorExecutor) {
+ public <R, T> void convert(final F source, final short version, final T target,
+ final ConvertorExecutor convertorExecutor) {
//lookup converter
- ConvertReactorConvertor<FROM, RESULT> convertor = (ConvertReactorConvertor<FROM, RESULT>) conversionMapping.get(version);
+ ConvertReactorConvertor<F, R> convertor = (ConvertReactorConvertor<F, R>) conversionMapping.get(version);
if (convertor == null) {
- throw new IllegalArgumentException("convertor for given version ["+version+"] not found");
+ throw new IllegalArgumentException("convertor for given version [" + version + "] not found");
}
- RESULT convertedItem = convertor.convert(source, convertorExecutor);
+ R convertedItem = convertor.convert(source, convertorExecutor);
//lookup injection
ConvertorKey key = buildInjectionKey(version, convertedItem, target);
- ResultInjector<RESULT, TARGET> injection = (ResultInjector<RESULT, TARGET>) injectionMapping.get(key);
+ ResultInjector<R, T> injection = (ResultInjector<R, T>) injectionMapping.get(key);
if (injection == null) {
- throw new IllegalArgumentException("injector for given version and target ["+key+"] not found");
+ throw new IllegalArgumentException("injector for given version and target [" + key + "] not found");
}
injection.inject(convertedItem, target);
}
/**
+ * Builds an injection key.
+ *
* @param version openflow version
* @param convertedItem to be injected
* @param target object
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
/**
- * Converts OpenflowJava to MDSal model and vice versa
+ * Converts OpenflowJava to MDSal model and vice versa.
*
* @param <FROM> type of source
* @param <TO> type of result
*/
public interface ConvertReactorConvertor<FROM, TO> {
+
/**
- * Converts source to result
+ * Converts source to result.
*
* @param source source
- * @param convertorExecutor
+ * @param convertorExecutor the convertor executor
* @return converted source
*/
TO convert(FROM source, ConvertorExecutor convertorExecutor);
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
/**
- * Converts OpenflowJava to MDSal model and vice versa
+ * Converts OpenflowJava to MDSal model and vice versa.
*
- * @param <FROM> type of source
- * @param <TO> type of result
- * @param <DATA> the type parameter
+ * @param <F> type of source
+ * @param <T> type of result
+ * @param <D> the type parameter
*/
-public abstract class Convertor<FROM, TO, DATA extends ConvertorData> {
+public abstract class Convertor<F, T, D extends ConvertorData> {
private ConvertorExecutor convertorExecutor;
/**
public abstract Collection<Class<?>> getTypes();
/**
- * Converts source to result
+ * Converts source to result.
*
* @param source source
* @param data convertor data
* @return converted source
*/
- public abstract TO convert(FROM source, DATA data);
+ public abstract T convert(F source, D data);
}
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
/**
- * The Convertor case used in {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor}.
+ * The Convertor case used in
+ * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor}.
*
- * @param <FROM> the source type
- * @param <TO> the result type
- * @param <DATA> the data type
+ * @param <F> the source type
+ * @param <T> the result type
+ * @param <D> the data type
*/
-public abstract class ConvertorCase<FROM, TO, DATA extends ConvertorData> {
+public abstract class ConvertorCase<F, T, D extends ConvertorData> {
private final List<Short> supportedVersions;
- private final Class<FROM> type;
+ private final Class<F> type;
private final boolean errorOnEmpty;
/**
* @param errorOnEmpty the error on empty
* @param supportedVersions the supported versions
*/
- protected ConvertorCase(Class<FROM> type, boolean errorOnEmpty, Short... supportedVersions) {
+ protected ConvertorCase(Class<F> type, boolean errorOnEmpty, Short... supportedVersions) {
this.type = type;
this.errorOnEmpty = errorOnEmpty;
this.supportedVersions = Arrays.asList(Preconditions.checkNotNull(supportedVersions));
}
/**
- * Process source and return result, what can be empty
- *
+ * Process source and return result, what can be empty.
*
* @param source the source
* @param data the data
* @param convertorExecutor convertor executor
* @return the optional
*/
- public abstract Optional<TO> process(@Nonnull final FROM source, final DATA data, final ConvertorExecutor convertorExecutor);
+ public abstract Optional<T> process(@Nonnull final F source, final D data,
+ final ConvertorExecutor convertorExecutor);
/**
* Should {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor}
* @param convertorExecutor convertor executor
* @return the optional
*/
- Optional<TO> processRaw(@Nonnull final Object source, final DATA data, final ConvertorExecutor convertorExecutor) {
+ Optional<T> processRaw(@Nonnull final Object source, final D data, final ConvertorExecutor convertorExecutor) {
return process(getType().cast(source), data, convertorExecutor);
}
*
* @return the type
*/
- Class<FROM> getType() {
+ Class<F> getType() {
return type;
}
/**
- * injection lookup key based on version and target object
+ * Injection lookup key based on version and target object.
*/
public class ConvertorKey {
private final Class<?> targetClazz;
/**
+ * Constructor.
+ *
* @param version openflow version
* @param targetClazz target class
*/
/**
* Processes source and return result based on convertor cases added to this processor.
*
- * @param <FROM> the source type
- * @param <TO> the result type
- * @param <DATA> the type of convertor data
+ * @param <F> the source type
+ * @param <T> the result type
+ * @param <D> the type of convertor data
*/
-public class ConvertorProcessor<FROM extends DataContainer, TO, DATA extends ConvertorData> {
+public class ConvertorProcessor<F extends DataContainer, T, D extends ConvertorData> {
private static final short OFP_VERSION_ALL = 0x00;
private static final Logger LOG = LoggerFactory.getLogger(ConvertorProcessor.class);
- private final Map<Short, Map<Class<?>, ConvertorCase<?, TO, DATA>>> conversions = new ConcurrentHashMap<>();
- private ConvertorCase<?, TO, DATA> defaultCase;
+ private final Map<Short, Map<Class<?>, ConvertorCase<?, T, D>>> conversions = new ConcurrentHashMap<>();
+ private ConvertorCase<?, T, D> defaultCase;
/**
* Add convertor processor case.
* @param processorCase the processor case
* @return the convertor processor
*/
- public ConvertorProcessor<FROM, TO, DATA> addCase(final ConvertorCase<?, TO, DATA> processorCase) {
+ public ConvertorProcessor<F, T, D> addCase(final ConvertorCase<?, T, D> processorCase) {
if (processorCase.getSupportedVersions().isEmpty()) {
getCasesForVersion(OFP_VERSION_ALL).putIfAbsent(processorCase.getType(), processorCase);
} else {
* @param convertorExecutor convertor executor
* @return the optional
*/
- public Optional<TO> process(final FROM source, final ConvertorExecutor convertorExecutor) {
+ public Optional<T> process(final F source, final ConvertorExecutor convertorExecutor) {
return process(source, null, convertorExecutor);
}
* @param convertorExecutor convertor executor
* @return the optional
*/
- public Optional<TO> process(final FROM source, final DATA data, final ConvertorExecutor convertorExecutor) {
- Optional<TO> result = Optional.empty();
+ public Optional<T> process(final F source, final D data, final ConvertorExecutor convertorExecutor) {
+ Optional<T> result = Optional.empty();
final short version = data != null ? data.getVersion() : OFP_VERSION_ALL;
if (Objects.isNull(source)) {
}
final Class<?> clazz = source.getImplementedInterface();
- final Optional<ConvertorCase<?, TO, DATA>> caseOptional = Optional
+ final Optional<ConvertorCase<?, T, D>> caseOptional = Optional
.ofNullable(getCasesForVersion(version).get(clazz));
- final ConvertorCase<?, TO, DATA> processorCase = caseOptional.orElse(defaultCase);
+ final ConvertorCase<?, T, D> processorCase = caseOptional.orElse(defaultCase);
if (Objects.nonNull(processorCase)) {
result = processorCase.processRaw(source, data, convertorExecutor);
* @param defaultCase the default case
* @return the default case
*/
- public ConvertorProcessor<FROM, TO, DATA> setDefaultCase(final ConvertorCase<?, TO, DATA> defaultCase) {
+ public ConvertorProcessor<F, T, D> setDefaultCase(final ConvertorCase<?, T, D> defaultCase) {
this.defaultCase = defaultCase;
return this;
}
- private Map<Class<?>, ConvertorCase<?, TO, DATA>> getCasesForVersion(final short version) {
- final Map<Class<?>, ConvertorCase<?, TO, DATA>> casesForVersion =
+ private Map<Class<?>, ConvertorCase<?, T, D>> getCasesForVersion(final short version) {
+ final Map<Class<?>, ConvertorCase<?, T, D>> casesForVersion =
conversions.getOrDefault(version, new ConcurrentHashMap<>());
conversions.putIfAbsent(version, casesForVersion);
import java.util.Map;
/**
+ * Enumerates IP protocols.
* @author tkubas
- *
*/
-//TODO make a model in YANG for protocols
+// TODO make a model in YANG for protocols
public enum IPProtocols {
- ICMP((short) 1),
- TCP((short) 6),
- UDP((short) 17),
+ ICMP((short) 1),
+ TCP((short) 6),
+ UDP((short) 17),
ICMPV6((short) 58);
private short protocol;
-
+
private static final Map<Short, IPProtocols> VALUE_MAP;
static {
Builder<Short, IPProtocols> builder = ImmutableMap.builder();
- for(IPProtocols protocols : IPProtocols.values()) {
+ for (IPProtocols protocols : IPProtocols.values()) {
builder.put(protocols.protocol, protocols);
}
VALUE_MAP = builder.build();
}
-
- private IPProtocols(short value) {
+
+ IPProtocols(short value) {
this.protocol = value;
}
* the table is contiguous and save some space.
*/
private static final byte[] PREFIX_BYTEARRAYS;
+
static {
final byte[] a = new byte[(INADDR6SZ * Byte.SIZE + 1) * INADDR6SZ];
* that happens, it will be a simple fix here without chasing it across the whole plugin.
*/
- public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address){
+ public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address) {
return IetfInetUtil.INSTANCE.ipv4PrefixFor(ipv4Address);
}
- public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final String mask){
+ public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final String mask) {
/*
* Ipv4Address has already validated the address part of the prefix,
* It is mandated to comply to the same regexp as the address
}
}
- public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final int intmask){
+ public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final int intmask) {
return IetfInetUtil.INSTANCE.ipv4PrefixFor(ipv4Address, intmask);
}
- public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final byte [] bytemask){
+ public static Ipv4Prefix createPrefix(final Ipv4Address ipv4Address, final byte [] bytemask) {
if (bytemask == null) {
return createPrefix(ipv4Address);
}
return IetfInetUtil.INSTANCE.ipv4PrefixFor(ipv4Address, countBits(bytemask));
}
- public static DottedQuad createArbitraryBitMask(final byte [] bitmask) {
- DottedQuad dottedQuad = null;
- if (bitmask == null ) {
- dottedQuad = new DottedQuad(DEFAULT_ARBITRARY_BIT_MASK);
- } else {
- try {
- dottedQuad = new DottedQuad(InetAddress.getByAddress(bitmask).getHostAddress());
- } catch (UnknownHostException e) {
- LOG.error("Failed to create the dottedQuad notation for the given mask ", e);
- }
- }
- return dottedQuad;
- }
-
- public static Ipv6ArbitraryMask createIpv6ArbitraryBitMask(final byte [] bitmask) {
- Ipv6ArbitraryMask ipv6ArbitraryMask = null;
- if (bitmask == null ) {
- ipv6ArbitraryMask = new Ipv6ArbitraryMask(DEFAULT_IPV6_ARBITRARY_BITMASK);
- } else {
- try {
- ipv6ArbitraryMask = new Ipv6ArbitraryMask(InetAddress.getByAddress(bitmask).getHostAddress());
- } catch (UnknownHostException e) {
- LOG.error("Failed to create the Ipv6ArbitraryMask notation for the given mask ", e);
- }
- }
- return ipv6ArbitraryMask;
- }
-
- public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address){
+ public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address) {
return IetfInetUtil.INSTANCE.ipv6PrefixFor(ipv6Address);
}
- public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final String mask){
+ public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final String mask) {
/*
* Ipv6Address has already validated the address part of the prefix,
* It is mandated to comply to the same regexp as the address
}
}
- public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final int intmask){
+ public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final int intmask) {
return IetfInetUtil.INSTANCE.ipv6PrefixFor(ipv6Address, intmask);
}
- public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final byte [] bytemask){
+ public static Ipv6Prefix createPrefix(final Ipv6Address ipv6Address, final byte [] bytemask) {
if (bytemask == null) {
return createPrefix(ipv6Address);
}
return IetfInetUtil.INSTANCE.ipv6PrefixFor(ipv6Address, countBits(bytemask));
}
+ public static DottedQuad createArbitraryBitMask(final byte [] bitmask) {
+ DottedQuad dottedQuad = null;
+ if (bitmask == null) {
+ dottedQuad = new DottedQuad(DEFAULT_ARBITRARY_BIT_MASK);
+ } else {
+ try {
+ dottedQuad = new DottedQuad(InetAddress.getByAddress(bitmask).getHostAddress());
+ } catch (UnknownHostException e) {
+ LOG.error("Failed to create the dottedQuad notation for the given mask ", e);
+ }
+ }
+ return dottedQuad;
+ }
+
+ public static Ipv6ArbitraryMask createIpv6ArbitraryBitMask(final byte [] bitmask) {
+ Ipv6ArbitraryMask ipv6ArbitraryMask = null;
+ if (bitmask == null) {
+ ipv6ArbitraryMask = new Ipv6ArbitraryMask(DEFAULT_IPV6_ARBITRARY_BITMASK);
+ } else {
+ try {
+ ipv6ArbitraryMask = new Ipv6ArbitraryMask(InetAddress.getByAddress(bitmask).getHostAddress());
+ } catch (UnknownHostException e) {
+ LOG.error("Failed to create the Ipv6ArbitraryMask notation for the given mask ", e);
+ }
+ }
+ return ipv6ArbitraryMask;
+ }
+
public static Integer extractPrefix(final Ipv4Prefix ipv4Prefix) {
return IetfInetUtil.INSTANCE.splitIpv4Prefix(ipv4Prefix).getValue();
}
/**
- * Convert Ipv6Address object to a valid Canonical v6 address in byte format
+ * Convert Ipv6Address object to a valid Canonical v6 address in byte format.
*
* @param ipv6Address - v6 Address object
* @return - byte array of size 16. Last byte contains netmask
private static byte[] canonicalBinaryV6AddressFromString(final String ipv6Address) {
- Iterable<String> splittedV6Address = Splitter.on("%")
+ Iterable<String> splittedV6Address = Splitter.on("%")
.trimResults()
.omitEmptyStrings()
.split(ipv6Address);
int colonp;
char ch;
- boolean saw_xdigit;
+ boolean sawXdigit;
/* Isn't it fun - the above variable names are the same in BSD and Sun sources */
- int val;
-
char[] src = partsV6Address.get(0).toCharArray();
byte[] dst = new byte[INADDR6SZ];
- int src_length = src.length;
-
colonp = -1;
- int i = 0, j = 0;
+ int index1 = 0;
+ int index2 = 0;
/* Leading :: requires some special handling. */
* in original Clingon. So does Dilbert.
*/
- if (src[i] == ':') {
- Preconditions.checkArgument(src[++i] == ':', "Invalid v6 address");
+ if (src[index1] == ':') {
+ Preconditions.checkArgument(src[++index1] == ':', "Invalid v6 address");
}
- int curtok = i;
- saw_xdigit = false;
+ int curtok = index1;
+ sawXdigit = false;
-
- val = 0;
- while (i < src_length) {
- ch = src[i++];
+ int srcLength = src.length;
+ int val = 0;
+ while (index1 < srcLength) {
+ ch = src[index1++];
int chval = Character.digit(ch, 16);
/* Business as usual - ipv6 address digit.
if (chval != -1) {
val <<= 4;
val |= chval;
- saw_xdigit = true;
+ sawXdigit = true;
continue;
}
/* v6 separator */
if (ch == ':') {
- curtok = i;
- if (!saw_xdigit) {
+ curtok = index1;
+ if (!sawXdigit) {
/* no need to check separator position validity - regexp does that */
- colonp = j;
+ colonp = index2;
continue;
}
/* removed overrun check - the regexp checks for valid data */
- dst[j++] = (byte) ((val >>> 8) & 0xff);
- dst[j++] = (byte) (val & 0xff);
- saw_xdigit = false;
+ dst[index2++] = (byte) (val >>> 8 & 0xff);
+ dst[index2++] = (byte) (val & 0xff);
+ sawXdigit = false;
val = 0;
continue;
}
/* frankenstein - v4 attached to v6, mixed notation */
- if (ch == '.' && ((j + INADDR4SZ) <= INADDR6SZ)) {
+ if (ch == '.' && index2 + INADDR4SZ <= INADDR6SZ) {
/* this has passed the regexp so it is fairly safe to parse it
* straight away. As v4 addresses do not suffer from the same
* straight away and be done with it
*/
- Preconditions.checkArgument(j != (INADDR6SZ - INADDR4SZ - 1), "Invalid v4 in v6 mapping");
+ Preconditions.checkArgument(index2 != INADDR6SZ - INADDR4SZ - 1, "Invalid v4 in v6 mapping");
- InetAddress _inet_form = InetAddresses.forString(partsV6Address.get(0).substring(curtok, src_length));
+ InetAddress inetForm = InetAddresses.forString(partsV6Address.get(0).substring(curtok, srcLength));
- Preconditions.checkArgument(_inet_form instanceof Inet4Address);
- System.arraycopy(_inet_form.getAddress(), 0, dst, j, INADDR4SZ);
- j += INADDR4SZ;
+ Preconditions.checkArgument(inetForm instanceof Inet4Address);
+ System.arraycopy(inetForm.getAddress(), 0, dst, index2, INADDR4SZ);
+ index2 += INADDR4SZ;
- saw_xdigit = false;
+ sawXdigit = false;
break;
}
/* removed parser exit on invalid char - no need to do it, regexp checks it */
}
- if (saw_xdigit) {
- Preconditions.checkArgument(j + INT16SZ <= INADDR6SZ, "Overrun in v6 parsing, should not occur");
- dst[j++] = (byte) ((val >> 8) & 0xff);
- dst[j++] = (byte) (val & 0xff);
+ if (sawXdigit) {
+ Preconditions.checkArgument(index2 + INT16SZ <= INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ dst[index2++] = (byte) (val >> 8 & 0xff);
+ dst[index2++] = (byte) (val & 0xff);
}
if (colonp != -1) {
- int n = j - colonp;
+ int to = index2 - colonp;
- Preconditions.checkArgument(j != INADDR6SZ, "Overrun in v6 parsing, should not occur");
- for (i = 1; i <= n; i++) {
- dst[INADDR6SZ - i] = dst[colonp + n - i];
- dst[colonp + n - i] = 0;
+ Preconditions.checkArgument(index2 != INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ for (index1 = 1; index1 <= to; index1++) {
+ dst[INADDR6SZ - index1] = dst[colonp + to - index1];
+ dst[colonp + to - index1] = 0;
}
- j = INADDR6SZ;
+ index2 = INADDR6SZ;
}
- Preconditions.checkArgument(j == INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ Preconditions.checkArgument(index2 == INADDR6SZ, "Overrun in v6 parsing, should not occur");
return dst;
}
- public static String byteArrayV6AddressToString (final byte [] _binary_form) throws UnknownHostException {
+ public static String byteArrayV6AddressToString(final byte [] binaryForm) throws UnknownHostException {
/* DO NOT DIY!!! - InetAddresses will actually print correct canonical
* zero compressed form.
*/
- return InetAddresses.toAddrString(InetAddress.getByAddress(_binary_form));
+ return InetAddresses.toAddrString(InetAddress.getByAddress(binaryForm));
}
private static int nextNibble(final int mask) {
if (mask > 8) {
return 0xff;
}
- return 0xff << (8 - mask);
+ return 0xff << 8 - mask;
}
/**
- * Convert Ipv6Prefix object to a valid Canonical v6 prefix in byte format
+ * Convert Ipv6Prefix object to a valid Canonical v6 prefix in byte format.
*
* @param ipv6Prefix - v6 prefix object
* @return - byte array of size 16 + 1. Last byte contains netmask
* the input is validated via regexps in Ipv6Prefix()
*/
- int mask = 128;
+ int initialMask = 128;
Iterable<String> splittedV6Prefix = Splitter.on("/")
.trimResults()
boolean valid = true;
try {
- mask = Integer.parseInt(partsV6Prefix.get(1));
- if (mask > 128) {
+ initialMask = Integer.parseInt(partsV6Prefix.get(1));
+ if (initialMask > 128) {
valid = false;
}
} catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
int colonp;
char ch;
- boolean saw_xdigit;
+ boolean sawXdigit;
/* Isn't it fun - the above variable names are the same in BSD and Sun sources */
- int val;
-
char[] src = partsV6Prefix.get(0).toCharArray();
byte[] dst = new byte[INADDR6SZ + 1];
- int m = mask;
-
- int src_length = src.length;
+ int mask = initialMask;
colonp = -1;
- int i = 0, j = 0;
+ int index1 = 0;
+ int index2 = 0;
/* Leading :: requires some special handling. */
* in original Clingon. So does Dilbert.
*/
- if (src[i] == ':') {
- Preconditions.checkArgument(src[++i] == ':', "Invalid v6 address");
+ if (src[index1] == ':') {
+ Preconditions.checkArgument(src[++index1] == ':', "Invalid v6 address");
}
- int curtok = i;
- saw_xdigit = false;
-
+ int curtok = index1;
+ sawXdigit = false;
- val = 0;
- while (i < src_length) {
- ch = src[i++];
+ int srcLength = src.length;
+ int val = 0;
+ while (index1 < srcLength) {
+ ch = src[index1++];
int chval = Character.digit(ch, 16);
/* Business as usual - ipv6 address digit.
if (chval != -1) {
val <<= 4;
val |= chval;
- saw_xdigit = true;
+ sawXdigit = true;
continue;
}
/* v6 separator */
if (ch == ':') {
- curtok = i;
- if (!saw_xdigit) {
+ curtok = index1;
+ if (!sawXdigit) {
/* no need to check separator position validity - regexp does that */
- colonp = j;
+ colonp = index2;
continue;
}
/* removed overrun check - the regexp checks for valid data */
- saw_xdigit = false;
+ sawXdigit = false;
- if (m < 0) {
+ if (mask < 0) {
/* stop parsing if we are past the mask */
break;
}
- dst[j] = (byte) ((val >> 8) & nextNibble(m)); j++; m = m - 8;
+ dst[index2] = (byte) (val >> 8 & nextNibble(mask));
+ index2++;
+ mask = mask - 8;
- if (m < 0) {
+ if (mask < 0) {
/* stop parsing if we are past the mask */
break;
}
- dst[j] = (byte) (val & nextNibble(m)); j++; m = m - 8;
+ dst[index2] = (byte) (val & nextNibble(mask));
+ index2++;
+ mask = mask - 8;
val = 0;
continue;
/* frankenstein - v4 attached to v6, mixed notation */
- if (ch == '.' && ((j + INADDR4SZ) <= INADDR6SZ)) {
+ if (ch == '.' && index2 + INADDR4SZ <= INADDR6SZ) {
/* this has passed the regexp so it is fairly safe to parse it
* straight away. As v4 addresses do not suffer from the same
* straight away and be done with it
*/
- Preconditions.checkArgument(j != (INADDR6SZ - INADDR4SZ - 1), "Invalid v4 in v6 mapping");
+ Preconditions.checkArgument(index2 != INADDR6SZ - INADDR4SZ - 1, "Invalid v4 in v6 mapping");
- InetAddress _inet_form = InetAddresses.forString(partsV6Prefix.get(0).substring(curtok, src_length));
+ InetAddress inetForm = InetAddresses.forString(partsV6Prefix.get(0).substring(curtok, srcLength));
- Preconditions.checkArgument(_inet_form instanceof Inet4Address);
- System.arraycopy(_inet_form.getAddress(), 0, dst, j, INADDR4SZ);
- j += INADDR4SZ;
+ Preconditions.checkArgument(inetForm instanceof Inet4Address);
+ System.arraycopy(inetForm.getAddress(), 0, dst, index2, INADDR4SZ);
+ index2 += INADDR4SZ;
- saw_xdigit = false;
+ sawXdigit = false;
break;
}
/* removed parser exit on ivalid char - no need to do it, regexp checks it */
}
- if (saw_xdigit) {
- Preconditions.checkArgument(j + INT16SZ <= INADDR6SZ, "Overrun in v6 parsing, should not occur");
- dst[j] = (byte) ((val >> 8) & nextNibble(m)) ; j++; m = m - 8;
- dst[j] = (byte) (val & nextNibble(m)); j++; m = m - 8;
+ if (sawXdigit) {
+ Preconditions.checkArgument(index2 + INT16SZ <= INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ dst[index2] = (byte) (val >> 8 & nextNibble(mask));
+ index2++;
+ mask = mask - 8;
+ dst[index2] = (byte) (val & nextNibble(mask));
+ index2++;
+ mask = mask - 8;
}
- if ((j < INADDR6SZ) && (m < 0)) {
+ if (index2 < INADDR6SZ && mask < 0) {
/* past the mask */
- for (i = j; i < INADDR6SZ; i++) {
- dst[i] = 0;
+ for (index1 = index2; index1 < INADDR6SZ; index1++) {
+ dst[index1] = 0;
}
} else {
/* normal parsing */
if (colonp != -1) {
- int n = j - colonp;
+ int to = index2 - colonp;
- Preconditions.checkArgument(j != INADDR6SZ, "Overrun in v6 parsing, should not occur");
- for (i = 1; i <= n; i++) {
- dst[INADDR6SZ - i] = dst[colonp + n - i];
- dst[colonp + n - i] = 0;
+ Preconditions.checkArgument(index2 != INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ for (index1 = 1; index1 <= to; index1++) {
+ dst[INADDR6SZ - index1] = dst[colonp + to - index1];
+ dst[colonp + to - index1] = 0;
}
- j = INADDR6SZ;
+ index2 = INADDR6SZ;
}
- Preconditions.checkArgument(j == INADDR6SZ, "Overrun in v6 parsing, should not occur");
+ Preconditions.checkArgument(index2 == INADDR6SZ, "Overrun in v6 parsing, should not occur");
}
- dst[INADDR6SZ] = (byte) mask;
+ dst[INADDR6SZ] = (byte) initialMask;
return dst;
}
/**
- * Print a v6 prefix in byte array + 1 notation
- * @param _binary_form - prefix, in byte [] form, last byte is netmask
+ * Print a v6 prefix in byte array + 1 notation.
+ *
+ * @param binaryForm - prefix, in byte [] form, last byte is netmask
* @return string of v6 prefix
* @throws UnknownHostException unknown host exception
*/
- public static String byteArrayV6PrefixToString(final byte [] _binary_form) throws UnknownHostException {
+ public static String byteArrayV6PrefixToString(final byte [] binaryForm) throws UnknownHostException {
/* NO DIY!!! - InetAddresses will actually print correct canonical
* zero compressed form
*/
sb.append(
InetAddresses.toAddrString(
InetAddress.getByAddress(
- Arrays.copyOf(_binary_form, INADDR6SZ)
+ Arrays.copyOf(binaryForm, INADDR6SZ)
)
)
);
sb.append('/');
- sb.append(_binary_form[INADDR6SZ] & 0xff);
+ sb.append(binaryForm[INADDR6SZ] & 0xff);
return sb.toString();
}
/**
- * Check if the supplied IPv6Address has any prefix
+ * Check if the supplied IPv6Address has any prefix.
*
* @param ipv6Prefix Ipv6 prefix
* @return prefix if there is one, else null
}
/**
- * Canonicalize a v6 prefix while in binary form
+ * Canonicalize a v6 prefix while in binary form.
*
* @param prefix - prefix, in byte [] form
* @param mask - mask - number of bits
public static DottedQuad extractIpv4AddressMask(final Ipv4Prefix ipv4Prefix) {
Iterator<String> addressParts = PREFIX_SPLITTER.split(ipv4Prefix.getValue()).iterator();
addressParts.next();
- Integer cidrMask =0;
+ Integer cidrMask = 0;
if (addressParts.hasNext()) {
cidrMask = Integer.parseInt(addressParts.next());
}
long maskBits = 0;
maskBits = 0xffffffff << IPV4_ADDRESS_LENGTH - cidrMask;
- String mask = String.format("%d.%d.%d.%d", (maskBits & 0x0000000000ff000000L) >> 24, (maskBits & 0x0000000000ff0000) >> 16, (maskBits & 0x0000000000ff00) >> 8, maskBits & 0xff);
+ String mask = String.format("%d.%d.%d.%d", (maskBits & 0x0000000000ff000000L) >> 24,
+ (maskBits & 0x0000000000ff0000) >> 16, (maskBits & 0x0000000000ff00) >> 8, maskBits & 0xff);
DottedQuad netMask = new DottedQuad(mask);
return netMask;
}
}
BitSet ipmask = new BitSet(128);
ipmask.set(0,maskLength,true);
- ipmask.set(maskLength+1,128,false);
+ ipmask.set(maskLength + 1,128,false);
byte[] finalmask = new byte[16];
System.arraycopy(ipmask.toByteArray(),0,finalmask,0,ipmask.toByteArray().length);
InetAddress inetAddress = null;
return netmask;
}
- public static final byte[] convertArbitraryMaskToByteArray(DottedQuad mask) {
+ public static byte[] convertArbitraryMaskToByteArray(DottedQuad mask) {
String maskValue;
if (mask != null && mask.getValue() != null) {
- maskValue = mask.getValue();
+ maskValue = mask.getValue();
} else {
maskValue = DEFAULT_ARBITRARY_BIT_MASK;
}
try {
maskInIpFormat = InetAddress.getByName(maskValue);
} catch (UnknownHostException e) {
- LOG.error ("Failed to resolve the ip address of the mask ",e);
+ LOG.error("Failed to resolve the ip address of the mask ", e);
}
byte[] bytes = maskInIpFormat.getAddress();
return bytes;
if (byteMask == null) {
return false;
} else {
- ArrayList<Integer> integerMaskArrayList = new ArrayList<Integer>();
+ ArrayList<Integer> integerMaskArrayList = new ArrayList<>();
String maskInBits;
// converting byte array to bits
maskInBits = new BigInteger(1, byteMask).toString(2);
- ArrayList<String> stringMaskArrayList = new ArrayList<String>(Arrays.asList(maskInBits.split("(?!^)")));
+ ArrayList<String> stringMaskArrayList = new ArrayList<>(Arrays.asList(maskInBits.split("(?!^)")));
for (String string:stringMaskArrayList) {
integerMaskArrayList.add(Integer.parseInt(string));
}
private static boolean checkArbitraryBitMask(ArrayList<Integer> arrayList) {
// checks 0*1* case - Leading zeros in arrayList are truncated
- if (arrayList.size()>0 && arrayList.size()<IPV4_ADDRESS_LENGTH) {
+ if (arrayList.size() > 0 && arrayList.size() < IPV4_ADDRESS_LENGTH) {
return true;
} else {
- //checks 1*0*1 case
- for (int i=0; i<arrayList.size()-1;i++) {
- if (arrayList.get(i) ==0 && arrayList.get(i+1) == 1) {
+ // checks 1*0*1 case
+ for (int i = 0; i < arrayList.size() - 1; i++) {
+ if (arrayList.get(i) == 0 && arrayList.get(i + 1) == 1) {
return true;
}
}
return false;
}
- public static final byte[] convertIpv6ArbitraryMaskToByteArray(final Ipv6ArbitraryMask mask) {
+ public static byte[] convertIpv6ArbitraryMaskToByteArray(final Ipv6ArbitraryMask mask) {
String maskValue;
if (mask != null && mask.getValue() != null) {
maskValue = mask.getValue();
try {
maskInIpFormat = InetAddress.getByName(maskValue);
} catch (UnknownHostException e) {
- LOG.error ("Failed to convert mask string to ipv6 format mask ",e);
+ LOG.error("Failed to convert mask string to ipv6 format mask ",e);
}
return maskInIpFormat.getAddress();
}
if (byteMask == null) {
return false;
} else {
- ArrayList<Integer> integerMaskArrayList = new ArrayList<Integer>();
+ ArrayList<Integer> integerMaskArrayList = new ArrayList<>();
String maskInBits;
// converting byte array to bits
maskInBits = new BigInteger(1, byteMask).toString(2);
- ArrayList<String> stringMaskArrayList = new ArrayList<String>(Arrays.asList(maskInBits.split("(?!^)")));
+ ArrayList<String> stringMaskArrayList = new ArrayList<>(Arrays.asList(maskInBits.split("(?!^)")));
for (String string:stringMaskArrayList) {
integerMaskArrayList.add(Integer.parseInt(string));
}
return true;
} else {
//checks 1*0*1 case
- for (int i=0; i<arrayList.size()-1;i++) {
- if (arrayList.get(i) ==0 && arrayList.get(i+1) == 1) {
+ for (int i = 0; i < arrayList.size() - 1; i++) {
+ if (arrayList.get(i) == 0 && arrayList.get(i + 1) == 1) {
return true;
}
}
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Ordered;
import java.util.Comparator;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Ordered;
/**
* Comparator for comparing objects which extend Ordered.
@Override
public int compare(T obj1, T obj2) {
- if(obj1 ==null || obj2==null ) {
+ if (obj1 == null || obj2 == null) {
throw new NullPointerException("Cannot compare null Actions");
} else if (obj1.getOrder() == null) {
throw new NullPointerException(errorMsg(obj1));
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common;
/**
- * Injecting match object into chosen target
- *
- * @param <R> result to inject (e.g.: OF-API match)
+ * Injecting match object into chosen target.
+ *
+ * @param <R> result to inject (e.g.: OF-API match)
* @param <T> target of injection
*/
public interface ResultInjector<R, T> {
/**
+ * Inject result into target.
+ *
* @param result result
* @param target target
*/
void inject(R result, T target);
-
}