@Override
public MatchEntry deserialize(ByteBuf message) {
- MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message);
- RegCaseValueBuilder caseBuilder = new RegCaseValueBuilder();
- caseBuilder.setRegValues(new RegValuesBuilder().setValue(message.readUnsignedInt()).build());
- matchEntriesBuilder.setMatchEntryValue(caseBuilder.build());
- return matchEntriesBuilder.build();
+ final MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message);
+ final RegValuesBuilder regValuesBuilder = new RegValuesBuilder();
+ regValuesBuilder.setValue(message.readUnsignedInt());
+
+ if (matchEntriesBuilder.isHasMask()) {
+ regValuesBuilder.setMask(message.readUnsignedInt());
+ }
+
+ return matchEntriesBuilder
+ .setMatchEntryValue(new RegCaseValueBuilder()
+ .setRegValues(regValuesBuilder.build())
+ .build())
+ .build();
}
@Override
public void serialize(MatchEntry input, ByteBuf outBuffer) {
serializeHeader(input, outBuffer);
- RegCaseValue regCase = ((RegCaseValue) input.getMatchEntryValue());
- Long value = regCase.getRegValues().getValue();
- outBuffer.writeInt(value.intValue());
+ final RegCaseValue regCase = ((RegCaseValue) input.getMatchEntryValue());
+ outBuffer.writeInt(regCase.getRegValues().getValue().intValue());
+
+ if (input.isHasMask()) {
+ outBuffer.writeInt(regCase.getRegValues().getMask().intValue());
+ }
}
@Override
base ofoxm:match-field;
}
-
grouping ofj-nxm-nx-match-reg-grouping {
container reg-values {
leaf value {
type uint32;
}
+ leaf mask {
+ type uint32;
+ }
}
}
+
grouping ofj-oxm-of-mpls-label-grouping {
container mpls-label-values {
leaf mpls-label {
}
}
}
+
grouping ofj-nxm-nx-match-arp-sha-grouping {
container arp-sha-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-nx-match-arp-tha-grouping {
container arp-tha-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-of-match-arp-op-grouping {
container arp-op-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-match-arp-spa-grouping {
container arp-spa-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-match-arp-tpa-grouping {
container arp-tpa-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-in-port-type-grouping {
container nxm-of-in-port-values {
leaf value {
}
}
}
+
grouping ofj-nxm-nx-match-tun-ipv4-dst-grouping {
container tun-ipv4-dst-values {
leaf value {
}
}
}
+
grouping ofj-nxm-nx-match-tun-ipv4-src-grouping {
container tun-ipv4-src-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-match-eth-src-grouping {
container eth-src-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-of-match-eth-dst-grouping {
container eth-dst-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-of-match-eth-type-grouping {
container eth-type-values {
leaf value {
uses ofj-nxm-nx-match-nshc-grouping;
}
}
+
grouping ofj-nxm-nx-match-nshc-2-grouping {
container nshc-2-values {
uses ofj-nxm-nx-match-nshc-grouping;
}
}
+
grouping ofj-nxm-nx-match-nshc-3-grouping {
container nshc-3-values {
uses ofj-nxm-nx-match-nshc-grouping;
}
}
+
grouping ofj-nxm-nx-match-nshc-4-grouping {
container nshc-4-values {
uses ofj-nxm-nx-match-nshc-grouping;
}
}
+
grouping ofj-nxm-of-match-tcp-src-grouping {
container tcp-src-values {
leaf port {
}
}
}
+
grouping ofj-nxm-of-match-tcp-dst-grouping {
container tcp-dst-values {
leaf port {
}
}
}
- grouping ofj-nxm-of-match-udp-src-grouping {
+
+ grouping ofj-nxm-of-match-udp-src-grouping {
container udp-src-values {
leaf port {
type inet:port-number;
}
}
}
+
grouping ofj-nxm-of-match-udp-dst-grouping {
container udp-dst-values {
leaf port {
}
}
}
+
grouping ofj-nxm-nx-match-ct-state-grouping{
container ct-state-values {
leaf ct-state {
}
}
}
+
grouping ofj-nxm-nx-match-ct-zone-grouping{
container ct-zone-values {
leaf ct-zone {
}
}
}
+
grouping ofj-nxm-of-match-ip-dst-grouping {
container ip-dst-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-match-ip-src-grouping {
container ip-src-values {
leaf value {
}
}
}
+
grouping ofj-nxm-of-match-icmp-type-grouping {
container icmp-type-values {
leaf value {
}
}
}
+
grouping ofj-nxm-nx-match-encap-eth-type-grouping {
container encap-eth-type-values {
leaf encap-eth-type {
}
}
}
+
grouping ofj-nxm-nx-match-encap-eth-src-grouping {
container encap-eth-src-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-nx-match-encap-eth-dst-grouping {
container encap-eth-dst-values {
leaf mac-address {
}
}
}
+
grouping ofj-nxm-nx-match-nsh-mdtype-grouping {
container nsh-mdtype-values {
leaf value {
}
}
}
+
grouping ofj-nxm-nx-match-nsh-np-grouping {
container nsh-np-values {
leaf value {
}
}
}
+
grouping ofj-nxm-nx-match-tun-gpe-np-grouping {
container tun-gpe-np-values {
leaf value {
case tun-gpe-np-case-value {
uses ofj-nxm-nx-match-tun-gpe-np-grouping;
}
-
case eth-type-case-value {
uses ofj-nxm-of-match-eth-type-grouping;
}
case icmp-type-case-value {
uses ofj-nxm-of-match-icmp-type-grouping;
}
-
}
}
package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match;
import com.google.common.base.Optional;
+import java.util.Objects;
import org.opendaylight.openflowjava.nx.NiciraMatchCodecs;
import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava;
import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava;
/*
* (non-Javadoc)
- *
+ *
* @see
* org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava#convert
* (org.opendaylight.yangtools.yang.binding.DataContainer,
.getOxmMatchField());
RegCaseValue regCaseValue = ((RegCaseValue) input.getMatchEntryValue());
nxRegBuilder.setValue(regCaseValue.getRegValues().getValue());
+
+ if (input.isHasMask()) {
+ nxRegBuilder.setMask(regCaseValue.getRegValues().getMask());
+ }
+
return resolveAugmentation(nxRegBuilder.build(), path, resolveRegKey(input.getOxmMatchField()));
}
/*
* (non-Javadoc)
- *
+ *
* @see
* org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava#convert
* (org
throw new CodecPreconditionException(extension);
}
NxmNxReg nxmNxReg = matchGrouping.get().getNxmNxReg();
- RegValuesBuilder regValuesBuilder = new RegValuesBuilder().setValue(nxmNxReg.getValue());
+ RegValuesBuilder regValuesBuilder = new RegValuesBuilder()
+ .setValue(nxmNxReg.getValue())
+ .setMask(nxmNxReg.getMask());
+
RegCaseValueBuilder regCaseValueBuilder = new RegCaseValueBuilder();
regCaseValueBuilder.setRegValues(regValuesBuilder.build());
return MatchUtil.createDefaultMatchEntryBuilder(nxmNxReg.getReg(),
Nxm1Class.class,
- regCaseValueBuilder.build()).build();
+ regCaseValueBuilder.build())
+ .setHasMask(Objects.nonNull(nxmNxReg.getMask()))
+ .build();
}
}