Ported the configuration reader for the SDN-IP specific configuration
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/Interface.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/Interface.java
new file mode 100644
index 0000000..33287ad
--- /dev/null
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/Interface.java
@@ -0,0 +1,101 @@
+package org.onlab.onos.sdnip.config;
+
+import java.util.Objects;
+
+import org.codehaus.jackson.annotate.JsonCreator;
+import org.codehaus.jackson.annotate.JsonProperty;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.PortNumber;
+import org.onlab.packet.IpPrefix;
+
+/**
+ * Represents an interface, which is an external-facing switch port that
+ * connects to another network.
+ * <p/>
+ * SDN-IP treats external-facing ports similarly to router ports. Logically, it
+ * assigns an IP subnetwork prefix and several IP addresses to each port which
+ * are used for communication with the BGP peers located in other networks, for
+ * example, the BGP peering sessions. The peers in other networks will be
+ * configured to peer with the IP addresses (logically) assigned to the
+ * interface. The logical {@code Interface} construct maps on to a physical
+ * port in the data plane, which of course has no notion of IP addresses.
+ * <p/>
+ * Each interface has a name, which is a unique identifying String that is used
+ * to reference this interface in the configuration (for example, to map
+ * {@link BgpPeer}s to {@code Interfaces}.
+ */
+public class Interface {
+    private final String name;
+    private final ConnectPoint switchPort;
+    private final IpPrefix ip4Prefix;
+
+    /**
+     * Class constructor used by the JSON library to create an object.
+     *
+     * @param name the name of the interface
+     * @param dpid the dpid of the switch
+     * @param port the port on the switch
+     * @param prefixAddress the network prefix address logically assigned to the
+     * interface
+     * @param prefixLength the length of the network prefix of the IP address
+     */
+    @JsonCreator
+    public Interface(@JsonProperty("name") String name,
+                     @JsonProperty("dpid") String dpid,
+                     @JsonProperty("port") int port,
+                     @JsonProperty("ipAddress") String prefixAddress,
+                     @JsonProperty("prefixLength") short prefixLength) {
+        this.name = name;
+        this.switchPort = new ConnectPoint(
+                DeviceId.deviceId(SdnIpConfigReader.dpidToUri(dpid)),
+                PortNumber.portNumber(port));
+        this.ip4Prefix = IpPrefix.valueOf(prefixAddress + "/" + prefixLength);
+    }
+
+    /**
+     * Gets the name of the interface.
+     *
+     * @return the name of the interface
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Gets the {@link SwitchPort} that this interface maps to.
+     *
+     * @return the switch port
+     */
+    public ConnectPoint getSwitchPort() {
+        return switchPort;
+    }
+
+    /**
+     * Gets the IP prefix of the subnetwork which is logically assigned
+     * to the switch port.
+     *
+     * @return the IP prefix
+     */
+   public IpPrefix getIp4Prefix() {
+        return ip4Prefix;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (!(other instanceof Interface)) {
+            return false;
+        }
+
+        Interface otherInterface = (Interface) other;
+
+        return  name.equals(otherInterface.name) &&
+                switchPort.equals(otherInterface.switchPort) &&
+                ip4Prefix.equals(otherInterface.ip4Prefix);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, switchPort, ip4Prefix);
+    }
+}