diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java
new file mode 100755
index 0000000..fc1db54
--- /dev/null
+++ b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 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.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ospf.controller;
+
+import org.onlab.packet.Ip4Address;
+
+/**
+ * Representation of an OSPF link information.
+ */
+public interface LinkInformation {
+
+    /**
+     * Gets link id.
+     *
+     * @return link id
+     */
+    String linkId();
+
+    /**
+     * Sets link id.
+     *
+     * @param linkId link id
+     */
+    void setLinkId(String linkId);
+
+    /**
+     * Gets link information is already created or not.
+     *
+     * @return true if link information is already created else false
+     */
+    boolean isAlreadyCreated();
+
+    /**
+     * Sets link information is already created or not.
+     *
+     * @param alreadyCreated true if link information is already created else false
+     */
+    void setAlreadyCreated(boolean alreadyCreated);
+
+    /**
+     * Gets is link source id is same as router id or not.
+     *
+     * @return true if link source id is not same as router id else false
+     */
+    boolean isLinkSrcIdNotRouterId();
+
+    /**
+     * Sets is link source id is same as router id or not.
+     *
+     * @param linkSrcIdNotRouterId true if link source id is not same as router id else false
+     */
+    void setLinkSrcIdNotRouterId(boolean linkSrcIdNotRouterId);
+
+    /**
+     * Gets link destination id.
+     *
+     * @return link destination id
+     */
+    Ip4Address linkDestinationId();
+
+    /**
+     * Sets link destination id.
+     *
+     * @param linkDestinationId link destination id
+     */
+    void setLinkDestinationId(Ip4Address linkDestinationId);
+
+    /**
+     * Gets link source id.
+     *
+     * @return link source id
+     */
+    Ip4Address linkSourceId();
+
+    /**
+     * Sets link source id.
+     *
+     * @param linkSourceId link source id
+     */
+    void setLinkSourceId(Ip4Address linkSourceId);
+
+    /**
+     * Gets interface ip address.
+     *
+     * @return interface ip address
+     */
+    Ip4Address interfaceIp();
+
+    /**
+     * Sets interface ip address.
+     *
+     * @param interfaceIp interface ip address
+     */
+    void setInterfaceIp(Ip4Address interfaceIp);
+
+    /**
+     * Gets link source ip address.
+     *
+     * @return link source ip address
+     */
+    Ip4Address linkSourceIpAddress();
+
+    /**
+     * Sets link source ip address.
+     *
+     * @param linkSourceIpAddress link source ip address
+     */
+    void setLinkSourceIpAddress(Ip4Address linkSourceIpAddress);
+
+    /**
+     * Gets link destination ip address.
+     *
+     * @return link destination ip address
+     */
+    Ip4Address linkDestinationIpAddress();
+
+    /**
+     * Sets link destination ip address.
+     *
+     * @param linkDestinationIpAddress link destination ip address
+     */
+    void setLinkDestinationIpAddress(Ip4Address linkDestinationIpAddress);
+}
\ No newline at end of file
