BGP encode multiple flow spec action issue fix.
Change-Id: Ieb173be9edb86bc717bfe1e55271873645e4a5b1
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
index ce7a33c..b7480b0 100644
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
@@ -252,8 +252,20 @@
if (operType == FlowSpecOperation.ADD) {
if (flowSpec.routeDistinguisher() == null) {
+ if (flowSpecRibOut.flowSpecTree().containsKey(prefix)) {
+ sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE,
+ flowSpecRibOut.flowSpecTree().get(prefix));
+ }
flowSpecRibOut.add(prefix, flowSpec);
} else {
+ if (vpnFlowSpecRibOut.vpnFlowSpecTree().containsKey(flowSpec.routeDistinguisher())) {
+ Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> fsTree;
+ fsTree = vpnFlowSpecRibOut.vpnFlowSpecTree().get(flowSpec.routeDistinguisher());
+ if (fsTree.containsKey(prefix)) {
+ sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE,
+ fsTree.get(prefix));
+ }
+ }
vpnFlowSpecRibOut.add(flowSpec.routeDistinguisher(), prefix, flowSpec);
}
} else if (operType == FlowSpecOperation.DELETE) {