Making number of components configurable using the central component configuration subsystem.

Change-Id: Ia32c51480913689339a766d9849e792d62f7d133
diff --git a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
index 46d6446..f28f2a5 100644
--- a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
@@ -38,6 +38,7 @@
 import org.onlab.packet.Ip4Prefix;
 import org.onlab.packet.Ip6Prefix;
 import org.onlab.packet.VlanId;
+import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.Host;
@@ -87,6 +88,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected CoreService coreService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected ComponentConfigService cfgService;
+
     private ReactivePacketProcessor processor = new ReactivePacketProcessor();
 
     private ApplicationId appId;
@@ -150,6 +154,7 @@
 
     @Activate
     public void activate(ComponentContext context) {
+        cfgService.registerProperties(getClass());
         appId = coreService.registerApplication("org.onosproject.fwd");
 
         packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2);
@@ -174,6 +179,7 @@
 
     @Deactivate
     public void deactivate() {
+        cfgService.unregisterProperties(getClass(), false);
         flowRuleService.removeFlowRulesById(appId);
         packetService.removeProcessor(processor);
         processor = null;
diff --git a/apps/fwd/src/main/resources/org/onosproject/fwd/ReactiveForwarding.cfgdef b/apps/fwd/src/main/resources/org/onosproject/fwd/ReactiveForwarding.cfgdef
new file mode 100644
index 0000000..47f481c
--- /dev/null
+++ b/apps/fwd/src/main/resources/org/onosproject/fwd/ReactiveForwarding.cfgdef
@@ -0,0 +1,14 @@
+# Temporary: to be auto-generated in near future
+packetOutOnly|BOOLEAN|false|Enable packet-out only forwarding; default is false
+packetOutOfppTable|BOOLEAN|false|Enable first packet forwarding using OFPP_TABLE port instead of PacketOut with actual port; default is false
+flowTimeout|INTEGER|10|Configure Flow Timeout for installed flow rules; default is 10 sec
+flowPriority|INTEGER|10|Configure Flow Priority for installed flow rules; default is 10
+ipv6Forwarding|BOOLEAN|false|Enable IPv6 forwarding; default is false
+matchDstMacOnly|BOOLEAN|false|Enable matching Dst Mac Only; default is false
+matchVlanId|BOOLEAN|false|Enable matching Vlan ID; default is false
+matchIpv4Address|BOOLEAN|false|Enable matching IPv4 Addresses; default is false
+matchIpv4Dscp|BOOLEAN|false|Enable matching IPv4 DSCP and ECN; default is false
+matchIpv6Address|BOOLEAN|false|Enable matching IPv6 Addresses; default is false
+matchIpv6FlowLabel|BOOLEAN|false|Enable matching IPv6 FlowLabel; default is false
+matchTcpUdpPorts|BOOLEAN|false|Enable matching TCP/UDP ports; default is false
+matchIcmpFields|BOOLEAN|false|Enable matching ICMPv4 and ICMPv6 fields; default is false