From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- .../pcepio/protocol/ver1/PcepRroObjectVer1.java | 345 --------------------- 1 file changed, 345 deletions(-) delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java (limited to 'framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java') diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java deleted file mode 100644 index 4df42e05..00000000 --- a/framework/src/onos/protocols/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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList 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 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 parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList 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(); - } -} -- cgit 1.2.3-korg