PCEP protocol message update
Change-Id: Icdea6c105553cd3dec1cacea6e2951f9e422b676
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java
index e2b4a6b..464c018 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java
@@ -30,7 +30,8 @@
*/
public class SrEroSubObject implements PcepValueType {
/*
- SR-ERO subobject: (draft-ietf-pce-segment-routing-00)
+ SR-ERO subobject: (draft-ietf-pce-segment-routing-06)
+
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -40,7 +41,8 @@
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// NAI (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
+ When M bit is reset, SID is 32 bit Index.
+ When M bit is set, SID is 20 bit Label.
NAI
@@ -98,7 +100,8 @@
private final boolean bMFlag;
private final byte st;
- private final int sID;
+ //If m bit is set SID will store label else store 32 bit value
+ private final int sid;
private final PcepNai nai;
/**
@@ -109,17 +112,17 @@
* @param bSFlag S flag
* @param bCFlag C flag
* @param bMFlag M flag
- * @param sID segment identifier value
+ * @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,
+ 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.sid = sid;
this.nai = nai;
}
@@ -131,18 +134,19 @@
* @param bSFlag S flag
* @param bCFlag C flag
* @param bMFlag M flag
- * @param sID segment identifier value
+ * @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,
+ 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);
+ return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
}
/**
* Returns SID type.
- * @return st sid type
+ *
+ * @return st SID type
*/
public byte getSt() {
return st;
@@ -150,6 +154,7 @@
/**
* Returns bFFlag.
+ *
* @return bFFlag
*/
public boolean getFFlag() {
@@ -158,6 +163,7 @@
/**
* Returns bSFlag.
+ *
* @return bSFlag
*/
public boolean getSFlag() {
@@ -166,6 +172,7 @@
/**
* Returns bCFlag.
+ *
* @return bCFlag
*/
public boolean getCFlag() {
@@ -174,6 +181,7 @@
/**
* Returns bMFlag.
+ *
* @return bMFlag
*/
public boolean getMFlag() {
@@ -182,10 +190,11 @@
/**
* Returns sID.
- * @return sID
+ *
+ * @return sid
*/
public int getSid() {
- return sID;
+ return sid;
}
/**
@@ -213,7 +222,7 @@
@Override
public int hashCode() {
- return Objects.hash(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai);
+ return Objects.hash(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
}
@Override
@@ -225,7 +234,7 @@
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.bMFlag, other.bMFlag) && Objects.equals(this.sid, other.sid)
&& Objects.equals(this.nai, other.nai);
}
return false;
@@ -254,7 +263,12 @@
short tempST = (short) (st << SHIFT_ST);
temp = (short) (temp | tempST);
c.writeShort(temp);
- c.writeInt(sID);
+ if (bMFlag) {
+ int tempSid = (int) sid << 12;
+ c.writeInt(tempSid);
+ } else {
+ c.writeInt(sid);
+ }
nai.write(c);
return c.writerIndex() - iLenStartIndex;
@@ -281,21 +295,24 @@
st = (byte) (temp >> SHIFT_ST);
- int sID = c.readInt();
+ int sid = c.readInt();
+ if (bMFlag) {
+ sid = sid >> 12;
+ }
switch (st) {
- case 0x01:
+ case PcepNaiIpv4NodeId.ST_TYPE:
nai = PcepNaiIpv4NodeId.read(c);
break;
- case 0x02:
+ case PcepNaiIpv6NodeId.ST_TYPE:
nai = PcepNaiIpv6NodeId.read(c);
break;
- case 0x03:
+ case PcepNaiIpv4Adjacency.ST_TYPE:
nai = PcepNaiIpv4Adjacency.read(c);
break;
- case 0x04:
+ case PcepNaiIpv6Adjacency.ST_TYPE:
nai = PcepNaiIpv6Adjacency.read(c);
break;
- case 0x05:
+ case PcepNaiUnnumberedAdjacencyIpv4.ST_TYPE:
nai = PcepNaiUnnumberedAdjacencyIpv4.read(c);
break;
default:
@@ -303,7 +320,7 @@
break;
}
- return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai);
+ return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
}
@Override
@@ -316,7 +333,7 @@
.add("bSFlag", bSFlag)
.add("bCFlag", bCFlag)
.add("bMFlag", bMFlag)
- .add("sID", sID)
+ .add("sid", sid)
.add("nAI", nai)
.toString();
}