aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java')
-rw-r--r--framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java190
1 files changed, 190 insertions, 0 deletions
diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java
new file mode 100644
index 00000000..290cc170
--- /dev/null
+++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DestinationInfo.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2014-2015 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.cordvtn;
+
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onosproject.net.Port;
+
+import java.util.List;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Contains destination information.
+ */
+public final class DestinationInfo {
+
+ private final Port output;
+ private final List<IpAddress> ip;
+ private final MacAddress mac;
+ private final IpAddress remoteIp;
+ private final long tunnelId;
+
+ /**
+ * Creates a new destination information.
+ *
+ * @param output output port
+ * @param ip destination ip address
+ * @param mac destination mac address
+ * @param remoteIp tunnel remote ip address
+ * @param tunnelId segment id
+ */
+ public DestinationInfo(Port output, List<IpAddress> ip, MacAddress mac,
+ IpAddress remoteIp, long tunnelId) {
+ this.output = checkNotNull(output);
+ this.ip = ip;
+ this.mac = mac;
+ this.remoteIp = remoteIp;
+ this.tunnelId = tunnelId;
+ }
+
+ /**
+ * Returns output port.
+ *
+ * @return port
+ */
+ public Port output() {
+ return output;
+ }
+
+ /**
+ * Returns destination ip addresses.
+ *
+ * @return list of ip address
+ */
+ public List<IpAddress> ip() {
+ return ip;
+ }
+
+ /**
+ * Returns destination mac address.
+ *
+ * @return mac address
+ */
+ public MacAddress mac() {
+ return mac;
+ }
+
+ /**
+ * Returns tunnel remote ip address.
+ *
+ * @return ip address
+ */
+ public IpAddress remoteIp() {
+ return remoteIp;
+ }
+
+ /**
+ * Returns tunnel id.
+ *
+ * @return tunnel id
+ */
+ public long tunnelId() {
+ return tunnelId;
+ }
+
+ /**
+ * Returns a new destination info builder.
+ *
+ * @return destination info builder
+ */
+ public static DestinationInfo.Builder builder(Port output) {
+ return new Builder(output);
+ }
+
+ /**
+ * DestinationInfo builder class.
+ */
+ public static final class Builder {
+
+ private final Port output;
+ private List<IpAddress> ip;
+ private MacAddress mac;
+ private IpAddress remoteIp;
+ private long tunnelId;
+
+ /**
+ * Creates a new destination information builder.
+ *
+ * @param output output port
+ */
+ public Builder(Port output) {
+ this.output = checkNotNull(output, "Output port cannot be null");
+ }
+
+ /**
+ * Sets the destination ip address.
+ *
+ * @param ip ip address
+ * @return destination info builder
+ */
+ public Builder setIp(List<IpAddress> ip) {
+ this.ip = checkNotNull(ip, "IP cannot be null");
+ return this;
+ }
+
+ /**
+ * Sets the destination mac address.
+ *
+ * @param mac mac address
+ * @return destination info builder
+ */
+ public Builder setMac(MacAddress mac) {
+ this.mac = checkNotNull(mac, "MAC address cannot be null");
+ return this;
+ }
+
+ /**
+ * Sets the tunnel remote ip address.
+ *
+ * @param remoteIp ip address
+ * @return destination info builder
+ */
+ public Builder setRemoteIp(IpAddress remoteIp) {
+ this.remoteIp = checkNotNull(remoteIp, "Remote IP address cannot be null");
+ return this;
+ }
+
+ /**
+ * Sets the tunnel id.
+ *
+ * @param tunnelId tunnel id
+ * @return destination info builder
+ */
+ public Builder setTunnelId(long tunnelId) {
+ this.tunnelId = checkNotNull(tunnelId, "Tunnel ID cannot be null");
+ return this;
+ }
+
+ /**
+ * Build a destination information.
+ *
+ * @return destination info object
+ */
+ public DestinationInfo build() {
+ return new DestinationInfo(this);
+ }
+ }
+
+ private DestinationInfo(Builder builder) {
+ output = builder.output;
+ ip = builder.ip;
+ mac = builder.mac;
+ remoteIp = builder.remoteIp;
+ tunnelId = builder.tunnelId;
+ }
+}