Shashikanth VH
Committed by ShashikanthVH-Huawei

BGP flow spec RIBin.

Change-Id: I4909bb6e579311a74e25cb44172a2a010faa4e85
...@@ -124,6 +124,14 @@ public interface BgpPeer { ...@@ -124,6 +124,14 @@ public interface BgpPeer {
124 void buildAdjRibIn(List<BgpValueType> pathAttr) throws BgpParseException; 124 void buildAdjRibIn(List<BgpValueType> pathAttr) throws BgpParseException;
125 125
126 /** 126 /**
127 + * Update flow specification RIB for each peer.
128 + *
129 + * @param pathAttr list of Bgp path attributes
130 + * @throws BgpParseException while building flow spec RIB
131 + */
132 + void buildFlowSpecRib(List<BgpValueType> pathAttr) throws BgpParseException;
133 +
134 + /**
127 * Return the BGP session info. 135 * Return the BGP session info.
128 * 136 *
129 * @return sessionInfo bgp session info 137 * @return sessionInfo bgp session info
......
...@@ -40,6 +40,14 @@ public class BgpFlowSpecDetails { ...@@ -40,6 +40,14 @@ public class BgpFlowSpecDetails {
40 } 40 }
41 41
42 /** 42 /**
43 + * Flow specification details object constructor.
44 + *
45 + */
46 + public BgpFlowSpecDetails() {
47 +
48 + }
49 +
50 + /**
43 * Returns flow specification action tlv. 51 * Returns flow specification action tlv.
44 * 52 *
45 * @return flow specification action tlv 53 * @return flow specification action tlv
...@@ -84,6 +92,15 @@ public class BgpFlowSpecDetails { ...@@ -84,6 +92,15 @@ public class BgpFlowSpecDetails {
84 return this.flowSpecComponents; 92 return this.flowSpecComponents;
85 } 93 }
86 94
95 + /**
96 + * Sets flow specification components.
97 + *
98 + * @param flowSpecComponents flow specification components
99 + */
100 + public void setFlowSpecComponents(List<BgpValueType> flowSpecComponents) {
101 + this.flowSpecComponents = flowSpecComponents;
102 + }
103 +
87 @Override 104 @Override
88 public int hashCode() { 105 public int hashCode() {
89 return Objects.hash(flowSpecComponents); 106 return Objects.hash(flowSpecComponents);
......
...@@ -41,6 +41,14 @@ public class BgpFlowSpecPrefix implements Comparable<Object> { ...@@ -41,6 +41,14 @@ public class BgpFlowSpecPrefix implements Comparable<Object> {
41 * @param sourcePrefix source prefix 41 * @param sourcePrefix source prefix
42 */ 42 */
43 public BgpFlowSpecPrefix(IpPrefix destinationPrefix, IpPrefix sourcePrefix) { 43 public BgpFlowSpecPrefix(IpPrefix destinationPrefix, IpPrefix sourcePrefix) {
44 + if (destinationPrefix == null) {
45 + destinationPrefix = IpPrefix.valueOf(0, 0);
46 + }
47 +
48 + if (sourcePrefix == null) {
49 + sourcePrefix = IpPrefix.valueOf(0, 0);
50 + }
51 +
44 this.destinationPrefix = destinationPrefix; 52 this.destinationPrefix = destinationPrefix;
45 this.sourcePrefix = sourcePrefix; 53 this.sourcePrefix = sourcePrefix;
46 } 54 }
......
...@@ -189,7 +189,7 @@ public class MpReachNlri implements BgpValueType { ...@@ -189,7 +189,7 @@ public class MpReachNlri implements BgpValueType {
189 && ((safi == Constants.SAFI_FLOWSPEC_VALUE) 189 && ((safi == Constants.SAFI_FLOWSPEC_VALUE)
190 || (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE))) { 190 || (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE))) {
191 List<BgpValueType> flowSpecComponents = new LinkedList<>(); 191 List<BgpValueType> flowSpecComponents = new LinkedList<>();
192 - 192 + RouteDistinguisher routeDistinguisher = null;
193 if (tempCb.readableBytes() > 0) { 193 if (tempCb.readableBytes() > 0) {
194 BgpValueType flowSpecComponent = null; 194 BgpValueType flowSpecComponent = null;
195 195
...@@ -203,6 +203,11 @@ public class MpReachNlri implements BgpValueType { ...@@ -203,6 +203,11 @@ public class MpReachNlri implements BgpValueType {
203 } 203 }
204 204
205 byte reserved = tempCb.readByte(); 205 byte reserved = tempCb.readByte();
206 +
207 + if (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE) {
208 + routeDistinguisher = new RouteDistinguisher();
209 + routeDistinguisher = RouteDistinguisher.read(tempCb);
210 + }
206 short totNlriLen = tempCb.getByte(tempCb.readerIndex()); 211 short totNlriLen = tempCb.getByte(tempCb.readerIndex());
207 if (totNlriLen >= FLOW_SPEC_LEN) { 212 if (totNlriLen >= FLOW_SPEC_LEN) {
208 totNlriLen = tempCb.readShort(); 213 totNlriLen = tempCb.readShort();
...@@ -260,7 +265,9 @@ public class MpReachNlri implements BgpValueType { ...@@ -260,7 +265,9 @@ public class MpReachNlri implements BgpValueType {
260 flowSpecComponents.add(flowSpecComponent); 265 flowSpecComponents.add(flowSpecComponent);
261 } 266 }
262 } 267 }
263 - return new MpReachNlri(new BgpFlowSpecDetails(flowSpecComponents), afi, safi); 268 + BgpFlowSpecDetails flowSpecDetails = new BgpFlowSpecDetails(flowSpecComponents);
269 + flowSpecDetails.setRouteDistinguiher(routeDistinguisher);
270 + return new MpReachNlri(flowSpecDetails, afi, safi);
264 } else { 271 } else {
265 throw new BgpParseException("Not Supporting afi " + afi + "safi " + safi); 272 throw new BgpParseException("Not Supporting afi " + afi + "safi " + safi);
266 } 273 }
......
...@@ -154,9 +154,14 @@ public class MpUnReachNlri implements BgpValueType { ...@@ -154,9 +154,14 @@ public class MpUnReachNlri implements BgpValueType {
154 && ((safi == Constants.SAFI_FLOWSPEC_VALUE) 154 && ((safi == Constants.SAFI_FLOWSPEC_VALUE)
155 || (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE))) { 155 || (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE))) {
156 List<BgpValueType> flowSpecComponents = new LinkedList<>(); 156 List<BgpValueType> flowSpecComponents = new LinkedList<>();
157 - 157 + RouteDistinguisher routeDistinguisher = null;
158 if (tempCb.readableBytes() > 0) { 158 if (tempCb.readableBytes() > 0) {
159 BgpValueType flowSpecComponent = null; 159 BgpValueType flowSpecComponent = null;
160 +
161 + if (safi == Constants.VPN_SAFI_FLOWSPEC_VALUE) {
162 + routeDistinguisher = new RouteDistinguisher();
163 + routeDistinguisher = RouteDistinguisher.read(tempCb);
164 + }
160 short totNlriLen = tempCb.getByte(tempCb.readerIndex()); 165 short totNlriLen = tempCb.getByte(tempCb.readerIndex());
161 if (totNlriLen >= FLOW_SPEC_LEN) { 166 if (totNlriLen >= FLOW_SPEC_LEN) {
162 totNlriLen = tempCb.readShort(); 167 totNlriLen = tempCb.readShort();
...@@ -214,7 +219,9 @@ public class MpUnReachNlri implements BgpValueType { ...@@ -214,7 +219,9 @@ public class MpUnReachNlri implements BgpValueType {
214 flowSpecComponents.add(flowSpecComponent); 219 flowSpecComponents.add(flowSpecComponent);
215 } 220 }
216 } 221 }
217 - return new MpUnReachNlri(new BgpFlowSpecDetails(flowSpecComponents), afi, safi); 222 + BgpFlowSpecDetails flowSpecDetails = new BgpFlowSpecDetails(flowSpecComponents);
223 + flowSpecDetails.setRouteDistinguiher(routeDistinguisher);
224 + return new MpUnReachNlri(flowSpecDetails, afi, safi);
218 } else { 225 } else {
219 //TODO: check with the values got from capability 226 //TODO: check with the values got from capability
220 throw new BgpParseException("Not Supporting afi " + afi + "safi " + safi); 227 throw new BgpParseException("Not Supporting afi " + afi + "safi " + safi);
......
...@@ -131,22 +131,29 @@ public class BgpControllerImpl implements BgpController { ...@@ -131,22 +131,29 @@ public class BgpControllerImpl implements BgpController {
131 } 131 }
132 Iterator<BgpValueType> listIterator = pathAttr.iterator(); 132 Iterator<BgpValueType> listIterator = pathAttr.iterator();
133 boolean isLinkstate = false; 133 boolean isLinkstate = false;
134 + boolean isFlowSpec = false;
134 while (listIterator.hasNext()) { 135 while (listIterator.hasNext()) {
135 BgpValueType attr = listIterator.next(); 136 BgpValueType attr = listIterator.next();
136 if (attr instanceof MpReachNlri) { 137 if (attr instanceof MpReachNlri) {
137 MpReachNlri mpReach = (MpReachNlri) attr; 138 MpReachNlri mpReach = (MpReachNlri) attr;
138 if (mpReach.bgpFlowSpecInfo() == null) { 139 if (mpReach.bgpFlowSpecInfo() == null) {
139 isLinkstate = true; 140 isLinkstate = true;
141 + } else {
142 + isFlowSpec = true;
140 } 143 }
141 } else if (attr instanceof MpUnReachNlri) { 144 } else if (attr instanceof MpUnReachNlri) {
142 MpUnReachNlri mpUnReach = (MpUnReachNlri) attr; 145 MpUnReachNlri mpUnReach = (MpUnReachNlri) attr;
143 if (mpUnReach.bgpFlowSpecInfo() == null) { 146 if (mpUnReach.bgpFlowSpecInfo() == null) {
144 isLinkstate = true; 147 isLinkstate = true;
148 + } else {
149 + isFlowSpec = true;
145 } 150 }
146 } 151 }
147 } 152 }
148 if (isLinkstate) { 153 if (isLinkstate) {
149 peer.buildAdjRibIn(pathAttr); 154 peer.buildAdjRibIn(pathAttr);
155 + } else if (isFlowSpec) {
156 + peer.buildFlowSpecRib(pathAttr);
150 } 157 }
151 break; 158 break;
152 default: 159 default:
......
...@@ -26,9 +26,9 @@ import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecPrefix; ...@@ -26,9 +26,9 @@ import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecPrefix;
26 import com.google.common.base.MoreObjects; 26 import com.google.common.base.MoreObjects;
27 27
28 /** 28 /**
29 - * Implementation of BGP flow spec RIB out for each peer. 29 + * Implementation of BGP flow specification RIB.
30 */ 30 */
31 -public class BgpFlowSpecRibOut { 31 +public class BgpFlowSpecRib {
32 private Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> flowSpecTree = new TreeMap<>(); 32 private Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> flowSpecTree = new TreeMap<>();
33 private Map<RouteDistinguisher, Map<BgpFlowSpecPrefix, BgpFlowSpecDetails>> vpnFlowSpecTree = new TreeMap<>(); 33 private Map<RouteDistinguisher, Map<BgpFlowSpecPrefix, BgpFlowSpecDetails>> vpnFlowSpecTree = new TreeMap<>();
34 34
......
...@@ -26,6 +26,7 @@ import java.util.Set; ...@@ -26,6 +26,7 @@ import java.util.Set;
26 26
27 import org.jboss.netty.channel.Channel; 27 import org.jboss.netty.channel.Channel;
28 import org.onlab.packet.IpAddress; 28 import org.onlab.packet.IpAddress;
29 +import org.onlab.packet.IpPrefix;
29 import org.onosproject.bgp.controller.BgpController; 30 import org.onosproject.bgp.controller.BgpController;
30 import org.onosproject.bgp.controller.BgpLocalRib; 31 import org.onosproject.bgp.controller.BgpLocalRib;
31 import org.onosproject.bgp.controller.BgpPeer; 32 import org.onosproject.bgp.controller.BgpPeer;
...@@ -44,6 +45,8 @@ import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; ...@@ -44,6 +45,8 @@ import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails;
44 import org.onosproject.bgpio.types.AsPath; 45 import org.onosproject.bgpio.types.AsPath;
45 import org.onosproject.bgpio.types.As4Path; 46 import org.onosproject.bgpio.types.As4Path;
46 import org.onosproject.bgpio.types.BgpExtendedCommunity; 47 import org.onosproject.bgpio.types.BgpExtendedCommunity;
48 +import org.onosproject.bgpio.types.BgpFsDestinationPrefix;
49 +import org.onosproject.bgpio.types.BgpFsSourcePrefix;
47 import org.onosproject.bgpio.types.BgpValueType; 50 import org.onosproject.bgpio.types.BgpValueType;
48 import org.onosproject.bgpio.types.LocalPref; 51 import org.onosproject.bgpio.types.LocalPref;
49 import org.onosproject.bgpio.types.Med; 52 import org.onosproject.bgpio.types.Med;
...@@ -83,25 +86,25 @@ public class BgpPeerImpl implements BgpPeer { ...@@ -83,25 +86,25 @@ public class BgpPeerImpl implements BgpPeer {
83 private BgpLocalRib bgplocalRibVpn; 86 private BgpLocalRib bgplocalRibVpn;
84 private AdjRibIn adjRib; 87 private AdjRibIn adjRib;
85 private VpnAdjRibIn vpnAdjRib; 88 private VpnAdjRibIn vpnAdjRib;
86 - private BgpFlowSpecRibOut flowSpecRibOut; 89 + private BgpFlowSpecRib flowSpecRibOut;
87 - private BgpFlowSpecRibOut vpnFlowSpecRibOut; 90 + private BgpFlowSpecRib flowSpecRibIn;
88 91
89 /** 92 /**
90 * Returns the flowSpec RIB out. 93 * Returns the flowSpec RIB out.
91 * 94 *
92 * @return flow Specification RIB out 95 * @return flow Specification RIB out
93 */ 96 */
94 - public BgpFlowSpecRibOut flowSpecRibOut() { 97 + public BgpFlowSpecRib flowSpecRibOut() {
95 return flowSpecRibOut; 98 return flowSpecRibOut;
96 } 99 }
97 100
98 /** 101 /**
99 - * Returns the VPN flowSpec RIB out. 102 + * Returns the flowSpec RIB-in.
100 * 103 *
101 - * @return VPN flow Specification RIB out 104 + * @return flow Specification RIB-in
102 */ 105 */
103 - public BgpFlowSpecRibOut vpnFlowSpecRibOut() { 106 + public BgpFlowSpecRib flowSpecRibIn() {
104 - return vpnFlowSpecRibOut; 107 + return flowSpecRibIn;
105 } 108 }
106 109
107 /** 110 /**
...@@ -142,8 +145,8 @@ public class BgpPeerImpl implements BgpPeer { ...@@ -142,8 +145,8 @@ public class BgpPeerImpl implements BgpPeer {
142 this.bgplocalRibVpn = bgpController.bgpLocalRibVpn(); 145 this.bgplocalRibVpn = bgpController.bgpLocalRibVpn();
143 this.adjRib = new AdjRibIn(); 146 this.adjRib = new AdjRibIn();
144 this.vpnAdjRib = new VpnAdjRibIn(); 147 this.vpnAdjRib = new VpnAdjRibIn();
145 - this.flowSpecRibOut = new BgpFlowSpecRibOut(); 148 + this.flowSpecRibOut = new BgpFlowSpecRib();
146 - this.vpnFlowSpecRibOut = new BgpFlowSpecRibOut(); 149 + this.flowSpecRibIn = new BgpFlowSpecRib();
147 } 150 }
148 151
149 /** 152 /**
...@@ -258,21 +261,21 @@ public class BgpPeerImpl implements BgpPeer { ...@@ -258,21 +261,21 @@ public class BgpPeerImpl implements BgpPeer {
258 } 261 }
259 flowSpecRibOut.add(prefix, flowSpec); 262 flowSpecRibOut.add(prefix, flowSpec);
260 } else { 263 } else {
261 - if (vpnFlowSpecRibOut.vpnFlowSpecTree().containsKey(flowSpec.routeDistinguisher())) { 264 + if (flowSpecRibOut.vpnFlowSpecTree().containsKey(flowSpec.routeDistinguisher())) {
262 Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> fsTree; 265 Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> fsTree;
263 - fsTree = vpnFlowSpecRibOut.vpnFlowSpecTree().get(flowSpec.routeDistinguisher()); 266 + fsTree = flowSpecRibOut.vpnFlowSpecTree().get(flowSpec.routeDistinguisher());
264 if (fsTree.containsKey(prefix)) { 267 if (fsTree.containsKey(prefix)) {
265 sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE, 268 sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE,
266 fsTree.get(prefix)); 269 fsTree.get(prefix));
267 } 270 }
268 } 271 }
269 - vpnFlowSpecRibOut.add(flowSpec.routeDistinguisher(), prefix, flowSpec); 272 + flowSpecRibOut.add(flowSpec.routeDistinguisher(), prefix, flowSpec);
270 } 273 }
271 } else if (operType == FlowSpecOperation.DELETE) { 274 } else if (operType == FlowSpecOperation.DELETE) {
272 if (flowSpec.routeDistinguisher() == null) { 275 if (flowSpec.routeDistinguisher() == null) {
273 flowSpecRibOut.delete(prefix); 276 flowSpecRibOut.delete(prefix);
274 } else { 277 } else {
275 - vpnFlowSpecRibOut.delete(flowSpec.routeDistinguisher(), prefix); 278 + flowSpecRibOut.delete(flowSpec.routeDistinguisher(), prefix);
276 } 279 }
277 } 280 }
278 sendFlowSpecUpdateMessageToPeer(operType, flowSpec); 281 sendFlowSpecUpdateMessageToPeer(operType, flowSpec);
...@@ -294,6 +297,65 @@ public class BgpPeerImpl implements BgpPeer { ...@@ -294,6 +297,65 @@ public class BgpPeerImpl implements BgpPeer {
294 } 297 }
295 } 298 }
296 299
300 + @Override
301 + public void buildFlowSpecRib(List<BgpValueType> pathAttr) throws BgpParseException {
302 + ListIterator<BgpValueType> iterator = pathAttr.listIterator();
303 + BgpFlowSpecDetails bgpFlowSpecDetails = new BgpFlowSpecDetails();
304 + FlowSpecOperation operType = FlowSpecOperation.UPDATE;
305 +
306 + while (iterator.hasNext()) {
307 + BgpValueType attr = iterator.next();
308 + if (attr instanceof MpReachNlri) {
309 + MpReachNlri mpReach = (MpReachNlri) attr;
310 + bgpFlowSpecDetails.setFlowSpecComponents(mpReach.bgpFlowSpecInfo().flowSpecComponents());
311 + bgpFlowSpecDetails.setRouteDistinguiher(mpReach.bgpFlowSpecInfo().routeDistinguisher());
312 + operType = FlowSpecOperation.ADD;
313 + }
314 +
315 + if (attr instanceof BgpExtendedCommunity) {
316 + BgpExtendedCommunity extCommunity = (BgpExtendedCommunity) attr;
317 + bgpFlowSpecDetails.setFsActionTlv(extCommunity.fsActionTlv());
318 + }
319 +
320 + if (attr instanceof MpUnReachNlri) {
321 + MpUnReachNlri mpUnReach = (MpUnReachNlri) attr;
322 + bgpFlowSpecDetails.setFlowSpecComponents(mpUnReach.bgpFlowSpecInfo().flowSpecComponents());
323 + bgpFlowSpecDetails.setRouteDistinguiher(mpUnReach.bgpFlowSpecInfo().routeDistinguisher());
324 + operType = FlowSpecOperation.DELETE;
325 + }
326 + }
327 +
328 + iterator = bgpFlowSpecDetails.flowSpecComponents().listIterator();
329 + IpPrefix destIpPrefix = null;
330 + IpPrefix srcIpPrefix = null;
331 + while (iterator.hasNext()) {
332 + BgpValueType fsAttr = iterator.next();
333 + if (fsAttr instanceof BgpFsDestinationPrefix) {
334 + BgpFsDestinationPrefix destinationPrefix = (BgpFsDestinationPrefix) fsAttr;
335 + destIpPrefix = destinationPrefix.ipPrefix();
336 + }
337 +
338 + if (fsAttr instanceof BgpFsSourcePrefix) {
339 + BgpFsSourcePrefix sourcePrefix = (BgpFsSourcePrefix) fsAttr;
340 + srcIpPrefix = sourcePrefix.ipPrefix();
341 + }
342 + }
343 + BgpFlowSpecPrefix prefix = new BgpFlowSpecPrefix(destIpPrefix, srcIpPrefix);
344 + if (operType == FlowSpecOperation.ADD) {
345 + if (bgpFlowSpecDetails.routeDistinguisher() == null) {
346 + flowSpecRibIn.add(prefix, bgpFlowSpecDetails);
347 + } else {
348 + flowSpecRibIn.add(bgpFlowSpecDetails.routeDistinguisher(), prefix, bgpFlowSpecDetails);
349 + }
350 + } else if (operType == FlowSpecOperation.DELETE) {
351 + if (bgpFlowSpecDetails.routeDistinguisher() == null) {
352 + flowSpecRibIn.delete(prefix);
353 + } else {
354 + flowSpecRibIn.delete(bgpFlowSpecDetails.routeDistinguisher(), prefix);
355 + }
356 + }
357 + }
358 +
297 /** 359 /**
298 * Updates NLRI identifier node in a tree separately based on afi and safi. 360 * Updates NLRI identifier node in a tree separately based on afi and safi.
299 * 361 *
...@@ -447,13 +509,13 @@ public class BgpPeerImpl implements BgpPeer { ...@@ -447,13 +509,13 @@ public class BgpPeerImpl implements BgpPeer {
447 Constants.AFI_FLOWSPEC_VALUE, 509 Constants.AFI_FLOWSPEC_VALUE,
448 Constants.VPN_SAFI_FLOWSPEC_VALUE); 510 Constants.VPN_SAFI_FLOWSPEC_VALUE);
449 if (isVpnCapabilitySet) { 511 if (isVpnCapabilitySet) {
450 - Set<RouteDistinguisher> flowSpecKeys = vpnFlowSpecRibOut.vpnFlowSpecTree().keySet(); 512 + Set<RouteDistinguisher> flowSpecKeys = flowSpecRibOut.vpnFlowSpecTree().keySet();
451 for (RouteDistinguisher key : flowSpecKeys) { 513 for (RouteDistinguisher key : flowSpecKeys) {
452 - Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> fsTree = vpnFlowSpecRibOut.vpnFlowSpecTree().get(key); 514 + Map<BgpFlowSpecPrefix, BgpFlowSpecDetails> fsTree = flowSpecRibOut.vpnFlowSpecTree().get(key);
453 515
454 Set<BgpFlowSpecPrefix> fsKeys = fsTree.keySet(); 516 Set<BgpFlowSpecPrefix> fsKeys = fsTree.keySet();
455 for (BgpFlowSpecPrefix fsKey : fsKeys) { 517 for (BgpFlowSpecPrefix fsKey : fsKeys) {
456 - BgpFlowSpecDetails flowSpecDetails = vpnFlowSpecRibOut.flowSpecTree().get(fsKey); 518 + BgpFlowSpecDetails flowSpecDetails = flowSpecRibOut.flowSpecTree().get(fsKey);
457 sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE, flowSpecDetails); 519 sendFlowSpecUpdateMessageToPeer(FlowSpecOperation.DELETE, flowSpecDetails);
458 } 520 }
459 } 521 }
......
...@@ -18,7 +18,7 @@ package org.onosproject.controller.impl; ...@@ -18,7 +18,7 @@ package org.onosproject.controller.impl;
18 import org.junit.Test; 18 import org.junit.Test;
19 import org.onlab.packet.IpAddress; 19 import org.onlab.packet.IpAddress;
20 import org.onlab.packet.IpPrefix; 20 import org.onlab.packet.IpPrefix;
21 -import org.onosproject.bgp.controller.impl.BgpFlowSpecRibOut; 21 +import org.onosproject.bgp.controller.impl.BgpFlowSpecRib;
22 import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecDetails; 22 import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecDetails;
23 import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecPrefix; 23 import org.onosproject.bgpio.protocol.flowspec.BgpFlowSpecPrefix;
24 import org.onosproject.bgpio.types.BgpFsOperatorValue; 24 import org.onosproject.bgpio.types.BgpFsOperatorValue;
...@@ -36,16 +36,16 @@ import static org.hamcrest.core.Is.is; ...@@ -36,16 +36,16 @@ import static org.hamcrest.core.Is.is;
36 /** 36 /**
37 * Test cases for BGP Selection Algorithm. 37 * Test cases for BGP Selection Algorithm.
38 */ 38 */
39 -public class BgpFlowSpecRibOutTest { 39 +public class BgpFlowSpecRibTest {
40 40
41 /** 41 /**
42 - * Add flow specification to rib out. 42 + * Add flow specification to rib.
43 */ 43 */
44 @Test 44 @Test
45 - public void bgpFlowSpecRibOutTests1() { 45 + public void bgpFlowSpecRibTests1() {
46 List<BgpValueType> flowSpecComponents = new LinkedList<>(); 46 List<BgpValueType> flowSpecComponents = new LinkedList<>();
47 List<BgpFsOperatorValue> operatorValue = new ArrayList<>(); 47 List<BgpFsOperatorValue> operatorValue = new ArrayList<>();
48 - BgpFlowSpecRibOut ribOut = new BgpFlowSpecRibOut(); 48 + BgpFlowSpecRib rib = new BgpFlowSpecRib();
49 49
50 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32); 50 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32);
51 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32); 51 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32);
...@@ -60,20 +60,20 @@ public class BgpFlowSpecRibOutTest { ...@@ -60,20 +60,20 @@ public class BgpFlowSpecRibOutTest {
60 60
61 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents); 61 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents);
62 62
63 - ribOut.add(prefix, flowSpec); 63 + rib.add(prefix, flowSpec);
64 64
65 - boolean isPresent = ribOut.flowSpecTree().containsKey(prefix); 65 + boolean isPresent = rib.flowSpecTree().containsKey(prefix);
66 assertThat(isPresent, is(true)); 66 assertThat(isPresent, is(true));
67 } 67 }
68 68
69 /** 69 /**
70 - * Add and delete flow specification to rib out. 70 + * Add and delete flow specification to rib.
71 */ 71 */
72 @Test 72 @Test
73 - public void bgpFlowSpecRibOutTest2() { 73 + public void bgpFlowSpecRibTest2() {
74 List<BgpValueType> flowSpecComponents = new LinkedList<>(); 74 List<BgpValueType> flowSpecComponents = new LinkedList<>();
75 List<BgpFsOperatorValue> operatorValue = new ArrayList<>(); 75 List<BgpFsOperatorValue> operatorValue = new ArrayList<>();
76 - BgpFlowSpecRibOut ribOut = new BgpFlowSpecRibOut(); 76 + BgpFlowSpecRib rib = new BgpFlowSpecRib();
77 77
78 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32); 78 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32);
79 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32); 79 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32);
...@@ -87,26 +87,26 @@ public class BgpFlowSpecRibOutTest { ...@@ -87,26 +87,26 @@ public class BgpFlowSpecRibOutTest {
87 87
88 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents); 88 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents);
89 89
90 - ribOut.add(prefix, flowSpec); 90 + rib.add(prefix, flowSpec);
91 91
92 - boolean isPresent = ribOut.flowSpecTree().containsKey(prefix); 92 + boolean isPresent = rib.flowSpecTree().containsKey(prefix);
93 assertThat(isPresent, is(true)); 93 assertThat(isPresent, is(true));
94 94
95 - ribOut.delete(prefix); 95 + rib.delete(prefix);
96 - isPresent = ribOut.flowSpecTree().containsKey(prefix); 96 + isPresent = rib.flowSpecTree().containsKey(prefix);
97 assertThat(isPresent, is(false)); 97 assertThat(isPresent, is(false));
98 98
99 } 99 }
100 100
101 /** 101 /**
102 - * Add and delete flow specification with a specific VPN to rib out. 102 + * Add and delete flow specification with a specific VPN to rib.
103 */ 103 */
104 @Test 104 @Test
105 - public void bgpFlowSpecRibOutTest3() { 105 + public void bgpFlowSpecRibTest3() {
106 List<BgpValueType> flowSpecComponents = new LinkedList<>(); 106 List<BgpValueType> flowSpecComponents = new LinkedList<>();
107 List<BgpFsOperatorValue> operatorValue = new ArrayList<>(); 107 List<BgpFsOperatorValue> operatorValue = new ArrayList<>();
108 RouteDistinguisher routeDistinguisher = new RouteDistinguisher(1); 108 RouteDistinguisher routeDistinguisher = new RouteDistinguisher(1);
109 - BgpFlowSpecRibOut ribOut = new BgpFlowSpecRibOut(); 109 + BgpFlowSpecRib rib = new BgpFlowSpecRib();
110 110
111 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32); 111 IpPrefix destinationPrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32);
112 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32); 112 IpPrefix sourcePrefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32);
...@@ -121,13 +121,13 @@ public class BgpFlowSpecRibOutTest { ...@@ -121,13 +121,13 @@ public class BgpFlowSpecRibOutTest {
121 121
122 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents); 122 BgpFlowSpecDetails flowSpec = new BgpFlowSpecDetails(flowSpecComponents);
123 123
124 - ribOut.add(routeDistinguisher, prefix, flowSpec); 124 + rib.add(routeDistinguisher, prefix, flowSpec);
125 125
126 - boolean isPresent = ribOut.vpnFlowSpecTree().containsKey(routeDistinguisher); 126 + boolean isPresent = rib.vpnFlowSpecTree().containsKey(routeDistinguisher);
127 assertThat(isPresent, is(true)); 127 assertThat(isPresent, is(true));
128 128
129 - ribOut.delete(routeDistinguisher, prefix); 129 + rib.delete(routeDistinguisher, prefix);
130 - isPresent = ribOut.vpnFlowSpecTree().containsKey(routeDistinguisher); 130 + isPresent = rib.vpnFlowSpecTree().containsKey(routeDistinguisher);
131 assertThat(isPresent, is(false)); 131 assertThat(isPresent, is(false));
132 } 132 }
133 } 133 }
......