From e63291850fd0795c5700e25e67e5dee89ba54c5f Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Tue, 1 Dec 2015 05:49:27 -0800 Subject: onos commit hash c2999f30c69e50df905a9d175ef80b3f23a98514 Change-Id: I2bb8562c4942b6d6a6d60b663db2e17540477b81 Signed-off-by: Ashlee Young --- .../org/onosproject/pcep/controller/PccId.java | 120 +++++++++++++++++++++ .../onosproject/pcep/controller/PcepClient.java | 110 +++++++++++++++++++ .../pcep/controller/PcepClientController.java | 93 ++++++++++++++++ .../pcep/controller/PcepClientListener.java | 36 +++++++ .../pcep/controller/PcepEventListener.java | 31 ++++++ .../pcep/controller/PcepPacketStats.java | 50 +++++++++ .../pcep/controller/driver/PcepAgent.java | 63 +++++++++++ .../pcep/controller/driver/PcepClientDriver.java | 110 +++++++++++++++++++ .../controller/driver/PcepClientDriverFactory.java | 38 +++++++ .../pcep/controller/driver/package-info.java | 20 ++++ .../onosproject/pcep/controller/package-info.java | 20 ++++ 11 files changed, 691 insertions(+) create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java create mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java create mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java create mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java create mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java create mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java create mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java (limited to 'framework/src/onos/protocols/pcep/api/src') diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java new file mode 100755 index 00000000..3ff622bf --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java @@ -0,0 +1,120 @@ +/* + * Copyright 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.pcep.controller; + +import static com.google.common.base.Preconditions.checkArgument; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Objects; + +import org.onlab.packet.IpAddress; + +/** + * The class representing a network client pc ip. + * This class is immutable. + */ +public final class PccId { + + private static final String SCHEME = "pcep"; + private static final long UNKNOWN = 0; + private final IpAddress ipAddress; + + /** + * Private constructor. + */ + private PccId(IpAddress ipAddress) { + this.ipAddress = ipAddress; + } + + /** + * Create a PccId from ip address. + * + * @param ipAddress IP address + * @return ipAddress + */ + public static PccId pccId(IpAddress ipAddress) { + return new PccId(ipAddress); + } + + /** + * Returns the ip address. + * + * @return ipAddress + */ + public IpAddress ipAddress() { + return ipAddress; + } + + /** + * Convert the PccId value to a ':' separated hexadecimal string. + * + * @return the PccId value as a ':' separated hexadecimal string. + */ + @Override + public String toString() { + return ipAddress.toString(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof PccId)) { + return false; + } + + PccId otherPccid = (PccId) other; + return Objects.equals(ipAddress, otherPccid.ipAddress); + } + + @Override + public int hashCode() { + return Objects.hash(ipAddress); + } + + /** + * Returns PccId created from the given client URI. + * + * @param uri device URI + * @return pccid + */ + public static PccId pccid(URI uri) { + checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); + return new PccId(IpAddress.valueOf(uri.getSchemeSpecificPart())); + } + + /** + * Produces client URI from the given DPID. + * + * @param pccid client pccid + * @return client URI + */ + public static URI uri(PccId pccid) { + return uri(pccid.ipAddress()); + } + + /** + * Produces client URI from the given ip address. + * + * @param ipAddress ip of client + * @return client URI + */ + public static URI uri(IpAddress ipAddress) { + try { + return new URI(SCHEME, ipAddress.toString(), null); + } catch (URISyntaxException e) { + return null; + } + } +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java new file mode 100755 index 00000000..95e7789f --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java @@ -0,0 +1,110 @@ +/* + * Copyright 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.pcep.controller; + +import java.util.List; + +import org.onosproject.pcepio.protocol.PcepFactory; +import org.onosproject.pcepio.protocol.PcepMessage; + +/** + * Represents to provider facing side of a path computation client(pcc). + */ +public interface PcepClient { + + /** + * Writes the message to the driver. + * + * @param msg the message to write + */ + void sendMessage(PcepMessage msg); + + /** + * Writes the PcepMessage list to the driver. + * + * @param msgs the messages to be written + */ + void sendMessage(List msgs); + + /** + * Handle a message from the pcc. + * + * @param fromClient the message to handle + */ + void handleMessage(PcepMessage fromClient); + + /** + * Provides the factory for this PCEP version. + * + * @return PCEP version specific factory. + */ + PcepFactory factory(); + + /** + * Gets a string version of the ID for this pcc. + * + * @return string version of the ID + */ + String getStringId(); + + /** + * Gets the ipAddress of the client. + * + * @return the client pccId in IPAddress format + */ + PccId getPccId(); + + /** + * Checks if the pcc is still connected. + * + * @return true if client is connected, false otherwise + */ + boolean isConnected(); + + /** + * Disconnects the pcc by closing the TCP connection. Results in a call + * to the channel handler's channelDisconnected method for cleanup. + */ + void disconnectClient(); + + /** + * Indicates if this pcc is optical. + * + * @return true if optical + */ + boolean isOptical(); + + /** + * Identifies the channel used to communicate with the pcc. + * + * @return string representation of the connection to the client + */ + String channelId(); + + /** + * To set the status of state synchronization. + * + * @param value to set the synchronization status + */ + void setIsSyncComplete(boolean value); + + /** + * Indicates the state synchronization status of this pcc. + * + * @return true/false if the synchronization is completed/not completed + */ + boolean isSyncComplete(); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java new file mode 100644 index 00000000..37453eac --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java @@ -0,0 +1,93 @@ +/* + * Copyright 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.pcep.controller; + +import java.util.Collection; + +import org.onosproject.pcepio.protocol.PcepMessage; + +/** + * Abstraction of an Pcep client controller. Serves as a one stop + * shop for obtaining Pcep devices and (un)register listeners + * on pcep events + */ +public interface PcepClientController { + + /** + * Returns list of pcc clients connected to this Pcep controller. + * + * @return list of PcepClient elements + */ + Collection getClients(); + + /** + * Returns the actual pcc client for the given ip address. + * + * @param pccId the id of the pcc client to fetch + * @return the interface to this pcc client + */ + PcepClient getClient(PccId pccId); + + /** + * Register a listener for meta events that occur to pcep + * devices. + * + * @param listener the listener to notify + */ + void addListener(PcepClientListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeListener(PcepClientListener listener); + + /** + * Register a listener for OF msg events. + * + * @param listener the listener to notify + */ + void addEventListener(PcepEventListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeEventListener(PcepEventListener listener); + + /** + * Send a message to a particular pcc client. + * + * @param pccId the id of the client to send message. + * @param msg the message to send + */ + void writeMessage(PccId pccId, PcepMessage msg); + + /** + * Process a message and notify the appropriate listeners. + * + * @param pccId id of the client the message arrived on + * @param msg the message to process. + */ + void processClientMessage(PccId pccId, PcepMessage msg); + + /** + * Close all connected PCC clients. + */ + void closeConnectedClients(); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java new file mode 100755 index 00000000..e7e0a736 --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java @@ -0,0 +1,36 @@ +/* + * Copyright 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.pcep.controller; + +/** + * Allows for providers interested in PCC client events to be notified. + */ +public interface PcepClientListener { + + /** + * Notify that the PCC was connected. + * + * @param pccId the id of the client that connected + */ + void clientConnected(PccId pccId); + + /** + * Notify that the PCC was disconnected. + * + * @param pccId the id of the client that disconnected. + */ + void clientDisconnected(PccId pccId); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java new file mode 100644 index 00000000..f7de215a --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java @@ -0,0 +1,31 @@ +/* + * Copyright 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.pcep.controller; + +import org.onosproject.pcepio.protocol.PcepMessage; +/** + * Notifies providers about PCEP message events. + */ +public interface PcepEventListener { + + /** + * Handles the message event. + * + * @param pccId id of the pcc + * @param msg the message + */ + void handleMessage(PccId pccId, PcepMessage msg); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java new file mode 100644 index 00000000..d00cd5a8 --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java @@ -0,0 +1,50 @@ +/* + * Copyright 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.pcep.controller; + +/** + * The representation for PCEP packet statistics. + */ +public interface PcepPacketStats { + + /** + * Returns the count for no of packets sent out. + * + * @return int value of no of packets sent + */ + int outPacketCount(); + + /** + * Returns the count for no of packets received. + * + * @return int value of no of packets sent + */ + int inPacketCount(); + + /** + * Returns the count for no of wrong packets received. + * + * @return int value of no of wrong packets received + */ + int wrongPacketCount(); + + /** + * Returns the time value. + * + * @return long value of time + */ + long getTime(); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java new file mode 100755 index 00000000..4810417c --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java @@ -0,0 +1,63 @@ +/* + * Copyright 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.pcep.controller.driver; + +import org.onosproject.pcep.controller.PccId; +import org.onosproject.pcep.controller.PcepClient; +import org.onosproject.pcepio.protocol.PcepMessage; + +/** + * Responsible for keeping track of the current set Pcep clients + * connected to the system. + * + */ +public interface PcepAgent { + + /** + * Add a pcc client that has just connected to the system. + * + * @param pccId the id of pcc client to add + * @param pc the actual pce client object. + * @return true if added, false otherwise. + */ + boolean addConnectedClient(PccId pccId, PcepClient pc); + + /** + * Checks if the activation for this pcc client is valid. + * + * @param pccId the id of pcc client to check + * @return true if valid, false otherwise + */ + boolean validActivation(PccId pccId); + + /** + * Clear all state in controller client maps for a pcc client that has + * disconnected from the local controller. Also release control for + * that pccIds client from the global repository. Notify client listeners. + * + * @param pccIds the id of pcc client to remove. + */ + void removeConnectedClient(PccId pccIds); + + /** + * Process a message coming from a pcc client. + * + * @param pccId the id of pcc client the message was received. + * @param m the message to process + */ + void processPcepMessage(PccId pccId, PcepMessage m); + +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java new file mode 100755 index 00000000..f728de54 --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java @@ -0,0 +1,110 @@ +/* + * Copyright 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.pcep.controller.driver; + +import org.jboss.netty.channel.Channel; +import org.onosproject.pcep.controller.PccId; +import org.onosproject.pcep.controller.PcepClient; +import org.onosproject.pcep.controller.PcepPacketStats; +import org.onosproject.pcepio.protocol.PcepVersion; + + +/** + * Represents the driver side of an Path computation client(pcc). + * + */ +public interface PcepClientDriver extends PcepClient { + + /** + * Sets the Pcep agent to be used. This method + * can only be called once. + * + * @param agent the agent to set. + */ + void setAgent(PcepAgent agent); + + /** + * Announce to the Pcep agent that this pcc client has connected. + * + * @return true if successful, false if duplicate switch. + */ + boolean connectClient(); + + /** + * Remove this pcc client from the Pcep agent. + */ + void removeConnectedClient(); + + /** + * Sets the PCEP version for this pcc. + * + * @param pcepVersion the version to set. + */ + void setPcVersion(PcepVersion pcepVersion); + + /** + * Sets the associated Netty channel for this pcc. + * + * @param channel the Netty channel + */ + void setChannel(Channel channel); + + + /** + * Sets the keep alive time for this pcc. + * + * @param keepAliveTime the keep alive time to set. + */ + void setPcKeepAliveTime(byte keepAliveTime); + + /** + * Sets the dead time for this pcc. + * + * @param deadTime the dead timer value to set. + */ + void setPcDeadTime(byte deadTime); + + /** + * Sets the session id for this pcc. + * + * @param sessionId the session id value to set. + */ + void setPcSessionId(byte sessionId); + + /** + * Sets whether the pcc is connected. + * + * @param connected whether the pcc is connected + */ + void setConnected(boolean connected); + + /** + * Initializes the behavior. + * + * @param pccId id of pcc + * @param pcepVersion Pcep version + * @param pktStats Pcep Packet Stats + */ + void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats); + + /** + * Checks whether the handshake is complete. + * + * @return true is finished, false if not. + */ + boolean isHandshakeComplete(); + +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java new file mode 100755 index 00000000..6ce75bca --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java @@ -0,0 +1,38 @@ +/* + * Copyright 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.pcep.controller.driver; + +import org.onlab.packet.IpAddress; +import org.onosproject.pcepio.protocol.PcepVersion; + +/** + * Pcc Client factory which returns concrete pcc client objects for the + * physical pcc client in use. + * + */ +public interface PcepClientDriverFactory { + + + /** + * Constructs the real Pcep Client representation. + * + * @param pccIpAddress the ip address for this pcc client. + * @param pcepVersion the Pcep version in use + * @return the Pcep client representation. + */ + PcepClientDriver getPcepClientImpl(IpAddress pccIpAddress, + PcepVersion pcepVersion); +} diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java new file mode 100644 index 00000000..9d105ff2 --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 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. + */ + +/** + * PCEP client controller driver API. + */ +package org.onosproject.pcep.controller.driver; diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java new file mode 100644 index 00000000..a0cb2482 --- /dev/null +++ b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 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. + */ + +/** + * PCEP client controller API. + */ +package org.onosproject.pcep.controller; -- cgit 1.2.3-korg