[ONOS-4165] Add C flag to LSP object
Change-Id: I92047990d5d7ba460d215490e3e905eb14405d99
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java
index af435a9..f281a1c 100755
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java
@@ -57,6 +57,20 @@
void setOFlag(byte value);
/**
+ * Returns C flag in LSP Object.
+ *
+ * @return C flag in LSP Object
+ */
+ boolean getCFlag();
+
+ /**
+ * Sets C flag with specified value.
+ *
+ * @param value C flag
+ */
+ void setCFlag(boolean value);
+
+ /**
* Returns A flag in LSP Object.
*
* @return A flag in LSP Object
@@ -178,6 +192,21 @@
Builder setPlspId(int value);
/**
+ * Returns C flag in LSP Object.
+ *
+ * @return C flag in LSP Object
+ */
+ boolean getCFlag();
+
+ /**
+ * Sets C flag with specific value and return its builder.
+ *
+ * @param value C flag
+ * @return Builder by setting C flag
+ */
+ Builder setCFlag(boolean value);
+
+ /**
* Returns O flag in LSP Object.
*
* @return O flag in LSP Object
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java
index a2a4d72..b7d9666 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java
@@ -48,7 +48,7 @@
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Object-Class | OT |Res|P|I| Object Length (bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PLSP-ID | Flag | O|A|R|S|D|
+ | PLSP-ID | Flag C| O|A|R|S|D|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// TLVs //
| |
@@ -71,13 +71,16 @@
public static final boolean DEFAULT_RFLAG = false;
public static final boolean DEFAULT_SFLAG = false;
public static final boolean DEFAULT_DFLAG = false;
+ public static final boolean DEFAULT_CFLAG = false;
public static final int OBJECT_HEADER_LENGTH = 4;
public static final int PLSPID_SHIFT_VALUE = 12;
+ public static final int CFLAG_SHIFT_VALUE = 7;
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 CFLAG_TEMP_SHIFT_VALUE = 0x80;
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;
@@ -98,6 +101,7 @@
private boolean bRFlag;
private boolean bSFlag;
private boolean bDFlag;
+ private boolean bCFlag;
// Optional TLV
private LinkedList<PcepValueType> llOptionalTlv;
@@ -115,7 +119,7 @@
* @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) {
+ boolean bSFlag, boolean bDFlag, boolean bCFlag, LinkedList<PcepValueType> llOptionalTlv) {
this.lspObjHeader = lspObjHeader;
this.iPlspId = iPlspId;
@@ -124,6 +128,7 @@
this.bRFlag = bRFlag;
this.bSFlag = bSFlag;
this.bDFlag = bDFlag;
+ this.bCFlag = bCFlag;
this.llOptionalTlv = llOptionalTlv;
}
@@ -142,6 +147,11 @@
}
@Override
+ public void setCFlag(boolean bCFlag) {
+ this.bCFlag = bCFlag;
+ }
+
+ @Override
public void setOFlag(byte yOFlag) {
this.yOFlag = yOFlag;
}
@@ -181,6 +191,11 @@
}
@Override
+ public boolean getCFlag() {
+ return this.bCFlag;
+ }
+
+ @Override
public byte getOFlag() {
return this.yOFlag;
}
@@ -232,6 +247,7 @@
boolean bRFlag;
boolean bSFlag;
boolean bDFlag;
+ boolean bCFlag;
// Optional TLV
LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
@@ -246,6 +262,7 @@
Integer iTemp = tempCb.readInt();
iPlspId = (iTemp & PLSPID_TEMP_SHIFT_VALUE) >> PLSPID_SHIFT_VALUE;
+ bCFlag = ((iTemp & CFLAG_TEMP_SHIFT_VALUE) >> CFLAG_SHIFT_VALUE) > 0;
Integer iX = (iTemp & OFLAG_TEMP_SHIFT_VALUE) >> OFLAG_SHIFT_VALUE;
yOFlag = iX.byteValue();
iX = (iTemp & AFLAG_TEMP_SHIFT_VALUE) >> AFLAG_SHIFT_VALUE;
@@ -260,7 +277,8 @@
// parse optional TLV
llOptionalTlv = parseOptionalTlv(tempCb);
- return new PcepLspObjectVer1(lspObjHeader, iPlspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv);
+ return new PcepLspObjectVer1(lspObjHeader, iPlspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, bCFlag,
+ llOptionalTlv);
}
@Override
@@ -410,6 +428,7 @@
private boolean bIsAFlagSet = false;
private boolean bIsDFlagSet = false;
private boolean bIsSFlagSet = false;
+ private boolean bIsCFlagSet = false;
private PcepObjectHeader lspObjHeader;
private byte yOFlag;
@@ -417,6 +436,7 @@
private boolean bDFlag;
private boolean bSFlag;
private boolean bRFlag;
+ private boolean bCFlag;
LinkedList<PcepValueType> llOptionalTlv = null;
private int plspId;
@@ -437,6 +457,7 @@
boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG;
boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_SFLAG;
boolean bDFlag = this.bIsDFlagSet ? this.bDFlag : DEFAULT_DFLAG;
+ boolean bCFlag = this.bIsCFlagSet ? this.bCFlag : DEFAULT_CFLAG;
if (bIsPFlagSet) {
lspObjHeader.setPFlag(bPFlag);
@@ -446,7 +467,8 @@
lspObjHeader.setIFlag(bIFlag);
}
- return new PcepLspObjectVer1(lspObjHeader, plspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv);
+ return new PcepLspObjectVer1(lspObjHeader, plspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, bCFlag,
+ llOptionalTlv);
}
@Override
@@ -474,6 +496,18 @@
}
@Override
+ public boolean getCFlag() {
+ return this.bCFlag;
+ }
+
+ @Override
+ public Builder setCFlag(boolean value) {
+ this.bCFlag = value;
+ this.bIsCFlagSet = true;
+ return this;
+ }
+
+ @Override
public byte getOFlag() {
return this.yOFlag;
}
@@ -564,6 +598,7 @@
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("PlspIDValue", iPlspId)
+ .add("CFlag", bCFlag)
.add("OFlag", yOFlag)
.add("AFlag", bAFlag)
.add("RFlag", bRFlag)