Description:
"Message deserialization failed...msgType: 36864 oxm_field: 6
experimenterID: null was not found - please verify that all needed
deserializers ale loaded correctly".
Observation:
The deserialization of this message failed due to the msg type of one of
the oxm fields (CtMark) was getting decoded wrongly.
This was due to the CtMarkCodec present in the packet(before the Metadata
oxm field) was decoding the field wrongly. The field doesnt have mask field
in it but still the mask it was read, ie, it was reading the next oxm field bytes too(Metadata)
thereby skipping the bytes from which the oxm Metadata is supposed to be read
and hence wrong data(skipped 4 bytes) is decoded in the next oxm field deserialization.
Fix:
The incorrect read of mask field in Ctmark codec has been removed now.
Change-Id: I79b6899686b05217df533e9ef365e9909dfc048d
Signed-off-by: gobinath <gobinath@ericsson.com>
MatchEntryBuilder matchEntryBuilder = deserializeHeaderToBuilder(message);
CtMarkCaseValueBuilder caseBuilder = new CtMarkCaseValueBuilder();
CtMarkValuesBuilder ctMarkValuesBuilder = new CtMarkValuesBuilder();
+ if (matchEntryBuilder.isHasMask()) {
+ ctMarkValuesBuilder.setMask(message.readUnsignedInt());
+ }
ctMarkValuesBuilder.setCtMark(message.readUnsignedInt());
- ctMarkValuesBuilder.setMask(message.readUnsignedInt());
caseBuilder.setCtMarkValues(ctMarkValuesBuilder.build());
matchEntryBuilder.setMatchEntryValue(caseBuilder.build());
- matchEntryBuilder.setHasMask(true);
return matchEntryBuilder.build();
}