Enhancing the GUI traffic-related code.
Fixed a defect in reactive forwarding.

Change-Id: I1a91f6e5f57b39425ef06092c82b06d04c9b59a0
diff --git a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
index 18f5d0a..b452eea 100644
--- a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
@@ -132,8 +132,8 @@
             InboundPacket pkt = context.inPacket();
             Ethernet ethPkt = pkt.parsed();
 
-            // Bail if this is deemed to be a control packet.
-            if (isControlPacket(ethPkt)) {
+            // Bail if this is deemed to be a control or IPv6 multicast packet.
+            if (isControlPacket(ethPkt) || isIpv6Multicast(ethPkt)) {
                 return;
             }
 
@@ -194,6 +194,11 @@
         return type == Ethernet.TYPE_LLDP || type == Ethernet.TYPE_BSN;
     }
 
+    // Indicated whether this is an IPv6 multicast packet.
+    private boolean isIpv6Multicast(Ethernet eth) {
+        return eth.getEtherType() == Ethernet.TYPE_IPV6 && eth.isMulticast();
+    }
+
     // Selects a path from the given set that does not lead back to the
     // specified port.
     private Path pickForwardPath(Set<Path> paths, PortNumber notToPort) {