15 |
our $nr = 0; |
our $nr = 0; |
16 |
|
|
17 |
sub port { |
sub port { |
18 |
my $del = shift; |
my ($port,$del) = @_; |
19 |
my $port = 10000 + $nr; |
$port += $nr; |
20 |
return join( $del, $server::ip, $port ); |
return join( $del, $server::ip, $port ); |
21 |
} |
} |
22 |
|
|
23 |
sub fork_if_active { qw/monitor/ } |
sub fork_if_active { qw/monitor serial/ } |
24 |
|
|
25 |
use x11; |
use x11; |
26 |
|
|
27 |
sub monitor { |
sub monitor { |
28 |
x11::xterm( "monitor $nr" => 'nc ' . port(' ') ); |
x11::xterm( "monitor $nr" => 'nc ' . port(10000,' ') ); |
29 |
|
} |
30 |
|
|
31 |
|
sub serial { |
32 |
|
x11::xterm( "serial $nr" => 'nc ' . port(11000,' ') ); |
33 |
} |
} |
34 |
|
|
35 |
sub actions { qw/reset activate/ } |
sub actions { qw/reset activate/ } |
36 |
|
|
37 |
sub reset { |
sub reset { |
38 |
my $sock = IO::Socket::INET->new( port(':') ); |
my $sock = IO::Socket::INET->new( port(10000,':') ); |
39 |
print $sock "system_reset\n"; |
print $sock "system_reset\n"; |
40 |
close $sock; |
close $sock; |
41 |
} |
} |
48 |
my $nr = shift || 0; |
my $nr = shift || 0; |
49 |
|
|
50 |
my $mac = sprintf('AC:DE:48:00:00:%02x', $nr); |
my $mac = sprintf('AC:DE:48:00:00:%02x', $nr); |
51 |
my $mon = port(':'); |
my $mon = port(10000,':'); |
52 |
|
my $ser = port(11000,':'); |
53 |
|
|
54 |
my $ifname = 'kvm0'; |
my $ifname = 'kvm0'; |
55 |
|
|
66 |
-net tap,ifname=$ifname,script=no |
-net tap,ifname=$ifname,script=no |
67 |
-boot n |
-boot n |
68 |
-monitor tcp:$mon,server,nowait |
-monitor tcp:$mon,server,nowait |
69 |
|
-serial tcp:$ser,server,nowait |
70 |
|; |
|; |
71 |
# -runas $server::user |
# -runas $server::user |
72 |
$kvm =~ s{\s+}{ }gs; |
$kvm =~ s{\s+}{ }gs; |