Remove duplicated multicast prefix declaration

(Following #7957)
Also,
Update copyright
Few documentation improvements

Change-Id: If4a6b9f168e9d7587976f1f2b59c2b59b81c6c2f
diff --git a/apps/igmp/src/main/java/org/onosproject/igmp/IgmpSnoop.java b/apps/igmp/src/main/java/org/onosproject/igmp/IgmpSnoop.java
index b9aeafb..d7c10e8 100644
--- a/apps/igmp/src/main/java/org/onosproject/igmp/IgmpSnoop.java
+++ b/apps/igmp/src/main/java/org/onosproject/igmp/IgmpSnoop.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Open Networking Laboratory
+ * Copyright 2015-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -97,11 +97,10 @@
 
     private static final int DEFAULT_QUERY_PERIOD_SECS = 60;
     private static final byte DEFAULT_IGMP_RESP_CODE = 100;
-    private static final String DEFAULT_MCAST_ADDR = "224.0.0.0/4";
 
     @Property(name = "multicastAddress",
             label = "Define the multicast base range to listen to")
-    private String multicastAddress = DEFAULT_MCAST_ADDR;
+    private String multicastAddress = IpPrefix.IPV4_MULTICAST_PREFIX.toString();
 
     @Property(name = "queryPeriod", intValue = DEFAULT_QUERY_PERIOD_SECS,
             label = "Delay in seconds between successive query runs")
@@ -243,6 +242,7 @@
     protected void modified(ComponentContext context) {
         Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
 
+        // TODO read multicastAddress from config
         String strQueryPeriod = Tools.get(properties, "queryPeriod");
         String strResponseCode = Tools.get(properties, "maxRespCode");
         try {
@@ -419,11 +419,11 @@
 
 
             if (ip.getProtocol() != IPv4.PROTOCOL_IGMP ||
-                    !IpPrefix.IPV4_MULTICAST_RANGE.contains(gaddr)) {
+                    !IpPrefix.IPV4_MULTICAST_PREFIX.contains(gaddr)) {
                 return;
             }
 
-            if (IpPrefix.IPV4_MULTICAST_RANGE.contains(saddr)) {
+            if (IpPrefix.IPV4_MULTICAST_PREFIX.contains(saddr)) {
                 log.debug("IGMP Picked up a packet with a multicast source address.");
                 return;
             }
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java b/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
index f8856e6..9fc112f 100644
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
+++ b/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Open Networking Laboratory
+ * Copyright 2015-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -67,7 +67,6 @@
 public class McastForwarding {
 
     private final Logger log = getLogger(getClass());
-    private final IpPrefix mcast = IpPrefix.valueOf("224.0.0.0/4");
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected PacketService packetService;
@@ -101,7 +100,7 @@
         // Build a traffic selector for all multicast traffic
         TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
         selector.matchEthType(Ethernet.TYPE_IPV4);
-        selector.matchIPDst(mcast);
+        selector.matchIPDst(IpPrefix.IPV4_MULTICAST_PREFIX);
 
         packetService.requestPackets(selector.build(), PacketPriority.REACTIVE, appId);
 
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
index 2dcdec7..810ff1c 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Open Networking Laboratory
+ * Copyright 2015-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.packet.EthType;
 import org.onlab.packet.IPv4;
-import org.onlab.packet.IpPrefix;
 import org.onlab.packet.VlanId;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.core.ApplicationId;
@@ -102,7 +101,8 @@
 
     private DeviceId deviceId;
     private ApplicationId appId;
-    private IpPrefix mcastPrefix = IpPrefix.valueOf("224.0.0.0/4");
+    // NOTE: OLT currently has some issue with cookie 0. Pick something larger
+    //       to avoid collision
     private AtomicLong counter = new AtomicLong(123);
 
     protected FlowObjectiveStore flowObjectiveStore;
@@ -348,7 +348,7 @@
             return false;
         }
 
-        return mcastPrefix.contains(ip.ip());
+        return ip.ip().isMulticast();
 
     }
 
diff --git a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
index 9545fa4..ab5cd02 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2014-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -321,8 +321,8 @@
      */
     public boolean isMulticast() {
         return isIp4() ?
-                Ip4Prefix.IPV4_MULTICAST_RANGE.contains(this.getIp4Address()) :
-                Ip6Prefix.IPV6_MULTICAST_RANGE.contains(this.getIp6Address());
+                Ip4Prefix.IPV4_MULTICAST_PREFIX.contains(this.getIp4Address()) :
+                Ip6Prefix.IPV6_MULTICAST_PREFIX.contains(this.getIp6Address());
     }
 
     @Override
diff --git a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
index 7812045..ef3fbe0 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2014-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -43,11 +43,11 @@
     /**
      * An IpPrefix that contains all IPv4 multicast addresses.
      */
-    public static final IpPrefix IPV4_MULTICAST_RANGE = IpPrefix.valueOf("224.0.0.0/4");
+    public static final IpPrefix IPV4_MULTICAST_PREFIX = IpPrefix.valueOf("224.0.0.0/4");
     /**
      * An IpPrefix that contains all IPv6 multicast addresses.
      */
-    public static final IpPrefix IPV6_MULTICAST_RANGE = IpPrefix.valueOf("ff00::/8");
+    public static final IpPrefix IPV6_MULTICAST_PREFIX = IpPrefix.valueOf("ff00::/8");
 
     private final IpAddress address;
     private final short prefixLength;
@@ -93,6 +93,17 @@
     }
 
     /**
+     * Check if this IP prefix is a multicast prefix.
+     *
+     * @return true if this prefix a multicast prefix
+     */
+    public boolean isMulticast() {
+        return isIp4() ?
+                IPV4_MULTICAST_PREFIX.contains(this.getIp4Prefix()) :
+                IPV6_MULTICAST_PREFIX.contains(this.getIp6Prefix());
+    }
+
+    /**
      * Returns the IP address value of the prefix.
      *
      * @return the IP address value of the prefix
diff --git a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
index 8505d10..43a9d5e 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2014-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java b/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
index 052a4cb..34e1e91 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2014-2016 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -97,6 +97,25 @@
     }
 
     /**
+     * Tests if the prefix is a multicast prefix.
+     */
+    @Test
+    public void testIsMulticast() {
+        IpPrefix v4Unicast = IpPrefix.valueOf("10.0.0.1/16");
+        IpPrefix v4Multicast = IpPrefix.valueOf("224.0.0.1/4");
+        IpPrefix v4Overlap = IpPrefix.valueOf("192.0.0.0/2");
+        IpPrefix v6Unicast = IpPrefix.valueOf("1000::1/8");
+        IpPrefix v6Multicast = IpPrefix.valueOf("ff02::1/8");
+        IpPrefix v6Overlap = IpPrefix.valueOf("ff00::1/4");
+        assertFalse(v4Unicast.isMulticast());
+        assertTrue(v4Multicast.isMulticast());
+        assertFalse(v4Overlap.isMulticast());
+        assertFalse(v6Unicast.isMulticast());
+        assertTrue(v6Multicast.isMulticast());
+        assertFalse(v6Overlap.isMulticast());
+    }
+
+    /**
      * Tests returning the IP address value and IP address prefix length of
      * an IPv4 prefix.
      */