$pipe->reader();
my $readvalues = sub {
- $res->{total} = int(<$pipe>);
- $res->{used} = int(<$pipe>);
- $res->{avail} = int(<$pipe>);
+ $res->{total} = int((<$pipe> =~ /^(\d*)$/)[0]);
+ $res->{used} = int((<$pipe> =~ /^(\d*)$/)[0]);
+ $res->{avail} = int((<$pipe> =~ /^(\d*)$/)[0]);
};
eval {
run_with_timeout($timeout, $readvalues);
}
sub random_ether_addr {
+ my ($prefix) = @_;
my ($seconds, $microseconds) = gettimeofday;
- my $rand = Digest::SHA::sha1_hex($$, rand(), $seconds, $microseconds);
+ my $rand = Digest::SHA::sha1($$, rand(), $seconds, $microseconds);
# clear multicast, set local id
vec($rand, 0, 8) = (vec($rand, 0, 8) & 0xfe) | 2;
- return sprintf("%02X:%02X:%02X:%02X:%02X:%02X", unpack("C6", $rand));
+ my $addr = sprintf("%02X:%02X:%02X:%02X:%02X:%02X", unpack("C6", $rand));
+ if (defined($prefix)) {
+ $addr = uc($prefix) . substr($addr, length($prefix));
+ }
+ return $addr;
}
sub shellquote {