Added fabicon.ico
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 6d7c901..df42075 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -155,8 +155,8 @@
     private static final long LINK_LOCAL_VALUE = 0x0180c2000000L;
 
     // BigSwitch OUI is 5C:16:C7, so 5D:16:C7 is the multicast version
-    // private static final String LLDP_BSN_DST_MAC_STRING = "5d:16:c7:00:00:01";
-    private static final String LLDP_BSN_DST_MAC_STRING = "ff:ff:ff:ff:ff:ff";
+    private static final String LLDP_BSN_DST_MAC_STRING = "5d:16:c7:00:00:01";
+    //private static final String LLDP_BSN_DST_MAC_STRING = "ff:ff:ff:ff:ff:ff";
 
 
     // Direction TLVs are used to indicate if the LLDPs were sent 
diff --git a/start-onos.sh b/start-onos.sh
index 089b1d9..a3c0c43 100755
--- a/start-onos.sh
+++ b/start-onos.sh
@@ -79,6 +79,7 @@
   echo "Starting ONOS controller ..."
   echo 
   java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ./onos.properties > /dev/null 2>&1 &
+#  echo "java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ./onos.properties > /dev/null 2>&1 &"
   sudo -b /usr/sbin/tcpdump -n -i eth0 -s0 -w ${PCAP_LOG} 'tcp port 6633' > /dev/null  2>&1
 }
 
diff --git a/web/favicon.ico b/web/favicon.ico
new file mode 100644
index 0000000..a72928b
--- /dev/null
+++ b/web/favicon.ico
Binary files differ
diff --git a/web/js/onos-topology.js b/web/js/onos-topology.js
index 7bee4c0..aee3eaf 100644
--- a/web/js/onos-topology.js
+++ b/web/js/onos-topology.js
@@ -201,7 +201,12 @@
 	circle.append("title")
 	    .text(function(d) { return d.name; });
 
-	circle.attr("fill", function(d) { if (d.group == 0){return "blue";}else{ return "gray"; }})
+	circle.attr("fill", function(d) {
+	    if (d.group == 1){return "red";}
+	    else if (d.group == 2){return "blue";}
+	    else if (d.group == 3){return "green";}
+	    else{ return "gray"; }
+	});
 
 	force.on("tick", tick);
 	path.exit().remove();
@@ -233,7 +238,12 @@
 	circle.attr("transform", function(d) {
 	    return "translate(" + d.x + "," + d.y + ")";
 	})
-	circle.attr("fill", function(d) { if (d.group == 0){return "blue";}else{ return "gray"; }});
+	circle.attr("fill", function(d) {
+	    if (d.group == 1){return "red";}
+	    else if (d.group == 2){return "blue";}
+	    else if (d.group == 3){return "green";}
+	    else{ return "gray"; }
+	});
 //	text.attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; });
 //	text.attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; });
 	text.attr("transform", function(d) {
diff --git a/web/topology_rest.py b/web/topology_rest.py
index be4844d..cdc8a4d 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -158,6 +158,97 @@
   return resp
 
 
+#@app.route("/wm/topology/toporoute/00:00:00:00:00:a1/2/00:00:00:00:00:c1/3/json")
+#@app.route("/wm/topology/toporoute/<srcdpid>/<srcport>/<destdpid>/<destport>/json")
+@app.route("/wm/topology/toporoute/<v1>/<p1>/<v2>/<p2>/json")
+def shortest_path(v1, p1, v2, p2):
+  try:
+    command = "curl -s \'http://%s:%s/wm/core/topology/switches/all/json\'" % (RestIP, RestPort)
+    result = os.popen(command).read()
+    parsedResult = json.loads(result)
+  except:
+    log_error("REST IF has issue: %s" % command)
+    log_error("%s" % result)
+    sys.exit(0)
+
+  topo = {}
+  switches = []
+  links = []
+
+  for v in parsedResult:
+    if v.has_key('dpid'):
+      dpid = str(v['dpid'])
+      state = str(v['state'])
+      sw = {}
+      sw['name']=dpid
+      if str(v['state']) == "ACTIVE":
+        if dpid[-2:-1] == "a":
+         sw['group']=1
+        if dpid[-2:-1] == "b":
+         sw['group']=2
+        if dpid[-2:-1] == "c":
+         sw['group']=3
+      if str(v['state']) == "INACTIVE":
+         sw['group']=0
+
+      switches.append(sw)
+
+  try:
+    command = "curl -s http://%s:%s/wm/topology/route/%s/%s/%s/%s/json" % (RestIP, RestPort, v1, p1, v2, p2)
+    result = os.popen(command).read()
+    parsedResult = json.loads(result)
+  except:
+    log_error("No route")
+    parsedResult = []
+#    exit(1)
+
+  path = [];    
+  for i, v in enumerate(parsedResult):
+    if i < len(parsedResult) - 1:
+      sdpid= parsedResult[i]['switch']
+      ddpid = parsedResult[i+1]['switch']
+      path.append( (sdpid, ddpid))  
+
+  try:
+    command = "curl -s \'http://%s:%s/wm/core/topology/links/json\'" % (RestIP, RestPort)
+    result = os.popen(command).read()
+    parsedResult = json.loads(result)
+  except:
+    log_error("REST IF has issue: %s" % command)
+    log_error("%s" % result)
+    sys.exit(0)
+
+  for v in parsedResult:
+    link = {}
+    if v.has_key('dst-switch'):
+      dst_dpid = str(v['dst-switch'])
+      dst_id = node_id(switches, dst_dpid)
+    if v.has_key('src-switch'):
+      src_dpid = str(v['src-switch'])
+      src_id = node_id(switches, src_dpid)
+    link['source'] = src_id
+    link['target'] = dst_id
+    onpath = 0
+    for (s,d) in path:
+      if s == v['src-switch'] and d == v['dst-switch']:
+        onpath = 1
+        break
+
+    link['type'] = onpath
+    links.append(link)
+
+  topo['nodes'] = switches
+  topo['links'] = links
+
+  pp.pprint(topo)
+  js = json.dumps(topo)
+  resp = Response(js, status=200, mimetype='application/json')
+  return resp
+
+
+
+
+
 @app.route("/wm/core/controller/switches/json")
 def query_switch():
   try: