diff options
author | Ashlee Young <ashlee@wildernessvoice.com> | 2015-11-22 10:02:05 -0800 |
---|---|---|
committer | Ashlee Young <ashlee@wildernessvoice.com> | 2015-11-22 10:02:05 -0800 |
commit | 77ce3be7567bd01c66d8ee88a93b485666723501 (patch) | |
tree | 283e7f39a501750bbd705fbb91645b20198900f1 | |
parent | 00e6500d0813dcbccaaa741ef38cc1eae6d11e07 (diff) |
Removed patch path since changes have been merged upstream to a different path. Updated README with directions.
Change-Id: Ie419abd2d3d3ef7315de9f607dcd757a78190995
Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
556 files changed, 3772 insertions, 65575 deletions
diff --git a/autobuild.sh b/autobuild.sh index faee7b95..0fb18100 100755 --- a/autobuild.sh +++ b/autobuild.sh @@ -71,9 +71,9 @@ export RPMBUILDPATH=~/rpmbuild ##### End Set build environment ##### ##### Patches ##### -PATCHES=$GERRITROOT/framework/patches -BUILDS=$GERRITROOT/framework/build # Pretty much the same as BUILDROOT. -PATCH_PATH_1=onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc #patches should be labled as #PATCH_PATH_n beginning with 1. +# PATCHES=$GERRITROOT/framework/patches +# BUILDS=$GERRITROOT/framework/build # Pretty much the same as BUILDROOT. +# PATCH_PATH_1=onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc #patches should be labled as #PATCH_PATH_n beginning with 1. ##### End Patches ##### ##### Ask Function ##### @@ -288,8 +288,8 @@ buildONOS() mkdir -p $ONOSROOT cp -rv $ONOSRC/* $ONOSROOT/ # if ask "Would you like to apply ONOSFW unique patches?"; then - mkdir -p $BUILDROOT/$PATCH_PATH_1 # Begin applying patches - cp $PATCHES/$PATCH_PATH_1/* $BUILDROOT/$PATCH_PATH_1/ + # mkdir -p $BUILDROOT/$PATCH_PATH_1 # Begin applying patches + # cp $PATCHES/$PATCH_PATH_1/* $BUILDROOT/$PATCH_PATH_1/ # fi cd $ONOSROOT ln -sf $KARAF_ROOT/apache-karaf-$KARAF_VERSION apache-karaf-$KARAF_VERSION @@ -18,9 +18,9 @@ # limitations under the License. ##### Settings ##### -VERSION=1.0.5 +VERSION=1.0.6 AUTHOR="Ashlee Young" -MODIFIED="November 15, 2015" +MODIFIED="November 17, 2015" GERRITURL="git clone ssh://im2bz2pee@gerrit.opnfv.org:29418/onosfw" ONOSURL="https://github.com/opennetworkinglab/onos" SURICATAURL="https://github.com/inliniac/suricata" @@ -29,6 +29,7 @@ JAVA_VERSION=1.8 ANT_VERSION=1.9.6 MAVEN_VERSION=3.3.3 KARAF_VERSION=4.0.2 +MODE=$1 ##### End Settings ##### ##### Platform detection ##### @@ -68,14 +69,9 @@ export ONOS_USER=root export ONOS_GROUP=root export ONOS_CELL=sdnds-tw export RPMBUILDPATH=~/rpmbuild +export PATCHES=$GERRITROOT/framework/patches ##### End Set build environment ##### -##### Patches ##### -PATCHES=$GERRITROOT/framework/patches -BUILDS=$GERRITROOT/framework/build # Pretty much the same as BUILDROOT. -PATCH_PATH_1=onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc #patches should be labled as #PATCH_PATH_n beginning with 1. -##### End Patches ##### - ##### Ask Function ##### ask() { @@ -120,24 +116,27 @@ displayVersion() # repository in this project with just the diffs. updateONOS() { - printf "NOTE: Updating upstream src is a PTL function. Please use this function locally, only. \n" - printf "If you need the main repo updated to pick up ONOS upstream features, please email \n" - printf "me at ashlee AT onosfw.com. \n\n" - printf "Thanks! \n\n" - if ask "Do you still wish to update your local ONOS source tree?"; then - freshONOS - printf "\n" - cd $BUILDROOT - git clone $ONOSURL onosproject - rsync -arvP --delete --exclude=.git --exclude=.gitignore --exclude=.gitreview onosproject/ ../src/onos/ - cd onosproject - git log > ../onos_update.$(date +%s) - cd ../ - rm -rf onosproject - cd $GERRITROOT - # End applying patches + if [ "$MODE" != "auto" ]; then + printf "NOTE: Updating upstream src is a PTL function. Please use this function locally, only. \n" + printf "If you need the main repo updated to pick up ONOS upstream features, please email \n" + printf "me at ashlee AT onosfw.com. \n\n" + printf "Thanks! \n\n" + if ask "Do you still wish to update your local ONOS source tree?"; then + freshONOS + printf "\n" + cd $BUILDROOT + git clone $ONOSURL onosproject + rsync -arvP --delete --exclude=.git --exclude=.gitignore --exclude=.gitreview onosproject/ ../src/onos/ + cd onosproject + git log > ../onos_update.$(date +%s) + cd ../ + rm -rf onosproject + cd $GERRITROOT + # End applying patches + fi fi printf "\n" + printf "Build Mode is set to $MODE\n\n" } ##### End Update ONOS ##### @@ -272,9 +271,9 @@ freshONOS() { if [ -d $ONOSROOT ]; then printf "ONOS has previously been built.\n" - if ask "Would you like to build fresh? This involves deleting the old build."; then - rm -rf $ONOSROOT - fi + if ask "Would you like to build fresh? This involves deleting the old build."; then + rm -rf $ONOSROOT + fi fi } ##### End Delete ONOS Build ##### @@ -288,8 +287,18 @@ buildONOS() mkdir -p $ONOSROOT cp -rv $ONOSRC/* $ONOSROOT/ if ask "Would you like to apply ONOSFW unique patches?"; then - mkdir -p $BUILDROOT/$PATCH_PATH_1 # Begin applying patches - cp $PATCHES/$PATCH_PATH_1/* $BUILDROOT/$PATCH_PATH_1/ + cd $PATCHES + files=$(find . ! -path . -type f | grep -v 0) # Checks for any files in patches directory + if [ $"files" > 0 ]; then + for file in $files; do + FILEPATH=$(dirname $file) #isolate just the relative path so we can re-create it + if [ ! -d "$BUILDROOT/$FILEPATH" ]; then + mkdir -p $BUILDROOT/$FILEPATH #recreate the relative path + fi + cp -v $file $BUILDROOT/$FILEPATH/. #copy all files to proper location(s) + done + fi + cd $GERRITROOT fi cd $ONOSROOT ln -sf $KARAF_ROOT/apache-karaf-$KARAF_VERSION apache-karaf-$KARAF_VERSION @@ -303,8 +312,18 @@ buildONOS() else if ask "Would you like us to re-run building ONOS?"; then if ask "Would you like to apply ONOSFW unique patches?"; then - mkdir -p $BUILDROOT/$PATCH_PATH_1 # Begin applying patches - cp -v $PATCHES/$PATCH_PATH_1/* $BUILDROOT/$PATCH_PATH_1/ + cd $PATCHES + files=$(find . ! -path . -type f | grep -v 0) # Checks for any files in patches directory + if [ $"files" > 0 ]; then + for file in $files; do + FILEPATH=$(dirname $file) #isolate just the relative path so we can re-create it + if [ ! -d "$BUILDROOT/$FILEPATH" ]; then + mkdir -p $BUILDROOT/$FILEPATH #recreate the relative path + fi + cp -v $file $BUILDROOT/$FILEPATH/. #copy all files to proper location(s) + done + fi + cd $GERRITROOT fi cd $ONOSROOT ln -sf $KARAF_ROOT/apache-karaf-$KARAF_VERSION apache-karaf-$KARAF_VERSION diff --git a/framework/patches/README b/framework/patches/README new file mode 100644 index 00000000..f9626d79 --- /dev/null +++ b/framework/patches/README @@ -0,0 +1 @@ +This is where to place any files to patch upstream projects. The patches are whole files and must be added with their full relative path. For example, if you're making applying a patch to onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc, then you'll need that entire directory path here. Use copy and paste of the location after running "pwd". You can then use "mkdir -p" to create the full path. diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java deleted file mode 100644 index 0931206c..00000000 --- a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * 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.vtnrsc.sfc; - -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -/** - * Abstraction of an entity which provides flow classifier for service function chain. - */ -public interface FlowClassifier { - - /** - * Returns flow classifier ID. - * - * @return flow classifier id - */ - FlowClassifierId flowClassifierId(); - - /** - * Returns Tenant ID. - * - * @return tenant Id - */ - TenantId tenantId(); - - /** - * Returns flow classifier name. - * - * @return flow classifier name - */ - String flowclassifierName(); - - /** - * Returns flow classifier description. - * - * @return flow classifier description - */ - String flowClassifierDescription(); - - /** - * Returns ethernet type. - * - * @return ethernet type - */ - String etherType(); - - /** - * Returns IP Protocol. - * - * @return IP protocol - */ - String ipProtocol(); - - /** - * Returns minimum source port range. - * - * @return minimum source port range - */ - int minSrcPortRange(); - - /** - * Returns maximum source port range. - * - * @return maximum source port range - */ - int maxSrcPortRange(); - - /** - * Returns minimum destination port range. - * - * @return minimum destination port range - */ - int minDstPortRange(); - - /** - * Returns maximum destination port range. - * - * @return maximum destination port range. - */ - int maxDstPortRange(); - - /** - * Returns Source IP prefix. - * - * @return Source IP prefix - */ - IpPrefix srcIpPrefix(); - - /** - * Returns Destination IP prefix. - * - * @return Destination IP prefix - */ - IpPrefix dstIpPrefix(); - - /** - * Returns Source virtual port. - * - * @return Source virtual port - */ - VirtualPortId srcVirtualPort(); - - /** - * Returns Destination virtual port. - * - * @return Destination virtual port - */ - VirtualPortId dstVirtualPort(); - - /** - * Returns whether this Flow classifier is an exact match to the - * Flow classifier given in the argument. - * - * @param flowClassifier other flowClassifier to match against - * @return true if the flowClassifiers are an exact match, otherwise false - */ - boolean exactMatch(FlowClassifier flowClassifier); - - /** - * Builder for flow Classifier. - */ - interface Builder { - - /** - * Returns Flow Classifier. - * - * @return flow classifier. - */ - FlowClassifier build(); - - /** - * Sets Flow Classifier ID. - * - * @param flowClassifierId flow classifier id. - * @return Builder object by setting flow classifier Id. - */ - Builder setFlowClassifierId(FlowClassifierId flowClassifierId); - - /** - * Sets Tenant ID. - * - * @param tenantId tenant id. - * @return Builder object by setting Tenant ID. - */ - Builder setTenantId(TenantId tenantId); - - /** - * Sets Flow classifier name. - * - * @param name flow classifier name - * @return builder object by setting flow classifier name - */ - Builder setFlowClassifierName(String name); - - /** - * Sets flow classifier description. - * - * @param description flow classifier description - * @return flow classifier description - */ - Builder setFlowClassifierDescription(String description); - - /** - * Sets Ehternet type. - * - * @param etherType ethernet type - * @return ethernet type - */ - Builder setEtherType(String etherType); - - /** - * Sets IP protocol. - * - * @param protocol IP protocol - * @return builder object by setting IP protocol - */ - Builder setIpProtocol(String protocol); - - /** - * Set minimum source port range. - * - * @param minRange minimum source port range - * @return builder object by setting minimum source port range - */ - Builder setMinSrcPortRange(int minRange); - - /** - * Sets maximum source port range. - * - * @param maxRange maximum source port range - * @return builder object by setting maximum source port range - */ - Builder setMaxSrcPortRange(int maxRange); - - /** - * Sets minimum destination port range. - * - * @param minRange minimum destination port range - * @return builder object by setting minimum destination port range - */ - Builder setMinDstPortRange(int minRange); - - /** - * Sets maximum destination port range. - * - * @param maxRange maximum destination port range. - * @return builder object by setting maximum destination port range. - */ - Builder setMaxDstPortRange(int maxRange); - - /** - * Sets Source IP prefix. - * - * @param srcIpPrefix Source IP prefix - * @return builder object by setting Source IP prefix - */ - Builder setSrcIpPrefix(IpPrefix srcIpPrefix); - - /** - * Sets Destination IP prefix. - * - * @param dstIpPrefix Destination IP prefix - * @return builder object by setting Destination IP prefix - */ - Builder setDstIpPrefix(IpPrefix dstIpPrefix); - - /** - * Sets Source virtual port. - * - * @param srcPort Source virtual port - * @return builder object by setting Source virtual port - */ - Builder setSrcVirtualPort(VirtualPortId srcPort); - - /** - * Sets Destination virtual port. - * - * @param dstPort Destination virtual port - * @return builder object by setting Destination virtual port - */ - Builder setDstVirtualPort(VirtualPortId dstPort); - } -} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java deleted file mode 100644 index d0f03959..00000000 --- a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.vtnrsc.sfc; - -import java.util.Objects; -import java.util.UUID; -import com.google.common.base.MoreObjects; - -/** - * flow classification identifier. - */ -public final class FlowClassifierId { - - private final UUID flowClassifierId; - - /** - * Constructor to create flow classifier id. - * - * @param flowClassifierId flow classifier id. - */ - private FlowClassifierId(final UUID flowClassifierId) { - this.flowClassifierId = flowClassifierId; - } - - /** - * Returns new flow classifier id. - * - * @param flowClassifierId flow classifier id - * @return new flow classifier id - */ - public static FlowClassifierId flowClassifierId(final UUID flowClassifierId) { - return new FlowClassifierId(flowClassifierId); - } - - @Override - public int hashCode() { - return Objects.hashCode(this.flowClassifierId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof FlowClassifierId) { - final FlowClassifierId other = (FlowClassifierId) obj; - return Objects.equals(this.flowClassifierId, other.flowClassifierId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("FlowClassifierId", flowClassifierId) - .toString(); - } -} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java deleted file mode 100644 index e3df941d..00000000 --- a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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.vtnrsc.sfc; - -import org.onosproject.vtnrsc.TenantId; - -/** - * Abstraction of an entity providing Port Pair information. - * A port pair represents a service function instance. - */ -public interface PortPair { - - /** - * Returns the ID of this port Pair. - * - * @return the port pair id - */ - PortPairId portPairId(); - - /** - * Returns the tenant id of this port pair. - * - * @return an tenant id - */ - TenantId tenantId(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String name(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String description(); - - /** - * Returns the ingress port of this port pair. - * - * @return ingress of port pair - */ - String ingress(); - - /** - * Returns the egress port of this port pair. - * - * @return egress of port pair - */ - String egress(); - - /** - * Returns whether this port pair is an exact match to the port pair given - * in the argument. - * <p> - * Exact match means the Port port pairs match with the given port pair. - * It does not consider the port pair id, name and description. - * </p> - * @param portPair other port pair to match against - * @return true if the port pairs are an exact match, otherwise false - */ - boolean exactMatch(PortPair portPair); - - /** - * A port pair builder.. - */ - interface Builder { - - /** - * Assigns the port pair id to this object. - * - * @param portPairId the port pair id - * @return this the builder object - */ - Builder setId(PortPairId portPairId); - - /** - * Assigns tenant id to this object. - * - * @param tenantId tenant id of the port pair - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Assigns the name to this object. - * - * @param name name of the port pair - * @return this the builder object - */ - Builder setName(String name); - - /** - * Assigns the description to this object. - * - * @param description description of the port pair - * @return this the builder object - */ - Builder setDescription(String description); - - /** - * Assigns the ingress port to this object. - * - * @param port ingress port of the port pair - * @return this the builder object - */ - Builder setIngress(String port); - - /** - * Assigns the egress port to this object. - * - * @param port egress port of the port pair - * @return this the builder object - */ - Builder setEgress(String port); - - /** - * Builds a port pair object. - * - * @return a port pair. - */ - PortPair build(); - } -} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java deleted file mode 100644 index 0209c23e..00000000 --- a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.vtnrsc.sfc; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.UUID; - -import com.google.common.base.Objects; - -/** - * Representation of a Port Pair ID. - */ -public final class PortPairId { - - private final UUID portPairId; - - /** - * Private constructor for port pair id. - * - * @param id UUID id of port pair - */ - private PortPairId(UUID id) { - checkNotNull(id, "Port chain id can not be null"); - this.portPairId = id; - } - - /** - * Constructor to create port pair id from UUID. - * - * @param id UUID of port pair id - * @return object of port pair id - */ - public static PortPairId portPairId(UUID id) { - return new PortPairId(id); - } - - /** - * Constructor to create port pair id from string. - * - * @param id port pair id in string - * @return object of port pair id - */ - public static PortPairId portPairId(String id) { - return new PortPairId(UUID.fromString(id)); - } - - /** - * Returns teh value of port pair id. - * - * @return port pair id - */ - public UUID value() { - return portPairId; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj.getClass() == this.getClass()) { - PortPairId that = (PortPairId) obj; - return Objects.equal(this.portPairId, that.portPairId); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.portPairId); - } - - @Override - public String toString() { - return portPairId.toString(); - } -} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java deleted file mode 100644 index 4fbcfd29..00000000 --- a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Service for interacting with SFC. - */ -package org.onosproject.vtnrsc.sfc; diff --git a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java b/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java deleted file mode 100644 index 567944a6..00000000 --- a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Copyright 2015 AT&T Foundry - * - * 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.aaa; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.nio.ByteBuffer; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.EthType; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; -import org.onlab.packet.RADIUS; -import org.onlab.packet.RADIUSAttribute; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.packet.DefaultOutboundPacket; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.xosintegration.VoltTenantService; -import org.slf4j.Logger; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY; -import static org.onosproject.net.packet.PacketPriority.CONTROL; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * AAA application for ONOS. - */ -@Component(immediate = true) -public class AAA { - - // for verbose output - private final Logger log = getLogger(getClass()); - - // a list of our dependencies : - // to register with ONOS as an application - described next - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - // to receive Packet-in events that we'll respond to - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected PacketService packetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected VoltTenantService voltTenantService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry netCfgService; - - // Parsed RADIUS server addresses - protected InetAddress radiusIpAddress; - protected String radiusMacAddress; - - // NAS IP address - protected InetAddress nasIpAddress; - protected String nasMacAddress; - - // RADIUS server secret - protected String radiusSecret; - - // ID of RADIUS switch - protected String radiusSwitch; - - // RADIUS port number - protected long radiusPort; - - // RADIUS server TCP port number - protected short radiusServerPort; - - // our application-specific event handler - private ReactivePacketProcessor processor = new ReactivePacketProcessor(); - - // our unique identifier - private ApplicationId appId; - - // Socket used for UDP communications with RADIUS server - private DatagramSocket radiusSocket; - - // Executor for RADIUS communication thread - private ExecutorService executor; - - // Configuration properties factory - private final ConfigFactory factory = - new ConfigFactory<ApplicationId, AAAConfig>(APP_SUBJECT_FACTORY, - AAAConfig.class, - "AAA") { - @Override - public AAAConfig createConfig() { - return new AAAConfig(); - } - }; - - // Listener for config changes - private final InternalConfigListener cfgListener = new InternalConfigListener(); - - /** - * Builds an EAPOL packet based on the given parameters. - * - * @param dstMac destination MAC address - * @param srcMac source MAC address - * @param vlan vlan identifier - * @param eapolType EAPOL type - * @param eap EAP payload - * @return Ethernet frame - */ - private static Ethernet buildEapolResponse(MacAddress dstMac, MacAddress srcMac, - short vlan, byte eapolType, EAP eap) { - - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(dstMac.toBytes()); - eth.setSourceMACAddress(srcMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - if (vlan != Ethernet.VLAN_UNTAGGED) { - eth.setVlanID(vlan); - } - //eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(eapolType); - eapol.setPacketLength(eap.getLength()); - - //eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - @Activate - public void activate() { - netCfgService.addListener(cfgListener); - netCfgService.registerConfigFactory(factory); - - // "org.onosproject.aaa" is the FQDN of our app - appId = coreService.registerApplication("org.onosproject.aaa"); - - cfgListener.reconfigureNetwork(netCfgService.getConfig(appId, AAAConfig.class)); - - // register our event handler - packetService.addProcessor(processor, PacketProcessor.director(2)); - requestIntercepts(); - - StateMachine.initializeMaps(); - - try { - radiusSocket = new DatagramSocket(radiusServerPort); - } catch (Exception ex) { - log.error("Can't open RADIUS socket", ex); - } - - executor = Executors.newSingleThreadExecutor( - new ThreadFactoryBuilder() - .setNameFormat("AAA-radius-%d").build()); - executor.execute(radiusListener); - } - - @Deactivate - public void deactivate() { - appId = coreService.registerApplication("org.onosproject.aaa"); - withdrawIntercepts(); - // de-register and null our handler - packetService.removeProcessor(processor); - processor = null; - StateMachine.destroyMaps(); - radiusSocket.close(); - executor.shutdownNow(); - } - - protected void sendRADIUSPacket(RADIUS radiusPacket) { - - try { - final byte[] data = radiusPacket.serialize(); - final DatagramSocket socket = radiusSocket; - - DatagramPacket packet = - new DatagramPacket(data, data.length, - radiusIpAddress, radiusServerPort); - - socket.send(packet); - } catch (IOException e) { - log.info("Cannot send packet to RADIUS server", e); - } - } - - /** - * Request packet in via PacketService. - */ - private void requestIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(EthType.EtherType.EAPOL.ethType().toShort()); - packetService.requestPackets(selector.build(), - CONTROL, appId); - } - - /** - * Cancel request for packet in via PacketService. - */ - private void withdrawIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(EthType.EtherType.EAPOL.ethType().toShort()); - packetService.cancelPackets(selector.build(), CONTROL, appId); - } - - /** - * Send the ethernet packet to the supplicant. - * - * @param ethernetPkt the ethernet packet - * @param connectPoint the connect point to send out - */ - private void sendPacketToSupplicant(Ethernet ethernetPkt, ConnectPoint connectPoint) { - TrafficTreatment treatment = DefaultTrafficTreatment.builder().setOutput(connectPoint.port()).build(); - OutboundPacket packet = new DefaultOutboundPacket(connectPoint.deviceId(), - treatment, ByteBuffer.wrap(ethernetPkt.serialize())); - packetService.emit(packet); - } - - // our handler defined as a private inner class - - /** - * Packet processor responsible for forwarding packets along their paths. - */ - private class ReactivePacketProcessor implements PacketProcessor { - @Override - public void process(PacketContext context) { - - // Extract the original Ethernet frame from the packet information - InboundPacket pkt = context.inPacket(); - Ethernet ethPkt = pkt.parsed(); - if (ethPkt == null) { - return; - } - try { - // identify if incoming packet comes from supplicant (EAP) or RADIUS - switch (EthType.EtherType.lookup(ethPkt.getEtherType())) { - case EAPOL: - handleSupplicantPacket(context.inPacket()); - break; - default: - log.trace("Skipping Ethernet packet type {}", - EthType.EtherType.lookup(ethPkt.getEtherType())); - } - } catch (StateMachineException e) { - log.warn("Unable to process RADIUS packet:", e); - } - } - - /** - * Creates and initializes common fields of a RADIUS packet. - * - * @param stateMachine state machine for the request - * @param eapPacket EAP packet - * @return RADIUS packet - */ - private RADIUS getRadiusPayload(StateMachine stateMachine, byte identifier, EAP eapPacket) { - RADIUS radiusPayload = - new RADIUS(RADIUS.RADIUS_CODE_ACCESS_REQUEST, - eapPacket.getIdentifier()); - - // set Request Authenticator in StateMachine - stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode()); - - radiusPayload.setIdentifier(identifier); - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME, - stateMachine.username()); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP, - AAA.this.nasIpAddress.getAddress()); - - radiusPayload.encapsulateMessage(eapPacket); - - return radiusPayload; - } - - /** - * Handles PAE packets (supplicant). - * - * @param inPacket Ethernet packet coming from the supplicant - */ - private void handleSupplicantPacket(InboundPacket inPacket) throws StateMachineException { - Ethernet ethPkt = inPacket.parsed(); - // Where does it come from? - MacAddress srcMAC = ethPkt.getSourceMAC(); - - DeviceId deviceId = inPacket.receivedFrom().deviceId(); - PortNumber portNumber = inPacket.receivedFrom().port(); - String sessionId = deviceId.toString() + portNumber.toString(); - StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(sessionId); - if (stateMachine == null) { - stateMachine = new StateMachine(sessionId, voltTenantService); - } - - - EAPOL eapol = (EAPOL) ethPkt.getPayload(); - - switch (eapol.getEapolType()) { - case EAPOL.EAPOL_START: - stateMachine.start(); - stateMachine.setSupplicantConnectpoint(inPacket.receivedFrom()); - - //send an EAP Request/Identify to the supplicant - EAP eapPayload = new EAP(EAP.REQUEST, stateMachine.identifier(), EAP.ATTR_IDENTITY, null); - Ethernet eth = buildEapolResponse(srcMAC, MacAddress.valueOf(nasMacAddress), - ethPkt.getVlanID(), EAPOL.EAPOL_PACKET, - eapPayload); - stateMachine.setSupplicantAddress(srcMAC); - stateMachine.setVlanId(ethPkt.getVlanID()); - - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - - break; - case EAPOL.EAPOL_PACKET: - RADIUS radiusPayload; - // check if this is a Response/Identify or a Response/TLS - EAP eapPacket = (EAP) eapol.getPayload(); - - byte dataType = eapPacket.getDataType(); - switch (dataType) { - - case EAP.ATTR_IDENTITY: - // request id access to RADIUS - stateMachine.setUsername(eapPacket.getData()); - - radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket); - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - - sendRADIUSPacket(radiusPayload); - - // change the state to "PENDING" - stateMachine.requestAccess(); - break; - case EAP.ATTR_MD5: - // verify if the EAP identifier corresponds to the - // challenge identifier from the client state - // machine. - if (eapPacket.getIdentifier() == stateMachine.challengeIdentifier()) { - //send the RADIUS challenge response - radiusPayload = - getRadiusPayload(stateMachine, - stateMachine.identifier(), - eapPacket); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - stateMachine.challengeState()); - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - sendRADIUSPacket(radiusPayload); - } - break; - case EAP.ATTR_TLS: - // request id access to RADIUS - radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - stateMachine.challengeState()); - stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode()); - - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - sendRADIUSPacket(radiusPayload); - - if (stateMachine.state() != StateMachine.STATE_PENDING) { - stateMachine.requestAccess(); - } - - break; - default: - return; - } - break; - default: - log.trace("Skipping EAPOL message {}", eapol.getEapolType()); - } - - } - } - - class RadiusListener implements Runnable { - - /** - * Handles RADIUS packets. - * - * @param radiusPacket RADIUS packet coming from the RADIUS server. - * @throws StateMachineException if an illegal state transition is triggered - */ - protected void handleRadiusPacket(RADIUS radiusPacket) throws StateMachineException { - StateMachine stateMachine = StateMachine.lookupStateMachineById(radiusPacket.getIdentifier()); - if (stateMachine == null) { - log.error("Invalid session identifier, exiting..."); - return; - } - - EAP eapPayload; - Ethernet eth; - switch (radiusPacket.getCode()) { - case RADIUS.RADIUS_CODE_ACCESS_CHALLENGE: - byte[] challengeState = - radiusPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_STATE).getValue(); - eapPayload = radiusPacket.decapsulateMessage(); - stateMachine.setChallengeInfo(eapPayload.getIdentifier(), challengeState); - eth = buildEapolResponse(stateMachine.supplicantAddress(), - MacAddress.valueOf(nasMacAddress), - stateMachine.vlanId(), - EAPOL.EAPOL_PACKET, - eapPayload); - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - break; - case RADIUS.RADIUS_CODE_ACCESS_ACCEPT: - //send an EAPOL - Success to the supplicant. - byte[] eapMessage = - radiusPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_EAP_MESSAGE).getValue(); - eapPayload = new EAP(); - eapPayload = (EAP) eapPayload.deserialize(eapMessage, 0, eapMessage.length); - eth = buildEapolResponse(stateMachine.supplicantAddress(), - MacAddress.valueOf(nasMacAddress), - stateMachine.vlanId(), - EAPOL.EAPOL_PACKET, - eapPayload); - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - - stateMachine.authorizeAccess(); - break; - case RADIUS.RADIUS_CODE_ACCESS_REJECT: - stateMachine.denyAccess(); - break; - default: - log.warn("Unknown RADIUS message received with code: {}", radiusPacket.getCode()); - } - } - - - @Override - public void run() { - boolean done = false; - int packetNumber = 1; - - log.info("UDP listener thread starting up"); - RADIUS inboundRadiusPacket; - while (!done) { - try { - byte[] packetBuffer = new byte[RADIUS.RADIUS_MAX_LENGTH]; - DatagramPacket inboundBasePacket = - new DatagramPacket(packetBuffer, packetBuffer.length); - DatagramSocket socket = radiusSocket; - socket.receive(inboundBasePacket); - log.info("Packet #{} received", packetNumber++); - try { - inboundRadiusPacket = - RADIUS.deserializer() - .deserialize(inboundBasePacket.getData(), - 0, - inboundBasePacket.getLength()); - handleRadiusPacket(inboundRadiusPacket); - } catch (DeserializationException dex) { - log.error("Cannot deserialize packet", dex); - } catch (StateMachineException sme) { - log.error("Illegal state machine operation", sme); - } - - } catch (IOException e) { - log.info("Socket was closed, exiting listener thread"); - done = true; - } - } - } - } - - RadiusListener radiusListener = new RadiusListener(); - - private class InternalConfigListener implements NetworkConfigListener { - - /** - * Reconfigures the DHCP Server according to the configuration parameters passed. - * - * @param cfg configuration object - */ - private void reconfigureNetwork(AAAConfig cfg) { - AAAConfig newCfg; - if (cfg == null) { - newCfg = new AAAConfig(); - } else { - newCfg = cfg; - } - if (newCfg.nasIp() != null) { - nasIpAddress = newCfg.nasIp(); - } - if (newCfg.radiusIp() != null) { - radiusIpAddress = newCfg.radiusIp(); - } - if (newCfg.radiusMac() != null) { - radiusMacAddress = newCfg.radiusMac(); - } - if (newCfg.nasMac() != null) { - nasMacAddress = newCfg.nasMac(); - } - if (newCfg.radiusSecret() != null) { - radiusSecret = newCfg.radiusSecret(); - } - if (newCfg.radiusSwitch() != null) { - radiusSwitch = newCfg.radiusSwitch(); - } - if (newCfg.radiusPort() != -1) { - radiusPort = newCfg.radiusPort(); - } - if (newCfg.radiusServerUDPPort() != -1) { - radiusServerPort = newCfg.radiusServerUDPPort(); - } - } - - @Override - public void event(NetworkConfigEvent event) { - - if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || - event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) && - event.configClass().equals(AAAConfig.class)) { - - AAAConfig cfg = netCfgService.getConfig(appId, AAAConfig.class); - reconfigureNetwork(cfg); - log.info("Reconfigured"); - } - } - } - - -} diff --git a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java b/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java deleted file mode 100644 index 73be7691..00000000 --- a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * 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.aaa; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.basics.BasicElementConfig; - -/** - * Network config for the AAA app. - */ -public class AAAConfig extends Config<ApplicationId> { - - private static final String RADIUS_IP = "radiusIp"; - private static final String RADIUS_SERVER_PORT = "1812"; - private static final String RADIUS_MAC = "radiusMac"; - private static final String NAS_IP = "nasIp"; - private static final String NAS_MAC = "nasMac"; - private static final String RADIUS_SECRET = "radiusSecret"; - private static final String RADIUS_SWITCH = "radiusSwitch"; - private static final String RADIUS_PORT = "radiusPort"; - - // RADIUS server IP address - protected static final String DEFAULT_RADIUS_IP = "10.128.10.4"; - - // RADIUS MAC address - protected static final String DEFAULT_RADIUS_MAC = "00:00:00:00:01:10"; - - // NAS IP address - protected static final String DEFAULT_NAS_IP = "10.128.9.244"; - - // NAS MAC address - protected static final String DEFAULT_NAS_MAC = "00:00:00:00:10:01"; - - // RADIUS server shared secret - protected static final String DEFAULT_RADIUS_SECRET = "ONOSecret"; - - // Radius Switch Id - protected static final String DEFAULT_RADIUS_SWITCH = "of:90e2ba82f97791e9"; - - // Radius Port Number - protected static final String DEFAULT_RADIUS_PORT = "129"; - - // Radius Server UDP Port Number - protected static final String DEFAULT_RADIUS_SERVER_PORT = "1812"; - - /** - * Gets the value of a string property, protecting for an empty - * JSON object. - * - * @param name name of the property - * @param defaultValue default value if none has been specified - * @return String value if one os found, default value otherwise - */ - private String getStringProperty(String name, String defaultValue) { - if (object == null) { - return defaultValue; - } - return get(name, defaultValue); - } - - /** - * Returns the NAS ip. - * - * @return ip address or null if not set - */ - public InetAddress nasIp() { - try { - return InetAddress.getByName(getStringProperty(NAS_IP, DEFAULT_NAS_IP)); - } catch (UnknownHostException e) { - return null; - } - } - - /** - * Sets the NAS ip. - * - * @param ip new ip address; null to clear - * @return self - */ - public BasicElementConfig nasIp(String ip) { - return (BasicElementConfig) setOrClear(NAS_IP, ip); - } - - /** - * Returns the RADIUS server ip. - * - * @return ip address or null if not set - */ - public InetAddress radiusIp() { - try { - return InetAddress.getByName(getStringProperty(RADIUS_IP, DEFAULT_RADIUS_IP)); - } catch (UnknownHostException e) { - return null; - } - } - - /** - * Sets the RADIUS server ip. - * - * @param ip new ip address; null to clear - * @return self - */ - public BasicElementConfig radiusIp(String ip) { - return (BasicElementConfig) setOrClear(RADIUS_IP, ip); - } - - /** - * Returns the RADIUS MAC address. - * - * @return mac address or null if not set - */ - public String radiusMac() { - return getStringProperty(RADIUS_MAC, DEFAULT_RADIUS_MAC); - } - - /** - * Sets the RADIUS MAC address. - * - * @param mac new MAC address; null to clear - * @return self - */ - public BasicElementConfig radiusMac(String mac) { - return (BasicElementConfig) setOrClear(RADIUS_MAC, mac); - } - - /** - * Returns the RADIUS MAC address. - * - * @return mac address or null if not set - */ - public String nasMac() { - return getStringProperty(NAS_MAC, DEFAULT_NAS_MAC); - } - - /** - * Sets the RADIUS MAC address. - * - * @param mac new MAC address; null to clear - * @return self - */ - public BasicElementConfig nasMac(String mac) { - return (BasicElementConfig) setOrClear(NAS_MAC, mac); - } - - /** - * Returns the RADIUS secret. - * - * @return radius secret or null if not set - */ - public String radiusSecret() { - return getStringProperty(RADIUS_SECRET, DEFAULT_RADIUS_SECRET); - } - - /** - * Sets the RADIUS secret. - * - * @param secret new MAC address; null to clear - * @return self - */ - public BasicElementConfig radiusSecret(String secret) { - return (BasicElementConfig) setOrClear(RADIUS_SECRET, secret); - } - - /** - * Returns the ID of the RADIUS switch. - * - * @return radius switch ID or null if not set - */ - public String radiusSwitch() { - return getStringProperty(RADIUS_SWITCH, DEFAULT_RADIUS_SWITCH); - } - - /** - * Sets the ID of the RADIUS switch. - * - * @param switchId new RADIUS switch ID; null to clear - * @return self - */ - public BasicElementConfig radiusSwitch(String switchId) { - return (BasicElementConfig) setOrClear(RADIUS_SWITCH, switchId); - } - - /** - * Returns the RADIUS port. - * - * @return radius port or null if not set - */ - public long radiusPort() { - return Integer.parseInt(getStringProperty(RADIUS_PORT, DEFAULT_RADIUS_PORT)); - } - - /** - * Sets the RADIUS port. - * - * @param port new RADIUS port; null to clear - * @return self - */ - public BasicElementConfig radiusPort(long port) { - return (BasicElementConfig) setOrClear(RADIUS_PORT, port); - } - - /** - * Returns the RADIUS server UDP port. - * - * @return radius server UDP port. - */ - public short radiusServerUDPPort() { - return Short.parseShort(getStringProperty(RADIUS_SERVER_PORT, - DEFAULT_RADIUS_SERVER_PORT)); - } - - /** - * Sets the RADIUS port. - * - * @param port new RADIUS UDP port; -1 to clear - * @return self - */ - public BasicElementConfig radiusServerUDPPort(short port) { - return (BasicElementConfig) setOrClear(RADIUS_SERVER_PORT, (long) port); - } - -} diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java deleted file mode 100644 index fb513ced..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * 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.aaa; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.Ethernet; -import org.onosproject.core.CoreServiceAdapter; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.NetworkConfigRegistryAdapter; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Set of tests of the ONOS application component. These use an existing RADIUS - * server and sends live packets over the network to it. - */ -@Ignore ("This should not be run as part of the standard build") -public class AAAIntegrationTest extends AAATestBase { - - private AAA aaa; - - /** - * Mocks the network config registry. - */ - @SuppressWarnings("unchecked") - static final class TestNetworkConfigRegistry - extends NetworkConfigRegistryAdapter { - @Override - public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) { - return (C) new AAAConfig(); - } - } - - /** - * Sets up the services required by the AAA application. - */ - @Before - public void setUp() { - aaa = new AAA(); - aaa.netCfgService = new TestNetworkConfigRegistry(); - aaa.coreService = new CoreServiceAdapter(); - aaa.packetService = new MockPacketService(); - aaa.activate(); - } - - /** - * Fetches the sent packet at the given index. The requested packet - * must be the last packet on the list. - * - * @param index index into sent packets array - * @return packet - */ - private Ethernet fetchPacket(int index) { - for (int iteration = 0; iteration < 20; iteration++) { - if (savedPackets.size() > index) { - return (Ethernet) savedPackets.get(index); - } else { - try { - Thread.sleep(250); - } catch (Exception ex) { - return null; - } - } - } - return null; - } - - /** - * Tests the authentication path through the AAA application by sending - * packets to the RADIUS server and checking the state machine - * transitions. - * - * @throws Exception when an unhandled error occurs - */ - @Test - public void testAuthentication() throws Exception { - - // (1) Supplicant start up - - Ethernet startPacket = constructSupplicantStartPacket(); - sendPacket(startPacket); - - Ethernet responsePacket = fetchPacket(0); - assertThat(responsePacket, notNullValue()); - checkRadiusPacket(aaa, responsePacket, EAP.REQUEST); - - // (2) Supplicant identify - - Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null); - sendPacket(identifyPacket); - - // State machine should have been created by now - - StateMachine stateMachine = - StateMachine.lookupStateMachineBySessionId(SESSION_ID); - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (3) RADIUS MD5 challenge - - Ethernet radiusChallengeMD5Packet = fetchPacket(1); - assertThat(radiusChallengeMD5Packet, notNullValue()); - checkRadiusPacket(aaa, radiusChallengeMD5Packet, EAP.REQUEST); - - - // (4) Supplicant MD5 response - - Ethernet md5RadiusPacket = - constructSupplicantIdentifyPacket(stateMachine, - EAP.ATTR_MD5, - stateMachine.challengeIdentifier(), - radiusChallengeMD5Packet); - sendPacket(md5RadiusPacket); - - - // (5) RADIUS Success - - Ethernet successRadiusPacket = fetchPacket(2); - assertThat(successRadiusPacket, notNullValue()); - EAPOL successEAPOL = (EAPOL) successRadiusPacket.getPayload(); - EAP successEAP = (EAP) successEAPOL.getPayload(); - assertThat(successEAP.getCode(), is(EAP.SUCCESS)); - - // State machine should be in authorized state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED)); - - } - -} - diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java deleted file mode 100644 index 860a7dbd..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * 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.aaa; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.BasePacket; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.EAP; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.RADIUS; -import org.onlab.packet.RADIUSAttribute; -import org.onosproject.core.CoreServiceAdapter; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.NetworkConfigRegistryAdapter; - -import com.google.common.base.Charsets; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Set of tests of the ONOS application component. - */ -public class AAATest extends AAATestBase { - - static final String BAD_IP_ADDRESS = "198.51.100.0"; - - private AAA aaa; - - class AAAWithoutRadiusServer extends AAA { - protected void sendRADIUSPacket(RADIUS radiusPacket) { - savePacket(radiusPacket); - } - } - - /** - * Mocks the AAAConfig class to force usage of an unroutable address for the - * RADIUS server. - */ - static class MockAAAConfig extends AAAConfig { - @Override - public InetAddress radiusIp() { - try { - return InetAddress.getByName(BAD_IP_ADDRESS); - } catch (UnknownHostException ex) { - // can't happen - throw new IllegalStateException(ex); - } - } - } - - /** - * Mocks the network config registry. - */ - @SuppressWarnings("unchecked") - private static final class TestNetworkConfigRegistry - extends NetworkConfigRegistryAdapter { - @Override - public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) { - AAAConfig aaaConfig = new MockAAAConfig(); - return (C) aaaConfig; - } - } - - /** - * Constructs an Ethernet packet containing a RADIUS challenge - * packet. - * - * @param challengeCode code to use in challenge packet - * @param challengeType type to use in challenge packet - * @return Ethernet packet - */ - private RADIUS constructRADIUSCodeAccessChallengePacket(byte challengeCode, byte challengeType) { - - String challenge = "12345678901234567"; - - EAP eap = new EAP(challengeType, (byte) 1, challengeType, - challenge.getBytes(Charsets.US_ASCII)); - eap.setIdentifier((byte) 1); - - RADIUS radius = new RADIUS(); - radius.setCode(challengeCode); - - radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - challenge.getBytes(Charsets.US_ASCII)); - - radius.setPayload(eap); - radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_EAP_MESSAGE, - eap.serialize()); - - return radius; - } - - /** - * Sets up the services required by the AAA application. - */ - @Before - public void setUp() { - aaa = new AAAWithoutRadiusServer(); - aaa.netCfgService = new TestNetworkConfigRegistry(); - aaa.coreService = new CoreServiceAdapter(); - aaa.packetService = new MockPacketService(); - aaa.activate(); - } - - /** - * Tears down the AAA application. - */ - @After - public void tearDown() { - aaa.deactivate(); - } - - /** - * Extracts the RADIUS packet from a packet sent by the supplicant. - * - * @param radius RADIUS packet sent by the supplicant - * @throws DeserializationException if deserialization of the packet contents - * fails. - */ - private void checkRADIUSPacketFromSupplicant(RADIUS radius) - throws DeserializationException { - assertThat(radius, notNullValue()); - - EAP eap = radius.decapsulateMessage(); - assertThat(eap, notNullValue()); - } - - /** - * Fetches the sent packet at the given index. The requested packet - * must be the last packet on the list. - * - * @param index index into sent packets array - * @return packet - */ - private BasePacket fetchPacket(int index) { - BasePacket packet = savedPackets.get(index); - assertThat(packet, notNullValue()); - return packet; - } - - /** - * Tests the authentication path through the AAA application. - * - * @throws DeserializationException if packed deserialization fails. - */ - @Test - public void testAuthentication() throws Exception { - - // (1) Supplicant start up - - Ethernet startPacket = constructSupplicantStartPacket(); - sendPacket(startPacket); - - Ethernet responsePacket = (Ethernet) fetchPacket(0); - checkRadiusPacket(aaa, responsePacket, EAP.ATTR_IDENTITY); - - // (2) Supplicant identify - - Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null); - sendPacket(identifyPacket); - - RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1); - - checkRADIUSPacketFromSupplicant(radiusIdentifyPacket); - - assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST)); - assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()), - is("testuser")); - - IpAddress nasIp = - IpAddress.valueOf(IpAddress.Version.INET, - radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP) - .getValue()); - assertThat(nasIp.toString(), is(aaa.nasIpAddress.getHostAddress())); - - // State machine should have been created by now - - StateMachine stateMachine = - StateMachine.lookupStateMachineBySessionId(SESSION_ID); - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (3) RADIUS MD5 challenge - - RADIUS radiusCodeAccessChallengePacket = - constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5); - aaa.radiusListener.handleRadiusPacket(radiusCodeAccessChallengePacket); - - Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2); - checkRadiusPacket(aaa, radiusChallengeMD5Packet, EAP.ATTR_MD5); - - // (4) Supplicant MD5 response - - Ethernet md5RadiusPacket = - constructSupplicantIdentifyPacket(stateMachine, - EAP.ATTR_MD5, - stateMachine.challengeIdentifier(), - radiusChallengeMD5Packet); - sendPacket(md5RadiusPacket); - - RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3); - - checkRADIUSPacketFromSupplicant(responseMd5RadiusPacket); - assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 0)); - assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST)); - - // State machine should be in pending state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (5) RADIUS Success - - RADIUS successPacket = - constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS); - aaa.radiusListener.handleRadiusPacket((successPacket)); - Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4); - - checkRadiusPacket(aaa, supplicantSuccessPacket, EAP.SUCCESS); - - // State machine should be in authorized state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED)); - - } - - /** - * Tests the default configuration. - */ - @Test - public void testConfig() { - assertThat(aaa.nasIpAddress.getHostAddress(), is(AAAConfig.DEFAULT_NAS_IP)); - assertThat(aaa.nasMacAddress, is(AAAConfig.DEFAULT_NAS_MAC)); - assertThat(aaa.radiusIpAddress.getHostAddress(), is(BAD_IP_ADDRESS)); - assertThat(aaa.radiusMacAddress, is(AAAConfig.DEFAULT_RADIUS_MAC)); - } -} diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java deleted file mode 100644 index dffcba2f..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * 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.aaa; - -import java.nio.ByteBuffer; -import java.security.MessageDigest; -import java.util.LinkedList; -import java.util.List; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.EthType; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; -import org.onosproject.net.packet.DefaultInboundPacket; -import org.onosproject.net.packet.DefaultPacketContext; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketServiceAdapter; - -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.onosproject.net.NetTestTools.connectPoint; - -/** - * Common methods for AAA app testing. - */ -public class AAATestBase { - - MacAddress clientMac = MacAddress.valueOf("1a:1a:1a:1a:1a:1a"); - MacAddress serverMac = MacAddress.valueOf("2a:2a:2a:2a:2a:2a"); - - // Our session id will be the device ID ("of:1") with the port ("1") concatenated - static final String SESSION_ID = "of:11"; - - List<BasePacket> savedPackets = new LinkedList<>(); - PacketProcessor packetProcessor; - - /** - * Saves the given packet onto the saved packets list. - * - * @param packet packet to save - */ - void savePacket(BasePacket packet) { - savedPackets.add(packet); - } - - /** - * Keeps a reference to the PacketProcessor and saves the OutboundPackets. - */ - class MockPacketService extends PacketServiceAdapter { - - @Override - public void addProcessor(PacketProcessor processor, int priority) { - packetProcessor = processor; - } - - @Override - public void emit(OutboundPacket packet) { - try { - Ethernet eth = Ethernet.deserializer().deserialize(packet.data().array(), - 0, packet.data().array().length); - savePacket(eth); - } catch (Exception e) { - fail(e.getMessage()); - } - } - } - - /** - * Mocks the DefaultPacketContext. - */ - final class TestPacketContext extends DefaultPacketContext { - - private TestPacketContext(long time, InboundPacket inPkt, - OutboundPacket outPkt, boolean block) { - super(time, inPkt, outPkt, block); - } - - @Override - public void send() { - // We don't send anything out. - } - } - - /** - * Sends an Ethernet packet to the process method of the Packet Processor. - * - * @param reply Ethernet packet - */ - void sendPacket(Ethernet reply) { - final ByteBuffer byteBuffer = ByteBuffer.wrap(reply.serialize()); - InboundPacket inPacket = new DefaultInboundPacket(connectPoint("1", 1), - reply, - byteBuffer); - - PacketContext context = new TestPacketContext(127L, inPacket, null, false); - packetProcessor.process(context); - } - - /** - * Constructs an Ethernet packet containing identification payload. - * - * @return Ethernet packet - */ - Ethernet constructSupplicantIdentifyPacket(StateMachine stateMachine, - byte type, - byte id, - Ethernet radiusChallenge) - throws Exception { - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(clientMac.toBytes()); - eth.setSourceMACAddress(serverMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - eth.setVlanID((short) 2); - - String username = "testuser"; - byte[] data = username.getBytes(); - - - if (type == EAP.ATTR_MD5) { - String password = "testpassword"; - EAPOL eapol = (EAPOL) radiusChallenge.getPayload(); - EAP eap = (EAP) eapol.getPayload(); - - byte[] identifier = new byte[password.length() + eap.getData().length]; - - identifier[0] = stateMachine.challengeIdentifier(); - System.arraycopy(password.getBytes(), 0, identifier, 1, password.length()); - System.arraycopy(eap.getData(), 1, identifier, 1 + password.length(), 16); - - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] hash = md.digest(identifier); - data = new byte[17]; - data[0] = (byte) 16; - System.arraycopy(hash, 0, data, 1, 16); - } - EAP eap = new EAP(EAP.RESPONSE, (byte) 1, type, - data); - eap.setIdentifier(id); - - // eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(EAPOL.EAPOL_PACKET); - eapol.setPacketLength(eap.getLength()); - - // eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - /** - * Constructs an Ethernet packet containing a EAPOL_START Payload. - * - * @return Ethernet packet - */ - Ethernet constructSupplicantStartPacket() { - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(clientMac.toBytes()); - eth.setSourceMACAddress(serverMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - eth.setVlanID((short) 2); - - EAP eap = new EAP(EAPOL.EAPOL_START, (byte) 2, EAPOL.EAPOL_START, null); - - // eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(EAPOL.EAPOL_START); - eapol.setPacketLength(eap.getLength()); - - // eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - /** - * Checks the contents of a RADIUS packet being sent to the RADIUS server. - * - * @param radiusPacket packet to check - * @param code expected code - */ - void checkRadiusPacket(AAA aaa, Ethernet radiusPacket, byte code) { - - assertThat(radiusPacket.getSourceMAC(), - is(MacAddress.valueOf(aaa.nasMacAddress))); - assertThat(radiusPacket.getDestinationMAC(), is(serverMac)); - - assertThat(radiusPacket.getPayload(), instanceOf(EAPOL.class)); - EAPOL eapol = (EAPOL) radiusPacket.getPayload(); - assertThat(eapol, notNullValue()); - - assertThat(eapol.getEapolType(), is(EAPOL.EAPOL_PACKET)); - assertThat(eapol.getPayload(), instanceOf(EAP.class)); - EAP eap = (EAP) eapol.getPayload(); - assertThat(eap, notNullValue()); - - assertThat(eap.getCode(), is(code)); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java index e15bc763..c3bf77c5 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java @@ -15,7 +15,6 @@ */ package org.onosproject.cordvtn; -import com.google.common.collect.Collections2; import com.google.common.collect.Sets; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -32,6 +31,7 @@ import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; import org.onosproject.net.Host; +import org.onosproject.net.Port; import org.onosproject.net.behaviour.BridgeConfig; import org.onosproject.net.behaviour.BridgeName; import org.onosproject.net.behaviour.ControllerInfo; @@ -39,6 +39,7 @@ import org.onosproject.net.behaviour.DefaultTunnelDescription; import org.onosproject.net.behaviour.TunnelConfig; import org.onosproject.net.behaviour.TunnelDescription; import org.onosproject.net.behaviour.TunnelName; +import org.onosproject.net.device.DeviceAdminService; import org.onosproject.net.device.DeviceEvent; import org.onosproject.net.device.DeviceListener; import org.onosproject.net.device.DeviceService; @@ -54,7 +55,6 @@ import org.onosproject.store.serializers.KryoNamespaces; import org.onosproject.store.service.ConsistentMap; import org.onosproject.store.service.Serializer; import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.Versioned; import org.slf4j.Logger; import java.util.ArrayList; @@ -84,7 +84,8 @@ public class CordVtn implements CordVtnService { private static final int NUM_THREADS = 1; private static final KryoNamespace.Builder NODE_SERIALIZER = KryoNamespace.newBuilder() .register(KryoNamespaces.API) - .register(DefaultOvsdbNode.class); + .register(CordVtnNode.class) + .register(NodeState.class); private static final String DEFAULT_BRIDGE_NAME = "br-int"; private static final String DEFAULT_TUNNEL = "vxlan"; private static final Map<String, String> DEFAULT_TUNNEL_OPTIONS = new HashMap<String, String>() { @@ -112,6 +113,9 @@ public class CordVtn implements CordVtnService { protected DriverService driverService; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected DeviceAdminService adminService; + + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected OvsdbController controller; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @@ -127,12 +131,55 @@ public class CordVtn implements CordVtnService { private final BridgeHandler bridgeHandler = new BridgeHandler(); private final VmHandler vmHandler = new VmHandler(); - private ConsistentMap<DeviceId, OvsdbNode> nodeStore; + private ConsistentMap<CordVtnNode, NodeState> nodeStore; + + private enum NodeState { + + INIT { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + cordVtn.connect(node); + } + }, + OVSDB_CONNECTED { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + if (!cordVtn.getOvsdbConnectionState(node)) { + cordVtn.connect(node); + } else { + cordVtn.createIntegrationBridge(node); + } + } + }, + BRIDGE_CREATED { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + if (!cordVtn.getOvsdbConnectionState(node)) { + cordVtn.connect(node); + } else { + cordVtn.createTunnelInterface(node); + } + } + }, + COMPLETE { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + cordVtn.postInit(node); + } + }, + INCOMPLETE { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + } + }; + + public abstract void process(CordVtn cordVtn, CordVtnNode node); + } @Activate protected void activate() { ApplicationId appId = coreService.registerApplication("org.onosproject.cordvtn"); - nodeStore = storageService.<DeviceId, OvsdbNode>consistentMapBuilder() + nodeStore = storageService.<CordVtnNode, NodeState>consistentMapBuilder() .withSerializer(Serializer.using(NODE_SERIALIZER.build())) .withName("cordvtn-nodestore") .withApplicationId(appId) @@ -156,145 +203,272 @@ public class CordVtn implements CordVtnService { } @Override - public void addNode(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public void addNode(CordVtnNode node) { + checkNotNull(node); + + nodeStore.putIfAbsent(node, checkNodeState(node)); + initNode(node); + } - nodeStore.putIfAbsent(ovsdb.deviceId(), ovsdb); + @Override + public void deleteNode(CordVtnNode node) { + checkNotNull(node); - if (isNodeConnected(ovsdb)) { - init(ovsdb); - } else { - connect(ovsdb); + if (getOvsdbConnectionState(node)) { + disconnect(node); } + + nodeStore.remove(node); } @Override - public void deleteNode(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public int getNodeCount() { + return nodeStore.size(); + } - if (deviceService.getDevice(ovsdb.deviceId()) != null) { - if (deviceService.isAvailable(ovsdb.deviceId())) { - log.warn("Cannot delete connected node {}", ovsdb.host()); - return; - } - } - nodeStore.remove(ovsdb.deviceId()); + @Override + public List<CordVtnNode> getNodes() { + List<CordVtnNode> nodes = new ArrayList<>(); + nodes.addAll(nodeStore.keySet()); + return nodes; } @Override - public void connect(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public void initNode(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist, add node first", node.hostname()); return; } - if (!isNodeConnected(ovsdb)) { - controller.connect(ovsdb.ip(), ovsdb.port()); + NodeState state = getNodeState(node); + if (state == null) { + return; + } else if (state.equals(NodeState.INCOMPLETE)) { + state = checkNodeState(node); } + + state.process(this, node); } @Override - public void disconnect(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public boolean getNodeInitState(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); - return; + NodeState state = getNodeState(node); + return state != null && state.equals(NodeState.COMPLETE); + } + + /** + * Returns state of a given cordvtn node. + * + * @param node cordvtn node + * @return node state, or null if no such node exists + */ + private NodeState getNodeState(CordVtnNode node) { + checkNotNull(node); + + try { + return nodeStore.get(node).value(); + } catch (NullPointerException e) { + log.error("Failed to get state of {}", node.hostname()); + return null; } + } - if (isNodeConnected(ovsdb)) { - OvsdbClientService ovsdbClient = getOvsdbClient(ovsdb); - ovsdbClient.disconnect(); + /** + * Sets a new state for a given cordvtn node. + * + * @param node cordvtn node + * @param newState new node state + */ + private void setNodeState(CordVtnNode node, NodeState newState) { + checkNotNull(node); + + log.info("Changed {} state: {}", node.hostname(), newState.toString()); + + nodeStore.put(node, newState); + newState.process(this, node); + } + + /** + * Checks current state of a given cordvtn node and returns it. + * + * @param node cordvtn node + * @return node state + */ + private NodeState checkNodeState(CordVtnNode node) { + checkNotNull(node); + + if (checkIntegrationBridge(node) && checkTunnelInterface(node)) { + return NodeState.COMPLETE; + } else if (checkIntegrationBridge(node)) { + return NodeState.BRIDGE_CREATED; + } else if (getOvsdbConnectionState(node)) { + return NodeState.OVSDB_CONNECTED; + } else { + return NodeState.INIT; } } - private void init(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + /** + * Performs tasks after node initialization. + * + * @param node cordvtn node + */ + private void postInit(CordVtnNode node) { + disconnect(node); + } + + /** + * Returns connection state of OVSDB server for a given node. + * + * @param node cordvtn node + * @return true if it is connected, false otherwise + */ + private boolean getOvsdbConnectionState(CordVtnNode node) { + checkNotNull(node); + + OvsdbClientService ovsdbClient = getOvsdbClient(node); + return deviceService.isAvailable(node.ovsdbId()) && + ovsdbClient != null && ovsdbClient.isConnected(); + } + + /** + * Connects to OVSDB server for a given node. + * + * @param node cordvtn node + */ + private void connect(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist", node.hostname()); return; } - if (!isNodeConnected(ovsdb)) { - log.warn("Node {} is not connected", ovsdb.host()); + if (!getOvsdbConnectionState(node)) { + // FIXME remove existing OVSDB device to work around OVSDB device re-connect issue + if (deviceService.getDevice(node.ovsdbId()) != null) { + adminService.removeDevice(node.ovsdbId()); + } + controller.connect(node.ovsdbIp(), node.ovsdbPort()); + } + } + + /** + * Disconnects OVSDB server for a given node. + * + * @param node cordvtn node + */ + private void disconnect(CordVtnNode node) { + checkNotNull(node); + + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist", node.hostname()); return; } - if (deviceService.getDevice(ovsdb.intBrId()) == null || - !deviceService.isAvailable(ovsdb.intBrId())) { - createIntegrationBridge(ovsdb); - } else if (!checkVxlanInterface(ovsdb)) { - createVxlanInterface(ovsdb); + if (getOvsdbConnectionState(node)) { + OvsdbClientService ovsdbClient = getOvsdbClient(node); + ovsdbClient.disconnect(); } - } - @Override - public int getNodeCount() { - return nodeStore.size(); + // FIXME remove existing OVSDB device to work around OVSDB device re-connect issue + if (deviceService.getDevice(node.ovsdbId()) != null) { + adminService.removeDevice(node.ovsdbId()); + } } - @Override - public OvsdbNode getNode(DeviceId deviceId) { - Versioned<OvsdbNode> ovsdb = nodeStore.get(deviceId); - if (ovsdb != null) { - return ovsdb.value(); - } else { + /** + * Returns cordvtn node associated with a given OVSDB device. + * + * @param ovsdbId OVSDB device id + * @return cordvtn node, null if it fails to find the node + */ + private CordVtnNode getNodeByOvsdbId(DeviceId ovsdbId) { + try { + return getNodes().stream() + .filter(node -> node.ovsdbId().equals(ovsdbId)) + .findFirst().get(); + } catch (NoSuchElementException e) { + log.debug("Couldn't find node information for {}", ovsdbId); return null; } } - @Override - public List<OvsdbNode> getNodes() { - List<OvsdbNode> ovsdbs = new ArrayList<>(); - ovsdbs.addAll(Collections2.transform(nodeStore.values(), Versioned::value)); - return ovsdbs; - } - - @Override - public boolean isNodeConnected(OvsdbNode ovsdb) { - checkNotNull(ovsdb); - - OvsdbClientService ovsdbClient = getOvsdbClient(ovsdb); - if (ovsdbClient == null) { - return false; - } else { - return ovsdbClient.isConnected(); + /** + * Returns cordvtn node associated with a given integration bridge. + * + * @param bridgeId device id of integration bridge + * @return cordvtn node, null if it fails to find the node + */ + private CordVtnNode getNodeByBridgeId(DeviceId bridgeId) { + try { + return getNodes().stream() + .filter(node -> node.intBrId().equals(bridgeId)) + .findFirst().get(); + } catch (NoSuchElementException e) { + log.debug("Couldn't find node information for {}", bridgeId); + return null; } } - private OvsdbClientService getOvsdbClient(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + /** + * Returns OVSDB client for a given node. + * + * @param node cordvtn node + * @return OVSDB client, or null if it fails to get OVSDB client + */ + private OvsdbClientService getOvsdbClient(CordVtnNode node) { + checkNotNull(node); OvsdbClientService ovsdbClient = controller.getOvsdbClient( - new OvsdbNodeId(ovsdb.ip(), ovsdb.port().toInt())); + new OvsdbNodeId(node.ovsdbIp(), node.ovsdbPort().toInt())); if (ovsdbClient == null) { - log.debug("Couldn't find ovsdb client for {}", ovsdb.host()); + log.debug("Couldn't find OVSDB client for {}", node.hostname()); } return ovsdbClient; } - private void createIntegrationBridge(OvsdbNode ovsdb) { + /** + * Creates an integration bridge for a given node. + * + * @param node cordvtn node + */ + private void createIntegrationBridge(CordVtnNode node) { + if (checkIntegrationBridge(node)) { + return; + } + List<ControllerInfo> controllers = new ArrayList<>(); Sets.newHashSet(clusterService.getNodes()) .forEach(controller -> { ControllerInfo ctrlInfo = new ControllerInfo(controller.ip(), OFPORT, "tcp"); controllers.add(ctrlInfo); }); - String dpid = ovsdb.intBrId().toString().substring(DPID_BEGIN); + String dpid = node.intBrId().toString().substring(DPID_BEGIN); try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); + DriverHandler handler = driverService.createHandler(node.ovsdbId()); BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); bridgeConfig.addBridge(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), dpid, controllers); } catch (ItemNotFoundException e) { - log.warn("Failed to create integration bridge on {}", ovsdb.deviceId()); + log.warn("Failed to create integration bridge on {}", node.ovsdbId()); } } - private void createVxlanInterface(OvsdbNode ovsdb) { + /** + * Creates tunnel interface to the integration bridge for a given node. + * + * @param node cordvtn node + */ + private void createTunnelInterface(CordVtnNode node) { + if (checkTunnelInterface(node)) { + return; + } + DefaultAnnotations.Builder optionBuilder = DefaultAnnotations.builder(); for (String key : DEFAULT_TUNNEL_OPTIONS.keySet()) { optionBuilder.set(key, DEFAULT_TUNNEL_OPTIONS.get(key)); @@ -304,38 +478,63 @@ public class CordVtn implements CordVtnService { TunnelName.tunnelName(DEFAULT_TUNNEL), optionBuilder.build()); try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); + DriverHandler handler = driverService.createHandler(node.ovsdbId()); TunnelConfig tunnelConfig = handler.behaviour(TunnelConfig.class); tunnelConfig.createTunnelInterface(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), description); } catch (ItemNotFoundException e) { - log.warn("Failed to create VXLAN interface on {}", ovsdb.deviceId()); + log.warn("Failed to create tunnel interface on {}", node.ovsdbId()); } } - private boolean checkVxlanInterface(OvsdbNode ovsdb) { + /** + * Checks if integration bridge exists and available. + * + * @param node cordvtn node + * @return true if the bridge is available, false otherwise + */ + private boolean checkIntegrationBridge(CordVtnNode node) { + return (deviceService.getDevice(node.intBrId()) != null + && deviceService.isAvailable(node.intBrId())); + } + + /** + * Checks if tunnel interface exists. + * + * @param node cordvtn node + * @return true if the interface exists, false otherwise + */ + private boolean checkTunnelInterface(CordVtnNode node) { try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - bridgeConfig.getPorts().stream() - .filter(p -> p.annotations().value("portName").equals(DEFAULT_TUNNEL)) + deviceService.getPorts(node.intBrId()) + .stream() + .filter(p -> p.annotations().value("portName").contains(DEFAULT_TUNNEL) + && p.isEnabled()) .findAny().get(); - } catch (ItemNotFoundException | NoSuchElementException e) { + return true; + } catch (NoSuchElementException e) { return false; } - return true; } private class InternalDeviceListener implements DeviceListener { @Override public void event(DeviceEvent event) { + Device device = event.subject(); - ConnectionHandler handler = (device.type() == SWITCH ? bridgeHandler : ovsdbHandler); + ConnectionHandler<Device> handler = + (device.type().equals(SWITCH) ? bridgeHandler : ovsdbHandler); switch (event.type()) { - case DEVICE_ADDED: - eventExecutor.submit(() -> handler.connected(device)); + case PORT_ADDED: + eventExecutor.submit(() -> bridgeHandler.portAdded(event.port())); + break; + case PORT_UPDATED: + if (!event.port().isEnabled()) { + eventExecutor.submit(() -> bridgeHandler.portRemoved(event.port())); + } break; + case DEVICE_ADDED: case DEVICE_AVAILABILITY_CHANGED: if (deviceService.isAvailable(device.id())) { eventExecutor.submit(() -> handler.connected(device)); @@ -372,17 +571,15 @@ public class CordVtn implements CordVtnService { @Override public void connected(Device device) { - log.info("Ovsdb {} is connected", device.id()); - - OvsdbNode ovsdb = getNode(device.id()); - if (ovsdb != null) { - init(ovsdb); + CordVtnNode node = getNodeByOvsdbId(device.id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); } } @Override public void disconnected(Device device) { - log.warn("Ovsdb {} is disconnected", device.id()); + log.info("OVSDB {} is disconnected", device.id()); } } @@ -390,26 +587,56 @@ public class CordVtn implements CordVtnService { @Override public void connected(Device device) { - log.info("Integration Bridge {} is detected", device.id()); - - OvsdbNode ovsdb; - try { - ovsdb = getNodes().stream() - .filter(node -> node.intBrId().equals(device.id())) - .findFirst().get(); - } catch (NoSuchElementException e) { - log.warn("Couldn't find OVSDB associated with {}", device.id()); + CordVtnNode node = getNodeByBridgeId(device.id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); + } + } + + @Override + public void disconnected(Device device) { + CordVtnNode node = getNodeByBridgeId(device.id()); + if (node != null) { + log.info("Integration Bridge is disconnected from {}", node.hostname()); + setNodeState(node, NodeState.INCOMPLETE); + } + } + + /** + * Handles port added situation. + * If the added port is tunnel port, proceed remaining node initialization. + * Otherwise, do nothing. + * + * @param port port + */ + public void portAdded(Port port) { + if (!port.annotations().value("portName").contains(DEFAULT_TUNNEL)) { return; } - if (!checkVxlanInterface(ovsdb)) { - createVxlanInterface(ovsdb); + CordVtnNode node = getNodeByBridgeId((DeviceId) port.element().id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); } } - @Override - public void disconnected(Device device) { - log.info("Integration Bridge {} is vanished", device.id()); + /** + * Handles port removed situation. + * If the removed port is tunnel port, proceed remaining node initialization. + * Others, do nothing. + * + * @param port port + */ + public void portRemoved(Port port) { + if (!port.annotations().value("portName").contains(DEFAULT_TUNNEL)) { + return; + } + + CordVtnNode node = getNodeByBridgeId((DeviceId) port.element().id()); + if (node != null) { + log.info("Tunnel interface is removed from {}", node.hostname()); + setNodeState(node, NodeState.INCOMPLETE); + } } } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java index 550452ce..827ce052 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java @@ -32,77 +32,82 @@ import static com.google.common.base.Preconditions.checkNotNull; */ public class CordVtnConfig extends Config<ApplicationId> { - public static final String OVSDB_NODES = "ovsdbNodes"; - public static final String HOST = "host"; - public static final String IP = "ip"; - public static final String PORT = "port"; + public static final String CORDVTN_NODES = "nodes"; + public static final String HOSTNAME = "hostname"; + public static final String OVSDB_IP = "ovsdbIp"; + public static final String OVSDB_PORT = "ovsdbPort"; public static final String BRIDGE_ID = "bridgeId"; /** - * Returns the set of ovsdb nodes read from network config. + * Returns the set of nodes read from network config. * - * @return set of OvsdbNodeConfig or null + * @return set of CordVtnNodeConfig or null */ - public Set<OvsdbNodeConfig> ovsdbNodes() { - Set<OvsdbNodeConfig> ovsdbNodes = Sets.newHashSet(); + public Set<CordVtnNodeConfig> cordVtnNodes() { + Set<CordVtnNodeConfig> nodes = Sets.newHashSet(); - JsonNode nodes = object.get(OVSDB_NODES); - if (nodes == null) { + JsonNode jsonNodes = object.get(CORDVTN_NODES); + if (jsonNodes == null) { return null; } - nodes.forEach(jsonNode -> ovsdbNodes.add(new OvsdbNodeConfig( - jsonNode.path(HOST).asText(), - IpAddress.valueOf(jsonNode.path(IP).asText()), - TpPort.tpPort(jsonNode.path(PORT).asInt()), + jsonNodes.forEach(jsonNode -> nodes.add(new CordVtnNodeConfig( + jsonNode.path(HOSTNAME).asText(), + IpAddress.valueOf(jsonNode.path(OVSDB_IP).asText()), + TpPort.tpPort(jsonNode.path(OVSDB_PORT).asInt()), DeviceId.deviceId(jsonNode.path(BRIDGE_ID).asText())))); - return ovsdbNodes; + return nodes; } /** - * Configuration for an ovsdb node. + * Configuration for CordVtn node. */ - public static class OvsdbNodeConfig { + public static class CordVtnNodeConfig { - private final String host; - private final IpAddress ip; - private final TpPort port; + private final String hostname; + private final IpAddress ovsdbIp; + private final TpPort ovsdbPort; private final DeviceId bridgeId; - public OvsdbNodeConfig(String host, IpAddress ip, TpPort port, DeviceId bridgeId) { - this.host = checkNotNull(host); - this.ip = checkNotNull(ip); - this.port = checkNotNull(port); + public CordVtnNodeConfig(String hostname, IpAddress ovsdbIp, TpPort ovsdbPort, DeviceId bridgeId) { + this.hostname = checkNotNull(hostname); + this.ovsdbIp = checkNotNull(ovsdbIp); + this.ovsdbPort = checkNotNull(ovsdbPort); this.bridgeId = checkNotNull(bridgeId); } /** - * Returns host information of the node. + * Returns hostname of the node. * - * @return host + * @return hostname */ - public String host() { - return this.host; + public String hostname() { + return this.hostname; } /** - * Returns ip address to access ovsdb-server of the node. + * Returns OVSDB ip address of the node. * - * @return ip address + * @return OVSDB server IP address */ - public IpAddress ip() { - return this.ip; + public IpAddress ovsdbIp() { + return this.ovsdbIp; } /** - * Returns port number to access ovsdb-server of the node. + * Returns OVSDB port number of the node. * * @return port number */ - public TpPort port() { - return this.port; + public TpPort ovsdbPort() { + return this.ovsdbPort; } + /** + * Returns integration bridge id of the node. + * + * @return device id + */ public DeviceId bridgeId() { return this.bridgeId; } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java index 274ca9b4..f79b4460 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java @@ -88,10 +88,10 @@ public class CordVtnConfigManager { return; } - config.ovsdbNodes().forEach(node -> { - DefaultOvsdbNode ovsdb = new DefaultOvsdbNode( - node.host(), node.ip(), node.port(), node.bridgeId()); - cordVtnService.addNode(ovsdb); + config.cordVtnNodes().forEach(node -> { + CordVtnNode cordVtnNode = new CordVtnNode( + node.hostname(), node.ovsdbIp(), node.ovsdbPort(), node.bridgeId()); + cordVtnService.addNode(cordVtnNode); }); } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java index 7e01a452..5ab7bafa 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java @@ -15,8 +15,6 @@ */ package org.onosproject.cordvtn; -import org.onosproject.net.DeviceId; - import java.util.List; /** @@ -28,30 +26,23 @@ public interface CordVtnService { /** * Adds a new node to the service. * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void addNode(OvsdbNode ovsdb); + void addNode(CordVtnNode node); /** * Deletes a node from the service. * - * @param ovsdb ovsdb node - */ - void deleteNode(OvsdbNode ovsdb); - - /** - * Connect to a node. - * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void connect(OvsdbNode ovsdb); + void deleteNode(CordVtnNode node); /** - * Disconnect a node. + * Initiates node to serve virtual tenant network. * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void disconnect(OvsdbNode ovsdb); + void initNode(CordVtnNode node); /** * Returns the number of the nodes known to the service. @@ -61,25 +52,17 @@ public interface CordVtnService { int getNodeCount(); /** - * Returns OvsdbNode with given device id. - * - * @param deviceId device id - * @return ovsdb node - */ - OvsdbNode getNode(DeviceId deviceId); - - /** - * Returns connection state of the node. + * Returns node initialization state. * - * @param ovsdb ovsdb node - * @return true if the node is connected, false otherwise + * @param node cordvtn node + * @return true if initial node setup is completed, otherwise false */ - boolean isNodeConnected(OvsdbNode ovsdb); + boolean getNodeInitState(CordVtnNode node); /** * Returns all nodes known to the service. * * @return list of nodes */ - List<OvsdbNode> getNodes(); + List<CordVtnNode> getNodes(); } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java deleted file mode 100644 index 46f6e29c..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.cordvtn; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.net.DeviceId; - -import java.util.Objects; - -/** - * OvsdbNode implementation. - */ -public class DefaultOvsdbNode implements OvsdbNode { - - private final String host; - private final IpAddress ip; - private final TpPort port; - private final DeviceId brId; - - public DefaultOvsdbNode(String host, IpAddress ip, TpPort port, DeviceId brId) { - this.host = host; - this.ip = ip; - this.port = port; - this.brId = brId; - } - - @Override - public IpAddress ip() { - return this.ip; - } - - @Override - public TpPort port() { - return this.port; - } - - @Override - public String host() { - return this.host; - } - - @Override - public DeviceId intBrId() { - return this.brId; - } - - @Override - public DeviceId deviceId() { - return DeviceId.deviceId("ovsdb:" + this.ip.toString()); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o instanceof DefaultOvsdbNode) { - DefaultOvsdbNode that = (DefaultOvsdbNode) o; - if (this.host.equals(that.host) && - this.ip.equals(that.ip) && - this.port.equals(that.port) && - this.brId.equals(that.brId)) { - return true; - } - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(host, ip, port); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("host", host) - .add("ip", ip) - .add("port", port) - .add("bridgeId", brId) - .toString(); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java deleted file mode 100644 index 7a9a06a6..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.cordvtn; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.net.DeviceId; - -import java.util.Comparator; - -/** - * Representation of a node with ovsdb server. - */ -public interface OvsdbNode { - - Comparator<OvsdbNode> OVSDB_NODE_COMPARATOR = new Comparator<OvsdbNode>() { - @Override - public int compare(OvsdbNode ovsdb1, OvsdbNode ovsdb2) { - return ovsdb1.host().compareTo(ovsdb2.host()); - } - }; - - /** - * Returns the IP address of the ovsdb server. - * - * @return ip address - */ - IpAddress ip(); - - /** - * Returns the port number of the ovsdb server. - * - * @return port number - */ - TpPort port(); - - /** - * Returns the host information of the ovsdb server. - * It could be hostname or ip address. - * - * @return host - */ - String host(); - - /** - * Returns the device id of the ovsdb server. - * - * @return device id - */ - DeviceId deviceId(); - - /** - * Returns the device id of the integration bridge associated with the node. - * - * @return device id - */ - DeviceId intBrId(); -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java deleted file mode 100644 index 88d16341..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.DefaultOvsdbNode; -import org.onosproject.cordvtn.OvsdbNode; -import org.onosproject.net.DeviceId; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Adds a new OVSDB nodes. - */ -@Command(scope = "onos", name = "ovsdb-add", - description = "Adds a new OVSDB node to cordvtn") -public class OvsdbNodeAddCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "host", description = "Hostname or IP", - required = true, multiValued = false) - private String host = null; - - @Argument(index = 1, name = "address", - description = "OVSDB server listening address (ip:port)", - required = true, multiValued = false) - private String address = null; - - @Argument(index = 2, name = "bridgeId", - description = "Device ID of integration bridge", - required = true, multiValued = false) - private String bridgeId = null; - - @Override - protected void execute() { - checkArgument(address.contains(":"), "address should be ip:port format"); - checkArgument(bridgeId.startsWith("of:"), "bridgeId should be of:dpid format"); - - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - String[] ipPort = address.split(":"); - OvsdbNode ovsdb = new DefaultOvsdbNode(host, - IpAddress.valueOf(ipPort[0]), - TpPort.tpPort(Integer.parseInt(ipPort[1])), - DeviceId.deviceId(bridgeId)); - service.addNode(ovsdb); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java deleted file mode 100644 index e4ca0f3c..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Connects to OVSDBs. - */ -@Command(scope = "onos", name = "ovsdb-connect", - description = "Connects to OVSDBs") -public class OvsdbNodeConnectCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - if (service.isNodeConnected(ovsdb)) { - print("OVSDB %s is already in connected state, do nothing", host); - } else { - service.connect(ovsdb); - } - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java deleted file mode 100644 index a500d0d8..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Deletes OVSDB nodes from cordvtn. - */ -@Command(scope = "onos", name = "ovsdb-delete", - description = "Deletes OVSDB nodes from cordvtn") -public class OvsdbNodeDeleteCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - service.deleteNode(ovsdb); - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java deleted file mode 100644 index 14e44e08..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Disconnects OVSDBs. - */ -@Command(scope = "onos", name = "ovsdb-disconnect", - description = "Disconnects OVSDBs") -public class OvsdbNodeDisconnectCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - if (!service.isNodeConnected(ovsdb)) { - print("OVSDB %s is already in disconnected state, do nothing", host); - } else { - service.disconnect(ovsdb); - } - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java deleted file mode 100644 index 7d125ca6..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.cordvtn.cli; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.Collections; -import java.util.List; - -/** - * Lists all OVSDB nodes. - */ -@Command(scope = "onos", name = "ovsdbs", - description = "Lists all OVSDB nodes registered in cordvtn application") -public class OvsdbNodeListCommand extends AbstractShellCommand { - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - List<OvsdbNode> ovsdbs = service.getNodes(); - Collections.sort(ovsdbs, OvsdbNode.OVSDB_NODE_COMPARATOR); - - if (outputJson()) { - print("%s", json(service, ovsdbs)); - } else { - for (OvsdbNode ovsdb : ovsdbs) { - print("host=%s, address=%s, br-int=%s, state=%s", - ovsdb.host(), - ovsdb.ip().toString() + ":" + ovsdb.port().toString(), - ovsdb.intBrId().toString(), - getState(service, ovsdb)); - } - print("Total %s nodes", service.getNodeCount()); - } - } - - private JsonNode json(CordVtnService service, List<OvsdbNode> ovsdbs) { - ObjectMapper mapper = new ObjectMapper(); - ArrayNode result = mapper.createArrayNode(); - for (OvsdbNode ovsdb : ovsdbs) { - String ipPort = ovsdb.ip().toString() + ":" + ovsdb.port().toString(); - result.add(mapper.createObjectNode() - .put("host", ovsdb.host()) - .put("address", ipPort) - .put("brInt", ovsdb.intBrId().toString()) - .put("state", getState(service, ovsdb))); - } - return result; - } - - private String getState(CordVtnService service, OvsdbNode ovsdb) { - return service.isNodeConnected(ovsdb) ? "CONNECTED" : "DISCONNECTED"; - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml index 6e172387..ad28bc75 100644 --- a/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml +++ b/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml @@ -17,19 +17,16 @@ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeListCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeListCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeAddCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeAddCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeDeleteCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeDeleteCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeConnectCommand"/> - </command> - <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeDisconnectCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeInitCommand"/> </command> </command-bundle> </blueprint> diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java index e356c38b..ae610239 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java @@ -58,15 +58,15 @@ public interface DhcpService { /** * Registers a static IP mapping with the DHCP Server. - * Supports the request from OpenStack + * Supports rangeNotEnforced option * * @param macID macID of the client * @param ipAddress IP Address requested for the client - * @param fromOpenStack true if the request is from OpenStack - * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set and the mapping will be eternal + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses if rangeNotEnforced was set * @return true if the mapping was successfully added, false otherwise */ - boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack, + boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean rangeNotEnforced, List<Ip4Address> addressList); /** diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java index bd2e16b3..cdfadf7b 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java @@ -52,12 +52,11 @@ public interface DhcpStore { * @param hostId Host Id of the client requesting an IP * @param ipAddr IP Address being requested * @param leaseTime Lease time offered by the server for this mapping - * @param fromOpenStack true if the request is from Openstack - * @param addressList subnetMask, DHCP IP Address, Router IP Address, Domain Server IP Address if the request - * from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses if rangeNotEnforced was set * @return returns true if the assignment was successful, false otherwise */ - boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean fromOpenStack, + boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean rangeNotEnforced, List<Ip4Address> addressList); @@ -95,11 +94,11 @@ public interface DhcpStore { * * @param macID macID of the client * @param ipAddr IP Address requested for the client - * @param fromOpenStack true if the request is from Openstack - * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses rangeNotEnforced was set * @return true if the mapping was successfully registered, false otherwise */ - boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean fromOpenStack, List<Ip4Address> addressList); + boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean rangeNotEnforced, List<Ip4Address> addressList); /** * Removes a static IP mapping associated with the given MAC ID from the DHCP Server. diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java index 998579e2..5610fec8 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java @@ -41,7 +41,7 @@ public final class IpAssignment { private final Ip4Address domainServer; - private final boolean fromOpenStack; + private final boolean rangeNotEnforced; private final AssignmentStatus assignmentStatus; @@ -54,7 +54,7 @@ public final class IpAssignment { /** * IP Assignment has been requested by a OpenStack. */ - Option_Requested_From_OpenStack, + Option_RangeNotEnforced, /** * IP has been assigned to a host. */ @@ -78,13 +78,13 @@ public final class IpAssignment { * @param dhcpServer * @param routerAddress * @param domainServer - * @param fromOpenStack + * @param rangeNotEnforced */ private IpAssignment(Ip4Address ipAddress, long leasePeriod, Date timestamp, AssignmentStatus assignmentStatus, Ip4Address subnetMask, Ip4Address dhcpServer, - Ip4Address routerAddress, Ip4Address domainServer, boolean fromOpenStack) { + Ip4Address routerAddress, Ip4Address domainServer, boolean rangeNotEnforced) { this.ipAddress = ipAddress; this.leasePeriod = leasePeriod; this.timestamp = timestamp; @@ -93,7 +93,7 @@ public final class IpAssignment { this.dhcpServer = dhcpServer; this.routerAddress = routerAddress; this.domainServer = domainServer; - this.fromOpenStack = fromOpenStack; + this.rangeNotEnforced = rangeNotEnforced; } /** @@ -157,8 +157,8 @@ public final class IpAssignment { return domainServer; } - public boolean fromOpenStack() { - return fromOpenStack; + public boolean rangeNotEnforced() { + return rangeNotEnforced; } @Override @@ -172,7 +172,7 @@ public final class IpAssignment { .add("dhcpServer", dhcpServer) .add("routerAddress", routerAddress) .add("domainServer", domainServer) - .add("fromOpenStack", fromOpenStack) + .add("rangeNotEnforced", rangeNotEnforced) .toString(); } @@ -216,7 +216,7 @@ public final class IpAssignment { private Ip4Address routerAddress; - private boolean fromOpenStack = false; + private boolean rangeNotEnforced = false; private Builder() { @@ -232,7 +232,7 @@ public final class IpAssignment { public IpAssignment build() { validateInputs(); return new IpAssignment(ipAddress, leasePeriod, timeStamp, assignmentStatus, subnetMask, - dhcpServer, domainServer, routerAddress, fromOpenStack); + dhcpServer, domainServer, routerAddress, rangeNotEnforced); } public Builder ipAddress(Ip4Address addr) { @@ -275,8 +275,8 @@ public final class IpAssignment { return this; } - public Builder fromOpenStack(boolean fromOpenStack) { - this.fromOpenStack = fromOpenStack; + public Builder rangeNotEnforced(boolean rangeNotEnforced) { + this.rangeNotEnforced = rangeNotEnforced; return this; } @@ -287,16 +287,16 @@ public final class IpAssignment { checkNotNull(leasePeriod, "Lease Period must be specified"); checkNotNull(timeStamp, "Timestamp must be specified"); - if (fromOpenStack) { - checkNotNull(subnetMask, "subnetMask must be specified in case of OpenStack"); - checkNotNull(dhcpServer, "dhcpServer must be specified in case of OpenStack"); - checkNotNull(domainServer, "domainServer must be specified in case of OpenStack"); - checkNotNull(routerAddress, "routerAddress must be specified in case of OpenStack"); + if (rangeNotEnforced) { + checkNotNull(subnetMask, "subnetMask must be specified in case of rangeNotEnforced"); + checkNotNull(dhcpServer, "dhcpServer must be specified in case of rangeNotEnforced"); + checkNotNull(domainServer, "domainServer must be specified in case of rangeNotEnforced"); + checkNotNull(routerAddress, "routerAddress must be specified in case of rangeNotEnforced"); } switch (assignmentStatus) { case Option_Requested: - case Option_Requested_From_OpenStack: + case Option_RangeNotEnforced: case Option_Assigned: case Option_Expired: break; diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java index 4353d623..1efdd082 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java @@ -21,6 +21,9 @@ import org.onosproject.core.ApplicationId; import org.onosproject.net.config.Config; import org.onosproject.net.config.basics.BasicElementConfig; +import static org.onosproject.net.config.Config.FieldPresence.MANDATORY; +import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL; + /** * DHCP Config class. */ @@ -43,6 +46,20 @@ public class DhcpConfig extends Config<ApplicationId> { public static final int DEFAULT = -1; + @Override + public boolean isValid() { + // FIXME: Sweep through and revisit the validation assertions + // For now, this is just a demonstration of potential uses + return hasOnlyFields(MY_IP, MY_MAC, SUBNET_MASK, BROADCAST_ADDRESS, + ROUTER_ADDRESS, DOMAIN_SERVER, TTL, LEASE_TIME, + RENEW_TIME, REBIND_TIME, TIMER_DELAY, DEFAULT_TIMEOUT, + START_IP, END_IP) && + isIpAddress(MY_IP, MANDATORY) && isMacAddress(MY_MAC, MANDATORY) && + isIpAddress(START_IP, MANDATORY) && isIpAddress(END_IP, MANDATORY) && + isNumber(LEASE_TIME, OPTIONAL, 1) && isNumber(REBIND_TIME, OPTIONAL, 1) && + isNumber(DEFAULT_TIMEOUT, OPTIONAL, 1, 3600); + } + /** * Returns the dhcp server ip. * diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java index 4093f2d2..a1707e0b 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java @@ -109,7 +109,7 @@ public class DhcpManager implements DhcpService { @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected PacketService packetService; - private DHCPPacketProcessor processor = new DHCPPacketProcessor(); + private DhcpPacketProcessor processor = new DhcpPacketProcessor(); @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected CoreService coreService; @@ -241,12 +241,12 @@ public class DhcpManager implements DhcpService { } @Override - public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack, + public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean rangeNotEnforced, List<Ip4Address> addressList) { log.debug("setStaticMapping is called with Mac: {}, Ip: {} addressList: {}", macID.toString(), ipAddress.toString(), addressList.toString()); - return dhcpStore.assignStaticIP(macID, ipAddress, fromOpenStack, addressList); + return dhcpStore.assignStaticIP(macID, ipAddress, rangeNotEnforced, addressList); } @Override @@ -259,7 +259,7 @@ public class DhcpManager implements DhcpService { return dhcpStore.getAvailableIPs(); } - private class DHCPPacketProcessor implements PacketProcessor { + private class DhcpPacketProcessor implements PacketProcessor { /** * Builds the DHCP Reply packet. @@ -279,7 +279,7 @@ public class DhcpManager implements DhcpService { ipAssignment = dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(packet.getSourceMAC())); - if (ipAssignment != null && ipAssignment.fromOpenStack()) { + if (ipAssignment != null && ipAssignment.rangeNotEnforced()) { subnetMaskReply = ipAssignment.subnetMask(); dhcpServerReply = ipAssignment.dhcpServer(); domainServerReply = ipAssignment.domainServer(); @@ -437,7 +437,7 @@ public class DhcpManager implements DhcpService { * @param context context of the incoming message * @param dhcpPayload the extracted DHCP payload */ - private void processDHCPPacket(PacketContext context, DHCP dhcpPayload) { + private void processDhcpPacket(PacketContext context, DHCP dhcpPayload) { Ethernet packet = context.inPacket().parsed(); boolean flagIfRequestedIP = false; boolean flagIfServerIP = false; @@ -464,9 +464,9 @@ public class DhcpManager implements DhcpService { } } DHCPPacketType outgoingPacketType; - MacAddress clientMAC = new MacAddress(dhcpPayload.getClientHardwareAddress()); + MacAddress clientMac = new MacAddress(dhcpPayload.getClientHardwareAddress()); VlanId vlanId = VlanId.vlanId(packet.getVlanID()); - HostId hostId = HostId.hostId(clientMAC, vlanId); + HostId hostId = HostId.hostId(clientMac, vlanId); if (incomingPacketType.getValue() == DHCPPacketType.DHCPDISCOVER.getValue()) { @@ -484,8 +484,9 @@ public class DhcpManager implements DhcpService { if (flagIfServerIP && flagIfRequestedIP) { // SELECTING state - if (dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(clientMAC)) - .fromOpenStack()) { + + if (dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(clientMac)) + .rangeNotEnforced()) { outgoingPacketType = DHCPPacketType.DHCPACK; Ethernet ethReply = buildReply(packet, requestedIP, (byte) outgoingPacketType.getValue()); sendReply(context, ethReply); @@ -544,7 +545,7 @@ public class DhcpManager implements DhcpService { * @param context context of the incoming message * @param packet the ethernet payload */ - private void processARPPacket(PacketContext context, Ethernet packet) { + private void processArpPacket(PacketContext context, Ethernet packet) { ARP arpPacket = (ARP) packet.getPayload(); @@ -605,7 +606,7 @@ public class DhcpManager implements DhcpService { // This is meant for the dhcp server so process the packet here. DHCP dhcpPayload = (DHCP) udpPacket.getPayload(); - processDHCPPacket(context, dhcpPayload); + processDhcpPacket(context, dhcpPayload); } } } else if (packet.getEtherType() == Ethernet.TYPE_ARP) { @@ -614,7 +615,7 @@ public class DhcpManager implements DhcpService { if ((arpPacket.getOpCode() == ARP.OP_REQUEST) && Objects.equals(myIP, Ip4Address.valueOf(arpPacket.getTargetProtocolAddress()))) { - processARPPacket(context, packet); + processArpPacket(context, packet); } } @@ -727,4 +728,4 @@ public class DhcpManager implements DhcpService { timeout = Timer.getTimer().newTimeout(new PurgeListTask(), timerDelay, TimeUnit.MINUTES); } } -}
\ No newline at end of file +} diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java index 0f25495e..ad4522cb 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java @@ -106,7 +106,7 @@ public class DistributedDhcpStore implements DhcpStore { IpAssignment.AssignmentStatus status = assignmentInfo.assignmentStatus(); Ip4Address ipAddr = assignmentInfo.ipAddress(); - if (assignmentInfo.fromOpenStack()) { + if (assignmentInfo.rangeNotEnforced()) { return assignmentInfo.ipAddress(); } else if (status == IpAssignment.AssignmentStatus.Option_Assigned || status == IpAssignment.AssignmentStatus.Option_Requested) { @@ -163,12 +163,15 @@ public class DistributedDhcpStore implements DhcpStore { } @Override - public boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean fromOpenStack, + public boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean rangeNotEnforced, List<Ip4Address> addressList) { IpAssignment assignmentInfo; + log.debug("Assign IP Called w/ Ip4Address: {}, HostId: {}", ipAddr.toString(), hostId.mac().toString()); + if (allocationMap.containsKey(hostId)) { + assignmentInfo = allocationMap.get(hostId).value(); IpAssignment.AssignmentStatus status = assignmentInfo.assignmentStatus(); @@ -212,17 +215,17 @@ public class DistributedDhcpStore implements DhcpStore { allocationMap.put(hostId, assignmentInfo); return true; } - } else if (fromOpenStack) { + } else if (rangeNotEnforced) { assignmentInfo = IpAssignment.builder() .ipAddress(ipAddr) .timestamp(new Date()) .leasePeriod(leaseTime) - .fromOpenStack(true) - .assignmentStatus(IpAssignment.AssignmentStatus.Option_Requested_From_OpenStack) + .rangeNotEnforced(true) + .assignmentStatus(IpAssignment.AssignmentStatus.Option_RangeNotEnforced) .subnetMask((Ip4Address) addressList.toArray()[0]) .dhcpServer((Ip4Address) addressList.toArray()[1]) - .domainServer((Ip4Address) addressList.toArray()[2]) - .routerAddress((Ip4Address) addressList.toArray()[3]) + .routerAddress((Ip4Address) addressList.toArray()[2]) + .domainServer((Ip4Address) addressList.toArray()[3]) .build(); allocationMap.put(hostId, assignmentInfo); return true; @@ -259,7 +262,7 @@ public class DistributedDhcpStore implements DhcpStore { for (Map.Entry<HostId, Versioned<IpAssignment>> entry: allocationMap.entrySet()) { assignment = entry.getValue().value(); if (assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_Assigned - || assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_Requested_From_OpenStack) { + || assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_RangeNotEnforced) { validMapping.put(entry.getKey(), assignment); } } @@ -276,10 +279,10 @@ public class DistributedDhcpStore implements DhcpStore { } @Override - public boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean fromOpenStack, + public boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean rangeNotEnforced, List<Ip4Address> addressList) { HostId host = HostId.hostId(macID); - return assignIP(host, ipAddr, -1, fromOpenStack, addressList); + return assignIP(host, ipAddr, -1, rangeNotEnforced, addressList); } @Override @@ -287,6 +290,12 @@ public class DistributedDhcpStore implements DhcpStore { HostId host = HostId.hostId(macID); if (allocationMap.containsKey(host)) { IpAssignment assignment = allocationMap.get(host).value(); + + if (assignment.rangeNotEnforced()) { + allocationMap.remove(host); + return true; + } + Ip4Address freeIP = assignment.ipAddress(); if (assignment.leasePeriod() < 0) { allocationMap.remove(host); diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java deleted file mode 100644 index 7a078df9..00000000 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * 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.dhcp.rest; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.dhcp.DhcpService; -import org.onosproject.dhcp.IpAssignment; -import org.onosproject.net.HostId; -import org.onosproject.rest.AbstractWebResource; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -/** - * Manage DHCP address assignments. - */ -@Path("dhcp") -public class DHCPWebResource extends AbstractWebResource { - - final DhcpService service = get(DhcpService.class); - - /** - * Get DHCP server configuration data. - * Shows lease, renewal and rebinding times in seconds. - * - * @return 200 OK - */ - @GET - @Path("config") - public Response getConfigs() { - DhcpService service = get(DhcpService.class); - ObjectNode node = mapper().createObjectNode() - .put("leaseTime", service.getLeaseTime()) - .put("renewalTime", service.getRenewalTime()) - .put("rebindingTime", service.getRebindingTime()); - return ok(node.toString()).build(); - } - - /** - * Get all MAC/IP mappings. - * Shows all MAC/IP mappings held by the DHCP server. - * - * @return 200 OK - */ - @GET - @Path("mappings") - public Response listMappings() { - ObjectNode root = mapper().createObjectNode(); - - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - - return ok(root.toString()).build(); - } - - - - /** - * Get all available IPs. - * Shows all the IPs in the free pool of the DHCP Server. - * - * @return 200 OK - */ - @GET - @Path("available") - public Response listAvailableIPs() { - final Iterable<Ip4Address> availableIPList = service.getAvailableIPs(); - - final ObjectNode root = mapper().createObjectNode(); - ArrayNode arrayNode = root.putArray("availableIP"); - availableIPList.forEach(i -> arrayNode.add(i.toString())); - return ok(root.toString()).build(); - } - - /** - * Post a new static MAC/IP binding. - * Registers a static binding to the DHCP server, and displays the current set of bindings. - * - * @param stream JSON stream - * @return 200 OK - */ - @POST - @Path("mappings") - @Consumes(MediaType.APPLICATION_JSON) - public Response setMapping(InputStream stream) { - ObjectNode root = mapper().createObjectNode(); - - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode macID = jsonTree.get("mac"); - JsonNode ip = jsonTree.get("ip"); - if (macID != null && ip != null) { - - if (!service.setStaticMapping(MacAddress.valueOf(macID.asText()), - Ip4Address.valueOf(ip.asText()), false, Lists.newArrayList())) { - throw new IllegalArgumentException("Static Mapping Failed. The IP maybe unavailable."); - } - } - - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - } catch (IOException e) { - throw new IllegalArgumentException(e.getMessage()); - } - return ok(root.toString()).build(); - } - - /** - * Delete a static MAC/IP binding. - * Removes a static binding from the DHCP Server, and displays the current set of bindings. - * - * @param macID mac address identifier - * @return 200 OK - */ - @DELETE - @Path("mappings/{macID}") - public Response deleteMapping(@PathParam("macID") String macID) { - - ObjectNode root = mapper().createObjectNode(); - - if (!service.removeStaticMapping(MacAddress.valueOf(macID))) { - throw new IllegalArgumentException("Static Mapping Removal Failed."); - } - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - - return ok(root.toString()).build(); - } -} diff --git a/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml b/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml index 27504548..a53110ee 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml +++ b/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml @@ -30,7 +30,7 @@ <init-param> <param-name>com.sun.jersey.config.property.classnames</param-name> <param-value> - org.onosproject.dhcp.rest.DHCPWebResource + org.onosproject.dhcp.rest.DhcpWebResource </param-value> </init-param> <load-on-startup>1</load-on-startup> diff --git a/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java b/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java index bb6b74cc..e9b02608 100644 --- a/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java +++ b/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java @@ -106,7 +106,7 @@ public class DhcpManagerTest { */ @Test public void testDiscover() { - Ethernet reply = constructDHCPPacket(DHCPPacketType.DHCPDISCOVER); + Ethernet reply = constructDhcpPacket(DHCPPacketType.DHCPDISCOVER); sendPacket(reply); } @@ -115,7 +115,7 @@ public class DhcpManagerTest { */ @Test public void testRequest() { - Ethernet reply = constructDHCPPacket(DHCPPacketType.DHCPREQUEST); + Ethernet reply = constructDhcpPacket(DHCPPacketType.DHCPREQUEST); sendPacket(reply); } @@ -138,7 +138,7 @@ public class DhcpManagerTest { * @param packetType DHCP Message Type * @return Ethernet packet */ - private Ethernet constructDHCPPacket(DHCPPacketType packetType) { + private Ethernet constructDhcpPacket(DHCPPacketType packetType) { // Ethernet Frame. Ethernet ethReply = new Ethernet(); diff --git a/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java b/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java deleted file mode 100644 index d5d7d277..00000000 --- a/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * 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.olt; - -import com.google.common.base.Strings; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.VlanId; -import org.onlab.util.Tools; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.config.basics.SubjectFactories; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.util.Dictionary; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provisions rules on access devices. - */ -@Service -@Component(immediate = true) -public class OLT implements AccessDeviceService { - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry networkConfig; - - private final DeviceListener deviceListener = new InternalDeviceListener(); - - private ApplicationId appId; - - private static final VlanId DEFAULT_VLAN = VlanId.vlanId((short) 0); - public static final int OFFSET = 200; - - public static final int UPLINK_PORT = 129; - public static final int GFAST_UPLINK_PORT = 100; - - public static final String OLT_DEVICE = "of:90e2ba82f97791e9"; - public static final String GFAST_DEVICE = "of:0011223344551357"; - - @Property(name = "uplinkPort", intValue = UPLINK_PORT, - label = "The OLT's uplink port number") - private int uplinkPort = UPLINK_PORT; - - @Property(name = "gfastUplink", intValue = GFAST_UPLINK_PORT, - label = "The OLT's uplink port number") - private int gfastUplink = GFAST_UPLINK_PORT; - - //TODO: replace this with an annotation lookup - @Property(name = "oltDevice", value = OLT_DEVICE, - label = "The OLT device id") - private String oltDevice = OLT_DEVICE; - - @Property(name = "gfastDevice", value = GFAST_DEVICE, - label = "The gfast device id") - private String gfastDevice = GFAST_DEVICE; - - private Map<DeviceId, AccessDeviceData> oltData = new ConcurrentHashMap<>(); - - private InternalNetworkConfigListener configListener = - new InternalNetworkConfigListener(); - private static final Class<AccessDeviceConfig> CONFIG_CLASS = - AccessDeviceConfig.class; - - private ConfigFactory<DeviceId, AccessDeviceConfig> configFactory = - new ConfigFactory<DeviceId, AccessDeviceConfig>( - SubjectFactories.DEVICE_SUBJECT_FACTORY, CONFIG_CLASS, "accessDevice") { - @Override - public AccessDeviceConfig createConfig() { - return new AccessDeviceConfig(); - } - }; - - @Activate - public void activate() { - appId = coreService.registerApplication("org.onosproject.olt"); - - networkConfig.registerConfigFactory(configFactory); - networkConfig.addListener(configListener); - - networkConfig.getSubjects(DeviceId.class, AccessDeviceConfig.class).forEach( - subject -> { - AccessDeviceConfig config = networkConfig.getConfig(subject, AccessDeviceConfig.class); - if (config != null) { - AccessDeviceData data = config.getOlt(); - oltData.put(data.deviceId(), data); - } - } - ); - - /*deviceService.addListener(deviceListener); - - deviceService.getPorts(DeviceId.deviceId(oltDevice)).stream().forEach( - port -> { - if (!port.number().isLogical() && port.isEnabled()) { - short vlanId = fetchVlanId(port.number()); - if (vlanId > 0) { - provisionVlanOnPort(oltDevice, uplinkPort, port.number(), (short) 7); - provisionVlanOnPort(oltDevice, uplinkPort, port.number(), vlanId); - } - } - } - );*/ - - - deviceService.getPorts(DeviceId.deviceId(gfastDevice)).stream() - .filter(port -> !port.number().isLogical()) - .filter(Port::isEnabled) - .forEach(port -> { - short vlanId = (short) (fetchVlanId(port.number()) + OFFSET); - if (vlanId > 0) { - provisionVlanOnPort(gfastDevice, gfastUplink, port.number(), vlanId); - } - } - ); - log.info("Started with Application ID {}", appId.id()); - } - - @Deactivate - public void deactivate() { - networkConfig.removeListener(configListener); - networkConfig.unregisterConfigFactory(configFactory); - log.info("Stopped"); - } - - @Modified - public void modified(ComponentContext context) { - Dictionary<?, ?> properties = context.getProperties(); - - String s = Tools.get(properties, "uplinkPort"); - uplinkPort = Strings.isNullOrEmpty(s) ? UPLINK_PORT : Integer.parseInt(s); - - s = Tools.get(properties, "oltDevice"); - oltDevice = Strings.isNullOrEmpty(s) ? OLT_DEVICE : s; - } - - private short fetchVlanId(PortNumber port) { - long p = port.toLong() + OFFSET; - if (p > 4095) { - log.warn("Port Number {} exceeds vlan max", port); - return -1; - } - return (short) p; - } - - private void provisionVlanOnPort(String deviceId, int uplinkPort, PortNumber p, short vlanId) { - DeviceId did = DeviceId.deviceId(deviceId); - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(p) - .build(); - - TrafficSelector downStream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setOutput(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment downStreamTreatment = DefaultTrafficTreatment.builder() - .setOutput(p) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downStream) - .fromApp(appId) - .withTreatment(downStreamTreatment) - .add(); - - flowObjectiveService.forward(did, upFwd); - flowObjectiveService.forward(did, downFwd); - } - - @Override - public void provisionSubscriber(ConnectPoint port, VlanId vlan) { - AccessDeviceData olt = oltData.get(port.deviceId()); - - if (olt == null) { - log.warn("No data found for OLT device {}", port.deviceId()); - return; - } - - provisionVlans(olt.deviceId(), olt.uplink(), port.port(), vlan, olt.vlan(), - olt.defaultVlan()); - } - - private void provisionVlans(DeviceId deviceId, PortNumber uplinkPort, - PortNumber subscriberPort, - VlanId subscriberVlan, VlanId deviceVlan, - Optional<VlanId> defaultVlan) { - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN) - .matchInPort(subscriberPort) - .build(); - - TrafficSelector downstream = DefaultTrafficSelector.builder() - .matchVlanId(deviceVlan) - .matchInPort(uplinkPort) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setVlanId(subscriberVlan) - .pushVlan() - .setVlanId(deviceVlan) - .setOutput(uplinkPort) - .build(); - - TrafficTreatment downstreamTreatment = DefaultTrafficTreatment.builder() - .popVlan() - .setVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN) - .setOutput(subscriberPort) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downstream) - .fromApp(appId) - .withTreatment(downstreamTreatment) - .add(); - - flowObjectiveService.forward(deviceId, upFwd); - flowObjectiveService.forward(deviceId, downFwd); - } - - @Override - public void removeSubscriber(ConnectPoint port) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - private class InternalDeviceListener implements DeviceListener { - @Override - public void event(DeviceEvent event) { - DeviceId devId = DeviceId.deviceId(oltDevice); - switch (event.type()) { - case PORT_ADDED: - case PORT_UPDATED: - if (devId.equals(event.subject().id()) && event.port().isEnabled()) { - short vlanId = fetchVlanId(event.port().number()); - provisionVlanOnPort(gfastDevice, uplinkPort, event.port().number(), vlanId); - } - break; - case DEVICE_ADDED: - case DEVICE_UPDATED: - case DEVICE_REMOVED: - case DEVICE_SUSPENDED: - case DEVICE_AVAILABILITY_CHANGED: - case PORT_REMOVED: - case PORT_STATS_UPDATED: - default: - return; - } - } - } - - private class InternalNetworkConfigListener implements NetworkConfigListener { - @Override - public void event(NetworkConfigEvent event) { - switch (event.type()) { - - case CONFIG_ADDED: - case CONFIG_UPDATED: - if (event.configClass().equals(CONFIG_CLASS)) { - AccessDeviceConfig config = - networkConfig.getConfig((DeviceId) event.subject(), CONFIG_CLASS); - if (config != null) { - oltData.put(config.getOlt().deviceId(), config.getOlt()); - } - } - break; - case CONFIG_UNREGISTERED: - case CONFIG_REMOVED: - default: - break; - } - } - } - -} diff --git a/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java b/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java index 661a873e..f6e98060 100644 --- a/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java +++ b/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java @@ -120,7 +120,7 @@ public class OpenstackSwitchingRulePopulator { * * @param id device ID to set the rules */ - private void setFlowRuleForDHCP(DeviceId id) { + private void setFlowRuleForDhcp(DeviceId id) { TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder(); TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); diff --git a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java b/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java index e0545023..3890bb4a 100644 --- a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java +++ b/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java @@ -343,6 +343,7 @@ public class OpticalPathProvisioner { return getIntents(crossConnectPoints); } + log.warn("Unable to find multi-layer path."); return Collections.emptyList(); } @@ -392,20 +393,41 @@ public class OpticalPathProvisioner { } /** - * Verifies if given link is cross-connect between packet and optical layer. + * Verifies if given device type is in packet layer, i.e., ROADM, OTN or ROADM_OTN device. + * + * @param type device type + * @return true if in packet layer, false otherwise + */ + private boolean isPacketLayer(Device.Type type) { + return type == Device.Type.SWITCH || type == Device.Type.ROUTER; + } + + /** + * Verifies if given device type is in packet layer, i.e., switch or router device. + * + * @param type device type + * @return true if in packet layer, false otherwise + */ + private boolean isTransportLayer(Device.Type type) { + return type == Device.Type.ROADM || type == Device.Type.OTN || type == Device.Type.ROADM_OTN; + } + + /** + * Verifies if given link forms a cross-connection between packet and optical layer. * * @param link the link - * @return true if the link is a cross-connect link + * @return true if the link is a cross-connect link, false otherwise */ - public static boolean isCrossConnectLink(Link link) { + private boolean isCrossConnectLink(Link link) { if (link.type() != Link.Type.OPTICAL) { return false; } - checkNotNull(link.annotations()); - checkNotNull(link.annotations().value("optical.type")); + Device.Type src = deviceService.getDevice(link.src().deviceId()).type(); + Device.Type dst = deviceService.getDevice(link.dst().deviceId()).type(); - return link.annotations().value("optical.type").equals("cross-connect"); + return src != dst && + ((isPacketLayer(src) && isTransportLayer(dst)) || (isPacketLayer(dst) && isTransportLayer(src))); } } diff --git a/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java b/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java index 5b5a259e..1ccb6b6b 100644 --- a/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java +++ b/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java @@ -309,94 +309,104 @@ final class BgpOpen { case BgpConstants.Open.Capabilities.TYPE: // Optional Parameter Type: Capabilities if (paramLen < BgpConstants.Open.Capabilities.MIN_LENGTH) { - // ERROR: Malformed Capability - String errorMsg = "Malformed Capability Type " + paramType; + // ERROR: Malformed Param Type + String errorMsg = "Malformed Capabilities Optional " + + "Parameter Type " + paramType; throw new BgpMessage.BgpParseException(errorMsg); } - int capabEnd = message.readerIndex() + paramLen; - int capabCode = message.readUnsignedByte(); - int capabLen = message.readUnsignedByte(); - if (message.readerIndex() + capabLen > capabEnd) { - // ERROR: Malformed Capability - String errorMsg = "Malformed Capability Type " + paramType; - throw new BgpMessage.BgpParseException(errorMsg); - } - - switch (capabCode) { - case BgpConstants.Open.Capabilities.MultiprotocolExtensions.CODE: - // Multiprotocol Extensions Capabilities (RFC 4760) - if (capabLen != BgpConstants.Open.Capabilities.MultiprotocolExtensions.LENGTH) { - // ERROR: Multiprotocol Extension Length Error - String errorMsg = "Multiprotocol Extension Length Error"; + int paramEnd = message.readerIndex() + paramLen; + // Parse Capabilities + while (message.readerIndex() < paramEnd) { + if (paramEnd - message.readerIndex() < + BgpConstants.Open.Capabilities.MIN_LENGTH) { + String errorMsg = "Malformed Capabilities"; throw new BgpMessage.BgpParseException(errorMsg); } - // Decode the AFI (2 octets) and SAFI (1 octet) - int afi = message.readUnsignedShort(); - int reserved = message.readUnsignedByte(); - int safi = message.readUnsignedByte(); - log.debug("BGP RX OPEN Capability: AFI = {} SAFI = {}", - afi, safi); - // - // Setup the AFI/SAFI in the BgpSession - // - // NOTE: For now we just copy the remote AFI/SAFI setting - // to the local configuration. - // - if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { - bgpSession.remoteInfo().setIpv4Unicast(); - bgpSession.localInfo().setIpv4Unicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { - bgpSession.remoteInfo().setIpv4Multicast(); - bgpSession.localInfo().setIpv4Multicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { - bgpSession.remoteInfo().setIpv6Unicast(); - bgpSession.localInfo().setIpv6Unicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { - bgpSession.remoteInfo().setIpv6Multicast(); - bgpSession.localInfo().setIpv6Multicast(); - } else { - log.debug("BGP RX OPEN Capability: Unknown AFI = {} SAFI = {}", - afi, safi); + int capabCode = message.readUnsignedByte(); + int capabLen = message.readUnsignedByte(); + if (message.readerIndex() + capabLen > paramEnd) { + // ERROR: Malformed Capability + String errorMsg = "Malformed Capability instance with " + + "code " + capabCode; + throw new BgpMessage.BgpParseException(errorMsg); } - break; - case BgpConstants.Open.Capabilities.As4Octet.CODE: - // Support for 4-octet AS Number Capabilities (RFC 6793) - if (capabLen != BgpConstants.Open.Capabilities.As4Octet.LENGTH) { - // ERROR: 4-octet AS Number Capability Length Error - String errorMsg = "4-octet AS Number Capability Length Error"; - throw new BgpMessage.BgpParseException(errorMsg); + switch (capabCode) { + case BgpConstants.Open.Capabilities.MultiprotocolExtensions.CODE: + // Multiprotocol Extensions Capabilities (RFC 4760) + if (capabLen != BgpConstants.Open.Capabilities.MultiprotocolExtensions.LENGTH) { + // ERROR: Multiprotocol Extension Length Error + String errorMsg = "Multiprotocol Extension Length Error"; + throw new BgpMessage.BgpParseException(errorMsg); + } + // Decode the AFI (2 octets) and SAFI (1 octet) + int afi = message.readUnsignedShort(); + int reserved = message.readUnsignedByte(); + int safi = message.readUnsignedByte(); + log.debug("BGP RX OPEN Capability: AFI = {} SAFI = {}", + afi, safi); + // + // Setup the AFI/SAFI in the BgpSession + // + // NOTE: For now we just copy the remote AFI/SAFI setting + // to the local configuration. + // + if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { + bgpSession.remoteInfo().setIpv4Unicast(); + bgpSession.localInfo().setIpv4Unicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { + bgpSession.remoteInfo().setIpv4Multicast(); + bgpSession.localInfo().setIpv4Multicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { + bgpSession.remoteInfo().setIpv6Unicast(); + bgpSession.localInfo().setIpv6Unicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { + bgpSession.remoteInfo().setIpv6Multicast(); + bgpSession.localInfo().setIpv6Multicast(); + } else { + log.debug("BGP RX OPEN Capability: Unknown AFI = {} SAFI = {}", + afi, safi); + } + break; + + case BgpConstants.Open.Capabilities.As4Octet.CODE: + // Support for 4-octet AS Number Capabilities (RFC 6793) + if (capabLen != BgpConstants.Open.Capabilities.As4Octet.LENGTH) { + // ERROR: 4-octet AS Number Capability Length Error + String errorMsg = "4-octet AS Number Capability Length Error"; + throw new BgpMessage.BgpParseException(errorMsg); + } + long as4Number = message.readUnsignedInt(); + + bgpSession.remoteInfo().setAs4OctetCapability(); + bgpSession.remoteInfo().setAs4Number(as4Number); + + // + // Copy remote 4-octet AS Number Capabilities and AS + // Number. This is a temporary setting until local AS + // number configuration is supported. + // + bgpSession.localInfo().setAs4OctetCapability(); + bgpSession.localInfo().setAs4Number(as4Number); + log.debug("BGP RX OPEN Capability: AS4 Number = {}", + as4Number); + break; + + default: + // Unknown Capability: ignore it + log.debug("BGP RX OPEN Capability Code = {} Length = {}", + capabCode, capabLen); + message.readBytes(capabLen); + break; } - long as4Number = message.readUnsignedInt(); - - bgpSession.remoteInfo().setAs4OctetCapability(); - bgpSession.remoteInfo().setAs4Number(as4Number); - - // - // Copy remote 4-octet AS Number Capabilities and AS - // Number. This is a temporary setting until local AS - // number configuration is supported. - // - bgpSession.localInfo().setAs4OctetCapability(); - bgpSession.localInfo().setAs4Number(as4Number); - log.debug("BGP RX OPEN Capability: AS4 Number = {}", - as4Number); - break; - - default: - // Unknown Capability: ignore it - log.debug("BGP RX OPEN Capability Code = {} Length = {}", - capabCode, capabLen); - message.readBytes(capabLen); - break; - } - break; + } + break; default: // Unknown Parameter Type: ignore it log.debug("BGP RX OPEN Parameter Type = {} Length = {}", diff --git a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java index a3cd6875..2eb5d0f3 100644 --- a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java +++ b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java @@ -74,7 +74,7 @@ public class IntentSynchronizer implements IntentSynchronizationService { * @param intentService the intent service * @param executorService executor service for synchronization thread */ - IntentSynchronizer(ApplicationId appId, IntentService intentService, + public IntentSynchronizer(ApplicationId appId, IntentService intentService, ExecutorService executorService) { this.appId = appId; this.intentService = intentService; diff --git a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java index 8e2a3df3..863de12a 100644 --- a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java +++ b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java @@ -19,13 +19,12 @@ package org.onosproject.sdnip; import org.onosproject.net.intent.Intent; import org.onosproject.net.intent.MultiPointToSinglePointIntent; import org.onosproject.net.intent.PointToPointIntent; +import org.onosproject.net.intent.SinglePointToMultiPointIntent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Objects; -import static com.google.common.base.Preconditions.checkArgument; - /** * Utilities for dealing with intents. */ @@ -49,15 +48,24 @@ public final class IntentUtils { * @return true if the two intents represent the same value, otherwise false */ public static boolean equals(Intent one, Intent two) { - checkArgument(one.getClass() == two.getClass(), - "Intents are not the same type"); + if (one.getClass() != two.getClass()) { + return false; + } if (!(Objects.equals(one.appId(), two.appId()) && Objects.equals(one.key(), two.key()))) { return false; } - if (one instanceof MultiPointToSinglePointIntent) { + if (one instanceof SinglePointToMultiPointIntent) { + SinglePointToMultiPointIntent intent1 = (SinglePointToMultiPointIntent) one; + SinglePointToMultiPointIntent intent2 = (SinglePointToMultiPointIntent) two; + + return Objects.equals(intent1.selector(), intent2.selector()) && + Objects.equals(intent1.treatment(), intent2.treatment()) && + Objects.equals(intent1.ingressPoint(), intent2.ingressPoint()) && + Objects.equals(intent1.egressPoints(), intent2.egressPoints()); + } else if (one instanceof MultiPointToSinglePointIntent) { MultiPointToSinglePointIntent intent1 = (MultiPointToSinglePointIntent) one; MultiPointToSinglePointIntent intent2 = (MultiPointToSinglePointIntent) two; diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java index 96c85ba8..2c6412cf 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java @@ -20,10 +20,10 @@ import org.onlab.packet.Ethernet; import org.onlab.packet.Ip4Address; import org.onlab.packet.IpAddress; import org.onlab.packet.MacAddress; +import org.onlab.packet.VlanId; import org.onosproject.net.ConnectPoint; import org.onosproject.net.DeviceId; import org.onosproject.net.Host; -import org.onosproject.net.Port; import org.onosproject.net.PortNumber; import org.onosproject.net.flow.DefaultTrafficTreatment; import org.onosproject.net.flow.TrafficTreatment; @@ -60,12 +60,21 @@ public class ArpHandler { /** * Processes incoming ARP packets. + * * If it is an ARP request to router itself or known hosts, * then it sends ARP response. * If it is an ARP request to unknown hosts in its own subnet, * then it flood the ARP request to the ports. * If it is an ARP response, then set a flow rule for the host * and forward any IP packets to the host in the packet buffer to the host. + * <p> + * Note: We handles all ARP packet in, even for those ARP packets between + * hosts in the same subnet. + * For an ARP packet with broadcast destination MAC, + * some switches pipelines will send it to the controller due to table miss, + * other swithches will flood the packets directly in the data plane without + * packet in. + * We can deal with both cases. * * @param pkt incoming packet */ @@ -86,29 +95,56 @@ public class ArpHandler { if (arp.getOpCode() == ARP.OP_REQUEST) { handleArpRequest(deviceId, connectPoint, ethernet); } else { - srManager.ipHandler.forwardPackets(deviceId, hostIpAddress); + handleArpReply(deviceId, connectPoint, ethernet); } } private void handleArpRequest(DeviceId deviceId, ConnectPoint inPort, Ethernet payload) { ARP arpRequest = (ARP) payload.getPayload(); + VlanId vlanId = VlanId.vlanId(payload.getVlanID()); HostId targetHostId = HostId.hostId(MacAddress.valueOf( - arpRequest.getTargetHardwareAddress())); + arpRequest.getTargetHardwareAddress()), + vlanId); - // ARP request for router + // ARP request for router. Send ARP reply. if (isArpReqForRouter(deviceId, arpRequest)) { Ip4Address targetAddress = Ip4Address.valueOf(arpRequest.getTargetProtocolAddress()); - - sendArpResponse(arpRequest, config.getRouterMacForAGatewayIp(targetAddress)); + sendArpResponse(arpRequest, config.getRouterMacForAGatewayIp(targetAddress), vlanId); } else { Host targetHost = srManager.hostService.getHost(targetHostId); - // ARP request for known hosts + // ARP request for known hosts. Send proxy ARP reply on behalf of the target. if (targetHost != null) { - sendArpResponse(arpRequest, targetHost.mac()); + removeVlanAndForward(payload, targetHost.location()); + // ARP request for unknown host in the subnet. Flood in the subnet. + } else { + removeVlanAndFlood(payload, inPort); + } + } + } - // ARP request for unknown host in the subnet - } else if (isArpReqForSubnet(deviceId, arpRequest)) { - flood(payload, inPort); + private void handleArpReply(DeviceId deviceId, ConnectPoint inPort, Ethernet payload) { + ARP arpReply = (ARP) payload.getPayload(); + VlanId vlanId = VlanId.vlanId(payload.getVlanID()); + HostId targetHostId = HostId.hostId(MacAddress.valueOf( + arpReply.getTargetHardwareAddress()), + vlanId); + + // ARP reply for router. Process all pending IP packets. + if (isArpReqForRouter(deviceId, arpReply)) { + Ip4Address hostIpAddress = Ip4Address.valueOf(arpReply.getSenderProtocolAddress()); + srManager.ipHandler.forwardPackets(deviceId, hostIpAddress); + } else { + Host targetHost = srManager.hostService.getHost(targetHostId); + // ARP reply for known hosts. Forward to the host. + if (targetHost != null) { + removeVlanAndForward(payload, targetHost.location()); + // ARP reply for unknown host, Flood in the subnet. + } else { + // Don't flood to non-edge ports + if (vlanId.equals(VlanId.vlanId(srManager.ASSIGNED_VLAN_NO_SUBNET))) { + return; + } + removeVlanAndFlood(payload, inPort); } } } @@ -126,14 +162,6 @@ public class ArpHandler { return false; } - private boolean isArpReqForSubnet(DeviceId deviceId, ARP arpRequest) { - return config.getSubnets(deviceId).stream() - .anyMatch((prefix)-> - prefix.contains(Ip4Address. - valueOf(arpRequest. - getTargetProtocolAddress()))); - } - /** * Sends an APR request for the target IP address to all ports except in-port. * @@ -170,11 +198,10 @@ public class ArpHandler { .setSourceMACAddress(senderMacAddress) .setEtherType(Ethernet.TYPE_ARP).setPayload(arpRequest); - flood(eth, inPort); + removeVlanAndFlood(eth, inPort); } - private void sendArpResponse(ARP arpRequest, MacAddress targetMac) { - + private void sendArpResponse(ARP arpRequest, MacAddress targetMac, VlanId vlanId) { ARP arpReply = new ARP(); arpReply.setHardwareType(ARP.HW_TYPE_ETHERNET) .setProtocolType(ARP.PROTO_TYPE_IP) @@ -193,8 +220,9 @@ public class ArpHandler { .setEtherType(Ethernet.TYPE_ARP).setPayload(arpReply); - HostId dstId = HostId.hostId(MacAddress.valueOf( - arpReply.getTargetHardwareAddress())); + HostId dstId = HostId.hostId( + MacAddress.valueOf(arpReply.getTargetHardwareAddress()), + vlanId); Host dst = srManager.hostService.getHost(dstId); if (dst == null) { log.warn("Cannot send ARP response to unknown device"); @@ -209,19 +237,51 @@ public class ArpHandler { srManager.packetService.emit(packet); } - private void flood(Ethernet request, ConnectPoint inPort) { - TrafficTreatment.Builder builder; - ByteBuffer buf = ByteBuffer.wrap(request.serialize()); - - for (Port port: srManager.deviceService.getPorts(inPort.deviceId())) { - if (!port.number().equals(inPort.port()) && - port.number().toLong() > 0) { - builder = DefaultTrafficTreatment.builder(); - builder.setOutput(port.number()); - srManager.packetService.emit(new DefaultOutboundPacket(inPort.deviceId(), - builder.build(), buf)); + /** + * Remove VLAN tag and flood to all ports in the same subnet. + * + * @param packet packet to be flooded + * @param inPort where the packet comes from + */ + private void removeVlanAndFlood(Ethernet packet, ConnectPoint inPort) { + Ip4Address targetProtocolAddress = Ip4Address.valueOf( + ((ARP) packet.getPayload()).getTargetProtocolAddress() + ); + + srManager.deviceConfiguration.getSubnetPortsMap(inPort.deviceId()).forEach((subnet, ports) -> { + if (subnet.contains(targetProtocolAddress)) { + ports.stream() + .filter(port -> port != inPort.port()) + .forEach(port -> { + removeVlanAndForward(packet, new ConnectPoint(inPort.deviceId(), port)); + }); } - } + }); } + /** + * Remove VLAN tag and packet out to given port. + * + * Note: In current implementation, we expect all communication with + * end hosts within a subnet to be untagged. + * <p> + * For those pipelines that internally assigns a VLAN, the VLAN tag will be + * removed before egress. + * <p> + * For those pipelines that do not assign internal VLAN, the packet remains + * untagged. + * + * @param packet packet to be forwarded + * @param outPort where the packet should be forwarded + */ + private void removeVlanAndForward(Ethernet packet, ConnectPoint outPort) { + packet.setEtherType(Ethernet.TYPE_ARP); + packet.setVlanID(Ethernet.VLAN_UNTAGGED); + ByteBuffer buf = ByteBuffer.wrap(packet.serialize()); + + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + tbuilder.setOutput(outPort.port()); + srManager.packetService.emit(new DefaultOutboundPacket(outPort.deviceId(), + tbuilder.build(), buf)); + } } diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java index c4267ebb..eb3b3fd5 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java @@ -105,8 +105,17 @@ public class IcmpHandler { } } + /** + * Sends an ICMP reply message. + * + * Note: we assume that packets sending from the edge switches to the hosts + * have untagged VLAN. + * @param icmpRequest the original ICMP request + * @param outport the output port where the ICMP reply should be sent to + */ private void sendICMPResponse(Ethernet icmpRequest, ConnectPoint outport) { - + // Note: We assume that packets arrive at the edge switches have + // untagged VLAN. Ethernet icmpReplyEth = new Ethernet(); IPv4 icmpRequestIpv4 = (IPv4) icmpRequest.getPayload(); @@ -129,7 +138,6 @@ public class IcmpHandler { icmpReplyEth.setEtherType(Ethernet.TYPE_IPV4); icmpReplyEth.setDestinationMACAddress(icmpRequest.getSourceMACAddress()); icmpReplyEth.setSourceMACAddress(icmpRequest.getDestinationMACAddress()); - icmpReplyEth.setVlanID(icmpRequest.getVlanID()); Ip4Address destIpAddress = Ip4Address.valueOf(icmpReplyIpv4.getDestinationAddress()); Ip4Address destRouterAddress = config.getRouterIpAddressForASubnetHost(destIpAddress); diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java index f8274038..bc3ce8c6 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java @@ -55,7 +55,6 @@ import java.util.concurrent.atomic.AtomicLong; import static com.google.common.base.Preconditions.checkNotNull; public class RoutingRulePopulator { - private static final Logger log = LoggerFactory .getLogger(RoutingRulePopulator.class); @@ -105,13 +104,45 @@ public class RoutingRulePopulator { */ public void populateIpRuleForHost(DeviceId deviceId, Ip4Address hostIp, MacAddress hostMac, PortNumber outPort) { - MacAddress deviceMac; + log.debug("Populate IP table entry for host {} at {}:{}", + hostIp, deviceId, outPort); + ForwardingObjective.Builder fwdBuilder; try { - deviceMac = config.getDeviceMac(deviceId); + fwdBuilder = getForwardingObjectiveBuilder( + deviceId, hostIp, hostMac, outPort); } catch (DeviceConfigNotFoundException e) { log.warn(e.getMessage() + " Aborting populateIpRuleForHost."); return; } + srManager.flowObjectiveService. + forward(deviceId, fwdBuilder.add(new SRObjectiveContext(deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING))); + rulePopulationCounter.incrementAndGet(); + } + + public void revokeIpRuleForHost(DeviceId deviceId, Ip4Address hostIp, + MacAddress hostMac, PortNumber outPort) { + log.debug("Revoke IP table entry for host {} at {}:{}", + hostIp, deviceId, outPort); + ForwardingObjective.Builder fwdBuilder; + try { + fwdBuilder = getForwardingObjectiveBuilder( + deviceId, hostIp, hostMac, outPort); + } catch (DeviceConfigNotFoundException e) { + log.warn(e.getMessage() + " Aborting revokeIpRuleForHost."); + return; + } + srManager.flowObjectiveService. + forward(deviceId, fwdBuilder.remove(new SRObjectiveContext(deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING))); + } + + private ForwardingObjective.Builder getForwardingObjectiveBuilder( + DeviceId deviceId, Ip4Address hostIp, + MacAddress hostMac, PortNumber outPort) + throws DeviceConfigNotFoundException { + MacAddress deviceMac; + deviceMac = config.getDeviceMac(deviceId); TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); @@ -127,19 +158,10 @@ public class RoutingRulePopulator { TrafficTreatment treatment = tbuilder.build(); TrafficSelector selector = sbuilder.build(); - ForwardingObjective.Builder fwdBuilder = DefaultForwardingObjective - .builder().fromApp(srManager.appId).makePermanent() + return DefaultForwardingObjective.builder() + .fromApp(srManager.appId).makePermanent() .withSelector(selector).withTreatment(treatment) .withPriority(100).withFlag(ForwardingObjective.Flag.SPECIFIC); - - log.debug("Installing IPv4 forwarding objective " - + "for host {} in switch {}", hostIp, deviceId); - srManager.flowObjectiveService. - forward(deviceId, - fwdBuilder. - add(new SRObjectiveContext(deviceId, - SRObjectiveContext.ObjectiveType.FORWARDING))); - rulePopulationCounter.incrementAndGet(); } /** @@ -186,26 +208,25 @@ public class RoutingRulePopulator { } TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); - TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); - sbuilder.matchIPDst(ipPrefix); sbuilder.matchEthType(Ethernet.TYPE_IPV4); + TrafficSelector selector = sbuilder.build(); - NeighborSet ns = null; + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + NeighborSet ns; + TrafficTreatment treatment; // If the next hop is the same as the final destination, then MPLS label // is not set. if (nextHops.size() == 1 && nextHops.toArray()[0].equals(destSw)) { - tbuilder.deferred().decNwTtl(); + tbuilder.immediate().decNwTtl(); ns = new NeighborSet(nextHops); + treatment = tbuilder.build(); } else { - tbuilder.deferred().copyTtlOut(); ns = new NeighborSet(nextHops, segmentId); + treatment = null; } - TrafficTreatment treatment = tbuilder.build(); - TrafficSelector selector = sbuilder.build(); - if (srManager.getNextObjectiveId(deviceId, ns) <= 0) { log.warn("No next objective in {} for ns: {}", deviceId, ns); return false; @@ -216,10 +237,12 @@ public class RoutingRulePopulator { .fromApp(srManager.appId) .makePermanent() .nextStep(srManager.getNextObjectiveId(deviceId, ns)) - .withTreatment(treatment) .withSelector(selector) .withPriority(100) .withFlag(ForwardingObjective.Flag.SPECIFIC); + if (treatment != null) { + fwdBuilder.withTreatment(treatment); + } log.debug("Installing IPv4 forwarding objective " + "for router IP/subnet {} in switch {}", ipPrefix, @@ -423,8 +446,6 @@ public class RoutingRulePopulator { ? VlanId.vlanId(SegmentRoutingManager.ASSIGNED_VLAN_NO_SUBNET) : srManager.getSubnetAssignedVlanId(deviceId, portSubnet); - - FilteringObjective.Builder fob = DefaultFilteringObjective.builder(); fob.withKey(Criteria.matchInPort(port.number())) .addCondition(Criteria.matchEthDst(deviceMac)) @@ -469,14 +490,14 @@ public class RoutingRulePopulator { Set<Ip4Address> allIps = new HashSet<Ip4Address>(config.getPortIPs(deviceId)); allIps.add(routerIp); for (Ip4Address ipaddr : allIps) { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - selector.matchEthType(Ethernet.TYPE_IPV4); - selector.matchIPDst(IpPrefix.valueOf(ipaddr, + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + sbuilder.matchEthType(Ethernet.TYPE_IPV4); + sbuilder.matchIPDst(IpPrefix.valueOf(ipaddr, IpPrefix.MAX_INET_MASK_LENGTH)); - treatment.setOutput(PortNumber.CONTROLLER); - puntIp.withSelector(selector.build()); - puntIp.withTreatment(treatment.build()); + tbuilder.setOutput(PortNumber.CONTROLLER); + puntIp.withSelector(sbuilder.build()); + puntIp.withTreatment(tbuilder.build()); puntIp.withFlag(Flag.VERSATILE) .withPriority(HIGHEST_PRIORITY) .makePermanent() @@ -489,6 +510,48 @@ public class RoutingRulePopulator { } } + /** + * Populates a forwarding objective to send packets that miss other high + * priority Bridging Table entries to a group that contains all ports of + * its subnet. + * + * Note: We assume that packets sending from the edge switches to the hosts + * have untagged VLAN. + * The VLAN tag will be popped later in the flooding group. + * + * @param deviceId switch ID to set the rules + */ + public void populateSubnetBroadcastRule(DeviceId deviceId) { + config.getSubnets(deviceId).forEach(subnet -> { + int nextId = srManager.getSubnetNextObjectiveId(deviceId, subnet); + VlanId vlanId = srManager.getSubnetAssignedVlanId(deviceId, subnet); + + /* Driver should treat objective with MacAddress.NONE as the + * subnet broadcast rule + */ + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + sbuilder.matchVlanId(vlanId); + sbuilder.matchEthDst(MacAddress.NONE); + + ForwardingObjective.Builder fob = DefaultForwardingObjective.builder(); + fob.withFlag(Flag.SPECIFIC) + .withSelector(sbuilder.build()) + .nextStep(nextId) + .withPriority(5) + .fromApp(srManager.appId) + .makePermanent(); + + srManager.flowObjectiveService.forward( + deviceId, + fob.add(new SRObjectiveContext( + deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING) + ) + ); + }); + } + + private PortNumber selectOnePort(DeviceId srcId, Set<DeviceId> destIds) { Set<Link> links = srManager.linkService.getDeviceLinks(srcId); diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java index 787f9347..84fe5168 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java @@ -22,6 +22,7 @@ import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; import org.onlab.packet.Ethernet; +import org.onlab.packet.MacAddress; import org.onlab.packet.VlanId; import org.onlab.packet.IPv4; import org.onlab.packet.Ip4Address; @@ -33,11 +34,23 @@ import org.onosproject.core.ApplicationId; import org.onosproject.core.CoreService; import org.onosproject.event.Event; import org.onosproject.net.ConnectPoint; +import org.onosproject.net.PortNumber; import org.onosproject.net.config.ConfigFactory; import org.onosproject.net.config.NetworkConfigEvent; import org.onosproject.net.config.NetworkConfigRegistry; import org.onosproject.net.config.NetworkConfigListener; import org.onosproject.net.config.basics.SubjectFactories; +import org.onosproject.net.flow.DefaultTrafficSelector; +import org.onosproject.net.flow.DefaultTrafficTreatment; +import org.onosproject.net.flow.TrafficSelector; +import org.onosproject.net.flow.TrafficTreatment; +import org.onosproject.net.flowobjective.DefaultForwardingObjective; +import org.onosproject.net.flowobjective.ForwardingObjective; +import org.onosproject.net.flowobjective.Objective; +import org.onosproject.net.flowobjective.ObjectiveContext; +import org.onosproject.net.flowobjective.ObjectiveError; +import org.onosproject.net.host.HostEvent; +import org.onosproject.net.host.HostListener; import org.onosproject.segmentrouting.config.DeviceConfigNotFoundException; import org.onosproject.segmentrouting.config.DeviceConfiguration; import org.onosproject.segmentrouting.config.SegmentRoutingConfig; @@ -139,11 +152,13 @@ public class SegmentRoutingManager implements SegmentRoutingService { private static ScheduledFuture<?> eventHandlerFuture = null; private ConcurrentLinkedQueue<Event> eventQueue = new ConcurrentLinkedQueue<Event>(); - private Map<DeviceId, DefaultGroupHandler> groupHandlerMap = new ConcurrentHashMap<DeviceId, DefaultGroupHandler>(); + private Map<DeviceId, DefaultGroupHandler> groupHandlerMap = + new ConcurrentHashMap<DeviceId, DefaultGroupHandler>(); // Per device next objective ID store with (device id + neighbor set) as key - private EventuallyConsistentMap<NeighborSetNextObjectiveStoreKey, - Integer> nsNextObjStore = null; - private EventuallyConsistentMap<SubnetNextObjectiveStoreKey, Integer> subnetNextObjStore = null; + private EventuallyConsistentMap<NeighborSetNextObjectiveStoreKey, Integer> + nsNextObjStore = null; + private EventuallyConsistentMap<SubnetNextObjectiveStoreKey, Integer> + subnetNextObjStore = null; private EventuallyConsistentMap<String, Tunnel> tunnelStore = null; private EventuallyConsistentMap<String, Policy> policyStore = null; // Per device, per-subnet assigned-vlans store, with (device id + subnet @@ -170,6 +185,8 @@ public class SegmentRoutingManager implements SegmentRoutingService { } }; + private final HostListener hostListener = new InternalHostListener(); + private Object threadSchedulerLock = new Object(); private static int numOfEventsQueued = 0; private static int numOfEventsExecuted = 0; @@ -259,6 +276,8 @@ public class SegmentRoutingManager implements SegmentRoutingService { cfgService.addListener(cfgListener); cfgService.registerConfigFactory(cfgFactory); + hostService.addListener(hostListener); + processor = new InternalPacketProcessor(); linkListener = new InternalLinkListener(); deviceListener = new InternalDeviceListener(); @@ -637,6 +656,7 @@ public class SegmentRoutingManager implements SegmentRoutingService { if (mastershipService.isLocalMaster(device.id())) { DefaultGroupHandler groupHandler = groupHandlerMap.get(device.id()); groupHandler.createGroupsFromSubnetConfig(); + routingRulePopulator.populateSubnetBroadcastRule(device.id()); } } @@ -703,6 +723,7 @@ public class SegmentRoutingManager implements SegmentRoutingService { if (mastershipService.isLocalMaster(device.id())) { DefaultGroupHandler groupHandler = groupHandlerMap.get(device.id()); groupHandler.createGroupsFromSubnetConfig(); + routingRulePopulator.populateSubnetBroadcastRule(device.id()); } } @@ -723,4 +744,205 @@ public class SegmentRoutingManager implements SegmentRoutingService { } } } + + private class InternalHostListener implements HostListener { + private ForwardingObjective.Builder getForwardingObjectiveBuilder( + MacAddress mac, VlanId vlanId, PortNumber port) { + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + sbuilder.matchEthDst(mac); + sbuilder.matchVlanId(vlanId); + + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + // TODO Move popVlan from flow action to group action + tbuilder.immediate().popVlan(); + tbuilder.immediate().setOutput(port); + + return DefaultForwardingObjective.builder() + .withFlag(ForwardingObjective.Flag.SPECIFIC) + .withSelector(sbuilder.build()) + .withTreatment(tbuilder.build()) + .withPriority(100) + .fromApp(appId) + .makePermanent(); + } + + private void processHostAddedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId deviceId = event.subject().location().deviceId(); + PortNumber port = event.subject().location().port(); + Set<IpAddress> ips = event.subject().ipAddresses(); + log.debug("Host {}/{} is added at {}:{}", mac, vlanId, deviceId, port); + + // TODO Move bridging table population to a separate class + // Populate bridging table entry + ForwardingObjective.Builder fob = + getForwardingObjectiveBuilder(mac, vlanId, port); + flowObjectiveService.forward(deviceId, fob.add( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Populate IP table entry + ips.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + deviceId, ip.getIp4Address(), mac, port); + } + }); + } + + private void processHostRemoveEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId deviceId = event.subject().location().deviceId(); + PortNumber port = event.subject().location().port(); + Set<IpAddress> ips = event.subject().ipAddresses(); + log.debug("Host {}/{} is removed from {}:{}", mac, vlanId, deviceId, port); + + // Revoke bridging table entry + ForwardingObjective.Builder fob = + getForwardingObjectiveBuilder(mac, vlanId, port); + flowObjectiveService.forward(deviceId, fob.remove( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Revoke IP table entry + ips.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + deviceId, ip.getIp4Address(), mac, port); + } + }); + } + + private void processHostMovedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId prevDeviceId = event.prevSubject().location().deviceId(); + PortNumber prevPort = event.prevSubject().location().port(); + Set<IpAddress> prevIps = event.prevSubject().ipAddresses(); + DeviceId newDeviceId = event.subject().location().deviceId(); + PortNumber newPort = event.subject().location().port(); + Set<IpAddress> newIps = event.subject().ipAddresses(); + log.debug("Host {}/{} is moved from {}:{} to {}:{}", + mac, vlanId, prevDeviceId, prevPort, newDeviceId, newPort); + + // Revoke previous bridging table entry + ForwardingObjective.Builder prevFob = + getForwardingObjectiveBuilder(mac, vlanId, prevPort); + flowObjectiveService.forward(prevDeviceId, prevFob.remove( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Revoke previous IP table entry + prevIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + prevDeviceId, ip.getIp4Address(), mac, prevPort); + } + }); + + // Populate new bridging table entry + ForwardingObjective.Builder newFob = + getForwardingObjectiveBuilder(mac, vlanId, prevPort); + flowObjectiveService.forward(newDeviceId, newFob.add( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Populate new IP table entry + newIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + newDeviceId, ip.getIp4Address(), mac, newPort); + } + }); + } + + private void processHostUpdatedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId prevDeviceId = event.prevSubject().location().deviceId(); + PortNumber prevPort = event.prevSubject().location().port(); + Set<IpAddress> prevIps = event.prevSubject().ipAddresses(); + DeviceId newDeviceId = event.subject().location().deviceId(); + PortNumber newPort = event.subject().location().port(); + Set<IpAddress> newIps = event.subject().ipAddresses(); + log.debug("Host {}/{} is updated", mac, vlanId); + + // Revoke previous IP table entry + prevIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + prevDeviceId, ip.getIp4Address(), mac, prevPort); + } + }); + + // Populate new IP table entry + newIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + newDeviceId, ip.getIp4Address(), mac, newPort); + } + }); + } + + @Override + public void event(HostEvent event) { + // Do not proceed without mastership + DeviceId deviceId = event.subject().location().deviceId(); + if (!mastershipService.isLocalMaster(deviceId)) { + return; + } + + switch (event.type()) { + case HOST_ADDED: + processHostAddedEvent(event); + break; + case HOST_MOVED: + processHostMovedEvent(event); + break; + case HOST_REMOVED: + processHostRemoveEvent(event); + break; + case HOST_UPDATED: + processHostUpdatedEvent(event); + break; + default: + log.warn("Unsupported host event type: {}", event.type()); + break; + } + } + } + + private static class BridgingTableObjectiveContext implements ObjectiveContext { + final MacAddress mac; + final VlanId vlanId; + + BridgingTableObjectiveContext(MacAddress mac, VlanId vlanId) { + this.mac = mac; + this.vlanId = vlanId; + } + + @Override + public void onSuccess(Objective objective) { + if (objective.op() == Objective.Operation.ADD) { + log.debug("Successfully populate bridging table entry for {}/{}", + mac, vlanId); + } else { + log.debug("Successfully revoke bridging table entry for {}/{}", + mac, vlanId); + } + } + + @Override + public void onError(Objective objective, ObjectiveError error) { + if (objective.op() == Objective.Operation.ADD) { + log.debug("Fail to populate bridging table entry for {}/{}. {}", + mac, vlanId, error); + } else { + log.debug("Fail to revoke bridging table entry for {}/{}. {}", + mac, vlanId, error); + } + } + } } diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java index 55b556eb..b394db5e 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java @@ -224,8 +224,8 @@ public class DefaultGroupHandler { .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { tBuilder.pushMpls() - .setMpls(MplsLabel. - mplsLabel(ns.getEdgeLabel())); + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } Integer nextId = nsNextObjStore. @@ -292,8 +292,9 @@ public class DefaultGroupHandler { .setEthDst(dstMac) .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { - tBuilder.pushMpls().setMpls(MplsLabel.mplsLabel(ns - .getEdgeLabel())); + tBuilder.pushMpls() + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } Integer nextId = nsNextObjStore. @@ -536,8 +537,9 @@ public class DefaultGroupHandler { .setEthDst(deviceMac) .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { - tBuilder.pushMpls().setMpls(MplsLabel.mplsLabel(ns - .getEdgeLabel())); + tBuilder.pushMpls() + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } nextObjBuilder.addTreatment(tBuilder.build()); } diff --git a/framework/src/onos/apps/vtn/pom.xml b/framework/src/onos/apps/vtn/pom.xml index e8387cb7..a42f91a0 100644 --- a/framework/src/onos/apps/vtn/pom.xml +++ b/framework/src/onos/apps/vtn/pom.xml @@ -32,13 +32,14 @@ <description>ONOS framework applications</description> <modules> + <module>sfcmgr</module> <module>vtnrsc</module> <module>vtnmgr</module> <module>vtnweb</module> <module>app</module> - </modules> - <dependencies> - <dependency> + </modules> + <dependencies> + <dependency> <groupId>org.onosproject</groupId> <artifactId>onlab-junit</artifactId> <scope>test</scope> @@ -53,5 +54,25 @@ <artifactId>easymock</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onlab-osgi</artifactId> + <classifier>tests</classifier> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-servlet</artifactId> + </dependency> + <dependency> + <groupId>com.sun.jersey.jersey-test-framework</groupId> + <artifactId>jersey-test-framework-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.sun.jersey.jersey-test-framework</groupId> + <artifactId>jersey-test-framework-grizzly2</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java deleted file mode 100644 index a2748f5e..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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.sfc; - -import org.onosproject.vtnrsc.PortChain; - -/** - * SFC application that applies flows to the device. - */ -public interface SfcService { - /** - * Applies flow classification to OVS. - * - * @param portChain Port-Chain. - */ - void InstallFlowClassification(PortChain portChain); - - - /** - * Remove flow classification from OVS. - * - * @param portChain Port-Chain. - */ - void UnInstallFlowClassification(PortChain portChain); - - /** - * Applies Service Function chain to OVS. - * - * @param portChain Port-Chain. - */ - void InstallServiceFunctionChain(PortChain portChain); - - /** - * Remove Service Function chain from OVS. - * - * @param portChain Port-Chain. - */ - void UnInstallServiceFunctionChain(PortChain portChain); -} diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java deleted file mode 100644 index 1872295f..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.sfc.impl; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.vtnrsc.sfc.PortChain; -import org.slf4j.Logger; - -/** - * Provides implementation of SFC Service. - */ -@Component(immediate = true) -@Service -public class SfcManager implements SfcService { - - private final Logger log = getLogger(SfcManager.class); - - @Activate - public void activate() { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public void InstallFlowClassification(PortChain portChain) { - log.debug("InstallFlowClassification"); - //TODO: Installation of flow classification into OVS. - } - - @Override - public void UnInstallFlowClassification(PortChain portChain) { - log.debug("UnInstallFlowClassification"); - //TODO: Un-installation flow classification from OVS - } - - @Override - public void InstallServiceFunctionChain(PortChain portChain) { - log.debug("InstallServiceFunctionChain"); - //TODO: Installation of Service Function chain into OVS. - } - - @Override - public void UnInstallServiceFunctionChain(PortChain portChain) { - log.debug("UnInstallServiceFunctionChain"); - //TODO: Un-installation of Service Function chain from OVS. - } -} diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java deleted file mode 100644 index 0dba868c..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * SFC Service manager for interacting with SFC. - */ -package org.onosproject.sfc.impl; diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java deleted file mode 100644 index 1dcb9929..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Service for interacting with SFC. - */ -package org.onosproject.sfc; diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java deleted file mode 100644 index a20f852b..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.vtn; - -import org.onosproject.net.Device; -import org.onosproject.net.Host; - -/** - * VTN application that applies configuration and flows to the device. - */ -public interface VTNService { - - /** - * Creates a vxlan tunnel and creates the ovs when a ovs controller node is detected. - * - * @param device controller-type device - */ - void onServerDetected(Device device); - - /** - * Drops a vxlan tunnel and drops the ovs when a ovs controller node is vanished. - * - * @param device controller-type device - */ - void onServerVanished(Device device); - - /** - * Applies default forwarding flows when a ovs is detected. - * - * @param device switch-type device - */ - void onOvsDetected(Device device); - - /** - * Remove default forwarding flows when a ovs is vanished. - * - * @param device switch-type device - */ - void onOvsVanished(Device device); - - /** - * Applies multicast flows and tunnel flows when a VM is detected. - * - * @param host a VM - */ - void onHostDetected(Host host); - - /** - * Remove multicast flows and tunnel flows when a VM is vanished. - * - * @param host a VM - */ - void onHostVanished(Host host); - -} diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java deleted file mode 100644 index 090ef0f1..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java +++ /dev/null @@ -1,672 +0,0 @@ -/* - * 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.vtn.impl; - -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; -import static org.onlab.util.Tools.groupedThreads; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ScheduledExecutorService; -import java.util.stream.Collectors; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.BridgeConfig; -import org.onosproject.net.behaviour.BridgeDescription; -import org.onosproject.net.behaviour.BridgeName; -import org.onosproject.net.behaviour.DefaultTunnelDescription; -import org.onosproject.net.behaviour.IpTunnelEndPoint; -import org.onosproject.net.behaviour.Pipeliner; -import org.onosproject.net.behaviour.PipelinerContext; -import org.onosproject.net.behaviour.TunnelConfig; -import org.onosproject.net.behaviour.TunnelDescription; -import org.onosproject.net.behaviour.TunnelEndPoint; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DefaultDriverData; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.FlowRuleService; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.FlowObjectiveStore; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.host.HostEvent; -import org.onosproject.net.host.HostListener; -import org.onosproject.net.host.HostService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtn.VTNService; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.slf4j.Logger; - -import com.google.common.collect.Sets; - -/** - * Provides implementation of VTNService. - */ -@Component(immediate = true) -@Service -public class VTNManager implements VTNService { - private final Logger log = getLogger(getClass()); - - private static final String APP_ID = "org.onosproject.app.vtn"; - private ScheduledExecutorService backgroundService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected HostService hostService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowRuleService flowRuleService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected StorageService storageService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected TenantNetworkService tenantNetworkService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected VirtualPortService virtualPortService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DriverService driverService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveStore flowObjectiveStore; - protected ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - private EventuallyConsistentMap<HostId, SegmentationId> binding; - private ApplicationId appId; - private HostListener hostListener = new InnerHostListener(); - private DeviceListener deviceListener = new InnerDeviceListener(); - private static final String IFACEID = "ifaceid"; - private static final String PORT_HEAD = "vxlan"; - private static final String DEFAULT_BRIDGE_NAME = "br-int"; - private static final String CONTROLLER_IP_KEY = "ipaddress"; - private static final int DEFAULT_MAC_PRIORITY = 0x0000; - private static final int MAC_PRIORITY = 0xffff; - private static final int DEFAULT_PORT_PRIORITY = 0x0000; - private static final int PORT_PRIORITY = 0xffff; - private static final String SWITCH_CHANNEL_ID = "channelId"; - private static final String DRIVER_NAME = "onosfw"; - - @Activate - public void activate() { - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API); - appId = coreService.registerApplication(APP_ID); - deviceService.addListener(deviceListener); - hostService.addListener(hostListener); - backgroundService = newSingleThreadScheduledExecutor(groupedThreads("onos-apps/vtn", - "manager-background")); - binding = storageService - .<HostId, SegmentationId>eventuallyConsistentMapBuilder() - .withName("all_tunnel").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - backgroundService.shutdown(); - binding.destroy(); - log.info("Stopped"); - } - - @Override - public void onServerDetected(Device device) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - DriverHandler handler = driverService.createHandler(device.id()); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - bridgeConfig.addBridge(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME)); - String ipAddress = device.annotations().value(CONTROLLER_IP_KEY); - IpAddress ip = IpAddress.valueOf(ipAddress); - Sets.newHashSet(devices).stream() - .filter(d -> Device.Type.CONTROLLER == d.type()) - .filter(d -> !device.id().equals(d.id())).forEach(d -> { - String ipAddress1 = d.annotations() - .value(CONTROLLER_IP_KEY); - IpAddress ip1 = IpAddress.valueOf(ipAddress1); - applyTunnelConfig(ip, ip1, handler); - DriverHandler handler1 = driverService - .createHandler(d.id()); - applyTunnelConfig(ip1, ip, handler1); - - }); - } - - @Override - public void onServerVanished(Device device) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - String ipAddress = device.annotations().value(CONTROLLER_IP_KEY); - IpAddress dst = IpAddress.valueOf(ipAddress); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER) - .filter(d -> !device.id().equals(d.id())).forEach(d -> { - String ipAddress1 = d.annotations() - .value(CONTROLLER_IP_KEY); - DriverHandler handler = driverService.createHandler(d.id()); - IpAddress src = IpAddress.valueOf(ipAddress1); - removeTunnelConfig(src, dst, handler); - }); - } - - private void applyTunnelConfig(IpAddress src, IpAddress dst, - DriverHandler handler) { - TunnelEndPoint tunnelAsSrc = IpTunnelEndPoint.ipTunnelPoint(src); - TunnelEndPoint tunnelAsDst = IpTunnelEndPoint.ipTunnelPoint(dst); - TunnelDescription tunnel = new DefaultTunnelDescription( - tunnelAsSrc, - tunnelAsDst, - TunnelDescription.Type.VXLAN, - null); - TunnelConfig config = handler.behaviour(TunnelConfig.class); - config.createTunnel(tunnel); - } - - private void removeTunnelConfig(IpAddress src, IpAddress dst, - DriverHandler handler) { - TunnelEndPoint tunnelAsSrc = IpTunnelEndPoint.ipTunnelPoint(src); - TunnelEndPoint tunnelAsDst = IpTunnelEndPoint.ipTunnelPoint(dst); - TunnelDescription tunnel = new DefaultTunnelDescription( - tunnelAsSrc, - tunnelAsDst, - TunnelDescription.Type.VXLAN, - null); - TunnelConfig config = handler.behaviour(TunnelConfig.class); - config.removeTunnel(tunnel); - } - - @Override - public void onOvsDetected(Device device) { - programMacDefaultRules(device.id(), appId, Objective.Operation.ADD); - programPortDefaultRules(device.id(), appId, Objective.Operation.ADD); - } - - @Override - public void onOvsVanished(Device device) { - programMacDefaultRules(device.id(), appId, Objective.Operation.REMOVE); - programPortDefaultRules(device.id(), appId, Objective.Operation.REMOVE); - } - - @Override - public void onHostDetected(Host host) { - String ifaceId = host.annotations().value(IFACEID); - DeviceId deviceId = host.location().deviceId(); - String currentControllerIp = getControllerIpOfSwitch(deviceId); - Iterable<Device> devices = deviceService.getAvailableDevices(); - VirtualPortId portId = VirtualPortId.portId(ifaceId); - VirtualPort port = virtualPortService.getPort(portId); - TenantNetwork network = tenantNetworkService - .getNetwork(port.networkId()); - String tunnelName = "vxlan-" + currentControllerIp; - binding.put(host.id(), network.segmentationId()); - List<Port> allPorts = deviceService.getPorts(deviceId); - PortNumber inPort = host.location().port(); - List<PortNumber> localVmPorts = getLocalPorts(deviceId, ifaceId); - List<PortNumber> localTunnelPorts = new ArrayList<>(); - Sets.newHashSet(allPorts.iterator()).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)).forEach(p -> { - if (p.annotations().value("portName").startsWith(PORT_HEAD)) { - localTunnelPorts.add(p.number()); - } - }); - - localVmPorts.forEach(lp -> programLocalBcastRules(deviceId, network.segmentationId(), lp, localVmPorts, - localTunnelPorts, appId, Objective.Operation.ADD)); - programLocalOut(deviceId, network.segmentationId(), inPort, host.mac(), - appId, Objective.Operation.ADD); - localTunnelPorts - .forEach(tp -> programTunnelFloodOut(deviceId, - network.segmentationId(), - tp, localVmPorts, - appId, - Objective.Operation.ADD)); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER).forEach(d -> { - DriverHandler handler = driverService.createHandler(d.id()); - BridgeConfig bridgeConfig = handler - .behaviour(BridgeConfig.class); - Collection<BridgeDescription> bridgeDescriptions = bridgeConfig - .getBridges(); - - Iterator<BridgeDescription> it = bridgeDescriptions - .iterator(); - if (it.hasNext()) { - BridgeDescription sw = it.next(); - Set<PortNumber> ports = bridgeConfig.getPortNumbers(); - ports.stream() - .filter(p -> p.name() - .equalsIgnoreCase(tunnelName)) - .forEach(p -> programTunnelOut(sw.deviceId(), - network.segmentationId(), p, - host.mac(), appId, - Objective.Operation.ADD)); - } - }); - programLocalIn(deviceId, network.segmentationId(), inPort, host.mac(), - appId, Objective.Operation.ADD); - localTunnelPorts - .forEach(tp -> programTunnelIn(deviceId, - network.segmentationId(), - tp, inPort, host.mac(), - appId, Objective.Operation.ADD)); - - } - - @Override - public void onHostVanished(Host host) { - String ifaceId = host.annotations().value(IFACEID); - SegmentationId segId = binding.remove(host.id()); - DeviceId deviceId = host.location().deviceId(); - String currentControllerIp = getControllerIpOfSwitch(deviceId); - Iterable<Device> devices = deviceService.getAvailableDevices(); - - String tunnelName = "vxlan-" + currentControllerIp; - List<Port> allPorts = deviceService.getPorts(deviceId); - PortNumber inPort = host.location().port(); - - List<PortNumber> localTunnelPorts = new ArrayList<>(); - Sets.newHashSet(allPorts.iterator()).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)).forEach(p -> { - if (p.annotations().value("portName").startsWith(PORT_HEAD)) { - localTunnelPorts.add(p.number()); - } - }); - - List<PortNumber> localVmPorts = getLocalPorts(deviceId, ifaceId); - localVmPorts.add(inPort); - localVmPorts.forEach(lp -> programLocalBcastRules(deviceId, segId, lp, localVmPorts, - localTunnelPorts, appId, Objective.Operation.REMOVE)); - programLocalOut(deviceId, segId, inPort, host.mac(), - appId, Objective.Operation.REMOVE); - localTunnelPorts - .forEach(tp -> programTunnelFloodOut(deviceId, - segId, - tp, localVmPorts, - appId, - Objective.Operation.REMOVE)); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER).forEach(d -> { - DriverHandler handler = driverService.createHandler(d.id()); - BridgeConfig bridgeConfig = handler - .behaviour(BridgeConfig.class); - Collection<BridgeDescription> bridgeDescriptions = bridgeConfig - .getBridges(); - - Iterator<BridgeDescription> it = bridgeDescriptions - .iterator(); - if (it.hasNext()) { - BridgeDescription sw = it.next(); - Set<PortNumber> ports = bridgeConfig.getPortNumbers(); - ports.stream() - .filter(p -> p.name() - .equalsIgnoreCase(tunnelName)) - .forEach(p -> programTunnelOut(sw.deviceId(), - segId, p, - host.mac(), appId, - Objective.Operation.REMOVE)); - } - }); - programLocalIn(deviceId, segId, inPort, host.mac(), - appId, Objective.Operation.REMOVE); - localTunnelPorts - .forEach(tp -> programTunnelIn(deviceId, - segId, - tp, inPort, host.mac(), - appId, Objective.Operation.REMOVE)); - } - - private class InnerDeviceListener implements DeviceListener { - - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - if (Device.Type.CONTROLLER == device.type() - && DeviceEvent.Type.DEVICE_ADDED == event.type()) { - backgroundService.execute(() -> onServerDetected(device)); - } else if (Device.Type.CONTROLLER == device.type() - && DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event - .type()) { - backgroundService.execute(() -> onServerVanished(device)); - } else if (Device.Type.SWITCH == device.type() - && DeviceEvent.Type.DEVICE_ADDED == event.type()) { - backgroundService.execute(() -> onOvsDetected(device)); - } else if (Device.Type.SWITCH == device.type() - && DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event - .type()) { - backgroundService.execute(() -> onOvsVanished(device)); - } else { - log.info("Do nothing for this device type"); - } - } - - } - - private class InnerHostListener implements HostListener { - - @Override - public void event(HostEvent event) { - Host host = event.subject(); - if (HostEvent.Type.HOST_ADDED == event.type()) { - backgroundService.execute(() -> onHostDetected(host)); - } else if (HostEvent.Type.HOST_REMOVED == event.type()) { - backgroundService.execute(() -> onHostVanished(host)); - } else if (HostEvent.Type.HOST_UPDATED == event.type()) { - backgroundService.execute(() -> { - onHostVanished(host); - onHostDetected(host); - }); - } - } - - } - - // Used to forward the flows to the local VM. - private void programLocalOut(DeviceId dpid, SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchTunnelId(Long.parseLong(segmentationId.toString())) - .matchEthDst(sourceMac).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setOutput(outPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - - } - - // Used to forward the flows into the VXLAN tunnel. - private void programTunnelOut(DeviceId dpid, SegmentationId segmentationId, - PortNumber tunnelOutPort, MacAddress dstMac, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - - .setOutput(tunnelOutPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - - } - - // Used to forward multicast flows to remote VMs of the same tenant via - // VXLAN tunnel. - private void programTunnelFloodOut(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber ofPortOut, - List<PortNumber> localVmPorts, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(ofPortOut) - - .add(Criteria.matchTunnelId(Long.parseLong(segmentationId - .toString()))).matchEthDst(MacAddress.BROADCAST) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - - for (PortNumber outPort : localVmPorts) { - treatment.setOutput(outPort); - } - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(deviceId, objective.add()); - } else { - flowServiceForward(deviceId, objective.remove()); - } - } - - // Applies default flows to mac table. - private void programMacDefaultRules(DeviceId dpid, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder().build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().drop() - .build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(DEFAULT_MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to forward the flows to the local VMs with the same tenant. - private void programLocalBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber inPort, - List<PortNumber> localVmPorts, - List<PortNumber> localTunnelPorts, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthDst(MacAddress.BROADCAST) - .add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - for (PortNumber outPort : localVmPorts) { - if (inPort != outPort) { - treatment.setOutput(outPort); - } - } - for (PortNumber outport : localTunnelPorts) { - treatment.setOutput(outport); - } - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(deviceId, objective.add()); - } else { - flowServiceForward(deviceId, objective.remove()); - } - } - - // Used to apply local entry flow. - private void programLocalIn(DeviceId dpid, SegmentationId segmentationId, - PortNumber inPort, MacAddress srcMac, - ApplicationId appid, Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthSrc(srcMac).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.add(Instructions.modTunnelId(Long.parseLong(segmentationId - .toString()))); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to forward the flows from the egress tunnel to the VM. - private void programTunnelIn(DeviceId dpid, SegmentationId segmentationId, - PortNumber tunnelInPort, PortNumber outPort, - MacAddress sourceMac, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(tunnelInPort).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Applies the default flows to port table. - private void programPortDefaultRules(DeviceId dpid, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder().build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(DEFAULT_PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to get channelId from the device annotations. - private String getControllerIpOfSwitch(DeviceId deviceId) { - Device device = deviceService.getDevice(deviceId); - String url = device.annotations().value(SWITCH_CHANNEL_ID); - return url.substring(0, url.lastIndexOf(":")); - } - - private Iterable<String> getIfaceIds(String ifaceId) { - VirtualPortId portId = VirtualPortId.portId(ifaceId); - VirtualPort port = virtualPortService.getPort(portId); - if (port == null) { - return Collections.emptyList(); - } - - TenantNetwork network = tenantNetworkService - .getNetwork(port.networkId()); - if (network == null) { - return Collections.emptyList(); - } - - Collection<VirtualPort> ports = virtualPortService - .getPorts(network.id()); - return ports.stream().map(p -> p.portId().portId()) - .collect(Collectors.toSet()); - } - - private List<PortNumber> getLocalPorts(DeviceId deviceId, String ifaceId) { - DriverHandler handler = driverService - .createHandler(getController(deviceId)); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - Iterable<String> ifaceIds = getIfaceIds(ifaceId); - return bridgeConfig.getLocalPorts(ifaceIds); - } - - private DeviceId getController(DeviceId deviceId) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - for (Device device : devices) { - if (device.type() == Device.Type.CONTROLLER && device.id() - .toString().contains(getControllerIpOfSwitch(deviceId))) { - return device.id(); - } - } - log.info("Can not find controller for device : {}", deviceId); - return null; - } - - //Used to apply flowRule - private void flowServiceForward(DeviceId deviceId, ForwardingObjective forwardingObjective) { - Driver driver = driverService.getDriver(DRIVER_NAME); - Pipeliner pipeLiner = driver.createBehaviour(new DefaultDriverData(driver, deviceId), Pipeliner.class); - if (pipeLiner != null) { - final PipelinerContext context = new InnerPipelineContext(); - pipeLiner.init(deviceId, context); - pipeLiner.forward(forwardingObjective); - } - } - - // Processing context for initializing pipeline driver behaviours. - private class InnerPipelineContext implements PipelinerContext { - @Override - public ServiceDirectory directory() { - return serviceDirectory; - } - - @Override - public FlowObjectiveStore store() { - return flowObjectiveStore; - } - } - -} diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java deleted file mode 100644 index f18dbf8a..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.impl; diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java deleted file mode 100644 index 371466c3..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn; diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java index 39df2cff..7915ce08 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java @@ -43,6 +43,8 @@ public final class DefaultFlowClassifier implements FlowClassifier { private static final int NULL_PORT = 0; private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "FlowClassifier id can not be null."; private static final String TENANT_ID_NOT_NULL = "Tenant id can not be null."; + private static final String NAME_NOT_NULL = "Name can not be null."; + private static final String ETHER_TYPE_NOT_NULL = "Ether Type can not be null."; /** * Constructor to create default flow classifier. @@ -160,11 +162,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { private FlowClassifierId flowClassifierId; private TenantId tenantId; private String name; - private boolean isFlowClassifierNameSet = false; private String description; private boolean isFlowClassifierDescriptionSet = false; private String etherType; - private boolean isEtherTypeSet = false; private String protocol; private boolean isProtocolSet = false; private int minSrcPortRange; @@ -189,9 +189,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { checkNotNull(flowClassifierId, FLOW_CLASSIFIER_ID_NOT_NULL); checkNotNull(tenantId, TENANT_ID_NOT_NULL); - String name = null; + checkNotNull(name, NAME_NOT_NULL); + checkNotNull(etherType, ETHER_TYPE_NOT_NULL); String description = null; - String etherType = null; String protocol = null; int minSrcPortRange = NULL_PORT; int maxSrcPortRange = NULL_PORT; @@ -202,15 +202,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { VirtualPortId srcPort = null; VirtualPortId dstPort = null; - if (isFlowClassifierNameSet) { - name = this.name; - } if (isFlowClassifierDescriptionSet) { description = this.description; } - if (isEtherTypeSet) { - etherType = this.etherType; - } if (isProtocolSet) { protocol = this.protocol; } @@ -259,7 +253,6 @@ public final class DefaultFlowClassifier implements FlowClassifier { @Override public Builder setName(String name) { this.name = name; - this.isFlowClassifierNameSet = true; return this; } @@ -273,7 +266,6 @@ public final class DefaultFlowClassifier implements FlowClassifier { @Override public Builder setEtherType(String etherType) { this.etherType = etherType; - this.isEtherTypeSet = true; return this; } diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java deleted file mode 100644 index 6b0d9a64..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.FlowClassifier; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultFlowClassifier class. - */ -public class DefaultFlowClassifierTest { - /** - * Checks that the DefaultFlowClassifier class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFlowClassifier.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two flow classifier objects. - final String name = "FlowClassifier1"; - final String description = "FlowClassifier1"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - // Create different classifier object. - final String name2 = "FlowClassifier2"; - final String description2 = "FlowClassifier2"; - final String ethType2 = "IPv6"; - final String protocol2 = "udp"; - final int minSrcPortRange2 = 5; - final int maxSrcPortRange2 = 10; - final int minDstPortRange2 = 5; - final int maxDstPortRange2 = 10; - final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3"); - final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4"); - - DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2) - .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2) - .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2) - .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2) - .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2).build(); - - new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultFlowClassifier object. - */ - @Test - public void testConstruction() { - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - assertThat(flowClassifierId, is(flowClassifier.flowClassifierId())); - assertThat(tenantId, is(flowClassifier.tenantId())); - assertThat(name, is(flowClassifier.name())); - assertThat(description, is(flowClassifier.description())); - assertThat(ethType, is(flowClassifier.etherType())); - assertThat(protocol, is(flowClassifier.protocol())); - assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange())); - assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange())); - assertThat(minDstPortRange, is(flowClassifier.minDstPortRange())); - assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange())); - assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix())); - assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix())); - assertThat(virtualSrcPort, is(flowClassifier.srcPort())); - assertThat(virtualDstPort, is(flowClassifier.dstPort())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java deleted file mode 100644 index 4f521836..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.FlowClassifierId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for FlowClassifierId class. - */ -public class FlowClassifierIdTest { - - final FlowClassifierId flowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId sameAsFlowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId flowClassifierId2 = FlowClassifierId - .of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the FlowClassifierId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FlowClassifierId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(flowClassifierId1, sameAsFlowClassifierId1) - .addEqualityGroup(flowClassifierId2).testEquals(); - } - - /** - * Checks the construction of a FlowClassifierId object. - */ - @Test - public void testConstruction() { - final String flowClassifierIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final FlowClassifierId flowClassifierId = FlowClassifierId.of(flowClassifierIdValue); - assertThat(flowClassifierId, is(notNullValue())); - assertThat(flowClassifierId.value(), is(UUID.fromString(flowClassifierIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java deleted file mode 100644 index b9ce73d8..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.DefaultPortChain; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortChain class. - */ -public class DefaultPortChainTest { - /** - * Checks that the DefaultPortChain class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortChain.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port chain objects. - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain1"; - final String description = "PortChain1"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - portChainBuilder = new DefaultPortChain.Builder(); - final PortChain samePortChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - // Create different port chain object. - final PortChainId portChainId2 = PortChainId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortChain2"; - final String description2 = "PortChain2"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups2 = new LinkedList<PortPairGroupId>(); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups2.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups2.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers2 = new LinkedList<FlowClassifierId>(); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers2.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers2.add(flowClassifierId); - - portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain2 = portChainBuilder.setId(portChainId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setPortPairGroups(portPairGroups2).setFlowClassifiers(flowClassifiers2) - .build(); - - new EqualsTester().addEqualityGroup(portChain1, samePortChain1).addEqualityGroup(portChain2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortChain object. - */ - @Test - public void testConstruction() { - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - assertThat(portChainId, is(portChain.portChainId())); - assertThat(tenantId, is(portChain.tenantId())); - assertThat(name, is(portChain.name())); - assertThat(description, is(portChain.description())); - assertThat(portPairGroups, is(portChain.portPairGroups())); - assertThat(flowClassifiers, is(portChain.flowClassifiers())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java deleted file mode 100644 index a87bdb99..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.vtnrsc.portchain; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortChainId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortChainId class. - */ -public class PortChainIdTest { - - final PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId sameAsPortChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId portChainId2 = PortChainId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortChainId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortChainId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portChainId1, sameAsPortChainId1).addEqualityGroup(portChainId2) - .testEquals(); - } - - /** - * Checks the construction of a PortChainId object. - */ - @Test - public void testConstruction() { - final String portChainIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortChainId portChainId = PortChainId.of(portChainIdValue); - assertThat(portChainId, is(notNullValue())); - assertThat(portChainId.value(), is(UUID.fromString(portChainIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java deleted file mode 100644 index 91e7ab37..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; - -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.DefaultPortPair; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortPair class. - */ -public class DefaultPortPairTest { - /** - * Checks that the DefaultPortPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPair.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port pair objects. - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair1"; - final String description = "PortPair1"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair samePortPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - // Create different port pair object. - final PortPairId portPairId2 = PortPairId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPair2"; - final String description2 = "PortPair2"; - final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345"; - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair2 = portPairBuilder.setId(portPairId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setIngress(ingress2).setEgress(egress2).build(); - - new EqualsTester().addEqualityGroup(portPair1, samePortPair1).addEqualityGroup(portPair2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortPair object. - */ - @Test - public void testConstruction() { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - assertThat(portPairId, is(portPair.portPairId())); - assertThat(tenantId, is(portPair.tenantId())); - assertThat(name, is(portPair.name())); - assertThat(description, is(portPair.description())); - assertThat(ingress, is(portPair.ingress())); - assertThat(egress, is(portPair.egress())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java deleted file mode 100644 index f176089e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.vtnrsc.portpair; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortPairId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortPairId class. - */ -public class PortPairIdTest { - - final PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId sameAsPortPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId portPairId2 = PortPairId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairId1, sameAsPortPairId1).addEqualityGroup(portPairId2).testEquals(); - } - - /** - * Checks the construction of a PortPairId object. - */ - @Test - public void testConstruction() { - final String portPairIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairId portPairId = PortPairId.of(portPairIdValue); - assertThat(portPairId, is(notNullValue())); - assertThat(portPairId.value(), is(UUID.fromString(portPairIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java deleted file mode 100644 index 2528fb29..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.DefaultPortPairGroup; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortPairGroup class. - */ -public class DefaultPortPairGroupTest { - /** - * Checks that the DefaultPortPairGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPairGroup.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port-pair-group objects. - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup1"; - final String description = "PortPairGroup1"; - // create port-pair-id list - final List<PortPairId> portPairList = new LinkedList<PortPairId>(); - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup samePortPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - // Create different port-pair-group object. - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPairGroup2"; - final String description2 = "PortPairGroup2"; - // create port-pair-id list - final List<PortPairId> portPairList2 = new LinkedList<PortPairId>(); - portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - - portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup2 = portPairGroupBuilder.setId(portPairGroupId2).setTenantId(tenantId2) - .setName(name2).setDescription(description2).setPortPairs(portPairList2).build(); - - new EqualsTester().addEqualityGroup(portPairGroup1, samePortPairGroup1).addEqualityGroup(portPairGroup2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultPortPairGroup object. - */ - @Test - public void testConstruction() { - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup"; - final String description = "PortPairGroup"; - // create port-pair-id list - final List<PortPairId> portPairList = new LinkedList<PortPairId>(); - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - assertThat(portPairGroupId, is(portPairGroup.portPairGroupId())); - assertThat(tenantId, is(portPairGroup.tenantId())); - assertThat(name, is(portPairGroup.name())); - assertThat(description, is(portPairGroup.description())); - assertThat(portPairList, is(portPairGroup.portPairs())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java deleted file mode 100644 index 25db9d2e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.vtnrsc.portpairgroup; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortPairGroupId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortPairGroupId class. - */ -public class PortPairGroupIdTest { - - final PortPairGroupId portPairGroupId1 = PortPairGroupId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId sameAsPortPairGroupId1 = PortPairGroupId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairGroupId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairGroupId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairGroupId1, sameAsPortPairGroupId1) - .addEqualityGroup(portPairGroupId2).testEquals(); - } - - /** - * Checks the construction of a PortPairGroupId object. - */ - @Test - public void testConstruction() { - final String portPairGroupIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairGroupId portPairGroupId = PortPairGroupId.of(portPairGroupIdValue); - assertThat(portPairGroupId, is(notNullValue())); - assertThat(portPairGroupId.value(), is(UUID.fromString(portPairGroupIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java deleted file mode 100644 index ce6b6c00..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.HashSet; -import java.util.Set; - -import org.junit.Test; -import org.onosproject.vtnrsc.RouterGateway; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.FixedIp; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for RouterGateway class. - */ -public class RouterGatewayTest { - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - final Set<FixedIp> fixedIpSet1 = new HashSet<>(); - final Set<FixedIp> fixedIpSet2 = new HashSet<>(); - - /** - * Checks that the RouterGateway class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterGateway.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - RouterGateway routerGateway1 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway2 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway3 = RouterGateway.routerGateway(networkId2, - true, - fixedIpSet2); - new EqualsTester().addEqualityGroup(routerGateway1, routerGateway2) - .addEqualityGroup(routerGateway3).testEquals(); - } - - /** - * Checks the construction of a RouterGateway object. - */ - @Test - public void testConstruction() { - RouterGateway routerGateway = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - assertThat(fixedIpSet1, is(notNullValue())); - assertThat(fixedIpSet1, is(routerGateway.externalFixedIps())); - assertThat(networkId1, is(notNullValue())); - assertThat(networkId1, is(routerGateway.networkId())); - assertThat(routerGateway.enableSnat(), is(true)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java deleted file mode 100644 index 3751c11a..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.RouterId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for RouterId class. - */ -public class RouterIdTest { - final RouterId routerId1 = RouterId.valueOf("1"); - final RouterId sameAsRouterId1 = RouterId.valueOf("1"); - final RouterId routerId2 = RouterId.valueOf("2"); - - /** - * Checks that the RouterId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(routerId1, sameAsRouterId1).addEqualityGroup(routerId2) - .testEquals(); - } - - /** - * Checks the construction of a RouterId object. - */ - @Test - public void testConstruction() { - final String routerIdValue = "s"; - final RouterId routerId = RouterId.valueOf(routerIdValue); - assertThat(routerId, is(notNullValue())); - assertThat(routerId.routerId(), is(routerIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java deleted file mode 100644 index 4ce4def2..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultAllocationPool; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultAllocationPool class. - */ -public class DefaultAllocationPoolTest { - - final IpAddress startIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress startIP2 = IpAddress.valueOf("192.168.1.2"); - final IpAddress endIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress endIP2 = IpAddress.valueOf("192.168.1.2"); - - /** - * Checks that the DefaultAllocationPool class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultAllocationPool.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - AllocationPool pool1 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool2 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool3 = new DefaultAllocationPool(startIP2, endIP2); - new EqualsTester().addEqualityGroup(pool1, pool2) - .addEqualityGroup(pool3).testEquals(); - } - - /** - * Checks the construction of a DefaultAllocationPool object. - */ - @Test - public void testConstruction() { - final AllocationPool apool = new DefaultAllocationPool(startIP1, endIP1); - assertThat(startIP1, is(apool.startIp())); - assertThat(endIP1, is(apool.endIp())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java deleted file mode 100644 index 2f751742..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.DefaultHostRoute; -import org.onosproject.vtnrsc.HostRoute; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultHostRoute class. - */ -public class DefaultHostRouteTest { - final IpAddress nexthop1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress nexthop2 = IpAddress.valueOf("192.168.1.2"); - final IpPrefix destination1 = IpPrefix.valueOf("1.1.1.1/1"); - final IpPrefix destination2 = IpPrefix.valueOf("1.1.1.1/2"); - - /** - * Checks that the DefaultHostRoute class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultHostRoute.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - HostRoute route1 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route2 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route3 = new DefaultHostRoute(nexthop2, destination2); - new EqualsTester().addEqualityGroup(route1, route2) - .addEqualityGroup(route3).testEquals(); - } - - /** - * Checks the construction of a DefaultHostRoute object. - */ - @Test - public void testConstruction() { - final HostRoute host = new DefaultHostRoute(nexthop1, destination1); - assertThat(nexthop1, is(host.nexthop())); - assertThat(destination1, is(host.destination())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java deleted file mode 100644 index d18dd41a..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SubnetId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SubnetId class. - */ -public class SubnetIdTest { - - final SubnetId subnetId1 = SubnetId.subnetId("1"); - final SubnetId sameAsSubnetId1 = SubnetId.subnetId("1"); - final SubnetId subnetId2 = SubnetId.subnetId("2"); - - /** - * Checks that the SubnetId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SubnetId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(subnetId1, sameAsSubnetId1).addEqualityGroup(subnetId2) - .testEquals(); - } - - /** - * Checks the construction of a SubnetId object. - */ - @Test - public void testConstruction() { - final String subnetIdValue = "s"; - final SubnetId subnetId = SubnetId.subnetId(subnetIdValue); - assertThat(subnetId, is(notNullValue())); - assertThat(subnetId.subnetId(), is(subnetIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java deleted file mode 100644 index 742d5933..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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.vtnrsc.tenantnetwork; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultNeutronNetwork class. - */ -public class DefaultNeutronNetworkTest { - - private String networkIdStr1 = "123"; - private String networkIdStr2 = "234"; - private String physicalNetworkStr = "1234"; - private String tenantIdStr = "345"; - private String segmentationIdStr = "1"; - private String name = "456"; - - /** - * Checks that the DefaultNeutronNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultTenantNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquality() { - TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr1); - TenantNetworkId networkid2 = TenantNetworkId.networkId(networkIdStr2); - PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - SegmentationId segmentationID = SegmentationId - .segmentationId(segmentationIdStr); - TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p2 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p3 = new DefaultTenantNetwork(networkid2, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java deleted file mode 100644 index e101795e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PhysicalNetwork; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for PhysicalNetwork class. - */ -public class PhysicalNetworkTest { - - final PhysicalNetwork physicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork sameAsPhysicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork physicalNetwork2 = PhysicalNetwork.physicalNetwork("2"); - - /** - * Checks that the PhysicalNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PhysicalNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(physicalNetwork1, sameAsPhysicalNetwork1) - .addEqualityGroup(physicalNetwork2).testEquals(); - } - - /** - * Checks the construction of a PhysicalNetwork object. - */ - @Test - public void testConstruction() { - final String physicalNetworkValue = "s"; - final PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkValue); - assertThat(physicalNetwork, is(notNullValue())); - assertThat(physicalNetwork.physicalNetwork(), is(physicalNetworkValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java deleted file mode 100644 index dea7baf6..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SegmentationId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SegmentationId class. - */ -public class SegmentationIdTest { - - final SegmentationId segmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId sameAsSegmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId segmentationID2 = SegmentationId.segmentationId("2"); - - /** - * Checks that the SegmentationId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SegmentationId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(segmentationID1, sameAsSegmentationID1) - .addEqualityGroup(segmentationID2).testEquals(); - } - - /** - * Checks the construction of a segmentationId object. - */ - @Test - public void testConstruction() { - final String segmentationIdValue = "s"; - final SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdValue); - assertThat(segmentationId, is(notNullValue())); - assertThat(segmentationId.segmentationId(), is(segmentationIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java deleted file mode 100644 index e9216383..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.TenantId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for TenantId class. - */ -public class TenantIdTest { - - final TenantId tenantId1 = TenantId.tenantId("1"); - final TenantId sameAsTenantId1 = TenantId.tenantId("1"); - final TenantId tenantId2 = TenantId.tenantId("2"); - - /** - * Checks that the TenantId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(tenantId1, sameAsTenantId1).addEqualityGroup(tenantId2) - .testEquals(); - } - - /** - * Checks the construction of a TenantId object. - */ - @Test - public void testConstruction() { - final String tenantIdValue = "s"; - final TenantId tenantId = TenantId.tenantId(tenantIdValue); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId.tenantId(), is(tenantIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java deleted file mode 100644 index 8271b51c..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.TenantNetworkId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for TenantNetworkId class. - */ -public class TenantNetworkIdTest { - - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId sameAsnetworkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - - /** - * Checks that the TenantNetworkId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantNetworkId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(networkId1, sameAsnetworkId1) - .addEqualityGroup(networkId2).testEquals(); - } - - /** - * Checks the construction of a TenantNetworkId object. - */ - @Test - public void testConstruction() { - final String networkIdValue = "s"; - final TenantNetworkId networkId = TenantNetworkId.networkId(networkIdValue); - assertThat(networkId, is(notNullValue())); - assertThat(networkId.networkId(), is(networkIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java deleted file mode 100644 index dabe5896..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.vtnrsc.AllowedAddressPair; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for AllowedAddressPair class. - */ -public class AllowedAddressPairTest { - - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.0.2"); - final MacAddress mac1 = MacAddress.valueOf("fa:16:3e:76:83:88"); - final MacAddress mac2 = MacAddress.valueOf("aa:16:3e:76:83:88"); - - /** - * Checks that the AllowedAddressPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(AllowedAddressPair.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - AllowedAddressPair p1 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p2 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p3 = AllowedAddressPair - .allowedAddressPair(ip2, mac2); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } - - /** - * Checks the construction of a AllowedAddressPair object. - */ - @Test - public void testConstruction() { - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(allowedAddressPair.ip())); - assertThat(mac1, is(notNullValue())); - assertThat(mac1, is(allowedAddressPair.mac())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java deleted file mode 100644 index 8a0c8004..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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.vtnrsc.virtualport; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.Map; -import java.util.Set; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultVirtualPort class. - */ -public class DefaultVirtualPortTest { - - private Set<FixedIp> fixedIps; - private Map<String, String> propertyMap; - private Set<AllowedAddressPair> allowedAddressPairs; - private Set<SecurityGroup> securityGroups; - private VirtualPortId id1; - private VirtualPortId id2; - private String macAddressStr = "fa:12:3e:56:ee:a2"; - private String ipAddress = "10.1.1.1"; - private String deviceStr = "of:000000000000001"; - private String tenantIdStr = "123"; - private String portId1 = "1241"; - private String portId2 = "1242"; - private String tenantNetworkId = "1234567"; - private String subnet = "1212"; - private String hostIdStr = "fa:e2:3e:56:ee:a2"; - - private void initVirtualPortId() { - id1 = VirtualPortId.portId(portId1); - id2 = VirtualPortId.portId(portId2); - } - - private void initFixedIpSet() { - FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet), - IpAddress.valueOf(ipAddress)); - fixedIps = Sets.newHashSet(); - fixedIps.add(fixedIp); - } - - private void initPropertyMap() { - String deviceOwner = "james"; - propertyMap = Maps.newHashMap(); - propertyMap.putIfAbsent("deviceOwner", deviceOwner); - } - - private void initAddressPairSet() { - allowedAddressPairs = Sets.newHashSet(); - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(IpAddress.valueOf(ipAddress), - MacAddress.valueOf(macAddressStr)); - allowedAddressPairs.add(allowedAddressPair); - } - - private void initSecurityGroupSet() { - securityGroups = Sets.newHashSet(); - } - - /** - * Checks that the DefaultVirtualPort class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - initVirtualPortId(); - initFixedIpSet(); - initPropertyMap(); - initAddressPairSet(); - initSecurityGroupSet(); - TenantNetworkId networkId = TenantNetworkId.networkId(tenantNetworkId); - MacAddress macAddress = MacAddress.valueOf(macAddressStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - DeviceId deviceId = DeviceId.deviceId(deviceStr); - BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr); - - VirtualPort d1 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d2 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d3 = new DefaultVirtualPort(id2, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - new EqualsTester().addEqualityGroup(d1, d2).addEqualityGroup(d3) - .testEquals(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java deleted file mode 100644 index 1e33da09..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SubnetId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for FixedIp class. - */ -public class FixedIpTest { - - final SubnetId subnetId1 = SubnetId.subnetId("lef11-95w-4er-9c9c"); - final SubnetId subnetId2 = SubnetId.subnetId("lefaa-95w-4er-9c9c"); - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.1.1"); - - /** - * Checks that the FixedIp class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FixedIp.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - FixedIp fixedIp1 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp2 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp3 = FixedIp.fixedIp(subnetId2, ip2); - new EqualsTester().addEqualityGroup(fixedIp1, fixedIp2) - .addEqualityGroup(fixedIp3).testEquals(); - } - - /** - * Checks the construction of a FixedIp object. - */ - @Test - public void testConstruction() { - FixedIp fixedIp = FixedIp.fixedIp(subnetId1, ip1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(fixedIp.ip())); - assertThat(subnetId1, is(notNullValue())); - assertThat(subnetId1, is(fixedIp.subnetId())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java deleted file mode 100644 index 8c04e499..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SecurityGroup; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SecurityGroup class. - */ -public class SecurityGroupTest { - - final SecurityGroup securityGroup1 = SecurityGroup.securityGroup("1"); - final SecurityGroup sameAssecurityGroup = SecurityGroup.securityGroup("1"); - final SecurityGroup securityGroup2 = SecurityGroup.securityGroup("2"); - - /** - * Checks that the SecurityGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(securityGroup1, sameAssecurityGroup) - .addEqualityGroup(securityGroup2).testEquals(); - } - - /** - * Checks the construction of a SecurityGroup object. - */ - @Test - public void testConstruction() { - final String securityGroupValue = "1"; - final SecurityGroup securityGroup = SecurityGroup.securityGroup(securityGroupValue); - assertThat(securityGroup, is(notNullValue())); - assertThat(securityGroup.securityGroup(), is(securityGroupValue)); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java deleted file mode 100644 index 2d63e91c..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for VirtualPortId class. - */ -public class VirtualPortIdTest { - - final VirtualPortId virtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId sameAsVirtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId virtualPortId2 = VirtualPortId.portId("2"); - - /** - * Checks that the VirtualPortId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(VirtualPortId.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(virtualPortId1, sameAsVirtualPortId1) - .addEqualityGroup(virtualPortId2).testEquals(); - } - - /** - * Checks the construction of a VirtualPortId object. - */ - @Test - public void testConstruction() { - final String vPortIdValue = "aaa"; - final VirtualPortId virtualPortId = VirtualPortId.portId(vPortIdValue); - assertThat(virtualPortId, is(notNullValue())); - assertThat(virtualPortId.portId(), is(vPortIdValue)); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java index 7a57c0ab..b0e2f38d 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java @@ -15,15 +15,12 @@ */ package org.onosproject.vtnweb.resources; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static org.onlab.util.Tools.nullIsNotFound; import static javax.ws.rs.core.Response.Status.NOT_FOUND; +import static javax.ws.rs.core.Response.Status.OK; +import static org.onlab.util.Tools.nullIsNotFound; import java.io.IOException; import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.UUID; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -36,13 +33,17 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.onosproject.rest.AbstractWebResource; import org.onosproject.vtnrsc.FlowClassifier; import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.rest.AbstractWebResource; import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; import org.onosproject.vtnweb.web.FlowClassifierCodec; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; /** @@ -51,73 +52,51 @@ import com.fasterxml.jackson.databind.node.ObjectNode; @Path("flow_classifiers") public class FlowClassifierWebResource extends AbstractWebResource { + private final Logger log = LoggerFactory.getLogger(FlowClassifierWebResource.class); + final FlowClassifierService service = get(FlowClassifierService.class); - final ObjectNode root = mapper().createObjectNode(); public static final String FLOW_CLASSIFIER_NOT_FOUND = "Flow classifier not found"; /** - * Get all flow classifiers created. Returns list of all flow classifiers - * created. + * Get all flow classifiers created. * * @return 200 OK */ @GET @Produces(MediaType.APPLICATION_JSON) public Response getFlowClassifiers() { - Iterable<FlowClassifier> flowClassifiers = service.getFlowClassifiers(); + final Iterable<FlowClassifier> flowClassifiers = service.getFlowClassifiers(); ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("flow_classifiers", new FlowClassifierCodec().encode(flowClassifiers, this)); + ArrayNode flowClassifierEntry = result.putArray("flow_classifiers"); + if (flowClassifiers != null) { + for (final FlowClassifier flowClassifier : flowClassifiers) { + flowClassifierEntry.add(new FlowClassifierCodec().encode(flowClassifier, this)); + } + } return ok(result.toString()).build(); } /** - * Get details of a flow classifier. Returns details of a specified flow - * classifier id. + * Get details of a flow classifier. * * @param id flow classifier id - * @return 200 OK + * @return 200 OK , 404 if given identifier does not exist */ @GET @Path("{flow_id}") @Produces(MediaType.APPLICATION_JSON) public Response getFlowClassifier(@PathParam("flow_id") String id) { - if (!service.hasFlowClassifier(FlowClassifierId.of(UUID.fromString(id)))) { + if (!service.hasFlowClassifier(FlowClassifierId.of(id))) { return Response.status(NOT_FOUND).entity(FLOW_CLASSIFIER_NOT_FOUND).build(); } - FlowClassifier flowClassifier = nullIsNotFound( - service.getFlowClassifier(FlowClassifierId.of(UUID.fromString(id))), + FlowClassifier flowClassifier = nullIsNotFound(service.getFlowClassifier(FlowClassifierId.of(id)), FLOW_CLASSIFIER_NOT_FOUND); ObjectNode result = new ObjectMapper().createObjectNode(); result.set("flow_classifier", new FlowClassifierCodec().encode(flowClassifier, this)); - return ok(result.toString()).build(); - } - /** - * Creates and stores a new flow classifier. - * - * @param flowClassifierId flow classifier identifier - * @param stream flow classifier from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Path("{flow_id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createFlowClassifier(@PathParam("flow_id") String flowClassifierId, InputStream stream) { - URI location; - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); - service.createFlowClassifier(flowClassifier); - location = new URI(flowClassifierId); - } catch (IOException | URISyntaxException ex) { - throw new IllegalArgumentException(ex); - } - return Response.created(location).build(); + return ok(result.toString()).build(); } /** @@ -125,32 +104,32 @@ public class FlowClassifierWebResource extends AbstractWebResource { * * @param stream flow classifier from JSON * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid + * BAD_REQUEST if the JSON is invalid */ @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response createFlowClassifier(InputStream stream) { - URI location; try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); - service.createFlowClassifier(flowClassifier); - location = new URI(flowClassifier.flowClassifierId().toString()); - } catch (IOException | URISyntaxException ex) { + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode flow = jsonTree.get("flow_classifier"); + + FlowClassifier flowClassifier = new FlowClassifierCodec().decode((ObjectNode) flow, this); + Boolean issuccess = nullIsNotFound(service.createFlowClassifier(flowClassifier), FLOW_CLASSIFIER_NOT_FOUND); + return Response.status(OK).entity(issuccess.toString()).build(); + } catch (IOException ex) { + log.error("Exception while creating flow classifier {}.", ex.toString()); throw new IllegalArgumentException(ex); } - return Response.created(location).build(); } /** - * Update details of a flow classifier. Update details of a specified flow - * classifier id. + * Update details of a flow classifier. * * @param id flow classifier id * @param stream InputStream - * @return 200 OK + * @return 200 OK, 404 if given identifier does not exist */ @PUT @Path("{flow_id}") @@ -158,35 +137,29 @@ public class FlowClassifierWebResource extends AbstractWebResource { @Consumes(MediaType.APPLICATION_JSON) public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); + + JsonNode jsonTree = mapper().readTree(stream); + JsonNode flow = jsonTree.get("flow_classifier"); + FlowClassifier flowClassifier = new FlowClassifierCodec().decode((ObjectNode) flow, this); Boolean result = nullIsNotFound(service.updateFlowClassifier(flowClassifier), FLOW_CLASSIFIER_NOT_FOUND); - if (!result) { - return Response.status(204).entity(FLOW_CLASSIFIER_NOT_FOUND).build(); - } - return Response.status(203).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()).build(); + return Response.status(OK).entity(result.toString()).build(); + } catch (IOException e) { + log.error("Update flow classifier failed because of exception {}.", e.toString()); + throw new IllegalArgumentException(e); } } /** - * Delete details of a flow classifier. Delete details of a specified flow - * classifier id. + * Delete details of a flow classifier. * * @param id flow classifier id - * @return 200 OK - * @throws IOException when input doesn't match. */ @Path("{flow_id}") @DELETE - public Response deleteFlowClassifier(@PathParam("flow_id") String id) throws IOException { - try { - FlowClassifierId flowClassifierId = FlowClassifierId.of(UUID.fromString(id)); - service.removeFlowClassifier(flowClassifierId); - return Response.status(201).entity("SUCCESS").build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()).build(); - } + public void deleteFlowClassifier(@PathParam("flow_id") String id) { + log.debug("Deletes flow classifier by identifier {}.", id); + FlowClassifierId flowClassifierId = FlowClassifierId.of(id); + Boolean issuccess = nullIsNotFound(service.removeFlowClassifier(flowClassifierId), FLOW_CLASSIFIER_NOT_FOUND); + } } diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java index 8bf459c2..b9012898 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java @@ -42,7 +42,9 @@ import org.onosproject.vtnweb.web.PortPairCodec; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; /** @@ -67,8 +69,13 @@ public class PortPairWebResource extends AbstractWebResource { public Response getPortPairs() { Iterable<PortPair> portPairs = service.getPortPairs(); ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("port_pairs", new PortPairCodec().encode(portPairs, this)); - return ok(result).build(); + ArrayNode portPairEntry = result.putArray("port_pairs"); + if (portPairs != null) { + for (final PortPair portPair : portPairs) { + portPairEntry.add(new PortPairCodec().encode(portPair, this)); + } + } + return ok(result.toString()).build(); } /** @@ -80,18 +87,15 @@ public class PortPairWebResource extends AbstractWebResource { @GET @Path("{pair_id}") @Produces(MediaType.APPLICATION_JSON) - public Response getPortPair(@PathParam("portPairId") String id) { + public Response getPortPair(@PathParam("pair_id") String id) { if (!service.exists(PortPairId.of(id))) { - return Response.status(NOT_FOUND) - .entity(PORT_PAIR_NOT_FOUND).build(); + return Response.status(NOT_FOUND).entity(PORT_PAIR_NOT_FOUND).build(); } - PortPair portPair = nullIsNotFound(service.getPortPair(PortPairId.of(id)), - PORT_PAIR_NOT_FOUND); - + PortPair portPair = nullIsNotFound(service.getPortPair(PortPairId.of(id)), PORT_PAIR_NOT_FOUND); ObjectNode result = new ObjectMapper().createObjectNode(); result.set("port_pair", new PortPairCodec().encode(portPair, this)); - return ok(result).build(); + return ok(result.toString()).build(); } /** @@ -106,11 +110,11 @@ public class PortPairWebResource extends AbstractWebResource { @Produces(MediaType.APPLICATION_JSON) public Response createPortPair(InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - PortPair portPair = codec(PortPair.class).decode(jsonTree, this); - Boolean isSuccess = nullIsNotFound(service.createPortPair(portPair), - PORT_PAIR_NOT_FOUND); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode port = jsonTree.get("port_pair"); + PortPair portPair = new PortPairCodec().decode((ObjectNode) port, this); + Boolean isSuccess = nullIsNotFound(service.createPortPair(portPair), PORT_PAIR_NOT_FOUND); return Response.status(OK).entity(isSuccess.toString()).build(); } catch (IOException e) { log.error("Exception while creating port pair {}.", e.toString()); @@ -132,8 +136,10 @@ public class PortPairWebResource extends AbstractWebResource { public Response updatePortPair(@PathParam("pair_id") String id, final InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - PortPair portPair = codec(PortPair.class).decode(jsonTree, this); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode port = jsonTree.get("port_pair"); + PortPair portPair = new PortPairCodec().decode((ObjectNode) port, this); Boolean isSuccess = nullIsNotFound(service.updatePortPair(portPair), PORT_PAIR_NOT_FOUND); return Response.status(OK).entity(isSuccess.toString()).build(); } catch (IOException e) { @@ -152,8 +158,7 @@ public class PortPairWebResource extends AbstractWebResource { public void deletePortPair(@PathParam("pair_id") String id) { PortPairId portPairId = PortPairId.of(id); - Boolean isSuccess = nullIsNotFound(service.removePortPair(portPairId), - PORT_PAIR_NOT_FOUND); + Boolean isSuccess = nullIsNotFound(service.removePortPair(portPairId), PORT_PAIR_NOT_FOUND); if (!isSuccess) { log.debug("Port pair identifier {} does not exist", id); } diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java index 4c17633c..a18ca362 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java @@ -18,16 +18,14 @@ package org.onosproject.vtnweb.web; import static com.google.common.base.Preconditions.checkNotNull; import static org.onlab.util.Tools.nullIsIllegal; -import java.util.UUID; - import org.onlab.packet.IpPrefix; import org.onosproject.codec.CodecContext; import org.onosproject.codec.JsonCodec; import org.onosproject.vtnrsc.DefaultFlowClassifier; import org.onosproject.vtnrsc.FlowClassifier; import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; import org.onosproject.vtnrsc.TenantId; +import org.onosproject.vtnrsc.VirtualPortId; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -40,7 +38,7 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { private static final String TENANT_ID = "tenant_id"; private static final String NAME = "name"; private static final String DESCRIPTION = "description"; - private static final String ETHER_TYPE = "etherType"; + private static final String ETHER_TYPE = "ethertype"; private static final String PROTOCOL = "protocol"; private static final String MIN_SRC_PORT_RANGE = "source_port_range_min"; private static final String MAX_SRC_PORT_RANGE = "source_port_range_max"; @@ -62,7 +60,7 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { String flowClassifierId = nullIsIllegal(json.get(FLOW_CLASSIFIER_ID), FLOW_CLASSIFIER_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setFlowClassifierId(FlowClassifierId.of(UUID.fromString(flowClassifierId))); + resultBuilder.setFlowClassifierId(FlowClassifierId.of(flowClassifierId)); String tenantId = nullIsIllegal(json.get(TENANT_ID), TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setTenantId(TenantId.tenantId(tenantId)); @@ -70,44 +68,46 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { String flowClassiferName = nullIsIllegal(json.get(NAME), NAME + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setName(flowClassiferName); - String flowClassiferDescription = nullIsIllegal(json.get(DESCRIPTION), DESCRIPTION + MISSING_MEMBER_MESSAGE) - .asText(); + String flowClassiferDescription = (json.get(DESCRIPTION)).asText(); resultBuilder.setDescription(flowClassiferDescription); String etherType = nullIsIllegal(json.get(ETHER_TYPE), ETHER_TYPE + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setEtherType(etherType); - String protocol = nullIsIllegal(json.get(PROTOCOL), PROTOCOL + MISSING_MEMBER_MESSAGE).asText(); + String protocol = (json.get(PROTOCOL)).asText(); resultBuilder.setProtocol(protocol); - int minSrcPortRange = nullIsIllegal(json.get(MIN_SRC_PORT_RANGE), MIN_SRC_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt(); resultBuilder.setMinSrcPortRange(minSrcPortRange); - int maxSrcPortRange = nullIsIllegal(json.get(MAX_SRC_PORT_RANGE), MAX_SRC_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int maxSrcPortRange = (json.get(MAX_SRC_PORT_RANGE)).asInt(); resultBuilder.setMaxSrcPortRange(maxSrcPortRange); - int minDstPortRange = nullIsIllegal(json.get(MIN_DST_PORT_RANGE), MIN_DST_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int minDstPortRange = (json.get(MIN_DST_PORT_RANGE)).asInt(); resultBuilder.setMinDstPortRange(minDstPortRange); - int maxDstPortRange = nullIsIllegal(json.get(MAX_DST_PORT_RANGE), MAX_DST_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int maxDstPortRange = (json.get(MAX_DST_PORT_RANGE)).asInt(); resultBuilder.setMaxDstPortRange(maxDstPortRange); - String srcIpPrefix = nullIsIllegal(json.get(SRC_IP_PREFIX), SRC_IP_PREFIX + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); - - String dstIpPrefix = nullIsIllegal(json.get(DST_IP_PREFIX), DST_IP_PREFIX + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); + String srcIpPrefix = (json.get(SRC_IP_PREFIX)).asText(); + if (!srcIpPrefix.isEmpty()) { + resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); + } - String srcPort = nullIsIllegal(json.get(SRC_PORT), SRC_PORT + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); + String dstIpPrefix = (json.get(DST_IP_PREFIX)).asText(); + if (!dstIpPrefix.isEmpty()) { + resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); + } - String dstPort = nullIsIllegal(json.get(DST_PORT), DST_PORT + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); + String srcPort = json.get(SRC_PORT) != null ? (json.get(SRC_PORT)).asText() : ""; + if (!srcPort.isEmpty()) { + resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); + } + String dstPort = json.get(DST_PORT) != null ? (json.get(DST_PORT)).asText() : ""; + if (!dstPort.isEmpty()) { + resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); + } return resultBuilder.build(); } @@ -115,20 +115,20 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { public ObjectNode encode(FlowClassifier flowClassifier, CodecContext context) { checkNotNull(flowClassifier, "flowClassifier cannot be null"); ObjectNode result = context.mapper().createObjectNode() - .put("FLOW_CLASSIFIER_ID", flowClassifier.flowClassifierId().toString()) - .put("TENANT_ID", flowClassifier.tenantId().toString()) - .put("NAME", flowClassifier.name()) - .put("DESCRIPTION", flowClassifier.description()) - .put("ETHER_TYPE", flowClassifier.etherType()) - .put("PROTOCOL", flowClassifier.protocol()) - .put("MIN_SRC_PORT_RANGE", flowClassifier.minSrcPortRange()) - .put("MAX_SRC_PORT_RANGE", flowClassifier.maxSrcPortRange()) - .put("MIN_DST_PORT_RANGE", flowClassifier.minDstPortRange()) - .put("MAX_DST_PORT_RANGE", flowClassifier.maxDstPortRange()) - .put("SRC_IP_PREFIX", flowClassifier.srcIpPrefix().toString()) - .put("DST_IP_PREFIX", flowClassifier.dstIpPrefix().toString()) - .put("SRC_PORT", flowClassifier.srcPort().toString()) - .put("DST_PORT", flowClassifier.dstPort().toString()); + .put(FLOW_CLASSIFIER_ID, flowClassifier.flowClassifierId().toString()) + .put(TENANT_ID, flowClassifier.tenantId().toString()) + .put(NAME, flowClassifier.name()) + .put(DESCRIPTION, flowClassifier.description()) + .put(ETHER_TYPE, flowClassifier.etherType()) + .put(PROTOCOL, flowClassifier.protocol()) + .put(MIN_SRC_PORT_RANGE, flowClassifier.minSrcPortRange()) + .put(MAX_SRC_PORT_RANGE, flowClassifier.maxSrcPortRange()) + .put(MIN_DST_PORT_RANGE, flowClassifier.minDstPortRange()) + .put(MAX_DST_PORT_RANGE, flowClassifier.maxDstPortRange()) + .put(SRC_IP_PREFIX, flowClassifier.srcIpPrefix().toString()) + .put(DST_IP_PREFIX, flowClassifier.dstIpPrefix().toString()) + .put(SRC_PORT, flowClassifier.srcPort().toString()) + .put(DST_PORT, flowClassifier.dstPort().toString()); return result; } } diff --git a/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java b/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java deleted file mode 100644 index 1f686aeb..00000000 --- a/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java +++ /dev/null @@ -1,545 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.xosintegration; - -import com.eclipsesource.json.JsonArray; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.Maps; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientHandlerException; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.VlanId; -import org.onlab.util.Tools; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.util.Dictionary; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static com.google.common.net.MediaType.JSON_UTF_8; -import static java.net.HttpURLConnection.HTTP_CREATED; -import static java.net.HttpURLConnection.HTTP_NO_CONTENT; -import static java.net.HttpURLConnection.HTTP_OK; -import static org.slf4j.LoggerFactory.getLogger; - - -/** - * XOS interface application. - */ -@Component(immediate = true) -@Service -public class OnosXOSIntegrationManager implements VoltTenantService { - private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME = - "xosServerAddress"; - private static final String XOS_SERVER_PORT_PROPERTY_NAME = - "xosServerPort"; - private static final String XOS_PROVIDER_SERVICE_PROPERTY_NAME = - "xosProviderService"; - - private static final String TEST_XOS_SERVER_ADDRESS = "10.254.1.22"; - private static final int TEST_XOS_SERVER_PORT = 8000; - private static final String XOS_TENANT_BASE_URI = "/xoslib/volttenant/"; - private static final int TEST_XOS_PROVIDER_SERVICE = 1; - - private static final int PRIORITY = 50000; - private static final DeviceId FABRIC_DEVICE_ID = DeviceId.deviceId("of:5e3e486e73000187"); - private static final PortNumber FABRIC_OLT_CONNECT_POINT = PortNumber.portNumber(2); - private static final PortNumber FABRIC_VCPE_CONNECT_POINT = PortNumber.portNumber(3); - private static final String FABRIC_CONTROLLER_ADDRESS = "10.0.3.136"; - private static final int FABRIC_SERVER_PORT = 8181; - private static final String FABRIC_BASE_URI = "/onos/cordfabric/vlans/add"; - - private static final DeviceId OLT_DEVICE_ID = DeviceId.deviceId("of:90e2ba82f97791e9"); - private static final int OLT_UPLINK_PORT = 129; - - private static final ConnectPoint FABRIC_PORT = new ConnectPoint( - DeviceId.deviceId("of:000090e2ba82f974"), - PortNumber.portNumber(2)); - - private final Logger log = getLogger(getClass()); - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - - @Property(name = XOS_SERVER_ADDRESS_PROPERTY_NAME, - value = TEST_XOS_SERVER_ADDRESS, - label = "XOS Server address") - protected String xosServerAddress = TEST_XOS_SERVER_ADDRESS; - - @Property(name = XOS_SERVER_PORT_PROPERTY_NAME, - intValue = TEST_XOS_SERVER_PORT, - label = "XOS Server port") - protected int xosServerPort = TEST_XOS_SERVER_PORT; - - @Property(name = XOS_PROVIDER_SERVICE_PROPERTY_NAME, - intValue = TEST_XOS_PROVIDER_SERVICE, - label = "XOS Provider Service") - protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE; - - private ApplicationId appId; - private Map<String, ConnectPoint> nodeToPort; - private Map<Long, Short> portToVlan; - private Map<ConnectPoint, String> portToSsid; - - @Activate - public void activate(ComponentContext context) { - log.info("XOS app is starting"); - cfgService.registerProperties(getClass()); - appId = coreService.registerApplication("org.onosproject.xosintegration"); - - setupMap(); - - readComponentConfiguration(context); - - log.info("XOS({}) started", appId.id()); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - log.info("XOS({}) stopped", appId.id()); - } - - @Modified - public void modified(ComponentContext context) { - readComponentConfiguration(context); - } - - private void setupMap() { - nodeToPort = Maps.newHashMap(); - - nodeToPort.put("cordcompute01.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, - PortNumber.portNumber(4))); - - nodeToPort.put("cordcompute02.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, - PortNumber.portNumber(3))); - - portToVlan = Maps.newHashMap(); - portToVlan.putIfAbsent(1L, (short) 201); - portToVlan.putIfAbsent(6L, (short) 401); - - portToSsid = Maps.newHashMap(); - portToSsid.put(new ConnectPoint(OLT_DEVICE_ID, PortNumber.portNumber(1)), "0"); - portToSsid.put(new ConnectPoint(FABRIC_DEVICE_ID, PortNumber.portNumber(6)), "1"); - } - - /** - * Converts a JSON representation of a tenant into a tenant object. - * - * @param jsonTenant JSON object representing the tenant - * @return volt tenant object - */ - private VoltTenant jsonToTenant(JsonObject jsonTenant) { - return VoltTenant.builder() - .withHumanReadableName(jsonTenant.get("humanReadableName").asString()) - .withId(jsonTenant.get("id").asInt()) - .withProviderService(jsonTenant.get("provider_service").asInt()) - .withServiceSpecificId(jsonTenant.get("service_specific_id").asString()) - .withVlanId(jsonTenant.get("vlan_id").asString()) - .build(); - } - - /** - * Converts a tenant object into a JSON string. - * - * @param tenant volt tenant object to convert - * @return JSON string for the tenant - */ - private String tenantToJson(VoltTenant tenant) { - return "{" - + "\"humanReadableName\": \"" + tenant.humanReadableName() + "\"," - + "\"id\": \"" + tenant.id() + "\"," - + "\"provider_service\": \"" + tenant.providerService() + "\"," - + "\"service_specific_id\": \"" + tenant.serviceSpecificId() + "\"," - + "\"vlan_id\": \"" + tenant.vlanId() + "\"" - + "}"; - } - - /** - * Gets a client web resource builder for the base XOS REST API - * with no additional URI. - * - * @return web resource builder - * @deprecated in Cardinal Release - */ - @Deprecated - private WebResource.Builder getClientBuilder() { - return getClientBuilder(""); - } - - /** - * Gets a client web resource builder for the base XOS REST API - * with an optional additional URI. - * - * @return web resource builder - * @deprecated in Cardinal Release - */ - @Deprecated - private WebResource.Builder getClientBuilder(String uri) { - String baseUrl = "http://" + xosServerAddress + ":" - + Integer.toString(xosServerPort); - Client client = Client.create(); - client.addFilter(new HTTPBasicAuthFilter("padmin@vicci.org", "letmein")); - WebResource resource = client.resource(baseUrl - + XOS_TENANT_BASE_URI + uri); - return resource.accept(JSON_UTF_8.toString()) - .type(JSON_UTF_8.toString()); - } - - /** - * Performs a REST GET operation on the base XOS REST URI. - * - * @return JSON string fetched by the GET operation - * @deprecated in Cardinal Release - */ - @Deprecated - private String getRest() { - return getRest(""); - } - - /** - * Performs a REST GET operation on the base XOS REST URI with - * an optional additional URI. - * - * @return JSON string fetched by the GET operation - * @deprecated in Cardinal Release - */ - @Deprecated - private String getRest(String uri) { - WebResource.Builder builder = getClientBuilder(uri); - ClientResponse response = builder.get(ClientResponse.class); - - if (response.getStatus() != HTTP_OK) { - log.info("REST GET request returned error code {}", - response.getStatus()); - } - String jsonString = response.getEntity(String.class); - log.info("JSON read:\n{}", jsonString); - - return jsonString; - } - - /** - * Performs a REST POST operation of a json string on the base - * XOS REST URI with an optional additional URI. - * - * @param json JSON string to post - * @deprecated in Cardinal Release - */ - @Deprecated - private String postRest(String json) { - WebResource.Builder builder = getClientBuilder(); - ClientResponse response; - - try { - response = builder.post(ClientResponse.class, json); - } catch (ClientHandlerException e) { - log.warn("Unable to contact REST server: {}", e.getMessage()); - return "{ 'error' : 'oops no one home' }"; - } - - if (response.getStatus() != HTTP_CREATED) { - log.info("REST POST request returned error code {}", - response.getStatus()); - } - return response.getEntity(String.class); - } - - /** - * Performs a REST DELETE operation on the base - * XOS REST URI with an optional additional URI. - * - * @param uri optional additional URI - * @deprecated in Cardinal Release - */ - @Deprecated - private void deleteRest(String uri) { - WebResource.Builder builder = getClientBuilder(uri); - ClientResponse response = builder.delete(ClientResponse.class); - - if (response.getStatus() != HTTP_NO_CONTENT) { - log.info("REST DELETE request returned error code {}", - response.getStatus()); - } - } - - /** - * Deletes the tenant with the given ID. - * - * @param tenantId ID of tenant to delete - */ - private void deleteTenant(long tenantId) { - deleteRest(Long.toString(tenantId)); - } - - @Override - public Set<VoltTenant> getAllTenants() { - String jsonString = getRest(); - - JsonArray voltTenantItems = JsonArray.readFrom(jsonString); - - return IntStream.range(0, voltTenantItems.size()) - .mapToObj(index -> jsonToTenant(voltTenantItems.get(index).asObject())) - .collect(Collectors.toSet()); - } - - @Override - public void removeTenant(long id) { - deleteTenant(id); - } - - @Override - public VoltTenant addTenant(VoltTenant newTenant) { - long providerServiceId = newTenant.providerService(); - if (providerServiceId == -1) { - providerServiceId = xosProviderService; - } - - PortNumber onuPort = newTenant.port().port(); - VlanId subscriberVlan = VlanId.vlanId(portToVlan.get(onuPort.toLong())); - - VoltTenant tenantToCreate = VoltTenant.builder() - .withProviderService(providerServiceId) - .withServiceSpecificId(portToSsid.get(newTenant.port())) - .withVlanId(String.valueOf(subscriberVlan.toShort())) - .withPort(newTenant.port()) - .build(); - String json = tenantToJson(tenantToCreate); - - - provisionVlanOnPort(OLT_DEVICE_ID, OLT_UPLINK_PORT, onuPort, subscriberVlan.toShort()); - - String retJson = postRest(json); - - fetchCPELocation(tenantToCreate, retJson); - - return newTenant; - } - - private void fetchCPELocation(VoltTenant newTenant, String jsonString) { - JsonObject json = JsonObject.readFrom(jsonString); - - if (json.get("computeNodeName") != null) { - ConnectPoint point = nodeToPort.get(json.get("computeNodeName").asString()); - //ConnectPoint fromPoint = newTenant.port(); - ConnectPoint oltPort = new ConnectPoint(FABRIC_DEVICE_ID, FABRIC_OLT_CONNECT_POINT); - - provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId())), - point, oltPort); - } - - } - - @Override - public VoltTenant getTenant(long id) { - String jsonString = getRest(Long.toString(id)); - JsonObject jsonTenant = JsonObject.readFrom(jsonString); - if (jsonTenant.get("id") != null) { - return jsonToTenant(jsonTenant); - } else { - return null; - } - } - - private void provisionVlanOnPort(DeviceId deviceId, int uplinkPort, PortNumber p, short vlanId) { - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.ANY) - .matchInPort(p) - .build(); - - TrafficSelector downstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setVlanId(VlanId.vlanId(vlanId)) - .setOutput(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment downstreamTreatment = DefaultTrafficTreatment.builder() - .popVlan() - .setOutput(p) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downstream) - .fromApp(appId) - .withTreatment(downstreamTreatment) - .add(); - - flowObjectiveService.forward(deviceId, upFwd); - flowObjectiveService.forward(deviceId, downFwd); - - } - - private void provisionDataPlane(VoltTenant tenant) { - VlanId vlan = VlanId.vlanId(Short.parseShort(tenant.vlanId())); - - TrafficSelector fromGateway = DefaultTrafficSelector.builder() - .matchInPhyPort(tenant.port().port()) - .build(); - - TrafficSelector fromFabric = DefaultTrafficSelector.builder() - .matchInPhyPort(FABRIC_PORT.port()) - .matchVlanId(vlan) - .build(); - - TrafficTreatment toFabric = DefaultTrafficTreatment.builder() - .pushVlan() - .setVlanId(vlan) - .setOutput(FABRIC_PORT.port()) - .build(); - - TrafficTreatment toGateway = DefaultTrafficTreatment.builder() - .popVlan() - .setOutput(tenant.port().port()) - .build(); - - ForwardingObjective forwardToFabric = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(PRIORITY) - .makePermanent() - .fromApp(appId) - .withSelector(fromGateway) - .withTreatment(toFabric) - .add(); - - ForwardingObjective forwardToGateway = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(PRIORITY) - .makePermanent() - .fromApp(appId) - .withSelector(fromFabric) - .withTreatment(toGateway) - .add(); - - flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToFabric); - flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToGateway); - } - - private void provisionFabric(VlanId vlanId, ConnectPoint point, ConnectPoint fromPoint) { - - long vlan = vlanId.toShort(); - - JsonObject node = new JsonObject(); - node.add("vlan", vlan); - if (vlan == 201) { - node.add("iptv", true); - } else { - node.add("iptv", false); - } - JsonArray array = new JsonArray(); - JsonObject cp1 = new JsonObject(); - JsonObject cp2 = new JsonObject(); - cp1.add("device", point.deviceId().toString()); - cp1.add("port", point.port().toLong()); - cp2.add("device", fromPoint.deviceId().toString()); - cp2.add("port", fromPoint.port().toLong()); - array.add(cp1); - array.add(cp2); - node.add("ports", array); - - - String baseUrl = "http://" + FABRIC_CONTROLLER_ADDRESS + ":" - + Integer.toString(FABRIC_SERVER_PORT); - Client client = Client.create(); - WebResource resource = client.resource(baseUrl + FABRIC_BASE_URI); - WebResource.Builder builder = resource.accept(JSON_UTF_8.toString()) - .type(JSON_UTF_8.toString()); - - try { - builder.post(ClientResponse.class, node.toString()); - } catch (ClientHandlerException e) { - log.warn("Unable to contact fabric REST server: {}", e.getMessage()); - return; - } - } - - /** - * Extracts properties from the component configuration context. - * - * @param context the component context - */ - private void readComponentConfiguration(ComponentContext context) { - Dictionary<?, ?> properties = context.getProperties(); - - String newXosServerAddress = - Tools.get(properties, XOS_SERVER_ADDRESS_PROPERTY_NAME); - if (!isNullOrEmpty(newXosServerAddress)) { - xosServerAddress = newXosServerAddress; - } - - String newXosServerPortString = - Tools.get(properties, XOS_SERVER_PORT_PROPERTY_NAME); - if (!isNullOrEmpty(newXosServerPortString)) { - xosServerPort = Integer.parseInt(newXosServerPortString); - } - - String newXosProviderServiceString = - Tools.get(properties, XOS_PROVIDER_SERVICE_PROPERTY_NAME); - if (!isNullOrEmpty(newXosProviderServiceString)) { - xosProviderService = Integer.parseInt(newXosProviderServiceString); - } - } -} - - diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java deleted file mode 100755 index a2a66438..00000000 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.bgp.controller; - -import java.util.concurrent.ExecutorService; - -/** - * Abstraction of an BGP connect peer, initiate remote connection to BGP peer on configuration. - */ -public interface BGPConnectPeer { - - /** - * Returns the executor initialized to connect peer. - * - * @return connectExecutor the connection executor - */ - ExecutorService connectExecutor(); -} diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java index 49432aab..9d44041e 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java @@ -16,11 +16,15 @@ package org.onosproject.bgp.controller; +import java.util.Map; +import java.util.Set; + +import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPMessage; /** - * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners - * on bgp events + * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners on + * bgp events */ public interface BGPController { @@ -40,6 +44,34 @@ public interface BGPController { BGPPeer getPeer(BGPId bgpId); /** + * Register a listener for BGP message events. + * + * @param listener the listener to notify + */ + void addListener(BgpNodeListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeListener(BgpNodeListener listener); + + /** + * Register a listener for BGP message events. + * + * @param listener the listener to notify + */ + void addLinkListener(BgpLinkListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeLinkListener(BgpLinkListener listener); + + /** * Send a message to a particular bgp peer. * * @param bgpId the id of the peer to send message. @@ -52,8 +84,9 @@ public interface BGPController { * * @param bgpId id of the peer the message arrived on * @param msg the message to process. + * @throws BGPParseException on data processing error */ - void processBGPPacket(BGPId bgpId, BGPMessage msg); + void processBGPPacket(BGPId bgpId, BGPMessage msg) throws BGPParseException; /** * Close all connected BGP peers. @@ -73,5 +106,33 @@ public interface BGPController { * * @return the integer number */ - int getBGPConnNumber(); -}
\ No newline at end of file + int connectedPeerCount(); + + /** + * Return BGP peer manager. + * + * @return BGPPeerManager peer manager instance + */ + BgpPeerManager peerManager(); + + /** + * Return BGP connected peers. + * + * @return connectedPeers connected peers + */ + Map<BGPId, BGPPeer> connectedPeers(); + + /** + * Return BGP node listener. + * + * @return node listener + */ + Set<BgpNodeListener> listener(); + + /** + * Return BGP link listener. + * + * @return link listener + */ + Set<BgpLinkListener> linkListener(); +} diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java index 1b022c76..aafaf06e 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java @@ -16,30 +16,16 @@ package org.onosproject.bgp.controller; import java.util.List; import org.jboss.netty.channel.Channel; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; /** - * Represents the peer side of an bgp peer. + * Represents the peer side of an BGP peer. * */ public interface BGPPeer { /** - * Sets the BGP version for this bgp peer. - * - * @param bgpVersion the version to set. - */ - void setBgpPeerVersion(BGPVersion bgpVersion); - - /** - * Gets the BGP version for this bgp peer. - * - * @return bgp identifier. - */ - int getBgpPeerIdentifier(); - - /** * Sets the associated Netty channel for this bgp peer. * * @param channel the Netty channel @@ -54,27 +40,6 @@ public interface BGPPeer { Channel getChannel(); /** - * Sets the AS Number for this bgp peer. - * - * @param peerASNum the autonomous system number value to set. - */ - void setBgpPeerASNum(short peerASNum); - - /** - * Sets the hold time for this bgp peer. - * - * @param peerHoldTime the hold timer value to set. - */ - void setBgpPeerHoldTime(short peerHoldTime); - - /** - * Sets the peer identifier value. - * - * @param peerIdentifier the bgp peer identifier value. - */ - void setBgpPeerIdentifier(int peerIdentifier); - - /** * Sets whether the bgp peer is connected. * * @param connected whether the bgp peer is connected @@ -82,15 +47,6 @@ public interface BGPPeer { void setConnected(boolean connected); /** - * Initialises the behaviour. - * - * @param bgpId id of bgp peer - * @param bgpVersion BGP version - * @param pktStats packet statistics - */ - void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats); - - /** * Checks whether the handshake is complete. * * @return true is finished, false if not. @@ -112,18 +68,11 @@ public interface BGPPeer { void sendMessage(List<BGPMessage> msgs); /** - * Gets a string version of the ID for this bgp peer. + * Provides the factory for BGP version. * - * @return string version of the ID + * @return BGP version specific factory. */ - String getStringId(); - - /** - * Gets the ipAddress of the peer. - * - * @return the peer bgpId in IPAddress format - */ - BGPId getBGPId(); + BGPFactory factory(); /** * Checks if the bgp peer is still connected. @@ -146,16 +95,9 @@ public interface BGPPeer { String channelId(); /** - * Gets the negotiated hold time. - * - * @return the negotiated hold time - */ - int getNegotiatedHoldTime(); - - /** - * Sets negotiated hold time for the peer. + * Return the BGP session info. * - * @param negotiatedHoldTime negotiated hold time + * @return sessionInfo bgp session info */ - void setNegotiatedHoldTime(short negotiatedHoldTime); + BgpSessionInfo sessionInfo(); } diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java index 87ec031f..e7c5d9b4 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java @@ -163,4 +163,18 @@ public interface BGPPeerCfg { * AS number */ void setPeerRouterId(String peerId, int asNumber); + + /** + * Set the peer connect instance. + * + * @param connectpeer connect peer instance + */ + void setConnectPeer(BgpConnectPeer connectpeer); + + /** + * Get the peer connect instance. + * + * @return peer connect instance + */ + BgpConnectPeer connectPeer(); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java index 1445c763..dab7a3d2 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java @@ -29,19 +29,19 @@ public interface BgpLinkLsNlri extends BGPLSNlri { * * @return local node descriptors */ - NodeDescriptors getLocalNodeDescriptors(); + NodeDescriptors localNodeDescriptors(); /** * Returns remote node descriptors. * * @return remote node descriptors */ - NodeDescriptors getRemoteNodeDescriptors(); + NodeDescriptors remoteNodeDescriptors(); /** * Returns link descriptors. * * @return link descriptors */ - List<BGPValueType> getLinkDescriptors(); + List<BGPValueType> linkDescriptors(); }
\ No newline at end of file diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java index 90e94e88..e9df3999 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java @@ -21,6 +21,7 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,8 +35,6 @@ public class As4Path implements BGPValueType { private static final Logger log = LoggerFactory.getLogger(AsPath.class); public static final byte AS4PATH_TYPE = 17; public static final byte ASNUM_SIZE = 4; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private List<Integer> as4pathSet; private List<Integer> as4pathSeq; @@ -77,8 +76,8 @@ public class As4Path implements BGPValueType { validation.getLength()); } //if fourth bit is set length is read as short otherwise as byte , len includes type, length and value - int len = validation.isShort() ? validation.getLength() + TYPE_AND_LEN_AS_SHORT : validation - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = validation.isShort() ? validation.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : validation + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (validation.getFirstBit() && !validation.getSecondBit() && validation.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java index 100e14d7..e3eb2c51 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java @@ -22,6 +22,7 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,7 @@ public class AsPath implements BGPValueType { * * @return AS type */ - public byte getType() { + public byte type() { return (byte) value; } } @@ -63,8 +64,6 @@ public class AsPath implements BGPValueType { public static final byte ASPATH_SET_TYPE = 1; public static final byte ASPATH_SEQ_TYPE = 2; public static final byte ASNUM_SIZE = 2; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isAsPath = false; private List<Short> aspathSet; @@ -108,8 +107,8 @@ public class AsPath implements BGPValueType { validation.getLength()); } //if fourth bit is set, length is read as short otherwise as byte , len includes type, length and value - int len = validation.isShort() ? validation.getLength() + TYPE_AND_LEN_AS_SHORT : validation - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = validation.isShort() ? validation.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : validation + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (validation.getFirstBit() && !validation.getSecondBit() && validation.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java index f643ae00..dfcfc9dc 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java @@ -28,8 +28,8 @@ public final class BGPErrorType { public static final byte OPEN_MESSAGE_ERROR = 2; public static final byte UPDATE_MESSAGE_ERROR = 3; public static final byte HOLD_TIMER_EXPIRED = 4; - public static final byte FINITE_STATE_MACHINE_ERROR = 4; - public static final byte CEASE = 5; + public static final byte FINITE_STATE_MACHINE_ERROR = 5; + public static final byte CEASE = 6; //Message Header Error subcodes public static final byte CONNECTION_NOT_SYNCHRONIZED = 1; @@ -42,6 +42,7 @@ public final class BGPErrorType { public static final byte BAD_BGP_IDENTIFIER = 3; public static final byte UNSUPPORTED_OPTIONAL_PARAMETER = 4; public static final byte UNACCEPTABLE_HOLD_TIME = 5; + public static final byte UNSUPPORTED_CAPABILITY = 7; //UPDATE Message Error subcodes public static final byte MALFORMED_ATTRIBUTE_LIST = 1; @@ -54,4 +55,20 @@ public final class BGPErrorType { public static final byte OPTIONAL_ATTRIBUTE_ERROR = 9; public static final byte INVALID_NETWORK_FIELD = 10; public static final byte MALFORMED_ASPATH = 11; + + //FSM Error subcodes + public static final byte UNSPECIFIED_ERROR = 0; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_OPENSENT_STATE = 1; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE = 2; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_ESTABLISHED_STATE = 3; + + //Cease Error subcodes + public static final byte MAXIMUM_NUMBER_OF_PREFIXES_REACHED = 1; + public static final byte ADMINISTRATIVE_SHUTDOWN = 2; + public static final byte PEER_DECONFIGURED = 3; + public static final byte ADMINISTRATIVE_RESET = 4; + public static final byte CONNECTION_REJECTED = 5; + public static final byte OTHER_CONFIGURATION_CHANGE = 6; + public static final byte CONNECTION_COLLISION_RESOLUTION = 7; + public static final byte OUT_OF_RESOURCES = 8; }
\ No newline at end of file diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java index 85fb748b..59afbed6 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java @@ -15,6 +15,7 @@ */ package org.onosproject.bgpio.types; +import java.util.Arrays; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -86,7 +87,7 @@ public class IPReachabilityInformationTlv implements BGPValueType { @Override public int hashCode() { - return Objects.hash(ipPrefix, prefixLen); + return Objects.hash(Arrays.hashCode(ipPrefix), prefixLen); } @Override @@ -97,7 +98,7 @@ public class IPReachabilityInformationTlv implements BGPValueType { if (obj instanceof IPReachabilityInformationTlv) { IPReachabilityInformationTlv other = (IPReachabilityInformationTlv) obj; - return Objects.equals(prefixLen, other.prefixLen) && Objects.equals(ipPrefix, other.ipPrefix); + return Objects.equals(prefixLen, other.prefixLen) && Arrays.equals(ipPrefix, other.ipPrefix); } return false; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java index 5c742d0f..35fd2493 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java @@ -15,6 +15,9 @@ */ package org.onosproject.bgpio.types; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -28,12 +31,12 @@ import com.google.common.base.MoreObjects; * Provides implementation of IsIsPseudonode Tlv. */ public class IsIsPseudonode implements IGPRouterID, BGPValueType { - protected static final Logger log = LoggerFactory.getLogger(IsIsPseudonode.class); + private static final Logger log = LoggerFactory.getLogger(IsIsPseudonode.class); public static final short TYPE = 515; public static final short LENGTH = 7; - private final byte[] isoNodeID; + private final List<Byte> isoNodeID; private byte psnIdentifier; /** @@ -42,7 +45,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @param isoNodeID ISO system-ID * @param psnIdentifier PSN identifier */ - public IsIsPseudonode(byte[] isoNodeID, byte psnIdentifier) { + public IsIsPseudonode(List<Byte> isoNodeID, byte psnIdentifier) { this.isoNodeID = isoNodeID; this.psnIdentifier = psnIdentifier; } @@ -54,7 +57,8 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @param psnIdentifier PSN identifier * @return object of IsIsPseudonode */ - public static IsIsPseudonode of(final byte[] isoNodeID, final byte psnIdentifier) { + public static IsIsPseudonode of(final List<Byte> isoNodeID, + final byte psnIdentifier) { return new IsIsPseudonode(isoNodeID, psnIdentifier); } @@ -63,7 +67,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * * @return ISO NodeID */ - public byte[] getISONodeID() { + public List<Byte> getISONodeID() { return isoNodeID; } @@ -78,7 +82,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { @Override public int hashCode() { - return Objects.hash(isoNodeID, psnIdentifier); + return Objects.hash(isoNodeID) & Objects.hash(psnIdentifier); } @Override @@ -87,8 +91,27 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { return true; } if (obj instanceof IsIsPseudonode) { + int countObjSubTlv = 0; + int countOtherSubTlv = 0; + boolean isCommonSubTlv = true; IsIsPseudonode other = (IsIsPseudonode) obj; - return Objects.equals(isoNodeID, other.isoNodeID) && Objects.equals(psnIdentifier, other.psnIdentifier); + Iterator<Byte> objListIterator = other.isoNodeID.iterator(); + countOtherSubTlv = other.isoNodeID.size(); + countObjSubTlv = isoNodeID.size(); + if (countObjSubTlv != countOtherSubTlv) { + return false; + } else { + while (objListIterator.hasNext() && isCommonSubTlv) { + Byte subTlv = objListIterator.next(); + if (isoNodeID.contains(subTlv) && other.isoNodeID.contains(subTlv)) { + isCommonSubTlv = Objects.equals(isoNodeID.get(isoNodeID.indexOf(subTlv)), + other.isoNodeID.get(other.isoNodeID.indexOf(subTlv))); + } else { + isCommonSubTlv = false; + } + } + return isCommonSubTlv && Objects.equals(psnIdentifier, other.psnIdentifier); + } } return false; } @@ -98,7 +121,11 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { int iLenStartIndex = c.writerIndex(); c.writeShort(TYPE); c.writeShort(LENGTH); - c.writeBytes(isoNodeID); + Iterator<Byte> objListIterator = isoNodeID.iterator(); + while (objListIterator.hasNext()) { + byte value = objListIterator.next(); + c.writeByte(value); + } c.writeByte(psnIdentifier); return c.writerIndex() - iLenStartIndex; } @@ -110,8 +137,12 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @return object of IsIsPseudonode */ public static IsIsPseudonode read(ChannelBuffer cb) { - byte[] isoNodeID = new byte[LENGTH - 1]; - cb.readBytes(isoNodeID, 0, LENGTH - 1); + List<Byte> isoNodeID = new ArrayList<Byte>(); + byte value; + for (int i = 0; i < LENGTH; i++) { + value = cb.readByte(); + isoNodeID.add(value); + } byte psnIdentifier = cb.readByte(); return IsIsPseudonode.of(isoNodeID, psnIdentifier); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java index 048d81ee..0f78ab77 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,11 +28,7 @@ import com.google.common.base.MoreObjects; * Provides implementation of LocalPref BGP Path Attribute. */ public class LocalPref implements BGPValueType { - - private static final Logger log = LoggerFactory.getLogger(LocalPref.class); public static final byte LOCAL_PREF_TYPE = 5; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; public static final byte LOCAL_PREF_MAX_LEN = 4; private int localPref; @@ -72,8 +67,8 @@ public class LocalPref implements BGPValueType { parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags.getLength() - + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (parseFlags.getFirstBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java index 49e1fc5a..23402c26 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,10 +28,7 @@ import com.google.common.base.MoreObjects; * Provides Implementation of Med BGP Path Attribute. */ public class Med implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(Med.class); public static final byte MED_TYPE = 4; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; public static final byte MED_MAX_LEN = 4; private int med; @@ -71,8 +67,8 @@ public class Med implements BGPValueType { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (!parseFlags.getFirstBit() && parseFlags.getSecondBit() && parseFlags.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java index 90a1cc6b..fe99d28d 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java @@ -26,6 +26,7 @@ import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPLSNlri; import org.onosproject.bgpio.protocol.linkstate.BGPPrefixIPv4LSNlriVer4; import org.onosproject.bgpio.protocol.linkstate.BGPNodeLSNlriVer4; +import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; @@ -39,7 +40,6 @@ import com.google.common.base.MoreObjects; public class MpReachNlri implements BGPValueType { private static final Logger log = LoggerFactory.getLogger(MpReachNlri.class); - public static final byte MPREACHNLRI_TYPE = 14; public static final byte LINK_NLRITYPE = 2; @@ -131,8 +131,7 @@ public class MpReachNlri implements BGPValueType { if ((afi == Constants.AFI_VALUE) && (safi == Constants.SAFI_VALUE) || (afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { byte nextHopLen = tempCb.readByte(); - //TODO: use Validation.toInetAddress once Validation is merged - InetAddress ipAddress = (InetAddress) cb.readBytes(nextHopLen); + InetAddress ipAddress = Validation.toInetAddress(nextHopLen, cb); if (ipAddress.isMulticastAddress()) { throw new BGPParseException("Multicast not supported"); } @@ -151,8 +150,8 @@ public class MpReachNlri implements BGPValueType { case BGPNodeLSNlriVer4.NODE_NLRITYPE: bgpLSNlri = BGPNodeLSNlriVer4.read(tempBuf, afi, safi); break; - case LINK_NLRITYPE: - //TODO: To be merged later + case BgpLinkLsNlriVer4.LINK_NLRITYPE: + bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); break; case BGPPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: bgpLSNlri = BGPPrefixIPv4LSNlriVer4.read(tempBuf, afi, safi); @@ -163,7 +162,6 @@ public class MpReachNlri implements BGPValueType { mpReachNlri.add(bgpLSNlri); } } else { - //TODO: check with the values got from capability throw new BGPParseException("Not Supporting afi " + afi + "safi " + safi); } } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java index 3efed95c..8763ec59 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java @@ -24,6 +24,7 @@ import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPLSNlri; import org.onosproject.bgpio.protocol.linkstate.BGPNodeLSNlriVer4; import org.onosproject.bgpio.protocol.linkstate.BGPPrefixIPv4LSNlriVer4; +import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; @@ -36,10 +37,10 @@ import com.google.common.base.MoreObjects; */ public class MpUnReachNlri implements BGPValueType { - protected static final Logger log = LoggerFactory.getLogger(MpUnReachNlri.class); - + private static final Logger log = LoggerFactory.getLogger(MpUnReachNlri.class); public static final byte MPUNREACHNLRI_TYPE = 15; public static final byte LINK_NLRITYPE = 2; + private boolean isMpUnReachNlri = false; private final short afi; private final byte safi; @@ -113,8 +114,8 @@ public class MpUnReachNlri implements BGPValueType { case BGPNodeLSNlriVer4.NODE_NLRITYPE: bgpLSNlri = BGPNodeLSNlriVer4.read(tempBuf, afi, safi); break; - case LINK_NLRITYPE: - //TODO: to be merged later + case BgpLinkLsNlriVer4.LINK_NLRITYPE: + bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); break; case BGPPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: bgpLSNlri = BGPPrefixIPv4LSNlriVer4.read(tempBuf, afi, diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java index 353ec3d5..1d083b72 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java @@ -21,9 +21,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onlab.packet.Ip4Address; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; @@ -32,10 +31,7 @@ import com.google.common.base.Preconditions; * Implementation of NextHop BGP Path Attribute. */ public class NextHop implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(NextHop.class); public static final byte NEXTHOP_TYPE = 3; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isNextHop = false; private Ip4Address nextHop; @@ -75,15 +71,14 @@ public class NextHop implements BGPValueType { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (parseFlags.getFirstBit() && !parseFlags.getSecondBit() && parseFlags.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); } - //TODO: use Validation.toInetAddress once Validation is merged - InetAddress ipAddress = (InetAddress) cb.readBytes(parseFlags.getLength()); + InetAddress ipAddress = Validation.toInetAddress(parseFlags.getLength(), cb); if (ipAddress.isMulticastAddress()) { throw new BGPParseException("Multicast address is not supported"); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java index 3b2070de..2052e965 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,7 +28,6 @@ import com.google.common.base.MoreObjects; * Provides Implementation of mandatory BGP Origin path attribute. */ public class Origin implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(Origin.class); /** * Enum to provide ORIGIN types. @@ -58,8 +56,6 @@ public class Origin implements BGPValueType { public static final byte ORIGIN_TYPE = 1; public static final byte ORIGIN_VALUE_LEN = 1; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isOrigin = false; private byte origin; @@ -109,8 +105,8 @@ public class Origin implements BGPValueType { ChannelBuffer tempCb = cb.copy(); Validation parseFlags = Validation.parseAttributeHeader(cb); - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if ((parseFlags.getLength() > ORIGIN_VALUE_LEN) || (cb.readableBytes() < parseFlags.getLength())) { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, @@ -122,7 +118,7 @@ public class Origin implements BGPValueType { byte originValue; originValue = cb.readByte(); - if ((originValue != ORIGINTYPE.INCOMPLETE.value) || (originValue != ORIGINTYPE.IGP.value) || + if ((originValue != ORIGINTYPE.INCOMPLETE.value) && (originValue != ORIGINTYPE.IGP.value) && (originValue != ORIGINTYPE.EGP.value)) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.INVALID_ORIGIN_ATTRIBUTE, data); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java index 194d6dac..4b704fb0 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.onosproject.bgpio.types.attr; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -39,18 +40,28 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { public static final int ATTRNODE_MULTITOPOLOGY = 263; /* Opaque Node Attribute */ - private short[] multiTopologyId; + private List<Short> multiTopologyId = new ArrayList<Short>(); /** * Constructor to initialize the Node attribute multi-topology ID. * * @param multiTopologyId multi-topology ID */ - BgpAttrNodeMultiTopologyId(short[] multiTopologyId) { + public BgpAttrNodeMultiTopologyId(List<Short> multiTopologyId) { this.multiTopologyId = multiTopologyId; } /** + * Returns object of this class with specified values. + * + * @param multiTopologyId Prefix Metric + * @return object of BgpAttrNodeMultiTopologyId + */ + public static BgpAttrNodeMultiTopologyId of(ArrayList<Short> multiTopologyId) { + return new BgpAttrNodeMultiTopologyId(multiTopologyId); + } + + /** * Reads the Multi-topology ID of Node attribute. * * @param cb ChannelBuffer @@ -59,21 +70,20 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { */ public static BgpAttrNodeMultiTopologyId read(ChannelBuffer cb) throws BGPParseException { - - log.debug("BgpAttrNodeMultiTopologyId"); + ArrayList<Short> multiTopologyId = new ArrayList<Short>(); + short tempMultiTopologyId; short lsAttrLength = cb.readShort(); int len = lsAttrLength / 2; // Length is 2*n and n is the number of MT-IDs if (cb.readableBytes() < lsAttrLength) { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, - cb.readableBytes()); + lsAttrLength); } - short[] multiTopologyId; - multiTopologyId = new short[len]; for (int i = 0; i < len; i++) { - multiTopologyId[i] = cb.readShort(); + tempMultiTopologyId = cb.readShort(); + multiTopologyId.add(new Short(tempMultiTopologyId)); } return new BgpAttrNodeMultiTopologyId(multiTopologyId); @@ -84,7 +94,7 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { * * @return multitopology ID */ - short[] getAttrMultiTopologyId() { + public List<Short> attrMultiTopologyId() { return multiTopologyId; } @@ -113,7 +123,7 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { @Override public int write(ChannelBuffer cb) { - // TODO Auto-generated method stub + // TODO This will be implemented in the next version return 0; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java index 50591ecf..e44ba7e1 100755 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java @@ -16,7 +16,6 @@ package org.onosproject.bgpio.types.attr; import java.util.Arrays; -import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; @@ -46,11 +45,21 @@ public class BgpLinkAttrName implements BGPValueType { * * @param linkName link name */ - BgpLinkAttrName(byte[] linkName) { + public BgpLinkAttrName(byte[] linkName) { this.linkName = Arrays.copyOf(linkName, linkName.length); } /** + * Returns object of this class with specified values. + * + * @param linkName Prefix Metric + * @return object of BgpLinkAttrName + */ + public static BgpLinkAttrName of(byte[] linkName) { + return new BgpLinkAttrName(linkName); + } + + /** * Reads the BGP link attributes Name. * * @param cb Channel buffer @@ -70,7 +79,7 @@ public class BgpLinkAttrName implements BGPValueType { linkName = new byte[lsAttrLength]; cb.readBytes(linkName); - return new BgpLinkAttrName(linkName); + return BgpLinkAttrName.of(linkName); } /** @@ -78,7 +87,7 @@ public class BgpLinkAttrName implements BGPValueType { * * @return link name */ - byte[] getAttrLinkName() { + public byte[] attrLinkName() { return linkName; } @@ -89,7 +98,7 @@ public class BgpLinkAttrName implements BGPValueType { @Override public int hashCode() { - return Objects.hash(linkName); + return Arrays.hashCode(linkName); } @Override @@ -100,7 +109,7 @@ public class BgpLinkAttrName implements BGPValueType { if (obj instanceof BgpLinkAttrName) { BgpLinkAttrName other = (BgpLinkAttrName) obj; - return Objects.equals(linkName, other.linkName); + return Arrays.equals(linkName, other.linkName); } return false; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java index 0cf02386..426eb274 100755 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java @@ -15,7 +15,8 @@ */ package org.onosproject.bgpio.types.attr; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -36,18 +37,28 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { protected static final Logger log = LoggerFactory .getLogger(BgpPrefixAttrRouteTag.class); - public static final int ATTR_PREFIX_ROUTETAG = 1153; + public static final short ATTR_PREFIX_ROUTETAG = 1153; /* Prefix Route Tag */ - private int[] pfxRouteTag; + private List<Integer> pfxRouteTag = new ArrayList<Integer>(); /** * Constructor to initialize the values. * * @param pfxRouteTag prefix route tag */ - BgpPrefixAttrRouteTag(int[] pfxRouteTag) { - this.pfxRouteTag = Arrays.copyOf(pfxRouteTag, pfxRouteTag.length); + public BgpPrefixAttrRouteTag(List<Integer> pfxRouteTag) { + this.pfxRouteTag = pfxRouteTag; + } + + /** + * Returns object of this class with specified values. + * + * @param pfxRouteTag Prefix Metric + * @return object of BgpPrefixAttrRouteTag + */ + public static BgpPrefixAttrRouteTag of(ArrayList<Integer> pfxRouteTag) { + return new BgpPrefixAttrRouteTag(pfxRouteTag); } /** @@ -59,7 +70,8 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { */ public static BgpPrefixAttrRouteTag read(ChannelBuffer cb) throws BGPParseException { - int[] pfxRouteTag; + int tmp; + ArrayList<Integer> pfxRouteTag = new ArrayList<Integer>(); short lsAttrLength = cb.readShort(); int len = lsAttrLength / Integer.SIZE; @@ -70,13 +82,12 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { lsAttrLength); } - pfxRouteTag = new int[lsAttrLength]; - for (int i = 0; i < len; i++) { - pfxRouteTag[i] = cb.readInt(); + tmp = cb.readInt(); + pfxRouteTag.add(new Integer(tmp)); } - return new BgpPrefixAttrRouteTag(pfxRouteTag); + return BgpPrefixAttrRouteTag.of(pfxRouteTag); } /** @@ -84,7 +95,7 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { * * @return route tag */ - int[] getPfxRouteTag() { + public List<Integer> getPfxRouteTag() { return pfxRouteTag; } diff --git a/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java b/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java index a2a7c2b5..00e85dcf 100644 --- a/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java +++ b/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java @@ -15,6 +15,11 @@ */ package org.onosproject.bgpio.types; +import java.util.ArrayList; +import java.util.List; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; import org.junit.Test; import com.google.common.testing.EqualsTester; @@ -24,13 +29,28 @@ import com.google.common.testing.EqualsTester; */ public class IsIsPseudonodeTest { private final byte[] value1 = new byte[] {0x01, 0x02, 0x01, 0x02, 0x01, 0x02}; + byte value; + List<Byte> isoNodeID1 = new ArrayList<Byte>(); + ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); private final byte[] value2 = new byte[] {0x01, 0x02, 0x01, 0x02, 0x01, 0x03}; - private final IsIsPseudonode tlv1 = IsIsPseudonode.of(value1, (byte) 1); - private final IsIsPseudonode sameAsTlv1 = IsIsPseudonode.of(value1, (byte) 1); - private final IsIsPseudonode tlv2 = IsIsPseudonode.of(value2, (byte) 1); + List<Byte> isoNodeID2 = new ArrayList<Byte>(); + ChannelBuffer buffer1 = ChannelBuffers.dynamicBuffer(); + private final IsIsPseudonode tlv1 = IsIsPseudonode.of(isoNodeID1, (byte) 1); + private final IsIsPseudonode sameAsTlv1 = IsIsPseudonode.of(isoNodeID1, (byte) 1); + private final IsIsPseudonode tlv2 = IsIsPseudonode.of(isoNodeID2, (byte) 1); @Test public void testEquality() { + buffer.writeBytes(value1); + for (int i = 0; i < 6; i++) { + value = buffer.readByte(); + isoNodeID1.add(value); + } + buffer1.writeBytes(value2); + for (int i = 0; i < 6; i++) { + value = buffer1.readByte(); + isoNodeID1.add(value); + } new EqualsTester() .addEqualityGroup(tlv1, sameAsTlv1) .addEqualityGroup(tlv2) diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java index c17736ed..f21c311c 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java @@ -17,13 +17,19 @@ package org.onosproject.bgp.controller.impl; import java.io.IOException; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.UnknownHostException; import java.nio.channels.ClosedChannelException; -import java.util.Date; +import java.util.Collections; import java.util.List; +import java.util.LinkedList; +import java.util.ListIterator; import java.util.concurrent.RejectedExecutionException; +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelStateEvent; @@ -32,17 +38,24 @@ import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; import org.jboss.netty.handler.timeout.ReadTimeoutException; import org.jboss.netty.handler.timeout.ReadTimeoutHandler; +import org.onlab.packet.Ip4Address; import org.onlab.packet.IpAddress; import org.onosproject.bgp.controller.BGPCfg; +import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPId; import org.onosproject.bgp.controller.BGPPeer; import org.onosproject.bgp.controller.BGPPeerCfg; -import org.onosproject.bgp.controller.impl.BGPControllerImpl.BGPPeerManager; +import org.onosproject.bgp.controller.impl.BGPControllerImpl.BGPPeerManagerImpl; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -//import org.onosproject.bgpio.protocol.BGPOpenMsg; +import org.onosproject.bgpio.protocol.BGPOpenMsg; import org.onosproject.bgpio.protocol.BGPType; import org.onosproject.bgpio.protocol.BGPVersion; +import org.onosproject.bgpio.types.BGPErrorType; +import org.onosproject.bgpio.types.BGPValueType; +import org.onosproject.bgpio.types.FourOctetAsNumCapabilityTlv; +import org.onosproject.bgpio.types.MultiProtocolExtnCapabilityTlv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,18 +65,25 @@ import org.slf4j.LoggerFactory; class BGPChannelHandler extends IdleStateAwareChannelHandler { private static final Logger log = LoggerFactory.getLogger(BGPChannelHandler.class); - + static final int BGP_MIN_HOLDTIME = 3; static final int BGP_MAX_KEEPALIVE_INTERVAL = 3; private BGPPeer bgpPeer; private BGPId thisbgpId; - Channel channel; + private Channel channel; private BGPKeepAliveTimer keepAliveTimer = null; private short peerHoldTime = 0; private short negotiatedHoldTime = 0; - private short peerAsNum; + private long peerAsNum; private int peerIdentifier; private BGPPacketStatsImpl bgpPacketStats; static final int MAX_WRONG_COUNT_PACKET = 5; + static final byte MULTI_PROTOCOL_EXTN_CAPA_TYPE = 1; + static final byte FOUR_OCTET_AS_NUM_CAPA_TYPE = 65; + static final int AS_TRANS = 23456; + static final int MAX_AS2_NUM = 65535; + static final short AFI = 16388; + static final byte RES = 0; + static final byte SAFI = 71; // State needs to be volatile because the HandshakeTimeoutHandler // needs to check if the handshake is complete @@ -72,13 +92,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // When a bgp peer with a ip addresss is found (i.e we already have a // connected peer with the same ip), the new peer is immediately // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup peer state - we need to ensure that it does not cleanup + // proceeds to cleaup peer state - we need to ensure that it does not + // cleanup // peer state for the older (still connected) peer private volatile Boolean duplicateBGPIdFound; // Indicates the bgp version used by this bgp peer protected BGPVersion bgpVersion; - private BGPControllerImpl bgpControllerImpl; - private BGPPeerManager peerManager; + private BGPController bgpController; + protected BGPFactory factory4; + private boolean isIbgpSession; + private BgpSessionInfoImpl sessionInfo; + private BGPPeerManagerImpl peerManager; private InetSocketAddress inetAddress; private IpAddress ipAddress; private SocketAddress address; @@ -88,15 +112,16 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * Create a new unconnected BGPChannelHandler. * - * @param bgpCtrlImpl bgp controller implementation object + * @param bgpController bgp controller */ - BGPChannelHandler(BGPControllerImpl bgpCtrlImpl) { - this.bgpControllerImpl = bgpCtrlImpl; - this.peerManager = bgpCtrlImpl.getPeerManager(); + BGPChannelHandler(BGPController bgpController) { + this.bgpController = bgpController; + this.peerManager = (BGPPeerManagerImpl) bgpController.peerManager(); this.state = ChannelState.IDLE; + this.factory4 = Controller.getBGPMessageFactory4(); this.duplicateBGPIdFound = Boolean.FALSE; this.bgpPacketStats = new BGPPacketStatsImpl(); - this.bgpconfig = bgpCtrlImpl.getConfig(); + this.bgpconfig = bgpController.getConfig(); } // To disconnect peer session. @@ -127,17 +152,19 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for OPEN message if (m.getType() != BGPType.OPEN) { // When the message type is not keep alive message increment the wrong packet statistics - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, + BGPErrorType.RECEIVE_UNEXPECTED_MESSAGE_IN_OPENSENT_STATE, m.getType() + .getType()); log.debug("Message is not OPEN message"); } else { log.debug("Sending keep alive message in OPENSENT state"); h.bgpPacketStats.addInPacket(); - // TODO: initialize openmessage BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; - // TODO: initialize identifier from open messgae h.peerIdentifier = pOpenmsg.getBgpId(); + BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + h.peerIdentifier = pOpenmsg.getBgpId(); // validate capabilities and open msg - if (h.openMsgValidation(h)) { + if (h.openMsgValidation(h, pOpenmsg)) { log.debug("Sending handshake OPEN message"); /* @@ -145,7 +172,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time * received in the OPEN message */ - // TODO: initialize holdtime from open message h.peerHoldTime = pOpenmsg.getHoldTime(); + h.peerHoldTime = pOpenmsg.getHoldTime(); if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { h.channel.getPipeline().replace("holdTime", "holdTime", @@ -155,7 +182,8 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { log.info("Hold Time : " + h.peerHoldTime); - // TODO: get AS number for open message update AS number + // update AS number + h.peerAsNum = pOpenmsg.getAsNumber(); } // Send keepalive message to peer. @@ -175,15 +203,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for open message if (m.getType() != BGPType.OPEN) { // When the message type is not open message increment the wrong packet statistics - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, BGPErrorType.UNSPECIFIED_ERROR, m + .getType().getType()); log.debug("Message is not OPEN message"); } else { h.bgpPacketStats.addInPacket(); - // TODO: initialize open message BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + h.peerIdentifier = pOpenmsg.getBgpId(); // Validate open message - if (h.openMsgValidation(h)) { + if (h.openMsgValidation(h, pOpenmsg)) { log.debug("Sending handshake OPEN message"); /* @@ -191,7 +221,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time * received in the OPEN message */ - // TODO: get hold time from open message h.peerHoldTime = pOpenmsg.getHoldTime(); + h.peerHoldTime = pOpenmsg.getHoldTime(); if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { h.channel.getPipeline().replace("holdTime", "holdTime", @@ -201,7 +231,8 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { log.debug("Hold Time : " + h.peerHoldTime); - //TODO: update AS number form open messsage update AS number + // update AS number + h.peerAsNum = pOpenmsg.getAsNumber(); h.sendHandshakeOpenMessage(); h.bgpPacketStats.addOutPacket(); @@ -218,7 +249,9 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for keep alive message if (m.getType() != BGPType.KEEP_ALIVE) { // When the message type is not keep alive message handle the wrong packet - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, + BGPErrorType.RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE, m.getType() + .getType()); log.debug("Message is not KEEPALIVE message"); } else { @@ -229,30 +262,28 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { final InetSocketAddress inetAddress = (InetSocketAddress) h.address; h.thisbgpId = BGPId.bgpId(IpAddress.valueOf(inetAddress.getAddress())); - h.bgpPeer = h.peerManager.getBGPPeerInstance(h.thisbgpId, h.bgpVersion, h.bgpPacketStats); - // set the status fo bgp as connected + // set session parameters + h.negotiatedHoldTime = (h.peerHoldTime < h.bgpconfig.getHoldTime()) ? h.peerHoldTime + : h.bgpconfig.getHoldTime(); + h.sessionInfo = new BgpSessionInfoImpl(h.thisbgpId, h.bgpVersion, h.peerAsNum, h.peerHoldTime, + h.peerIdentifier, h.negotiatedHoldTime, h.isIbgpSession); + + h.bgpPeer = h.peerManager.getBGPPeerInstance(h.bgpController, h.sessionInfo, h.bgpPacketStats); + // set the status of bgp as connected h.bgpPeer.setConnected(true); h.bgpPeer.setChannel(h.channel); - // set specific parameters to bgp peer - h.bgpPeer.setBgpPeerVersion(h.bgpVersion); - h.bgpPeer.setBgpPeerASNum(h.peerAsNum); - h.bgpPeer.setBgpPeerHoldTime(h.peerHoldTime); - h.bgpPeer.setBgpPeerIdentifier(h.peerIdentifier); - - h.negotiatedHoldTime = (h.peerHoldTime < h.bgpconfig.getHoldTime()) ? h.peerHoldTime : h.bgpconfig - .getHoldTime(); - h.bgpPeer.setNegotiatedHoldTime(h.negotiatedHoldTime); /* * RFC 4271, When an OPEN message is received, sends a KEEPALIVE message, If the negotiated hold * time value is zero, then the HoldTimer and KeepaliveTimer are not started. A reasonable maximum * time between KEEPALIVE messages would be one third of the Hold Time interval. */ - h.sendKeepAliveMessage(); if (h.negotiatedHoldTime != 0) { - h.keepAliveTimer - = new BGPKeepAliveTimer(h, (h.negotiatedHoldTime / BGP_MAX_KEEPALIVE_INTERVAL)); + h.keepAliveTimer = new BGPKeepAliveTimer(h, + (h.negotiatedHoldTime / BGP_MAX_KEEPALIVE_INTERVAL)); + } else { + h.sendKeepAliveMessage(); } h.bgpPacketStats.addOutPacket(); @@ -349,8 +380,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } inetAddress = (InetSocketAddress) address; - ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - peerAddr = ipAddress.toString(); + peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); // if peer is not configured disconnect session if (!bgpconfig.isPeerConfigured(peerAddr)) { @@ -360,7 +390,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } // if connection is already established close channel - if (peerManager.isPeerConnected(peerAddr)) { + if (peerManager.isPeerConnected(BGPId.bgpId(IpAddress.valueOf(peerAddr)))) { log.debug("Duplicate connection received, peer {}", peerAddr); channel.close(); return; @@ -392,8 +422,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } inetAddress = (InetSocketAddress) address; - ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - peerAddr = ipAddress.toString(); + peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); if (thisbgpId != null) { if (!duplicateBGPIdFound) { @@ -432,14 +461,14 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { if ((ChannelState.OPENWAIT == state) || (ChannelState.OPENSENT == state)) { // When ReadTimeout timer is expired in OPENWAIT/OPENSENT state, it is considered - // TODO: Send notification + sendNotification(BGPErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); channel.close(); state = ChannelState.IDLE; return; } else if (ChannelState.OPENCONFIRM == state) { // When ReadTimeout timer is expired in OPENCONFIRM state. - // TODO: Send Notification + sendNotification(BGPErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); channel.close(); state = ChannelState.IDLE; return; @@ -454,8 +483,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } channel.close(); } else if (e.getCause() instanceof BGPParseException) { - // TODO: SEND NOTIFICATION - log.debug("BGP Parse Exception: ", e.getCause()); + byte[] data = new byte[] {}; + BGPParseException errMsg = (BGPParseException) e.getCause(); + byte errorCode = errMsg.getErrorCode(); + byte errorSubCode = errMsg.getErrorSubCode(); + ChannelBuffer tempCb = errMsg.getData(); + if (tempCb != null) { + int dataLength = tempCb.capacity(); + data = new byte[dataLength]; + tempCb.readBytes(data, 0, dataLength); + } + sendNotification(errorCode, errorSubCode, data); } else if (e.getCause() instanceof RejectedExecutionException) { log.warn("Could not process message: queue full"); } else { @@ -507,11 +545,12 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * To handle the BGP message. * - * @param m BGP message + * @param m bgp message + * @throws BGPParseException throw exception */ private void dispatchMessage(BGPMessage m) throws BGPParseException { bgpPacketStats.addInPacket(); - bgpControllerImpl.processBGPPacket(thisbgpId, m); + bgpController.processBGPPacket(thisbgpId, m); } /** @@ -557,14 +596,39 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * Send handshake open message to the peer. * - * @throws IOException ,BGPParseException + * @throws IOException, BGPParseException */ private void sendHandshakeOpenMessage() throws IOException, BGPParseException { - // TODO: send open message. + int bgpId; + + bgpId = Ip4Address.valueOf(bgpconfig.getRouterId()).toInt(); + BGPMessage msg = factory4.openMessageBuilder().setAsNumber((short) bgpconfig.getAsNumber()) + .setHoldTime(bgpconfig.getHoldTime()).setBgpId(bgpId) + .setLsCapabilityTlv(bgpconfig.getLsCapability()) + .setLargeAsCapabilityTlv(bgpconfig.getLargeASCapability()) + .build(); + log.debug("Sending open message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); } /** + * Send notification message to peer. + * + * @param errorCode error code send in notification + * @param errorSubCode sub error code send in notification + * @param data data to send in notification + * @throws IOException, BGPParseException while building message + */ + private void sendNotification(byte errorCode, byte errorSubCode, byte[] data) + throws IOException, BGPParseException { + BGPMessage msg = factory4.notificationMessageBuilder().setErrorCode(errorCode).setErrorSubCode(errorSubCode) + .setData(data).build(); + log.debug("Sending notification message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); + } + + /** * Send keep alive message. * * @throws IOException when channel is disconnected @@ -572,60 +636,220 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { */ synchronized void sendKeepAliveMessage() throws IOException, BGPParseException { - // TODO: send keep alive message. + BGPMessage msg = factory4.keepaliveMessageBuilder().build(); + log.debug("Sending keepalive message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); } /** - * Send notification and close channel with peer. + * Process unknown BGP message received. + * + * @param errorCode error code + * @param errorSubCode error sub code + * @param data message type + * @throws BGPParseException while processing error messsage + * @throws IOException while processing error message */ - private void sendErrNotificationAndCloseChannel() { - // TODO: send notification + public void processUnknownMsg(byte errorCode, byte errorSubCode, byte data) throws BGPParseException, IOException { + log.debug("UNKNOWN message received"); + byte[] byteArray = new byte[1]; + byteArray[0] = data; + sendNotification(errorCode, errorSubCode, byteArray); channel.close(); } /** - * Process unknown BGP message received. + * BGP open message validation. * - * @throws BGPParseException when received invalid message + * @param h channel handler + * @param openMsg open message + * @return true if valid message, otherwise false + * @throws BGPParseException throw exception */ - public void processUnknownMsg() throws BGPParseException { - log.debug("UNKNOWN message received"); - Date now = null; - if (bgpPacketStats.wrongPacketCount() == 0) { - now = new Date(); - bgpPacketStats.setTime(now.getTime()); - bgpPacketStats.addWrongPacket(); - sendErrNotificationAndCloseChannel(); + public boolean openMsgValidation(BGPChannelHandler h, BGPOpenMsg openMsg) throws BGPParseException { + boolean result; + + // Validate BGP ID + result = bgpIdValidation(openMsg); + if (!result) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_BGP_IDENTIFIER, null); + } + + // Validate AS number + result = asNumberValidation(h, openMsg); + if (!result) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); + } + + // Validate hold timer + if ((openMsg.getHoldTime() != 0) && (openMsg.getHoldTime() < BGP_MIN_HOLDTIME)) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.UNACCEPTABLE_HOLD_TIME, null); + } + + // Validate capabilities + result = capabilityValidation(h, openMsg); + return result; + } + + /** + * Capability Validation. + * + * @param h channel handler + * @param openmsg open message + * @return success or failure + * @throws BGPParseException + */ + private boolean capabilityValidation(BGPChannelHandler h, BGPOpenMsg openmsg) throws BGPParseException { + log.debug("capabilityValidation"); + + boolean isMultiProtocolcapabilityExists = false; + boolean isFourOctetCapabilityExits = false; + int capAsNum = 0; + + List<BGPValueType> capabilityTlv = openmsg.getCapabilityTlv(); + ListIterator<BGPValueType> listIterator = capabilityTlv.listIterator(); + List<BGPValueType> unSupportedCapabilityTlv = new LinkedList<>(); + ListIterator<BGPValueType> unSupportedCaplistIterator = unSupportedCapabilityTlv.listIterator(); + BGPValueType tempTlv; + boolean isLargeAsCapabilityCfg = h.bgpconfig.getLargeASCapability(); + boolean isLsCapabilityCfg = h.bgpconfig.getLsCapability(); + + while (listIterator.hasNext()) { + BGPValueType tlv = listIterator.next(); + if (tlv.getType() == MULTI_PROTOCOL_EXTN_CAPA_TYPE) { + isMultiProtocolcapabilityExists = true; + } + if (tlv.getType() == FOUR_OCTET_AS_NUM_CAPA_TYPE) { + isFourOctetCapabilityExits = true; + capAsNum = ((FourOctetAsNumCapabilityTlv) tlv).getInt(); + } } - if (bgpPacketStats.wrongPacketCount() > 1) { - Date lastest = new Date(); - bgpPacketStats.addWrongPacket(); - // converting to seconds - if (((lastest.getTime() - bgpPacketStats.getTime()) / 1000) > 60) { - now = lastest; - bgpPacketStats.setTime(now.getTime()); - bgpPacketStats.resetWrongPacket(); - bgpPacketStats.addWrongPacket(); - } else if (((int) (lastest.getTime() - now.getTime()) / 1000) < 60) { - if (MAX_WRONG_COUNT_PACKET <= bgpPacketStats.wrongPacketCount()) { - // reset once wrong packet count reaches MAX_WRONG_COUNT_PACKET - bgpPacketStats.resetWrongPacket(); - // max wrong packets received send error message and close the session - sendErrNotificationAndCloseChannel(); + + if (isFourOctetCapabilityExits) { + if (capAsNum > MAX_AS2_NUM) { + if (openmsg.getAsNumber() != AS_TRANS) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); + } + } else { + if (capAsNum != openmsg.getAsNumber()) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); } } } + + if ((isLsCapabilityCfg)) { + if (!isMultiProtocolcapabilityExists) { + tempTlv = new MultiProtocolExtnCapabilityTlv(AFI, RES, SAFI); + unSupportedCapabilityTlv.add(tempTlv); + } + } + + if ((isLargeAsCapabilityCfg)) { + if (!isFourOctetCapabilityExits) { + tempTlv = new FourOctetAsNumCapabilityTlv(h.bgpconfig.getAsNumber()); + unSupportedCapabilityTlv.add(tempTlv); + } + } + + if (unSupportedCaplistIterator.hasNext()) { + ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); + while (unSupportedCaplistIterator.hasNext()) { + BGPValueType tlv = unSupportedCaplistIterator.next(); + tlv.write(buffer); + } + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, + BGPErrorType.UNSUPPORTED_CAPABILITY, buffer); + } else { + return true; + } } /** - * Open message validation. + * AS Number Validation. * - * @param h channel handler - * @return true if validation succeed, otherwise false - * @throws BGPParseException when received invalid message + * @param h channel Handler + * @param openMsg open message + * @return true or false */ - public boolean openMsgValidation(BGPChannelHandler h) throws BGPParseException { - // TODO: Open message validation. + private boolean asNumberValidation(BGPChannelHandler h, BGPOpenMsg openMsg) { + log.debug("AS Num validation"); + + int capAsNum = 0; + boolean isFourOctetCapabilityExits = false; + + BGPPeerCfg peerCfg = h.bgpconfig.displayPeers(peerAddr); + List<BGPValueType> capabilityTlv = openMsg.getCapabilityTlv(); + ListIterator<BGPValueType> listIterator = capabilityTlv.listIterator(); + + while (listIterator.hasNext()) { + BGPValueType tlv = listIterator.next(); + if (tlv.getType() == FOUR_OCTET_AS_NUM_CAPA_TYPE) { + isFourOctetCapabilityExits = true; + capAsNum = ((FourOctetAsNumCapabilityTlv) tlv).getInt(); + } + } + + if (peerCfg.getAsNumber() > MAX_AS2_NUM) { + if (openMsg.getAsNumber() != AS_TRANS) { + return false; + } + + if (!isFourOctetCapabilityExits) { + return false; + } + + if (peerCfg.getAsNumber() != capAsNum) { + return false; + } + + isIbgpSession = peerCfg.getIsIBgp(); + if (isIbgpSession) { + // IBGP - AS number should be same for Peer and local if it is IBGP + if (h.bgpconfig.getAsNumber() != capAsNum) { + return false; + } + } + } else { + + if (openMsg.getAsNumber() != peerCfg.getAsNumber()) { + return false; + } + + if (isFourOctetCapabilityExits) { + if (capAsNum != peerCfg.getAsNumber()) { + return false; + } + } + + isIbgpSession = peerCfg.getIsIBgp(); + if (isIbgpSession) { + // IBGP - AS number should be same for Peer and local if it is IBGP + if (openMsg.getAsNumber() != h.bgpconfig.getAsNumber()) { + return false; + } + } + } + return true; + } + + /** + * Validates BGP ID. + * + * @param openMsg open message + * @return true or false + */ + private boolean bgpIdValidation(BGPOpenMsg openMsg) { + String openMsgBgpId = Ip4Address.valueOf(openMsg.getBgpId()).toString(); + + InetAddress ipAddress; + try { + ipAddress = InetAddress.getByName(openMsgBgpId); + if (ipAddress.isMulticastAddress()) { + return false; + } + } catch (UnknownHostException e) { + log.debug("InetAddress convertion failed"); + } return true; } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java index d8378e31..35c31ab7 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java @@ -16,25 +16,25 @@ package org.onosproject.bgp.controller.impl; -import static org.onlab.util.Tools.groupedThreads; - +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; + import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.IpAddress; import org.onosproject.bgp.controller.BGPCfg; import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgp.controller.BGPPacketStats; import org.onosproject.bgp.controller.BGPPeer; +import org.onosproject.bgp.controller.BgpLinkListener; +import org.onosproject.bgp.controller.BgpNodeListener; +import org.onosproject.bgp.controller.BgpPeerManager; +import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,16 +44,13 @@ public class BGPControllerImpl implements BGPController { private static final Logger log = LoggerFactory.getLogger(BGPControllerImpl.class); - private final ExecutorService executorMsgs = Executors.newFixedThreadPool(32, - groupedThreads("onos/bgp", - "event-stats-%d")); - - private final ExecutorService executorBarrier = Executors.newFixedThreadPool(4, - groupedThreads("onos/bgp", - "event-barrier-%d")); protected ConcurrentHashMap<BGPId, BGPPeer> connectedPeers = new ConcurrentHashMap<BGPId, BGPPeer>(); - protected BGPPeerManager peerManager = new BGPPeerManager(); + protected BGPPeerManagerImpl peerManager = new BGPPeerManagerImpl(); + + protected Set<BgpNodeListener> bgpNodeListener = new CopyOnWriteArraySet<>(); + protected Set<BgpLinkListener> bgpLinkListener = new CopyOnWriteArraySet<>(); + final Controller ctrl = new Controller(this); private BGPConfig bgpconfig = new BGPConfig(); @@ -83,12 +80,42 @@ public class BGPControllerImpl implements BGPController { } @Override + public void addListener(BgpNodeListener listener) { + this.bgpNodeListener.add(listener); + } + + @Override + public void removeListener(BgpNodeListener listener) { + this.bgpNodeListener.remove(listener); + } + + @Override + public Set<BgpNodeListener> listener() { + return bgpNodeListener; + } + + @Override + public void addLinkListener(BgpLinkListener listener) { + this.bgpLinkListener.add(listener); + } + + @Override + public void removeLinkListener(BgpLinkListener listener) { + this.bgpLinkListener.remove(listener); + } + + @Override + public Set<BgpLinkListener> linkListener() { + return bgpLinkListener; + } + + @Override public void writeMsg(BGPId bgpId, BGPMessage msg) { - // TODO: Send message + this.getPeer(bgpId).sendMessage(msg); } @Override - public void processBGPPacket(BGPId bgpId, BGPMessage msg) { + public void processBGPPacket(BGPId bgpId, BGPMessage msg) throws BGPParseException { switch (msg.getType()) { case OPEN: @@ -122,18 +149,12 @@ public class BGPControllerImpl implements BGPController { * Implementation of an BGP Peer which is responsible for keeping track of connected peers and the state in which * they are. */ - public class BGPPeerManager { + public class BGPPeerManagerImpl implements BgpPeerManager { - private final Logger log = LoggerFactory.getLogger(BGPPeerManager.class); + private final Logger log = LoggerFactory.getLogger(BGPPeerManagerImpl.class); private final Lock peerLock = new ReentrantLock(); - /** - * Add a BGP peer that has just connected to the system. - * - * @param bgpId the id of bgp peer to add - * @param bgpPeer the actual bgp peer object. - * @return true if added, false otherwise. - */ + @Override public boolean addConnectedPeer(BGPId bgpId, BGPPeer bgpPeer) { if (connectedPeers.get(bgpId) != null) { @@ -147,119 +168,49 @@ public class BGPControllerImpl implements BGPController { } } - /** - * Checks if the activation for this bgp peer is valid. - * - * @param bgpId the id of bgp peer to check - * @return true if valid, false otherwise - */ + @Override public boolean isPeerConnected(BGPId bgpId) { if (connectedPeers.get(bgpId) == null) { - this.log.error("Trying to activate peer but is not in " + "connected peer: bgpIp {}. Aborting ..", - bgpId.toString()); + this.log.error("Is peer connected: bgpIp {}.", bgpId.toString()); return false; } return true; } - /** - * Checks if the activation for this bgp peer is valid. - * - * @param routerid the routerid of bgp peer to check - * @return true if valid, false otherwise - */ - public boolean isPeerConnected(String routerid) { - - final BGPId bgpId; - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - - if (connectedPeers.get(bgpId) != null) { - this.log.info("Peer connection exist "); - return true; - } - this.log.info("Initiate connect request to " + "peer: bgpIp {}", bgpId.toString()); - - return false; - } - - /** - * Clear all state in controller peer maps for a bgp peer that has - * disconnected from the local controller. - * - * @param bgpId the id of bgp peer to remove. - */ + @Override public void removeConnectedPeer(BGPId bgpId) { connectedPeers.remove(bgpId); } - /** - * Clear all state in controller peer maps for a bgp peer that has - * disconnected from the local controller. - * - * @param routerid the router id of bgp peer to remove. - */ - public void removeConnectedPeer(String routerid) { - final BGPId bgpId; - - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - - connectedPeers.remove(bgpId); - } - - /** - * Gets bgp peer for connected peer map. - * - * @param routerid router id - * @return peer if available, null otherwise - */ - public BGPPeer getPeer(String routerid) { - final BGPId bgpId; - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - + @Override + public BGPPeer getPeer(BGPId bgpId) { return connectedPeers.get(bgpId); } /** - * Gets bgp peer instance. - * - * @param bgpId bgp identifier. - * @param pv bgp version. - * @param pktStats packet statistics. - * @return BGPPeer peer instance. - */ - public BGPPeer getBGPPeerInstance(BGPId bgpId, BGPVersion pv, BGPPacketStats pktStats) { - BGPPeer bgpPeer = new BGPPeerImpl(); - bgpPeer.init(bgpId, pv, pktStats); + * Gets bgp peer instance. + * + * @param bgpController controller instance. + * @param sessionInfo bgp session info. + * @param pktStats packet statistics. + * @return BGPPeer peer instance. + */ + public BGPPeer getBGPPeerInstance(BGPController bgpController, BgpSessionInfoImpl sessionInfo, + BGPPacketStatsImpl pktStats) { + BGPPeer bgpPeer = new BGPPeerImpl(bgpController, sessionInfo, pktStats); return bgpPeer; } } - /** - * Gets controller instance. - * - * @return Controller instance. - */ - public Controller getController() { - return ctrl; - } - - /** - * Gets connected peers. - * - * @return connectedPeers from connected Peers Map. - */ - public ConcurrentHashMap<BGPId, BGPPeer> getConnectedPeers() { + @Override + public ConcurrentHashMap<BGPId, BGPPeer> connectedPeers() { return connectedPeers; } - /** - * Gets peer manager. - * - * @return peerManager. - */ - public BGPPeerManager getPeerManager() { + @Override + public BGPPeerManagerImpl peerManager() { return peerManager; } @@ -269,7 +220,7 @@ public class BGPControllerImpl implements BGPController { } @Override - public int getBGPConnNumber() { + public int connectedPeerCount() { return connectedPeers.size(); } -}
\ No newline at end of file +} diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java index 51b95a4b..14a68cf6 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java @@ -16,6 +16,7 @@ package org.onosproject.bgp.controller.impl; import org.onlab.packet.Ip4Address; +import org.onosproject.bgp.controller.BgpConnectPeer; import org.onosproject.bgp.controller.BGPPeerCfg; /** @@ -28,6 +29,7 @@ public class BGPPeerConfig implements BGPPeerCfg { private Ip4Address peerId = null; private State state; private boolean selfInitiated; + private BgpConnectPeer connectPeer; /** * Constructor to initialize the values. @@ -106,4 +108,14 @@ public class BGPPeerConfig implements BGPPeerCfg { public void setSelfInnitConnection(boolean selfInit) { this.selfInitiated = selfInit; } + + @Override + public BgpConnectPeer connectPeer() { + return this.connectPeer; + } + + @Override + public void setConnectPeer(BgpConnectPeer connectPeer) { + this.connectPeer = connectPeer; + } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java index 212b24d3..45f74634 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java @@ -24,11 +24,12 @@ import java.util.concurrent.RejectedExecutionException; import org.jboss.netty.channel.Channel; import org.onlab.packet.IpAddress; -import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgp.controller.BGPPacketStats; +import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPPeer; +import org.onosproject.bgp.controller.BgpSessionInfo; +import org.onosproject.bgpio.protocol.BGPFactories; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,19 +44,31 @@ public class BGPPeerImpl implements BGPPeer { private static final String SHUTDOWN_MSG = "Worker has already been shutdown"; + private BGPController bgpController; private Channel channel; protected String channelId; private boolean connected; protected boolean isHandShakeComplete = false; - public BGPSessionInfo sessionInfo; + private BgpSessionInfo sessionInfo; private BGPPacketStatsImpl pktStats; + @Override - public void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats) { - this.sessionInfo.setRemoteBgpId(bgpId); - this.sessionInfo.setRemoteBgpVersion(bgpVersion); - this.pktStats = (BGPPacketStatsImpl) pktStats; - this.sessionInfo = new BGPSessionInfo(); + public BgpSessionInfo sessionInfo() { + return sessionInfo; + } + + /** + * Initialize peer. + * + *@param bgpController controller instance + *@param sessionInfo bgp session info + *@param pktStats packet statistics + */ + public BGPPeerImpl(BGPController bgpController, BgpSessionInfo sessionInfo, BGPPacketStatsImpl pktStats) { + this.bgpController = bgpController; + this.sessionInfo = sessionInfo; + this.pktStats = pktStats; } // ************************ @@ -129,53 +142,9 @@ public class BGPPeerImpl implements BGPPeer { return channelId; } - // ************************ - // BGP Peer features related - // ************************ - - @Override - public final BGPId getBGPId() { - return this.sessionInfo.getRemoteBgpId(); - }; - - @Override - public final String getStringId() { - return this.sessionInfo.getRemoteBgpId().toString(); - } - - @Override - public final void setBgpPeerVersion(BGPVersion peerVersion) { - this.sessionInfo.setRemoteBgpVersion(peerVersion); - } - - @Override - public void setBgpPeerASNum(short peerASNum) { - this.sessionInfo.setRemoteBgpASNum(peerASNum); - } - - @Override - public void setBgpPeerHoldTime(short peerHoldTime) { - this.sessionInfo.setRemoteBgpHoldTime(peerHoldTime); - } - - @Override - public void setBgpPeerIdentifier(int peerIdentifier) { - this.sessionInfo.setRemoteBgpIdentifier(peerIdentifier); - } - - @Override - public int getBgpPeerIdentifier() { - return this.sessionInfo.getRemoteBgpIdentifier(); - } - - @Override - public int getNegotiatedHoldTime() { - return this.sessionInfo.getNegotiatedholdTime(); - } - @Override - public void setNegotiatedHoldTime(short negotiatedHoldTime) { - this.sessionInfo.setNegotiatedholdTime(negotiatedHoldTime); + public BGPFactory factory() { + return BGPFactories.getFactory(sessionInfo.remoteBgpVersion()); } @Override @@ -185,7 +154,8 @@ public class BGPPeerImpl implements BGPPeer { @Override public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues().add("channel", channelId()) - .add("bgpId", getBGPId()).toString(); + return MoreObjects.toStringHelper(getClass()).omitNullValues() + .add("channel", channelId()) + .add("bgpId", sessionInfo().remoteBgpId()).toString(); } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java index b2ca5077..e6f09f20 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java @@ -23,6 +23,7 @@ import org.jboss.netty.handler.timeout.ReadTimeoutHandler; import org.jboss.netty.util.ExternalResourceReleasable; import org.jboss.netty.util.HashedWheelTimer; import org.jboss.netty.util.Timer; +import org.onosproject.bgp.controller.BGPController; /** * Creates a ChannelPipeline for a server-side bgp channel. @@ -32,30 +33,36 @@ public class BGPPipelineFactory static final Timer TIMER = new HashedWheelTimer(); protected ReadTimeoutHandler readTimeoutHandler; - BGPControllerImpl bgpCtrlImpl; + private boolean isBgpServ; + private BGPController bgpController; /** * Constructor to initialize the values. * - * @param ctrlImpl parent ctrlImpl - * @param isServBgp if it is a server or not + * @param bgpController parent controller + * @param isBgpServ if it is a server or remote peer */ - public BGPPipelineFactory(BGPControllerImpl ctrlImpl, boolean isServBgp) { + public BGPPipelineFactory(BGPController bgpController, boolean isBgpServ) { super(); - bgpCtrlImpl = ctrlImpl; - /* hold time*/ - readTimeoutHandler = new ReadTimeoutHandler(TIMER, bgpCtrlImpl.getConfig().getHoldTime()); + this.isBgpServ = isBgpServ; + this.bgpController = bgpController; + /* hold time */ + this.readTimeoutHandler = new ReadTimeoutHandler(TIMER, bgpController.getConfig().getHoldTime()); } @Override public ChannelPipeline getPipeline() throws Exception { - BGPChannelHandler handler = new BGPChannelHandler(bgpCtrlImpl); + BGPChannelHandler handler = new BGPChannelHandler(bgpController); ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("bgpmessagedecoder", new BGPMessageDecoder()); pipeline.addLast("bgpmessageencoder", new BGPMessageEncoder()); pipeline.addLast("holdTime", readTimeoutHandler); - pipeline.addLast("PassiveHandler", handler); + if (isBgpServ) { + pipeline.addLast("PassiveHandler", handler); + } else { + pipeline.addLast("ActiveHandler", handler); + } return pipeline; } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java deleted file mode 100755 index 207d7831..00000000 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * 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.bgp.controller.impl; - -import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgpio.protocol.BGPVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Class maintains BGP peer session info. - */ -public class BGPSessionInfo { - - protected final Logger log = LoggerFactory.getLogger(BGPSessionInfo.class); - private BGPId remoteBgpId; - private BGPVersion remoteBgpVersion; - private short remoteBgpASNum; - private short remoteBgpholdTime; - private int remoteBgpIdentifier; - private short negotiatedholdTime; - - /** - * Gets the negotiated hold time for the session. - * - * @return negotiated hold time. - */ - public short getNegotiatedholdTime() { - return negotiatedholdTime; - } - - /** - * Sets the negotiated hold time for the session. - * - * @param negotiatedholdTime negotiated hold time. - */ - public void setNegotiatedholdTime(short negotiatedholdTime) { - this.negotiatedholdTime = negotiatedholdTime; - } - - /** - * Gets the BGP ID of BGP peer. - * - * @return bgp ID. - */ - public BGPId getRemoteBgpId() { - return remoteBgpId; - } - - /** - * Sets the BGP ID of bgp peer. - * - * @param bgpId BGP ID to set. - */ - public void setRemoteBgpId(BGPId bgpId) { - log.debug("Remote BGP ID {}", bgpId); - this.remoteBgpId = bgpId; - } - - /** - * Gets the BGP version of peer. - * - * @return bgp version. - */ - public BGPVersion getRemoteBgpVersion() { - return remoteBgpVersion; - } - - /** - * Sets the BGP version for this bgp peer. - * - * @param bgpVersion bgp version to set. - */ - public void setRemoteBgpVersion(BGPVersion bgpVersion) { - log.debug("Remote BGP version {}", bgpVersion); - this.remoteBgpVersion = bgpVersion; - } - - /** - * Gets the BGP remote bgp AS number. - * - * @return remoteBgpASNum peer AS number. - */ - public short getRemoteBgpASNum() { - return remoteBgpASNum; - } - - /** - * Sets the AS Number for this bgp peer. - * - * @param bgpASNum the autonomous system number value to set. - */ - public void setRemoteBgpASNum(short bgpASNum) { - log.debug("Remote BGP AS number {}", bgpASNum); - this.remoteBgpASNum = bgpASNum; - } - - /** - * Gets the BGP peer hold time. - * - * @return bgp hold time. - */ - public short getRemoteBgpHoldTime() { - return remoteBgpholdTime; - } - - /** - * Sets the hold time for this bgp peer. - * - * @param holdTime the hold timer value to set. - */ - public void setRemoteBgpHoldTime(short holdTime) { - log.debug("Remote BGP HoldTime {}", holdTime); - this.remoteBgpholdTime = holdTime; - } - - /** - * Gets the BGP version for this bgp peer. - * - * @return bgp identifier. - */ - public int getRemoteBgpIdentifier() { - return remoteBgpIdentifier; - } - - /** - * Sets the peer identifier value. - * - * @param bgpIdentifier the bgp peer identifier value. - */ - public void setRemoteBgpIdentifier(int bgpIdentifier) { - log.debug("Remote BGP Identifier {}", bgpIdentifier); - this.remoteBgpIdentifier = bgpIdentifier; - } -} diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java index 402e8c94..017c39e5 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java @@ -24,11 +24,17 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executors; +import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.group.ChannelGroup; import org.jboss.netty.channel.group.DefaultChannelGroup; +import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; +import org.onosproject.bgp.controller.BGPController; +import org.onosproject.bgpio.protocol.BGPFactories; +import org.onosproject.bgpio.protocol.BGPFactory; +import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,36 +44,45 @@ import org.slf4j.LoggerFactory; */ public class Controller { - protected static final Logger log = LoggerFactory.getLogger(Controller.class); + private static final Logger log = LoggerFactory.getLogger(Controller.class); + + private static final BGPFactory FACTORY4 = BGPFactories.getFactory(BGPVersion.BGP_4); private ChannelGroup cg; // Configuration options private static final short BGP_PORT_NUM = 179; - private int workerThreads = 16; + private final int workerThreads = 16; + private final int peerWorkerThreads = 16; // Start time of the controller - protected long systemStartTime; + private long systemStartTime; private NioServerSocketChannelFactory serverExecFactory; + private NioClientSocketChannelFactory peerExecFactory; + private static ClientBootstrap peerBootstrap; + private BGPController bgpController; // Perf. related configuration - protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - - BGPControllerImpl bgpCtrlImpl; + private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; /** - * Constructor to initialize parameter. + * Constructor to initialize the values. * - * @param bgpCtrlImpl BGP controller Impl instance + * @param bgpController bgp controller instance */ - public Controller(BGPControllerImpl bgpCtrlImpl) { - this.bgpCtrlImpl = bgpCtrlImpl; + public Controller(BGPController bgpController) { + this.bgpController = bgpController; } - // *************** - // Getters/Setters - // *************** + /** + * Returns factory version for processing BGP messages. + * + * @return instance of factory version + */ + static BGPFactory getBGPMessageFactory4() { + return FACTORY4; + } /** * To get system start time. @@ -78,16 +93,20 @@ public class Controller { return (this.systemStartTime); } - // ************** - // Initialization - // ************** - /** * Tell controller that we're ready to accept bgp peer connections. */ public void run() { try { + + peerBootstrap = createPeerBootStrap(); + + peerBootstrap.setOption("reuseAddr", true); + peerBootstrap.setOption("child.keepAlive", true); + peerBootstrap.setOption("child.tcpNoDelay", true); + peerBootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); + final ServerBootstrap bootstrap = createServerBootStrap(); bootstrap.setOption("reuseAddr", true); @@ -95,7 +114,7 @@ public class Controller { bootstrap.setOption("child.tcpNoDelay", true); bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - ChannelPipelineFactory pfact = new BGPPipelineFactory(bgpCtrlImpl, true); + ChannelPipelineFactory pfact = new BGPPipelineFactory(bgpController, true); bootstrap.setPipelineFactory(pfact); InetSocketAddress sa = new InetSocketAddress(getBgpPortNum()); @@ -129,6 +148,36 @@ public class Controller { } /** + * Creates peer boot strap. + * + * @return ClientBootstrap + */ + private ClientBootstrap createPeerBootStrap() { + + if (peerWorkerThreads == 0) { + peerExecFactory = new NioClientSocketChannelFactory( + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d"))); + return new ClientBootstrap(peerExecFactory); + } else { + peerExecFactory = new NioClientSocketChannelFactory( + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d")), + peerWorkerThreads); + return new ClientBootstrap(peerExecFactory); + } + } + + /** + * Gets peer bootstrap. + * + * @return peer bootstrap + */ + public static ClientBootstrap peerBootstrap() { + return peerBootstrap; + } + + /** * Initialize internal data structures. */ public void init() { @@ -137,10 +186,11 @@ public class Controller { this.systemStartTime = System.currentTimeMillis(); } - // ************** - // Utility methods - // ************** - + /** + * Gets run time memory. + * + * @return m run time memory + */ public Map<String, Long> getMemory() { Map<String, Long> m = new HashMap<>(); Runtime runtime = Runtime.getRuntime(); @@ -149,6 +199,11 @@ public class Controller { return m; } + /** + * Gets UP time. + * + * @return UP time + */ public Long getUptime() { RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); return rb.getUptime(); @@ -169,6 +224,7 @@ public class Controller { public void stop() { log.info("Stopped"); serverExecFactory.shutdown(); + peerExecFactory.shutdown(); cg.close(); } diff --git a/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java b/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java index c3693799..cb4ff04a 100644 --- a/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java +++ b/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java @@ -59,8 +59,11 @@ public class DeviceSetControllersCommand extends AbstractShellCommand { ControllerConfig config = h.behaviour(ControllerConfig.class); print("before:"); config.getControllers().forEach(c -> print(c.target())); - - config.setControllers(newControllers); + try { + config.setControllers(newControllers); + } catch (NullPointerException e) { + print("No Device with requested parameters {} ", uri); + } print("after:"); config.getControllers().forEach(c -> print(c.target())); print("size %d", config.getControllers().size()); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java index d81b83cc..34042dad 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java @@ -16,6 +16,7 @@ package org.onosproject.net; import static com.google.common.base.Preconditions.checkArgument; +import com.google.common.base.Objects; /** * Base implementation of an annotated model description. @@ -46,4 +47,18 @@ public abstract class AbstractDescription implements Annotated { return annotations; } + @Override + public int hashCode() { + return Objects.hashCode(annotations); + } + + @Override + public boolean equals(Object object) { + if (object instanceof AbstractDescription) { + AbstractDescription that = (AbstractDescription) object; + return Objects.equal(this.annotations, that.annotations); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java index 2877701e..557fa5c1 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java @@ -98,7 +98,8 @@ public class DefaultHost extends AbstractElement implements Host { return Objects.equals(this.id, other.id) && Objects.equals(this.mac, other.mac) && Objects.equals(this.vlan, other.vlan) && - Objects.equals(this.location, other.location); + Objects.equals(this.location, other.location) && + Objects.equals(this.ipAddresses(), other.ipAddresses()); } return false; } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java index e3d6993c..cf7bed6d 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java @@ -36,6 +36,15 @@ public interface BridgeConfig extends HandlerBehaviour { void addBridge(BridgeName bridgeName); /** + * Adds a bridge with given bridge name, dpid and exPortName. + * + * @param bridgeName bridge name + * @param dpid dpid + * @param exPortName external port name + */ + void addBridge(BridgeName bridgeName, String dpid, String exPortName); + + /** * Adds a bridge with given bridge name and dpid, and sets the controller * of the bridge with given controllers. * diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java index 5cdc0c12..3757d327 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java @@ -20,10 +20,15 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.annotations.Beta; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; import com.google.common.collect.Lists; +import org.onlab.packet.IpAddress; +import org.onlab.packet.MacAddress; import java.util.Collection; import java.util.List; +import java.util.Set; import java.util.function.Function; import static com.google.common.base.Preconditions.checkNotNull; @@ -51,6 +56,21 @@ public abstract class Config<S> { protected ConfigApplyDelegate delegate; /** + * Indicator of whether a configuration JSON field is required. + */ + public enum FieldPresence { + /** + * Signifies that config field is an optional one. + */ + OPTIONAL, + + /** + * Signifies that config field is mandatory. + */ + MANDATORY + } + + /** * Initializes the configuration behaviour with necessary context. * * @param subject configuration subject @@ -71,6 +91,29 @@ public abstract class Config<S> { } /** + * Indicates whether or not the backing JSON node contains valid data. + * <p> + * Default implementation returns true. + * Subclasses are expected to override this with their own validation. + * </p> + * + * @return true if the data is valid; false otherwise + */ + public boolean isValid() { + // TODO: figure out what assertions could be made in the base class + // NOTE: The thought is to have none, but instead to provide a set + // of predicates to allow configs to test validity of present fields, + // e.g.: + // isString(path) + // isBoolean(path) + // isNumber(path, [min, max]) + // isDecimal(path, [min, max]) + // isMacAddress(path) + // isIpAddress(path) + return true; + } + + /** * Returns the specific subject to which this configuration pertains. * * @return configuration subject @@ -309,4 +352,104 @@ public abstract class Config<S> { return this; } + /** + * Indicates whether only the specified fields are present in the backing JSON. + * + * @param allowedFields allowed field names + * @return true if all allowedFields are present; false otherwise + */ + protected boolean hasOnlyFields(String... allowedFields) { + Set<String> fields = ImmutableSet.copyOf(allowedFields); + return !Iterators.any(object.fieldNames(), f -> !fields.contains(f)); + } + + /** + * Indicates whether the specified field holds a valid MAC address. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid MAC + */ + protected boolean isMacAddress(String field, FieldPresence presence) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + MacAddress.valueOf(node.asText()) != null); + } + + /** + * Indicates whether the specified field holds a valid IP address. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid IP + */ + protected boolean isIpAddress(String field, FieldPresence presence) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + IpAddress.valueOf(node.asText()) != null); + } + + /** + * Indicates whether the specified field holds a valid string value. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param pattern optional regex pattern + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid MAC + */ + protected boolean isString(String field, FieldPresence presence, String... pattern) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + (pattern.length > 0 && node.asText().matches(pattern[0]) || pattern.length < 1)); + } + + /** + * Indicates whether the specified field holds a valid number. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param minMax optional min/max values + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid + */ + protected boolean isNumber(String field, FieldPresence presence, long... minMax) { + JsonNode node = object.path(field); + return isValid(node, presence, (node.isLong() || node.isInt()) && + (minMax.length > 0 && minMax[0] <= node.asLong() || minMax.length < 1) && + (minMax.length > 1 && minMax[1] > node.asLong() || minMax.length < 2)); + } + + /** + * Indicates whether the specified field holds a valid decimal number. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param minMax optional min/max values + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid + */ + protected boolean isDecimal(String field, FieldPresence presence, double... minMax) { + JsonNode node = object.path(field); + return isValid(node, presence, (node.isDouble() || node.isFloat()) && + (minMax.length > 0 && minMax[0] <= node.asDouble() || minMax.length < 1) && + (minMax.length > 1 && minMax[1] > node.asDouble() || minMax.length < 2)); + } + + /** + * Indicates whether the node is present and of correct value or not + * mandatory and absent. + * + * @param node JSON node + * @param presence specifies if field is optional or mandatory + * @param correctValue true if the value is correct + * @return true if the field is as expected + */ + private boolean isValid(JsonNode node, FieldPresence presence, boolean correctValue) { + boolean isMandatory = presence == FieldPresence.MANDATORY; + return isMandatory && correctValue || !isMandatory && !node.isNull() || correctValue; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java index 8eb69a45..f1b22c41 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java @@ -119,7 +119,7 @@ public interface NetworkConfigService /** * Applies configuration for the specified subject and configuration - * class using the raw JSON object. If configuration already exists, it + * class using the raw JSON node. If configuration already exists, it * will be updated. * * @param subject configuration subject @@ -128,6 +128,8 @@ public interface NetworkConfigService * @param <S> type of subject * @param <C> type of configuration * @return configuration or null if one is not available + * @throws IllegalArgumentException if the supplied JSON node contains + * invalid data */ <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java index 9dd66e8d..9be4b120 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java @@ -113,6 +113,8 @@ public interface NetworkConfigStore extends Store<NetworkConfigEvent, NetworkCon * @param <S> type of subject * @param <C> type of configuration * @return configuration object + * @throws IllegalArgumentException if the supplied JSON node contains + * invalid data */ <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java index 0fcc800d..9074792c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java @@ -24,6 +24,7 @@ import java.net.URI; import static com.google.common.base.MoreObjects.toStringHelper; import static com.google.common.base.Preconditions.checkNotNull; import static org.onosproject.net.Device.Type; +import com.google.common.base.Objects; /** * Default implementation of immutable device description entity. @@ -132,6 +133,30 @@ public class DefaultDeviceDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), uri, type, manufacturer, + hwVersion, swVersion, serialNumber, chassisId); + } + + @Override + public boolean equals(Object object) { + if (object instanceof DefaultDeviceDescription) { + if (!super.equals(object)) { + return false; + } + DefaultDeviceDescription that = (DefaultDeviceDescription) object; + return Objects.equal(this.uri, that.uri) + && Objects.equal(this.type, that.type) + && Objects.equal(this.manufacturer, that.manufacturer) + && Objects.equal(this.hwVersion, that.hwVersion) + && Objects.equal(this.swVersion, that.swVersion) + && Objects.equal(this.serialNumber, that.serialNumber) + && Objects.equal(this.chassisId, that.chassisId); + } + return false; + } + // default constructor for serialization private DefaultDeviceDescription() { this.uri = null; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java index 572d201c..d62e932c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java @@ -21,6 +21,7 @@ import org.onosproject.net.PortNumber; import org.onosproject.net.SparseAnnotations; import static org.onosproject.net.Port.Type; +import com.google.common.base.Objects; /** * Default implementation of immutable port description. @@ -117,4 +118,25 @@ public class DefaultPortDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), number, isEnabled, type, + portSpeed); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultPortDescription that = (DefaultPortDescription) object; + return Objects.equal(this.number, that.number) + && Objects.equal(this.isEnabled, that.isEnabled) + && Objects.equal(this.type, that.type) + && Objects.equal(this.portSpeed, that.portSpeed); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java index 453a7648..a842d600 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java @@ -23,6 +23,7 @@ import java.util.Objects; import java.util.Set; import java.util.TreeSet; +import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onlab.packet.IpPrefix; import org.onlab.packet.MacAddress; @@ -353,6 +354,26 @@ public final class DefaultTrafficSelector implements TrafficSelector { } @Override + public Builder matchArpTpa(Ip4Address addr) { + return add(Criteria.matchArpTpa(addr)); + } + + @Override + public Builder matchArpSpa(Ip4Address addr) { + return add(Criteria.matchArpSpa(addr)); + } + + @Override + public Builder matchArpTha(MacAddress addr) { + return add(Criteria.matchArpTha(addr)); + } + + @Override + public Builder matchArpSha(MacAddress addr) { + return add(Criteria.matchArpSha(addr)); + } + + @Override public TrafficSelector build() { return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values())); } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java index 1286ffc1..9fe88d5a 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java @@ -17,6 +17,7 @@ package org.onosproject.net.flow; import java.util.Set; +import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onlab.packet.IpPrefix; import org.onlab.packet.MacAddress; @@ -386,6 +387,38 @@ public interface TrafficSelector { Builder matchIPv6ExthdrFlags(short exthdrFlags); /** + * Matches a arp IPv4 destination address. + * + * @param addr a arp IPv4 destination address + * @return a selection builder + */ + Builder matchArpTpa(Ip4Address addr); + + /** + * Matches a arp IPv4 source address. + * + * @param addr a arp IPv4 source address + * @return a selection builder + */ + Builder matchArpSpa(Ip4Address addr); + + /** + * Matches a arp_eth_dst address. + * + * @param addr a arp_eth_dst address + * @return a selection builder + */ + Builder matchArpTha(MacAddress addr); + + /** + * Matches a arp_eth_src address. + * + * @param addr a arp_eth_src address + * @return a selection builder + */ + Builder matchArpSha(MacAddress addr); + + /** * Builds an immutable traffic selector. * * @return traffic selector diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java index bc1a094c..554b8e74 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java @@ -510,9 +510,9 @@ public final class Criteria { } /** - * Creates a match on IPv4 source field using the specified value. + * Creates a match on IPv4 destination field using the specified value. * - * @param ip ipv4 source value + * @param ip ipv4 destination value * @return match criterion */ public static Criterion matchArpTpa(Ip4Address ip) { @@ -520,15 +520,35 @@ public final class Criteria { } /** - * Creates a match on MAC source field using the specified value. + * Creates a match on IPv4 source field using the specified value. * - * @param mac MAC source value + * @param ip ipv4 source value + * @return match criterion + */ + public static Criterion matchArpSpa(Ip4Address ip) { + return new ArpPaCriterion(ip, Type.ARP_SPA); + } + + /** + * Creates a match on MAC destination field using the specified value. + * + * @param mac MAC destination value * @return match criterion */ public static Criterion matchArpTha(MacAddress mac) { return new ArpHaCriterion(mac, Type.ARP_THA); } + /** + * Creates a match on MAC source field using the specified value. + * + * @param mac MAC source value + * @return match criterion + */ + public static Criterion matchArpSha(MacAddress mac) { + return new ArpHaCriterion(mac, Type.ARP_SHA); + } + public static Criterion dummy() { return new DummyCriterion(); } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java index 747a85b5..3e1cb75c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java @@ -32,7 +32,8 @@ public final class ExtensionType { */ public enum ExtensionTypes { // TODO fix type numbers to include experimenter id - NICIRA_SET_TUNNEL_DST(31); + NICIRA_SET_TUNNEL_DST(31), + NICIRA_RESUBMIT(32); private ExtensionType type; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java index 1f05197a..307a6078 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java @@ -28,6 +28,7 @@ import org.onlab.packet.VlanId; import com.google.common.collect.ImmutableSet; import static com.google.common.base.MoreObjects.toStringHelper; +import com.google.common.base.Objects; /** * Default implementation of an immutable host description. @@ -119,4 +120,24 @@ public class DefaultHostDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), mac, vlan, location, ip); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultHostDescription that = (DefaultHostDescription) object; + return Objects.equal(this.mac, that.mac) + && Objects.equal(this.vlan, that.vlan) + && Objects.equal(this.location, that.location) + && Objects.equal(this.ip, that.ip); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java index 58ac0bb8..92824cf8 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java @@ -18,7 +18,6 @@ package org.onosproject.net.host; import org.joda.time.LocalDateTime; import org.onosproject.event.AbstractEvent; import org.onosproject.net.Host; -import org.onosproject.net.HostLocation; import static com.google.common.base.MoreObjects.toStringHelper; @@ -52,7 +51,7 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { HOST_MOVED } - private HostLocation prevLocation; + private Host prevSubject; /** * Creates an event of a given type and for the specified host and the @@ -77,25 +76,29 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { } /** - * Creates an event with HOST_MOVED type along with the previous location - * of the host. + * Creates an event with previous subject. * + * The previous subject is ignored if the type is not moved or updated + * + * @param type host event type * @param host event host subject - * @param prevLocation previous location of the host + * @param prevSubject previous host subject */ - public HostEvent(Host host, HostLocation prevLocation) { - super(Type.HOST_MOVED, host); - this.prevLocation = prevLocation; + public HostEvent(Type type, Host host, Host prevSubject) { + super(type, host); + if (type == Type.HOST_MOVED || type == Type.HOST_UPDATED) { + this.prevSubject = prevSubject; + } } /** - * Gets the previous location information in this host event. + * Gets the previous subject in this host event. * - * @return the previous location, or null if previous location is not + * @return the previous subject, or null if previous subject is not * specified. */ - public HostLocation prevLocation() { - return this.prevLocation; + public Host prevSubject() { + return this.prevSubject; } @Override @@ -104,7 +107,7 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { .add("time", new LocalDateTime(time())) .add("type", type()) .add("subject", subject()) - .add("prevLocation", prevLocation()) + .add("prevSubject", prevSubject()) .toString(); } } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java index 891eb65d..cba17640 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java @@ -20,6 +20,7 @@ import org.onosproject.net.AbstractDescription; import org.onosproject.net.ConnectPoint; import org.onosproject.net.Link; import org.onosproject.net.SparseAnnotations; +import com.google.common.base.Objects; /** * Default implementation of immutable link description entity. @@ -70,4 +71,23 @@ public class DefaultLinkDescription extends AbstractDescription .add("type", type()).toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), src, dst, type); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultLinkDescription that = (DefaultLinkDescription) object; + return Objects.equal(this.src, that.src) + && Objects.equal(this.dst, that.dst) + && Objects.equal(this.type, that.type); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java index 3aa29f6b..d87682a9 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java @@ -19,12 +19,14 @@ import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; -import java.util.Arrays; +import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Optional; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; /** * An object that is used to locate a resource in a network. @@ -32,32 +34,45 @@ import static com.google.common.base.Preconditions.checkNotNull; * of elementary resources that are not globally identifiable. A ResourcePath can be a globally * unique resource identifier. * + * Two types of resource are considered. One is discrete type and the other is continuous type. + * Discrete type resource is a resource whose amount is measured as a discrete unit. VLAN ID and + * MPLS label are examples of discrete type resource. Continuous type resource is a resource whose + * amount is measured as a continuous value. Bandwidth is an example of continuous type resource. + * A double value is associated with a continuous type value. + * * Users of this class must keep the semantics of resources regarding the hierarchical structure. * For example, resource path, Link:1/VLAN ID:100, is valid, but resource path, VLAN ID:100/Link:1 * is not valid because a link is not a sub-component of a VLAN ID. */ @Beta -public final class ResourcePath { +public abstract class ResourcePath { - private final List<Object> resources; + private final Discrete parent; + private final Object last; - public static final ResourcePath ROOT = new ResourcePath(ImmutableList.of()); + public static final Discrete ROOT = new Discrete(); - public static ResourcePath child(ResourcePath parent, Object child) { - ImmutableList<Object> components = ImmutableList.builder() - .addAll(parent.components()) - .add(child) - .build(); - return new ResourcePath(components); + /** + * Creates an resource path which represents a discrete-type resource from the specified components. + * + * @param components components of the path. The order represents hierarchical structure of the resource. + */ + public static ResourcePath discrete(Object... components) { + if (components.length == 0) { + return ROOT; + } else { + return new Discrete(ImmutableList.copyOf(components)); + } } /** - * Creates an resource path from the specified components. + * Creates an resource path which represents a continuous-type resource from the specified components. * + * @param value amount of the resource * @param components components of the path. The order represents hierarchical structure of the resource. */ - public ResourcePath(Object... components) { - this(Arrays.asList(components)); + public static ResourcePath continuous(double value, Object... components) { + return new Continuous(ImmutableList.copyOf(components), value); } /** @@ -65,15 +80,37 @@ public final class ResourcePath { * * @param components components of the path. The order represents hierarchical structure of the resource. */ - public ResourcePath(List<Object> components) { + ResourcePath(List<Object> components) { checkNotNull(components); + checkArgument(!components.isEmpty()); + + LinkedList<Object> children = new LinkedList<>(components); + this.last = children.pollLast(); + if (children.isEmpty()) { + this.parent = ROOT; + } else { + this.parent = new Discrete(children); + } + } - this.resources = ImmutableList.copyOf(components); + /** + * Creates an resource path from the specified parent and child. + * + * @param parent the parent of this resource + * @param last a child of the parent + */ + ResourcePath(Discrete parent, Object last) { + checkNotNull(parent); + checkNotNull(last); + + this.parent = parent; + this.last = last; } // for serialization private ResourcePath() { - this.resources = null; + this.parent = null; + this.last = null; } /** @@ -82,7 +119,15 @@ public final class ResourcePath { * @return the components of this resource path */ public List<Object> components() { - return resources; + LinkedList<Object> components = new LinkedList<>(); + + ResourcePath current = this; + while (current.parent().isPresent()) { + components.addFirst(current.last); + current = current.parent; + } + + return components; } /** @@ -92,21 +137,20 @@ public final class ResourcePath { * @return the parent resource path of this instance. * If there is no parent, empty instance will be returned. */ - public Optional<ResourcePath> parent() { - if (!isRoot()) { - return Optional.of(new ResourcePath(resources.subList(0, resources.size() - 1))); - } + public Optional<Discrete> parent() { + return Optional.ofNullable(parent); + } + + public ResourcePath child(Object child) { + checkState(this instanceof Discrete); - return Optional.empty(); + return new Discrete((Discrete) this, child); } - /** - * Returns true if the path represents root. - * - * @return true if the path represents root, false otherwise. - */ - public boolean isRoot() { - return resources.size() == 0; + public ResourcePath child(Object child, double value) { + checkState(this instanceof Discrete); + + return new Continuous((Discrete) this, child, value); } /** @@ -115,14 +159,13 @@ public final class ResourcePath { * @return the last component of this instance. * The return value is equal to the last object of {@code components()}. */ - public Object lastComponent() { - int last = resources.size() - 1; - return resources.get(last); + public Object last() { + return last; } @Override public int hashCode() { - return resources.hashCode(); + return Objects.hash(this.parent, this.last); } @Override @@ -134,13 +177,68 @@ public final class ResourcePath { return false; } final ResourcePath that = (ResourcePath) obj; - return Objects.equals(this.resources, that.resources); + return Objects.equals(this.parent, that.parent) + && Objects.equals(this.last, that.last); } @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("resources", resources) + .add("parent", parent) + .add("last", last) .toString(); } + + /** + * Represents a resource path which specifies a resource which can be measured + * as a discrete unit. A VLAN ID and a MPLS label of a link are examples of the resource. + * <p> + * Note: This class is exposed to the public, but intended to be used in the resource API + * implementation only. It is not for resource API user. + * </p> + */ + public static final class Discrete extends ResourcePath { + private Discrete() { + super(); + } + + private Discrete(List<Object> components) { + super(components); + } + + private Discrete(Discrete parent, Object last) { + super(parent, last); + } + } + + /** + * Represents a resource path which specifies a resource which can be measured + * as continuous value. Bandwidth of a link is an example of the resource. + * <p> + * Note: This class is exposed to the public, but intended to be used in the resource API + * implementation only. It is not for resource API user. + */ + public static final class Continuous extends ResourcePath { + // Note: value is not taken into account for equality + private final double value; + + private Continuous(List<Object> components, double value) { + super(components); + this.value = value; + } + + public Continuous(Discrete parent, Object last, double value) { + super(parent, last); + this.value = value; + } + + /** + * Returns the value of the resource amount. + * + * @return the value of the resource amount + */ + public double value() { + return value; + } + } } diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java index a84927a0..5f448221 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java @@ -38,9 +38,9 @@ public class ResourceAllocationTest { @Test public void testEquals() { - ResourceAllocation alloc1 = new ResourceAllocation(new ResourcePath(LK1, VLAN1), IID1); - ResourceAllocation sameAsAlloc1 = new ResourceAllocation(new ResourcePath(LK1, VLAN1), IID1); - ResourceAllocation alloc2 = new ResourceAllocation(new ResourcePath(LK2, VLAN1), IID1); + ResourceAllocation alloc1 = new ResourceAllocation(ResourcePath.discrete(LK1, VLAN1), IID1); + ResourceAllocation sameAsAlloc1 = new ResourceAllocation(ResourcePath.discrete(LK1, VLAN1), IID1); + ResourceAllocation alloc2 = new ResourceAllocation(ResourcePath.discrete(LK2, VLAN1), IID1); new EqualsTester() .addEqualityGroup(alloc1, sameAsAlloc1) diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java index 4a8886a4..35dcf1ec 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java @@ -18,6 +18,7 @@ package org.onosproject.net.newresource; import com.google.common.testing.EqualsTester; import org.junit.Test; import org.onlab.packet.VlanId; +import org.onlab.util.Bandwidth; import org.onosproject.net.ConnectPoint; import org.onosproject.net.DeviceId; import org.onosproject.net.LinkKey; @@ -25,6 +26,7 @@ import org.onosproject.net.PortNumber; import java.util.Optional; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; @@ -36,37 +38,49 @@ public class ResourcePathTest { private static final ConnectPoint CP1_1 = new ConnectPoint(D1, P1); private static final ConnectPoint CP2_1 = new ConnectPoint(D2, P1); private static final VlanId VLAN1 = VlanId.vlanId((short) 100); + private static final Bandwidth BW1 = Bandwidth.gbps(2); + private static final Bandwidth BW2 = Bandwidth.gbps(1); @Test public void testEquals() { - ResourcePath resource1 = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath sameAsResource1 = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath resource2 = new ResourcePath(LinkKey.linkKey(CP2_1, CP1_1), VLAN1); + ResourcePath resource1 = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath sameAsResource1 = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath resource2 = ResourcePath.discrete(LinkKey.linkKey(CP2_1, CP1_1), VLAN1); + ResourcePath resource3 = ResourcePath.continuous(BW1.bps(), LinkKey.linkKey(CP1_1, CP2_1), BW1); + ResourcePath sameAsResource3 = ResourcePath.continuous(BW2.bps(), LinkKey.linkKey(CP1_1, CP2_1), BW1); new EqualsTester() .addEqualityGroup(resource1, sameAsResource1) .addEqualityGroup(resource2) + .addEqualityGroup(resource3, sameAsResource3) // this is intentional .testEquals(); } @Test public void testCreateWithZeroComponent() { - ResourcePath path = new ResourcePath(); + ResourcePath path = ResourcePath.discrete(); assertThat(path, is(ResourcePath.ROOT)); } @Test + public void testComponents() { + ResourcePath port = ResourcePath.discrete(D1, P1); + + assertThat(port.components(), contains(D1, P1)); + } + + @Test public void testThereIsParent() { - ResourcePath path = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath parent = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1)); + ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath parent = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1)); assertThat(path.parent(), is(Optional.of(parent))); } @Test public void testNoParent() { - ResourcePath path = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1)); + ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1)); assertThat(path.parent(), is(Optional.of(ResourcePath.ROOT))); } @@ -74,9 +88,9 @@ public class ResourcePathTest { @Test public void testBase() { LinkKey linkKey = LinkKey.linkKey(CP1_1, CP2_1); - ResourcePath path = new ResourcePath(linkKey); + ResourcePath path = ResourcePath.discrete(linkKey); - LinkKey child = (LinkKey) path.lastComponent(); + LinkKey child = (LinkKey) path.last(); assertThat(child, is(linkKey)); } } diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java index 4f612de2..02462e85 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java @@ -30,7 +30,8 @@ import org.onlab.util.KryoNamespace; import org.onosproject.cluster.NodeId; import org.onosproject.store.Timestamp; -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.*; +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE; /** * Testing version of an Eventually Consistent Map. diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java index acc5a5d5..718c7bbf 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java @@ -121,7 +121,7 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> { } List<ResourcePath> resources = labels.entrySet().stream() - .map(x -> new ResourcePath(linkKey(x.getKey().src(), x.getKey().src()), x.getValue())) + .map(x -> ResourcePath.discrete(linkKey(x.getKey().src(), x.getKey().src()), x.getValue())) .collect(Collectors.toList()); List<org.onosproject.net.newresource.ResourceAllocation> allocations = resourceService.allocate(intent.id(), resources); @@ -145,9 +145,9 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> { } private Optional<MplsLabel> findMplsLabel(LinkKey link) { - return resourceService.getAvailableResources(new ResourcePath(link)).stream() - .filter(x -> x.lastComponent() instanceof MplsLabel) - .map(x -> (MplsLabel) x.lastComponent()) + return resourceService.getAvailableResources(ResourcePath.discrete(link)).stream() + .filter(x -> x.last() instanceof MplsLabel) + .map(x -> (MplsLabel) x.last()) .findFirst(); } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java index fce8498c..ee04aab5 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java @@ -160,8 +160,8 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu log.debug("Compiling optical circuit intent between {} and {}", src, dst); // Reserve OduClt ports - ResourcePath srcPortPath = new ResourcePath(src.deviceId(), src.port()); - ResourcePath dstPortPath = new ResourcePath(dst.deviceId(), dst.port()); + ResourcePath srcPortPath = ResourcePath.discrete(src.deviceId(), src.port()); + ResourcePath dstPortPath = ResourcePath.discrete(dst.deviceId(), dst.port()); List<ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortPath, dstPortPath); if (allocation.isEmpty()) { throw new IntentCompilationException("Unable to reserve ports for intent " + intent); @@ -312,7 +312,7 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu if (ochCP != null) { OchPort ochPort = (OchPort) deviceService.getPort(ochCP.deviceId(), ochCP.port()); Optional<IntentId> intentId = - resourceService.getResourceAllocation(new ResourcePath(ochCP.deviceId(), ochCP.port())) + resourceService.getResourceAllocation(ResourcePath.discrete(ochCP.deviceId(), ochCP.port())) .map(ResourceAllocation::consumer) .filter(x -> x instanceof IntentId) .map(x -> (IntentId) x); @@ -331,7 +331,7 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu } Optional<IntentId> intentId = - resourceService.getResourceAllocation(new ResourcePath(oduPort.deviceId(), port.number())) + resourceService.getResourceAllocation(ResourcePath.discrete(oduPort.deviceId(), port.number())) .map(ResourceAllocation::consumer) .filter(x -> x instanceof IntentId) .map(x -> (IntentId) x); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java index d6725b7c..a4ed551a 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java @@ -107,8 +107,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical log.debug("Compiling optical connectivity intent between {} and {}", src, dst); // Reserve OCh ports - ResourcePath srcPortPath = new ResourcePath(src.deviceId(), src.port()); - ResourcePath dstPortPath = new ResourcePath(dst.deviceId(), dst.port()); + ResourcePath srcPortPath = ResourcePath.discrete(src.deviceId(), src.port()); + ResourcePath dstPortPath = ResourcePath.discrete(dst.deviceId(), dst.port()); List<org.onosproject.net.newresource.ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortPath, dstPortPath); if (allocation.isEmpty()) { @@ -182,8 +182,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical IndexedLambda minLambda = findFirstLambda(lambdas); List<ResourcePath> lambdaResources = path.links().stream() - .map(x -> new ResourcePath(linkKey(x.src(), x.dst()))) - .map(x -> ResourcePath.child(x, minLambda)) + .map(x -> ResourcePath.discrete(linkKey(x.src(), x.dst()))) + .map(x -> x.child(minLambda)) .collect(Collectors.toList()); List<ResourceAllocation> allocations = resourceService.allocate(intent.id(), lambdaResources); @@ -196,10 +196,10 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical private Set<IndexedLambda> findCommonLambdasOverLinks(List<Link> links) { return links.stream() - .map(x -> new ResourcePath(linkKey(x.src(), x.dst()))) + .map(x -> ResourcePath.discrete(linkKey(x.src(), x.dst()))) .map(resourceService::getAvailableResources) - .map(x -> Iterables.filter(x, r -> r.lastComponent() instanceof IndexedLambda)) - .map(x -> Iterables.transform(x, r -> (IndexedLambda) r.lastComponent())) + .map(x -> Iterables.filter(x, r -> r.last() instanceof IndexedLambda)) + .map(x -> Iterables.transform(x, r -> (IndexedLambda) r.last())) .map(x -> (Set<IndexedLambda>) ImmutableSet.copyOf(x)) .reduce(Sets::intersection) .orElse(Collections.emptySet()); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java index e6d92253..066dd33e 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java @@ -75,12 +75,12 @@ final class ResourceDeviceListener implements DeviceListener { } private void registerPortResource(Device device, Port port) { - ResourcePath parent = new ResourcePath(device.id()); + ResourcePath parent = ResourcePath.discrete(device.id()); executor.submit(() -> adminService.registerResources(parent, port.number())); } private void unregisterPortResource(Device device, Port port) { - ResourcePath parent = new ResourcePath(device.id()); + ResourcePath parent = ResourcePath.discrete(device.id()); executor.submit(() -> adminService.unregisterResources(parent, port.number())); } } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java index f04c78b9..68fd6612 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java @@ -87,7 +87,7 @@ final class ResourceLinkListener implements LinkListener { LinkKey linkKey = LinkKey.linkKey(link); adminService.registerResources(ResourcePath.ROOT, linkKey); - ResourcePath linkPath = new ResourcePath(linkKey); + ResourcePath linkPath = ResourcePath.discrete(linkKey); // register VLAN IDs against the link if (isEnabled(link, this::isVlanEnabled)) { adminService.registerResources(linkPath, ENTIRE_VLAN_IDS); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java index 77a32f45..1c6930bb 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java @@ -169,7 +169,7 @@ public final class ResourceManager extends AbstractListenerManager<ResourceEvent checkNotNull(children); checkArgument(!children.isEmpty()); - List<ResourcePath> resources = Lists.transform(children, x -> ResourcePath.child(parent, x)); + List<ResourcePath> resources = Lists.transform(children, parent::child); return store.register(resources); } @@ -179,7 +179,7 @@ public final class ResourceManager extends AbstractListenerManager<ResourceEvent checkNotNull(children); checkArgument(!children.isEmpty()); - List<ResourcePath> resources = Lists.transform(children, x -> ResourcePath.child(parent, x)); + List<ResourcePath> resources = Lists.transform(children, parent::child); return store.unregister(resources); } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java index 8e87a07d..793030f2 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java @@ -312,9 +312,13 @@ public class PacketManager public void processPacket(PacketContext context) { // TODO filter packets sent to processors based on registrations for (ProcessorEntry entry : processors) { - long start = System.nanoTime(); - entry.processor().process(context); - entry.addNanos(System.nanoTime() - start); + try { + long start = System.nanoTime(); + entry.processor().process(context); + entry.addNanos(System.nanoTime() - start); + } catch (Exception e) { + log.warn("Packet processor {} threw an exception", entry.processor(), e); + } } } diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java index 8d7452b3..eb7f2ccd 100644 --- a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java +++ b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java @@ -231,7 +231,7 @@ public class ObjectiveTrackerTest { @Test public void testResourceEvent() throws Exception { ResourceEvent event = new ResourceEvent(RESOURCE_ADDED, - new ResourcePath(linkKey(link("a", 1, "b", 1)))); + ResourcePath.discrete(linkKey(link("a", 1, "b", 1)))); resourceListener.event(event); assertThat( diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java index 8ec09bd1..f5d3d0f3 100644 --- a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java +++ b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java @@ -90,7 +90,7 @@ class MockResourceService implements ResourceService { @Override public Collection<ResourcePath> getAvailableResources(ResourcePath parent) { - ResourcePath resource = ResourcePath.child(parent, MplsLabel.mplsLabel(10)); + ResourcePath resource = parent.child(MplsLabel.mplsLabel(10)); return ImmutableList.of(resource); } diff --git a/framework/src/onos/core/store/dist/pom.xml b/framework/src/onos/core/store/dist/pom.xml index f2ec2a71..0b8b72bc 100644 --- a/framework/src/onos/core/store/dist/pom.xml +++ b/framework/src/onos/core/store/dist/pom.xml @@ -69,6 +69,12 @@ </dependency> <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-core-persistence</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> <version>1.0.8</version> @@ -110,5 +116,4 @@ <artifactId>onlab-thirdparty</artifactId> </dependency> </dependencies> - </project> diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java index dda820ae..fe4aa0be 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java @@ -183,21 +183,34 @@ public class GossipApplicationStore extends ApplicationArchive * they are marked to be active. */ private void loadFromDisk() { - for (String name : getApplicationNames()) { - for (int i = 0; i < MAX_LOAD_RETRIES; i++) { - try { - Application app = create(getApplicationDescription(name), false); - if (app != null && isActive(app.id().name())) { - requiredBy.put(app.id(), coreAppId); - activate(app.id(), false); - // load app permissions - } - } catch (Exception e) { - log.warn("Unable to load application {} from disk; retrying", name); - randomDelay(RETRY_DELAY_MS); // FIXME: This is a deliberate hack; fix in Drake + getApplicationNames().forEach(appName -> { + Application app = loadFromDisk(appName); + if (app != null && isActive(app.id().name())) { + activate(app.id(), false); + // TODO Load app permissions + } + }); + } + + private Application loadFromDisk(String appName) { + for (int i = 0; i < MAX_LOAD_RETRIES; i++) { + try { + // Directly return if app already exists + ApplicationId appId = getId(appName); + if (appId != null) { + return getApplication(appId); } + + ApplicationDescription appDesc = getApplicationDescription(appName); + boolean success = appDesc.requiredApps().stream() + .noneMatch(requiredApp -> loadFromDisk(requiredApp) == null); + return success ? create(appDesc, false) : null; + } catch (Exception e) { + log.warn("Unable to load application {} from disk; retrying", appName); + randomDelay(RETRY_DELAY_MS); //FIXME: This is a deliberate hack; fix in Falcon } } + return null; } @Deactivate diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java index e4a09cef..3cd992bb 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java @@ -7,6 +7,7 @@ import static org.slf4j.LoggerFactory.getLogger; import java.io.File; import java.io.IOException; import java.net.InetAddress; +import java.net.Inet4Address; import java.net.NetworkInterface; import java.util.Arrays; import java.util.Collection; @@ -58,6 +59,7 @@ public class StaticClusterMetadataStore private static final String ONOS_IP = "ONOS_IP"; private static final String ONOS_INTERFACE = "ONOS_INTERFACE"; + private static final String ONOS_ALLOW_IPV6 = "ONOS_ALLOW_IPV6"; private static final String DEFAULT_ONOS_INTERFACE = "eth0"; private static final String CLUSTER_METADATA_FILE = "../config/cluster.json"; private static final int DEFAULT_ONOS_PORT = 9876; @@ -214,13 +216,25 @@ public class StaticClusterMetadataStore useOnosInterface = DEFAULT_ONOS_INTERFACE; } + // Capture if they want to limit IP address selection to only IPv4 (default). + boolean allowIPv6 = (System.getenv(ONOS_ALLOW_IPV6) != null); + Function<NetworkInterface, IpAddress> ipLookup = nif -> { - for (InetAddress address : Collections.list(nif.getInetAddresses())) { - if (address.isSiteLocalAddress()) { - return IpAddress.valueOf(address); + IpAddress fallback = null; + + // nif can be null if the interface name specified doesn't exist on the node's host + if (nif != null) { + for (InetAddress address : Collections.list(nif.getInetAddresses())) { + if (address.isSiteLocalAddress() && (allowIPv6 || address instanceof Inet4Address)) { + return IpAddress.valueOf(address); + } + if (fallback == null && !address.isLoopbackAddress() && !address.isMulticastAddress() + && (allowIPv6 || address instanceof Inet4Address)) { + fallback = IpAddress.valueOf(address); + } } } - return null; + return fallback; }; try { IpAddress ip = ipLookup.apply(NetworkInterface.getByName(useOnosInterface)); @@ -228,14 +242,17 @@ public class StaticClusterMetadataStore return ip.toString(); } for (NetworkInterface nif : Collections.list(getNetworkInterfaces())) { - ip = ipLookup.apply(nif); - if (ip != null) { - return ip.toString(); + if (!nif.getName().equals(useOnosInterface)) { + ip = ipLookup.apply(nif); + if (ip != null) { + return ip.toString(); + } } } } catch (Exception e) { throw new IllegalStateException("Unable to get network interfaces", e); } + return IpAddress.valueOf(InetAddress.getLoopbackAddress()).toString(); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java index 3e73d8f4..ca8eea37 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java @@ -60,6 +60,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import static com.google.common.base.Preconditions.checkArgument; import static org.onosproject.net.config.NetworkConfigEvent.Type.*; /** @@ -71,10 +72,12 @@ public class DistributedNetworkConfigStore extends AbstractStore<NetworkConfigEvent, NetworkConfigStoreDelegate> implements NetworkConfigStore { - private static final int MAX_BACKOFF = 10; - private final Logger log = LoggerFactory.getLogger(getClass()); + private static final int MAX_BACKOFF = 10; + private static final String INVALID_CONFIG_JSON = + "JSON node does not contain valid configuration"; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected StorageService storageService; @@ -187,8 +190,17 @@ public class DistributedNetworkConfigStore @Override public <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json) { - return createConfig(subject, configClass, - configs.putAndGet(key(subject, configClass), json).value()); + // Create the configuration and validate it. + C config = createConfig(subject, configClass, json); + checkArgument(config.isValid(), INVALID_CONFIG_JSON); + + // Insert the validated configuration and get it back. + Versioned<JsonNode> versioned = configs.putAndGet(key(subject, configClass), json); + + // Re-create the config if for some reason what we attempted to put + // was supplanted by someone else already. + return versioned.value() == json ? config : + createConfig(subject, configClass, versioned.value()); } @Override diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java index 7e575b01..92db5b44 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java @@ -26,8 +26,12 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; /** - * Extension of DefaultAsyncConsistentMap that provides a weaker read consistency + * Extension of {@link DefaultAsyncConsistentMap} that provides a weaker read consistency * guarantee in return for better read performance. + * <p> + * For read/write operations that are local to a node this map implementation provides + * guarantees similar to a ConsistentMap. However for read/write operations executed + * across multiple nodes this implementation only provides eventual consistency. * * @param <K> key type * @param <V> value type @@ -68,4 +72,10 @@ public class AsyncCachingConsistentMap<K, V> extends DefaultAsyncConsistentMap<K } return cache.getUnchecked(key); } + + @Override + protected void beforeUpdate(K key) { + super.beforeUpdate(key); + cache.invalidate(key); + } }
\ No newline at end of file diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java index 3e89635a..90d81ee7 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java @@ -55,6 +55,7 @@ import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.NodeId; import org.onosproject.core.ApplicationId; import org.onosproject.core.IdGenerator; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.ecmap.EventuallyConsistentMapBuilderImpl; import org.onosproject.store.service.AtomicCounterBuilder; @@ -128,6 +129,9 @@ public class DatabaseManager implements StorageService, StorageAdminService { @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected ClusterCommunicationService clusterCommunicator; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected PersistenceService persistenceService; + protected String nodeIdToUri(NodeId nodeId) { ControllerNode node = clusterService.getNode(nodeId); return String.format("onos://%s:%d", node.ip(), node.tcpPort()); @@ -312,7 +316,8 @@ public class DatabaseManager implements StorageService, StorageAdminService { @Override public <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder() { return new EventuallyConsistentMapBuilderImpl<>(clusterService, - clusterCommunicator); + clusterCommunicator, + persistenceService); } @Override diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java index 0ea66861..c6d300c9 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java @@ -405,6 +405,14 @@ public class DefaultAsyncConsistentMap<K, V> implements AsyncConsistentMap<K, V .thenApply(v -> v.updated()); } + /** + * Pre-update hook for performing required checks/actions before going forward with an update operation. + * @param key map key. + */ + protected void beforeUpdate(K key) { + checkIfUnmodifiable(); + } + private Map.Entry<K, Versioned<V>> mapRawEntry(Map.Entry<String, Versioned<byte[]>> e) { return Maps.immutableEntry(dK(e.getKey()), e.getValue().<V>map(serializer::decode)); } @@ -413,7 +421,7 @@ public class DefaultAsyncConsistentMap<K, V> implements AsyncConsistentMap<K, V Match<V> oldValueMatch, Match<Long> oldVersionMatch, V value) { - checkIfUnmodifiable(); + beforeUpdate(key); return database.mapUpdate(name, keyCache.getUnchecked(key), oldValueMatch.map(serializer::encode), diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java index a553ffff..eb98c829 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java @@ -18,6 +18,7 @@ package org.onosproject.store.ecmap; import org.onlab.util.KryoNamespace; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.NodeId; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.service.EventuallyConsistentMap; @@ -52,6 +53,8 @@ public class EventuallyConsistentMapBuilderImpl<K, V> private TimeUnit antiEntropyTimeUnit = TimeUnit.SECONDS; private boolean convergeFaster = false; private boolean persistent = false; + private boolean persistentMap = false; + private final PersistenceService persistenceService; /** * Creates a new eventually consistent map builder. @@ -60,7 +63,9 @@ public class EventuallyConsistentMapBuilderImpl<K, V> * @param clusterCommunicator cluster communication service */ public EventuallyConsistentMapBuilderImpl(ClusterService clusterService, - ClusterCommunicationService clusterCommunicator) { + ClusterCommunicationService clusterCommunicator, + PersistenceService persistenceService) { + this.persistenceService = persistenceService; this.clusterService = checkNotNull(clusterService); this.clusterCommunicator = checkNotNull(clusterCommunicator); } @@ -133,6 +138,7 @@ public class EventuallyConsistentMapBuilderImpl<K, V> @Override public EventuallyConsistentMapBuilder<K, V> withPersistence() { + checkNotNull(this.persistenceService); persistent = true; return this; } @@ -156,6 +162,7 @@ public class EventuallyConsistentMapBuilderImpl<K, V> antiEntropyPeriod, antiEntropyTimeUnit, convergeFaster, - persistent); + persistent, + persistenceService); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java index f1e0dbd4..b5ea52e0 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java @@ -28,6 +28,7 @@ import org.onlab.util.SlidingWindowCounter; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.NodeId; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.cluster.messaging.MessageSubject; @@ -37,6 +38,7 @@ import org.onosproject.store.serializers.KryoSerializer; import org.onosproject.store.service.EventuallyConsistentMap; import org.onosproject.store.service.EventuallyConsistentMapEvent; import org.onosproject.store.service.EventuallyConsistentMapListener; +import org.onosproject.store.service.Serializer; import org.onosproject.store.service.WallClockTimestamp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,6 +83,7 @@ public class EventuallyConsistentMapImpl<K, V> private final ClusterCommunicationService clusterCommunicator; private final KryoSerializer serializer; private final NodeId localNodeId; + private final PersistenceService persistenceService; private final BiFunction<K, V, Timestamp> timestampProvider; @@ -116,7 +119,9 @@ public class EventuallyConsistentMapImpl<K, V> private SlidingWindowCounter counter = new SlidingWindowCounter(WINDOW_SIZE); private final boolean persistent; - private final PersistentStore<K, V> persistentStore; + + private static final String PERSISTENT_LOCAL_MAP_NAME = "itemsMap"; + /** * Creates a new eventually consistent map shared amongst multiple instances. @@ -158,9 +163,32 @@ public class EventuallyConsistentMapImpl<K, V> long antiEntropyPeriod, TimeUnit antiEntropyTimeUnit, boolean convergeFaster, - boolean persistent) { + boolean persistent, + PersistenceService persistenceService) { this.mapName = mapName; - items = Maps.newConcurrentMap(); + this.serializer = createSerializer(serializerBuilder); + this.persistenceService = persistenceService; + this.persistent = + persistent; + if (persistent) { + items = this.persistenceService.<K, MapValue<V>>persistentMapBuilder() + .withName(PERSISTENT_LOCAL_MAP_NAME) + .withSerializer(new Serializer() { + + @Override + public <T> byte[] encode(T object) { + return EventuallyConsistentMapImpl.this.serializer.encode(object); + } + + @Override + public <T> T decode(byte[] bytes) { + return EventuallyConsistentMapImpl.this.serializer.decode(bytes); + } + }) + .build(); + } else { + items = Maps.newConcurrentMap(); + } senderPending = Maps.newConcurrentMap(); destroyedMessage = mapName + ERROR_DESTROYED; @@ -168,8 +196,6 @@ public class EventuallyConsistentMapImpl<K, V> this.clusterCommunicator = clusterCommunicator; this.localNodeId = clusterService.getLocalNode().id(); - this.serializer = createSerializer(serializerBuilder); - this.timestampProvider = timestampProvider; if (peerUpdateFunction != null) { @@ -198,20 +224,6 @@ public class EventuallyConsistentMapImpl<K, V> newFixedThreadPool(8, groupedThreads("onos/ecm", mapName + "-publish-%d")); } - this.persistent = persistent; - - if (this.persistent) { - String dataDirectory = System.getProperty("karaf.data", "./data"); - String filename = dataDirectory + "/" + "mapdb-ecm-" + mapName; - - ExecutorService dbExecutor = - newFixedThreadPool(1, groupedThreads("onos/ecm", mapName + "-dbwriter")); - - persistentStore = new MapDbPersistentStore<>(filename, dbExecutor, serializer); - persistentStore.readInto(items); - } else { - this.persistentStore = null; - } if (backgroundExecutor != null) { this.backgroundExecutor = backgroundExecutor; @@ -373,15 +385,6 @@ public class EventuallyConsistentMapImpl<K, V> return existing; } }); - if (updated.get()) { - if (persistent) { - if (tombstone.isPresent()) { - persistentStore.update(key, tombstone.get()); - } else { - persistentStore.remove(key); - } - } - } return previousValue.get(); } @@ -455,6 +458,7 @@ public class EventuallyConsistentMapImpl<K, V> /** * Returns true if newValue was accepted i.e. map is updated. + * * @param key key * @param newValue proposed new value * @return true if update happened; false if map already contains a more recent value for the key @@ -473,9 +477,6 @@ public class EventuallyConsistentMapImpl<K, V> } return existing; }); - if (updated.get() && persistent) { - persistentStore.update(key, newValue); - } return updated.get(); } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java index 391a88f7..20124576 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java @@ -19,6 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static org.onosproject.net.DefaultAnnotations.merge; import static org.onosproject.net.host.HostEvent.Type.HOST_ADDED; +import static org.onosproject.net.host.HostEvent.Type.HOST_MOVED; import static org.onosproject.net.host.HostEvent.Type.HOST_REMOVED; import static org.onosproject.net.host.HostEvent.Type.HOST_UPDATED; import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; @@ -88,7 +89,7 @@ public class ECHostStore private EventuallyConsistentMap<HostId, DefaultHost> hosts; - private final ConcurrentHashMap<HostId, HostLocation> locations = + private final ConcurrentHashMap<HostId, DefaultHost> prevHosts = new ConcurrentHashMap<>(); private EventuallyConsistentMapListener<HostId, DefaultHost> hostLocationTracker = @@ -114,7 +115,7 @@ public class ECHostStore public void deactivate() { hosts.removeListener(hostLocationTracker); hosts.destroy(); - locations.clear(); + prevHosts.clear(); log.info("Stopped"); } @@ -253,16 +254,16 @@ public class ECHostStore public void event(EventuallyConsistentMapEvent<HostId, DefaultHost> event) { DefaultHost host = checkNotNull(event.value()); if (event.type() == PUT) { - HostLocation prevLocation = locations.put(host.id(), host.location()); - if (prevLocation == null) { + Host prevHost = prevHosts.put(host.id(), host); + if (prevHost == null) { notifyDelegate(new HostEvent(HOST_ADDED, host)); - } else if (!Objects.equals(prevLocation, host.location())) { - notifyDelegate(new HostEvent(host, prevLocation)); - } else { - notifyDelegate(new HostEvent(HOST_UPDATED, host)); + } else if (!Objects.equals(prevHost.location(), host.location())) { + notifyDelegate(new HostEvent(HOST_MOVED, host, prevHost)); + } else if (!Objects.equals(prevHost, host)) { + notifyDelegate(new HostEvent(HOST_UPDATED, host, prevHost)); } } else if (event.type() == REMOVE) { - if (locations.remove(host.id()) != null) { + if (prevHosts.remove(host.id()) != null) { notifyDelegate(new HostEvent(HOST_REMOVED, host)); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java index 4d9e3cbf..0335ba5d 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java @@ -264,7 +264,7 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour } return children.value().stream() - .filter(x -> x.lastComponent().getClass().equals(cls)) + .filter(x -> x.last().getClass().equals(cls)) .filter(consumerMap::containsKey) .collect(Collectors.toList()); } @@ -344,7 +344,7 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour */ private boolean isRegistered(TransactionalMap<ResourcePath, List<ResourcePath>> map, ResourcePath resource) { // root is always regarded to be registered - if (resource.isRoot()) { + if (!resource.parent().isPresent()) { return true; } diff --git a/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java b/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java index ccf6ee71..ef8d9924 100644 --- a/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java +++ b/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java @@ -42,6 +42,7 @@ import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.DefaultControllerNode; import org.onosproject.cluster.NodeId; import org.onosproject.event.AbstractEvent; +import org.onosproject.persistence.impl.PersistenceManager; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.cluster.messaging.ClusterCommunicationServiceAdapter; @@ -81,6 +82,7 @@ public class EventuallyConsistentMapImplTest { private EventuallyConsistentMap<String, String> ecMap; + private PersistenceManager persistenceService; private ClusterService clusterService; private ClusterCommunicationService clusterCommunicator; private SequentialClockService<String, String> clockService; @@ -136,6 +138,8 @@ public class EventuallyConsistentMapImplTest { clusterCommunicator = createMock(ClusterCommunicationService.class); + persistenceService = new PersistenceManager(); + persistenceService.activate(); // Add expectation for adding cluster message subscribers which // delegate to our ClusterCommunicationService implementation. This // allows us to get a reference to the map's internal cluster message @@ -153,11 +157,12 @@ public class EventuallyConsistentMapImplTest { .register(TestTimestamp.class); ecMap = new EventuallyConsistentMapBuilderImpl<String, String>( - clusterService, clusterCommunicator) + clusterService, clusterCommunicator, persistenceService) .withName(MAP_NAME) .withSerializer(serializer) .withTimestampProvider((k, v) -> clockService.getTimestamp(k, v)) .withCommunicationExecutor(MoreExecutors.newDirectExecutorService()) + .withPersistence() .build(); // Reset ready for tests to add their own expectations diff --git a/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java index b2199f70..6f96498f 100644 --- a/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java +++ b/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java @@ -416,6 +416,8 @@ public final class KryoNamespaces { BandwidthResourceAllocation.class, LambdaResourceAllocation.class, ResourcePath.class, + ResourcePath.Discrete.class, + ResourcePath.Continuous.class, ResourceAllocation.class, // Constraints LambdaConstraint.class, diff --git a/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java b/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java index 97ccb836..11a62d4e 100644 --- a/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java +++ b/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java @@ -373,13 +373,13 @@ public class KryoSerializerTest { @Test public void testResourcePath() { - testSerializedEquals(new ResourcePath(LinkKey.linkKey(CP1, CP2), VLAN1)); + testSerializedEquals(ResourcePath.discrete(LinkKey.linkKey(CP1, CP2), VLAN1)); } @Test public void testResourceAllocation() { testSerializedEquals(new org.onosproject.net.newresource.ResourceAllocation( - new ResourcePath(LinkKey.linkKey(CP1, CP2), VLAN1), + ResourcePath.discrete(LinkKey.linkKey(CP1, CP2), VLAN1), IntentId.valueOf(30))); } diff --git a/framework/src/onos/docs/external.xml b/framework/src/onos/docs/external.xml index 69ac0577..f2c568a6 100644 --- a/framework/src/onos/docs/external.xml +++ b/framework/src/onos/docs/external.xml @@ -49,7 +49,8 @@ <version>2.10.1</version> <configuration> <show>package</show> - <excludePackageNames>@external-excludes</excludePackageNames> + <excludePackageNames>@external-excludes + </excludePackageNames> <docfilessubdirs>true</docfilessubdirs> <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle> <groups> @@ -58,7 +59,8 @@ <packages>@external-apis</packages> </group> <group> - <title>Incubator for Network Model & Services</title> + <title>Incubator for Network Model & Services + </title> <packages>@external-incubator-apis</packages> </group> <group> @@ -66,6 +68,13 @@ <packages>@utils</packages> </group> </groups> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> </configuration> </plugin> </plugins> diff --git a/framework/src/onos/docs/internal.xml b/framework/src/onos/docs/internal.xml index 602479eb..e0ba3607 100644 --- a/framework/src/onos/docs/internal.xml +++ b/framework/src/onos/docs/internal.xml @@ -51,14 +51,16 @@ <show>package</show> <docfilessubdirs>true</docfilessubdirs> <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle> - <excludePackageNames>@internal-excludes</excludePackageNames> + <excludePackageNames>@internal-excludes + </excludePackageNames> <groups> <group> <title>Network Model & Services</title> <packages>@internal-apis</packages> </group> <group> - <title>Incubator for Network Model & Services</title> + <title>Incubator for Network Model & Services + </title> <packages>@internal-incubator-apis</packages> </group> <group> @@ -70,7 +72,9 @@ <packages>@internal-stores</packages> </group> <group> - <title>Incubator for Core Subsystems & Distributed Stores</title> + <title>Incubator for Core Subsystems & + Distributed Stores + </title> <packages>@internal-incubator</packages> </group> <group> @@ -114,10 +118,18 @@ <packages>@internal-apps</packages> </group> <group> - <title>Test Instrumentation & Applications</title> + <title>Test Instrumentation & Applications + </title> <packages>@internal-test-apps</packages> </group> </groups> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> </configuration> </plugin> </plugins> diff --git a/framework/src/onos/drivers/features.xml b/framework/src/onos/drivers/features.xml index a7144492..e83f93fa 100644 --- a/framework/src/onos/drivers/features.xml +++ b/framework/src/onos/drivers/features.xml @@ -24,5 +24,7 @@ <bundle>mvn:${project.groupId}/onos-ovsdb-api/${project.version}</bundle> <bundle>mvn:${project.groupId}/onos-ovsdb-rfc/${project.version}</bundle> + + <bundle>mvn:${project.groupId}/onos-netconf-api/${project.version}</bundle> </feature> </features> diff --git a/framework/src/onos/drivers/pom.xml b/framework/src/onos/drivers/pom.xml index 56a39a8e..db0a3985 100644 --- a/framework/src/onos/drivers/pom.xml +++ b/framework/src/onos/drivers/pom.xml @@ -67,6 +67,11 @@ <artifactId>easymock</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-netconf-api</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.felix</groupId> diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java index 082c5a6d..b8f1fd91 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java @@ -38,10 +38,12 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour @Override public boolean supported(ExtensionType extensionType) { - if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST)) { + if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) { + return true; + } + if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { return true; } - return false; } @@ -53,6 +55,9 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour return factory.actions().setField(factory.oxms().tunnelIpv4Dst( IPv4Address.of(tunnelDst.tunnelDst().toInt()))); } + if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { + // TODO this will be implemented later + } return null; } @@ -78,6 +83,9 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour if (type.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) { return new NiciraSetTunnelDst(); } + if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { + return new NiciraResubmit(); + } throw new UnsupportedOperationException( "Driver does not support extension type " + type.toString()); } diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java index 77b48298..6451160a 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java @@ -54,6 +54,13 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour } @Override + public void addBridge(BridgeName bridgeName, String dpid, String exPortName) { + DriverHandler handler = handler(); + OvsdbClientService clientService = getOvsdbClientService(handler); + clientService.createBridge(bridgeName.name(), dpid, exPortName); + } + + @Override public boolean addBridge(BridgeName bridgeName, String dpid, List<ControllerInfo> controllers) { DriverHandler handler = handler(); OvsdbClientService clientService = getOvsdbClientService(handler); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java deleted file mode 100644 index c735af3f..00000000 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * 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.driver.pipeline; - -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.EthType; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.Pipeliner; -import org.onosproject.net.behaviour.PipelinerContext; -import org.onosproject.net.device.DefaultDeviceDescription; -import org.onosproject.net.device.DeviceDescription; -import org.onosproject.net.device.DeviceProvider; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.AbstractHandlerBehaviour; -import org.onosproject.net.flow.DefaultFlowRule; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.FlowRule; -import org.onosproject.net.flow.FlowRuleOperations; -import org.onosproject.net.flow.FlowRuleOperationsContext; -import org.onosproject.net.flow.FlowRuleService; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.FilteringObjective; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.NextObjective; -import org.onosproject.net.flowobjective.ObjectiveError; -import org.onosproject.net.packet.PacketPriority; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.slf4j.Logger; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Pipeliner for OLT device. - */ -public class OLTPipeline extends AbstractHandlerBehaviour implements Pipeliner { - - private final Logger log = getLogger(getClass()); - - static final ProviderId PID = new ProviderId("olt", "org.onosproject.olt", true); - - static final String DEVICE = "isAccess"; - static final String OLT = "true"; - - private ServiceDirectory serviceDirectory; - private FlowRuleService flowRuleService; - private DeviceId deviceId; - private CoreService coreService; - - private ApplicationId appId; - - private DeviceProvider provider = new AnnotationProvider(); - - - @Override - public void init(DeviceId deviceId, PipelinerContext context) { - this.serviceDirectory = context.directory(); - this.deviceId = deviceId; - DeviceProviderRegistry registry = - serviceDirectory.get(DeviceProviderRegistry.class); - flowRuleService = serviceDirectory.get(FlowRuleService.class); - coreService = serviceDirectory.get(CoreService.class); - - /*try { - DeviceProviderService providerService = registry.register(provider); - providerService.deviceConnected(deviceId, - description(deviceId, DEVICE, OLT)); - } finally { - registry.unregister(provider); - }*/ - - appId = coreService.registerApplication( - "org.onosproject.driver.OLTPipeline"); - - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(EthType.EtherType.EAPOL.ethType().toShort()) - .build(); - - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .punt() - .build(); - - FlowRule flowRule = new DefaultFlowRule(deviceId, selector, treatment, - PacketPriority.CONTROL.priorityValue(), - appId, 0, true, null); - - //flowRuleService.applyFlowRules(flowRule); - } - - @Override - public void filter(FilteringObjective filter) { - throw new UnsupportedOperationException("OLT does not filter."); - } - - @Override - public void forward(ForwardingObjective fwd) { - FlowRuleOperations.Builder flowBuilder = FlowRuleOperations.builder(); - - if (fwd.flag() != ForwardingObjective.Flag.VERSATILE) { - throw new UnsupportedOperationException( - "Only VERSATILE is supported."); - } - - boolean isPunt = fwd.treatment().immediate().stream().anyMatch(i -> { - if (i instanceof Instructions.OutputInstruction) { - Instructions.OutputInstruction out = (Instructions.OutputInstruction) i; - return out.port().equals(PortNumber.CONTROLLER); - } - return false; - }); - - if (isPunt) { - return; - } - - TrafficSelector selector = fwd.selector(); - TrafficTreatment treatment = fwd.treatment(); - - FlowRule.Builder ruleBuilder = DefaultFlowRule.builder() - .forDevice(deviceId) - .withSelector(selector) - .withTreatment(treatment) - .fromApp(fwd.appId()) - .withPriority(fwd.priority()); - - if (fwd.permanent()) { - ruleBuilder.makePermanent(); - } else { - ruleBuilder.makeTemporary(fwd.timeout()); - } - - switch (fwd.op()) { - case ADD: - flowBuilder.add(ruleBuilder.build()); - break; - case REMOVE: - flowBuilder.remove(ruleBuilder.build()); - break; - default: - log.warn("Unknown operation {}", fwd.op()); - } - - flowRuleService.apply(flowBuilder.build(new FlowRuleOperationsContext() { - @Override - public void onSuccess(FlowRuleOperations ops) { - if (fwd.context().isPresent()) { - fwd.context().get().onSuccess(fwd); - } - } - - @Override - public void onError(FlowRuleOperations ops) { - if (fwd.context().isPresent()) { - fwd.context().get().onError(fwd, ObjectiveError.FLOWINSTALLATIONFAILED); - } - } - })); - } - - @Override - public void next(NextObjective nextObjective) { - throw new UnsupportedOperationException("OLT does not next hop."); - } - - /** - * Build a device description. - * - * @param deviceId a deviceId - * @param key the key of the annotation - * @param value the value for the annotation - * @return a device description - */ - private DeviceDescription description(DeviceId deviceId, String key, String value) { - DeviceService deviceService = serviceDirectory.get(DeviceService.class); - Device device = deviceService.getDevice(deviceId); - - checkNotNull(device, "Device not found in device service."); - - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - if (value != null) { - builder.set(key, value); - } else { - builder.remove(key); - } - return new DefaultDeviceDescription(device.id().uri(), device.type(), - device.manufacturer(), device.hwVersion(), - device.swVersion(), device.serialNumber(), - device.chassisId(), builder.build()); - } - - /** - * Simple ancillary provider used to annotate device. - */ - private static final class AnnotationProvider - extends AbstractProvider implements DeviceProvider { - private AnnotationProvider() { - super(PID); - } - - @Override - public void triggerProbe(DeviceId deviceId) { - } - - @Override - public void roleChanged(DeviceId deviceId, MastershipRole newRole) { - } - - @Override - public boolean isReachable(DeviceId deviceId) { - return false; - } - } - -} diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java index 32d6b103..69d20835 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java @@ -462,10 +462,10 @@ public class PicaPipeline extends AbstractHandlerBehaviour implements Pipeliner private void initializePipeline() { //processIpUnicastTable(true); - processACLTable(true); + processAclTable(true); } - private void processACLTable(boolean install) { + private void processAclTable(boolean install) { TrafficSelector.Builder selector; TrafficTreatment.Builder treatment; FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java index 23ef5f2b..bd49e688 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java @@ -15,13 +15,6 @@ */ package org.onosproject.driver.pipeline; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.concurrent.ConcurrentHashMap; - import org.onlab.osgi.ServiceDirectory; import org.onlab.packet.Ethernet; import org.onlab.packet.MacAddress; @@ -57,8 +50,15 @@ import org.onosproject.net.flowobjective.ForwardingObjective; import org.onosproject.net.flowobjective.NextObjective; import org.onosproject.net.flowobjective.Objective; import org.onosproject.net.flowobjective.ObjectiveError; -import org.slf4j.Logger; import org.onosproject.store.serializers.KryoNamespaces; +import org.slf4j.Logger; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.concurrent.ConcurrentHashMap; + +import static org.slf4j.LoggerFactory.getLogger; /** * Simple 2-Table Pipeline for Software/NPU based routers. This pipeline @@ -100,7 +100,7 @@ public class SoftRouterPipeline extends AbstractHandlerBehaviour implements Pipe flowRuleService = serviceDirectory.get(FlowRuleService.class); flowObjectiveStore = context.store(); driverId = coreService.registerApplication( - "org.onosproject.driver.OVSCorsaPipeline"); + "org.onosproject.driver.SoftRouterPipeline"); filters = Collections.newSetFromMap(new ConcurrentHashMap<Filter, Boolean>()); pendingVersatiles = Collections.newSetFromMap( new ConcurrentHashMap<ForwardingObjective, Boolean>()); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java index 31297ff4..b5541065 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java @@ -25,6 +25,7 @@ import com.google.common.cache.RemovalNotification; import org.onlab.osgi.ServiceDirectory; import org.onlab.packet.Ethernet; +import org.onlab.packet.MacAddress; import org.onlab.packet.VlanId; import org.onlab.util.KryoNamespace; import org.onosproject.core.ApplicationId; @@ -54,6 +55,7 @@ import org.onosproject.net.flow.criteria.PortCriterion; import org.onosproject.net.flow.criteria.VlanIdCriterion; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flow.instructions.Instructions.OutputInstruction; +import org.onosproject.net.flow.instructions.L2ModificationInstruction.ModVlanIdInstruction; import org.onosproject.net.flowobjective.FilteringObjective; import org.onosproject.net.flowobjective.FlowObjectiveStore; import org.onosproject.net.flowobjective.ForwardingObjective; @@ -94,7 +96,9 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour private static final int TABLE_TMAC = 1; private static final int TABLE_IPV4_UNICAST = 2; private static final int TABLE_MPLS = 3; + private static final int TABLE_DMAC = 4; private static final int TABLE_ACL = 5; + private static final int TABLE_SMAC = 6; /** * Set the default values. These variables will get overwritten based on the @@ -104,7 +108,9 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour protected int tmacTableId = TABLE_TMAC; protected int ipv4UnicastTableId = TABLE_IPV4_UNICAST; protected int mplsTableId = TABLE_MPLS; + protected int dstMacTableId = TABLE_DMAC; protected int aclTableId = TABLE_ACL; + protected int srcMacTableId = TABLE_SMAC; protected final Logger log = getLogger(getClass()); @@ -448,12 +454,14 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour fwd.treatment().allInstructions().get(0).type() == Instruction.Type.OUTPUT) { OutputInstruction o = (OutputInstruction) fwd.treatment().allInstructions().get(0); if (o.port() == PortNumber.CONTROLLER) { - log.warn("Punts to the controller are handled by misses in" - + " the TMAC, IP and MPLS tables."); - return Collections.emptySet(); + treatmentBuilder.punt(); + treatment = treatmentBuilder.build(); + } else { + treatment = fwd.treatment(); } + } else { + treatment = fwd.treatment(); } - treatment = fwd.treatment(); } else { log.warn("VERSATILE forwarding objective needs next objective ID " + "or treatment."); @@ -475,19 +483,52 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour return Collections.singletonList(ruleBuilder.build()); } - protected Collection<FlowRule> processSpecific(ForwardingObjective fwd) { - log.debug("Processing specific"); + private boolean isSupportedEthTypeObjective(ForwardingObjective fwd) { TrafficSelector selector = fwd.selector(); EthTypeCriterion ethType = (EthTypeCriterion) selector .getCriterion(Criterion.Type.ETH_TYPE); if ((ethType == null) || - (ethType.ethType().toShort() != Ethernet.TYPE_IPV4) && - (ethType.ethType().toShort() != Ethernet.MPLS_UNICAST)) { + ((ethType.ethType().toShort() != Ethernet.TYPE_IPV4) && + (ethType.ethType().toShort() != Ethernet.MPLS_UNICAST))) { + return false; + } + return true; + } + + private boolean isSupportedEthDstObjective(ForwardingObjective fwd) { + TrafficSelector selector = fwd.selector(); + EthCriterion ethDst = (EthCriterion) selector + .getCriterion(Criterion.Type.ETH_DST); + VlanIdCriterion vlanId = (VlanIdCriterion) selector + .getCriterion(Criterion.Type.VLAN_VID); + if (ethDst == null && vlanId == null) { + return false; + } + return true; + } + + protected Collection<FlowRule> processSpecific(ForwardingObjective fwd) { + log.debug("Processing specific"); + boolean isEthTypeObj = isSupportedEthTypeObjective(fwd); + boolean isEthDstObj = isSupportedEthDstObjective(fwd); + + if (isEthTypeObj) { + return processEthTypeSpecificObjective(fwd); + } else if (isEthDstObj) { + return processEthDstSpecificObjective(fwd); + } else { log.warn("processSpecific: Unsupported " + "forwarding objective criteraia"); fail(fwd, ObjectiveError.UNSUPPORTED); return Collections.emptySet(); } + } + + protected Collection<FlowRule> + processEthTypeSpecificObjective(ForwardingObjective fwd) { + TrafficSelector selector = fwd.selector(); + EthTypeCriterion ethType = (EthTypeCriterion) selector + .getCriterion(Criterion.Type.ETH_TYPE); TrafficSelector.Builder filteredSelectorBuilder = DefaultTrafficSelector.builder(); @@ -565,59 +606,167 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour } - protected List<FlowRule> processEthDstFilter(Criterion c, + protected Collection<FlowRule> + processEthDstSpecificObjective(ForwardingObjective fwd) { + List<FlowRule> rules = new ArrayList<>(); + + // Build filtered selector + TrafficSelector selector = fwd.selector(); + EthCriterion ethCriterion = (EthCriterion) selector + .getCriterion(Criterion.Type.ETH_DST); + VlanIdCriterion vlanIdCriterion = (VlanIdCriterion) selector + .getCriterion(Criterion.Type.VLAN_VID); + TrafficSelector.Builder filteredSelectorBuilder = + DefaultTrafficSelector.builder(); + // Do not match MacAddress for subnet broadcast entry + if (!ethCriterion.mac().equals(MacAddress.NONE)) { + filteredSelectorBuilder.matchEthDst(ethCriterion.mac()); + } + filteredSelectorBuilder.matchVlanId(vlanIdCriterion.vlanId()); + TrafficSelector filteredSelector = filteredSelectorBuilder.build(); + + // Build filtered treatment + TrafficTreatment.Builder treatmentBuilder = + DefaultTrafficTreatment.builder(); + if (fwd.treatment() != null) { + treatmentBuilder.deferred(); + fwd.treatment().allInstructions().forEach(treatmentBuilder::add); + } + if (fwd.nextId() != null) { + NextGroup next = flowObjectiveStore.getNextGroup(fwd.nextId()); + if (next != null) { + GroupKey key = appKryo.deserialize(next.data()); + Group group = groupService.getGroup(deviceId, key); + if (group != null) { + treatmentBuilder.deferred().group(group.id()); + } else { + log.warn("Group Missing"); + fail(fwd, ObjectiveError.GROUPMISSING); + return Collections.emptySet(); + } + } + } + treatmentBuilder.immediate().transition(aclTableId); + TrafficTreatment filteredTreatment = treatmentBuilder.build(); + + // Build bridging table entries + FlowRule.Builder flowRuleBuilder = DefaultFlowRule.builder(); + flowRuleBuilder.fromApp(fwd.appId()) + .withPriority(fwd.priority()) + .forDevice(deviceId) + .withSelector(filteredSelector) + .withTreatment(filteredTreatment) + .forTable(dstMacTableId); + if (fwd.permanent()) { + flowRuleBuilder.makePermanent(); + } else { + flowRuleBuilder.makeTemporary(fwd.timeout()); + } + rules.add(flowRuleBuilder.build()); + + /* + // TODO Emulate source MAC table behavior + // Do not install source MAC table entry for subnet broadcast + if (!ethCriterion.mac().equals(MacAddress.NONE)) { + // Build filtered selector + selector = fwd.selector(); + ethCriterion = (EthCriterion) selector.getCriterion(Criterion.Type.ETH_DST); + filteredSelectorBuilder = DefaultTrafficSelector.builder(); + filteredSelectorBuilder.matchEthSrc(ethCriterion.mac()); + filteredSelector = filteredSelectorBuilder.build(); + + // Build empty treatment. Apply existing instruction if match. + treatmentBuilder = DefaultTrafficTreatment.builder(); + filteredTreatment = treatmentBuilder.build(); + + // Build bridging table entries + flowRuleBuilder = DefaultFlowRule.builder(); + flowRuleBuilder.fromApp(fwd.appId()) + .withPriority(fwd.priority()) + .forDevice(deviceId) + .withSelector(filteredSelector) + .withTreatment(filteredTreatment) + .forTable(srcMacTableId) + .makePermanent(); + rules.add(flowRuleBuilder.build()); + } + */ + + return rules; + } + + protected List<FlowRule> processEthDstFilter(EthCriterion ethCriterion, + VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { + //handling untagged packets via assigned VLAN + if (vlanIdCriterion.vlanId() == VlanId.NONE) { + vlanIdCriterion = (VlanIdCriterion) Criteria.matchVlanId(assignedVlan); + } + + /* + * Note: CpqD switches do not handle MPLS-related operation properly + * for a packet with VLAN tag. We pop VLAN here as a workaround. + * Side effect: HostService learns redundant hosts with same MAC but + * different VLAN. No known side effect on the network reachability. + */ List<FlowRule> rules = new ArrayList<>(); - EthCriterion e = (EthCriterion) c; TrafficSelector.Builder selectorIp = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatmentIp = DefaultTrafficTreatment .builder(); - selectorIp.matchEthDst(e.mac()); + selectorIp.matchEthDst(ethCriterion.mac()); selectorIp.matchEthType(Ethernet.TYPE_IPV4); + selectorIp.matchVlanId(vlanIdCriterion.vlanId()); + treatmentIp.popVlan(); treatmentIp.transition(ipv4UnicastTableId); FlowRule ruleIp = DefaultFlowRule.builder().forDevice(deviceId) .withSelector(selectorIp.build()) .withTreatment(treatmentIp.build()) .withPriority(filt.priority()).fromApp(applicationId) .makePermanent().forTable(tmacTableId).build(); - log.debug("adding IP ETH rule for MAC: {}", e.mac()); + log.debug("adding IP ETH rule for MAC: {}", ethCriterion.mac()); rules.add(ruleIp); TrafficSelector.Builder selectorMpls = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatmentMpls = DefaultTrafficTreatment .builder(); - selectorMpls.matchEthDst(e.mac()); + selectorMpls.matchEthDst(ethCriterion.mac()); selectorMpls.matchEthType(Ethernet.MPLS_UNICAST); + selectorMpls.matchVlanId(vlanIdCriterion.vlanId()); + treatmentMpls.popVlan(); treatmentMpls.transition(mplsTableId); FlowRule ruleMpls = DefaultFlowRule.builder() .forDevice(deviceId).withSelector(selectorMpls.build()) .withTreatment(treatmentMpls.build()) .withPriority(filt.priority()).fromApp(applicationId) .makePermanent().forTable(tmacTableId).build(); - log.debug("adding MPLS ETH rule for MAC: {}", e.mac()); + log.debug("adding MPLS ETH rule for MAC: {}", ethCriterion.mac()); rules.add(ruleMpls); return rules; } - protected List<FlowRule> processVlanIdFilter(Criterion c, + protected List<FlowRule> processVlanIdFilter(VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { List<FlowRule> rules = new ArrayList<>(); - VlanIdCriterion v = (VlanIdCriterion) c; - log.debug("adding rule for VLAN: {}", v.vlanId()); + log.debug("adding rule for VLAN: {}", vlanIdCriterion.vlanId()); TrafficSelector.Builder selector = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatment = DefaultTrafficTreatment .builder(); PortCriterion p = (PortCriterion) filt.key(); - if (v.vlanId() != VlanId.NONE) { - selector.matchVlanId(v.vlanId()); + if (vlanIdCriterion.vlanId() != VlanId.NONE) { + selector.matchVlanId(vlanIdCriterion.vlanId()); selector.matchInPort(p.port()); treatment.deferred().popVlan(); + } else { + selector.matchInPort(p.port()); + treatment.immediate().pushVlan().setVlanId(assignedVlan); } treatment.transition(tmacTableId); FlowRule rule = DefaultFlowRule.builder().forDevice(deviceId) @@ -641,30 +790,79 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour fail(filt, ObjectiveError.UNKNOWN); return; } + + EthCriterion ethCriterion = null; + VlanIdCriterion vlanIdCriterion = null; + // convert filtering conditions for switch-intfs into flowrules FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); - for (Criterion c : filt.conditions()) { - if (c.type() == Criterion.Type.ETH_DST) { - for (FlowRule rule : processEthDstFilter(c, - filt, - applicationId)) { - ops = install ? ops.add(rule) : ops.remove(rule); - } - } else if (c.type() == Criterion.Type.VLAN_VID) { - for (FlowRule rule : processVlanIdFilter(c, - filt, - applicationId)) { - ops = install ? ops.add(rule) : ops.remove(rule); - } - } else if (c.type() == Criterion.Type.IPV4_DST) { + + for (Criterion criterion : filt.conditions()) { + if (criterion.type() == Criterion.Type.ETH_DST) { + ethCriterion = (EthCriterion) criterion; + } else if (criterion.type() == Criterion.Type.VLAN_VID) { + vlanIdCriterion = (VlanIdCriterion) criterion; + } else if (criterion.type() == Criterion.Type.IPV4_DST) { log.debug("driver does not process IP filtering rules as it " + "sends all misses in the IP table to the controller"); } else { log.warn("Driver does not currently process filtering condition" - + " of type: {}", c.type()); + + " of type: {}", criterion.type()); fail(filt, ObjectiveError.UNSUPPORTED); } } + + VlanId assignedVlan = null; + if (vlanIdCriterion != null && vlanIdCriterion.vlanId() == VlanId.NONE) { + // Assign a VLAN ID to untagged packets + if (filt.meta() == null) { + log.error("Missing metadata in filtering objective required " + + "for vlan assignment in dev {}", deviceId); + fail(filt, ObjectiveError.BADPARAMS); + return; + } + for (Instruction i : filt.meta().allInstructions()) { + if (i instanceof ModVlanIdInstruction) { + assignedVlan = ((ModVlanIdInstruction) i).vlanId(); + } + } + if (assignedVlan == null) { + log.error("Driver requires an assigned vlan-id to tag incoming " + + "untagged packets. Not processing vlan filters on " + + "device {}", deviceId); + fail(filt, ObjectiveError.BADPARAMS); + return; + } + } + + if (ethCriterion == null) { + log.debug("filtering objective missing dstMac, cannot program TMAC table"); + } else { + for (FlowRule tmacRule : processEthDstFilter(ethCriterion, + vlanIdCriterion, + filt, + assignedVlan, + applicationId)) { + log.debug("adding MAC filtering rules in TMAC table: {} for dev: {}", + tmacRule, deviceId); + ops = install ? ops.add(tmacRule) : ops.remove(tmacRule); + } + } + + if (ethCriterion == null || vlanIdCriterion == null) { + log.debug("filtering objective missing dstMac or vlan, cannot program" + + "Vlan Table"); + } else { + for (FlowRule vlanRule : processVlanIdFilter(vlanIdCriterion, + filt, + assignedVlan, + applicationId)) { + log.debug("adding VLAN filtering rule in VLAN table: {} for dev: {}", + vlanRule, deviceId); + ops = install ? ops.add(vlanRule) : ops.remove(vlanRule); + } + } + // apply filtering flow rules flowRuleService.apply(ops.build(new FlowRuleOperationsContext() { @Override @@ -686,10 +884,10 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour protected void setTableMissEntries() { // set all table-miss-entries populateTableMissEntry(vlanTableId, true, false, false, -1); - populateTableMissEntry(tmacTableId, true, false, false, -1); - populateTableMissEntry(ipv4UnicastTableId, false, true, true, - aclTableId); + populateTableMissEntry(tmacTableId, false, false, true, dstMacTableId); + populateTableMissEntry(ipv4UnicastTableId, false, true, true, aclTableId); populateTableMissEntry(mplsTableId, false, true, true, aclTableId); + populateTableMissEntry(dstMacTableId, false, false, true, aclTableId); populateTableMissEntry(aclTableId, false, false, false, -1); } diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java index 3267d550..91f2679c 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java @@ -21,6 +21,7 @@ import java.util.List; import org.onlab.packet.Ethernet; import org.onlab.packet.MacAddress; +import org.onlab.packet.VlanId; import org.onosproject.core.ApplicationId; import org.onosproject.net.behaviour.NextGroup; import org.onosproject.net.flow.DefaultFlowRule; @@ -34,6 +35,7 @@ import org.onosproject.net.flow.criteria.EthCriterion; import org.onosproject.net.flow.criteria.EthTypeCriterion; import org.onosproject.net.flow.criteria.IPCriterion; import org.onosproject.net.flow.criteria.MplsCriterion; +import org.onosproject.net.flow.criteria.VlanIdCriterion; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flowobjective.FilteringObjective; import org.onosproject.net.flowobjective.ForwardingObjective; @@ -175,12 +177,13 @@ public class SpringOpenTTPDell extends SpringOpenTTP { //Dell switches need ETH_DST based match condition in all IP table entries. //So while processing the ETH_DST based filtering objective, store //the device MAC to be used locally to use it while pushing the IP rules. - protected List<FlowRule> processEthDstFilter(Criterion c, + protected List<FlowRule> processEthDstFilter(EthCriterion ethCriterion, + VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { // Store device termination Mac to be used in IP flow entries - EthCriterion e = (EthCriterion) c; - deviceTMac = e.mac(); + deviceTMac = ethCriterion.mac(); log.debug("For now not adding any TMAC rules " + "into Dell switches as it is ignoring"); @@ -189,8 +192,9 @@ public class SpringOpenTTPDell extends SpringOpenTTP { } @Override - protected List<FlowRule> processVlanIdFilter(Criterion c, + protected List<FlowRule> processVlanIdFilter(VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { log.debug("For now not adding any VLAN rules " + "into Dell switches as it is ignoring"); diff --git a/framework/src/onos/drivers/src/main/resources/onos-drivers.xml b/framework/src/onos/drivers/src/main/resources/onos-drivers.xml index ff5db296..0349e1c2 100644 --- a/framework/src/onos/drivers/src/main/resources/onos-drivers.xml +++ b/framework/src/onos/drivers/src/main/resources/onos-drivers.xml @@ -37,6 +37,13 @@ <behaviour api="org.onosproject.net.behaviour.ExtensionResolver" impl="org.onosproject.driver.extensions.NiciraExtensionInterpreter" /> </driver> + <driver name="ovs-netconf" extends="default" + manufacturer="Nicira, Inc\." hwVersion="Open vSwitch" swVersion="2\..*"> + <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" + impl="org.onosproject.driver.handshaker.NiciraSwitchHandshaker"/> + <behaviour api="org.onosproject.net.behaviour.ControllerConfig" + impl="org.onosproject.driver.netconf.NetconfControllerConfig"/> + </driver> <driver name="ovs-corsa" extends="ovs" manufacturer="Corsa" hwVersion="emulation" swVersion="0.0.0"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" @@ -78,12 +85,12 @@ <driver name="pmc-olt" extends="default" manufacturer="Big Switch Networks" hwVersion="ivs 0.5" swVersion="ivs 0.5"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" - impl="org.onosproject.driver.pipeline.OLTPipeline"/> + impl="org.onosproject.driver.pipeline.OltPipeline"/> </driver> <driver name="g.fast" extends="default" manufacturer="TEST1" hwVersion="TEST2" swVersion="TEST3"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" - impl="org.onosproject.driver.pipeline.OLTPipeline"/> + impl="org.onosproject.driver.pipeline.OltPipeline"/> </driver> <!-- The SoftRouter driver is meant to be used by any software/NPU based ~ switch that wishes to implement a simple 2-table router. To use this @@ -124,7 +131,7 @@ <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" impl="org.onosproject.driver.handshaker.CalientFiberSwitchHandshaker"/> </driver> - <driver name="onosfw" extends="default" + <driver name="onosfw" extends="ovs" manufacturer="" hwVersion="" swVersion=""> <behaviour api="org.onosproject.net.behaviour.Pipeliner" impl="org.onosproject.driver.pipeline.OpenVSwitchPipeline"/> @@ -134,5 +141,8 @@ <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" impl="org.onosproject.driver.handshaker.OFOpticalSwitch13"/> </driver> + <driver name="aos" extends="ofdpa" + manufacturer="Accton" hwVersion=".*" swVersion="1.*"> + </driver> </drivers> diff --git a/framework/src/onos/features/features.xml b/framework/src/onos/features/features.xml index 1aae0f33..7d12d7b8 100644 --- a/framework/src/onos/features/features.xml +++ b/framework/src/onos/features/features.xml @@ -106,6 +106,7 @@ <feature>onos-core</feature> <bundle>mvn:org.onosproject/onos-incubator-net/@ONOS-VERSION</bundle> <bundle>mvn:org.onosproject/onos-incubator-store/@ONOS-VERSION</bundle> + <bundle>mvn:org.onosproject/onos-incubator-rpc/@ONOS-VERSION</bundle> </feature> <feature name="onos-rest" version="@FEATURE-VERSION" diff --git a/framework/src/onos/incubator/pom.xml b/framework/src/onos/incubator/pom.xml index c94243d2..5222fe98 100644 --- a/framework/src/onos/incubator/pom.xml +++ b/framework/src/onos/incubator/pom.xml @@ -35,6 +35,7 @@ <module>api</module> <module>net</module> <module>store</module> + <module>rpc</module> </modules> <dependencies> diff --git a/framework/src/onos/netconf/api/pom.xml b/framework/src/onos/netconf/api/pom.xml deleted file mode 100644 index d93b3be3..00000000 --- a/framework/src/onos/netconf/api/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0"?> -<!-- - ~ 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. - --> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" - xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - </parent> - <artifactId>onos-netconf-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS NETCONF plugin API</description> - <dependencies> - <dependency> - <groupId>commons-pool</groupId> - <artifactId>commons-pool</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-transport</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-transport-native-epoll</artifactId> - <version>${netty4.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-rfc</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - -</project> diff --git a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java b/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java deleted file mode 100644 index ff688f45..00000000 --- a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java b/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java deleted file mode 100644 index 5562bd33..00000000 --- a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf; diff --git a/framework/src/onos/netconf/ctl/pom.xml b/framework/src/onos/netconf/ctl/pom.xml deleted file mode 100644 index 56f17c90..00000000 --- a/framework/src/onos/netconf/ctl/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> -<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-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-netconf-ctl</artifactId> - <packaging>bundle</packaging> - - <dependencies> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-api</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-rfc</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> -</project> diff --git a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java b/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java deleted file mode 100644 index e0f6b3df..00000000 --- a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf.ctl; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java b/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java deleted file mode 100644 index 84992bf2..00000000 --- a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf.ctl; diff --git a/framework/src/onos/netconf/pom.xml b/framework/src/onos/netconf/pom.xml deleted file mode 100644 index 7a36c227..00000000 --- a/framework/src/onos/netconf/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> -<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.4.0-SNAPSHOT</version> - </parent> - - <artifactId>onos-netconf</artifactId> - <packaging>pom</packaging> - - <description>ONOS NETCONF southbound libraries</description> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-buffer</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-handler</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> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - </plugins> - </build> - - <modules> - <module>api</module> - <module>rfc</module> - <module>ctl</module> - </modules> -</project> diff --git a/framework/src/onos/netconf/rfc/pom.xml b/framework/src/onos/netconf/rfc/pom.xml deleted file mode 100644 index fa1e06e2..00000000 --- a/framework/src/onos/netconf/rfc/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> -<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-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-netconf-rfc</artifactId> - <packaging>bundle</packaging> - -</project> diff --git a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java b/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java deleted file mode 100644 index 06963b0c..00000000 --- a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf.rfc; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java b/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java deleted file mode 100644 index 616a7ce5..00000000 --- a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf.rfc; diff --git a/framework/src/onos/openflow/api/pom.xml b/framework/src/onos/openflow/api/pom.xml deleted file mode 100644 index e535ac64..00000000 --- a/framework/src/onos/openflow/api/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ -<?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-of</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS OpenFlow controller subsystem API</description> - - <dependencies> - <dependency> - <!-- FIXME once experimenter gets merged to upstream --> - <groupId>org.onosproject</groupId> - <artifactId>openflowj</artifactId> - <version>${openflowj.version}</version> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</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.openflow.*,org.projectfloodlight.openflow.* - </Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java deleted file mode 100644 index af92a1d0..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Ethernet; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPacketOut; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.action.OFAction; -import org.projectfloodlight.openflow.protocol.action.OFActionOutput; -import org.projectfloodlight.openflow.protocol.match.MatchField; -import org.projectfloodlight.openflow.types.OFBufferId; -import org.projectfloodlight.openflow.types.OFPort; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.BufferUnderflowException; -import java.util.Collections; -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.onosproject.security.AppGuard.checkPermission; -import static org.onosproject.security.AppPermission.Type.*; - - -/** - * Default implementation of an OpenFlowPacketContext. - */ -public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext { - - private final AtomicBoolean free = new AtomicBoolean(true); - private final AtomicBoolean isBuilt = new AtomicBoolean(false); - private final OpenFlowSwitch sw; - private final OFPacketIn pktin; - private OFPacketOut pktout = null; - - private final boolean isBuffered; - - private DefaultOpenFlowPacketContext(OpenFlowSwitch s, OFPacketIn pkt) { - this.sw = s; - this.pktin = pkt; - this.isBuffered = pktin.getBufferId() != OFBufferId.NO_BUFFER; - } - - @Override - public void send() { - checkPermission(PACKET_WRITE); - - if (block() && isBuilt.get()) { - sw.sendMsg(pktout); - } - } - - @Override - public void build(OFPort outPort) { - if (isBuilt.getAndSet(true)) { - return; - } - OFPacketOut.Builder builder = sw.factory().buildPacketOut(); - OFAction act = buildOutput(outPort.getPortNumber()); - pktout = builder.setXid(pktin.getXid()) - .setInPort(pktinInPort()) - .setBufferId(OFBufferId.NO_BUFFER) - .setData(pktin.getData()) -// .setBufferId(pktin.getBufferId()) - .setActions(Collections.singletonList(act)) - .build(); - } - - @Override - public void build(Ethernet ethFrame, OFPort outPort) { - if (isBuilt.getAndSet(true)) { - return; - } - OFPacketOut.Builder builder = sw.factory().buildPacketOut(); - OFAction act = buildOutput(outPort.getPortNumber()); - pktout = builder.setXid(pktin.getXid()) - .setBufferId(OFBufferId.NO_BUFFER) - .setInPort(pktinInPort()) - .setActions(Collections.singletonList(act)) - .setData(ethFrame.serialize()) - .build(); - } - - @Override - public Ethernet parsed() { - checkPermission(PACKET_READ); - - try { - return Ethernet.deserializer().deserialize(pktin.getData(), 0, pktin.getData().length); - } catch (BufferUnderflowException | NullPointerException | - DeserializationException e) { - Logger log = LoggerFactory.getLogger(getClass()); - log.error("packet deserialization problem : {}", e.getMessage()); - return null; - } - } - - @Override - public Dpid dpid() { - checkPermission(PACKET_READ); - - return new Dpid(sw.getId()); - } - - /** - * Creates an OpenFlow packet context based on a packet-in. - * - * @param s OpenFlow switch - * @param pkt OpenFlow packet-in - * @return the OpenFlow packet context - */ - public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s, - OFPacketIn pkt) { - return new DefaultOpenFlowPacketContext(s, pkt); - } - - @Override - public Integer inPort() { - checkPermission(PACKET_READ); - - return pktinInPort().getPortNumber(); - } - - private OFPort pktinInPort() { - if (pktin.getVersion() == OFVersion.OF_10) { - return pktin.getInPort(); - } - return pktin.getMatch().get(MatchField.IN_PORT); - } - - @Override - public byte[] unparsed() { - checkPermission(PACKET_READ); - - return pktin.getData().clone(); - - } - - private OFActionOutput buildOutput(Integer port) { - OFActionOutput act = sw.factory().actions() - .buildOutput() - .setPort(OFPort.of(port)) - .build(); - return act; - } - - @Override - public boolean block() { - checkPermission(PACKET_WRITE); - - return free.getAndSet(false); - } - - @Override - public boolean isHandled() { - checkPermission(PACKET_READ); - - return !free.get(); - } - - @Override - public boolean isBuffered() { - checkPermission(PACKET_READ); - - return isBuffered; - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java deleted file mode 100644 index 6e0f65be..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.util.HexString; - -import java.net.URI; -import java.net.URISyntaxException; - -import static com.google.common.base.Preconditions.checkArgument; -import static org.onlab.util.Tools.fromHex; -import static org.onlab.util.Tools.toHex; - -/** - * The class representing a network switch DPID. - * This class is immutable. - */ -public final class Dpid { - - private static final String SCHEME = "of"; - private static final long UNKNOWN = 0; - private final long value; - - /** - * Default constructor. - */ - public Dpid() { - this.value = Dpid.UNKNOWN; - } - - /** - * Constructor from a long value. - * - * @param value the value to use. - */ - public Dpid(long value) { - this.value = value; - } - - /** - * Constructor from a string. - * - * @param value the value to use. - */ - public Dpid(String value) { - this.value = HexString.toLong(value); - } - - /** - * Get the value of the DPID. - * - * @return the value of the DPID. - */ - public long value() { - return value; - } - - /** - * Convert the DPID value to a ':' separated hexadecimal string. - * - * @return the DPID value as a ':' separated hexadecimal string. - */ - @Override - public String toString() { - return HexString.toHexString(this.value); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof Dpid)) { - return false; - } - - Dpid otherDpid = (Dpid) other; - - return value == otherDpid.value; - } - - @Override - public int hashCode() { - return Long.hashCode(value); - } - - /** - * Returns DPID created from the given device URI. - * - * @param uri device URI - * @return dpid - */ - public static Dpid dpid(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new Dpid(fromHex(uri.getSchemeSpecificPart())); - } - - /** - * Produces device URI from the given DPID. - * - * @param dpid device dpid - * @return device URI - */ - public static URI uri(Dpid dpid) { - return uri(dpid.value); - } - - /** - * Produces device URI from the given DPID long. - * - * @param value device dpid as long - * @return device URI - */ - public static URI uri(long value) { - try { - return new URI(SCHEME, toHex(value), null); - } catch (URISyntaxException e) { - return null; - } - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java deleted file mode 100644 index 44b121ac..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.openflow.controller; - -import com.google.common.annotations.Beta; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flow.instructions.ExtensionInstruction; -import org.onosproject.net.flow.instructions.ExtensionType; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.action.OFAction; - -/** - * Interprets extension instructions and converts them to/from OpenFlow objects. - */ -@Beta -public interface ExtensionInterpreter extends HandlerBehaviour { - - /** - * Returns true if the given extension instruction is supported by this - * driver. - * - * @param extensionType extension instruction type - * @return true if the instruction is supported, otherwise false - */ - boolean supported(ExtensionType extensionType); - - /** - * Maps an extension instruction to an OpenFlow action. - * - * @param factory OpenFlow factory - * @param extensionInstruction extension instruction - * @return OpenFlow action - */ - OFAction mapInstruction(OFFactory factory, ExtensionInstruction extensionInstruction); - - /** - * Maps an OpenFlow action to an extension instruction. - * - * @param action OpenFlow action - * @return extension instruction - */ - ExtensionInstruction mapAction(OFAction action); - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java deleted file mode 100644 index 2c68fa0b..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Abstraction of an OpenFlow controller. Serves as a one stop - * shop for obtaining OpenFlow devices and (un)register listeners - * on OpenFlow events - */ -public interface OpenFlowController { - - /** - * Returns all switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getSwitches(); - - /** - * Returns all master switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getMasterSwitches(); - - /** - * Returns all equal switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getEqualSwitches(); - - - /** - * Returns the actual switch for the given Dpid. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getSwitch(Dpid dpid); - - /** - * Returns the actual master switch for the given Dpid, if one exists. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getMasterSwitch(Dpid dpid); - - /** - * Returns the actual equal switch for the given Dpid, if one exists. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getEqualSwitch(Dpid dpid); - - /** - * Register a listener for meta events that occur to OF - * devices. - * @param listener the listener to notify - */ - void addListener(OpenFlowSwitchListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeListener(OpenFlowSwitchListener listener); - - /** - * Register a listener for packet events. - * @param priority the importance of this listener, lower values are more important - * @param listener the listener to notify - */ - void addPacketListener(int priority, PacketListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removePacketListener(PacketListener listener); - - /** - * Register a listener for OF msg events. - * - * @param listener the listener to notify - */ - void addEventListener(OpenFlowEventListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeEventListener(OpenFlowEventListener listener); - - /** - * Send a message to a particular switch. - * @param dpid the switch to send to. - * @param msg the message to send - */ - void write(Dpid dpid, OFMessage msg); - - /** - * Process a message and notify the appropriate listeners. - * - * @param dpid the dpid the message arrived on - * @param msg the message to process. - */ - void processPacket(Dpid dpid, OFMessage msg); - - /** - * Sets the role for a given switch. - * @param role the desired role - * @param dpid the switch to set the role for. - */ - void setRole(Dpid dpid, RoleState role); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java deleted file mode 100644 index 5deccf5e..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - - -/** - * Notifies providers about openflow msg events. - */ -public interface OpenFlowEventListener { - - /** - * Handles the message event. - * - * @param dpid switch data path identifier - * @param msg the message - */ - void handleMessage(Dpid dpid, OFMessage msg); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java deleted file mode 100644 index af678d63..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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.openflow.controller; - -/** - * A marker interface for optical switches, which require the ability to pass - * port information to a Device provider. - */ -public interface OpenFlowOpticalSwitch extends OpenFlowSwitch, WithTypedPorts { -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java deleted file mode 100644 index 740d89d0..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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.openflow.controller; - -import org.onlab.packet.Ethernet; -import org.projectfloodlight.openflow.types.OFPort; - -/** - * A representation of a packet context which allows any provider - * to view a packet in event, but may block the response to the - * event if blocked has been called. This packet context can be used - * to react to the packet in event with a packet out. - */ -public interface OpenFlowPacketContext { - - /** - * Blocks further responses (ie. send() calls) on this - * packet in event. - * @return true if blocks - */ - boolean block(); - - /** - * Checks whether the packet has been handled. - * @return true if handled, false otherwise. - */ - boolean isHandled(); - - /** - * Provided build has been called send the packet - * out the switch it came in on. - */ - void send(); - - /** - * Build the packet out in response to this packet in event. - * @param outPort the out port to send to packet out of. - */ - void build(OFPort outPort); - - /** - * Build the packet out in response to this packet in event. - * @param ethFrame the actual packet to send out. - * @param outPort the out port to send to packet out of. - */ - void build(Ethernet ethFrame, OFPort outPort); - - /** - * Provided a handle onto the parsed payload. - * @return the parsed form of the payload. - */ - Ethernet parsed(); - - /** - * Provide an unparsed copy of the data. - * @return the unparsed form of the payload. - */ - byte[] unparsed(); - - /** - * Provide the dpid of the switch where the packet in arrived. - * @return the dpid of the switch. - */ - Dpid dpid(); - - /** - * Provide the port on which the packet arrived. - * @return the port - */ - Integer inPort(); - - /** - * Indicates that this packet is buffered at the switch. - * @return buffer indication - */ - boolean isBuffered(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java deleted file mode 100644 index 51a2ce42..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.onosproject.net.Device; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDesc; - -import java.util.List; - -/** - * Represents to provider facing side of a switch. - */ -public interface OpenFlowSwitch { - - /** - * Writes the message to the driver. - * - * Note: - * Calling {@link #sendMsg(OFMessage)} does NOT guarantee the messages to be - * transmitted on the wire in order, especially during role transition. - * The messages may be reordered at the switch side. - * - * Calling {@link #sendMsg(List)} guarantee the messages inside the list - * to be transmitted on the wire in order. - * - * @param msg the message to write - */ - void sendMsg(OFMessage msg); - - /** - * Writes the OFMessage list to the driver. - * - * @param msgs the messages to be written - */ - void sendMsg(List<OFMessage> msgs); - - /** - * Handle a message from the switch. - * @param fromSwitch the message to handle - */ - void handleMessage(OFMessage fromSwitch); - - /** - * Sets the role for this switch. - * @param role the role to set. - */ - void setRole(RoleState role); - - /** - * Fetch the role for this switch. - * @return the role. - */ - RoleState getRole(); - - /** - * Fetches the ports of this switch. - * @return unmodifiable list of the ports. - */ - List<OFPortDesc> getPorts(); - - /** - * Provides the factory for this OF version. - * @return OF version specific factory. - */ - OFFactory factory(); - - /** - * Gets a string version of the ID for this switch. - * - * @return string version of the ID - */ - String getStringId(); - - /** - * Gets the datapathId of the switch. - * - * @return the switch dpid in long format - */ - long getId(); - - /** - * fetch the manufacturer description. - * @return the description - */ - String manufacturerDescription(); - - /** - * fetch the datapath description. - * @return the description - */ - String datapathDescription(); - - /** - * fetch the hardware description. - * @return the description - */ - String hardwareDescription(); - - /** - * fetch the software description. - * @return the description - */ - String softwareDescription(); - - /** - * fetch the serial number. - * @return the serial - */ - String serialNumber(); - - /** - * Checks if the switch is still connected. - * - * @return whether the switch is still connected - */ - boolean isConnected(); - - /** - * Disconnects the switch by closing the TCP connection. Results in a call - * to the channel handler's channelDisconnected method for cleanup - */ - void disconnectSwitch(); - - /** - * Notifies the controller that the device has responded to a set-role request. - * - * @param requested the role requested by the controller - * @param response the role set at the device - */ - void returnRoleReply(RoleState requested, RoleState response); - - /** - * Returns the switch device type. - * - * @return device type - */ - Device.Type deviceType(); - - /** - * Identifies the channel used to communicate with the switch. - * - * @return string representation of the connection to the device - */ - String channelId(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java deleted file mode 100644 index 2da41335..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFPortStatus; - -/** - * Allows for providers interested in Switch events to be notified. - */ -public interface OpenFlowSwitchListener { - - /** - * Notify that the switch was added. - * @param dpid the switch where the event occurred - */ - void switchAdded(Dpid dpid); - - /** - * Notify that the switch was removed. - * @param dpid the switch where the event occurred. - */ - void switchRemoved(Dpid dpid); - - /** - * Notify that the switch has changed in some way. - * @param dpid the switch that changed - */ - void switchChanged(Dpid dpid); - - /** - * Notify that a port has changed. - * @param dpid the switch on which the change happened. - * @param status the new state of the port. - */ - void portChanged(Dpid dpid, OFPortStatus status); - - /** - * Notify that a role imposed on a switch failed to take hold. - * - * @param dpid the switch that failed role assertion - * @param requested the role controller requested - * @param response role reply from the switch - */ - void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java deleted file mode 100644 index 817a6cdf..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.openflow.controller; - -/** - * Notifies providers about Packet in events. - */ -public interface PacketListener { - - /** - * Handles the packet. - * - * @param pktCtx the packet context - */ - void handlePacket(OpenFlowPacketContext pktCtx); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java deleted file mode 100644 index 3a0f1a0d..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.openflow.controller; - -/** - * Port description property types (OFPPDPT enums) in OF 1.3 <. - */ -public enum PortDescPropertyType { - ETHERNET(0), /* Ethernet port */ - OPTICAL(1), /* Optical port */ - OPTICAL_TRANSPORT(2), /* OF1.3 Optical transport extension */ - PIPELINE_INPUT(2), /* Ingress pipeline */ - PIPELINE_OUTPUT(3), /* Egress pipeline */ - RECIRCULATE(4), /* Recirculation */ - EXPERIMENTER(0xffff); /* Experimenter-implemented */ - - private final int value; - - PortDescPropertyType(int v) { - value = v; - } - - public int valueOf() { - return value; - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java deleted file mode 100644 index b8304f39..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFControllerRole; - -/** - * The role of the controller as it pertains to a particular switch. - * Note that this definition of the role enum is different from the - * OF1.3 definition. It is maintained here to be backward compatible to - * earlier versions of the controller code. This enum is translated - * to the OF1.3 enum, before role messages are sent to the switch. - * See sendRoleRequestMessage method in OFSwitchImpl - */ -public enum RoleState { - EQUAL(OFControllerRole.ROLE_EQUAL), - MASTER(OFControllerRole.ROLE_MASTER), - SLAVE(OFControllerRole.ROLE_SLAVE); - - private RoleState(OFControllerRole nxRole) { - nxRole.ordinal(); - } - -} - - - diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java deleted file mode 100644 index 59ef33cf..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.openflow.controller; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; -/** - * Used to support for the third party privacy flow rule. - * it implements OFMessage interface to use exist adapter API. - */ -public class ThirdPartyMessage implements OFMessage { - - private final byte[] payLoad; //privacy flow rule - - public ThirdPartyMessage(byte[] payLoad) { - this.payLoad = payLoad; - } - - public byte[] payLoad() { - return payLoad; - } - - @Override - public void putTo(PrimitiveSink sink) { - // Do nothing here for now. - } - - @Override - public OFVersion getVersion() { - // Do nothing here for now. - return null; - } - - @Override - public OFType getType() { - // Do nothing here for now. - return null; - } - - @Override - public long getXid() { - // Do nothing here for now. - return 0; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - // Do nothing here for now. - } - - @Override - public Builder createBuilder() { - // Do nothing here for now. - return null; - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java deleted file mode 100644 index 8b82b4a7..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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.openflow.controller; - -import java.util.List; -import java.util.Set; - -import org.projectfloodlight.openflow.protocol.OFObject; - -/** - * An interface implemented by OpenFlow devices that enables providers to - * retrieve ports based on port property. - */ -public interface WithTypedPorts { - - /** - * Return a list of interfaces (ports) of the type associated with this - * OpenFlow switch. - * - * @param type The port description property type of requested ports - * @return A potentially empty list of ports. - */ - List<? extends OFObject> getPortsOf(PortDescPropertyType type); - - /** - * Returns the port property types supported by the driver implementing this - * interface. - * - * @return A set of port property types - */ - Set<PortDescPropertyType> getPortTypes(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java deleted file mode 100644 index 2c19837e..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.IpAddress; -import org.onosproject.net.Device; -import org.onosproject.net.driver.AbstractHandlerBehaviour; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleRequest; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleRequest; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - -/** - * An abstract representation of an OpenFlow switch. Can be extended by others - * to serve as a base for their vendor specific representation of a switch. - */ -public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour - implements OpenFlowSwitchDriver { - - protected final Logger log = LoggerFactory.getLogger(getClass()); - - private Channel channel; - protected String channelId; - - private boolean connected; - protected boolean startDriverHandshakeCalled = false; - private Dpid dpid; - private OpenFlowAgent agent; - private final AtomicInteger xidCounter = new AtomicInteger(0); - - private OFVersion ofVersion; - - protected List<OFPortDescStatsReply> ports = new ArrayList<>(); - - protected boolean tableFull; - - private RoleHandler roleMan; - - protected RoleState role; - - protected OFFeaturesReply features; - protected OFDescStatsReply desc; - - List<OFMessage> messagesPendingMastership; - - @Override - public void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv) { - this.dpid = dpid; - this.desc = desc; - this.ofVersion = ofv; - } - - //************************ - // Channel related - //************************ - - @Override - public final void disconnectSwitch() { - this.channel.close(); - } - - @Override - public void sendMsg(OFMessage msg) { - this.sendMsg(Collections.singletonList(msg)); - } - - @Override - public final void sendMsg(List<OFMessage> msgs) { - if (role == RoleState.MASTER && channel.isConnected()) { - channel.write(msgs); - } else if (messagesPendingMastership != null) { - messagesPendingMastership.addAll(msgs); - log.debug("Enqueue message for switch {}. queue size after is {}", - dpid, messagesPendingMastership.size()); - } else { - log.warn("Dropping message for switch {} (role: {}, connected: {}): {}", - dpid, role, channel.isConnected(), msgs); - } - } - - @Override - public final void sendRoleRequest(OFMessage msg) { - if (msg instanceof OFRoleRequest || - msg instanceof OFNiciraControllerRoleRequest) { - channel.write(Collections.singletonList(msg)); - return; - } - throw new IllegalArgumentException("Someone is trying to send " + - "a non role request message"); - } - - @Override - public final void sendHandshakeMessage(OFMessage message) { - if (!this.isDriverHandshakeComplete()) { - channel.write(Collections.singletonList(message)); - } - } - - @Override - public final boolean isConnected() { - return this.connected; - } - - @Override - public final void setConnected(boolean connected) { - this.connected = connected; - } - - @Override - public final void setChannel(Channel channel) { - this.channel = channel; - final SocketAddress address = channel.getRemoteAddress(); - if (address instanceof InetSocketAddress) { - final InetSocketAddress inetAddress = (InetSocketAddress) address; - final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - if (ipAddress.isIp4()) { - channelId = ipAddress.toString() + ':' + inetAddress.getPort(); - } else { - channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort(); - } - } - } - - @Override - public String channelId() { - return channelId; - } - - //************************ - // Switch features related - //************************ - - @Override - public final long getId() { - return this.dpid.value(); - } - - @Override - public final String getStringId() { - return this.dpid.toString(); - } - - @Override - public final void setOFVersion(OFVersion ofV) { - this.ofVersion = ofV; - } - - @Override - public void setTableFull(boolean full) { - this.tableFull = full; - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - this.features = featuresReply; - } - - @Override - public abstract Boolean supportNxRole(); - - //************************ - // Message handling - //************************ - /** - * Handle the message coming from the dataplane. - * - * @param m the actual message - */ - @Override - public final void handleMessage(OFMessage m) { - if (this.role == RoleState.MASTER || m instanceof OFPortStatus) { - this.agent.processMessage(dpid, m); - } - } - - @Override - public RoleState getRole() { - return role; - } - - @Override - public final boolean connectSwitch() { - return this.agent.addConnectedSwitch(dpid, this); - } - - @Override - public final boolean activateMasterSwitch() { - return this.agent.addActivatedMasterSwitch(dpid, this); - } - - @Override - public final boolean activateEqualSwitch() { - return this.agent.addActivatedEqualSwitch(dpid, this); - } - - @Override - public final void transitionToEqualSwitch() { - this.agent.transitionToEqualSwitch(dpid); - } - - @Override - public final void transitionToMasterSwitch() { - this.agent.transitionToMasterSwitch(dpid); - if (messagesPendingMastership != null) { - this.sendMsg(messagesPendingMastership); - log.debug("Sending {} pending messages to switch {}", - messagesPendingMastership.size(), dpid); - messagesPendingMastership = null; - } - } - - @Override - public final void removeConnectedSwitch() { - this.agent.removeConnectedSwitch(dpid); - } - - @Override - public OFFactory factory() { - return OFFactories.getFactory(ofVersion); - } - - @Override - public void setPortDescReply(OFPortDescStatsReply portDescReply) { - this.ports.add(portDescReply); - } - - @Override - public void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies) { - this.ports.addAll(portDescReplies); - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - this.agent.returnRoleReply(dpid, requested, response); - } - - @Override - public abstract void startDriverHandshake(); - - @Override - public abstract boolean isDriverHandshakeComplete(); - - @Override - public abstract void processDriverHandshakeMessage(OFMessage m); - - - // Role Handling - - @Override - public void setRole(RoleState role) { - try { - if (this.roleMan.sendRoleRequest(role, RoleRecvStatus.MATCHED_SET_ROLE)) { - log.debug("Sending role {} to switch {}", role, getStringId()); - if (role == RoleState.SLAVE || role == RoleState.EQUAL) { - this.role = role; - } else { - if (messagesPendingMastership == null) { - log.debug("Initializing new queue for switch {}", dpid); - messagesPendingMastership = new ArrayList<>(); - } - } - } else { - this.role = role; - } - } catch (IOException e) { - log.error("Unable to write to switch {}.", this.dpid); - } - } - - @Override - public void reassertRole() { - if (this.getRole() == RoleState.MASTER) { - log.warn("Received permission error from switch {} while " + - "being master. Reasserting master role.", - this.getStringId()); - this.setRole(RoleState.MASTER); - } - } - - - - @Override - public void handleRole(OFMessage m) throws SwitchStateException { - RoleReplyInfo rri = roleMan.extractOFRoleReply((OFRoleReply) m); - RoleRecvStatus rrs = roleMan.deliverRoleReply(rri); - if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) { - if (rri.getRole() == RoleState.MASTER) { - this.role = rri.getRole(); - this.transitionToMasterSwitch(); - } else if (rri.getRole() == RoleState.EQUAL || - rri.getRole() == RoleState.SLAVE) { - this.transitionToEqualSwitch(); - } - } else { - log.warn("Failed to set role for {}", this.getStringId()); - } - } - - @Override - public void handleNiciraRole(OFMessage m) throws SwitchStateException { - RoleState r = this.roleMan.extractNiciraRoleReply((OFExperimenter) m); - if (r == null) { - // The message wasn't really a Nicira role reply. We just - // dispatch it to the OFMessage listeners in this case. - this.handleMessage(m); - return; - } - - RoleRecvStatus rrs = this.roleMan.deliverRoleReply( - new RoleReplyInfo(r, null, m.getXid())); - if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) { - if (r == RoleState.MASTER) { - this.role = r; - this.transitionToMasterSwitch(); - } else if (r == RoleState.EQUAL || - r == RoleState.SLAVE) { - this.transitionToEqualSwitch(); - } - } else { - this.disconnectSwitch(); - } - } - - @Override - public boolean handleRoleError(OFErrorMsg error) { - try { - return RoleRecvStatus.OTHER_EXPECTATION != this.roleMan.deliverError(error); - } catch (SwitchStateException e) { - this.disconnectSwitch(); - } - return true; - } - - - - @Override - public final void setAgent(OpenFlowAgent ag) { - if (this.agent == null) { - this.agent = ag; - } - } - - @Override - public final void setRoleHandler(RoleHandler roleHandler) { - if (this.roleMan == null) { - this.roleMan = roleHandler; - } - } - - @Override - public void setSwitchDescription(OFDescStatsReply d) { - this.desc = d; - } - - @Override - public int getNextTransactionId() { - return this.xidCounter.getAndIncrement(); - } - - @Override - public List<OFPortDesc> getPorts() { - return this.ports.stream() - .flatMap((portReply) -> (portReply.getEntries().stream())) - .collect(Collectors.toList()); - //return Collections.unmodifiableList(ports.getEntries()); - } - - @Override - public String manufacturerDescription() { - return this.desc.getMfrDesc(); - } - - - @Override - public String datapathDescription() { - return this.desc.getDpDesc(); - } - - - @Override - public String hardwareDescription() { - return this.desc.getHwDesc(); - } - - @Override - public String softwareDescription() { - return this.desc.getSwDesc(); - } - - @Override - public String serialNumber() { - return this.desc.getSerialNum(); - } - - - @Override - public Device.Type deviceType() { - return Device.Type.SWITCH; - } - - - @Override - public String toString() { - return this.getClass().getName() + " [" + ((channel != null) - ? channel.getRemoteAddress() : "?") - + " DPID[" + ((getStringId() != null) ? getStringId() : "?") + "]]"; - } - - - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java deleted file mode 100644 index ad6dede1..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Responsible for keeping track of the current set of switches - * connected to the system. As well as whether they are in Master - * role or not. - * - */ -public interface OpenFlowAgent { - - /** - * Add a switch that has just connected to the system. - * @param dpid the dpid to add - * @param sw the actual switch object. - * @return true if added, false otherwise. - */ - boolean addConnectedSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Checks if the activation for this switch is valid. - * @param dpid the dpid to check - * @return true if valid, false otherwise - */ - boolean validActivation(Dpid dpid); - - /** - * Called when a switch is activated, with this controller's role as MASTER. - * @param dpid the dpid to add. - * @param sw the actual switch - * @return true if added, false otherwise. - */ - boolean addActivatedMasterSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Called when a switch is activated, with this controller's role as EQUAL. - * @param dpid the dpid to add. - * @param sw the actual switch - * @return true if added, false otherwise. - */ - boolean addActivatedEqualSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Called when this controller's role for a switch transitions from equal - * to master. For 1.0 switches, we internally refer to the role 'slave' as - * 'equal' - so this transition is equivalent to 'addActivatedMasterSwitch'. - * @param dpid the dpid to transistion. - */ - void transitionToMasterSwitch(Dpid dpid); - - /** - * Called when this controller's role for a switch transitions to equal. - * For 1.0 switches, we internally refer to the role 'slave' as - * 'equal'. - * @param dpid the dpid to transistion. - */ - void transitionToEqualSwitch(Dpid dpid); - - /** - * Clear all state in controller switch maps for a switch that has - * disconnected from the local controller. Also release control for - * that switch from the global repository. Notify switch listeners. - * @param dpid the dpid to remove. - */ - void removeConnectedSwitch(Dpid dpid); - - /** - * Process a message coming from a switch. - * - * @param dpid the dpid the message came on. - * @param m the message to process - */ - void processMessage(Dpid dpid, OFMessage m); - - /** - * Notifies the controller that role assertion has failed. - * - * @param dpid the switch that failed role assertion - * @param requested the role controller requested - * @param response role reply from the switch - */ - void returnRoleReply(Dpid dpid, RoleState requested, RoleState response); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java deleted file mode 100644 index b259388c..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import java.util.List; - -/** - * Represents the driver side of an OpenFlow switch. - * This interface should never be exposed to consumers. - * - */ -public interface OpenFlowSwitchDriver extends OpenFlowSwitch, HandlerBehaviour { - - /** - * Sets the OpenFlow agent to be used. This method - * can only be called once. - * @param agent the agent to set. - */ - void setAgent(OpenFlowAgent agent); - - /** - * Sets the Role handler object. - * This method can only be called once. - * @param roleHandler the roleHandler class - */ - void setRoleHandler(RoleHandler roleHandler); - - /** - * Reasserts this controllers role to the switch. - * Useful in cases where the switch no longer agrees - * that this controller has the role it claims. - */ - void reassertRole(); - - /** - * Handle the situation where the role request triggers an error. - * @param error the error to handle. - * @return true if handled, false if not. - */ - boolean handleRoleError(OFErrorMsg error); - - /** - * If this driver know of Nicira style role messages, these should - * be handled here. - * @param m the role message to handle. - * @throws SwitchStateException if the message received was - * not a nicira role or was malformed. - */ - void handleNiciraRole(OFMessage m) throws SwitchStateException; - - /** - * Handle OF 1.x (where x > 0) role messages. - * @param m the role message to handle - * @throws SwitchStateException if the message received was - * not a nicira role or was malformed. - */ - void handleRole(OFMessage m) throws SwitchStateException; - - /** - * Announce to the OpenFlow agent that this switch has connected. - * @return true if successful, false if duplicate switch. - */ - boolean connectSwitch(); - - /** - * Activate this MASTER switch-controller relationship in the OF agent. - * @return true is successful, false is switch has not - * connected or is unknown to the system. - */ - boolean activateMasterSwitch(); - - /** - * Activate this EQUAL switch-controller relationship in the OF agent. - * @return true is successful, false is switch has not - * connected or is unknown to the system. - */ - boolean activateEqualSwitch(); - - /** - * Transition this switch-controller relationship to an EQUAL state. - */ - void transitionToEqualSwitch(); - - /** - * Transition this switch-controller relationship to an Master state. - */ - void transitionToMasterSwitch(); - - /** - * Remove this switch from the openflow agent. - */ - void removeConnectedSwitch(); - - /** - * Sets the ports on this switch. - * @param portDescReply the port set and descriptions - */ - void setPortDescReply(OFPortDescStatsReply portDescReply); - - /** - * Sets the ports on this switch. - * @param portDescReplies list of port set and descriptions - */ - void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies); - - /** - * Sets the features reply for this switch. - * @param featuresReply the features to set. - */ - void setFeaturesReply(OFFeaturesReply featuresReply); - - /** - * Sets the switch description. - * @param desc the descriptions - */ - void setSwitchDescription(OFDescStatsReply desc); - - /** - * Gets the next transaction id to use. - * @return the xid - */ - int getNextTransactionId(); - - - /** - * Sets the OF version for this switch. - * @param ofV the version to set. - */ - void setOFVersion(OFVersion ofV); - - /** - * Sets this switch has having a full flowtable. - * @param full true if full, false otherswise. - */ - void setTableFull(boolean full); - - /** - * Sets the associated Netty channel for this switch. - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - /** - * Sets whether the switch is connected. - * - * @param connected whether the switch is connected - */ - void setConnected(boolean connected); - - /** - * Initialises the behaviour. - * @param dpid a dpid - * @param desc a switch description - * @param ofv OpenFlow version - */ - void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv); - - /** - * Does this switch support Nicira Role messages. - * @return true if supports, false otherwise. - */ - Boolean supportNxRole(); - - - /** - * Starts the driver specific handshake process. - */ - void startDriverHandshake(); - - /** - * Checks whether the driver specific handshake is complete. - * @return true is finished, false if not. - */ - boolean isDriverHandshakeComplete(); - - /** - * Process a message during the driver specific handshake. - * @param m the message to process. - */ - void processDriverHandshakeMessage(OFMessage m); - - /** - * Sends only role request messages. - * - * @param message a role request message. - */ - void sendRoleRequest(OFMessage message); - - /** - * Allows the handshaker behaviour to send messages during the - * handshake phase only. - * - * @param message an OpenFlow message - */ - void sendHandshakeMessage(OFMessage message); - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java deleted file mode 100644 index a0d8f18f..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import org.onosproject.openflow.controller.Dpid; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -/** - * Switch factory which returns concrete switch objects for the - * physical openflow switch in use. - * - */ -public interface OpenFlowSwitchDriverFactory { - - - /** - * Constructs the real openflow switch representation. - * @param dpid the dpid for this switch. - * @param desc its description. - * @param ofv the OF version in use - * @return the openflow switch representation. - */ - OpenFlowSwitchDriver getOFSwitchImpl(Dpid dpid, - OFDescStatsReply desc, OFVersion ofv); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java deleted file mode 100644 index b4068886..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import java.io.IOException; - -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFRoleReply; - -/** - * Role handling. - * - */ -public interface RoleHandler { - - /** - * Extract the role from an OFVendor message. - * - * Extract the role from an OFVendor message if the message is a - * Nicira role reply. Otherwise return null. - * - * @param experimenterMsg The vendor message to parse. - * @return The role in the message if the message is a Nicira role - * reply, null otherwise. - * @throws SwitchStateException If the message is a Nicira role reply - * but the numeric role value is unknown. - */ - RoleState extractNiciraRoleReply(OFExperimenter experimenterMsg) - throws SwitchStateException; - - /** - * Send a role request with the given role to the switch and update - * the pending request and timestamp. - * Sends an OFPT_ROLE_REQUEST to an OF1.3 switch, OR - * Sends an NX_ROLE_REQUEST to an OF1.0 switch if configured to support it - * in the IOFSwitch driver. If not supported, this method sends nothing - * and returns 'false'. The caller should take appropriate action. - * - * One other optimization we do here is that for OF1.0 switches with - * Nicira role message support, we force the Role.EQUAL to become - * Role.SLAVE, as there is no defined behavior for the Nicira role OTHER. - * We cannot expect it to behave like SLAVE. We don't have this problem with - * OF1.3 switches, because Role.EQUAL is well defined and we can simulate - * SLAVE behavior by using ASYNC messages. - * - * @param role role to request - * @param exp expectation - * @throws IOException when I/O exception of some sort has occurred - * @return false if and only if the switch does not support role-request - * messages, according to the switch driver; true otherwise. - */ - boolean sendRoleRequest(RoleState role, RoleRecvStatus exp) - throws IOException; - - /** - * Extract the role information from an OF1.3 Role Reply Message. - * @param rrmsg role reply message - * @return RoleReplyInfo object - * @throws SwitchStateException If unknown role encountered - */ - RoleReplyInfo extractOFRoleReply(OFRoleReply rrmsg) - throws SwitchStateException; - - /** - * Deliver a received role reply. - * - * Check if a request is pending and if the received reply matches the - * the expected pending reply (we check both role and xid) we set - * the role for the switch/channel. - * - * If a request is pending but doesn't match the reply we ignore it, and - * return - * - * If no request is pending we disconnect with a SwitchStateException - * - * @param rri information about role-reply in format that - * controller can understand. - * @return result comparing expected and received reply - * @throws SwitchStateException if no request is pending - */ - RoleRecvStatus deliverRoleReply(RoleReplyInfo rri) - throws SwitchStateException; - - - /** - * Called if we receive an error message. If the xid matches the - * pending request we handle it otherwise we ignore it. - * - * Note: since we only keep the last pending request we might get - * error messages for earlier role requests that we won't be able - * to handle - * @param error error message - * @return result comparing expected and received reply - * @throws SwitchStateException if switch did not support requested role - */ - RoleRecvStatus deliverError(OFErrorMsg error) - throws SwitchStateException; - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java deleted file mode 100644 index 88c4cc70..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * When we remove a pending role request we use this enum to indicate how we - * arrived at the decision. When we send a role request to the switch, we - * also use this enum to indicate what we expect back from the switch, so the - * role changer can match the reply to our expectation. - */ -public enum RoleRecvStatus { - /** The switch returned an error indicating that roles are not. - * supported*/ - UNSUPPORTED, - /** The request timed out. */ - NO_REPLY, - /** The reply was old, there is a newer request pending. */ - OLD_REPLY, - /** - * The reply's role matched the role that this controller set in the - * request message - invoked either initially at startup or to reassert - * current role. - */ - MATCHED_CURRENT_ROLE, - /** - * The reply's role matched the role that this controller set in the - * request message - this is the result of a callback from the - * global registry, followed by a role request sent to the switch. - */ - MATCHED_SET_ROLE, - /** - * The reply's role was a response to the query made by this controller. - */ - REPLY_QUERY, - /** We received a role reply message from the switch - * but the expectation was unclear, or there was no expectation. - */ - OTHER_EXPECTATION, -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java deleted file mode 100644 index dc9b6bad..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.types.U64; - -/** - * Helper class returns role reply information in the format understood - * by the controller. - */ -public class RoleReplyInfo { - private final RoleState role; - private final U64 genId; - private final long xid; - - public RoleReplyInfo(RoleState role, U64 genId, long xid) { - this.role = role; - this.genId = genId; - this.xid = xid; - } - public RoleState getRole() { - return role; - } - public U64 getGenId() { - return genId; - } - public long getXid() { - return xid; - } - @Override - public String toString() { - return "[Role:" + role + " GenId:" + genId + " Xid:" + xid + "]"; - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java deleted file mode 100644 index 96b4bd73..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * Thrown when IOFSwitch.startDriverHandshake() is called more than once. - * - */ -public class SwitchDriverSubHandshakeAlreadyStarted extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -5491845708752443501L; - - public SwitchDriverSubHandshakeAlreadyStarted() { - super(); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java deleted file mode 100644 index b0f59fe5..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.openflow.controller.driver; - -import org.projectfloodlight.openflow.protocol.OFMessage; - - -/** - * Indicates that a message was passed to a switch driver's subhandshake - * handling code but the driver has already completed the sub-handshake. - * - */ -public class SwitchDriverSubHandshakeCompleted - extends SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -8817822245846375995L; - - public SwitchDriverSubHandshakeCompleted(OFMessage m) { - super("Sub-Handshake is already complete but received message " - + m.getType()); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java deleted file mode 100644 index 1bc750ab..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * Base class for exception thrown by switch driver sub-handshake processing. - * - */ -public class SwitchDriverSubHandshakeException extends RuntimeException { - private static final long serialVersionUID = -6257836781419604438L; - - protected SwitchDriverSubHandshakeException() { - super(); - } - - protected SwitchDriverSubHandshakeException(String arg0, Throwable arg1) { - super(arg0, arg1); - } - - protected SwitchDriverSubHandshakeException(String arg0) { - super(arg0); - } - - protected SwitchDriverSubHandshakeException(Throwable arg0) { - super(arg0); - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java deleted file mode 100644 index a073683c..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * Thrown when a switch driver's sub-handshake has not been started but an - * operation requiring the sub-handshake has been attempted. - * - */ -public class SwitchDriverSubHandshakeNotStarted extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -5491845708752443501L; - - public SwitchDriverSubHandshakeNotStarted() { - super(); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java deleted file mode 100644 index 3f4be813..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * Thrown when a switch driver's sub-handshake state-machine receives an - * unexpected OFMessage and/or is in an invald state. - * - */ -public class SwitchDriverSubHandshakeStateException extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -8249926069195147051L; - - public SwitchDriverSubHandshakeStateException(String msg) { - super(msg); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java deleted file mode 100644 index 30c4e917..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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.openflow.controller.driver; - -/** - * This exception indicates an error or unexpected message during - * message handling. E.g., if an OFMessage is received that is illegal or - * unexpected given the current handshake state. - * - * We don't allow wrapping other exception in a switch state exception. We - * only log the SwitchStateExceptions message so the causing exceptions - * stack trace is generally not available. - * - */ -public class SwitchStateException extends Exception { - - private static final long serialVersionUID = 9153954512470002631L; - - public SwitchStateException() { - super(); - } - - public SwitchStateException(String arg0, Throwable arg1) { - super(arg0, arg1); - } - - public SwitchStateException(String arg0) { - super(arg0); - } - - public SwitchStateException(Throwable arg0) { - super(arg0); - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java deleted file mode 100644 index c03a5840..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * OpenFlow controller switch driver API. - */ -package org.onosproject.openflow.controller.driver; diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java deleted file mode 100644 index 54778426..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * OpenFlow controller API. - */ -package org.onosproject.openflow.controller; diff --git a/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java b/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java deleted file mode 100644 index f4fe490f..00000000 --- a/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Test adapter for the OpenFlow controller interface. - */ -public class OpenflowControllerAdapter implements OpenFlowController { - @Override - public Iterable<OpenFlowSwitch> getSwitches() { - return null; - } - - @Override - public Iterable<OpenFlowSwitch> getMasterSwitches() { - return null; - } - - @Override - public Iterable<OpenFlowSwitch> getEqualSwitches() { - return null; - } - - @Override - public OpenFlowSwitch getSwitch(Dpid dpid) { - return null; - } - - @Override - public OpenFlowSwitch getMasterSwitch(Dpid dpid) { - return null; - } - - @Override - public OpenFlowSwitch getEqualSwitch(Dpid dpid) { - return null; - } - - @Override - public void addListener(OpenFlowSwitchListener listener) { - } - - @Override - public void removeListener(OpenFlowSwitchListener listener) { - } - - @Override - public void addPacketListener(int priority, PacketListener listener) { - } - - @Override - public void removePacketListener(PacketListener listener) { - } - - @Override - public void write(Dpid dpid, OFMessage msg) { - } - - @Override - public void processPacket(Dpid dpid, OFMessage msg) { - } - - @Override - public void setRole(Dpid dpid, RoleState role) { - } - - @Override - public void addEventListener(OpenFlowEventListener listener) { - } - - @Override - public void removeEventListener(OpenFlowEventListener listener) { - } -} diff --git a/framework/src/onos/openflow/ctl/pom.xml b/framework/src/onos/openflow/ctl/pom.xml deleted file mode 100644 index 56d48550..00000000 --- a/framework/src/onos/openflow/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<!-- - ~ 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-of</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of-ctl</artifactId> - <packaging>bundle</packaging> - - <description>ONOS OpenFlow controller subsystem API</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-api</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.onosproject</groupId> - <artifactId>onos-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java deleted file mode 100644 index d9848be5..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; -import org.jboss.netty.bootstrap.ServerBootstrap; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.group.ChannelGroup; -import org.jboss.netty.channel.group.DefaultChannelGroup; -import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.DefaultDriverData; -import org.onosproject.net.driver.DefaultDriverHandler; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverService; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; -import javax.net.ssl.TrustManagerFactory; -import java.io.FileInputStream; -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; -import java.net.InetSocketAddress; -import java.security.KeyStore; -import java.util.Dictionary; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Executors; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.openflow.controller.Dpid.uri; - - -/** - * The main controller class. Handles all setup and network listeners - * - Distributed ownership control of switch through IControllerRegistryService - */ -public class Controller { - - protected static final Logger log = LoggerFactory.getLogger(Controller.class); - - protected static final OFFactory FACTORY13 = OFFactories.getFactory(OFVersion.OF_13); - protected static final OFFactory FACTORY10 = OFFactories.getFactory(OFVersion.OF_10); - private static final boolean TLS_DISABLED = false; - private static final short MIN_KS_LENGTH = 6; - - protected HashMap<String, String> controllerNodeIPsCache; - - private ChannelGroup cg; - - // Configuration options - protected List<Integer> openFlowPorts = ImmutableList.of(6633, 6653); - protected int workerThreads = 16; - - // Start time of the controller - protected long systemStartTime; - - private OpenFlowAgent agent; - - private NioServerSocketChannelFactory execFactory; - - protected String ksLocation; - protected String tsLocation; - protected char[] ksPwd; - protected char[] tsPwd; - protected SSLEngine serverSSLEngine; - - // Perf. related configuration - protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - private DriverService driverService; - private boolean enableOFTLS = TLS_DISABLED; - - // *************** - // Getters/Setters - // *************** - - public OFFactory getOFMessageFactory10() { - return FACTORY10; - } - - - public OFFactory getOFMessageFactory13() { - return FACTORY13; - } - - // ************** - // Initialization - // ************** - - /** - * Tell controller that we're ready to accept switches loop. - */ - public void run() { - - try { - final ServerBootstrap bootstrap = createServerBootStrap(); - - bootstrap.setOption("reuseAddr", true); - bootstrap.setOption("child.keepAlive", true); - bootstrap.setOption("child.tcpNoDelay", true); - bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - - ChannelPipelineFactory pfact = - new OpenflowPipelineFactory(this, null, serverSSLEngine); - bootstrap.setPipelineFactory(pfact); - cg = new DefaultChannelGroup(); - openFlowPorts.forEach(port -> { - InetSocketAddress sa = new InetSocketAddress(port); - cg.add(bootstrap.bind(sa)); - log.info("Listening for switch connections on {}", sa); - }); - - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - - private ServerBootstrap createServerBootStrap() { - - if (workerThreads == 0) { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/of", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/of", "worker-%d"))); - return new ServerBootstrap(execFactory); - } else { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/of", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/of", "worker-%d")), workerThreads); - return new ServerBootstrap(execFactory); - } - } - - public void setConfigParams(Dictionary<?, ?> properties) { - String ports = get(properties, "openflowPorts"); - if (!Strings.isNullOrEmpty(ports)) { - this.openFlowPorts = Stream.of(ports.split(",")) - .map(s -> Integer.parseInt(s)) - .collect(Collectors.toList()); - } - log.debug("OpenFlow ports set to {}", this.openFlowPorts); - - String threads = get(properties, "workerThreads"); - if (!Strings.isNullOrEmpty(threads)) { - this.workerThreads = Integer.parseInt(threads); - } - log.debug("Number of worker threads set to {}", this.workerThreads); - } - - /** - * Initialize internal data structures. - */ - public void init() { - // These data structures are initialized here because other - // module's startUp() might be called before ours - this.controllerNodeIPsCache = new HashMap<>(); - - this.systemStartTime = System.currentTimeMillis(); - - try { - getTLSParameters(); - if (enableOFTLS) { - initSSL(); - } - } catch (Exception ex) { - log.error("SSL init failed: {}", ex.getMessage()); - } - - } - - private void getTLSParameters() { - String tempString = System.getProperty("enableOFTLS"); - enableOFTLS = Strings.isNullOrEmpty(tempString) ? TLS_DISABLED : Boolean.parseBoolean(tempString); - log.info("OpenFlow Security is {}", enableOFTLS ? "enabled" : "disabled"); - if (enableOFTLS) { - ksLocation = System.getProperty("javax.net.ssl.keyStore"); - if (Strings.isNullOrEmpty(ksLocation)) { - enableOFTLS = TLS_DISABLED; - return; - } - tsLocation = System.getProperty("javax.net.ssl.trustStore"); - if (Strings.isNullOrEmpty(tsLocation)) { - enableOFTLS = TLS_DISABLED; - return; - } - ksPwd = System.getProperty("javax.net.ssl.keyStorePassword").toCharArray(); - if (MIN_KS_LENGTH > ksPwd.length) { - enableOFTLS = TLS_DISABLED; - return; - } - tsPwd = System.getProperty("javax.net.ssl.trustStorePassword").toCharArray(); - if (MIN_KS_LENGTH > tsPwd.length) { - enableOFTLS = TLS_DISABLED; - return; - } - } - } - - private void initSSL() throws Exception { - - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - KeyStore ts = KeyStore.getInstance("JKS"); - ts.load(new FileInputStream(tsLocation), tsPwd); - tmFactory.init(ts); - - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(ksLocation), ksPwd); - kmf.init(ks, ksPwd); - - SSLContext serverContext = SSLContext.getInstance("TLS"); - serverContext.init(kmf.getKeyManagers(), tmFactory.getTrustManagers(), null); - - serverSSLEngine = serverContext.createSSLEngine(); - - serverSSLEngine.setNeedClientAuth(true); - serverSSLEngine.setUseClientMode(false); - serverSSLEngine.setEnabledProtocols(serverSSLEngine.getSupportedProtocols()); - serverSSLEngine.setEnabledCipherSuites(serverSSLEngine.getSupportedCipherSuites()); - serverSSLEngine.setEnableSessionCreation(true); - } - - // ************** - // Utility methods - // ************** - - public Map<String, Long> getMemory() { - Map<String, Long> m = new HashMap<>(); - Runtime runtime = Runtime.getRuntime(); - m.put("total", runtime.totalMemory()); - m.put("free", runtime.freeMemory()); - return m; - } - - - public Long getSystemUptime() { - RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); - return rb.getUptime(); - } - - public long getSystemStartTime() { - return (this.systemStartTime); - } - - /** - * Forward to the driver-manager to get an IOFSwitch instance. - * - * @param dpid data path id - * @param desc switch description - * @param ofv OpenFlow version - * @return switch instance - */ - protected OpenFlowSwitchDriver getOFSwitchInstance(long dpid, - OFDescStatsReply desc, - OFVersion ofv) { - Dpid dpidObj = new Dpid(dpid); - - Driver driver; - try { - driver = driverService.getDriver(DeviceId.deviceId(Dpid.uri(dpidObj))); - } catch (ItemNotFoundException e) { - driver = driverService.getDriver(desc.getMfrDesc(), desc.getHwDesc(), desc.getSwDesc()); - } - - if (driver != null && driver.hasBehaviour(OpenFlowSwitchDriver.class)) { - Dpid did = new Dpid(dpid); - DefaultDriverHandler handler = - new DefaultDriverHandler(new DefaultDriverData(driver, deviceId(uri(did)))); - OpenFlowSwitchDriver ofSwitchDriver = - driver.createBehaviour(handler, OpenFlowSwitchDriver.class); - ofSwitchDriver.init(did, desc, ofv); - ofSwitchDriver.setAgent(agent); - ofSwitchDriver.setRoleHandler(new RoleManager(ofSwitchDriver)); - log.info("OpenFlow handshaker found for device {}: {}", dpid, ofSwitchDriver); - return ofSwitchDriver; - } - log.error("No OpenFlow driver for {} : {}", dpid, desc); - return null; - - } - - public void start(OpenFlowAgent ag, DriverService driverService) { - log.info("Starting OpenFlow IO"); - this.agent = ag; - this.driverService = driverService; - this.init(); - this.run(); - } - - - public void stop() { - log.info("Stopping OpenFlow IO"); - cg.close(); - execFactory.shutdown(); - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java deleted file mode 100644 index bbe307be..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.openflow.controller.impl; - -/** - * Exception is thrown when the handshake fails to complete. - * before a specified time - * - */ -public class HandshakeTimeoutException extends Exception { - - private static final long serialVersionUID = 6859880268940337312L; - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java deleted file mode 100644 index fbbe3428..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.util.concurrent.TimeUnit; - -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.channel.SimpleChannelUpstreamHandler; -import org.jboss.netty.util.Timeout; -import org.jboss.netty.util.Timer; -import org.jboss.netty.util.TimerTask; - -/** - * Trigger a timeout if a switch fails to complete handshake soon enough. - */ -public class HandshakeTimeoutHandler - extends SimpleChannelUpstreamHandler { - static final HandshakeTimeoutException EXCEPTION = - new HandshakeTimeoutException(); - - final OFChannelHandler channelHandler; - final Timer timer; - final long timeoutNanos; - volatile Timeout timeout; - - public HandshakeTimeoutHandler(OFChannelHandler channelHandler, - Timer timer, - long timeoutSeconds) { - super(); - this.channelHandler = channelHandler; - this.timer = timer; - this.timeoutNanos = TimeUnit.SECONDS.toNanos(timeoutSeconds); - - } - - @Override - public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) - throws Exception { - if (timeoutNanos > 0) { - timeout = timer.newTimeout(new HandshakeTimeoutTask(ctx), - timeoutNanos, TimeUnit.NANOSECONDS); - } - ctx.sendUpstream(e); - } - - @Override - public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) - throws Exception { - if (timeout != null) { - timeout.cancel(); - timeout = null; - } - } - - private final class HandshakeTimeoutTask implements TimerTask { - - private final ChannelHandlerContext ctx; - - HandshakeTimeoutTask(ChannelHandlerContext ctx) { - this.ctx = ctx; - } - - @Override - public void run(Timeout t) throws Exception { - if (t.isCancelled()) { - return; - } - - if (!ctx.getChannel().isOpen()) { - return; - } - if (!channelHandler.isHandshakeComplete()) { - Channels.fireExceptionCaught(ctx, EXCEPTION); - } - } - } -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java deleted file mode 100644 index ff92b77e..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java +++ /dev/null @@ -1,1320 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -//CHECKSTYLE:OFF -package org.onosproject.openflow.controller.impl; - -import java.io.IOException; -import java.nio.channels.ClosedChannelException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.IdleStateEvent; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.exceptions.OFParseError; -import org.projectfloodlight.openflow.protocol.OFAsyncGetReply; -import org.projectfloodlight.openflow.protocol.OFBadRequestCode; -import org.projectfloodlight.openflow.protocol.OFBarrierReply; -import org.projectfloodlight.openflow.protocol.OFBarrierRequest; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFDescStatsRequest; -import org.projectfloodlight.openflow.protocol.OFEchoReply; -import org.projectfloodlight.openflow.protocol.OFEchoRequest; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFErrorType; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFFlowModFailedCode; -import org.projectfloodlight.openflow.protocol.OFFlowRemoved; -import org.projectfloodlight.openflow.protocol.OFGetConfigReply; -import org.projectfloodlight.openflow.protocol.OFGetConfigRequest; -import org.projectfloodlight.openflow.protocol.OFHello; -import org.projectfloodlight.openflow.protocol.OFHelloElem; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsRequest; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFQueueGetConfigReply; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFSetConfig; -import org.projectfloodlight.openflow.protocol.OFStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.OFStatsType; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg; -import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; -import org.projectfloodlight.openflow.types.U32; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Channel handler deals with the switch connection and dispatches - * switch messages to the appropriate locations. - */ -class OFChannelHandler extends IdleStateAwareChannelHandler { - private static final Logger log = LoggerFactory.getLogger(OFChannelHandler.class); - - private static final String RESET_BY_PEER = "Connection reset by peer"; - private static final String BROKEN_PIPE = "Broken pipe"; - - private final Controller controller; - private OpenFlowSwitchDriver sw; - private long thisdpid; // channelHandler cached value of connected switch id - private Channel channel; - // State needs to be volatile because the HandshakeTimeoutHandler - // needs to check if the handshake is complete - private volatile ChannelState state; - - // When a switch with a duplicate dpid is found (i.e we already have a - // connected switch with the same dpid), the new switch is immediately - // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup switch state - we need to ensure that it does not cleanup - // switch state for the older (still connected) switch - private volatile Boolean duplicateDpidFound; - - // Temporary storage for switch-features and port-description - private OFFeaturesReply featuresReply; - private List<OFPortDescStatsReply> portDescReplies; - //private OFPortDescStatsReply portDescReply; - // a concurrent ArrayList to temporarily store port status messages - // before we are ready to deal with them - private final CopyOnWriteArrayList<OFPortStatus> pendingPortStatusMsg; - - //Indicates the openflow version used by this switch - protected OFVersion ofVersion; - protected OFFactory factory13; - protected OFFactory factory10; - - /** transaction Ids to use during handshake. Since only one thread - * calls into an OFChannelHandler instance, we don't need atomic. - * We will count down - */ - private int handshakeTransactionIds = -1; - - /** - * Create a new unconnected OFChannelHandler. - * @param controller parent controller - */ - OFChannelHandler(Controller controller) { - this.controller = controller; - this.state = ChannelState.INIT; - this.pendingPortStatusMsg = new CopyOnWriteArrayList<OFPortStatus>(); - this.portDescReplies = new ArrayList<OFPortDescStatsReply>(); - factory13 = controller.getOFMessageFactory13(); - factory10 = controller.getOFMessageFactory10(); - duplicateDpidFound = Boolean.FALSE; - } - - - - // XXX S consider if necessary - public void disconnectSwitch() { - sw.disconnectSwitch(); - } - - - - //************************* - // Channel State Machine - //************************* - - /** - * The state machine for handling the switch/channel state. All state - * transitions should happen from within the state machine (and not from other - * parts of the code) - */ - enum ChannelState { - /** - * Initial state before channel is connected. - */ - INIT(false) { - @Override - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException { - // need to implement since its abstract but it will never - // be called - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - unhandledMessageReceived(h, m); - } - }, - - /** - * We send a OF 1.3 HELLO to the switch and wait for a Hello from the switch. - * Once we receive the reply, we decide on OF 1.3 or 1.0 switch - no other - * protocol version is accepted. - * We send an OFFeaturesRequest depending on the protocol version selected - * Next state is WAIT_FEATURES_REPLY - */ - WAIT_HELLO(false) { - @Override - void processOFHello(OFChannelHandler h, OFHello m) - throws IOException { - // TODO We could check for the optional bitmap, but for now - // we are just checking the version number. - if (m.getVersion().getWireVersion() >= OFVersion.OF_13.getWireVersion()) { - log.debug("Received {} Hello from {} - switching to OF " - + "version 1.3", m.getVersion(), - h.channel.getRemoteAddress()); - h.sendHandshakeHelloMessage(); - h.ofVersion = OFVersion.OF_13; - } else if (m.getVersion().getWireVersion() >= OFVersion.OF_10.getWireVersion()) { - log.debug("Received {} Hello from {} - switching to OF " - + "version 1.0", m.getVersion(), - h.channel.getRemoteAddress()); - OFHello hi = - h.factory10.buildHello() - .setXid(h.handshakeTransactionIds--) - .build(); - h.channel.write(Collections.singletonList(hi)); - h.ofVersion = OFVersion.OF_10; - } else { - log.error("Received Hello of version {} from switch at {}. " - + "This controller works with OF1.0 and OF1.3 " - + "switches. Disconnecting switch ...", - m.getVersion(), h.channel.getRemoteAddress()); - h.channel.disconnect(); - return; - } - h.sendHandshakeFeaturesRequestMessage(); - h.setState(WAIT_FEATURES_REPLY); - } - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - unhandledMessageReceived(h, m); - } - }, - - - /** - * We are waiting for a features reply message. Once we receive it, the - * behavior depends on whether this is a 1.0 or 1.3 switch. For 1.0, - * we send a SetConfig request, barrier, and GetConfig request and the - * next state is WAIT_CONFIG_REPLY. For 1.3, we send a Port description - * request and the next state is WAIT_PORT_DESC_REPLY. - */ - WAIT_FEATURES_REPLY(false) { - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException { - h.thisdpid = m.getDatapathId().getLong(); - log.debug("Received features reply for switch at {} with dpid {}", - h.getSwitchInfoString(), h.thisdpid); - - h.featuresReply = m; //temp store - if (h.ofVersion == OFVersion.OF_10) { - h.sendHandshakeSetConfig(); - h.setState(WAIT_CONFIG_REPLY); - } else { - //version is 1.3, must get switchport information - h.sendHandshakeOFPortDescRequest(); - h.setState(WAIT_PORT_DESC_REPLY); - } - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - /** - * We are waiting for a description of the 1.3 switch ports. - * Once received, we send a SetConfig request - * Next State is WAIT_CONFIG_REPLY - */ - WAIT_PORT_DESC_REPLY(false) { - - @Override - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws SwitchStateException { - // Read port description - if (m.getStatsType() != OFStatsType.PORT_DESC) { - log.warn("Expecting port description stats but received stats " - + "type {} from {}. Ignoring ...", m.getStatsType(), - h.channel.getRemoteAddress()); - return; - } - if (m.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - log.debug("Stats reply indicates more stats from sw {} for " - + "port description", - h.getSwitchInfoString()); - h.portDescReplies.add((OFPortDescStatsReply)m); - return; - } - else { - h.portDescReplies.add((OFPortDescStatsReply)m); - } - //h.portDescReply = (OFPortDescStatsReply) m; // temp store - log.info("Received port desc reply for switch at {}", - h.getSwitchInfoString()); - try { - h.sendHandshakeSetConfig(); - } catch (IOException e) { - log.error("Unable to send setConfig after PortDescReply. " - + "Error: {}", e.getMessage()); - } - h.setState(WAIT_CONFIG_REPLY); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException { - logErrorDisconnect(h, m); - - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException { - h.pendingPortStatusMsg.add(m); - - } - }, - - /** - * We are waiting for a config reply message. Once we receive it - * we send a DescriptionStatsRequest to the switch. - * Next state: WAIT_DESCRIPTION_STAT_REPLY - */ - WAIT_CONFIG_REPLY(false) { - @Override - void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m) - throws IOException { - if (m.getMissSendLen() == 0xffff) { - log.trace("Config Reply from switch {} confirms " - + "miss length set to 0xffff", - h.getSwitchInfoString()); - } else { - // FIXME: we can't really deal with switches that don't send - // full packets. Shouldn't we drop the connection here? - log.warn("Config Reply from switch {} has" - + "miss length set to {}", - h.getSwitchInfoString(), - m.getMissSendLen()); - } - h.sendHandshakeDescriptionStatsRequest(); - h.setState(WAIT_DESCRIPTION_STAT_REPLY); - } - - @Override - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) { - // do nothing; - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - log.error("Received multipart(stats) message sub-type {}", - m.getStatsType()); - illegalMessageReceived(h, m); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - - /** - * We are waiting for a OFDescriptionStat message from the switch. - * Once we receive any stat message we try to parse it. If it's not - * a description stats message we disconnect. If its the expected - * description stats message, we: - * - use the switch driver to bind the switch and get an IOFSwitch instance - * - setup the IOFSwitch instance - * - add switch controller and send the initial role - * request to the switch. - * Next state: WAIT_INITIAL_ROLE - * In the typical case, where switches support role request messages - * the next state is where we expect the role reply message. - * In the special case that where the switch does not support any kind - * of role request messages, we don't send a role message, but we do - * request mastership from the registry service. This controller - * should become master once we hear back from the registry service. - * All following states will have a h.sw instance! - */ - WAIT_DESCRIPTION_STAT_REPLY(false) { - @Override - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws SwitchStateException { - // Read description, if it has been updated - if (m.getStatsType() != OFStatsType.DESC) { - log.warn("Expecting Description stats but received stats " - + "type {} from {}. Ignoring ...", m.getStatsType(), - h.channel.getRemoteAddress()); - return; - } - OFDescStatsReply drep = (OFDescStatsReply) m; - log.info("Received switch description reply {} from switch at {}", - drep, h.channel.getRemoteAddress()); - // Here is where we differentiate between different kinds of switches - h.sw = h.controller.getOFSwitchInstance(h.thisdpid, drep, h.ofVersion); - - h.sw.setOFVersion(h.ofVersion); - h.sw.setFeaturesReply(h.featuresReply); - //h.sw.setPortDescReply(h.portDescReply); - h.sw.setPortDescReplies(h.portDescReplies); - h.sw.setConnected(true); - h.sw.setChannel(h.channel); -// boolean success = h.sw.connectSwitch(); -// -// if (!success) { -// disconnectDuplicate(h); -// return; -// } - // set switch information - - - - log.debug("Switch {} bound to class {}, description {}", - h.sw, h.sw.getClass(), drep); - //Put switch in EQUAL mode until we hear back from the global registry - //log.debug("Setting new switch {} to EQUAL and sending Role request", - // h.sw.getStringId()); - //h.sw.activateEqualSwitch(); - //h.setSwitchRole(RoleState.EQUAL); - - h.sw.startDriverHandshake(); - if (h.sw.isDriverHandshakeComplete()) { - if (!h.sw.connectSwitch()) { - disconnectDuplicate(h); - } - handlePendingPortStatusMessages(h); - h.setState(ACTIVE); - } else { - h.setState(WAIT_SWITCH_DRIVER_SUB_HANDSHAKE); - } - - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - - /** - * We are waiting for the respective switch driver to complete its - * configuration. Notice that we do not consider this to be part of the main - * switch-controller handshake. But we do consider it as a step that comes - * before we declare the switch as available to the controller. - * Next State: depends on the role of this controller for this switch - either - * MASTER or EQUAL. - */ - WAIT_SWITCH_DRIVER_SUB_HANDSHAKE(true) { - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException { - // will never be called. We override processOFMessage - } - - - - @Override - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - h.state.processOFMessage(h, m); - return; - - } - - if (m.getType() == OFType.ECHO_REQUEST) { - processOFEchoRequest(h, (OFEchoRequest) m); - } else if (m.getType() == OFType.ECHO_REPLY) { - processOFEchoReply(h, (OFEchoReply) m); - } else if (m.getType() == OFType.ROLE_REPLY) { - h.sw.handleRole(m); - } else if (m.getType() == OFType.ERROR) { - if (!h.sw.handleRoleError((OFErrorMsg)m)) { - h.sw.processDriverHandshakeMessage(m); - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - } - } - } else { - if (m.getType() == OFType.EXPERIMENTER && - ((OFExperimenter) m).getExperimenter() == - RoleManager.NICIRA_EXPERIMENTER) { - h.sw.handleNiciraRole(m); - } else { - h.sw.processDriverHandshakeMessage(m); - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - } - } - } - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException { - h.pendingPortStatusMsg.add(m); - } - - private void moveToActive(OFChannelHandler h) { - boolean success = h.sw.connectSwitch(); - handlePendingPortStatusMessages(h); - h.setState(ACTIVE); - if (!success) { - disconnectDuplicate(h); - } - } - - }, - - - /** - * This controller is in MASTER role for this switch. We enter this state - * after requesting and winning control from the global registry. - * The main handshake as well as the switch-driver sub-handshake - * is complete at this point. - * // XXX S reconsider below - * In the (near) future we may deterministically assign controllers to - * switches at startup. - * We only leave this state if the switch disconnects or - * if we send a role request for SLAVE /and/ receive the role reply for - * SLAVE. - */ - ACTIVE(true) { - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException { - // if we get here, then the error message is for something else - if (m.getErrType() == OFErrorType.BAD_REQUEST && - ((OFBadRequestErrorMsg) m).getCode() == - OFBadRequestCode.EPERM) { - // We are the master controller and the switch returned - // a permission error. This is a likely indicator that - // the switch thinks we are slave. Reassert our - // role - // FIXME: this could be really bad during role transitions - // if two controllers are master (even if its only for - // a brief period). We might need to see if these errors - // persist before we reassert - - h.sw.reassertRole(); - } else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED && - ((OFFlowModFailedErrorMsg) m).getCode() == - OFFlowModFailedCode.ALL_TABLES_FULL) { - h.sw.setTableFull(true); - } else { - logError(h, m); - } - h.dispatchMessage(m); - } - - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) { - if (m.getStatsType().equals(OFStatsType.PORT_DESC)) { - h.sw.setPortDescReply((OFPortDescStatsReply) m); - } - h.dispatchMessage(m); - } - - @Override - void processOFExperimenter(OFChannelHandler h, OFExperimenter m) - throws SwitchStateException { - h.sw.handleNiciraRole(m); - } - - @Override - void processOFRoleReply(OFChannelHandler h, OFRoleReply m) - throws SwitchStateException { - h.sw.handleRole(m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws SwitchStateException { - handlePortStatusMessage(h, m, true); - //h.dispatchMessage(m); - } - - @Override - void processOFPacketIn(OFChannelHandler h, OFPacketIn m) { -// OFPacketOut out = -// h.sw.factory().buildPacketOut() -// .setXid(m.getXid()) -// .setBufferId(m.getBufferId()).build(); -// h.sw.sendMsg(out); - h.dispatchMessage(m); - } - - @Override - void processOFFlowRemoved(OFChannelHandler h, - OFFlowRemoved m) { - h.dispatchMessage(m); - } - - @Override - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) { - h.dispatchMessage(m); - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) { - h.sw.setFeaturesReply(m); - h.dispatchMessage(m); - } - - }; - - private final boolean handshakeComplete; - ChannelState(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - /** - * Is this a state in which the handshake has completed? - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return handshakeComplete; - } - - /** - * Get a string specifying the switch connection, state, and - * message received. To be used as message for SwitchStateException - * or log messages - * @param h The channel handler (to get switch information_ - * @param m The OFMessage that has just been received - * @param details A string giving more details about the exact nature - * of the problem. - * @return display string - */ - // needs to be protected because enum members are actually subclasses - protected String getSwitchStateMessage(OFChannelHandler h, - OFMessage m, - String details) { - return String.format("Switch: [%s], State: [%s], received: [%s]" - + ", details: %s", - h.getSwitchInfoString(), - this.toString(), - m.getType().toString(), - details); - } - - /** - * We have an OFMessage we didn't expect given the current state and - * we want to treat this as an error. - * We currently throw an exception that will terminate the connection - * However, we could be more forgiving - * @param h the channel handler that received the message - * @param m the message - * @throws SwitchStateException we always throw the exception - */ - // needs to be protected because enum members are actually subclasses - protected void illegalMessageReceived(OFChannelHandler h, OFMessage m) - throws SwitchStateException { - String msg = getSwitchStateMessage(h, m, - "Switch should never send this message in the current state"); - throw new SwitchStateException(msg); - - } - - /** - * We have an OFMessage we didn't expect given the current state and - * we want to ignore the message. - * @param h the channel handler the received the message - * @param m the message - */ - protected void unhandledMessageReceived(OFChannelHandler h, - OFMessage m) { - if (log.isDebugEnabled()) { - String msg = getSwitchStateMessage(h, m, - "Ignoring unexpected message"); - log.debug(msg); - } - } - - /** - * Log an OpenFlow error message from a switch. - * @param h The switch that sent the error - * @param error The error message - */ - protected void logError(OFChannelHandler h, OFErrorMsg error) { - log.error("{} from switch {} in state {}", - error, - h.getSwitchInfoString(), - this.toString()); - } - - /** - * Log an OpenFlow error message from a switch and disconnect the - * channel. - * - * @param h the IO channel for this switch. - * @param error The error message - */ - protected void logErrorDisconnect(OFChannelHandler h, OFErrorMsg error) { - logError(h, error); - h.channel.disconnect(); - } - - /** - * log an error message for a duplicate dpid and disconnect this channel. - * @param h the IO channel for this switch. - */ - protected void disconnectDuplicate(OFChannelHandler h) { - log.error("Duplicated dpid or incompleted cleanup - " - + "disconnecting channel {}", h.getSwitchInfoString()); - h.duplicateDpidFound = Boolean.TRUE; - h.channel.disconnect(); - } - - - - /** - * Handles all pending port status messages before a switch is declared - * activated in MASTER or EQUAL role. Note that since this handling - * precedes the activation (and therefore notification to IOFSwitchListerners) - * the changes to ports will already be visible once the switch is - * activated. As a result, no notifications are sent out for these - * pending portStatus messages. - * - * @param h the channel handler that received the message - */ - protected void handlePendingPortStatusMessages(OFChannelHandler h) { - try { - handlePendingPortStatusMessages(h, 0); - } catch (SwitchStateException e) { - log.error(e.getMessage()); - } - } - - private void handlePendingPortStatusMessages(OFChannelHandler h, int index) - throws SwitchStateException { - if (h.sw == null) { - String msg = "State machine error: switch is null. Should never " + - "happen"; - throw new SwitchStateException(msg); - } - log.info("Processing {} pending port status messages for {}", - h.pendingPortStatusMsg.size(), h.sw.getStringId()); - - ArrayList<OFPortStatus> temp = new ArrayList<OFPortStatus>(); - for (OFPortStatus ps: h.pendingPortStatusMsg) { - temp.add(ps); - handlePortStatusMessage(h, ps, false); - } - // expensive but ok - we don't expect too many port-status messages - // note that we cannot use clear(), because of the reasons below - h.pendingPortStatusMsg.removeAll(temp); - temp.clear(); - // the iterator above takes a snapshot of the list - so while we were - // dealing with the pending port-status messages, we could have received - // newer ones. Handle them recursively, but break the recursion after - // five steps to avoid an attack. - if (!h.pendingPortStatusMsg.isEmpty() && ++index < 5) { - handlePendingPortStatusMessages(h, index); - } - } - - /** - * Handle a port status message. - * - * Handle a port status message by updating the port maps in the - * IOFSwitch instance and notifying Controller about the change so - * it can dispatch a switch update. - * - * @param h The OFChannelHhandler that received the message - * @param m The PortStatus message we received - * @param doNotify if true switch port changed events will be - * dispatched - * @throws SwitchStateException if the switch is not bound to the channel - * - */ - protected void handlePortStatusMessage(OFChannelHandler h, OFPortStatus m, - boolean doNotify) throws SwitchStateException { - if (h.sw == null) { - String msg = getSwitchStateMessage(h, m, - "State machine error: switch is null. Should never " + - "happen"); - throw new SwitchStateException(msg); - } - - h.sw.handleMessage(m); - } - - - /** - * Process an OF message received on the channel and - * update state accordingly. - * - * The main "event" of the state machine. Process the received message, - * send follow up message if required and update state if required. - * - * Switches on the message type and calls more specific event handlers - * for each individual OF message type. If we receive a message that - * is supposed to be sent from a controller to a switch we throw - * a SwitchStateExeption. - * - * The more specific handlers can also throw SwitchStateExceptions - * - * @param h The OFChannelHandler that received the message - * @param m The message we received. - * @throws SwitchStateException if the switch is not bound to the channel - * @throws IOException if unable to send message back to the switch - */ - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - switch(m.getType()) { - case HELLO: - processOFHello(h, (OFHello) m); - break; - case BARRIER_REPLY: - processOFBarrierReply(h, (OFBarrierReply) m); - break; - case ECHO_REPLY: - processOFEchoReply(h, (OFEchoReply) m); - break; - case ECHO_REQUEST: - processOFEchoRequest(h, (OFEchoRequest) m); - break; - case ERROR: - processOFError(h, (OFErrorMsg) m); - break; - case FEATURES_REPLY: - processOFFeaturesReply(h, (OFFeaturesReply) m); - break; - case FLOW_REMOVED: - processOFFlowRemoved(h, (OFFlowRemoved) m); - break; - case GET_CONFIG_REPLY: - processOFGetConfigReply(h, (OFGetConfigReply) m); - break; - case PACKET_IN: - processOFPacketIn(h, (OFPacketIn) m); - break; - case PORT_STATUS: - processOFPortStatus(h, (OFPortStatus) m); - break; - case QUEUE_GET_CONFIG_REPLY: - processOFQueueGetConfigReply(h, (OFQueueGetConfigReply) m); - break; - case STATS_REPLY: // multipart_reply in 1.3 - processOFStatisticsReply(h, (OFStatsReply) m); - break; - case EXPERIMENTER: - processOFExperimenter(h, (OFExperimenter) m); - break; - case ROLE_REPLY: - processOFRoleReply(h, (OFRoleReply) m); - break; - case GET_ASYNC_REPLY: - processOFGetAsyncReply(h, (OFAsyncGetReply) m); - break; - - // The following messages are sent to switches. The controller - // should never receive them - case SET_CONFIG: - case GET_CONFIG_REQUEST: - case PACKET_OUT: - case PORT_MOD: - case QUEUE_GET_CONFIG_REQUEST: - case BARRIER_REQUEST: - case STATS_REQUEST: // multipart request in 1.3 - case FEATURES_REQUEST: - case FLOW_MOD: - case GROUP_MOD: - case TABLE_MOD: - case GET_ASYNC_REQUEST: - case SET_ASYNC: - case METER_MOD: - default: - illegalMessageReceived(h, m); - break; - } - } - - /*----------------------------------------------------------------- - * Default implementation for message handlers in any state. - * - * Individual states must override these if they want a behavior - * that differs from the default. - * - * In general, these handlers simply ignore the message and do - * nothing. - * - * There are some exceptions though, since some messages really - * are handled the same way in every state (e.g., ECHO_REQUST) or - * that are only valid in a single state (e.g., HELLO, GET_CONFIG_REPLY - -----------------------------------------------------------------*/ - - void processOFHello(OFChannelHandler h, OFHello m) - throws IOException, SwitchStateException { - // we only expect hello in the WAIT_HELLO state - log.warn("Received Hello outside WAIT_HELLO state; switch {} is not complaint.", - h.channel.getRemoteAddress()); - } - - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) - throws IOException { - // Silently ignore. - } - - void processOFEchoRequest(OFChannelHandler h, OFEchoRequest m) - throws IOException { - if (h.ofVersion == null) { - log.error("No OF version set for {}. Not sending Echo REPLY", - h.channel.getRemoteAddress()); - return; - } - OFFactory factory = (h.ofVersion == OFVersion.OF_13) ? - h.controller.getOFMessageFactory13() : h.controller.getOFMessageFactory10(); - OFEchoReply reply = factory - .buildEchoReply() - .setXid(m.getXid()) - .setData(m.getData()) - .build(); - h.channel.write(Collections.singletonList(reply)); - } - - void processOFEchoReply(OFChannelHandler h, OFEchoReply m) - throws IOException { - // Do nothing with EchoReplies !! - } - - // no default implementation for OFError - // every state must override it - abstract void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException; - - - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - unhandledMessageReceived(h, m); - } - - void processOFFlowRemoved(OFChannelHandler h, OFFlowRemoved m) - throws IOException { - unhandledMessageReceived(h, m); - } - - void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m) - throws IOException, SwitchStateException { - // we only expect config replies in the WAIT_CONFIG_REPLY state - illegalMessageReceived(h, m); - } - - void processOFPacketIn(OFChannelHandler h, OFPacketIn m) - throws IOException { - unhandledMessageReceived(h, m); - } - - // no default implementation. Every state needs to handle it. - abstract void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException; - - void processOFQueueGetConfigReply(OFChannelHandler h, - OFQueueGetConfigReply m) - throws IOException { - unhandledMessageReceived(h, m); - } - - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws IOException, SwitchStateException { - unhandledMessageReceived(h, m); - } - - void processOFExperimenter(OFChannelHandler h, OFExperimenter m) - throws IOException, SwitchStateException { - // TODO: it might make sense to parse the vendor message here - // into the known vendor messages we support and then call more - // specific event handlers - unhandledMessageReceived(h, m); - } - - void processOFRoleReply(OFChannelHandler h, OFRoleReply m) - throws SwitchStateException, IOException { - unhandledMessageReceived(h, m); - } - - void processOFGetAsyncReply(OFChannelHandler h, - OFAsyncGetReply m) { - unhandledMessageReceived(h, m); - } - - } - - - - //************************* - // Channel handler methods - //************************* - - @Override - public void channelConnected(ChannelHandlerContext ctx, - ChannelStateEvent e) throws Exception { - channel = e.getChannel(); - log.info("New switch connection from {}", - channel.getRemoteAddress()); - /* - hack to wait for the switch to tell us what it's - max version is. This is not spec compliant and should - be removed as soon as switches behave better. - */ - //sendHandshakeHelloMessage(); - setState(ChannelState.WAIT_HELLO); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, - ChannelStateEvent e) throws Exception { - log.info("Switch disconnected callback for sw:{}. Cleaning up ...", - getSwitchInfoString()); - if (thisdpid != 0) { - if (!duplicateDpidFound) { - // if the disconnected switch (on this ChannelHandler) - // was not one with a duplicate-dpid, it is safe to remove all - // state for it at the controller. Notice that if the disconnected - // switch was a duplicate-dpid, calling the method below would clear - // all state for the original switch (with the same dpid), - // which we obviously don't want. - log.info("{}:removal called", getSwitchInfoString()); - if (sw != null) { - sw.removeConnectedSwitch(); - } - } else { - // A duplicate was disconnected on this ChannelHandler, - // this is the same switch reconnecting, but the original state was - // not cleaned up - XXX check liveness of original ChannelHandler - log.info("{}:duplicate found", getSwitchInfoString()); - duplicateDpidFound = Boolean.FALSE; - } - } else { - log.warn("no dpid in channelHandler registered for " - + "disconnected switch {}", getSwitchInfoString()); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) - throws Exception { - if (e.getCause() instanceof ReadTimeoutException) { - // switch timeout - log.error("Disconnecting switch {} due to read timeout", - getSwitchInfoString()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof HandshakeTimeoutException) { - log.error("Disconnecting switch {}: failed to complete handshake", - getSwitchInfoString()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for sw {} already closed", getSwitchInfoString()); - } else if (e.getCause() instanceof IOException) { - if (!e.getCause().getMessage().equals(RESET_BY_PEER) && - !e.getCause().getMessage().equals(BROKEN_PIPE)) { - log.error("Disconnecting switch {} due to IO Error: {}", - getSwitchInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - } - ctx.getChannel().close(); - } else if (e.getCause() instanceof SwitchStateException) { - log.error("Disconnecting switch {} due to switch state error: {}", - getSwitchInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - ctx.getChannel().close(); - } else if (e.getCause() instanceof OFParseError) { - log.error("Disconnecting switch " - + getSwitchInfoString() + - " due to message parse failure", - e.getCause()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof RejectedExecutionException) { - log.warn("Could not process message: queue full"); - } else { - log.error("Error while processing message from switch " - + getSwitchInfoString() - + "state " + this.state, e.getCause()); - ctx.getChannel().close(); - } - } - - @Override - public String toString() { - return getSwitchInfoString(); - } - - @Override - public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) - throws Exception { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFMessage m = factory.buildEchoRequest().build(); - log.debug("Sending Echo Request on idle channel: {}", - e.getChannel().getPipeline().getLast().toString()); - e.getChannel().write(Collections.singletonList(m)); - // XXX S some problems here -- echo request has no transaction id, and - // echo reply is not correlated to the echo request. - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) - throws Exception { - if (e.getMessage() instanceof List) { - @SuppressWarnings("unchecked") - List<OFMessage> msglist = (List<OFMessage>) e.getMessage(); - - - for (OFMessage ofm : msglist) { - // Do the actual packet processing - state.processOFMessage(this, ofm); - } - } else { - state.processOFMessage(this, (OFMessage) e.getMessage()); - } - } - - - - //************************* - // Channel utility methods - //************************* - - /** - * Is this a state in which the handshake has completed? - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.state.isHandshakeComplete(); - } - - private void dispatchMessage(OFMessage m) { - sw.handleMessage(m); - } - - /** - * Return a string describing this switch based on the already available - * information (DPID and/or remote socket). - * @return display string - */ - private String getSwitchInfoString() { - if (sw != null) { - return sw.toString(); - } - String channelString; - if (channel == null || channel.getRemoteAddress() == null) { - channelString = "?"; - } else { - channelString = channel.getRemoteAddress().toString(); - } - String dpidString; - if (featuresReply == null) { - dpidString = "?"; - } else { - dpidString = featuresReply.getDatapathId().toString(); - } - return String.format("[%s DPID[%s]]", channelString, dpidString); - } - - /** - * Update the channels state. Only called from the state machine. - * TODO: enforce restricted state transitions - * @param state - */ - private void setState(ChannelState state) { - this.state = state; - } - - /** - * Send hello message to the switch using the handshake transactions ids. - * @throws IOException - */ - private void sendHandshakeHelloMessage() throws IOException { - // The OF protocol requires us to start things off by sending the highest - // version of the protocol supported. - - // bitmap represents OF1.0 (ofp_version=0x01) and OF1.3 (ofp_version=0x04) - // see Sec. 7.5.1 of the OF1.3.4 spec - U32 bitmap = U32.ofRaw(0x00000012); - OFHelloElem hem = factory13.buildHelloElemVersionbitmap() - .setBitmaps(Collections.singletonList(bitmap)) - .build(); - OFMessage.Builder mb = factory13.buildHello() - .setXid(this.handshakeTransactionIds--) - .setElements(Collections.singletonList(hem)); - log.info("Sending OF_13 Hello to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(mb.build())); - } - - /** - * Send featuresRequest msg to the switch using the handshake transactions ids. - * @throws IOException - */ - private void sendHandshakeFeaturesRequestMessage() throws IOException { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFMessage m = factory.buildFeaturesRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(m)); - } - - /** - * Send the configuration requests to tell the switch we want full - * packets. - * @throws IOException - */ - private void sendHandshakeSetConfig() throws IOException { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - //log.debug("Sending CONFIG_REQUEST to {}", channel.getRemoteAddress()); - List<OFMessage> msglist = new ArrayList<OFMessage>(3); - - // Ensure we receive the full packet via PacketIn - // FIXME: We don't set the reassembly flags. - // Only send config to switches to send full packets, if they have a buffer. - // Saves a packet & OFSetConfig can't be handled by certain switches. - if(this.featuresReply.getNBuffers() > 0) { - OFSetConfig sc = factory - .buildSetConfig() - .setMissSendLen((short) 0xffff) - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(sc); - } - - // Barrier - OFBarrierRequest br = factory - .buildBarrierRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(br); - - // Verify (need barrier?) - OFGetConfigRequest gcr = factory - .buildGetConfigRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(gcr); - channel.write(msglist); - } - - /** - * send a description state request. - * @throws IOException - */ - private void sendHandshakeDescriptionStatsRequest() throws IOException { - // Get Description to set switch-specific flags - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFDescStatsRequest dreq = factory - .buildDescStatsRequest() - .setXid(handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(dreq)); - } - - private void sendHandshakeOFPortDescRequest() throws IOException { - // Get port description for 1.3 switch - OFPortDescStatsRequest preq = factory13 - .buildPortDescStatsRequest() - .setXid(handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(preq)); - } - - ChannelState getStateForTesting() { - return state; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java deleted file mode 100644 index f52d27e5..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.openflow.controller.impl; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFMessageReader; - -/** - * Decode an openflow message from a Channel, for use in a netty pipeline. - */ -public class OFMessageDecoder extends FrameDecoder { - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, - ChannelBuffer buffer) throws Exception { - if (!channel.isConnected()) { - // In testing, I see decode being called AFTER decode last. - // This check avoids that from reading corrupted frames - return null; - } - - // Note that a single call to decode results in reading a single - // OFMessage from the channel buffer, which is passed on to, and processed - // by, the controller (in OFChannelHandler). - // This is different from earlier behavior (with the original openflowj), - // where we parsed all the messages in the buffer, before passing on - // a list of the parsed messages to the controller. - // The performance *may or may not* not be as good as before. - OFMessageReader<OFMessage> reader = OFFactories.getGenericReader(); - OFMessage message = reader.readFrom(buffer); - - return message; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java deleted file mode 100644 index 4c1b16fe..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Encode an openflow message for output into a ChannelBuffer, for use in a - * netty pipeline. - */ -public class OFMessageEncoder extends OneToOneEncoder { - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, - Object msg) throws Exception { - if (!(msg instanceof List)) { - return msg; - } - - @SuppressWarnings("unchecked") - List<OFMessage> msglist = (List<OFMessage>) msg; - /* XXX S can't get length of OFMessage in loxigen's openflowj?? - int size = 0; - for (OFMessage ofm : msglist) { - size += ofm.getLengthU(); - }*/ - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - for (OFMessage ofm : msglist) { - if (ofm != null) { - ofm.writeTo(buf); - } - } - return buf; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java deleted file mode 100644 index fdcd2f00..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java +++ /dev/null @@ -1,633 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.net.driver.DefaultDriverProviderService; -import org.onosproject.net.driver.DriverService; -import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowController; -import org.onosproject.openflow.controller.OpenFlowEventListener; -import org.onosproject.openflow.controller.OpenFlowPacketContext; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.OpenFlowSwitchListener; -import org.onosproject.openflow.controller.PacketListener; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.osgi.service.component.ComponentContext; -import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsEntry; -import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsReply; -import org.projectfloodlight.openflow.protocol.OFCircuitPortStatus; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry; -import org.projectfloodlight.openflow.protocol.OFFlowStatsReply; -import org.projectfloodlight.openflow.protocol.OFTableStatsEntry; -import org.projectfloodlight.openflow.protocol.OFTableStatsReply; -import org.projectfloodlight.openflow.protocol.OFGroupDescStatsEntry; -import org.projectfloodlight.openflow.protocol.OFGroupDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFGroupStatsEntry; -import org.projectfloodlight.openflow.protocol.OFGroupStatsReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortStatsEntry; -import org.projectfloodlight.openflow.protocol.OFPortStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.action.OFActionOutput; -import org.projectfloodlight.openflow.protocol.instruction.OFInstruction; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import static org.onlab.util.Tools.groupedThreads; - -@Component(immediate = true) -@Service -public class OpenFlowControllerImpl implements OpenFlowController { - private static final String DEFAULT_OFPORT = "6633,6653"; - private static final int DEFAULT_WORKER_THREADS = 16; - - private static final Logger log = - LoggerFactory.getLogger(OpenFlowControllerImpl.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DriverService driverService; - - // References exists merely for sequencing purpose to assure drivers are loaded - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DefaultDriverProviderService defaultDriverProviderService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Property(name = "openflowPorts", value = DEFAULT_OFPORT, - label = "Port numbers (comma separated) used by OpenFlow protocol; default is 6633,6653") - private String openflowPorts = DEFAULT_OFPORT; - - @Property(name = "workerThreads", intValue = DEFAULT_WORKER_THREADS, - label = "Number of controller worker threads; default is 16") - private int workerThreads = DEFAULT_WORKER_THREADS; - - private final ExecutorService executorMsgs = - Executors.newFixedThreadPool(32, groupedThreads("onos/of", "event-stats-%d")); - - private final ExecutorService executorBarrier = - Executors.newFixedThreadPool(4, groupedThreads("onos/of", "event-barrier-%d")); - - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> connectedSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> activeMasterSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> activeEqualSwitches = - new ConcurrentHashMap<>(); - - protected OpenFlowSwitchAgent agent = new OpenFlowSwitchAgent(); - protected Set<OpenFlowSwitchListener> ofSwitchListener = new CopyOnWriteArraySet<>(); - - protected Multimap<Integer, PacketListener> ofPacketListener = - ArrayListMultimap.create(); - - protected Set<OpenFlowEventListener> ofEventListener = new CopyOnWriteArraySet<>(); - - protected Multimap<Dpid, OFFlowStatsEntry> fullFlowStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFTableStatsEntry> fullTableStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFGroupStatsEntry> fullGroupStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFGroupDescStatsEntry> fullGroupDescStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFPortStatsEntry> fullPortStats = - ArrayListMultimap.create(); - - private final Controller ctrl = new Controller(); - - @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - ctrl.stop(); - } - - @Modified - public void modified(ComponentContext context) { - ctrl.stop(); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - @Override - public Iterable<OpenFlowSwitch> getSwitches() { - return connectedSwitches.values(); - } - - @Override - public Iterable<OpenFlowSwitch> getMasterSwitches() { - return activeMasterSwitches.values(); - } - - @Override - public Iterable<OpenFlowSwitch> getEqualSwitches() { - return activeEqualSwitches.values(); - } - - @Override - public OpenFlowSwitch getSwitch(Dpid dpid) { - return connectedSwitches.get(dpid); - } - - @Override - public OpenFlowSwitch getMasterSwitch(Dpid dpid) { - return activeMasterSwitches.get(dpid); - } - - @Override - public OpenFlowSwitch getEqualSwitch(Dpid dpid) { - return activeEqualSwitches.get(dpid); - } - - @Override - public void addListener(OpenFlowSwitchListener listener) { - if (!ofSwitchListener.contains(listener)) { - this.ofSwitchListener.add(listener); - } - } - - @Override - public void removeListener(OpenFlowSwitchListener listener) { - this.ofSwitchListener.remove(listener); - } - - @Override - public void addPacketListener(int priority, PacketListener listener) { - ofPacketListener.put(priority, listener); - } - - @Override - public void removePacketListener(PacketListener listener) { - ofPacketListener.values().remove(listener); - } - - @Override - public void addEventListener(OpenFlowEventListener listener) { - ofEventListener.add(listener); - } - - @Override - public void removeEventListener(OpenFlowEventListener listener) { - ofEventListener.remove(listener); - } - - @Override - public void write(Dpid dpid, OFMessage msg) { - this.getSwitch(dpid).sendMsg(msg); - } - - @Override - public void processPacket(Dpid dpid, OFMessage msg) { - Collection<OFFlowStatsEntry> flowStats; - Collection<OFTableStatsEntry> tableStats; - Collection<OFGroupStatsEntry> groupStats; - Collection<OFGroupDescStatsEntry> groupDescStats; - Collection<OFPortStatsEntry> portStats; - - switch (msg.getType()) { - case PORT_STATUS: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.portChanged(dpid, (OFPortStatus) msg); - } - break; - case FEATURES_REPLY: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchChanged(dpid); - } - break; - case PACKET_IN: - OpenFlowPacketContext pktCtx = DefaultOpenFlowPacketContext - .packetContextFromPacketIn(this.getSwitch(dpid), - (OFPacketIn) msg); - for (PacketListener p : ofPacketListener.values()) { - p.handlePacket(pktCtx); - } - break; - // TODO: Consider using separate threadpool for sensitive messages. - // ie. Back to back error could cause us to starve. - case FLOW_REMOVED: - case ERROR: - executorMsgs.submit(new OFMessageHandler(dpid, msg)); - break; - case STATS_REPLY: - OFStatsReply reply = (OFStatsReply) msg; - switch (reply.getStatsType()) { - case PORT_DESC: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchChanged(dpid); - } - break; - case FLOW: - flowStats = publishFlowStats(dpid, (OFFlowStatsReply) reply); - if (flowStats != null) { - OFFlowStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildFlowStatsReply(); - rep.setEntries(Lists.newLinkedList(flowStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case TABLE: - tableStats = publishTableStats(dpid, (OFTableStatsReply) reply); - if (tableStats != null) { - OFTableStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildTableStatsReply(); - rep.setEntries(Lists.newLinkedList(tableStats)); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case GROUP: - groupStats = publishGroupStats(dpid, (OFGroupStatsReply) reply); - if (groupStats != null) { - OFGroupStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildGroupStatsReply(); - rep.setEntries(Lists.newLinkedList(groupStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case GROUP_DESC: - groupDescStats = publishGroupDescStats(dpid, - (OFGroupDescStatsReply) reply); - if (groupDescStats != null) { - OFGroupDescStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildGroupDescStatsReply(); - rep.setEntries(Lists.newLinkedList(groupDescStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case PORT: - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - break; - case METER: - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - break; - case EXPERIMENTER: - if (reply instanceof OFCalientFlowStatsReply) { - // Convert Calient flow statistics to regular flow stats - // TODO: parse remaining fields such as power levels etc. when we have proper monitoring API - OFFlowStatsReply.Builder fsr = getSwitch(dpid).factory().buildFlowStatsReply(); - List<OFFlowStatsEntry> entries = new LinkedList<>(); - for (OFCalientFlowStatsEntry entry : ((OFCalientFlowStatsReply) msg).getEntries()) { - - // Single instruction, i.e., output to port - OFActionOutput action = OFFactories - .getFactory(msg.getVersion()) - .actions() - .buildOutput() - .setPort(entry.getOutPort()) - .build(); - OFInstruction instruction = OFFactories - .getFactory(msg.getVersion()) - .instructions() - .applyActions(Collections.singletonList(action)); - OFFlowStatsEntry fs = getSwitch(dpid).factory().buildFlowStatsEntry() - .setMatch(entry.getMatch()) - .setTableId(entry.getTableId()) - .setDurationSec(entry.getDurationSec()) - .setDurationNsec(entry.getDurationNsec()) - .setPriority(entry.getPriority()) - .setIdleTimeout(entry.getIdleTimeout()) - .setHardTimeout(entry.getHardTimeout()) - .setFlags(entry.getFlags()) - .setCookie(entry.getCookie()) - .setInstructions(Collections.singletonList(instruction)) - .build(); - entries.add(fs); - } - fsr.setEntries(entries); - - flowStats = publishFlowStats(dpid, fsr.build()); - if (flowStats != null) { - OFFlowStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildFlowStatsReply(); - rep.setEntries(Lists.newLinkedList(flowStats)); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - } else { - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - } - break; - default: - log.warn("Discarding unknown stats reply type {}", reply.getStatsType()); - break; - } - break; - case BARRIER_REPLY: - executorBarrier.submit(new OFMessageHandler(dpid, msg)); - break; - case EXPERIMENTER: - long experimenter = ((OFExperimenter) msg).getExperimenter(); - if (experimenter == 0x748771) { - // LINC-OE port stats - OFCircuitPortStatus circuitPortStatus = (OFCircuitPortStatus) msg; - OFPortStatus.Builder portStatus = this.getSwitch(dpid).factory().buildPortStatus(); - OFPortDesc.Builder portDesc = this.getSwitch(dpid).factory().buildPortDesc(); - portDesc.setPortNo(circuitPortStatus.getPortNo()) - .setHwAddr(circuitPortStatus.getHwAddr()) - .setName(circuitPortStatus.getName()) - .setConfig(circuitPortStatus.getConfig()) - .setState(circuitPortStatus.getState()); - portStatus.setReason(circuitPortStatus.getReason()).setDesc(portDesc.build()); - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.portChanged(dpid, portStatus.build()); - } - } else { - log.warn("Handling experimenter type {} not yet implemented", - ((OFExperimenter) msg).getExperimenter(), msg); - } - break; - default: - log.warn("Handling message type {} not yet implemented {}", - msg.getType(), msg); - } - } - - private synchronized Collection<OFFlowStatsEntry> publishFlowStats(Dpid dpid, - OFFlowStatsReply reply) { - //TODO: Get rid of synchronized - fullFlowStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullFlowStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFTableStatsEntry> publishTableStats(Dpid dpid, - OFTableStatsReply reply) { - //TODO: Get rid of synchronized - fullTableStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullTableStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFGroupStatsEntry> publishGroupStats(Dpid dpid, - OFGroupStatsReply reply) { - //TODO: Get rid of synchronized - fullGroupStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullGroupStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFGroupDescStatsEntry> publishGroupDescStats(Dpid dpid, - OFGroupDescStatsReply reply) { - //TODO: Get rid of synchronized - fullGroupDescStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullGroupDescStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFPortStatsEntry> publishPortStats(Dpid dpid, - OFPortStatsReply reply) { - fullPortStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullPortStats.removeAll(dpid); - } - return null; - } - - @Override - public void setRole(Dpid dpid, RoleState role) { - final OpenFlowSwitch sw = getSwitch(dpid); - if (sw == null) { - log.debug("Switch not connected. Ignoring setRole({}, {})", dpid, role); - return; - } - sw.setRole(role); - } - - /** - * Implementation of an OpenFlow Agent which is responsible for - * keeping track of connected switches and the state in which - * they are. - */ - public class OpenFlowSwitchAgent implements OpenFlowAgent { - - private final Logger log = LoggerFactory.getLogger(OpenFlowSwitchAgent.class); - private final Lock switchLock = new ReentrantLock(); - - @Override - public boolean addConnectedSwitch(Dpid dpid, OpenFlowSwitch sw) { - - if (connectedSwitches.get(dpid) != null) { - log.error("Trying to add connectedSwitch but found a previous " - + "value for dpid: {}", dpid); - return false; - } else { - log.info("Added switch {}", dpid); - connectedSwitches.put(dpid, sw); - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchAdded(dpid); - } - return true; - } - } - - @Override - public boolean validActivation(Dpid dpid) { - if (connectedSwitches.get(dpid) == null) { - log.error("Trying to activate switch but is not in " - + "connected switches: dpid {}. Aborting ..", - dpid); - return false; - } - if (activeMasterSwitches.get(dpid) != null || - activeEqualSwitches.get(dpid) != null) { - log.error("Trying to activate switch but it is already " - + "activated: dpid {}. Found in activeMaster: {} " - + "Found in activeEqual: {}. Aborting ..", - dpid, - (activeMasterSwitches.get(dpid) == null) ? 'N' : 'Y', - (activeEqualSwitches.get(dpid) == null) ? 'N' : 'Y'); - return false; - } - return true; - } - - - @Override - public boolean addActivatedMasterSwitch(Dpid dpid, OpenFlowSwitch sw) { - switchLock.lock(); - try { - if (!validActivation(dpid)) { - return false; - } - activeMasterSwitches.put(dpid, sw); - return true; - } finally { - switchLock.unlock(); - } - } - - @Override - public boolean addActivatedEqualSwitch(Dpid dpid, OpenFlowSwitch sw) { - switchLock.lock(); - try { - if (!validActivation(dpid)) { - return false; - } - activeEqualSwitches.put(dpid, sw); - log.info("Added Activated EQUAL Switch {}", dpid); - return true; - } finally { - switchLock.unlock(); - } - } - - @Override - public void transitionToMasterSwitch(Dpid dpid) { - switchLock.lock(); - try { - if (activeMasterSwitches.containsKey(dpid)) { - return; - } - OpenFlowSwitch sw = activeEqualSwitches.remove(dpid); - if (sw == null) { - sw = getSwitch(dpid); - if (sw == null) { - log.error("Transition to master called on sw {}, but switch " - + "was not found in controller-cache", dpid); - return; - } - } - log.info("Transitioned switch {} to MASTER", dpid); - activeMasterSwitches.put(dpid, sw); - } finally { - switchLock.unlock(); - } - } - - - @Override - public void transitionToEqualSwitch(Dpid dpid) { - switchLock.lock(); - try { - if (activeEqualSwitches.containsKey(dpid)) { - return; - } - OpenFlowSwitch sw = activeMasterSwitches.remove(dpid); - if (sw == null) { - sw = getSwitch(dpid); - if (sw == null) { - log.error("Transition to equal called on sw {}, but switch " - + "was not found in controller-cache", dpid); - return; - } - } - log.info("Transitioned switch {} to EQUAL", dpid); - activeEqualSwitches.put(dpid, sw); - } finally { - switchLock.unlock(); - } - - } - - @Override - public void removeConnectedSwitch(Dpid dpid) { - connectedSwitches.remove(dpid); - OpenFlowSwitch sw = activeMasterSwitches.remove(dpid); - if (sw == null) { - log.debug("sw was null for {}", dpid); - sw = activeEqualSwitches.remove(dpid); - } - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchRemoved(dpid); - } - } - - @Override - public void processMessage(Dpid dpid, OFMessage m) { - processPacket(dpid, m); - } - - @Override - public void returnRoleReply(Dpid dpid, RoleState requested, RoleState response) { - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.receivedRoleReply(dpid, requested, response); - } - } - } - - private final class OFMessageHandler implements Runnable { - - private final OFMessage msg; - private final Dpid dpid; - - public OFMessageHandler(Dpid dpid, OFMessage msg) { - this.msg = msg; - this.dpid = dpid; - } - - @Override - public void run() { - for (OpenFlowEventListener listener : ofEventListener) { - listener.handleMessage(dpid, msg); - } - } - - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java deleted file mode 100644 index 1467520d..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.util.concurrent.ThreadPoolExecutor; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.handler.execution.ExecutionHandler; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutHandler; -import org.jboss.netty.util.ExternalResourceReleasable; -import org.jboss.netty.util.HashedWheelTimer; -import org.jboss.netty.util.Timer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.SSLEngine; - -/** - * Creates a ChannelPipeline for a server-side openflow channel. - */ -public class OpenflowPipelineFactory - implements ChannelPipelineFactory, ExternalResourceReleasable { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private final SSLEngine sslEngine; - protected Controller controller; - protected ThreadPoolExecutor pipelineExecutor; - protected Timer timer; - protected IdleStateHandler idleHandler; - protected ReadTimeoutHandler readTimeoutHandler; - - public OpenflowPipelineFactory(Controller controller, - ThreadPoolExecutor pipelineExecutor, - SSLEngine sslEngine) { - super(); - this.controller = controller; - this.pipelineExecutor = pipelineExecutor; - this.timer = new HashedWheelTimer(); - this.idleHandler = new IdleStateHandler(timer, 20, 25, 0); - this.readTimeoutHandler = new ReadTimeoutHandler(timer, 30); - this.sslEngine = sslEngine; - } - - @Override - public ChannelPipeline getPipeline() throws Exception { - OFChannelHandler handler = new OFChannelHandler(controller); - - ChannelPipeline pipeline = Channels.pipeline(); - if (sslEngine != null) { - log.info("OpenFlow SSL enabled."); - pipeline.addLast("ssl", - new org.jboss.netty.handler.ssl.SslHandler(sslEngine)); - } else { - log.info("OpenFlow SSL disabled"); - } - pipeline.addLast("ofmessagedecoder", new OFMessageDecoder()); - pipeline.addLast("ofmessageencoder", new OFMessageEncoder()); - pipeline.addLast("idle", idleHandler); - pipeline.addLast("timeout", readTimeoutHandler); - // XXX S ONOS: was 15 increased it to fix Issue #296 - pipeline.addLast("handshaketimeout", - new HandshakeTimeoutHandler(handler, timer, 60)); - if (pipelineExecutor != null) { - pipeline.addLast("pipelineExecutor", - new ExecutionHandler(pipelineExecutor)); - } - pipeline.addLast("handler", handler); - return pipeline; - } - - @Override - public void releaseExternalResources() { - timer.stop(); - } -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java deleted file mode 100644 index bd4875cf..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleHandler; -import org.onosproject.openflow.controller.driver.RoleRecvStatus; -import org.onosproject.openflow.controller.driver.RoleReplyInfo; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFControllerRole; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFErrorType; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRole; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleRequest; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg; -import org.projectfloodlight.openflow.protocol.errormsg.OFRoleRequestFailedErrorMsg; -import org.projectfloodlight.openflow.types.U64; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.concurrent.TimeUnit; - - -/** - * A utility class to handle role requests and replies for this channel. - * After a role request is submitted the role changer keeps track of the - * pending request, collects the reply (if any) and times out the request - * if necessary. - */ -class RoleManager implements RoleHandler { - protected static final long NICIRA_EXPERIMENTER = 0x2320; - - private static Logger log = LoggerFactory.getLogger(RoleManager.class); - - // The time until cached XID is evicted. Arbitrary for now. - private final int pendingXidTimeoutSeconds = 60; - - // The cache for pending expected RoleReplies keyed on expected XID - private Cache<Integer, RoleState> pendingReplies = - CacheBuilder.newBuilder() - .expireAfterWrite(pendingXidTimeoutSeconds, TimeUnit.SECONDS) - .build(); - - // the expectation set by the caller for the returned role - private RoleRecvStatus expectation; - private final OpenFlowSwitchDriver sw; - - - public RoleManager(OpenFlowSwitchDriver sw) { - this.expectation = RoleRecvStatus.MATCHED_CURRENT_ROLE; - this.sw = sw; - } - - /** - * Send NX role request message to the switch requesting the specified - * role. - * - * @param role role to request - */ - private int sendNxRoleRequest(RoleState role) throws IOException { - // Convert the role enum to the appropriate role to send - OFNiciraControllerRole roleToSend = OFNiciraControllerRole.ROLE_OTHER; - switch (role) { - case MASTER: - roleToSend = OFNiciraControllerRole.ROLE_MASTER; - break; - case SLAVE: - case EQUAL: - default: - // ensuring that the only two roles sent to 1.0 switches with - // Nicira role support, are MASTER and SLAVE - roleToSend = OFNiciraControllerRole.ROLE_OTHER; - log.debug("Sending Nx Role.SLAVE to switch {}.", sw); - } - int xid = sw.getNextTransactionId(); - OFExperimenter roleRequest = OFFactories.getFactory(OFVersion.OF_10) - .buildNiciraControllerRoleRequest() - .setXid(xid) - .setRole(roleToSend) - .build(); - sw.sendRoleRequest(roleRequest); - return xid; - } - - private int sendOF13RoleRequest(RoleState role) throws IOException { - // Convert the role enum to the appropriate role to send - OFControllerRole roleToSend = OFControllerRole.ROLE_NOCHANGE; - switch (role) { - case EQUAL: - roleToSend = OFControllerRole.ROLE_EQUAL; - break; - case MASTER: - roleToSend = OFControllerRole.ROLE_MASTER; - break; - case SLAVE: - roleToSend = OFControllerRole.ROLE_SLAVE; - break; - default: - log.warn("Sending default role.noChange to switch {}." - + " Should only be used for queries.", sw); - } - - int xid = sw.getNextTransactionId(); - OFRoleRequest rrm = OFFactories.getFactory(OFVersion.OF_13) - .buildRoleRequest() - .setRole(roleToSend) - .setXid(xid) - //FIXME fix below when we actually use generation ids - .setGenerationId(U64.ZERO) - .build(); - - sw.sendRoleRequest(rrm); - return xid; - } - - @Override - public synchronized boolean sendRoleRequest(RoleState role, RoleRecvStatus exp) - throws IOException { - this.expectation = exp; - - if (sw.factory().getVersion() == OFVersion.OF_10) { - Boolean supportsNxRole = sw.supportNxRole(); - if (!supportsNxRole) { - log.debug("Switch driver indicates no support for Nicira " - + "role request messages. Not sending ..."); - handleUnsentRoleMessage(role, - expectation); - return false; - } - // OF1.0 switch with support for NX_ROLE_REQUEST vendor extn. - // make Role.EQUAL become Role.SLAVE - RoleState roleToSend = (role == RoleState.EQUAL) ? RoleState.SLAVE : role; - pendingReplies.put(sendNxRoleRequest(roleToSend), role); - } else { - // OF1.3 switch, use OFPT_ROLE_REQUEST message - pendingReplies.put(sendOF13RoleRequest(role), role); - } - return true; - } - - private void handleUnsentRoleMessage(RoleState role, - RoleRecvStatus exp) throws IOException { - // typically this is triggered for a switch where role messages - // are not supported - we confirm that the role being set is - // master - if (exp != RoleRecvStatus.MATCHED_SET_ROLE) { - - log.error("Expected MASTER role from registry for switch " - + "which has no support for role-messages." - + "Received {}. It is possible that this switch " - + "is connected to other controllers, in which " - + "case it should support role messages - not " - + "moving forward.", role); - - } - - } - - - @Override - public synchronized RoleRecvStatus deliverRoleReply(RoleReplyInfo rri) - throws SwitchStateException { - int xid = (int) rri.getXid(); - RoleState receivedRole = rri.getRole(); - RoleState expectedRole = pendingReplies.getIfPresent(xid); - - if (expectedRole == null) { - RoleState currentRole = (sw != null) ? sw.getRole() : null; - if (currentRole != null) { - if (currentRole == rri.getRole()) { - // Don't disconnect if the role reply we received is - // for the same role we are already in. - // FIXME: but we do from the caller anyways. - log.debug("Received unexpected RoleReply from " - + "Switch: {}. " - + "Role in reply is same as current role of this " - + "controller for this sw. Ignoring ...", - sw.getStringId()); - return RoleRecvStatus.OTHER_EXPECTATION; - } else { - String msg = String.format("Switch: [%s], " - + "received unexpected RoleReply[%s]. " - + "No roles are pending, and this controller's " - + "current role:[%s] does not match reply. " - + "Disconnecting switch ... ", - sw.getStringId(), - rri, currentRole); - throw new SwitchStateException(msg); - } - } - log.debug("Received unexpected RoleReply {} from " - + "Switch: {}. " - + "This controller has no current role for this sw. " - + "Ignoring ...", - rri, - sw == null ? "(null)" : sw.getStringId()); - return RoleRecvStatus.OTHER_EXPECTATION; - } - - // XXX Should check generation id meaningfully and other cases of expectations - //if (pendingXid != xid) { - // log.info("Received older role reply from " + - // "switch {} ({}). Ignoring. " + - // "Waiting for {}, xid={}", - // new Object[] {sw.getStringId(), rri, - // pendingRole, pendingXid }); - // return RoleRecvStatus.OLD_REPLY; - //} - sw.returnRoleReply(expectedRole, receivedRole); - - if (expectedRole == receivedRole) { - log.debug("Received role reply message from {} that matched " - + "expected role-reply {} with expectations {}", - sw.getStringId(), receivedRole, expectation); - - // Done with this RoleReply; Invalidate - pendingReplies.invalidate(xid); - if (expectation == RoleRecvStatus.MATCHED_CURRENT_ROLE || - expectation == RoleRecvStatus.MATCHED_SET_ROLE) { - return expectation; - } else { - return RoleRecvStatus.OTHER_EXPECTATION; - } - } - - pendingReplies.invalidate(xid); - // if xids match but role's don't, perhaps its a query (OF1.3) - if (expectation == RoleRecvStatus.REPLY_QUERY) { - return expectation; - } - - return RoleRecvStatus.OTHER_EXPECTATION; - } - - /** - * Called if we receive an error message. If the xid matches the - * pending request we handle it otherwise we ignore it. - * - * Note: since we only keep the last pending request we might get - * error messages for earlier role requests that we won't be able - * to handle - */ - @Override - public synchronized RoleRecvStatus deliverError(OFErrorMsg error) - throws SwitchStateException { - RoleState errorRole = pendingReplies.getIfPresent(error.getXid()); - if (errorRole == null) { - if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) { - log.debug("Received an error msg from sw {} for a role request," - + " but not for pending request in role-changer; " - + " ignoring error {} ...", - sw.getStringId(), error); - } else { - log.debug("Received an error msg from sw {}, but no pending " - + "requests in role-changer; not handling ...", - sw.getStringId()); - } - return RoleRecvStatus.OTHER_EXPECTATION; - } - // it is an error related to a currently pending role request message - if (error.getErrType() == OFErrorType.BAD_REQUEST) { - log.error("Received a error msg {} from sw {} for " - + "pending role request {}. Switch driver indicates " - + "role-messaging is supported. Possible issues in " - + "switch driver configuration?", - ((OFBadRequestErrorMsg) error).toString(), - sw.getStringId(), - errorRole); - return RoleRecvStatus.UNSUPPORTED; - } - - if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) { - OFRoleRequestFailedErrorMsg rrerr = - (OFRoleRequestFailedErrorMsg) error; - switch (rrerr.getCode()) { - case BAD_ROLE: - // switch says that current-role-req has bad role? - // for now we disconnect - // fall-thru - case STALE: - // switch says that current-role-req has stale gen-id? - // for now we disconnect - // fall-thru - case UNSUP: - // switch says that current-role-req has role that - // cannot be supported? for now we disconnect - String msgx = String.format("Switch: [%s], " - + "received Error to for pending role request [%s]. " - + "Error:[%s]. Disconnecting switch ... ", - sw.getStringId(), - errorRole, rrerr); - throw new SwitchStateException(msgx); - default: - break; - } - } - - // This error message was for a role request message but we dont know - // how to handle errors for nicira role request messages - return RoleRecvStatus.OTHER_EXPECTATION; - } - - /** - * Extract the role from an OFVendor message. - * - * Extract the role from an OFVendor message if the message is a - * Nicira role reply. Otherwise return null. - * - * @param experimenterMsg message - * @return The role in the message if the message is a Nicira role - * reply, null otherwise. - * @throws SwitchStateException If the message is a Nicira role reply - * but the numeric role value is unknown. - */ - @Override - public RoleState extractNiciraRoleReply(OFExperimenter experimenterMsg) - throws SwitchStateException { - int vendor = (int) experimenterMsg.getExperimenter(); - if (vendor != 0x2320) { - return null; - } - OFNiciraControllerRoleReply nrr = - (OFNiciraControllerRoleReply) experimenterMsg; - - RoleState role = null; - OFNiciraControllerRole ncr = nrr.getRole(); - switch (ncr) { - case ROLE_MASTER: - role = RoleState.MASTER; - break; - case ROLE_OTHER: - role = RoleState.EQUAL; - break; - case ROLE_SLAVE: - role = RoleState.SLAVE; - break; - default: //handled below - } - - if (role == null) { - String msg = String.format("Switch: [%s], " - + "received NX_ROLE_REPLY with invalid role " - + "value %s", - sw.getStringId(), - nrr.getRole()); - throw new SwitchStateException(msg); - } - return role; - } - - /** - * Extract the role information from an OF1.3 Role Reply Message. - * - * @param rrmsg the role message - * @return RoleReplyInfo object - * @throws SwitchStateException if the role information could not be extracted. - */ - @Override - public RoleReplyInfo extractOFRoleReply(OFRoleReply rrmsg) - throws SwitchStateException { - OFControllerRole cr = rrmsg.getRole(); - RoleState role = null; - switch (cr) { - case ROLE_EQUAL: - role = RoleState.EQUAL; - break; - case ROLE_MASTER: - role = RoleState.MASTER; - break; - case ROLE_SLAVE: - role = RoleState.SLAVE; - break; - case ROLE_NOCHANGE: // switch should send current role - default: - String msg = String.format("Unknown controller role %s " - + "received from switch %s", cr, sw); - throw new SwitchStateException(msg); - } - - return new RoleReplyInfo(role, rrmsg.getGenerationId(), rrmsg.getXid()); - } - -} - diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java deleted file mode 100644 index a5d9f274..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Implementation of the OpenFlow controller IO subsystem. - */ -package org.onosproject.openflow.controller.impl; diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java deleted file mode 100644 index 75260a1d..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * 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.openflow; - -import java.net.SocketAddress; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelConfig; -import org.jboss.netty.channel.ChannelFactory; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelPipeline; - -/** - * Adapter for testing against a netty channel. - */ -public class ChannelAdapter implements Channel { - @Override - public Integer getId() { - return null; - } - - @Override - public ChannelFactory getFactory() { - return null; - } - - @Override - public Channel getParent() { - return null; - } - - @Override - public ChannelConfig getConfig() { - return null; - } - - @Override - public ChannelPipeline getPipeline() { - return null; - } - - @Override - public boolean isOpen() { - return false; - } - - @Override - public boolean isBound() { - return false; - } - - @Override - public boolean isConnected() { - return false; - } - - @Override - public SocketAddress getLocalAddress() { - return null; - } - - @Override - public SocketAddress getRemoteAddress() { - return null; - } - - @Override - public ChannelFuture write(Object o) { - return null; - } - - @Override - public ChannelFuture write(Object o, SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture bind(SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture connect(SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture disconnect() { - return null; - } - - @Override - public ChannelFuture unbind() { - return null; - } - - @Override - public ChannelFuture close() { - return null; - } - - @Override - public ChannelFuture getCloseFuture() { - return null; - } - - @Override - public int getInterestOps() { - return 0; - } - - @Override - public boolean isReadable() { - return false; - } - - @Override - public boolean isWritable() { - return false; - } - - @Override - public ChannelFuture setInterestOps(int i) { - return null; - } - - @Override - public ChannelFuture setReadable(boolean b) { - return null; - } - - @Override - public Object getAttachment() { - return null; - } - - @Override - public void setAttachment(Object o) { - - } - - @Override - public int compareTo(Channel o) { - return 0; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java deleted file mode 100644 index 5b6c2a36..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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.openflow; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelEvent; -import org.jboss.netty.channel.ChannelHandler; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipeline; - -/** - * Adapter for testing against a netty channel handler context. - */ -public class ChannelHandlerContextAdapter implements ChannelHandlerContext { - @Override - public Channel getChannel() { - return null; - } - - @Override - public ChannelPipeline getPipeline() { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public ChannelHandler getHandler() { - return null; - } - - @Override - public boolean canHandleUpstream() { - return false; - } - - @Override - public boolean canHandleDownstream() { - return false; - } - - @Override - public void sendUpstream(ChannelEvent channelEvent) { - - } - - @Override - public void sendDownstream(ChannelEvent channelEvent) { - - } - - @Override - public Object getAttachment() { - return null; - } - - @Override - public void setAttachment(Object o) { - - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java deleted file mode 100644 index 57becf94..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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.openflow; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.net.driver.Behaviour; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; - -/** - * Created by ray on 11/4/15. - */ -public class DriverAdapter implements Driver { - @Override - public String name() { - return null; - } - - @Override - public Driver parent() { - return null; - } - - @Override - public String manufacturer() { - return null; - } - - @Override - public String hwVersion() { - return null; - } - - @Override - public String swVersion() { - return null; - } - - @Override - public Set<Class<? extends Behaviour>> behaviours() { - return null; - } - - @Override - public Class<? extends Behaviour> implementation(Class<? extends Behaviour> behaviour) { - return null; - } - - @Override - public boolean hasBehaviour(Class<? extends Behaviour> behaviourClass) { - return true; - } - - @Override - public <T extends Behaviour> T createBehaviour(DriverData data, Class<T> behaviourClass) { - return null; - } - - @SuppressWarnings("unchecked") - @Override - public <T extends Behaviour> T createBehaviour(DriverHandler handler, Class<T> behaviourClass) { - if (behaviourClass == OpenFlowSwitchDriver.class) { - return (T) new OpenflowSwitchDriverAdapter(); - } - return null; - } - - @Override - public Map<String, String> properties() { - return null; - } - - @Override - public Driver merge(Driver other) { - return null; - } - - @Override - public Set<String> keys() { - return null; - } - - @Override - public String value(String key) { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java deleted file mode 100644 index 25596ada..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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.openflow; - -import java.util.Set; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.Behaviour; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; - -/** - * Created by ray on 11/4/15. - */ -public class DriverServiceAdapter implements DriverService { - @Override - public Set<Driver> getDrivers() { - return null; - } - - @Override - public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) { - return null; - } - - @Override - public Driver getDriver(String mfr, String hw, String sw) { - return null; - } - - @Override - public Driver getDriver(DeviceId deviceId) { - return null; - } - - @Override - public DriverHandler createHandler(DeviceId deviceId, String... credentials) { - return null; - } - - @Override - public Driver getDriver(String driverName) { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java deleted file mode 100644 index 1e866413..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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.openflow; - -import java.util.Set; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.OFStatsType; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; - -/** - * Created by ray on 11/4/15. - */ -public class OFDescStatsReplyAdapter implements OFDescStatsReply { - @Override - public OFVersion getVersion() { - return null; - } - - @Override - public OFType getType() { - return null; - } - - @Override - public long getXid() { - return 0; - } - - @Override - public OFStatsType getStatsType() { - return null; - } - - @Override - public Set<OFStatsReplyFlags> getFlags() { - return null; - } - - @Override - public String getMfrDesc() { - return null; - } - - @Override - public String getHwDesc() { - return null; - } - - @Override - public String getSwDesc() { - return null; - } - - @Override - public String getSerialNum() { - return null; - } - - @Override - public String getDpDesc() { - return null; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - - } - - @Override - public Builder createBuilder() { - return null; - } - - @Override - public void putTo(PrimitiveSink sink) { - - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java deleted file mode 100644 index e9b38e3a..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.openflow; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; - -/** - * Adapter for testing against an OpenFlow message. - */ -public class OfMessageAdapter implements OFMessage { - @Override - public OFVersion getVersion() { - return null; - } - - @Override - public OFType getType() { - return null; - } - - @Override - public long getXid() { - return 0; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { } - - @Override - public Builder createBuilder() { - return null; - } - - @Override - public void putTo(PrimitiveSink sink) { } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java deleted file mode 100644 index 9b899a67..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * 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.openflow; - -import java.util.List; - -import org.jboss.netty.channel.Channel; -import org.onosproject.net.Device; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleHandler; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -/** - * Testing adapter for the OpenFlow switch driver class. - */ -public class OpenflowSwitchDriverAdapter implements OpenFlowSwitchDriver { - - RoleState role = RoleState.MASTER; - - @Override - public void setAgent(OpenFlowAgent agent) { - - } - - @Override - public void setRoleHandler(RoleHandler roleHandler) { - - } - - @Override - public void reassertRole() { - - } - - @Override - public boolean handleRoleError(OFErrorMsg error) { - return false; - } - - @Override - public void handleNiciraRole(OFMessage m) throws SwitchStateException { - - } - - @Override - public void handleRole(OFMessage m) throws SwitchStateException { - - } - - @Override - public boolean connectSwitch() { - return false; - } - - @Override - public boolean activateMasterSwitch() { - return false; - } - - @Override - public boolean activateEqualSwitch() { - return false; - } - - @Override - public void transitionToEqualSwitch() { - - } - - @Override - public void transitionToMasterSwitch() { - - } - - @Override - public void removeConnectedSwitch() { - - } - - @Override - public void setPortDescReply(OFPortDescStatsReply portDescReply) { - - } - - @Override - public void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies) { - - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - - } - - @Override - public void setSwitchDescription(OFDescStatsReply desc) { - - } - - @Override - public int getNextTransactionId() { - return 0; - } - - @Override - public void setOFVersion(OFVersion ofV) { - - } - - @Override - public void setTableFull(boolean full) { - - } - - @Override - public void setChannel(Channel channel) { - - } - - @Override - public void setConnected(boolean connected) { - - } - - @Override - public void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv) { - - } - - @Override - public Boolean supportNxRole() { - return true; - } - - @Override - public void startDriverHandshake() { - - } - - @Override - public boolean isDriverHandshakeComplete() { - return false; - } - - @Override - public void processDriverHandshakeMessage(OFMessage m) { - - } - - @Override - public void sendRoleRequest(OFMessage message) { - - } - - @Override - public void sendHandshakeMessage(OFMessage message) { - - } - - @Override - public DriverHandler handler() { - return null; - } - - @Override - public void setHandler(DriverHandler handler) { - - } - - @Override - public DriverData data() { - return null; - } - - @Override - public void setData(DriverData data) { - - } - - @Override - public void sendMsg(OFMessage msg) { - - } - - @Override - public void sendMsg(List<OFMessage> msgs) { - - } - - @Override - public void handleMessage(OFMessage fromSwitch) { - - } - - @Override - public void setRole(RoleState role) { - this.role = role; - } - - @Override - public RoleState getRole() { - return role; - } - - @Override - public List<OFPortDesc> getPorts() { - return null; - } - - @Override - public OFFactory factory() { - // return what-ever triggers requestPending = true - return OFFactories.getFactory(OFVersion.OF_10); - } - - @Override - public String getStringId() { - return "100"; - } - - @Override - public long getId() { - return 0; - } - - @Override - public String manufacturerDescription() { - return null; - } - - @Override - public String datapathDescription() { - return null; - } - - @Override - public String hardwareDescription() { - return null; - } - - @Override - public String softwareDescription() { - return null; - } - - @Override - public String serialNumber() { - return null; - } - - @Override - public boolean isConnected() { - return false; - } - - @Override - public void disconnectSwitch() { - - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - - } - - @Override - public Device.Type deviceType() { - return Device.Type.SWITCH; - } - - @Override - public String channelId() { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java deleted file mode 100644 index 3ff3bde5..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.io.File; -import java.io.IOException; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.Map; -import java.util.stream.IntStream; - -import org.junit.Before; -import org.junit.Test; -import org.onlab.junit.TestTools; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.Driver; -import org.onosproject.openflow.DriverAdapter; -import org.onosproject.openflow.DriverServiceAdapter; -import org.onosproject.openflow.OFDescStatsReplyAdapter; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.io.Files; - -import static com.google.common.io.ByteStreams.toByteArray; -import static com.google.common.io.Files.write; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.lessThan; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -/** - * Unit tests for the OpenFlow controller class. - */ -public class ControllerTest { - - Controller controller; - protected static final Logger log = LoggerFactory.getLogger(ControllerTest.class); - - static final File TEST_DIR = Files.createTempDir(); - - /* - * Writes the necessary file for the tests in the temporary directory - */ - static File stageTestResource(String name) throws IOException { - File file = new File(TEST_DIR, name); - byte[] bytes = toByteArray(ControllerTest.class.getResourceAsStream(name)); - write(bytes, file); - return file; - } - - class MockDriverService extends DriverServiceAdapter { - static final int NO_SUCH_DRIVER_ID = 1; - static final int ITEM_NOT_FOUND_DRIVER_ID = 2; - static final int DRIVER_EXISTS_ID = 3; - - static final String BASE_DRIVER_NAME = "of:000000000000000"; - - static final String NO_SUCH_DRIVER = BASE_DRIVER_NAME - + NO_SUCH_DRIVER_ID; - static final String ITEM_NOT_FOUND_DRIVER = BASE_DRIVER_NAME - + ITEM_NOT_FOUND_DRIVER_ID; - static final String DRIVER_EXISTS = BASE_DRIVER_NAME - + DRIVER_EXISTS_ID; - - @Override - public Driver getDriver(DeviceId deviceId) { - switch (deviceId.toString()) { - case NO_SUCH_DRIVER: - return null; - case ITEM_NOT_FOUND_DRIVER: - throw new ItemNotFoundException(); - case DRIVER_EXISTS: - return new DriverAdapter(); - default: - throw new AssertionError(); - } - } - } - - /** - * Creates and initializes a new controller. - */ - @Before - public void setUp() { - controller = new Controller(); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - controller.setConfigParams(properties); - } - - /** - * Tests fetching a driver that does not exist. - */ - @Test - public void switchInstanceNotFoundTest() { - controller.start(null, new MockDriverService()); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.NO_SUCH_DRIVER_ID, - null, - null); - assertThat(driver, nullValue()); - controller.stop(); - } - - /** - * Tests fetching a driver that throws an ItemNotFoundException. - */ - @Test - public void switchItemNotFoundTest() { - controller.start(null, new MockDriverService()); - OFDescStatsReply stats = - new OFDescStatsReplyAdapter(); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.ITEM_NOT_FOUND_DRIVER_ID, - stats, - null); - assertThat(driver, nullValue()); - controller.stop(); - } - - /** - * Tests fetching a driver that throws an ItemNotFoundException. - */ - @Test - public void driverExistsTest() { - controller.start(null, new MockDriverService()); - OFDescStatsReply stats = - new OFDescStatsReplyAdapter(); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.DRIVER_EXISTS_ID, - stats, - null); - assertThat(driver, notNullValue()); - controller.stop(); - } - - /** - * Tests configuring the controller. - */ - @Test - public void testConfiguration() { - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", "1,2,3,4,5"); - properties.put("workerThreads", "5"); - - controller.setConfigParams(properties); - IntStream.rangeClosed(1, 5) - .forEach(i -> assertThat(controller.openFlowPorts, hasItem(i))); - assertThat(controller.workerThreads, is(5)); - } - - /** - * Tests the SSL/TLS methods in the controller. - */ - @Test - public void testSsl() throws IOException { - File keystore = stageTestResource("ControllerTestKeystore.jks"); - String keystoreName = keystore.getAbsolutePath(); - - System.setProperty("enableOFTLS", Boolean.toString(Boolean.TRUE)); - System.setProperty("javax.net.ssl.keyStore", keystoreName); - System.setProperty("javax.net.ssl.trustStore", keystoreName); - System.setProperty("javax.net.ssl.keyStorePassword", "password"); - System.setProperty("javax.net.ssl.trustStorePassword", "password"); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - properties.put("workerThreads", "0"); - - controller.setConfigParams(properties); - controller.start(null, new MockDriverService()); - - assertThat(controller.serverSSLEngine, notNullValue()); - - controller.stop(); - boolean removed = keystore.delete(); - if (!removed) { - log.warn("Could not remove temporary file"); - } - } - - /** - * Tests controll utility health methods. - */ - @Test - public void testHealth() { - Map<String, Long> memory = controller.getMemory(); - assertThat(memory.size(), is(2)); - assertThat(memory.get("total"), is(not(0))); - assertThat(memory.get("free"), is(not(0))); - - long startTime = controller.getSystemStartTime(); - assertThat(startTime, lessThan(System.currentTimeMillis())); - - long upTime = controller.getSystemUptime(); - assertThat(upTime, lessThan(30L * 1000)); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java deleted file mode 100644 index ed1db238..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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.openflow.controller.impl; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.openflow.ChannelAdapter; -import org.onosproject.openflow.ChannelHandlerContextAdapter; -import org.projectfloodlight.openflow.protocol.OFHello; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -/** - * Tests for the OpenFlow message decoder. - */ -public class OFMessageDecoderTest { - - static class ConnectedChannel extends ChannelAdapter { - @Override - public boolean isConnected() { - return true; - } - } - - private ChannelBuffer getHelloMessageBuffer() { - // OFHello, OF version 1, xid of 0, total of 8 bytes - byte[] messageData = {0x1, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0}; - ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer(); - channelBuffer.writeBytes(messageData); - return channelBuffer; - } - - /** - * Tests decoding a message on a closed channel. - * - * @throws Exception when an exception is thrown from the decoder - */ - @Test - public void testDecodeNoChannel() throws Exception { - OFMessageDecoder decoder = new OFMessageDecoder(); - ChannelBuffer channelBuffer = getHelloMessageBuffer(); - Object message = - decoder.decode(new ChannelHandlerContextAdapter(), - new ChannelAdapter(), - channelBuffer); - assertThat(message, nullValue()); - } - - /** - * Tests decoding a message. - * - * @throws Exception when an exception is thrown from the decoder - */ - @Test - public void testDecode() throws Exception { - OFMessageDecoder decoder = new OFMessageDecoder(); - ChannelBuffer channelBuffer = getHelloMessageBuffer(); - Object message = - decoder.decode(new ChannelHandlerContextAdapter(), - new ConnectedChannel(), - channelBuffer); - assertThat(message, notNullValue()); - assertThat(message, instanceOf(OFHello.class)); - } - -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java deleted file mode 100644 index 59685f16..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.nio.charset.StandardCharsets; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.Test; -import org.onosproject.openflow.OfMessageAdapter; -import org.projectfloodlight.openflow.protocol.OFMessage; - -import com.google.common.collect.ImmutableList; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Tests for the OpenFlow message encoder. - */ -public class OFMessageEncoderTest { - - static class MockOfMessage extends OfMessageAdapter { - static int nextId = 1; - final int id; - - MockOfMessage() { - id = nextId++; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - String message = "message" + Integer.toString(id) + " "; - channelBuffer.writeBytes(message.getBytes(StandardCharsets.UTF_8)); - } - } - - /** - * Tests that encoding a non-list returns the object specified. - * - * @throws Exception on exception in the encoder - */ - @Test - public void testNoList() throws Exception { - OFMessageEncoder encoder = new OFMessageEncoder(); - MockOfMessage message = new MockOfMessage(); - OFMessage returnedMessage = - (OFMessage) encoder.encode(null, null, message); - assertThat(message, is(returnedMessage)); - } - - /** - * Tests that encoding a list returns the proper encoded payload. - * - * @throws Exception on exception in the encoder - */ - @Test - public void testList() throws Exception { - OFMessageEncoder encoder = new OFMessageEncoder(); - MockOfMessage message1 = new MockOfMessage(); - MockOfMessage message2 = new MockOfMessage(); - MockOfMessage message3 = new MockOfMessage(); - List<MockOfMessage> messages = ImmutableList.of(message1, message2, message3); - ChannelBuffer returnedChannel = - (ChannelBuffer) encoder.encode(null, null, messages); - assertThat(returnedChannel, notNullValue()); - byte[] channelBytes = returnedChannel.array(); - String expectedListMessage = "message1 message2 message3 "; - String listMessage = - (new String(channelBytes, StandardCharsets.UTF_8)) - .substring(0, expectedListMessage.length()); - assertThat(listMessage, is(expectedListMessage)); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java deleted file mode 100644 index e079c590..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * 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.openflow.controller.impl; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.List; -import java.util.Spliterator; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.junit.TestTools; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.openflow.OpenflowSwitchDriverAdapter; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.OpenFlowSwitchListener; -import org.onosproject.openflow.controller.RoleState; -import org.osgi.service.component.ComponentContext; -import org.projectfloodlight.openflow.protocol.OFPortStatus; - -import com.google.common.collect.ImmutableSet; - -import static junit.framework.TestCase.fail; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItems; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; - -/** - * Unit tests for the open flow controller implementation test. - */ -public class OpenFlowControllerImplTest { - - OpenFlowSwitch switch1; - Dpid dpid1; - OpenFlowSwitch switch2; - Dpid dpid2; - OpenFlowSwitch switch3; - Dpid dpid3; - - OpenFlowControllerImpl controller; - OpenFlowControllerImpl.OpenFlowSwitchAgent agent; - TestSwitchListener switchListener; - - /** - * Test harness for a switch listener. - */ - static class TestSwitchListener implements OpenFlowSwitchListener { - final List<Dpid> removedDpids = new ArrayList<>(); - final List<Dpid> addedDpids = new ArrayList<>(); - final List<Dpid> changedDpids = new ArrayList<>(); - - @Override - public void switchAdded(Dpid dpid) { - addedDpids.add(dpid); - } - - @Override - public void switchRemoved(Dpid dpid) { - removedDpids.add(dpid); - } - - @Override - public void switchChanged(Dpid dpid) { - changedDpids.add(dpid); - } - - @Override - public void portChanged(Dpid dpid, OFPortStatus status) { - // Stub - } - - @Override - public void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response) { - // Stub - } - } - - - /** - * Sets up switches to use as data, mocks and launches a controller instance. - */ - @Before - public void setUp() { - try { - switch1 = new OpenflowSwitchDriverAdapter(); - dpid1 = Dpid.dpid(new URI("of:0000000000000111")); - switch2 = new OpenflowSwitchDriverAdapter(); - dpid2 = Dpid.dpid(new URI("of:0000000000000222")); - switch3 = new OpenflowSwitchDriverAdapter(); - dpid3 = Dpid.dpid(new URI("of:0000000000000333")); - } catch (URISyntaxException ex) { - // Does not happen - fail(); - } - - controller = new OpenFlowControllerImpl(); - agent = controller.agent; - - switchListener = new TestSwitchListener(); - controller.addListener(switchListener); - - ComponentConfigService mockConfigService = - EasyMock.createMock(ComponentConfigService.class); - expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of()); - mockConfigService.registerProperties(controller.getClass()); - expectLastCall(); - mockConfigService.unregisterProperties(controller.getClass(), false); - expectLastCall(); - expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of()); - controller.cfgService = mockConfigService; - replay(mockConfigService); - - ComponentContext mockContext = EasyMock.createMock(ComponentContext.class); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - expect(mockContext.getProperties()).andReturn(properties); - replay(mockContext); - controller.activate(mockContext); - } - - @After - public void tearDown() { - controller.removeListener(switchListener); - controller.deactivate(); - } - - /** - * Converts an Iterable of some type into a stream of that type. - * - * @param items Iterable of objects - * @param <T> type of the items in the iterable - * @return stream of objects of type T - */ - private <T> Stream<T> makeIntoStream(Iterable<T> items) { - return StreamSupport.stream( - Spliterators.spliteratorUnknownSize( - items.iterator(), Spliterator.ORDERED), false); - } - - - /** - * Tests adding and removing connected switches. - */ - @Test - public void testAddRemoveConnectedSwitch() { - - // test adding connected switches - boolean addSwitch1 = agent.addConnectedSwitch(dpid1, switch1); - assertThat(addSwitch1, is(true)); - boolean addSwitch2 = agent.addConnectedSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - boolean addSwitch3 = agent.addConnectedSwitch(dpid3, switch3); - assertThat(addSwitch3, is(true)); - - // Make sure the listener add callbacks fired - assertThat(switchListener.addedDpids, hasSize(3)); - assertThat(switchListener.addedDpids, hasItems(dpid1, dpid2, dpid3)); - - // Test adding a switch twice - it should fail - boolean addBadSwitch1 = agent.addConnectedSwitch(dpid1, switch1); - assertThat(addBadSwitch1, is(false)); - - assertThat(controller.connectedSwitches.size(), is(3)); - - // test querying the switch list - Stream<OpenFlowSwitch> fetchedSwitches = - makeIntoStream(controller.getSwitches()); - long switchCount = fetchedSwitches.count(); - assertThat(switchCount, is(3L)); - - // test querying the individual switch - OpenFlowSwitch queriedSwitch = controller.getSwitch(dpid1); - assertThat(queriedSwitch, is(switch1)); - - // Remove a switch - agent.removeConnectedSwitch(dpid3); - Stream<OpenFlowSwitch> fetchedSwitchesAfterRemove = - makeIntoStream(controller.getSwitches()); - long switchCountAfterRemove = fetchedSwitchesAfterRemove.count(); - assertThat(switchCountAfterRemove, is(2L)); - - // Make sure the listener delete callbacks fired - assertThat(switchListener.removedDpids, hasSize(1)); - assertThat(switchListener.removedDpids, hasItems(dpid3)); - - // test querying the removed switch - OpenFlowSwitch queriedSwitchAfterRemove = controller.getSwitch(dpid3); - assertThat(queriedSwitchAfterRemove, nullValue()); - } - - /** - * Tests adding master switches. - */ - @Test - public void testMasterSwitch() { - agent.addConnectedSwitch(dpid1, switch1); - agent.transitionToMasterSwitch(dpid1); - - Stream<OpenFlowSwitch> fetchedMasterSwitches = - makeIntoStream(controller.getMasterSwitches()); - assertThat(fetchedMasterSwitches.count(), is(1L)); - Stream<OpenFlowSwitch> fetchedActivatedSwitches = - makeIntoStream(controller.getEqualSwitches()); - assertThat(fetchedActivatedSwitches.count(), is(0L)); - OpenFlowSwitch fetchedSwitch1 = controller.getMasterSwitch(dpid1); - assertThat(fetchedSwitch1, is(switch1)); - - agent.addConnectedSwitch(dpid2, switch2); - boolean addSwitch2 = agent.addActivatedMasterSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - OpenFlowSwitch fetchedSwitch2 = controller.getMasterSwitch(dpid2); - assertThat(fetchedSwitch2, is(switch2)); - } - - /** - * Tests adding equal switches. - */ - @Test - public void testEqualSwitch() { - agent.addConnectedSwitch(dpid1, switch1); - agent.transitionToEqualSwitch(dpid1); - - Stream<OpenFlowSwitch> fetchedEqualSwitches = - makeIntoStream(controller.getEqualSwitches()); - assertThat(fetchedEqualSwitches.count(), is(1L)); - Stream<OpenFlowSwitch> fetchedActivatedSwitches = - makeIntoStream(controller.getMasterSwitches()); - assertThat(fetchedActivatedSwitches.count(), is(0L)); - OpenFlowSwitch fetchedSwitch1 = controller.getEqualSwitch(dpid1); - assertThat(fetchedSwitch1, is(switch1)); - - agent.addConnectedSwitch(dpid2, switch2); - boolean addSwitch2 = agent.addActivatedEqualSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - OpenFlowSwitch fetchedSwitch2 = controller.getEqualSwitch(dpid2); - assertThat(fetchedSwitch2, is(switch2)); - } - - /** - * Tests changing switch role. - */ - @Test - public void testRoleSetting() { - agent.addConnectedSwitch(dpid2, switch2); - - // check that state can be changed for a connected switch - assertThat(switch2.getRole(), is(RoleState.MASTER)); - controller.setRole(dpid2, RoleState.EQUAL); - assertThat(switch2.getRole(), is(RoleState.EQUAL)); - - // check that changing state on an unconnected switch does not crash - controller.setRole(dpid3, RoleState.SLAVE); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java deleted file mode 100644 index 4b594383..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import java.io.IOException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.openflow.OpenflowSwitchDriverAdapter; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleRecvStatus; -import org.onosproject.openflow.controller.driver.RoleReplyInfo; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.types.U64; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.openflow.controller.RoleState.MASTER; -import static org.onosproject.openflow.controller.RoleState.SLAVE; -import static org.onosproject.openflow.controller.driver.RoleRecvStatus.MATCHED_CURRENT_ROLE; -import static org.onosproject.openflow.controller.driver.RoleRecvStatus.OTHER_EXPECTATION; - -public class RoleManagerTest { - - private static final U64 GID = U64.of(10L); - private static final long XID = 1L; - - private OpenFlowSwitchDriver sw; - private RoleManager manager; - - @Before - public void setUp() { - sw = new TestSwitchDriver(); - manager = new RoleManager(sw); - } - - @After - public void tearDown() { - manager = null; - sw = null; - } - - @Test - public void deliverRoleReply() { - RoleRecvStatus status; - - RoleReplyInfo asserted = new RoleReplyInfo(MASTER, GID, XID); - RoleReplyInfo unasserted = new RoleReplyInfo(SLAVE, GID, XID); - - try { - //call without sendRoleReq() for requestPending = false - //first, sw.role == null - status = manager.deliverRoleReply(asserted); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - - sw.setRole(MASTER); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - sw.setRole(SLAVE); - - //match to pendingRole = MASTER, requestPending = true - manager.sendRoleRequest(MASTER, MATCHED_CURRENT_ROLE); - status = manager.deliverRoleReply(asserted); - assertEquals("expectation wrong", MATCHED_CURRENT_ROLE, status); - - //requestPending never gets reset -- this might be a bug. - status = manager.deliverRoleReply(unasserted); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - assertEquals("pending role mismatch", MASTER, ((TestSwitchDriver) sw).failed); - - } catch (IOException | SwitchStateException e) { - assertEquals("unexpected error thrown", - SwitchStateException.class, e.getClass()); - } - } - - private class TestSwitchDriver extends OpenflowSwitchDriverAdapter { - - RoleState failed = null; - RoleState current = null; - - @Override - public void setRole(RoleState role) { - current = role; - } - - @Override - public RoleState getRole() { - return current; - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - } - - @Override - public void setSwitchDescription(OFDescStatsReply desc) { - } - - @Override - public int getNextTransactionId() { - return (int) XID; - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - failed = requested; - } - - @Override - public String channelId() { - return "1.2.3.4:1"; - } - } -} diff --git a/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java b/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java deleted file mode 100644 index 783a37e6..00000000 --- a/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.openflow.drivers; - -import org.onosproject.openflow.controller.Dpid; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.types.TableId; - -/** - * OFDescriptionStatistics Vendor (Manufacturer Desc.): Dell Make (Hardware - * Desc.) : OpenFlow 1.3 Reference Userspace Switch Model (Datapath Desc.) : - * None Software : Serial : None. - */ -//TODO: Knock-off this class as we don't need any switch/app specific -//drivers in the south bound layers. -public class OFSwitchImplSpringOpenTTPDellOSR extends OFSwitchImplSpringOpenTTP { - - /* Table IDs to be used for Dell Open Segment Routers*/ - private static final int DELL_TABLE_VLAN = 17; - private static final int DELL_TABLE_TMAC = 18; - private static final int DELL_TABLE_IPV4_UNICAST = 30; - private static final int DELL_TABLE_MPLS = 25; - private static final int DELL_TABLE_ACL = 40; - - public OFSwitchImplSpringOpenTTPDellOSR(Dpid dpid, OFDescStatsReply desc) { - super(dpid, desc); - vlanTableId = DELL_TABLE_VLAN; - tmacTableId = DELL_TABLE_TMAC; - ipv4UnicastTableId = DELL_TABLE_IPV4_UNICAST; - mplsTableId = DELL_TABLE_MPLS; - aclTableId = DELL_TABLE_ACL; - } - - @Override - public TableType getTableType(TableId tid) { - switch (tid.getValue()) { - case DELL_TABLE_IPV4_UNICAST: - return TableType.IP; - case DELL_TABLE_MPLS: - return TableType.MPLS; - case DELL_TABLE_ACL: - return TableType.ACL; - case DELL_TABLE_VLAN: - return TableType.VLAN; - case DELL_TABLE_TMAC: - return TableType.ETHER; - default: - log.error("Table type for Table id {} is not supported in the driver", tid); - return TableType.NONE; - } - } -}
\ No newline at end of file diff --git a/framework/src/onos/openflow/pom.xml b/framework/src/onos/openflow/pom.xml deleted file mode 100644 index 3672e469..00000000 --- a/framework/src/onos/openflow/pom.xml +++ /dev/null @@ -1,86 +0,0 @@ -<?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.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of</artifactId> - <packaging>pom</packaging> - - <description>ONOS OpenFlow Protocol subsystem</description> - - <modules> - <module>api</module> - <module>ctl</module> - </modules> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java index 65ff0245..cfd844d3 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java @@ -16,6 +16,7 @@ package org.onosproject.ovsdb.controller; import com.google.common.util.concurrent.ListenableFuture; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -84,6 +85,15 @@ public interface OvsdbClientService extends OvsdbRPC { void createBridge(String bridgeName); /** + * Creates a bridge. + * + * @param bridgeName bridge name + * @param dpid data path id + * @param exPortName external port name + */ + void createBridge(String bridgeName, String dpid, String exPortName); + + /** * Creates a bridge with given name and dpid. * Sets the bridge's controller with given controllers. * diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java index 3280ad34..c6038632 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java @@ -24,7 +24,9 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; + import io.netty.channel.Channel; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -489,6 +491,76 @@ public class DefaultOvsdbClient } @Override + public void createBridge(String bridgeName, String dpid, String exPortName) { + log.debug("create bridge {}", bridgeName); + + DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); + if (dbSchema == null) { + log.warn("The schema is null"); + return; + } + + Bridge bridge = (Bridge) TableGenerator.createTable(dbSchema, + OvsdbTable.BRIDGE); + if (bridge == null) { + log.debug("Can not create bridge"); + return; + } + + Set<String> failModes = new HashSet<>(); + failModes.add("secure"); + bridge.setFailMode(failModes); + + Set<String> protocols = new HashSet<>(); + protocols.add(OvsdbConstant.OPENFLOW13); + bridge.setProtocols(protocols); + + String ovsUuid = getOvsUuid(OvsdbConstant.DATABASENAME); + if (ovsUuid == null) { + log.warn("The Open_vSwitch is null"); + return; + } + + String bridgeUuid = getBridgeUuid(bridgeName); + if (bridgeUuid == null) { + log.debug("Create a new bridge"); + + bridge.setName(bridgeName); + if (dpid != null) { + Map<String, String> options = new HashMap<>(); + options.put("datapath-id", dpid); + bridge.setOtherConfig(options); + } + bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid", + OvsdbConstant.DATABASENAME, "bridges", + ovsUuid, bridge.getRow()); + + if (bridgeUuid != null) { + Port port = (Port) TableGenerator.createTable(dbSchema, + OvsdbTable.PORT); + if (port != null) { + log.debug("the port is not null"); + port.setName(bridgeName); + + insertConfig(OvsdbConstant.PORT, "_uuid", "Bridge", "ports", bridgeUuid, + port.getRow()); + } + } + + } else { + log.info("Update a bridge"); + updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow()); + } + // Create external port + if (exPortName != null) { + createPort(bridgeName, exPortName); + } + + setControllerAuto(bridgeUuid); + log.info("Create bridge success"); + } + + @Override public boolean createBridge(String bridgeName, String dpid, List<ControllerInfo> controllers) { DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); diff --git a/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java b/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java index 2c418d57..5d80a7bf 100644 --- a/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java +++ b/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java @@ -18,6 +18,7 @@ package org.onosproject.ovsdb.controller.driver; import com.fasterxml.jackson.databind.JsonNode; import com.google.common.util.concurrent.ListenableFuture; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -216,4 +217,9 @@ public class OvsdbClientServiceAdapter implements OvsdbClientService { public ListenableFuture<List<JsonNode>> transact(DatabaseSchema dbSchema, List<Operation> operations) { return null; } + + @Override + public void createBridge(String bridgeName, String dpid, String exPortName) { + + } } diff --git a/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java b/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java index 2e84a16a..fcbbff8e 100644 --- a/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java +++ b/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java @@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory; /** * The main controller class. Handles all setup and network listeners - - * Distributed ovsdbClient. + * distributed OVSDBClient. */ public class Controller { protected static final Logger log = LoggerFactory @@ -105,7 +105,7 @@ public class Controller { } /** - * Tells controller that we're ready to accept ovsdb node loop. + * Tells controller that we're ready to accept OVSDB node loop. * @throws InterruptedException if thread is interrupted */ public void run() throws InterruptedException { @@ -114,7 +114,7 @@ public class Controller { } /** - * Adds channel pipiline to handle a new connected node. + * Adds channel pipeline to handle a new connected node. */ private class OnosCommunicationChannelInitializer extends ChannelInitializer<SocketChannel> { @@ -128,7 +128,7 @@ public class Controller { } /** - * Handles the new connection of a node. + * Handles the new connection of node. * * @param channel the channel to use. */ @@ -169,9 +169,9 @@ public class Controller { } /** - * Gets an ovsdb client instance. + * Gets an OVSDB client instance. * - * @param nodeId data ovsdb node id + * @param nodeId data OVSDB node id * @param agent OvsdbAgent * @param monitorCallback Callback * @param channel Channel diff --git a/framework/src/onos/pcep/api/pom.xml b/framework/src/onos/pcep/api/pom.xml deleted file mode 100644 index 4588ad6f..00000000 --- a/framework/src/onos/pcep/api/pom.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?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.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcep-controller-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS Pcep client controller subsystem API</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-app-pcep-api</artifactId> - </dependency> - <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> diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java deleted file mode 100755 index 3ff622bf..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import static com.google.common.base.Preconditions.checkArgument; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * The class representing a network client pc ip. - * This class is immutable. - */ -public final class PccId { - - private static final String SCHEME = "pcep"; - private static final long UNKNOWN = 0; - private final IpAddress ipAddress; - - /** - * Private constructor. - */ - private PccId(IpAddress ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Create a PccId from ip address. - * - * @param ipAddress IP address - * @return ipAddress - */ - public static PccId pccId(IpAddress ipAddress) { - return new PccId(ipAddress); - } - - /** - * Returns the ip address. - * - * @return ipAddress - */ - public IpAddress ipAddress() { - return ipAddress; - } - - /** - * Convert the PccId value to a ':' separated hexadecimal string. - * - * @return the PccId value as a ':' separated hexadecimal string. - */ - @Override - public String toString() { - return ipAddress.toString(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof PccId)) { - return false; - } - - PccId otherPccid = (PccId) other; - return Objects.equals(ipAddress, otherPccid.ipAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } - - /** - * Returns PccId created from the given client URI. - * - * @param uri device URI - * @return pccid - */ - public static PccId pccid(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new PccId(IpAddress.valueOf(uri.getSchemeSpecificPart())); - } - - /** - * Produces client URI from the given DPID. - * - * @param pccid client pccid - * @return client URI - */ - public static URI uri(PccId pccid) { - return uri(pccid.ipAddress()); - } - - /** - * Produces client URI from the given ip address. - * - * @param ipAddress ip of client - * @return client URI - */ - public static URI uri(IpAddress ipAddress) { - try { - return new URI(SCHEME, ipAddress.toString(), null); - } catch (URISyntaxException e) { - return null; - } - } -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java deleted file mode 100755 index 95e7789f..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import java.util.List; - -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Represents to provider facing side of a path computation client(pcc). - */ -public interface PcepClient { - - /** - * Writes the message to the driver. - * - * @param msg the message to write - */ - void sendMessage(PcepMessage msg); - - /** - * Writes the PcepMessage list to the driver. - * - * @param msgs the messages to be written - */ - void sendMessage(List<PcepMessage> msgs); - - /** - * Handle a message from the pcc. - * - * @param fromClient the message to handle - */ - void handleMessage(PcepMessage fromClient); - - /** - * Provides the factory for this PCEP version. - * - * @return PCEP version specific factory. - */ - PcepFactory factory(); - - /** - * Gets a string version of the ID for this pcc. - * - * @return string version of the ID - */ - String getStringId(); - - /** - * Gets the ipAddress of the client. - * - * @return the client pccId in IPAddress format - */ - PccId getPccId(); - - /** - * Checks if the pcc is still connected. - * - * @return true if client is connected, false otherwise - */ - boolean isConnected(); - - /** - * Disconnects the pcc by closing the TCP connection. Results in a call - * to the channel handler's channelDisconnected method for cleanup. - */ - void disconnectClient(); - - /** - * Indicates if this pcc is optical. - * - * @return true if optical - */ - boolean isOptical(); - - /** - * Identifies the channel used to communicate with the pcc. - * - * @return string representation of the connection to the client - */ - String channelId(); - - /** - * To set the status of state synchronization. - * - * @param value to set the synchronization status - */ - void setIsSyncComplete(boolean value); - - /** - * Indicates the state synchronization status of this pcc. - * - * @return true/false if the synchronization is completed/not completed - */ - boolean isSyncComplete(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java deleted file mode 100644 index 37453eac..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import java.util.Collection; - -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Abstraction of an Pcep client controller. Serves as a one stop - * shop for obtaining Pcep devices and (un)register listeners - * on pcep events - */ -public interface PcepClientController { - - /** - * Returns list of pcc clients connected to this Pcep controller. - * - * @return list of PcepClient elements - */ - Collection<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 - */ - PcepClient getClient(PccId pccId); - - /** - * Register a listener for meta events that occur to pcep - * devices. - * - * @param listener the listener to notify - */ - void addListener(PcepClientListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeListener(PcepClientListener listener); - - /** - * Register a listener for OF msg events. - * - * @param listener the listener to notify - */ - void addEventListener(PcepEventListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeEventListener(PcepEventListener listener); - - /** - * Send a message to a particular pcc client. - * - * @param pccId the id of the client to send message. - * @param msg the message to send - */ - void writeMessage(PccId pccId, PcepMessage msg); - - /** - * Process a message and notify the appropriate listeners. - * - * @param pccId id of the client the message arrived on - * @param msg the message to process. - */ - void processClientMessage(PccId pccId, PcepMessage msg); - - /** - * Close all connected PCC clients. - */ - void closeConnectedClients(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java deleted file mode 100755 index e7e0a736..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -/** - * Allows for providers interested in PCC client events to be notified. - */ -public interface PcepClientListener { - - /** - * Notify that the PCC was connected. - * - * @param pccId the id of the client that connected - */ - void clientConnected(PccId pccId); - - /** - * Notify that the PCC was disconnected. - * - * @param pccId the id of the client that disconnected. - */ - void clientDisconnected(PccId pccId); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java deleted file mode 100644 index f7de215a..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import org.onosproject.pcepio.protocol.PcepMessage; -/** - * Notifies providers about PCEP message events. - */ -public interface PcepEventListener { - - /** - * Handles the message event. - * - * @param pccId id of the pcc - * @param msg the message - */ - void handleMessage(PccId pccId, PcepMessage msg); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java deleted file mode 100644 index d00cd5a8..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -/** - * The representation for PCEP packet statistics. - */ -public interface PcepPacketStats { - - /** - * Returns the count for no of packets sent out. - * - * @return int value of no of packets sent - */ - int outPacketCount(); - - /** - * Returns the count for no of packets received. - * - * @return int value of no of packets sent - */ - int inPacketCount(); - - /** - * Returns the count for no of wrong packets received. - * - * @return int value of no of wrong packets received - */ - int wrongPacketCount(); - - /** - * Returns the time value. - * - * @return long value of time - */ - long getTime(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java deleted file mode 100755 index 4810417c..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Responsible for keeping track of the current set Pcep clients - * connected to the system. - * - */ -public interface PcepAgent { - - /** - * Add a pcc client that has just connected to the system. - * - * @param pccId the id of pcc client to add - * @param pc the actual pce client object. - * @return true if added, false otherwise. - */ - boolean addConnectedClient(PccId pccId, PcepClient pc); - - /** - * Checks if the activation for this pcc client is valid. - * - * @param pccId the id of pcc client to check - * @return true if valid, false otherwise - */ - boolean validActivation(PccId pccId); - - /** - * Clear all state in controller client maps for a pcc client that has - * disconnected from the local controller. Also release control for - * that pccIds client from the global repository. Notify client listeners. - * - * @param pccIds the id of pcc client to remove. - */ - void removeConnectedClient(PccId pccIds); - - /** - * Process a message coming from a pcc client. - * - * @param pccId the id of pcc client the message was received. - * @param m the message to process - */ - void processPcepMessage(PccId pccId, PcepMessage m); - -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java deleted file mode 100755 index f728de54..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcepio.protocol.PcepVersion; - - -/** - * Represents the driver side of an Path computation client(pcc). - * - */ -public interface PcepClientDriver extends PcepClient { - - /** - * Sets the Pcep agent to be used. This method - * can only be called once. - * - * @param agent the agent to set. - */ - void setAgent(PcepAgent agent); - - /** - * Announce to the Pcep agent that this pcc client has connected. - * - * @return true if successful, false if duplicate switch. - */ - boolean connectClient(); - - /** - * Remove this pcc client from the Pcep agent. - */ - void removeConnectedClient(); - - /** - * Sets the PCEP version for this pcc. - * - * @param pcepVersion the version to set. - */ - void setPcVersion(PcepVersion pcepVersion); - - /** - * Sets the associated Netty channel for this pcc. - * - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - - /** - * Sets the keep alive time for this pcc. - * - * @param keepAliveTime the keep alive time to set. - */ - void setPcKeepAliveTime(byte keepAliveTime); - - /** - * Sets the dead time for this pcc. - * - * @param deadTime the dead timer value to set. - */ - void setPcDeadTime(byte deadTime); - - /** - * Sets the session id for this pcc. - * - * @param sessionId the session id value to set. - */ - void setPcSessionId(byte sessionId); - - /** - * Sets whether the pcc is connected. - * - * @param connected whether the pcc is connected - */ - void setConnected(boolean connected); - - /** - * Initializes the behavior. - * - * @param pccId id of pcc - * @param pcepVersion Pcep version - * @param pktStats Pcep Packet Stats - */ - void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats); - - /** - * Checks whether the handshake is complete. - * - * @return true is finished, false if not. - */ - boolean isHandshakeComplete(); - -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java deleted file mode 100755 index 6ce75bca..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.onlab.packet.IpAddress; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Pcc Client factory which returns concrete pcc client objects for the - * physical pcc client in use. - * - */ -public interface PcepClientDriverFactory { - - - /** - * Constructs the real Pcep Client representation. - * - * @param pccIpAddress the ip address for this pcc client. - * @param pcepVersion the Pcep version in use - * @return the Pcep client representation. - */ - PcepClientDriver getPcepClientImpl(IpAddress pccIpAddress, - PcepVersion pcepVersion); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java deleted file mode 100644 index 9d105ff2..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP client controller driver API. - */ -package org.onosproject.pcep.controller.driver; diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java deleted file mode 100644 index a0cb2482..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP client controller API. - */ -package org.onosproject.pcep.controller; diff --git a/framework/src/onos/pcep/ctl/pom.xml b/framework/src/onos/pcep/ctl/pom.xml deleted file mode 100644 index f0ed5c2f..00000000 --- a/framework/src/onos/pcep/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<!-- - ~ 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.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcep-controller-impl</artifactId> - <packaging>bundle</packaging> - - <description>ONOS PCEP client controller subsystem API implementation</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcep-controller-api</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java deleted file mode 100644 index 9c27810c..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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.impl; - -import static org.onlab.util.Tools.groupedThreads; - -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; -import java.net.InetSocketAddress; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.Executors; - -import org.jboss.netty.bootstrap.ServerBootstrap; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.group.ChannelGroup; -import org.jboss.netty.channel.group.DefaultChannelGroup; -import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The main controller class. Handles all setup and network listeners - - * Distributed ownership control of pcc through IControllerRegistryService - */ -public class Controller { - - private static final Logger log = LoggerFactory.getLogger(Controller.class); - - private static final PcepFactory FACTORY1 = PcepFactories.getFactory(PcepVersion.PCEP_1); - - private ChannelGroup cg; - - // Configuration options - private int pcepPort = 4189; - private int workerThreads = 10; - - // Start time of the controller - private long systemStartTime; - - private PcepAgent agent; - - private NioServerSocketChannelFactory execFactory; - - // Perf. related configuration - private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - - /** - * Returns factory version for processing pcep messages. - * - * @return instance of factory version - */ - public PcepFactory getPcepMessageFactory1() { - return FACTORY1; - } - - /** - * To get system start time. - * - * @return system start time in milliseconds - */ - public long getSystemStartTime() { - return (this.systemStartTime); - } - - /** - * Tell controller that we're ready to accept pcc connections. - */ - public void run() { - try { - final ServerBootstrap bootstrap = createServerBootStrap(); - - bootstrap.setOption("reuseAddr", true); - bootstrap.setOption("child.keepAlive", true); - bootstrap.setOption("child.tcpNoDelay", true); - bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - - ChannelPipelineFactory pfact = new PcepPipelineFactory(this); - - bootstrap.setPipelineFactory(pfact); - InetSocketAddress sa = new InetSocketAddress(pcepPort); - cg = new DefaultChannelGroup(); - cg.add(bootstrap.bind(sa)); - log.info("Listening for PCC connection on {}", sa); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Creates server boot strap. - * - * @return ServerBootStrap - */ - private ServerBootstrap createServerBootStrap() { - if (workerThreads == 0) { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d"))); - return new ServerBootstrap(execFactory); - } else { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d")), workerThreads); - return new ServerBootstrap(execFactory); - } - } - - /** - * Initialize internal data structures. - */ - public void init() { - // These data structures are initialized here because other - // module's startUp() might be called before ours - this.systemStartTime = System.currentTimeMillis(); - } - - public Map<String, Long> getMemory() { - Map<String, Long> m = new HashMap<>(); - Runtime runtime = Runtime.getRuntime(); - m.put("total", runtime.totalMemory()); - m.put("free", runtime.freeMemory()); - return m; - } - - public Long getUptime() { - RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); - return rb.getUptime(); - } - - /** - * Creates instance of Pcep client. - * - * @param pccId pcc identifier - * @param sessionID session id - * @param pv pcep version - * @param pktStats pcep packet statistics - * @return instance of PcepClient - */ - protected PcepClientDriver getPcepClientInstance(PccId pccId, int sessionID, PcepVersion pv, - PcepPacketStats pktStats) { - PcepClientDriver pcepClientDriver = new PcepClientImpl(); - pcepClientDriver.init(pccId, pv, pktStats); - pcepClientDriver.setAgent(agent); - return pcepClientDriver; - } - - /** - * Starts the pcep controller. - * - * @param ag Pcep agent - */ - public void start(PcepAgent ag) { - log.info("Started"); - this.agent = ag; - this.init(); - this.run(); - } - - /** - * Stops the pcep controller. - */ - public void stop() { - log.info("Stopped"); - execFactory.shutdown(); - cg.close(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java deleted file mode 100644 index bc8721d7..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java +++ /dev/null @@ -1,652 +0,0 @@ -/* - * 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.impl; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.nio.channels.ClosedChannelException; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleState; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.IdleStateEvent; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onlab.packet.IpAddress; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; -import org.onosproject.pcepio.types.PceccCapabilityTlv; -import org.onosproject.pcepio.types.StatefulPceCapabilityTlv; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Channel handler deals with the pcc client connection and dispatches - * messages from client to the appropriate locations. - */ -class PcepChannelHandler extends IdleStateAwareChannelHandler { - static final byte DEADTIMER_MAXIMUM_VALUE = (byte) 0xFF; - static final byte KEEPALIVE_MULTIPLE_FOR_DEADTIMER = 4; - private static final Logger log = LoggerFactory.getLogger(PcepChannelHandler.class); - private final Controller controller; - private PcepClientDriver pc; - private PccId thispccId; - private Channel channel; - private byte sessionId = 0; - private byte keepAliveTime; - private byte deadTime; - private PcepPacketStatsImpl pcepPacketStats; - static final int MAX_WRONG_COUNT_PACKET = 5; - static final int BYTE_MASK = 0xFF; - - // State needs to be volatile because the HandshakeTimeoutHandler - // needs to check if the handshake is complete - private volatile ChannelState state; - - // When a pcc client with a ip addresss is found (i.e we already have a - // connected client with the same ip), the new client is immediately - // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup client state - we need to ensure that it does not cleanup - // client state for the older (still connected) client - private volatile Boolean duplicatePccIdFound; - - //Indicates the pcep version used by this pcc client - protected PcepVersion pcepVersion; - protected PcepFactory factory1; - - /** - * Create a new unconnected PcepChannelHandler. - * @param controller parent controller - */ - PcepChannelHandler(Controller controller) { - this.controller = controller; - this.state = ChannelState.INIT; - factory1 = controller.getPcepMessageFactory1(); - duplicatePccIdFound = Boolean.FALSE; - pcepPacketStats = new PcepPacketStatsImpl(); - } - - /** - * To disconnect a PCC. - */ - public void disconnectClient() { - pc.disconnectClient(); - } - - //************************* - // Channel State Machine - //************************* - - /** - * The state machine for handling the client/channel state. All state - * transitions should happen from within the state machine (and not from other - * parts of the code) - */ - enum ChannelState { - /** - * Initial state before channel is connected. - */ - INIT(false) { - - }, - /** - * Once the session is established, wait for open message. - */ - OPENWAIT(false) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - - log.debug("Message received in OPEN WAIT State"); - - //check for open message - if (m.getType() != PcepType.OPEN) { - // When the message type is not open message increment the wrong packet statistics - h.processUnknownMsg(); - log.debug("message is not OPEN message"); - } else { - - h.pcepPacketStats.addInPacket(); - PcepOpenMsg pOpenmsg = (PcepOpenMsg) m; - // do Capability validation. - if (h.capabilityValidation(pOpenmsg)) { - log.debug("Sending handshake OPEN message"); - h.sessionId = pOpenmsg.getPcepOpenObject().getSessionId(); - h.pcepVersion = pOpenmsg.getPcepOpenObject().getVersion(); - - //setting keepalive and deadTimer - byte yKeepalive = pOpenmsg.getPcepOpenObject().getKeepAliveTime(); - byte yDeadTimer = pOpenmsg.getPcepOpenObject().getDeadTime(); - h.keepAliveTime = yKeepalive; - if (yKeepalive < yDeadTimer) { - h.deadTime = yDeadTimer; - } else { - if (DEADTIMER_MAXIMUM_VALUE > (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER)) { - h.deadTime = (byte) (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER); - } else { - h.deadTime = DEADTIMER_MAXIMUM_VALUE; - } - } - h.sendHandshakeOpenMessage(); - h.pcepPacketStats.addOutPacket(); - h.setState(KEEPWAIT); - } else { - log.debug("Capability validation failed. Sending PCEP-ERROR message to PCC."); - // Send PCEP-ERROR message. - PcepErrorMsg errMsg = h.getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_2, - PcepErrorDetailInfo.ERROR_VALUE_2); - h.channel.write(Collections.singletonList(errMsg)); - } - } - } - }, - /** - * Once the open messages are exchanged, wait for keep alive message. - */ - KEEPWAIT(false) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - log.debug("message received in KEEPWAIT state"); - //check for keep alive message - if (m.getType() != PcepType.KEEP_ALIVE) { - // When the message type is not keep alive message increment the wrong packet statistics - h.processUnknownMsg(); - log.debug("message is not KEEPALIVE message"); - } else { - // Set the client connected status - h.pcepPacketStats.addInPacket(); - final SocketAddress address = h.channel.getRemoteAddress(); - if (!(address instanceof InetSocketAddress)) { - throw new IOException("Invalid client connection. Pcc is indentifed based on IP"); - } - log.debug("sending keep alive message in KEEPWAIT state"); - - final InetSocketAddress inetAddress = (InetSocketAddress) address; - h.thispccId = PccId.pccId(IpAddress.valueOf(inetAddress.getAddress())); - h.pc = h.controller.getPcepClientInstance(h.thispccId, h.sessionId, h.pcepVersion, - h.pcepPacketStats); - // set the status of pcc as connected - h.pc.setConnected(true); - h.pc.setChannel(h.channel); - - // set any other specific parameters to the pcc - h.pc.setPcVersion(h.pcepVersion); - h.pc.setPcSessionId(h.sessionId); - h.pc.setPcKeepAliveTime(h.keepAliveTime); - h.pc.setPcDeadTime(h.deadTime); - int keepAliveTimer = h.keepAliveTime & BYTE_MASK; - int deadTimer = h.deadTime & BYTE_MASK; - if (0 == h.keepAliveTime) { - h.deadTime = 0; - } - // handle keep alive and dead time - if (keepAliveTimer != PcepPipelineFactory.DEFAULT_KEEP_ALIVE_TIME - || deadTimer != PcepPipelineFactory.DEFAULT_DEAD_TIME) { - - h.channel.getPipeline().replace("idle", "idle", - new IdleStateHandler(PcepPipelineFactory.TIMER, deadTimer, keepAliveTimer, 0)); - } - log.debug("Dead timer : " + deadTimer); - log.debug("Keep alive time : " + keepAliveTimer); - - //set the state handshake completion. - h.sendKeepAliveMessage(); - h.pcepPacketStats.addOutPacket(); - h.setHandshakeComplete(true); - - if (!h.pc.connectClient()) { - disconnectDuplicate(h); - } else { - h.setState(ESTABLISHED); - } - } - } - }, - /** - * Once the keep alive messages are exchanged, the state is established. - */ - ESTABLISHED(true) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - - //h.channel.getPipeline().remove("waittimeout"); - log.debug("Message received in established state " + m.getType()); - //dispatch the message - h.dispatchMessage(m); - } - }; - private boolean handshakeComplete; - - ChannelState(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - // do nothing - } - - /** - * Is this a state in which the handshake has completed. - * - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.handshakeComplete; - } - - protected void disconnectDuplicate(PcepChannelHandler h) { - log.error("Duplicated Pcc IP or incompleted cleanup - " + "disconnecting channel {}", - h.getClientInfoString()); - h.duplicatePccIdFound = Boolean.TRUE; - h.channel.disconnect(); - } - - /** - * Sets handshake complete status. - * - * @param handshakeComplete status of handshake - */ - public void setHandshakeComplete(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - } - - @Override - public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - channel = e.getChannel(); - log.info("PCC connected from {}", channel.getRemoteAddress()); - - // Wait for open message from pcc client - setState(ChannelState.OPENWAIT); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - log.info("Pcc disconnected callback for pc:{}. Cleaning up ...", getClientInfoString()); - if (thispccId != null) { - if (!duplicatePccIdFound) { - // if the disconnected client (on this ChannelHandler) - // was not one with a duplicate-dpid, it is safe to remove all - // state for it at the controller. Notice that if the disconnected - // client was a duplicate-ip, calling the method below would clear - // all state for the original client (with the same ip), - // which we obviously don't want. - log.debug("{}:removal called", getClientInfoString()); - if (pc != null) { - pc.removeConnectedClient(); - } - } else { - // A duplicate was disconnected on this ChannelHandler, - // this is the same client reconnecting, but the original state was - // not cleaned up - XXX check liveness of original ChannelHandler - log.debug("{}:duplicate found", getClientInfoString()); - duplicatePccIdFound = Boolean.FALSE; - } - } else { - log.warn("no pccip in channelHandler registered for " + "disconnected client {}", getClientInfoString()); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { - PcepErrorMsg errMsg; - log.info("exceptionCaught: " + e.toString()); - - if (e.getCause() instanceof ReadTimeoutException) { - if (ChannelState.OPENWAIT == state) { - // When ReadTimeout timer is expired in OPENWAIT state, it is considered - // OpenWait timer. - errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_2); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - channel.close(); - state = ChannelState.INIT; - return; - } else if (ChannelState.KEEPWAIT == state) { - // When ReadTimeout timer is expired in KEEPWAIT state, is is considered - // KeepWait timer. - errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_7); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - channel.close(); - state = ChannelState.INIT; - return; - } - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for pc {} already closed", getClientInfoString()); - } else if (e.getCause() instanceof IOException) { - log.error("Disconnecting client {} due to IO Error: {}", getClientInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - channel.close(); - } else if (e.getCause() instanceof PcepParseException) { - PcepParseException errMsgParse = (PcepParseException) e.getCause(); - byte errorType = errMsgParse.getErrorType(); - byte errorValue = errMsgParse.getErrorValue(); - - if ((errorType == (byte) 0x0) && (errorValue == (byte) 0x0)) { - processUnknownMsg(); - } else { - errMsg = getErrorMsg(errorType, errorValue); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - } - } else if (e.getCause() instanceof RejectedExecutionException) { - log.warn("Could not process message: queue full"); - } else { - log.error("Error while processing message from client " + getClientInfoString() + "state " + this.state); - channel.close(); - } - } - - @Override - public String toString() { - return getClientInfoString(); - } - - @Override - public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception { - if (!isHandshakeComplete()) { - return; - } - - if (e.getState() == IdleState.READER_IDLE) { - // When no message is received on channel for read timeout, then close - // the channel - log.info("Disconnecting client {} due to read timeout", getClientInfoString()); - ctx.getChannel().close(); - } else if (e.getState() == IdleState.WRITER_IDLE) { - // Send keep alive message - log.debug("Sending keep alive message due to IdleState timeout " + pc.toString()); - pc.sendMessage(Collections.singletonList(pc.factory().buildKeepaliveMsg().build())); - } - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { - if (e.getMessage() instanceof List) { - @SuppressWarnings("unchecked") - List<PcepMessage> msglist = (List<PcepMessage>) e.getMessage(); - for (PcepMessage pm : msglist) { - // Do the actual packet processing - state.processPcepMessage(this, pm); - } - } else { - state.processPcepMessage(this, (PcepMessage) e.getMessage()); - } - } - - /** - * To set the handshake status. - * - * @param handshakeComplete value is handshake status - */ - public void setHandshakeComplete(boolean handshakeComplete) { - this.state.setHandshakeComplete(handshakeComplete); - } - - /** - * Is this a state in which the handshake has completed. - * - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.state.isHandshakeComplete(); - } - - /** - * To handle the pcep message. - * - * @param m pcep message - */ - private void dispatchMessage(PcepMessage m) { - pc.handleMessage(m); - } - - /** - * Return a string describing this client based on the already available - * information (ip address and/or remote socket). - * - * @return display string - */ - private String getClientInfoString() { - if (pc != null) { - return pc.toString(); - } - String channelString; - if (channel == null || channel.getRemoteAddress() == null) { - channelString = "?"; - } else { - channelString = channel.getRemoteAddress().toString(); - } - String pccIpString; - // TODO : implement functionality to get pcc id string - pccIpString = "?"; - return String.format("[%s PCCIP[%s]]", channelString, pccIpString); - } - - /** - * Update the channels state. Only called from the state machine. - * - * @param state - */ - private void setState(ChannelState state) { - this.state = state; - } - - /** - * Send handshake open message. - * - * @throws IOException,PcepParseException - */ - private void sendHandshakeOpenMessage() throws IOException, PcepParseException { - PcepOpenObject pcepOpenobj = factory1.buildOpenObject() - .setSessionId(sessionId) - .setKeepAliveTime(keepAliveTime) - .setDeadTime(deadTime) - .build(); - PcepMessage msg = factory1.buildOpenMsg() - .setPcepOpenObj(pcepOpenobj) - .build(); - log.debug("Sending OPEN message to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(msg)); - } - - /** - * Capability Validation. - * - * @param pOpenmsg pcep open message - * @return success or failure - */ - private boolean capabilityValidation(PcepOpenMsg pOpenmsg) { - LinkedList<PcepValueType> tlvList = pOpenmsg.getPcepOpenObject().getOptionalTlv(); - boolean bFoundPceccCapability = false; - boolean bFoundStatefulPceCapability = false; - boolean bFoundPcInstantiationCapability = false; - - ListIterator<PcepValueType> listIterator = tlvList.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - switch (tlv.getType()) { - case PceccCapabilityTlv.TYPE: - bFoundPceccCapability = true; - break; - case StatefulPceCapabilityTlv.TYPE: - bFoundStatefulPceCapability = true; - StatefulPceCapabilityTlv stetefulPcCapTlv = (StatefulPceCapabilityTlv) tlv; - if (stetefulPcCapTlv.getIFlag()) { - bFoundPcInstantiationCapability = true; - } - break; - default: - continue; - } - } - - return (bFoundPceccCapability && bFoundStatefulPceCapability && bFoundPcInstantiationCapability); - } - - /** - * Send keep alive message. - * - * @throws IOException when channel is disconnected - * @throws PcepParseException while building keep alive message - */ - private void sendKeepAliveMessage() throws IOException, PcepParseException { - PcepMessage msg = factory1.buildKeepaliveMsg().build(); - log.debug("Sending KEEPALIVE message to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(msg)); - } - - /** - * Send error message and close channel with pcc. - */ - private void sendErrMsgAndCloseChannel() { - // TODO send error message - channel.close(); - } - - /** - * Send error message when an invalid message is received. - * - * @throws PcepParseException while building error message - */ - private void sendErrMsgForInvalidMsg() throws PcepParseException { - byte errorType = 0x02; - byte errorValue = 0x00; - PcepErrorMsg errMsg = getErrorMsg(errorType, errorValue); - channel.write(Collections.singletonList(errMsg)); - } - - /** - * Builds pcep error message based on error value and error type. - * - * @param errorType pcep error type - * @param errorValue pcep error value - * @return pcep error message - * @throws PcepParseException while bulding error message - */ - public PcepErrorMsg getErrorMsg(byte errorType, byte errorValue) throws PcepParseException { - LinkedList<PcepErrorObject> llerrObj = new LinkedList<>(); - PcepErrorMsg errMsg; - - PcepErrorObject errObj = factory1.buildPcepErrorObject() - .setErrorValue(errorValue) - .setErrorType(errorType) - .build(); - - llerrObj.add(errObj); - - if (state == ChannelState.OPENWAIT) { - //If Error caught in Openmessage - PcepOpenObject openObj = null; - ErrorObjListWithOpen errorObjListWithOpen = null; - - if (0 != sessionId) { - openObj = factory1.buildOpenObject().setSessionId(sessionId).build(); - errorObjListWithOpen = new ErrorObjListWithOpen(llerrObj, openObj); - } else { - errorObjListWithOpen = new ErrorObjListWithOpen(llerrObj, null); - } - - errMsg = factory1.buildPcepErrorMsg() - .setErrorObjListWithOpen(errorObjListWithOpen) - .build(); - } else { - - //If Error caught in other than Openmessage - LinkedList<PcepError> llPcepErr = new LinkedList<>(); - - PcepError pcepErr = factory1.buildPcepError() - .setErrorObjList(llerrObj) - .build(); - - llPcepErr.add(pcepErr); - - PcepErrorInfo errInfo = factory1.buildPcepErrorInfo() - .setPcepErrorList(llPcepErr) - .build(); - - errMsg = factory1.buildPcepErrorMsg() - .setPcepErrorInfo(errInfo) - .build(); - } - return errMsg; - } - - /** - * Process unknown pcep message received. - * - * @throws PcepParseException while building pcep error message - */ - public void processUnknownMsg() throws PcepParseException { - Date now = null; - if (pcepPacketStats.wrongPacketCount() == 0) { - now = new Date(); - pcepPacketStats.setTime(now.getTime()); - pcepPacketStats.addWrongPacket(); - sendErrMsgForInvalidMsg(); - } - - if (pcepPacketStats.wrongPacketCount() > 1) { - Date lastest = new Date(); - pcepPacketStats.addWrongPacket(); - //converting to seconds - if (((lastest.getTime() - pcepPacketStats.getTime()) / 1000) > 60) { - now = lastest; - pcepPacketStats.setTime(now.getTime()); - pcepPacketStats.resetWrongPacket(); - pcepPacketStats.addWrongPacket(); - } else if (((int) (lastest.getTime() - now.getTime()) / 1000) < 60) { - if (MAX_WRONG_COUNT_PACKET <= pcepPacketStats.wrongPacketCount()) { - //reset once wrong packet count reaches MAX_WRONG_COUNT_PACKET - pcepPacketStats.resetWrongPacket(); - // max wrong packets received send error message and close the session - sendErrMsgAndCloseChannel(); - } - } - } - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java deleted file mode 100644 index 00c8c694..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * 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.impl; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcep.controller.PcepClientController; -import org.onosproject.pcep.controller.PcepClientListener; -import org.onosproject.pcep.controller.PcepEventListener; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.collect.Sets; - -/** - * Implementation of PCEP client controller. - */ -@Component(immediate = true) -@Service -public class PcepClientControllerImpl implements PcepClientController { - - private static final Logger log = LoggerFactory.getLogger(PcepClientControllerImpl.class); - - protected ConcurrentHashMap<PccId, PcepClient> connectedClients = - new ConcurrentHashMap<>(); - - protected PcepClientAgent agent = new PcepClientAgent(); - protected Set<PcepClientListener> pcepClientListener = new HashSet<>(); - - protected Set<PcepEventListener> pcepEventListener = Sets.newHashSet(); - - private final Controller ctrl = new Controller(); - - @Activate - public void activate() { - ctrl.start(agent); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - // Close all connected clients - closeConnectedClients(); - ctrl.stop(); - log.info("Stopped"); - } - - @Override - public Collection<PcepClient> getClients() { - return connectedClients.values(); - } - - @Override - public PcepClient getClient(PccId pccId) { - return connectedClients.get(pccId); - } - - @Override - public void addListener(PcepClientListener listener) { - if (!pcepClientListener.contains(listener)) { - this.pcepClientListener.add(listener); - } - } - - @Override - public void removeListener(PcepClientListener listener) { - this.pcepClientListener.remove(listener); - } - - @Override - public void addEventListener(PcepEventListener listener) { - pcepEventListener.add(listener); - } - - @Override - public void removeEventListener(PcepEventListener listener) { - pcepEventListener.remove(listener); - } - - @Override - public void writeMessage(PccId pccId, PcepMessage msg) { - this.getClient(pccId).sendMessage(msg); - } - - @Override - public void processClientMessage(PccId pccId, PcepMessage msg) { - PcepClient pc = getClient(pccId); - - switch (msg.getType()) { - case NONE: - break; - case OPEN: - break; - case KEEP_ALIVE: - break; - case PATH_COMPUTATION_REQUEST: - break; - case PATH_COMPUTATION_REPLY: - break; - case NOTIFICATION: - break; - case ERROR: - break; - case CLOSE: - log.info("Sending Close Message to {" + pccId.toString() + "}"); - pc.sendMessage(Collections.singletonList(pc.factory().buildCloseMsg().build())); - //now disconnect client - pc.disconnectClient(); - break; - case REPORT: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case UPDATE: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case INITIATE: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case LABEL_UPDATE: - break; - case MAX: - break; - case END: - break; - default: - break; - } - } - - @Override - public void closeConnectedClients() { - PcepClient pc; - for (PccId id : connectedClients.keySet()) { - pc = getClient(id); - pc.disconnectClient(); - } - } - - /** - * Implementation of an Pcep Agent which is responsible for - * keeping track of connected clients and the state in which - * they are. - */ - public class PcepClientAgent implements PcepAgent { - - private final Logger log = LoggerFactory.getLogger(PcepClientAgent.class); - - @Override - public boolean addConnectedClient(PccId pccId, PcepClient pc) { - - if (connectedClients.get(pccId) != null) { - log.error("Trying to add connectedClient but found a previous " - + "value for pcc ip: {}", pccId.toString()); - return false; - } else { - log.debug("Added Client {}", pccId.toString()); - connectedClients.put(pccId, pc); - for (PcepClientListener l : pcepClientListener) { - l.clientConnected(pccId); - } - return true; - } - } - - @Override - public boolean validActivation(PccId pccId) { - if (connectedClients.get(pccId) == null) { - log.error("Trying to activate client but is not in " - + "connected client: pccIp {}. Aborting ..", pccId.toString()); - return false; - } - - return true; - } - - @Override - public void removeConnectedClient(PccId pccId) { - - connectedClients.remove(pccId); - for (PcepClientListener l : pcepClientListener) { - log.warn("removal for {}", pccId.toString()); - l.clientDisconnected(pccId); - } - } - - @Override - public void processPcepMessage(PccId pccId, PcepMessage m) { - processClientMessage(pccId, m); - } - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java deleted file mode 100644 index a10ff5c8..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * 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.impl; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.IpAddress; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * An abstract representation of an OpenFlow switch. Can be extended by others - * to serve as a base for their vendor specific representation of a switch. - */ -public class PcepClientImpl implements PcepClientDriver { - - protected final Logger log = LoggerFactory.getLogger(PcepClientImpl.class); - - private static final String SHUTDOWN_MSG = "Worker has already been shutdown"; - - private Channel channel; - protected String channelId; - - private boolean connected; - protected boolean startDriverHandshakeCalled = false; - protected boolean isHandShakeComplete = false; - protected boolean isSyncComplete = false; - private PccId pccId; - private PcepAgent agent; - - private PcepVersion pcepVersion; - private byte keepAliveTime; - private byte deadTime; - private byte sessionId; - private PcepPacketStatsImpl pktStats; - - @Override - public void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats) { - this.pccId = pccId; - this.pcepVersion = pcepVersion; - this.pktStats = (PcepPacketStatsImpl) pktStats; - } - - @Override - public final void disconnectClient() { - this.channel.close(); - } - - @Override - public final void sendMessage(PcepMessage m) { - log.debug("Sending message to {}", channel.getRemoteAddress()); - try { - channel.write(Collections.singletonList(m)); - this.pktStats.addOutPacket(); - } catch (RejectedExecutionException e) { - log.warn(e.getMessage()); - if (!e.getMessage().contains(SHUTDOWN_MSG)) { - throw e; - } - } - } - - @Override - public final void sendMessage(List<PcepMessage> msgs) { - try { - channel.write(msgs); - this.pktStats.addOutPacket(msgs.size()); - } catch (RejectedExecutionException e) { - log.warn(e.getMessage()); - if (!e.getMessage().contains(SHUTDOWN_MSG)) { - throw e; - } - } - } - - @Override - public final boolean isConnected() { - return this.connected; - } - - @Override - public final void setConnected(boolean connected) { - this.connected = connected; - }; - - @Override - public final void setChannel(Channel channel) { - this.channel = channel; - final SocketAddress address = channel.getRemoteAddress(); - if (address instanceof InetSocketAddress) { - final InetSocketAddress inetAddress = (InetSocketAddress) address; - final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - if (ipAddress.isIp4()) { - channelId = ipAddress.toString() + ':' + inetAddress.getPort(); - } else { - channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort(); - } - } - }; - - @Override - public String channelId() { - return channelId; - } - - @Override - public final PccId getPccId() { - return this.pccId; - } - - @Override - public final String getStringId() { - return this.pccId.toString(); - } - - @Override - public final void setPcVersion(PcepVersion pcepVersion) { - this.pcepVersion = pcepVersion; - } - - @Override - public void setPcKeepAliveTime(byte keepAliveTime) { - this.keepAliveTime = keepAliveTime; - } - - @Override - public void setPcDeadTime(byte deadTime) { - this.deadTime = deadTime; - } - - @Override - public void setPcSessionId(byte sessionId) { - this.sessionId = sessionId; - } - - @Override - public void setIsSyncComplete(boolean value) { - this.isSyncComplete = value; - } - - @Override - public boolean isSyncComplete() { - return isSyncComplete; - } - - @Override - public final void handleMessage(PcepMessage m) { - this.pktStats.addInPacket(); - this.agent.processPcepMessage(pccId, m); - } - - @Override - public final boolean connectClient() { - return this.agent.addConnectedClient(pccId, this); - } - - @Override - public final void removeConnectedClient() { - this.agent.removeConnectedClient(pccId); - } - - @Override - public PcepFactory factory() { - return PcepFactories.getFactory(pcepVersion); - } - - @Override - public boolean isHandshakeComplete() { - return isHandShakeComplete; - } - - @Override - public final void setAgent(PcepAgent ag) { - if (this.agent == null) { - this.agent = ag; - } - } - - @Override - public boolean isOptical() { - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("channel", channelId()) - .add("pccId", getPccId()) - .toString(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java deleted file mode 100644 index b1065891..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.impl; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.util.HexDump; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Decode an pcep message from a Channel, for use in a netty pipeline. - */ -public class PcepMessageDecoder extends FrameDecoder { - - protected static final Logger log = LoggerFactory.getLogger(PcepMessageDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, - ChannelBuffer buffer) throws Exception { - log.debug("Message received."); - if (!channel.isConnected()) { - log.info("Channel is not connected."); - // In testing, I see decode being called AFTER decode last. - // This check avoids that from reading corrupted frames - return null; - } - - HexDump.pcepHexDump(buffer); - - // Note that a single call to decode results in reading a single - // PcepMessage from the channel buffer, which is passed on to, and processed - // by, the controller (in PcepChannelHandler). - // This is different from earlier behavior (with the original pcepIO), - // where we parsed all the messages in the buffer, before passing on - // a list of the parsed messages to the controller. - // The performance *may or may not* not be as good as before. - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - List<PcepMessage> msgList = new LinkedList<>(); - - while (buffer.readableBytes() > 0) { - PcepMessage message = reader.readFrom(buffer); - msgList.add(message); - } - return msgList; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java deleted file mode 100644 index ae97221e..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.impl; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.util.HexDump; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Encode an pcep message for output into a ChannelBuffer, for use in a - * netty pipeline. - */ -public class PcepMessageEncoder extends OneToOneEncoder { - protected static final Logger log = LoggerFactory.getLogger(PcepMessageEncoder.class); - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { - log.debug("Sending message"); - if (!(msg instanceof List)) { - log.debug("Invalid msg."); - return msg; - } - - @SuppressWarnings("unchecked") - List<PcepMessage> msglist = (List<PcepMessage>) msg; - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - for (PcepMessage pm : msglist) { - pm.writeTo(buf); - } - - HexDump.pcepHexDump(buf); - - return buf; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java deleted file mode 100644 index f2bc51eb..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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.impl; - -import org.onosproject.pcep.controller.PcepPacketStats; - -/** - * The implementation for PCEP packet statistics. - */ -public class PcepPacketStatsImpl implements PcepPacketStats { - - private int inPacketCount; - private int outPacketCount; - private int wrongPacketCount; - private long time; - - /** - * Default constructor. - */ - public PcepPacketStatsImpl() { - this.inPacketCount = 0; - this.outPacketCount = 0; - this.wrongPacketCount = 0; - this.time = 0; - } - - @Override - public int outPacketCount() { - return outPacketCount; - } - - @Override - public int inPacketCount() { - return inPacketCount; - } - - @Override - public int wrongPacketCount() { - return wrongPacketCount; - } - - /** - * Increments the received packet counter. - */ - public void addInPacket() { - this.inPacketCount++; - } - - /** - * Increments the sent packet counter. - */ - public void addOutPacket() { - this.outPacketCount++; - } - - /** - * Increments the sent packet counter by specified value. - * - * @param value of no of packets sent - */ - public void addOutPacket(int value) { - this.outPacketCount = this.outPacketCount + value; - } - - /** - * Increments the wrong packet counter. - */ - public void addWrongPacket() { - this.wrongPacketCount++; - } - - /** - * Resets wrong packet count. - */ - public void resetWrongPacket() { - this.wrongPacketCount = 0; - } - - @Override - public long getTime() { - return this.time; - } - - /** - * Sets the time value. - * - * @param time long value of time - */ - public void setTime(long time) { - this.time = time; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java deleted file mode 100644 index f32b87a8..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutHandler; -import org.jboss.netty.util.ExternalResourceReleasable; -import org.jboss.netty.util.HashedWheelTimer; -import org.jboss.netty.util.Timer; - -/** - * Creates a ChannelPipeline for a server-side pcep channel. - */ -public class PcepPipelineFactory - implements ChannelPipelineFactory, ExternalResourceReleasable { - - protected Controller controller; - static final Timer TIMER = new HashedWheelTimer(); - protected IdleStateHandler idleHandler; - protected ReadTimeoutHandler readTimeoutHandler; - static final int DEFAULT_KEEP_ALIVE_TIME = 30; - static final int DEFAULT_DEAD_TIME = 120; - static final int DEFAULT_WAIT_TIME = 60; - - public PcepPipelineFactory(Controller controller) { - super(); - this.controller = controller; - this.idleHandler = new IdleStateHandler(TIMER, DEFAULT_DEAD_TIME, DEFAULT_KEEP_ALIVE_TIME, 0); - this.readTimeoutHandler = new ReadTimeoutHandler(TIMER, DEFAULT_WAIT_TIME); - } - - @Override - public ChannelPipeline getPipeline() throws Exception { - PcepChannelHandler handler = new PcepChannelHandler(controller); - - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("pcepmessagedecoder", new PcepMessageDecoder()); - pipeline.addLast("pcepmessageencoder", new PcepMessageEncoder()); - pipeline.addLast("idle", idleHandler); - pipeline.addLast("waittimeout", readTimeoutHandler); - pipeline.addLast("handler", handler); - return pipeline; - } - - @Override - public void releaseExternalResources() { - TIMER.stop(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java deleted file mode 100644 index d86eefc3..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Implementation of the PCEP client controller subsystem. - */ -package org.onosproject.pcep.controller.impl; diff --git a/framework/src/onos/pcep/pcepio/pom.xml b/framework/src/onos/pcep/pcepio/pom.xml deleted file mode 100755 index d121a83e..00000000 --- a/framework/src/onos/pcep/pcepio/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?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.4.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> diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java deleted file mode 100755 index 85bc33fb..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java deleted file mode 100755 index 25bdf5b6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java deleted file mode 100644 index 44d09f0d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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 custom exceptions. - */ -package org.onosproject.pcepio.exceptions; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java deleted file mode 100755 index 6a2fdc88..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * 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); - - /** - * Builder interface with get and set functions to build PcInitiatedLspRequest. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java deleted file mode 100644 index 122b943f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * 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 List of PCEP Attributes. - */ -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 - */ - 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); - - /** - * Builder interface with get and set functions to build PcepAttribute. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java deleted file mode 100755 index 58d05821..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * 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); - - /** - * 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 - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java deleted file mode 100644 index 00fad800..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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 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) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Close message. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java deleted file mode 100755 index 92d43874..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java deleted file mode 100755 index 3af6b759..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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 - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build ERO object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java deleted file mode 100755 index b61bfb9f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 - */ - 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 - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepError. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java deleted file mode 100755 index 0c625a03..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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 - */ - boolean isErrorInfoPresent(); - - /** - * Reads from channel buffer for TE and RP objects. - * - * @param bb of channel buffer - * @throws PcepParseException while parsing Error info part. - */ - 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. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Returns Error Value in PCEP-ERROR Object. - * - * @return list of Error Value in PCEP-ERROR Object - */ - LinkedList<Integer> getErrorValue(); - - /** - * Returns Error Type in PCEP-ERROR Object. - * - * @return list of Error Type in PCEP-ERROR Object - */ - LinkedList<Integer> getErrorType(); - - /** - * Builder interface with get and set functions to build ErrorInfo. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java deleted file mode 100644 index ff06885d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * 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.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 - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object List with open object - */ - void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - */ - void setPcepErrorInfo(PcepErrorInfo errInfo); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Error message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepErrorMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Object of ErrorObjListWithOpen. - * - * @return Object of ErrorObjListWithOpen - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object with open object - * @return builder by setting Object of ErrorObjListWithOpen - */ - Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - * @return builder by getting Object of PcepErrorInfo - */ - Builder setPcepErrorInfo(PcepErrorInfo errInfo); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java deleted file mode 100644 index 16374d5b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java deleted file mode 100644 index 85416f98..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.protocol.ver1.PcepFactoryVer1; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Abstraction to provide the version for PCEP. - */ -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 PCEP version - * @return PCEP version - */ - public static PcepFactory getFactory(PcepVersion version) { - switch (version) { - case PCEP_1: - return PcepFactoryVer1.INSTANCE; - default: - throw new IllegalArgumentException("Unknown version: " + version); - } - } - - private static class GenericReader implements PcepMessageReader<PcepMessage> { - - @Override - public PcepMessage readFrom(ChannelBuffer bb) throws PcepParseException { - - if (!bb.readable()) { - 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: - factory = org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1.INSTANCE; - break; - default: - throw new PcepParseException("Unknown Packet version: " + packetVersion); - } - return factory.getReader().readFrom(bb); - } - } - - /** - * Returns GENERIC_READER. - * - * @return GENERIC_READER - */ - public static PcepMessageReader<PcepMessage> getGenericReader() { - return GENERIC_READER; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java deleted file mode 100755 index 1a31e0a3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * 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(); - - /** - * To get Builder Object for PcepLabelRangeObject. - * - * @return Builder Object for PcepLabelRangeObject - */ - PcepLabelRangeObject.Builder buildPcepLabelRangeObject(); - - /** - * To get Builder Object for PcepLabelRangeResvMsg. - * - * @return Builder Object for PcepLabelRangeResvMsg - */ - PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java deleted file mode 100755 index 2df7cc9c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java deleted file mode 100755 index 5ed4e1e3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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 - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java deleted file mode 100755 index 55205299..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * 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 - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java deleted file mode 100755 index d240445e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * 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 - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java deleted file mode 100755 index 1c29b76a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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 - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java deleted file mode 100755 index ef802780..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * 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 - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java deleted file mode 100755 index 2b061430..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java deleted file mode 100755 index 675e0557..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java deleted file mode 100755 index a1c1fc59..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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); - - /** - * Writes the IRO into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing IRO object. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build IRO object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java deleted file mode 100755 index 160f0a2a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepKeepaliveMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java deleted file mode 100755 index b64c21e0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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 - */ - 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 - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java deleted file mode 100755 index 72d0a38e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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 - */ - PcepSrpObject getSrpObject(); - - /** - * Sets PCEP SRP Object. - * - * @param srpObject SRP object. - */ - void setSrpObject(PcepSrpObject srpObject); - - /** - * Returns list of PcepLabelRangeObject. - * - * @return Label Range List - */ - LinkedList<PcepLabelRangeObject> getLabelRangeList(); - - /** - * Sets list of PcepLabelRangeObject. - * - * @param llLabelRangeList Label Range List - */ - 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. - */ - int write(ChannelBuffer bb) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java deleted file mode 100755 index 9155434e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 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(); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java deleted file mode 100755 index 3e2a3a95..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java deleted file mode 100644 index 5ef870d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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.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. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Sets the Label Download object. - * - * @param labelDownload PCEP Label Download object - */ - void 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 - */ - void setLabelMap(PcepLabelMap labelMap); - - /** - * Returns the PcepLabelMap object. - * - * @return labelMap PCEP Label Map - */ - PcepLabelMap getLabelMap(); - - /** - * Builder interface with get and set functions to build Label Update message. - */ - 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(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java deleted file mode 100755 index 3740df3b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java deleted file mode 100755 index 5d55250a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java deleted file mode 100755 index d541e92b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java deleted file mode 100755 index 7de07169..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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(); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Message. - */ - 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(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java deleted file mode 100755 index 591a033d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java deleted file mode 100755 index e7477b51..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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. - */ - void write(ChannelBuffer bb, T message) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java deleted file mode 100755 index 380fb42e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java deleted file mode 100644 index 4b1d50a5..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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 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. - */ - 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. - */ - - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepMsgPath. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java deleted file mode 100755 index 6be8c65a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java deleted file mode 100755 index 26dad566..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java deleted file mode 100644 index 904156f0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Open message. - */ - 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(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java deleted file mode 100755 index 13dd2fa8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java deleted file mode 100755 index c6993c3a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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); - - /** - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java deleted file mode 100755 index f4355206..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java deleted file mode 100755 index 928ce1a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * 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); - - /** - * 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 - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build RRO object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java deleted file mode 100755 index e4816efd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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 - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * 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. - */ - 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 - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv List of optional tlv - * @return builder by setting list of optional tlv. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java deleted file mode 100755 index b8ab9ec8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * 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. - */ - 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 - */ - 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 - */ - int write(ChannelBuffer bb) 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 - */ - 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); - - /** - * Builder interface with get and set functions to build PcepStateReport. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java deleted file mode 100755 index 21f6c71c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * 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); - - /** - * 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 - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build TE object. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java deleted file mode 100755 index 3bc5034e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java deleted file mode 100755 index 450fdfac..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java deleted file mode 100755 index dc2ac3a8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java deleted file mode 100755 index 8d1c89e2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 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); - - /** - * Builder interface with get and set functions to build PcepUpdateRequest. - */ - 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); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java deleted file mode 100755 index c761ed08..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java deleted file mode 100755 index 37aef58d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java deleted file mode 100644 index 53ee5934..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Abstraction of an entity providing PCEP messages. - */ -package org.onosproject.pcepio.protocol; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java deleted file mode 100644 index d61f7319..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * 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.ver1; - -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcInitiatedLspRequest for PCEP Initiate message. - * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. - */ -public class PcInitiatedLspRequestVer1 implements PcInitiatedLspRequest { - - /* - * <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>) - <PCE-initiated-lsp-instantiation> ::= <SRP> - <LSP> - <END-POINTS> - <ERO> - [<attribute-list>] - <PCE-initiated-lsp-deletion> ::= <SRP> - <LSP> - */ - - protected static final Logger log = LoggerFactory.getLogger(PcInitiatedLspRequestVer1.class); - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - /** - * Default constructor. - */ - public PcInitiatedLspRequestVer1() { - srpObject = null; - lspObject = null; - endPointsObject = null; - eroObject = null; - pcepAttribute = null; - - } - - /** - * Constructor to initialize all parameters of PC initiated lsp request. - * - * @param srpObject PCEP srp Object - * @param lspObject PCEP lsp object - * @param endPointsObject PCPE endpoints object - * @param eroObject PCEP ero object - * @param pcepAttribute PCEP attribute - */ - public PcInitiatedLspRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, - PcepEndPointsObject endPointsObject, PcepEroObject eroObject, PcepAttribute pcepAttribute) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.endPointsObject = endPointsObject; - this.eroObject = eroObject; - this.pcepAttribute = pcepAttribute; - - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return pcepAttribute; - } - - @Override - public void setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - } - - @Override - public void setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - } - - @Override - public void setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - } - - /** - * Builder class for PC initiated lsp reuqest. - */ - public static class Builder implements PcInitiatedLspRequest.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsEndPointsObjectSet = false; - private boolean bIsEROObjectSet = false; - private boolean bIsPcepAttributeSet = false; - private boolean bIsbRFlagSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - @Override - public PcInitiatedLspRequest build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP End Point Object - PcepEndPointsObject endPointsObject = null; - //PCEP ERO Object - PcepEroObject eroObject = null; - //PCEP Attribute list - PcepAttribute pcepAttribute = null; - boolean bRFlag = false; - - if (!this.bIsSRPObjectSet) { - throw new PcepParseException("Srp object NOT Set while building PcInitiatedLspRequest"); - } else { - srpObject = this.srpObject; - bRFlag = srpObject.getRFlag(); - } - - if (bRFlag) { - this.bIsbRFlagSet = true; - } else { - this.bIsbRFlagSet = false; - } - - if (!this.bIsLSPObjectSet) { - throw new PcepParseException("LSP Object NOT Set while building PcInitiatedLspRequest"); - } else { - lspObject = this.lspObject; - } - if (!this.bIsbRFlagSet) { - - if (!this.bIsEndPointsObjectSet) { - throw new PcepParseException("EndPoints Object NOT Set while building PcInitiatedLspRequest"); - } else { - endPointsObject = this.endPointsObject; - } - if (!this.bIsEROObjectSet) { - throw new PcepParseException("ERO Object NOT Set while building PcInitiatedLspRequest"); - } else { - eroObject = this.eroObject; - } - if (bIsPcepAttributeSet) { - pcepAttribute = this.pcepAttribute; - } - } - return new PcInitiatedLspRequestVer1(srpObject, lspObject, endPointsObject, eroObject, pcepAttribute); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return this.endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return this.eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return this.pcepAttribute; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - this.bIsEndPointsObjectSet = true; - return this; - } - - @Override - public Builder setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - this.bIsEROObjectSet = true; - return this; - } - - @Override - public Builder setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - this.bIsPcepAttributeSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("EndPointObject", endPointsObject) - .add("EroObject", eroObject) - .add("PcepAttribute", pcepAttribute) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java deleted file mode 100644 index 65a844c2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java +++ /dev/null @@ -1,431 +0,0 @@ -/* - * 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.ver1; - -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.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Attribute List. - */ -public class PcepAttributeVer1 implements PcepAttribute { - - /* Reference : RFC5440 - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * - * <metric-list> ::=<METRIC>[<metric-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepAttributeVer1.class); - - public static final int OBJECT_HEADER_LENGTH = 4; - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP Bandwidth Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList<PcepMetricObject> llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - /** - * Default constructor to initialize member variables. - */ - public PcepAttributeVer1() { - - lspaObject = null; - bandwidthObject = null; - llMetricList = null; - iroObject = null; - this.isLspaObjectSet = false; - this.isBandwidthObjectSet = false; - this.isMetricListSet = false; - this.isIroObjectSet = false; - } - - /** - * Constructor to initialize all parameters for PCEP attribute. - * - * @param lspaObject PCEP lspa Object. - * @param bandwidthObject PCEP bandwidth object. - * @param llMetricList list of PCEP metric objects. - * @param iroObject PCEP iro object. - */ - public PcepAttributeVer1(PcepLspaObject lspaObject, PcepBandwidthObject bandwidthObject, - LinkedList<PcepMetricObject> llMetricList, PcepIroObject iroObject) { - - this.lspaObject = lspaObject; - this.bandwidthObject = bandwidthObject; - this.llMetricList = llMetricList; - this.iroObject = iroObject; - if (lspaObject == null) { - this.isLspaObjectSet = false; - } else { - this.isLspaObjectSet = true; - } - if (bandwidthObject == null) { - this.isBandwidthObjectSet = false; - } else { - this.isBandwidthObjectSet = true; - } - if (llMetricList == null) { - this.isMetricListSet = false; - } else { - this.isMetricListSet = true; - } - if (iroObject == null) { - this.isIroObjectSet = false; - } else { - this.isIroObjectSet = true; - } - } - - /** - * constructor to initialize bandwidthObject. - * - * @param bandwidthObject bandwidth object - */ - public PcepAttributeVer1(PcepBandwidthObject bandwidthObject) { - this.isLspaObjectSet = false; - - this.bandwidthObject = bandwidthObject; - this.isBandwidthObjectSet = true; - - this.isMetricListSet = false; - - this.isIroObjectSet = false; - } - - /** - * Parse list for MeticObject. - * - * @param cb of type channel buffer - * @return true if parsing metric list is success - * @throws PcepParseException when a non metric object is received - */ - public boolean parseMetricList(ChannelBuffer cb) throws PcepParseException { - - if (llMetricList == null) { - llMetricList = new LinkedList<>(); - } - - PcepMetricObject metriclist; - - //caller should verify for metric object - byte yObjClass = PcepMetricObjectVer1.METRIC_OBJ_CLASS; - byte yObjType = PcepMetricObjectVer1.METRIC_OBJ_TYPE; - - while ((yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) - && (yObjType == PcepMetricObjectVer1.METRIC_OBJ_TYPE)) { - - metriclist = PcepMetricObjectVer1.read(cb); - llMetricList.add(metriclist); - yObjClass = 0; - yObjType = 0; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } - } - return true; - } - - /** - * Reads lspa , bandwidth , Metriclist and Iro objects and sets the objects. - * - * @param cb of type channel buffer - * @return instance of Pcep Attribute - * @throws PcepParseException while parsing Pcep Attributes from channel buffer - */ - - public static PcepAttribute read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return null; - } - //check whether any pcep attribute is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - if (PcepLspaObjectVer1.LSPA_OBJ_CLASS != yObjClass && PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS != yObjClass - && PcepMetricObjectVer1.METRIC_OBJ_CLASS != yObjClass && PcepIroObjectVer1.IRO_OBJ_CLASS != yObjClass) { - //No PCEP attribute is present - return null; - } - - PcepAttributeVer1 pcepAttribute = new PcepAttributeVer1(); - - //If LSPA present then store it.LSPA is optional - if (yObjClass == PcepLspaObjectVer1.LSPA_OBJ_CLASS) { - pcepAttribute.setLspaObject(PcepLspaObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If BANDWIDTH present then store it.BANDWIDTH is optional - if (yObjClass == PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS) { - pcepAttribute.setBandwidthObject(PcepBandwidthObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If Metric list present then store it.MetricList is optional - if (yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) { - pcepAttribute.parseMetricList(cb); - yObjClass = checkNextObject(cb); - } - - //If IRO present then store it.IRO is optional - if (yObjClass == PcepIroObjectVer1.IRO_OBJ_CLASS) { - pcepAttribute.setIroObject(PcepIroObjectVer1.read(cb)); - } - - PcepLspaObject lspaObject = pcepAttribute.getLspaObject(); - PcepBandwidthObject bandwidthObject = pcepAttribute.getBandwidthObject(); - LinkedList<PcepMetricObject> metriclist = pcepAttribute.llMetricList; - PcepIroObject iroObject = pcepAttribute.getIroObject(); - - return new PcepAttributeVer1(lspaObject, bandwidthObject, metriclist, iroObject); - } - - /** - * Checks whether there is a more object or not. - * - * @param cb of type channel buffer - * @return instance of object header - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - //PCEP LSPA object is optional - if (this.isLspaObjectSet) { - this.lspaObject.write(cb); - } - - //PCEP BANDWIDTH object is optional - if (this.isBandwidthObjectSet) { - this.bandwidthObject.write(cb); - } - - //PCEP Metric list is optional - if (this.isMetricListSet) { - ListIterator<PcepMetricObject> listIterator = this.llMetricList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - - //PCEP IRO object is optional - if (this.isIroObjectSet) { - this.iroObject.write(cb); - } - return cb.writerIndex() - iLenStartIndex; - } - - @Override - public PcepLspaObject getLspaObject() { - return lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return bandwidthObject; - } - - @Override - public LinkedList<PcepMetricObject> getMetricObjectList() { - return llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return iroObject; - } - - @Override - public void setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - } - - @Override - public void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - - } - - @Override - public void setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - } - - @Override - public void setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - } - - /** - * Builder class for PCEP attributes. - */ - public static class Builder implements PcepAttribute.Builder { - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP BANDWIDTH Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList<PcepMetricObject> llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - @Override - public PcepAttribute build() { - - //PCEP LSPA Object - PcepLspaObject lspaObject = null; - - //PCEP BANDWIDTH Object - PcepBandwidthObject bandwidthObject = null; - - //PCEP Metric list - LinkedList<PcepMetricObject> llMetricList = null; - - //PCEP IRO object - PcepIroObject iroObject = null; - - if (this.isLspaObjectSet) { - lspaObject = this.lspaObject; - } - if (this.isBandwidthObjectSet) { - bandwidthObject = this.bandwidthObject; - } - if (this.isMetricListSet) { - llMetricList = this.llMetricList; - } - if (this.isIroObjectSet) { - iroObject = this.iroObject; - } - return new PcepAttributeVer1(lspaObject, bandwidthObject, llMetricList, iroObject); - } - - @Override - public PcepLspaObject getLspaObject() { - return this.lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return this.bandwidthObject; - } - - @Override - public LinkedList<PcepMetricObject> getMetricObjectList() { - return this.llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return this.iroObject; - } - - @Override - public Builder setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - return this; - } - - @Override - public Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - return this; - } - - @Override - public Builder setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - return this; - } - - @Override - public Builder setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lspaObject", lspaObject) - .add("bandwidthObject", bandwidthObject) - .add("MetricObjectList", llMetricList) - .add("IroObject", iroObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java deleted file mode 100644 index 1c78d5b4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepBandwidthObject. - */ -public class PcepBandwidthObjectVer1 implements PcepBandwidthObject { - - /* - * RFC : 5440 , section : 7.7. - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Bandwidth | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The BANDWIDTH Object format - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepBandwidthObjectVer1.class); - /* - * Requested bandwidth: BANDWIDTH Object-Type is 1. - Bandwidth of an existing TE LSP for which a re-optimization is - requested. BANDWIDTH Object-Type is 2. - */ - //Right now handling type 1 - public static final byte BANDWIDTH_OBJ_TYPE = 1; - public static final byte BANDWIDTH_OBJ_CLASS = 5; - public static final byte BANDWIDTH_OBJECT_VERSION = 1; - public static final short BANDWIDTH_OBJ_MINIMUM_LENGTH = 8; - - static final PcepObjectHeader DEFAULT_BANDWIDTH_OBJECT_HEADER = new PcepObjectHeader(BANDWIDTH_OBJ_CLASS, - BANDWIDTH_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - BANDWIDTH_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader bandwidthObjHeader; - private int iBandwidth; - - /** - * Constructor to bandwidth object header and bandwidth. - * - * @param bandwidthObjHeader bandwidth object header - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(PcepObjectHeader bandwidthObjHeader, int iBandwidth) { - this.bandwidthObjHeader = bandwidthObjHeader; - this.iBandwidth = iBandwidth; - } - - /** - * Constructor to initialize bandwidth. - * - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(int iBandwidth) { - this.bandwidthObjHeader = DEFAULT_BANDWIDTH_OBJECT_HEADER; - this.iBandwidth = iBandwidth; - } - - /** - * Returns Object Header. - * - * @return bandwidthObjHeader - */ - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj bandwidth object header - */ - public void setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - } - - @Override - public int getBandwidth() { - return this.iBandwidth; - } - - @Override - public void setBandwidth(int iBandwidth) { - this.iBandwidth = iBandwidth; - } - - /** - * Reads from channel buffer and returns object of PcepBandwidthObject. - * - * @param cb channel buffer to parse - * @return object of PcepBandwidthObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepBandwidthObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader; - int iBandwidth; - - bandwidthObjHeader = PcepObjectHeader.read(cb); - iBandwidth = cb.readInt(); - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = bandwidthObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write bandwidth object header. Index " + objLenIndex); - } - - cb.writeInt(iBandwidth); - short hLength = (short) (cb.writerIndex() - objStartIndex); - cb.setShort(objLenIndex, hLength); - //will be helpful during print(). - bandwidthObjHeader.setObjLen(hLength); - - return cb.writerIndex() - objStartIndex; - } - - /** - * builder class for PCEP bandwidth object. - */ - public static class Builder implements PcepBandwidthObject.Builder { - - private PcepObjectHeader bandwidthObjHeader; - private boolean bIsHeaderSet = false; - - private int iBandwidth; - private boolean bIsBandwidthSet = false; - - private boolean bPFlag; - private boolean bIsPFlagSet = false; - - private boolean bIFlag; - private boolean bIsIFlagSet = false; - - @Override - public PcepBandwidthObject build() throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader = this.bIsHeaderSet ? this.bandwidthObjHeader - : DEFAULT_BANDWIDTH_OBJECT_HEADER; - - if (bIsPFlagSet) { - bandwidthObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - bandwidthObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsBandwidthSet) { - throw new PcepParseException("bandwidth not Set while building Bandwidth Object."); - } - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth); - } - - @Override - public int getBandwidth() { - return this.iBandwidth; - } - - @Override - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - @Override - public Builder setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - return this; - } - - @Override - public Builder setBandwidth(int iBandwidth) { - this.iBandwidth = iBandwidth; - this.bIsBandwidthSet = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("BandwidthObjectHeader", bandwidthObjHeader) - .add("Bandwidth", iBandwidth).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java deleted file mode 100644 index bcc679d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * 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.ver1; - -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.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Close Message. - */ -class PcepCloseMsgVer1 implements PcepCloseMsg { - - /* - * RFC : 5440 , section : 6.8 - * <Close Message> ::= <Common Header> <CLOSE> - * - 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 | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Reason | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepCloseMsgVer1.class); - - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.CLOSE; - public static final byte CLOSE_OBJ_TYPE = 1; - public static final byte CLOSE_OBJ_CLASS = 15; - public static final byte CLOSE_OBJECT_VERSION = 1; - public static final byte DEFAULT_REASON = 1; // Default reason to close - public static final short CLOSE_OBJ_MINIMUM_LENGTH = 8; - public static final int SHIFT_FLAG = 5; - static final PcepObjectHeader DEFAULT_CLOSE_HEADER = new PcepObjectHeader(CLOSE_OBJ_CLASS, CLOSE_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, CLOSE_OBJ_MINIMUM_LENGTH); - - private final PcepObjectHeader closeObjHeader; - private byte yReason; - private LinkedList<PcepValueType> llOptionalTlv; - - public static final PcepCloseMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading close message for channel buffer. - */ - static class Reader implements PcepMessageReader<PcepCloseMsg> { - PcepObjectHeader closeObjHeader; - byte yReason; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - @Override - public PcepCloseMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 7 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.CLOSE(7), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - closeObjHeader = PcepObjectHeader.read(cb); - // Reserved - cb.readShort(); - // Flags - cb.readByte(); - // Reason - yReason = cb.readByte(); - // parse optional TLV - llOptionalTlv = parseOptionalTlv(cb); - return new PcepCloseMsgVer1(closeObjHeader, yReason, llOptionalTlv); - } - } - - /** - * Parse the list of Optional Tlvs. - * - * @param cb channel buffer - * @return list of Optional Tlvs - * @throws PcepParseException when fails to parse optional tlvs - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - /* - rfc 5440: - Optional TLVs may be included within the CLOSE object body. The - specification of such TLVs is outside the scope of this document. - */ - return llOptionalTlv; - } - - /** - * constructor to initialize PCEP close Message with all the parameters. - * - * @param closeObjHeader object header for close message - * @param yReason reason for closing the channel - * @param llOptionalTlv list of optional tlvs - */ - PcepCloseMsgVer1(PcepObjectHeader closeObjHeader, byte yReason, LinkedList<PcepValueType> llOptionalTlv) { - - this.closeObjHeader = closeObjHeader; - this.yReason = yReason; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Builder class for PCEP close message. - */ - static class Builder implements PcepCloseMsg.Builder { - - // PCEP Close message fields - private boolean bIsHeaderSet = false; - private PcepObjectHeader closeObjHeader; - private boolean bIsReasonSet = false; - private byte yReason; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.CLOSE; - } - - @Override - public PcepCloseMsg build() { - - PcepObjectHeader closeObjHeader = this.bIsHeaderSet ? this.closeObjHeader : DEFAULT_CLOSE_HEADER; - byte yReason = this.bIsReasonSet ? this.yReason : DEFAULT_REASON; - - if (bIsPFlagSet) { - closeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - closeObjHeader.setIFlag(bIFlag); - } - return new PcepCloseMsgVer1(closeObjHeader, yReason, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getCloseObjHeader() { - return this.closeObjHeader; - } - - @Override - public Builder setCloseObjHeader(PcepObjectHeader obj) { - this.closeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public Builder setReason(byte value) { - this.yReason = value; - this.bIsReasonSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing close message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepCloseMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepCloseMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - int objStartIndex = cb.writerIndex(); - int objLenIndex = message.closeObjHeader.write(cb); - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write Close object header."); - } - // first 3 bits set to version - cb.writeShort(0); // Reserved - cb.writeByte(0); // Flags - cb.writeByte(message.yReason); - // Pack optional TLV - packOptionalTlv(cb, message); - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - // will be helpful during print(). - message.closeObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - // update message length field - length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - - public void packOptionalTlv(ChannelBuffer cb, PcepCloseMsgVer1 message) { - - LinkedList<PcepValueType> llOptionalTlv = message.llOptionalTlv; - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public void setReason(byte value) { - this.yReason = value; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("closeObjectHeader", closeObjHeader).add("Reason", yReason) - .add("OptionalTlvlist", llOptionalTlv).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java deleted file mode 100644 index 08dc0c9b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Endpoints Object. - */ -public class PcepEndPointsObjectVer1 implements PcepEndPointsObject { - - /* - * RFC : 5440 , section : 7.6 - * An End point is defined as follows: - END-POINTS Object-Class is 4. - - END-POINTS Object-Type is 1 for IPv4 and 2 for IPv6. - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepEndPointsObjectVer1.class); - - static final byte END_POINTS_OBJ_TYPE = 1; - static final byte END_POINTS_OBJ_CLASS = 4; - static final byte END_POINTS_OBJECT_VERSION = 1; - static final short END_POINTS_OBJ_MINIMUM_LENGTH = 12; - public static byte endPointObjType; - - static final PcepObjectHeader DEFAULT_END_POINTS_OBJECT_HEADER = new PcepObjectHeader(END_POINTS_OBJ_CLASS, - END_POINTS_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - END_POINTS_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader endPointsObjHeader; - public int sourceIpAddress; - public int destIpAddress; - - /** - * Constructor to initialize all variables. - * - * @param endPointsObjHeader end points object header - * @param sourceIpAddress source IP address - * @param destIpAddress destination IP address - */ - public PcepEndPointsObjectVer1(PcepObjectHeader endPointsObjHeader, int sourceIpAddress, int destIpAddress) { - - this.endPointsObjHeader = endPointsObjHeader; - this.sourceIpAddress = sourceIpAddress; - this.destIpAddress = destIpAddress; - } - - /** - * Sets End Points Object Header. - * - * @param obj of PcepObjectHeader - */ - public void setEndPointsObjHeader(PcepObjectHeader obj) { - this.endPointsObjHeader = obj; - } - - @Override - public void setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - } - - @Override - public void setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - /** - * Reads from channel buffer and returns object of PcepEndPointsObject. - * - * @param cb of channel buffer - * @return object of PcepEndPointsObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepEndPointsObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader endPointsObjHeader; - int sourceIpAddress; - int destIpAddress; - - endPointsObjHeader = PcepObjectHeader.read(cb); - if (endPointsObjHeader.getObjType() == END_POINTS_OBJ_TYPE - && endPointsObjHeader.getObjClass() == END_POINTS_OBJ_CLASS) { - sourceIpAddress = cb.readInt(); - destIpAddress = cb.readInt(); - } else { - throw new PcepParseException("Expected PcepEndPointsObject."); - } - return new PcepEndPointsObjectVer1(endPointsObjHeader, sourceIpAddress, destIpAddress); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - //write common header - int objLenIndex = endPointsObjHeader.write(cb); - - //write source IPv4 IP - cb.writeInt(sourceIpAddress); - //write destination IPv4 IP - cb.writeInt(destIpAddress); - - int length = cb.writerIndex() - objStartIndex; - //now write EndPoints Object Length - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - endPointsObjHeader.setObjLen((short) length); - - return cb.writerIndex(); - - } - - /** - * Builder class for PCEP end points objects. - */ - public static class Builder implements PcepEndPointsObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsSourceIpAddressset = false; - private boolean bIsDestIpAddressset = false; - private PcepObjectHeader endpointsObjHeader; - private int sourceIpAddress; - private int destIpAddress; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepEndPointsObject build() throws PcepParseException { - - PcepObjectHeader endpointsObjHeader = this.bIsHeaderSet ? this.endpointsObjHeader - : DEFAULT_END_POINTS_OBJECT_HEADER; - - if (bIsPFlagSet) { - endpointsObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - endpointsObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsSourceIpAddressset) { - throw new PcepParseException("SourceIpAddress not set while building EndPoints object"); - } - - if (!this.bIsDestIpAddressset) { - throw new PcepParseException("DestIpAddress not set while building EndPoints object"); - } - - return new PcepEndPointsObjectVer1(endpointsObjHeader, this.sourceIpAddress, this.destIpAddress); - } - - @Override - public PcepObjectHeader getEndPointsObjHeader() { - return this.endpointsObjHeader; - } - - @Override - public Builder setEndPointsObjHeader(PcepObjectHeader obj) { - this.endpointsObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public Builder setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - this.bIsSourceIpAddressset = true; - return this; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - @Override - public Builder setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - this.bIsDestIpAddressset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("sourceIpAddress", sourceIpAddress) - .add("destIpAddress", destIpAddress).toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java deleted file mode 100644 index 4d7cb16e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java +++ /dev/null @@ -1,407 +0,0 @@ -/* - * 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.ver1; - -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.PcepEroObject; -import org.onosproject.pcepio.types.AutonomousSystemTlv; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.IPv6SubObject; -import org.onosproject.pcepio.types.PathKeySubObject; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.SrEroSubObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Ero Object. - */ -public class PcepEroObjectVer1 implements PcepEroObject { - /* - * rfc3209 - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Subobjects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - If a Path message contains multiple EXPLICIT_ROUTE objects, only the - first object is meaningful. Subsequent EXPLICIT_ROUTE objects MAY be - ignored and SHOULD NOT be propagated. - - In current implementation, only strict hops are supported. So, - empty ERO with no sub-objects is considered illegal. - - Subobjects: - 0 1 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - |L| Type | Length | (Subobject contents) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - - L - - The L bit is an attribute of the subobject. The L bit is set - if the subobject represents a loose hop in the explicit route. - If the bit is not set, the subobject represents a strict hop in - the explicit route. - - Type - - The Type indicates the type of contents of the subobject. - - - Subobject 1: IPv4 address - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 2: IPv6 Prefix - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 3: Autonomous System Number - - The contents of an Autonomous System (AS) number subobject are a 2- - octet AS number. The abstract node represented by this subobject is - the set of nodes belonging to the autonomous system. - - The length of the AS number subobject is 4 octets. - - Subobject 4: PATH_KEY_32_BIT_SUB_OBJ_TYPE: - - Pathkey subobject(RFC 5520): - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | Path-Key | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PCE ID (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 5: SR_ERO_SUB_OBJ_TYPE: - - SR-ERO subobject: (draft-ietf-pce-segment-routing-00) - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | ST | Flags |F|S|C|M| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // NAI (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepEroObjectVer1.class); - - public static final byte ERO_OBJ_TYPE = 1; - public static final byte ERO_OBJ_CLASS = 7; - public static final byte ERO_OBJECT_VERSION = 1; - public static final short ERO_OBJ_MINIMUM_LENGTH = 12; - public static final byte IPV4_TYPE = 1; - public static final byte PATH_KEY_32_BIT_SUB_OBJ_TYPE = 64; - public static final int LABEL_SUB_OBJ_TYPE = 3; - public static final int SR_ERO_SUB_OBJ_TYPE = 96; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - static final PcepObjectHeader DEFAULT_ERO_OBJECT_HEADER = new PcepObjectHeader(ERO_OBJ_CLASS, ERO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, ERO_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader eroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * reset variables. - */ - public PcepEroObjectVer1() { - this.eroObjHeader = null; - this.llSubObjects = null; - } - - /** - * Constructor to initialize parameters of ERO object. - * - * @param eroObjHeader ERO object header - * @param llSubObjects list of sub objects. - */ - public PcepEroObjectVer1(PcepObjectHeader eroObjHeader, LinkedList<PcepValueType> llSubObjects) { - - this.eroObjHeader = eroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns ERO object header. - * - * @return eroObjHeader ERO object header - */ - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj ERO object header - */ - public void setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads from channel buffer and returns object of PcepEroObject. - * - * @param cb channel buffer. - * @return object of PcepEroObject - * @throws PcepParseException when ERO object is not present in channel buffer - */ - public static PcepEroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader eroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - eroObjHeader = PcepObjectHeader.read(cb); - - if (eroObjHeader.getObjClass() != PcepEroObjectVer1.ERO_OBJ_CLASS) { - log.debug("ErrorType:" + PcepErrorDetailInfo.ERROR_TYPE_6 + " ErrorValue:" - + PcepErrorDetailInfo.ERROR_VALUE_9); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_9); - } - - if (eroObjHeader.getObjLen() > OBJECT_HEADER_LENGTH) { - ChannelBuffer tempCb = cb.readBytes(eroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - } - return new PcepEroObjectVer1(eroObjHeader, llSubObjects); - } - - /** - * Parse list of Sub Objects. - * - * @param cb channel buffer - * @return list of Sub Objects - * @throws PcepParseException when fails to parse sub object list - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the TLV - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - case IPv6SubObject.TYPE: - byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH); - subObj = new IPv6SubObject(ipv6Value); - break; - case AutonomousSystemTlv.TYPE: - subObj = AutonomousSystemTlv.read(cb); - break; - case PathKeySubObject.TYPE: - subObj = PathKeySubObject.read(cb); - break; - case SrEroSubObject.TYPE: - subObj = SrEroSubObject.read(cb); - break; - default: - throw new PcepParseException("Unexpected sub object. Type: " + (int) yType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llSubObjects.add(subObj); - } - if (0 < cb.readableBytes()) { - throw new PcepParseException("Subobject parsing error. Extra bytes received."); - } - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = eroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write ERO object header. Index " + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - eroObjHeader.setObjLen((short) length); - - //As per RFC the length of object should be multiples of 4 - int pad = length % 4; - - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP ERO object. - */ - public static class Builder implements PcepEroObject.Builder { - - private boolean bIsHeaderSet = false; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private PcepObjectHeader eroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - @Override - public PcepEroObject build() { - - PcepObjectHeader eroObjHeader = this.bIsHeaderSet ? this.eroObjHeader : DEFAULT_ERO_OBJECT_HEADER; - - if (bIsPFlagSet) { - eroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - eroObjHeader.setIFlag(bIFlag); - } - - return new PcepEroObjectVer1(eroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - @Override - public Builder setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("EroObjHeader", eroObjHeader).add("SubObjects", llSubObjects) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java deleted file mode 100644 index 594e40c1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * 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.ver1; - -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.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Info. - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public class PcepErrorInfoVer1 implements PcepErrorInfo { - - protected static final Logger log = LoggerFactory.getLogger(PcepErrorInfoVer1.class); - //Error list is optional - private LinkedList<PcepError> errList; - - /** - * Constructor to add PCEP error object to the list. - * - * @param llRPObjList list of PCEP RP object - * @param llTEObjList list of PCEP TE object - * @param llErrObjList list of PCEP error object - */ - public PcepErrorInfoVer1(LinkedList<PcepRPObject> llRPObjList, LinkedList<PcepTEObject> llTEObjList, - LinkedList<PcepErrorObject> llErrObjList) { - this.errList = new LinkedList<>(); - if ((llErrObjList != null) && (!llErrObjList.isEmpty())) { - this.errList.add(new PcepErrorVer1(llRPObjList, llTEObjList, llErrObjList)); - } - } - - /** - * Constructor to initialize error info. - * - * @param errll linked list or pcep error - */ - public PcepErrorInfoVer1(LinkedList<PcepError> errll) { - this.errList = errll; - } - - @Override - public boolean isErrorInfoPresent() { - return !this.errList.isEmpty(); - } - - @Override - public void read(ChannelBuffer cb) throws PcepParseException { - PcepObjectHeader tempObjHeader; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - if ((yObjClass != PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjClass != PcepTEObjectVer1.TE_OBJ_CLASS) - && (yObjClass != PcepErrorObjectVer1.ERROR_OBJ_CLASS)) { - throw new PcepParseException("Unknown Object is present in PCEP-ERROR. Object Class: " + yObjClass); - } - - this.errList.add(PcepErrorVer1.read(cb)); - } - } - - @Override - public void write(ChannelBuffer cb) throws PcepParseException { - //write <error> - ListIterator<PcepError> listIterator = errList.listIterator(); - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - - //RP Object list is optional - LinkedList<PcepRPObject> llRPObjList = pcepError.getRPObjList(); - if (llRPObjList != null) { - ListIterator<PcepRPObject> rpListIterator = llRPObjList.listIterator(); - while (rpListIterator.hasNext()) { - rpListIterator.next().write(cb); - } - } - - //TE Object list is optional - LinkedList<PcepTEObject> llTEObjList = pcepError.getTEObjList(); - if (llTEObjList != null) { - ListIterator<PcepTEObject> teListIterator = llTEObjList.listIterator(); - while (teListIterator.hasNext()) { - teListIterator.next().write(cb); - } - } - - // <error-obj-list> is mandatory - boolean bIsErrorObjListFound = false; - - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObjListIterator.next().write(cb); - bIsErrorObjListFound = true; - } - } - - if (!bIsErrorObjListFound) { - throw new PcepParseException("<error-obj-list> is mandatory."); - } - } - } - - @Override - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> errorType = new LinkedList<>(); - ListIterator<PcepError> listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorType(); - errorType.add(error); - } - } - } - return errorType; - } - - @Override - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> errorValue = new LinkedList<>(); - ListIterator<PcepError> listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorValue(); - errorValue.add(error); - } - } - } - return errorValue; - } - - /** - * Builder class for PCEP error info. - */ - public static class Builder implements PcepErrorInfo.Builder { - private LinkedList<PcepError> errll; - - @Override - public PcepErrorInfo build() { - return new PcepErrorInfoVer1(errll); - } - - @Override - public LinkedList<PcepError> getPcepErrorList() { - return this.errll; - } - - @Override - public Builder setPcepErrorList(LinkedList<PcepError> errll) { - this.errll = errll; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ErrorList", errList).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java deleted file mode 100644 index 927d83d6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java +++ /dev/null @@ -1,383 +0,0 @@ -/* - * 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.ver1; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides PCEP Error Message. - */ -public class PcepErrorMsgVer1 implements PcepErrorMsg { - - /* - * PCE Error message format. - - <PCErr Message> ::= <Common Header> - ( <error-obj-list> [<Open>] ) | <error> - [<error-list>] - - <error-obj-list> ::=<PCEP-ERROR>[<error-obj-list>] - - <error> ::=[<request-id-list> | <te-id-list>] - <error-obj-list> - - <request-id-list> ::=<RP>[<request-id-list>] - - <te-id-list> ::=<TE>[<te-id-list>] - - <error-list> ::=<error>[<error-list>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class); - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.ERROR; - - //Below either one should be present. - private ErrorObjListWithOpen errObjListWithOpen; //optional ( <error-obj-list> [<Open>] ) - private PcepErrorInfo errInfo; //optional <error> [<error-list>] - - public static final PcepErrorMsgVer1.Reader READER = new Reader(); - - /** - * constructor to initialize variables. - */ - public PcepErrorMsgVer1() { - errObjListWithOpen = null; - errInfo = null; - } - - /** - * Constructor to initialize variables. - * - * @param errObjListWithOpen error-object-list with open object - * @param errInfo error information - */ - public PcepErrorMsgVer1(ErrorObjListWithOpen errObjListWithOpen, PcepErrorInfo errInfo) { - this.errObjListWithOpen = errObjListWithOpen; - this.errInfo = errInfo; - } - - /** - * Reader class for reading PCEP error Message from channel buffer. - */ - public static class Reader implements PcepMessageReader<PcepErrorMsg> { - - ErrorObjListWithOpen errObjListWithOpen; - PcepErrorInfo errInfo; - PcepObjectHeader tempObjHeader; - - @Override - public PcepErrorMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - errObjListWithOpen = null; - errInfo = null; - tempObjHeader = null; - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 1 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.ERROR(6), got=" + type); - } - int length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length); - } - - //parse <PCErr Message> - parsePCErrMsg(cb); - - // If other than RP or TE or PCEP-ERROR present then it is error. - if (0 < cb.readableBytes()) { - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - throw new PcepParseException("Unexpected Object found. Object Class : " + tempObjHeader.getObjClass()); - } - - return new PcepErrorMsgVer1(errObjListWithOpen, errInfo); - } - - /** - * Parsing PCErr Message. - * - * @param cb channel buffer. - * @throws PcepParseException if mandatory fields are missing - * output: this.errObjListWithOpen, this.errInfo - */ - public void parsePCErrMsg(ChannelBuffer cb) throws PcepParseException { - //If PCEP-ERROR list is followed by OPEN Object then store into ErrorObjListWithOpen. - // ( <error-obj-list> [<Open>] - //If PCEP-ERROR list is followed by RP or TE Object then store into errInfo. <error> [<error-list>] - //If only PCEP-ERROR list is present then store into ErrorObjListWithOpen. - PcepObjectHeader tempObjHeader; - LinkedList<PcepErrorObject> llErrObjList; - - if (0 >= cb.readableBytes()) { - throw new PcepParseException("PCEP-ERROR message came with empty objects."); - } - - //parse PCEP-ERROR list - llErrObjList = new LinkedList<>(); - tempObjHeader = parseErrorObjectList(llErrObjList, cb); - - //check whether OPEN-OBJECT is present. - if ((tempObjHeader != null) - && (tempObjHeader.getObjClass() == PcepOpenObjectVer1.OPEN_OBJ_CLASS)) { - - if (llErrObjList.isEmpty()) { - throw new PcepParseException("<error-obj-list> should be present if OPEN-OBJECT exists"); - } - - PcepOpenObject pcepOpenObj = PcepOpenObjectVer1.read(cb); - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList, pcepOpenObj); - - } else if ((tempObjHeader != null) //check whether RP or TE Object is present. - && ((tempObjHeader.getObjClass() == PcepRPObjectVer1.RP_OBJ_CLASS) - || (tempObjHeader.getObjClass() == PcepTEObjectVer1.TE_OBJ_CLASS))) { - - this.errInfo = new PcepErrorInfoVer1(null, null, llErrObjList); - this.errInfo.read(cb); - - } else if (!llErrObjList.isEmpty()) { - //If only PCEP-ERROR list is present then store it in errObjListWithOpen. - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - } - - /** - * Parse error-obj-list. - * - * @param llErrObjList error object list output - * @param cb channel buffer input - * @throws PcepParseException if mandatory fields are missing - * @return error object header - */ - public PcepObjectHeader parseErrorObjectList(LinkedList<PcepErrorObject> llErrObjList, ChannelBuffer cb) - throws PcepParseException { - PcepObjectHeader tempObjHeader = null; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - if (tempObjHeader.getObjClass() == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - llErrObjList.add(PcepErrorObjectVer1.read(cb)); - } else { - break; - } - } - return tempObjHeader; - } - } - - /** - * Builder class for PCEP error message. - */ - public static class Builder implements PcepErrorMsg.Builder { - // Pcep error message fields - - private ErrorObjListWithOpen errObjListWithOpen = null; //optional ( <error-obj-list> [<Open>] ) - private PcepErrorInfo errInfo = null; //optional <error> [<error-list>] - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.ERROR; - } - - @Override - public PcepErrorMsg build() { - return new PcepErrorMsgVer1(this.errObjListWithOpen, this.errInfo); - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - return this; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public Builder setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP error Message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepErrorMsgVer1> { - @Override - public void write(ChannelBuffer cb, PcepErrorMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - ErrorObjListWithOpen errObjListWithOpen = message.getErrorObjListWithOpen(); - PcepErrorInfo errInfo = message.getPcepErrorInfo(); - - // write ( <error-obj-list> [<Open>] ) if exists. - // otherwise write <error> [<error-list>] - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - errObjListWithOpen.write(cb); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - errInfo.write(cb); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - // PcepErrorMessage message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public void setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - } - - /** - * Return list of Error types. - * - * @return error types list - */ - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> llErrorType = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorType = errObjListWithOpen.getErrorType(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorType = errInfo.getErrorType(); - } - - return llErrorType; - } - - /** - * Return list of Error values. - * - * @return error value list - */ - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> llErrorValue = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorValue = errObjListWithOpen.getErrorValue(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorValue = errInfo.getErrorValue(); - } - - return llErrorValue; - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - toStrHelper.add("ErrorObjectListWithOpen", errObjListWithOpen); - } - if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - toStrHelper.add("ErrorInfo", errInfo); - } - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java deleted file mode 100644 index 48a337f4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * 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.ver1; - -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.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Object. - */ -public class PcepErrorObjectVer1 implements PcepErrorObject { - - /* - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Error-Type | Error-value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepErrorObjectVer1.class); - - public static final byte ERROR_OBJ_TYPE = 1; - public static final byte ERROR_OBJ_CLASS = 13; - public static final byte ERROR_OBJECT_VERSION = 1; - //ERROR_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ErrorObjectHeaderLen(4) - public static final short ERROR_OBJ_MINIMUM_LENGTH = 8; - public static final int OBJECT_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_ERROR_OBJECT_HEADER = new PcepObjectHeader(ERROR_OBJ_CLASS, - ERROR_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - ERROR_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader errorObjHeader; - private byte yErrorType; - private byte yErrorValue; - private LinkedList<PcepValueType> llOptionalTlv; // Optional TLV - - /** - * Constructor to initialize variables. - * - * @param errorObjHeader ERROR Object header - * @param yErrorType Error Type - * @param yErrorValue Error Value - * @param llOptionalTlv list of optional TLV - */ - - public PcepErrorObjectVer1(PcepObjectHeader errorObjHeader, byte yErrorType, byte yErrorValue, - LinkedList<PcepValueType> llOptionalTlv) { - this.errorObjHeader = errorObjHeader; - this.yErrorType = yErrorType; - this.yErrorValue = yErrorValue; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * sets Object Header. - * - * @param obj Error-Object header - */ - public void setLspObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - } - - @Override - public void setErrorType(byte yErrorType) { - this.yErrorType = yErrorType; - } - - @Override - public void setErrorValue(byte yErrorValue) { - this.yErrorValue = yErrorValue; - } - - /** - * returns object header. - * - * @return errorObjHeader Error-Object header - */ - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public int getErrorType() { - return this.yErrorType; - } - - @Override - public byte getErrorValue() { - return this.yErrorValue; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from channel buffer and returns object of PcepErrorObject. - * - * @param cb of channel buffer. - * @return object of PCEP-ERROR-OBJECT - */ - public static PcepErrorObject read(ChannelBuffer cb) { - - PcepObjectHeader errorObjHeader; - byte yErrorType; - byte yErrorValue; - LinkedList<PcepValueType> llOptionalTlv; - - errorObjHeader = PcepObjectHeader.read(cb); - - //take only ErrorObject buffer. - ChannelBuffer tempCb = cb.readBytes(errorObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - tempCb.readByte(); //ignore Reserved - tempCb.readByte(); //ignore Flags - yErrorType = tempCb.readByte(); - yErrorValue = tempCb.readByte(); - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepErrorObjectVer1(errorObjHeader, yErrorType, yErrorValue, llOptionalTlv); - } - - /** - * returns Linked list of optional tlvs. - * - * @param cb channel buffer. - * @return Linked list of optional tlvs - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - byte[] yTemp = new byte[cb.readableBytes()]; - cb.readBytes(yTemp); - - return llOutOptionalTlv; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = errorObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("While writing Error Object Header."); - } - - //write Reserved - cb.writeByte(0); - //write Flags - cb.writeByte(0); - //write ErrorType and ErrorValue - cb.writeByte(this.yErrorType); - cb.writeByte(this.yErrorValue); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - errorObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - cb.setShort(objLenIndex, (short) length); - return length; - } - - /** - * Pack the Optional tlvs. - * - * @param cb channel buffer. - * @return writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - int startIndex = cb.writerIndex(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCEP error object. - */ - public static class Builder implements PcepErrorObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader errorObjHeader; - private byte yErrorType; - private byte yErrorValue; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - @Override - public PcepErrorObject build() { - - PcepObjectHeader errorObjHeader = this.bIsHeaderSet ? this.errorObjHeader : DEFAULT_ERROR_OBJECT_HEADER; - - if (bIsPFlagSet) { - errorObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - errorObjHeader.setIFlag(bIFlag); - } - - return new PcepErrorObjectVer1(errorObjHeader, yErrorType, yErrorValue, llOptionalTlv); - } - - @Override - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public Builder setErrorObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getErrorType() { - return this.yErrorType; - } - - @Override - public Builder setErrorType(byte value) { - this.yErrorType = value; - return this; - } - - @Override - public byte getErrorValue() { - return this.yErrorValue; - } - - @Override - public Builder setErrorValue(byte value) { - this.yErrorValue = value; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", errorObjHeader).add("ErrorType", yErrorType) - .add("ErrorValue", yErrorValue).add("OptionalTlv", llOptionalTlv).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java deleted file mode 100644 index 0ea51410..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java +++ /dev/null @@ -1,399 +0,0 @@ -/* - * 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.ver1; - -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.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepError list which contains RP or TE objects. - * Reference:PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public class PcepErrorVer1 implements PcepError { - - /* - <error>::=[<request-id-list> | <te-id-list>] - <error-obj-list> - - <request-id-list>::=<RP>[<request-id-list>] - - <te-id-list>::=<TE>[<te-id-list>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepErrorVer1.class); - - private boolean isErroInfoSet; - //PcepErrorObject list - private LinkedList<PcepErrorObject> llErrObjList; - //PcepRPObject list - private LinkedList<PcepRPObject> llRPObjList; - //PcepTEObject list - private LinkedList<PcepTEObject> llTEObjList; - private boolean isTEObjListSet; - - public static final int OBJECT_HEADER_LENGTH = 4; - - /** - * Constructor to initialize variable. - */ - public PcepErrorVer1() { - this.llRPObjList = null; - this.llTEObjList = null; - this.llErrObjList = null; - } - - /** - * Constructor to initialize variable. - * - * @param llRPObjList list of PcepRPObject - * @param llTEObjList list of PcepTEObject - * @param llErrObjListObjList list of PcepErrorObject - */ - public PcepErrorVer1(LinkedList<PcepRPObject> llRPObjList, LinkedList<PcepTEObject> llTEObjList, - LinkedList<PcepErrorObject> llErrObjListObjList) { - this.llRPObjList = llRPObjList; - this.llTEObjList = llTEObjList; - this.llErrObjList = llErrObjListObjList; - } - - /** - * Constructor to initialize PcepError. - * - * @param llErrObjList list of PcepErrorObject - */ - public PcepErrorVer1(LinkedList<PcepErrorObject> llErrObjList) { - this.llRPObjList = null; - this.llTEObjList = null; - this.llErrObjList = llErrObjList; - } - - @Override - public LinkedList<PcepRPObject> getRPObjList() { - return this.llRPObjList; - } - - @Override - public LinkedList<PcepTEObject> getTEObjList() { - return this.llTEObjList; - } - - @Override - public LinkedList<PcepErrorObject> getErrorObjList() { - return this.llErrObjList; - } - - /** - * Parse RP List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseRPList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - llRPObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find RP Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepRPObject rpObj; - while ((yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjType == PcepRPObjectVer1.RP_OBJ_TYPE)) { - rpObj = PcepRPObjectVer1.read(cb); - llRPObjList.add(rpObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * Parse TE List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseTEList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - llTEObjList = new LinkedList<>(); - - // caller should verify for TE object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find TE Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepTEObject teObj; - while ((yObjClass == PcepTEObjectVer1.TE_OBJ_CLASS) && ((yObjType == PcepTEObjectVer1.TE_OBJ_TYPE_NODE_VALUE) - || (yObjType == PcepTEObjectVer1.TE_OBJ_TYPE_LINK_VALUE))) { - teObj = PcepTEObjectVer1.read(cb); - llTEObjList.add(teObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * parseErrObjList from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseErrObjList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - boolean bIsErrorObjFound = false; - - llErrObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unable to find PCEP-ERROR Object"); - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepErrorObject errorObject; - while ((yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) && (yObjType == PcepErrorObjectVer1.ERROR_OBJ_TYPE)) { - errorObject = PcepErrorObjectVer1.read(cb); - llErrObjList.add(errorObject); - bIsErrorObjFound = true; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - - if (!bIsErrorObjFound) { - throw new PcepParseException("At least one PCEP-ERROR Object should be present."); - } - } - - /** - * Reads the byte stream of PcepError from channel buffer. - * - * @param cb of type channel buffer - * @return PcepError error part of PCEP-ERROR - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepErrorVer1 read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unknown Object"); - } - - PcepErrorVer1 pcepError = new PcepErrorVer1(); - // check whether any PCEP Error Info is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - //If RPlist present then store it.RPList and TEList are optional - if (yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) { - log.debug("RP_LIST"); - pcepError.parseRPList(cb); - yObjClass = checkNextObject(cb); - } else if (yObjClass == PcepTEObjectVer1.TE_OBJ_CLASS) { - log.debug("TE_LIST"); - pcepError.parseTEList(cb); - yObjClass = checkNextObject(cb); - } - - if (yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - log.debug("PCEP-ERROR obj list"); - pcepError.parseErrObjList(cb); - yObjClass = checkNextObject(cb); - } - - return pcepError; - } - - /** - * Checks Next Object. - * - * @param cb of type channel buffer. - * @return object type class. - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - /** - * Writes the byte stream of PCEP error to the channel buffer. - * - * @param cb of type channel buffer - * @return object length index - * @throws PcepParseException if mandatory fields are missing - */ - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - - // RPlist is optional - if (this.isErroInfoSet) { - ListIterator<PcepRPObject> rpObjlistIterator = this.llRPObjList.listIterator(); - while (rpObjlistIterator.hasNext()) { - rpObjlistIterator.next().write(cb); - } - } - - // TElist is optional - if (this.isTEObjListSet) { - ListIterator<PcepTEObject> teObjlistIterator = this.llTEObjList.listIterator(); - while (teObjlistIterator.hasNext()) { - teObjlistIterator.next().write(cb); - } - } - //ErrList is mandatory - ListIterator<PcepErrorObject> errlistIterator = this.llErrObjList.listIterator(); - while (errlistIterator.hasNext()) { - errlistIterator.next().write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Builder for error part of PCEP-ERROR. - */ - public static class Builder implements PcepError.Builder { - - private LinkedList<PcepRPObject> llRPObjList; - private LinkedList<PcepTEObject> llTEObjList; - private LinkedList<PcepErrorObject> llErrObjList; - - @Override - public PcepError build() { - return new PcepErrorVer1(llRPObjList, llTEObjList, llErrObjList); - } - - @Override - public LinkedList<PcepRPObject> getRPObjList() { - return this.llRPObjList; - } - - @Override - public Builder setRPObjList(LinkedList<PcepRPObject> llRPObjList) { - this.llRPObjList = llRPObjList; - return this; - } - - @Override - public LinkedList<PcepTEObject> getTEObjList() { - return this.llTEObjList; - } - - @Override - public Builder setTEObjList(LinkedList<PcepTEObject> llTEObjList) { - this.llTEObjList = llTEObjList; - return this; - } - - @Override - public LinkedList<PcepErrorObject> getErrorObjList() { - return this.llErrObjList; - } - - @Override - public Builder setErrorObjList(LinkedList<PcepErrorObject> llErrObjList) { - this.llErrObjList = llErrObjList; - return this; - } - - } - - @Override - public void setRPObjList(LinkedList<PcepRPObject> llRPObjList) { - this.llRPObjList = llRPObjList; - } - - @Override - public void setTEObjList(LinkedList<PcepTEObject> llTEObjList) { - this.llTEObjList = llTEObjList; - } - - @Override - public void setErrorObjList(LinkedList<PcepErrorObject> llErrObjList) { - this.llErrObjList = llErrObjList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("RpObjectList", llRPObjList) - .add("TeObjectList", llTEObjList) - .add("ErrorObjectList", llErrObjList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java deleted file mode 100644 index 6b5d450a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * 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.ver1; - -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepReportMsg; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.protocol.PcepUpdateMsg; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Provides PCEP Factory and returns builder classes for all objects and messages. - */ -public class PcepFactoryVer1 implements PcepFactory { - - public static final PcepFactoryVer1 INSTANCE = new PcepFactoryVer1(); - - @Override - public PcepOpenMsg.Builder buildOpenMsg() { - return new PcepOpenMsgVer1.Builder(); - } - - @Override - public PcepOpenObject.Builder buildOpenObject() { - return new PcepOpenObjectVer1.Builder(); - } - - @Override - public PcepKeepaliveMsg.Builder buildKeepaliveMsg() { - return new PcepKeepaliveMsgVer1.Builder(); - } - - @Override - public PcepCloseMsg.Builder buildCloseMsg() { - return new PcepCloseMsgVer1.Builder(); - } - - @Override - public PcepUpdateMsg.Builder buildUpdateMsg() { - return new PcepUpdateMsgVer1.Builder(); - } - - @Override - public PcepReportMsg.Builder buildReportMsg() { - return new PcepReportMsgVer1.Builder(); - } - - @Override - public PcepInitiateMsg.Builder buildPcepInitiateMsg() { - return new PcepInitiateMsgVer1.Builder(); - } - - @Override - public PcepLspObject.Builder buildLspObject() { - return new PcepLspObjectVer1.Builder(); - } - - @Override - public PcepMessageReader<PcepMessage> getReader() { - return PcepMessageVer1.READER; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepSrpObject.Builder buildSrpObject() { - return new PcepSrpObjectVer1.Builder(); - } - - @Override - public PcepEndPointsObject.Builder buildEndPointsObject() { - return new PcepEndPointsObjectVer1.Builder(); - } - - @Override - public PcepEroObject.Builder buildEroObject() { - return new PcepEroObjectVer1.Builder(); - } - - @Override - public PcepRroObject.Builder buildRroObject() { - return new PcepRroObjectVer1.Builder(); - } - - @Override - public PcepLspaObject.Builder buildLspaObject() { - return new PcepLspaObjectVer1.Builder(); - } - - @Override - public PcepIroObject.Builder buildIroObject() { - return new PcepIroObjectVer1.Builder(); - } - - @Override - public PcepMetricObject.Builder buildMetricObject() { - return new PcepMetricObjectVer1.Builder(); - } - - @Override - public PcepBandwidthObject.Builder buildBandwidthObject() { - return new PcepBandwidthObjectVer1.Builder(); - } - - @Override - public PcepMsgPath.Builder buildPcepMsgPath() { - return new PcepMsgPathVer1.Builder(); - } - - @Override - public PcepStateReport.Builder buildPcepStateReport() { - return new PcepStateReportVer1.Builder(); - } - - @Override - public PcepUpdateRequest.Builder buildPcepUpdateRequest() { - return new PcepUpdateRequestVer1.Builder(); - } - - @Override - public PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest() { - return new PcInitiatedLspRequestVer1.Builder(); - } - - @Override - public PcepAttribute.Builder buildPcepAttribute() { - return new PcepAttributeVer1.Builder(); - } - - @Override - public PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg() { - return new PcepLabelUpdateMsgVer1.Builder(); - } - - @Override - public PcepLabelUpdate.Builder buildPcepLabelUpdateObject() { - return new PcepLabelUpdateVer1.Builder(); - } - - @Override - public PcepLabelObject.Builder buildLabelObject() { - return new PcepLabelObjectVer1.Builder(); - } - - @Override - public PcepErrorMsg.Builder buildPcepErrorMsg() { - return new PcepErrorMsgVer1.Builder(); - } - - @Override - public PcepErrorObject.Builder buildPcepErrorObject() { - return new PcepErrorObjectVer1.Builder(); - } - - @Override - public PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency() { - return new PcepFecObjectIPv4AdjacencyVer1.Builder(); - } - - @Override - public PcepErrorInfo.Builder buildPcepErrorInfo() { - return new PcepErrorInfoVer1.Builder(); - } - - @Override - public PcepError.Builder buildPcepError() { - return new PcepErrorVer1.Builder(); - } - - @Override - public PcepLabelRangeObject.Builder buildPcepLabelRangeObject() { - return new PcepLabelRangeObjectVer1.Builder(); - } - - @Override - public PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg() { - return new PcepLabelRangeResvMsgVer1.Builder(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java deleted file mode 100644 index 51c672d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP fec Object IPv4 Adjacency object. - */ -public class PcepFecObjectIPv4AdjacencyVer1 implements PcepFecObjectIPv4Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 3 IPv4 Adjacency - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 3; - public static final byte FEC_OBJ_CLASS = 36; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localIPv4Address; - private int remoteIPv4Address; - - /** - * Constructor to initialize parameters for PCEP fec object . - * - * @param fecObjHeader FEC Object header - * @param localIPv4Address Local IPv4 Address - * @param remoteIPv4Address Remote IPv4 Address - */ - public PcepFecObjectIPv4AdjacencyVer1(PcepObjectHeader fecObjHeader, int localIPv4Address, int remoteIPv4Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv4Address = localIPv4Address; - this.remoteIPv4Address = remoteIPv4Address; - } - - /** - * Sets Object header. - * - * @param obj Pcep fec Object Header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public void seLocalIPv4Address(int value) { - this.localIPv4Address = value; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public void seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - } - - /** - * Reads from channel buffer and Returns object of PcepFecObjectIPv4Adjacency. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv4Adjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localIPv4Address = tempCb.readInt(); - remoteIPv4Address = tempCb.readInt(); - - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, localIPv4Address, remoteIPv4Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localIPv4Address); - cb.writeInt(remoteIPv4Address); - - //Now write FEC IPv4 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv4 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv4Addressset = false; - private boolean bIsRemoteIPv4Addressset = false; - - private PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv4Addressset) { - throw new PcepParseException( - "Local IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (!this.bIsRemoteIPv4Addressset) { - throw new PcepParseException( - " Remote IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, this.localIPv4Address, this.remoteIPv4Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public Builder seLocalIPv4Address(int value) { - this.localIPv4Address = value; - this.bIsLocalIPv4Addressset = true; - return this; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public Builder seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - this.bIsRemoteIPv4Addressset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("localIPv4Address", localIPv4Address) - .add("remoteIPv4Address", remoteIPv4Address).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java deleted file mode 100644 index f2f54cda..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4UnnumberedAdjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 Unnumbered Adjacency object. - */ -public class PcepFecObjectIPv4UnnumberedAdjacencyVer1 implements PcepFecObjectIPv4UnnumberedAdjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 5, Unnumbered Adjacency with IPv4 NodeIDs - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4UnnumberedAdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 5; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - /** - * Constructor to initialize parameter for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localNodeID local node ID - * @param localInterfaceID local interface ID - * @param remoteNodeID remote node ID - * @param remoteInterfaceID remote interface ID - */ - public PcepFecObjectIPv4UnnumberedAdjacencyVer1(PcepObjectHeader fecObjHeader, int localNodeID, - int localInterfaceID, int remoteNodeID, int remoteInterfaceID) { - this.fecObjHeader = fecObjHeader; - this.localNodeID = localNodeID; - this.localInterfaceID = localInterfaceID; - this.remoteNodeID = remoteNodeID; - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setLocalNodeID(int localNodeID) { - this.localNodeID = localNodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public void setLocalInterfaceID(int localInterfaceID) { - this.localInterfaceID = localInterfaceID; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public void setRemoteNodeID(int remoteNodeID) { - this.remoteNodeID = remoteNodeID; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public void setRemoteInterfaceID(int remoteInterfaceID) { - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4UnnumberedAdjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4UnnumberedAdjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4UnnumberedAdjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localNodeID; - int localInterfaceID; - int remoteNodeID; - int remoteInterfaceID; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Unnumbered Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localNodeID = tempCb.readInt(); - localInterfaceID = tempCb.readInt(); - remoteNodeID = tempCb.readInt(); - remoteInterfaceID = tempCb.readInt(); - - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, localNodeID, localInterfaceID, remoteNodeID, - remoteInterfaceID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localNodeID); - cb.writeInt(localInterfaceID); - cb.writeInt(remoteNodeID); - cb.writeInt(remoteInterfaceID); - - //Now write FEC IPv4 Unnumbered Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - - return cb.writerIndex(); - } - - /** - * Builder class for PCEP Fec object IPv4 unnumbered Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4UnnumberedAdjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalNodeIDset = false; - private boolean bIsLocalInterfaceIDset = false; - private boolean bIsRemoteNodeIDset = false; - private boolean bIsRemoteInterfaceIDset = false; - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalNodeIDset) { - throw new PcepParseException( - " Local Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsLocalInterfaceIDset) { - throw new PcepParseException( - " Local Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteNodeIDset) { - throw new PcepParseException( - " Remote Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteInterfaceIDset) { - throw new PcepParseException( - " Remote Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, this.localNodeID, this.localInterfaceID, - this.remoteNodeID, this.remoteInterfaceID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public Builder setLocalNodeID(int value) { - this.localNodeID = value; - this.bIsLocalNodeIDset = true; - return this; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public Builder setLocalInterfaceID(int value) { - this.localInterfaceID = value; - this.bIsLocalInterfaceIDset = true; - return this; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public Builder setRemoteNodeID(int value) { - this.remoteNodeID = value; - this.bIsRemoteNodeIDset = true; - return this; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public Builder setRemoteInterfaceID(int value) { - this.remoteInterfaceID = value; - this.bIsRemoteInterfaceIDset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LocalNodeID: ", localNodeID) - .add("LocalInterfaceID: ", localInterfaceID).add("RemoteNodeID: ", remoteNodeID) - .add("RemoteInterfaceID: ", remoteInterfaceID).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java deleted file mode 100644 index 354547a1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 object. - */ -public class PcepFecObjectIPv4Ver1 implements PcepFecObjectIPv4 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Node ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 1 IPv4 Node ID - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4Ver1.class); - - public static final byte FEC_OBJ_TYPE = 1; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 8; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param nodeID node id - */ - public PcepFecObjectIPv4Ver1(PcepObjectHeader fecObjHeader, int nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(int nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int nodeID; - fecObjHeader = PcepObjectHeader.read(cb); - nodeID = cb.readInt(); - return new PcepFecObjectIPv4Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec pobject IPv4. - */ - public static class Builder implements PcepFecObjectIPv4.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException("NodeID not set while building PcepFecObjectIPv4 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(int value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("nodeID: ", nodeID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java deleted file mode 100644 index f8ea7869..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 Adjacency object. - */ -public class PcepFecObjectIPv6AdjacencyVer1 implements PcepFecObjectIPv6Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Local IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Remote IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 4 IPv6 Adjacency - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 4; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 36; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - private byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localIPv6Address local IPv6 address - * @param remoteIPv6Address remote IPv6 address - */ - public PcepFecObjectIPv6AdjacencyVer1(PcepObjectHeader fecObjHeader, byte[] localIPv6Address, - byte[] remoteIPv6Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv6Address = localIPv6Address; - this.remoteIPv6Address = remoteIPv6Address; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public void seLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public void seRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - } - - /** - * Reads channel buffer and Returns object of PcepFecObjectIPv6Adjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv6Adjacency - * @throws PcepParseException when fails tp read from channel buffer - */ - public static PcepFecObjectIPv6Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(localIPv6Address, 0, IPV6_ADDRESS_LENGTH); - cb.readBytes(remoteIPv6Address, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, localIPv6Address, remoteIPv6Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(localIPv6Address); - cb.writeBytes(remoteIPv6Address); - //now write FEC IPv6 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv6Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv6Addressset = false; - private boolean bIsRemoteIPv6Addressset = false; - - private PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv6Addressset) { - throw new PcepParseException( - "Local IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (!this.bIsRemoteIPv6Addressset) { - throw new PcepParseException( - "Remote IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, this.localIPv6Address, this.remoteIPv6Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public Builder setLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - this.bIsLocalIPv6Addressset = true; - return this; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public Builder setRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - this.bIsRemoteIPv6Addressset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPv6Address", localIPv6Address) - .add("remoteIPv6Address: ", remoteIPv6Address) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java deleted file mode 100644 index 240a96f7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 object. - */ -public class PcepFecObjectIPv6Ver1 implements PcepFecObjectIPv6 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // IPv6 Node ID (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 2 IPv6 Node ID - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6Ver1.class); - - public static final byte FEC_OBJ_TYPE = 2; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader Fec object header - * @param nodeID node ID - */ - public PcepFecObjectIPv6Ver1(PcepObjectHeader fecObjHeader, byte[] nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object header. - * - * @param obj object header - */ - public void setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(byte[] nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns object header. - * - * @return fec Object Header - */ - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - /** - * reads the channel buffer and returns object of PcepFecObjectIPv6. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv6 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv6 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(nodeID, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6. - */ - public static class Builder implements PcepFecObjectIPv6.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException(" NodeID not set while building PcepFecObjectIPv6 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(byte[] value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("NodeID: ", nodeID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java deleted file mode 100644 index 60d14b07..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * 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.ver1; - -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.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP initiate message. - */ -class PcepInitiateMsgVer1 implements PcepInitiateMsg { - - protected static final Logger log = LoggerFactory.getLogger(PcepInitiateMsgVer1.class); - - // Ref : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03, section 5.1 - /* <PCInitiate Message> ::= <Common Header> - * <PCE-initiated-lsp-list> - * Where: - * <PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>[<PCE-initiated-lsp-list>] - * <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>) - * <PCE-initiated-lsp-instantiation> ::= <SRP> - * <LSP> - * <END-POINTS> - * <ERO> - * [<attribute-list>] - * <PCE-initiated-lsp-deletion> ::= <SRP> - * <LSP> - */ - - static final byte PACKET_VERSION = 1; - /* considering LspDelete Request PcInitiate msg will contain - * common header - * srp object - * lsp object - * so min length for this can be - * PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+SrpObjectMinLen(12)+LspObjectMinLen(8) - */ - public static final short PACKET_MINIMUM_LENGTH = 24; - public static final short MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.INITIATE; - private LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - public static final PcepInitiateMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading of Pcep initiate message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepInitiateMsg> { - - LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - - @Override - public PcepInitiateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - llPcInitiatedLspRequestList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), received=" + version); - } - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.INITIATE(12), recived=" + type); - } - short length = cb.readShort(); - - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Initiate message length expected to be >= " - + PACKET_MINIMUM_LENGTH + ", but received=" + length); - } - - log.debug("reading PcInitiate message of length " + length); - - // parse Start initiate/deletion list - if (!parsePcInitiatedLspRequestList(cb)) { - throw new PcepParseException("Parsing PCE-initiated-lsp-Request-list failed"); - } - - return new PcepInitiateMsgVer1(llPcInitiatedLspRequestList); - } - - /** - * To parse PcInitiatedLspRequestList from PcInitiate Message. - * - * @param cb of type channel buffer - * @return true if parsing PcInitiatedLspRequestList is success, false otherwise - * @throws PcepParseException while parsing from channel buffer - */ - public boolean parsePcInitiatedLspRequestList(ChannelBuffer cb) throws PcepParseException { - - boolean isDelLspRequest = false; - - if (cb == null) { - throw new PcepParseException("Channel buffer is empty"); - } - - while (0 < cb.readableBytes()) { - PcInitiatedLspRequest pceInitLspReq = new PcInitiatedLspRequestVer1(); - - //store SRP object - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pceInitLspReq.setSrpObject(srpObj); - isDelLspRequest = srpObj.getRFlag(); - - //store LSP object - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pceInitLspReq.setLspObject(lspObj); - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - if (!isDelLspRequest) { - - //store EndPoint object - PcepEndPointsObject endPointObj; - endPointObj = PcepEndPointsObjectVer1.read(cb); - pceInitLspReq.setEndPointsObject(endPointObj); - - //store ERO object - PcepEroObject eroObj; - eroObj = PcepEroObjectVer1.read(cb); - pceInitLspReq.setEroObject(eroObj); - - if (cb.readableBytes() > MINIMUM_COMMON_HEADER_LENGTH) { - pceInitLspReq.setPcepAttribute(PcepAttributeVer1.read(cb)); - } - } - llPcInitiatedLspRequestList.add(pceInitLspReq); - } - return true; - } - } - - /** - * Constructor to initialize PcInitiatedLspRequest. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequest - */ - PcepInitiateMsgVer1(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList) { - - if (llPcInitiatedLspRequestList == null) { - throw new NullPointerException("PcInitiatedLspRequestList cannot be null."); - } - this.llPcInitiatedLspRequestList = llPcInitiatedLspRequestList; - } - - /** - * Builder class for PCEP initiate message. - */ - static class Builder implements PcepInitiateMsg.Builder { - - // Pcep initiate message fields - LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.INITIATE; - } - - @Override - public PcepInitiateMsg build() { - return new PcepInitiateMsgVer1(this.llPcInitiatedLspRequestList); - } - - @Override - public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) { - this.llPcInitiatedLspRequestList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing pcep initiate message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepInitiateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepInitiateMsgVer1 message) throws PcepParseException { - - boolean isDelLspRequest = false; - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - - ListIterator<PcInitiatedLspRequest> listIterator = message.llPcInitiatedLspRequestList.listIterator(); - - while (listIterator.hasNext()) { - - PcInitiatedLspRequest listReq = listIterator.next(); - - //Srp Object is mandatory - PcepSrpObject srpObj = listReq.getSrpObject(); - if (srpObj != null) { - isDelLspRequest = srpObj.getRFlag(); - srpObj.write(cb); - } else { - throw new PcepParseException("SRP Object is mandatory for PcInitiate message."); - } - - //LSP Object is mandatory - PcepLspObject lspObj = listReq.getLspObject(); - if (lspObj != null) { - lspObj.write(cb); - } else { - throw new PcepParseException("LSP Object is mandatory for PcInitiate message."); - } - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - - if (!isDelLspRequest) { - - //EndPoints object is mandatory - PcepEndPointsObject endPointObj = listReq.getEndPointsObject(); - if (endPointObj != null) { - endPointObj.write(cb); - } else { - throw new PcepParseException("End points Object is mandatory for PcInitiate message."); - } - - //Ero object is mandatory - PcepEroObject eroObj = listReq.getEroObject(); - if (eroObj != null) { - eroObj.write(cb); - } else { - throw new PcepParseException("ERO Object is mandatory for PcInitiate message."); - } - - //PcepAttribute is optional - PcepAttribute pcepAttribute = listReq.getPcepAttribute(); - if (pcepAttribute != null) { - pcepAttribute.write(cb); - } - } - } - - // PCInitiate message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) { - this.llPcInitiatedLspRequestList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcInitiaitedLspRequestList", llPcInitiatedLspRequestList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java deleted file mode 100644 index 5130d9e9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepInterLayerObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP inter layer object. - */ -public class PcepInterLayerObjectVer1 implements PcepInterLayerObject { - - /* - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved |N|I| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepInterLayerObjectVer1.class); - - public static final byte INTER_LAYER_OBJ_TYPE = 1; - public static final byte INTER_LAYER_OBJ_CLASS = 18; - public static final byte INTER_LAYER_OBJECT_VERSION = 1; - public static final short INTER_LAYER_OBJ_MINIMUM_LENGTH = 8; - public static final boolean DEFAULT_IFLAG = false; - public static final boolean DEFAULT_NFLAG = false; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int NFLAG_SHIFT_VALUE = 0x02; - public static final int IFLAG_SHIFT_VALUE = 0x01; - - static final PcepObjectHeader DEFAULT_INTER_LAYER_OBJECT_HEADER = new PcepObjectHeader(INTER_LAYER_OBJ_CLASS, - INTER_LAYER_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - INTER_LAYER_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - /** - * Constructor to initialize all parameters for Pcep Inter Layer Object. - * - * @param interLayerObjHeader inter layer object header - * @param bNFlag N flag - * @param bIFlag I flag - */ - public PcepInterLayerObjectVer1(PcepObjectHeader interLayerObjHeader, boolean bNFlag, boolean bIFlag) { - - this.interLayerObjHeader = interLayerObjHeader; - this.bNFlag = bNFlag; - this.bIFlag = bIFlag; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - } - - @Override - public void setbNFlag(boolean bNFlag) { - this.bNFlag = bNFlag; - } - - @Override - public void setbIFlag(boolean bIFlag) { - this.bIFlag = bIFlag; - } - - /** - * Returns object header. - * - * @return inter Layer Object Header - */ - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - /** - * Reads channel buffer and returns object of PcepInterLayerObject. - * - * @param cb of type channel buffer - * @return object of PcepInterLayerObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepInterLayerObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader interLayerObjHeader; - boolean bNFlag; - boolean bIFlag; - - interLayerObjHeader = PcepObjectHeader.read(cb); - - //take only InterLayerObject buffer. - ChannelBuffer tempCb = cb.readBytes(interLayerObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - bIFlag = ((iTemp & (byte) IFLAG_SHIFT_VALUE) == IFLAG_SHIFT_VALUE); - bNFlag = ((iTemp & (byte) NFLAG_SHIFT_VALUE) == NFLAG_SHIFT_VALUE); - - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = interLayerObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - int iTemp = 0; - - if (bIFlag) { - iTemp = iTemp | (byte) IFLAG_SHIFT_VALUE; - } - if (bNFlag) { - iTemp = iTemp | (byte) NFLAG_SHIFT_VALUE; - } - - cb.writeInt(iTemp); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - interLayerObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP inter layer object. - */ - public static class Builder implements PcepInterLayerObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsNFlagset = false; - private boolean bIsIFlagset = false; - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - private boolean bIsPFlagSet = false; - private boolean bPFalg; - - private boolean bIsIFlagSet = false; - private boolean iFlag; - - @Override - public PcepInterLayerObject build() { - PcepObjectHeader interLayerObjHeader = this.bIsHeaderSet ? this.interLayerObjHeader - : DEFAULT_INTER_LAYER_OBJECT_HEADER; - - boolean bNFlag = this.bIsNFlagset ? this.bNFlag : DEFAULT_NFLAG; - boolean bIFlag = this.bIsIFlagset ? this.bIFlag : DEFAULT_IFLAG; - - if (bIsPFlagSet) { - interLayerObjHeader.setPFlag(bPFalg); - } - - if (bIsIFlagSet) { - interLayerObjHeader.setIFlag(iFlag); - } - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public Builder setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public Builder setbNFlag(boolean value) { - this.bNFlag = value; - this.bIsNFlagset = true; - return this; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - @Override - public Builder setbIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFalg = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.iFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IFlag", bIFlag) - .add("NFlag", bNFlag).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java deleted file mode 100644 index 2e01bdaa..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * 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.ver1; - -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.PcepIroObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP iro object. - */ -public class PcepIroObjectVer1 implements PcepIroObject { - - /* - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Sub-objects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The IRO Object format - - Each IPV4 suboject - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepIroObjectVer1.class); - - public static final byte IRO_OBJ_TYPE = 1; - public static final byte IRO_OBJ_CLASS = 10; - public static final byte IRO_OBJECT_VERSION = 1; - public static final short IRO_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - public static final PcepObjectHeader DEFAULT_IRO_OBJECT_HEADER = new PcepObjectHeader(IRO_OBJ_CLASS, IRO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, IRO_OBJ_MINIMUM_LENGTH); - - private short iroObjType = 0; - private byte yLength; - private byte yPrefixLength; - private byte yResvd; - private PcepObjectHeader iroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * Default constructor. - */ - public PcepIroObjectVer1() { - this.iroObjHeader = null; - this.iroObjType = 0; - this.yLength = 0; - } - - /** - * Constructor to initialize member variables. - * - * @param iroObjHeader IRO object header - * @param llSubObjects list of sub-objects - */ - public PcepIroObjectVer1(PcepObjectHeader iroObjHeader, LinkedList<PcepValueType> llSubObjects) { - this.iroObjHeader = iroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns object header. - * - * @return iroObjHeader IRO object header - */ - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - /** - * Sets IRO Object Header. - * - * @param obj IRO object header - */ - public void setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads from channel buffer and return object of PcepIroObject. - * - * @param cb of type channel buffer - * @return object of PcepIroObject - * @throws PcepParseException while parsing from channel buffer - */ - public static PcepIroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader iroObjHeader; - LinkedList<PcepValueType> llSubObjects; - - iroObjHeader = PcepObjectHeader.read(cb); - - //take only IroObject buffer. - ChannelBuffer tempCb = cb.readBytes(iroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - return new PcepIroObjectVer1(iroObjHeader, llSubObjects); - } - - /** - * Returns linked list of sub objects. - * - * @param cb of type channel buffer - * @return linked list of sub objects - * @throws PcepParseException while parsing subobjects from channel buffer - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the Subobjects. - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - - default: - throw new PcepParseException("Invalid sub object. Type: " + (int) yType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llSubObjects.add(subObj); - } - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = iroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength is " + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - iroObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP iro object. - */ - public static class Builder implements PcepIroObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader iroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepIroObject build() { - - PcepObjectHeader iroObjHeader = this.bIsHeaderSet ? this.iroObjHeader : DEFAULT_IRO_OBJECT_HEADER; - - if (bIsPFlagSet) { - iroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - iroObjHeader.setIFlag(bIFlag); - } - - return new PcepIroObjectVer1(iroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - @Override - public Builder setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IroObjectHeader", iroObjHeader) - .add("SubObjects", llSubObjects).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java deleted file mode 100644 index 8b6e9382..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP keep alive message. - */ -class PcepKeepaliveMsgVer1 implements PcepKeepaliveMsg { - - /* - <Keepalive Message>::= <Common Header> - - 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 | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepKeepaliveMsgVer1.class); - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.KEEP_ALIVE; - - public static final PcepKeepaliveMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP keepalive message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepKeepaliveMsg> { - - @Override - public PcepKeepaliveMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum required length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.KEEP_ALIVE_1(2), got=" + version); - } - // fixed value property type == 2 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.KEEP_ALIVE_1(2), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - return new PcepKeepaliveMsgVer1(); - } - } - - /** - * Default constructor. - */ - PcepKeepaliveMsgVer1() { - } - - /** - * Builder class for PCEP keepalive message. - */ - static class Builder implements PcepKeepaliveMsg.Builder { - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.KEEP_ALIVE; - } - - @Override - public PcepKeepaliveMsg build() { - return new PcepKeepaliveMsgVer1(); - } - } - - @Override - public void writeTo(ChannelBuffer cb) { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing the PCEP keepalive message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepKeepaliveMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepKeepaliveMsgVer1 message) { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java deleted file mode 100644 index a4ac87c3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java +++ /dev/null @@ -1,370 +0,0 @@ -/* - * 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.ver1; - -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.PcepLabelObject; -import org.onosproject.pcepio.types.NexthopIPv4addressTlv; -import org.onosproject.pcepio.types.NexthopIPv6addressTlv; -import org.onosproject.pcepio.types.NexthopUnnumberedIPv4IDTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label object. - */ -public class PcepLabelObjectVer1 implements PcepLabelObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.4. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags |O| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Label | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLV // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - The LABEL Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class); - - public static final byte LABEL_OBJ_TYPE = 1; - public static final byte LABEL_OBJ_CLASS = 35; //TBD : to be defined - public static final byte LABEL_OBJECT_VERSION = 1; - public static final byte OBJECT_HEADER_LENGTH = 4; - public static final boolean DEFAULT_OFLAG = false; - - // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(8) - public static final short LABEL_OBJ_MINIMUM_LENGTH = 12; - - public static final int OFLAG_SET = 1; - public static final int OFLAG_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LABEL_OBJECT_HEADER = new PcepObjectHeader(LABEL_OBJ_CLASS, LABEL_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LABEL_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelObjHeader; - private boolean bOFlag; - private int label; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize parameters for PCEP label object. - * - * @param labelObjHeader label object header - * @param bOFlag O flag - * @param label label - * @param llOptionalTlv list of optional tlvs - */ - public PcepLabelObjectVer1(PcepObjectHeader labelObjHeader, boolean bOFlag, int label, - LinkedList<PcepValueType> llOptionalTlv) { - this.labelObjHeader = labelObjHeader; - this.bOFlag = bOFlag; - this.label = label; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public void setOFlag(boolean value) { - this.bOFlag = value; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public void setLabel(int value) { - this.label = value; - } - - /** - * Reads form channel buffer and returns objects of PcepLabelObject. - * - * @param cb of type channel buffer - * @return objects of PcepLabelObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelObjHeader; - - boolean bOFlag; - int label; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - labelObjHeader = PcepObjectHeader.read(cb); - - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - bOFlag = (iTemp & (byte) 0x01) == 1; - label = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelObjectVer1(labelObjHeader, bOFlag, label, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = labelObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - byte oFlag; - - oFlag = (byte) ((bOFlag) ? OFLAG_SET : OFLAG_RESET); - cb.writeInt(oFlag); - cb.writeInt(label); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - labelObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - return cb.writerIndex(); - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channel buffer - * @return list of optional tlvs. - * @throws PcepParseException when fails to parse list of optional tlvs - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - int iValue = 0; - - switch (hType) { - - case NexthopIPv4addressTlv.TYPE: - iValue = cb.readInt(); - tlv = new NexthopIPv4addressTlv(iValue); - break; - case NexthopIPv6addressTlv.TYPE: - byte[] ipv6Value = new byte[NexthopIPv6addressTlv.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, NexthopIPv6addressTlv.VALUE_LENGTH); - tlv = new NexthopIPv6addressTlv(ipv6Value); - break; - case NexthopUnnumberedIPv4IDTlv.TYPE: - tlv = NexthopUnnumberedIPv4IDTlv.read(cb); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of channel buffer. - * @return writer index - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP label object. - */ - public static class Builder implements PcepLabelObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsLabelSet = false; - - private PcepObjectHeader labelObjHeader; - private boolean bOFlag; - private int label; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLabelObject build() throws PcepParseException { - PcepObjectHeader labelObjHeader = this.bIsHeaderSet ? this.labelObjHeader : DEFAULT_LABEL_OBJECT_HEADER; - boolean bOFlag = this.bIsOFlagSet ? this.bOFlag : DEFAULT_OFLAG; - - if (!this.bIsLabelSet) { - throw new PcepParseException(" Label NOT Set while building PcepLabelObject."); - } - if (bIsPFlagSet) { - labelObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - labelObjHeader.setIFlag(bIFlag); - } - return new PcepLabelObjectVer1(labelObjHeader, bOFlag, this.label, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getLabelObjHeader() { - return this.labelObjHeader; - } - - @Override - public Builder setLabelObjHeader(PcepObjectHeader obj) { - this.labelObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public Builder setOFlag(boolean value) { - this.bOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public Builder setLabel(int value) { - this.label = value; - this.bIsLabelSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("OFlag", bOFlag) - .add("label", label) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java deleted file mode 100644 index 9e4be911..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java +++ /dev/null @@ -1,377 +0,0 @@ -/* - * 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.ver1; - -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.PcepLabelRangeObject; -import org.onosproject.pcepio.types.PathSetupTypeTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range object. - */ -public class PcepLabelRangeObjectVer1 implements PcepLabelRangeObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01, section : 7.2 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label type | range size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label base | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - LABEL-RANGE Object - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeObjectVer1.class); - - public static final byte LABEL_RANGE_OBJ_TYPE = 1; - public static final byte LABEL_RANGE_OBJ_CLASS = 60; //to be defined - public static final byte LABEL_RANGE_OBJECT_VERSION = 1; - public static final short LABEL_RANGE_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - //P flag and I flag must be set to 0 - static final PcepObjectHeader DEFAULT_LABELRANGE_OBJECT_HEADER = new PcepObjectHeader(LABEL_RANGE_OBJ_CLASS, - LABEL_RANGE_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - LABEL_RANGE_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelRangeObjHeader; - private byte labelType; - private int rangeSize; - private int labelBase; - //Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize parameters for PCEP label range object. - * - * @param labelRangeObjHeader label range object header - * @param labelType label type - * @param rangeSize range size - * @param labelBase label base - * @param llOptionalTlv list of optional tlvs - */ - public PcepLabelRangeObjectVer1(PcepObjectHeader labelRangeObjHeader, byte labelType, int rangeSize, int labelBase, - LinkedList<PcepValueType> llOptionalTlv) { - this.labelRangeObjHeader = labelRangeObjHeader; - this.labelType = labelType; - this.rangeSize = rangeSize; - this.llOptionalTlv = llOptionalTlv; - this.labelBase = labelBase; - } - - @Override - public void setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - } - - @Override - public void setLabelType(byte labelType) { - this.labelType = labelType; - } - - @Override - public void setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - } - - @Override - public void setLabelBase(int labelBase) { - this.labelBase = labelBase; - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - /** - * Reads from the channel buffer and returns object of PcepLabelRangeObject. - * - * @param cb of type channel buffer - * @return object of PcepLabelRangeObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRangeObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelRangeObjHeader; - byte labelType; - int rangeSize; - int labelBase; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - labelRangeObjHeader = PcepObjectHeader.read(cb); - - //take only LabelRangeObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelRangeObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - int temp = 0; - temp = tempCb.readInt(); - rangeSize = temp & 0x00FFFFFF; - labelType = (byte) (temp >> 24); - labelBase = tempCb.readInt(); - llOptionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, labelType, rangeSize, labelBase, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = labelRangeObjHeader.write(cb); - int temp = 0; - temp = labelType; - temp = temp << 24; - temp = temp | rangeSize; - cb.writeInt(temp); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Error while writing Optional tlv."); - } - - //now write LabelRange Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex() - objStartIndex; - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channle buffer - * @return list of optional tlvs - * @throws PcepParseException whne fails to parse list of optional tlvs - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - int iValue; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - - case PathSetupTypeTlv.TYPE: - iValue = cb.readInt(); - tlv = new PathSetupTypeTlv(iValue); - break; - - default: - throw new PcepParseException("Unsupported TLV in LabelRange Object."); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llOutOptionalTlv.add(tlv); - } - return llOutOptionalTlv; - } - - /** - * Pack optional tlvs. - * - * @param cb of channel buffer - * @return true - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return true; - } - - /** - * Builder class for PCEP label range object. - */ - public static class Builder implements PcepLabelRangeObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLabelType = false; - private boolean bIsRangeSize = false; - private boolean bIsLabelBase = false; - - byte labelType; - int rangeSize; - int labelBase; - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - private PcepObjectHeader labelRangeObjHeader; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - @Override - public PcepLabelRangeObject build() throws PcepParseException { - PcepObjectHeader labelRangeObjHeader = this.bIsHeaderSet ? this.labelRangeObjHeader - : DEFAULT_LABELRANGE_OBJECT_HEADER; - - if (!this.bIsLabelType) { - throw new PcepParseException("LabelType NOT Set while building label range object."); - } - - if (!this.bIsRangeSize) { - throw new PcepParseException("RangeSize NOT Set while building label range object."); - } - - if (!this.bIsLabelBase) { - throw new PcepParseException("LabelBase NOT Set while building label range object."); - } - - if (bIsPFlagSet) { - labelRangeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - labelRangeObjHeader.setIFlag(bIFlag); - } - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, this.labelType, this.rangeSize, this.labelBase, - this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public Builder setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public Builder setLabelType(byte labelType) { - this.labelType = labelType; - this.bIsLabelType = true; - return this; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public Builder setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - this.bIsRangeSize = true; - return this; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - @Override - public Builder setLabelBase(int labelBase) { - this.labelBase = labelBase; - this.bIsLabelBase = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LabelType", labelType) - .add("rangeSize", rangeSize) - .add("labelBase", labelBase) - .add("optionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java deleted file mode 100644 index 6f3648af..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range reserve message. - */ -class PcepLabelRangeResvMsgVer1 implements PcepLabelRangeResvMsg { - - // Pcep version: 1 - - /* - The format of a PCLRResv message is as follows: - - PCLRResv Message>::= <Common Header> - <label-range> - Where: - - <label-range> ::= <SRP> - <labelrange-list> - - Where - <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeResvMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - // LabelRangeResvMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LABEL-RANGE-MIN-LENGTH(12) - public static final int PACKET_MINIMUM_LENGTH = 28; - public static final PcepType MSG_TYPE = PcepType.LABEL_RANGE_RESERV; - //<label-range> - PcepLabelRange labelRange; - - public static final PcepLabelRangeResvMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelRangeResv Message from the channel. - */ - static class Reader implements PcepMessageReader<PcepLabelRangeResvMsg> { - - @Override - public PcepLabelRangeResvMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Channel buffer has less readable bytes than Packet minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 15 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_RANGE_RESERV(15), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length.Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " - + length); - } - // parse <label-range> - PcepLabelRange labelRange = PcepLabelRangeVer1.read(cb); - return new PcepLabelRangeResvMsgVer1(labelRange); - } - } - - /** - * Constructor to initialize PCEP label range. - * - * @param labelRange PCEP label range - */ - PcepLabelRangeResvMsgVer1(PcepLabelRange labelRange) { - this.labelRange = labelRange; - } - - /** - * Builder class for PCEP label range reserve message. - */ - static class Builder implements PcepLabelRangeResvMsg.Builder { - - PcepLabelRange labelRange = new PcepLabelRangeVer1(); - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LABEL_RANGE_RESERV; - } - - @Override - public PcepLabelRangeResvMsg build() { - return new PcepLabelRangeResvMsgVer1(this.labelRange); - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public Builder setLabelRange(PcepLabelRange labelRange) { - this.labelRange = labelRange; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes LabelRangeResv Message to the channel. - */ - static class Writer implements PcepMessageWriter<PcepLabelRangeResvMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepLabelRangeResvMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // Length will be set after calculating length, but currently set it as 0. - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - //write Label Range - message.labelRange.write(cb); - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public void setLabelRange(PcepLabelRange lr) { - this.labelRange = lr; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("labelRange", labelRange) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java deleted file mode 100644 index 411c9604..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * 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.ver1; - -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.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Label Range. - */ -public class PcepLabelRangeVer1 implements PcepLabelRange { - - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeVer1.class); - - /* - <label-range> ::= <SRP> - <labelrange-list> - Where - <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>] - */ - - // PCEP SRP Object - private PcepSrpObject srpObject; - //<labelrange-list> of type PcepLabelRangeObject. - private LinkedList<PcepLabelRangeObject> llLabelRangeList; - - /** - * Default Constructor. - */ - public PcepLabelRangeVer1() { - srpObject = null; - llLabelRangeList = null; - } - - /** - * Constructor to initialize objects. - * - * @param srpObj PCEP Srp object. - * @param llLabelRangeList list of PcepLabelRangeObject. - */ - PcepLabelRangeVer1(PcepSrpObject srpObj, LinkedList<PcepLabelRangeObject> llLabelRangeList) { - this.srpObject = srpObj; - this.llLabelRangeList = llLabelRangeList; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - - } - - @Override - public LinkedList<PcepLabelRangeObject> getLabelRangeList() { - return llLabelRangeList; - } - - @Override - public void setLabelRangeList(LinkedList<PcepLabelRangeObject> ll) { - this.llLabelRangeList = ll; - } - - /** - * Reads channel buffer and returns object of PcepLabelRange. - * - * @param cb of type channel buffer. - * @return object of PcepLabelRange - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRange read(ChannelBuffer cb) throws PcepParseException { - - //parse and store SRP mandatory object - PcepSrpObject srpObj = null; - srpObj = PcepSrpObjectVer1.read(cb); - if (srpObj == null) { - throw new PcepParseException("Exception while parsing srp object"); - } - - LinkedList<PcepLabelRangeObject> llLabelRangeList = new LinkedList<>(); - boolean bFoundLabelRangeObj = false; - while (0 < cb.readableBytes()) { - //parse and store <labelrange-list> - PcepLabelRangeObject lrObj; - lrObj = PcepLabelRangeObjectVer1.read(cb); - if (lrObj == null) { - throw new PcepParseException("Exception while parsing label range object"); - } else { - llLabelRangeList.add(lrObj); - bFoundLabelRangeObj = true; - } - } - - if (!bFoundLabelRangeObj) { - throw new PcepParseException("At least one LABEL-RANGE MUST be present."); - } - return new PcepLabelRangeVer1(srpObj, llLabelRangeList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - //write <SRP> - int objLenIndex = srpObject.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("bjectLength is " + objLenIndex); - } - - //write <labelrange-list> - ListIterator<PcepLabelRangeObject> listIterator = llLabelRangeList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - return length; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("srpObject", srpObject) - .add("LabelRangeList", llLabelRangeList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java deleted file mode 100644 index 89347f42..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * 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.ver1; - -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.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP lable update message. - */ -class PcepLabelUpdateMsgVer1 implements PcepLabelUpdateMsg { - - // Pcep version: 1 - - /* - The format of the PCLabelUpd message: - - <PCLabelUpd Message> ::= <Common Header> - <pce-label-update-list> - Where: - - <pce-label-update-list> ::= <pce-label-update> - [<pce-label-update-list>] - <pce-label-update> ::= (<pce-label-download>|<pce-label-map>) - - Where: - <pce-label-download> ::= <SRP> - <LSP> - <label-list> - - <pce-label-map> ::= <SRP> - <LABEL> - <FEC> - - <label-list > ::= <LABEL> - [<label-list>] - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - - //LabelUpdateMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LabelObjectMinLength(12)+FECType1Object(8) - public static final int PACKET_MINIMUM_LENGTH = 36; - public static final PcepType MSG_TYPE = PcepType.LABEL_UPDATE; - //pce-label-update-list - private LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - - static final PcepLabelUpdateMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelUpdate Message from the channel. - */ - static class Reader implements PcepMessageReader<PcepLabelUpdateMsg> { - - @Override - public PcepLabelUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Readable bytes are less than Packet minimum length."); - } - - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version.Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 13 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_UPDATE(13), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " - + length); - } - // parse <pce-label-download> / <pce-label-map> - LinkedList<PcepLabelUpdate> llPcLabelUpdateList = parsePcLabelUpdateList(cb); - return new PcepLabelUpdateMsgVer1(llPcLabelUpdateList); - } - - /** - * Returns list of PCEP Label Update object. - * - * @param cb of type channel buffer - * @return llPcLabelUpdateList list of PCEP label update object - * @throws PcepParseException when fails to parse list of PCEP label update object - */ - public LinkedList<PcepLabelUpdate> parsePcLabelUpdateList(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - llPcLabelUpdateList = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - llPcLabelUpdateList.add(PcepLabelUpdateVer1.read(cb)); - } - return llPcLabelUpdateList; - } - } - - /** - * Constructor to initialize PCEP Label Update List. - * - * @param llPcLabelUpdateList list of PCEP Label Update object - */ - PcepLabelUpdateMsgVer1(LinkedList<PcepLabelUpdate> llPcLabelUpdateList) { - this.llPcLabelUpdateList = llPcLabelUpdateList; - } - - /** - * Builder class for PCEP label update message. - */ - static class Builder implements PcepLabelUpdateMsg.Builder { - - LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LABEL_UPDATE; - } - - @Override - public PcepLabelUpdateMsg build() { - return new PcepLabelUpdateMsgVer1(this.llPcLabelUpdateList); - } - - @Override - public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() { - return this.llPcLabelUpdateList; - } - - @Override - public Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) { - this.llPcLabelUpdateList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes LabelUpdate Message to the channel. - */ - static class Writer implements PcepMessageWriter<PcepLabelUpdateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepLabelUpdateMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - cb.writeByte(MSG_TYPE.getType()); - - // Length will be set after calculating length, but currently set it as 0. - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepLabelUpdate> listIterator = message.llPcLabelUpdateList.listIterator(); - - while (listIterator.hasNext()) { - PcepLabelUpdate labelUpdate = listIterator.next(); - labelUpdate.write(cb); - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() { - return this.llPcLabelUpdateList; - } - - @Override - public void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) { - this.llPcLabelUpdateList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcLabelUpdateList", llPcLabelUpdateList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java deleted file mode 100644 index a2293d35..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * 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.ver1; - -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.PcepFecObject; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.types.PcepLabelDownload; -import org.onosproject.pcepio.types.PcepLabelMap; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP LABEL update . - * Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01. - */ -public class PcepLabelUpdateVer1 implements PcepLabelUpdate { - - /* - * <pce-label-update> ::= (<pce-label-download>|<pce-label-map>) - - Where: - <pce-label-download> ::= <SRP> - <LSP> - <label-list> - - <pce-label-map> ::= <SRP> - <LABEL> - <FEC> - - <label-list > ::= <LABEL> - [<label-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateVer1.class); - - //Either PceLabelDownload or PceLabelMap is mandatory. - //label Download - private PcepLabelDownload labelDownload; - private boolean isLabelDownloadSet; - //label Map - private PcepLabelMap labelMap; - private boolean isLabelMapSet; - - /** - * Constructor to reset parameters. - */ - public PcepLabelUpdateVer1() { - this.labelDownload = null; - this.isLabelDownloadSet = false; - this.labelMap = null; - this.isLabelMapSet = false; - } - - /** - * Constructor to initialize PCEP label download. - * - * @param labelDownload PCEP label download - */ - public PcepLabelUpdateVer1(PcepLabelDownload labelDownload) { - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - this.labelMap = null; - this.isLabelMapSet = false; - } - - /** - * Constructor to initialize PCEP label map. - * - * @param labelMap PCEP label map - */ - public PcepLabelUpdateVer1(PcepLabelMap labelMap) { - this.labelDownload = null; - this.isLabelDownloadSet = false; - this.labelMap = labelMap; - this.isLabelMapSet = true; - } - - /** - * builder class for PCEP label update. - */ - static class Builder implements PcepLabelUpdate.Builder { - - private PcepLabelDownload labelDownload; - private boolean isLabelDownloadSet; - private PcepLabelMap labelMap; - private boolean isLabelMapSet; - - @Override - public PcepLabelUpdate build() throws PcepParseException { - - if (isLabelDownloadSet) { - return new PcepLabelUpdateVer1(labelDownload); - } - if (isLabelMapSet) { - return new PcepLabelUpdateVer1(labelMap); - } - if (!isLabelDownloadSet && !isLabelMapSet) { - throw new PcepParseException( - "Label Download or Label Map is not set while building PcepLabelUpdate Message"); - } - return new PcepLabelUpdateVer1(); - } - - @Override - public Builder setLabelDownload(PcepLabelDownload labelDownload) { - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - return this; - } - - @Override - public PcepLabelDownload getLabelDownload() { - return labelDownload; - } - - @Override - public Builder setLabelMap(PcepLabelMap labelMap) { - this.labelMap = labelMap; - this.isLabelMapSet = true; - return this; - } - - @Override - public PcepLabelMap getLabelMap() { - return labelMap; - } - } - - /** - * Reads PcepLabels from the byte stream received from channel buffer. - * - * @param cb of type channel buffer. - * @return PcepLabelUpdate object. - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelUpdate read(ChannelBuffer cb) throws PcepParseException { - - PcepLabelUpdateVer1 pceLabelUpdate = new PcepLabelUpdateVer1(); - - PcepSrpObject srpObject; - PcepObjectHeader tempObjHeader; - - //read SRP mandatory Object - srpObject = PcepSrpObjectVer1.read(cb); - - //checking next object - cb.markReaderIndex(); - - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - if (tempObjHeader.getObjClass() == PcepLspObjectVer1.LSP_OBJ_CLASS) { - - //now it is belong to <pce-label-download> - PcepLabelDownload labelDownload = new PcepLabelDownload(); - - //set SRP - labelDownload.setSrpObject(srpObject); - - //read and set LSP - labelDownload.setLspObject(PcepLspObjectVer1.read(cb)); - - //<label-list> - LinkedList<PcepLabelObject> llLabelList = new LinkedList<>(); - PcepLabelObject labelObject; - - while (0 < cb.readableBytes()) { - - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - if (tempObjHeader.getObjClass() != PcepLabelObjectVer1.LABEL_OBJ_CLASS) { - break; - } - labelObject = PcepLabelObjectVer1.read(cb); - llLabelList.add(labelObject); - } - labelDownload.setLabelList(llLabelList); - pceLabelUpdate.setLabelDownload(labelDownload); - } else if (tempObjHeader.getObjClass() == PcepLabelObjectVer1.LABEL_OBJ_CLASS) { - //belong to <pce-label-map> - PcepLabelMap labelMap = new PcepLabelMap(); - - //set SRP Object - labelMap.setSrpObject(srpObject); - - //read and set Label Object - labelMap.setLabelObject(PcepLabelObjectVer1.read(cb)); - - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - PcepFecObject fecObject = null; - switch (tempObjHeader.getObjType()) { - case PcepFecObjectIPv4Ver1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4Ver1.read(cb); - break; - case PcepFecObjectIPv6Ver1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv6Ver1.read(cb); - break; - case PcepFecObjectIPv4AdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4AdjacencyVer1.read(cb); - break; - case PcepFecObjectIPv6AdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv6AdjacencyVer1.read(cb); - break; - case PcepFecObjectIPv4UnnumberedAdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4UnnumberedAdjacencyVer1.read(cb); - break; - default: - throw new PcepParseException("Unkown FEC object type " + tempObjHeader.getObjType()); - } - labelMap.setFECObject(fecObject); - pceLabelUpdate.setLabelMap(labelMap); - } else { - throw new PcepParseException( - "Either <pce-label-download> or <pce-label-map> should be present. Received Class: " - + tempObjHeader.getObjClass()); - } - return pceLabelUpdate; - } - - @Override - public void write(ChannelBuffer cb) throws PcepParseException { - - if ((labelDownload != null) && (labelMap != null)) { - throw new PcepParseException("Label Download and Label Map both can't be present."); - } - - if ((labelDownload == null) && (labelMap == null)) { - throw new PcepParseException("Either Label Download or Label Map should be present."); - } - - if (labelDownload != null) { - - PcepLspObject lspObject; - PcepSrpObject srpObject; - PcepLabelObject labelObject; - LinkedList<PcepLabelObject> llLabelList; - - srpObject = labelDownload.getSrpObject(); - if (srpObject == null) { - throw new PcepParseException("SRP Object is mandatory object for Label Download."); - } else { - srpObject.write(cb); - } - - lspObject = labelDownload.getLspObject(); - if (lspObject == null) { - throw new PcepParseException("LSP Object is mandatory object for Label Download."); - } else { - lspObject.write(cb); - } - - llLabelList = labelDownload.getLabelList(); - if (llLabelList == null) { - throw new PcepParseException("Label list is mandatory object for Label Download."); - } else { - ListIterator<PcepLabelObject> listIterator = llLabelList.listIterator(); - while (listIterator.hasNext()) { - labelObject = listIterator.next(); - labelObject.write(cb); - } - } - } - - if (labelMap != null) { - - PcepSrpObject srpObject; - PcepLabelObject labelObject; - PcepFecObject fecObject; - - srpObject = labelMap.getSrpObject(); - if (srpObject == null) { - throw new PcepParseException("SRP Object is mandatory object for Label map."); - } else { - srpObject.write(cb); - } - labelObject = labelMap.getLabelObject(); - if (labelObject == null) { - throw new PcepParseException("label Object is mandatory object for Label map."); - } else { - labelObject.write(cb); - } - fecObject = labelMap.getFECObject(); - if (fecObject == null) { - throw new PcepParseException("fec Object is mandatory object for Label map."); - } else { - fecObject.write(cb); - } - } - } - - @Override - public void setLabelDownload(PcepLabelDownload labelDownload) { - if (this.isLabelMapSet) { - return; - } - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - } - - @Override - public PcepLabelDownload getLabelDownload() { - return this.labelDownload; - } - - @Override - public void setLabelMap(PcepLabelMap labelMap) { - if (this.isLabelDownloadSet) { - return; - } - this.labelMap = labelMap; - this.isLabelMapSet = true; - } - - @Override - public PcepLabelMap getLabelMap() { - return this.labelMap; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("LabelDownload", labelDownload) - .add("LabelMap", labelMap) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java deleted file mode 100644 index 2b319c12..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java +++ /dev/null @@ -1,575 +0,0 @@ -/* - * 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.ver1; - -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.PcepLspObject; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.StatefulIPv4LspIdentidiersTlv; -import org.onosproject.pcepio.types.StatefulLspDbVerTlv; -import org.onosproject.pcepio.types.StatefulLspErrorCodeTlv; -import org.onosproject.pcepio.types.StatefulRsvpErrorSpecTlv; -import org.onosproject.pcepio.types.SymbolicPathNameTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP lsp object. - */ -public class PcepLspObjectVer1 implements PcepLspObject { - - /* - message format. - Reference : draft-ietf-pce-stateful-pce-11, section 7.3. - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PLSP-ID | Flag | O|A|R|S|D| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The LSP Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class); - - public static final byte LSP_OBJ_TYPE = 1; - public static final byte LSP_OBJ_CLASS = 32; - public static final byte LSP_OBJECT_VERSION = 1; - - // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(4)+TlvAssumedMinLength(8) - public static final short LSP_OBJ_MINIMUM_LENGTH = 16; - - public static final int DEFAULT_PLSPID = 0; - public static final byte DEFAULT_OFLAG = 1; - public static final boolean DEFAULT_AFLAG = false; - public static final boolean DEFAULT_RFLAG = false; - public static final boolean DEFAULT_SFLAG = false; - public static final boolean DEFAULT_DFLAG = false; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int PLSPID_SHIFT_VALUE = 12; - public static final int OFLAG_SHIFT_VALUE = 4; - public static final int AFLAG_SHIFT_VALUE = 3; - public static final int RFLAG_SHIFT_VALUE = 2; - public static final int SFLAG_SHIFT_VALUE = 1; - public static final int PLSPID_TEMP_SHIFT_VALUE = 0xFFFFF000; - public static final int OFLAG_TEMP_SHIFT_VALUE = 0x70; - public static final int AFLAG_TEMP_SHIFT_VALUE = 0x08; - public static final int RFLAG_TEMP_SHIFT_VALUE = 0x04; - public static final int SFLAG_TEMP_SHIFT_VALUE = 0x02; - public static final int DFLAG_TEMP_SHIFT_VALUE = 0x01; - public static final int BIT_SET = 1; - public static final int BIT_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LSP_OBJECT_HEADER = new PcepObjectHeader(LSP_OBJ_CLASS, LSP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader lspObjHeader; - private int iPlspId; - // 3-bits - private byte yOFlag; - private boolean bAFlag; - private boolean bRFlag; - private boolean bSFlag; - private boolean bDFlag; - - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize all the member variables. - * - * @param lspObjHeader lsp object header - * @param iPlspId plsp id - * @param yOFlag O flag - * @param bAFlag A flag - * @param bRFlag R flag - * @param bSFlag S flag - * @param bDFlag D flag - * @param llOptionalTlv list of optional tlv - */ - public PcepLspObjectVer1(PcepObjectHeader lspObjHeader, int iPlspId, byte yOFlag, boolean bAFlag, boolean bRFlag, - boolean bSFlag, boolean bDFlag, LinkedList<PcepValueType> llOptionalTlv) { - - this.lspObjHeader = lspObjHeader; - this.iPlspId = iPlspId; - this.yOFlag = yOFlag; - this.bAFlag = bAFlag; - this.bRFlag = bRFlag; - this.bSFlag = bSFlag; - this.bDFlag = bDFlag; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets lsp Object Header. - * - * @param obj lsp object header - */ - public void setLspObjHeader(PcepObjectHeader obj) { - this.lspObjHeader = obj; - } - - @Override - public void setPlspId(int iPlspId) { - this.iPlspId = iPlspId; - } - - @Override - public void setOFlag(byte yOFlag) { - this.yOFlag = yOFlag; - } - - @Override - public void setAFlag(boolean bAFlag) { - this.bAFlag = bAFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public void setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - } - - @Override - public void setDFlag(boolean bDFlag) { - this.bDFlag = bDFlag; - } - - /** - * Returns lsp object header. - * - * @return lspObjHeader - */ - public PcepObjectHeader getLspObjHeader() { - return this.lspObjHeader; - } - - @Override - public int getPlspId() { - return this.iPlspId; - } - - @Override - public byte getOFlag() { - return this.yOFlag; - } - - @Override - public boolean getAFlag() { - return this.bAFlag; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public boolean getDFlag() { - return this.bDFlag; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Parse channel buffer and returns object of PcepLspObject. - * - * @param cb of type channel buffer - * @return object of PcepLspObject - * @throws PcepParseException when lsp object is not present in channel buffer - */ - public static PcepLspObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader lspObjHeader; - int iPlspId; - // 3-bits - byte yOFlag; - boolean bAFlag; - boolean bRFlag; - boolean bSFlag; - boolean bDFlag; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - lspObjHeader = PcepObjectHeader.read(cb); - - if (lspObjHeader.getObjClass() != PcepLspObjectVer1.LSP_OBJ_CLASS) { - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_8); - } - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(lspObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - Integer iTemp = tempCb.readInt(); - iPlspId = (iTemp & PLSPID_TEMP_SHIFT_VALUE) >> PLSPID_SHIFT_VALUE; - Integer iX = (iTemp & OFLAG_TEMP_SHIFT_VALUE) >> OFLAG_SHIFT_VALUE; - yOFlag = iX.byteValue(); - iX = (iTemp & AFLAG_TEMP_SHIFT_VALUE) >> AFLAG_SHIFT_VALUE; - bAFlag = iX > 0; - iX = (iTemp & RFLAG_TEMP_SHIFT_VALUE) >> RFLAG_SHIFT_VALUE; - bRFlag = iX > 0; - iX = (iTemp & SFLAG_TEMP_SHIFT_VALUE) >> SFLAG_SHIFT_VALUE; - bSFlag = iX > 0; - iX = iTemp & DFLAG_TEMP_SHIFT_VALUE; - bDFlag = iX > 0; - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepLspObjectVer1(lspObjHeader, iPlspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = lspObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write lsp object header. Index " + objLenIndex); - } - - int iTemp = iPlspId << PLSPID_SHIFT_VALUE; - iTemp = iTemp | (yOFlag << OFLAG_SHIFT_VALUE); - byte bFlag; - iTemp = bAFlag ? (iTemp | AFLAG_TEMP_SHIFT_VALUE) : iTemp; - - bFlag = (bRFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | (bFlag << RFLAG_SHIFT_VALUE); - bFlag = (bSFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | (bFlag << SFLAG_SHIFT_VALUE); - bFlag = (bDFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | bFlag; - cb.writeInt(iTemp); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - lspObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - - cb.setShort(objLenIndex, (short) length); - - return length; - } - - /** - * Returns Linked list of optional tlvs. - * - * @param cb of channel buffer. - * @return list of optional tlvs - * @throws PcepParseException when unsupported tlv is received - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv; - - llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - int iValue = 0; - - switch (hType) { - - case StatefulIPv4LspIdentidiersTlv.TYPE: - tlv = StatefulIPv4LspIdentidiersTlv.read(cb); - break; - case StatefulLspErrorCodeTlv.TYPE: - iValue = cb.readInt(); - tlv = new StatefulLspErrorCodeTlv(iValue); - break; - case StatefulRsvpErrorSpecTlv.TYPE: - tlv = StatefulRsvpErrorSpecTlv.read(cb); - break; - case SymbolicPathNameTlv.TYPE: - tlv = SymbolicPathNameTlv.read(cb, hLength); - break; - case StatefulLspDbVerTlv.TYPE: - tlv = StatefulLspDbVerTlv.read(cb); - break; - default: - throw new PcepParseException("Received unsupported TLV type :" + hType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * returns writer index. - * - * @param cb of type channel buffer - * @return length of bytes written to channel buffer - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - int startIndex = cb.writerIndex(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCEP lsp Object. - */ - public static class Builder implements PcepLspObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsPlspIdSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsRFlagSet = false; - private boolean bIsAFlagSet = false; - private boolean bIsDFlagSet = false; - private boolean bIsSFlagSet = false; - - private PcepObjectHeader lspObjHeader; - private byte yOFlag; - private boolean bAFlag; - private boolean bDFlag; - private boolean bSFlag; - private boolean bRFlag; - LinkedList<PcepValueType> llOptionalTlv = null; - - private int plspId; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLspObject build() { - PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.lspObjHeader : DEFAULT_LSP_OBJECT_HEADER; - - int plspId = this.bIsPlspIdSet ? this.plspId : DEFAULT_PLSPID; - byte yOFlag = this.bIsOFlagSet ? this.yOFlag : DEFAULT_OFLAG; - boolean bAFlag = this.bIsAFlagSet ? this.bAFlag : DEFAULT_AFLAG; - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG; - boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_SFLAG; - boolean bDFlag = this.bIsDFlagSet ? this.bDFlag : DEFAULT_DFLAG; - - if (bIsPFlagSet) { - lspObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspObjHeader.setIFlag(bIFlag); - } - - return new PcepLspObjectVer1(lspObjHeader, plspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv); - } - - @Override - public PcepObjectHeader getLspObjHeader() { - return this.lspObjHeader; - } - - @Override - public Builder setLspObjHeader(PcepObjectHeader obj) { - this.lspObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getPlspId() { - return this.plspId; - } - - @Override - public Builder setPlspId(int value) { - this.plspId = value; - this.bIsPlspIdSet = true; - return this; - } - - @Override - public byte getOFlag() { - return this.yOFlag; - } - - @Override - public Builder setOFlag(byte value) { - this.yOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public boolean getAFlag() { - return this.bAFlag; - } - - @Override - public Builder setAFlag(boolean value) { - this.bAFlag = value; - this.bIsAFlagSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean value) { - this.bRFlag = value; - this.bIsRFlagSet = true; - return this; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public Builder setSFlag(boolean value) { - this.bSFlag = value; - this.bIsSFlagSet = true; - return this; - } - - @Override - public boolean getDFlag() { - return this.bDFlag; - } - - @Override - public Builder setDFlag(boolean value) { - this.bDFlag = value; - this.bIsDFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PlspIDValue", iPlspId) - .add("OFlag", yOFlag) - .add("AFlag", bAFlag) - .add("RFlag", bRFlag) - .add("SFlag", bSFlag) - .add("DFlag", bDFlag) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java deleted file mode 100644 index f4000509..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java +++ /dev/null @@ -1,529 +0,0 @@ -/* - * 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.ver1; - -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.PcepLspaObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label Object . - */ -public class PcepLspaObjectVer1 implements PcepLspaObject { - - /* LSPA Object Body Format - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Exclude-any | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Include-any | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Include-all | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Setup Prio | Holding Prio | Flags |L| Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - | Optional TLVs | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepLspaObjectVer1.class); - - public static final byte LSPA_OBJ_TYPE = 1; - public static final byte LSPA_OBJ_CLASS = 9; - public static final byte LSPA_OBJECT_VERSION = 1; - public static final short LSPA_OBJ_MINIMUM_LENGTH = 20; - public static final int OBJECT_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LSPA_OBJECT_HEADER = new PcepObjectHeader(LSPA_OBJ_CLASS, LSPA_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSPA_OBJ_MINIMUM_LENGTH); - - public static final int SETUP_PRIORITY_SHIFT_VALUE = 24; - public static final int HOLD_PRIORITY_SHIFT_VALUE = 16; - public static final int BFLAG_SHIFT_VALUE = 8; - public static final int LFLAG_SET = 1; - public static final int LFLAG_RESET = 0; - private PcepObjectHeader lspaObjHeader; - private int iExcludeAny; - private int iIncludeAny; - private int iIncludeAll; - private byte cSetupPriority; - private byte cHoldPriority; - private boolean bLFlag; - private LinkedList<PcepValueType> llOptionalTlv; //Optional TLV - - /** - * Constructor to initialize member variables. - * - * @param lspaObjHeader lspa object header - * @param bLFlag b l flag - * @param iExcludeAny excludeAny value - * @param iIncludeAny includeAny value - * @param iIncludeAll includeAll value - * @param cSetupPriority setup priority value - * @param cHoldPriority hold priority value - * @param llOptionalTlv list of optional tlv - */ - public PcepLspaObjectVer1(PcepObjectHeader lspaObjHeader, boolean bLFlag, int iExcludeAny, int iIncludeAny, - int iIncludeAll, byte cSetupPriority, byte cHoldPriority, LinkedList<PcepValueType> llOptionalTlv) { - - this.lspaObjHeader = lspaObjHeader; - this.bLFlag = bLFlag; - this.iExcludeAny = iExcludeAny; - this.iIncludeAny = iIncludeAny; - this.iIncludeAll = iIncludeAll; - this.cSetupPriority = cSetupPriority; - this.cHoldPriority = cHoldPriority; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets Object Header. - * - * @param obj lspa object header - */ - public void setLspaObjHeader(PcepObjectHeader obj) { - this.lspaObjHeader = obj; - } - - @Override - public void setExcludeAny(int iExcludeAny) { - this.iExcludeAny = iExcludeAny; - } - - @Override - public void setIncludeAny(int iIncludeAny) { - this.iIncludeAny = iIncludeAny; - } - - @Override - public void setSetupPriority(byte cSetupPriority) { - this.cSetupPriority = cSetupPriority; - } - - @Override - public void setHoldPriority(byte cHoldPriority) { - this.cHoldPriority = cHoldPriority; - } - - @Override - public void setLFlag(boolean bLFlag) { - this.bLFlag = bLFlag; - } - - /** - * Returns lspa Object Header. - * - * @return lspa Object Header - */ - public PcepObjectHeader getLspaObjHeader() { - return this.lspaObjHeader; - } - - @Override - public int getExcludeAny() { - return this.iExcludeAny; - } - - @Override - public int getIncludeAny() { - return this.iIncludeAny; - } - - @Override - public int getIncludeAll() { - return this.iIncludeAll; - } - - @Override - public byte getSetupPriority() { - return this.cSetupPriority; - } - - @Override - public byte getHoldPriority() { - return this.cHoldPriority; - } - - @Override - public boolean getLFlag() { - return this.bLFlag; - } - - @Override - public void setIncludeAll(int value) { - this.iIncludeAll = value; - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - } - - /** - * Reads channel buffer and returns object of PcepLspaObject. - * - * @param cb of type channel buffer. - * @return object of PcepLspaObject - * @throws PcepParseException while parsing lspa object from channel buffer - */ - public static PcepLspaObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("LspaObject::read"); - PcepObjectHeader lspaObjHeader; - int iExcludeAny; - int iIncludeAny; - int iIncludeAll; - byte cSetupPriority; - byte cHoldPriority; - boolean bLFlag; - byte flags; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv; - - lspaObjHeader = PcepObjectHeader.read(cb); - - //take only Lspa Object buffer. - ChannelBuffer tempCb = cb.readBytes(lspaObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - iExcludeAny = tempCb.readInt(); - iIncludeAny = tempCb.readInt(); - iIncludeAll = tempCb.readInt(); - cSetupPriority = tempCb.readByte(); - cHoldPriority = tempCb.readByte(); - flags = tempCb.readByte(); - tempCb.readByte(); - - bLFlag = (flags & (byte) LFLAG_SET) == LFLAG_SET; - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority, - cHoldPriority, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = lspaObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write lspa object header. Index " + objLenIndex); - } - - cb.writeInt(iExcludeAny); - cb.writeInt(iIncludeAny); - cb.writeInt(iIncludeAll); - - int iTemp = cSetupPriority << SETUP_PRIORITY_SHIFT_VALUE; - iTemp = iTemp | (cHoldPriority << HOLD_PRIORITY_SHIFT_VALUE); - byte bFlag; - bFlag = (bLFlag) ? (byte) LFLAG_SET : LFLAG_RESET; - iTemp = iTemp | (bFlag << BFLAG_SHIFT_VALUE); - cb.writeInt(iTemp); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Faild to write lspa objects tlv to channel buffer"); - } - - short length = (short) (cb.writerIndex() - objStartIndex); - - lspaObjHeader.setObjLen(length); //will be helpful during print(). - - //As per RFC the length of object should be multiples of 4 - short pad = (short) (length % 4); - - if (pad != 0) { - pad = (short) (4 - pad); - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = (short) (length + pad); - } - cb.setShort(objLenIndex, length); - return cb.writerIndex(); - } - - /** - * Parse list of optional tlvs. - * - * @param cb channel buffer - * @return list of optional tlvs. - * @throws PcepParseException when fails to parse optional tlv list. - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - return llOutOptionalTlv; - } - - /** - * Writes optional tlvs to channel buffer. - * - * @param cb channel buffer - * @return true - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - int hTlvType; - int hTlvLength; - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("Warning: tlv is null from OptionalTlv list"); - continue; - } - hTlvType = tlv.getType(); - hTlvLength = tlv.getLength(); - if (0 == hTlvLength) { - log.debug("Warning: invalid length in tlv of OptionalTlv list"); - continue; - } - - cb.writeShort(hTlvType); - cb.writeShort(hTlvLength); - - switch (hTlvType) { - //TODO: optional TLV for LSPA to be added - - default: - log.debug("Warning: PcepLspaObject: unknown tlv"); - } - - // As per RFC the length of object should - // be multiples of 4 - int pad = hTlvLength % 4; - - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - } - return true; - } - - /** - * Builder class for PCEP lspa object. - */ - public static class Builder implements PcepLspaObject.Builder { - private boolean bIsHeaderSet = false; - - private PcepObjectHeader lspaObjHeader; - - private boolean bLFlag; - private int iExcludeAny; - private boolean bIsExcludeAnySet = false; - private int iIncludeAny; - private boolean bIsIncludeAnySet = false; - private int iIncludeAll; - private boolean bIsIncludeAllSet = false; - private byte cSetupPriority; - private boolean bIsSetupPrioritySet = false; - private byte cHoldPriority; - private boolean bIsHoldPrioritySet = false; - private LinkedList<PcepValueType> llOptionalTlv; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLspaObject build() throws PcepParseException { - - PcepObjectHeader lspaObjHeader = this.bIsHeaderSet ? this.lspaObjHeader : DEFAULT_LSPA_OBJECT_HEADER; - - if (!this.bIsExcludeAnySet) { - throw new PcepParseException("ExcludeAny NOT Set while building PcepLspaObject."); - } - if (!this.bIsIncludeAnySet) { - throw new PcepParseException("IncludeAny NOT Set while building PcepLspaObject."); - } - if (!this.bIsIncludeAllSet) { - throw new PcepParseException("IncludeAll NOT Set while building PcepLspaObject."); - } - if (!this.bIsSetupPrioritySet) { - throw new PcepParseException("Setup Priority NOT Set while building PcepLspaObject."); - } - if (!this.bIsHoldPrioritySet) { - throw new PcepParseException("Hold Priority NOT Set while building PcepLspaObject."); - } - - if (bIsPFlagSet) { - lspaObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspaObjHeader.setIFlag(bIFlag); - } - - return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority, - cHoldPriority, llOptionalTlv); - } - - @Override - public PcepObjectHeader getLspaObjHeader() { - return this.lspaObjHeader; - } - - @Override - public Builder setLspaObjHeader(PcepObjectHeader obj) { - this.lspaObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getLFlag() { - return this.bLFlag; - } - - @Override - public Builder setLFlag(boolean value) { - this.bLFlag = value; - return this; - } - - @Override - public int getExcludeAny() { - return this.iExcludeAny; - } - - @Override - public Builder setExcludeAny(int value) { - this.iExcludeAny = value; - this.bIsExcludeAnySet = true; - return this; - } - - @Override - public int getIncludeAny() { - return this.iIncludeAny; - } - - @Override - public Builder setIncludeAny(int value) { - this.iIncludeAny = value; - this.bIsIncludeAnySet = true; - return this; - } - - @Override - public int getIncludeAll() { - return this.iIncludeAll; - } - - @Override - public Builder setIncludeAll(int value) { - this.iIncludeAll = value; - this.bIsIncludeAllSet = true; - return this; - } - - @Override - public byte getSetupPriority() { - return this.cSetupPriority; - } - - @Override - public Builder setSetupPriority(byte value) { - this.cSetupPriority = value; - this.bIsSetupPrioritySet = true; - return this; - } - - @Override - public byte getHoldPriority() { - return this.cHoldPriority; - } - - @Override - public Builder setHoldPriority(byte value) { - this.cHoldPriority = value; - this.bIsHoldPrioritySet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LFlag", bLFlag) - .add("SetupPriority", cSetupPriority) - .add("HoldPriority", cHoldPriority) - .add("IncludeAll", iIncludeAll) - .add("IncludeAny", iIncludeAny) - .add("ExcludeAny", iExcludeAny) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java deleted file mode 100644 index 2169a673..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides PCEP messages. - */ -public abstract class PcepMessageVer1 { - - protected static final Logger log = LoggerFactory.getLogger(PcepFactories.class); - - // version: 1.0 - static final byte WIRE_VERSION = 1; - static final int MINIMUM_LENGTH = 4; - static final int PACKET_VERSION = 1; - static final byte OPEN_MSG_TYPE = 0x1; - static final byte KEEPALIVE_MSG_TYPE = 0x2; - static final byte REPORT_MSG_TYPE = 0xa; - static final byte TE_REPORT_MSG_TYPE = 0xe; - static final byte UPDATE_MSG_TYPE = 0xb; - static final byte INITIATE_MSG_TYPE = 0xc; - static final byte CLOSE_MSG_TYPE = 0x7; - static final byte ERROR_MSG_TYPE = 0x6; - static final byte LABEL_UPDATE_MSG_TYPE = 0xD; - static final byte LABEL_RANGE_RESV_MSG_TYPE = 0xF; - public static final int SHIFT_FLAG = 5; - static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - public static final PcepMessageVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP messages from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepMessage> { - @Override - public PcepMessage readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < MINIMUM_LENGTH) { - throw new PcepParseException("Packet should have minimum length: " + MINIMUM_LENGTH); - } - - try { - int start = cb.readerIndex(); - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != (byte) PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.Message_1(1), got=" + version); - } - - byte type = cb.readByte(); - short length = cb.readShort(); - cb.readerIndex(start); - - switch (type) { - - case OPEN_MSG_TYPE: - log.debug("OPEN MESSAGE is received"); - // message type value 1 means it is open message - return PcepOpenMsgVer1.READER.readFrom(cb.readBytes(length)); - case KEEPALIVE_MSG_TYPE: - log.debug("KEEPALIVE MESSAGE is received"); - // message type value 2 means it is Keepalive message - return PcepKeepaliveMsgVer1.READER.readFrom(cb.readBytes(length)); - case ERROR_MSG_TYPE: - log.debug("ERROR MESSAGE is received"); - // message type value 6 means it is error message - return PcepErrorMsgVer1.READER.readFrom(cb.readBytes(length)); - case REPORT_MSG_TYPE: - log.debug("REPORT MESSAGE is received"); - // message type value 10 means it is Report message - // return - return PcepReportMsgVer1.READER.readFrom(cb.readBytes(length)); - case UPDATE_MSG_TYPE: - log.debug("UPDATE MESSAGE is received"); - //message type value 11 means it is Update message - return PcepUpdateMsgVer1.READER.readFrom(cb.readBytes(length)); - case INITIATE_MSG_TYPE: - log.debug("INITIATE MESSAGE is received"); - //message type value 12 means it is PcInitiate message - return PcepInitiateMsgVer1.READER.readFrom(cb.readBytes(length)); - case CLOSE_MSG_TYPE: - log.debug("CLOSE MESSAGE is received"); - // message type value 7 means it is Close message - return PcepCloseMsgVer1.READER.readFrom(cb.readBytes(length)); - case TE_REPORT_MSG_TYPE: - log.debug("TE REPORT MESSAGE is received"); - // message type value 14 means it is TE REPORT message - // return - return PcepTEReportMsgVer1.READER.readFrom(cb.readBytes(length)); - case LABEL_UPDATE_MSG_TYPE: - log.debug("LABEL UPDATE MESSAGE is received"); - // message type value 13 means it is LABEL UPDATE message - // return - return PcepLabelUpdateMsgVer1.READER.readFrom(cb.readBytes(length)); - case LABEL_RANGE_RESV_MSG_TYPE: - log.debug("LABEL RANGE RESERVE MESSAGE is received"); - // message type value 15 means it is LABEL RANGE RESERVE message - // return - return PcepLabelRangeResvMsgVer1.READER.readFrom(cb.readBytes(length)); - default: - throw new PcepParseException("ERROR: UNKNOWN MESSAGE is received. Msg Type: " + type); - } - } catch (IndexOutOfBoundsException e) { - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - } - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java deleted file mode 100644 index 31c27870..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP metric object. - */ -public class PcepMetricObjectVer1 implements PcepMetricObject { - - /* - METRIC Object Body Format. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags |C|B| T | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | metric-value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepMetricObjectVer1.class); - - public static final byte METRIC_OBJ_TYPE = 1; - public static final byte METRIC_OBJ_CLASS = 6; - public static final byte METRIC_OBJECT_VERSION = 1; - public static final short METRIC_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int IFLAG_SHIFT_VALUE = 9; - public static final int BTYPE_SHIFT_VALUE = 8; - public static final int CFLAG_SET = 1; - public static final int CFLAG_RESET = 0; - public static final int BFLAG_SET = 1; - public static final int BFLAG_RESET = 0; - public static final byte CFLAG_CHECK = 0x02; - - static final PcepObjectHeader DEFAULT_METRIC_OBJECT_HEADER = new PcepObjectHeader(METRIC_OBJ_CLASS, - METRIC_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - METRIC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader metricObjHeader; - private int iMetricVal; - private byte yFlag; // 6-flags - private boolean bCFlag; - private boolean bBFlag; - private byte bType; - - /** - * Default constructor. - */ - public PcepMetricObjectVer1() { - this.metricObjHeader = null; - this.iMetricVal = 0; - this.yFlag = 0; - this.bCFlag = false; - this.bBFlag = false; - this.bType = 0; - - } - - /** - * Constructor to initialize all member variables. - * - * @param metricObjHeader metric object header - * @param iMetricVal metric value - * @param yFlag Y flag - * @param bCFlag C flag - * @param bBFlag B flag - * @param bType Type value - */ - public PcepMetricObjectVer1(PcepObjectHeader metricObjHeader, int iMetricVal, byte yFlag, boolean bCFlag, - boolean bBFlag, byte bType) { - - this.metricObjHeader = metricObjHeader; - this.iMetricVal = iMetricVal; - this.yFlag = yFlag; - this.bCFlag = bCFlag; - this.bBFlag = bBFlag; - this.bType = bType; - - } - - @Override - public void setMetricVal(int value) { - this.iMetricVal = value; - - } - - @Override - public int getMetricVal() { - return this.iMetricVal; - } - - @Override - public byte getYFlag() { - return this.yFlag; - } - - @Override - public void setYFlag(byte value) { - this.yFlag = value; - } - - @Override - public boolean getCFlag() { - return this.bCFlag; - } - - @Override - public void setCFlag(boolean value) { - this.bCFlag = value; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public void setBFlag(boolean value) { - this.bBFlag = value; - } - - @Override - public byte getBType() { - return this.bType; - } - - @Override - public void setBType(byte value) { - this.bType = value; - } - - /** - * Sets metric Object Header. - * - * @param obj metric object header - */ - public void setMetricObjHeader(PcepObjectHeader obj) { - this.metricObjHeader = obj; - } - - /** - * Returns metric Object Header. - * - * @return metricObjHeader - */ - public PcepObjectHeader getMetricObjHeader() { - return this.metricObjHeader; - } - - /** - * Reads from channel buffer and returns object of PcepMetricObject. - * - * @param cb of channel buffer. - * @return object of PcepMetricObject - * @throws PcepParseException when metric object is not present in channel buffer - */ - public static PcepMetricObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("MetricObject::read"); - PcepObjectHeader metricObjHeader; - int iMetricVal; - byte yFlag; // 6-flags - boolean bCFlag; - boolean bBFlag; - byte bType; - - metricObjHeader = PcepObjectHeader.read(cb); - - if (metricObjHeader.getObjClass() != METRIC_OBJ_CLASS) { - throw new PcepParseException("This object is not a Metric Object. Object Class: " - + metricObjHeader.getObjClass()); - } - - //take only metric buffer. - ChannelBuffer tempCb = cb.readBytes(metricObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - tempCb.readShort(); - yFlag = tempCb.readByte(); - bType = tempCb.readByte(); - bCFlag = (yFlag & CFLAG_CHECK) == CFLAG_CHECK; - bBFlag = (yFlag & BFLAG_SET) == BFLAG_SET; - iMetricVal = tempCb.readInt(); - - return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = metricObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Error: ObjectLength is " + objLenIndex); - } - - int iFlag = (bCFlag) ? CFLAG_SET : CFLAG_RESET; - int iTemp = iFlag << IFLAG_SHIFT_VALUE; - iFlag = (bBFlag) ? BFLAG_SET : BFLAG_RESET; - iTemp = iTemp | (iFlag << BTYPE_SHIFT_VALUE); - iTemp = iTemp | bType; - cb.writeInt(iTemp); - cb.writeInt(iMetricVal); - - short hLength = (short) (cb.writerIndex() - objStartIndex); - cb.setShort(objLenIndex, hLength); - //will be helpful during print(). - metricObjHeader.setObjLen(hLength); - return hLength; - } - - /** - * Builder class for PCEP metric object. - */ - public static class Builder implements PcepMetricObject.Builder { - - private boolean bIsHeaderSet = false; - private PcepObjectHeader metricObjHeader; - private int iMetricVal; - private boolean bIsMetricValSet = false; - private byte yFlag; // 6-flags - private boolean bCFlag; - private boolean bBFlag; - private byte bType; - private boolean bIsbTypeSet = false; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepMetricObject build() throws PcepParseException { - - PcepObjectHeader metricObjHeader = this.bIsHeaderSet ? this.metricObjHeader : DEFAULT_METRIC_OBJECT_HEADER; - - if (!this.bIsMetricValSet) { - throw new PcepParseException(" Metric Value NOT Set while building PcepMetricObject."); - } - if (!this.bIsbTypeSet) { - throw new PcepParseException(" Type NOT Set while building PcepMetricObject."); - } - - if (bIsPFlagSet) { - metricObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - metricObjHeader.setIFlag(bIFlag); - } - - return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType); - } - - @Override - public PcepObjectHeader getMetricObjHeader() { - return this.metricObjHeader; - } - - @Override - public Builder setMetricObjHeader(PcepObjectHeader obj) { - this.metricObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getMetricVal() { - return this.iMetricVal; - } - - @Override - public Builder setMetricVal(int value) { - this.iMetricVal = value; - this.bIsMetricValSet = true; - return this; - } - - @Override - public byte getYFlag() { - return this.yFlag; - } - - @Override - public Builder setYFlag(byte value) { - this.yFlag = value; - return this; - } - - @Override - public boolean getCFlag() { - return this.bCFlag; - } - - @Override - public Builder setCFlag(boolean value) { - this.bCFlag = value; - return this; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public Builder setBFlag(boolean value) { - this.bBFlag = value; - return this; - } - - @Override - public byte getBType() { - return this.bType; - } - - @Override - public Builder setBType(byte value) { - this.bType = value; - this.bIsbTypeSet = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("MetricValue", iMetricVal) - .add("BFlag", bBFlag) - .add("CFlag", bCFlag) - .add("BType", bType) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java deleted file mode 100644 index 49c738fc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Message PAth for update message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public class PcepMsgPathVer1 implements PcepMsgPath { - - /* - * <path> ::= <ERO><attribute-list> - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepMsgPathVer1.class); - //PcepEroObject - private PcepEroObject eroObj; - private boolean isEroObjectSet; - // PcepAttribute - private PcepAttribute attrList; - private boolean isAttributeListSet; - - /** - * constructor to initialize objects. - */ - public PcepMsgPathVer1() { - eroObj = null; - attrList = null; - isEroObjectSet = false; - isAttributeListSet = false; - } - - @Override - public PcepEroObject getEroObject() { - return eroObj; - } - - @Override - public PcepAttribute getPcepAttribute() { - return attrList; - } - - @Override - public void setEroObject(PcepEroObject eroObj) { - this.eroObj = eroObj; - } - - @Override - public void setPcepAttribute(PcepAttribute attrList) { - this.attrList = attrList; - } - - /** - * constructor to initialize member variables. - * - * @param eroObj pcep ero object - * @param attrList pcep attribute - */ - public PcepMsgPathVer1(PcepEroObject eroObj, PcepAttribute attrList) { - this.eroObj = eroObj; - isEroObjectSet = true; - this.attrList = attrList; - if (attrList == null) { - isAttributeListSet = false; - } else { - isAttributeListSet = true; - } - } - - @Override - public PcepMsgPath read(ChannelBuffer cb) throws PcepParseException { - PcepEroObject eroObj; - PcepAttribute attrList; - - eroObj = PcepEroObjectVer1.read(cb); - attrList = PcepAttributeVer1.read(cb); - - return new PcepMsgPathVer1(eroObj, attrList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - - //write Object header - if (this.isEroObjectSet) { - this.eroObj.write(cb); - } - if (this.isAttributeListSet) { - attrList.write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Builder class for PCEP Message path. - */ - public static class Builder implements PcepMsgPath.Builder { - - private boolean bIsEROObjectSet = false; - private boolean bIsPcepAttributeSet = false; - - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - @Override - public PcepMsgPath build() throws PcepParseException { - - //PCEP ERO Object - PcepEroObject eroObject = null; - //PCEP Attribute list - PcepAttribute pcepAttribute = null; - - if (!this.bIsEROObjectSet) { - throw new PcepParseException("ERO Object NOT Set while building PcepMsgPath."); - } else { - eroObject = this.eroObject; - } - if (!this.bIsPcepAttributeSet) { - throw new PcepParseException("Pcep Attributes NOT Set while building PcepMsgPath."); - } else { - pcepAttribute = this.pcepAttribute; - } - - return new PcepMsgPathVer1(eroObject, pcepAttribute); - } - - @Override - public PcepEroObject getEroObject() { - return this.eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return this.pcepAttribute; - } - - @Override - public Builder setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - this.bIsEROObjectSet = true; - return this; - } - - @Override - public Builder setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - this.bIsPcepAttributeSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("EroObject", eroObj) - .add("AttributeList", attrList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java deleted file mode 100644 index 902226e9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP open message. - */ -public class PcepOpenMsgVer1 implements PcepOpenMsg { - - /* - * <Open Message>::= <Common Header> <OPEN> - 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 | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Keepalive | DeadTimer | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.OPEN; - private PcepOpenObject pcepOpenObj; - - public static final PcepOpenMsgVer1.Reader READER = new Reader(); - - /** - * Constructor to initialize PcepOpenObject. - * - * @param pcepOpenObj PCEP-OPEN-OBJECT - */ - public PcepOpenMsgVer1(PcepOpenObject pcepOpenObj) { - this.pcepOpenObj = pcepOpenObj; - } - - @Override - public PcepOpenObject getPcepOpenObject() { - return this.pcepOpenObj; - } - - @Override - public void setPcepOpenObject(PcepOpenObject pcepOpenObj) { - this.pcepOpenObj = pcepOpenObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - /** - * Reader class for reading PCEP open message from channel buffer. - */ - public static class Reader implements PcepMessageReader<PcepOpenMsg> { - - @Override - public PcepOpenMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - log.error("[readFrom] Invalid version: " + version); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - // fixed value property type == 1 - byte type = cb.readByte(); - - if (type != MSG_TYPE.getType()) { - log.error("[readFrom] Unexpected type: " + type); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - int length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length); - } - return new PcepOpenMsgVer1(PcepOpenObjectVer1.read(cb)); - } - } - - /** - * Builder class for PCEP open message. - */ - static class Builder implements PcepOpenMsg.Builder { - - private PcepOpenObject pcepOpenObj; - - @Override - public PcepOpenMsg build() throws PcepParseException { - if (!(pcepOpenObj instanceof PcepOpenObjectVer1)) { - throw new NullPointerException("PcepOpenObject is null."); - } - return new PcepOpenMsgVer1(pcepOpenObj); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.OPEN; - } - - @Override - public PcepOpenObject getPcepOpenObj() { - return this.pcepOpenObj; - } - - @Override - public Builder setPcepOpenObj(PcepOpenObject obj) { - this.pcepOpenObj = obj; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP opne message to channel buffer. - */ - public static class Writer implements PcepMessageWriter<PcepOpenMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepOpenMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - - message.getPcepOpenObject().write(cb); - - // update message length field - int iLength = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) iLength); - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("OpenObject", pcepOpenObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java deleted file mode 100644 index d5e58694..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java +++ /dev/null @@ -1,491 +0,0 @@ -/* - * 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.ver1; - -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.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.GmplsCapabilityTlv; -import org.onosproject.pcepio.types.PceccCapabilityTlv; -import org.onosproject.pcepio.types.PcepLabelDbVerTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.StatefulLspDbVerTlv; -import org.onosproject.pcepio.types.StatefulPceCapabilityTlv; -import org.onosproject.pcepio.types.TedCapabilityTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP open object. - */ -public class PcepOpenObjectVer1 implements PcepOpenObject { - - /* - message format. - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Keepalive | DeadTimer | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The OPEN Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepOpenObjectVer1.class); - - public static final PcepType MSG_TYPE = PcepType.OPEN; - public static final byte OPEN_OBJECT_VERSION = 1; - public static final byte OPEN_OBJ_TYPE = 1; - public static final byte OPEN_OBJ_CLASS = 1; - public static final byte DEFAULT_KEEPALIVE_TIME = 30; - public static final byte DEFAULT_DEAD_TIME = 120; - public static final short OPEN_OBJ_MINIMUM_LENGTH = 8; - public static final int DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE = 0X0; - public static final int DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE = 0xf; - public static final int DEFAULT_PCECC_CAPABILITY_TLV_IVALUE = 0x7; - public static final int DEFAULT_PCEP_LABEL_DB_VER_TLV_IVALUE = 0X0; - - public static final PcepObjectHeader DEFAULT_OPEN_HEADER = new PcepObjectHeader(OPEN_OBJ_CLASS, OPEN_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, OPEN_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader openObjHeader; - private byte keepAliveTime; - private byte deadTime; - private byte sessionId; - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Default constructor. - */ - public PcepOpenObjectVer1() { - this.openObjHeader = null; - this.keepAliveTime = 0; - this.deadTime = 0; - this.sessionId = 0; - this.llOptionalTlv = null; - } - - /** - * Constructor to initialize all member variables. - * - * @param openObjHeader Open Object Header - * @param keepAliveTime Keepalive timer value - * @param deadTime Dead timer value - * @param sessionID session id - * @param llOptionalTlv Optional TLV - */ - public PcepOpenObjectVer1(PcepObjectHeader openObjHeader, byte keepAliveTime, byte deadTime, byte sessionID, - LinkedList<PcepValueType> llOptionalTlv) { - this.openObjHeader = openObjHeader; - this.keepAliveTime = keepAliveTime; - this.deadTime = deadTime; - this.sessionId = sessionID; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public PcepObjectHeader getOpenObjHeader() { - return this.openObjHeader; - } - - @Override - public void setOpenObjHeader(PcepObjectHeader obj) { - this.openObjHeader = obj; - } - - @Override - public byte getKeepAliveTime() { - return this.keepAliveTime; - } - - @Override - public void setKeepAliveTime(byte value) { - this.keepAliveTime = value; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public byte getDeadTime() { - return this.deadTime; - } - - @Override - public void setDeadTime(byte value) { - this.deadTime = value; - } - - @Override - public byte getSessionId() { - return this.sessionId; - } - - @Override - public void setSessionId(byte value) { - this.sessionId = value; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from channel buffer and returns object of PcepOpenObject. - * - * @param cb of type channel buffer - * @return object of PcepOpenObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepOpenObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader openObjHeader; - byte version; - byte keepAliveTime; - byte deadTime; - byte sessionID; - LinkedList<PcepValueType> llOptionalTlv; - - openObjHeader = PcepObjectHeader.read(cb); - version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != OPEN_OBJECT_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version); - } - /* Keepalive */ - keepAliveTime = cb.readByte(); - - /* DeadTimer */ - deadTime = cb.readByte(); - - /* SID */ - sessionID = cb.readByte(); - - // Optional TLV - llOptionalTlv = parseOptionalTlv(cb); - - return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, sessionID, llOptionalTlv); - } - - /** - * Returns linkedlist of optional tlvs. - * - * @param cb of type channel buffer - * @return llOptionalTlv Optional TLV - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOptionalTlv; - - llOptionalTlv = new LinkedList<>(); - - while (4 <= cb.readableBytes()) { - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - case GmplsCapabilityTlv.TYPE: - log.debug("GmplsCapabilityTlv"); - if (GmplsCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for Gmpls_Capability_Tlv."); - } - int iValue = cb.readInt(); - tlv = new GmplsCapabilityTlv(iValue); - break; - case StatefulPceCapabilityTlv.TYPE: - log.debug("StatefulPceCapabilityTlv"); - if (StatefulPceCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for StatefulPceCapabilityTlv."); - } - tlv = StatefulPceCapabilityTlv.read(cb); - break; - case PceccCapabilityTlv.TYPE: - log.debug("PceccCapabilityTlv"); - if (PceccCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length for PceccCapabilityTlv."); - } - iValue = cb.readInt(); - tlv = new PceccCapabilityTlv(iValue); - break; - case StatefulLspDbVerTlv.TYPE: - log.debug("StatefulLspDbVerTlv"); - if (StatefulLspDbVerTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for StatefulLspDbVerTlv."); - } - long lValue = cb.readLong(); - tlv = new StatefulLspDbVerTlv(lValue); - break; - case TedCapabilityTlv.TYPE: - log.debug("TedCapabilityTlv"); - if (TedCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for TedCapabilityTlv."); - } - iValue = cb.readInt(); - tlv = new TedCapabilityTlv(iValue); - break; - case PcepLabelDbVerTlv.TYPE: - log.debug("PcepLabelDbVerTlv"); - if (PcepLabelDbVerTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for PcepLabelDbVerTlv."); - } - lValue = cb.readLong(); - tlv = new PcepLabelDbVerTlv(lValue); - break; - default: - log.debug("Unsupported TLV: " + hType); - cb.skipBytes(hLength); - continue; - } - - llOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - - return llOptionalTlv; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = openObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Unable to write Open object header."); - } - - cb.writeByte((byte) (OPEN_OBJECT_VERSION << PcepMessageVer1.SHIFT_FLAG)); - cb.writeByte(this.keepAliveTime); - cb.writeByte(this.deadTime); - cb.writeByte(this.sessionId); - - //Pack optional TLV - packOptionalTlv(cb); - - //now write OPEN Object Length - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - this.openObjHeader.setObjLen((short) length); - - return length; - } - - /** - * Returns writer index. - * - * @param cb of type channel buffer. - * @return writer index - */ - protected int packOptionalTlv(ChannelBuffer cb) { - int startIndex = cb.writerIndex(); - - LinkedList<PcepValueType> llOptionalTlv = this.llOptionalTlv; - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCPE open object. - */ - public static class Builder implements PcepOpenObject.Builder { - // Pcep open message fields - private boolean bIsHeaderSet = false; - private PcepObjectHeader openObjHeader; - private boolean bIsKeepAliveTimeSet = false; - private byte keepAliveTime; - private boolean bIsDeadTimeSet = false; - private byte deadTime; - private boolean bIsSessionIDSet = false; - private byte sessionID; - private boolean bIsOptionalTlvSet = false; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepOpenObject build() throws PcepParseException { - PcepObjectHeader openObjHeader = this.bIsHeaderSet ? this.openObjHeader : DEFAULT_OPEN_HEADER; - byte keepAliveTime = this.bIsKeepAliveTimeSet ? this.keepAliveTime : DEFAULT_KEEPALIVE_TIME; - byte deadTime = this.bIsDeadTimeSet ? this.deadTime : DEFAULT_DEAD_TIME; - - if (!this.bIsSessionIDSet) { - throw new PcepParseException("SessionID is not set (mandatory)"); - } - if (!this.bIsOptionalTlvSet) { - //Add tlv to list - //Add GmplsCapabilityTlv - PcepValueType tlv; - int iValue = DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE; - tlv = new GmplsCapabilityTlv(iValue); - this.llOptionalTlv.add(tlv); - - //Add StatefulPceCapabilityTlv - iValue = DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE; - tlv = new StatefulPceCapabilityTlv(iValue); - this.llOptionalTlv.add(tlv); - - } - - if (bIsPFlagSet) { - openObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - openObjHeader.setIFlag(bIFlag); - } - - return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, this.sessionID, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getOpenObjHeader() { - return this.openObjHeader; - } - - @Override - public Builder setOpenObjHeader(PcepObjectHeader obj) { - this.openObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getKeepAliveTime() { - return this.keepAliveTime; - } - - @Override - public Builder setKeepAliveTime(byte value) { - this.keepAliveTime = value; - this.bIsKeepAliveTimeSet = true; - return this; - } - - @Override - public byte getDeadTime() { - return this.deadTime; - } - - @Override - public Builder setDeadTime(byte value) { - this.deadTime = value; - this.bIsDeadTimeSet = true; - return this; - } - - @Override - public byte getSessionId() { - return this.sessionID; - } - - @Override - public Builder setSessionId(byte value) { - this.sessionID = value; - this.bIsSessionIDSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - this.bIsOptionalTlvSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", openObjHeader) - .add("Keepalive", keepAliveTime) - .add("DeadTimer", deadTime) - .add("SessionId", sessionId) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java deleted file mode 100644 index 7234a467..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java +++ /dev/null @@ -1,445 +0,0 @@ -/* - * 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.ver1; - -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.PcepRPObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP RP object. - */ -public class PcepRPObjectVer1 implements PcepRPObject { - - /* - * RP Object. - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |O|B|R| Pri | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Request-ID-number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepRPObjectVer1.class); - - public static final byte RP_OBJ_TYPE = 1; - public static final byte RP_OBJ_CLASS = 2; - public static final byte RP_OBJECT_VERSION = 1; - public static final short RP_OBJ_MINIMUM_LENGTH = 12; - - public static final int DEFAULT_REQUEST_ID_NUM = 0; - //Signalled , all default values to be checked. - public static final boolean DEFAULT_OFLAG = false; - public static final boolean DEFAULT_BFLAG = false; - public static final boolean DEFAULT_RFLAG = false; - public static final byte DEFAULT_PRIFLAG = 0; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int OFLAG_SHIFT_VALUE = 5; - public static final int BFLAG_SHIFT_VALUE = 4; - public static final int RFLAG_SHIFT_VALUE = 3; - public static final int OFLAG_TEMP_SHIFT_VALUE = 0x20; - public static final int BFLAG_TEMP_SHIFT_VALUE = 0x10; - public static final int RFLAG_TEMP_SHIFT_VALUE = 0x08; - public static final int PRIFLAG_TEMP_SHIFT_VALUE = 0x07; - public static final int BIT_SET = 1; - public static final int BIT_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_RP_OBJECT_HEADER = new PcepObjectHeader(RP_OBJ_CLASS, RP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader rpObjHeader; - private int iRequestIdNum; - private boolean bOFlag; - private boolean bBFlag; - private boolean bRFlag; - private byte yPriFlag; // 3bytes - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize variables. - * - * @param rpObjHeader RP-OBJECT header - * @param iRequestIdNum Request-ID-number - * @param bOFlag O-flag - * @param bBFlag B-flag - * @param bRFlag R-flag - * @param yPriFlag Pri-flag - * @param llOptionalTlv linked list of Optional TLV - */ - public PcepRPObjectVer1(PcepObjectHeader rpObjHeader, int iRequestIdNum, boolean bOFlag, boolean bBFlag, - boolean bRFlag, byte yPriFlag, LinkedList<PcepValueType> llOptionalTlv) { - this.rpObjHeader = rpObjHeader; - this.iRequestIdNum = iRequestIdNum; - this.bOFlag = bOFlag; - this.bBFlag = bBFlag; - this.bRFlag = bRFlag; - this.yPriFlag = yPriFlag; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets RP Object header. - * - * @param obj RP Object header - */ - public void setRPObjHeader(PcepObjectHeader obj) { - this.rpObjHeader = obj; - } - - @Override - public void setRequestIdNum(int iRequestIdNum) { - this.iRequestIdNum = iRequestIdNum; - } - - @Override - public void setOFlag(boolean bOFlag) { - this.bOFlag = bOFlag; - } - - @Override - public void setBFlag(boolean bBFlag) { - this.bBFlag = bBFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public void setPriFlag(byte yPriFlag) { - this.yPriFlag = yPriFlag; - } - - /** - * Returns RP Object header. - * - * @return rpObjHeader - */ - public PcepObjectHeader getRPObjHeader() { - return this.rpObjHeader; - } - - @Override - public int getRequestIdNum() { - return this.iRequestIdNum; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public byte getPriFlag() { - return this.yPriFlag; - } - - /** - * Reads the channel buffer and returns the object of PcepRPObject. - * - * @param cb of type channel buffer - * @return the object of PcepRPObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepRPObject read(ChannelBuffer cb) throws PcepParseException { - log.debug("read"); - PcepObjectHeader rpObjHeader; - int iRequestIdNum; - boolean bOFlag; - boolean bBFlag; - boolean bRFlag; - byte yPriFlag; // 3bytes - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - rpObjHeader = PcepObjectHeader.read(cb); - - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(rpObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - yPriFlag = (byte) (iTemp & PRIFLAG_TEMP_SHIFT_VALUE); - bOFlag = (iTemp & OFLAG_TEMP_SHIFT_VALUE) == OFLAG_TEMP_SHIFT_VALUE; - bBFlag = (iTemp & BFLAG_TEMP_SHIFT_VALUE) == BFLAG_TEMP_SHIFT_VALUE; - bRFlag = (iTemp & RFLAG_TEMP_SHIFT_VALUE) == RFLAG_TEMP_SHIFT_VALUE; - - iRequestIdNum = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepRPObjectVer1(rpObjHeader, iRequestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = rpObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("ObjectLength Index is " + objLenIndex); - } - int iTemp; - iTemp = (yPriFlag); - - iTemp = (bOFlag) ? (iTemp | OFLAG_SHIFT_VALUE) : iTemp; - iTemp = (bBFlag) ? (iTemp | BFLAG_SHIFT_VALUE) : iTemp; - iTemp = (bRFlag) ? (iTemp | RFLAG_SHIFT_VALUE) : iTemp; - - cb.writeInt(iTemp); - cb.writeInt(iRequestIdNum); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - rpObjHeader.setObjLen((short) length); - - cb.setShort(objLenIndex, (short) length); - return cb.writerIndex(); - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channel buffer. - * @return llOutOptionalTlv linked list of Optional TLV - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - //Currently no optional TLvs, will be added based on requirements. - return llOutOptionalTlv; - } - - /** - * Returns optional tlvs. - * - * @param cb of type channel buffer - * @return llOptionalTlv linked list of Optional TLV - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - return cb.writerIndex(); - } - - /** - * Builder class for PCEP rp object. - */ - public static class Builder implements PcepRPObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsRequestIdNumSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsRFlagset = false; - private boolean bIsBFlagSet = false; - private boolean bIsPriFlagSet = false; - - private PcepObjectHeader rpObjHeader; - private int requestIdNum; - private boolean bOFlag; - private boolean bBFlag; - private boolean bRFlag; - private byte yPriFlag; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepRPObject build() { - PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.rpObjHeader : DEFAULT_RP_OBJECT_HEADER; - - int requestIdNum = this.bIsRequestIdNumSet ? this.requestIdNum : DEFAULT_REQUEST_ID_NUM; - boolean bOFlag = this.bIsOFlagSet ? this.bOFlag : DEFAULT_OFLAG; - boolean bBFlag = this.bIsBFlagSet ? this.bBFlag : DEFAULT_BFLAG; - boolean bRFlag = this.bIsRFlagset ? this.bRFlag : DEFAULT_RFLAG; - byte yPriFlag = this.bIsPriFlagSet ? this.yPriFlag : DEFAULT_PRIFLAG; - - if (bIsPFlagSet) { - lspObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspObjHeader.setIFlag(bIFlag); - } - - return new PcepRPObjectVer1(lspObjHeader, requestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv); - } - - @Override - public PcepObjectHeader getRPObjHeader() { - return this.rpObjHeader; - } - - @Override - public Builder setRPObjHeader(PcepObjectHeader obj) { - this.rpObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getRequestIdNum() { - return this.requestIdNum; - } - - @Override - public Builder setRequestIdNum(int value) { - this.requestIdNum = value; - this.bIsRequestIdNumSet = true; - return this; - } - - @Override - public Builder setOFlag(boolean value) { - this.bOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public Builder setBFlag(boolean value) { - this.bBFlag = value; - this.bIsBFlagSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean value) { - this.bRFlag = value; - this.bIsRFlagset = true; - return this; - } - - @Override - public byte getPriFlag() { - return this.yPriFlag; - } - - @Override - public Builder setPriFlag(byte value) { - this.yPriFlag = value; - this.bIsPriFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", rpObjHeader) - .add("OFlag", (bOFlag) ? 1 : 0) - .add("BFlag", (bBFlag) ? 1 : 0) - .add("RFlag", (bRFlag) ? 1 : 0) - .add("PriFlag", yPriFlag) - .add("RequestIdNumber", iRequestIdNum) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java deleted file mode 100644 index 26e48dbd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * 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.ver1; - -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.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepReportMsg; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP report message. - */ -class PcepReportMsgVer1 implements PcepReportMsg { - - // Pcep version: 1 - - /* - * The format of the PCRpt message is as follows: - * <PCRpt Message> ::= <Common Header> - * <state-report-list> - *Where: - * <state-report-list> ::= <state-report>[<state-report-list>] - * <state-report> ::= [<SRP>] - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list>[<RRO>] - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * <metric-list> ::=<METRIC>[<metric-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepReportMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+LspObjMinLen(8)+EroObjMinLen(12) - public static final int PACKET_MINIMUM_LENGTH = 24; - public static final PcepType MSG_TYPE = PcepType.REPORT; - public static final byte REPORT_OBJ_TYPE = 1; - //Optional TLV - private LinkedList<PcepStateReport> llStateReportList; - - public static final PcepReportMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP report message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepReportMsg> { - - LinkedList<PcepStateReport> llStateReportList; - - @Override - public PcepReportMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Received packet size " + cb.readableBytes() - + " is less than the expected size: " + PACKET_MINIMUM_LENGTH); - } - llStateReportList = new LinkedList<>(); - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - - if (version != PACKET_VERSION) { - throw new PcepParseException(" Invalid version: " + version); - } - - byte type = cb.readByte(); - - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Unexpected type: " + type); - } - - short length = cb.readShort(); - - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - // parse state report list - parseStateReportList(cb); - return new PcepReportMsgVer1(llStateReportList); - } - - // Parse State Report list - public void parseStateReportList(ChannelBuffer cb) throws PcepParseException { - - /* - <state-report-list> - Where: - <state-report-list> ::= <state-report>[<state-report-list>] - <state-report> ::= [<SRP>] - <LSP> - <path> - Where: - <path> ::= <ERO><attribute-list>[<RRO>] - Where: - <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - - */ - - while (0 < cb.readableBytes()) { - - PcepStateReport pcestateReq = new PcepStateReportVer1(); - - /* - * SRP is optional - * Check whether SRP Object is available, if yes store it. - * First read common object header and check the Object Class whether it is SRP or LSP - * If it is LSP then store only LSP. So, SRP is optional. then read path and store. - * If it is SRP then store SRP and then read LSP, path and store them. - */ - - //mark the reader index to reset - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - - byte yObjectClass = tempObjHeader.getObjClass(); - byte yObjectType = tempObjHeader.getObjType(); - - //reset reader index - cb.resetReaderIndex(); - //If SRP present then store it. - if ((PcepSrpObjectVer1.SRP_OBJ_CLASS == yObjectClass) - && (PcepSrpObjectVer1.SRP_OBJ_TYPE == yObjectType)) { - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pcestateReq.setSrpObject(srpObj); - } - - //store LSP object - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pcestateReq.setLspObject(lspObj); - - //store path - PcepStateReport.PcepMsgPath msgPath = new PcepStateReportVer1().new PcepMsgPath().read(cb); - pcestateReq.setMsgPath(msgPath); - - llStateReportList.add(pcestateReq); - } - } - } - - /** - * Constructor to initialize State Report List. - * - * @param llStateReportList list of type Pcep state report - */ - PcepReportMsgVer1(LinkedList<PcepStateReport> llStateReportList) { - this.llStateReportList = llStateReportList; - } - - /** - * Builder class for PCEP Report message. - */ - static class Builder implements PcepReportMsg.Builder { - // Pcep report message fields - LinkedList<PcepStateReport> llStateReportList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.REPORT; - } - - @Override - public PcepReportMsg build() { - return new PcepReportMsgVer1(this.llStateReportList); - } - - @Override - public LinkedList<PcepStateReport> getStateReportList() { - return this.llStateReportList; - } - - @Override - public Builder setStateReportList(LinkedList<PcepStateReport> ll) { - this.llStateReportList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP report message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepReportMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepReportMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - cb.writeByte(MSG_TYPE.getType()); - - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepStateReport> listIterator = message.llStateReportList.listIterator(); - - while (listIterator.hasNext()) { - - PcepStateReport stateRpt = listIterator.next(); - PcepSrpObject srpObj = stateRpt.getSrpObject(); - - //SRP object is optional - if (srpObj != null) { - srpObj.write(cb); - } - - //LSP object is mandatory - PcepLspObject lspObj = stateRpt.getLspObject(); - if (lspObj == null) { - throw new PcepParseException("LSP Object is mandatory object for PcRpt message."); - } else { - lspObj.write(cb); - } - - //path is mandatory - PcepStateReport.PcepMsgPath msgPath = stateRpt.getMsgPath(); - if (msgPath == null) { - throw new PcepParseException("Message path is mandatory object for PcRpt message."); - } else { - msgPath.write(cb); - } - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepStateReport> getStateReportList() { - return this.llStateReportList; - } - - @Override - public void setStateReportList(LinkedList<PcepStateReport> ll) { - this.llStateReportList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("StateReportList", llStateReportList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java deleted file mode 100644 index 4df42e05..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * 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.ver1; - -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.PcepRroObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.IPv6SubObject; -import org.onosproject.pcepio.types.LabelSubObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP RRO object. - */ -public class PcepRroObjectVer1 implements PcepRroObject { - - /* - * rfc3209 - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Subobjects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Each subobject has its own Length - field. The length contains the total length of the subobject in - bytes, including the Type and Length fields. The length MUST always - be a multiple of 4, and at least 4. - - An empty RRO with no subobjects is considered illegal. - Three kinds of subobjects are currently defined. - - Subobject 1: IPv4 address - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 2: IPv6 address - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 3, Label - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | Flags | C-Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Contents of Label Object | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepRroObjectVer1.class); - - public static final byte RRO_OBJ_TYPE = 1; - public static final byte RRO_OBJ_CLASS = 8; - public static final byte RRO_OBJECT_VERSION = 1; - public static final short RRO_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - static final PcepObjectHeader DEFAULT_RRO_OBJECT_HEADER = new PcepObjectHeader(RRO_OBJ_CLASS, RRO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RRO_OBJ_MINIMUM_LENGTH); - - private short rroObjType = 0; - private byte length; - private byte prefixLength; - private byte resvd; - PcepObjectHeader rroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * Reset variables. - */ - public PcepRroObjectVer1() { - this.rroObjHeader = null; - this.rroObjType = 0; - this.length = 0; - } - - /** - * constructor to initialize parameters for RRO object. - * - * @param rroObjHeader RRO object header - * @param llSubObjects list of sub objects - */ - public PcepRroObjectVer1(PcepObjectHeader rroObjHeader, LinkedList<PcepValueType> llSubObjects) { - this.rroObjHeader = rroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns PCEP RRO Object Header. - * - * @return rroObjHeader RRO Object header - */ - public PcepObjectHeader getRroObjHeader() { - return this.rroObjHeader; - } - - /** - * Sets PCEP RRO Object Header. - * - * @param obj Object header - */ - public void setRroObjHeader(PcepObjectHeader obj) { - this.rroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads the channel buffer and returns object of PcepRroObject. - * - * @param cb of type channel buffer - * @return object of PcepRroObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepRroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader rroObjHeader; - LinkedList<PcepValueType> llSubObjects; - rroObjHeader = PcepObjectHeader.read(cb); - - //take only RroObject buffer. - ChannelBuffer tempCb = cb.readBytes(rroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - - return new PcepRroObjectVer1(rroObjHeader, llSubObjects); - } - - /** - * Returns list of sub objects. - * - * @param cb of type channel buffer - * @return list of sub objects - * @throws PcepParseException when fails to parse list of sub objects - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the Sub objects - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - case IPv6SubObject.TYPE: - byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH); - subObj = new IPv6SubObject(ipv6Value); - break; - case LabelSubObject.TYPE: - subObj = LabelSubObject.read(cb); - break; - default: - throw new PcepParseException(" Unexpected sub object. Type: " + (int) yType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llSubObjects.add(subObj); - } - - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = rroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" object Length Index" + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - rroObjHeader.setObjLen((short) length); - - //As per RFC the length of object should be multiples of 4 - int pad = length % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP RRO object. - */ - public static class Builder implements PcepRroObject.Builder { - private boolean bIsHeaderSet = false; - - private PcepObjectHeader rroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepRroObject build() { - - PcepObjectHeader rroObjHeader = this.bIsHeaderSet ? this.rroObjHeader : DEFAULT_RRO_OBJECT_HEADER; - - if (bIsPFlagSet) { - rroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - rroObjHeader.setIFlag(bIFlag); - } - return new PcepRroObjectVer1(rroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getRroObjHeader() { - return this.rroObjHeader; - } - - @Override - public Builder setRroObjHeader(PcepObjectHeader obj) { - this.rroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SubObjects", llSubObjects) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java deleted file mode 100644 index 9c75b3a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java +++ /dev/null @@ -1,392 +0,0 @@ -/* - * 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.ver1; - -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.PcepSrpObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.SymbolicPathNameTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP SRP obejct. - */ -public class PcepSrpObjectVer1 implements PcepSrpObject { - - /* - * ref : draft-ietf-pce-stateful-pce-10, section : 7.2 - 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) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |R| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SRP-ID-number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepSrpObjectVer1.class); - - public static final byte SRP_OBJ_TYPE = 1; - public static final byte SRP_OBJ_CLASS = 33; - public static final byte SRP_OBJECT_VERSION = 1; - public static final short SRP_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final boolean DEFAULT_RFLAG = false; - - static final PcepObjectHeader DEFAULT_SRP_OBJECT_HEADER = new PcepObjectHeader(SRP_OBJ_CLASS, SRP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, SRP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader srpObjHeader; - private static int flags; - private boolean bRFlag; - private int srpId; - - //Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - public static final byte BBIT_SET = 1; - public static final byte BBIT_RESET = 0; - - /** - * Constructor to initialize member variables. - * - * @param srpObjHeader srp object header - * @param bRFlag R flag - * @param srpID srp Id - * @param llOptionalTlv list of optional tlv - */ - public PcepSrpObjectVer1(PcepObjectHeader srpObjHeader, boolean bRFlag, int srpID, - LinkedList<PcepValueType> llOptionalTlv) { - - this.srpObjHeader = srpObjHeader; - this.bRFlag = bRFlag; - this.srpId = srpID; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * sets the SRP object header. - * - * @param obj srp object header - */ - public void setSrpObjHeader(PcepObjectHeader obj) { - this.srpObjHeader = obj; - } - - @Override - public void setSrpID(int srpID) { - this.srpId = srpID; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - /** - * Returns SRP object header. - * - * @return srpObjHeader - */ - public PcepObjectHeader getSrpObjHeader() { - return this.srpObjHeader; - } - - @Override - public int getSrpID() { - return this.srpId; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - /** - * Reads from channel buffer and returns instance of PCEP SRP object. - * - * @param cb of channel buffer. - * @return PCEP SRP object - * @throws PcepParseException when srp object is not received in channel buffer - */ - public static PcepSrpObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("SrpObject::read"); - PcepObjectHeader srpObjHeader; - boolean bRFlag; - - int srpID; - int flags; - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - srpObjHeader = PcepObjectHeader.read(cb); - - if (srpObjHeader.getObjClass() != SRP_OBJ_CLASS) { - throw new PcepParseException("SRP object expected. But received " + srpObjHeader.getObjClass()); - } - - //take only SrpObject buffer. - ChannelBuffer tempCb = cb.readBytes(srpObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - flags = tempCb.readInt(); - bRFlag = 0 < flags; - srpID = tempCb.readInt(); - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepSrpObjectVer1(srpObjHeader, bRFlag, srpID, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = srpObjHeader.write(cb); - - //write Flags - byte bFlag; - - bFlag = (bRFlag) ? BBIT_SET : BBIT_RESET; - - cb.writeInt(bFlag); - - //write SrpId - cb.writeInt(srpId); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Failed to write srp tlv to channel buffer."); - } - - //now write SRP Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - - return cb.writerIndex(); - } - - /** - * Parse Optional TLvs from the channel buffer. - * - * @param cb of type channel buffer - * @return list of optional tlvs - * @throws PcepParseException when unsupported tlv is received in srp object - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - - case SymbolicPathNameTlv.TYPE: - tlv = SymbolicPathNameTlv.read(cb, hLength); - cb.skipBytes(hLength); - break; - - default: - throw new PcepParseException("Unsupported TLV received in SRP Object."); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llOutOptionalTlv.add(tlv); - } - - return llOutOptionalTlv; - } - - /** - * Writes optional tlvs to channel buffer. - * - * @param cb of type channel buffer - * @return true if writing optional tlv to channel buffer is success. - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - - return true; - } - - /** - * Builder class for PCEP srp Object. - */ - public static class Builder implements PcepSrpObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsSrpIdset = false; - private boolean bIsRFlagSet = false; - - private PcepObjectHeader srpObjHeader; - private int srpId; - private boolean bRFlag; - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepSrpObject build() throws PcepParseException { - PcepObjectHeader srpObjHeader = this.bIsHeaderSet ? this.srpObjHeader : DEFAULT_SRP_OBJECT_HEADER; - - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG; - - if (!this.bIsSrpIdset) { - throw new PcepParseException("SrpID not set while building SRP Object."); - } - - if (bIsPFlagSet) { - srpObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - srpObjHeader.setIFlag(bIFlag); - } - - return new PcepSrpObjectVer1(srpObjHeader, bRFlag, this.srpId, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getSrpObjHeader() { - return this.srpObjHeader; - } - - @Override - public Builder setSrpObjHeader(PcepObjectHeader obj) { - this.srpObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getSrpID() { - return this.srpId; - } - - @Override - public Builder setSrpID(int srpID) { - this.srpId = srpID; - this.bIsSrpIdset = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - this.bIsRFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("RFlag", bRFlag) - .add("SRPID", srpId) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java deleted file mode 100644 index ce589bc0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * 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.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provide the State Report for the Pcep Report Message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public class PcepStateReportVer1 implements PcepStateReport { - /* - * <state-report> ::= [<SRP>] - <LSP> - <path> - Where: - <path> ::= <ERO><attribute-list>[<RRO>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepStateReport.class); - - public static final int OBJECT_HEADER_LENGTH = 4; - - /** - * Provides PCEP Message path for report message. - */ - public class PcepMsgPath implements PcepStateReport.PcepMsgPath { - - /* - * <path> ::= <ERO><attribute-list>[<RRO>] - */ - - //PcepEroObject - private PcepEroObject eroObj; - private boolean isEroObjectSet; - //PcepAttribute List - private PcepAttribute attrList; - private boolean isAttributeListSet; - //PcepRroObject - private PcepRroObject rroObj; - private boolean isRroObjectSet; - private PcepBandwidthObject bandwidth; - private boolean isBandwidthObjectSet; - - /** - * Constructor to reset the parameters. - */ - public PcepMsgPath() { - eroObj = null; - attrList = null; - rroObj = null; - this.isEroObjectSet = false; - this.isAttributeListSet = false; - this.isRroObjectSet = false; - this.isBandwidthObjectSet = false; - } - - /** - * Constructor to initialize the parameters from PCEP Message path. - * - * @param eroObj PCEP ERO Object - * @param attrList PCEP Attribute - * @param rroObj PCEP Rro Object - * @param bandwidth PCEP bandwidth object - */ - public PcepMsgPath(PcepEroObject eroObj, PcepAttribute attrList, PcepRroObject rroObj, - PcepBandwidthObject bandwidth) { - - this.eroObj = eroObj; - this.attrList = attrList; - this.rroObj = rroObj; - this.bandwidth = bandwidth; - if (rroObj == null) { - this.isRroObjectSet = false; - } else { - this.isRroObjectSet = true; - } - if (eroObj == null) { - this.isEroObjectSet = false; - } else { - this.isEroObjectSet = true; - } - if (attrList == null) { - this.isAttributeListSet = false; - } else { - this.isAttributeListSet = true; - } - if (bandwidth == null) { - this.isBandwidthObjectSet = false; - } else { - this.isBandwidthObjectSet = true; - } - } - - /** - * Returns PcepEroObject. - * - * @return eroObj PCEP ERO Object - */ - @Override - public PcepEroObject getEroObject() { - return this.eroObj; - } - - /** - * Returns PCEP Attribute. - * - * @return attrList Attribute list - */ - @Override - public PcepAttribute getPcepAttribute() { - return this.attrList; - } - - /** - * Returns PcepRroObject. - * - * @return rroObj PCEP RRO Object - */ - @Override - public PcepRroObject getRroObject() { - return this.rroObj; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return this.bandwidth; - } - - @Override - public void setEroObject(PcepEroObject eroObj) { - this.eroObj = eroObj; - } - - @Override - public void setPcepAttribute(PcepAttribute attrList) { - this.attrList = attrList; - } - - @Override - public void setRroObject(PcepRroObject rroObj) { - this.rroObj = rroObj; - } - - @Override - public void setBandwidthObject(PcepBandwidthObject bandwidth) { - this.bandwidth = bandwidth; - } - - /** - * Reads all the Objects for PCEP Message Path. - * - * @param bb of type channel buffer - * @return PCEP Message path - * @throws PcepParseException when fails to read pcep message path - */ - @Override - public PcepMsgPath read(ChannelBuffer bb) throws PcepParseException { - - PcepEroObject eroObj; - PcepAttribute attrList; - PcepRroObject rroObj = null; - PcepBandwidthObject bandwidth = null; - - eroObj = PcepEroObjectVer1.read(bb); - attrList = PcepAttributeVer1.read(bb); - - boolean bBreakWhile = false; - while (0 < bb.readableBytes()) { - - if (bb.readableBytes() < OBJECT_HEADER_LENGTH) { - break; - } - bb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(bb); - bb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - switch (yObjClass) { - case PcepRroObjectVer1.RRO_OBJ_CLASS: - rroObj = PcepRroObjectVer1.read(bb); - break; - case PcepInterLayerObjectVer1.INTER_LAYER_OBJ_CLASS: - bb.skipBytes(tempObjHeader.getObjLen()); - break; - case PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS: - bandwidth = PcepBandwidthObjectVer1.read(bb); - break; - default: - //Otherthan above objects handle those objects in caller. - bBreakWhile = true; - break; - } - if (bBreakWhile) { - break; - } - } - return new PcepMsgPath(eroObj, attrList, rroObj, bandwidth); - } - - /** - * Writes all the objects for PCEP message path. - * - * @param bb of type channel buffer. - * @return object length index - * @throws PcepParseException when fails to write to channel buffer - */ - @Override - public int write(ChannelBuffer bb) throws PcepParseException { - int iLenStartIndex = bb.writerIndex(); - - //write Object header - if (this.isEroObjectSet) { - this.eroObj.write(bb); - } else { - throw new PcepParseException("Ero object is not set in path"); - } - - if (this.isAttributeListSet) { - this.attrList.write(bb); - } - - // RRO is optional check and read - if (this.isRroObjectSet) { - this.rroObj.write(bb); - // bandwidth should come along with RRO. - if (this.isBandwidthObjectSet) { - this.bandwidth.write(bb); - } - } - return bb.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - if (attrList != null) { - toStrHelper.add("AttributeList", attrList); - } - if (rroObj instanceof PcepRroObjectVer1) { - toStrHelper.add("RroObject", rroObj); - } - if (bandwidth instanceof PcepBandwidthObjectVer1) { - toStrHelper.add("bandwidthObject", bandwidth); - } - return toStrHelper.toString(); - } - } - - //SRP Object - private PcepSrpObject srpObject; - //LSP Object - private PcepLspObject lspObject; - //PcepMsgPath - private PcepStateReport.PcepMsgPath msgPath; - - /** - * Constructor to reset objects. - */ - public PcepStateReportVer1() { - this.srpObject = null; - this.lspObject = null; - this.msgPath = null; - } - - public PcepStateReportVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepStateReport.PcepMsgPath msgPath) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.msgPath = msgPath; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepStateReport.PcepMsgPath getMsgPath() { - return msgPath; - } - - @Override - public void setSrpObject(PcepSrpObject srpObj) { - this.srpObject = srpObj; - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setMsgPath(PcepStateReport.PcepMsgPath msgPath) { - this.msgPath = msgPath; - } - - /** - * Builder class for PCEP state report. - */ - public static class Builder implements PcepStateReport.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsPcepMsgPathSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Attribute list - private PcepStateReport.PcepMsgPath msgPath; - - @Override - public PcepStateReport build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP Attribute list - PcepStateReport.PcepMsgPath msgPath = null; - - if (this.bIsSRPObjectSet) { - srpObject = this.srpObject; - } - - if (!this.bIsLSPObjectSet) { - throw new PcepParseException(" LSP Object NOT Set while building PcepStateReport."); - } else { - lspObject = this.lspObject; - } - if (!this.bIsPcepMsgPathSet) { - throw new PcepParseException(" Message Path NOT Set while building PcepStateReport."); - } else { - msgPath = this.msgPath; - } - - return new PcepStateReportVer1(srpObject, lspObject, msgPath); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepStateReport.PcepMsgPath getMsgPath() { - return this.msgPath; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setMsgPath(PcepStateReport.PcepMsgPath msgPath) { - this.msgPath = msgPath; - this.bIsPcepMsgPathSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("MsgPath", msgPath) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java deleted file mode 100644 index b1c69406..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java +++ /dev/null @@ -1,506 +0,0 @@ -/* - * 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.ver1; - -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.PcepTEObject; -import org.onosproject.pcepio.types.LocalTENodeDescriptorsTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.RemoteTENodeDescriptorsTlv; -import org.onosproject.pcepio.types.RoutingUniverseTlv; -import org.onosproject.pcepio.types.TELinkAttributesTlv; -import org.onosproject.pcepio.types.TELinkDescriptorsTlv; -import org.onosproject.pcepio.types.TENodeAttributesTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP TE Object. - */ -public class PcepTEObjectVer1 implements PcepTEObject { - /* - * - reference: PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - TE Object-Class is [TBD6]. - - Two Object-Type values are defined for the TE object: - - o TE Node: TE Object-Type is 1. - - o TE Link: TE Object-Type is 2. - - The format of the TE object body is as follows: - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Protocol-ID | Flag |R|S| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TE-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepTEObjectVer1.class); - - public static final byte TE_OBJ_TYPE_NODE_VALUE = 1; - public static final byte TE_OBJ_TYPE_LINK_VALUE = 2; - - public static final byte TE_OBJ_CLASS = 101; //TBD6 in RFC. - public static final byte TE_OBJECT_VERSION = 1; - - // TE_OBJ_MINIMUM_LENGTH = TEObjectHeaderLen(4)+ TEObjectLen(8) - public static final short TE_OBJ_MINIMUM_LENGTH = 12; - - // Signaled ,all default values to be checked. - public static final byte DEFAULT_PROTOCOL_ID = 1; //IS-IS Level 1 - public static final boolean DEFAULT_R_FLAG = false; - public static final boolean DEFAULT_S_FLAG = false; - public static final int DEFAULT_TE_ID = 0; - - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int RIGHT_SHIFT_ONE = 1; - public static final int RIGHT_FIRST_FLAG = 0x1; - public static final int FLAG_SET_R_FLAG = 0x2; - public static final int FLAG_SET_S_FLAG = 0x1; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int MINIMUM_TLV_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_TE_OBJECT_HEADER = new PcepObjectHeader(TE_OBJ_CLASS, - TE_OBJ_TYPE_NODE_VALUE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - TE_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader teObjHeader; - private byte yProtocolId; - // 2-flags - private boolean bRFlag; - private boolean bSFlag; - private int iTEId; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize variables. - * - * @param teObjHeader TE Object header - * @param yProtocolId Protocol-ID - * @param bRFlag R-flag - * @param bSFlag S-flag - * @param iTEId TE-ID - * @param llOptionalTlv linked list of Optional TLV - */ - public PcepTEObjectVer1(PcepObjectHeader teObjHeader, byte yProtocolId, boolean bRFlag, boolean bSFlag, int iTEId, - LinkedList<PcepValueType> llOptionalTlv) { - - this.teObjHeader = teObjHeader; - this.yProtocolId = yProtocolId; - this.bRFlag = bRFlag; - this.bSFlag = bSFlag; - this.iTEId = iTEId; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public PcepObjectHeader getTEObjHeader() { - return this.teObjHeader; - } - - @Override - public void setTEObjHeader(PcepObjectHeader obj) { - this.teObjHeader = obj; - } - - @Override - public byte getProtocolId() { - return this.yProtocolId; - } - - @Override - public void setProtocolId(byte yProtId) { - this.yProtocolId = yProtId; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public void setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - } - - @Override - public int getTEId() { - return this.iTEId; - } - - @Override - public void setTEId(int iTEId) { - this.iTEId = iTEId; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from the channel buffer and returns Object of PcepTEObject. - * - * @param cb of type channel buffer - * @return Object of PcepTEObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepTEObject read(ChannelBuffer cb) throws PcepParseException { - log.debug("read"); - - PcepObjectHeader teObjHeader; - byte yProtocolId; - // 2-flags - boolean bRFlag; - boolean bSFlag; - int iTEId; - LinkedList<PcepValueType> llOptionalTlv; - - teObjHeader = PcepObjectHeader.read(cb); - - //take only TEObject buffer. - ChannelBuffer tempCb = cb.readBytes(teObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - yProtocolId = tempCb.readByte(); - //ignore first two bytes of Flags - tempCb.readShort(); - - Integer iTemp = (int) tempCb.readByte(); //read 3rd byte Flag - bSFlag = (iTemp & FLAG_SET_S_FLAG) == FLAG_SET_S_FLAG; - bRFlag = (iTemp & FLAG_SET_R_FLAG) == FLAG_SET_R_FLAG; - - iTEId = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepTEObjectVer1(teObjHeader, yProtocolId, bRFlag, bSFlag, iTEId, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = teObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("ObjectLength Index is " + objLenIndex); - } - - //write Protocol ID - cb.writeByte(this.yProtocolId); - - //write Flag - cb.writeShort(0); - - byte bTemp = 0; - if (bSFlag) { - bTemp = FLAG_SET_S_FLAG; - } - - if (bRFlag) { - bTemp = (byte) (bTemp | FLAG_SET_R_FLAG); - } - cb.writeByte(bTemp); - - //write TEId - cb.writeInt(iTEId); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - teObjHeader.setObjLen((short) length); - - cb.setShort(objLenIndex, (short) length); - - return cb.writerIndex(); - } - - /** - * Returns Linked list of PCEP Value Type. - * - * @param cb of channel buffer - * @return Linked list of PCEP Value Type - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv; - - llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_TLV_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - long lValue = 0; - - switch (hType) { - - case RoutingUniverseTlv.TYPE: - lValue = cb.readLong(); - tlv = new RoutingUniverseTlv(lValue); - break; - case LocalTENodeDescriptorsTlv.TYPE: - tlv = LocalTENodeDescriptorsTlv.read(cb, hLength); - break; - case RemoteTENodeDescriptorsTlv.TYPE: - tlv = RemoteTENodeDescriptorsTlv.read(cb, hLength); - break; - case TELinkDescriptorsTlv.TYPE: - tlv = TELinkDescriptorsTlv.read(cb, hLength); - break; - case TENodeAttributesTlv.TYPE: - tlv = TENodeAttributesTlv.read(cb, hLength); - break; - case TELinkAttributesTlv.TYPE: - tlv = TELinkAttributesTlv.read(cb, hLength); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of type channel buffer - * @return the writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP te object. - */ - public static class Builder implements PcepTEObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsProtocolIdSet = false; - private boolean bIsRFlagSet = false; - private boolean bIsSFlagSet = false; - private boolean bIsTEIdSet = false; - - private PcepObjectHeader teObjHeader; - private byte yProtocolId; - private boolean bRFlag; - private boolean bSFlag; - private int iTEId; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepTEObject build() { - PcepObjectHeader teObjHeader = this.bIsHeaderSet ? this.teObjHeader : DEFAULT_TE_OBJECT_HEADER; - - byte yProtocolId = this.bIsProtocolIdSet ? this.yProtocolId : DEFAULT_PROTOCOL_ID; - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_R_FLAG; - boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_S_FLAG; - int iTEId = this.bIsTEIdSet ? this.iTEId : DEFAULT_TE_ID; - - if (bIsPFlagSet) { - teObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - teObjHeader.setIFlag(bIFlag); - } - - return new PcepTEObjectVer1(teObjHeader, yProtocolId, bRFlag, bSFlag, iTEId, llOptionalTlv); - - } - - @Override - public PcepObjectHeader getTEObjHeader() { - return this.teObjHeader; - } - - @Override - public Builder setTEObjHeader(PcepObjectHeader obj) { - this.teObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getProtocolId() { - return this.yProtocolId; - } - - @Override - public Builder setProtocolId(byte yProtId) { - this.yProtocolId = yProtId; - this.bIsProtocolIdSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - this.bIsRFlagSet = true; - return this; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public Builder setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - this.bIsSFlagSet = true; - return this; - } - - @Override - public int getTEId() { - return this.iTEId; - } - - @Override - public Builder setTEId(int iTEId) { - this.iTEId = iTEId; - this.bIsTEIdSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", teObjHeader) - .add("ProtocolId", yProtocolId) - .add("RFlag", (bRFlag) ? 1 : 0) - .add("SFlag", (bSFlag) ? 1 : 0) - .add("TeId", iTEId) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java deleted file mode 100644 index 92833080..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * 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.ver1; - -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.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.protocol.PcepTEReportMsg; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP TE Report Message. - */ -class PcepTEReportMsgVer1 implements PcepTEReportMsg { - - /* - * Ref : draft-dhodylee-pce-pcep-te-data-extn-02, section 8.1 - - <TERpt Message> ::= <Common Header> - <te-report-list> - Where: - <te-report-list> ::= <TE>[<te-report-list>] - */ - - private static final Logger log = LoggerFactory.getLogger(PcepTEReportMsgVer1.class); - //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+TEObjMinLen(12) - public static final int PACKET_MINIMUM_LENGTH = 16; - public static final PcepType MSG_TYPE = PcepType.TE_REPORT; - // <te-report-list> - private LinkedList<PcepTEObject> teReportList; - - public static final PcepTEReportMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCPE te report message form channel buffer. - */ - static class Reader implements PcepMessageReader<PcepTEReportMsg> { - - LinkedList<PcepTEObject> teReportList; - - @Override - public PcepTEReportMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - teReportList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PcepMessageVer1.PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.TE_REPORT(14), got=" + type); - } - - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " + length); - } - - // Parse state report list - parseTEReportList(cb); - - return new PcepTEReportMsgVer1(teReportList); - } - - /** - * Parse te-report-list. - * - * @param cb input Channel Buffer - * @throws PcepParseException when fails to parse TE Report list. - */ - public void parseTEReportList(ChannelBuffer cb) throws PcepParseException { - // <te-report-list> ::= <TE>[<te-report-list>] - - while (0 < cb.readableBytes()) { - //store TE objectS - if (!teReportList.add(PcepTEObjectVer1.read(cb))) { - throw new PcepParseException("Failed to add TE object to TE report list"); - } - } - } - } - - /** - * Constructor to initialize TE Report List. - * - * @param teReportList list of PCEP TE Object - */ - PcepTEReportMsgVer1(LinkedList<PcepTEObject> teReportList) { - this.teReportList = teReportList; - } - - /** - * Builder class for PCEP te report message. - */ - static class Builder implements PcepTEReportMsg.Builder { - // PCEP TE Report message fields - LinkedList<PcepTEObject> teReportList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.TE_REPORT; - } - - @Override - public PcepTEReportMsg build() { - return new PcepTEReportMsgVer1(this.teReportList); - } - - @Override - public LinkedList<PcepTEObject> getTEReportList() { - return this.teReportList; - } - - @Override - public Builder setTEReportList(LinkedList<PcepTEObject> ll) { - this.teReportList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer bb) throws PcepParseException { - WRITER.write(bb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP te report message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepTEReportMsgVer1> { - - @Override - public void write(ChannelBuffer bb, PcepTEReportMsgVer1 message) throws PcepParseException { - - int startIndex = bb.writerIndex(); - - // first 3 bits set to version - bb.writeByte((byte) (PcepMessageVer1.PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - bb.writeByte(MSG_TYPE.getType()); - - // Length of the message will be updated at the end - // First write with 0s - int msgLenIndex = bb.writerIndex(); - bb.writeShort((short) 0); - - ListIterator<PcepTEObject> listIterator = message.teReportList.listIterator(); - - while (listIterator.hasNext()) { - PcepTEObject teObj = listIterator.next(); - teObj.write(bb); - } - - // update message length field - int length = bb.writerIndex() - startIndex; - bb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepTEObject> getTEReportList() { - return this.teReportList; - } - - @Override - public void setTEReportList(LinkedList<PcepTEObject> ll) { - this.teReportList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("TeReportList", teReportList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java deleted file mode 100644 index 53c66872..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java +++ /dev/null @@ -1,300 +0,0 @@ -/* - * 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.ver1; - -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.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepUpdateMsg; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP update message. - */ - -class PcepUpdateMsgVer1 implements PcepUpdateMsg { - - // Pcep version: 1 - - /* The format of the PCUpd message is as follows: - * <PCUpd Message> ::= <Common Header> - * <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * <metric-list> ::=<METRIC>[<metric-list>] - * - * 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 | Message-Type | Message-Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * // UPDATE REQUEST LIST // - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * Reference:Internet-Draft-PCEP Extensions-for-Stateful-PCE-10 - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepUpdateMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - // UpdateMsgMinLength = SrpObjMinLentgh(12)+LspObjMinLength(8)+EroObjMinLength(12)+ CommonHeaderLength(4) - public static final short PACKET_MINIMUM_LENGTH = 36; - public static final PcepType MSG_TYPE = PcepType.UPDATE; - //Update Request List - private LinkedList<PcepUpdateRequest> llUpdateRequestList; - - public static final PcepUpdateMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads UpdateMessage from the channel. - */ - static class Reader implements PcepMessageReader<PcepUpdateMsg> { - - LinkedList<PcepUpdateRequest> llUpdateRequestList; - - @Override - public PcepUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Readable bytes is less than update message minimum length"); - } - - llUpdateRequestList = new LinkedList<>(); - - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 11 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.UPDATE(11), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - - log.debug("reading update message of length " + length); - - // parse Update Request list - if (!parseUpdateRequestList(cb)) { - throw new PcepParseException("parsing Update Request List Failed."); - } - - return new PcepUpdateMsgVer1(llUpdateRequestList); - } - - /** - * Parse update request list. - * - * @param cb of type channel buffer - * @return true after parsing Update Request List - * @throws PcepParseException while parsing update request list from channel buffer - */ - public boolean parseUpdateRequestList(ChannelBuffer cb) throws PcepParseException { - - /* <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - */ - - while (0 < cb.readableBytes()) { - - PcepUpdateRequest pceUpdateReq = new PcepUpdateRequestVer1(); - - //Read SRP Object and Store it. - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pceUpdateReq.setSrpObject(srpObj); - - //Read LSP object and Store it. - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pceUpdateReq.setLspObject(lspObj); - - // Read Msg Path and store it. - PcepMsgPath msgPath = new PcepMsgPathVer1().read(cb); - pceUpdateReq.setMsgPath(msgPath); - - llUpdateRequestList.add(pceUpdateReq); - } - return true; - } - } - - /** - * Constructor to initialize llUpdateRequestList. - * - * @param llUpdateRequestList list of PcepUpdateRequest. - */ - PcepUpdateMsgVer1(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - } - - /** - * Builder class for PCPE update message. - */ - static class Builder implements PcepUpdateMsg.Builder { - - // PCEP report message fields - LinkedList<PcepUpdateRequest> llUpdateRequestList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.UPDATE; - } - - @Override - public PcepUpdateMsg build() { - return new PcepUpdateMsgVer1(this.llUpdateRequestList); - } - - @Override - public LinkedList<PcepUpdateRequest> getUpdateRequestList() { - return this.llUpdateRequestList; - } - - @Override - public Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - return this; - } - - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes UpdateMessage to the channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepUpdateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepUpdateMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - /* length is length of variable message, will be updated at the end - * Store the position of message - * length in buffer - */ - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepUpdateRequest> listIterator = message.llUpdateRequestList.listIterator(); - - while (listIterator.hasNext()) { - - PcepUpdateRequest updateReq = listIterator.next(); - - //SRP object is mandatory - PcepSrpObject srpObj = updateReq.getSrpObject(); - srpObj.write(cb); - - //LSP object is mandatory - PcepLspObject lspObj = updateReq.getLspObject(); - lspObj.write(cb); - - //PATH object is mandatory - PcepMsgPath msgPath = updateReq.getMsgPath(); - msgPath.write(cb); - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepUpdateRequest> getUpdateRequestList() { - return this.llUpdateRequestList; - } - - @Override - public void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("UpdateRequestList", llUpdateRequestList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java deleted file mode 100644 index 0bcc2907..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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.ver1; - -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Update Request List. - */ -public class PcepUpdateRequestVer1 implements PcepUpdateRequest { - - /* <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepUpdateRequestVer1.class); - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Message path - private PcepMsgPath msgPath; - - /** - * Default constructor. - */ - public PcepUpdateRequestVer1() { - srpObject = null; - lspObject = null; - msgPath = null; - } - - /** - * Constructor to initialize all member variables. - * - * @param srpObject srp object - * @param lspObject lsp object - * @param msgPath message path object - */ - public PcepUpdateRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepMsgPath msgPath) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.msgPath = msgPath; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepMsgPath getMsgPath() { - return msgPath; - } - - @Override - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setMsgPath(PcepMsgPath msgPath) { - this.msgPath = msgPath; - } - - /** - * Builder class for PCEP update request. - */ - public static class Builder implements PcepUpdateRequest.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsPcepMsgPathSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Attribute list - private PcepMsgPath msgPath; - - @Override - public PcepUpdateRequest build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP Attribute list - PcepMsgPath msgPath = null; - - if (!this.bIsSRPObjectSet) { - throw new PcepParseException(" SRP Object NOT Set while building PcepUpdateRequest."); - } else { - srpObject = this.srpObject; - } - if (!this.bIsLSPObjectSet) { - throw new PcepParseException(" LSP Object NOT Set while building PcepUpdateRequest."); - } else { - lspObject = this.lspObject; - } - if (!this.bIsPcepMsgPathSet) { - throw new PcepParseException(" Msg Path NOT Set while building PcepUpdateRequest."); - } else { - msgPath = this.msgPath; - } - - return new PcepUpdateRequestVer1(srpObject, lspObject, msgPath); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepMsgPath getMsgPath() { - return this.msgPath; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setMsgPath(PcepMsgPath msgPath) { - this.msgPath = msgPath; - this.bIsPcepMsgPathSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("MsgPath", msgPath) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java deleted file mode 100644 index 32d49ec9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Implementation of PCEP messages. - */ -package org.onosproject.pcepio.protocol.ver1; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java deleted file mode 100644 index 62ed4e7f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Administrative Group Tlv which contains value (32 Bit ). - */ -public class AdministrativeGroupTlv implements PcepValueType { - - /* REFERENCE :[RFC5305]/3.1 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB33] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | value (32 Bit ) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(AdministrativeGroupTlv.class); - - public static final short TYPE = 3; //TDB33 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue of Administrative-Group-Tlv. - */ - public AdministrativeGroupTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created AdministrativeGroupTlv object. - * - * @param raw value. - * @return object of Administrative-Group-Tlv - */ - public static AdministrativeGroupTlv of(final int raw) { - return new AdministrativeGroupTlv(raw); - } - - /** - * Returns raw value. - * - * @return rawValue raw value - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AdministrativeGroupTlv) { - AdministrativeGroupTlv other = (AdministrativeGroupTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Administrative-Group-Tlv. - * - * @param c input channel buffer - * @return object of Administrative-Group-Tlv - */ - public static AdministrativeGroupTlv read(ChannelBuffer c) { - return AdministrativeGroupTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java deleted file mode 100644 index 3f213191..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Autonomous-System-Tlv which contains opaque value (32 Bit AS Number). - */ -public class AutonomousSystemTlv implements PcepValueType { - - /* Reference :RFC3209 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD10] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit AS Number) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(AutonomousSystemTlv.class); - - public static final short TYPE = 100; //TODD:change this TBD10 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Autonomous-System-Tlv - */ - public AutonomousSystemTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created AutonomousSystemTlv object. - * - * @param raw value of opaque. - * @return object of Autonomous-System-Tlv - */ - public static AutonomousSystemTlv of(final int raw) { - return new AutonomousSystemTlv(raw); - } - - /** - * Returns opaque value. - * - * @return rawValue opaque value. - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AutonomousSystemTlv) { - AutonomousSystemTlv other = (AutonomousSystemTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of AutonomousSystemTlv. - * - * @param c input channel buffer - * @return object of Autonomous-System-Tlv - */ - public static AutonomousSystemTlv read(ChannelBuffer c) { - return AutonomousSystemTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("TYPE", TYPE) - .add("Length", LENGTH) - .add("value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java deleted file mode 100644 index 4981649f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides BGP LS identifier which contains opaque value (32 Bit ID). - */ -public class BGPLSidentifierTlv implements PcepValueType { - - /* Reference :draft-ietf-idr-ls-distribution-10 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD11] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit ID). | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(BGPLSidentifierTlv.class); - - public static final short TYPE = 17; //TODD:change this TBD11 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue BGP LS identifier Tlv - */ - public BGPLSidentifierTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created BGPLSidentifierTlv object. - * - * @param raw value - * @return object of BGPLSidentifierTlv - */ - public static BGPLSidentifierTlv of(final int raw) { - return new BGPLSidentifierTlv(raw); - } - - /** - * Returns opaque value. - * - * @return rawValue opaque value - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof BGPLSidentifierTlv) { - BGPLSidentifierTlv other = (BGPLSidentifierTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of BGPLSidentifierTlv. - * - * @param c input channel buffer - * @return object of BGP LS identifier Tlv - */ - public static BGPLSidentifierTlv read(ChannelBuffer c) { - return BGPLSidentifierTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java deleted file mode 100644 index 40f89f4c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * 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 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; - -import com.google.common.base.MoreObjects; - -/** - * Provide the error object list with open object. - */ -public class ErrorObjListWithOpen { - //errorObjList is mandatory - private LinkedList<PcepErrorObject> llerrorObjList; - // openObject is optional - private PcepOpenObject openObject; - // flag to check if open object is set or not - private boolean isOpenObjectSet; - protected static final Logger log = LoggerFactory.getLogger(ErrorObjListWithOpen.class); - - /** - * Constructor to initialize Error and OPEN object. - * - * @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 ERROR Object. - * - * @param errObj ERROR Object list - */ - public ErrorObjListWithOpen(LinkedList<PcepErrorObject> errObj) { - this.llerrorObjList = errObj; - this.openObject = null; - isOpenObjectSet = false; - } - - /** - * Return list of Error Types. - * - * @return error types list - */ - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> errorType = new LinkedList<>(); - 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; - } - - /** - * Return list of Error Values. - * - * @return error values list - */ - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> errorValue = new LinkedList<>(); - 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 true if ERROR Object list is empty otherwise false - */ - public boolean isErrorObjListWithOpenPresent() { - // ( <error-obj-list> [<Open>] - // At least in this case <error-obj-list> should be present. - return !this.llerrorObjList.isEmpty(); - } - - /** - * Write Error Object List and Open Object to channel buffer. - * - * @param cb output channel buffer - * @return length of written Error object list with open - * @throws PcepParseException when mandatory fields are not set - */ - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.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(cb); - bIsErrObjListFound = true; - } - } - - if (!bIsErrObjListFound) { - throw new PcepParseException("<error-obj-list> is mandatory."); - } - - //Open Object is optional , if present write. - if (openObject != null) { - openObject.write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ErrorObjList", llerrorObjList) - .add("Open", openObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java deleted file mode 100644 index 212aa3d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides GMPLS Capability Tlv. - */ -public class GmplsCapabilityTlv implements PcepValueType { - - /* - * GMPLS-CAPABILITY TLV format - * reference :draft-ietf-pce-gmpls-pcep-extensions -2.1.1 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=14 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(GmplsCapabilityTlv.class); - - public static final short TYPE = 14; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue of Gmpls-Capability-Tlv - */ - public GmplsCapabilityTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created GmplsCapabilityTlv object. - * - * @param raw Flags value - * @return object of Gmpls-Capability-Tlv - */ - public static GmplsCapabilityTlv of(final int raw) { - return new GmplsCapabilityTlv(raw); - } - - /** - * Returns value of Flags. - * - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof GmplsCapabilityTlv) { - GmplsCapabilityTlv other = (GmplsCapabilityTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Gmpls-Capability-Tlv. - * - * @param c input channel buffer - * @return object of Gmpls-Capability-Tlv - */ - public static GmplsCapabilityTlv read(ChannelBuffer c) { - return GmplsCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java deleted file mode 100644 index ab3f1247..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IGP Link Metric . - */ -public class IGPMetricTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr-ls-distribution] /3.3.2.4 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB40 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // IGP Link Metric (variable length) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IGPMetricTlv.class); - - public static final short TYPE = 1095; //TODO:NEED TO HANDLE TDB40 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue IGP Link Metric - * @param hLength length - */ - public IGPMetricTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - this.hLength = hLength; - } - - /** - * Returns newly created IGPMetricTlv object. - * - * @param raw value of IGP Link Metric - * @param hLength length - * @return object of IGPMetricTlv - */ - public static IGPMetricTlv of(final byte[] raw, short hLength) { - return new IGPMetricTlv(raw, hLength); - } - - /** - * Returns value of IGP Link Metric. - * - * @return rawValue of IGP Link Metric - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IGPMetricTlv) { - IGPMetricTlv other = (IGPMetricTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IGPMetricTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of IGPMetricTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iIGPMetric = new byte[hLength]; - c.readBytes(iIGPMetric, 0, hLength); - return new IGPMetricTlv(iIGPMetric, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java deleted file mode 100644 index d1a30157..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Interface Address . - */ -public class IPv4InterfaceAddressTlv implements PcepValueType { - - /* - * reference :[RFC5305]/3.2 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=6 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Interface Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4InterfaceAddressTlv.class); - - public static final short TYPE = 6; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue of IPv4-Interface-Address. - */ - public IPv4InterfaceAddressTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4InterfaceAddressTlv object. - * - * @param raw value of IPv4-Interface-Address - * @return object of IPv4-Interface-Address-Tlv - */ - public static IPv4InterfaceAddressTlv of(final int raw) { - return new IPv4InterfaceAddressTlv(raw); - } - - /** - * Returns value of IPv4 Interface Address. - * - * @return rawValue IPv4 Interface Address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4InterfaceAddressTlv) { - IPv4InterfaceAddressTlv other = (IPv4InterfaceAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4InterfaceAddressTlv. - * - * @param c input channel buffer - * @return object of IPv4-Interface-Address-Tlv - */ - public static IPv4InterfaceAddressTlv read(ChannelBuffer c) { - return IPv4InterfaceAddressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java deleted file mode 100644 index 0f98777f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Neighbor Address . - */ -public class IPv4NeighborAddressTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.3 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=8 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Neighbor Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4NeighborAddressTlv.class); - - public static final short TYPE = 8; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4-Neighbor-Address-Tlv - */ - public IPv4NeighborAddressTlv(int rawValue) { - log.debug("IPv4NeighborAddressTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4NeighborAddressTlv object. - * - * @param raw value of IPv4-Neighbor-Address - * @return object of IPv4NeighborAddressTlv - */ - public static IPv4NeighborAddressTlv of(final int raw) { - return new IPv4NeighborAddressTlv(raw); - } - - /** - * Returns value of IPv4 Neighbor Address. - * - * @return rawValue IPv4 Neighbor Address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4NeighborAddressTlv) { - IPv4NeighborAddressTlv other = (IPv4NeighborAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4-Neighbor-Address-Tlv. - * - * @param c input channel buffer - * @return object of IPv4-Neighbor-Address-Tlv - */ - public static IPv4NeighborAddressTlv read(ChannelBuffer c) { - return IPv4NeighborAddressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java deleted file mode 100644 index 031b5db6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * 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. - */ - -/** - * @author b00295750 - * - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Sub Object. - */ -public class IPv4SubObject implements PcepValueType { - - /*Reference : RFC 4874:3.1.1 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(IPv4SubObject.class); - - public static final byte TYPE = 0x01; - public static final byte LENGTH = 8; - public static final byte VALUE_LENGTH = 6; - public static final byte OBJ_LENGTH = 8; - public static final byte LBIT = 0; - public static final int SHIFT_LBIT_POSITION = 7; - private int ipAddress; - private byte prefixLen; - private byte resvd; - - /** - * Constructor to initialize ipv4 address. - * - * @param ipAddr ipv4 address - */ - public IPv4SubObject(int ipAddr) { - this.ipAddress = ipAddr; - } - - /** - * constructor to initialize ipAddress, prefixLen and resvd. - * - * @param ipAddress ipv4 address - * @param prefixLen prefix length - * @param resvd reserved flags value - */ - public IPv4SubObject(int ipAddress, byte prefixLen, byte resvd) { - this.ipAddress = ipAddress; - this.prefixLen = prefixLen; - this.resvd = resvd; - } - - /** - * Returns a new instance of IPv4SubObject. - * - * @param ipAddress ipv4 address - * @param prefixLen prefix length - * @param resvd reserved flags value - * @return object of IPv4SubObject - */ - public static IPv4SubObject of(int ipAddress, byte prefixLen, byte resvd) { - return new IPv4SubObject(ipAddress, prefixLen, resvd); - } - - /** - * Returns prefixLen of IPv4 IP address. - * - * @return byte value of rawValue - */ - public byte getPrefixLen() { - return prefixLen; - } - - /** - * Returns value of IPv4 IP address. - * - * @return int value of ipv4 address - */ - public int getIpAddress() { - return ipAddress; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress, prefixLen, resvd); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4SubObject) { - IPv4SubObject other = (IPv4SubObject) obj; - return Objects.equals(this.ipAddress, other.ipAddress) && Objects.equals(this.prefixLen, other.prefixLen) - && Objects.equals(this.resvd, other.resvd); - } - return false; - } - - /** - * Reads the channel buffer and returns object of IPv4SubObject. - * - * @param c type of channel buffer - * @return object of IPv4SubObject - */ - public static PcepValueType read(ChannelBuffer c) { - int ipAddess = c.readInt(); - byte prefixLen = c.readByte(); - byte resvd = c.readByte(); - return new IPv4SubObject(ipAddess, prefixLen, resvd); - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - byte bValue = LBIT; - bValue = (byte) (bValue << SHIFT_LBIT_POSITION); - bValue = (byte) (bValue | TYPE); - c.writeByte(bValue); - c.writeByte(OBJ_LENGTH); - c.writeInt(ipAddress); - c.writeByte(prefixLen); - c.writeByte(resvd); - - return c.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("IPv4Address", ipAddress) - .add("PrefixLength", prefixLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java deleted file mode 100644 index 2abf4cdc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 TE Router Id Of Local Node. - */ -public class IPv4TERouterIdOfLocalNodeTlv implements PcepValueType { - - /* Reference:[RFC5305]/4.3 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB25] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 TE Router Id Of Local Node | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4TERouterIdOfLocalNodeTlv.class); - - public static final short TYPE = 134; //TDB25 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4-TE-RouterId-Of-Local-Node-Tlv - */ - public IPv4TERouterIdOfLocalNodeTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4TERouterIdOfLocalNodeTlv object. - * - * @param raw value of IPv4-TE-RouterId-Of-Local-Node - * @return object of IPv4TERouterIdOfLocalNodeTlv - */ - public static IPv4TERouterIdOfLocalNodeTlv of(final int raw) { - return new IPv4TERouterIdOfLocalNodeTlv(raw); - } - - /** - * Returns value of IPv4 TE Router Id Of Local Node. - * - * @return rawValue IPv4 TE Router Id Of Local Node - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4TERouterIdOfLocalNodeTlv) { - IPv4TERouterIdOfLocalNodeTlv other = (IPv4TERouterIdOfLocalNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4TERouterIdOfLocalNodeTlv. - * - * @param c input channel buffer - * @return object of IPv4TERouterIdOfLocalNodeTlv - */ - public static IPv4TERouterIdOfLocalNodeTlv read(ChannelBuffer c) { - return IPv4TERouterIdOfLocalNodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java deleted file mode 100644 index 21e09890..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 TE Router Id Of Remote Node. - */ -public class IPv4TERouterIdOfRemoteNodeTlv implements PcepValueType { - - /* Reference :[RFC5305]/4.3 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB28] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 TE Router Id Of Remote Node | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4TERouterIdOfRemoteNodeTlv.class); - - public static final short TYPE = 1340; //TDB28 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4 TE RouterId Of Remote Node Tlv - */ - public IPv4TERouterIdOfRemoteNodeTlv(int rawValue) { - log.debug("IPv4TERouterIdOfRemoteNodeTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4TERouterIdOfRemoteNodeTlv object. - * - * @param raw IPv4 TE RouterId Of Remote Node - * @return object of IPv4TERouterIdOfRemoteNodeTlv - */ - public static IPv4TERouterIdOfRemoteNodeTlv of(final int raw) { - return new IPv4TERouterIdOfRemoteNodeTlv(raw); - } - - /** - * Returns value of IPv4 TE Router Id Of Remote Node. - * - * @return rawValue IPv4 TE Router Id Of Remote Node - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4TERouterIdOfRemoteNodeTlv) { - IPv4TERouterIdOfRemoteNodeTlv other = (IPv4TERouterIdOfRemoteNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4TERouterIdOfRemoteNodeTlv. - * - * @param c input channel buffer - * @return object of IPv4TERouterIdOfRemoteNodeTlv - */ - public static IPv4TERouterIdOfRemoteNodeTlv read(ChannelBuffer c) { - return IPv4TERouterIdOfRemoteNodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java deleted file mode 100644 index 2ebab1ad..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Interface Address. REFERENCE :[RFC6119]/4.2. - */ -public class IPv6InterfaceAddressTlv implements PcepValueType { - - protected static final Logger log = LoggerFactory.getLogger(IPv6InterfaceAddressTlv.class); - - public static final short TYPE = 12; //TDB18 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6InterfaceAddressTlv NONE = new IPv6InterfaceAddressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6InterfaceAddressTlv NO_MASK = new IPv6InterfaceAddressTlv(NO_MASK_VAL); - public static final IPv6InterfaceAddressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6 Interface Address Tlv - */ - public IPv6InterfaceAddressTlv(byte[] rawValue) { - log.debug("IPv6InterfaceAddressTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6InterfaceAddressTlv object. - * - * @param raw IPv6 Interface Address - * @return object of IPv6InterfaceAddressTlv - */ - public static IPv6InterfaceAddressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6InterfaceAddressTlv(raw); - } - - /** - * Returns value of IPv6 Interface Address. - * - * @return rawValue raw value - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 Interface Address. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6InterfaceAddressTlv) { - IPv6InterfaceAddressTlv other = (IPv6InterfaceAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6InterfaceAddressTlv. - * - * @param c input channel buffer - * @return object of IPv6InterfaceAddressTlv - */ - public static IPv6InterfaceAddressTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6InterfaceAddressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java deleted file mode 100644 index 8b3390b6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Neighbor Address. Reference :[RFC6119]/4.3. - */ -public class IPv6NeighborAddressTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6NeighborAddressTlv.class); - - public static final short TYPE = 13; // TDB19 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6NeighborAddressTlv NONE = new IPv6NeighborAddressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6NeighborAddressTlv NO_MASK = new IPv6NeighborAddressTlv(NO_MASK_VAL); - public static final IPv6NeighborAddressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6 Neighbor Address Tlv - */ - public IPv6NeighborAddressTlv(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6NeighborAddressTlv object. - * - * @param raw IPv6 Neighbor Address - * @return object of IPv6 Neighbor Address Tlv - */ - public static IPv6NeighborAddressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6NeighborAddressTlv(raw); - } - - /** - * Returns value of IPv6 Neighbor Address. - * - * @return rawValue raw value - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 Neighbor Address. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6NeighborAddressTlv) { - IPv6NeighborAddressTlv other = (IPv6NeighborAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6NeighborAddressTlv. - * - * @param c input channel buffer - * @return object of IPv6NeighborAddressTlv - */ - public static IPv6NeighborAddressTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6NeighborAddressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java deleted file mode 100644 index 8e1719e0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Sub Object. - */ -public class IPv6SubObject implements PcepValueType { - - /* reference :RFC 4874. - Subobject : IPv6 address - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Type - - 0x02 IPv6 address - - Length - - The Length contains the total length of the subobject in bytes, - including the Type and Length fields. The Length is always 20. - - IPv6 address - - A 128-bit unicast host address. - - Prefix length - - 128 - - Flags - - 0x01 Local protection available - - Indicates that the link downstream of this node is - protected via a local repair mechanism. This flag can - only be set if the Local protection flag was set in the - SESSION_ATTRIBUTE object of the corresponding Path - message. - - 0x02 Local protection in use - - Indicates that a local repair mechanism is in use to - maintain this tunnel (usually in the face of an outage - of the link it was previously routed over). - */ - protected static final Logger log = LoggerFactory.getLogger(IPv6SubObject.class); - - public static final short TYPE = 0x02; - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final IPv6SubObject NONE = new IPv6SubObject(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final IPv6SubObject NO_MASK = new IPv6SubObject(NO_MASK_VAL); - public static final IPv6SubObject FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue with ipv6 address. - * - * @param rawValue ipv6 address - */ - public IPv6SubObject(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * To create instance of IPv6SubObject. - * - * @param raw byte array of ipv6 address - * @return object of IPv6SubObject - */ - public static IPv6SubObject of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6SubObject(raw); - } - - /** - * Returns value of IPv6 Sub Object. - * - * @return byte array of ipv6 address - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6SubObject) { - IPv6SubObject other = (IPv6SubObject) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6SubObject. - * - * @param c type of channel buffer - * @return object of IPv6SubObject - */ - public static IPv6SubObject read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6SubObject.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java deleted file mode 100644 index bc8eca65..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 TE Router Id of Local Node. Reference :[RFC6119]/4.1. - */ -public class IPv6TERouterIdofLocalNodeTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6TERouterIdofLocalNodeTlv.class); - - public static final short TYPE = 140; //TDB26 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final IPv6TERouterIdofLocalNodeTlv NONE = new IPv6TERouterIdofLocalNodeTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final IPv6TERouterIdofLocalNodeTlv NO_MASK = new IPv6TERouterIdofLocalNodeTlv(NO_MASK_VAL); - public static final IPv6TERouterIdofLocalNodeTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6TERouterIdofLocalNodeTlv - */ - public IPv6TERouterIdofLocalNodeTlv(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6TERouterIdofLocalNodeTlv object. - * - * @param raw IPv6 TE Router Id of Local Node - * @return object of IPv6TERouterIdofLocalNodeTlv - */ - public static IPv6TERouterIdofLocalNodeTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6TERouterIdofLocalNodeTlv(raw); - } - - /** - * Returns value of IPv6 TE Router Id of Local Node. - * - * @return byte array value of rawValue - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 TE Router Id of Local Node. - * - * @return byte array value of rawValue - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6TERouterIdofLocalNodeTlv) { - IPv6TERouterIdofLocalNodeTlv other = (IPv6TERouterIdofLocalNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6TERouterIdofLocalNodeTlv. - * - * @param c input channel buffer - * @return object of IPv6TERouterIdofLocalNodeTlv - */ - public static IPv6TERouterIdofLocalNodeTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6TERouterIdofLocalNodeTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java deleted file mode 100644 index 1fc7124c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 TE Router Id of Remote Node. Reference :[RFC6119]/4.1. - */ -public class IPv6TERouterIdofRemoteNodeTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6TERouterIdofRemoteNodeTlv.class); - - public static final short TYPE = 1400; //TDB29 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6TERouterIdofRemoteNodeTlv NONE = new IPv6TERouterIdofRemoteNodeTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6TERouterIdofRemoteNodeTlv NO_MASK = new IPv6TERouterIdofRemoteNodeTlv(NO_MASK_VAL); - public static final IPv6TERouterIdofRemoteNodeTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue IPv6TERouterIdofRemoteNodeTlv - */ - public IPv6TERouterIdofRemoteNodeTlv(byte[] rawValue) { - log.debug("IPv6TERouterIdofRemoteNodeTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6TERouterIdofRemoteNodeTlv object. - * - * @param raw IPv6 TE Router Id of RemoteNode - * @return object of IPv6TERouterIdofRemoteNodeTlv - */ - public static IPv6TERouterIdofRemoteNodeTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6TERouterIdofRemoteNodeTlv(raw); - } - - /** - * Returns value of IPv6 TE Router Id of Remote Node. - * - * @return byte array value of rawValue - */ - public byte[] getBytes() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6TERouterIdofRemoteNodeTlv) { - IPv6TERouterIdofRemoteNodeTlv other = (IPv6TERouterIdofRemoteNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6TERouterIdofRemoteNodeTlv. - * - * @param c input channel buffer - * @return object of IPv6TERouterIdofRemoteNodeTlv - */ - public static IPv6TERouterIdofRemoteNodeTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6TERouterIdofRemoteNodeTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java deleted file mode 100644 index 648dbb66..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides ISIS Area Identifier. - */ -public class ISISAreaIdentifierTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution]/3.3.1.2 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD24] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Area Identifier (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(ISISAreaIdentifierTlv.class); - - public static final short TYPE = 107; //TODO:NEED TO HANDLE TBD24 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue ISIS-Area-Identifier - * @param hLength length - */ - public ISISAreaIdentifierTlv(byte[] rawValue, short hLength) { - log.debug("ISISAreaIdentifierTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created ISISAreaIdentifierTlv object. - * - * @param raw ISIS-Area-Identifier - * @param hLength length - * @return object of ISISAreaIdentifierTlv - */ - public static ISISAreaIdentifierTlv of(final byte[] raw, short hLength) { - return new ISISAreaIdentifierTlv(raw, hLength); - } - - /** - * Returns value of ISIS-Area-Identifier. - * - * @return byte array of rawValue - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ISISAreaIdentifierTlv) { - ISISAreaIdentifierTlv other = (ISISAreaIdentifierTlv) obj; - return Objects.equals(hLength, other.hLength) && Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of ISISAreaIdentifierTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of ISISAreaIdentifierTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iISISAreaIdentifier = new byte[hLength]; - c.readBytes(iISISAreaIdentifier, 0, hLength); - return new ISISAreaIdentifierTlv(iISISAreaIdentifier, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java deleted file mode 100644 index 5b1c2438..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * LabelSubObject: Provides a LabelSubObject. - */ -public class LabelSubObject implements PcepValueType { - - /* Reference : RFC 3209 - * LABEL Sub Object - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | Flags | C-Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Contents of Label Object | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(LabelSubObject.class); - - public static final short TYPE = 0x03; - public static final short LENGTH = 8; - private final byte flags; - private final byte cType; - private final int contents; - - /** - * constructor to initialize parameters for LabelSubObject. - * - * @param flags flags - * @param cType C-Type - * @param contents Contents of label object - */ - public LabelSubObject(byte flags, byte cType, int contents) { - this.flags = flags; - this.cType = cType; - this.contents = contents; - } - - /** - * Return an object of LabelSubObject. - * - * @param flags flags - * @param cType C-type - * @param contents contents of label objects - * @return object of LabelSubObject - */ - public static LabelSubObject of(byte flags, byte cType, int contents) { - return new LabelSubObject(flags, cType, contents); - } - - /** - * Returns Flags. - * - * @return flags - */ - public byte getFlags() { - return flags; - } - - /** - * Returns cType. - * - * @return cType - */ - public byte getCtype() { - return cType; - } - - /** - * Returns contents. - * - * @return contents - */ - public int getContents() { - return contents; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(flags, cType, contents); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LabelSubObject) { - LabelSubObject other = (LabelSubObject) obj; - return Objects.equals(this.flags, other.flags) && Objects.equals(this.cType, other.cType) - && Objects.equals(this.contents, other.contents); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeByte(flags); - c.writeByte(cType); - c.writeByte(contents); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of LabelSubObject. - * - * @param c type of channel buffer - * @return object of LabelSubObject - */ - public static PcepValueType read(ChannelBuffer c) { - byte flags = c.readByte(); - byte cType = c.readByte(); - int contents = c.readInt(); - return new LabelSubObject(flags, cType, contents); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", TYPE) - .add("Length", LENGTH) - .add("flags", flags) - .add("C-type", cType) - .add("contents", contents) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java deleted file mode 100644 index 5fa0a4c6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Local and remote Link Identifiers. - */ -public class LinkLocalRemoteIdentifiersTlv implements PcepValueType { - - /* Reference :RFC5307 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=4 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Local Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Remote Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(LinkLocalRemoteIdentifiersTlv.class); - - public static final short TYPE = 4; - public static final short LENGTH = 8; - private final int iLinkLocalIdentifier; - private final int iLinkRemoteIdentifier; - - /** - * Constructor to initialize iLinkLocalIdentifier , iLinkRemoteIdentifier. - * - * @param iLinkLocalIdentifier Link Local identifier - * @param iLinkRemoteIdentifier Link Remote identifier - */ - public LinkLocalRemoteIdentifiersTlv(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) { - this.iLinkLocalIdentifier = iLinkLocalIdentifier; - this.iLinkRemoteIdentifier = iLinkRemoteIdentifier; - } - - /** - * Retruns an object of Link Local Remote Identifiers Tlv. - * - * @param iLinkLocalIdentifier Link Local identifier - * @param iLinkRemoteIdentifier Link Remote identifier - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static LinkLocalRemoteIdentifiersTlv of(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) { - return new LinkLocalRemoteIdentifiersTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - /** - * Returns Link-Local-Identifier. - * - * @return iLinkLocalIdentifier Link Local Identifier - */ - public int getLinkLocalIdentifier() { - return iLinkLocalIdentifier; - } - - /** - * Returns Link-Remote-Identifier. - * - * @return iLinkRemoteIdentifier Link Remote Identifier. - */ - public int getLinkRemoteIdentifier() { - return iLinkRemoteIdentifier; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkLocalRemoteIdentifiersTlv) { - LinkLocalRemoteIdentifiersTlv other = (LinkLocalRemoteIdentifiersTlv) obj; - return Objects.equals(iLinkLocalIdentifier, other.iLinkLocalIdentifier) - && Objects.equals(iLinkRemoteIdentifier, other.iLinkRemoteIdentifier); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(iLinkLocalIdentifier); - c.writeInt(iLinkRemoteIdentifier); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkLocalRemoteIdentifiersTlv. - * - * @param c input channel buffer - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int iLinkLocalIdentifier = c.readInt(); - int iLinkRemoteIdentifier = c.readInt(); - return new LinkLocalRemoteIdentifiersTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("LinkLocalIdentifier", iLinkLocalIdentifier) - .add("LinkRemoteIdentifier", iLinkRemoteIdentifier) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java deleted file mode 100644 index aa0f11a7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides the Link Name. - */ -public class LinkNameTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.2.7 - * Link name tlv format. - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB43 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Link Name (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(LinkNameTlv.class); - - public static final short TYPE = 1098; //TODO:NEED TO HANDLE TDB43 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Link-Name - * @param hLength length - */ - public LinkNameTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created LinkNameTlv object. - * - * @param raw Link-Name - * @param hLength length - * @return object of LinkNameTlv - */ - public static LinkNameTlv of(final byte[] raw, short hLength) { - return new LinkNameTlv(raw, hLength); - } - - /** - * Returns value of Link-Name. - * - * @return raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkNameTlv) { - LinkNameTlv other = (LinkNameTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkNameTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of LinkNameTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] linkName = new byte[hLength]; - c.readBytes(linkName, 0, hLength); - return new LinkNameTlv(linkName, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java deleted file mode 100644 index a802d577..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide Link Protection Type. - */ - -public class LinkProtectionTypeTlv implements PcepValueType { - - /* Reference :[RFC5307]/1.2 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB38] | Length=2 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Protection Cap | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(LinkProtectionTypeTlv.class); - - public static final short TYPE = 20; //TDB38 - public static final short LENGTH = 2; - private final byte protectionCap; - private final byte reserved; - - /** - * Constructor to initialize protectionCap. - * - * @param protectionCap Protection Cap - */ - public LinkProtectionTypeTlv(byte protectionCap) { - this.protectionCap = protectionCap; - this.reserved = 0; - } - - /** - * Constructor to initialize protectionCap, reserved. - * - * @param protectionCap Protection Cap - * @param reserved Reserved value - */ - public LinkProtectionTypeTlv(byte protectionCap, byte reserved) { - this.protectionCap = protectionCap; - this.reserved = reserved; - } - - /** - * Returns Protection Cap. - * - * @return protectionCap Protection Cap - */ - public byte getProtectionCap() { - return protectionCap; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(protectionCap, reserved); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkProtectionTypeTlv) { - LinkProtectionTypeTlv other = (LinkProtectionTypeTlv) obj; - return Objects.equals(protectionCap, other.protectionCap) && Objects.equals(reserved, other.reserved); - } - - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeByte(protectionCap); - c.writeByte(reserved); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkProtectionTypeTlv. - * - * @param c input channel buffer - * @return object of LinkProtectionTypeTlv - */ - public static PcepValueType read(ChannelBuffer c) { - byte protectionCap = c.readByte(); - byte reserved = c.readByte(); - return new LinkProtectionTypeTlv(protectionCap, reserved); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("ProtectionCap", protectionCap) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java deleted file mode 100644 index b31dac2c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * 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 java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Local TE Node Descriptors TLV which contains Node Descriptor Sub-TLVs. - */ -public class LocalTENodeDescriptorsTlv implements PcepValueType { - - /* REFERENCE :draft-ietf-idr-ls-distribution-10 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD8] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - Note: Length is including header here. Refer Routing Universe TLV. - */ - - protected static final Logger log = LoggerFactory.getLogger(LocalTENodeDescriptorsTlv.class); - - public static final short TYPE = 1637; //TODD:change this TBD8 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // Node Descriptor Sub-TLVs (variable) - private LinkedList<PcepValueType> llNodeDescriptorSubTLVs; - - /** - * Constructor to initialize llNodeDescriptorSubTLVs. - * - * @param llNodeDescriptorSubTLVs LinkedList of PcepValueType - */ - public LocalTENodeDescriptorsTlv(LinkedList<PcepValueType> llNodeDescriptorSubTLVs) { - this.llNodeDescriptorSubTLVs = llNodeDescriptorSubTLVs; - } - - /** - * Returns a new object of LocalTENodeDescriptorsTLV. - * - * @param llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLVs - * @return object of LocalTENodeDescriptorsTLV - */ - public static LocalTENodeDescriptorsTlv of(final LinkedList<PcepValueType> llNodeDescriptorSubTLVs) { - return new LocalTENodeDescriptorsTlv(llNodeDescriptorSubTLVs); - } - - /** - * Returns Linked List of tlvs. - * - * @return llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLV - */ - public LinkedList<PcepValueType> getllNodeDescriptorSubTLVs() { - return llNodeDescriptorSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llNodeDescriptorSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof LocalTENodeDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - LocalTENodeDescriptorsTlv other = (LocalTENodeDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((LocalTENodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs - .iterator(); - countObjSubTlv = ((LocalTENodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs.size(); - countOtherSubTlv = other.llNodeDescriptorSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llNodeDescriptorSubTLVs.contains(subTlv), - other.llNodeDescriptorSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(0); - - ListIterator<PcepValueType> listIterator = llNodeDescriptorSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads the channel buffer and returns object of AutonomousSystemTlv. - * - * @param c input channel buffer - * @param hLength length of subtlvs. - * @return object of AutonomousSystemTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llNodeDescriptorSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - - switch (hType) { - - case AutonomousSystemTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - case BGPLSidentifierTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new BGPLSidentifierTlv(iValue); - break; - case OSPFareaIDsubTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new OSPFareaIDsubTlv(iValue); - break; - case RouterIDSubTlv.TYPE: - tlv = RouterIDSubTlv.read(tempCb, length); - break; - - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llNodeDescriptorSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new LocalTENodeDescriptorsTlv(llNodeDescriptorSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("NodeDescriptorSubTLVs", llNodeDescriptorSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java deleted file mode 100644 index fc0f8771..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides MPLS Protocol Mask. - */ -public class MPLSProtocolMaskTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr-ls-distribution]/3.3.2.2 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB39 | Length =1 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L|R| Reserved | - +-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(MPLSProtocolMaskTlv.class); - - public static final short TYPE = 1094; //TDB39 - public static final short LENGTH = 1; - public static final byte LFLAG_SET = (byte) 0x80; - public static final byte RFLAG_SET = 0x40; - - private final byte rawValue; - private final boolean bLFlag; - private final boolean bRFlag; - private final boolean isRawValueSet; - - /** - * constructor to initialize rawValue. - * - * @param rawValue MPLS Protocol Mask Flag Bits - */ - public MPLSProtocolMaskTlv(byte rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - this.bLFlag = (rawValue & LFLAG_SET) == LFLAG_SET; - this.bRFlag = (rawValue & RFLAG_SET) == RFLAG_SET; - } - - /** - * constructor to initialize different Flags. - * - * @param bLFlag L-flag - * @param bRFlag R-flag - */ - public MPLSProtocolMaskTlv(boolean bLFlag, boolean bRFlag) { - this.bLFlag = bLFlag; - this.bRFlag = bRFlag; - this.rawValue = 0; - isRawValueSet = false; - } - - /** - * Returns newly created MPLSProtocolMaskTlv object. - * - * @param raw MPLS Protocol Mask Tlv - * @return new object of MPLS Protocol Mask Tlv - */ - public static MPLSProtocolMaskTlv of(final byte raw) { - return new MPLSProtocolMaskTlv(raw); - } - - /** - * Returns L-flag. - * - * @return bLFlag L-flag - */ - public boolean getbLFlag() { - return bLFlag; - } - - /** - * Returns R-flag. - * - * @return bRFlag R-flag - */ - public boolean getbRFlag() { - return bRFlag; - } - - /** - * Returns raw value. - * - * @return rawValue raw value - */ - public byte getByte() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bLFlag, bRFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MPLSProtocolMaskTlv) { - MPLSProtocolMaskTlv other = (MPLSProtocolMaskTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bLFlag, other.bLFlag) && Objects.equals(this.bRFlag, other.bRFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeByte(rawValue); - } else { - byte temp = 0; - if (bLFlag) { - temp = (byte) (temp | LFLAG_SET); - } - if (bRFlag) { - temp = (byte) (temp | RFLAG_SET); - } - c.writeByte(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MPLS Protocol Mask Tlv. - * - * @param c input channel buffer - * @return object of MPLS Protocol Mask Tlv - */ - public static PcepValueType read(ChannelBuffer c) { - byte temp = c.readByte(); - boolean bLFlag; - boolean bRFlag; - - bLFlag = (temp & LFLAG_SET) == LFLAG_SET; - bRFlag = (temp & RFLAG_SET) == RFLAG_SET; - - return new MPLSProtocolMaskTlv(bLFlag, bRFlag); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java deleted file mode 100644 index db1acf09..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide the Maximum Link Bandwidth. - */ -public class MaximumLinkBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.3. - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB34] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum Link Bandwidth | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(MaximumLinkBandwidthTlv.class); - - public static final short TYPE = 9; //TDB34 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Maximum-Link-Bandwidth - */ - - public MaximumLinkBandwidthTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created MaximumLinkBandwidthTlv object. - * - * @param raw value of Maximum-Link-Bandwidth - * @return object of MaximumLinkBandwidthTlv - */ - public static MaximumLinkBandwidthTlv of(final int raw) { - return new MaximumLinkBandwidthTlv(raw); - } - - /** - * Returns value of Maximum Link Bandwidth. - * - * @return rawValue Maximum Link Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MaximumLinkBandwidthTlv) { - MaximumLinkBandwidthTlv other = (MaximumLinkBandwidthTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MaximumLinkBandwidthTlv. - * - * @param c input channel buffer - * @return object of MaximumLinkBandwidthTlv - */ - public static MaximumLinkBandwidthTlv read(ChannelBuffer c) { - return MaximumLinkBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java deleted file mode 100644 index 01d08cae..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide the Maximum Reservable Link Bandwidth. - */ -public class MaximumReservableLinkBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.5. - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB35] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum Reservable Link Bandwidth | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(MaximumReservableLinkBandwidthTlv.class); - - public static final short TYPE = 10; // TDB35 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue MaximumReservableLinkBandwidth - */ - public MaximumReservableLinkBandwidthTlv(int rawValue) { - log.debug("MaximumReservableLinkBandwidthTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created MaximumReservableLinkBandwidth object. - * - * @param raw MaximumReservableLinkBandwidth - * @return object of MaximumReservableLinkBandwidthTlv - */ - public static MaximumReservableLinkBandwidthTlv of(final int raw) { - return new MaximumReservableLinkBandwidthTlv(raw); - } - - /** - * Returns value of Maximum Reservable Link Bandwidth. - * @return rawValue Maximum Reservable Link Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MaximumReservableLinkBandwidthTlv) { - MaximumReservableLinkBandwidthTlv other = (MaximumReservableLinkBandwidthTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MaximumReservableLinkBandwidthTlv. - * - * @param c input channel buffer - * @return object of MaximumReservableLinkBandwidthTlv - */ - public static MaximumReservableLinkBandwidthTlv read(ChannelBuffer c) { - return MaximumReservableLinkBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java deleted file mode 100644 index 6f193384..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * NexthopIPv6addressTlv provides Ipv4 address of next hop. - */ -public class NexthopIPv4addressTlv implements PcepValueType { - - /* - Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01 - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | nexthop IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-IPV4-ADDRESS TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopIPv4addressTlv.class); - - public static final short TYPE = 2; //to be defined - //Length is header + value - public static final short LENGTH = 8; - public static final short VALUE_LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize next hop IPv4 address. - * - * @param rawValue next hop IPv4 address - */ - public NexthopIPv4addressTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Return next hop IPv4 address tlv. - * - * @param raw of next hop IPv4 address - * @return object of NexthopIPv4addressTlv - */ - public static NexthopIPv4addressTlv of(final int raw) { - return new NexthopIPv4addressTlv(raw); - } - - /** - * Returns next hop IPv4 address. - * - * @return next hop IPv4 address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopIPv4addressTlv) { - NexthopIPv4addressTlv other = (NexthopIPv4addressTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopIPv4addressTlv. - * - * @param c type of channel buffer - * @return object of NexthopIPv4addressTlv - */ - public static NexthopIPv4addressTlv read(ChannelBuffer c) { - return NexthopIPv4addressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Ipv4Address ", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java deleted file mode 100644 index 45bf7ac5..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * NexthopIPv6addressTlv provides Ipv6 address of next hop. - */ -public class NexthopIPv6addressTlv implements PcepValueType { - - /* - Reference: draft-zhao-pce-pcep-extension-for-pce-controller-01. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 20 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // nexthop IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-IPV6-ADDRESS TLV: - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopIPv6addressTlv.class); - - public static final short TYPE = 100; //to be defined - //Length is header + value - public static final short LENGTH = 20; - public static final short VALUE_LENGTH = 16; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final NexthopIPv6addressTlv NONE = new NexthopIPv6addressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final NexthopIPv6addressTlv NO_MASK = new NexthopIPv6addressTlv(NO_MASK_VAL); - public static final NexthopIPv6addressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize IP address for next hop IPv6 address tlv. - * - * @param rawValue value of Next hop ipAddress - */ - public NexthopIPv6addressTlv(byte[] rawValue) { - log.debug("NexthopIPv6addressTlv"); - this.rawValue = rawValue; - } - - /** - * Creates next hop IPv6 address tlv. - * - * @param raw value of Next hop ipAddress - * @return object of NexthopIPv6addressTlv - */ - //logic to be checked - public static NexthopIPv6addressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 5; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 5; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - return new NexthopIPv6addressTlv(raw); - } - - /** - * Returns next hop IPv6 address. - * - * @return next hop IPv6 address - */ - public byte[] getBytes() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopIPv6addressTlv) { - NexthopIPv6addressTlv other = (NexthopIPv6addressTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopIPv6addressTlv. - * - * @param c type of channel buffer - * @return object of NexthopIPv6addressTlv - */ - public static NexthopIPv6addressTlv read(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return NexthopIPv6addressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("IpAddress", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java deleted file mode 100644 index fb4ceeff..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * NexthopUnnumberedIPv4IDTlv provides the next node's ID and Interface ID. - */ -public class NexthopUnnumberedIPv4IDTlv implements PcepValueType { - - /* - Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 12 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-UNNUMBERED-IPV4-ID TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopUnnumberedIPv4IDTlv.class); - - public static final short TYPE = 1; //to be defined - //Length is header + value - public static final short LENGTH = 12; - - private final int nodeID; - private final int interfaceID; - - /** - * constructor to initialize nodeID and interfaceID. - * - * @param nodeID node ID - * @param interfaceID interface ID - */ - public NexthopUnnumberedIPv4IDTlv(int nodeID, int interfaceID) { - this.nodeID = nodeID; - this.interfaceID = interfaceID; - } - - /** - * Returns new object of NexthopUnnumberedIPv4IDTlv. - * - * @param nodeID node ID - * @param interfaceID interface ID - * @return NexthopUnnumberedIPv4IDTlv - */ - public static NexthopUnnumberedIPv4IDTlv of(int nodeID, int interfaceID) { - return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID); - } - - /** - * Returns Node Id. - * - * @return node ID - */ - public int getNodeID() { - return nodeID; - } - - /** - * Returns Interface Id. - * - * @return interface ID - */ - public int getInterfaceID() { - return interfaceID; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(nodeID, interfaceID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopUnnumberedIPv4IDTlv) { - NexthopUnnumberedIPv4IDTlv other = (NexthopUnnumberedIPv4IDTlv) obj; - return Objects.equals(this.nodeID, other.nodeID) && Objects.equals(this.interfaceID, other.interfaceID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - - c.writeInt(nodeID); - c.writeInt(interfaceID); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopUnnumberedIPv4IDTlv. - * - * @param cb type of channel buffer - * @return object of NexthopUnnumberedIPv4IDTlv - */ - public static NexthopUnnumberedIPv4IDTlv read(ChannelBuffer cb) { - int nodeID = cb.readInt(); - int interfaceID = cb.readInt(); - return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("NodeId", nodeID) - .add("InterfaceId", interfaceID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java deleted file mode 100644 index 019daa14..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide node Flags bits. - */ -public class NodeFlagBitsTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.1.1 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD21] | Length=1 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |O|T|E|B| Reserved| - +-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(NodeFlagBitsTlv.class); - - public static final short TYPE = 14; - public static final short LENGTH = 1; - public static final int SET = 1; - public static final byte OFLAG_SET = (byte) 0x80; - public static final byte TFLAG_SET = 0x40; - public static final byte EFLAG_SET = 0x20; - public static final byte BFLAG_SET = 0x10; - - private final byte rawValue; - private final boolean bOFlag; - private final boolean bTFlag; - private final boolean bEFlag; - private final boolean bBFlag; - private final boolean isRawValueSet; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Node Flag Bits TLV - */ - public NodeFlagBitsTlv(byte rawValue) { - this.rawValue = rawValue; - isRawValueSet = true; - this.bOFlag = (rawValue & OFLAG_SET) == OFLAG_SET; - this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET; - this.bEFlag = (rawValue & EFLAG_SET) == EFLAG_SET; - this.bBFlag = (rawValue & BFLAG_SET) == BFLAG_SET; - } - - /** - * constructor to initialize different Flags. - * - * @param bOFlag O-flag - * @param bTFlag T-flag - * @param bEFlag E-flag - * @param bBFlag B-flag - */ - public NodeFlagBitsTlv(boolean bOFlag, boolean bTFlag, boolean bEFlag, boolean bBFlag) { - this.bOFlag = bOFlag; - this.bTFlag = bTFlag; - this.bEFlag = bEFlag; - this.bBFlag = bBFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns newly created NodeFlagBitsTlv object. - * - * @param raw of Node Flag Bits TLV - * @return new object of NodeFlagBitsTlv - */ - public static NodeFlagBitsTlv of(final byte raw) { - return new NodeFlagBitsTlv(raw); - } - - /** - * Returns raw value of NodeFlagBitsTlv. - * - * @return rawValue raw value - */ - public byte getbyte() { - return rawValue; - } - - /** - * Returns O-flag. - * - * @return bOFlag O-flag - */ - public boolean getOFlag() { - return bOFlag; - } - - /** - * Returns T-flag. - * - * @return bTFlag T-flag - */ - public boolean getTFlag() { - return bTFlag; - } - - /** - * Returns E-flag. - * - * @return bEFlag E-flag - */ - public boolean getEFlag() { - return bEFlag; - } - - /** - * Returns B-flag. - * - * @return bBFlag B-flag - */ - public boolean getBFlag() { - return bBFlag; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bOFlag, bTFlag, bEFlag, bBFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeFlagBitsTlv) { - NodeFlagBitsTlv other = (NodeFlagBitsTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bOFlag, other.bOFlag) && Objects.equals(this.bTFlag, other.bTFlag) - && Objects.equals(this.bEFlag, other.bEFlag) && Objects.equals(this.bBFlag, other.bBFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeByte(rawValue); - } else { - byte temp = 0; - if (bOFlag) { - temp = (byte) (temp | OFLAG_SET); - } - if (bTFlag) { - temp = (byte) (temp | TFLAG_SET); - } - if (bEFlag) { - temp = (byte) (temp | EFLAG_SET); - } - if (bBFlag) { - temp = (byte) (temp | BFLAG_SET); - } - c.writeByte(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NodeFlagBitsTlv. - * - * @param c input channel buffer - * @return object of NodeFlagBitsTlv - */ - public static PcepValueType read(ChannelBuffer c) { - - return NodeFlagBitsTlv.of(c.readByte()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("OFlag", (bOFlag) ? 1 : 0) - .add("TFlag", (bTFlag) ? 1 : 0) - .add("EFlag", (bEFlag) ? 1 : 0) - .add("BFlag", (bBFlag) ? 1 : 0) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java deleted file mode 100644 index e535a358..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provide the name for the node. - */ -public class NodeNameTlv implements PcepValueType { - - /* reference :[I-D.ietf-idr-ls-distribution]/3.3.1.3 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD23] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Node Name (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(NodeNameTlv.class); - - public static final short TYPE = 1007; //TODO:check and change TBD23 - public final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Node Name - * @param hLength length - */ - public NodeNameTlv(byte[] rawValue, short hLength) { - log.debug("NodeNameTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created NodeNameTlv object. - * - * @param raw of NodeName - * @param hLength length - * @return new object of Node Name Tlv - */ - public static NodeNameTlv of(final byte[] raw, short hLength) { - return new NodeNameTlv(raw, hLength); - } - - /** - * Returns RawValue for NodeName. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeNameTlv) { - NodeNameTlv other = (NodeNameTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NodeNameTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of Node Name TLV - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iNodeName = new byte[hLength]; - c.readBytes(iNodeName, 0, hLength); - return new NodeNameTlv(iNodeName, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java deleted file mode 100644 index 2233ab0d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides area ID for OSPF area. - */ -public class OSPFareaIDsubTlv implements PcepValueType { - - /* Reference :draft-ietf-idr-ls-distribution-10. - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD12] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit AS Number) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OSPFareaIDsubTlv.class); - - public static final short TYPE = 600; //TODD:change this TBD12 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue area ID for OSPF area. - */ - public OSPFareaIDsubTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created OSPFareaIDsubTlv object. - * - * @param raw opaque value of AreaID - * @return new object of OSPF area ID sub TLV - */ - public static OSPFareaIDsubTlv of(final int raw) { - return new OSPFareaIDsubTlv(raw); - } - - /** - * Returns RawValue opaque value of AreaID. - * - * @return rawValue Area ID - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OSPFareaIDsubTlv) { - OSPFareaIDsubTlv other = (OSPFareaIDsubTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OSPFAreaIdSubTlv. - * - * @param c input channel buffer - * @return object of OSPFAreaIdSubTlv - */ - public static OSPFareaIDsubTlv read(ChannelBuffer c) { - return OSPFareaIDsubTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java deleted file mode 100644 index 1af332eb..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides Opaque Link Attribute. - */ -public class OpaqueLinkAttributeTlv implements PcepValueType { - - /* - * TLV format. - * Reference :[I-D.ietf-idr-attributesls-distribution] /3.3.2.6 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD42 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Opaque link attributes (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OpaqueLinkAttributeTlv.class); - - public static final short TYPE = 1097; //TODO:NEED TO HANDLE TDB42 - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Opaque Link Attribute - * @param hLength length - */ - public OpaqueLinkAttributeTlv(byte[] rawValue, short hLength) { - log.debug("OpaqueLinkAttributeTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created OpaqueLinkAttributeTlv object. - * - * @param raw of Opaque Link Attribute - * @param hLength length - * @return new object of OpaqueLinkAttributeTlv - */ - public static OpaqueLinkAttributeTlv of(final byte[] raw, short hLength) { - return new OpaqueLinkAttributeTlv(raw, hLength); - } - - /** - * Returns raw value of Opaque Link Attribute Tlv. - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OpaqueLinkAttributeTlv) { - OpaqueLinkAttributeTlv other = (OpaqueLinkAttributeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OpaqueLinkAttributeTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of Opaque Link Attribute Tlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new OpaqueLinkAttributeTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java deleted file mode 100644 index 5aec8c5f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides Opaque node attributes. - */ -public class OpaqueNodeAttributeTlv implements PcepValueType { - /* - * Reference [I-D.ietf-idr-Properties ls-distribution] /3.3.1.5 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD22] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Opaque node attributes (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OpaqueNodeAttributeTlv.class); - - public static final short TYPE = 1001; - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue Opaque Node Attribute - * @param hLength length - */ - public OpaqueNodeAttributeTlv(byte[] rawValue, short hLength) { - - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created OpaqueNodeAttributeTlv object. - * - * @param raw value of Opaque Node Attribute - * @param hLength length - * @return new object of Opaque Node Attribute Tlv - */ - public static OpaqueNodeAttributeTlv of(final byte[] raw, short hLength) { - return new OpaqueNodeAttributeTlv(raw, hLength); - } - - /** - * Returns raw value of Opaque Node Attribute Tlv. - * - * @return rawValue of Opaque Node Attribute - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OpaqueLinkAttributeTlv) { - OpaqueNodeAttributeTlv other = (OpaqueNodeAttributeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Opaque Node Attribute Tlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of OpaqueNodeAttributeTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new OpaqueNodeAttributeTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java deleted file mode 100644 index 86ad042a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Path Key SubObject: When a PCC needs to expand a path-key in order to expand a CPS, it - * issues a Path Computation Request (PCReq) to the PCE identified in - * the PKS in the RSVP-TE ERO that it is processing. The PCC supplies - * the PKS to be expanded in a PATH-KEY SubObject in the PCReq message. - */ -public class PathKeySubObject implements PcepValueType { - - /* - Pathkey subobject(RFC 5520): - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | Path-Key | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PCE ID (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PathKeySubObject.class); - - public static final byte TYPE = 0x40; - public static final byte LENGTH = 8; - private final short pathKey; - private final int pceID; - - /** - * Constructor for Path Key sub Object which initializes pathKey and pceId. - * - * @param pathKey path key provided by PCC - * @param pceID ID for the PCE - */ - public PathKeySubObject(short pathKey, int pceID) { - this.pathKey = pathKey; - this.pceID = pceID; - } - - /** - * Creates Path Key sub Object which initializes pathKey and pceId. - * - * @param pathKey path key provided by PCC - * @param pceID PCE id - * @return new object of type path key sub object - */ - public static PathKeySubObject of(short pathKey, int pceID) { - return new PathKeySubObject(pathKey, pceID); - } - - /** - * Returns Path Key. - * - * @return pathKey - */ - public short getPathKey() { - return pathKey; - } - - /** - * Returns pceID. - * - * @return pceID - */ - public int getPceId() { - return pceID; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(pathKey, pceID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PathKeySubObject) { - PathKeySubObject other = (PathKeySubObject) obj; - return Objects.equals(this.pathKey, other.pathKey) && Objects.equals(this.pceID, other.pceID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - - c.writeShort(pathKey); - c.writeInt(pceID); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns new path key sub objects. - * - * @param c of type channel buffer - * @return object of type path key sub object - */ - public static PcepValueType read(ChannelBuffer c) { - Short pathKey = c.readShort(); - int pceID = c.readInt(); - return new PathKeySubObject(pathKey, pceID); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("PathKey", pathKey) - .add("PceID", pceID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java deleted file mode 100644 index 3e8f9676..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepSetup type tlv. - */ -public class PathSetupTypeTlv implements PcepValueType { - - /* - Reference : draft-sivabalan-pce-lsp-setup-type-02. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | PST | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure 1: PATH-SETUP-TYPE TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(PathSetupTypeTlv.class); - - public static final short TYPE = 0; //TODO : need to reassign the value as per RFC - public static final short LENGTH = 4; - - private final byte pst; - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize parameters for path setup type tlv. - * - * @param rawValue parameter for path setup type tlv - */ - public PathSetupTypeTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - this.pst = (byte) rawValue; - } - - /** - * Constructor to initialize pst. - * - * @param pst PST - */ - public PathSetupTypeTlv(byte pst) { - this.pst = pst; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns Object of path setup type tlv. - * - * @param raw parameter for path setup type tlv - * @return object of PathSetupTypeTlv - */ - public static PathSetupTypeTlv of(final int raw) { - return new PathSetupTypeTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns parameters for path setup type tlv. - * - * @return parameters for path setup type tlv - */ - public int getInt() { - return rawValue; - } - - /** - * Returns the pst value. - * - * @return pst value - */ - public byte getPst() { - return pst; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(pst); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PathSetupTypeTlv) { - PathSetupTypeTlv other = (PathSetupTypeTlv) obj; - return Objects.equals(this.pst, other.pst); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(pst); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Returns the object of type PathSetupTypeTlv. - * - * @param c is type Channel buffer - * @return object of PathSetupTypeTlv - */ - public static PathSetupTypeTlv read(ChannelBuffer c) { - return PathSetupTypeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("PST", pst) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java deleted file mode 100644 index b8ae1e87..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PceccCapabilityTlv. - */ -public class PceccCapabilityTlv implements PcepValueType { - - /* PCECC CAPABILITY TLV - * Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01, section-7.1.1 - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=32 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |G|L| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PceccCapabilityTlv.class); - - public static final short TYPE = 32; - public static final short LENGTH = 4; - public static final int SET = 1; - public static final byte LFLAG_CHECK = 0x01; - public static final byte GFLAG_CHECK = 0x02; - - private final boolean bGFlag; - private final boolean bLFlag; - - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue raw value - */ - public PceccCapabilityTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - - bLFlag = (rawValue & LFLAG_CHECK) == LFLAG_CHECK; - bGFlag = (rawValue & GFLAG_CHECK) == GFLAG_CHECK; - } - - /** - * Constructor to initialize G-flag L-flag. - * @param bGFlag G-flag - * @param bLFlag L-flag - */ - public PceccCapabilityTlv(boolean bGFlag, boolean bLFlag) { - this.bGFlag = bGFlag; - this.bLFlag = bLFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns newly created PceccCapabilityTlv object. - * - * @param raw value - * @return object of Pcecc Capability Tlv - */ - public static PceccCapabilityTlv of(final int raw) { - return new PceccCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns G-flag. - * @return bGFlag G-flag - */ - public boolean getGFlag() { - return bGFlag; - } - - /** - * Returns L-flag. - * @return bLFlag L-flag - */ - public boolean getLFlag() { - return bLFlag; - } - - /** - * Returns the raw value. - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bLFlag, bGFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PceccCapabilityTlv) { - PceccCapabilityTlv other = (PceccCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bGFlag, other.bGFlag) && Objects.equals(this.bLFlag, other.bLFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - int temp = 0; - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - if (bGFlag) { - temp = temp | GFLAG_CHECK; - } - if (bLFlag) { - temp = temp | LFLAG_CHECK; - } - c.writeInt(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of PceccCapabilityTlv. - * - * @param c input channel buffer - * @return object of PceccCapabilityTlv - */ - public static PceccCapabilityTlv read(ChannelBuffer c) { - return PceccCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java deleted file mode 100644 index 83a62103..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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; - -/** - * Provide the PCEP Error Info Details. - */ -public final class PcepErrorDetailInfo { - - private PcepErrorDetailInfo() { - } - - // Error Types - /** - Error- Meaning Reference:RFC 5440 - Type - 1 PCEP session establishment failure - Error-value=1: reception of an invalid Open message or a non Open message. - Error-value=2: no Open message received before the expiration of the OpenWait timer - Error-value=3: unacceptable and non-negotiable session characteristics - Error-value=4: unacceptable but negotiable session characteristics - Error-value=5: reception of a second Open message with still unacceptable session characteristics - Error-value=6: reception of a PCErr message proposing unacceptable session characteristics - Error-value=7: No Keepalive or PCErr message received before the expiration of the KeepWait timer - Error-value=8: PCEP version not supported - 2 Capability not supported - 3 Unknown Object - Error-value=1: Unrecognized object class - Error-value=2: Unrecognized object Type - 4 Not supported object - Error-value=1: Not supported object class - Error-value=2: Not supported object Type - 5 Policy violation - Error-value=1: C bit of the METRIC object set (request rejected) - Error-value=2: O bit of the RP object cleared (request rejected) - 6 Mandatory Object missing - Error-value=1: RP object missing - Error-value=2: RRO missing for a re-optimization request (R bit of the RP object set) - Error-value=3: END-POINTS object missing - 7 Synchronized path computation request missing - 8 Unknown request reference - 9 Attempt to establish a second PCEP session - 10 Reception of an invalid object - Error-value=1: reception of an object with P flag not set although the P flag must be - set according to this specification. - */ - public static final byte ERROR_TYPE_1 = 1; - public static final byte ERROR_TYPE_2 = 2; - public static final byte ERROR_TYPE_3 = 3; - public static final byte ERROR_TYPE_4 = 4; - public static final byte ERROR_TYPE_5 = 5; - public static final byte ERROR_TYPE_6 = 6; - public static final byte ERROR_TYPE_7 = 7; - public static final byte ERROR_TYPE_8 = 8; - public static final byte ERROR_TYPE_9 = 9; - public static final byte ERROR_TYPE_10 = 10; - - // Error Values - public static final byte ERROR_VALUE_1 = 1; - public static final byte ERROR_VALUE_2 = 2; - public static final byte ERROR_VALUE_3 = 3; - public static final byte ERROR_VALUE_4 = 4; - public static final byte ERROR_VALUE_5 = 5; - public static final byte ERROR_VALUE_6 = 6; - public static final byte ERROR_VALUE_7 = 7; - public static final byte ERROR_VALUE_8 = 8; - public static final byte ERROR_VALUE_9 = 9; - public static final byte ERROR_VALUE_10 = 10; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java deleted file mode 100644 index 7a612454..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides CEP LABEL DB VERSION TLV which contains LSP State DB Version (32 Bit ). - */ -public class PcepLabelDbVerTlv implements PcepValueType { - - /* PCEP LABEL DB VERSION TLV format - - Reference : draft-ietf-pce-stateful-sync-optimizations-02, section 3.3.1 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=23 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP State DB Version | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelDbVerTlv.class); - - public static final short TYPE = 34; - public static final short LENGTH = 8; - private final long rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Pcep Label Db Version Tlv - */ - public PcepLabelDbVerTlv(final long rawValue) { - log.debug("PcepLabelDbVerTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created PcepLabelDbVerTlv object. - * - * @param raw LSP State DB Version - * @return object of PcepLabelDbVerTlv - */ - public static PcepLabelDbVerTlv of(final long raw) { - return new PcepLabelDbVerTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns LSP State DB Version. - * @return raw value - */ - public long getLong() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PceccCapabilityTlv) { - PcepLabelDbVerTlv other = (PcepLabelDbVerTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of PcepLabelDbVerTlv. - * - * @param c input channel buffer - * @return object of PcepLabelDbVerTlv - */ - public static PcepLabelDbVerTlv read(ChannelBuffer c) { - return PcepLabelDbVerTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java deleted file mode 100644 index e2ad069c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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 java.util.LinkedList; - -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; - -import com.google.common.base.MoreObjects; - -/** - * 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 - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //LinkList of Labels - private 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; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("LabelObjectList", llLabelList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java deleted file mode 100644 index 2d3a953f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * 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 - private PcepSrpObject srpObject; - //PCEP Label Object - private PcepLabelObject labelObject; - //PCEP FEC Object - private 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; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LabelObject", labelObject) - .add("FecObject", fecObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java deleted file mode 100644 index 1ed0ab14..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv4 Adjacency. - */ -public class PcepNaiIpv4Adjacency implements PcepNai { - - public static final byte ST_TYPE = 0x03; - private final int localIpv4Addr; - private final int remoteIpv4Addr; - - /** - * Constructor to initialize variables. - * - * @param localIpv4 local ipv4 address - * @param remoteIpv4 remote ipv4 address - */ - public PcepNaiIpv4Adjacency(int localIpv4, int remoteIpv4) { - this.localIpv4Addr = localIpv4; - this.remoteIpv4Addr = remoteIpv4; - } - - /** - * Returns Object of Pcep nai Ipv4 Adjacency. - * - * @param localIpv4Addr local ipv4 address - * @param remoteIpv4Addr remote ipv4 address - * @return Object of Pcep nai Ipv4 Adjacency - */ - public static PcepNaiIpv4Adjacency of(int localIpv4Addr, int remoteIpv4Addr) { - return new PcepNaiIpv4Adjacency(localIpv4Addr, remoteIpv4Addr); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(localIpv4Addr); - bb.writeInt(remoteIpv4Addr); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of PcepNAIIpv4AdjacencyVer1. - * - * @param cb of channel buffer - * @return object of PcepNAIIpv4Adjacency - */ - public static PcepNaiIpv4Adjacency read(ChannelBuffer cb) { - int localIpv4 = cb.readInt(); - int remoteIpv4 = cb.readInt(); - return new PcepNaiIpv4Adjacency(localIpv4, remoteIpv4); - } - - @Override - public int hashCode() { - return Objects.hash(localIpv4Addr, remoteIpv4Addr); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv4Adjacency) { - PcepNaiIpv4Adjacency other = (PcepNaiIpv4Adjacency) obj; - return Objects.equals(this.localIpv4Addr, other.localIpv4Addr) - && Objects.equals(this.remoteIpv4Addr, other.remoteIpv4Addr); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPv4Address", localIpv4Addr) - .add("remoteIPv4Address", remoteIpv4Addr) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java deleted file mode 100644 index 1d4ce5d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv4 Node Id. - */ -public class PcepNaiIpv4NodeId implements PcepNai { - - public static final byte ST_TYPE = 0x01; - - private final int ipv4NodeId; - - /** - * Constructor to initialize ipv4NodeId. - * - * @param value ipv4 node id - */ - public PcepNaiIpv4NodeId(int value) { - this.ipv4NodeId = value; - } - - /** - * Returns an object of PcepNaiIpv4NodeId. - * - * @param value ipv4 node id - * @return object of PcepNaiIpv4NodeId - */ - public static PcepNaiIpv4NodeId of(int value) { - return new PcepNaiIpv4NodeId(value); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(ipv4NodeId); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from the channel buffer and returns object of PcepNAIIpv4NodeIdVer1. - * - * @param bb of channel buffer. - * @return object of PcepNAIIpv4NodeIdVer1 - */ - public static PcepNaiIpv4NodeId read(ChannelBuffer bb) { - return new PcepNaiIpv4NodeId(bb.readInt()); - } - - @Override - public int hashCode() { - return Objects.hash(ipv4NodeId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv4NodeId) { - PcepNaiIpv4NodeId other = (PcepNaiIpv4NodeId) obj; - return Objects.equals(this.ipv4NodeId, other.ipv4NodeId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv4NodeId", ipv4NodeId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java deleted file mode 100644 index 3a177d99..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv6 Adjacency. - */ -public class PcepNaiIpv6Adjacency implements PcepNai { - - public static final byte ST_TYPE = 0x04; - public static final byte IPV6_LEN = 0x10; - - private final byte[] localIpv6Addr; - private final byte[] remoteIpv6Addr; - - /** - * Constructor to initialize local ipv6 and remote ipv6. - * - * @param localIpv6 local ipv6 address - * @param remoteIpv6 remote ipv6 address - */ - public PcepNaiIpv6Adjacency(byte[] localIpv6, byte[] remoteIpv6) { - this.localIpv6Addr = localIpv6; - this.remoteIpv6Addr = remoteIpv6; - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeBytes(localIpv6Addr); - bb.writeBytes(remoteIpv6Addr); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of PcepNAIIpv6AdjacencyVer1. - * - * @param bb of type channel buffer - * @return object of PcepNAIIpv6AdjacencyVer1 - */ - public static PcepNaiIpv6Adjacency read(ChannelBuffer bb) { - byte[] localIpv6 = new byte[IPV6_LEN]; - bb.readBytes(localIpv6, 0, IPV6_LEN); - byte[] remoteIpv6 = new byte[IPV6_LEN]; - bb.readBytes(remoteIpv6, 0, IPV6_LEN); - return new PcepNaiIpv6Adjacency(localIpv6, remoteIpv6); - } - - @Override - public int hashCode() { - return Objects.hash(localIpv6Addr, remoteIpv6Addr); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv6Adjacency) { - PcepNaiIpv6Adjacency other = (PcepNaiIpv6Adjacency) obj; - return Objects.equals(this.localIpv6Addr, other.localIpv6Addr) - && Objects.equals(this.remoteIpv6Addr, other.remoteIpv6Addr); - } - return false; - } - - /** - * Creates object of PcepNaiIpv6Adjacency with local ipv6 address and remote ipv6 address. - * - * @param localIpv6Addr local ipv6 address - * @param remoteIpv6Addr remote ipv6 address - * @return object of PcepNaiIpv6Adjacency - */ - - public static PcepNaiIpv6Adjacency of(final byte[] localIpv6Addr, final byte[] remoteIpv6Addr) { - return new PcepNaiIpv6Adjacency(localIpv6Addr, remoteIpv6Addr); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPV6Address", localIpv6Addr) - .add("remoteIPV6Address", remoteIpv6Addr) - .toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java deleted file mode 100644 index 3b7d52fd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv6 Node Id. - */ -public class PcepNaiIpv6NodeId implements PcepNai { - - public static final byte ST_TYPE = 0x02; - public static final byte IPV6_LEN = 0x10; - - private final byte[] ipv6NodeId; - - /** - * Constructor to initialize ipv6NodeId. - * - * @param value ipv6 node id - */ - public PcepNaiIpv6NodeId(byte[] value) { - this.ipv6NodeId = value; - } - - /** - * Return object of Pcep Nai Ipv6 Node ID. - * - * @param ipv6NodeId Ipv6 node ID. - * @return object of Pcep Nai Ipv6 Node ID. - */ - public static PcepNaiIpv6NodeId of(byte[] ipv6NodeId) { - return new PcepNaiIpv6NodeId(ipv6NodeId); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeBytes(ipv6NodeId); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from the channel buffer and returns object of PcepNAIIpv6NodeId. - * - * @param cb of type channel buffer. - * @return object of PcepNAIIpv6NodeId - */ - public static PcepNaiIpv6NodeId read(ChannelBuffer cb) { - byte[] ipv6NodeId = new byte[IPV6_LEN]; - cb.readBytes(ipv6NodeId, 0, IPV6_LEN); - return new PcepNaiIpv6NodeId(ipv6NodeId); - } - - @Override - public int hashCode() { - return Objects.hash(ipv6NodeId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv6NodeId) { - PcepNaiIpv6NodeId other = (PcepNaiIpv6NodeId) obj; - return Objects.equals(this.ipv6NodeId, other.ipv6NodeId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPV6NodeID", ipv6NodeId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java deleted file mode 100644 index 4e8926cf..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Unnumbered Adjacency Ipv4. - */ -public class PcepNaiUnnumberedAdjacencyIpv4 implements PcepNai { - /** - * draft-ietf-pce-segment-routing-03 section 5.3.2. - */ - public static final byte ST_TYPE = 0x05; - - private final int localNodeId; - private final int localInterfaceId; - private final int remoteNodeId; - private final int remoteInterfaceId; - - /** - * Constructor to initialize all the member variables. - * - * @param localNodeId local node id - * @param localInterfaceId local interface id - * @param remoteNodeId remote node id - * @param remoteInterfaceId remote interface id - */ - public PcepNaiUnnumberedAdjacencyIpv4(int localNodeId, int localInterfaceId, int remoteNodeId, - int remoteInterfaceId) { - this.localNodeId = localNodeId; - this.localInterfaceId = localInterfaceId; - this.remoteNodeId = remoteNodeId; - this.remoteInterfaceId = remoteInterfaceId; - } - - /** - * Returns PCEP Nai Unnumbered Adjacency Ipv4 object. - * - * @param localNodeId local node id - * @param localInterfaceId local interface if - * @param remoteNodeId remote node id - * @param remoteInterfaceId remote interface id - * @return PCEP Nai Unnumbered Adjacency Ipv4 object - */ - public static PcepNaiUnnumberedAdjacencyIpv4 of(int localNodeId, int localInterfaceId, int remoteNodeId, - int remoteInterfaceId) { - return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(localNodeId); - bb.writeInt(localInterfaceId); - bb.writeInt(remoteNodeId); - bb.writeInt(remoteInterfaceId); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and return object of PcepNAIUnnumberedAdjacencyIpv4. - * - * @param bb of type channel buffer - * @return object of PcepNAIUnnumberedAdjacencyIpv4 - */ - public static PcepNaiUnnumberedAdjacencyIpv4 read(ChannelBuffer bb) { - int localNodeId; - int localInterfaceId; - int remoteNodeId; - int remoteInterfaceId; - localNodeId = bb.readInt(); - localInterfaceId = bb.readInt(); - remoteNodeId = bb.readInt(); - remoteInterfaceId = bb.readInt(); - return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public int hashCode() { - return Objects.hash(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiUnnumberedAdjacencyIpv4) { - PcepNaiUnnumberedAdjacencyIpv4 other = (PcepNaiUnnumberedAdjacencyIpv4) obj; - return Objects.equals(this.localNodeId, other.localNodeId) - && Objects.equals(this.localInterfaceId, other.localInterfaceId) - && Objects.equals(this.remoteNodeId, other.remoteNodeId) - && Objects.equals(this.remoteInterfaceId, other.remoteInterfaceId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localNodeId", localNodeId) - .add("localInterfaceId", localInterfaceId) - .add("remoteNodeId", remoteNodeId) - .add("remoteInterfaceId", remoteInterfaceId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java deleted file mode 100644 index a4af6746..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * 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 cb output channel buffer - * @return objLenIndex object length index in channel buffer - */ - public int write(ChannelBuffer cb) { - - cb.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); - } - cb.writeByte(temp); - int objLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - return objLenIndex; - } - - /** - * Read from channel buffer and Returns PCEP Objects header. - * - * @param cb of type channel buffer - * @return PCEP Object header - */ - public static PcepObjectHeader read(ChannelBuffer cb) { - - byte objClass; - byte objType; - boolean bPFlag; - boolean bIFlag; - short objLen; - objClass = cb.readByte(); - byte temp = cb.readByte(); - bIFlag = (temp & IFLAG_SET) == IFLAG_SET; - bPFlag = (temp & PFLAG_SET) == PFLAG_SET; - objType = (byte) (temp >> OBJECT_TYPE_SHIFT_VALUE); - objLen = cb.readShort(); - return new PcepObjectHeader(objClass, objType, bPFlag, bIFlag, objLen); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClass", objClass) - .add("ObjectType", objType) - .add("ObjectLength", objLen) - .add("PFlag", (bPFlag) ? 1 : 0) - .add("IFlag", (bIFlag) ? 1 : 0) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java deleted file mode 100644 index 8d3c67a7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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; - -/** - * Abstraction of an entity which provides PCPE RSVP error spec. - */ -public interface PcepRsvpErrorSpec extends PcepValueType { - - /** - * To write the object information to channelBuffer. - * - * @param cb of type channel buffer - */ - @Override - int write(ChannelBuffer cb); - - /** - * Returns class number. - * - * @return class number - */ - byte getClassNum(); - - /** - * Returns class type. - * - * @return class type - */ - byte getClassType(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java deleted file mode 100644 index 326b66b7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp Ipv4 Error Spec. - */ -public class PcepRsvpIpv4ErrorSpec implements PcepRsvpErrorSpec { - - /* - RSVP error spec object header. - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv4 ERROR_SPEC object: Class = 6, C-Type = 1 - +-------------+-------------+-------------+-------------+ - | IPv4 Error Node Address (4 bytes) | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - */ - - PcepRsvpSpecObjHeader objHeader; - public static final byte CLASS_NUM = 0x06; - public static final byte CLASS_TYPE = 0x01; - public static final byte CLASS_LENGTH = 0x0c; - private int ipv4Addr; - private byte flags; - private byte errCode; - private short errValue; - - /** - * Constructor to initialize obj header, ipv4 addr, flags, err code and err value. - * - * @param objHeader rsvp ipv4 error spec object header - * @param ipv4Addr ipv4 address - * @param flags flags value - * @param errCode error code value - * @param errValue error value - */ - public PcepRsvpIpv4ErrorSpec(PcepRsvpSpecObjHeader objHeader, int ipv4Addr, byte flags, byte errCode, - short errValue) { - this.objHeader = objHeader; - this.ipv4Addr = ipv4Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - /** - * Constructor to initialize ipv4 address, flags, err code and err value. - * - * @param ipv4Addr ipv4 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv4ErrorSpec(int ipv4Addr, byte flags, byte errCode, short errValue) { - this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE); - this.ipv4Addr = ipv4Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeInt(ipv4Addr); - cb.writeByte(flags); - cb.writeByte(errCode); - cb.writeShort(errValue); - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Reads PCPE RSVP error spec from channel buffer and returns PCEP rsvp IPv4 error spec object. - * - * @param cb channel buffer - * @return PCEP rsvp IPv4 error spec object - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) { - PcepRsvpSpecObjHeader objHeader; - int ipv4Addr; - byte flags; - byte errCode; - short errValue; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - ipv4Addr = cb.readInt(); - flags = cb.readByte(); - errCode = cb.readByte(); - errValue = cb.readShort(); - return new PcepRsvpIpv4ErrorSpec(objHeader, ipv4Addr, flags, errCode, errValue); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return CLASS_LENGTH; - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv4Address", ipv4Addr) - .add("flags", flags) - .add("errorCode", errCode) - .add("errorValue", errValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java deleted file mode 100644 index 4da1ec6d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp Ipv6 Error Spec. - */ -public class PcepRsvpIpv6ErrorSpec implements PcepRsvpErrorSpec { - - /* - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv6 ERROR_SPEC object: Class = 6, C-Type = 2 - +-------------+-------------+-------------+-------------+ - | | - + + - | | - + IPv6 Error Node Address (16 bytes) + - | | - + + - | | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ */ - - PcepRsvpSpecObjHeader objHeader; - public static final byte CLASS_NUM = 0x06; - public static final byte CLASS_TYPE = 0x02; - public static final byte CLASS_LENGTH = 0x18; - public static final byte IPV6_LEN = 0x10; - - private byte[] ipv6Addr; - private byte flags; - private byte errCode; - private short errValue; - - /** - * Constructor to initialize obj header, ipv6 addr, flags, err code and err value. - * - * @param objHeader rsvp ipv6 error spec object header - * @param ipv6Addr ipv6 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv6ErrorSpec(PcepRsvpSpecObjHeader objHeader, byte[] ipv6Addr, byte flags, byte errCode, - short errValue) { - this.objHeader = objHeader; - this.ipv6Addr = ipv6Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - /** - * Constructor to initialize ipv6 addr, flags, err code and err value. - * - * @param ipv6Addr ipv6 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv6ErrorSpec(byte[] ipv6Addr, byte flags, byte errCode, short errValue) { - this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE); - this.ipv6Addr = ipv6Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeBytes(ipv6Addr); - cb.writeByte(flags); - cb.writeByte(errCode); - cb.writeShort(errValue); - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Returns PCEP rsvp IPv6 error spce object. - * - * @param cb channel buffer - * @return PCEP rsvp IPv6 error spce object - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) { - PcepRsvpSpecObjHeader objHeader; - byte[] ipv6Addr = new byte[IPV6_LEN]; - byte flags; - byte errCode; - short errValue; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - cb.readBytes(ipv6Addr, 0, IPV6_LEN); - flags = cb.readByte(); - errCode = cb.readByte(); - errValue = cb.readShort(); - return new PcepRsvpIpv6ErrorSpec(objHeader, ipv6Addr, flags, errCode, errValue); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return CLASS_LENGTH; - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv6Address", ipv6Addr) - .add("flags", flags) - .add("errorCode", errCode) - .add("errorValue", errValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java deleted file mode 100644 index bddcb898..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * 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 cb of type channel buffer - * @return object length index in channel buffer - */ - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort((short) 0); - cb.writeByte(this.objClassNum); - cb.writeByte(this.objClassType); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the PcepRsvpObjectHeader. - * - * @param cb input channel buffer - * @return PcepRsvpObjectHeader - */ - public static PcepRsvpObjectHeader read(ChannelBuffer cb) { - log.debug("read "); - byte objClassNum; - byte objClassType; - short objLen; - objLen = cb.readShort(); - objClassNum = cb.readByte(); - objClassType = cb.readByte(); - - return new PcepRsvpObjectHeader(objClassNum, objClassType, objLen); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClassNum", objClassNum) - .add("ObjectCType", objClassType) - .add("ObjectLength", objLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java deleted file mode 100644 index 132ff862..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepRsvpObjectHeader. - */ -public class PcepRsvpSpecObjHeader { - - /* - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - ERROR_SPEC object Header - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepRsvpSpecObjHeader.class); - - private short objLen; - private byte objClassNum; - private byte objClassType; - - /** - * Constructor to initialize length, class num and type. - * - * @param objLen object length - * @param objClassNum pcep rsvp error spec object class num - * @param objClassType pcep rsvp error spec object class type - */ - public PcepRsvpSpecObjHeader(short objLen, byte objClassNum, byte objClassType) { - this.objLen = objLen; - this.objClassNum = objClassNum; - this.objClassType = objClassType; - } - - /** - * Sets the Class num. - * - * @param value pcep rsvp error spec object class num - */ - public void setObjClassNum(byte value) { - this.objClassNum = value; - } - - /** - * Sets the Class type. - * - * @param value pcep rsvp error spec object class type - */ - public void setObjClassType(byte value) { - this.objClassType = value; - } - - /** - * Sets the Class Length. - * - * @param value pcep rsvp error spec object length - */ - public void setObjLen(short value) { - this.objLen = value; - } - - /** - * Returns Object Length. - * - * @return objLen pcep rsvp error spec object length - */ - public short getObjLen() { - return this.objLen; - } - - /** - * Returns Object num. - * - * @return objClassNum pcep rsvp error spec object class num - */ - public byte getObjClassNum() { - return this.objClassNum; - } - - /** - * Returns Object type. - * - * @return objClassType pcep rsvp error spec object class type - */ - public byte getObjClassType() { - return this.objClassType; - } - - /** - * Writes the byte stream of PcepRsvpObjectHeader to channel buffer. - * - * @param cb of type channel buffer - * @return object length index - */ - public int write(ChannelBuffer cb) { - int objLenIndex = cb.writerIndex(); - objLen = 0; - cb.writeShort(objLen); - cb.writeByte(objClassNum); - cb.writeByte(objClassType); - return objLenIndex; - } - - /** - * Reads the PcepRsvpObjectHeader. - * - * @param cb of type channel buffer - * @return PcepRsvpObjectHeader - */ - public static PcepRsvpSpecObjHeader read(ChannelBuffer cb) { - byte objClassNum; - byte objClassType; - short objLen; - objLen = cb.readShort(); - objClassNum = cb.readByte(); - objClassType = cb.readByte(); - - return new PcepRsvpSpecObjHeader(objLen, objClassNum, objClassType); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClassNum: ", objClassNum) - .add("ObjectCType: ", objClassType) - .add("ObjectLength: ", objLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java deleted file mode 100644 index 4a9357de..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * 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 java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp User Error Spec. - */ -public class PcepRsvpUserErrorSpec implements PcepRsvpErrorSpec { - - /* - RSVP error spec object header. - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : USER_ERROR_SPEC @ RFC5284. - USER_ERROR_SPEC object: Class = 194, C-Type = 1 - - 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 - +---------------+---------------+---------------+---------------+ - | Enterprise Number | - +---------------+---------------+---------------+---------------+ - | Sub Org | Err Desc Len | User Error Value | - +---------------+---------------+---------------+---------------+ - | | - ~ Error Description ~ - | | - +---------------+---------------+---------------+---------------+ - | | - ~ User-Defined Subobjects ~ - | | - +---------------+---------------+---------------+---------------+ - */ - - public static final byte CLASS_NUM = (byte) 0xc2; - public static final byte CLASS_TYPE = 0x01; - - private PcepRsvpSpecObjHeader objHeader; - private int enterpriseNum; - private byte subOrg; - private byte errDescLen; - private short userErrorValue; - private byte[] errDesc; - private LinkedList<PcepValueType> llRsvpUserSpecSubObj; - - /** - * Default constructor. - * - * @param objHeader pcep rsvp spec object header - * @param enterpriseNum enterprise number - * @param subOrg organization identifier value - * @param errDescLen error description length - * @param userErrorValue user error value - * @param errDesc error description - * @param llRsvpUserSpecSubObj list of subobjects - */ - public PcepRsvpUserErrorSpec(PcepRsvpSpecObjHeader objHeader, int enterpriseNum, byte subOrg, byte errDescLen, - short userErrorValue, byte[] errDesc, LinkedList<PcepValueType> llRsvpUserSpecSubObj) { - this.objHeader = objHeader; - this.enterpriseNum = enterpriseNum; - this.subOrg = subOrg; - this.errDescLen = errDescLen; - this.userErrorValue = userErrorValue; - this.errDesc = errDesc; - this.llRsvpUserSpecSubObj = llRsvpUserSpecSubObj; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeInt(enterpriseNum); - cb.writeByte(subOrg); - cb.writeByte(errDescLen); - cb.writeShort(userErrorValue); - cb.writeBytes(errDesc); - - if (llRsvpUserSpecSubObj != null) { - - ListIterator<PcepValueType> listIterator = llRsvpUserSpecSubObj.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - continue; - } - tlv.write(cb); - // need to take care of padding - int pad = tlv.getLength() % 4; - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - } - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Reads the channel buffer and returns object of PcepRsvpErrorSpec. - * - * @param cb of type channel buffer - * @return object of PcepRsvpErrorSpec - * @throws PcepParseException when expected object is not received - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) throws PcepParseException { - PcepRsvpSpecObjHeader objHeader; - int enterpriseNum; - byte subOrg; - byte errDescLen; - short userErrorValue; - byte[] errDesc; - LinkedList<PcepValueType> llRsvpUserSpecSubObj = null; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - - if (objHeader.getObjClassNum() != CLASS_NUM || objHeader.getObjClassType() != CLASS_TYPE) { - throw new PcepParseException("Expected PcepRsvpUserErrorSpec object."); - } - enterpriseNum = cb.readInt(); - subOrg = cb.readByte(); - errDescLen = cb.readByte(); - userErrorValue = cb.readShort(); - errDesc = new byte[errDescLen]; - cb.readBytes(errDesc, 0, errDescLen); - - llRsvpUserSpecSubObj = parseErrSpecSubObj(cb); - - return new PcepRsvpUserErrorSpec(objHeader, enterpriseNum, subOrg, errDescLen, userErrorValue, errDesc, - llRsvpUserSpecSubObj); - } - - private static LinkedList<PcepValueType> parseErrSpecSubObj(ChannelBuffer cb) throws PcepParseException { - LinkedList<PcepValueType> llRsvpUserSpecSubObj = new LinkedList<>(); - while (0 < cb.readableBytes()) { - PcepValueType tlv = null; - short hType = cb.readShort(); - int iValue = 0; - //short hLength = cb.readShort(); - switch (hType) { - case AutonomousSystemTlv.TYPE: - iValue = cb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - llRsvpUserSpecSubObj.add(tlv); - } - return llRsvpUserSpecSubObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return objHeader.getObjLen(); - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("enterpriseNumber", enterpriseNum) - .add("subOrganization", subOrg) - .add("errDescLength", errDescLen) - .add("userErrorValue", userErrorValue) - .add("errDesc", errDesc) - .add("RsvpUserSpecSubObject", llRsvpUserSpecSubObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java deleted file mode 100755 index c960e7ac..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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 - */ - short getType(); - - /** - * Returns the Length of PCEP Message. - * - * @return value of Length - */ - 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 - */ - int write(ChannelBuffer bb); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java deleted file mode 100644 index aceb7ea0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * 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 java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Remote TE Node Descriptors TLV. - */ -public class RemoteTENodeDescriptorsTlv implements PcepValueType { - - /* Reference :PCEP Extension for Transporting TE Data - draft-dhodylee-pce-pcep-te-data-extn-02 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD9] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RemoteTENodeDescriptorsTlv.class); - - public static final short TYPE = 1003; //TODD:change this TBD9 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // Node Descriptor Sub-TLVs (variable) - private LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs; - - /** - * Constructor to initialize llRemoteTENodeDescriptorSubTLVs. - * - * @param llRemoteTENodeDescriptorSubTLVs LinkedList of PcepValueType - */ - public RemoteTENodeDescriptorsTlv(LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs) { - this.llRemoteTENodeDescriptorSubTLVs = llRemoteTENodeDescriptorSubTLVs; - } - - /** - * Returns object of Remote TE Node Descriptors TLV. - * - * @param llRemoteTENodeDescriptorSubTLVs LinkedList of PcepValueType - * @return object of RemoteTENodeDescriptorsTLV - */ - public static RemoteTENodeDescriptorsTlv of(final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs) { - return new RemoteTENodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs); - } - - /** - * Returns Remote TE Node Descriptor Sub TLVs. - * - * @return llRemoteTENodeDescriptorSubTLVs - */ - public LinkedList<PcepValueType> getllRemoteTENodeDescriptorSubTLVs() { - return llRemoteTENodeDescriptorSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llRemoteTENodeDescriptorSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof RemoteTENodeDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - RemoteTENodeDescriptorsTlv other = (RemoteTENodeDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((RemoteTENodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs - .iterator(); - countObjSubTlv = ((RemoteTENodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs.size(); - countOtherSubTlv = other.llRemoteTENodeDescriptorSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llRemoteTENodeDescriptorSubTLVs.contains(subTlv), - other.llRemoteTENodeDescriptorSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llRemoteTENodeDescriptorSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of Remote TE Node Descriptors TLV. - * - * @param c input channel buffer - * @param length length of buffer - * @return object of RemoteTENodeDescriptorsTLV - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c , short length) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(length); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short hLength = tempCb.readShort(); - switch (hType) { - - case AutonomousSystemTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - case BGPLSidentifierTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new BGPLSidentifierTlv(iValue); - break; - case OSPFareaIDsubTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new OSPFareaIDsubTlv(iValue); - break; - case RouterIDSubTlv.TYPE: - tlv = RouterIDSubTlv.read(tempCb, hLength); - break; - - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llRemoteTENodeDescriptorSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new RemoteTENodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("RemoteTeNodeDescriptorSubTLVs", llRemoteTENodeDescriptorSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java deleted file mode 100644 index 9b27ce13..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides router id. - */ -public class RouterIDSubTlv implements PcepValueType { - - /* reference :I-D.ietf-idr-ls-distribution. - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD13] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RouterIDSubTlv.class); - - public static final short TYPE = 1000; //TODD:change this TBD13 - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue raw value - * @param hLength length - */ - public RouterIDSubTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns object of Router ID Sub Tlv. - * - * @param raw value - * @param hLength length - * @return object of Router ID Sub Tlv - */ - public static RouterIDSubTlv of(final byte[] raw, short hLength) { - return new RouterIDSubTlv(raw, hLength); - } - - /** - * Returns raw value. - * - * @return rawValue value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RouterIDSubTlv) { - RouterIDSubTlv other = (RouterIDSubTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of RouterIDSubTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of RouterIDSubTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new RouterIDSubTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java deleted file mode 100644 index 924a3a32..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides RoutingUniverseTLV identifiers. - */ -public class RoutingUniverseTlv implements PcepValueType { - - /* - * Reference : draft-dhodylee-pce-pcep-te-data-extn-02, section 9.2.1. - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD7] | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - * - * - * +------------+---------------------+ - | Identifier | Routing Universe | - +------------+---------------------+ - | 0 | L3 packet topology | - | 1 | L1 optical topology | - +------------+---------------------+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RoutingUniverseTlv.class); - - public static final short TYPE = 14; // TODO:need to change TBD7 - public static final short LENGTH = 8; - - private final long rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue raw value - */ - public RoutingUniverseTlv(long rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns object of RoutingUniverseTLV. - * - * @param raw value - * @return object of RoutingUniverseTLV - */ - public static RoutingUniverseTlv of(final long raw) { - return new RoutingUniverseTlv(raw); - } - - /** - * Returns raw value as Identifier. - * - * @return rawValue Identifier - */ - public long getLong() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RoutingUniverseTlv) { - RoutingUniverseTlv other = (RoutingUniverseTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of RoutingUniverseTLV. - * - * @param c input channel buffer - * @return object of RoutingUniverseTLV - */ - public static RoutingUniverseTlv read(ChannelBuffer c) { - return RoutingUniverseTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java deleted file mode 100644 index 70c15ee6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides SharedRiskLinkGroupTlv. - */ -public class SharedRiskLinkGroupTlv implements PcepValueType { - - /* - * Reference :[I-D.ietf-idr- Group ls-distribution] /3.3.2.5 - * - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type =TDB41 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Shared Risk Link Group Value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // ............ // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Shared Risk Link Group Value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(SharedRiskLinkGroupTlv.class); - - public static final short TYPE = 1096; //TODO:NEED TO HANDLE TDB41 - - private final short hLength; - - private final int[] srlgValue; - - /** - * Constructor to initialize SRLG value. - * - * @param srlgValue Shared Risk Link Group Value - * @param hLength length - */ - public SharedRiskLinkGroupTlv(int[] srlgValue, short hLength) { - this.srlgValue = srlgValue; - if (0 == hLength) { - this.hLength = (short) ((srlgValue.length) * 4); - } else { - this.hLength = hLength; - } - } - - /** - * Returns object of SharedRiskLinkGroupTlv. - * - * @param raw value - * @param hLength length - * @return object of SharedRiskLinkGroupTlv - */ - public static SharedRiskLinkGroupTlv of(final int[] raw, short hLength) { - return new SharedRiskLinkGroupTlv(raw, hLength); - } - - /** - * Returns SRLG Value. - * - * @return srlgValue - */ - public int[] getValue() { - return srlgValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(srlgValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SharedRiskLinkGroupTlv) { - SharedRiskLinkGroupTlv other = (SharedRiskLinkGroupTlv) obj; - return Objects.equals(this.srlgValue, other.srlgValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - for (int b : srlgValue) { - c.writeInt(b); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of SharedRiskLinkGroupTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of SharedRiskLinkGroupTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - int iLength = hLength / 4; - int[] iSharedRiskLinkGroup = new int[iLength]; - for (int i = 0; i < iLength; i++) { - iSharedRiskLinkGroup[i] = c.readInt(); - } - return new SharedRiskLinkGroupTlv(iSharedRiskLinkGroup, hLength); - } - - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (int b : srlgValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java deleted file mode 100644 index 3cbb82c8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java +++ /dev/null @@ -1,324 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides SrEroSubObject. - */ -public class SrEroSubObject implements PcepValueType { - /* - SR-ERO subobject: (draft-ietf-pce-segment-routing-00) - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | ST | Flags |F|S|C|M| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // NAI (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - - - NAI - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for IPv4 Adjacency - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Local IPv6 address (16 bytes) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Remote IPv6 address (16 bytes) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for IPv6 adjacency - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for Unnumbered adjacency with IPv4 Node IDs - - */ - protected static final Logger log = LoggerFactory.getLogger(SrEroSubObject.class); - - public static final short TYPE = 0x60; //TODO : type to be defined - public static final short LENGTH = 12; - public static final short VALUE_LENGTH = 10; - public static final int SET = 1; - public static final byte MFLAG_SET = 0x01; - public static final byte CFLAG_SET = 0x02; - public static final byte SFLAG_SET = 0x04; - public static final byte FFLAG_SET = 0x08; - public static final byte SHIFT_ST = 12; - - private final boolean bFFlag; - private final boolean bSFlag; - private final boolean bCFlag; - private final boolean bMFlag; - private final byte st; - - private final int sID; - private final PcepNai nai; - - /** - * Constructor to initialize member variables. - * - * @param st SID type - * @param bFFlag F flag - * @param bSFlag S flag - * @param bCFlag C flag - * @param bMFlag M flag - * @param sID segment identifier value - * @param nai NAI associated with SID - */ - public SrEroSubObject(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sID, - PcepNai nai) { - this.st = st; - this.bFFlag = bFFlag; - this.bSFlag = bSFlag; - this.bCFlag = bCFlag; - this.bMFlag = bMFlag; - this.sID = sID; - this.nai = nai; - } - - /** - * Creates object of SrEroSubObject. - * - * @param st SID type - * @param bFFlag F flag - * @param bSFlag S flag - * @param bCFlag C flag - * @param bMFlag M flag - * @param sID segment identifier value - * @param nai NAI associated with SID - * @return object of SrEroSubObject - */ - public static SrEroSubObject of(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sID, - PcepNai nai) { - return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - /** - * Returns SID type. - * @return st sid type - */ - public byte getSt() { - return st; - } - - /** - * Returns bFFlag. - * @return bFFlag - */ - public boolean getFFlag() { - return bFFlag; - } - - /** - * Returns bSFlag. - * @return bSFlag - */ - public boolean getSFlag() { - return bSFlag; - } - - /** - * Returns bCFlag. - * @return bCFlag - */ - public boolean getCFlag() { - return bCFlag; - } - - /** - * Returns bMFlag. - * @return bMFlag - */ - public boolean getMFlag() { - return bMFlag; - } - - /** - * Returns sID. - * @return sID - */ - public int getSID() { - return sID; - } - - /** - * Returns nai. - * @return nai - */ - public PcepNai getNai() { - return nai; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SrEroSubObject) { - SrEroSubObject other = (SrEroSubObject) obj; - return Objects.equals(this.st, other.st) && Objects.equals(this.bFFlag, other.bFFlag) - && Objects.equals(this.bSFlag, other.bSFlag) && Objects.equals(this.bCFlag, other.bCFlag) - && Objects.equals(this.bMFlag, other.bMFlag) && Objects.equals(this.sID, other.sID) - && Objects.equals(this.nai, other.nai); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - - c.writeShort(TYPE); - c.writeShort(LENGTH); - - short temp = 0; - if (bMFlag) { - temp = (short) (temp | MFLAG_SET); - } - if (bCFlag) { - temp = (short) (temp | CFLAG_SET); - } - if (bSFlag) { - temp = (short) (temp | SFLAG_SET); - } - if (bFFlag) { - temp = (short) (temp | FFLAG_SET); - } - short tempST = (short) (st << SHIFT_ST); - temp = (short) (temp | tempST); - c.writeShort(temp); - c.writeInt(sID); - nai.write(c); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of SrEroSubObject. - * @param c of type channel buffer - * @return object of SrEroSubObject - */ - public static PcepValueType read(ChannelBuffer c) { - short temp = c.readShort(); - boolean bMFlag; - boolean bCFlag; - boolean bSFlag; - boolean bFFlag; - byte st; - PcepNai nai = null; - - bMFlag = (temp & MFLAG_SET) == MFLAG_SET; - bCFlag = (temp & CFLAG_SET) == CFLAG_SET; - bSFlag = (temp & SFLAG_SET) == SFLAG_SET; - bFFlag = (temp & FFLAG_SET) == FFLAG_SET; - - st = (byte) (temp >> SHIFT_ST); - - int sID = c.readInt(); - switch (st) { - case 0x01: - nai = PcepNaiIpv4NodeId.read(c); - break; - case 0x02: - nai = PcepNaiIpv6NodeId.read(c); - break; - case 0x03: - nai = PcepNaiIpv4Adjacency.read(c); - break; - case 0x04: - nai = PcepNaiIpv6Adjacency.read(c); - break; - case 0x05: - nai = PcepNaiUnnumberedAdjacencyIpv4.read(c); - break; - default: - nai = null; - break; - } - - return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("st", st) - .add("bFflag", bFFlag) - .add("bSFlag", bSFlag) - .add("bCFlag", bCFlag) - .add("bMFlag", bMFlag) - .add("sID", sID) - .add("nAI", nai) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java deleted file mode 100644 index 020d31d9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulIPv4LspIdentidiersTlv. - */ -public class StatefulIPv4LspIdentidiersTlv implements PcepValueType { - - /* IPV4-LSP-IDENTIFIERS TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=18 | Length=16 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Tunnel Sender Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP ID | Tunnel ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Extended Tunnel ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Tunnel Endpoint Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulIPv4LspIdentidiersTlv.class); - - public static final short TYPE = 18; - public static final short LENGTH = 16; - public static final int VALUE_LENGTH = 16; - private final int ipv4IngressAddress; - private final short lspId; - private final short tunnelId; - private final int extendedTunnelId; - private final int ipv4EgressAddress; - - /** - * Constructor to initialize member variables. - * - * @param ipv4IngressAddress ingress ipv4 address - * @param lspId lsp id - * @param tunnelId tunnel id - * @param extendedTunnelId extended tunnel id - * @param ipv4EgressAddress egress ipv4 address - */ - public StatefulIPv4LspIdentidiersTlv(int ipv4IngressAddress, short lspId, short tunnelId, int extendedTunnelId, - int ipv4EgressAddress) { - - this.ipv4IngressAddress = ipv4IngressAddress; - this.lspId = lspId; - this.tunnelId = tunnelId; - this.extendedTunnelId = extendedTunnelId; - this.ipv4EgressAddress = ipv4EgressAddress; - } - - /** - * Creates object of StatefulIPv4LspIdentidiersTlv. - * - * @param ipv4IngressAddress ingress ipv4 address - * @param lspId lsp id - * @param tunnelId tunnel id - * @param extendedTunnelId extended tunnel id - * @param ipv4EgressAddress egress ipv4 address - * @return object of StatefulIPv4LspIdentidiersTlv - */ - public static StatefulIPv4LspIdentidiersTlv of(int ipv4IngressAddress, short lspId, short tunnelId, - int extendedTunnelId, int ipv4EgressAddress) { - return new StatefulIPv4LspIdentidiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, - ipv4EgressAddress); - } - - /** - * Returns tunnel id. - * - * @return tunnelId - */ - public short getTunnelId() { - return this.tunnelId; - } - - /** - * Returns extendedTunnelId. - * - * @return extendedTunnelId - */ - public int getextendedTunnelId() { - return this.extendedTunnelId; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns ipv4IngressAddress. - * - * @return ipv4IngressAddress - */ - public int getIpv4IngressAddress() { - return ipv4IngressAddress; - } - - /** - * Returns ipv4EgressAddress. - * - * @return ipv4EgressAddress - */ - public int getIpv4EgressAddress() { - return ipv4EgressAddress; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, ipv4EgressAddress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulIPv4LspIdentidiersTlv) { - StatefulIPv4LspIdentidiersTlv other = (StatefulIPv4LspIdentidiersTlv) obj; - return Objects.equals(this.ipv4IngressAddress, other.ipv4IngressAddress) - && Objects.equals(this.lspId, other.lspId) && Objects.equals(this.tunnelId, other.tunnelId) - && Objects.equals(this.extendedTunnelId, other.extendedTunnelId) - && Objects.equals(this.ipv4EgressAddress, other.ipv4EgressAddress); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(ipv4IngressAddress); - c.writeShort(lspId); - c.writeShort(tunnelId); - c.writeInt(extendedTunnelId); - c.writeInt(ipv4EgressAddress); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of StatefulIPv4LspIdentidiersTlv. - * - * @param c of type channel buffer - * @return object of StatefulIPv4LspIdentidiersTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int ipv4IngressAddress = c.readInt(); - short lspId = c.readShort(); - short tunnelId = c.readShort(); - int extendedTunnelId = c.readInt(); - int ipv4EgressAddress = c.readInt(); - return new StatefulIPv4LspIdentidiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, - ipv4EgressAddress); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type:", TYPE) - .add("Length:", LENGTH) - .add("Ipv4IngressAddress:", ipv4IngressAddress) - .add("LspId:", lspId).add("TunnelId:", tunnelId) - .add("ExtendedTunnelId:", extendedTunnelId) - .add("Ipv4EgressAddress:", ipv4EgressAddress).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java deleted file mode 100644 index a667dccd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulLspDbVerTlv. - */ -public class StatefulLspDbVerTlv implements PcepValueType { - - /* LSP-DB-VERSION TLV format - * - * Reference : Optimizations of Label Switched Path State Synchronization Procedures - for a Stateful PCE draft-ietf-pce-stateful-sync-optimizations-02 - * - * - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=23 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP State DB Version | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulLspDbVerTlv.class); - - public static final short TYPE = 23; - public static final short LENGTH = 8; - private final long rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue value - */ - public StatefulLspDbVerTlv(final long rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns object of StatefulLspDbVerTlv. - * - * @param raw is LSP State DB Version - * @return object of StatefulLspDbVerTlv - */ - public static StatefulLspDbVerTlv of(final long raw) { - return new StatefulLspDbVerTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns LSP State DB Version. - * - * @return rawValue value - */ - public long getLong() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulLspDbVerTlv) { - StatefulLspDbVerTlv other = (StatefulLspDbVerTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex(); - } - - /** - * Reads the channel buffer and returns object of StatefulLspDbVerTlv. - * - * @param c input channel buffer - * @return object of StatefulLspDbVerTlv - */ - public static StatefulLspDbVerTlv read(ChannelBuffer c) { - return StatefulLspDbVerTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java deleted file mode 100644 index 5d323f6a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulLspErrorCodeTlv. - */ -public class StatefulLspErrorCodeTlv implements PcepValueType { - - /* LSP-ERROR-CODE TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=20 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP Error Code | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - - protected static final Logger log = LoggerFactory.getLogger(StatefulLspErrorCodeTlv.class); - - public static final short TYPE = 20; - public static final short LENGTH = 4; - private final int rawValue; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue lsp error code value - */ - public StatefulLspErrorCodeTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Creates object of StatefulLspErrorCodeTlv. - * - * @param raw lsp error code value - * @return object of StatefulLspErrorCodeTlv - */ - public static StatefulLspErrorCodeTlv of(int raw) { - return new StatefulLspErrorCodeTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns lsp error code value. - * - * @return lsp error code value - */ - public int getInt() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulLspErrorCodeTlv) { - StatefulLspErrorCodeTlv other = (StatefulLspErrorCodeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of StatefulLspErrorCodeTlv. - * - * @param c of type channel buffer - * @return object of StatefulLspErrorCodeTlv - */ - public static StatefulLspErrorCodeTlv read(ChannelBuffer c) { - return StatefulLspErrorCodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java deleted file mode 100644 index 84f40e12..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulPceCapabilityTlv. - */ -public class StatefulPceCapabilityTlv implements PcepValueType { - - /* STATEFUL-PCE-CAPABILITY TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=16 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |D|T|I|S|U| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulPceCapabilityTlv.class); - - public static final short TYPE = 16; - public static final short LENGTH = 4; - public static final byte UFLAG_SET = 0x01; - public static final byte SFLAG_SET = 0x02; - public static final byte IFLAG_SET = 0x04; - public static final byte TFLAG_SET = 0x08; - public static final byte DFLAG_SET = 0x10; - public static final int SET = 1; - - private final int rawValue; - private final boolean bDFlag; - private final boolean bTFlag; - private final boolean bIFlag; - private final boolean bSFlag; - private final boolean bUFlag; - private final boolean isRawValueSet; - - /** - * Constructor to initialize variables. - * - * @param rawValue Flags - */ - public StatefulPceCapabilityTlv(int rawValue) { - this.rawValue = rawValue; - isRawValueSet = true; - this.bUFlag = (rawValue & UFLAG_SET) == UFLAG_SET; - this.bSFlag = (rawValue & SFLAG_SET) == SFLAG_SET; - this.bIFlag = (rawValue & IFLAG_SET) == IFLAG_SET; - this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET; - this.bDFlag = (rawValue & DFLAG_SET) == DFLAG_SET; - } - - /** - * Constructor to initialize variables. - * - * @param bDFlag D-flag - * @param bTFlag T-flag - * @param bIFlag I-flag - * @param bSFlag S-flag - * @param bUFlag U-flag - */ - public StatefulPceCapabilityTlv(boolean bDFlag, boolean bTFlag, boolean bIFlag, boolean bSFlag, boolean bUFlag) { - this.bDFlag = bDFlag; - this.bTFlag = bTFlag; - this.bIFlag = bIFlag; - this.bSFlag = bSFlag; - this.bUFlag = bUFlag; - this.rawValue = 0; - isRawValueSet = false; - } - - /** - * Returns object of StatefulPceCapabilityTlv. - * - * @param raw value Flags - * @return object of StatefulPceCapabilityTlv - */ - public static StatefulPceCapabilityTlv of(final int raw) { - return new StatefulPceCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns D-flag. - * - * @return bDFlag D-flag - */ - public boolean getDFlag() { - return bDFlag; - } - - /** - * Returns T-flag. - * - * @return bTFlag T-flag - */ - public boolean getTFlag() { - return bTFlag; - } - - /** - * Returns I-flag. - * - * @return bIFlag I-flag - */ - public boolean getIFlag() { - return bIFlag; - } - - /** - * Returns S-flag. - * - * @return bSFlag S-flag - */ - public boolean getSFlag() { - return bSFlag; - } - - /** - * Returns U-flag. - * - * @return bUFlag U-flag - */ - public boolean getUFlag() { - return bUFlag; - } - - /** - * Returns raw value Flags. - * - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulPceCapabilityTlv) { - StatefulPceCapabilityTlv other = (StatefulPceCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bDFlag, other.bDFlag) && Objects.equals(this.bTFlag, other.bTFlag) - && Objects.equals(this.bIFlag, other.bIFlag) && Objects.equals(this.bSFlag, other.bSFlag) - && Objects.equals(this.bUFlag, other.bUFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - int temp = 0; - if (bUFlag) { - temp = temp | UFLAG_SET; - } - if (bSFlag) { - temp = temp | SFLAG_SET; - } - if (bIFlag) { - temp = temp | IFLAG_SET; - } - if (bTFlag) { - temp = temp | TFLAG_SET; - } - if (bDFlag) { - temp = temp | DFLAG_SET; - } - c.writeInt(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of StatefulPceCapabilityTlv. - * - * @param c input channel buffer - * @return object of StatefulPceCapabilityTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int temp = c.readInt(); - boolean bDFlag; - boolean bTFlag; - boolean bIFlag; - boolean bSFlag; - boolean bUFlag; - - bUFlag = (temp & UFLAG_SET) == UFLAG_SET; - bSFlag = (temp & SFLAG_SET) == SFLAG_SET; - bIFlag = (temp & IFLAG_SET) == IFLAG_SET; - bTFlag = (temp & TFLAG_SET) == TFLAG_SET; - bDFlag = (temp & DFLAG_SET) == DFLAG_SET; - - return new StatefulPceCapabilityTlv(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", TYPE) - .add("Length", LENGTH) - .add("DFlag", bDFlag) - .add("TFlag", bTFlag) - .add("IFlag", bIFlag) - .add("SFlag", bSFlag) - .add("UFlag", bUFlag) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java deleted file mode 100644 index 9e1a074a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulRsvpErrorSpecTlv. - */ -public class StatefulRsvpErrorSpecTlv implements PcepValueType { - - protected static final Logger log = LoggerFactory.getLogger(StatefulRsvpErrorSpecTlv.class); - - /* RSVP-ERROR-SPEC TLV format - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - * - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=21 | Length (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + RSVP ERROR_SPEC or USER_ERROR_SPEC Object + - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv4 ERROR_SPEC object: Class = 6, C-Type = 1 - +-------------+-------------+-------------+-------------+ - | IPv4 Error Node Address (4 bytes) | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - - IPv6 ERROR_SPEC object: Class = 6, C-Type = 2 - +-------------+-------------+-------------+-------------+ - | | - + + - | | - + IPv6 Error Node Address (16 bytes) + - | | - + + - | | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - - Ref : USER_ERROR_SPEC @ RFC5284 - USER_ERROR_SPEC object: Class = 194, C-Type = 1 - 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 - +---------------+---------------+---------------+---------------+ - | Enterprise Number | - +---------------+---------------+---------------+---------------+ - | Sub Org | Err Desc Len | User Error Value | - +---------------+---------------+---------------+---------------+ - | | - ~ Error Description ~ - | | - +---------------+---------------+---------------+---------------+ - | | - ~ User-Defined Subobjects ~ - | | - +---------------+---------------+---------------+---------------+ - - */ - - public static final short TYPE = 21; - public static final int OBJECT_HEADER_LENGTH = 4; - private short hLength; - - private final PcepRsvpErrorSpec rsvpErrSpecObj; - private final boolean isErrSpceObjSet; - - /** - * Constructor to initialize errSpecObj. - * - * @param rsvpErrSpecObj Rsvp error spec object - */ - public StatefulRsvpErrorSpecTlv(PcepRsvpErrorSpec rsvpErrSpecObj) { - this.rsvpErrSpecObj = rsvpErrSpecObj; - this.isErrSpceObjSet = true; - } - - /** - * Returns PcepRsvpErrorSpecObject. - * - * @return rsvpErrSpecObj - */ - public PcepRsvpErrorSpec getPcepRsvpErrorSpec() { - return this.rsvpErrSpecObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - /** - * Reads channel buffer and returns object of StatefulRsvpErrorSpecTlv. - * - * @param cb of type channel buffer - * @return object of StatefulRsvpErrorSpecTlv - * @throws PcepParseException while parsing this tlv from channel buffer - */ - public static PcepValueType read(ChannelBuffer cb) throws PcepParseException { - - PcepRsvpErrorSpec rsvpErrSpecObj = null; - PcepRsvpSpecObjHeader rsvpErrSpecObjHeader; - - cb.markReaderIndex(); - rsvpErrSpecObjHeader = PcepRsvpSpecObjHeader.read(cb); - cb.resetReaderIndex(); - - if (PcepRsvpIpv4ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpIpv4ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpIpv4ErrorSpec.read(cb); - } else if (PcepRsvpIpv6ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpIpv6ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpIpv6ErrorSpec.read(cb); - } else if (PcepRsvpUserErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpUserErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpUserErrorSpec.read(cb); - } - return new StatefulRsvpErrorSpecTlv(rsvpErrSpecObj); - } - - @Override - public int hashCode() { - return Objects.hash(rsvpErrSpecObj.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulRsvpErrorSpecTlv) { - StatefulRsvpErrorSpecTlv other = (StatefulRsvpErrorSpecTlv) obj; - return Objects.equals(this.rsvpErrSpecObj, other.rsvpErrSpecObj); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - if (isErrSpceObjSet) { - rsvpErrSpecObj.write(c); - } - hLength = (short) (c.writerIndex() - iStartIndex); - c.setShort(tlvLenIndex, (hLength - OBJECT_HEADER_LENGTH)); - - return c.writerIndex() - iStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("Type", TYPE) - .add("Length", hLength) - .add("RSVPErrorSpecObject", rsvpErrSpecObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java deleted file mode 100644 index 27cf56a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides SymbolicPathNameTlv. - */ -public class SymbolicPathNameTlv implements PcepValueType { - - /* - * SYMBOLIC-PATH-NAME TLV format - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=17 | Length (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Symbolic Path Name // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(SymbolicPathNameTlv.class); - - public static final short TYPE = 17; - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Symbolic path name - */ - public SymbolicPathNameTlv(byte[] rawValue) { - this.rawValue = rawValue; - this.hLength = (short) rawValue.length; - } - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Symbolic path name - * @param hLength length of Symbolic path name - */ - public SymbolicPathNameTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Creates an object of SymbolicPathNameTlv. - * - * @param raw Symbolic path name - * @param hLength length of Symbolic path name - * @return object of SymbolicPathNameTlv - */ - public static SymbolicPathNameTlv of(final byte[] raw, short hLength) { - return new SymbolicPathNameTlv(raw, hLength); - } - - /** - * Returns Symbolic path name. - * - * @return Symbolic path name byte array - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SymbolicPathNameTlv) { - SymbolicPathNameTlv other = (SymbolicPathNameTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of SymbolicPathNameTlv. - * - * @param c of type channel buffer - * @param hLength length of bytes to read - * @return object of SymbolicPathNameTlv - */ - public static SymbolicPathNameTlv read(ChannelBuffer c, short hLength) { - byte[] symbolicPathName = new byte[hLength]; - c.readBytes(symbolicPathName, 0, hLength); - return new SymbolicPathNameTlv(symbolicPathName, hLength); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SymbolicPathName ", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java deleted file mode 100644 index 4429d223..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TEDefaultMetricTlv. - */ -public class TEDefaultMetricTlv implements PcepValueType { - - /* - * Reference :| [I-D.ietf-idr- ls-distribution] /3.3.2.3 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB37 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TE Default Link Metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(TEDefaultMetricTlv.class); - - public static final short TYPE = 13400; //TDB37 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue TE Default Link Metric - */ - public TEDefaultMetricTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created TEDefaultMetricTlv object. - * - * @param raw raw value - * @return object of TEDefaultMetricTlv. - */ - public static TEDefaultMetricTlv of(final int raw) { - return new TEDefaultMetricTlv(raw); - } - - /** - * Returns raw value. - * - * @return rawValue TE Default Link Metric - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TEDefaultMetricTlv) { - TEDefaultMetricTlv other = (TEDefaultMetricTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of TEDefaultMetricTlv. - * - * @param c input channel buffer - * @return object of TEDefaultMetricTlv - */ - public static TEDefaultMetricTlv read(ChannelBuffer c) { - return TEDefaultMetricTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java deleted file mode 100644 index b3b71aef..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java +++ /dev/null @@ -1,292 +0,0 @@ -/* - * 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 java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TELinkAttributesTlv. - */ -public class TELinkAttributesTlv implements PcepValueType { - - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD27] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Link Attributes Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(TELinkAttributesTlv.class); - - public static final short TYPE = 1897; //TODD:change this TBD27 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llLinkAttributesSubTLVs; - - /** - * Constructor to initialize Link Attributes Sub TLVs. - * - * @param llLinkAttributesSubTLVs linked list of PcepValueType - */ - public TELinkAttributesTlv(LinkedList<PcepValueType> llLinkAttributesSubTLVs) { - this.llLinkAttributesSubTLVs = llLinkAttributesSubTLVs; - } - - /** - * Returns object of TE Link Attributes TLV. - * - * @param llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV - * @return object of TELinkAttributesTlv - */ - public static TELinkAttributesTlv of(final LinkedList<PcepValueType> llLinkAttributesSubTLVs) { - return new TELinkAttributesTlv(llLinkAttributesSubTLVs); - } - - /** - * Returns linked list of Link Attribute of Sub TLV. - * - * @return llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV - */ - public LinkedList<PcepValueType> getllLinkAttributesSubTLVs() { - return llLinkAttributesSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llLinkAttributesSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TELinkAttributesTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TELinkAttributesTlv other = (TELinkAttributesTlv) obj; - Iterator<PcepValueType> objListIterator = ((TELinkAttributesTlv) obj).llLinkAttributesSubTLVs.iterator(); - countObjSubTlv = ((TELinkAttributesTlv) obj).llLinkAttributesSubTLVs.size(); - countOtherSubTlv = other.llLinkAttributesSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llLinkAttributesSubTLVs.contains(subTlv), - other.llLinkAttributesSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llLinkAttributesSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of TE Link Attributes TLV. - * - * @param c input channel buffer - * @param hLength length - * @return object of TELinkAttributesTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llLinkAttributesSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - switch (hType) { - - case IPv4TERouterIdOfLocalNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfLocalNodeTlv(iValue); - break; - case IPv6TERouterIdofLocalNodeTlv.TYPE: - byte[] ipv6LValue = new byte[IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6LValue, 0, IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofLocalNodeTlv(ipv6LValue); - break; - case IPv4TERouterIdOfRemoteNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfRemoteNodeTlv(iValue); - break; - case IPv6TERouterIdofRemoteNodeTlv.TYPE: - byte[] ipv6RValue = new byte[IPv6TERouterIdofRemoteNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6RValue, 0, IPv6TERouterIdofRemoteNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofRemoteNodeTlv(ipv6RValue); - break; - case LinkLocalRemoteIdentifiersTlv.TYPE: - tlv = LinkLocalRemoteIdentifiersTlv.read(tempCb); - break; - case AdministrativeGroupTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AdministrativeGroupTlv(iValue); - break; - case MaximumLinkBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new MaximumLinkBandwidthTlv(iValue); - break; - case MaximumReservableLinkBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new MaximumReservableLinkBandwidthTlv(iValue); - break; - case UnreservedBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new UnreservedBandwidthTlv(iValue); - break; - case TEDefaultMetricTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new TEDefaultMetricTlv(iValue); - break; - case LinkProtectionTypeTlv.TYPE: - tlv = LinkProtectionTypeTlv.read(tempCb); - break; - case MPLSProtocolMaskTlv.TYPE: - byte cValue = tempCb.readByte(); - tlv = new MPLSProtocolMaskTlv(cValue); - break; - case IGPMetricTlv.TYPE: - tlv = IGPMetricTlv.read(tempCb, length); - break; - case SharedRiskLinkGroupTlv.TYPE: - tlv = SharedRiskLinkGroupTlv.read(tempCb, length); - break; - case OpaqueLinkAttributeTlv.TYPE: - tlv = OpaqueLinkAttributeTlv.read(tempCb, length); - break; - case LinkNameTlv.TYPE: - tlv = LinkNameTlv.read(tempCb, length); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - llLinkAttributesSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - - return new TELinkAttributesTlv(llLinkAttributesSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("LinkAttributesSubTLVs", llLinkAttributesSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java deleted file mode 100644 index b974cf82..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * 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 java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TE Link Descriptors TLV. - */ -public class TELinkDescriptorsTlv implements PcepValueType { - - /* - * Reference: PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD14] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Link Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - - protected static final Logger log = LoggerFactory.getLogger(TELinkDescriptorsTlv.class); - - public static final short TYPE = 1070; //TODD:change this TBD14 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llLinkDescriptorsSubTLVs; - - /** - * Constructor to initialize llLinkDescriptorsSubTLVs. - * - * @param llLinkDescriptorsSubTLVs of PcepValueType - */ - public TELinkDescriptorsTlv(LinkedList<PcepValueType> llLinkDescriptorsSubTLVs) { - this.llLinkDescriptorsSubTLVs = llLinkDescriptorsSubTLVs; - } - - /** - * Returns object of TELinkDescriptorsTLV. - * - * @param llLinkDescriptorsSubTLVs of PcepValueType - * @return object of TELinkDescriptorsTLV - */ - public static TELinkDescriptorsTlv of(final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs) { - return new TELinkDescriptorsTlv(llLinkDescriptorsSubTLVs); - } - - /** - * Returns linked list of Link Attribute of Sub TLV. - * - * @return llLinkDescriptorsSubTLVs linked list of Link Attribute of Sub TLV - */ - public LinkedList<PcepValueType> getllLinkDescriptorsSubTLVs() { - return llLinkDescriptorsSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llLinkDescriptorsSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TELinkDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TELinkDescriptorsTlv other = (TELinkDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((TELinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.iterator(); - countObjSubTlv = ((TELinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.size(); - countOtherSubTlv = other.llLinkDescriptorsSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llLinkDescriptorsSubTLVs.contains(subTlv), - other.llLinkDescriptorsSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llLinkDescriptorsSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of TELinkDescriptorsTLV. - * - * @param c input channel buffer - * @param length length - * @return object of TELinkDescriptorsTLV - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short length) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llLinkDescriptorsSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(length); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short hLength = tempCb.readShort(); - log.debug("sub Tlv Length" + hLength); - switch (hType) { - - case LinkLocalRemoteIdentifiersTlv.TYPE: - tlv = LinkLocalRemoteIdentifiersTlv.read(tempCb); - break; - case IPv4InterfaceAddressTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4InterfaceAddressTlv(iValue); - break; - case IPv4NeighborAddressTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4NeighborAddressTlv(iValue); - break; - case IPv6InterfaceAddressTlv.TYPE: - byte[] ipv6Value = new byte[IPv6InterfaceAddressTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6Value, 0, IPv6InterfaceAddressTlv.VALUE_LENGTH); - tlv = new IPv6InterfaceAddressTlv(ipv6Value); - break; - case IPv6NeighborAddressTlv.TYPE: - byte[] ipv6NeighborAdd = new byte[IPv6NeighborAddressTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6NeighborAdd, 0, IPv6NeighborAddressTlv.VALUE_LENGTH); - tlv = new IPv6NeighborAddressTlv(ipv6NeighborAdd); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type:" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - llLinkDescriptorsSubTLVs.add(tlv); - - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new TELinkDescriptorsTlv(llLinkDescriptorsSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("LinkDescriptorsSubTLVs", llLinkDescriptorsSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java deleted file mode 100644 index f18b75b2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * 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 java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TE Node Attributes Tlv. - */ -public class TENodeAttributesTlv implements PcepValueType { - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD20] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Attributes Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - - */ - - protected static final Logger log = LoggerFactory.getLogger(TENodeAttributesTlv.class); - - public static final short TYPE = 1267; //TODD:change this TBD20 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llNodeAttributesSubTLVs; - - /** - * Constructor to initialize llNodeAttributesSubTLVs. - * - * @param llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs - */ - public TENodeAttributesTlv(LinkedList<PcepValueType> llNodeAttributesSubTLVs) { - this.llNodeAttributesSubTLVs = llNodeAttributesSubTLVs; - } - - /** - * Returns object of TENodeAttributesTlv. - * - * @param llNodeAttributesSubTLVs LinkedList of PcepValueType - * @return object of TENodeAttributesTlv - */ - public static TENodeAttributesTlv of(LinkedList<PcepValueType> llNodeAttributesSubTLVs) { - return new TENodeAttributesTlv(llNodeAttributesSubTLVs); - } - - /** - * Returns Node Attributes Sub-TLVs. - * - * @return llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs - */ - public LinkedList<PcepValueType> getllNodeAttributesSubTLVs() { - return llNodeAttributesSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llNodeAttributesSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TENodeAttributesTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TENodeAttributesTlv other = (TENodeAttributesTlv) obj; - Iterator<PcepValueType> objListIterator = ((TENodeAttributesTlv) obj).llNodeAttributesSubTLVs.iterator(); - countObjSubTlv = ((TENodeAttributesTlv) obj).llNodeAttributesSubTLVs.size(); - countOtherSubTlv = other.llNodeAttributesSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llNodeAttributesSubTLVs.contains(subTlv), - other.llNodeAttributesSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llNodeAttributesSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads the channel buffer and returns object of TENodeAttributesTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of TENodeAttributesTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llNodeAttributesSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - switch (hType) { - - case NodeFlagBitsTlv.TYPE: - byte cValue = tempCb.readByte(); - tlv = new NodeFlagBitsTlv(cValue); - break; - case OpaqueNodeAttributeTlv.TYPE: - tlv = OpaqueNodeAttributeTlv.read(tempCb, length); - break; - case NodeNameTlv.TYPE: - tlv = NodeNameTlv.read(tempCb, length); - break; - case ISISAreaIdentifierTlv.TYPE: - tlv = ISISAreaIdentifierTlv.read(tempCb, length); - break; - case IPv4TERouterIdOfLocalNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfLocalNodeTlv(iValue); - break; - case IPv6TERouterIdofLocalNodeTlv.TYPE: - byte[] ipv6Value = new byte[IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6Value, 0, IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofLocalNodeTlv(ipv6Value); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llNodeAttributesSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new TENodeAttributesTlv(llNodeAttributesSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("NodeAttributesSubTLVs", llNodeAttributesSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java deleted file mode 100644 index 189dcadc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TED Capability Tlv. - */ -public class TedCapabilityTlv implements PcepValueType { - - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD5] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |R| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(TedCapabilityTlv.class); - - public static final short TYPE = 132; //TODO: need to change this TBD5 - public static final short LENGTH = 4; - public static final int SET = 1; - public static final byte RFLAG_CHECK = 0x01; - - private final boolean bRFlag; - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Flags - */ - public TedCapabilityTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - int temp = rawValue; - temp = temp & RFLAG_CHECK; - if (temp == SET) { - this.bRFlag = true; - } else { - this.bRFlag = false; - } - - } - - /** - * Constructor to initialize bRFlag. - * - * @param bRFlag R-flag - */ - public TedCapabilityTlv(boolean bRFlag) { - this.bRFlag = bRFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns R-flag. - * - * @return bRFlag - */ - public boolean getbRFlag() { - return bRFlag; - } - - /** - * Returns an object of TedCapabilityTlv. - * - * @param raw value Flags - * @return object of TedCapabilityTlv - */ - public static TedCapabilityTlv of(final int raw) { - return new TedCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bRFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TedCapabilityTlv) { - TedCapabilityTlv other = (TedCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bRFlag, other.bRFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - int temp = 0; - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - if (bRFlag) { - temp = temp | RFLAG_CHECK; - } - c.writeInt(temp); - } - return c.writerIndex() - iStartIndex; - } - - /** - * Reads channel buffer and returns object of TedCapabilityTlv. - * - * @param c input channel buffer - * @return object of TedCapabilityTlv - */ - public static TedCapabilityTlv read(ChannelBuffer c) { - return TedCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java deleted file mode 100644 index d44bf824..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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 java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Unreserved Bandwidth Tlv. - */ -public class UnreservedBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.6 - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB36] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unreserved Bandwidth | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(UnreservedBandwidthTlv.class); - - public static final short TYPE = 11; //TDB36 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Unreserved Bandwidth - */ - public UnreservedBandwidthTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created UnreservedBandwidthTlv object. - * - * @param raw as Unreserved Bandwidth - * @return object of UnreservedBandwidthTlv - */ - public static UnreservedBandwidthTlv of(final int raw) { - return new UnreservedBandwidthTlv(raw); - } - - /** - * Returns Unreserved Bandwidth. - * - * @return rawValue Unreserved Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UnreservedBandwidthTlv) { - UnreservedBandwidthTlv other = (UnreservedBandwidthTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads byte stream from channel buffer and returns object of UnreservedBandwidthTlv. - * - * @param c input channel buffer - * @return object of UnreservedBandwidthTlv - */ - public static UnreservedBandwidthTlv read(ChannelBuffer c) { - return UnreservedBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java deleted file mode 100644 index 12744de1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Implementation of Tlvs and Pcep common objects. - */ -package org.onosproject.pcepio.types; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java deleted file mode 100644 index c39f606b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.util; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides Hex Dump for debugging. - */ -public final class HexDump { - protected static final Logger log = LoggerFactory.getLogger(HexDump.class); - - private HexDump() { - } - - public static void pcepHexDump(ChannelBuffer buff) { - - log.debug("==================== HEX DUMP ======================"); - try { - byte[] yTemp; - yTemp = buff.array(); - - int iStartIndex = buff.readerIndex(); - int iEndIndex = buff.writerIndex(); - do { - StringBuilder sb = new StringBuilder(); - for (int k = 0; (k < 16) && (iStartIndex < iEndIndex); ++k) { - if (0 == k % 4) { - sb.append(String.format(" ")); //blank after 4 bytes - } - sb.append(String.format("%02X ", yTemp[iStartIndex++])); - } - log.debug(sb.toString()); - } while (iStartIndex < iEndIndex); - } catch (Exception e) { - log.error("[HexDump] Invalid buffer: " + e.toString()); - } - - log.debug("==================================================="); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java deleted file mode 100644 index b3756ffe..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -/** - * Provides utility functionality for PCEP messages. - */ -package org.onosproject.pcepio.util; diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java deleted file mode 100644 index 33c00ddf..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepCloseMsgTest { - - /** - * Common header, reason to close. - */ - @Test - public void closeMessageTest1() throws PcepParseException { - - byte[] closeMsg = new byte[] {0x20, 0x07, 0x00, 0x0C, 0x0f, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02 }; - - byte[] testCloseMsg = {0 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(closeMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepCloseMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testCloseMsg = buf.array(); - - int readLen = buf.writerIndex(); - testCloseMsg = new byte[readLen]; - buf.readBytes(testCloseMsg, 0, readLen); - assertThat(testCloseMsg, is(closeMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java deleted file mode 100644 index 234cea67..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java +++ /dev/null @@ -1,735 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test cases for PCEP ERROR Message. - */ -public class PcepErrorMsgTest { - - /** - * This test case checks for - * PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest1() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x28, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest2() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x28, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest3() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x20, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest4() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2c, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x18, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest5() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x10, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest6() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x1C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x08, // OPEN object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, OPEN Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest7() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x08, // OPEN object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest8() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x20, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest9() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest10() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest11() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x18, // common header - 0x65, 0x13, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest12() throws PcepParseException { - - //RP Object, PCEP-ERROR Object - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x18, // common header - 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * RP Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest13() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * TE Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest14() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest15() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x20, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest16() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, TE Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest17() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest18() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, TE Object, TE Object, PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest19() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object, - * TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest20() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x48, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java deleted file mode 100644 index 9341f326..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java +++ /dev/null @@ -1,1683 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepInitiateMsgExtTest { - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST objects in PcInitiate message. - */ - @Test - public void initiateMessageTest1() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA4, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, - * StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest2() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x48, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH objects in PcInitiate message. - */ - @Test - public void initiateMessageTest3() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - //0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), - * END-POINTS, ERO, LSPA objects in PcInitiate message. - */ - @Test - public void initiateMessageTest4() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - // 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest5() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest6() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, - * LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest7() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x98, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest8() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x90, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest9() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest10() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest11() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest12() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest13() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest14() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest15() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest16() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest17() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest18() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest19() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest20() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest21() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, - * LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest22() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest23() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest25() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest26() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x6C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest27() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, - * LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest28() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest29() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest30() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest31() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest32() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest33() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest34() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest35() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest36() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } -} - diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java deleted file mode 100644 index 0f8bb7ba..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java +++ /dev/null @@ -1,1331 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepInitiateMsgTest { - - /** - * This test case checks for srp, lsp, end-point, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest1() throws PcepParseException { - - /* srp, lsp, end-point, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, 0x54, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x00, 0x08, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp and lsp objects in PcInitiate message. - */ - @Test - public void initiateMessageTest2() throws PcepParseException { - /* srp, lsp. - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x20, 0x10, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - 0x01, 0x01, 0x01, 0x01, 0x00, 0x43, (byte) 0x83, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33}; //SymbolicPathTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO objects - * in PcInitiate message. - */ - @Test - public void initiateMessageTest3() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest4() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest5() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest6() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest7() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest8() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest9() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x3c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest10() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, - (byte) 0xb6, 0x02, 0x4e, 0x20, 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08 //StatefulLspErrorCodeTlv - }; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) objects in PcInitiate message. - */ - @Test - public void initiateMessageTest11() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - StatefulLspErrorCodeTlv).*/ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08}; //StatefulLspErrorCodeTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest12() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00 //SymbolicPathNameTlv - }; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest13() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00}; //SymbolicPathNameTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest14() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest15() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x2c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest16() throws PcepParseException { - - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest17() throws PcepParseException { - - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest18() throws PcepParseException { - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest19() throws PcepParseException { - //srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp, - * lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv) objects in PcInitiate message. - */ - @Test - public void initiateMessageTest20() throws PcepParseException { - /* srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp, - * lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest21() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x94, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest22() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest23() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xB0, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest24() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth*/ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xBC, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest25() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xC4, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest26() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xD0, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest27() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xE4, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java deleted file mode 100644 index 56cf06b4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepKeepaliveMsgTest { - - /** - * Common header for keep alive message. - */ - @Test - public void keepaliveMessageTest1() throws PcepParseException { - - byte[] keepaliveMsg = new byte[] {0x20, 0x02, 0x00, 0x04 }; - - byte[] testKeepaliveMsg = {0 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(keepaliveMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepKeepaliveMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testKeepaliveMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testKeepaliveMsg = new byte[iReadLen]; - buf.readBytes(testKeepaliveMsg, 0, iReadLen); - - Assert.assertThat(testKeepaliveMsg, is(keepaliveMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java deleted file mode 100644 index e1947bd7..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; - -public class PcepLabelUpdateMsgTest { - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest1() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x24, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL Object, LABEL Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest2() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x30, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-map> SRP, LABEL, FEC Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest3() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x24, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0B, 0x0B}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LSP, LABEL - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest4() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x02, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-map> SRP, LABEL, FEC, <pce-label-map> SRP, LABEL, FEC. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest5() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x44, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0B, 0x0B, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0C, 0x0C}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LABEL, FEC. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest6() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest7() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. - * <pce-label-download> SRP, LSP, LABEL, LABEL. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest8() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x7C, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java deleted file mode 100644 index 6e0a0596..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java +++ /dev/null @@ -1,558 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; -/** - * Test cases for PCEP OPEN Message. - */ -public class PcepOpenMsgTest { - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest1() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x10, 0x00, 0x20, 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest2() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x1E, 0x78, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f}; // STATEFUL-PCE-CAPABILITY - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with GmplsCapability tlv in Pcep Open message. - */ - @Test - public void openMessageTest3() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x1E, 0x78, 0x01, // OPEN object - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; //GMPLS-CAPABILITY-TLV - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with StatefulLspDbVer Tlv in Pcep Open message. - */ - @Test - public void openMessageTest4() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x18, - 0x01, 0x10, 0x00, 0x14, 0x20, 0x1e, 0x78, 0x20, - 0x00, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }; //StatefulLspDbVerTlv - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with no tlv's in Pcep Open message. - */ - @Test - public void openMessageTest5() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0C, - 0x01, 0x10, 0x00, 0x08, 0x20, 0x1e, 0x78, (byte) 0xbd }; // no Tlvs in open messsage - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with I bit set in Pcep Open message. - */ - @Test - public void openMessageTest6() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x11, 0x00, 0x20, //p bit not set & i bit set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P bit set in Pcep Open message. - */ - @Test - public void openMessageTest7() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x12, 0x00, 0x20, //p bit set & i bit not set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P & I bits set in Pcep Open message. - */ - @Test - public void openMessageTest8() throws PcepParseException { - - /* OPEN OBJECT (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV) - with p bit set & i bit set. - */ - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P & I bits set and invalid session id in Pcep Open message. - */ - @Test - public void openMessageTest9() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set - 0x20, 0x1e, 0x78, 0x00, //invalid sessionID - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV - * in Pcep Open message. - */ - @Test - public void openMessageTest10() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1C, // common header - 0x01, 0x10, 0x00, 0x18, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, - 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV in Pcep Open message. - */ - @Test - public void openMessageTest11() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x2C, // common header - 0x01, 0x10, 0x00, 0x28, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00 }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest12() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, // common header - 0x01, 0x10, 0x00, 0x20, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV - * in Pcep Open message. - */ - @Test - public void openMessageTest13() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1c, // common header - 0x01, 0x10, 0x00, 0x18, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY in Pcep Open message. - */ - @Test - public void openMessageTest14() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with no tlv Pcep Open message. - */ - @Test - public void openMessageTest15() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0c, // common header - 0x01, 0x10, 0x00, 0x08, // common object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - assertThat(testOpenMsg, is(openMsg)); - - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java deleted file mode 100644 index f9921efd..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepReportMsgExtTest { - - /** - * This test case checks forSRP Object,LSP Object(symbolic path tlv),ERO Object - * SRP Object,LSP Object(symbolic path tlv,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest39() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x98, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest40() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * in PcRpt message. - */ - @Test - public void reportMessageTest41() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object, - * Metric-list SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object,Metric-list, - * RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest42() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0xE8, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java deleted file mode 100644 index c9e2bc8b..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java +++ /dev/null @@ -1,1597 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepReportMsgTest { - - /** - * This test case checks for SRP object, LSP object(Symbolic path name tlv), ERO object - * in PcRpt message. - */ - @Test - public void reportMessageTest1() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, 0x24, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04}; //ERO Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest2() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object // LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, // IPv4SubObjects - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv) - * ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest3() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //Ipv4SubObjects - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Objects - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv) - * ERO Object, LSPA Object, Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest4() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest5() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list. - * in PcRpt message. - */ - @Test - public void reportMessageTest6() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04, //ERO Object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object, ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest7() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, // Metric objects - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP object, LSP object( StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO object, LSPA object, Metric object - * in PcRpt message. - */ - @Test - public void reportMessageTest8() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv, - * StatefulLspErrorCodeTlv ),ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest9() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulIPv4LspIdentidiersTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest10() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(SymbolicPathNameTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest11() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object, ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest12() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulLspErrorCodeTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest13() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulRsvpErrorSpecTlv),ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest14() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),LSPA Object,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest15() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),BandWidth Object,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest16() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest17() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,BandWidth Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest18() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest19() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest20() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x88, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv, - * StatefulLspErrorCodeTlv ) ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest21() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xac, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest22() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xA0, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest23() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest24() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x84, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest25() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object - * in PcRpt message. - */ - @Test - public void reportMessageTest26() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv) - * ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest27() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * LSPA Object,BandWidth Object,Metric-list,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest28() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest29() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest30() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xE4, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest31() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest32() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x14, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest33() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x1c, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path Tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,BandWidth Object,Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest34() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xB4, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object)Symbolic path tlv),ERO Object,SRP Object - * LSP Object(symbolic path tlv) ERO Object,LSPA Object, BandWidth Object,Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest35() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java deleted file mode 100644 index e401c159..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java +++ /dev/null @@ -1,1596 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepTEReportMsgTest { - - /** - * This test case checks for - * TE Object (Routing Universe TLV, Local TE Node Descriptors TLV(AutonomousSystemTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest1() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x28, // common header - 0x0E, 0x10, 0x00, 0x24, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x08, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystem Tlv - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * T E Object (Routing Universe TLV, Local TE Node Descriptors TLV(AutonomousSystemTlv)) with different TE-ID. - * in PcTERpt message. - */ - @Test - public void teReportMessageTest2() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x28, // common header - 0x0E, 0x10, 0x00, 0x24, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x08, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest3() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x1c, // common header - 0x0E, 0x10, 0x00, 0x18, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest4() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x44, // common header - 0x0E, 0x10, 0x00, 0x40, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest5() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x3C, // common header - 0x0E, 0x10, 0x00, 0x38, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x1C, // Local TE Node Descriptors TLV - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(OSPFareaIDsubTlv, - * RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest6() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x34, // common header - 0x0E, 0x10, 0x00, 0x30, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x14, // Local TE Node Descriptors TLV - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest7() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x2C, // common header - 0x0E, 0x10, 0x00, 0x28, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x0C, // Local TE Node Descriptors TLV - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest8() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x20, // common header - 0x0E, 0x10, 0x00, 0x1C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x00 // Local TE Node Descriptors TLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest9() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x6C, // common header - 0x0E, 0x10, 0x00, 0x68, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest10() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x64, // common header - 0x0E, 0x10, 0x00, 0x60, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x1C, //RemoteTENodeDescriptorsTLV - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest11() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x5C, // common header - 0x0E, 0x10, 0x00, 0x58, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x14, //RemoteTENodeDescriptorsTLV - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest12() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x54, // common header - 0x0E, 0x10, 0x00, 0x50, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x0c, //RemoteTENodeDescriptorsTLV - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest13() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x48, // common header - 0x0E, 0x10, 0x00, 0x44, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x00, //RemoteTENodeDescriptorsTLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest14() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x8C, // common header - 0x0E, 0x10, 0x00, (byte) 0x88, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV( - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest15() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x80, // common header - 0x0E, 0x10, 0x00, (byte) 0x7C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x10, //TELinkDescriptorsTLV - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest16() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x78, // common header - 0x0E, 0x10, 0x00, (byte) 0x74, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x08, //TELinkDescriptorsTLV - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest17() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x70, // common header - 0x0E, 0x10, 0x00, (byte) 0x6C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x00, //TELinkDescriptorsTLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest18() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xC0, // common header - 0x0E, 0x10, 0x00, (byte) 0xbC, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x30, //TENodeAttributesTlv - 0x00, 0x0E, 0x00, 0x01, //NodeFlagBitsTlv - (byte) 0x90, 0x00, 0x00, 0x00, - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest19() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xC0, // common header - 0x0E, 0x10, 0x00, (byte) 0xBC, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x30, //TENodeAttributesTlv - 0x00, 0x0E, 0x00, 0x01, //NodeFlagBitsTlv - (byte) 0x90, 0x00, 0x00, 0x00, - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(OpaqueNodeAttributeTlv - * NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest20() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xB8, // common header - 0x0E, 0x10, 0x00, (byte) 0xB4, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv. - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(OpaqueNodeAttributeTlv - * ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest21() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xAC, // common header - 0x0E, 0x10, 0x00, (byte) 0xA8, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x1C, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv. - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv. - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv). - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv. - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv. - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv. - * OpaqueLinkAttributeTlv, LinkNameTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest22() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x120, // common header - 0x0E, 0x10, 0x01, (byte) 0x1C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x64, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03, //OpaqueLinkAttributeTlv - 0x04, 0x49, 0x00, 0x04, - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x4A, 0x00, 0x04, //LinkNameTlv - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv - * OpaqueLinkAttributeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest23() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x118, // common header - 0x0E, 0x10, 0x01, (byte) 0x14, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x5C, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03, //OpaqueLinkAttributeTlv - 0x04, 0x49, 0x00, 0x04, - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest24() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x110, // common header - 0x0E, 0x10, 0x01, (byte) 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x54, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest25() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x104, // common header - 0x0E, 0x10, 0x01, 0x00, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x48, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java deleted file mode 100644 index 40234a69..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java +++ /dev/null @@ -1,1269 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test cases for PCEP update message. - */ -public class PcepUpdateMsgExtTest { - - /** - * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object, - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest1() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * LSPA, Bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest2() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSP object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, LSPA, bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest3() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest4() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest5() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object, LSPA, bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest6() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * bandwidth object Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest7() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest8() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest9() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x18, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest10() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPa object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest11() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest12() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest13() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest14() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest15() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //lspa object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest16() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest17() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest18() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest19() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest20() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest21() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest22() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest23() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest24() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest25() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * LSPA object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest26() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest27() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x34, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest28() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * lspa object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest29() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest30() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest31() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object, - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest32() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } -} - diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java deleted file mode 100644 index 1db30641..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java +++ /dev/null @@ -1,1423 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepUpdateMsgTest { - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), ERO in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest1() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x30, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv - 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP(SymbolicPathNameTlv), LSP (StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO, LSPA, Metric-list in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest2() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x94, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object // lsp object - 0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv - 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x24, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest3() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x38, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest4() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest5() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest6() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest7() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04}; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject) objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest8() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x0c, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject) objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest9() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject), LSPA objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest10() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x6c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest11() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest12() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest13() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric Object objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest14() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest15() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest16() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest17() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x05, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest18() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),Metric-list objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest19() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv),ERO (IPv4SubObject, IPv4SubObject),LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest20() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), Bandwidth objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest21() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest22() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5C, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest23() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest24() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest25() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, - * Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest26() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, - * Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest27() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject), - * LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest28() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest29() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP, - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest30() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulLspErrorCodeTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest31() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP, - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest32() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x8, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest33() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest34() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java deleted file mode 100644 index 41e88445..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the AdministrativeGroupTlv. - */ -public class AdministrativeGroupTlvTest { - private final AdministrativeGroupTlv tlv1 = AdministrativeGroupTlv.of(1); - private final AdministrativeGroupTlv sameAsTlv1 = AdministrativeGroupTlv.of(1); - private final AdministrativeGroupTlv tlv2 = AdministrativeGroupTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java deleted file mode 100644 index 904a71ef..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the AutonomousSystemTlv. - */ -public class AutonomousSystemTlvTest { - private final AutonomousSystemTlv tlv1 = AutonomousSystemTlv.of(1); - private final AutonomousSystemTlv sameAsTlv1 = AutonomousSystemTlv.of(1); - private final AutonomousSystemTlv tlv2 = AutonomousSystemTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java deleted file mode 100644 index 7ac6cea4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the BGPLSidentifierTlv. - */ -public class BGPLSidentifierTlvTest { - private final BGPLSidentifierTlv tlv1 = BGPLSidentifierTlv.of(1); - private final BGPLSidentifierTlv sameAsTlv1 = BGPLSidentifierTlv.of(1); - private final BGPLSidentifierTlv tlv2 = BGPLSidentifierTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java deleted file mode 100644 index 7972712f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the GmplsCapabilityTlv. - */ -public class GmplsCapabilityTlvTest { - private final GmplsCapabilityTlv tlv1 = GmplsCapabilityTlv.of(1); - private final GmplsCapabilityTlv sameAsTlv1 = GmplsCapabilityTlv.of(1); - private final GmplsCapabilityTlv tlv2 = GmplsCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java deleted file mode 100644 index 061a9cea..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IGPMetricTlv. - */ -public class IGPMetricTlvTest { - private final byte[] b1 = new byte[] {0x01, 0x02}; - private final byte[] b2 = new byte[] {0x01, 0x02}; - private final IGPMetricTlv tlv1 = IGPMetricTlv.of(b1, (short) 2); - private final IGPMetricTlv sameAsTlv1 = IGPMetricTlv.of(b1, (short) 2); - private final IGPMetricTlv tlv2 = IGPMetricTlv.of(b2, (short) 2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java deleted file mode 100644 index eb3a16a8..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4InterfaceAddressTlv. - */ -public class IPv4InterfaceAddressTlvTest { - - private final IPv4InterfaceAddressTlv tlv1 = IPv4InterfaceAddressTlv.of(2); - private final IPv4InterfaceAddressTlv sameAsTlv1 = IPv4InterfaceAddressTlv.of(2); - private final IPv4InterfaceAddressTlv tlv2 = IPv4InterfaceAddressTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java deleted file mode 100644 index 5f10b4c1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4NeighborAddressTlv. - */ -public class IPv4NeighborAddressTlvTest { - - private final IPv4NeighborAddressTlv tlv1 = IPv4NeighborAddressTlv.of(2); - private final IPv4NeighborAddressTlv sameAsTlv1 = IPv4NeighborAddressTlv.of(2); - private final IPv4NeighborAddressTlv tlv2 = IPv4NeighborAddressTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java deleted file mode 100644 index 10f54015..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4SubObject. - */ -public class IPv4SubObjectTest { - - private final IPv4SubObject subObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0); - private final IPv4SubObject sameAsSubObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0); - private final IPv4SubObject subObj2 = IPv4SubObject.of(3, (byte) 16, (byte) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(subObj1, sameAsSubObj1) - .addEqualityGroup(subObj2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java deleted file mode 100644 index 3880ca7f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4TERouterIdOfLocalNodeTlv. - */ -public class IPv4TERouterIdOfLocalNodeTlvTest { - - private final IPv4TERouterIdOfLocalNodeTlv tlv1 = IPv4TERouterIdOfLocalNodeTlv.of(2); - private final IPv4TERouterIdOfLocalNodeTlv sameAsTlv1 = IPv4TERouterIdOfLocalNodeTlv.of(2); - private final IPv4TERouterIdOfLocalNodeTlv tlv2 = IPv4TERouterIdOfLocalNodeTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java deleted file mode 100644 index f40ede04..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4TERouterIdOfRemoteNodeTlv. - */ -public class IPv4TERouterIdOfRemoteNodeTlvTest { - - private final IPv4TERouterIdOfRemoteNodeTlv tlv1 = IPv4TERouterIdOfRemoteNodeTlv.of(2); - private final IPv4TERouterIdOfRemoteNodeTlv sameAsTlv1 = IPv4TERouterIdOfRemoteNodeTlv.of(2); - private final IPv4TERouterIdOfRemoteNodeTlv tlv2 = IPv4TERouterIdOfRemoteNodeTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java deleted file mode 100644 index aa2e5d9b..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6InterfaceAddressTlv. - */ -public class IPv6InterfaceAddressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6InterfaceAddressTlv tlv1 = IPv6InterfaceAddressTlv.of(b1); - private final IPv6InterfaceAddressTlv sameAsTlv1 = IPv6InterfaceAddressTlv.of(b1); - private final IPv6InterfaceAddressTlv tlv2 = IPv6InterfaceAddressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java deleted file mode 100644 index 65e257b0..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6NeighborAddressTlv. - */ -public class IPv6NeighborAddressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6NeighborAddressTlv tlv1 = IPv6NeighborAddressTlv.of(b1); - private final IPv6NeighborAddressTlv sameAsTlv1 = IPv6NeighborAddressTlv.of(b1); - private final IPv6NeighborAddressTlv tlv2 = IPv6NeighborAddressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java deleted file mode 100644 index f23b11d8..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6SubObject. - */ -public class IPv6SubObjectTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6SubObject subObj1 = IPv6SubObject.of(b1); - private final IPv6SubObject sameAsSubObj1 = IPv6SubObject.of(b1); - private final IPv6SubObject subObj2 = IPv6SubObject.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(subObj1, sameAsSubObj1).addEqualityGroup(subObj2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java deleted file mode 100644 index 6516ed3d..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6TERouterIdofLocalNodeTlv. - */ -public class IPv6TERouterIdofLocalNodeTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6TERouterIdofLocalNodeTlv tlv1 = IPv6TERouterIdofLocalNodeTlv.of(b1); - private final IPv6TERouterIdofLocalNodeTlv sameAsTlv1 = IPv6TERouterIdofLocalNodeTlv.of(b1); - private final IPv6TERouterIdofLocalNodeTlv tlv2 = IPv6TERouterIdofLocalNodeTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java deleted file mode 100644 index f3828609..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6TERouterIdofRemoteNodeTlv. - */ -public class IPv6TERouterIdofRemoteNodeTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6TERouterIdofRemoteNodeTlv tlv1 = IPv6TERouterIdofRemoteNodeTlv.of(b1); - private final IPv6TERouterIdofRemoteNodeTlv sameAsTlv1 = IPv6TERouterIdofRemoteNodeTlv.of(b1); - private final IPv6TERouterIdofRemoteNodeTlv tlv2 = IPv6TERouterIdofRemoteNodeTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java deleted file mode 100644 index 17584ac1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the ISISAreaIdentifierTlv. - */ -public class ISISAreaIdentifierTlvTest { - - private final byte[] b1 = new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; - private final byte[] b2 = new byte[] {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; - - private final ISISAreaIdentifierTlv tlv1 = ISISAreaIdentifierTlv.of(b1, (short) 20); - private final ISISAreaIdentifierTlv sameAsTlv1 = ISISAreaIdentifierTlv.of(b1, (short) 20); - private final ISISAreaIdentifierTlv tlv2 = ISISAreaIdentifierTlv.of(b2, (short) 20); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java deleted file mode 100644 index 511d0a20..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LabelSubObject. - */ -public class LabelSubObjectTest { - - private final LabelSubObject subObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20); - private final LabelSubObject sameAsSubObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20); - private final LabelSubObject subObj2 = LabelSubObject.of((byte) 0, (byte) 1, 30); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(subObj1, sameAsSubObj1) - .addEqualityGroup(subObj2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java deleted file mode 100644 index e25bda02..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LinkLocalRemoteIdentifiersTlv. - */ -public class LinkLocalRemoteIdentifiersTlvTest { - - private final LinkLocalRemoteIdentifiersTlv tlv1 = LinkLocalRemoteIdentifiersTlv.of(10, 20); - private final LinkLocalRemoteIdentifiersTlv sameAsTlv1 = LinkLocalRemoteIdentifiersTlv.of(10, 20); - private final LinkLocalRemoteIdentifiersTlv tlv2 = LinkLocalRemoteIdentifiersTlv.of(20, 30); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java deleted file mode 100644 index 7d9dcb26..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for LinkNameTlv. - */ -public class LinkNameTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x00}; - private final byte[] rawValue2 = new byte[] {0x02, 0x00}; - - private final LinkNameTlv tlv1 = new LinkNameTlv(rawValue1, (short) rawValue1.length); - private final LinkNameTlv sameAsTlv1 = LinkNameTlv.of(tlv1.getValue(), tlv1.getLength()); - private final LinkNameTlv tlv2 = new LinkNameTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java deleted file mode 100644 index 61928f22..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LinkProtectionTypeTlv. - */ -public class LinkProtectionTypeTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final LinkProtectionTypeTlv tlv1 = new LinkProtectionTypeTlv(rawValue1); - private final LinkProtectionTypeTlv sameAsTlv1 = new LinkProtectionTypeTlv(rawValue1); - private final LinkProtectionTypeTlv tlv2 = new LinkProtectionTypeTlv(rawValue2, (byte) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java deleted file mode 100644 index e8b6abcc..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test of the LocalTENodeDescriptorsTlv. - */ -public class LocalTENodeDescriptorsTlvTest { - - private final AutonomousSystemTlv baAutoSysTlvRawValue1 = new AutonomousSystemTlv(1); - private final BGPLSidentifierTlv baBgplsIdRawValue1 = new BGPLSidentifierTlv(1); - - private final AutonomousSystemTlv baAutoSysTlvRawValue2 = new AutonomousSystemTlv(2); - private final BGPLSidentifierTlv baBgplsIdRawValue2 = new BGPLSidentifierTlv(2); - - private final LinkedList<PcepValueType> llNodeDescriptorSubTLVs1 = new LinkedList<PcepValueType>(); - private final boolean a = llNodeDescriptorSubTLVs1.add(baAutoSysTlvRawValue1); - private final boolean b = llNodeDescriptorSubTLVs1.add(baBgplsIdRawValue1); - - private final LinkedList<PcepValueType> llNodeDescriptorSubTLVs2 = new LinkedList<PcepValueType>(); - private final boolean c = llNodeDescriptorSubTLVs2.add(baAutoSysTlvRawValue2); - private final boolean d = llNodeDescriptorSubTLVs2.add(baBgplsIdRawValue2); - - private final LocalTENodeDescriptorsTlv tlv1 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1); - private final LocalTENodeDescriptorsTlv sameAstlv1 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1); - private final LocalTENodeDescriptorsTlv tlv2 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java deleted file mode 100644 index 5e79e284..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MPLSProtocolMaskTlv. - */ -public class MPLSProtocolMaskTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final MPLSProtocolMaskTlv tlv1 = new MPLSProtocolMaskTlv(rawValue1); - private final MPLSProtocolMaskTlv sameAsTlv1 = new MPLSProtocolMaskTlv(rawValue1); - private final MPLSProtocolMaskTlv tlv2 = MPLSProtocolMaskTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java deleted file mode 100644 index 4e022b82..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MaximumLinkBandwidthTlv. - */ -public class MaximumLinkBandwidthTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final MaximumLinkBandwidthTlv tlv1 = new MaximumLinkBandwidthTlv(rawValue1); - private final MaximumLinkBandwidthTlv sameAsTlv1 = new MaximumLinkBandwidthTlv(rawValue1); - private final MaximumLinkBandwidthTlv tlv2 = MaximumLinkBandwidthTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java deleted file mode 100644 index 7b370359..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MaximumReservableLinkBandwidthTlv. - */ -public class MaximumReservableLinkBandwidthTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final MaximumReservableLinkBandwidthTlv tlv1 = new MaximumReservableLinkBandwidthTlv(rawValue1); - private final MaximumReservableLinkBandwidthTlv sameAsTlv1 = new MaximumReservableLinkBandwidthTlv(rawValue1); - private final MaximumReservableLinkBandwidthTlv tlv2 = MaximumReservableLinkBandwidthTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java deleted file mode 100644 index 39c699bc..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopIPv4addressTlv. - */ -public class NexthopIPv4addressTlvTest { - - private final NexthopIPv4addressTlv tlv1 = new NexthopIPv4addressTlv(0x0A); - private final NexthopIPv4addressTlv sameAsTlv1 = new NexthopIPv4addressTlv(0x0A); - private final NexthopIPv4addressTlv tlv2 = NexthopIPv4addressTlv.of(0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java deleted file mode 100644 index 4621336e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopIPv6addressTlv. - */ -public class NexthopIPv6addressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00 }; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final NexthopIPv6addressTlv tlv1 = NexthopIPv6addressTlv.of(b1); - private final NexthopIPv6addressTlv sameAsTlv1 = NexthopIPv6addressTlv.of(b1); - private final NexthopIPv6addressTlv tlv2 = NexthopIPv6addressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java deleted file mode 100644 index 906c6526..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopUnnumberedIPv4IDTlv. - */ -public class NexthopUnnumberedIPv4IDTlvTest { - - private final NexthopUnnumberedIPv4IDTlv tlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A); - private final NexthopUnnumberedIPv4IDTlv sameAsTlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A); - private final NexthopUnnumberedIPv4IDTlv tlv2 = NexthopUnnumberedIPv4IDTlv.of(0x0B, 0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java deleted file mode 100644 index fb90fedb..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the NodeFlagBitsTlv. - */ -public class NodeFlagBitsTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final NodeFlagBitsTlv tlv1 = new NodeFlagBitsTlv(rawValue1); - private final NodeFlagBitsTlv sameAsTlv1 = new NodeFlagBitsTlv(rawValue1); - private final NodeFlagBitsTlv tlv2 = NodeFlagBitsTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java deleted file mode 100644 index d6d53d6f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the NodeNameTlv. - */ -public class NodeNameTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x02}; - private final byte[] rawValue2 = new byte[] {0x14, 0x15}; - - private final NodeNameTlv tlv1 = new NodeNameTlv(rawValue1, (short) rawValue1.length); - private final NodeNameTlv sameAsTlv1 = NodeNameTlv.of(tlv1.getValue(), tlv1.getLength()); - private final NodeNameTlv tlv2 = new NodeNameTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java deleted file mode 100644 index 3f741ed6..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the OSPFareaIDsubTlv. - */ -public class OSPFareaIDsubTlvTest { - private final int rawValue1 = 0x0A; - - private final OSPFareaIDsubTlv tlv1 = new OSPFareaIDsubTlv(rawValue1); - private final OSPFareaIDsubTlv tlv2 = OSPFareaIDsubTlv.of(tlv1.getInt()); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java deleted file mode 100644 index f437fb57..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the OpaqueLinkAttributeTlv. - */ -public class OpaqueLinkAttributeTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x02}; - private final byte[] rawValue2 = new byte[] {0x14, 0x15}; - - private final OpaqueLinkAttributeTlv tlv1 = new OpaqueLinkAttributeTlv(rawValue1, (short) rawValue1.length); - private final OpaqueLinkAttributeTlv sameAsTlv1 = OpaqueLinkAttributeTlv.of(tlv1.getValue(), tlv1.getLength()); - private final OpaqueLinkAttributeTlv tlv2 = new OpaqueLinkAttributeTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java deleted file mode 100644 index 64cda54e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PathKeySubObject. - */ -public class PathKeySubObjectTest { - - private final PathKeySubObject tlv1 = new PathKeySubObject((short) 0x0A, 0x0A); - private final PathKeySubObject sameAsTlv1 = PathKeySubObject.of((short) 0x0A, 0x0A); - private final PathKeySubObject tlv2 = new PathKeySubObject((short) 0x0B, 0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java deleted file mode 100644 index d82c943e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PathSetupTypeTlv. - */ -public class PathSetupTypeTlvTest { - - private final PathSetupTypeTlv tlv1 = PathSetupTypeTlv.of(0x0A); - private final PathSetupTypeTlv sameAsTlv1 = PathSetupTypeTlv.of(0x0A); - private final PathSetupTypeTlv tlv2 = PathSetupTypeTlv.of(0x0B); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java deleted file mode 100644 index 30892b18..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PceccCapabilityTlv. - */ -public class PceccCapabilityTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final PceccCapabilityTlv tlv1 = new PceccCapabilityTlv(rawValue1); - private final PceccCapabilityTlv sameAsTlv1 = new PceccCapabilityTlv(rawValue1); - private final PceccCapabilityTlv tlv2 = PceccCapabilityTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java deleted file mode 100644 index 3ebc9a1e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for PcepNaiIpv4Adjacency. - */ -public class PcepNaiIpv4AdjacencyTest { - - private final PcepNaiIpv4Adjacency obj1 = PcepNaiIpv4Adjacency.of(2, 16); - private final PcepNaiIpv4Adjacency sameAsObj1 = PcepNaiIpv4Adjacency.of(2, 16); - private final PcepNaiIpv4Adjacency obj2 = PcepNaiIpv4Adjacency.of(3, 16); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(obj1, sameAsObj1).addEqualityGroup(obj2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java deleted file mode 100644 index 5ea5edd6..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiIpv4NodeIdTest { - - private final PcepNaiIpv4NodeId tlv1 = PcepNaiIpv4NodeId.of(1); - private final PcepNaiIpv4NodeId tlv2 = PcepNaiIpv4NodeId.of(1); - private final PcepNaiIpv4NodeId tlv3 = PcepNaiIpv4NodeId.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, tlv2) - .addEqualityGroup(tlv3) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java deleted file mode 100644 index 52c40f94..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiIpv6AdjacencyTest { - private final byte[] localIpv6Addr1 = {(byte) 0x01010101 }; - private final byte[] remoteIpv6Addr1 = {(byte) 0x02020202 }; - private final byte[] localIpv6Addr2 = {(byte) 0x01010101 }; - private final byte[] remoteIpv6Addr2 = {(byte) 0x02020202 }; - private final byte[] localIpv6Addr3 = {(byte) 0x05050505 }; - private final byte[] remoteIpv6Addr3 = {(byte) 0x06060606 }; - - private final PcepNaiIpv6Adjacency tlv1 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1); - private final PcepNaiIpv6Adjacency tlv2 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1); - private final PcepNaiIpv6Adjacency tlv3 = PcepNaiIpv6Adjacency.of(localIpv6Addr3, remoteIpv6Addr3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java deleted file mode 100644 index 29771a0f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for PcepNaiIpv6NodeId. - */ -public class PcepNaiIpv6NodeIdTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, - 0x00, 0x00 }; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, - 0x00, 0x00 }; - - private final PcepNaiIpv6NodeId tlv1 = PcepNaiIpv6NodeId.of(b1); - private final PcepNaiIpv6NodeId sameAsTlv1 = PcepNaiIpv6NodeId.of(b1); - private final PcepNaiIpv6NodeId tlv2 = PcepNaiIpv6NodeId.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java deleted file mode 100644 index 60ae22fd..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiUnnumberedAdjacencyIpv4Test { - - private final int localNodeId1 = 1; - private final int localInterfaceId1 = 1; - private final int remoteNodeId1 = 1; - private final int remoteInterfaceId1 = 1; - private final PcepNaiUnnumberedAdjacencyIpv4 tlv1 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId1, - localInterfaceId1, remoteNodeId1, remoteInterfaceId1); - - private final int localNodeId2 = 1; - private final int localInterfaceId2 = 1; - private final int remoteNodeId2 = 1; - private final int remoteInterfaceId2 = 1; - private final PcepNaiUnnumberedAdjacencyIpv4 tlv2 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId2, - localInterfaceId2, remoteNodeId2, remoteInterfaceId2); - - private final int localNodeId3 = 2; - private final int localInterfaceId3 = 2; - private final int remoteNodeId3 = 2; - private final int remoteInterfaceId3 = 2; - - private final PcepNaiUnnumberedAdjacencyIpv4 tlv3 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId3, - localInterfaceId3, remoteNodeId3, remoteInterfaceId3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java deleted file mode 100644 index 112e4a4e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for Remote TE Node Descriptors tlv. - */ -public class RemoteTENodeDescriptorsTlvTest { - - private final AutonomousSystemTlv autonomousSystemTlv1 = new AutonomousSystemTlv(10); - private final BGPLSidentifierTlv bGPLSidentifierTlv1 = new BGPLSidentifierTlv(20); - - private final AutonomousSystemTlv autonomousSystemTlv2 = new AutonomousSystemTlv(20); - private final BGPLSidentifierTlv bGPLSidentifierTlv2 = new BGPLSidentifierTlv(30); - - private final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLV1 = new LinkedList<>(); - private final boolean a = llRemoteTENodeDescriptorSubTLV1.add(autonomousSystemTlv1); - private final boolean b = llRemoteTENodeDescriptorSubTLV1.add(bGPLSidentifierTlv1); - - private final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLV2 = new LinkedList<>(); - private final boolean c = llRemoteTENodeDescriptorSubTLV2.add(autonomousSystemTlv2); - private final boolean d = llRemoteTENodeDescriptorSubTLV2.add(bGPLSidentifierTlv2); - - private final RemoteTENodeDescriptorsTlv tlv1 = RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1); - private final RemoteTENodeDescriptorsTlv sameAsTlv1 = - RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1); - private final RemoteTENodeDescriptorsTlv tlv2 = RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java deleted file mode 100644 index 2f9e18a9..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Router ID Sub tlv. - */ -public class RouterIDSubTlvTest { - - private final byte[] value1 = {1, 2 }; - private final Short length1 = 2; - private final RouterIDSubTlv tlv1 = RouterIDSubTlv.of(value1, length1); - - private final Short length2 = 2; - private final RouterIDSubTlv tlv2 = RouterIDSubTlv.of(value1, length2); - - private final byte[] value3 = {1, 2, 3 }; - private final Short length3 = 3; - private final RouterIDSubTlv tlv3 = RouterIDSubTlv.of(value3, length3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java deleted file mode 100644 index 18aa2851..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for RoutingUniverseTlv. - */ -public class RoutingUniverseTlvTest { - - private final RoutingUniverseTlv tlv1 = RoutingUniverseTlv.of(2); - private final RoutingUniverseTlv tlv2 = RoutingUniverseTlv.of(2); - private final RoutingUniverseTlv tlv3 = RoutingUniverseTlv.of(3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java deleted file mode 100644 index 7c8ec570..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Shared Risk Link Group tlv. - */ -public class SharedRiskLinkGroupTlvTest { - - private final int[] raw = {1 }; - private final Short hLength = 2; - private final SharedRiskLinkGroupTlv tlv1 = SharedRiskLinkGroupTlv.of(raw, hLength); - - private final SharedRiskLinkGroupTlv sameAsTlv1 = SharedRiskLinkGroupTlv.of(raw, hLength); - - private final int[] raw2 = {2 }; - private final Short hLength2 = 3; - private final SharedRiskLinkGroupTlv tlv2 = SharedRiskLinkGroupTlv.of(raw2, hLength2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java deleted file mode 100644 index d91569b9..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.pcepio.protocol.PcepNai; - -public class SrEroSubObjectTest { - - private final boolean bFFlag = false; - private final boolean bSFlag = false; - private final boolean bCFlag = false; - private final boolean bMFlag = false; - private final byte st = 1; - private final int sID = 1; - private final PcepNai nai = null; - - private final SrEroSubObject tlv1 = SrEroSubObject.of(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - - private final boolean bFFlag1 = false; - private final boolean bSFlag1 = false; - private final boolean bCFlag1 = false; - private final boolean bMFlag1 = false; - private final byte st1 = 1; - private final int sID1 = 1; - private final PcepNai nai1 = null; - - private final SrEroSubObject tlv2 = SrEroSubObject.of(st1, bFFlag1, bSFlag1, bCFlag1, bMFlag1, sID1, nai1); - - private final boolean bFFlag2 = true; - private final boolean bSFlag2 = true; - private final boolean bCFlag2 = true; - private final boolean bMFlag2 = true; - private final byte st2 = 2; - private final int sID2 = 2; - private final PcepNai nai2 = null; - - private final SrEroSubObject tlv3 = SrEroSubObject.of(st2, bFFlag2, bSFlag2, bCFlag2, bMFlag2, sID2, nai2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java deleted file mode 100644 index d1798fa3..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class StatefulIPv4LspIdentidiersTlvTest { - - private final int ipv4IngressAddress = 1; - private final short lspId = 1; - private final short tunnelId = 1; - private final int extendedTunnelId = 1; - private final int ipv4EgressAddress = 1; - - private final StatefulIPv4LspIdentidiersTlv tlv1 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress, lspId, - tunnelId, extendedTunnelId, ipv4EgressAddress); - - private final int ipv4IngressAddress1 = 1; - private final short lspId1 = 1; - private final short tunnelId1 = 1; - private final int extendedTunnelId1 = 1; - private final int ipv4EgressAddress1 = 1; - - private final StatefulIPv4LspIdentidiersTlv tlv2 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress1, lspId1, - tunnelId1, extendedTunnelId1, ipv4EgressAddress1); - - private final int ipv4IngressAddress2 = 2; - private final short lspId2 = 2; - private final short tunnelId2 = 2; - private final int extendedTunnelId2 = 2; - private final int ipv4EgressAddress2 = 2; - - private final StatefulIPv4LspIdentidiersTlv tlv3 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress2, lspId2, - tunnelId2, extendedTunnelId2, ipv4EgressAddress2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java deleted file mode 100644 index 7076bc9e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Stateful Lsp Db Ver tlv. - */ -public class StatefulLspDbVerTlvTest { - - private final StatefulLspDbVerTlv tlv1 = StatefulLspDbVerTlv.of(1); - private final StatefulLspDbVerTlv tlv2 = StatefulLspDbVerTlv.of(1); - private final StatefulLspDbVerTlv tlv3 = StatefulLspDbVerTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java deleted file mode 100644 index 039108ae..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class StatefulLspErrorCodeTlvTest { - - private final StatefulLspErrorCodeTlv tlv1 = StatefulLspErrorCodeTlv.of(1); - private final StatefulLspErrorCodeTlv tlv2 = StatefulLspErrorCodeTlv.of(1); - private final StatefulLspErrorCodeTlv tlv3 = StatefulLspErrorCodeTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java deleted file mode 100644 index 8637024c..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Stateful Pce Capability tlv. - */ -public class StatefulPceCapabilityTlvTest { - - private final StatefulPceCapabilityTlv tlv1 = StatefulPceCapabilityTlv.of(1); - private final StatefulPceCapabilityTlv tlv2 = StatefulPceCapabilityTlv.of(1); - private final StatefulPceCapabilityTlv tlv3 = StatefulPceCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java deleted file mode 100644 index 8d458f4e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Symbolic path tlv. - */ -public class SymbolicPathNameTlvTest { - - private final byte[] value1 = {0x41 }; - private final Short length1 = 2; - private final SymbolicPathNameTlv tlv1 = SymbolicPathNameTlv.of(value1, length1); - - private final byte[] value2 = {0x41 }; - private final Short length2 = 2; - private final SymbolicPathNameTlv tlv2 = SymbolicPathNameTlv.of(value1, length2); - - private final byte[] value3 = {0x41, 0x43 }; - private final Short length3 = 3; - private final SymbolicPathNameTlv tlv3 = SymbolicPathNameTlv.of(value3, length3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java deleted file mode 100644 index c46b0af1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for TE Default Metric tlv. - */ -public class TEDefaultMetricTlvTest { - - private final TEDefaultMetricTlv tlv1 = TEDefaultMetricTlv.of(1); - private final TEDefaultMetricTlv tlv2 = TEDefaultMetricTlv.of(1); - private final TEDefaultMetricTlv tlv3 = TEDefaultMetricTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java deleted file mode 100644 index 8504a87c..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE Link Attribute Tlv. - */ -public class TELinkAttributesTlvTest { - - private final AdministrativeGroupTlv administrativeGroupTlv1 = new AdministrativeGroupTlv(10); - private final MaximumReservableLinkBandwidthTlv maximumReservableLinkBandwidthTlv1 = - new MaximumReservableLinkBandwidthTlv(20); - - private final AdministrativeGroupTlv administrativeGroupTlv2 = new AdministrativeGroupTlv(20); - private final MaximumReservableLinkBandwidthTlv maximumReservableLinkBandwidthTlv2 = - new MaximumReservableLinkBandwidthTlv(30); - - private final LinkedList<PcepValueType> llLinkAttributesSubTLV1 = new LinkedList<>(); - private final boolean a = llLinkAttributesSubTLV1.add(administrativeGroupTlv1); - private final boolean b = llLinkAttributesSubTLV1.add(maximumReservableLinkBandwidthTlv1); - - private final LinkedList<PcepValueType> llLinkAttributesSubTLV2 = new LinkedList<>(); - - private final boolean c = llLinkAttributesSubTLV2.add(administrativeGroupTlv2); - private final boolean d = llLinkAttributesSubTLV2.add(maximumReservableLinkBandwidthTlv2); - - private final TELinkAttributesTlv tlv1 = TELinkAttributesTlv.of(llLinkAttributesSubTLV1); - private final TELinkAttributesTlv sameAsTlv1 = TELinkAttributesTlv.of(llLinkAttributesSubTLV1); - private final TELinkAttributesTlv tlv2 = TELinkAttributesTlv.of(llLinkAttributesSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java deleted file mode 100644 index 4e942097..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE link descriptors Tlv. - */ -public class TELinkDescriptorsTlvTest { - private final LinkLocalRemoteIdentifiersTlv linkLocalRemoteIdentifiersTlv1 = new - LinkLocalRemoteIdentifiersTlv(10, 10); - private final IPv4InterfaceAddressTlv iPv4InterfaceAddressTlv1 = new IPv4InterfaceAddressTlv(0x01010101); - - private final LinkLocalRemoteIdentifiersTlv linkLocalRemoteIdentifiersTlv2 = new - LinkLocalRemoteIdentifiersTlv(20, 20); - private final IPv4InterfaceAddressTlv iPv4InterfaceAddressTlv2 = new IPv4InterfaceAddressTlv(0x02020202); - - private final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs1 = new LinkedList<>(); - private final boolean a = llLinkDescriptorsSubTLVs1.add(linkLocalRemoteIdentifiersTlv1); - private final boolean b = llLinkDescriptorsSubTLVs1.add(iPv4InterfaceAddressTlv1); - - private final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs2 = new LinkedList<>(); - private final boolean c = llLinkDescriptorsSubTLVs2.add(linkLocalRemoteIdentifiersTlv2); - private final boolean d = llLinkDescriptorsSubTLVs2.add(iPv4InterfaceAddressTlv2); - - private final TELinkDescriptorsTlv tlv1 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1); - private final TELinkDescriptorsTlv sameAstlv1 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1); - private final TELinkDescriptorsTlv tlv2 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java deleted file mode 100644 index 28cf27d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE Node Attribute tlv. - */ -public class TENodeAttributesTlvTest { - - private final NodeFlagBitsTlv nodeFlagBitsTlv1 = new NodeFlagBitsTlv((byte) 10); - private final IPv4TERouterIdOfLocalNodeTlv iPv4TERouterIdOfLocalNodeTlv1 = new - IPv4TERouterIdOfLocalNodeTlv(0x01010101); - - private final NodeFlagBitsTlv nodeFlagBitsTlv2 = new NodeFlagBitsTlv((byte) 20); - private final IPv4TERouterIdOfLocalNodeTlv iPv4TERouterIdOfLocalNodeTlv2 = new - IPv4TERouterIdOfLocalNodeTlv(0x02020202); - - private final LinkedList<PcepValueType> llNodeAttributesSubTLV1 = new LinkedList<>(); - private final boolean a = llNodeAttributesSubTLV1.add(nodeFlagBitsTlv1); - private final boolean b = llNodeAttributesSubTLV1.add(iPv4TERouterIdOfLocalNodeTlv1); - - private final LinkedList<PcepValueType> llNodeAttributesSubTLV2 = new LinkedList<>(); - - private final boolean c = llNodeAttributesSubTLV2.add(nodeFlagBitsTlv2); - private final boolean d = llNodeAttributesSubTLV2.add(iPv4TERouterIdOfLocalNodeTlv2); - - private final TENodeAttributesTlv tlv1 = TENodeAttributesTlv.of(llNodeAttributesSubTLV1); - private final TENodeAttributesTlv sameAsTlv1 = TENodeAttributesTlv.of(llNodeAttributesSubTLV1); - private final TENodeAttributesTlv tlv2 = TENodeAttributesTlv.of(llNodeAttributesSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java deleted file mode 100644 index 18677ca3..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for TED Capability tlv. - */ -public class TedCapabilityTlvTest { - - private final TedCapabilityTlv tlv1 = TedCapabilityTlv.of(1); - private final TedCapabilityTlv tlv2 = TedCapabilityTlv.of(1); - private final TedCapabilityTlv tlv3 = TedCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java deleted file mode 100644 index a50fd9f4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Unit Test case for Unreserved Bandwidth Tlv. - */ -public class UnreservedBandwidthTlvTest { - - // Objects of unreserved bandwidth tlv - private final UnreservedBandwidthTlv tlv1 = UnreservedBandwidthTlv.of(100); - private final UnreservedBandwidthTlv tlv2 = UnreservedBandwidthTlv.of(100); - private final UnreservedBandwidthTlv tlv3 = UnreservedBandwidthTlv.of(200); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pom.xml b/framework/src/onos/pcep/pom.xml deleted file mode 100755 index f0b9f8c3..00000000 --- a/framework/src/onos/pcep/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?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.4.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>ctl</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> diff --git a/framework/src/onos/pom.xml b/framework/src/onos/pom.xml index 89930f59..78fbcf2d 100644 --- a/framework/src/onos/pom.xml +++ b/framework/src/onos/pom.xml @@ -39,15 +39,15 @@ <description>Open Network Operating System root project</description> <modules> + <module>tools/package/maven-plugin</module> <module>utils</module> <module>core</module> <module>web</module> <module>cli</module> - <module>openflow</module> + <module>protocols</module> + <!-- FIXME move to protocols/ --> <module>ovsdb</module> - <module>netconf</module> - <module>pcep</module> <module>bgp</module> <module>providers</module> @@ -545,7 +545,20 @@ <rerunFailingTestsCount>1</rerunFailingTestsCount> </configuration> </plugin> - + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.10.3</version> + <configuration> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> + </configuration> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> @@ -631,8 +644,8 @@ <plugin> <groupId>org.onosproject</groupId> <artifactId>onos-maven-plugin</artifactId> - <version>1.5</version> - <executions> + <version>1.6-SNAPSHOT</version> + <executions> <execution> <id>cfg</id> <phase>generate-resources</phase> diff --git a/framework/src/onos/providers/host/pom.xml b/framework/src/onos/providers/host/pom.xml index e8f32ca1..ddbdbfc5 100644 --- a/framework/src/onos/providers/host/pom.xml +++ b/framework/src/onos/providers/host/pom.xml @@ -29,7 +29,11 @@ <artifactId>onos-host-provider</artifactId> <packaging>bundle</packaging> - <description>ONOS host tracking provider</description> + <properties> + <onos.app.name>org.onosproject.hostprovider</onos.app.name> + </properties> + + <description>ONOS host location provider</description> <dependencies> <dependency> <groupId>org.onosproject</groupId> diff --git a/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java b/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java index 6cbb623b..566eb0c4 100644 --- a/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java +++ b/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java @@ -196,16 +196,16 @@ public class HostLocationProviderTest { providerService.clear(); // new host - testProcessor.process(new TestNAPacketContext(DEV4)); + testProcessor.process(new TestNaPacketContext(DEV4)); assertNotNull("new host expected", providerService.added); assertNull("host motion unexpected", providerService.moved); // the host moved to new switch - testProcessor.process(new TestNAPacketContext(DEV5)); + testProcessor.process(new TestNaPacketContext(DEV5)); assertNotNull("host motion expected", providerService.moved); // the host was misheard on a spine - testProcessor.process(new TestNAPacketContext(DEV6)); + testProcessor.process(new TestNaPacketContext(DEV6)); assertNull("host misheard on spine switch", providerService.spine); } @@ -213,7 +213,7 @@ public class HostLocationProviderTest { public void removeHostByDeviceRemove() { provider.modified(CTX_FOR_REMOVE); testProcessor.process(new TestArpPacketContext(DEV1)); - testProcessor.process(new TestNAPacketContext(DEV4)); + testProcessor.process(new TestNaPacketContext(DEV4)); Device device = new DefaultDevice(ProviderId.NONE, deviceId(DEV1), SWITCH, "m", "h", "s", "n", new ChassisId(0L)); @@ -292,8 +292,8 @@ public class HostLocationProviderTest { * When receiving NeighborAdvertisement, updates location and IP. */ @Test - public void testReceiveNA() { - testProcessor.process(new TestNAPacketContext(DEV4)); + public void testReceiveNa() { + testProcessor.process(new TestNaPacketContext(DEV4)); assertNotNull(providerService.added); HostDescription descr = providerService.added; assertThat(descr.location(), is(LOCATION2)); @@ -306,8 +306,8 @@ public class HostLocationProviderTest { * When receiving NeighborSolicitation, updates location and IP. */ @Test - public void testReceiveNS() { - testProcessor.process(new TestNSPacketContext(DEV4)); + public void testReceiveNs() { + testProcessor.process(new TestNsPacketContext(DEV4)); HostDescription descr = providerService.added; assertThat(descr.location(), is(LOCATION2)); assertThat(descr.hwAddress(), is(MAC2)); @@ -319,7 +319,7 @@ public class HostLocationProviderTest { * When receiving RouterAdvertisement, ignores it. */ @Test - public void testReceivesRA() { + public void testReceivesRa() { testProcessor.process(new TestRAPacketContext(DEV4)); assertNull(providerService.added); } @@ -328,7 +328,7 @@ public class HostLocationProviderTest { * When receiving RouterSolicitation, ignores it. */ @Test - public void testReceiveRS() { + public void testReceiveRs() { testProcessor.process(new TestRSPacketContext(DEV4)); assertNull(providerService.added); } @@ -337,8 +337,8 @@ public class HostLocationProviderTest { * When receiving Duplicate Address Detection (DAD), ignores it. */ @Test - public void testReceiveDAD() { - testProcessor.process(new TestDADPacketContext(DEV4)); + public void testReceiveDad() { + testProcessor.process(new TestDadPacketContext(DEV4)); assertNull(providerService.added); } @@ -415,7 +415,7 @@ public class HostLocationProviderTest { public void hostDetected(HostId hostId, HostDescription hostDescription, boolean replaceIps) { if (added == null) { added = hostDescription; - } else if ((moved == null) && !hostDescription.equals(added)) { + } else if ((moved == null) && hostDescription != added) { moved = hostDescription; } else { spine = hostDescription; @@ -575,10 +575,10 @@ public class HostLocationProviderTest { /** * Generates NeighborAdvertisement packet. */ - private class TestNAPacketContext implements PacketContext { + private class TestNaPacketContext implements PacketContext { private final String deviceId; - public TestNAPacketContext(String deviceId) { + public TestNaPacketContext(String deviceId) { this.deviceId = deviceId; } @@ -637,10 +637,10 @@ public class HostLocationProviderTest { /** * Generates NeighborSolicitation packet. */ - private class TestNSPacketContext implements PacketContext { + private class TestNsPacketContext implements PacketContext { private final String deviceId; - public TestNSPacketContext(String deviceId) { + public TestNsPacketContext(String deviceId) { this.deviceId = deviceId; } @@ -699,10 +699,10 @@ public class HostLocationProviderTest { /** * Generates Duplicate Address Detection packet. */ - private class TestDADPacketContext implements PacketContext { + private class TestDadPacketContext implements PacketContext { private final String deviceId; - public TestDADPacketContext(String deviceId) { + public TestDadPacketContext(String deviceId) { this.deviceId = deviceId; } diff --git a/framework/src/onos/providers/lldp/pom.xml b/framework/src/onos/providers/lldp/pom.xml index e47d26c7..7bf92ed2 100644 --- a/framework/src/onos/providers/lldp/pom.xml +++ b/framework/src/onos/providers/lldp/pom.xml @@ -30,7 +30,11 @@ <artifactId>onos-lldp-provider</artifactId> <packaging>bundle</packaging> - <description>ONOS LLDP Link Discovery</description> + <properties> + <onos.app.name>org.onosproject.lldpprovider</onos.app.name> + </properties> + + <description>ONOS LLDP link provider</description> <dependencies> <dependency> diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java index 0cd19242..a9da92ab 100644 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java +++ b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java @@ -58,7 +58,7 @@ interface DiscoveryContext { * * @return true to emit BDDP */ - boolean useBDDP(); + boolean useBddp(); /** * Touches the link identified by the given key to indicate that it's active. diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java deleted file mode 100644 index 98442033..00000000 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java +++ /dev/null @@ -1,637 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.lldp.impl; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onlab.packet.Ethernet; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.cluster.ClusterService; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.mastership.MastershipEvent; -import org.onosproject.mastership.MastershipListener; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.LinkKey; -import org.onosproject.net.Port; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.link.DefaultLinkDescription; -import org.onosproject.net.link.LinkProvider; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkProviderService; -import org.onosproject.net.link.LinkService; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketPriority; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.io.IOException; -import java.util.Dictionary; -import java.util.EnumSet; -import java.util.Map; -import java.util.Optional; -import java.util.Properties; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ScheduledExecutorService; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.onlab.packet.Ethernet.TYPE_BSN; -import static org.onlab.packet.Ethernet.TYPE_LLDP; -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provider which uses LLDP and BDDP packets to detect network infrastructure links. - */ -@Component(immediate = true) -public class LLDPLinkProvider extends AbstractProvider implements LinkProvider { - - private static final String PROVIDER_NAME = "org.onosproject.provider.lldp"; - - private static final String FORMAT = - "Settings: enabled={}, useBDDP={}, probeRate={}, " + - "staleLinkAge={}, lldpSuppression={}"; - - // When a Device/Port has this annotation, do not send out LLDP/BDDP - public static final String NO_LLDP = "no-lldp"; - - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected LinkProviderRegistry providerRegistry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected LinkService linkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected PacketService packetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected MastershipService masterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ClusterService clusterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry cfgRegistry; - - private LinkProviderService providerService; - - private ScheduledExecutorService executor; - - // TODO: Add sanity checking for the configurable params based on the delays - private static final long DEVICE_SYNC_DELAY = 5; - private static final long LINK_PRUNER_DELAY = 3; - - private static final String PROP_ENABLED = "enabled"; - @Property(name = PROP_ENABLED, boolValue = true, - label = "If false, link discovery is disabled") - private boolean enabled = false; - - private static final String PROP_USE_BDDP = "useBDDP"; - @Property(name = PROP_USE_BDDP, boolValue = true, - label = "Use BDDP for link discovery") - private boolean useBDDP = true; - - private static final String PROP_PROBE_RATE = "probeRate"; - private static final int DEFAULT_PROBE_RATE = 3_000; - @Property(name = PROP_PROBE_RATE, intValue = DEFAULT_PROBE_RATE, - label = "LLDP and BDDP probe rate specified in millis") - private int probeRate = DEFAULT_PROBE_RATE; - - private static final String PROP_STALE_LINK_AGE = "staleLinkAge"; - private static final int DEFAULT_STALE_LINK_AGE = 10_000; - @Property(name = PROP_STALE_LINK_AGE, intValue = DEFAULT_STALE_LINK_AGE, - label = "Number of millis beyond which links will be considered stale") - private int staleLinkAge = DEFAULT_STALE_LINK_AGE; - - // FIXME: convert to use network config subsystem instead - private static final String PROP_LLDP_SUPPRESSION = "lldpSuppression"; - private static final String DEFAULT_LLDP_SUPPRESSION_CONFIG = "../config/lldp_suppression.json"; - @Property(name = PROP_LLDP_SUPPRESSION, value = DEFAULT_LLDP_SUPPRESSION_CONFIG, - label = "Path to LLDP suppression configuration file") - private String lldpSuppression = DEFAULT_LLDP_SUPPRESSION_CONFIG; - - private final DiscoveryContext context = new InternalDiscoveryContext(); - private final InternalRoleListener roleListener = new InternalRoleListener(); - private final InternalDeviceListener deviceListener = new InternalDeviceListener(); - private final InternalPacketProcessor packetProcessor = new InternalPacketProcessor(); - - // Device link discovery helpers. - protected final Map<DeviceId, LinkDiscovery> discoverers = new ConcurrentHashMap<>(); - - // Most recent time a tracked link was seen; links are tracked if their - // destination connection point is mastered by this controller instance. - private final Map<LinkKey, Long> linkTimes = Maps.newConcurrentMap(); - - private SuppressionRules rules; - private ApplicationId appId; - - /** - * Creates an OpenFlow link provider. - */ - public LLDPLinkProvider() { - super(new ProviderId("lldp", PROVIDER_NAME)); - } - - @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); - appId = coreService.registerApplication(PROVIDER_NAME); - modified(context); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - disable(); - log.info("Stopped"); - } - - @Modified - public void modified(ComponentContext context) { - Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties(); - - boolean newEnabled, newUseBddp; - int newProbeRate, newStaleLinkAge; - String newLldpSuppression; - try { - String s = get(properties, PROP_ENABLED); - newEnabled = isNullOrEmpty(s) || Boolean.parseBoolean(s.trim()); - - s = get(properties, PROP_USE_BDDP); - newUseBddp = isNullOrEmpty(s) || Boolean.parseBoolean(s.trim()); - - s = get(properties, PROP_PROBE_RATE); - newProbeRate = isNullOrEmpty(s) ? probeRate : Integer.parseInt(s.trim()); - - s = get(properties, PROP_STALE_LINK_AGE); - newStaleLinkAge = isNullOrEmpty(s) ? staleLinkAge : Integer.parseInt(s.trim()); - - s = get(properties, PROP_LLDP_SUPPRESSION); - newLldpSuppression = isNullOrEmpty(s) ? DEFAULT_LLDP_SUPPRESSION_CONFIG : s; - - } catch (NumberFormatException e) { - log.warn("Component configuration had invalid values", e); - newEnabled = enabled; - newUseBddp = useBDDP; - newProbeRate = probeRate; - newStaleLinkAge = staleLinkAge; - newLldpSuppression = lldpSuppression; - } - - boolean wasEnabled = enabled; - - enabled = newEnabled; - useBDDP = newUseBddp; - probeRate = newProbeRate; - staleLinkAge = newStaleLinkAge; - lldpSuppression = newLldpSuppression; - - if (!wasEnabled && enabled) { - enable(); - } else if (wasEnabled && !enabled) { - disable(); - } else { - // reflect changes in suppression rules to discovery helpers - // FIXME: After migrating to Network Configuration Subsystem, - // it should be possible to update only changed subset - if (enabled) { - // update all discovery helper state - loadDevices(); - } - } - - log.info(FORMAT, enabled, useBDDP, probeRate, staleLinkAge, lldpSuppression); - } - - /** - * Enables link discovery processing. - */ - private void enable() { - providerService = providerRegistry.register(this); - masterService.addListener(roleListener); - deviceService.addListener(deviceListener); - packetService.addProcessor(packetProcessor, PacketProcessor.advisor(0)); - - loadSuppressionRules(); - loadDevices(); - - executor = newSingleThreadScheduledExecutor(groupedThreads("onos/link", "discovery-%d")); - executor.scheduleAtFixedRate(new SyncDeviceInfoTask(), - DEVICE_SYNC_DELAY, DEVICE_SYNC_DELAY, SECONDS); - executor.scheduleAtFixedRate(new LinkPrunerTask(), - LINK_PRUNER_DELAY, LINK_PRUNER_DELAY, SECONDS); - - requestIntercepts(); - } - - /** - * Disables link discovery processing. - */ - private void disable() { - withdrawIntercepts(); - - providerRegistry.unregister(this); - masterService.removeListener(roleListener); - deviceService.removeListener(deviceListener); - packetService.removeProcessor(packetProcessor); - - if (executor != null) { - executor.shutdownNow(); - } - discoverers.values().forEach(LinkDiscovery::stop); - discoverers.clear(); - - providerService = null; - } - - /** - * Loads available devices and registers their ports to be probed. - */ - private void loadDevices() { - deviceService.getAvailableDevices() - .forEach(d -> updateDevice(d) - .ifPresent(ld -> updatePorts(ld, d.id()))); - } - - /** - * Updates discovery helper for specified device. - * - * Adds and starts a discovery helper for specified device if enabled, - * calls {@link #removeDevice(DeviceId)} otherwise. - * - * @param device device to add - * @return discovery helper if discovery is enabled for the device - */ - private Optional<LinkDiscovery> updateDevice(Device device) { - if (rules.isSuppressed(device)) { - log.trace("LinkDiscovery from {} disabled by configuration", device.id()); - removeDevice(device.id()); - return Optional.empty(); - } - LinkDiscovery ld = discoverers.computeIfAbsent(device.id(), - did -> new LinkDiscovery(device, context)); - if (ld.isStopped()) { - ld.start(); - } - return Optional.of(ld); - } - - /** - * Removes after stopping discovery helper for specified device. - * @param deviceId device to remove - */ - private void removeDevice(final DeviceId deviceId) { - discoverers.computeIfPresent(deviceId, (did, ld) -> { - ld.stop(); - providerService.linksVanished(deviceId); - return null; - }); - - } - - /** - * Updates ports of the specified device to the specified discovery helper. - */ - private void updatePorts(LinkDiscovery discoverer, DeviceId deviceId) { - deviceService.getPorts(deviceId).forEach(p -> updatePort(discoverer, p)); - } - - /** - * Updates discovery helper state of the specified port. - * - * Adds a port to the discovery helper if up and discovery is enabled, - * or calls {@link #removePort(Port)} otherwise. - */ - private void updatePort(LinkDiscovery discoverer, Port port) { - if (rules.isSuppressed(port)) { - log.trace("LinkDiscovery from {} disabled by configuration", port); - removePort(port); - return; - } - - // check if enabled and turn off discovery? - if (!port.isEnabled()) { - removePort(port); - return; - } - - if (!port.number().isLogical()) { - discoverer.addPort(port); - } - } - - /** - * Removes a port from the specified discovery helper. - * @param port the port - */ - private void removePort(Port port) { - if (port.element() instanceof Device) { - Device d = (Device) port.element(); - LinkDiscovery ld = discoverers.get(d.id()); - if (ld != null) { - ld.removePort(port.number()); - } - - ConnectPoint point = new ConnectPoint(d.id(), port.number()); - providerService.linksVanished(point); - } else { - log.warn("Attempted to remove non-Device port", port); - } - } - - /** - * Loads LLDP suppression rules. - */ - private void loadSuppressionRules() { - // FIXME: convert to use network configuration - SuppressionRulesStore store = new SuppressionRulesStore(lldpSuppression); - try { - log.info("Reading suppression rules from {}", lldpSuppression); - rules = store.read(); - } catch (IOException e) { - log.info("Failed to load {}, using built-in rules", lldpSuppression); - // default rule to suppress ROADM to maintain compatibility - rules = new SuppressionRules(ImmutableSet.of(), - EnumSet.of(Device.Type.ROADM), - ImmutableMap.of(NO_LLDP, SuppressionRules.ANY_VALUE)); - } - - // should refresh discoverers when we need dynamic reconfiguration - } - - /** - * Requests packet intercepts. - */ - private void requestIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(TYPE_LLDP); - packetService.requestPackets(selector.build(), PacketPriority.CONTROL, appId); - - selector.matchEthType(TYPE_BSN); - if (useBDDP) { - packetService.requestPackets(selector.build(), PacketPriority.CONTROL, appId); - } else { - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - } - } - - /** - * Withdraws packet intercepts. - */ - private void withdrawIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(TYPE_LLDP); - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - selector.matchEthType(TYPE_BSN); - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - } - - /** - * Processes device mastership role changes. - */ - private class InternalRoleListener implements MastershipListener { - @Override - public void event(MastershipEvent event) { - if (MastershipEvent.Type.BACKUPS_CHANGED.equals(event.type())) { - // only need new master events - return; - } - - DeviceId deviceId = event.subject(); - Device device = deviceService.getDevice(deviceId); - if (device == null) { - log.debug("Device {} doesn't exist, or isn't there yet", deviceId); - return; - } - if (clusterService.getLocalNode().id().equals(event.roleInfo().master())) { - updateDevice(device).ifPresent(ld -> updatePorts(ld, device.id())); - } - } - - } - - /** - * Processes device events. - */ - private class InternalDeviceListener implements DeviceListener { - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - Port port = event.port(); - if (device == null) { - log.error("Device is null."); - return; - } - log.trace("{} {} {}", event.type(), event.subject(), event); - final DeviceId deviceId = device.id(); - switch (event.type()) { - case DEVICE_ADDED: - case DEVICE_UPDATED: - updateDevice(device).ifPresent(ld -> updatePorts(ld, deviceId)); - break; - case PORT_ADDED: - case PORT_UPDATED: - if (port.isEnabled()) { - updateDevice(device).ifPresent(ld -> updatePort(ld, port)); - } else { - log.debug("Port down {}", port); - removePort(port); - } - break; - case PORT_REMOVED: - log.debug("Port removed {}", port); - removePort(port); - break; - case DEVICE_REMOVED: - case DEVICE_SUSPENDED: - log.debug("Device removed {}", deviceId); - removeDevice(deviceId); - break; - case DEVICE_AVAILABILITY_CHANGED: - if (deviceService.isAvailable(deviceId)) { - log.debug("Device up {}", deviceId); - updateDevice(device); - } else { - log.debug("Device down {}", deviceId); - removeDevice(deviceId); - } - break; - case PORT_STATS_UPDATED: - break; - default: - log.debug("Unknown event {}", event); - } - } - } - - /** - * Processes incoming packets. - */ - private class InternalPacketProcessor implements PacketProcessor { - @Override - public void process(PacketContext context) { - if (context == null || context.isHandled()) { - return; - } - - Ethernet eth = context.inPacket().parsed(); - if (eth == null || (eth.getEtherType() != TYPE_LLDP && eth.getEtherType() != TYPE_BSN)) { - return; - } - - LinkDiscovery ld = discoverers.get(context.inPacket().receivedFrom().deviceId()); - if (ld == null) { - return; - } - - if (ld.handleLLDP(context)) { - context.block(); - } - } - } - - /** - * Auxiliary task to keep device ports up to date. - */ - private final class SyncDeviceInfoTask implements Runnable { - @Override - public void run() { - if (Thread.currentThread().isInterrupted()) { - log.info("Interrupted, quitting"); - return; - } - // check what deviceService sees, to see if we are missing anything - try { - loadDevices(); - } catch (Exception e) { - // Catch all exceptions to avoid task being suppressed - log.error("Exception thrown during synchronization process", e); - } - } - } - - /** - * Auxiliary task for pruning stale links. - */ - private class LinkPrunerTask implements Runnable { - @Override - public void run() { - if (Thread.currentThread().isInterrupted()) { - log.info("Interrupted, quitting"); - return; - } - - try { - // TODO: There is still a slight possibility of mastership - // change occurring right with link going stale. This will - // result in the stale link not being pruned. - Maps.filterEntries(linkTimes, e -> { - if (!masterService.isLocalMaster(e.getKey().dst().deviceId())) { - return true; - } - if (isStale(e.getValue())) { - providerService.linkVanished(new DefaultLinkDescription(e.getKey().src(), - e.getKey().dst(), - DIRECT)); - return true; - } - return false; - }).clear(); - - } catch (Exception e) { - // Catch all exceptions to avoid task being suppressed - log.error("Exception thrown during link pruning process", e); - } - } - - private boolean isStale(long lastSeen) { - return lastSeen < System.currentTimeMillis() - staleLinkAge; - } - } - - /** - * Provides processing context for the device link discovery helpers. - */ - private class InternalDiscoveryContext implements DiscoveryContext { - @Override - public MastershipService mastershipService() { - return masterService; - } - - @Override - public LinkProviderService providerService() { - return providerService; - } - - @Override - public PacketService packetService() { - return packetService; - } - - @Override - public long probeRate() { - return probeRate; - } - - @Override - public boolean useBDDP() { - return useBDDP; - } - - @Override - public void touchLink(LinkKey key) { - linkTimes.put(key, System.currentTimeMillis()); - } - } - -} diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java index 7dc9aed0..4b962ae5 100644 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java +++ b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java @@ -155,7 +155,7 @@ class LinkDiscovery implements TimerTask { * @param packetContext packet context * @return true if handled */ - boolean handleLLDP(PacketContext packetContext) { + boolean handleLldp(PacketContext packetContext) { Ethernet eth = packetContext.inPacket().parsed(); if (eth == null) { return false; @@ -216,7 +216,7 @@ class LinkDiscovery implements TimerTask { * @param port the port * @return Packet_out message with LLDP data */ - private OutboundPacket createOutBoundLLDP(Long port) { + private OutboundPacket createOutBoundLldp(Long port) { if (port == null) { return null; } @@ -233,7 +233,7 @@ class LinkDiscovery implements TimerTask { * @param port the port * @return Packet_out message with LLDP data */ - private OutboundPacket createOutBoundBDDP(Long port) { + private OutboundPacket createOutBoundBddp(Long port) { if (port == null) { return null; } @@ -246,10 +246,10 @@ class LinkDiscovery implements TimerTask { private void sendProbes(Long portNumber) { log.trace("Sending probes out to {}@{}", portNumber, device.id()); - OutboundPacket pkt = createOutBoundLLDP(portNumber); + OutboundPacket pkt = createOutBoundLldp(portNumber); context.packetService().emit(pkt); - if (context.useBDDP()) { - OutboundPacket bpkt = createOutBoundBDDP(portNumber); + if (context.useBddp()) { + OutboundPacket bpkt = createOutBoundBddp(portNumber); context.packetService().emit(bpkt); } } diff --git a/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java b/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java deleted file mode 100644 index 6070b857..00000000 --- a/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java +++ /dev/null @@ -1,630 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.lldp.impl; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onlab.packet.Ethernet; -import org.onlab.packet.ONOSLLDP; -import org.onosproject.cfg.ComponentConfigAdapter; -import org.onosproject.cluster.NodeId; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.mastership.MastershipListener; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.Annotations; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.DefaultPort; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.link.LinkDescription; -import org.onosproject.net.link.LinkProvider; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkProviderService; -import org.onosproject.net.link.LinkServiceAdapter; -import org.onosproject.net.packet.DefaultInboundPacket; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketServiceAdapter; -import org.onosproject.net.provider.AbstractProviderService; -import org.onosproject.net.provider.ProviderId; - -import java.nio.ByteBuffer; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -import static org.easymock.EasyMock.*; -import static org.junit.Assert.*; - -public class LLDPLinkProviderTest { - - private static final DeviceId DID1 = DeviceId.deviceId("of:0000000000000001"); - private static final DeviceId DID2 = DeviceId.deviceId("of:0000000000000002"); - private static final DeviceId DID3 = DeviceId.deviceId("of:0000000000000003"); - - private static Port pd1; - private static Port pd2; - private static Port pd3; - private static Port pd4; - - private final LLDPLinkProvider provider = new LLDPLinkProvider(); - private final TestLinkRegistry linkRegistry = new TestLinkRegistry(); - private final TestLinkService linkService = new TestLinkService(); - private final TestPacketService packetService = new TestPacketService(); - private final TestDeviceService deviceService = new TestDeviceService(); - private final TestMasterShipService masterService = new TestMasterShipService(); - - private CoreService coreService; - private TestLinkProviderService providerService; - - private PacketProcessor testProcessor; - private DeviceListener deviceListener; - - private ApplicationId appId = - new DefaultApplicationId(100, "org.onosproject.provider.lldp"); - - @Before - public void setUp() { - coreService = createMock(CoreService.class); - expect(coreService.registerApplication(appId.name())) - .andReturn(appId).anyTimes(); - replay(coreService); - - provider.cfgService = new ComponentConfigAdapter(); - provider.coreService = coreService; - - provider.deviceService = deviceService; - provider.linkService = linkService; - provider.packetService = packetService; - provider.providerRegistry = linkRegistry; - provider.masterService = masterService; - - provider.activate(null); - } - - @Test - public void basics() { - assertNotNull("registration expected", providerService); - assertEquals("incorrect provider", provider, providerService.provider()); - } - - @Test - public void switchAdd() { - DeviceEvent de = deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1); - deviceListener.event(de); - - assertFalse("Device not added", provider.discoverers.isEmpty()); - } - - @Test - public void switchRemove() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_REMOVED, DID1)); - - final LinkDiscovery linkDiscovery = provider.discoverers.get(DID1); - if (linkDiscovery != null) { - // If LinkDiscovery helper is there after DEVICE_REMOVED, - // it should be stopped - assertTrue("Discoverer is not stopped", linkDiscovery.isStopped()); - } - assertTrue("Device is not gone.", vanishedDpid(DID1)); - } - - /** - * Checks that links on a reconfigured switch are properly removed. - */ - @Test - public void switchSuppressed() { - // add device to stub DeviceService - deviceService.putDevice(device(DID3)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - assertFalse("Device not added", provider.discoverers.isEmpty()); - - // update device in stub DeviceService with suppression config - deviceService.putDevice(device(DID3, DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build())); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_UPDATED, DID3)); - - assertTrue("Links on suppressed Device was expected to vanish.", vanishedDpid(DID3)); - } - - @Test - public void portUp() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 3, true))); - - assertTrue("Port not added to discoverer", - provider.discoverers.get(DID1).containsPort(3L)); - } - - @Test - public void portDown() { - - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 1, false))); - - assertFalse("Port added to discoverer", - provider.discoverers.get(DID1).containsPort(1L)); - assertTrue("Port is not gone.", vanishedPort(1L)); - } - - @Test - public void portRemoved() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 3, true))); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_REMOVED, DID1, port(DID1, 3, true))); - - assertTrue("Port is not gone.", vanishedPort(3L)); - assertFalse("Port was not removed from discoverer", - provider.discoverers.get(DID1).containsPort(3L)); - } - - /** - * Checks that discovery on reconfigured switch are properly restarted. - */ - @Test - public void portSuppressedByDeviceConfig() { - - /// When Device is configured with suppression:ON, Port also is same - - // add device in stub DeviceService with suppression configured - deviceService.putDevice(device(DID3, DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build())); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - // non-suppressed port added to suppressed device - final long portno3 = 3L; - deviceService.putPorts(DID3, port(DID3, portno3, true)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port(DID3, portno3, true))); - - // discovery on device is expected to be stopped - LinkDiscovery linkDiscovery = provider.discoverers.get(DID3); - if (linkDiscovery != null) { - assertTrue("Discovery expected to be stopped", linkDiscovery.isStopped()); - } - - /// When Device is reconfigured without suppression:OFF, - /// Port should be included for discovery - - // update device in stub DeviceService without suppression configured - deviceService.putDevice(device(DID3)); - // update the Port in stub DeviceService. (Port has reference to Device) - deviceService.putPorts(DID3, port(DID3, portno3, true)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_UPDATED, DID3)); - - // discovery should come back on - assertFalse("Discoverer is expected to start", provider.discoverers.get(DID3).isStopped()); - assertTrue("Discoverer should contain the port there", provider.discoverers.get(DID3).containsPort(portno3)); - } - - /** - * Checks that discovery on reconfigured port are properly restarted. - */ - @Test - public void portSuppressedByPortConfig() { - // add device in stub DeviceService without suppression configured - deviceService.putDevice(device(DID3)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - // suppressed port added to non-suppressed device - final long portno3 = 3L; - final Port port3 = port(DID3, portno3, true, - DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build()); - deviceService.putPorts(DID3, port3); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port3)); - - // discovery helper should be there turned on - assertFalse("Discoverer is expected to start", provider.discoverers.get(DID3).isStopped()); - assertFalse("Discoverer should not contain the port there", - provider.discoverers.get(DID3).containsPort(portno3)); - } - - @Test - public void portUnknown() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - // Note: DID3 hasn't been added to TestDeviceService, but only port is added - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port(DID3, 1, false))); - - - assertNull("DeviceId exists", - provider.discoverers.get(DID3)); - } - - @Test - public void unknownPktCtx() { - - // Note: DID3 hasn't been added to TestDeviceService - PacketContext pktCtx = new TestPacketContext(device(DID3)); - - testProcessor.process(pktCtx); - assertFalse("Context should still be free", pktCtx.isHandled()); - } - - @Test - public void knownPktCtx() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID2)); - PacketContext pktCtx = new TestPacketContext(deviceService.getDevice(DID2)); - - - testProcessor.process(pktCtx); - - assertTrue("Link not detected", detectedLink(DID1, DID2)); - - } - - - @After - public void tearDown() { - provider.deactivate(); - provider.coreService = null; - provider.providerRegistry = null; - provider.deviceService = null; - provider.packetService = null; - } - - private DeviceEvent deviceEvent(DeviceEvent.Type type, DeviceId did) { - return new DeviceEvent(type, deviceService.getDevice(did)); - - } - - private DefaultDevice device(DeviceId did) { - return new DefaultDevice(ProviderId.NONE, did, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - } - - private DefaultDevice device(DeviceId did, Annotations annotations) { - return new DefaultDevice(ProviderId.NONE, did, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId(), annotations); - } - - @SuppressWarnings(value = { "unused" }) - private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, PortNumber port) { - return new DeviceEvent(type, deviceService.getDevice(did), - deviceService.getPort(did, port)); - } - - private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, Port port) { - return new DeviceEvent(type, deviceService.getDevice(did), port); - } - - private Port port(DeviceId did, long port, boolean enabled) { - return new DefaultPort(deviceService.getDevice(did), - PortNumber.portNumber(port), enabled); - } - - private Port port(DeviceId did, long port, boolean enabled, Annotations annotations) { - return new DefaultPort(deviceService.getDevice(did), - PortNumber.portNumber(port), enabled, annotations); - } - - private boolean vanishedDpid(DeviceId... dids) { - for (int i = 0; i < dids.length; i++) { - if (!providerService.vanishedDpid.contains(dids[i])) { - return false; - } - } - return true; - } - - private boolean vanishedPort(Long... ports) { - for (int i = 0; i < ports.length; i++) { - if (!providerService.vanishedPort.contains(ports[i])) { - return false; - } - } - return true; - } - - private boolean detectedLink(DeviceId src, DeviceId dst) { - for (DeviceId key : providerService.discoveredLinks.keySet()) { - if (key.equals(src)) { - return providerService.discoveredLinks.get(src).equals(dst); - } - } - return false; - } - - - private class TestLinkRegistry implements LinkProviderRegistry { - - @Override - public LinkProviderService register(LinkProvider provider) { - providerService = new TestLinkProviderService(provider); - return providerService; - } - - @Override - public void unregister(LinkProvider provider) { - } - - @Override - public Set<ProviderId> getProviders() { - return null; - } - - } - - private class TestLinkProviderService - extends AbstractProviderService<LinkProvider> - implements LinkProviderService { - - List<DeviceId> vanishedDpid = Lists.newLinkedList(); - List<Long> vanishedPort = Lists.newLinkedList(); - Map<DeviceId, DeviceId> discoveredLinks = Maps.newHashMap(); - - protected TestLinkProviderService(LinkProvider provider) { - super(provider); - } - - @Override - public void linkDetected(LinkDescription linkDescription) { - DeviceId sDid = linkDescription.src().deviceId(); - DeviceId dDid = linkDescription.dst().deviceId(); - discoveredLinks.put(sDid, dDid); - } - - @Override - public void linkVanished(LinkDescription linkDescription) { - } - - @Override - public void linksVanished(ConnectPoint connectPoint) { - vanishedPort.add(connectPoint.port().toLong()); - - } - - @Override - public void linksVanished(DeviceId deviceId) { - vanishedDpid.add(deviceId); - } - - - } - - - - private class TestPacketContext implements PacketContext { - - protected Device device; - protected boolean blocked = false; - - public TestPacketContext(Device dev) { - device = dev; - } - - @Override - public long time() { - return 0; - } - - @Override - public InboundPacket inPacket() { - ONOSLLDP lldp = new ONOSLLDP(); - lldp.setChassisId(device.chassisId()); - lldp.setPortId((int) pd1.number().toLong()); - lldp.setDevice(deviceService.getDevice(DID1).id().toString()); - - - Ethernet ethPacket = new Ethernet(); - ethPacket.setEtherType(Ethernet.TYPE_LLDP); - ethPacket.setDestinationMACAddress(ONOSLLDP.LLDP_NICIRA); - ethPacket.setPayload(lldp); - ethPacket.setPad(true); - - - - ethPacket.setSourceMACAddress("DE:AD:BE:EF:BA:11"); - - ConnectPoint cp = new ConnectPoint(device.id(), pd3.number()); - - return new DefaultInboundPacket(cp, ethPacket, - ByteBuffer.wrap(ethPacket.serialize())); - - } - - @Override - public OutboundPacket outPacket() { - return null; - } - - @Override - public TrafficTreatment.Builder treatmentBuilder() { - return null; - } - - @Override - public void send() { - - } - - @Override - public boolean block() { - blocked = true; - return blocked; - } - - @Override - public boolean isHandled() { - return blocked; - } - - } - - private class TestPacketService extends PacketServiceAdapter { - @Override - public void addProcessor(PacketProcessor processor, int priority) { - testProcessor = processor; - } - } - - private class TestDeviceService extends DeviceServiceAdapter { - - private final Map<DeviceId, Device> devices = new HashMap<>(); - private final ArrayListMultimap<DeviceId, Port> ports = - ArrayListMultimap.create(); - public TestDeviceService() { - Device d1 = new DefaultDevice(ProviderId.NONE, DID1, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - Device d2 = new DefaultDevice(ProviderId.NONE, DID2, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - devices.put(DID1, d1); - devices.put(DID2, d2); - pd1 = new DefaultPort(d1, PortNumber.portNumber(1), true); - pd2 = new DefaultPort(d1, PortNumber.portNumber(2), true); - pd3 = new DefaultPort(d2, PortNumber.portNumber(1), true); - pd4 = new DefaultPort(d2, PortNumber.portNumber(2), true); - - ports.putAll(DID1, Lists.newArrayList(pd1, pd2)); - ports.putAll(DID2, Lists.newArrayList(pd3, pd4)); - } - - private void putDevice(Device device) { - DeviceId deviceId = device.id(); - devices.put(deviceId, device); - } - - private void putPorts(DeviceId did, Port...ports) { - this.ports.putAll(did, Lists.newArrayList(ports)); - } - - @Override - public int getDeviceCount() { - return devices.values().size(); - } - - @Override - public Iterable<Device> getDevices() { - return ImmutableList.copyOf(devices.values()); - } - - @Override - public Device getDevice(DeviceId deviceId) { - return devices.get(deviceId); - } - - @Override - public MastershipRole getRole(DeviceId deviceId) { - return MastershipRole.MASTER; - } - - @Override - public List<Port> getPorts(DeviceId deviceId) { - return ports.get(deviceId); - } - - @Override - public Port getPort(DeviceId deviceId, PortNumber portNumber) { - for (Port p : ports.get(deviceId)) { - if (p.number().equals(portNumber)) { - return p; - } - } - return null; - } - - @Override - public boolean isAvailable(DeviceId deviceId) { - return true; - } - - @Override - public void addListener(DeviceListener listener) { - deviceListener = listener; - - } - - @Override - public void removeListener(DeviceListener listener) { - - } - } - - private final class TestMasterShipService implements MastershipService { - - @Override - public MastershipRole getLocalRole(DeviceId deviceId) { - return MastershipRole.MASTER; - } - - @Override - public CompletableFuture<MastershipRole> requestRoleFor(DeviceId deviceId) { - return CompletableFuture.completedFuture(null); - } - - @Override - public CompletableFuture<Void> relinquishMastership(DeviceId deviceId) { - return null; - } - - @Override - public NodeId getMasterFor(DeviceId deviceId) { - return null; - } - - @Override - public Set<DeviceId> getDevicesOf(NodeId nodeId) { - return null; - } - - @Override - public void addListener(MastershipListener listener) { - - } - - @Override - public void removeListener(MastershipListener listener) { - - } - - @Override - public RoleInfo getNodesFor(DeviceId deviceId) { - return new RoleInfo(new NodeId("foo"), Collections.<NodeId>emptyList()); - } - } - - - private class TestLinkService extends LinkServiceAdapter { - } -} diff --git a/framework/src/onos/providers/netconf/app/app.xml b/framework/src/onos/providers/netconf/app/app.xml index f2d47627..d920d240 100644 --- a/framework/src/onos/providers/netconf/app/app.xml +++ b/framework/src/onos/providers/netconf/app/app.xml @@ -19,6 +19,13 @@ features="${project.artifactId}"> <description>${project.description}</description> + <artifact>mvn:${project.groupId}/onos-netconf-rfc/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-api/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact> + + <!--<artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact>--> <!-- Question: should there be the jnc stuff here? Or is it just for testing --> </app> diff --git a/framework/src/onos/providers/netconf/app/features.xml b/framework/src/onos/providers/netconf/app/features.xml index bc7491e6..ef0fb738 100644 --- a/framework/src/onos/providers/netconf/app/features.xml +++ b/framework/src/onos/providers/netconf/app/features.xml @@ -20,6 +20,9 @@ description="${project.description}"> <feature>onos-api</feature> <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-api/${project.version}</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</bundle> <!-- Question: should there be the jnc stuff here? Or is it just for testing --> </feature> diff --git a/framework/src/onos/providers/netconf/device/pom.xml b/framework/src/onos/providers/netconf/device/pom.xml index 3465bc3a..15ad475a 100644 --- a/framework/src/onos/providers/netconf/device/pom.xml +++ b/framework/src/onos/providers/netconf/device/pom.xml @@ -33,129 +33,29 @@ <dependencies> <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>ch.ethz.ganymed</groupId> - <artifactId>ganymed-ssh2</artifactId> - <version>262</version> - </dependency> - <dependency> - <!-- TODO: change this appropriately when the official TailF JNC is available --> <groupId>org.onosproject</groupId> - <artifactId>jnc</artifactId> - <version>1.0</version> - </dependency> - <dependency> - <groupId>org.jdom</groupId> - <artifactId>jdom2</artifactId> - <version>2.0.5</version> - </dependency> - <dependency> - <groupId>jaxen</groupId> - <artifactId>jaxen</artifactId> - <version>1.1.4</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> + <artifactId>onlab-junit</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - <scope>test</scope> + <artifactId>onos-netconf-api</artifactId> + <version>${project.version}</version> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> + <groupId>org.onosproject</groupId> + <artifactId>onos-netconf-ctl</artifactId> + <version>${project.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <configuration> - <filters> - <filter> - <artifact>com.tailf:JNC</artifact> - <includes> - <include>com/tailf/jnc/**</include> - </includes> - </filter> - <filter> - <artifact>ch.ethz.ganymed:ganymed-ssh2</artifact> - <includes> - <include>ch/ethz/ssh2/**</include> - </includes> - </filter> - <filter> - <artifact>org.jdom:jdom2</artifact> - <includes> - <include>org/jdom2/**</include> - </includes> - </filter> - </filters> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-scr-plugin</artifactId> </plugin> <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <configuration> - <instructions> - <Export-Package> - com.tailf.jnc, - ch.ethz.ssh2, - ch.ethz.ssh2.auth, - ch.ethz.ssh2.channel, - ch.ethz.ssh2.crypto, - ch.ethz.ssh2.crypto.cipher, - ch.ethz.ssh2.crypto.dh, - ch.ethz.ssh2.crypto.digest, - ch.ethz.ssh2.log, - ch.ethz.ssh2.packets, - ch.ethz.ssh2.server, - ch.ethz.ssh2.sftp, - ch.ethz.ssh2.signature, - ch.ethz.ssh2.transport, - ch.ethz.ssh2.util, - org.jdom2, - org.jdom2.input, - org.jdom2.output, - org.jdom2.adapters, - org.jdom2.filter, - org.jdom2.internal, - org.jdom2.located, - org.jdom2.transform, - org.jdom2.util, - org.jdom2.xpath, - org.jdom2.input.sax, - org.jdom2.input.stax, - org.jdom2.output.support, - org.jdom2.xpath.jaxen, - org.jdom2.xpath.util - </Export-Package> - </instructions> - </configuration> - </plugin> - <plugin> <groupId>org.onosproject</groupId> <artifactId>onos-maven-plugin</artifactId> </plugin> diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java deleted file mode 100644 index b3d26b06..00000000 --- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * 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.provider.netconf.device.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.delay; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; - -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.input.SAXBuilder; -import org.jdom2.output.Format; -import org.jdom2.output.XMLOutputter; -import org.slf4j.Logger; - -import com.tailf.jnc.Capabilities; -import com.tailf.jnc.JNCException; -import com.tailf.jnc.SSHConnection; -import com.tailf.jnc.SSHSession; - -/** - * This is a logical representation of actual NETCONF device, carrying all the - * necessary information to connect and execute NETCONF operations. - */ -public class NetconfDevice { - private final Logger log = getLogger(NetconfDevice.class); - - /** - * The Device State is used to determine whether the device is active or - * inactive. This state infomation will help Device Creator to add or delete - * the device from the core. - */ - public static enum DeviceState { - /* Used to specify Active state of the device */ - ACTIVE, - /* Used to specify inactive state of the device */ - INACTIVE, - /* Used to specify invalid state of the device */ - INVALID - } - - private static final int DEFAULT_SSH_PORT = 22; - private static final int DEFAULT_CON_TIMEOUT = 0; - private static final String XML_CAPABILITY_KEY = "capability"; - private static final int EVENTINTERVAL = 2000; - private static final int CONNECTION_CHECK_INTERVAL = 3; - private static final String INPUT_HELLO_XML_MSG = new StringBuilder( - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>") - .append("<hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">") - .append("<capabilities><capability>urn:ietf:params:netconf:base:1.0</capability>") - .append("</capabilities></hello>").toString(); - - private String sshHost; - private int sshPort = DEFAULT_SSH_PORT; - private int connectTimeout = DEFAULT_CON_TIMEOUT; - private String username; - private String password; - private boolean reachable = false; - - private List<String> capabilities = new ArrayList<String>(); - private SSHConnection sshConnection = null; - - private DeviceState deviceState = DeviceState.INVALID; - - protected NetconfDevice(String sshHost, int sshPort, String username, - String password) { - this.username = checkNotNull(username, - "Netconf Username Cannot be null"); - this.sshHost = checkNotNull(sshHost, "Netconf Device IP cannot be null"); - this.sshPort = checkNotNull(sshPort, - "Netconf Device SSH port cannot be null"); - this.password = password; - } - - /** - * This will try to connect to NETCONF device and find all the capabilities. - * - * @throws Exception if unable to connect to the device - */ - // FIXME: this should not be a generic Exception; perhaps wrap in some RuntimeException - public void init() throws Exception { - try { - if (sshConnection == null) { - sshConnection = new SSHConnection(sshHost, sshPort, connectTimeout); - sshConnection.authenticateWithPassword(username, password); - } - // Send hello message to retrieve capabilities. - } catch (IOException e) { - log.error("Fatal Error while creating connection to the device: " - + deviceInfo(), e); - throw e; - } catch (JNCException e) { - log.error("Failed to connect to the device: " + deviceInfo(), e); - throw e; - } - - hello(); - } - - private void hello() { - SSHSession ssh = null; - try { - ssh = new SSHSession(sshConnection); - String helloRequestXML = INPUT_HELLO_XML_MSG.trim(); - - log.debug("++++++++++++++++++++++++++++++++++Sending Hello: " - + sshConnection.getGanymedConnection().getHostname() - + "++++++++++++++++++++++++++++++++++"); - printPrettyXML(helloRequestXML); - ssh.print(helloRequestXML); - // ssh.print(endCharSeq); - ssh.flush(); - String xmlResponse = null; - int i = CONNECTION_CHECK_INTERVAL; - while (!ssh.ready() && i > 0) { - delay(EVENTINTERVAL); - i--; - } - - if (ssh.ready()) { - StringBuffer readOne = ssh.readOne(); - if (readOne == null) { - log.error("The Hello Contains No Capabilites"); - throw new JNCException( - JNCException.SESSION_ERROR, - "server does not support NETCONF base capability: " - + Capabilities.NETCONF_BASE_CAPABILITY); - } else { - xmlResponse = readOne.toString().trim(); - - log.debug("++++++++++++++++++++++++++++++++++Reading Capabilities: " - + sshConnection.getGanymedConnection() - .getHostname() - + "++++++++++++++++++++++++++++++++++"); - - printPrettyXML(xmlResponse); - processCapabilities(xmlResponse); - } - } - reachable = true; - } catch (IOException e) { - log.error("Fatal Error while sending Hello Message to the device: " - + deviceInfo(), e); - } catch (JNCException e) { - log.error("Fatal Error while sending Hello Message to the device: " - + deviceInfo(), e); - } finally { - log.debug("Closing the session after successful execution"); - if (ssh != null) { - ssh.close(); - } - } - } - - private void processCapabilities(String xmlResponse) throws JNCException { - if (xmlResponse.isEmpty()) { - log.error("The capability response cannot be empty"); - throw new JNCException( - JNCException.SESSION_ERROR, - "server does not support NETCONF base capability: " - + Capabilities.NETCONF_BASE_CAPABILITY); - } - try { - Document doc = new SAXBuilder() - .build(new StringReader(xmlResponse)); - Element rootElement = doc.getRootElement(); - processCapabilities(rootElement); - } catch (Exception e) { - log.error("ERROR while parsing the XML " + xmlResponse); - } - } - - private void processCapabilities(Element rootElement) { - List<Element> children = rootElement.getChildren(); - if (children.isEmpty()) { - return; - } - for (Element child : children) { - - if (child.getName().equals(XML_CAPABILITY_KEY)) { - capabilities.add(child.getValue()); - } - if (!child.getChildren().isEmpty()) { - processCapabilities(child); - } - } - } - - private void printPrettyXML(String xmlstring) { - try { - Document doc = new SAXBuilder().build(new StringReader(xmlstring)); - XMLOutputter xmOut = new XMLOutputter(Format.getPrettyFormat()); - String outputString = xmOut.outputString(doc); - log.debug(outputString); - } catch (Exception e) { - log.error("ERROR while parsing the XML " + xmlstring, e); - - } - } - - /** - * This would return host IP and host Port, used by this particular Netconf - * Device. - * @return Device Information. - */ - public String deviceInfo() { - return new StringBuilder("host: ").append(sshHost).append(". port: ") - .append(sshPort).toString(); - } - - /** - * This will terminate the device connection. - */ - public void disconnect() { - sshConnection.close(); - reachable = false; - } - - /** - * This will list down all the capabilities supported on the device. - * @return Capability list. - */ - public List<String> getCapabilities() { - return capabilities; - } - - /** - * This api is intended to know whether the device is connected or not. - * @return true if connected - */ - public boolean isReachable() { - return reachable; - } - - /** - * This will return the IP used connect ssh on the device. - * @return Netconf Device IP - */ - public String getSshHost() { - return sshHost; - } - - /** - * This will return the SSH Port used connect the device. - * @return SSH Port number - */ - public int getSshPort() { - return sshPort; - } - - /** - * The usename used to connect Netconf Device. - * @return Device Username - */ - public String getUsername() { - return username; - } - - /** - * Retrieve current state of the device. - * @return Current Device State - */ - public DeviceState getDeviceState() { - return deviceState; - } - - /** - * This is set the state information for the device. - * @param deviceState Next Device State - */ - public void setDeviceState(DeviceState deviceState) { - this.deviceState = deviceState; - } - - /** - * Check whether the device is in Active state. - * @return true if the device is Active - */ - public boolean isActive() { - return deviceState == DeviceState.ACTIVE ? true : false; - } - - public void setConnectTimeout(int connectTimeout) { - this.connectTimeout = connectTimeout; - } -} diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java index f9194a7e..d12c6474 100644 --- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java +++ b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java @@ -13,39 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.onosproject.provider.netconf.device.impl; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static org.onlab.util.Tools.delay; -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.slf4j.LoggerFactory.getLogger; -import java.io.IOException; -import java.net.SocketTimeoutException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Dictionary; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; +package org.onosproject.provider.netconf.device.impl; +import com.google.common.base.Preconditions; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onlab.packet.ChassisId; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.cluster.ClusterService; +import org.onosproject.core.ApplicationId; +import org.onosproject.core.CoreService; +import org.onosproject.incubator.net.config.basics.ConfigException; +import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; import org.onosproject.net.MastershipRole; +import org.onosproject.net.SparseAnnotations; +import org.onosproject.net.config.ConfigFactory; +import org.onosproject.net.config.NetworkConfigEvent; +import org.onosproject.net.config.NetworkConfigListener; +import org.onosproject.net.config.NetworkConfigRegistry; import org.onosproject.net.device.DefaultDeviceDescription; import org.onosproject.net.device.DeviceDescription; import org.onosproject.net.device.DeviceProvider; @@ -54,305 +43,180 @@ import org.onosproject.net.device.DeviceProviderService; import org.onosproject.net.device.DeviceService; import org.onosproject.net.provider.AbstractProvider; import org.onosproject.net.provider.ProviderId; -import org.onosproject.provider.netconf.device.impl.NetconfDevice.DeviceState; -import org.osgi.service.component.ComponentContext; +import org.onosproject.netconf.NetconfController; +import org.onosproject.netconf.NetconfDevice; +import org.onosproject.netconf.NetconfDeviceInfo; +import org.onosproject.netconf.NetconfDeviceListener; import org.slf4j.Logger; +import java.util.Map; + +import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY; +import static org.slf4j.LoggerFactory.getLogger; + /** - * Provider which will try to fetch the details of NETCONF devices from the core - * and run a capability discovery on each of the device. + * Provider which uses an NETCONF controller to detect device. */ @Component(immediate = true) public class NetconfDeviceProvider extends AbstractProvider implements DeviceProvider { - - private final Logger log = getLogger(NetconfDeviceProvider.class); - - protected Map<DeviceId, NetconfDevice> netconfDeviceMap = new ConcurrentHashMap<DeviceId, NetconfDevice>(); - - private DeviceProviderService providerService; + private final Logger log = getLogger(getClass()); @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected DeviceProviderRegistry providerRegistry; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected DeviceService deviceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ClusterService clusterService; + protected NetconfController controller; //where is initiated ? @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - private ExecutorService deviceBuilder = Executors - .newFixedThreadPool(1, groupedThreads("onos/netconf", "device-creator")); + protected NetworkConfigRegistry cfgService; - // Delay between events in ms. - private static final int EVENTINTERVAL = 5; - - private static final String SCHEME = "netconf"; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected CoreService coreService; - @Property(name = "devConfigs", value = "", label = "Instance-specific configurations") - private String devConfigs = null; - @Property(name = "devPasswords", value = "", label = "Instance-specific password") - private String devPasswords = null; + private DeviceProviderService providerService; + private NetconfDeviceListener innerNodeListener = new InnerNetconfDeviceListener(); + protected static final String ISNOTNULL = "NetconfDeviceInfo is not null"; + private static final String UNKNOWN = "unknown"; + + private final ConfigFactory factory = + new ConfigFactory<ApplicationId, NetconfProviderConfig>(APP_SUBJECT_FACTORY, + NetconfProviderConfig.class, + "devices", + true) { + @Override + public NetconfProviderConfig createConfig() { + return new NetconfProviderConfig(); + } + }; + private final NetworkConfigListener cfgLister = new InternalNetworkConfigListener(); + private ApplicationId appId; - /** - * Creates a provider with the supplier identifier. - */ - public NetconfDeviceProvider() { - super(new ProviderId("netconf", "org.onosproject.provider.netconf")); - } @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); + public void activate() { providerService = providerRegistry.register(this); - modified(context); + cfgService.registerConfigFactory(factory); + cfgService.addListener(cfgLister); + controller.addDeviceListener(innerNodeListener); + connectExistingDevices(); log.info("Started"); } + @Deactivate - public void deactivate(ComponentContext context) { - cfgService.unregisterProperties(getClass(), false); - try { - for (Entry<DeviceId, NetconfDevice> deviceEntry : netconfDeviceMap - .entrySet()) { - deviceBuilder.submit(new DeviceCreator(deviceEntry.getValue(), - false)); - } - deviceBuilder.awaitTermination(1000, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - log.error("Device builder did not terminate"); - } - deviceBuilder.shutdownNow(); - netconfDeviceMap.clear(); + public void deactivate() { providerRegistry.unregister(this); providerService = null; + cfgService.unregisterConfigFactory(factory); log.info("Stopped"); } - @Modified - public void modified(ComponentContext context) { - if (context == null) { - log.info("No configuration file"); - return; - } - Dictionary<?, ?> properties = context.getProperties(); - String deviceCfgValue = get(properties, "devConfigs"); - log.info("Settings: devConfigs={}", deviceCfgValue); - if (!isNullOrEmpty(deviceCfgValue)) { - addOrRemoveDevicesConfig(deviceCfgValue); - } - } - - private void addOrRemoveDevicesConfig(String deviceConfig) { - for (String deviceEntry : deviceConfig.split(",")) { - NetconfDevice device = processDeviceEntry(deviceEntry); - if (device != null) { - log.info("Device Detail: username: {}, host={}, port={}, state={}", - device.getUsername(), device.getSshHost(), - device.getSshPort(), device.getDeviceState().name()); - if (device.isActive()) { - deviceBuilder.submit(new DeviceCreator(device, true)); - } else { - deviceBuilder.submit(new DeviceCreator(device, false)); - } - } - } - } - - private NetconfDevice processDeviceEntry(String deviceEntry) { - if (deviceEntry == null) { - log.info("No content for Device Entry, so cannot proceed further."); - return null; - } - log.info("Trying to convert Device Entry String: " + deviceEntry - + " to a Netconf Device Object"); - NetconfDevice device = null; - try { - String userInfo = deviceEntry.substring(0, deviceEntry - .lastIndexOf('@')); - String hostInfo = deviceEntry.substring(deviceEntry - .lastIndexOf('@') + 1); - String[] infoSplit = userInfo.split(":"); - String username = infoSplit[0]; - String password = infoSplit[1]; - infoSplit = hostInfo.split(":"); - String hostIp = infoSplit[0]; - Integer hostPort; - try { - hostPort = Integer.parseInt(infoSplit[1]); - } catch (NumberFormatException nfe) { - log.error("Bad Configuration Data: Failed to parse host port number string: " - + infoSplit[1]); - throw nfe; - } - String deviceState = infoSplit[2]; - if (isNullOrEmpty(username) || isNullOrEmpty(password) - || isNullOrEmpty(hostIp) || hostPort == 0) { - log.warn("Bad Configuration Data: both user and device information parts of Configuration " - + deviceEntry + " should be non-nullable"); - } else { - device = new NetconfDevice(hostIp, hostPort, username, password); - if (!isNullOrEmpty(deviceState)) { - if (deviceState.toUpperCase().equals(DeviceState.ACTIVE - .name())) { - device.setDeviceState(DeviceState.ACTIVE); - } else if (deviceState.toUpperCase() - .equals(DeviceState.INACTIVE.name())) { - device.setDeviceState(DeviceState.INACTIVE); - } else { - log.warn("Device State Information can not be empty, so marking the state as INVALID"); - device.setDeviceState(DeviceState.INVALID); - } - } else { - log.warn("The device entry do not specify state information, so marking the state as INVALID"); - device.setDeviceState(DeviceState.INVALID); - } - } - } catch (ArrayIndexOutOfBoundsException aie) { - log.error("Error while reading config infromation from the config file: " - + "The user, host and device state infomation should be " - + "in the order 'userInfo@hostInfo:deviceState'" - + deviceEntry, aie); - } catch (Exception e) { - log.error("Error while parsing config information for the device entry: " - + deviceEntry, e); - } - return device; + public NetconfDeviceProvider() { + super(new ProviderId("netconf", "org.onosproject.netconf.provider.device")); } @Override public void triggerProbe(DeviceId deviceId) { - // TODO Auto-generated method stub + // TODO: This will be implemented later. + log.info("Triggering probe on device {}", deviceId); } @Override public void roleChanged(DeviceId deviceId, MastershipRole newRole) { - + // TODO: This will be implemented later. } @Override public boolean isReachable(DeviceId deviceId) { - NetconfDevice netconfDevice = netconfDeviceMap.get(deviceId); + Map<DeviceId, NetconfDevice> devices = controller.getDevicesMap(); + + NetconfDevice netconfDevice = null; + for (DeviceId key : devices.keySet()) { + if (key.equals(deviceId)) { + netconfDevice = controller.getDevicesMap().get(key); + } + } if (netconfDevice == null) { log.warn("BAD REQUEST: the requested device id: " - + deviceId.toString() - + " is not associated to any NETCONF Device"); + + deviceId.toString() + + " is not associated to any NETCONF Device"); return false; } - return netconfDevice.isReachable(); + return netconfDevice.isActive(); } - /** - * This class is intended to add or remove Configured Netconf Devices. - * Functionality relies on 'createFlag' and 'NetconfDevice' content. The - * functionality runs as a thread and dependening on the 'createFlag' value - * it will create or remove Device entry from the core. - */ - private class DeviceCreator implements Runnable { + private class InnerNetconfDeviceListener implements NetconfDeviceListener { - private NetconfDevice device; - private boolean createFlag; + @Override + public void deviceAdded(NetconfDeviceInfo nodeId) { + Preconditions.checkNotNull(nodeId, ISNOTNULL); + DeviceId deviceId = nodeId.getDeviceId(); + //TODO filter for not netconf devices + //Netconf configuration object + ChassisId cid = new ChassisId(); + String ipAddress = nodeId.ip().toString(); + SparseAnnotations annotations = DefaultAnnotations.builder() + .set("ipaddress", ipAddress).build(); + DeviceDescription deviceDescription = new DefaultDeviceDescription( + deviceId.uri(), + Device.Type.SWITCH, + UNKNOWN, UNKNOWN, + UNKNOWN, UNKNOWN, + cid, + annotations); + providerService.deviceConnected(deviceId, deviceDescription); - public DeviceCreator(NetconfDevice device, boolean createFlag) { - this.device = device; - this.createFlag = createFlag; } @Override - public void run() { - if (createFlag) { - log.info("Trying to create Device Info on ONOS core"); - advertiseDevices(); - } else { - log.info("Trying to remove Device Info on ONOS core"); - removeDevices(); - } + public void deviceRemoved(NetconfDeviceInfo nodeId) { + Preconditions.checkNotNull(nodeId, ISNOTNULL); + DeviceId deviceId = nodeId.getDeviceId(); + providerService.deviceDisconnected(deviceId); + } + } - /** - * For each Netconf Device, remove the entry from the device store. - */ - private void removeDevices() { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } + private void connectExistingDevices() { + //TODO consolidate + appId = coreService.registerApplication("org.onosproject.netconf"); + connectDevices(); + } + + private void connectDevices() { + NetconfProviderConfig cfg = cfgService.getConfig(appId, NetconfProviderConfig.class); + if (cfg != null) { + log.info("cfg {}", cfg); try { - DeviceId did = getDeviceId(); - if (!netconfDeviceMap.containsKey(did)) { - log.error("BAD Request: 'Currently device is not discovered, " - + "so cannot remove/disconnect the device: " - + device.deviceInfo() + "'"); - return; - } - providerService.deviceDisconnected(did); - device.disconnect(); - netconfDeviceMap.remove(did); - delay(EVENTINTERVAL); - } catch (URISyntaxException uriSyntaxExcpetion) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't remove the device from the store", - uriSyntaxExcpetion); + cfg.getDevicesAddresses().stream().forEach(addr -> controller + .connectDevice(new NetconfDeviceInfo(addr.name(), + addr.password(), + addr.ip(), + addr.port()))); + } catch (ConfigException e) { + log.error("Cannot read config error " + e); } } + } - /** - * Initialize Netconf Device object, and notify core saying device - * connected. - */ - private void advertiseDevices() { - try { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - device.init(); - DeviceId did = getDeviceId(); - ChassisId cid = new ChassisId(); - DeviceDescription desc = new DefaultDeviceDescription( - did.uri(), - Device.Type.OTHER, - "", "", - "", "", - cid); - log.info("Persisting Device" + did.uri().toString()); - - netconfDeviceMap.put(did, device); - providerService.deviceConnected(did, desc); - log.info("Done with Device Info Creation on ONOS core. Device Info: " - + device.deviceInfo() + " " + did.uri().toString()); - delay(EVENTINTERVAL); - } catch (URISyntaxException e) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't persist the device onto the store", e); - } catch (SocketTimeoutException e) { - log.error("Error while setting connection for the device: " - + device.deviceInfo(), e); - } catch (IOException e) { - log.error("Error while setting connection for the device: " - + device.deviceInfo(), e); - } catch (Exception e) { - log.error("Error while initializing session for the device: " - + (device != null ? device.deviceInfo() : null), e); - } + private class InternalNetworkConfigListener implements NetworkConfigListener { + + + @Override + public void event(NetworkConfigEvent event) { + connectDevices(); } - /** - * This will build a device id for the device. - */ - private DeviceId getDeviceId() throws URISyntaxException { - String additionalSSP = new StringBuilder(device.getUsername()) - .append("@").append(device.getSshHost()).append(":") - .append(device.getSshPort()).toString(); - DeviceId did = DeviceId.deviceId(new URI(SCHEME, additionalSSP, - null)); - return did; + @Override + public boolean isRelevant(NetworkConfigEvent event) { + //TODO refactor + return event.configClass().equals(NetconfProviderConfig.class) && + (event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || + event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED); } } } diff --git a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java b/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java deleted file mode 100644 index e56c5959..00000000 --- a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * 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.provider.netconf.device.impl; - -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.junit.Assert.assertFalse; -import static org.onlab.util.Tools.delay; -import static org.onosproject.provider.netconf.device.impl.NetconfDeviceProviderTestConstant.*; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collection; -import java.util.Dictionary; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.device.DefaultDeviceDescription; -import org.onosproject.net.device.DeviceDescription; -import org.onosproject.net.device.DeviceProvider; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceProviderService; -import org.onosproject.net.device.PortDescription; -import org.onosproject.net.device.PortStatistics; -import org.onosproject.net.provider.ProviderId; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import com.tailf.jnc.JNCException; - -/** - * Test Case to Validate Netconf Device Provider. - */ -public class NetconfDeviceProviderTest { - TestDeviceCreator create; - - private final Logger log = getLogger(NetconfDeviceProviderTest.class); - - private Map<DeviceId, NetconfDevice> netconfDeviceMap = new ConcurrentHashMap<DeviceId, NetconfDevice>(); - - private DeviceProviderService providerService; - - private static final DeviceId DID1 = DeviceId.deviceId(DEVICE_ID); - - private final NetconfDeviceProvider provider = new NetconfDeviceProvider(); - private final TestDeviceRegistry registry = new TestDeviceRegistry(); - - private ComponentConfigService mockCfgService; - - @Before - public void setUp() { - mockCfgService = EasyMock.createMock(ComponentConfigService.class); - provider.cfgService = mockCfgService; - provider.providerRegistry = registry; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithoutValues(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(NULL); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithDeviceEntryNull(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(NULL_NULL); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceEntryNumberFomatEx(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_INVALID_ENTRY_NUMBER) - .andThrow(new NumberFormatException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithoutUsernameAndPassword(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(CONFIG_WITH_NULL_ENTRY); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithDifferentDeviceState(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_DIFFERENT_DEVICE_STATE); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceWithArrayOutOFBoundEx(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_ARRAY_OUT_OF_BOUNDEX) - .andThrow(new ArrayIndexOutOfBoundsException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceEntryForDeactivate(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_ENTRY_FOR_DEACTIVATE) - .andThrow(new ArrayIndexOutOfBoundsException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @Ignore - @Test(expected = IOException.class) - public void testSSHAuthentication() throws IOException, JNCException { - TestDeviceCreator objForTestDev = new TestDeviceCreator( - new NetconfDevice( - DEVICE_IP, - DEVICE_PORT, - DEVICE_USERNAME, - DEVICE_PASSWORD), - true); - objForTestDev.run(); - } - - @After - public void tearDown() { - provider.providerRegistry = null; - provider.cfgService = null; - } - - // To check if deviceCfgValue is empty or null - @Test - public void testActiveWithcomponentContextIsNull() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithoutValues(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - // To check deviceEntry and device is null - @Test - public void testActiveWithDeviceEntryIsNull() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithDeviceEntryNull(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithoutUsernameAndPassword() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithoutUsernameAndPassword(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithNumberFomatEx() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceEntryNumberFomatEx(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithDifferentDeviceState() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithDifferentDeviceState(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithArrayOutOFBoundEx() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceWithArrayOutOFBoundEx(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void isReachableWithInvalidDeviceId() { - assertFalse("Initially the Device ID Should not be reachable", - provider.isReachable(DID1)); - NetconfDevice device = new NetconfDevice(NULL, ZERO, NULL, NULL); - provider.netconfDeviceMap.put(DID1, device); - assertFalse("Particular Device ID cannot be Reachable", - provider.isReachable(DID1)); - } - - @Test - public void testDeactivate() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceEntryForDeactivate(componentContext); - replay(componentContext); - testActiveWithDeviceEntryWithDifferentDeviceState(); - provider.deactivate(componentContext); - } - - private class TestDeviceCreator { - - private NetconfDevice device; - private boolean createFlag; - - public TestDeviceCreator(NetconfDevice device, boolean createFlag) { - this.device = device; - this.createFlag = createFlag; - } - - public void run() throws JNCException, IOException { - if (createFlag) { - log.info("Trying to create Device Info on ONOS core"); - advertiseDevices(); - } else { - log.info("Trying to remove Device Info on ONOS core"); - removeDevices(); - } - } - - /** - * For each Netconf Device, remove the entry from the device store. - */ - private void removeDevices() { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - try { - DeviceId did = getDeviceId(); - if (!netconfDeviceMap.containsKey(did)) { - log.error("BAD Request: 'Currently device is not discovered, " - + "so cannot remove/disconnect the device: " - + device.deviceInfo() + "'"); - return; - } - providerService.deviceDisconnected(did); - device.disconnect(); - netconfDeviceMap.remove(did); - delay(EVENTINTERVAL); - } catch (URISyntaxException uriSyntaxExcpetion) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't remove the device from the store", - uriSyntaxExcpetion); - } - } - - /** - * Initialize Netconf Device object, and notify core saying device - * connected. - */ - private void advertiseDevices() throws JNCException, IOException { - try { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - device.init(); - DeviceId did = getDeviceId(); - ChassisId cid = new ChassisId(); - DeviceDescription desc = new DefaultDeviceDescription( - did.uri(), - Device.Type.OTHER, - NULL, - NULL, - NULL, - NULL, cid); - log.info("Persisting Device" + did.uri().toString()); - - netconfDeviceMap.put(did, device); - providerService.deviceConnected(did, desc); - log.info("Done with Device Info Creation on ONOS core. Device Info: " - + device.deviceInfo() + " " + did.uri().toString()); - delay(EVENTINTERVAL); - } catch (URISyntaxException e) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't persist the device onto the store", e); - } catch (JNCException e) { - throw e; - } catch (IOException e) { - throw e; - } catch (Exception e) { - log.error("Error while initializing session for the device: " - + device.deviceInfo(), e); - } - } - - private DeviceId getDeviceId() throws URISyntaxException { - String additionalSSP = new StringBuilder(device.getUsername()) - .append(AT_THE_RATE).append(device.getSshHost()) - .append(COLON).append(device.getSshPort()).toString(); - DeviceId did = DeviceId.deviceId(new URI(SCHEME_NETCONF, - additionalSSP, null)); - return did; - } - } - - private class TestDeviceRegistry implements DeviceProviderRegistry { - - @Override - public DeviceProviderService register(DeviceProvider provider) { - return new TestProviderService(); - } - - @Override - public void unregister(DeviceProvider provider) { - } - - @Override - public Set<ProviderId> getProviders() { - return null; - } - - private class TestProviderService implements DeviceProviderService { - - @Override - public DeviceProvider provider() { - return null; - } - - @Override - public void deviceConnected(DeviceId deviceId, - DeviceDescription deviceDescription) { - } - - @Override - public void deviceDisconnected(DeviceId deviceId) { - - } - - @Override - public void updatePorts(DeviceId deviceId, - List<PortDescription> portDescriptions) { - - } - - @Override - public void portStatusChanged(DeviceId deviceId, - PortDescription portDescription) { - - } - - @Override - public void receivedRoleReply(DeviceId deviceId, - MastershipRole requested, - MastershipRole response) { - - } - - @Override - public void updatePortStatistics(DeviceId deviceId, - Collection<PortStatistics> portStatistics) { - - } - } - } -} diff --git a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java b/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java deleted file mode 100644 index 1d848e26..00000000 --- a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.provider.netconf.device.impl; - -public final class NetconfDeviceProviderTestConstant { - - private NetconfDeviceProviderTestConstant() { - } - - public static final int ZERO = 0; - public static final int EVENTINTERVAL = 5; - public static final String DEV_CONFIG = "devConfigs"; - public static final String CONFIG_WITH_INVALID_ENTRY_NUMBER = "cisco:cisco" - + "@10.18.11.14:cisco:active"; - public static final String CONFIG_WITH_NULL_ENTRY = "null:null@null:0:active"; - public static final String CONFIG_WITH_DIFFERENT_DEVICE_STATE = "cisco:cisco@10.18.11.14:22:active," - + "cisco:cisco@10.18.11.18:22:inactive,cisco:cisco@10.18.11.14:22:invalid," - + "cisco:cisco@10.18.11.14:22:null"; - public static final String CONFIG_WITH_ARRAY_OUT_OF_BOUNDEX = "@10.18.11.14:22:active"; - public static final String CONFIG_ENTRY_FOR_DEACTIVATE = "netconf:cisco" - + "@10.18.11.14:22:active"; - public static final String DEVICE_IP = "10.18.14.19"; - public static final int DEVICE_PORT = 22; - public static final String DEVICE_USERNAME = "cisco"; - public static final String DEVICE_PASSWORD = "cisco"; - public static final String AT_THE_RATE = "@"; - public static final String COLON = ":"; - public static final String NULL = ""; - public static final String NULL_NULL = "null,null"; - public static final String SCHEME_NETCONF = "netconf"; - public static final String DEVICE_ID = "of:0000000000000001"; - -} diff --git a/framework/src/onos/providers/openflow/app/app.xml b/framework/src/onos/providers/openflow/app/app.xml deleted file mode 100644 index e54d1a8a..00000000 --- a/framework/src/onos/providers/openflow/app/app.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> -<app name="org.onosproject.openflow" origin="ON.Lab" version="${project.version}" - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" - features="${project.artifactId}"> - <description>${project.description}</description> - - <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-ctl/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> - - <artifact>mvn:${project.groupId}/onos-lldp-provider/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-host-provider/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-device/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-group/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</artifact> -</app> diff --git a/framework/src/onos/providers/openflow/app/features.xml b/framework/src/onos/providers/openflow/app/features.xml deleted file mode 100644 index 9dbae8af..00000000 --- a/framework/src/onos/providers/openflow/app/features.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<!-- - ~ 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. - --> -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}"> - <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> - <feature name="${project.artifactId}" version="${project.version}" - description="${project.description}"> - <feature>onos-api</feature> - <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> - <bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle> - - <bundle>mvn:${project.groupId}/onos-lldp-provider/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-host-provider/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-device/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-group/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</bundle> - </feature> -</features> diff --git a/framework/src/onos/providers/openflow/app/pom.xml b/framework/src/onos/providers/openflow/app/pom.xml index cb55463b..ac5f6eee 100644 --- a/framework/src/onos/providers/openflow/app/pom.xml +++ b/framework/src/onos/providers/openflow/app/pom.xml @@ -27,55 +27,23 @@ </parent> <artifactId>onos-openflow</artifactId> - <packaging>pom</packaging> + <packaging>bundle</packaging> - <description>OpenFlow protocol southbound providers</description> + <properties> + <onos.app.name>org.onosproject.openflow</onos.app.name> + <onos.app.requires> + org.onosproject.openflow-base, + org.onosproject.hostprovider, + org.onosproject.lldpprovider + </onos.app.requires> + </properties> + + <description>OpenFlow southbound meta application</description> <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-api</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-ctl</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-drivers</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-device</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-packet</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-flow</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-group</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-lldp-provider</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-host-provider</artifactId> - <version>${project.version}</version> - </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-of-api</artifactId> + </dependency> </dependencies> - </project> diff --git a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java index c591f47d..f4ab0173 100644 --- a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java +++ b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java @@ -707,10 +707,13 @@ public class FlowEntryBuilder { long tunnelId = match.get(MatchField.TUNNEL_ID).getValue(); builder.matchTunnelId(tunnelId); break; + case ARP_THA: + mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong()); + builder.matchArpTha(mac); + break; case ARP_OP: case ARP_SHA: case ARP_SPA: - case ARP_THA: case ARP_TPA: case MPLS_TC: default: diff --git a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java index 010d7e7c..2e5be654 100644 --- a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java +++ b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java @@ -24,6 +24,7 @@ import org.onosproject.net.OchSignal; import org.onosproject.net.driver.DriverService; import org.onosproject.net.flow.FlowRule; import org.onosproject.net.flow.TrafficSelector; +import org.onosproject.net.flow.criteria.ArpHaCriterion; import org.onosproject.net.flow.criteria.Criterion; import org.onosproject.net.flow.criteria.EthCriterion; import org.onosproject.net.flow.criteria.EthTypeCriterion; @@ -178,6 +179,7 @@ public abstract class FlowModBuilder { UdpPortCriterion udpPortCriterion; SctpPortCriterion sctpPortCriterion; IPv6NDLinkLayerAddressCriterion llAddressCriterion; + ArpHaCriterion arpHaCriterion; for (Criterion c : selector.criteria()) { switch (c.type()) { @@ -415,10 +417,14 @@ public abstract class FlowModBuilder { mplsBos.mplsBos() ? OFBooleanValue.TRUE : OFBooleanValue.FALSE); break; + case ARP_THA: + arpHaCriterion = (ArpHaCriterion) c; + mBuilder.setExact(MatchField.ARP_THA, + MacAddress.of(arpHaCriterion.mac().toLong())); + break; case ARP_OP: case ARP_SHA: case ARP_SPA: - case ARP_THA: case ARP_TPA: case MPLS_TC: case PBB_ISID: diff --git a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java index d5804f44..c91616df 100644 --- a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java +++ b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java @@ -15,11 +15,25 @@ */ package org.onosproject.provider.of.group.impl; +import static org.slf4j.LoggerFactory.getLogger; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; + import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onosproject.core.GroupId; +import org.onosproject.net.DeviceId; import org.onosproject.net.PortNumber; +import org.onosproject.net.driver.DefaultDriverData; +import org.onosproject.net.driver.DefaultDriverHandler; +import org.onosproject.net.driver.Driver; +import org.onosproject.net.driver.DriverService; import org.onosproject.net.flow.TrafficTreatment; +import org.onosproject.net.flow.instructions.ExtensionInstruction; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flow.instructions.Instructions; import org.onosproject.net.flow.instructions.L0ModificationInstruction; @@ -28,6 +42,7 @@ import org.onosproject.net.flow.instructions.L3ModificationInstruction; import org.onosproject.net.group.GroupBucket; import org.onosproject.net.group.GroupBuckets; import org.onosproject.net.group.GroupDescription; +import org.onosproject.openflow.controller.ExtensionInterpreter; import org.projectfloodlight.openflow.protocol.OFBucket; import org.projectfloodlight.openflow.protocol.OFFactory; import org.projectfloodlight.openflow.protocol.OFGroupAdd; @@ -52,14 +67,6 @@ import org.projectfloodlight.openflow.types.U32; import org.projectfloodlight.openflow.types.VlanPcp; import org.slf4j.Logger; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Optional; - -import static org.slf4j.LoggerFactory.getLogger; - /* * Builder for GroupMod. */ @@ -70,6 +77,7 @@ public final class GroupModBuilder { private GroupDescription.Type type; private OFFactory factory; private Long xid; + private Optional<DriverService> driverService; private final Logger log = getLogger(getClass()); @@ -85,6 +93,16 @@ public final class GroupModBuilder { this.xid = xid.orElse((long) 0); } + private GroupModBuilder(GroupBuckets buckets, GroupId groupId, + GroupDescription.Type type, OFFactory factory, + Optional<Long> xid, Optional<DriverService> driverService) { + this.buckets = buckets; + this.groupId = groupId; + this.type = type; + this.factory = factory; + this.xid = xid.orElse((long) 0); + this.driverService = driverService; + } /** * Creates a builder for GroupMod. * @@ -103,6 +121,24 @@ public final class GroupModBuilder { } /** + * Creates a builder for GroupMod. + * + * @param buckets GroupBuckets object + * @param groupId Group Id to create + * @param type Group type + * @param factory OFFactory object + * @param xid transaction ID + * @param driverService driver Service + * @return GroupModBuilder object + */ + public static GroupModBuilder builder(GroupBuckets buckets, GroupId groupId, + GroupDescription.Type type, OFFactory factory, + Optional<Long> xid, Optional<DriverService> driverService) { + + return new GroupModBuilder(buckets, groupId, type, factory, xid, driverService); + } + + /** * Builds the GroupAdd OF message. * * @return GroupAdd OF message @@ -118,8 +154,17 @@ public final class GroupModBuilder { if (type == GroupDescription.Type.SELECT) { bucketBuilder.setWeight(1); } - bucketBuilder.setWatchGroup(OFGroup.ANY); - bucketBuilder.setWatchPort(OFPort.ANY); + + if (type == GroupDescription.Type.FAILOVER && bucket.watchPort() != null) { + bucketBuilder.setWatchPort(OFPort.of((int) bucket.watchPort().toLong())); + } else { + bucketBuilder.setWatchPort(OFPort.ANY); + } + if (type == GroupDescription.Type.FAILOVER && bucket.watchGroup() != null) { + bucketBuilder.setWatchGroup(OFGroup.of(bucket.watchGroup().id())); + } else { + bucketBuilder.setWatchGroup(OFGroup.ANY); + } OFBucket ofBucket = bucketBuilder.build(); ofBuckets.add(ofBucket); } @@ -218,6 +263,12 @@ public final class GroupModBuilder { .setGroup(OFGroup.of(grp.groupId().id())); actions.add(actgrp.build()); break; + case EXTENSION: + Instructions.ExtensionInstructionWrapper wrapper = + (Instructions.ExtensionInstructionWrapper) i; + actions.add(buildExtensionAction( + wrapper.extensionInstruction(), wrapper.deviceId())); + break; default: log.warn("Instruction type {} not yet implemented.", i.type()); } @@ -372,5 +423,21 @@ public final class GroupModBuilder { } return null; } + + private OFAction buildExtensionAction(ExtensionInstruction i, DeviceId deviceId) { + if (!driverService.isPresent()) { + log.error("No driver service present"); + return null; + } + Driver driver = driverService.get().getDriver(deviceId); + if (driver.hasBehaviour(ExtensionInterpreter.class)) { + DefaultDriverHandler handler = + new DefaultDriverHandler(new DefaultDriverData(driver, deviceId)); + ExtensionInterpreter interpreter = handler.behaviour(ExtensionInterpreter.class); + return interpreter.mapInstruction(factory, i); + } + + return null; + } } diff --git a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java index 5783c842..e69fd6b9 100644 --- a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java +++ b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java @@ -16,7 +16,12 @@ package org.onosproject.provider.of.group.impl; -import com.google.common.collect.Maps; +import static org.slf4j.LoggerFactory.getLogger; + +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicLong; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -26,6 +31,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onosproject.core.DefaultGroupId; import org.onosproject.core.GroupId; import org.onosproject.net.DeviceId; +import org.onosproject.net.driver.DriverService; import org.onosproject.net.group.DefaultGroup; import org.onosproject.net.group.Group; import org.onosproject.net.group.GroupBuckets; @@ -60,12 +66,7 @@ import org.projectfloodlight.openflow.protocol.OFStatsType; import org.projectfloodlight.openflow.protocol.OFVersion; import org.slf4j.Logger; -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicLong; - -import static org.slf4j.LoggerFactory.getLogger; +import com.google.common.collect.Maps; /** * Provider which uses an OpenFlow controller to handle Group. @@ -81,6 +82,9 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected GroupProviderRegistry providerRegistry; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected DriverService driverService; + private GroupProviderService providerService; static final int POLL_INTERVAL = 10; @@ -139,12 +143,21 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv return; } final Long groupModXid = XID_COUNTER.getAndIncrement(); - GroupModBuilder builder = - GroupModBuilder.builder(groupOperation.buckets(), - groupOperation.groupId(), - groupOperation.groupType(), - sw.factory(), - Optional.of(groupModXid)); + GroupModBuilder builder = null; + if (driverService == null) { + builder = GroupModBuilder.builder(groupOperation.buckets(), + groupOperation.groupId(), + groupOperation.groupType(), + sw.factory(), + Optional.of(groupModXid)); + } else { + builder = GroupModBuilder.builder(groupOperation.buckets(), + groupOperation.groupId(), + groupOperation.groupType(), + sw.factory(), + Optional.of(groupModXid), + Optional.of(driverService)); + } OFGroupMod groupMod = null; switch (groupOperation.opType()) { case ADD: @@ -158,6 +171,7 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv break; default: log.error("Unsupported Group operation"); + return; } sw.sendMsg(groupMod); GroupId groudId = new DefaultGroupId(groupMod.getGroup().getGroupNumber()); diff --git a/framework/src/onos/providers/openflow/pom.xml b/framework/src/onos/providers/openflow/pom.xml index c098a609..1250af61 100644 --- a/framework/src/onos/providers/openflow/pom.xml +++ b/framework/src/onos/providers/openflow/pom.xml @@ -37,6 +37,7 @@ <module>flow</module> <module>group</module> <module>meter</module> + <module>base</module> <module>app</module> </modules> diff --git a/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java b/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java index 10e745e3..d573458e 100644 --- a/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java +++ b/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java @@ -27,6 +27,7 @@ import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; import org.onlab.packet.ChassisId; +import org.onlab.packet.IpAddress; import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; @@ -40,6 +41,7 @@ import org.onosproject.net.device.DeviceProviderService; import org.onosproject.net.device.DeviceService; import org.onosproject.net.provider.AbstractProvider; import org.onosproject.net.provider.ProviderId; +import org.onosproject.ovsdb.controller.OvsdbClientService; import org.onosproject.ovsdb.controller.OvsdbController; import org.onosproject.ovsdb.controller.OvsdbNodeId; import org.onosproject.ovsdb.controller.OvsdbNodeListener; @@ -87,8 +89,14 @@ public class OvsdbDeviceProvider extends AbstractProvider @Override public void triggerProbe(DeviceId deviceId) { - // TODO: This will be implemented later. log.info("Triggering probe on device {}", deviceId); + if (!isReachable(deviceId)) { + log.error("Failed to probe device {}", deviceId); + providerService.deviceDisconnected(deviceId); + return; + } else { + log.trace("Confirmed device {} connection", deviceId); + } } @Override @@ -98,7 +106,8 @@ public class OvsdbDeviceProvider extends AbstractProvider @Override public boolean isReachable(DeviceId deviceId) { - return true; + OvsdbClientService ovsdbClient = controller.getOvsdbClient(changeDeviceIdToNodeId(deviceId)); + return !(ovsdbClient == null || !ovsdbClient.isConnected()); } private class InnerOvsdbNodeListener implements OvsdbNodeListener { @@ -131,4 +140,12 @@ public class OvsdbDeviceProvider extends AbstractProvider } } + + private OvsdbNodeId changeDeviceIdToNodeId(DeviceId deviceId) { + String[] strings = deviceId.toString().split(":"); + if (strings.length < 1) { + return null; + } + return new OvsdbNodeId(IpAddress.valueOf(strings[1]), 0); + } } diff --git a/framework/src/onos/tools/package/maven-plugin/pom.xml b/framework/src/onos/tools/package/maven-plugin/pom.xml index 54839b11..c2b5d8ae 100644 --- a/framework/src/onos/tools/package/maven-plugin/pom.xml +++ b/framework/src/onos/tools/package/maven-plugin/pom.xml @@ -85,6 +85,11 @@ <artifactId>jackson-annotations</artifactId> <version>2.4.2</version> </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.4</version> + </dependency> </dependencies> <build> diff --git a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java index 5558b13a..09cf4dd9 100644 --- a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java +++ b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java @@ -163,7 +163,7 @@ public class OnosAppMojo extends AbstractMojo { origin = origin != null ? origin : DEFAULT_ORIGIN; requiredApps = (String) project.getProperties().get(ONOS_APP_REQUIRES); - requiredApps = requiredApps == null ? "" : requiredApps; + requiredApps = requiredApps == null ? "" : requiredApps.replaceAll("[\\s]", ""); if (appFile.exists()) { loadAppFile(appFile); diff --git a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java index ea847459..a75127a3 100644 --- a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java +++ b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java @@ -18,6 +18,7 @@ package org.onosproject.maven; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.base.Charsets; import com.google.common.io.ByteStreams; import com.google.common.io.Files; import com.thoughtworks.qdox.JavaProjectBuilder; @@ -124,11 +125,13 @@ public class OnosSwaggerMojo extends AbstractMojo { ObjectNode root = initializeRoot(); ArrayNode tags = mapper.createArrayNode(); ObjectNode paths = mapper.createObjectNode(); + ObjectNode definitions = mapper.createObjectNode(); root.set("tags", tags); root.set("paths", paths); + root.set("definitions", definitions); - builder.getClasses().forEach(jc -> processClass(jc, paths, tags)); + builder.getClasses().forEach(jc -> processClass(jc, paths, tags, definitions)); if (paths.size() > 0) { getLog().info("Generating ONOS REST API documentation..."); @@ -172,7 +175,7 @@ public class OnosSwaggerMojo extends AbstractMojo { // Checks whether javaClass has a path tag associated with it and if it does // processes its methods and creates a tag for the class on the root - void processClass(JavaClass javaClass, ObjectNode paths, ArrayNode tags) { + void processClass(JavaClass javaClass, ObjectNode paths, ArrayNode tags, ObjectNode definitions) { // If the class does not have a Path tag then ignore it JavaAnnotation annotation = getPathAnnotation(javaClass); if (annotation == null) { @@ -199,7 +202,7 @@ public class OnosSwaggerMojo extends AbstractMojo { ArrayNode tagArray = mapper.createArrayNode(); tagArray.add(tagPath); - processAllMethods(javaClass, resourcePath, paths, tagArray); + processAllMethods(javaClass, resourcePath, paths, tagArray, definitions); } private JavaAnnotation getPathAnnotation(JavaClass javaClass) { @@ -211,7 +214,7 @@ public class OnosSwaggerMojo extends AbstractMojo { // Checks whether a class's methods are REST methods and then places all the // methods under a specific path into the paths node private void processAllMethods(JavaClass javaClass, String resourcePath, - ObjectNode paths, ArrayNode tagArray) { + ObjectNode paths, ArrayNode tagArray, ObjectNode definitions) { // map of the path to its methods represented by an ObjectNode Map<String, ObjectNode> pathMap = new HashMap<>(); @@ -221,7 +224,7 @@ public class OnosSwaggerMojo extends AbstractMojo { if (name.equals(POST) || name.equals(GET) || name.equals(DELETE) || name.equals(PUT)) { // substring(12) removes "javax.ws.rs." String method = annotation.getType().toString().substring(12).toLowerCase(); - processRestMethod(javaMethod, method, pathMap, resourcePath, tagArray); + processRestMethod(javaMethod, method, pathMap, resourcePath, tagArray, definitions); } }); }); @@ -236,9 +239,10 @@ public class OnosSwaggerMojo extends AbstractMojo { private void processRestMethod(JavaMethod javaMethod, String method, Map<String, ObjectNode> pathMap, - String resourcePath, ArrayNode tagArray) { + String resourcePath, ArrayNode tagArray, ObjectNode definitions) { String fullPath = resourcePath, consumes = "", produces = "", comment = javaMethod.getComment(); + DocletTag tag = javaMethod.getTagByName("rsModel"); for (JavaAnnotation annotation : javaMethod.getAnnotations()) { String name = annotation.getType().getName(); if (name.equals(PATH)) { @@ -256,12 +260,19 @@ public class OnosSwaggerMojo extends AbstractMojo { methodNode.set("tags", tagArray); addSummaryDescriptions(methodNode, comment); - processParameters(javaMethod, methodNode); + addJsonSchemaDefinition(definitions, tag); + addJsonSchemaDefinition(definitions, tag); + + processParameters(javaMethod, methodNode, method, tag); processConsumesProduces(methodNode, "consumes", consumes); processConsumesProduces(methodNode, "produces", produces); - - addResponses(methodNode); + if (tag == null || ((method.toLowerCase().equals("post") || method.toLowerCase().equals("put")) + && !(tag.getParameters().size() > 1))) { + addResponses(methodNode, tag, false); + } else { + addResponses(methodNode, tag, true); + } ObjectNode operations = pathMap.get(fullPath); if (operations == null) { @@ -273,6 +284,24 @@ public class OnosSwaggerMojo extends AbstractMojo { } } + private void addJsonSchemaDefinition(ObjectNode definitions, DocletTag tag) { + File definitionsDirectory = new File(srcDirectory + "/src/main/resources/definitions"); + if (tag != null) { + tag.getParameters().stream().forEach(param -> { + try { + File config = new File(definitionsDirectory.getAbsolutePath() + "/" + + param + ".json"); + String lines = Files.readLines(config, Charsets.UTF_8).stream().reduce((t, u) -> t + u). + get(); + definitions.putPOJO(param, lines); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + } + } + private void processConsumesProduces(ObjectNode methodNode, String type, String io) { if (!io.equals("")) { ArrayNode array = mapper.createArrayNode(); @@ -299,13 +328,19 @@ public class OnosSwaggerMojo extends AbstractMojo { // Temporary solution to add responses to a method // TODO Provide annotations in the web resources for responses and parse them - private void addResponses(ObjectNode methodNode) { + private void addResponses(ObjectNode methodNode, DocletTag tag, boolean responseJson) { ObjectNode responses = mapper.createObjectNode(); methodNode.set("responses", responses); ObjectNode success = mapper.createObjectNode(); success.put("description", "successful operation"); responses.set("200", success); + if (tag != null && responseJson) { + ObjectNode schema = mapper.createObjectNode(); + tag.getParameters().stream().forEach( + param -> schema.put("$ref", "#/definitions/" + param)); + success.set("schema", schema); + } ObjectNode defaultObj = mapper.createObjectNode(); defaultObj.put("description", "Unexpected error"); @@ -329,7 +364,7 @@ public class OnosSwaggerMojo extends AbstractMojo { } // Processes parameters of javaMethod and enters the proper key-values into the methodNode - private void processParameters(JavaMethod javaMethod, ObjectNode methodNode) { + private void processParameters(JavaMethod javaMethod, ObjectNode methodNode, String method, DocletTag tag) { ArrayNode parameters = mapper.createArrayNode(); methodNode.set("parameters", parameters); boolean required = true; @@ -346,7 +381,8 @@ public class OnosSwaggerMojo extends AbstractMojo { if (pathType != null) { //the parameter is a path or query parameter individualParameterNode.put("name", - pathType.getNamedParameter("value").toString().replace("\"", "")); + pathType.getNamedParameter("value") + .toString().replace("\"", "")); if (pathType.getType().getName().equals(PATH_PARAM)) { individualParameterNode.put("in", "path"); } else if (pathType.getType().getName().equals(QUERY_PARAM)) { @@ -357,10 +393,16 @@ public class OnosSwaggerMojo extends AbstractMojo { individualParameterNode.put("name", annotationName); individualParameterNode.put("in", "body"); - // TODO add actual hardcoded schemas and a type - // body parameters must have a schema associated with them - ArrayNode schema = mapper.createArrayNode(); - individualParameterNode.set("schema", schema); + // Adds the reference to the Json model for the input + // that goes in the post or put operation + if (tag != null && (method.toLowerCase().equals("post") || + method.toLowerCase().equals("put"))) { + ObjectNode schema = mapper.createObjectNode(); + tag.getParameters().stream().forEach(param -> { + schema.put("$ref", "#/definitions/" + param); + }); + individualParameterNode.set("schema", schema); + } } for (DocletTag p : javaMethod.getTagsByName("param")) { if (p.getValue().contains(annotationName)) { diff --git a/framework/src/onos/tools/test/bin/onos-check-apps b/framework/src/onos/tools/test/bin/onos-check-apps index dfd6b4ef..5d83e416 100755 --- a/framework/src/onos/tools/test/bin/onos-check-apps +++ b/framework/src/onos/tools/test/bin/onos-check-apps @@ -24,7 +24,7 @@ for attempt in {1..3}; do # Check for differences case ${3:-equals} in equals) diff $aux.1 $aux.2;; - includes) [ $(egrep -c -f $aux.2 $aux.1) -eq $(wc -l $aux.2 | sed "s|$aux.2||g") ];; + includes) [ $(egrep -c -f $aux.2 $aux.1) -ge $(wc -l $aux.2 | sed "s|$aux.2||g") ];; excludes) ! egrep -f $aux.2 $aux.1;; esac diff --git a/framework/src/onos/tools/test/scenarios/setup.xml b/framework/src/onos/tools/test/scenarios/setup.xml index c26c0dea..071db8b9 100644 --- a/framework/src/onos/tools/test/scenarios/setup.xml +++ b/framework/src/onos/tools/test/scenarios/setup.xml @@ -40,7 +40,7 @@ <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" requires="~Wait-for-Start-${#},"/> - <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#}" + <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} ${ONOS_APPS} includes" requires="~Wait-for-Start-${#}"/> </parallel> </group> diff --git a/framework/src/onos/tools/test/topos/opticalUtils.py b/framework/src/onos/tools/test/topos/opticalUtils.py index 5d955e51..87903cc5 100644 --- a/framework/src/onos/tools/test/topos/opticalUtils.py +++ b/framework/src/onos/tools/test/topos/opticalUtils.py @@ -58,7 +58,7 @@ import os from time import sleep import urllib2 -from mininet.node import Switch, RemoteController +from mininet.node import Switch, OVSSwitch, RemoteController from mininet.topo import Topo from mininet.util import quietRun from mininet.net import Mininet @@ -356,8 +356,18 @@ class LINCSwitch(OpticalSwitch): return configDict @staticmethod - def bootOE(net): - "Start the LINC optical emulator within a mininet instance" + def bootOE(net, domain=None): + """ + Start the LINC optical emulator within a mininet instance + + This involves 1. converting the information stored in Linc* to configs + for both LINC and the network config system, 2. starting Linc, 3. connecting + cross-connects, and finally pushing the network configs to ONOS. + + Inevitably, there are times when we have OVS switches that should not be + under the control of the controller in charge of the Linc switches. We + hint at these by passing domain information. + """ LINCSwitch.opticalJSON = {} linkConfig = [] devices = [] @@ -365,9 +375,11 @@ class LINCSwitch(OpticalSwitch): LINCSwitch.controllers = net.controllers for switch in net.switches: + if domain and switch not in domain: + continue if isinstance(switch, OpticalSwitch): devices.append(switch.json()) - else: + elif isinstance(switch, OVSSwitch): devices.append(LINCSwitch.switchJSON(switch)) LINCSwitch.opticalJSON[ 'devices' ] = devices @@ -450,18 +462,21 @@ class LINCSwitch(OpticalSwitch): opener = urllib2.build_opener(handler) opener.open(url) urllib2.install_opener(opener) + # focus on just checking the state of devices we're interested in + devlist = map( lambda x: x['uri'], devices ) while True: response = json.load(urllib2.urlopen(url)) devs = response.get('devices') - # Wait for all devices to be registered - if (len(devices) != len(devs)): + # Wait for all devices to be registered. There is a chance that this is only a subgraph. + if (len(devices) > len(devs)): continue # Wait for all devices to available available = True for d in devs: - available &= d['available'] + if d['id'] in devlist: + available &= d['available'] if available: break @@ -615,9 +630,11 @@ class LINCSwitch(OpticalSwitch): if isinstance(link, LINCLink): if link.annotations[ 'optical.type' ] == 'cross-connect': tapCount += 1 - while True: - if str(tapCount) == quietRun('ip addr | grep tap | wc -l', shell=True).strip('\n'): + # tapCount can be less than the actual number of taps if the optical network + # is a subgraph of a larger multidomain network. + tapNum = int(quietRun('ip addr | grep tap | wc -l', shell=True).strip('\n')) + if tapCount <= tapNum: return True if timeout: if time >= TIMEOUT: diff --git a/framework/src/onos/utils/catalyst/pom.xml b/framework/src/onos/utils/catalyst/pom.xml index 26508f7b..bd1d52dd 100644 --- a/framework/src/onos/utils/catalyst/pom.xml +++ b/framework/src/onos/utils/catalyst/pom.xml @@ -47,14 +47,8 @@ <configuration> <instructions> <Export-Package> - io.atomix.catalyst.serializer;version="1.0.0-rc4", - io.atomix.catalyst.buffer;version="1.0.0-rc4", - io.atomix.catalyst.transport;version="1.0.0-rc4", + io.atomix.catalyst.* </Export-Package> - <Private-Package> - io.atomix.catalyst.*;version="1.0.0-rc4" - </Private-Package> - </instructions> </configuration> </plugin> diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java index f9d878ab..d6ddbd56 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java @@ -21,10 +21,10 @@ import java.util.HashMap; /** * HashMap that returns a default value for unmapped keys. */ -public class DefaultHashMap<K, V> extends HashMap<K, V> { +public final class DefaultHashMap<K, V> extends HashMap<K, V> { /** Default value to return when no key binding exists. */ - protected V defaultValue; + protected final V defaultValue; /** * Constructs an empty map with the given default value. diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java index 1b788145..ffefbfd4 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java @@ -40,6 +40,7 @@ import java.util.Collection; import java.util.Dictionary; import java.util.List; import java.util.Random; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -144,6 +145,23 @@ public abstract class Tools { } /** + * Returns the specified set if the set is not null and not empty; + * otherwise throws a not found exception. + * + * @param item set to check + * @param message not found message + * @param <T> Set item type + * @return item if not null and not empty + * @throws org.onlab.util.ItemNotFoundException if set is null or empty + */ + public static <T> Set<T> emptyIsNotFound(Set<T> item, String message) { + if (item == null || item.isEmpty()) { + throw new ItemNotFoundException(message); + } + return item; + } + + /** * Returns the specified item if that item is not null; otherwise throws * bad argument exception. * diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java index f49202dd..0d9d94d3 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java @@ -29,6 +29,11 @@ import static com.google.common.base.Strings.isNullOrEmpty; public abstract class AbstractMapper<E extends Throwable> implements ExceptionMapper<E> { /** + * Holds the current exception for use in subclasses. + */ + protected Throwable error; + + /** * Returns the response status to be given when the exception occurs. * * @return response status @@ -37,6 +42,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa @Override public Response toResponse(E exception) { + error = exception; return response(responseStatus(), exception).build(); } @@ -50,6 +56,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa */ protected Response.ResponseBuilder response(Response.Status status, Throwable exception) { + error = exception; ObjectMapper mapper = new ObjectMapper(); String message = messageFrom(exception); ObjectNode result = mapper.createObjectNode() diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java index 5a9050d0..778750e6 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java @@ -18,13 +18,19 @@ package org.onosproject.rest.exceptions; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; +import org.slf4j.Logger; + +import static org.slf4j.LoggerFactory.getLogger; + /** * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. */ @Provider public class ServerErrorMapper extends AbstractMapper<RuntimeException> { + private static final Logger log = getLogger(ServerErrorMapper.class); @Override protected Response.Status responseStatus() { + log.warn("Unhandled REST exception", error); return Response.Status.INTERNAL_SERVER_ERROR; } } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java index 636fc333..b38633bf 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java @@ -44,6 +44,7 @@ public class ApplicationsWebResource extends AbstractWebResource { * Get all installed applications. * Returns array of all installed applications. * + * @rsModel Applications * @return 200 OK */ @GET @@ -56,7 +57,7 @@ public class ApplicationsWebResource extends AbstractWebResource { /** * Get application details. * Returns details of the specified application. - * + * @rsModel Application * @param name application name * @return 200 OK; 404; 401 */ diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java index 312f6e35..16a4dc7f 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java @@ -49,6 +49,7 @@ public class ClusterWebResource extends AbstractWebResource { * Returns array of all cluster nodes. * * @return 200 OK + * @rsModel Cluster */ @GET public Response getClusterNodes() { @@ -62,6 +63,7 @@ public class ClusterWebResource extends AbstractWebResource { * * @param id cluster node identifier * @return 200 OK + * @rsModel ClusterNode */ @GET @Path("{id}") @@ -78,6 +80,7 @@ public class ClusterWebResource extends AbstractWebResource { * @param config cluster definition * @return 200 OK * @throws IOException to signify bad request + * @rsModel ClusterPost */ @POST @Path("configuration") diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java index 05756e5a..23ca46e7 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java @@ -46,6 +46,7 @@ public class DevicesWebResource extends AbstractWebResource { * Returns array of all discovered infrastructure devices. * * @return 200 OK + * @rsModel DevicesGet */ @GET public Response getDevices() { @@ -59,6 +60,7 @@ public class DevicesWebResource extends AbstractWebResource { * * @param id device identifier * @return 200 OK + * @rsModel DeviceGet */ @GET @Path("{id}") @@ -89,6 +91,7 @@ public class DevicesWebResource extends AbstractWebResource { * Get ports of infrastructure device. * Returns details of the specified infrastructure device. * + * @rsModel DeviceGetPorts * @param id device identifier * @return 200 OK */ diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java index 0e88e34e..252a3ba7 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java @@ -58,7 +58,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get all flow entries. Returns array of all flow rules in the system. - * + * @rsModel Flows * @return array of all the intents in the system */ @GET @@ -80,7 +80,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get flow entries of a device. Returns array of all flow rules for the * specified device. - * + * @rsModel Flows * @param deviceId device identifier * @return flow data as an array */ @@ -103,7 +103,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get flow rule. Returns the flow entry specified by the device id and * flow rule id. - * + * @rsModel Flows * @param deviceId device identifier * @param flowId flow rule identifier * @return flow data as an array @@ -130,7 +130,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Create new flow rule. Creates and installs a new flow rule for the * specified device. - * + * @rsModel FlowsPost * @param deviceId device identifier * @param stream flow rule JSON * @return status of the request - CREATED if the JSON is correct, diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java index b89f5add..455e4929 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java @@ -70,6 +70,7 @@ public class HostsWebResource extends AbstractWebResource { * Returns array of all known end-station hosts. * * @return 200 OK + * @rsModel Hosts */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -85,6 +86,7 @@ public class HostsWebResource extends AbstractWebResource { * * @param id host identifier * @return 200 OK + * @rsModel Host */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -103,6 +105,7 @@ public class HostsWebResource extends AbstractWebResource { * @param mac host MAC address * @param vlan host VLAN identifier * @return 200 OK + * @rsModel Host */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -122,6 +125,7 @@ public class HostsWebResource extends AbstractWebResource { * @param stream input JSON * @return status of the request - CREATED if the JSON is correct, * BAD_REQUEST if the JSON is invalid + * @rsModel HostPut */ @POST @Consumes(MediaType.APPLICATION_JSON) @@ -195,6 +199,7 @@ public class HostsWebResource extends AbstractWebResource { while (ipStrings.hasNext()) { ips.add(IpAddress.valueOf(ipStrings.next().asText())); } + //TODO remove elements from json node after reading them SparseAnnotations annotations = annotations(node); // Update host inventory diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java index c6270199..e36ea8af 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java @@ -44,7 +44,7 @@ public class LinksWebResource extends AbstractWebResource { /** * Get infrastructure links. * Returns array of all links, or links for the specified device or port. - * + * @rsModel LinksGet * @param deviceId (optional) device identifier * @param port (optional) port number * @param direction (optional) direction qualifier diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java index 808fcc16..69c0b6a3 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java @@ -15,10 +15,9 @@ */ package org.onosproject.rest.resources; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.config.SubjectFactory; -import org.onosproject.rest.AbstractWebResource; +import java.io.IOException; +import java.io.InputStream; +import java.util.Set; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -29,8 +28,16 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; + +import org.onosproject.net.config.Config; +import org.onosproject.net.config.NetworkConfigService; +import org.onosproject.net.config.SubjectFactory; +import org.onosproject.rest.AbstractWebResource; + +import com.fasterxml.jackson.databind.node.ObjectNode; + +import static org.onlab.util.Tools.emptyIsNotFound; +import static org.onlab.util.Tools.nullIsNotFound; /** * Manage network configurations. @@ -38,9 +45,30 @@ import java.io.InputStream; @Path("network/configuration") public class NetworkConfigWebResource extends AbstractWebResource { + + private String subjectClassNotFoundErrorString(String subjectClassKey) { + return "Config for '" + subjectClassKey + "' not found"; + } + + private String subjectNotFoundErrorString(String subjectClassKey, + String subjectKey) { + return "Config for '" + + subjectClassKey + "/" + subjectKey + + "' not found"; + } + + private String configKeyNotFoundErrorString(String subjectClassKey, + String subjectKey, + String configKey) { + return "Config for '" + + subjectClassKey + "/" + subjectKey + "/" + configKey + + "' not found"; + } + /** * Get entire network configuration base. * + * @rsModel NetCfgGet * @return network configuration JSON */ @GET @@ -70,7 +98,9 @@ public class NetworkConfigWebResource extends AbstractWebResource { public Response download(@PathParam("subjectClassKey") String subjectClassKey) { NetworkConfigService service = get(NetworkConfigService.class); ObjectNode root = mapper().createObjectNode(); - SubjectFactory subjectFactory = service.getSubjectFactory(subjectClassKey); + SubjectFactory subjectFactory = + nullIsNotFound(service.getSubjectFactory(subjectClassKey), + subjectClassNotFoundErrorString(subjectClassKey)); produceJson(service, root, subjectFactory, subjectFactory.subjectClass()); return ok(root).build(); } @@ -90,8 +120,12 @@ public class NetworkConfigWebResource extends AbstractWebResource { @PathParam("subjectKey") String subjectKey) { NetworkConfigService service = get(NetworkConfigService.class); ObjectNode root = mapper().createObjectNode(); - SubjectFactory subjectFactory = service.getSubjectFactory(subjectClassKey); - produceSubjectJson(service, root, subjectFactory.createSubject(subjectKey)); + SubjectFactory subjectFactory = + nullIsNotFound(service.getSubjectFactory(subjectClassKey), + subjectClassNotFoundErrorString(subjectClassKey)); + produceSubjectJson(service, root, subjectFactory.createSubject(subjectKey), + true, + subjectNotFoundErrorString(subjectClassKey, subjectKey)); return ok(root).build(); } @@ -111,26 +145,47 @@ public class NetworkConfigWebResource extends AbstractWebResource { @PathParam("subjectKey") String subjectKey, @PathParam("configKey") String configKey) { NetworkConfigService service = get(NetworkConfigService.class); - return ok(service.getConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey), - service.getConfigClass(subjectClassKey, configKey)).node()).build(); + + Object subject = + nullIsNotFound(service.getSubjectFactory(subjectClassKey) + .createSubject(subjectKey), + subjectNotFoundErrorString(subjectClassKey, subjectKey)); + + Class configClass = + nullIsNotFound(service.getConfigClass(subjectClassKey, configKey), + configKeyNotFoundErrorString(subjectClassKey, subjectKey, configKey)); + Config config = + nullIsNotFound(service.getConfig(subject, configClass), + configKeyNotFoundErrorString(subjectClassKey, + subjectKey, + configKey)); + return ok(config.node()).build(); } @SuppressWarnings("unchecked") private void produceJson(NetworkConfigService service, ObjectNode node, SubjectFactory subjectFactory, Class subjectClass) { service.getSubjects(subjectClass).forEach(s -> - produceSubjectJson(service, newObject(node, subjectFactory.subjectKey(s)), s)); + produceSubjectJson(service, newObject(node, subjectFactory.subjectKey(s)), s, false, "")); } private void produceSubjectJson(NetworkConfigService service, ObjectNode node, - Object subject) { - service.getConfigs(subject).forEach(c -> node.set(c.key(), c.node())); + Object subject, + boolean emptyIsError, + String emptyErrorMessage) { + Set<? extends Config<Object>> configs = service.getConfigs(subject); + if (emptyIsError) { + // caller wants an empty set to be a 404 + configs = emptyIsNotFound(configs, emptyErrorMessage); + } + configs.forEach(c -> node.set(c.key(), c.node())); } /** * Upload bulk network configuration. * + * @rsModel NetCfgGet * @param request network configuration JSON rooted at the top node * @return empty response * @throws IOException if unable to parse the request @@ -253,17 +308,15 @@ public class NetworkConfigWebResource extends AbstractWebResource { * Clear all network configurations for a subject class. * * @param subjectClassKey subject class key - * @return empty response */ @DELETE @Path("{subjectClassKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey) { + public void delete(@PathParam("subjectClassKey") String subjectClassKey) { NetworkConfigService service = get(NetworkConfigService.class); - service.getSubjects(service.getSubjectFactory(subjectClassKey).getClass()) + service.getSubjects(service.getSubjectFactory(subjectClassKey).subjectClass()) .forEach(subject -> service.getConfigs(subject) .forEach(config -> service.removeConfig(subject, config.getClass()))); - return Response.ok().build(); } /** @@ -271,17 +324,15 @@ public class NetworkConfigWebResource extends AbstractWebResource { * * @param subjectClassKey subjectKey class key * @param subjectKey subjectKey key - * @return empty response */ @DELETE @Path("{subjectClassKey}/{subjectKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey, + public void delete(@PathParam("subjectClassKey") String subjectClassKey, @PathParam("subjectKey") String subjectKey) { NetworkConfigService service = get(NetworkConfigService.class); Object s = service.getSubjectFactory(subjectClassKey).createSubject(subjectKey); service.getConfigs(s).forEach(c -> service.removeConfig(s, c.getClass())); - return Response.ok().build(); } /** @@ -290,18 +341,16 @@ public class NetworkConfigWebResource extends AbstractWebResource { * @param subjectClassKey subjectKey class key * @param subjectKey subjectKey key * @param configKey configuration class key - * @return empty response */ @DELETE @Path("{subjectClassKey}/{subjectKey}/{configKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey, + public void delete(@PathParam("subjectClassKey") String subjectClassKey, @PathParam("subjectKey") String subjectKey, @PathParam("configKey") String configKey) { NetworkConfigService service = get(NetworkConfigService.class); service.removeConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey), service.getConfigClass(subjectClassKey, configKey)); - return Response.ok().build(); } } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java index 9714690c..c14b4ec2 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java @@ -60,7 +60,7 @@ public class PathsWebResource extends AbstractWebResource { /** * Get all shortest paths between any two hosts or devices. * Returns array of all shortest paths between any two elements. - * + * @rsModel Paths * @param src source identifier * @param dst destination identifier * @return path data @@ -79,7 +79,7 @@ public class PathsWebResource extends AbstractWebResource { /** * Get all shortest disjoint paths between any two hosts or devices. * Returns array of all shortest disjoint paths between any two elements. - * + * @rsModel Paths * @param src source identifier * @param dst destination identifier * @return path data diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java index c91cb6d0..7a452044 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java @@ -59,7 +59,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get load statistics for all links or for a specific link. - * + * @rsModel StatisticsFlowsLink * @param deviceId (optional) device ID for a specific link * @param port (optional) port number for a specified link * @return JSON encoded array lof Load objects @@ -101,7 +101,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get table statistics for all tables of all devices. - * + * @rsModel StatisticsFlowsTables * @return JSON encoded array of table statistics */ @GET @@ -111,11 +111,11 @@ public class StatisticsWebResource extends AbstractWebResource { final FlowRuleService service = get(FlowRuleService.class); final Iterable<Device> devices = get(DeviceService.class).getDevices(); final ObjectNode root = mapper().createObjectNode(); - final ArrayNode rootArrayNode = root.putArray("device-table-statistics"); + final ArrayNode rootArrayNode = root.putArray("statistics"); for (final Device device : devices) { final ObjectNode deviceStatsNode = mapper().createObjectNode(); deviceStatsNode.put("device", device.id().toString()); - final ArrayNode statisticsNode = deviceStatsNode.putArray("table-statistics"); + final ArrayNode statisticsNode = deviceStatsNode.putArray("table"); final Iterable<TableStatisticsEntry> tableStatsEntries = service.getFlowTableStatistics(device.id()); if (tableStatsEntries != null) { for (final TableStatisticsEntry entry : tableStatsEntries) { @@ -130,7 +130,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get table statistics for all tables of a specified device. - * + * @rsModel StatisticsFlowsTables * @param deviceId device ID * @return JSON encoded array of table statistics */ @@ -142,11 +142,11 @@ public class StatisticsWebResource extends AbstractWebResource { final Iterable<TableStatisticsEntry> tableStatisticsEntries = service.getFlowTableStatistics(DeviceId.deviceId(deviceId)); final ObjectNode root = mapper().createObjectNode(); - final ArrayNode rootArrayNode = root.putArray("table-statistics"); + final ArrayNode rootArrayNode = root.putArray("statistics"); final ObjectNode deviceStatsNode = mapper().createObjectNode(); deviceStatsNode.put("device", deviceId); - final ArrayNode statisticsNode = deviceStatsNode.putArray("table-statistics"); + final ArrayNode statisticsNode = deviceStatsNode.putArray("table"); for (final TableStatisticsEntry entry : tableStatisticsEntries) { statisticsNode.add(codec(TableStatisticsEntry.class).encode(entry, this)); } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java index f6ae8253..d51bd5a0 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java @@ -50,6 +50,7 @@ public class TopologyWebResource extends AbstractWebResource { * Get overview of current topology. * * @return topology overview + * @rsModel Topology */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -63,6 +64,7 @@ public class TopologyWebResource extends AbstractWebResource { * Get overview of topology SCCs. * * @return topology clusters overview + * @rsModel TopologyClusters */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -80,6 +82,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster details + * @rsModel TopologyCluster */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -103,6 +106,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster devices + * @rsModel TopologyClustersDevices */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -126,6 +130,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster links + * @rsModel LinksGet */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -136,7 +141,7 @@ public class TopologyWebResource extends AbstractWebResource { List<Link> links = Lists.newArrayList(get(TopologyService.class) - .getClusterLinks(topology, cluster)); + .getClusterLinks(topology, cluster)); return ok(encodeArray(Link.class, "links", links)).build(); } @@ -174,7 +179,8 @@ public class TopologyWebResource extends AbstractWebResource { * * @param connectPointString deviceid:portnumber * @return JSON representation of true if the connect point is broadcast, - * false otherwise + * false otherwise + * @rsModel TopologyBroadcast */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -188,8 +194,8 @@ public class TopologyWebResource extends AbstractWebResource { boolean isBroadcast = get(TopologyService.class).isBroadcastPoint(topology, connectPoint); return ok(mapper() - .createObjectNode() - .put("broadcast", isBroadcast)) + .createObjectNode() + .put("broadcast", isBroadcast)) .build(); } @@ -198,7 +204,8 @@ public class TopologyWebResource extends AbstractWebResource { * * @param connectPointString deviceid:portnumber * @return JSON representation of true if the connect point is broadcast, - * false otherwise + * false otherwise + * @rsModel TopologyInfrastructure */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -212,8 +219,8 @@ public class TopologyWebResource extends AbstractWebResource { boolean isInfrastructure = get(TopologyService.class).isInfrastructure(topology, connectPoint); return ok(mapper() - .createObjectNode() - .put("infrastructure", isInfrastructure)) + .createObjectNode() + .put("infrastructure", isInfrastructure)) .build(); } diff --git a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java index 8da81016..f35b6c03 100644 --- a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java +++ b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java @@ -291,8 +291,8 @@ public abstract class TopologyViewMessageHandlerBase extends UiMessageHandler { // Produces a host event message to the client. protected ObjectNode hostMessage(HostEvent event) { Host host = event.subject(); + Host prevHost = event.prevSubject(); String hostType = host.annotations().value(AnnotationKeys.TYPE); - HostLocation prevLoc = event.prevLocation(); ObjectNode payload = objectNode() .put("id", host.id().toString()) @@ -300,8 +300,8 @@ public abstract class TopologyViewMessageHandlerBase extends UiMessageHandler { .put("ingress", compactLinkString(edgeLink(host, true))) .put("egress", compactLinkString(edgeLink(host, false))); payload.set("cp", hostConnect(host.location())); - if (prevLoc != null) { - payload.set("prevCp", hostConnect(event.prevLocation())); + if (prevHost != null && prevHost.location() != null) { + payload.set("prevCp", hostConnect(prevHost.location())); } payload.set("labels", labels(ip(host.ipAddresses()), host.mac().toString())); diff --git a/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js b/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js index 12536361..cc26360f 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js @@ -51,6 +51,7 @@ devIcon_SWITCH: 'switch', devIcon_ROADM: 'roadm', + deviceTable: 'switch', flowTable: 'flowTable', portTable: 'portTable', groupTable: 'groupTable', diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css index e0e9cf57..8d8a582b 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css @@ -23,7 +23,20 @@ } #ov-device div.ctrl-btns { - width: 240px; +} + +.light #ov-device .current-view use { + fill: white; +} +.dark #ov-device .current-view use { + fill: #304860; +} + +.light #ov-device .current-view rect { + fill: deepskyblue; +} +.dark #ov-device .current-view rect { + fill: #eee; } /* More in generic panel.css */ diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html index 63a04db8..6f1813a0 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html @@ -9,6 +9,9 @@ ng-click="toggleRefresh()"></div> <div class="separator"></div> + <div ng-class="{'current-view': !!selId}" + icon icon-id="deviceTable" icon-size="36"></div> + <div ng-class="{active: !!selId}" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css index 4aa96210..30226222 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css @@ -23,7 +23,6 @@ } #ov-flow div.ctrl-btns { - width: 240px; } .light #ov-flow .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html index 5fce98cf..8fc1839e 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html @@ -13,6 +13,11 @@ <div class="separator"></div> + <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + <div class="current-view" icon icon-id="flowTable" icon-size="36"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js index 15678d5e..7bb988a2 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.portTip = 'Show port view for this device'; $scope.groupTip = 'Show group view for this device'; diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css index 42f1c31d..6773aa83 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css @@ -23,7 +23,6 @@ } #ov-group div.ctrl-btns { - width: 240px; } .light #ov-group .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html index b963f469..93484dc8 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html @@ -30,6 +30,11 @@ <div class="separator"></div> <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + + <div class="active" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" ng-click="nav('flow')"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js index 2510190b..2cb1f0c4 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.flowTip = 'Show flow view for this device'; $scope.portTip = 'Show port view for this device'; diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css index 7fcfee3f..2aaacfce 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css @@ -23,7 +23,6 @@ } #ov-port div.ctrl-btns { - width: 240px; } .light #ov-port .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html index 8eecb9d6..fa79e5ea 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html @@ -30,6 +30,11 @@ <div class="separator"></div> <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + + <div class="active" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" ng-click="nav('flow')"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js index a157c5be..1e8585dd 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.flowTip = 'Show flow view for this device'; $scope.groupTip = 'Show group view for this device'; |