[ONOS-6183] NET l3VPN structure and store implementation
Change-Id: I2fc9054dba07ef522b3cc879810422bd0f1f5de4
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
new file mode 100644
index 0000000..1692127
--- /dev/null
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
@@ -0,0 +1,197 @@
+/*
+ * 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.l3vpn.netl3vpn;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Representation of protocol info of the BGP info. It contains the route
+ * protocol and the interfaces which are associated with the information.
+ */
+public class ProtocolInfo {
+
+ /**
+ * Route protocol.
+ */
+ private RouteProtocol routeProtocol;
+
+ /**
+ * Interface details which uses this protocol with respect to IPV4 address.
+ */
+ private List<AccessInfo> v4Accesses;
+
+ /**
+ * Interface details which uses this protocol with respect to IPV6 address.
+ */
+ private List<AccessInfo> v6Accesses;
+
+ /**
+ * Status of IPV4 address family available.
+ */
+ private boolean ipv4Af;
+
+ /**
+ * Status of IPV6 address family available.
+ */
+ private boolean ipv6Af;
+
+ /**
+ * Process id of the protocol info.
+ */
+ private String processId;
+
+ /**
+ * Constructs protocol info.
+ */
+ public ProtocolInfo() {
+ }
+
+ /**
+ * Returns the route protocol.
+ *
+ * @return route protocol
+ */
+ RouteProtocol routeProtocol() {
+ return routeProtocol;
+ }
+
+ /**
+ * Sets the route protocol.
+ *
+ * @param routeProtocol route protocol
+ */
+ void routeProtocol(RouteProtocol routeProtocol) {
+ this.routeProtocol = routeProtocol;
+ }
+
+ /**
+ * Returns the process id.
+ *
+ * @return process id
+ */
+ String processId() {
+ return processId;
+ }
+
+ /**
+ * Sets the process id.
+ *
+ * @param processId process id.
+ */
+ void processId(String processId) {
+ this.processId = processId;
+ }
+
+ /**
+ * Returns true if the IPV4 address family uses the protocol info; false
+ * otherwise.
+ *
+ * @return true if IPV4 address family uses; false otherwise
+ */
+ boolean isIpv4Af() {
+ return ipv4Af;
+ }
+
+ /**
+ * Sets true if the IPV4 address family uses the protocol info; false
+ * otherwise.
+ *
+ * @param ipv4Af true if IPV4 interface uses; false otherwise
+ */
+ void ipv4Af(boolean ipv4Af) {
+ this.ipv4Af = ipv4Af;
+ }
+
+ /**
+ * Returns true if the IPV6 address family uses the protocol info; false
+ * otherwise.
+ *
+ * @return true if IPV6 address family uses; false otherwise
+ */
+ boolean isIpv6Af() {
+ return ipv6Af;
+ }
+
+ /**
+ * Sets true if the IPV6 address family uses the protocol info; false
+ * otherwise.
+ *
+ * @param ipv6Af true if IPV6 interface uses; false otherwise
+ */
+ void ipv6Af(boolean ipv6Af) {
+ this.ipv6Af = ipv6Af;
+ }
+
+ /**
+ * Returns the list of IPV4 network access information.
+ *
+ * @return IPV4 network accesses
+ */
+ List<AccessInfo> v4Accesses() {
+ return v4Accesses;
+ }
+
+ /**
+ * Sets the list of IPV4 network access information.
+ *
+ * @param v4Accesses IPV4 network accesses
+ */
+ void v4Accesses(List<AccessInfo> v4Accesses) {
+ this.v4Accesses = v4Accesses;
+ }
+
+ /**
+ * Adds a access info to the IPV4 network accesses.
+ *
+ * @param info IPV4 network access
+ */
+ void addV4Key(AccessInfo info) {
+ if (v4Accesses == null) {
+ v4Accesses = new LinkedList<>();
+ }
+ v4Accesses.add(info);
+ }
+
+ /**
+ * Returns the list of IPV6 network access information.
+ *
+ * @return IPV6 network accesses
+ */
+ List<AccessInfo> v6Accesses() {
+ return v6Accesses;
+ }
+
+ /**
+ * Sets the list of IPV6 network access information.
+ *
+ * @param v6Accesses IPV6 network accesses
+ */
+ void v6Accesses(List<AccessInfo> v6Accesses) {
+ this.v4Accesses = v6Accesses;
+ }
+
+ /**
+ * Adds a access info to the IPV6 network accesses.
+ * @param info IPV4 network access
+ */
+ void addV6Key(AccessInfo info) {
+ if (v6Accesses == null) {
+ v6Accesses = new LinkedList<>();
+ }
+ v6Accesses.add(info);
+ }
+}