blob: 57460498b4c326213b5abc636dc0c11ed8d12a25 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#!/usr/bin/env perl
BEGIN { push @INC, "/usr/local/share/inf"; }
use INF;
use Data::Dumper;
sub get_inf_by_name($) {
my $name = shift;
for my $h (@$INF::infs) {
if ( ( $h->{nice_name} eq $name )
or ( $h->{host} eq $name ) )
{
return INF->new($h);
}
}
}
my $master = get_inf_by_name("slithrugtanni");
#print Dumper($inf);
#
#
my $slaves = {
'ottar' => 1,
'fjathrhams' => 2,
'fressa' => 3,
'gullinbursti' => 4,
'hildisvini' => 5
};
my $slave_map = [];
for my $slave_name ( keys %$slaves ) {
my $slave = get_inf_by_name($slave_name);
my $slave_port = $slaves->{$slave_name};
for ( my $i = 1 ; $i <= 16 ; ++$i ) {
$slave_map->[$slave_port]->[$i] =
$slave_name . sprintf( "%02d", $i );
}
my $n = $slave->port_count();
for ( my $i = 1 ; $i <= $n ; ++$i ) {
my $port_id = $slave->port_id_get_by_number($i);
next unless $port_id =~ /^K/;
my $port_name = $slave->port_name_get($port_id);
my $port_topology = $slave->port_get_topology($port_id);
next unless defined $port_topology;
next unless $port_topology->[1] == 0;
$slave_map->[$slave_port]->[ $port_topology->[0] ] = $port_name;
}
print Dumper($slave_map);
}
print Dumper($slave_map);
my $n = $master->port_count();
for ( my $i = 1 ; $i <= $n ; ++$i ) {
my $port_id = $master->port_id_get_by_number($i);
my $port_name = $master->port_name_get($port_id);
my $port_topology = $master->port_get_topology($port_id);
next unless defined $port_topology;
next unless $port_topology->[1] != 0;
$slave_name = $slave_map->[ $port_topology->[0] ]->[ $port_topology->[1] ];
next unless defined $slave_name;
printf "| +---%-5s %-30s %d.%d => %s\n", $port_id, $port_name,
$port_topology->[0], $port_topology->[1], $slave_name;
next if $slave_name eq $port_name;
$master->port_name_set( $port_id, $slave_name );
$master->get_names();
}
|