Implemented control plane redirect for control traffic.

Modified SoftRouterPipeline to support new flow objectives.

Change-Id: Ia93bc927832444ba1f7cf20b276e4866789c9d30
diff --git a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
index 19c3f70..2017845 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
@@ -41,6 +41,7 @@
 import org.onosproject.routing.config.BgpConfig;
 import org.onosproject.routing.config.BgpPeer;
 import org.onosproject.routing.config.BgpSpeaker;
+import org.onosproject.routing.config.RouterConfig;
 import org.onosproject.routing.config.Interface;
 import org.onosproject.routing.config.LocalIpPrefixEntry;
 import org.onosproject.routing.config.RoutingConfigurationService;
@@ -100,24 +101,36 @@
 
     private MacAddress virtualGatewayMacAddress;
 
-    private ConfigFactory configFactory =
-            new ConfigFactory(SubjectFactories.APP_SUBJECT_FACTORY, BgpConfig.class, "bgp") {
+    private ConfigFactory<ApplicationId, BgpConfig> bgpConfigFactory =
+            new ConfigFactory<ApplicationId, BgpConfig>(
+                    SubjectFactories.APP_SUBJECT_FACTORY, BgpConfig.class, "bgp") {
         @Override
         public BgpConfig createConfig() {
             return new BgpConfig();
         }
     };
 
+    private ConfigFactory<ApplicationId, RouterConfig> routerConfigFactory =
+            new ConfigFactory<ApplicationId, RouterConfig>(
+                    SubjectFactories.APP_SUBJECT_FACTORY, RouterConfig.class, "router") {
+                @Override
+                public RouterConfig createConfig() {
+                    return new RouterConfig();
+                }
+            };
+
     @Activate
     public void activate() {
-        registry.registerConfigFactory(configFactory);
+        registry.registerConfigFactory(bgpConfigFactory);
+        registry.registerConfigFactory(routerConfigFactory);
         readConfiguration();
         log.info("Routing configuration service started");
     }
 
     @Deactivate
     public void deactivate() {
-        registry.unregisterConfigFactory(configFactory);
+        registry.unregisterConfigFactory(bgpConfigFactory);
+        registry.registerConfigFactory(routerConfigFactory);
         log.info("Routing configuration service stopped");
     }