[ONOS-5945] Initial implementation of MapReferral message type

1. Add skeleton code of LispMapReferral message type
2. Refactor LispLocatorRecord and LispMapRecord

Change-Id: Icbe6243e5892a0bfb784ba3c0daa22ab73c7e977
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispReferralRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispReferralRecord.java
new file mode 100644
index 0000000..60cb914
--- /dev/null
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispReferralRecord.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2017-present 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.lisp.msg.protocols;
+
+import java.util.List;
+
+/**
+ * LISP referral record section which is part of LISP map referral message.
+ */
+public interface LispReferralRecord extends LispRecord {
+
+    /**
+     * Obtains referral count value.
+     *
+     * @return referral count value
+     */
+    int getReferralCount();
+
+    /**
+     * Obtains signature count value.
+     *
+     * @return signature count value
+     */
+    int getSignatureCount();
+
+    /**
+     * Obtains incomplete flag.
+     *
+     * @return incomplete flag
+     */
+    boolean isIncomplete();
+
+    /**
+     * Obtains a collection of referrals.
+     *
+     * @return a collection of referrals
+     */
+    List<LispReferral> getReferrals();
+
+    /**
+     * Obtains a collection of signatures.
+     *
+     * @return a collection of signatures
+     */
+    List<LispSignature> getSignatures();
+
+    /**
+     * A builder of LISP referral record.
+     */
+    interface ReferralRecordBuilder extends RecordBuilder<ReferralRecordBuilder> {
+
+        /**
+         * Sets a collection of referrals.
+         *
+         * @param referrals a collection of referrals
+         * @return ReferralRecordBuilder object
+         */
+        ReferralRecordBuilder withReferrals(List<LispReferral> referrals);
+
+        /**
+         * Sets a collection of signatures.
+         *
+         * @param signatures a collection of signatures
+         * @return ReferralRecordBuilder object
+         */
+        ReferralRecordBuilder withSignatures(List<LispSignature> signatures);
+
+        /**
+         * Sets incomplete flag.
+         *
+         * @param incomplete incomplete flag
+         * @return ReferralRecordBuilder object
+         */
+        ReferralRecordBuilder withIsIncomplete(boolean incomplete);
+
+        /**
+         * Builds LISP referral record object.
+         *
+         * @return LISP referral record object
+         */
+        LispReferralRecord build();
+    }
+}