adding inband of ctrl

Change-Id: I9dc389770cb18428d6830ec533452d23c7243768
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
index 7c24144..fb7703c 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
@@ -82,6 +82,8 @@
 
     private short radiusPort = 1812;
 
+    private short ofPort = 6633;
+
     private DeviceId fabricDeviceId = DeviceId.deviceId("of:5e3e486e73000187");
 
     private final Multimap<VlanId, ConnectPoint> vlans = HashMultimap.create();
@@ -107,26 +109,68 @@
     }
 
     private void setupDefaultFlows() {
-        TrafficSelector toControllerOF = DefaultTrafficSelector.builder()
+        TrafficSelector ofInBandMatchUp = DefaultTrafficSelector.builder()
+                .matchEthType(Ethernet.TYPE_IPV4)
+                .matchIPProtocol(IPv4.PROTOCOL_TCP)
+                .matchTcpDst(ofPort)
+                .matchInPort(PortNumber.portNumber(6))
+                .build();
+
+        TrafficSelector ofInBandMatchDown = DefaultTrafficSelector.builder()
+                .matchEthType(Ethernet.TYPE_IPV4)
+                .matchIPProtocol(IPv4.PROTOCOL_TCP)
+                .matchTcpSrc(ofPort)
+                .matchInPort(PortNumber.portNumber(5))
+                .build();
+
+        TrafficTreatment up = DefaultTrafficTreatment.builder()
+                .setOutput(PortNumber.portNumber(5))
+                .build();
+
+        TrafficTreatment down = DefaultTrafficTreatment.builder()
+                .setOutput(PortNumber.portNumber(6))
+                .build();
+
+        TrafficSelector toRadius = DefaultTrafficSelector.builder()
                 .matchEthType(Ethernet.TYPE_IPV4)
                 .matchIPProtocol(IPv4.PROTOCOL_UDP)
                 .matchUdpDst(radiusPort)
                 .build();
 
-        TrafficTreatment forwardToController = DefaultTrafficTreatment.builder()
+        TrafficTreatment puntToController = DefaultTrafficTreatment.builder()
                 .punt()
                 .build();
 
-        ForwardingObjective ofToController = DefaultForwardingObjective.builder()
+        ForwardingObjective radiusToController = DefaultForwardingObjective.builder()
                 .fromApp(appId)
                 .makePermanent()
                 .withFlag(ForwardingObjective.Flag.VERSATILE)
                 .withPriority(PRIORITY)
-                .withSelector(toControllerOF)
-                .withTreatment(forwardToController)
+                .withSelector(toRadius)
+                .withTreatment(puntToController)
                 .add();
 
-        flowObjectiveService.forward(fabricDeviceId, ofToController);
+        ForwardingObjective upCtrl = DefaultForwardingObjective.builder()
+                .fromApp(appId)
+                .makePermanent()
+                .withFlag(ForwardingObjective.Flag.VERSATILE)
+                .withPriority(PRIORITY)
+                .withSelector(ofInBandMatchUp)
+                .withTreatment(up)
+                .add();
+
+        ForwardingObjective downCtrl = DefaultForwardingObjective.builder()
+                .fromApp(appId)
+                .makePermanent()
+                .withFlag(ForwardingObjective.Flag.VERSATILE)
+                .withPriority(PRIORITY)
+                .withSelector(ofInBandMatchDown)
+                .withTreatment(down)
+                .add();
+
+        flowObjectiveService.forward(fabricDeviceId, upCtrl);
+        flowObjectiveService.forward(fabricDeviceId, downCtrl);
+        flowObjectiveService.forward(fabricDeviceId, radiusToController);
     }
 
     @Override