Removed the old version of the simple GUI and other extraneous files.
Change-Id: Ib21bdffea35b610fa42731187dd0084f28f2f7dc
diff --git a/start-rest.sh b/start-rest.sh
index 92a14da..e29a05d 100755
--- a/start-rest.sh
+++ b/start-rest.sh
@@ -2,7 +2,7 @@
# Change this accordingly
ONOS_HOME=${ONOS_HOME:-${HOME}/ONOS}
-script_name="topology_rest.py"
+script_name="simple_web_server.py"
#######################
WEBDIR=${ONOS_HOME}/web
@@ -39,8 +39,6 @@
for p in ${pids}; do
if [ x$p != "x" ]; then
dokill $p
-# sudo kill -KILL $p
-# echo "Killed existing prosess (pid: $p)"
fi
done
}
@@ -57,10 +55,6 @@
function start {
lotate $REST_LOG 10
cd $WEBDIR
- # Make log dir for iperf log files
- if [ ! -d log ]; then
- mkdir log
- fi
$restscript > $REST_LOG 2>&1 &
}
diff --git a/web/config.json.default b/web/config.json.default
deleted file mode 100644
index 88fc2e7..0000000
--- a/web/config.json.default
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "gui-ip" : "0.0.0.0",
- "gui-port" : 9000,
- "onos-ip" : "localhost",
- "onos-port" : 8080,
- "controllers": [
- "onos-vm1",
- "onos-vm2",
- "onos-vm3",
- "onos-vm4"
- ]
-}
diff --git a/web/js/controller-status.js b/web/js/controller-status.js
deleted file mode 100644
index 3004ce8..0000000
--- a/web/js/controller-status.js
+++ /dev/null
@@ -1,149 +0,0 @@
-function controller_status(data_source){
-/* var data = [{name:'onos9vpc', onos: 1, cassandra: 1},
- {name:'onos10vpc', onos: 0, cassandra: 1},
- {name:'onos11vpc', onos: 1, cassandra: 1},
- {name:'onos12vpc', onos: 0, cassandra: 1}] */
-
- var barWidth = 100;
- var width = (barWidth + 10) * 8
- var height = 50;
-
- var Servers = d3.select("#servers").
- append("svg:svg").
- attr("width", 1280).
- attr("height", 30);
-
- var ContStatus = d3.select("#onos-status").
- append("svg:svg").
- attr("width", 1280).
- attr("height", 50);
-
- d3.json(data_source, draw);
- setInterval(function() {
- $.ajax({
- url: data_source,
- success: function(json) {
- draw(json)
- },
- dataType: "json"
- });
- }, 3000);
-
- function draw(json){
- var data = json;
- var server = Servers.selectAll("text").data(data);
- var controller_rect = ContStatus.selectAll("rect").data(data);
- var controller_text = ContStatus.selectAll("text").data(data);
-
- var x = d3.scale.linear().domain([0, data.length]).range([0, width]);
- var y = d3.scale.linear().domain([0, d3.max(data, function(datum) { return datum.onos; })]).rangeRound([0, height]);
-
- console.log(data)
- server.
- enter().
- append("svg:text").
- attr("x", function(datum, index) { return x(index); }).
- attr("y", function(datum) { return 20; }).
- attr("fill", function(datum, index) {
- if (index == 0){
- return "red"
- }else if (index == 1){
- return "blue"
- }else if (index == 2){
- return "green"
- }else if (index == 3){
- return "orange"
- }else if (index == 4){
- return "cyan"
- }else if (index == 5){
- return "magenta"
- }else if (index == 6){
- return "yellow"
- }else if (index == 7){
- return "purple"
- }else{
- return "black"
- }
- }).
- text(function(datum) { return datum.name; });
-
- controller_rect.
- enter().
- append("svg:rect").
- attr("x", function(datum, index) { return x(index); }).
- attr("y", function(datum) { return height - y(datum.onos); }).
- attr("height", function(datum) { return y(datum.onos); }).
- attr("width", barWidth).
- attr("fill", function(datum, index) {
- if (index == 0){
- return "red"
- }else if (index == 1){
- return "blue"
- }else if (index == 2){
- return "green"
- }else if (index == 3){
- return "orange"
- }else if (index == 4){
- return "cyan"
- }else if (index == 5){
- return "magenta"
- }else if (index == 6){
- return "yellow"
- }else if (index == 7){
- return "purple"
- }else{
- return "black"
- }
- });
-
- controller_text.
- enter().
- append("svg:text").
- text(function(){return "ONOS"}).
- attr("x", function(datum, index) { return x(index)+10; }).
- attr("y", function(datum) { return 30 ; }).
- attr("height", function(datum) { return y(datum.onos); }).
- attr("width", barWidth).
- attr('fill', 'white');
-
- controller_rect.
- attr("x", function(datum, index) { return x(index); }).
- attr("y", function(datum) { return height - y(datum.onos); }).
- attr("height", function(datum) { return y(datum.onos); }).
- attr("width", barWidth).
- attr("fill", function(datum, index) {
- if (index == 0){
- return "red"
- }else if (index == 1){
- return "blue"
- }else if (index == 2){
- return "green"
- }else if (index == 3){
- return "orange"
- }else if (index == 4){
- return "cyan"
- }else if (index == 5){
- return "magenta"
- }else if (index == 6){
- return "yellow"
- }else if (index == 7){
- return "purple"
- }else{
- return "black"
- }
- });
-
- controller_text.
- text(function(){return "ONOS"}).
- attr("x", function(datum, index) { return x(index)+10; }).
- attr("y", function(datum) { return 30 ; }).
- attr("height", function(datum) { return y(datum.onos); }).
- attr("width", barWidth).
- attr('fill', 'white');
-
- server.exit().remove();
- controller_rect.exit().remove();
- controller_text.exit().remove();
- }
-}
-
diff --git a/web/js/onos-topology-route.js b/web/js/onos-topology-route.js
deleted file mode 100644
index cca644b..0000000
--- a/web/js/onos-topology-route.js
+++ /dev/null
@@ -1,414 +0,0 @@
-function gui(data_source){
- var width = 960,
- height = 500;
- var color = d3.scale.category20();
-
- var svg = d3.select("body").append("svg:svg")
- .attr("width", width)
- .attr("height", height);
-
- var force = d3.layout.force()
- .charge(-500)
- .linkDistance(100)
- .size([width, height]);
-
- var path = svg.selectAll("path");
- var circle = svg.selectAll("circle");
- var text = svg.selectAll("g");
- var pathlen = 0;
- var from;
- var to;
- var path_set = 0;
-
-
- d3.json(data_source,init);
-
- function init(json){
- nodes = force.nodes();
- links = force.links();
-
- json.nodes.forEach(function(item) {
- nodes.push(item);
- });
-/*
- nodes.sort(function(a,b) {
- if (a.name > b.name) {return 1;}
- else if (a.name < b.name) {return -1;}
- else {return 0;}
- });
-*/
- json.links.forEach(function(item) {
- links.push(item);
- });
- draw(nodes, links);
- }
-
- var node_drag = d3.behavior.drag()
- .on("dragstart", dragstart)
- .on("drag", dragmove)
- .on("dragend", dragend);
-
- function dragstart(d, i) {
- force.stop() // stops the force auto positioning before you start dragging
- }
-
- function dragmove(d, i) {
- d.px += d3.event.dx;
- d.py += d3.event.dy;
- d.x += d3.event.dx;
- d.y += d3.event.dy;
- tick(); // this is the key to make it work together with updating both px,py,x,y on d !
- }
-
- function dragend(d, i) {
- d.fixed = true; // of course set the node to fixed so the force doesn't include the node in its auto positioning stuff
- tick();
- force.resume();
- }
-
- function update(json) {
- Array.prototype.diff2 = function(arr) {
- return this.filter(function(i) {
- for (var j = 0; j < arr.length ; j++) {
- if (arr[j].source === i.source.index &&
- arr[j].target === i.target.index)
- return false;
- }
- return true;
- });
- };
-
- Array.prototype.diff = function(arr) {
- return this.filter(function(i) {
- for (var j = 0; j < arr.length ; j++) {
- if (arr[j].source.index === i.source &&
- arr[j].target.index === i.target)
- return false;
- }
- return true;
- });
- };
-
- Array.prototype.node_diff = function(arr) {
- return this.filter(function(i) {
- for (var j = 0; j < arr.length ; j++) {
- if (arr[j].name === i.name)
- return false;
- }
- return true;
- });
- };
-
-
- links.sort(function(a,b) {
- if (a.source > b.source) {return 1;}
- else if (a.source < b.source) {return -1;}
- else {
- if (a.target > b.target) {return 1;}
- if (a.target < b.target) {return -1;}
- else {return 0;}
- }
- });
-
-// for (var i=0; i<links.length; i++) {
-// if (i != 0 &&
-// links[i].source == links[i-1].source &&
-// links[i].target == links[i-1].target) {
-// links[i].linknum = links[i-1].linknum + 1;
-// }
-// else {links[i].linknum = 1;};
-// };
-
-
- function cdiff(topo) {
- var changed = false;
-
- var n_adds = topo.nodes.node_diff(nodes);
- var n_rems = nodes.node_diff(topo.nodes);
- for (var i = 0; i < n_adds.length; i++) {
- nodes.push(n_adds[i]);
- changed = true;
- }
- for (var i = 0; i < n_rems.length; i++) {
- for (var j = 0; j < nodes.length; j++) {
- if ( nodes[j].name == n_rems[i].name ){
- nodes.splice(j,1);
- changed = true;
- break;
- }
- }
- }
-
- var l_adds = [];
- var l_rems = [];
- l_adds = added_links(topo, links, l_adds);
- l_rems = gone_links(topo, links, l_rems);
-
- for (var i = 0; i < l_rems.length ; i++) {
- for (var j = 0; j < links.length; j++) {
- if (links[j].source.name == l_rems[i].source.name &&
- links[j].target.name == l_rems[i].target.name) {
- links.splice(j,1);
- changed = true;
- break;
- }
- }
- }
- for (var i = 0; i < l_adds.length; i++) {
- var s;
- var t;
- for (var j = 0; j < nodes.length; j++) {
- if ( json.nodes[l_adds[i].source].name == nodes[j].name ){
- s = j;
- break;
- }
- }
- for (var j = 0; j < nodes.length; j++) {
- if ( json.nodes[l_adds[i].target].name == nodes[j].name ){
- t = j;
- break;
- }
- }
- l_adds[i].source = s;
- l_adds[i].target = t;
- links.push(l_adds[i]);
- changed = true;
- }
- return changed
- }
-
-
- var changed = cdiff(json);
-
- for (var i = 0; i < json.nodes.length; i++) {
- nodes[i].group = json.nodes[i].group
- }
- var rewrite = 0;
- for (var i = 0; i < links.length; i++) {
- for (var j = 0; j < json.links.length; j++) {
- /*
- console.log("link" + i);
- console.log(links[i].source.name + "->" + links[i].target.name);
- console.log("type " + links[i].type);
- console.log("json link" + j);
- console.log(json.nodes[json.links[j].source].name + "->" + json.nodes[json.links[j].target].name);
- */
- if (links[i].target.name == json.nodes[json.links[j].target].name &&
- links[i].source.name == json.nodes[json.links[j].source].name ){
- links[i].type = json.links[j].type;
- rewrite ++;
- }
- }
- }
- console.log("changed?" + changed);
- if (changed){
- console.log(nodes);
- console.log(links);
- path = svg.selectAll("path").data(links)
- circle = svg.selectAll("circle").data(nodes);
- text = svg.selectAll("text").data(nodes);
-
- force.stop();
-
- path.enter().append("svg:path")
- .attr("class", function(d) { return "link"; })
- .attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
- circle.enter().append("svg:circle")
- .attr("r", 8)
-/* .on("click", function(d,i) {
- if ( path_set == 0 || path_set == 2 ){
- fm = d.name;
- path_set = 1;
- alert("from set to " + d.name);
- }else if ( path_set == 1 ){
- to = d.name;
- path_set = 2;
- alert("to set to " + d.name);
- }
- }) */
- .call(node_drag);
-// .call(force.drag);
-
-/* text.enter().append("svg:text")
- .attr("x", 8)
- .attr("y", ".31em")
- .attr("class", "shadow")
- .text(function(d) { return d.name.split(":")[7]; }); */
-
- text.enter().append("svg:text")
- .attr("x", 8)
- .attr("y", ".31em")
- .text(function(d) { return d.name.split(":")[7]; });
-
- circle.append("title")
- .text(function(d) { return d.name; });
-
- path.attr("stroke", function(d) {
- if(d.type == 1){
- return "red"
- } else {
- return "black"
- }
- })
- .attr("stroke-width", function(d) {
- if(d.type == 1){
- return "4px";
- } else {
- return "1.5px";
- }
- });
-
-
- path.exit().remove();
- circle.exit().remove();
- text.exit().remove();
- force.on("tick", tick);
- force.start();
- }
- }
- function draw(nodes, links){
- path = svg.append("svg:g").selectAll("path").data(links)
- circle = svg.append("svg:g").selectAll("circle").data(nodes);
- text = svg.append("svg:g").selectAll("text").data(nodes);
-
- path.enter().append("svg:path")
- .attr("class", function(d) { return "link"; })
- .attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
- path.attr("stroke", function(d) {
- if(d.type == 1){
- return "red"
- } else {
- return "black"
- }
- }).attr("stroke-width", function(d) {
- if(d.type == 1){
- return "4px";
- } else {
- return "1.5px";
- }
- }).attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
-
- circle.enter().append("svg:circle")
- .attr("r", 8)
-/* .on("click", function(d,i) {
- if ( path_set == 0 || path_set == 2 ){
- fm = d.name;
- path_set = 1;
- alert("from set to " + d.name);
- }else if ( path_set == 1 ){
- to = d.name;
- path_set = 2;
- alert("to set to " + d.name);
- }
- }) */
- .call(node_drag);
-// .call(force.drag);
-
-/* text.enter().append("svg:text")
- .attr("x", 8)
- .attr("y", ".31em")
- .attr("class", "shadow")
- .text(function(d) { return d.name.split(":")[7]; }); */
-
- text.enter().append("svg:text")
- .attr("x", 8)
- .attr("y", ".31em")
- .text(function(d) { return d.name.split(":")[7]; });
-
- circle.append("title")
- .text(function(d) { return d.name; });
-
- 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();
- circle.exit().remove();
-// text.exit().remove();
-
- force.start();
-
- setInterval(function() {
- $.ajax({
-// url: 'http://onosnat.onlab.us:8080/topology',
- url: data_source,
- success: function(json) {
- update(json)
- },
- dataType: "json"
- });
- }, 3000);
- }
- function tick() {
- path.attr("d", function(d) {
- var dx = d.target.x - d.source.x,
- dy = d.target.y - d.source.y,
-// dr = 1/d.linknum; //linknum is defined above
- dr = 300;
- return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
- });
-
- path.attr("stroke", function(d) {
- if(d.type == 1){
- return "red"
- } else {
- return "black"
- }
- }).attr("stroke-width", function(d) {
- if(d.type == 1){
- return "4px";
- } else {
- return "1.5px";
- }
- }).attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
-
-// circle.attr("cx", function(d) { return d.x; }).attr("cy", function(d) { return d.y; });
- circle.attr("transform", function(d) {
- return "translate(" + d.x + "," + d.y + ")";
- })
- 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) {
- return "translate(" + d.x + "," + d.y + ")";
- });
- }
-}
diff --git a/web/js/onos-topology.js b/web/js/onos-topology.js
deleted file mode 100644
index d086f6a..0000000
--- a/web/js/onos-topology.js
+++ /dev/null
@@ -1,422 +0,0 @@
-function gui(data_source){
- var width = 1280,
- height = 1280;
- var radius = 8;
- var color = d3.scale.category20();
-
- var svg = d3.select("#topology").append("svg:svg")
- .attr("width", width)
- .attr("height", height);
-
- var force = d3.layout.force()
- .charge(-500)
- .linkDistance(100)
- .size([width, height]);
-
- var path = svg.selectAll("path");
- var circle = svg.selectAll("circle");
- var text = svg.selectAll("g");
- var node_drag = d3.behavior.drag()
- .on("dragstart", dragstart)
- .on("drag", dragmove)
- .on("dragend", dragend);
-
- d3.json(data_source, init);
-
-/* For debugging
- $("#more").click( function() {
- $.ajax({
- url: 'http://gui.onlab.us:8080/topology_more',
- success: function(json) {
- update(json);
- },
- dataType: "json"
- });
- });
- $("#less").click( function() {
- $.ajax({
- url: 'http://gui.onlab.us:8080/topology_less',
- success: function(json) {
- update(json);
- },
- dataType: "json"
- });
- });
-*/
-
- function compare_link (a, b){
- if (a.source > b.source) {return 1;}
- else if (a.source < b.source) {return -1;}
- else {
- if (a.target > b.target) {return 1 ;}
- if (a.target < b.target) {return -1;}
- else {return 0;}
- }
- }
-
- function init(json){
- nodes = force.nodes();
- links = force.links();
-
- json.nodes.forEach(function(item) {
- nodes.push(item);
- });
- json.links.forEach(function(item) {
- links.push(item);
- });
-
- links.sort(compare_link);
- for (var i=1; i<links.length; i++) {
- if (links[i].source == links[i-1].source &&
- links[i].target == links[i-1].target) {
- links[i].linknum = links[i-1].linknum + 1;
- }
- else {
- links[i].linknum = 1;
- };
- };
- init_draw(nodes, links);
- }
-
- /* Return nodes that is not in the current list of nodes */
- Array.prototype.node_diff = function(arr) {
- return this.filter(function(i) {
- for (var j = 0; j < arr.length ; j++) {
- if (arr[j].name === i.name)
- return false;
- }
- return true;
- });
- };
-
- /* Return removed links */
- function gone_links (json, links, gone) {
- for (var i = 0; i < links.length ; i ++){
- var found = 0;
- for (var j = 0; j < json.links.length ; j ++){
- if (links[i].source.name == json.nodes[json.links[j].source].name &&
- links[i].target.name == json.nodes[json.links[j].target].name ){
- found = 1;
- break;
- }
- }
- if ( found == 0 ){
- gone.push(links[i]);
- }
- }
- return gone;
- }
-
- /* Return added links */
- function added_links (json, links, added) {
- for (var j = 0; j < json.links.length ; j ++){
- var found = 0;
- for (var i = 0; i < links.length ; i ++){
- if (links[i].source.name == json.nodes[json.links[j].source].name &&
- links[i].target.name == json.nodes[json.links[j].target].name ){
- found = 1;
- break;
- }
- }
- if ( found == 0 ){
- added.push(json.links[j]);
- }
- }
- return added;
- }
-
- function dragstart(d, i) {
- force.stop() // stops the force auto positioning before you start dragging
- }
-
- function dragmove(d, i) {
- d.px += d3.event.dx;
- d.py += d3.event.dy;
- d.x += d3.event.dx;
- d.y += d3.event.dy;
- tick(); // this is the key to make it work together with updating both px,py,x,y on d !
- }
-
- function dragend(d, i) {
- d.fixed = true; // of course set the node to fixed so the force doesn't include the node in its auto positioning stuff
- tick();
- force.resume();
- }
-
- /* check if toplogy has changed and update node[] and link[] accordingly */
- function cdiff(json) {
- var changed = false;
-
- var n_adds = json.nodes.node_diff(nodes);
- var n_rems = nodes.node_diff(json.nodes);
- for (var i = 0; i < n_adds.length; i++) {
- nodes.push(n_adds[i]);
- changed = true;
- }
- for (var i = 0; i < n_rems.length; i++) {
- for (var j = 0; j < nodes.length; j++) {
- if ( nodes[j].name == n_rems[i].name ){
- nodes.splice(j,1);
- changed = true;
- break;
- }
- }
- }
- var l_adds = [];
- var l_rems = [];
- l_adds = added_links(json, links, l_adds);
- l_rems = gone_links(json, links, l_rems);
- for (var i = 0; i < l_rems.length ; i++) {
- for (var j = 0; j < links.length; j++) {
- if (links[j].source.name == l_rems[i].source.name &&
- links[j].target.name == l_rems[i].target.name) {
- links.splice(j,1);
- changed = true;
- break;
- }
- }
- }
- // Sorce/target of an element of l_adds[] are corresponding to the index of json.node[]
- // which is different from the index of node[] (new nodes are always added to the last)
- // So update soure/target node indexes of l_add[] need to be fixed to point to the proper
- // node in node[];
- for (var i = 0; i < l_adds.length; i++) {
- for (var j = 0; j < nodes.length; j++) {
- if ( json.nodes[l_adds[i].source].name == nodes[j].name ){
- l_adds[i].source = j;
- break;
- }
- }
- for (var j = 0; j < nodes.length; j++) {
- if ( json.nodes[l_adds[i].target].name == nodes[j].name ){
- l_adds[i].target = j;
- break;
- }
- }
- links.push(l_adds[i]);
- changed = true;
- }
-
- // Update "group" attribute of nodes
- for (var i = 0; i < nodes.length; i++) {
- for (var j = 0; j < json.nodes.length; j++) {
- if ( nodes[i].name == json.nodes[j].name ){
- if (nodes[i].group != json.nodes[j].group){
- nodes[i].group = json.nodes[j].group;
- changed = true;
- }
- }
- }
- }
- for (var i = 0; i < links.length; i++) {
- for (var j = 0; j < json.links.length; j++) {
- if (links[i].target.name == json.nodes[json.links[j].target].name &&
- links[i].source.name == json.nodes[json.links[j].source].name ){
- if (links[i].type != json.links[j].type){
- links[i].type = json.links[j].type;
- changed = true;
- }
- }
- }
- }
- return changed
- }
-
- function nr_active_sw(){
- var n=0;
- var nodes = force.nodes();
- for(var i=0;i<nodes.length;i++){
- if(nodes[i].group!=0)
- n++;
- };
- return n;
- }
-
- function draw(force, path, circle, text){
- force.stop();
- svg.append("svg:text")
- .attr("x", 50)
- .attr("y", 20)
- .text(function(){return "Switch: " + force.nodes().length + " (Active: " + nr_active_sw() + ")/ Link: " + force.links().length});
-
- path.enter().append("svg:path")
- .attr("class", function(d) { return "link"; })
- .attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
- circle.enter().append("svg:circle")
- .attr("r", function(d) {
- if (d.group == 1000){
- return radius/2;
- }else{
- return radius;
- }
- })
- .call(node_drag);
-// .call(force.drag);
-
- text.enter().append("svg:text")
- .attr("x", radius)
- .attr("y", ".31em")
- .text(function(d) {
- l=d.name.split(":").length
- return d.name.split(":")[l-2] + ":" + d.name.split(":")[l-1]
- });
-
- circle.append("title")
- .text(function(d) { return d.name; });
-
- 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 if (d.group == 4){
- return "orange"
- }else if (d.group == 5){
- return "cyan"
- }else if (d.group == 6){
- return "magenta"
- }else if (d.group == 7){
- return "yellow"
- }else if (d.group == 8){
- return "purple"
- }else{
- return "gray"
- }
-
- });
-
- path.attr("stroke", function(d) {
- if(d.type == 1){
- return "red"
- } else {
- return "black"
- }
- }).attr("stroke-width", function(d) {
- if(d.type == 1){
- return "2px";
- } else {
- return "1.5px";
- }
- }).attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
-
- path.exit().remove();
- circle.exit().remove();
- text.exit().remove();
-
- force.on("tick", tick);
- force.start();
-
- }
-
- function update(json) {
- var changed = cdiff(json);
-
- console.log("changed? " + changed);
- path = svg.selectAll("path").data(links)
- circle = svg.selectAll("circle").data(nodes);
- text = svg.selectAll("text").data(nodes);
-
- console.log(path)
- if (changed){
-
- draw(force, path, circle, text);
- }
- }
-
- function init_draw(nodes, links){
- path = svg.append("svg:g").selectAll("path").data(links);
- circle = svg.append("svg:g").selectAll("circle").data(nodes);
- text = svg.append("svg:g").selectAll("text").data(nodes);
-
- draw(force, path, circle, text);
-
- setInterval(function() {
- $.ajax({
- url: data_source,
- success: function(json) {
- update(json)
- },
- dataType: "json"
- });
- }, 3000);
- }
- function tick() {
- path.attr("d", function(d) {
- var dx = d.target.x - d.source.x,
- dy = d.target.y - d.source.y,
- dr = 1/d.linknum; //linknum is defined above
- dr = 0; // 0 for direct line
- return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
- });
- path.attr("stroke", function(d) {
- if(d.type == 1){
- return "red"
- } else {
- return "black"
- }
- }).attr("stroke-width", function(d) {
- if(d.type == 1){
- return "3px";
- } else {
- return "1.5px";
- }
- }).attr("marker-end", function(d) {
- if(d.type == 1){
- return "url(#TriangleRed)";
- } else {
- return "url(#Triangle)";
- }
- });
-
-// circle.attr("cx", function(d) { return d.x; }).attr("cy", function(d) { return d.y; });
- circle.attr("transform", function(d) {
- x = Math.max(radius, Math.min(width - radius, d.x));
- y = Math.max(radius, Math.min(height - radius, d.y));
-// return "translate(" + d.x + "," + d.y + ")";
- return "translate(" + x + "," + y + ")";
- })
-
- 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 if (d.group == 4){
- return "orange"
- }else if (d.group == 5){
- return "cyan"
- }else if (d.group == 6){
- return "magenta"
- }else if (d.group == 7){
- return "yellow"
- }else if (d.group == 8){
- return "purple"
- }else{
- return "gray"
- }
- });
-// text.attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; });
- text.attr("transform", function(d) {
- return "translate(" + d.x + "," + d.y + ")";
- });
- }
-}
-
diff --git a/web/link.json b/web/link.json
deleted file mode 100644
index 1bf2b66..0000000
--- a/web/link.json
+++ /dev/null
@@ -1,2636 +0,0 @@
-[
- {
- "dst-switch": "00:00:00:16:97:08:9a:46",
- "src-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 2,
- "dst-port": 2
- },
- {
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 3,
- "dst-port": 2
- },
- {
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 4,
- "dst-port": 51
- },
- {
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 5,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 4,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 2,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:00:00:ba:5e:ba:13",
- "src-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 3,
- "dst-port": 2
- },
- {
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 5,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:16:97:08:9a:46",
- "src-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 2,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 3,
- "dst-port": 4
- },
- {
- "dst-switch": "00:00:00:00:ba:5e:ba:13",
- "src-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 4,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-switch": "00:00:00:00:ba:5e:ba:13",
- "src-port": 4,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:00:00:00:ba:12",
- "src-switch": "00:00:00:00:ba:5e:ba:13",
- "src-port": 2,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:20:4e:7f:51:8a:35",
- "src-switch": "00:00:00:00:ba:5e:ba:13",
- "src-port": 3,
- "dst-port": 4
- },
- {
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 5,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 2,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:00:00:00:00:ba:12",
- "src-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 3,
- "dst-port": 2
- },
- {
- "dst-switch": "00:00:20:4e:7f:51:8a:35",
- "src-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 4,
- "dst-port": 3
- },
- {
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 4,
- "dst-port": 26
- },
- {
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 2,
- "dst-port": 2
- },
- {
- "dst-switch": "00:00:20:4e:7f:51:8a:35",
- "src-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 3,
- "dst-port": 2
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:15"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0f"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:11"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0c"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:03"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:16"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0b"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0e"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0d"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0c"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:19"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:12"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:16"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:06"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:02"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:02"
- },
- {
- "dst-port": 51,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:02"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:11"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:04"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:06"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:09"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:14"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0f"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0e"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:02"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:08"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0d"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0b"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:16"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:12"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:01:03"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:03"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:03"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:03"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:07"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:19"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:05",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:14"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:08"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:03",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:05",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:06"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:05"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0f"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:05"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:05"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:05"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:19"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:14"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0c"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0e"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:19"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:10"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0a"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0b"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0f"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0c"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:02"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:16"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0a"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:02"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:11"
- },
- {
- "dst-port": 31,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1f"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0b"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:11"
- },
- {
- "dst-port": 44,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2c"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:09"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:19"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:10"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:17"
- },
- {
- "dst-port": 39,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:27"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0e"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0b"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:15"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0d"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0d"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:15"
- },
- {
- "dst-port": 27,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1b"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:03"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:15"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0d"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:05"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0a"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:17"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:12"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:08"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:08"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:11"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:17"
- },
- {
- "dst-port": 35,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:23"
- },
- {
- "dst-port": 38,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:26"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:19"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:04"
- },
- {
- "dst-port": 36,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:24"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:0a"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:17"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0c"
- },
- {
- "dst-port": 43,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2b"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:05"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:08"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:04"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:18"
- },
- {
- "dst-port": 28,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1c"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:07:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:07:01"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:10"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0c"
- },
- {
- "dst-port": 30,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1e"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:04"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:13"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:28",
- "src-port": 40,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:31",
- "src-port": 49,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1f",
- "src-port": 31,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1b",
- "src-port": 27,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:22",
- "src-port": 34,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:29",
- "src-port": 41,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:30",
- "src-port": 48,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1c",
- "src-port": 28,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:21",
- "src-port": 33,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2a",
- "src-port": 42,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2f",
- "src-port": 47,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2e",
- "src-port": 46,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1a",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:24",
- "src-port": 36,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2d",
- "src-port": 45,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:23",
- "src-port": 35,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:02",
- "src-port": 51,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:25",
- "src-port": 37,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2c",
- "src-port": 44,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:2b",
- "src-port": 43,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1e",
- "src-port": 30,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:26",
- "src-port": 38,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:1d",
- "src-port": 29,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:27",
- "src-port": 39,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:20",
- "src-port": 32,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:32",
- "src-port": 50,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:10"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:14"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:04"
- },
- {
- "dst-port": 49,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:31"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:14"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:05"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:18"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:12"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0b"
- },
- {
- "dst-port": 42,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2a"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:18"
- },
- {
- "dst-port": 48,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:30"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:14"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:15"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:13"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:07"
- },
- {
- "dst-port": 37,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:25"
- },
- {
- "dst-port": 33,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:21"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:17"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:06"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:10"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:11"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0d"
- },
- {
- "dst-port": 32,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:20"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:10"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:09"
- },
- {
- "dst-port": 34,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:22"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:04"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:09"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:15"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:07"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0c"
- },
- {
- "dst-port": 47,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2f"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:10"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:09"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0d"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:13"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:06"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0f"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:02"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:09"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:18"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:12"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:18"
- },
- {
- "dst-port": 45,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2d"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0b"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:13"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:02"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:14"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:01",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:08:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:08:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:01:03",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:03"
- },
- {
- "dst-port": 29,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1d"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:03"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:19"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:07"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:08"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0e"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0e"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:07"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:06"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:0f"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:05"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:05:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:05:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:01"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:01"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:12"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0a"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:03"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:11"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:17"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:12"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:13"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:07"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0a"
- },
- {
- "dst-port": 40,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:28"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:0a"
- },
- {
- "dst-port": 50,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:32"
- },
- {
- "dst-port": 41,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:29"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:05"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:05"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:16"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:03"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:17"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:13"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:04"
- },
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:1a"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:06"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:02"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:07:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:07:13"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:04:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:04:01"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:15"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:03"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:18"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:09"
- },
- {
- "dst-port": 46,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:2e"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:0f"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:02"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:0e"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:16"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:06:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:16"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:08:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:08:07"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:04:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:04:18"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0c",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:16",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:14",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:06",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0d",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:13",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:05",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:12",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:19",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:07",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:05",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:08",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:11",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:02",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:09",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0a",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:17",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:10",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0f",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:18",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0e",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:15",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:03",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:0b",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:06:04",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:06:01"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:05:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:05:08"
- }
-]
diff --git a/web/onos-topology-route.html b/web/onos-topology-route.html
deleted file mode 100644
index cbda5e9..0000000
--- a/web/onos-topology-route.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="utf-8">
-<style>
-path.link {
- fill: none;
-}
-circle {
- stroke: #333;
- stroke-width: 1.5px;
-}
-
-text {
- font: 20px sans-serif;
- pointer-events: none;
-}
-</style>
-<head>
-<title>ONOS GUI</title>
-<script src="http://d3js.org/d3.v3.min.js"></script>
-<script type="text/javascript" src="js/onos-topology-route.js"></script>
-<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
-</head>
-<body>
-<svg width="4in" height="2in"
- viewBox="0 0 4000 2000" version="1.1"
- xmlns="http://www.w3.org/2000/svg">
- <defs>
- <marker id="Triangle"
- viewBox="0 -5 10 10" refX="15" refY="-1.5"
- markerUnits="strokeWidth"
- markerWidth="6" markerHeight="6"
- orient="auto">
- <path d="M0,-5L10,0L0,5"/>
- </marker>
- <marker id="TriangleRed"
- viewBox="0 -5 10 10" refX="10" refY="-0.2"
- markerUnits="strokeWidth"
- markerWidth="6" markerHeight="6"
- orient="auto">
- <path d="M0,-5L10,0L0,5" fill="red" stroke="red"/>
- </marker>
- </defs>
-<script type="text/javascript">
-gui("http://onosnat.onlab.us:8080/wm/floodlight/topology/toporoute/00:00:00:0d:00:d1/2/00:00:00:0d:00:d3/3/json");
-</script>
-</svg>
-</body>
-</html>
diff --git a/web/onos-topology.html b/web/onos-topology.html
deleted file mode 100644
index 6db7862..0000000
--- a/web/onos-topology.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset="utf-8">
-<style>
-circle {
- stroke: #333;
- stroke-width: 1.5px;
-}
-
-text {
- font: 20px sans-serif;
- pointer-events: none;
-}
-
-</style>
-<head>
-<title>ONOS GUI</title>
-<script src="http://d3js.org/d3.v3.min.js"></script>
-<script type="text/javascript" src="js/onos-topology.js"></script>
-<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
-</head>
-<body>
-<svg width="0.1in" height="0.1in"
- viewBox="0 0 4000 2000" version="1.1"
- xmlns="http://www.w3.org/2000/svg">
- <defs>
- <marker id="Triangle"
- viewBox="0 -5 10 10" refX="15" refY="-1.5"
- markerUnits="strokeWidth"
- markerWidth="6" markerHeight="6"
- orient="auto">
- <path d="M0,-5L10,0L0,5"/>
- </marker>
- <marker id="TriangleRed"
- viewBox="0 -5 10 10" refX="10" refY="-0.2"
- markerUnits="strokeWidth"
- markerWidth="6" markerHeight="6"
- orient="auto">
- <path d="M0,-5L10,0L0,5" fill="red" stroke="red"/>
- </marker>
- </defs>
-<h1>ONOS Simple Topology GUI</h1>
-<h2>Controller Status</h2>
-<div id="servers"></div>
-<div id="onos-status"></div>
-<h2>Topology View</h2>
-<div id="topology"></div>
-<script type="text/javascript" src="js/controller-status.js"></script>
-<script type="text/javascript">
-controller_status("controller_status");
-gui("topology");
-</script>
-</svg>
-</body>
-</html>
diff --git a/web/topology_rest.py b/web/topology_rest.py
deleted file mode 100755
index 66ac463..0000000
--- a/web/topology_rest.py
+++ /dev/null
@@ -1,209 +0,0 @@
-#! /usr/bin/env python
-import os
-import sys
-import json
-from urllib2 import Request, urlopen, URLError, HTTPError
-from flask import Flask, json, Response, render_template, make_response, request
-
-# The GUI can be accessed at <this_host>:9000/onos-topology.html
-
-WEB_DIR = os.path.dirname(os.path.realpath(__file__))
-
-LOCAL_CONFIG_FILE = os.path.join(WEB_DIR, "config.json")
-DEFAULT_CONFIG_FILE = os.path.join(WEB_DIR, "config.json.default")
-
-app = Flask(__name__)
-
-def read_config():
- global guiIp, guiPort, onosIp, onosPort, controllers
-
- if (os.path.isfile(LOCAL_CONFIG_FILE)):
- confFile = open(LOCAL_CONFIG_FILE)
- else:
- print " * Local config file not found - loading default: %s" % DEFAULT_CONFIG_FILE
- print " * If you want to modify the config, copy %s to %s and make changes there" % (DEFAULT_CONFIG_FILE, LOCAL_CONFIG_FILE)
- print " "
- confFile = open(DEFAULT_CONFIG_FILE)
-
- conf = json.load(confFile)
-
- try:
- guiIp = conf['gui-ip']
- guiPort = conf['gui-port']
- onosIp = conf['onos-ip']
- onosPort = conf['onos-port']
- controllers = conf['controllers']
- except KeyError as e:
- print " Parameters were missing from the config file: %s" % e
- print " Your may be using an old version - please check your config matches the template in %s" % DEFAULT_CONFIG_FILE
- sys.exit(1)
-
- confFile.close()
-
-## Worker Functions ##
-def log_error(txt):
- print '%s' % (txt)
-
-### File Fetch ###
-@app.route('/ui/img/<filename>', methods=['GET'])
-@app.route('/js/<filename>', methods=['GET'])
-@app.route('/log/<filename>', methods=['GET'])
-@app.route('/', methods=['GET'])
-@app.route('/<filename>', methods=['GET'])
-def return_file(filename="index.html"):
- if request.path == "/":
- fullpath = os.path.join(WEB_DIR, "onos-topology.html")
- else:
- fullpath = os.path.join(WEB_DIR, str(request.path)[1:])
-
- try:
- open(fullpath)
- except:
- response = make_response("Cannot find a file: %s" % (fullpath), 500)
- response.headers["Content-type"] = "text/html"
- return response
-
- response = make_response(open(fullpath).read())
- suffix = fullpath.split(".")[-1]
-
- if suffix == "html" or suffix == "htm":
- response.headers["Content-type"] = "text/html"
- elif suffix == "js":
- response.headers["Content-type"] = "application/javascript"
- elif suffix == "css":
- response.headers["Content-type"] = "text/css"
- elif suffix == "png":
- response.headers["Content-type"] = "image/png"
- elif suffix == "svg":
- response.headers["Content-type"] = "image/svg+xml"
-
- return response
-
-###### ONOS REST API ##############################
-## Worker Func ###
-def get_json(url):
- code = 200;
- try:
- response = urlopen(url)
- except URLError, e:
- log_error("get_json: REST IF %s has issue. Reason: %s" % (url, e.reason))
- result = ""
- return (500, result)
- except HTTPError, e:
- log_error("get_json: REST IF %s has issue. Code %s" % (url, e.code))
- result = ""
- return (e.code, result)
-
- result = response.read()
- return (code, result)
-
-
-def node_id(switch_array, dpid):
- id = -1
- for i, val in enumerate(switch_array):
- if val['name'] == dpid:
- id = i
- break
-
- return id
-
-## API for ON.Lab local GUI ##
-@app.route('/topology', methods=['GET'])
-def topology_for_gui():
- try:
- url="http://%s:%s/wm/onos/topology/switches/json" % (onosIp, onosPort)
- (code, result) = get_json(url)
- parsedResult = json.loads(result)
- except:
- log_error("REST IF has issue: %s" % url)
- log_error("%s" % result)
- return
-
- topo = {}
- switches = []
- links = []
- devices = []
-
- for v in parsedResult:
- if v.has_key('dpid'):
-# if v.has_key('dpid') and str(v['state']) == "ACTIVE":#;if you want only ACTIVE nodes
- dpid = str(v['dpid'])
- state = str(v['state'])
- sw = {}
- sw['name']=dpid
- sw['group']= -1
-
- if state == "INACTIVE":
- sw['group']=0
- switches.append(sw)
-
- try:
- url="http://%s:%s/wm/onos/registry/switches/json" % (onosIp, onosPort)
- (code, result) = get_json(url)
- parsedResult = json.loads(result)
- except:
- log_error("REST IF has issue: %s" % url)
- log_error("%s" % result)
-
- for key in parsedResult:
- dpid = key
- ctrl = parsedResult[dpid][0]['controllerId']
- sw_id = node_id(switches, dpid)
- if sw_id != -1:
- if switches[sw_id]['group'] != 0:
- switches[sw_id]['group'] = controllers.index(ctrl) + 1
-
- try:
- url = "http://%s:%s/wm/onos/topology/links/json" % (onosIp, onosPort)
- (code, result) = get_json(url)
- parsedResult = json.loads(result)
- except:
- log_error("REST IF has issue: %s" % url)
- log_error("%s" % result)
- return
-
- 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
-
- links.append(link)
-
- topo['nodes'] = switches
- topo['links'] = links
-
- js = json.dumps(topo)
- resp = Response(js, status=200, mimetype='application/json')
- return resp
-
-@app.route("/controller_status")
-def controller_status():
- url= "http://%s:%d/wm/onos/registry/controllers/json" % (onosIp, onosPort)
- (code, result) = get_json(url)
- parsedResult = json.loads(result)
-
- cont_status=[]
- for i in controllers:
- status={}
- if i in parsedResult:
- onos=1
- else:
- onos=0
- status["name"]=i
- status["onos"]=onos
- cont_status.append(status)
-
- js = json.dumps(cont_status)
- resp = Response(js, status=200, mimetype='application/json')
- return resp
-
-if __name__ == "__main__":
- read_config()
- #app.debug = True
- app.run(threaded=True, host=guiIp, port=guiPort)
diff --git a/web/ui/img/floodlight.png b/web/ui/img/floodlight.png
deleted file mode 100644
index 98d0477..0000000
--- a/web/ui/img/floodlight.png
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/glyphicons-halflings-white.png b/web/ui/img/glyphicons-halflings-white.png
deleted file mode 100644
index a20760b..0000000
--- a/web/ui/img/glyphicons-halflings-white.png
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/glyphicons-halflings.png b/web/ui/img/glyphicons-halflings.png
deleted file mode 100644
index 92d4445..0000000
--- a/web/ui/img/glyphicons-halflings.png
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/logo.jpg b/web/ui/img/logo.jpg
deleted file mode 100644
index 49795ef..0000000
--- a/web/ui/img/logo.jpg
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/openflow-logo-40px.png b/web/ui/img/openflow-logo-40px.png
deleted file mode 100644
index b455ace..0000000
--- a/web/ui/img/openflow-logo-40px.png
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/server.png b/web/ui/img/server.png
deleted file mode 100644
index 341c73d..0000000
--- a/web/ui/img/server.png
+++ /dev/null
Binary files differ
diff --git a/web/ui/img/switch.png b/web/ui/img/switch.png
deleted file mode 100644
index f8e6910..0000000
--- a/web/ui/img/switch.png
+++ /dev/null
Binary files differ