Mercurial > hg > anonet-resdb
annotate doc/ucis.ano/bgp_graph/path_list_to_dot.php @ 51:198bd6e327eb draft
added some more customization capability for ASN names
author | Nick <nick@somerandomnick.ano> |
---|---|
date | Mon, 14 Jun 2010 02:42:56 +0000 |
parents | 0e7ba1239f5a |
children | 8643d1b779de |
rev | line source |
---|---|
28 | 1 #!/usr/bin/php |
2 <?php | |
3 $nodes = array(); | |
4 | |
5 $file = STDIN; | |
6 | |
7 while (!feof($file)) { | |
8 $line = stream_get_line($file, 1024, "\n"); | |
9 if ($line === NULL) break; | |
10 if (!strlen($line)) continue; | |
11 $pathnodes = explode(' ', $line); | |
12 $prevnode = NULL; | |
13 foreach ($pathnodes as $node) { | |
14 if ($prevnode && $node) $nodes[$prevnode][$node] = 1; | |
15 $prevnode = $node; | |
16 } | |
17 } | |
18 | |
19 foreach ($nodes as $node => $links) { | |
20 foreach ($links as $link => $dummy) { | |
34 | 21 if ($node != $link && isset($nodes[$node][$link]) && isset($nodes[$link][$node])) unset($nodes[$link][$node]); |
28 | 22 } |
23 } | |
24 | |
50
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
25 function static_nodename ($node) { switch ($node) { |
51
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
26 // case '64731': return 'SRN (AS64731)'; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
27 // case '64766': return 'UFO (AS64766)'; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
28 }; return NULL; }; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
29 |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
30 function nodenickname ($node) { switch ($node) { |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
31 case '64731': return 'SRN'; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
32 case '64766': return 'UFO'; |
50
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
33 }; return NULL; }; |
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
34 |
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
35 function nodename ($node) { |
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
36 $node=preg_replace('/[^0-9]+/','',$node); |
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
37 if (($name=static_nodename($node))!==NULL) return $name; |
51
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
38 $nameparts=array(); |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
39 if (($nick=nodenickname($node))!==NULL) $nameparts[]=$nick; |
50
0e7ba1239f5a
now pulls AS info from dn42 registry
Nick <nick@somerandomnick.ano>
parents:
47
diff
changeset
|
40 $name=rtrim(`echo $node | ./asn2adminc | ./hdl2person`); |
51
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
41 if (empty($name)) $name='AS'.$node; else $name="AS$node ($name)"; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
42 $nameparts[]=$name; |
198bd6e327eb
added some more customization capability for ASN names
Nick <nick@somerandomnick.ano>
parents:
50
diff
changeset
|
43 return join(' - ',$nameparts); }; |
35 | 44 |
45 $nodelist=array(); | |
46 foreach ($nodes as $node => $links) { | |
47 if (!array_key_exists($node,$nodelist)) $nodelist[$node]=nodename($node); | |
48 foreach ($links as $link => $dummy) | |
47
f2fb1d2dcf8c
fixed another bug (misnamed ASes)
Nick <nick@somerandomnick.ano>
parents:
46
diff
changeset
|
49 if (!array_key_exists($link,$nodelist)) $nodelist[$link]=nodename($link); |
35 | 50 }; |
51 | |
36 | 52 print("graph BGP_nodes {\n"); |
35 | 53 foreach ($nodelist as $node => $name) |
46
c79c2e94307c
forgot semicolons in dot code (bug reported and tracked down by UFO)
Nick <nick@somerandomnick.ano>
parents:
37
diff
changeset
|
54 print "\t".$node.' [label="'.$name.'"];'."\n"; |
35 | 55 |
28 | 56 foreach ($nodes as $node => $links) { |
57 foreach ($links as $link => $dummy) { | |
58 print("\t".$node.' -- '.$link.";\n"); | |
59 } | |
60 } | |
61 print('}'); |