8 ##############################
9 ### GRAPH GENERATION ###
10 ##############################
12 sub parse_tiers_file {
14 my($nodes,$edges)=G_new_graph(); # a new graph...
15 $filename=shift or die "Need a tiers file!";
17 open INPUT, $filename;
22 while(defined($line=<INPUT>)){
23 if($line =~ /^\# NODES/) {$state=1; next;}
24 if($line =~ /^\# EDGES/) {$state=2; next;}
25 if(($line=~/^\s*$/) || ($line=~/^\#/)) {next;}
26 if ($state==1){ # Getting the nodes
27 # Node X Y Type (0 = WAN, 1 = MAN, 2 = LAN)
28 my($name,$X,$Y,$type) = split(/\s+/,$line);
29 G_new_node($nodes,$edges,$name);
30 $$nodes{$name}{X} = $X;
31 $$nodes{$name}{Y} = $Y;
32 $$nodes{$name}{type} = $type;
33 $$nodes{$name}{using_path} = [];
34 print STDERR "$name [$X $Y $type]\n";
37 if ($state==2){ # Getting the edges
38 # From To Delay Band- From To State (1:active, 2:redundant
39 # Node Node width Type Type 3:internetwork, 4:red.inter.)
40 my($src,$dst,$delay,$bw,$srct,$dstt,$type) = split(/\s+/,$line);
41 if(!defined($$nodes{$src}{out}{$dst})) {
42 # links are symetric and simple
43 my($edge_count)=G_connect($nodes,$edges,$src,$dst);
44 $$edges{$edge_count}{delay} = $delay;
45 $$edges{$edge_count}{bw} = $bw;
46 $$edges{$edge_count}{type} = $type;
47 $$edges{$edge_count}{using_path} = [];
48 print STDERR "($dst,$src) [$delay $bw $type]\n";
54 return($nodes,$edges);
57 sub generate_host_list{
58 my($nodes,$edges,$proba) = @_;
61 foreach $u (sort (keys %$nodes)){ # type 0 = WAN, 1 = MAN, 2 = LAN
62 if(($$nodes{$u}{type}==2) && (rand() < $proba)) {
69 @host_list = sort {$a <=> $b} @host_list;