Send PIM Join/Prune messages based on events from the McastService.

Also change Interface to return a list of addresses rather than a set
to allow applications to rely on the order of configuration

Change-Id: Ie7f62fee507639325ee0a77b8db4088dae34597e
diff --git a/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java b/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
index c83871e..64dd207 100644
--- a/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
+++ b/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
@@ -31,6 +31,7 @@
 public class PimInterfacesListCommand extends AbstractShellCommand {
 
     private static final String FORMAT = "interfaceName=%s, holdTime=%s, priority=%s, genId=%s";
+    private static final String ROUTE_FORMAT = "    %s";
 
     @Override
     protected void execute() {
@@ -38,10 +39,13 @@
 
         Set<PIMInterface> interfaces = interfaceService.getPimInterfaces();
 
-        interfaces.forEach(
-                pimIntf -> print(FORMAT, pimIntf.getInterface().name(),
-                        pimIntf.getHoldtime(), pimIntf.getPriority(),
-                        pimIntf.getGenerationId()));
+        interfaces.forEach(pimIntf -> {
+            print(FORMAT, pimIntf.getInterface().name(),
+                    pimIntf.getHoldtime(), pimIntf.getPriority(),
+                    pimIntf.getGenerationId());
+
+            pimIntf.getRoutes().forEach(route -> print(ROUTE_FORMAT, route));
+        });
     }
 
 }