Bug-5644: Fix checkstyle invocation for l2switch builds
[l2switch.git] / packethandler / implementation / src / main / java / org / opendaylight / l2switch / packethandler / decoders / Ipv6Decoder.java
index b5d8e2b4609bedbbe5d777f7868bb7f6f570ca90..443cf0ce2d3eec90c9821914e68d243dfcf53579 100644 (file)
@@ -7,6 +7,12 @@
  */
 package org.opendaylight.l2switch.packethandler.decoders;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
 import org.opendaylight.l2switch.packethandler.decoders.utils.BitBufferHelper;
 import org.opendaylight.l2switch.packethandler.decoders.utils.BufferException;
@@ -30,122 +36,116 @@ import org.opendaylight.yangtools.yang.binding.NotificationListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * IPv6 Packet Decoder
  */
 public class Ipv6Decoder extends AbstractPacketDecoder<EthernetPacketReceived, Ipv6PacketReceived>
-  implements EthernetPacketListener {
-
-  private static final Logger _logger = LoggerFactory.getLogger(Ipv6Decoder.class);
-
-  public Ipv6Decoder(NotificationProviderService notificationProviderService) {
-    super(Ipv6PacketReceived.class, notificationProviderService);
-  }
-
-  /**
-   * Decode an EthernetPacket into an Ipv4Packet
-   */
-  @Override
-  public Ipv6PacketReceived decode(EthernetPacketReceived ethernetPacketReceived) {
-    Ipv6PacketReceivedBuilder ipv6ReceivedBuilder = new Ipv6PacketReceivedBuilder();
-
-    // Find the latest packet in the packet-chain, which is an EthernetPacket
-    List<PacketChain> packetChainList = ethernetPacketReceived.getPacketChain();
-    EthernetPacket ethernetPacket = (EthernetPacket)packetChainList.get(packetChainList.size()-1).getPacket();
-    int bitOffset = ethernetPacket.getPayloadOffset() * NetUtils.NumBitsInAByte;
-    byte[] data = ethernetPacketReceived.getPayload();
-
-    Ipv6PacketBuilder builder = new Ipv6PacketBuilder();
-    try {
-      builder.setVersion(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset, 4)));
-      if (builder.getVersion().intValue() != 6) {
-        _logger.debug("Version should be 6, but is " + builder.getVersion());
-      }
-
-      builder.setDscp(new Dscp(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 4, 6))));
-      builder.setEcn(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 10, 2)));
-      builder.setFlowLabel(BitBufferHelper.getLong(BitBufferHelper.getBits(data, bitOffset + 12, 20)));
-      builder.setIpv6Length(BitBufferHelper.getInt(BitBufferHelper.getBits(data, bitOffset + 32, 16)));
-      builder.setNextHeader(KnownIpProtocols.forValue(BitBufferHelper.getInt(BitBufferHelper.getBits(data, bitOffset + 48, 8))));
-      builder.setHopLimit(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 56, 8)));
-      builder.setSourceIpv6(Ipv6Address.getDefaultInstance(InetAddress.getByAddress(BitBufferHelper.getBits(data, bitOffset + 64, 128)).getHostAddress()));
-      builder.setDestinationIpv6(Ipv6Address.getDefaultInstance(InetAddress.getByAddress(BitBufferHelper.getBits(data, bitOffset + 192, 128)).getHostAddress()));
-      builder.setPayloadOffset((320 + bitOffset)/NetUtils.NumBitsInAByte);
-      builder.setPayloadLength(builder.getIpv6Length());
-
-      // Decode the optional "extension headers"
-      List<ExtensionHeaders> extensionHeaders = new ArrayList<ExtensionHeaders>();
-      KnownIpProtocols nextHeader = builder.getNextHeader();
-      int extHeaderOffset = 0;
-      while (nextHeader != null && !nextHeader.equals(KnownIpProtocols.Tcp) &&
-        !nextHeader.equals(KnownIpProtocols.Udp)) {
-        // Set the extension header's type & length & data
-        short nextHeaderType = BitBufferHelper.getShort(BitBufferHelper.getBits(data, 320 + extHeaderOffset + bitOffset, 8));
-        nextHeader = KnownIpProtocols.forValue(nextHeaderType);
-        int octetLength = BitBufferHelper.getInt(BitBufferHelper.getBits(data, 328 + extHeaderOffset + bitOffset, 8));
-        int start = ( 336 + extHeaderOffset + bitOffset) / NetUtils.NumBitsInAByte;
-        int end = start + 6 + octetLength;
-
-        extensionHeaders.add(new ExtensionHeadersBuilder()
-          .setNextHeader(nextHeader)
-          .setLength(octetLength)
-          .setData(Arrays.copyOfRange(data, start, end))
-          .build());
-
-        // Update the NextHeader field
-        extHeaderOffset += 64 + octetLength * NetUtils.NumBitsInAByte;
-      }
-      if (!extensionHeaders.isEmpty()) {
-        builder.setExtensionHeaders(extensionHeaders);
-      }
+        implements EthernetPacketListener {
+
+    private static final Logger LOG = LoggerFactory.getLogger(Ipv6Decoder.class);
+
+    public Ipv6Decoder(NotificationProviderService notificationProviderService) {
+        super(Ipv6PacketReceived.class, notificationProviderService);
     }
-    catch (BufferException | UnknownHostException e) {
-      _logger.debug("Exception while decoding IPv4 packet", e.getMessage());
+
+    /**
+     * Decode an EthernetPacket into an Ipv4Packet
+     */
+    @Override
+    public Ipv6PacketReceived decode(EthernetPacketReceived ethernetPacketReceived) {
+        Ipv6PacketReceivedBuilder ipv6ReceivedBuilder = new Ipv6PacketReceivedBuilder();
+
+        // Find the latest packet in the packet-chain, which is an
+        // EthernetPacket
+        List<PacketChain> packetChainList = ethernetPacketReceived.getPacketChain();
+        EthernetPacket ethernetPacket = (EthernetPacket) packetChainList.get(packetChainList.size() - 1).getPacket();
+        int bitOffset = ethernetPacket.getPayloadOffset() * NetUtils.NumBitsInAByte;
+        byte[] data = ethernetPacketReceived.getPayload();
+
+        Ipv6PacketBuilder builder = new Ipv6PacketBuilder();
+        try {
+            builder.setVersion(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset, 4)));
+            if (builder.getVersion().intValue() != 6) {
+                LOG.debug("Version should be 6, but is {}", builder.getVersion());
+            }
+
+            builder.setDscp(new Dscp(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 4, 6))));
+            builder.setEcn(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 10, 2)));
+            builder.setFlowLabel(BitBufferHelper.getLong(BitBufferHelper.getBits(data, bitOffset + 12, 20)));
+            builder.setIpv6Length(BitBufferHelper.getInt(BitBufferHelper.getBits(data, bitOffset + 32, 16)));
+            builder.setNextHeader(KnownIpProtocols
+                    .forValue(BitBufferHelper.getInt(BitBufferHelper.getBits(data, bitOffset + 48, 8))));
+            builder.setHopLimit(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset + 56, 8)));
+            builder.setSourceIpv6(Ipv6Address.getDefaultInstance(
+                    InetAddress.getByAddress(BitBufferHelper.getBits(data, bitOffset + 64, 128)).getHostAddress()));
+            builder.setDestinationIpv6(Ipv6Address.getDefaultInstance(
+                    InetAddress.getByAddress(BitBufferHelper.getBits(data, bitOffset + 192, 128)).getHostAddress()));
+            builder.setPayloadOffset((320 + bitOffset) / NetUtils.NumBitsInAByte);
+            builder.setPayloadLength(builder.getIpv6Length());
+
+            // Decode the optional "extension headers"
+            List<ExtensionHeaders> extensionHeaders = new ArrayList<ExtensionHeaders>();
+            KnownIpProtocols nextHeader = builder.getNextHeader();
+            int extHeaderOffset = 0;
+            while (nextHeader != null && !nextHeader.equals(KnownIpProtocols.Tcp)
+                    && !nextHeader.equals(KnownIpProtocols.Udp)) {
+                // Set the extension header's type & length & data
+                short nextHeaderType = BitBufferHelper
+                        .getShort(BitBufferHelper.getBits(data, 320 + extHeaderOffset + bitOffset, 8));
+                nextHeader = KnownIpProtocols.forValue(nextHeaderType);
+                int octetLength = BitBufferHelper
+                        .getInt(BitBufferHelper.getBits(data, 328 + extHeaderOffset + bitOffset, 8));
+                int start = (336 + extHeaderOffset + bitOffset) / NetUtils.NumBitsInAByte;
+                int end = start + 6 + octetLength;
+
+                extensionHeaders.add(new ExtensionHeadersBuilder().setNextHeader(nextHeader).setLength(octetLength)
+                        .setData(Arrays.copyOfRange(data, start, end)).build());
+
+                // Update the NextHeader field
+                extHeaderOffset += 64 + octetLength * NetUtils.NumBitsInAByte;
+            }
+            if (!extensionHeaders.isEmpty()) {
+                builder.setExtensionHeaders(extensionHeaders);
+            }
+        } catch (BufferException | UnknownHostException e) {
+            LOG.debug("Exception while decoding IPv4 packet", e.getMessage());
+        }
+
+        // build ipv6
+        packetChainList.add(new PacketChainBuilder().setPacket(builder.build()).build());
+        ipv6ReceivedBuilder.setPacketChain(packetChainList);
+
+        // carry forward the original payload.
+        ipv6ReceivedBuilder.setPayload(ethernetPacketReceived.getPayload());
+
+        return ipv6ReceivedBuilder.build();
+    }
+
+    @Override
+    public NotificationListener getConsumedNotificationListener() {
+        return this;
     }
 
-    //build ipv6
-    packetChainList.add(new PacketChainBuilder()
-      .setPacket(builder.build())
-      .build());
-    ipv6ReceivedBuilder.setPacketChain(packetChainList);
-
-    // carry forward the original payload.
-    ipv6ReceivedBuilder.setPayload(ethernetPacketReceived.getPayload());
-
-    return ipv6ReceivedBuilder.build();
-  }
-
-
-  @Override
-  public NotificationListener getConsumedNotificationListener() {
-    return this;
-  }
-
-  @Override
-  public void onEthernetPacketReceived(EthernetPacketReceived notification) {
-    decodeAndPublish(notification);
-  }
-
-  @Override
-  public boolean canDecode(EthernetPacketReceived ethernetPacketReceived) {
-    if(ethernetPacketReceived==null || ethernetPacketReceived.getPacketChain()==null)
-      return false;
-
-    // Only decode the latest packet in the chain
-    EthernetPacket ethernetPacket = null;
-    if (!ethernetPacketReceived.getPacketChain().isEmpty()) {
-      Packet packet = ethernetPacketReceived.getPacketChain().get(ethernetPacketReceived.getPacketChain().size()-1).getPacket();
-      if (packet instanceof  EthernetPacket) {
-        ethernetPacket = (EthernetPacket)packet;
-      }
+    @Override
+    public void onEthernetPacketReceived(EthernetPacketReceived notification) {
+        decodeAndPublish(notification);
     }
 
-    return ethernetPacket!=null && KnownEtherType.Ipv6.equals(ethernetPacket.getEthertype());
-  }
+    @Override
+    public boolean canDecode(EthernetPacketReceived ethernetPacketReceived) {
+        if (ethernetPacketReceived == null || ethernetPacketReceived.getPacketChain() == null)
+            return false;
+
+        // Only decode the latest packet in the chain
+        EthernetPacket ethernetPacket = null;
+        if (!ethernetPacketReceived.getPacketChain().isEmpty()) {
+            Packet packet = ethernetPacketReceived.getPacketChain()
+                    .get(ethernetPacketReceived.getPacketChain().size() - 1).getPacket();
+            if (packet instanceof EthernetPacket) {
+                ethernetPacket = (EthernetPacket) packet;
+            }
+        }
+
+        return ethernetPacket != null && KnownEtherType.Ipv6.equals(ethernetPacket.getEthertype());
+    }
 }
\ No newline at end of file