--- lib/PXElator/network.pm 2009/07/31 17:12:52 83 +++ lib/PXElator/network.pm 2009/07/31 21:42:10 99 @@ -20,21 +20,29 @@ system "sudo apt-get install vde2"; - $interfaces .= qq{ + write_file '/tmp/interfaces', qq{ - iface tap0 inet static - address $server::ip - netmask $server::netmask - vde2-switch - +# added by PXElator +iface tap0 inet static + address $server::ip + netmask $server::netmask + vde2-switch - }; - write_file '/etc/network/interfaces', $interfaces; + system q|sudo sh -c 'cat /tmp/interfaces >> /etc/network/interfaces'|; + system q|sudo sh -c 'usermod -G vde2-net -a $SUDO_USER'|; } - ifconfig('tap0') =~ m{UP} && return 'up'; - system("sudo ifup tap0") == 0 && return 'started'; + 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;