[ONOS-3857] BGP Update message builder.
Change-Id: I02d750f662602fc51b090e6beb89d73d5eb36436
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
index 359eec2..2cc9f7a 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
@@ -31,6 +31,7 @@
import org.onosproject.bgpio.types.FourOctetAsNumCapabilityTlv;
import org.onosproject.bgpio.types.MultiProtocolExtnCapabilityTlv;
import org.onosproject.bgpio.util.Validation;
+import org.onosproject.bgpio.util.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -293,6 +294,8 @@
private int bgpId;
private boolean isLargeAsCapabilityTlvSet = false;
private boolean isLsCapabilityTlvSet = false;
+ private boolean isFlowSpecCapabilityTlvSet = false;
+ private boolean isVpnFlowSpecCapabilityTlvSet = false;
LinkedList<BgpValueType> capabilityTlv = new LinkedList<>();
@@ -322,6 +325,20 @@
this.capabilityTlv.add(tlv);
}
+ if (this.isFlowSpecCapabilityTlvSet) {
+ BgpValueType tlv;
+ tlv = new MultiProtocolExtnCapabilityTlv(Constants.AFI_FLOWSPEC_VALUE,
+ RES, Constants.SAFI_FLOWSPEC_VALUE);
+ this.capabilityTlv.add(tlv);
+ }
+
+ if (this.isVpnFlowSpecCapabilityTlvSet) {
+ BgpValueType tlv;
+ tlv = new MultiProtocolExtnCapabilityTlv(Constants.AFI_FLOWSPEC_VALUE,
+ RES, Constants.VPN_SAFI_FLOWSPEC_VALUE);
+ this.capabilityTlv.add(tlv);
+ }
+
return new BgpOpenMsgVer4(bgpMsgHeader, PACKET_VERSION, this.asNumber, holdTime, this.bgpId,
this.capabilityTlv);
}
@@ -370,6 +387,18 @@
this.isLsCapabilityTlvSet = isLsCapabilitySet;
return this;
}
+
+ @Override
+ public Builder setFlowSpecCapabilityTlv(boolean isFlowSpecCapabilitySet) {
+ this.isFlowSpecCapabilityTlvSet = isFlowSpecCapabilitySet;
+ return this;
+ }
+
+ @Override
+ public Builder setVpnFlowSpecCapabilityTlv(boolean isVpnFlowSpecCapabilitySet) {
+ this.isVpnFlowSpecCapabilityTlvSet = isVpnFlowSpecCapabilitySet;
+ return this;
+ }
}
@Override