diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index 00582cf..4e01de3 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -97,11 +97,19 @@
     if tunnel_dict:
         url_str = ""
         entries = tunnel_dict[tunnel_id]
-        for entry in entries:
-            url_str = url_str + "/node/" + entry
-        print url_str
+        url_str = "http://%s/rest/v1/tunnel/" % (sdnsh.controller)
+        obj_data = {}
+        obj_data['tunnel-id']=tunnel_id
+        obj_data['tunnel-path']=entries
+        data = sdnsh.store.rest_post_request(url_str,obj_data)
+        # LOOK! successful stuff should be returned in json too.
+        if data != "saved":
+            result = json.loads(data)
+            return result
     else:
         print "empty command"
+    #Clear the transit information    
+    tunnel_dict = {}
             
       
 def write_fields(obj_type, obj_id, data):
diff --git a/cli/sdncon/rest/views.py b/cli/sdncon/rest/views.py
index e7ba572..f8c616b 100755
--- a/cli/sdncon/rest/views.py
+++ b/cli/sdncon/rest/views.py
@@ -2133,4 +2133,19 @@
         jsondict['description'] = str(result['out']).strip()
 
     return HttpResponse(simplejson.dumps(jsondict), JSON_CONTENT_TYPE)
+
+@safe_rest_view
+def do_sdnplatform_tunnel_config(request):    
+    if request.method != 'PUT':
+        raise RestInvalidMethodException()
+
+    url = controller_url('onos', 'segmentrouting', 'tunnel')
+    post_data = request.raw_post_data
+    put_request = urllib2.Request(url, post_data)
+    put_request.get_method = lambda: 'POST'
+    put_request.add_header('Content-Type', 'application/json')
+    response = urllib2.urlopen(put_request)
+    response_text = response.read()
+    response = HttpResponse(response_text, JSON_CONTENT_TYPE)
     
+    return response
diff --git a/cli/sdncon/urls.py b/cli/sdncon/urls.py
index 329dc7d..4237d17 100755
--- a/cli/sdncon/urls.py
+++ b/cli/sdncon/urls.py
@@ -167,6 +167,9 @@
 
     # REST APIs for controller summary statistics 
     (r'^rest/v1/controller/summary$', 'sdncon.rest.views.do_sdnplatform_controller_summary'),
+    
+    # REST APIs for tunnel 
+    (r'^rest/v1/tunnel/?$', 'sdncon.rest.views.do_sdnplatform_tunnel_config'),
 
 )
 
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
index 668a1ca..8a8a008 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
@@ -1,11 +1,10 @@
 package net.onrc.onos.apps.segmentrouting.web;
 
+import net.floodlightcontroller.restserver.RestletRoutable;
+
 import org.restlet.Context;
 import org.restlet.Restlet;
 import org.restlet.routing.Router;
-
-import net.floodlightcontroller.restserver.RestletRoutable;
-import net.onrc.onos.core.topology.web.SwitchesResource;
 /**
  *  Handle all URI's for SegmentRouter web
  *
@@ -19,6 +18,9 @@
         //TODO: rewrite SwitchesResource for router specific info.
         router.attach("/routers",  RouterStatisticsResource.class);
         router.attach("/router/{routerId}/{statsType}",  RouterStatisticsResource.class);
+        router.attach("/tunnel", SegmentRouterTunnelResource.class);
+        // router.attach("/tunnel/{tunnelparams}",
+        // SegmentRouterTunnelResource.class);
         return router;
     }
 
