import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntriesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.MatchBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;
*/
public abstract class MatchDeserializer {
- private static final Logger LOGGER = LoggerFactory.getLogger(MatchDeserializer.class);
-
/**
* Creates match
* @param in input ByteBuf
break;
case 11:
matchEntriesBuilder.setOxmMatchField(Ipv4Src.class);
- LOGGER.warn("IPV4address(ipv4src): received but possible wrong deserialization");
addIpv4AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_INT_IN_BYTES);
break;
case 12:
matchEntriesBuilder.setOxmMatchField(Ipv4Dst.class);
- LOGGER.warn("IPV4address(ipv4dst): received but possible wrong deserialization");
addIpv4AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_INT_IN_BYTES);
break;
case 22:
matchEntriesBuilder.setOxmMatchField(ArpSpa.class);
- LOGGER.warn("IPV4address(arpspa): received but possible wrong deserialization");
addIpv4AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_INT_IN_BYTES);
break;
case 23:
matchEntriesBuilder.setOxmMatchField(ArpTpa.class);
- LOGGER.warn("IPV4address(arptpa): received but possible wrong deserialization");
addIpv4AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_INT_IN_BYTES);
break;
case 26:
matchEntriesBuilder.setOxmMatchField(Ipv6Src.class);
- // TODO - ipv6address - check format with tests
- LOGGER.warn("IPV6address(Ipv6Src): received but possible wrong deserialization");
addIpv6AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_IPV6_ADDRESS_IN_BYTES);
break;
case 27:
matchEntriesBuilder.setOxmMatchField(Ipv6Dst.class);
- // TODO - ipv6address - check format with tests
- LOGGER.warn("IPV6address(Ipv6Dst): received but possible wrong deserialization");
addIpv6AddressAugmentation(matchEntriesBuilder, in);
if (hasMask) {
addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_IPV6_ADDRESS_IN_BYTES);
break;
case 31:
matchEntriesBuilder.setOxmMatchField(Ipv6NdTarget.class);
- // TODO - ipv6address - check format with tests
- LOGGER.warn("IPV6address(Ipv6NdTarget): received but possible wrong deserialization");
addIpv6AddressAugmentation(matchEntriesBuilder, in);
break;
case 32:
Ipv6AddressMatchEntryBuilder ipv6AddressBuilder = new Ipv6AddressMatchEntryBuilder();
List<String> groups = new ArrayList<>();
for (int i = 0; i < EncodeConstants.GROUPS_IN_IPV6_ADDRESS; i++) {
- groups.add(String.format("X", in.readUnsignedShort()));
+ groups.add(String.format("%04X", in.readUnsignedShort()));
}
Joiner joiner = Joiner.on(":");
ipv6AddressBuilder.setIpv6Address(new Ipv6Address(joiner.join(groups)));
--- /dev/null
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import io.netty.buffer.ByteBuf;\r
+\r
+import java.util.List;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv4AddressMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv6AddressMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class MatchDeserializerTest {\r
+ \r
+ /**\r
+ * Testing match deserialization\r
+ */\r
+ @Test\r
+ public void testIpv4Address() {\r
+ ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 18 04 00 01 02 03");\r
+ \r
+ List<MatchEntries> list = MatchDeserializer.createMatchEntry(buffer, 8);\r
+ MatchEntries entry = list.get(0);\r
+ Assert.assertEquals("Wrong Ipv4 address format", new Ipv4Address("0.1.2.3"),\r
+ entry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address());\r
+ }\r
+ \r
+ /**\r
+ * Testing match deserialization\r
+ */\r
+ @Test\r
+ public void testIpv6Address() {\r
+ ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 34 10 00 00 00 01 00 02 00 03 00 04 00 05 00 06 0F 07");\r
+ \r
+ List<MatchEntries> list = MatchDeserializer.createMatchEntry(buffer, 20);\r
+ MatchEntries entry = list.get(0);\r
+ Assert.assertEquals("Wrong Ipv6 address format", new Ipv6Address("0000:0001:0002:0003:0004:0005:0006:0F07"),\r
+ entry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address());\r
+ }\r
+\r
+}\r