Carry information about source ONOS node in each route.

Change-Id: I4877a048771935e3dbe310272e0b82c77b8678af
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpRouteSelector.java b/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpRouteSelector.java
index 96f3a92..2c73dc0 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpRouteSelector.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpRouteSelector.java
@@ -17,6 +17,7 @@
 package org.onosproject.routing.bgp;
 
 import org.onlab.packet.IpPrefix;
+import org.onosproject.cluster.ClusterService;
 import org.onosproject.incubator.net.routing.Route;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,14 +33,17 @@
         LoggerFactory.getLogger(BgpRouteSelector.class);
 
     private BgpSessionManager bgpSessionManager;
+    private ClusterService clusterService;
 
     /**
      * Constructor.
      *
      * @param bgpSessionManager the BGP Session Manager to use
+     * @param clusterService the cluster service
      */
-    BgpRouteSelector(BgpSessionManager bgpSessionManager) {
+    BgpRouteSelector(BgpSessionManager bgpSessionManager, ClusterService clusterService) {
         this.bgpSessionManager = bgpSessionManager;
+        this.clusterService = clusterService;
     }
 
     /**
@@ -82,7 +86,7 @@
                                            Collection<Route> withdraws) {
         if (routeUpdate != null) {
             Route route = new Route(Route.Source.BGP, routeUpdate.routeEntry().prefix(),
-                    routeUpdate.routeEntry().nextHop());
+                    routeUpdate.routeEntry().nextHop(), clusterService.getLocalNode().id());
             if (routeUpdate.type().equals(RouteUpdate.Type.UPDATE)) {
                 updates.add(route);
             } else if (routeUpdate.type().equals(RouteUpdate.Type.DELETE)) {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java b/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java
index a8cf5d8..e9e851b 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java
@@ -37,6 +37,7 @@
 import org.onlab.packet.Ip4Prefix;
 import org.onlab.packet.Ip6Prefix;
 import org.onlab.packet.IpPrefix;
+import org.onosproject.cluster.ClusterService;
 import org.onosproject.incubator.net.routing.Route;
 import org.onosproject.incubator.net.routing.RouteAdminService;
 import org.osgi.service.component.ComponentContext;
@@ -66,6 +67,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected RouteAdminService routeService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected ClusterService clusterService;
+
     boolean isShutdown = true;
     private Channel serverChannel;     // Listener for incoming BGP connections
     private ServerBootstrap serverBootstrap;
@@ -74,7 +78,7 @@
             new ConcurrentHashMap<>();
     private Ip4Address myBgpId;        // Same BGP ID for all peers
 
-    private BgpRouteSelector bgpRouteSelector = new BgpRouteSelector(this);
+    private BgpRouteSelector bgpRouteSelector;
     private ConcurrentMap<Ip4Prefix, BgpRouteEntry> bgpRoutes4 =
             new ConcurrentHashMap<>();
     private ConcurrentMap<Ip6Prefix, BgpRouteEntry> bgpRoutes6 =
@@ -85,6 +89,7 @@
 
     @Activate
     protected void activate(ComponentContext context) {
+        bgpRouteSelector = new BgpRouteSelector(this, clusterService);
         readComponentConfiguration(context);
         start();
         log.info("BgpSessionManager started");