[ONOS-4209] Unsuccessful PCEP session formation between ONOS and IOS XR
Change-Id: Ic509c50c5cef39e5f1a5319570f8c9406177b788
diff --git a/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/ClientCapability.java b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/ClientCapability.java
new file mode 100644
index 0000000..e2b5092
--- /dev/null
+++ b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/ClientCapability.java
@@ -0,0 +1,97 @@
+/*
+ * 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.pcep.controller;
+
+import java.util.Objects;
+
+import com.google.common.base.MoreObjects;
+
+/**
+ * Representation of capabilities supported by client.
+ */
+public class ClientCapability {
+ private boolean pceccCapability;
+ private boolean statefulPceCapability;
+ private boolean pcInstantiationCapability;
+
+ /**
+ * Creates new instance of client capability.
+ *
+ * @param pceccCapability represents PCECC capability
+ * @param statefulPceCapability represents stateful PCE capability
+ * @param pcInstantiationCapability represents PC initiation capability
+ */
+ public ClientCapability(boolean pceccCapability, boolean statefulPceCapability, boolean pcInstantiationCapability) {
+ this.pceccCapability = pceccCapability;
+ this.statefulPceCapability = statefulPceCapability;
+ this.pcInstantiationCapability = pcInstantiationCapability;
+ }
+
+ /**
+ * Obtains PCECC capability.
+ *
+ * @return true if client supports PCECC capability otherwise false
+ */
+ public boolean pceccCapability() {
+ return pceccCapability;
+ }
+
+ /**
+ * Obtains stateful PCE capability.
+ *
+ * @return true if client supports stateful PCE capability otherwise false
+ */
+ public boolean statefulPceCapability() {
+ return statefulPceCapability;
+ }
+
+ /**
+ * Obtains PC initiation capability.
+ *
+ * @return true if client supports PC initiation capability otherwise false
+ */
+ public boolean pcInstantiationCapability() {
+ return pcInstantiationCapability;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pceccCapability, statefulPceCapability, pcInstantiationCapability);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof ClientCapability) {
+ ClientCapability other = (ClientCapability) obj;
+ return Objects.equals(pceccCapability, other.pceccCapability)
+ && Objects.equals(statefulPceCapability, other.statefulPceCapability)
+ && Objects.equals(pcInstantiationCapability, other.pcInstantiationCapability);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("pceccCapability", pceccCapability)
+ .add("statefulPceCapability", statefulPceCapability)
+ .add("pcInstantiationCapability", pcInstantiationCapability)
+ .toString();
+ }
+}
\ No newline at end of file
diff --git a/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java
old mode 100755
new mode 100644
index 11e4a69..5e3996a
--- a/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java
+++ b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java
@@ -107,4 +107,18 @@
* @return true/false if the synchronization is completed/not completed
*/
boolean isSyncComplete();
+
+ /**
+ * Sets capability negotiated during open message exchange.
+ *
+ * @param capability supported by client
+ */
+ void setCapability(ClientCapability capability);
+
+ /**
+ * Obtains capability supported by client.
+ *
+ * @return capability supported by client
+ */
+ ClientCapability capability();
}