add isMulticast in IPAddress
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
index e1f739d..ad21e06 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
@@ -40,6 +40,13 @@
      */
     public abstract boolean isBroadcast();
 
+
+    /**
+     * Checks if the IPAddress is the multicast address
+     * @return boolean true or false
+     */
+    public abstract boolean isMulticast();
+
     /**
      * Perform a low level AND operation on the bits of two IPAddress objects
      * @param   other IPAddress
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
index 1530629..c9a1fec 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
@@ -90,6 +90,14 @@
         return this.equals(NO_MASK);
     }
 
+    /**
+     * IPv4 multicast addresses are defined by the leading address bits of 1110 
+     */
+    @Override
+    public boolean isMulticast() {
+        return ((rawValue >>> 24) & 0xFF) == 0xE0;
+    }
+    
     @Override
     public IPv4Address and(IPv4Address other) {
         Preconditions.checkNotNull(other, "other must not be null");
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
index 4660fc5..a402908 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
@@ -115,6 +115,14 @@
         return this.equals(NO_MASK);
     }
 
+    /**
+     * IPv4 multicast addresses are defined by the prefix ff00::/8 
+     */
+    @Override
+    public boolean isMulticast() {
+        return (raw1 >>> 56) == 0xFFL;
+    }
+    
     @Override
     public IPv6Address and(IPv6Address other) {
         Preconditions.checkNotNull(other, "other must not be null");
diff --git a/java_gen/pre-written/src/test/java/org/projectfloodlight/openflow/types/IPAddressTest.java b/java_gen/pre-written/src/test/java/org/projectfloodlight/openflow/types/IPAddressTest.java
index 2ba4528..c4d40ab 100644
--- a/java_gen/pre-written/src/test/java/org/projectfloodlight/openflow/types/IPAddressTest.java
+++ b/java_gen/pre-written/src/test/java/org/projectfloodlight/openflow/types/IPAddressTest.java
@@ -130,4 +130,15 @@
         }
     }
 
+    @Test
+    public void testMulticastIp() {
+        IPAddress<?> ip0 = IPAddress.of("1.2.3.4");
+        IPAddress<?> ip1 = IPAddress.of("224.0.0.0");
+        IPAddress<?> ip2 = IPAddress.of("feff::1");
+        IPAddress<?> ip3 = IPAddress.of("ff00::1");
+        assertTrue(!ip0.isMulticast());
+        assertTrue(ip1.isMulticast());
+        assertTrue(!ip2.isMulticast());
+        assertTrue(ip3.isMulticast());
+    }
 }