--- lib/PXElator/network.pm 2009/07/31 17:07:39 82 +++ lib/PXElator/network.pm 2009/07/31 17:35:20 84 @@ -7,6 +7,11 @@ use server; +sub ifconfig { + my $dev = shift; + `/sbin/ifconfig $dev` +} + sub tap { my $interfaces = read_file '/etc/network/interfaces'; @@ -28,9 +33,14 @@ } - `/sbin/ifconfig tap0 2>/dev/null` =~ m{UP} || system "sudo ifup tap0"; - - 1; + my $ifconfig = ifconfig('tap0'); + if ( $ifconfig =~ m{UP} ) { + $ifconfig =~ m{$server::ip}s && return 'up'; + system("sudo /sbin/ifconfig tap0 $server::ip netmask $server::netmask") == 0 && return "ip changed $server::ip"; + die "can't change IP address of tap0 to $server::ip"; + } + system("sudo ifup tap0") == 0 && return 'started'; + die "can't start tap0: $!"; } 1;