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());
             }