Added some incoming JoinPrune processing
Change-Id: I7c89f05119ffa012b8e79f05d0f5f63744282ffb
diff --git a/utils/misc/src/main/java/org/onlab/packet/pim/PIMJoinPrune.java b/utils/misc/src/main/java/org/onlab/packet/pim/PIMJoinPrune.java
index 45fe287..a307ad6 100644
--- a/utils/misc/src/main/java/org/onlab/packet/pim/PIMJoinPrune.java
+++ b/utils/misc/src/main/java/org/onlab/packet/pim/PIMJoinPrune.java
@@ -21,6 +21,7 @@
import org.onlab.packet.IpPrefix;
import java.nio.ByteBuffer;
+import java.util.Collection;
import java.util.HashMap;
import static com.google.common.base.MoreObjects.toStringHelper;
@@ -31,16 +32,7 @@
private PIMAddrUnicast upstreamAddr = new PIMAddrUnicast();
private short holdTime = (short) 0xffff;
- private class JoinPruneGroup {
- protected IpPrefix group;
- protected HashMap<IpPrefix, IpPrefix> joins = new HashMap<>();
- protected HashMap<IpPrefix, IpPrefix> prunes = new HashMap<>();
-
- public JoinPruneGroup(IpPrefix grp) {
- group = grp;
- }
- }
- private HashMap<IpPrefix, JoinPruneGroup> joinPrunes = new HashMap<>();
+ private HashMap<IpPrefix, PIMJoinPruneGroup> joinPrunes = new HashMap<>();
/**
* Get the J/P hold time.
@@ -79,6 +71,15 @@
}
/**
+ * Get the JoinPrune Group with all the joins and prunes.
+ *
+ * @return the joinPruneGroup collection
+ */
+ public Collection<PIMJoinPruneGroup> getJoinPrunes() {
+ return joinPrunes.values();
+ }
+
+ /**
* Add the specified s,g to join field.
*
* @param saddr the source address of the route
@@ -99,13 +100,13 @@
* @param join true for join, false for prune
*/
public void addJoinPrune(IpPrefix spfx, IpPrefix gpfx, boolean join) {
- JoinPruneGroup jpg = joinPrunes.get(gpfx);
+ PIMJoinPruneGroup jpg = joinPrunes.get(gpfx);
if (jpg == null) {
- jpg = new JoinPruneGroup(gpfx);
+ jpg = new PIMJoinPruneGroup(gpfx);
joinPrunes.put(gpfx, jpg);
}
- HashMap<IpPrefix, IpPrefix> members = (join) ? jpg.joins : jpg.prunes;
+ HashMap<IpPrefix, IpPrefix> members = (join) ? jpg.getJoins() : jpg.getPrunes();
if (members.get(spfx) == null) {
members.put(spfx, spfx);
}
@@ -151,22 +152,22 @@
bb.putShort(this.holdTime);
// Walk the group list and input all groups
- for (JoinPruneGroup jpg : joinPrunes.values()) {
- PIMAddrGroup grp = new PIMAddrGroup(jpg.group);
+ for (PIMJoinPruneGroup jpg : joinPrunes.values()) {
+ PIMAddrGroup grp = new PIMAddrGroup(jpg.getGroup());
bb.put(grp.serialize());
// put the number of joins and prunes
- bb.putShort((short) jpg.joins.size());
- bb.putShort((short) jpg.prunes.size());
+ bb.putShort((short) jpg.getJoins().size());
+ bb.putShort((short) jpg.getPrunes().size());
// Set all of the joins
- for (IpPrefix spfx : jpg.joins.values()) {
+ for (IpPrefix spfx : jpg.getJoins().values()) {
PIMAddrSource src = new PIMAddrSource(spfx);
bb.put(src.serialize());
}
// Set all of the prunes
- for (IpPrefix spfx : jpg.prunes.values()) {
+ for (IpPrefix spfx : jpg.getPrunes().values()) {
PIMAddrSource src = new PIMAddrSource(spfx);
bb.put(src.serialize());
}