mkdir $pvelogdir;
mkdir $pvetaskdir;
-my $IPV4OCTET = "(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])";
+my $IPV4OCTET = "(?:25[0-5]|(?:2[0-4]|1[0-9]|[1-9])?[0-9])";
our $IPV4RE = "(?:(?:$IPV4OCTET\\.){3}$IPV4OCTET)";
my $IPV6H16 = "(?:[0-9a-fA-F]{1,4})";
my $IPV6LS32 = "(?:(?:$IPV4RE|$IPV6H16:$IPV6H16))";
"(?:(?:(?:(?:$IPV6H16:){0,5}$IPV6H16)?::" . ")$IPV6H16)|" .
"(?:(?:(?:(?:$IPV6H16:){0,6}$IPV6H16)?::" . ")))";
+our $IPRE = "(?:$IPV4RE|$IPV6RE)";
+
+use constant (CLONE_NEWNS => 0x00020000,
+ CLONE_NEWUTS => 0x04000000,
+ CLONE_NEWIPC => 0x08000000,
+ CLONE_NEWUSER => 0x10000000,
+ CLONE_NEWPID => 0x20000000,
+ CLONE_NEWNET => 0x40000000);
+
sub run_with_timeout {
my ($timeout, $code, @param) = @_;
my $rand = Digest::SHA::sha1_hex($$, rand(), $seconds, $microseconds);
- my $mac = '';
- for (my $i = 0; $i < 6; $i++) {
- my $ss = hex(substr($rand, $i*2, 2));
- if (!$i) {
- $ss &= 0xfe; # clear multicast
- $ss |= 2; # set local id
- }
- $ss = sprintf("%02X", $ss);
+ # clear multicast, set local id
+ vec($rand, 0, 8) = (vec($rand, 0, 8) & 0xfe) | 2;
- if (!$i) {
- $mac .= "$ss";
- } else {
- $mac .= ":$ss";
- }
- }
-
- return $mac;
+ return sprintf("%02X:%02X:%02X:%02X:%02X:%02X", unpack("C6", $rand));
}
sub shellquote {
return; # nothing
}
+sub unshare {
+ my ($flags) = @_;
+ syscall 272, $flags;
+}
+
1;