if interface is up, just change IP address
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 31 Jul 2009 17:35:20 +0000 (17:35 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 31 Jul 2009 17:35:20 +0000 (17:35 +0000)
lib/PXElator/network.pm

index d97a0d8..22b3a47 100644 (file)
@@ -33,8 +33,14 @@ sub tap {
 
        }
 
-       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;