ONOS-7944 McastHandler of SegmentRouting considers only dual-homed sinks,
not the sinks that are not tied with any host.

However, one of addSinks method of MulticastRouteService of mcast
application allows adding connect points each of which is a standalone
sink. In a scenario where all connect points are used as different sinks,
processSinksToBeAdded method in McastHandler service does not return
a true list of sinks to be added;

In overall,all connect points which are associated with HostId.NONE must
be added as different sinks. In the current situation, just one of them
is selected and added.

Change-Id: I3d4eb1ff865aca4f2fe85011a6a390374028a081
(cherry picked from commit d222b5cd3d2e9f53fbf9810c565f9b82739d0154)
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastHandler.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastHandler.java
index e90de03..3962053 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastHandler.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastHandler.java
@@ -948,6 +948,13 @@
                                                       ConnectPoint source) {
         final Set<ConnectPoint> sinksToBeProcessed = Sets.newHashSet();
         prevsinks.forEach(((hostId, connectPoints) -> {
+            if (HostId.NONE.equals(hostId)) {
+                //in this case connect points are single homed sinks.
+                //just found the difference btw previous and new sinks for this source.
+                Set<ConnectPoint> difference = Sets.difference(connectPoints, newSinks.get(hostId));
+                sinksToBeProcessed.addAll(difference);
+                return;
+            }
             // We have to check with the existing flows
             ConnectPoint sinkToBeProcessed = connectPoints.stream()
                     .filter(connectPoint -> isSinkForSource(mcastIp, connectPoint, source))
@@ -1012,6 +1019,11 @@
                                                     Map<HostId, Set<ConnectPoint>> sinks) {
         final Set<ConnectPoint> sinksToBeProcessed = Sets.newHashSet();
         sinks.forEach(((hostId, connectPoints) -> {
+            //add all connect points that are not tied with any host
+            if (hostId.equals(HostId.NONE)) {
+                sinksToBeProcessed.addAll(connectPoints);
+                return;
+            }
             // If it has more than 2 locations
             if (connectPoints.size() > 2 || connectPoints.size() == 0) {
                 log.debug("Skip {} since sink {} has {} locations",