Phaneendra Manda
Committed by Gerrit Code Review

Interfaces added for PCEP messages and PCEP Controller

Change-Id: Id678b6832b42bcf4a437322996244d224c4052d0
Showing 74 changed files with 8364 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2014 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller</artifactId>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcep-controller-api</artifactId>
<packaging>bundle</packaging>
<description>ONOS Pcep controller subsystem API</description>
<dependencies>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcepio</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-api</artifactId>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onlab-misc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<artifactSet>
<excludes>
<exclude>io.netty:netty</exclude>
<exclude>com.google.guava:guava</exclude>
<exclude>org.slf4j:slfj-api</exclude>
<exclude>ch.qos.logback:logback-core</exclude>
<exclude>ch.qos.logback:logback-classic</exclude>
<exclude>com.google.code.findbugs:annotations</exclude>
</excludes>
</artifactSet>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Export-Package>
org.onosproject.pcep.*,org.onosproject.pcepio.*
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
/*
* 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;
}
}
}
/*
* 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
*/
public void sendMessage(PcepMessage msg);
/**
* Writes the PcepMessage list to the driver.
*
* @param msgs the messages to be written
*/
public void sendMessage(List<PcepMessage> msgs);
/**
* Handle a message from the pcc.
*
* @param fromClient the message to handle
*/
public void handleMessage(PcepMessage fromClient);
/**
* Provides the factory for this PCEP version.
*
* @return PCEP version specific factory.
*/
public PcepFactory factory();
/**
* Gets a string version of the ID for this pcc.
*
* @return string version of the ID
*/
public String getStringId();
/**
* Gets the ipAddress of the client.
*
* @return the client pccId in IPAddress format
*/
public PccId getPccId();
/**
* Checks if the pcc is still connected.
*
* @return true if client is connected, false otherwise
*/
public boolean isConnected();
/**
* Disconnects the pcc by closing the TCP connection. Results in a call
* to the channel handler's channelDisconnected method for cleanup.
*/
public void disconnectClient();
/**
* Indicates if this pcc is optical.
*
* @return true if optical
*/
public boolean isOptical();
/**
* Identifies the channel used to communicate with the pcc.
*
* @return string representation of the connection to the client
*/
public String channelId();
/**
* To set the status of state synchronization.
*
* @param value to set the synchronization status
*/
public void setIsSyncComplete(boolean value);
/**
* Indicates the state synchronization status of this pcc.
*
* @return true/false if the synchronization is completed/not completed
*/
public boolean isSyncComplete();
}
/*
* 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.PcepMessage;
/**
* Abstraction of an Pcep 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
*/
public List<PcepClient> 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
*/
public PcepClient getClient(PccId pccId);
/**
* Register a listener for meta events that occur to pcep
* devices.
*
* @param listener the listener to notify
*/
public void addListener(PcepClientListener listener);
/**
* Unregister a listener.
*
* @param listener the listener to unregister
*/
public void removeListener(PcepClientListener listener);
/**
* Register a listener for OF msg events.
*
* @param listener the listener to notify
*/
public void addEventListener(PcepEventListener listener);
/**
* Unregister a listener.
*
* @param listener the listener to unregister
*/
public 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
*/
public 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.
*/
public void processClientMessage(PccId pccId, PcepMessage msg);
/**
* Close all connected PCC clients.
*/
public void closeConnectedClients();
}
/*
* 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
*/
public void clientConnected(PccId pccId);
/**
* Notify that the PCC was disconnected.
*
* @param pccId the id of the client that disconnected.
*/
public void clientDisconnected(PccId pccId);
}
/*
* 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 msg events.
*/
public interface PcepEventListener {
/**
* Handles the message event.
*
* @param pccId id of the pcc
* @param msg the message
*/
public void handleMessage(PccId pccId, PcepMessage msg);
}
/*
* 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
*/
public int outPacketCount();
/**
* Returns the count for no of packets received.
*
* @return int value of no of packets sent
*/
public int inPacketCount();
/**
* Returns the count for no of wrong packets received.
*
* @return int value of no of wrong packets received
*/
public int wrongPacketCount();
/**
* Returns the time value.
*
* @return long value of time
*/
public long getTime();
/**
* Sets the time value.
*
* @param time long value of time
*/
public void setTime(long time);
}
/*
* 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.
*/
public 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
*/
public 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.
*/
public 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
*/
public void processPcepMessage(PccId pccId, PcepMessage m);
}
/*
* 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.
*/
public void setAgent(PcepAgent agent);
/**
* Announce to the Pcep agent that this pcc client has connected.
*
* @return true if successful, false if duplicate switch.
*/
public boolean connectClient();
/**
* Remove this pcc client from the Pcep agent.
*/
public void removeConnectedClient();
/**
* Sets the PCEP version for this pcc.
*
* @param pcepVersion the version to set.
*/
public void setPcVersion(PcepVersion pcepVersion);
/**
* Sets the associated Netty channel for this pcc.
*
* @param channel the Netty channel
*/
public void setChannel(Channel channel);
/**
* Sets the keep alive time for this pcc.
*
* @param keepAliveTime the keep alive time to set.
*/
public void setPcKeepAliveTime(byte keepAliveTime);
/**
* Sets the dead time for this pcc.
*
* @param deadTime the dead timer value to set.
*/
public void setPcDeadTime(byte deadTime);
/**
* Sets the session id for this pcc.
*
* @param sessionId the session id value to set.
*/
public void setPcSessionId(byte sessionId);
/**
* Sets whether the pcc is connected.
*
* @param connected whether the pcc is connected
*/
public 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();
}
/*
* 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.
*/
public PcepClientDriver getPcepClientImpl(IpAddress pccIpAddress,
PcepVersion pcepVersion);
}
/*
* 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 controller driver API.
*/
package org.onosproject.pcep.controller.driver;
/*
* 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 controller API.
*/
package org.onosproject.pcep.controller;
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2014 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller</artifactId>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcepio</artifactId>
<packaging>bundle</packaging>
<description>ONOS Pcepio Protocol subsystem</description>
<dependencies>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-api</artifactId>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onlab-osgi</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.karaf.shell</groupId>
<artifactId>org.apache.karaf.shell.console</artifactId>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
/*
* 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.pcepio.exceptions;
/**
* Custom Exception for PCEP IO.
*/
public class PcepParseException extends Exception {
private static final long serialVersionUID = 7960991379951448423L;
private byte errType = 0;
private byte errValue = 0;
/**
* Default constructor to create a new exception.
*/
public PcepParseException() {
super();
}
/**
* Constructor to create exception from message and cause.
*
* @param message the detail of exception in string
* @param cause underlying cause of the error
*/
public PcepParseException(final String message, final Throwable cause) {
super(message, cause);
}
/**
* Constructor to create exception from message.
*
* @param message the detail of exception in string
*/
public PcepParseException(final String message) {
super(message);
}
/**
* Constructor to create exception from error type and error value.
*
* @param errType error type of pcep
* @param errValue error value of pcep
*/
public PcepParseException(final byte errType, final byte errValue) {
super();
this.errType = errType;
this.errValue = errValue;
}
/**
* Constructor to create exception from cause.
*
* @param cause underlying cause of the error
*/
public PcepParseException(final Throwable cause) {
super(cause);
}
/**
* Returns error type for this exception.
*
* @return ErrorType
*/
public byte getErrorType() {
return this.errType;
}
/**
* Returns error value for this exception.
*
* @return ErrorValue
*/
public byte getErrorValue() {
return this.errValue;
}
}
/*
* 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.pcepio.exceptions;
/**
* Custom exception for Tunnel Attributes.
*/
public class PcepTunnelAttributeException extends Exception {
private static final long serialVersionUID = 7860981378961458434L;
/**
* Default constructor to create a new exception.
*/
public PcepTunnelAttributeException() {
super();
}
/**
* Constructor to create exception from message and cause.
*
* @param message the detail of exception in string
* @param cause underlying cause of the error
*/
public PcepTunnelAttributeException(final String message, final Throwable cause) {
super(message, cause);
}
/**
* Constructor to create exception from message.
*
* @param message the detail of exception in string
*/
public PcepTunnelAttributeException(final String message) {
super(message);
}
/**
* Constructor to create exception from cause.
*
* @param cause underlying cause of the error
*/
public PcepTunnelAttributeException(final Throwable cause) {
super(cause);
}
}
/*
* 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.pcepio.protocol;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity Provides PcInitiatedLspRequest for PCEP Initiate message.
* Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03.
*/
public interface PcInitiatedLspRequest {
/**
* Returns object of PcepSrpObject.
*
* @return srpObject PCEP SRP object
*/
PcepSrpObject getSrpObject();
/**
* Returns object of PcepLspObject.
*
* @return lspObject PCEP LSP object
*/
PcepLspObject getLspObject();
/**
* Returns object of PcepEndPointsObject.
*
* @return endPointsObject PCEP EndPoints object
*/
PcepEndPointsObject getEndPointsObject();
/**
* Returns object of PcepEroObject.
*
* @return eroObject PCEP ERO object
*/
PcepEroObject getEroObject();
/**
* Returns object of PcepAttribute.
*
* @return pcepAttribute PCEP Attributes
*/
PcepAttribute getPcepAttribute();
/**
* Sets PcepSrpObject.
*
* @param srpobj PCEP SRP object
*/
void setSrpObject(PcepSrpObject srpobj);
/**
* Sets PcepLspObject.
*
* @param lspObject PCEP LSP object
*/
void setLspObject(PcepLspObject lspObject);
/**
* Sets PcepEndPointsObject.
*
* @param endPointsObject PCEP EndPoints object
*/
void setEndPointsObject(PcepEndPointsObject endPointsObject);
/**
* Sets PcepEroObject.
*
* @param eroObject PCEP ERO object
*/
void setEroObject(PcepEroObject eroObject);
/**
* Sets PcepAttribute.
*
* @param pcepAttribute PCEP Attributes
*/
void setPcepAttribute(PcepAttribute pcepAttribute);
/**
* Prints the attribute of PC-INITIATED LSP INITIATION REQUEST.
*/
void print();
/**
* Builder interface with get and set functions to build PcInitiatedLspRequest.
*/
public interface Builder {
/**
* Builds PcInitiatedLspRequest.
*
* @return PcInitiatedLspRequest
* @throws PcepParseException when mandatory object is not set
*/
PcInitiatedLspRequest build() throws PcepParseException;
/**
* Returns object of PcepSrpObject.
*
* @return srpObject
*/
PcepSrpObject getSrpObject();
/**
* Returns object of PcepLspObject.
*
* @return lspObject
*/
PcepLspObject getLspObject();
/**
* Returns object of PcepEndPointsObject.
*
* @return endPointsObject
*/
PcepEndPointsObject getEndPointsObject();
/**
* Returns object of PcepEroObject.
*
* @return eroObject
*/
PcepEroObject getEroObject();
/**
* Returns object of PcepAttribute.
*
* @return pcepAttribute
*/
PcepAttribute getPcepAttribute();
/**
* Sets PcepSrpObject.
*
* @param srpobj PCEP SRP Object
* @return builder by setting PcepSrpObject
*/
Builder setSrpObject(PcepSrpObject srpobj);
/**
* Sets PcepLspObject.
*
* @param lspObject PCEP LSP Object
* @return builder by setting PcepLspObject
*/
Builder setLspObject(PcepLspObject lspObject);
/**
* Sets PcepEndPointsObject.
*
* @param endPointsObject EndPoints Object
* @return builder by setting PcepEndPointsObject
*/
Builder setEndPointsObject(PcepEndPointsObject endPointsObject);
/**
* Sets PcepEroObject.
*
* @param eroObject PCEP ERO Object
* @return builder by setting PcepEroObject
*/
Builder setEroObject(PcepEroObject eroObject);
/**
* Sets PcepAttribute.
*
* @param pcepAttribute PCEP Attributes
* @return builder by setting PcepAttribute
*/
Builder setPcepAttribute(PcepAttribute pcepAttribute);
}
}
/*
* 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.pcepio.protocol;
/**
* Abstraction of an entity which Provides List of PCEP Attributes.
*/
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
public interface PcepAttribute {
/**
* writes lspa , bandwidth , Metriclist and Iro objects to the channel.
*
* @param bb of type channel buffer.
* @return object length index.
* @throws PcepParseException while writing objects to channel buffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Returns PcepLspaObject.
*
* @return LspaObject
*/
PcepLspaObject getLspaObject();
/**
* Returns PcepBandwidthObject.
*
* @return BandwidthObject
*/
PcepBandwidthObject getBandwidthObject();
/**
* Returns PcepIroObject.
*
* @return iroObject
*/
PcepIroObject getIroObject();
/**
* Sets the PcepBandwidthObject.
*
* @param bandwidthObject bandwidth object
*/
void setBandwidthObject(PcepBandwidthObject bandwidthObject);
/**
* Sets the PcepLspaObject.
*
* @param lspaObject lspa object
*/
void setLspaObject(PcepLspaObject lspaObject);
/**
* Sets the PcepIroObject.
*
* @param iroObject iro object
*/
void setIroObject(PcepIroObject iroObject);
/**
* Returns PcepMetricObject List.
*
* @return list of metric objects
*/
LinkedList<PcepMetricObject> getMetricObjectList();
/**
* Sets PcepMetricObject List.
*
* @param llMetricList list of metric objects
*/
void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList);
/**
* Prints the attributes of AttributeList.
*/
public void print();
/**
* Builder interface with get and set functions to build PcepAttribute.
*/
public interface Builder {
/**
* Builds PcepAttribute.
*
* @return PcepAttribute
*/
PcepAttribute build();
/**
* Returns PcepLspaObject.
*
* @return LspaObject
*/
PcepLspaObject getLspaObject();
/**
* Returns PcepBandwidthObject.
*
* @return BandwidthObject
*/
PcepBandwidthObject getBandwidthObject();
/**
* Returns PcepIroObject.
*
* @return iroObject
*/
PcepIroObject getIroObject();
/**
* Sets the PcepBandwidthObject.
*
* @param bandwidthObject bandwidth object
* @return Builder object for PcepAttrubute
*/
Builder setBandwidthObject(PcepBandwidthObject bandwidthObject);
/**
* Sets the PcepLspaObject.
*
* @param lspaObject lspa object
* @return Builder object for PcepAttrubute
*/
Builder setLspaObject(PcepLspaObject lspaObject);
/**
* Sets the PcepIroObject.
*
* @param iroObject iro object
* @return Builder object for PcepAttrubute
*/
Builder setIroObject(PcepIroObject iroObject);
/**
* Returns PcepMetricObject List.
*
* @return list of metric objects
*/
LinkedList<PcepMetricObject> getMetricObjectList();
/**
* Sets PcepMetricObject List.
*
* @param llMetricList list of metric objects
* @return Builder object for PcepAttrubute
*/
Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP Bandwidth Object.
*/
public interface PcepBandwidthObject {
/**
* Returns bandwidth value.
*
* @return bandwidth value
*/
int getBandwidth();
/**
* Sets bandwidth with specified value.
*
* @param iBandwidth Bandwidth's value
*/
void setBandwidth(int iBandwidth);
/**
* Prints attributes of bandwidth object.
*/
void print();
/**
* Writes the BandwidthObject into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException if bandwidth object header fails to write in channel buffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build bandwidth object.
*/
public interface Builder {
/**
* Builds BandwidthObject.
*
* @return BandwidthObject
* @throws PcepParseException if build fails while creating PcepBandwidthObject
*/
PcepBandwidthObject build() throws PcepParseException;
/**
* Returns bandwidth object header.
*
* @return bandwidth object header
*/
PcepObjectHeader getBandwidthObjHeader();
/**
* Sets bandwidth object header and returns its builder.
*
* @param obj Bandwidth object header
* @return Builder by setting Bandwidth object header
*/
Builder setBandwidthObjHeader(PcepObjectHeader obj);
/**
* Returns bandwidth value.
*
* @return bandwidth
*/
int getBandwidth();
/**
* Sets bandwidth value and return its builder.
*
* @param iBandwidth bandwidth value
* @return Builder by setting bandwidth
*/
Builder setBandwidth(int iBandwidth);
/**
* Sets P flag in Bandwidth object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Bandwidth object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP Close Message.
*/
public interface PcepCloseMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns reason field in Close message.
*
* @return reason field
*/
byte getReason();
/**
* Sets reason field in Close message with specified value.
*
* @param value of Reason field
*/
void setReason(byte value);
/**
* Returns LinkedList of Optional Tlv in Close Message.
*
* @return list of optional tlv
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets LinkedList of Optional Tlvs in Close Message.
*
* @param llOptionalTlv LinkedList of type PcepValueType
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
@Override
void writeTo(ChannelBuffer channelBuffer);
/**
* Builder interface with get and set functions to build Close message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepCloseMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns Close Object header.
*
* @return Close Object header
*/
PcepObjectHeader getCloseObjHeader();
/**
* Sets close object header and returns its builder.
*
* @param obj close object header
* @return Builder by setting Close object header
*/
Builder setCloseObjHeader(PcepObjectHeader obj);
/**
* Returns reason field in Close message.
*
* @return reason field in Close message
*/
byte getReason();
/**
* Sets reason field and return its builder.
*
* @param value of Reason field
* @return builder by setting reason field
*/
Builder setReason(byte value);
/**
* Returns LinkedList of Optional Tlvs.
*
* @return list of optional tlv
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets LinkedList of Optional Tlvs in Close Message.
*
* @param llOptionalTlv list of optional tlv
* @return Builder by setting Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in Close object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Close object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP End Points Object.
*/
public interface PcepEndPointsObject {
/**
* Returns Source IpAddress from End Points Object.
*
* @return Source IpAddress from End Points Object
*/
int getSourceIpAddress();
/**
* Sets Source IpAddress in End Points Object.
*
* @param sourceIpAddress Source IP Address
*/
void setSourceIpAddress(int sourceIpAddress);
/**
* Returns Destination IpAddress from End Points Object.
*
* @return Destination IpAddress from End Points Object
*/
int getDestIpAddress();
/**
* Sets Destination IpAddress in End Points Object.
*
* @param destIpAddress Destination IP Address
*/
void setDestIpAddress(int destIpAddress);
/**
* Prints attributes of EndPoints object.
*/
void print();
/**
* Writes the EndPointsObject into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing EndPointObject into ChannelBuffer
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build EndPoints object.
*/
public interface Builder {
/**
* Builds End Points Object.
*
* @return End Points Object
* @throws PcepParseException while building EndPointObject
*/
PcepEndPointsObject build() throws PcepParseException;
/**
* Returns End Points Object header.
*
* @return End Points Object header
*/
PcepObjectHeader getEndPointsObjHeader();
/**
* Sets End Points Object header and returns its builder.
*
* @param obj End Points Object header
* @return Builder by setting End Points Object header
*/
Builder setEndPointsObjHeader(PcepObjectHeader obj);
/**
* Returns Source IpAddress from End Points Object.
*
* @return Source IpAddress from End Points Object
*/
int getSourceIpAddress();
/**
* Sets Source IpAddress in End Points Object and returns builder.
*
* @param sourceIpAddress Source IP Address
* @return Builder by setting Source IpAddress in End Points Object
*/
Builder setSourceIpAddress(int sourceIpAddress);
/**
* Returns Destination IpAddress from End Points Object.
*
* @return Destination IpAddress from End Points Object
*/
int getDestIpAddress();
/**
* Sets Destination IpAddress in End Points Object.
*
* @param destIpAddress Destination IP Address
* @return Builder by setting Destination IpAddress in End Points Object
*/
Builder setDestIpAddress(int destIpAddress);
/**
* Sets P flag in Bandwidth object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Bandwidth object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP ERO Object.
*/
public interface PcepEroObject {
/**
* Return LinkedList of SubObjects of ERO Object.
*
* @return list of subobjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets LinkedList of SubObjects in ERO Object.
*
* @param llSubObjects list of subobjects
*/
void setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Writes the ERO Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing ERO Object into ChannelBuffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints attributes of ERO object.
*/
void print();
/**
* Builder interface with get and set functions to build ERO object.
*/
public interface Builder {
/**
* Builds ERO Object.
*
* @return ERO Object
*/
PcepEroObject build();
/**
* Returns ERO Object Header.
*
* @return ERO Object Header
*/
PcepObjectHeader getEroObjHeader();
/**
* Sets ERO Object header and returns its builder.
*
* @param obj ERO Object header
* @return Builder by setting ERO Object header
*/
Builder setEroObjHeader(PcepObjectHeader obj);
/**
* Returns LinkedList of SubObjects in ERO Objects.
*
* @return list of subobjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets LinkedList of SubObjects and returns its builder.
*
* @param llSubObjects list of SubObjects
* @return Builder by setting list of SubObjects
*/
Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Sets P flag in ERO object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in ERO object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity which provides PCEP error for PCEP error message.
*/
public interface PcepError {
/**
* Returns the PcepRPObject List.
*
* @return list of type PcepRPObject
*/
LinkedList<PcepRPObject> getRPObjList();
/**
* Sets the RP Objects lists.
*
* @param llRPObjList list of type PcepRPObject
*/
void setRPObjList(LinkedList<PcepRPObject> llRPObjList);
/**
* Returns the PcepTEObject List.
*
* @return list of type PcepTEObject
*/
LinkedList<PcepTEObject> getTEObjList();
/**
* Sets the TE Objects lists.
*
* @param llTEObjList list of type PcepTEObject
*/
void setTEObjList(LinkedList<PcepTEObject> llTEObjList);
/**
* Returns the PcepErrorObject.
*
* @return list of type PcepErrorObject
*/
LinkedList<PcepErrorObject> getErrorObjList();
/**
* Sets the Error Objects lists.
*
* @param llErrorObjList list of type PcepErrorObject
*/
public void setErrorObjList(LinkedList<PcepErrorObject> llErrorObjList);
/**
* Writes the byte stream of PCEP error to the channel buffer.
*
* @param bb of type channel buffer
* @return object length index
* @throws PcepParseException while writing Error part into ChannelBuffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints the attributes of PCEP Error.
*/
public void print();
/**
* Builder interface with get and set functions to build PcepError.
*/
public interface Builder {
/**
* Builds PcepError Object.
*
* @return PcepError Object
*/
PcepError build();
/**
* Returns the PcepRPObject.
*
* @return list of type PcepRPObject
*/
LinkedList<PcepRPObject> getRPObjList();
/**
* Sets RP Object lists and returns its builder.
*
* @param llRPObjList list of type PcepRpObject
* @return builder by setting Linked list of RP Object
*/
Builder setRPObjList(LinkedList<PcepRPObject> llRPObjList);
/**
* Returns the PcepTEObject.
*
* @return llTEObjList of type PcepTEObject
*/
LinkedList<PcepTEObject> getTEObjList();
/**
* Sets TE Object lists and returns its builder.
*
* @param llTEObjList list of type PcepTEObject
* @return builder by setting list of type PcepTEObject
*/
Builder setTEObjList(LinkedList<PcepTEObject> llTEObjList);
/**
* Returns the PcepErrorObject.
*
* @return list of type PcepErrorObject
*/
LinkedList<PcepErrorObject> getErrorObjList();
/**
* Sets Error Object lists and returns its builder.
*
* @param llErrorObjList list of type PcepErrorObject
* @return builder by setting list of type PcepErrorObject
*/
Builder setErrorObjList(LinkedList<PcepErrorObject> llErrorObjList);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity which provides PCEP Error Info.
* Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02.
*/
public interface PcepErrorInfo {
/**
* Returns whether error info list is present or not.
*
* @return true if error info present, false otherwise
*/
public boolean isErrorInfoPresent();
/**
* Reads from channel buffer for TE and RP objects.
*
* @param bb of channel buffer
* @throws PcepParseException while parsing Error info part.
*/
public void read(ChannelBuffer bb) throws PcepParseException;
/**
* Writes byte stream of PCEP error info to channel buffer.
*
* @param bb of type channel buffer
* @throws PcepParseException while writing Error info part into Channel Buffer.
*/
public void write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints the attributes of error info list.
*/
public void print();
/**
* Returns Error Value in PCEP-ERROR Object.
*
* @return list of Error Value in PCEP-ERROR Object
*/
public LinkedList<Integer> getErrorValue();
/**
* Returns Error Type in PCEP-ERROR Object.
*
* @return list of Error Type in PCEP-ERROR Object
*/
public LinkedList<Integer> getErrorType();
/**
* Builder interface with get and set functions to build ErrorInfo.
*/
public interface Builder {
/**
* Builds ErrorInfo Object.
*
* @return ErrorInfo Object.
*/
PcepErrorInfo build();
/**
* Returns list of PcepError.
*
* @return list of PcepError
*/
LinkedList<PcepError> getPcepErrorList();
/**
* Sets PcepError lists and returns its builder.
*
* @param llPcepErrorList list of PcepError
* @return builder by setting list of PcepError.
*/
Builder setPcepErrorList(LinkedList<PcepError> llPcepErrorList);
}
}
package org.onosproject.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.types.ErrorObjListWithOpen;
/**
* Abstraction of an entity providing PCEP Error Message.
*/
public interface PcepErrorMsg extends PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns Object of ErrorObjListWithOpen.
*
* @return Object of ErrorObjListWithOpen
*/
public ErrorObjListWithOpen getErrorObjListWithOpen();
/**
* Sets errObjListWithOpen object.
*
* @param errObjListWithOpen error object List with open object
*/
public void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen);
/**
* Returns Object of PcepErrorInfo.
*
* @return Object of PcepErrorInfo
*/
public PcepErrorInfo getPcepErrorInfo();
/**
* Sets errInfo Object.
*
* @param errInfo error information
*/
public void setPcepErrorInfo(PcepErrorInfo errInfo);
@Override
void writeTo(ChannelBuffer channelBuffer);
/**
* Builder interface with get and set functions to build PCEP Error message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepErrorMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns Object of ErrorObjListWithOpen.
*
* @return Object of ErrorObjListWithOpen
*/
public ErrorObjListWithOpen getErrorObjListWithOpen();
/**
* Sets errObjListWithOpen object.
*
* @param errObjListWithOpen error object with open object
* @return builder by setting Object of ErrorObjListWithOpen
*/
public Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen);
/**
* Returns Object of PcepErrorInfo.
*
* @return Object of PcepErrorInfo
*/
public PcepErrorInfo getPcepErrorInfo();
/**
* Sets errInfo Object.
*
* @param errInfo error information
* @return builder by getting Object of PcepErrorInfo
*/
public Builder setPcepErrorInfo(PcepErrorInfo errInfo);
}
}
package org.onosproject.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP Error Object.
*/
public interface PcepErrorObject {
/**
* Returns Error Type in Error Object.
*
* @return Error Type in Error Object
*/
int getErrorType();
/**
* Sets Error Type in Error Object.
*
* @param value Error Type
*/
void setErrorType(byte value);
/**
* Returns Error Value in Error Object.
*
* @return Error Value
*/
byte getErrorValue();
/**
* Sets Error Value in Error Object.
*
* @param value Error Value
*/
void setErrorValue(byte value);
/**
* Returns Optional Tlvs in Error Object.
*
* @return list of Optional Tlvs in Error Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets Optional Tlvs in Error Object.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of Error object.
*/
void print();
/**
* Writes the Error Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing Error Object into ChannelBuffer
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build Error object.
*/
public interface Builder {
/**
* Builds Error Object.
*
* @return Error Object.
*/
PcepErrorObject build();
/**
* Returns Error Object header.
*
* @return Error Object header
*/
PcepObjectHeader getErrorObjHeader();
/**
* Sets Error Object header and returns its Builder.
*
* @param obj Error Object header
* @return Builder by setting Error Object header
*/
Builder setErrorObjHeader(PcepObjectHeader obj);
/**
* Returns Error Type in Error Object.
*
* @return Error Type in Error Object
*/
int getErrorType();
/**
* Sets Error Type and returns its builder.
*
* @param value of Error-Type field
* @return builder by setting Error Type field.
*/
Builder setErrorType(byte value);
/**
* Returns Error Value in Error Object.
*
* @return Error Value
*/
byte getErrorValue();
/**
* Sets Error Value and returns its builder.
*
* @param value of Error-Value field
* @return Builder by setting Error Value field.
*/
Builder setErrorValue(byte value);
/**
* Returns list of Optional Tlvs of Error Object.
*
* @return list of Optional Tlvs of Error Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets Optional Tlvs of Error Object and returns its Builder.
*
* @param llOptionalTlv Optional Tlvs of Error Object
* @return Builder by setting Optional Tlvs.
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in Error object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Error object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class PcepFactories {
protected static final Logger log = LoggerFactory.getLogger(PcepFactories.class);
private static final GenericReader GENERIC_READER = new GenericReader();
public static final byte SHIFT_FLAG = 5;
private PcepFactories() {
}
/*
* Returns the instance of PCEP Version.
*
* @param version
* @return PCEP version
*/
public static PcepFactory getFactory(PcepVersion version) {
switch (version) {
case PCEP_1:
// TODO : to get the pcep version 1 factory
default:
throw new IllegalArgumentException("[PcepFactory:]Unknown version: " + version);
}
}
private static class GenericReader implements PcepMessageReader<PcepMessage> {
@Override
public PcepMessage readFrom(ChannelBuffer bb) throws PcepParseException {
if (!bb.readable()) {
log.debug("Empty message received");
throw new PcepParseException("Empty message received");
}
/*
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Ver | Flags | |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*
* Currently Version 1 is supported
* Currently no flags are used, it is all ignored
*/
byte packetVersion = bb.getByte(bb.readerIndex());
packetVersion = (byte) (packetVersion >> SHIFT_FLAG);
PcepFactory factory;
switch (packetVersion) {
case 1:
// TODO : get the factory for version 1
break;
default:
throw new IllegalArgumentException("Unknown Packet version: " + packetVersion);
}
// TODO : Read the PCEP message from the factory
return null;
}
}
/*
* Returns GENERIC_READER.
*
* @return GENERIC_READER
*/
public static PcepMessageReader<PcepMessage> getGenericReader() {
return GENERIC_READER;
}
}
/*
* 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.pcepio.protocol;
/**
* Abstraction of an Message factory providing Builder functions to PCEP Messages and Objects.
*
*/
public interface PcepFactory {
/**
* To get Builder Object for Open Message.
*
* @return Builder Object for Open Message
*/
PcepOpenMsg.Builder buildOpenMsg();
/**
* To get Builder Object for Open Object.
*
* @return Builder Object for Open Object
*/
PcepOpenObject.Builder buildOpenObject();
/**
* To get Builder Object for Keepalive Message.
*
* @return Builder Object for Keepalive Message
*/
PcepKeepaliveMsg.Builder buildKeepaliveMsg();
/**
* To get Builder Object for Close Message.
*
* @return Builder Object for Close Message
*/
PcepCloseMsg.Builder buildCloseMsg();
/**
* To get Builder Object for Report Message.
*
* @return Builder Object for Report Message
*/
PcepReportMsg.Builder buildReportMsg();
/**
* To get Builder Object for Update Message.
*
* @return Builder Object for Update Message
*/
PcepUpdateMsg.Builder buildUpdateMsg();
/**
* To get Builder Object for Initiate Message.
*
* @return Builder Object for Initiate Message
*/
PcepInitiateMsg.Builder buildPcepInitiateMsg();
/**
* To get Builder Object for LSP Object.
*
* @return Builder Object for LSP Object
*/
PcepLspObject.Builder buildLspObject();
/**
* To get Builder Object for SRP Object.
*
* @return Builder Object for SRP Object
*/
PcepSrpObject.Builder buildSrpObject();
/**
* To get Builder Object for EndPoints Object.
*
* @return Builder Object for EndPoints Object
*/
PcepEndPointsObject.Builder buildEndPointsObject();
/**
* To get Builder Object for ERO Object.
*
* @return Builder Object for ERO Object
*/
PcepEroObject.Builder buildEroObject();
/**
* To get Builder Object for RRO Object.
*
* @return Builder Object for RRO Object
*/
PcepRroObject.Builder buildRroObject();
/**
* To get Builder Object for LSPA Object.
*
* @return Builder Object for LSPA Object
*/
PcepLspaObject.Builder buildLspaObject();
/**
* To get Builder Object for IRO Object.
*
* @return Builder Object for IRO Object
*/
PcepIroObject.Builder buildIroObject();
/**
* To get Builder Object for METRIC Object.
*
* @return Builder Object for METRIC Object
*/
PcepMetricObject.Builder buildMetricObject();
/**
* To get Builder Object for Bandwidth Object.
*
* @return Builder Object for Bandwidth Object
*/
PcepBandwidthObject.Builder buildBandwidthObject();
/**
* Returns PCEP Message Reader.
*
* @return PCEP Message Reader
*/
PcepMessageReader<PcepMessage> getReader();
/**
* Returns PCEP version.
*
* @return PCEP version
*/
PcepVersion getVersion();
/**
* Returns PcepStateReport.
*
* @return PcepStateReport
*/
PcepStateReport.Builder buildPcepStateReport();
/**
* Returns PcepUpdateRequest.
*
* @return PcepUpdateRequest
*/
PcepUpdateRequest.Builder buildPcepUpdateRequest();
/**
* Returns PcInitiatedLspRequest.
*
* @return PcInitiatedLspRequest
*/
PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest();
/**
* Returns PcepMsgPath.
*
* @return PcepMsgPath
*/
PcepMsgPath.Builder buildPcepMsgPath();
/**
* Return PcepAttribute list.
*
* @return PcepAttribute
*/
PcepAttribute.Builder buildPcepAttribute();
/**
* To get Builder Object for LabelUpdate message.
*
* @return Builder Object for LabelUpdate message
*/
PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg();
/**
* To get Builder Object for PcepLabelUpdate Object.
*
* @return Builder Object for PcepLabelUpdate Object
*/
PcepLabelUpdate.Builder buildPcepLabelUpdateObject();
/**
* To get Builder Object for PcepLabel Object.
*
* @return Builder Object for PcepLabel Object
*/
PcepLabelObject.Builder buildLabelObject();
/**
* To get Builder Object for Error Message.
*
* @return Builder Object for Error Message
*/
PcepErrorMsg.Builder buildPcepErrorMsg();
/**
* To get Builder Object for Error Object.
*
* @return Builder Object for Error Object
*/
PcepErrorObject.Builder buildPcepErrorObject();
/**
* To get Builder Object for FecIpv4Adjacency.
*
* @return Builder Object for FecIpv4Adjacency
*/
PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency();
/**
* To get Builder Object for ErrorInfo.
*
* @return Builder Object for ErrorInfo
*/
PcepErrorInfo.Builder buildPcepErrorInfo();
/**
* To get Builder Object for PcepError.
*
* @return Builder Object for PcepError
*/
PcepError.Builder buildPcepError();
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP FEC Object.
*/
public interface PcepFecObject {
/**
* Returns PCEP Version of FEC Object.
*
* @return PCEP Version of FEC Object
*/
PcepVersion getVersion();
/**
* Returns FEC Object type.
*
* @return FEC Object type
*/
int getType();
/**
* Writes the FEC into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing FEC Object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints attributes of FEC object.
*/
void print();
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP FEC Object of Type 1 IPv4 Node ID.
*/
public interface PcepFecObjectIPv4 extends PcepFecObject {
/**
* Returns NodeID of FEC Object.
*
* @return NodeID of FEC Object
*/
int getNodeID();
/**
* Sets NodeID with specified value.
*
* @param value node id
*/
void setNodeID(int value);
@Override
void print();
@Override
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build FEC object.
*/
public interface Builder {
/**
* Builds FEC Object IPv4.
*
* @return FEC Object IPv4
* @throws PcepParseException while creating FEC IPv4 Object.
*/
PcepFecObjectIPv4 build() throws PcepParseException;
/**
* Returns FEC Object IPv4 header.
*
* @return FEC Object IPv4 header
*/
PcepObjectHeader getFecIpv4ObjHeader();
/**
* Sets FEC Object IPv4 header and returns its builder.
*
* @param obj FEC Object IPv4 header
* @return Builder by setting FEC Object IPv4 header
*/
Builder setFecIpv4ObjHeader(PcepObjectHeader obj);
/**
* Returns NodeID of FEC Object.
*
* @return NodeID of FEC Object
*/
int getNodeID();
/**
* Sets NodeID and returns its builder.
*
* @param value node id
* @return builder by setting NodeID
*/
Builder setNodeID(int value);
/**
* Sets P flag in FEC object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in FEC object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing FEC Object of Type 3 IPv4 Adjacency.
*/
public interface PcepFecObjectIPv4Adjacency extends PcepFecObject {
/**
* Returns Local IPv4Address of FEC Object.
*
* @return Local IPv4Address of FEC Object
*/
int getLocalIPv4Address();
/**
* Sets Local IPv4Address with specified value.
*
* @param value Local IPv4Address
*/
void seLocalIPv4Address(int value);
/**
* Returns Remote IPv4Address of FEC Object.
*
* @return Remote IPv4Address of FEC Object
*/
int getRemoteIPv4Address();
/**
* Sets Remote IPv4Address with specified value.
*
* @param value Remote IPv4Address
*/
void seRemoteIPv4Address(int value);
@Override
void print();
@Override
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build FEC object.
*/
public interface Builder {
/**
* Builds FEC Object IPv4 Adjacency.
*
* @return FEC Object IPv4 Adjacency
* @throws PcepParseException while building FEC IPv4 Adjacency object.
*/
PcepFecObjectIPv4Adjacency build() throws PcepParseException;
/**
* Returns FEC Object IPv4 Adjacency header.
*
* @return FEC Object IPv4 Adjacency header
*/
PcepObjectHeader getFecIpv4AdjacencyObjHeader();
/**
* Sets FEC Object IPv4 Adjacency header and returns its builder.
*
* @param obj FEC Object IPv4 Adjacency header
* @return Builder by setting FEC Object IPv4 header
*/
Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj);
/**
* Returns Local IPv4Address of FEC Object.
*
* @return Local IPv4Address of FEC Object
*/
int getLocalIPv4Address();
/**
* Sets Local IPv4Address and returns its builder.
*
* @param value Local IPv4Address
* @return Builder by setting Local IPv4Address
*/
Builder seLocalIPv4Address(int value);
/**
* Sets Remote IPv4Address with specified value.
*
* @return Remote IPv4 Address
*/
int getRemoteIPv4Address();
/**
* Sets Remote IPv4Address and returns its builder.
*
* @param value Remote IPv4Address
* @return Builder by setting Remote IPv4Address
*/
Builder seRemoteIPv4Address(int value);
/**
* Sets P flag in FEC object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in FEC object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP FEC Object of Type is 5 Unnumbered Adjacency with IPv4 NodeIDs.
*/
public interface PcepFecObjectIPv4UnnumberedAdjacency extends PcepFecObject {
/**
* Returns Local NodeID of FEC Object.
*
* @return Local NodeID of FEC Object
*/
int getLocalNodeID();
/**
* Sets Local NodeID with specified value.
*
* @param value Local NodeID
*/
void setLocalNodeID(int value);
/**
* Returns Local InterfaceID of FEC Object.
*
* @return Local InterfaceID of FEC Object
*/
int getLocalInterfaceID();
/**
* Sets Local InterfaceID with specified value.
*
* @param value Local InterfaceID
*/
void setLocalInterfaceID(int value);
/**
* Returns Remote NodeID of FEC Object.
*
* @return Remote NodeID of FEC Object
*/
int getRemoteNodeID();
/**
* Sets Remote NodeID with specified value.
*
* @param value Remote NodeID
*/
void setRemoteNodeID(int value);
/**
* Returns Remote InterfaceID of FEC Object.
*
* @return Remote InterfaceID of FEC Object
*/
int getRemoteInterfaceID();
/**
* Sets Remote InterfaceID with specified value.
*
* @param value Remote InterfaceID
*/
void setRemoteInterfaceID(int value);
@Override
void print();
@Override
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build bandwidth object.
*/
public interface Builder {
/**
* Builds FEC Unnumbered Adjacency with IPv4 Object.
*
* @return FEC Unnumbered Adjacency with IPv4 Object
* @throws PcepParseException when building FEC IPv4 Unnumbered Adjacency object.
*/
PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException;
/**
* Returns FEC Unnumbered Adjacency with IPv4 header.
*
* @return FEC Unnumbered Adjacency with IPv4 header
*/
PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader();
/**
* Sets FEC Unnumbered Adjacency with IPv4 header and returns its builder.
*
* @param obj FEC Unnumbered Adjacency with IPv4 header
* @return Builder by setting FEC Unnumbered Adjacency with IPv4 header
*/
Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj);
/**
* Returns Local NodeID of FEC Object.
*
* @return Local NodeID of FEC Object
*/
int getLocalNodeID();
/**
* Sets Local NodeID and returns its builder.
*
* @param value Local NodeID
* @return Builder by setting Local NodeID
*/
Builder setLocalNodeID(int value);
/**
* Returns Local InterfaceID of FEC Object.
*
* @return Local InterfaceID of FEC Object
*/
int getLocalInterfaceID();
/**
* Sets Local InterfaceID and returns its builder.
*
* @param value Local InterfaceID
* @return Builder by setting Local InterfaceID
*/
Builder setLocalInterfaceID(int value);
/**
* Returns Remote NodeID of FEC Object.
*
* @return Remote NodeID of FEC Object
*/
int getRemoteNodeID();
/**
* Sets Remote NodeID and returns its builder.
*
* @param value Remote NodeID
* @return Builder by setting Remote NodeID
*/
Builder setRemoteNodeID(int value);
/**
* Returns Remote InterfaceID of FEC Object.
*
* @return Remote InterfaceID of FEC Object
*/
int getRemoteInterfaceID();
/**
* Sets Remote InterfaceID and returns its builder.
*
* @param value Remote InterfaceID
* @return Builder by setting Remote InterfaceID
*/
Builder setRemoteInterfaceID(int value);
/**
* Sets P flag in FEC object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in FEC object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing FEC Object of Type is 2 IPv6 Node ID.
*/
public interface PcepFecObjectIPv6 extends PcepFecObject {
/**
* Returns NodeID of FEC Object.
*
* @return NodeID of FEC Object
*/
byte[] getNodeID();
/**
* Sets NodeID with specified value.
*
* @param value node id
*/
void setNodeID(byte[] value);
@Override
void print();
@Override
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build FEC object.
*/
public interface Builder {
/**
* Builds FEC Object IPv6.
*
* @return FEC Object IPv6
* @throws PcepParseException while building FEC IPv6 Object.
*/
PcepFecObjectIPv6 build() throws PcepParseException;
/**
* Returns FEC Object IPv6 header.
*
* @return FEC Object IPv6 header
*/
PcepObjectHeader getFecIpv6ObjHeader();
/**
* Sets FEC Object IPv6 header and returns its builder.
*
* @param obj FEC Object IPv6 header
* @return Builder by setting FEC Object IPv6 header
*/
Builder setFecIpv6ObjHeader(PcepObjectHeader obj);
/**
* Returns NodeID of FEC Object.
*
* @return NodeID of FEC Object
*/
byte[] getNodeID();
/**
* Sets NodeID and returns its builder.
*
* @param value node id
* @return Builder by setting NodeID
*/
Builder setNodeID(byte[] value);
/**
* Sets P flag in FEC object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in FEC object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing FEC Object of Type is 4 IPv6 Adjacency.
*/
public interface PcepFecObjectIPv6Adjacency extends PcepFecObject {
/**
* Returns Local IPv6Address of FEC Object.
*
* @return Local IPv6Address of FEC Object
*/
byte[] getLocalIPv6Address();
/**
* Sets Local IPv6Address with specified value.
*
* @param value Local IPv6Address
*/
void seLocalIPv6Address(byte[] value);
/**
* Returns Remote IPv6Address of FEC Object.
*
* @return Remote IPv6Address of FEC Object
*/
byte[] getRemoteIPv6Address();
/**
* Sets Remote IPv6Address with specified value.
*
* @param value Remote IPv6Address
*/
void seRemoteIPv6Address(byte[] value);
@Override
void print();
@Override
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build FEC object.
*/
public interface Builder {
/**
* Builds FEC Object IPv6 Adjacency.
*
* @return FEC Object IPv6 Adjacency
* @throws PcepParseException while building FEC IPv6 Adjacency object.
*/
PcepFecObjectIPv6Adjacency build() throws PcepParseException;
/**
* Returns FEC Object IPv6 Adjacency header.
*
* @return FEC Object IPv6 Adjacency header
*/
PcepObjectHeader getFecIpv6AdjacencyObjHeader();
/**
* Sets FEC Object IPv6 Adjacency header and returns its builder.
*
* @param obj FEC Object IPv6 Adjacency header
* @return Builder by setting FEC Object IPv6 Adjacency header
*/
Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj);
/**
* Returns Local IPv6Address of FEC Object.
*
* @return Local IPv6Address of FEC Object
*/
byte[] getLocalIPv6Address();
/**
* Sets Local IPv6Address and returns its builder.
*
* @param value Local IPv6Address
* @return Builder by setting Local IPv6Address
*/
Builder setLocalIPv6Address(byte[] value);
/**
* Returns Remote IPv6Address of FEC Object.
*
* @return Remote IPv6Address of FEC Object
*/
byte[] getRemoteIPv6Address();
/**
* Sets Remote IPv6Address and returns its builder.
*
* @param value Remote IPv6Address
* @return Builder by setting Remote IPv6Address
*/
Builder setRemoteIPv6Address(byte[] value);
/**
* Sets P flag in FEC object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in FEC object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Initiate Message.
*/
public interface PcepInitiateMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of PcInitiatedLspRequestList.
*
* @return list of PcInitiatedLspRequestList
*/
LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList();
/**
* Sets list of PcInitiatedLspRequestList.
*
* @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList
*/
void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build Initiate message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepInitiateMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of PcInitiatedLspRequestList.
*
* @return list of PcInitiatedLspRequestList
*/
LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList();
/**
* Sets PcInitiatedLspRequestList.
*
* @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList
* @return builder by setting list of PcInitiatedLspRequestList
*/
Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP INTER Layer Object.
*/
public interface PcepInterLayerObject {
/**
* Returns N Flag in INTER Layer Object.
*
* @return N Flag in INTER Layer Object
*/
boolean getbNFlag();
/**
* Sets N Flag in INTER Layer Object with specified value.
*
* @param value N Flag
*/
void setbNFlag(boolean value);
/**
* Returns I Flag in INTER Layer Object.
*
* @return I Flag in INTER Layer Object
*/
boolean getbIFlag();
/**
* Sets I Flag in INTER Layer Object with specified value.
*
* @param value I Flag
*/
void setbIFlag(boolean value);
/**
* Prints attributes of INTER Layer object.
*/
void print();
/**
* Writes the INTER Layer Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing Inter Layer Object.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build INTER Layer object.
*/
public interface Builder {
/**
* Builds INTER Layer object.
*
* @return INTER Layer object
*/
PcepInterLayerObject build();
/**
* Returns INTER Layer object header.
*
* @return INTER Layer object header
*/
PcepObjectHeader getInterLayerObjHeader();
/**
* Sets INTER Layer object header and returns its builder.
*
* @param obj INTER Layer object header
* @return Builder by setting INTER Layer object header
*/
Builder setInterLayerObjHeader(PcepObjectHeader obj);
/**
* Returns N Flag in INTER Layer Object.
*
* @return N Flag in INTER Layer Object
*/
boolean getbNFlag();
/**
* Sets N flag and return its builder.
*
* @param value N flag
* @return Builder by setting N flag
*/
Builder setbNFlag(boolean value);
/**
* Returns I Flag in INTER Layer Object.
*
* @return I Flag in INTER Layer Object
*/
boolean getbIFlag();
/**
* Sets I flag and return its builder.
*
* @param value I flag
* @return Builder by setting N flag
*/
Builder setbIFlag(boolean value);
/**
* Sets P flag in INTER Layer object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in INTER Layer object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP IRO Object.
*/
public interface PcepIroObject {
/**
* Returns list of SubObjects.
*
* @return list of SubObjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets list of SubObjects.
*
* @param llSubObjects list of SubObjects
*/
void setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Prints attributes of IRO object.
*/
void print();
/**
* Writes the IRO into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing IRO object.
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build IRO object.
*/
public interface Builder {
/**
* Builds IRO Object.
*
* @return IRO Object
*/
PcepIroObject build();
/**
* Returns IRO object header.
*
* @return IRO object header
*/
PcepObjectHeader getIroObjHeader();
/**
* Sets IRO object header and returns its builder.
*
* @param obj IRO object header
* @return Builder by setting IRO object header
*/
Builder setIroObjHeader(PcepObjectHeader obj);
/**
* Returns list of SubObjects.
*
* @return list of SubObjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets list of SubObjects in IRO Object and returns its builder.
*
* @param llSubObjects list of SubObjects
* @return Builder by setting list of SubObjects
*/
Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Sets P flag in IRO object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in IRO object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
/**
* Abstraction of an entity providing PCEP Keepalive Message.
*/
public interface PcepKeepaliveMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
@Override
void writeTo(ChannelBuffer channelBuffer);
/**
* Builder interface with get and set functions to build Keepalive message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepKeepaliveMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP Label Object.
*/
public interface PcepLabelObject {
/**
* Returns O flag in Label Object.
*
* @return Boolean value
*/
boolean getOFlag();
/**
* Sets O flag in Label Object with specified value.
*
* @param value O flag
*/
void setOFlag(boolean value);
/**
* Returns Label from Label Object.
*
* @return Label value
*/
int getLabel();
/**
* Sets Label field in Label Object with specified value.
*
* @param value Label
*/
void setLabel(int value);
/**
* Returns list of Optional Tlvs.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets Optional Tlvs in Label Object.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of Label object.
*/
void print();
/**
* Writes the Label Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing LABEL object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build Label object.
*/
public interface Builder {
/**
* Builds Label Object.
*
* @return Label Object
* @throws PcepParseException while building LABEL object.
*/
PcepLabelObject build() throws PcepParseException;
/**
* Returns Label object header.
*
* @return Label object header
*/
PcepObjectHeader getLabelObjHeader();
/**
* Sets Label object header and returns its builder.
*
* @param obj Label object header
* @return Builder by setting Label object header
*/
Builder setLabelObjHeader(PcepObjectHeader obj);
/**
* Returns O flag in Label Object.
*
* @return Label value
*/
boolean getOFlag();
/**
* Sets O flag and return its builder.
*
* @param value O flag
* @return Builder by setting O flag
*/
Builder setOFlag(boolean value);
/**
* Returns Label from Label Object.
*
* @return Label value
*/
int getLabel();
/**
* Sets Label field and return its builder.
*
* @param value Label field
* @return Builder by setting Label field
*/
Builder setLabel(int value);
/**
* Returns list of Optional Tlvs.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs and return its builder.
*
* @param llOptionalTlv list of Optional Tlvs
* @return Builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in Label object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
public Builder setPFlag(boolean value);
/**
* Sets I flag in Label object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
public Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Label Range.
*/
public interface PcepLabelRange {
/**
* Returns object of PCEP SRP Object.
*
* @return srpObject
*/
public PcepSrpObject getSrpObject();
/**
* Sets PCEP SRP Object.
*
* @param srpObject SRP object.
*/
public void setSrpObject(PcepSrpObject srpObject);
/**
* Returns list of PcepLabelRangeObject.
*
* @return Label Range List
*/
public LinkedList<PcepLabelRangeObject> getLabelRangeList();
/**
* Sets list of PcepLabelRangeObject.
*
* @param llLabelRangeList Label Range List
*/
public void setLabelRangeList(LinkedList<PcepLabelRangeObject> llLabelRangeList);
/**
* Write the byte stream of PcepLabelRange to channel buffer.
*
* @param bb of type channel buffer
* @return object length index
* @throws PcepParseException while writing LABEL RANGE into Channel Buffer.
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints Attributes of PcepLabelRange.
*/
public void print();
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP LabelRange Object.
*/
public interface PcepLabelRangeObject {
/**
* Sets LabelRange Object header.
*
* @param obj LabelRange Object header
*/
void setLabelRangeObjHeader(PcepObjectHeader obj);
/**
* Sets LabelType in LabelRange Object.
*
* @param labelType label type value
*/
void setLabelType(byte labelType);
/**
* Sets RangeSize in LabelRange Object.
*
* @param rangeSize range size value
*/
void setRangeSize(int rangeSize);
/**
* Sets LabelBase in LabelRange Object.
*
* @param labelBase label base value
*/
void setLabelBase(int labelBase);
/**
* Returns LabelRange object header.
*
* @return LabelRange object header
*/
PcepObjectHeader getLabelRangeObjHeader();
/**
* Returns LabelType field in LabelRange object.
*
* @return LabelType field in LabelRange object
*/
byte getLabelType();
/**
* Returns RangeSize field in LabelRange object.
*
* @return RangeSize field in LabelRange object
*/
int getRangeSize();
/**
* Returns LabelBase field in LabelRange object.
*
* @return LabelBase field in LabelRange object
*/
int getLabelBase();
/**
* Prints attributes of LabelRange object.
*/
void print();
/**
* Writes the LabelRange Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build LabelRange object.
*/
public interface Builder {
/**
* Builds LabelRange Object.
*
* @return LabelRange Object
* @throws PcepParseException while building LABEL RANGE object.
*/
PcepLabelRangeObject build() throws PcepParseException;
/**
* Returns LabelRange object header.
*
* @return LabelRange object header
*/
PcepObjectHeader getLabelRangeObjHeader();
/**
* Sets LabelRange object header and returns its builder.
*
* @param obj LabelRange object header
* @return Builder by setting LabelRange object header
*/
Builder setLabelRangeObjHeader(PcepObjectHeader obj);
/**
* Returns LabelType field in LabelRange object.
*
* @return LabelType field in LabelRange object
*/
byte getLabelType();
/**
* Sets LabelType field and returns its builder.
*
* @param labelType LabelType field
* @return Builder by setting LabelType field
*/
Builder setLabelType(byte labelType);
/**
* Returns RangeSize field in LabelRange object.
*
* @return RangeSize field in LabelRange object
*/
int getRangeSize();
/**
* Sets RangeSize field and returns its builder.
*
* @param rangeSize RangeSize field
* @return Builder by setting RangeSize field
*/
Builder setRangeSize(int rangeSize);
/**
* Returns LabelBase field in LabelRange object.
*
* @return LabelBase field in LabelRange object
*/
int getLabelBase();
/**
* Sets LabelBase field and returns its builder.
*
* @param labelBase LabelBase field
* @return Builder by setting LabelBase field
*/
Builder setLabelBase(int labelBase);
/**
* Sets P flag in TE object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in TE object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Label Range Reservation Message.
*/
public interface PcepLabelRangeResvMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns LabelRange field in Label Range Reservation message.
*
* @return LabelRange field
*/
PcepLabelRange getLabelRange();
/**
* Sets LabelRange field in Label Range Reservation message with specified value.
*
* @param lR label range object
*/
void setLabelRange(PcepLabelRange lR);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build Label Range Reservation message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepLabelRangeResvMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns LabelRange field in Label Range Reservation message.
*
* @return LabelRange object
*/
PcepLabelRange getLabelRange();
/**
* Sets LabelRange field and returns its Builder.
*
* @param lR label range object
* @return builder by setting LabelRange field
*/
Builder setLabelRange(PcepLabelRange lR);
}
}
/*
* Copyright 2014 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepLabelDownload;
import org.onosproject.pcepio.types.PcepLabelMap;
/***
* Abstraction to provide PCEP Label Updates.
*/
public interface PcepLabelUpdate {
/**
* Writes the byte stream of PcepLabelUpdate into channel buffer.
*
* @param bb of type channel buffer
* @throws PcepParseException while writing LABEL UPDATE.
*/
public void write(ChannelBuffer bb) throws PcepParseException;
/**
* Sets the Label Download object.
*
* @param labelDownload PCEP Label Download object
*/
public void setLabelDownload(PcepLabelDownload labelDownload);
/**
* Returns the PcepLabelDownload object.
*
* @return labelDownload PCEP Label Download
*/
public PcepLabelDownload getLabelDownload();
/**
* Sets the Label map object.
*
* @param labelMap PCEP Label Map object
*/
public void setLabelMap(PcepLabelMap labelMap);
/**
* Returns the PcepLabelMap object.
*
* @return labelMap PCEP Label Map
*/
public PcepLabelMap getLabelMap();
/**
* Prints the attributes of PCEP Label update.
*/
public void print();
/**
* Builder interface with get and set functions to build Label Update message.
*/
public interface Builder {
/**
* Builds PcepLableUpdate Object.
*
* @return PcepLableUpdate Object
* @throws PcepParseException while building LABEL-UPDATE.
*/
PcepLabelUpdate build() throws PcepParseException;
/**
* Sets the Label Download object.
*
* @param labelDownload PCEP Label Download object
* @return Builder by setting labelDownload object
*/
Builder setLabelDownload(PcepLabelDownload labelDownload);
/**
* Returns the PcepLabelDownload object.
*
* @return labelDownload PCEP Label Download
*/
PcepLabelDownload getLabelDownload();
/**
* Sets the Label map object.
*
* @param labelMap PCEP Label Map object
* @return Builder by setting PcepLabelMap object
*/
Builder setLabelMap(PcepLabelMap labelMap);
/**
* Returns the PcepLabelMap object.
*
* @return labelMap PCEP Label Map
*/
PcepLabelMap getLabelMap();
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Label Update Message.
*/
public interface PcepLabelUpdateMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of PcLabelUpdateList.
*
* @return list of PcLabelUpdateList.
*/
LinkedList<PcepLabelUpdate> getPcLabelUpdateList();
/**
* Sets list of PcLabelUpdateList.
*
* @param llPcLabelUpdateList list of PcLabelUpdateList
*/
void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build Label Update message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepLabelUpdateMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of PcLabelUpdateList.
*
* @return list of PcLabelUpdateList.
*/
LinkedList<PcepLabelUpdate> getPcLabelUpdateList();
/**
* Sets list of PcLabelUpdateList.
*
* @param llPcLabelUpdateList list of PcLabelUpdateList.
* @return Builder by setting list of PcLabelUpdateList.
*/
Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP LSP Object.
*/
public interface PcepLspObject {
/**
* Returns PlspId of LSP Object.
*
* @return PlspId of LSP Object
*/
int getPlspId();
/**
* Sets PlspId with specified value.
*
* @param value PlspId
*/
void setPlspId(int value);
/**
* Returns O flag in LSP Object.
*
* @return O flag in LSP Object
*/
byte getOFlag();
/**
* Sets O flag with specified value.
*
* @param value O flag
*/
void setOFlag(byte value);
/**
* Returns A flag in LSP Object.
*
* @return A flag in LSP Object
*/
boolean getAFlag();
/**
* Sets A flag with specified value.
*
* @param value A flag
*/
void setAFlag(boolean value);
/**
* Returns R flag in LSP Object.
*
* @return R flag in LSP Object
*/
boolean getRFlag();
/**
* Sets R flag with specified value.
*
* @param value R flag
*/
void setRFlag(boolean value);
/**
* Returns S flag in LSP Object.
*
* @return S flag in LSP Object
*/
boolean getSFlag();
/**
* Sets S flag with specified value.
*
* @param value S flag
*/
void setSFlag(boolean value);
/**
* Returns D flag in LSP Object.
*
* @return D flag in LSP Object
*/
boolean getDFlag();
/**
* Sets D flag with specified value.
*
* @param value D flag
*/
void setDFlag(boolean value);
/**
* Returns list of Optional Tlvs in LSP Object.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in LSP Object.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of LSP object.
*/
void print();
/**
* Writes the LSP Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing LSP object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build LSP object.
*/
public interface Builder {
/**
* Builds LSP Object.
*
* @return LSP Object
*/
PcepLspObject build();
/**
* Returns LSP object header.
*
* @return LSP object header
*/
PcepObjectHeader getLspObjHeader();
/**
* Sets LSP object header and returns its builder.
*
* @param obj LSP object header
* @return Builder by setting LSP object header
*/
Builder setLspObjHeader(PcepObjectHeader obj);
/**
* Returns PlspId of LSP Object.
*
* @return PlspId of LSP Object
*/
int getPlspId();
/**
* Sets PlspId with specific value and return its builder.
*
* @param value PlspId
* @return Builder by setting PlspId
*/
Builder setPlspId(int value);
/**
* Returns O flag in LSP Object.
*
* @return O flag in LSP Object
*/
byte getOFlag();
/**
* Sets O flag with specific value and return its builder.
*
* @param value O flag
* @return Builder by setting O flag
*/
Builder setOFlag(byte value);
/**
* Returns A flag in LSP Object.
*
* @return A flag in LSP Object
*/
boolean getAFlag();
/**
* Sets A flag with specific value and return its builder.
*
* @param value A flag
* @return Builder by setting A flag
*/
Builder setAFlag(boolean value);
/**
* Returns A flag in LSP Object.
*
* @return A flag in LSP Object
*/
boolean getRFlag();
/**
* Sets R flag with specific value and return its builder.
*
* @param value r flag
* @return Builder by setting r flag
*/
Builder setRFlag(boolean value);
/**
* Returns S flag in LSP Object.
*
* @return S flag in LSP Object
*/
boolean getSFlag();
/**
* Sets S flag with specific value and return its builder.
*
* @param value s flag
* @return Builder by setting S flag
*/
Builder setSFlag(boolean value);
/**
* Returns D flag in LSP Object.
*
* @return D flag in LSP Object
*/
boolean getDFlag();
/**
* Sets D flag with specific value and return its builder.
*
* @param value D flag
* @return Builder by setting D flag
*/
Builder setDFlag(boolean value);
/**
* Returns list of Optional Tlvs in LSP Object.
*
* @return list of Optional Tlvs in LSP Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs and return its builder.
*
* @param llOptionalTlv list of Optional Tlvs
* @return Builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in LSP object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in LSP object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP LSPA Object.
*/
public interface PcepLspaObject {
/**
* Returns L flag in LSPA Object.
*
* @return L flag in LSPA Object
*/
boolean getLFlag();
/**
* Sets L flag in LSPA Object.
*
* @param value L flag
*/
void setLFlag(boolean value);
/**
* Returns Exclude Any field in LSPA Object.
*
* @return Exclude Any field in LSPA Object
*/
int getExcludeAny();
/**
* Sets Exclude Any field in LSPA Object.
*
* @param value Exclude Any field
*/
void setExcludeAny(int value);
/**
* Returns Include Any field in LSPA Object.
*
* @return Include Any field in LSPA Object
*/
int getIncludeAny();
/**
* Sets Include Any field in LSPA Object.
*
* @param value Include Any field
*/
void setIncludeAny(int value);
/**
* Returns Include All field in LSPA Object.
*
* @return Include All field in LSPA Object
*/
int getIncludeAll();
/**
* Sets Include All field in LSPA Object.
*
* @param value Include All field
*/
void setIncludeAll(int value);
/**
* Returns Setup Priority field in LSPA Object.
*
* @return Setup Priority field in LSPA Object
*/
byte getSetupPriority();
/**
* Sets Setup Priority field in LSPA Object.
*
* @param value Setup Priority field
*/
void setSetupPriority(byte value);
/**
* Returns Hold Priority field in LSPA Object.
*
* @return Hold Priority field in LSPA Object
*/
byte getHoldPriority();
/**
* Sets Hold Priority field in LSPA Object.
*
* @param value Hold Priority field
*/
void setHoldPriority(byte value);
/**
* Returns list of Optional Tlvs in LSPA Object.
*
* @return list of Optional Tlvs in LSPA Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets Optional Tlvs in LSPA Object.
*
* @param llOptionalTlv Optional Tlvs in LSPA Object
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of LSPA object.
*/
void print();
/**
* Writes the LSPA Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing LSPA object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build bandwidth object.
*/
public interface Builder {
/**
* Builds LSPA Object.
*
* @return LSPA Object
* @throws PcepParseException while building LSPA object.
*/
PcepLspaObject build() throws PcepParseException;
/**
* Returns LSPA object header.
*
* @return LSPA object header
*/
PcepObjectHeader getLspaObjHeader();
/**
* Sets LSPA object header and returns its builder.
*
* @param obj LSPA object header
* @return Builder by setting LSPA object header
*/
Builder setLspaObjHeader(PcepObjectHeader obj);
/**
* Returns L flag in LSPA Object.
*
* @return L flag in LSPA Object
*/
boolean getLFlag();
/**
* Sets L flag in LSPA Object and return its builder.
*
* @param value L flag in LSPA Object
* @return Builder by setting L flag
*/
Builder setLFlag(boolean value);
/**
* Returns Exclude Any field in LSPA Object.
*
* @return Exclude Any field in LSPA Object
*/
int getExcludeAny();
/**
* Sets Exclude Any field in LSPA Object and return its builder.
*
* @param value Exclude Any field in LSPA Object
* @return Builder by setting Exclude Any field
*/
Builder setExcludeAny(int value);
/**
* Returns Include Any field in LSPA Object.
*
* @return Include Any field in LSPA Object
*/
int getIncludeAny();
/**
* Sets Include Any field in LSPA Object and return its builder.
*
* @param value Include Any field in LSPA Object
* @return Builder by setting Include Any field
*/
Builder setIncludeAny(int value);
/**
* Returns Include All field in LSPA Object.
*
* @return Include All field in LSPA Object
*/
int getIncludeAll();
/**
* Sets Include All field in LSPA Object and return its builder.
*
* @param value Include All field in LSPA Object
* @return Builder by setting Include All field
*/
Builder setIncludeAll(int value);
/**
* Returns Setup Priority field in LSPA Object.
*
* @return Setup Priority field in LSPA Object
*/
byte getSetupPriority();
/**
* Sets Setup Priority field in LSPA Object and return its builder.
*
* @param value Setup Priority field in LSPA Object
* @return Builder by setting Setup Priority field
*/
Builder setSetupPriority(byte value);
/**
* Returns Hold Priority field in LSPA Object.
*
* @return Hold Priority field in LSPA Object
*/
byte getHoldPriority();
/**
* Sets Hold Priority field in LSPA Object and return its builder.
*
* @param value Hold Priority field in LSPA Object
* @return Builder by setting Hold Priority field
*/
Builder setHoldPriority(byte value);
/**
* Returns list of Optional Tlvs in LSPA Object.
*
* @return list of Optional Tlvs in LSPA Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in LSPA Object.
*
* @param llOptionalTlv list of Optional Tlvs
* @return builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in LSPA object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in LSPA object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Messages.
*/
public interface PcepMessage extends PcepObject {
@Override
PcepVersion getVersion();
/**
* Returns Type of PCEP Message.
*
* @return Type of PCEP Message
*/
PcepType getType();
/**
* Prints attributes of PCEP Messages.
*/
void print();
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build PCEP Message.
*/
public interface Builder {
/**
* Builds PCEP Message.
*
* @return PCEP Message
* @throws PcepParseException when build fails to create PCEP message
*/
PcepMessage build() throws PcepParseException;
/**
* Returns Version of PCEP Message.
*
* @return Version of PCEP Message
*/
PcepVersion getVersion();
/**
* Returns Type of PCEP Message.
*
* @return Type of PCEP Message
*/
PcepType getType();
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Message Reader.
*/
public interface PcepMessageReader<T> {
/**
* Reads the Objects in the PCEP Message and Returns PCEP Message.
*
* @param bb Channel Buffer
* @return PCEP Message
* @throws PcepParseException while parsing PCEP message.
* @throws PcepParseException when received message is empty
*/
T readFrom(ChannelBuffer bb) throws PcepParseException;
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Message Writer.
*/
public interface PcepMessageWriter<T> {
/**
* Writes the Objects of the PCEP Message into Channel Buffer.
*
* @param bb Channel Buffer
* @param message PCEP Message
* @throws PcepParseException while writing PCEP message.
*/
public void write(ChannelBuffer bb, T message) throws PcepParseException;
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
/**
* Abstraction of an entity providing PCEP Metric Object.
*/
public interface PcepMetricObject {
/**
* Returns Metric value in Metric Object.
*
* @return Metric value
*/
int getMetricVal();
/**
* Sets Metric value in Metric Object with specified value.
*
* @param value Metric value
*/
void setMetricVal(int value);
/**
* Returns Y flag in Metric Object.
*
* @return Y flag in Metric Object
*/
byte getYFlag();
/**
* Sets Y flag in Metric Object with specified value.
*
* @param value Y flag
*/
void setYFlag(byte value);
/**
* Returns C flag in Metric Object.
*
* @return C flag in Metric Object
*/
boolean getCFlag();
/**
* Sets C flag in Metric Object with specified value.
*
* @param value C flag
*/
void setCFlag(boolean value);
/**
* Returns B flag in Metric Object.
*
* @return B flag in Metric Object
*/
boolean getBFlag();
/**
* Sets B flag in Metric Object with specified value.
*
* @param value B flag
*/
void setBFlag(boolean value);
/**
* Returns BType field in Metric Object.
*
* @return BType field in Metric Object
*/
byte getBType();
/**
* Sets BType field in Metric Object with specified value.
*
* @param value BType field
*/
void setBType(byte value);
/**
* Prints attributes of Metric object.
*/
void print();
/**
* Writes the Metric Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing METRIC object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build Metric object.
*/
public interface Builder {
/**
* Builds Metric Object.
*
* @return Metric Object
* @throws PcepParseException when mandatory object is not set
*/
PcepMetricObject build() throws PcepParseException;
/**
* Returns Metric object header.
*
* @return Metric object header
*/
PcepObjectHeader getMetricObjHeader();
/**
* Sets Metric object header and returns its builder.
*
* @param obj Metric object header
* @return Builder by setting Metric object header
*/
Builder setMetricObjHeader(PcepObjectHeader obj);
/**
* Returns Metric value in Metric Object.
*
* @return Metric value
*/
int getMetricVal();
/**
* Sets Metric Value in Metric Object and returns its builder.
*
* @param value Metric Value
* @return Builder by setting Metric Value
*/
Builder setMetricVal(int value);
/**
* Returns Flags in Metric Object.
*
* @return Flags in Metric Object
*/
byte getYFlag();
/**
* Sets Flags in Metric Object and returns its builder.
*
* @param value Flags
* @return Builder by setting Flags
*/
Builder setYFlag(byte value);
/**
* Returns C flag in Metric Object.
*
* @return C flag in Metric Object
*/
boolean getCFlag();
/**
* Sets C flag in Metric Object and returns its builder.
*
* @param value C flag
* @return Builder by setting C flag
*/
Builder setCFlag(boolean value);
/**
* Returns B flag in Metric Object.
*
* @return B flag in Metric Object
*/
boolean getBFlag();
/**
* Sets B flag in Metric Object and returns its builder.
*
* @param value B flag
* @return Builder by setting B flag
*/
Builder setBFlag(boolean value);
/**
* Returns BType field in Metric Object.
*
* @return BType field in Metric Object
*/
byte getBType();
/**
* Sets B Type field in Metric Object and returns its builder.
*
* @param value B Type field
* @return Builder by setting B Type field
*/
Builder setBType(byte value);
/**
* Sets P flag in Metric object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Metric object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
package org.onosproject.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity Provides PCEP Message PAth for update message.
* Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10.
*/
public interface PcepMsgPath {
/**
* Returns object of PcepEroObject.
*
* @return eroObject
*/
PcepEroObject getEroObject();
/**
* Returns object of PcepAttribute.
*
* @return pcepAttribute
*/
PcepAttribute getPcepAttribute();
/**
* Sets PcepEroObject.
*
* @param eroObject PCEP ERO Object.
*/
void setEroObject(PcepEroObject eroObject);
/**
* Sets PcepAttribute.
*
* @param pcepAttribute PCEP-Attribute.
*/
void setPcepAttribute(PcepAttribute pcepAttribute);
/**
* reads ERO object and attribute list.
*
* @param bb of type channel buffer
* @return PcepMsgPath
* @throws PcepParseException while parsing Message Path from Channel Buffer.
*/
public PcepMsgPath read(ChannelBuffer bb) throws PcepParseException;
/**
* writes ERO object and attribute list to channel.
*
* @param bb of type channel buffer
* @return object length index
* @throws PcepParseException while writing Message Path into Channel Buffer.
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Prints the attributes of PCEP message path.
*/
void print();
/**
* Builder interface with get and set functions to build PcepMsgPath.
*/
public interface Builder {
/**
* Builds PcepMsgPath.
*
* @return PcepMsgPath
* @throws PcepParseException when mandatory object is not set
*/
PcepMsgPath build() throws PcepParseException;
/**
* Returns object of PcepEroObject.
*
* @return PcepEroObject
*/
PcepEroObject getEroObject();
/**
* Returns object of PcepAttribute.
*
* @return pcepAttribute
*/
PcepAttribute getPcepAttribute();
/**
* Sets PcepEroObject.
*
* @param eroObject PcepEroObject
* @return Builder by setting ERO object.
*/
Builder setEroObject(PcepEroObject eroObject);
/**
* Sets PcepAttribute.
*
* @param pcepAttribute PCEP-Attribute
* @return Builder by setting PCEP-Attribute.
*/
Builder setPcepAttribute(PcepAttribute pcepAttribute);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
/**
* Abstraction of an entity provides NAI information in SR ERO Object.
*/
public interface PcepNai {
/**
* To get the ST type of the NAI information.
*
* @return type of ST info
*/
byte getType();
/**
* To write the object information to channelBuffer.
*
* @param cb of type channel buffer
* @return length of written bytes.
*/
int write(ChannelBuffer cb);
}
/*
* 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.pcepio.protocol;
/**
* Abstraction of an entity providing PCEP Object.
*/
public interface PcepObject extends Writeable {
/**
* Returns Version of PCEP Object.
*
* @return Version of PCEP Object
*/
PcepVersion getVersion();
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Open Message.
*/
public interface PcepOpenMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Sets OpenObject in Open Message with Specified Obj.
*
* @param obj OpenObject
*/
void setPcepOpenObject(PcepOpenObject obj);
/**
* Returns OpenObject in Open Message.
*
* @return OpenObject in Open Message
*/
PcepOpenObject getPcepOpenObject();
@Override
void writeTo(ChannelBuffer channelBuffer);
/**
* Builder interface with get and set functions to build Open message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepOpenMsg build() throws PcepParseException;
/**
* Sets Open Object in Open Message and return its builder.
*
* @param obj Open Object
* @return builder by setting Open Object
*/
Builder setPcepOpenObj(PcepOpenObject obj);
/**
* Returns OpenObject in Open Message.
*
* @return OpenObject in Open Message
*/
PcepOpenObject getPcepOpenObj();
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP Open Object.
*/
public interface PcepOpenObject {
/**
* Returns Open object header.
*
* @return Open object header
*/
PcepObjectHeader getOpenObjHeader();
/**
* Sets Open object header in Open Object.
*
* @param obj Open object header
*/
void setOpenObjHeader(PcepObjectHeader obj);
/**
* Returns version of Open Object.
*
* @return Version of Open Object
*/
PcepVersion getVersion();
/**
* Returns KeepAlive Time in Open Object.
*
* @return KeepAlive Time in Open Object
*/
byte getKeepAliveTime();
/**
* Sets KeepAlive Time in Open Object with specified value.
*
* @param value KeepAlive Time
*/
void setKeepAliveTime(byte value);
/**
* Returns Dead Time in Open Object.
*
* @return Dead Time in Open Object
*/
byte getDeadTime();
/**
* Sets Dead Time in Open Object with specified value.
*
* @param value Dead Time
*/
void setDeadTime(byte value);
/**
* Returns SessionId in Open Object.
*
* @return SessionId in Open Object
*/
byte getSessionId();
/**
* Sets SessionId in Open Object with specified value.
*
* @param value SessionId
*/
void setSessionId(byte value);
/**
* Returns list of Optional Tlvs in Open Object.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in Open Object.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of Open object.
*/
void print();
/**
* Writes the Open into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing Open Object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build Open object.
*/
public interface Builder {
/**
* Builds Open Object.
*
* @return Open Object
* @throws PcepParseException while building PCEP-Open object
*/
PcepOpenObject build() throws PcepParseException;
/**
* Returns Open object header.
*
* @return Open object header
*/
PcepObjectHeader getOpenObjHeader();
/**
* Sets Open object header and returns its builder.
*
* @param obj Open object header
* @return Builder by setting Open object header
*/
Builder setOpenObjHeader(PcepObjectHeader obj);
/**
* Returns KeepAlive Time in Open Object.
*
* @return KeepAlive Time in Open Object
*/
byte getKeepAliveTime();
/**
* Sets KeepAlive Time and returns its builder.
*
* @param value KeepAlive Time
* @return Builder by setting KeepAlive Time
*/
Builder setKeepAliveTime(byte value);
/**
* Returns Dead Time in Open Object.
*
* @return Dead Time in Open Object
*/
byte getDeadTime();
/**
* Sets Dead Time and returns its builder.
*
* @param value Dead Time
* @return Builder by setting Dead Time
*/
Builder setDeadTime(byte value);
/**
* Returns SessionId in Open Object.
*
* @return SessionId in Open Object
*/
byte getSessionId();
/**
* Sets SessionId and returns its builder.
*
* @param value SessionId
* @return Builder by setting SessionId
*/
Builder setSessionId(byte value);
/**
* Returns list of Optional Tlvs in Open Object.
*
* @return list of Optional Tlvs in Open Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs and return its Builder.
*
* @param llOptionalTlv list of Optional Tlvs
* @return builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in Open object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in Open object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP RP Object.
*/
public interface PcepRPObject {
/**
* Returns RequestId Number in RP Object.
*
* @return RequestId Number in RP Object
*/
int getRequestIdNum();
/**
* Sets RequestId Number with specified value.
*
* @param value RequestId Number
*/
void setRequestIdNum(int value);
/**
* Returns O flag in RP Object.
*
* @return O flag in RP Object
*/
boolean getOFlag();
/**
* Sets O flag with specified value.
*
* @param value O flag
*/
void setOFlag(boolean value);
/**
* Returns B flag in RP Object.
*
* @return B flag in RP Object
*/
boolean getBFlag();
/**
* Sets B flag with specified value.
*
* @param value B flag
*/
void setBFlag(boolean value);
/**
* Returns R flag in RP Object.
*
* @return R flag in RP Object
*/
boolean getRFlag();
/**
* Sets R flag with specified value.
*
* @param value R flag
*/
void setRFlag(boolean value);
/**
* Returns Priority Flag in RP Object.
*
* @return Priority Flag in RP Object
*/
byte getPriFlag();
/**
* Sets Priority Flag with specified value.
*
* @param value Priority Flag
*/
void setPriFlag(byte value);
/**
* Returns list of Optional Tlvs in RP Object.
*
* @return list of Optional Tlvs in RP Object
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in RP Object and returns its builder.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of RP object.
*/
void print();
/**
* Writes the RP Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException while writing RP object into Channel Buffer.
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build bandwidth object.
*/
public interface Builder {
/**
* Builds RP Object.
*
* @return RP Object
*/
PcepRPObject build();
/**
* Returns RP object header.
*
* @return RP object header
*/
PcepObjectHeader getRPObjHeader();
/**
* Sets RP object header and returns its builder.
*
* @param obj RP object header
* @return Builder by setting RP object header
*/
Builder setRPObjHeader(PcepObjectHeader obj);
/**
* Returns Request Id Number in RP Object.
*
* @return Request Id Number in RP Object
*/
int getRequestIdNum();
/**
* Sets Request Id Number and returns its builder.
*
* @param value Request Id Number
* @return Builder by setting Request Id Number
*/
Builder setRequestIdNum(int value);
/**
* Returns O flag in RP Object.
*
* @return O flag in RP Object
*/
boolean getOFlag();
/**
* Sets O flag and returns its builder.
*
* @param value O flag
* @return Builder by setting O flag
*/
Builder setOFlag(boolean value);
/**
* Returns B flag in RP Object.
*
* @return B flag in RP Object
*/
boolean getBFlag();
/**
* Sets B flag and returns its builder.
*
* @param value B flag
* @return Builder by setting B flag
*/
Builder setBFlag(boolean value);
/**
* Returns R flag in RP Object.
*
* @return R flag in RP Object
*/
boolean getRFlag();
/**
* Sets R flag and returns its builder.
*
* @param value R flag
* @return Builder by setting R flag
*/
Builder setRFlag(boolean value);
/**
* Returns Priority Flag in RP Object.
*
* @return Priority Flag in RP Object
*/
byte getPriFlag();
/**
* Sets Priority Flag and returns its builder.
*
* @param value Priority Flag
* @return Builder by setting Priority Flag
*/
Builder setPriFlag(byte value);
/**
* Returns list of Optional Tlvs in RP Object.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs and returns its builder.
*
* @param llOptionalTlv list of Optional Tlvs
* @return Builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in RP object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in RP object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Report Message.
*/
public interface PcepReportMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns PcepStateReport list.
*
* @return list of PcepStateReport
*/
LinkedList<PcepStateReport> getStateReportList();
/**
* Sets StateReportList.
*
* @param llStateReportList list of PcepStateReport.
*/
void setStateReportList(LinkedList<PcepStateReport> llStateReportList);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build Report message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepReportMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns StateReportList.
*
* @return StateReportList.
*/
LinkedList<PcepStateReport> getStateReportList();
/**
* Sets list of PcepStateReport and returns builder.
*
* @param llStateReportList list of PcepStateReport.
* @return Builder by setting list of PcepStateReport.
*/
Builder setStateReportList(LinkedList<PcepStateReport> llStateReportList);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP RRO Object.
*/
public interface PcepRroObject {
/**
* Returns list of SubObjects.
*
* @return list of SubObjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets list of SubObjects and return its builder.
*
* @param llSubObjects list of SubObjects
*/
void setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Prints attributes of RRO object.
*/
void print();
/**
* Writes the RRO Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException when object header failed to write in channel buffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build RRO object.
*/
public interface Builder {
/**
* Builds RRO Object.
*
* @return RRO Object
*/
PcepRroObject build();
/**
* Returns RRO object header.
*
* @return RRO object header
*/
PcepObjectHeader getRroObjHeader();
/**
* Sets RRO object header and returns its builder.
*
* @param obj RRO object header
* @return Builder by setting RRO object header
*/
Builder setRroObjHeader(PcepObjectHeader obj);
/**
* Returns list of SubObjects.
*
* @return list of SubObjects
*/
LinkedList<PcepValueType> getSubObjects();
/**
* Sets list of SubObjects in RRO Object and returns its builder.
*
* @param llSubObjects list of SubObjects
* @return Builder by setting list of SubObjects
*/
Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
/**
* Sets P flag in RRO object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in RRO object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP SRP Object.
*/
public interface PcepSrpObject {
/**
* Returns SRP ID of SRP Object.
*
* @return SRP ID of SRP Object
*/
int getSrpID();
/**
* Sets SRP ID with specified value.
*
* @param srpID SRP ID of SRP Object
*/
void setSrpID(int srpID);
/**
* Returns R flag of SRP Object.
*
* @return R flag of SRP Object
*/
boolean getRFlag();
/**
* Sets R flag with specified value.
*
* @param bRFlag R Flag of SRP Object
*/
void setRFlag(boolean bRFlag);
/**
* sets the optional TLvs.
*
* @param llOptionalTlv list of optional tlvs
*/
public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Returns list of optional tlvs.
*
* @return llOptionalTlv list of optional tlvs
*/
public LinkedList<PcepValueType> getOptionalTlv();
/**
* Prints attributes of SRP object.
*/
void print();
/**
* Writes the SRP Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException when tlv is null
*/
int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build SRP object.
*/
public interface Builder {
/**
* Builds SRP Object.
*
* @return SRP Object
* @throws PcepParseException when mandatory object is not set
*/
PcepSrpObject build() throws PcepParseException;
/**
* Returns SRP object header.
*
* @return SRP object header
*/
PcepObjectHeader getSrpObjHeader();
/**
* Sets SRP object header and returns its builder.
*
* @param obj SRP object header
* @return Builder by setting SRP object header
*/
Builder setSrpObjHeader(PcepObjectHeader obj);
/**
* Returns SRP ID of SRP Object.
*
* @return SRP ID of SRP Object
*/
int getSrpID();
/**
* Sets SRP ID and returns its builder.
*
* @param srpID SRP ID
* @return Builder by setting SRP ID
*/
Builder setSrpID(int srpID);
/**
* Returns R flag of SRP Object.
*
* @return R flag of SRP Object
*/
boolean getRFlag();
/**
* Sets R flag and returns its builder.
*
* @param bRFlag R flag
* @return Builder by setting R flag
*/
Builder setRFlag(boolean bRFlag);
/**
* Returns list of optional tlvs.
*
* @return llOptionalTlv list of optional tlvs
*/
public LinkedList<PcepValueType> getOptionalTlv();
/**
* sets the optional TLvs.
*
* @param llOptionalTlv List of optional tlv
* @return builder by setting list of optional tlv.
*/
public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in SRP object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in SRP object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity provides State Report for PCEP Report Message.
*/
public interface PcepStateReport {
/**
* Provides PCEP Message path for report message.
*/
public interface PcepMsgPath {
/**
* Returns PcepEroObject.
*
* @return eroObj
*/
PcepEroObject getEroObject();
/**
* Sets PcepEroObject.
*
* @param eroObject Ero Object
*/
void setEroObject(PcepEroObject eroObject);
/**
* Returns PcepAttribute.
*
* @return attrList
*/
PcepAttribute getPcepAttribute();
/**
* Sets PcepAttribute.
*
* @param pcepAttribute Pcep Attribute object
*/
void setPcepAttribute(PcepAttribute pcepAttribute);
/**
* Returns PcepRroObject.
*
* @return rroObj
*/
PcepRroObject getRroObject();
/**
* Sets PcepRroObject.
*
* @param rroObject Rro object
*/
void setRroObject(PcepRroObject rroObject);
/**
* Returns PcepBandwidthObject.
*
* @return bandwidth object
*/
PcepBandwidthObject getBandwidthObject();
/**
* Sets PcepBandwidthObject.
*
* @param bandwidth bandwidth object
*/
void setBandwidthObject(PcepBandwidthObject bandwidth);
/**
* Reads all the Objects for PCEP Message Path.
*
* @param bb of type channel buffer
* @return PCEP Message path
* @throws PcepParseException when invalid buffer received
*/
public PcepMsgPath read(ChannelBuffer bb) throws PcepParseException;
/**
* Writes all the objects for pcep message path.
*
* @param bb of type channel buffer.
* @return object length index
* @throws PcepParseException when mandatory object is not set
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/***
* Prints the attribute of PCEP Message Path.
*/
public void print();
}
/**
* Returns PcepSrpObject.
*
* @return srpObject
*/
PcepSrpObject getSrpObject();
/**
* Returns PcepLspObject.
*
* @return lspObject
*/
PcepLspObject getLspObject();
/**
* Returns PcepMsgPath.
*
* @return msgPath
*/
PcepMsgPath getMsgPath();
/**
* Sets the SRP Object.
*
* @param srpObj Pcep Srp Object
*/
void setSrpObject(PcepSrpObject srpObj);
/**
* Sets the LSP Object.
*
* @param lspObject Pcep Lsp Object
*/
void setLspObject(PcepLspObject lspObject);
/**
* Sets the Path Object.
*
* @param msgPath Pcep MsgPath object
*/
void setMsgPath(PcepMsgPath msgPath);
/**
* Prints the attribute of PCEP state report.
*/
public void print();
/**
* Builder interface with get and set functions to build PcepStateReport.
*/
public interface Builder {
/**
* Builds PcepStateReport.
*
* @return PcepStateReport
* @throws PcepParseException when mandatory object is not set
*/
PcepStateReport build() throws PcepParseException;
/**
* Returns PcepSrpObject.
*
* @return srpObject
*/
PcepSrpObject getSrpObject();
/**
* Returns PcepLspObject.
*
* @return lspObject
*/
PcepLspObject getLspObject();
/**
* Returns PcepMsgPath.
*
* @return msgPath
*/
PcepMsgPath getMsgPath();
/**
* Sets the SRP Object.
*
* @param srpObj Pcep Srp Object
* @return builder by setting PcepSrpObject
*/
Builder setSrpObject(PcepSrpObject srpObj);
/**
* Sets the LSP Object.
*
* @param lspObject Pcep Lsp Object
* @return builder by setting PcepLspObject
*/
Builder setLspObject(PcepLspObject lspObject);
/**
* Sets the Path Object.
*
* @param msgPath Pcep MsgPath object
* @return builder by setting PcepMsgPath
*/
Builder setMsgPath(PcepMsgPath msgPath);
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;
import org.onosproject.pcepio.types.PcepValueType;
/**
* Abstraction of an entity providing PCEP TE Object.
*/
public interface PcepTEObject {
/**
* Returns TE object header.
*
* @return TE object header
*/
PcepObjectHeader getTEObjHeader();
/**
* Sets TE Object header.
*
* @param obj TE Object header
*/
void setTEObjHeader(PcepObjectHeader obj);
/**
* Returns ProtocolId in TE Object.
*
* @return ProtocolId in TE Object
*/
byte getProtocolId();
/**
* Sets ProtocolId in TE Object.
*
* @param yProtId ProtocolId in TE Object
*/
void setProtocolId(byte yProtId);
/**
* Returns R flag in TE Object.
*
* @return R flag in TE Object
*/
boolean getRFlag();
/**
* Sets R flag in TE Object.
*
* @param bRFlag R flag in TE Object
*/
void setRFlag(boolean bRFlag);
/**
* Returns S flag in TE Object.
*
* @return S flag in TE Object
*/
boolean getSFlag();
/**
* Sets S flag in TE Object.
*
* @param bSFlag S flag in TE Object
*/
void setSFlag(boolean bSFlag);
/**
* Returns TE ID in TE Object.
*
* @return TE ID in TE Object
*/
int getTEId();
/**
* Sets TE ID in TE Object.
*
* @param iTEId TE ID in TE Object
*/
void setTEId(int iTEId);
/**
* Returns list of Optional Tlvs in TE Object.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in TE Object.
*
* @param llOptionalTlv list of Optional Tlvs
*/
void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Prints attributes of TE object.
*/
void print();
/**
* Writes the TE Object into channel buffer.
*
* @param bb channel buffer
* @return Returns the writerIndex of this buffer
* @throws PcepParseException when obj header is not written to channel buffer
*/
public int write(ChannelBuffer bb) throws PcepParseException;
/**
* Builder interface with get and set functions to build TE object.
*/
public interface Builder {
/**
* Builds TE Object.
*
* @return TE Object
*/
PcepTEObject build();
/**
* Returns TE object header.
*
* @return TE object header
*/
PcepObjectHeader getTEObjHeader();
/**
* Sets TE object header and returns its builder.
*
* @param obj TE object header
* @return Builder by setting TE object header
*/
Builder setTEObjHeader(PcepObjectHeader obj);
/**
* Returns ProtocolId in TE Object.
*
* @return ProtocolId in TE Object
*/
byte getProtocolId();
/**
* Sets ProtocolId in TE Object and returns its builder.
*
* @param yProtId ProtocolId in TE Object
* @return Builder by setting ProtocolId
*/
Builder setProtocolId(byte yProtId);
/**
* Returns R flag in TE Object.
*
* @return R flag in TE Object
*/
boolean getRFlag();
/**
* Sets R flag in TE Object and returns its builder.
*
* @param bRFlag R flag in TE Object
* @return Builder by setting R flag
*/
Builder setRFlag(boolean bRFlag);
/**
* Returns S flag in TE Object.
*
* @return S flag in TE Object
*/
boolean getSFlag();
/**
* Sets S flag in TE Object and returns its builder.
*
* @param bSFlag S flag in TE Object
* @return Builder by setting S flag
*/
Builder setSFlag(boolean bSFlag);
/**
* Returns TE ID in TE Object.
*
* @return TE ID in TE Object
*/
int getTEId();
/**
* Sets TE ID in TE Object and returns its builder.
*
* @param iTEId TE ID in TE Object
* @return Builder by setting TE ID
*/
Builder setTEId(int iTEId);
/**
* Returns list of Optional Tlvs in TE Object.
*
* @return list of Optional Tlvs
*/
LinkedList<PcepValueType> getOptionalTlv();
/**
* Sets list of Optional Tlvs in TE Object and returns its builder.
*
* @param llOptionalTlv list of Optional Tlvs
* @return Builder by setting list of Optional Tlvs
*/
Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
/**
* Sets P flag in TE object header and returns its builder.
*
* @param value boolean value to set P flag
* @return Builder by setting P flag
*/
Builder setPFlag(boolean value);
/**
* Sets I flag in TE object header and returns its builder.
*
* @param value boolean value to set I flag
* @return Builder by setting I flag
*/
Builder setIFlag(boolean value);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP TE Report Message.
*/
public interface PcepTEReportMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of PCEP TE Objects.
*
* @return list of PCEP TE Objects
*/
LinkedList<PcepTEObject> getTEReportList();
/**
* Sets list of Optional Tlvs in TE Report Message.
*
* @param llTEReportList list of optional Tlvs
*/
void setTEReportList(LinkedList<PcepTEObject> llTEReportList);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with get and set functions to build TE Report message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepTEReportMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns list of Optional Tlv in TE Report Message.
*
* @return list of Optional Tlv
*/
LinkedList<PcepTEObject> getTEReportList();
/**
* Sets list of Optional Tlvs and returns its builder.
*
* @param llTEReportList list of Optional Tlvs
* @return Builder object for TE report message
*/
Builder setTEReportList(LinkedList<PcepTEObject> llTEReportList);
}
}
/*
* 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.pcepio.protocol;
/**
* Enum to Provide the Different types of PCEP messages.
*/
public enum PcepType {
NONE(0), OPEN(1), KEEP_ALIVE(2), PATH_COMPUTATION_REQUEST(3), PATH_COMPUTATION_REPLY(4),
NOTIFICATION(5), ERROR(6), CLOSE(7), REPORT(10), UPDATE(11), INITIATE(12), LABEL_UPDATE(13),
TE_REPORT(14), LABEL_RANGE_RESERV(15), MAX(16), END(17);
int iValue;
/**
* Assign iValue with the value iVal as the types of PCEP message.
*
* @param iVal type of pcep message
*/
PcepType(int iVal) {
iValue = iVal;
}
/**
* Returns iValue as type of PCEP message.
*
* @return iValue type of pcep message
*/
public byte getType() {
return (byte) iValue;
}
}
/*
* 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.pcepio.protocol;
import java.util.LinkedList;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Update Message.
*/
public interface PcepUpdateMsg extends PcepObject, PcepMessage {
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns the update request list for PCEP Update Message.
*
* @return list of Update Requests
*/
LinkedList<PcepUpdateRequest> getUpdateRequestList();
/**
* Sets the update request list for PCEP update message.
*
* @param llUpdateRequestList is a list of PCEP Update Requests
*/
void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList);
@Override
void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
/**
* Builder interface with Get and Set Functions to build the PCEP update Message.
*/
public interface Builder extends PcepMessage.Builder {
@Override
PcepUpdateMsg build();
@Override
PcepVersion getVersion();
@Override
PcepType getType();
/**
* Returns the update request list for the PCEP update message.
*
* @return list of Update Requests
*/
LinkedList<PcepUpdateRequest> getUpdateRequestList();
/**
* Sets the update request list for the PCEP update message.
*
* @param llUpdateRequestList list of Update requests
* @return builder by setting list llUpdateRequestList of PcepUpdateRequest.
*/
Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList);
}
}
/*
* 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.pcepio.protocol;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing PCEP Update Request List.
*/
public interface PcepUpdateRequest {
/**
* Returns object of PCEP SRP Object.
*
* @return srpObject of type PCEP SRP Object
*/
PcepSrpObject getSrpObject();
/**
* Returns object of PCEP LSP Object.
*
* @return lspObject of type PCEP LSP Object
*/
PcepLspObject getLspObject();
/**
* Returns object of PCEP MSG PATH.
*
* @return msgPath of type PCEP MSG PATH
*/
PcepMsgPath getMsgPath();
/**
* Sets the PCEP SRP Object.
*
* @param srpObject object of type PCEP SRP Object
*/
void setSrpObject(PcepSrpObject srpObject);
/**
* Sets the PCEP LSP Object.
*
* @param lspObject object of type PCEP LSP Object
*/
void setLspObject(PcepLspObject lspObject);
/**
* sets the PCEP MSG PATH.
*
* @param msgPath object of type PCEP MSG PATH
*/
void setMsgPath(PcepMsgPath msgPath);
/**
* Prints the attributes of PCEP Update Request.
*/
public void print();
/**
* Builder interface with get and set functions to build PcepUpdateRequest.
*/
public interface Builder {
/**
* Builds PcepUpdateRequest.
*
* @return PcepUpdateRequest
* @throws PcepParseException if mandatory object is not set
*/
PcepUpdateRequest build() throws PcepParseException;
/**
* Returns PcepSrpObject.
*
* @return srpObject
*/
PcepSrpObject getSrpObject();
/**
* Returns PcepLspObject.
*
* @return lspObject
*/
PcepLspObject getLspObject();
/**
* Returns PcepMsgPath.
*
* @return msgPath
*/
PcepMsgPath getMsgPath();
/**
* Sets the SRP Object.
*
* @param srpObj of type PcepSrpObject
* @return builder by setting PcepSrpObject
*/
Builder setSrpObject(PcepSrpObject srpObj);
/**
* Sets the LSP Object.
*
* @param lspObject of type PcepLspObject
* @return builder by setting PcepLspObject
*/
Builder setLspObject(PcepLspObject lspObject);
/**
* Sets the Path Object.
*
* @param msgPath of type PcepMsgPath
* @return builder by setting PcepMsgPath
*/
Builder setMsgPath(PcepMsgPath msgPath);
}
}
\ No newline at end of file
/*
* 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.pcepio.protocol;
/**
* Enum to provide PCEP Message Version.
*/
public enum PcepVersion {
PCEP_1(1);
public final int packetVersion;
/**
* Assign PCEP PacketVersion with WireVersion.
*
* @param wireVersion version of pcep
*/
PcepVersion(final int wireVersion) {
this.packetVersion = wireVersion;
}
/**
* Returns Wire version of PCEP Message.
*
* @return packetVersion
*/
public int getWireVersion() {
return packetVersion;
}
}
/*
* 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.pcepio.protocol;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
/**
* Abstraction of an entity providing functionality to write byte streams of
* Messages to channel buffer.
*/
public interface Writeable {
/**
* Writes byte streams of messages to channel buffer.
*
* @param bb parameter of type channel buffer
* @throws PcepParseException when error occurs while writing pcep message to channel buffer
*/
void writeTo(ChannelBuffer bb) throws PcepParseException;
}
package org.onosproject.pcepio.types;
import java.util.LinkedList;
import java.util.ListIterator;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.protocol.PcepErrorObject;
import org.onosproject.pcepio.protocol.PcepOpenObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*
* Provide the error object list with open object.
*/
public class ErrorObjListWithOpen {
//errorObjList is mandatory
LinkedList<PcepErrorObject> llerrorObjList;
// openObject is optional
PcepOpenObject openObject;
// flag to check if open object is set or not
public boolean isOpenObjectSet;
protected static final Logger log = LoggerFactory.getLogger(ErrorObjListWithOpen.class);
/*
* constructor to initialize errObj,openObj.
*
* @param errObj error object list
* @param openObj open object
*/
public ErrorObjListWithOpen(LinkedList<PcepErrorObject> errObj, PcepOpenObject openObj) {
this.llerrorObjList = errObj;
this.openObject = openObj;
if (openObj != null) {
isOpenObjectSet = true;
} else {
isOpenObjectSet = false;
}
}
/*
* constructor to initialize errObj.
*
* @param errObj error object list
*/
public ErrorObjListWithOpen(LinkedList<PcepErrorObject> errObj) {
this.llerrorObjList = errObj;
this.openObject = null;
isOpenObjectSet = false;
}
public LinkedList<Integer> getErrorType() {
LinkedList<Integer> errorType = new LinkedList<Integer>();
if (llerrorObjList != null) {
ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
int error;
PcepErrorObject errorObj;
while (errObjListIterator.hasNext()) {
errorObj = errObjListIterator.next();
error = errorObj.getErrorType();
errorType.add(error);
}
}
return errorType;
}
public LinkedList<Integer> getErrorValue() {
LinkedList<Integer> errorValue = new LinkedList<Integer>();
if (llerrorObjList != null) {
ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
int error;
PcepErrorObject errorObj;
while (errObjListIterator.hasNext()) {
errorObj = errObjListIterator.next();
error = errorObj.getErrorValue();
errorValue.add(error);
}
}
return errorValue;
}
/*
* Checks whether error object list is empty or not.
*
* @return whether error object list is empty or not
*/
public boolean isErrorObjListWithOpenPresent() {
// ( <error-obj-list> [<Open>]
// At least in this case <error-obj-list> should be present.
return (!this.llerrorObjList.isEmpty()) ? true : false;
}
/*
* Write Error Object List and Open Object to channel buffer.
*
* @param bb of type channel buffer
* @throws PcepParseException when mandatory fields are not set
*/
public int write(ChannelBuffer bb) throws PcepParseException {
int iLenStartIndex = bb.writerIndex();
boolean bIsErrObjListFound = false;
//<error-obj-list> is mandatory , if not present throw exception.
if (llerrorObjList != null) {
ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
while (errObjListIterator.hasNext()) {
errObjListIterator.next().write(bb);
bIsErrObjListFound = true;
}
}
if (!bIsErrObjListFound) {
throw new PcepParseException("Error: [ErrorObjListWithOpen::write] <error-obj-list> is mandatory.");
}
//Open Object is optional , if present write.
if (openObject != null) {
openObject.write(bb);
}
return bb.writerIndex() - iLenStartIndex;
}
/*
* Prints the attributes of ErrorObject List with open Object.
*/
public void print() {
log.debug("ErrorObjListWithOpen:");
ListIterator<PcepErrorObject> pcepErrorObjIterator = llerrorObjList.listIterator();
log.debug("<error-obj-list> :");
while (pcepErrorObjIterator.hasNext()) {
pcepErrorObjIterator.next().print();
}
log.debug("OpenObject:");
if (openObject != null) {
openObject.print();
}
}
}
package org.onosproject.pcepio.types;
import java.util.LinkedList;
import java.util.ListIterator;
import org.onosproject.pcepio.protocol.PcepLabelObject;
import org.onosproject.pcepio.protocol.PcepLspObject;
import org.onosproject.pcepio.protocol.PcepSrpObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*
* Provides Pcep Label.
* REference :draft-zhao-pce-pcep-extension-for-pce-controller-01.
*/
public class PcepLabelDownload {
protected static final Logger log = LoggerFactory.getLogger(PcepLabelDownload.class);
//PCEP SPR Object
PcepSrpObject srpObject;
//PCEP LSP Object
PcepLspObject lspObject;
//LinkList of Labels
LinkedList<PcepLabelObject> llLabelList;
/*
* Returns SRP Object.
*
* @return PCEP SRP Object
*/
public PcepSrpObject getSrpObject() {
return srpObject;
}
/*
* Sets the Pcep Srp Object.
*
* @param srpobj PCEP SRP Object
*/
public void setSrpObject(PcepSrpObject srpobj) {
this.srpObject = srpobj;
}
/*
* Returns LSP Object.
*
* @return PCEP LSP Object
*/
public PcepLspObject getLspObject() {
return lspObject;
}
/*
* Sets the Pcep LSP Object.
*
* @param lspObject PCEP LSP Object
*/
public void setLspObject(PcepLspObject lspObject) {
this.lspObject = lspObject;
}
/*
* Returns a list of labels.
*
* @return llLabelList list of pcep label objects
*/
public LinkedList<PcepLabelObject> getLabelList() {
return llLabelList;
}
/*
* set the llLabelList list of type PcepLableObject.
*
* @param llLabelList list of pcep label objects
*/
public void setLabelList(LinkedList<PcepLabelObject> llLabelList) {
this.llLabelList = llLabelList;
}
/*
* Prints the attribute of PcepLableObject.
*/
public void print() {
log.debug("LABEL DOWNLOAD:");
srpObject.print();
lspObject.print();
log.debug("label-list:");
ListIterator<PcepLabelObject> listIterator = llLabelList.listIterator();
while (listIterator.hasNext()) {
listIterator.next().print();
}
}
}
/*
* 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.pcepio.types;
import org.onosproject.pcepio.protocol.PcepFecObject;
import org.onosproject.pcepio.protocol.PcepLabelObject;
import org.onosproject.pcepio.protocol.PcepSrpObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provide PCEP Label Map.
* Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01.
*/
public class PcepLabelMap {
protected static final Logger log = LoggerFactory.getLogger(PcepLabelMap.class);
//PCEP SRP Object
PcepSrpObject srpObject;
//PCEP Label Object
PcepLabelObject labelObject;
//PCEP FEC Object
PcepFecObject fecObject;
/**
* Sets Fec Object.
*
* @param fecObject PCEP fec object
*/
public void setFECObject(PcepFecObject fecObject) {
this.fecObject = fecObject;
}
/**
* Returns the PcepFecObject.
*
* @return PCEP fec object
*/
public PcepFecObject getFECObject() {
return this.fecObject;
}
/**
* Returns SRP Object.
*
* @return PCEP SRP Object
*/
public PcepSrpObject getSrpObject() {
return srpObject;
}
/**
* Sets the PCEP Srp Object.
*
* @param srpObject PCEP SRP Object
*/
public void setSrpObject(PcepSrpObject srpObject) {
this.srpObject = srpObject;
}
/**
* Returns labelObject.
*
* @return PCEP label object
*/
public PcepLabelObject getLabelObject() {
return labelObject;
}
/**
* Sets the Pcep labelObject.
*
* @param labelObject PCEP label object
*/
public void setLabelObject(PcepLabelObject labelObject) {
this.labelObject = labelObject;
}
/**
* Prints the attribute of PcepLabelMap.
*/
public void print() {
log.debug("LABEL MAP:");
srpObject.print();
labelObject.print();
fecObject.print();
}
}
/*
* 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.pcepio.types;
import org.jboss.netty.buffer.ChannelBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides PCEP Object Header which is common for all the objects.
* Reference : RFC 5440.
*/
public class PcepObjectHeader {
/*
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Object-Class | OT |Res|P|I| Object Length (bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// (Object body) //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PCEP Common Object Header
*/
protected static final Logger log = LoggerFactory.getLogger(PcepObjectHeader.class);
public static final boolean REQ_OBJ_MUST_PROCESS = true;
public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false;
public static final boolean RSP_OBJ_IGNORED = true;
public static final boolean RSP_OBJ_PROCESSED = false;
public static final int OBJECT_TYPE_SHIFT_VALUE = 4;
public static final byte PFLAG_SET = 0x02;
public static final byte IFLAG_SET = 0x01;
public static final int SET = 1;
private byte objClass;
private byte objType;
private boolean bPFlag;
private boolean bIFlag;
private short objLen;
/**
* Constructor to initialize all the variables in object header.
*
* @param objClass PCEP Object class
* @param objType PCEP Object type
* @param bPFlag P flag
* @param bIFlag I flag
* @param objLen PCEP object length
*/
public PcepObjectHeader(byte objClass, byte objType, boolean bPFlag, boolean bIFlag, short objLen) {
this.objClass = objClass;
this.objType = objType;
this.bPFlag = bPFlag;
this.bIFlag = bIFlag;
this.objLen = objLen;
}
/**
* Sets the Object class.
*
* @param value object class
*/
public void setObjClass(byte value) {
this.objClass = value;
}
/**
* Sets the Object TYPE.
*
* @param value object type
*/
public void setObjType(byte value) {
this.objType = value;
}
/**
* Sets the Object P flag.
*
* @param value p flag
*/
public void setPFlag(boolean value) {
this.bPFlag = value;
}
/**
* Sets the Object I flag.
*
* @param value I flag
*/
public void setIFlag(boolean value) {
this.bIFlag = value;
}
/**
* Sets the Object Length.
*
* @param value object length
*/
public void setObjLen(short value) {
this.objLen = value;
}
/**
* Returns Object's P flag.
*
* @return bPFlag P flag
*/
public boolean getPFlag() {
return this.bPFlag;
}
/**
* Returns Object's i flag.
*
* @return bIFlag I flag
*/
public boolean getIFlag() {
return this.bIFlag;
}
/**
* Returns Object Length.
*
* @return objLen object length
*/
public short getObjLen() {
return this.objLen;
}
/**
* Returns Object class.
*
* @return objClass object class
*/
public byte getObjClass() {
return this.objClass;
}
/**
* Returns Object Type.
*
* @return objType object type
*/
public byte getObjType() {
return this.objType;
}
/**
* Writes Byte stream of PCEP object header to channel buffer.
*
* @param bb of type channel buffer
* @return objLenIndex object length index in channel buffer
*/
public int write(ChannelBuffer bb) {
bb.writeByte(this.objClass);
byte temp = (byte) (this.objType << OBJECT_TYPE_SHIFT_VALUE);
if (this.bPFlag) {
temp = (byte) (temp | PFLAG_SET);
}
if (this.bIFlag) {
temp = (byte) (temp | IFLAG_SET);
}
bb.writeByte(temp);
int objLenIndex = bb.writerIndex();
bb.writeShort((short) 0);
return objLenIndex;
}
/**
* Read from channel buffer and Returns PCEP Objects header.
*
* @param bb of type channel buffer
* @return PCEP Object header
*/
public static PcepObjectHeader read(ChannelBuffer bb) {
byte objClass;
byte objType;
boolean bPFlag;
boolean bIFlag;
short objLen;
objClass = bb.readByte();
byte temp = bb.readByte();
bIFlag = ((temp & IFLAG_SET) == IFLAG_SET) ? true : false;
bPFlag = ((temp & PFLAG_SET) == PFLAG_SET) ? true : false;
objType = (byte) (temp >> OBJECT_TYPE_SHIFT_VALUE);
objLen = bb.readShort();
return new PcepObjectHeader(objClass, objType, bPFlag, bIFlag, objLen);
}
/**
* Prints the Attributes of PCEP Object header.
*/
public void print() {
log.debug("PcepObjectHeader");
log.debug("Object Class: " + objClass);
log.debug("Object Type: " + objType);
log.debug("Object Length: " + objLen);
log.debug("P flag: " + bPFlag);
log.debug("I flag: " + bIFlag);
}
}
/*
* 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.pcepio.types;
import org.jboss.netty.buffer.ChannelBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides PcepRsvpObjectHeader.
*/
public class PcepRsvpObjectHeader {
/*
0 1 2 3
+-------------+-------------+-------------+-------------+
| Length (bytes) | Class-Num | C-Type |
+-------------+-------------+-------------+-------------+
| |
// (Object contents) //
| |
+-------------+-------------+-------------+-------------+
ERROR_SPEC object Header
*/
protected static final Logger log = LoggerFactory.getLogger(PcepRsvpObjectHeader.class);
public static final boolean REQ_OBJ_MUST_PROCESS = true;
public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false;
public static final boolean RSP_OBJ_IGNORED = true;
public static final boolean RSP_OBJ_PROCESSED = false;
public static final int OBJECT_TYPE_SHIFT_VALUE = 4;
private byte objClassNum;
private byte objClassType;
private short objLen;
/**
* Constructor to initialize class num , length and type.
*
* @param objClassNum object class number
* @param objClassType object class type
* @param objLen object length
*/
public PcepRsvpObjectHeader(byte objClassNum, byte objClassType, short objLen) {
this.objClassNum = objClassNum;
this.objClassType = objClassType;
this.objLen = objLen;
}
/**
* Sets the Class num.
*
* @param value object class number
*/
public void setObjClassNum(byte value) {
this.objClassNum = value;
}
/**
* Sets the Class type.
*
* @param value object class type
*/
public void setObjClassType(byte value) {
this.objClassType = value;
}
/**
* Sets the Class Length.
*
* @param value object length
*/
public void setObjLen(short value) {
this.objLen = value;
}
/**
* Returns Object Length.
*
* @return objLen
*/
public short getObjLen() {
return this.objLen;
}
/**
* Returns Object num.
*
* @return objClassNum
*/
public byte getObjClassNum() {
return this.objClassNum;
}
/**
* Returns Object type.
*
* @return objClassType
*/
public byte getObjClassType() {
return this.objClassType;
}
/**
* Writes the byte stream of PcepRsvpObjectHeader to channel buffer.
*
* @param bb of type channel buffer
* @return object length index in channel buffer
*/
public int write(ChannelBuffer bb) {
int iLenStartIndex = bb.writerIndex();
bb.writeShort((short) 0);
bb.writeByte(this.objClassNum);
bb.writeByte(this.objClassType);
return bb.writerIndex() - iLenStartIndex;
}
/**
* Reads the PcepRsvpObjectHeader.
*
* @param bb of type channel buffer
* @return PcepRsvpObjectHeader
*/
public static PcepRsvpObjectHeader read(ChannelBuffer bb) {
log.debug("PcepRsvpObjectHeader ::read ");
byte objClassNum;
byte objClassType;
short objLen;
objLen = bb.readShort();
objClassNum = bb.readByte();
objClassType = bb.readByte();
return new PcepRsvpObjectHeader(objClassNum, objClassType, objLen);
}
/**
* Prints the attribute of PcepRsvpObjectHeader.
*/
public void print() {
log.debug("PcepObjectHeader");
log.debug("Object Class-Num: " + objClassNum);
log.debug("Object C-Type: " + objClassType);
log.debug("Object Length: " + objLen);
}
}
/*
* 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.pcepio.types;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.protocol.PcepVersion;
/**
* Abstraction which Provides the PCEP Values of Type, Length ,Version.
*/
public interface PcepValueType {
/**
* Returns the Version Of PCEP Message.
*
* @return Version of PcepVersion Type.
*/
PcepVersion getVersion();
/**
* Returns the Type of PCEP Message.
*
* @return value of type
*/
public short getType();
/**
* Returns the Length of PCEP Message.
*
* @return value of Length
*/
public short getLength();
/**
* Writes the byte Stream of PCEP Message to channel buffer.
*
* @param bb of type channel buffer
* @return length of bytes written to channel buffer
*/
public int write(ChannelBuffer bb);
/**
* Prints the Attributes of PCEP Message.
*/
public void print();
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2014 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcep-controller</artifactId>
<packaging>pom</packaging>
<description>ONOS Pcep Protocol subsystem</description>
<modules>
<module>api</module>
<module>pcepio</module>
</modules>
<dependencies>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onlab-misc</artifactId>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onlab-junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
......@@ -49,6 +49,7 @@
<module>apps</module>
<module>incubator</module>
<module>features</module>
<module>pcep</module>
<module>tools/package/archetypes</module>
<module>tools/package/branding</module>
<!-- FIXME remove before release -->
......@@ -399,6 +400,18 @@
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcepio</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-pcep-api</artifactId>
<version>${project.version}</version>
</dependency>
......