diff --git a/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java b/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
index 1ceb784..4bf196d 100644
--- a/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
+++ b/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
@@ -60,11 +60,11 @@
      * @param subnetAddress the IP subnet address
      */
     public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress) {
-        this.ipAddress = checkNotNull(ipAddress);
-        this.subnetAddress = checkNotNull(subnetAddress);
-        // TODO: Recompute the default broadcast address from the subnet
-        // address
-        this.broadcastAddress = null;
+        checkArgument(checkNotNull(ipAddress).version() == checkNotNull(subnetAddress).version(),
+            "IP and subnet version mismatch");
+        this.ipAddress = ipAddress;
+        this.subnetAddress = subnetAddress;
+        this.broadcastAddress = computeBroadcastAddress(ipAddress, subnetAddress);
         this.peerAddress = null;
     }
 
@@ -78,8 +78,10 @@
      */
     public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress,
                               IpAddress broadcastAddress) {
-        this.ipAddress = checkNotNull(ipAddress);
-        this.subnetAddress = checkNotNull(subnetAddress);
+        checkArgument(checkNotNull(ipAddress).version() == checkNotNull(subnetAddress).version(),
+            "IP and subnet version mismatch");
+        this.ipAddress = ipAddress;
+        this.subnetAddress = subnetAddress;
         this.broadcastAddress = broadcastAddress;
         this.peerAddress = null;
     }
@@ -97,8 +99,10 @@
     public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress,
                               IpAddress broadcastAddress,
                               IpAddress peerAddress) {
-        this.ipAddress = checkNotNull(ipAddress);
-        this.subnetAddress = checkNotNull(subnetAddress);
+        checkArgument(checkNotNull(ipAddress).version() == checkNotNull(subnetAddress).version(),
+            "IP and subnet version mismatch");
+        this.ipAddress = ipAddress;
+        this.subnetAddress = subnetAddress;
         this.broadcastAddress = broadcastAddress;
         this.peerAddress = peerAddress;
     }
@@ -157,6 +161,21 @@
         return new InterfaceIpAddress(addr, subnet);
     }
 
+    /**
+     * Compute the IP broadcast address.
+     *
+     * @return the IP broadcast address
+     */
+    public static IpAddress computeBroadcastAddress(IpAddress ipAddress, IpPrefix subnetAddress) {
+        if (ipAddress.isIp6()) {
+            return null;
+        } else {
+            IpAddress maskedIP = IpAddress.makeMaskedAddress(ipAddress, subnetAddress.prefixLength());
+            int ipB = maskedIP.getIp4Address().toInt() | ((1 << (32 - subnetAddress.prefixLength())) - 1);
+            return IpAddress.valueOf(ipB);
+        }
+    }
+
     @Override
     public boolean equals(Object other) {
         if (other == this) {
