summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Bluhm <bluhm@cvs.openbsd.org>2013-01-03 17:48:16 +0000
committerAlexander Bluhm <bluhm@cvs.openbsd.org>2013-01-03 17:48:16 +0000
commit0d69d083a700ec3a373153c96c481ad3abf8fbf7 (patch)
tree1c923f14aa878d455b71ee5b91d728b9c641b99d
parent867b8b1f504b125f67178219400437a32f35910b (diff)
The socket splicing tests have been moved from directory splice to
sosplice.
-rw-r--r--regress/sys/kern/splice/Child.pm34
-rw-r--r--regress/sys/kern/splice/Client.pm82
-rw-r--r--regress/sys/kern/splice/Makefile63
-rw-r--r--regress/sys/kern/splice/Proc.pm159
-rw-r--r--regress/sys/kern/splice/Relay.pm124
-rw-r--r--regress/sys/kern/splice/Remote.pm73
-rw-r--r--regress/sys/kern/splice/Server.pm85
-rw-r--r--regress/sys/kern/splice/args-default.pl11
-rw-r--r--regress/sys/kern/splice/args-idle-reverse.pl27
-rw-r--r--regress/sys/kern/splice/args-idle-timeout.pl18
-rw-r--r--regress/sys/kern/splice/args-idle-trickle.pl18
-rw-r--r--regress/sys/kern/splice/args-inet6-client.pl23
-rw-r--r--regress/sys/kern/splice/args-inet6-server.pl23
-rw-r--r--regress/sys/kern/splice/args-inet6.pl23
-rw-r--r--regress/sys/kern/splice/args-long.pl14
-rw-r--r--regress/sys/kern/splice/args-max-sleep-client-nonblock.pl19
-rw-r--r--regress/sys/kern/splice/args-max-sleep-client-short.pl18
-rw-r--r--regress/sys/kern/splice/args-max-sleep-client.pl19
-rw-r--r--regress/sys/kern/splice/args-max-sleep-relay-short.pl18
-rw-r--r--regress/sys/kern/splice/args-max-sleep-relay.pl21
-rw-r--r--regress/sys/kern/splice/args-max-sleep-server.pl23
-rw-r--r--regress/sys/kern/splice/args-max-time.pl23
-rw-r--r--regress/sys/kern/splice/args-max.pl19
-rw-r--r--regress/sys/kern/splice/args-maxcopy-sleep-client.pl18
-rw-r--r--regress/sys/kern/splice/args-maxcopy-sleep-relay.pl15
-rw-r--r--regress/sys/kern/splice/args-maxcopy-sleep-server.pl18
-rw-r--r--regress/sys/kern/splice/args-nonblock.pl17
-rw-r--r--regress/sys/kern/splice/args-null-max-sleep-client-nonblock.pl19
-rw-r--r--regress/sys/kern/splice/args-null-max-sleep-client.pl18
-rw-r--r--regress/sys/kern/splice/args-null-sleep-client.pl15
-rw-r--r--regress/sys/kern/splice/args-null.pl14
-rw-r--r--regress/sys/kern/splice/args-oob-max-sleep-client.pl22
-rw-r--r--regress/sys/kern/splice/args-oob-max-sleep-relay.pl23
-rw-r--r--regress/sys/kern/splice/args-oob-max-sleep-server.pl22
-rw-r--r--regress/sys/kern/splice/args-oob-max.pl22
-rw-r--r--regress/sys/kern/splice/args-oob-nonblock.pl22
-rw-r--r--regress/sys/kern/splice/args-oob-reverse-nonblock.pl23
-rw-r--r--regress/sys/kern/splice/args-oob-reverse.pl22
-rw-r--r--regress/sys/kern/splice/args-oob.pl21
-rw-r--r--regress/sys/kern/splice/args-oobinline-max-sleep-client.pl23
-rw-r--r--regress/sys/kern/splice/args-oobinline-max-sleep-relay.pl25
-rw-r--r--regress/sys/kern/splice/args-oobinline-max-sleep-server.pl23
-rw-r--r--regress/sys/kern/splice/args-oobinline-max.pl24
-rw-r--r--regress/sys/kern/splice/args-oobinline-nonblock.pl25
-rw-r--r--regress/sys/kern/splice/args-oobinline-reverse-nonblock.pl26
-rw-r--r--regress/sys/kern/splice/args-oobinline-reverse.pl25
-rw-r--r--regress/sys/kern/splice/args-oobinline.pl24
-rw-r--r--regress/sys/kern/splice/args-relay-close-in.pl31
-rw-r--r--regress/sys/kern/splice/args-relay-read-blocking.pl17
-rw-r--r--regress/sys/kern/splice/args-relay-read-eof.pl27
-rw-r--r--regress/sys/kern/splice/args-relay-read-forked.pl36
-rw-r--r--regress/sys/kern/splice/args-relay-write-forked.pl38
-rw-r--r--regress/sys/kern/splice/args-reset-eof.pl12
-rw-r--r--regress/sys/kern/splice/args-reset-sleep-server.pl28
-rw-r--r--regress/sys/kern/splice/args-reset.pl24
-rw-r--r--regress/sys/kern/splice/args-reverse-long.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse-nonblock.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse-null.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse-sleep-client.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse-sleep-relay.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse-sleep-server.pl21
-rw-r--r--regress/sys/kern/splice/args-reverse.pl20
-rw-r--r--regress/sys/kern/splice/args-server-abort.pl32
-rw-r--r--regress/sys/kern/splice/args-server-exit.pl33
-rw-r--r--regress/sys/kern/splice/args-short.pl14
-rw-r--r--regress/sys/kern/splice/args-sleep-client.pl15
-rw-r--r--regress/sys/kern/splice/args-sleep-relay.pl17
-rw-r--r--regress/sys/kern/splice/args-sleep-server.pl17
-rw-r--r--regress/sys/kern/splice/args-smallbuf-sleep-client.pl19
-rw-r--r--regress/sys/kern/splice/args-smallbuf-sleep-relay.pl19
-rw-r--r--regress/sys/kern/splice/args-smallbuf-sleep-server.pl21
-rw-r--r--regress/sys/kern/splice/args-smallbuf.pl18
-rw-r--r--regress/sys/kern/splice/args-smallrcv-sleep-client.pl18
-rw-r--r--regress/sys/kern/splice/args-smallrcv-sleep-relay.pl18
-rw-r--r--regress/sys/kern/splice/args-smallrcv-sleep-server.pl20
-rw-r--r--regress/sys/kern/splice/args-smallrcv.pl17
-rw-r--r--regress/sys/kern/splice/args-smallsnd-sleep-client.pl18
-rw-r--r--regress/sys/kern/splice/args-smallsnd-sleep-relay.pl18
-rw-r--r--regress/sys/kern/splice/args-smallsnd-sleep-server.pl20
-rw-r--r--regress/sys/kern/splice/args-smallsnd.pl17
-rw-r--r--regress/sys/kern/splice/args-write-sleep-server.pl28
-rw-r--r--regress/sys/kern/splice/args-write.pl24
-rwxr-xr-xregress/sys/kern/splice/direct.pl92
-rwxr-xr-xregress/sys/kern/splice/echo.pl133
-rwxr-xr-xregress/sys/kern/splice/error-EBUSY.pl38
-rwxr-xr-xregress/sys/kern/splice/error-ENOTCONN.pl19
-rwxr-xr-xregress/sys/kern/splice/error-EOPNOTSUPP.pl20
-rwxr-xr-xregress/sys/kern/splice/error-EPROTONOSUPPORT.pl19
-rwxr-xr-xregress/sys/kern/splice/error-idle-EINVAL.pl36
-rwxr-xr-xregress/sys/kern/splice/error-max-EINVAL.pl36
-rwxr-xr-xregress/sys/kern/splice/error-splice-EBADF.pl23
-rwxr-xr-xregress/sys/kern/splice/error-splice-EBUSY.pl38
-rwxr-xr-xregress/sys/kern/splice/error-splice-EINVAL.pl27
-rwxr-xr-xregress/sys/kern/splice/error-splice-ENOTCONN.pl27
-rwxr-xr-xregress/sys/kern/splice/error-splice-ENOTSOCK.pl23
-rwxr-xr-xregress/sys/kern/splice/error-splice-EOPNOTSUPP.pl28
-rwxr-xr-xregress/sys/kern/splice/error-splice-EPROTONOSUPPORT.pl27
-rw-r--r--regress/sys/kern/splice/funcs.pl412
-rwxr-xr-xregress/sys/kern/splice/relay.pl130
-rwxr-xr-xregress/sys/kern/splice/remote.pl174
100 files changed, 0 insertions, 3507 deletions
diff --git a/regress/sys/kern/splice/Child.pm b/regress/sys/kern/splice/Child.pm
deleted file mode 100644
index 091c2c9e448..00000000000
--- a/regress/sys/kern/splice/Child.pm
+++ /dev/null
@@ -1,34 +0,0 @@
-# $OpenBSD: Child.pm,v 1.1 2011/01/07 22:06:08 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Child;
-use parent 'Proc';
-
-sub new {
- my $class = shift;
- my %args = @_;
- $args{up} ||= "Forked";
- my $self = Proc::new($class, %args);
- return $self;
-}
-
-sub child {
-}
-
-1;
diff --git a/regress/sys/kern/splice/Client.pm b/regress/sys/kern/splice/Client.pm
deleted file mode 100644
index f17f7f5129f..00000000000
--- a/regress/sys/kern/splice/Client.pm
+++ /dev/null
@@ -1,82 +0,0 @@
-# $OpenBSD: Client.pm,v 1.2 2012/07/09 14:23:17 bluhm Exp $
-
-# Copyright (c) 2010-2012 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Client;
-use parent 'Proc';
-use Carp;
-use Socket qw(IPPROTO_TCP TCP_NODELAY);
-use Socket6;
-use IO::Socket;
-use IO::Socket::INET6;
-
-sub new {
- my $class = shift;
- my %args = @_;
- $args{logfile} ||= "client.log";
- $args{up} ||= "Connected";
- $args{down} ||= $args{alarm} ? "Alarm" :
- "Shutdown|Broken pipe|Connection reset by peer";
- my $self = Proc::new($class, %args);
- $self->{connectdomain}
- or croak "$class connect domain not given";
- $self->{connectaddr}
- or croak "$class connect addr not given";
- $self->{connectport}
- or croak "$class connect port not given";
- return $self;
-}
-
-sub child {
- my $self = shift;
-
- my $cs = IO::Socket::INET6->new(
- Proto => "tcp",
- Domain => $self->{connectdomain},
- Blocking => ($self->{nonblocking} ? 0 : 1),
- ) or die ref($self), " socket connect failed: $!";
- if ($self->{oobinline}) {
- setsockopt($cs, SOL_SOCKET, SO_OOBINLINE, pack('i', 1))
- or die ref($self), " set oobinline connect failed: $!";
- }
- if ($self->{sndbuf}) {
- setsockopt($cs, SOL_SOCKET, SO_SNDBUF,
- pack('i', $self->{sndbuf}))
- or die ref($self), " set sndbuf connect failed: $!";
- }
- if ($self->{rcvbuf}) {
- setsockopt($cs, SOL_SOCKET, SO_RCVBUF,
- pack('i', $self->{rcvbuf}))
- or die ref($self), " set rcvbuf connect failed: $!";
- }
- setsockopt($cs, IPPROTO_TCP, TCP_NODELAY, pack('i', 1))
- or die ref($self), " set nodelay connect failed: $!";
- my @rres = getaddrinfo($self->{connectaddr}, $self->{connectport},
- $self->{connectdomain}, SOCK_STREAM);
- $cs->connect($rres[3])
- or die ref($self), " connect failed: $!";
- print STDERR "connect sock: ",$cs->sockhost()," ",$cs->sockport(),"\n";
- print STDERR "connect peer: ",$cs->peerhost()," ",$cs->peerport(),"\n";
-
- open(STDOUT, '>&', $cs)
- or die ref($self), " dup STDOUT failed: $!";
- open(STDIN, '<&', $cs)
- or die ref($self), " dup STDIN failed: $!";
-}
-
-1;
diff --git a/regress/sys/kern/splice/Makefile b/regress/sys/kern/splice/Makefile
deleted file mode 100644
index 232fb0ed1c0..00000000000
--- a/regress/sys/kern/splice/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2011/08/28 13:24:21 bluhm Exp $
-
-# The following ports must be installed for the regression tests:
-# p5-BSD-Socket-Splice perl interface to OpenBSD socket splicing
-# p5-IO-Socket-INET6 object interface for AF_INET and AF_INET6 domain sockets
-# p5-Socket6 Perl defines relating to AF_INET6 sockets
-
-ERRS != cd ${.CURDIR} && ls error-*.pl
-ARGS != cd ${.CURDIR} && ls args-*.pl
-TARGETS ?= ${ERRS} ${ARGS}
-REGRESS_TARGETS = ${TARGETS:S/^/run-regress-/}
-CLEANFILES = *.log ktrace.out
-
-# Fill out these variables if you want to test socket splicing with
-# the relay process running on a remote machine. You have to specify
-# a local and remote ip address for the tcp connections. To control
-# the remote machine you need a hostname for ssh to log in. All the
-# test files must be in the same directory local and remote.
-LOCAL_ADDR ?=
-REMOTE_ADDR ?=
-REMOTE_SSH ?=
-
-# Set variables so that make runs with and without obj directory.
-# Only do that if necessary to keep visible output short.
-
-.if ${.CURDIR} == ${.OBJDIR}
-PERLINC =
-PERLPATH =
-.else
-PERLINC = -I${.CURDIR}
-PERLPATH = ${.CURDIR}/
-.endif
-
-# The error tests try to splice unsuitable sockets and check the
-# kernel error code.
-
-.for e in ${ERRS}
-run-regress-$e: $e
- time perl ${PERLINC} ${PERLPATH}$e
-.endfor
-
-# The arg tests take a perl hash with arguments controlling the
-# test parameters. Generally they consist of client, relay, server.
-# The relay.pl test fork these three processes locally. The remote.pl
-# test has local client and server but the relay process is running
-# on a remote machine reachable with ssh. For echo.pl test the
-# relay is an echo process and the client and server process share
-# the same tcp connection. All tests can run with a regular userland
-# copy relay or with a kernel socket splicing relay.
-
-.for a in ${ARGS}
-run-regress-$a: $a
- time perl ${PERLINC} ${PERLPATH}relay.pl copy ${PERLPATH}$a
- time perl ${PERLINC} ${PERLPATH}relay.pl splice ${PERLPATH}$a
-.if ! empty (REMOTE_SSH)
- time perl ${PERLINC} ${PERLPATH}remote.pl copy ${LOCAL_ADDR} ${REMOTE_ADDR} ${REMOTE_SSH} ${PERLPATH}$a
- time perl ${PERLINC} ${PERLPATH}remote.pl splice ${LOCAL_ADDR} ${REMOTE_ADDR} ${REMOTE_SSH} ${PERLPATH}$a
-.endif
- time perl ${PERLINC} ${PERLPATH}echo.pl copy ${PERLPATH}$a
- time perl ${PERLINC} ${PERLPATH}echo.pl splice ${PERLPATH}$a
-.endfor
-
-.include <bsd.regress.mk>
diff --git a/regress/sys/kern/splice/Proc.pm b/regress/sys/kern/splice/Proc.pm
deleted file mode 100644
index 2b64b64d5bb..00000000000
--- a/regress/sys/kern/splice/Proc.pm
+++ /dev/null
@@ -1,159 +0,0 @@
-# $OpenBSD: Proc.pm,v 1.3 2012/07/09 14:23:17 bluhm Exp $
-
-# Copyright (c) 2010-2012 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Proc;
-use Carp;
-use List::Util qw(first);
-use POSIX;
-use Time::HiRes qw(time alarm sleep);
-
-my %CHILDREN;
-
-BEGIN {
- $SIG{TERM} = $SIG{INT} = sub {
- my $sig = shift;
- kill TERM => keys %CHILDREN;
- $SIG{TERM} = $SIG{INT} = 'DEFAULT';
- POSIX::raise($sig);
- };
-}
-
-END {
- kill TERM => keys %CHILDREN;
- $SIG{TERM} = $SIG{INT} = 'DEFAULT';
-}
-
-sub new {
- my $class = shift;
- my $self = { @_ };
- $self->{down} ||= $self->{alarm} ? "Alarm" : "Shutdown";
- $self->{func} && ref($self->{func}) eq 'CODE'
- or croak "$class func not given";
- $self->{logfile}
- or croak "$class log file not given";
- open(my $fh, '>', $self->{logfile})
- or die "$class log file $self->{logfile} create failed: $!";
- $fh->autoflush;
- $self->{log} = $fh;
- return bless $self, $class;
-}
-
-sub run {
- my $self = shift;
-
- defined(my $pid = fork())
- or die ref($self), " fork child failed";
- if ($pid) {
- $CHILDREN{$pid} = 1;
- $self->{pid} = $pid;
- return $self;
- }
- %CHILDREN = ();
- $SIG{TERM} = $SIG{INT} = 'DEFAULT';
- $SIG{__DIE__} = sub {
- die @_ if $^S;
- warn @_;
- IO::Handle::flush(\*STDERR);
- POSIX::_exit(255);
- };
- open(STDERR, '>&', $self->{log})
- or die ref($self), " dup STDERR failed: $!";
-
- $self->child();
- print STDERR $self->{up}, "\n";
- alarm($self->{alarm}) if $self->{alarm};
- $self->{func}->($self);
- print STDERR "Shutdown", "\n";
- IO::Handle::flush(\*STDOUT);
- IO::Handle::flush(\*STDERR);
-
- POSIX::_exit(0);
-}
-
-sub wait {
- my $self = shift;
- my $flags = shift;
-
- my $pid = $self->{pid}
- or croak ref($self), " no child pid";
- my $kid = waitpid($pid, $flags);
- if ($kid > 0) {
- my $status = $?;
- my $code;
- $code = "exit: ". WEXITSTATUS($?) if WIFEXITED($?);
- $code = "signal: ". WTERMSIG($?) if WIFSIGNALED($?);
- $code = "stop: ". WSTOPSIG($?) if WIFSTOPPED($?);
- return wantarray ? ($kid, $status, $code) : $kid;
- }
- return $kid;
-}
-
-sub loggrep {
- my $self = shift;
- my($regex, $timeout) = @_;
-
- my $end = time() + $timeout if $timeout;
-
- do {
- my($kid, $status, $code) = $self->wait(WNOHANG);
- if ($self->{alarm} && $kid > 0 &&
- WIFSIGNALED($status) && WTERMSIG($status) == 14 ) {
- # child killed by SIGALRM as expected
- print {$self->{log}} "Alarm", "\n";
- } elsif ($kid > 0 && $status != 0) {
- # child terminated with failure
- die ref($self), " child status: $status $code";
- }
- open(my $fh, '<', $self->{logfile})
- or die ref($self), " log file open failed: $!";
- my $match = first { /$regex/ } <$fh>;
- return $match if $match;
- close($fh);
- # pattern not found
- if ($kid == 0) {
- # child still running, wait for log data
- sleep .1;
- } else {
- # child terminated, no new log data possible
- return;
- }
- } while ($timeout and time() < $end);
-
- return;
-}
-
-sub up {
- my $self = shift;
- my $timeout = shift || 10;
- $self->loggrep(qr/$self->{up}/, $timeout)
- or croak ref($self), " no $self->{up} in $self->{logfile} ".
- "after $timeout seconds";
- return $self;
-}
-
-sub down {
- my $self = shift;
- my $timeout = shift || 30;
- $self->loggrep(qr/$self->{down}/, $timeout)
- or croak ref($self), " no $self->{down} in $self->{logfile} ".
- "after $timeout seconds";
- return $self;
-}
-
-1;
diff --git a/regress/sys/kern/splice/Relay.pm b/regress/sys/kern/splice/Relay.pm
deleted file mode 100644
index f2e7f903462..00000000000
--- a/regress/sys/kern/splice/Relay.pm
+++ /dev/null
@@ -1,124 +0,0 @@
-# $OpenBSD: Relay.pm,v 1.2 2011/08/28 13:27:35 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Relay;
-use parent 'Proc';
-use Carp;
-use Socket qw(IPPROTO_TCP TCP_NODELAY);
-use Socket6;
-use IO::Socket;
-use IO::Socket::INET6;
-
-sub new {
- my $class = shift;
- my %args = @_;
- $args{logfile} ||= "relay.log";
- $args{up} ||= "Connected";
- $args{forward}
- or croak "$class forward not given";
- my $self = Proc::new($class, %args);
- $self->{listendomain}
- or croak "$class listen domain not given";
- $self->{connectdomain}
- or croak "$class connect domain not given";
- $self->{connectaddr}
- or croak "$class connect addr not given";
- $self->{connectport}
- or croak "$class connect port not given";
- my $ls = IO::Socket::INET6->new(
- Proto => "tcp",
- ReuseAddr => 1,
- Domain => $self->{listendomain},
- $self->{listenaddr} ? (LocalAddr => $self->{listenaddr}) : (),
- $self->{listenport} ? (LocalPort => $self->{listenport}) : (),
- ) or die ref($self), " socket failed: $!";
- if ($self->{oobinline}) {
- setsockopt($ls, SOL_SOCKET, SO_OOBINLINE, pack('i', 1))
- or die ref($self), " set oobinline listen failed: $!";
- }
- if ($self->{sndbuf}) {
- setsockopt($ls, SOL_SOCKET, SO_SNDBUF,
- pack('i', $self->{sndbuf}))
- or die ref($self), " set sndbuf listen failed: $!";
- }
- if ($self->{rcvbuf}) {
- setsockopt($ls, SOL_SOCKET, SO_RCVBUF,
- pack('i', $self->{rcvbuf}))
- or die ref($self), " set rcvbuf listen failed: $!";
- }
- setsockopt($ls, IPPROTO_TCP, TCP_NODELAY, pack('i', 1))
- or die ref($self), " set nodelay listen failed: $!";
- listen($ls, 1)
- or die ref($self), " listen failed: $!";
- my $log = $self->{log};
- print $log "listen sock: ",$ls->sockhost()," ",$ls->sockport(),"\n";
- $self->{listenaddr} = $ls->sockhost() unless $self->{listenaddr};
- $self->{listenport} = $ls->sockport() unless $self->{listenport};
- $self->{ls} = $ls;
- return $self;
-}
-
-sub child {
- my $self = shift;
-
- my $as = $self->{ls}->accept()
- or die ref($self), " socket accept failed: $!";
- print STDERR "accept sock: ",$as->sockhost()," ",$as->sockport(),"\n";
- print STDERR "accept peer: ",$as->peerhost()," ",$as->peerport(),"\n";
- $as->blocking($self->{nonblocking} ? 0 : 1)
- or die ref($self), " non-blocking accept failed: $!";
-
- open(STDIN, '<&', $as)
- or die ref($self), " dup STDIN failed: $!";
- print STDERR "Accepted\n";
-
- my $cs = IO::Socket::INET6->new(
- Proto => "tcp",
- Domain => $self->{connectdomain},
- Blocking => ($self->{nonblocking} ? 0 : 1),
- ) or die ref($self), " socket connect failed: $!";
- if ($self->{oobinline}) {
- setsockopt($cs, SOL_SOCKET, SO_OOBINLINE, pack('i', 1))
- or die ref($self), " set oobinline connect failed: $!";
- }
- if ($self->{sndbuf}) {
- setsockopt($cs, SOL_SOCKET, SO_SNDBUF,
- pack('i', $self->{sndbuf}))
- or die ref($self), " set sndbuf connect failed: $!";
- }
- if ($self->{rcvbuf}) {
- setsockopt($cs, SOL_SOCKET, SO_RCVBUF,
- pack('i', $self->{rcvbuf}))
- or die ref($self), " set rcvbuf connect failed: $!";
- }
- setsockopt($cs, IPPROTO_TCP, TCP_NODELAY, pack('i', 1))
- or die ref($self), " set nodelay connect failed: $!";
- my @rres = getaddrinfo($self->{connectaddr}, $self->{connectport},
- $self->{connectdomain}, SOCK_STREAM);
- $cs->connect($rres[3])
- or die ref($self), " connect failed: $!";
- print STDERR "connect sock: ",$cs->sockhost()," ",$cs->sockport(),"\n";
- print STDERR "connect peer: ",$cs->peerhost()," ",$cs->peerport(),"\n"
- unless $self->{nonblocking};
-
- open(STDOUT, '>&', $cs)
- or die ref($self), " dup STDOUT failed: $!";
-}
-
-1;
diff --git a/regress/sys/kern/splice/Remote.pm b/regress/sys/kern/splice/Remote.pm
deleted file mode 100644
index 2f68c09d0ff..00000000000
--- a/regress/sys/kern/splice/Remote.pm
+++ /dev/null
@@ -1,73 +0,0 @@
-# $OpenBSD: Remote.pm,v 1.1 2011/01/07 22:06:08 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Remote;
-use parent 'Proc';
-use Carp;
-use Cwd;
-use File::Basename;
-
-sub new {
- my $class = shift;
- my %args = @_;
- $args{logfile} ||= "remote.log";
- $args{up} ||= "Started";
- $args{func} = sub { Carp::confess "$class func may not be called" };
- $args{remotessh}
- or croak "$class remote ssh host not given";
- $args{forward}
- or croak "$class forward not given";
- my $self = Proc::new($class, %args);
- $self->{listenaddr}
- or croak "$class listen addr not given";
- $self->{connectaddr}
- or croak "$class connect addr not given";
- $self->{connectport}
- or croak "$class connect port not given";
- return $self;
-}
-
-sub up {
- my $self = Proc::up(shift, @_);
- my $timeout = shift || 10;
- my $lsock = $self->loggrep(qr/^listen sock: /, $timeout)
- or croak ref($self), " no listen sock in $self->{logfile} ".
- "after $timeout seconds";
- my($addr, $port) = $lsock =~ /: (\S+) (\S+)$/
- or croak ref($self), " no listen addr and port in $self->{logfile}";
- $self->{listenaddr} = $addr;
- $self->{listenport} = $port;
- return $self;
-}
-
-sub child {
- my $self = shift;
-
- print STDERR $self->{up}, "\n";
- my @opts = split(' ', $ENV{SSH_OPTIONS}) if $ENV{SSH_OPTIONS};
- my @cmd = ('ssh', '-n', @opts, $self->{remotessh}, 'perl',
- '-I', getcwd(), getcwd().'/'.basename($0), $self->{forward},
- $self->{listenaddr}, $self->{connectaddr}, $self->{connectport},
- ($self->{testfile} ? getcwd().'/'.basename($self->{testfile}) :
- ()));
- exec @cmd;
- die "Exec @cmd failed: $!";
-}
-
-1;
diff --git a/regress/sys/kern/splice/Server.pm b/regress/sys/kern/splice/Server.pm
deleted file mode 100644
index 32168d820a5..00000000000
--- a/regress/sys/kern/splice/Server.pm
+++ /dev/null
@@ -1,85 +0,0 @@
-# $OpenBSD: Server.pm,v 1.1 2011/01/07 22:06:08 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-
-package Server;
-use parent 'Proc';
-use Carp;
-use Socket qw(IPPROTO_TCP TCP_NODELAY);
-use Socket6;
-use IO::Socket;
-use IO::Socket::INET6;
-
-sub new {
- my $class = shift;
- my %args = @_;
- $args{logfile} ||= "server.log";
- $args{up} ||= "Accepted";
- my $self = Proc::new($class, %args);
- $self->{listendomain}
- or croak "$class listen domain not given";
- my $ls = IO::Socket::INET6->new(
- Proto => "tcp",
- ReuseAddr => 1,
- Domain => $self->{listendomain},
- $self->{listenaddr} ? (LocalAddr => $self->{listenaddr}) : (),
- $self->{listenport} ? (LocalPort => $self->{listenport}) : (),
- ) or die ref($self), " socket failed: $!";
- if ($self->{oobinline}) {
- setsockopt($ls, SOL_SOCKET, SO_OOBINLINE, pack('i', 1))
- or die ref($self), " set oobinline listen failed: $!";
- }
- if ($self->{sndbuf}) {
- setsockopt($ls, SOL_SOCKET, SO_SNDBUF,
- pack('i', $self->{sndbuf}))
- or die ref($self), " set sndbuf listen failed: $!";
- }
- if ($self->{rcvbuf}) {
- setsockopt($ls, SOL_SOCKET, SO_RCVBUF,
- pack('i', $self->{rcvbuf}))
- or die ref($self), " set rcvbuf listen failed: $!";
- }
- setsockopt($ls, IPPROTO_TCP, TCP_NODELAY, pack('i', 1))
- or die ref($self), " set nodelay listen failed: $!";
- listen($ls, 1)
- or die ref($self), " socket failed: $!";
- my $log = $self->{log};
- print $log "listen sock: ",$ls->sockhost()," ",$ls->sockport(),"\n";
- $self->{listenaddr} = $ls->sockhost() unless $self->{listenaddr};
- $self->{listenport} = $ls->sockport() unless $self->{listenport};
- $self->{ls} = $ls;
- return $self;
-}
-
-sub child {
- my $self = shift;
-
- my $as = $self->{ls}->accept()
- or die ref($self), " socket accept failed: $!";
- print STDERR "accept sock: ",$as->sockhost()," ",$as->sockport(),"\n";
- print STDERR "accept peer: ",$as->peerhost()," ",$as->peerport(),"\n";
- $as->blocking($self->{nonblocking} ? 0 : 1)
- or die ref($self), " non-blocking accept failed: $!";
-
- open(STDIN, '<&', $as)
- or die ref($self), " dup STDIN failed: $!";
- open(STDOUT, '>&', $as)
- or die ref($self), " dup STDOUT failed: $!";
-}
-
-1;
diff --git a/regress/sys/kern/splice/args-default.pl b/regress/sys/kern/splice/args-default.pl
deleted file mode 100644
index 28e53a92126..00000000000
--- a/regress/sys/kern/splice/args-default.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# test default values
-
-use strict;
-use warnings;
-
-our %args = (
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-idle-reverse.pl b/regress/sys/kern/splice/args-idle-reverse.pl
deleted file mode 100644
index e26a46113b6..00000000000
--- a/regress/sys/kern/splice/args-idle-reverse.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# test non idle connection while reverse splicing gets timeout
-
-use strict;
-use warnings;
-use BSD::Socket::Splice qw(setsplice);
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 6,
- sleep => 1,
- },
- relay => {
- func => sub {
- setsplice(\*STDOUT, \*STDIN, undef, 3)
- or die "reverse splice failed: $!";
- relay(@_);
- },
- idle => 2,
- nocheck => 1,
- },
- len => 6,
- md5 => "857f2261690a2305dba03062e778a73b",
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-idle-timeout.pl b/regress/sys/kern/splice/args-idle-timeout.pl
deleted file mode 100644
index 17f05a38f7b..00000000000
--- a/regress/sys/kern/splice/args-idle-timeout.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test idle timeout
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 1; write_char(@_); sleep 3; },
- },
- relay => {
- idle => 2,
- timeout => 1,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-idle-trickle.pl b/regress/sys/kern/splice/args-idle-trickle.pl
deleted file mode 100644
index d86c9e56175..00000000000
--- a/regress/sys/kern/splice/args-idle-trickle.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test non idle connection does not timeout by sending a byte every second
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 6,
- sleep => 1,
- },
- relay => {
- idle => 2,
- },
- len => 6,
- md5 => "857f2261690a2305dba03062e778a73b",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-inet6-client.pl b/regress/sys/kern/splice/args-inet6-client.pl
deleted file mode 100644
index a542fd12f6d..00000000000
--- a/regress/sys/kern/splice/args-inet6-client.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test ipv6 client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- connectdomain => AF_INET6,
- connectaddr => "::1",
- },
- relay => {
- listendomain => AF_INET6,
- listenaddr => "::1",
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- },
- server => {
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
- },
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-inet6-server.pl b/regress/sys/kern/splice/args-inet6-server.pl
deleted file mode 100644
index fa560098f5b..00000000000
--- a/regress/sys/kern/splice/args-inet6-server.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test ipv6 server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- },
- relay => {
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
- connectdomain => AF_INET6,
- connectaddr => "::1",
- },
- server => {
- listendomain => AF_INET6,
- listenaddr => "::1",
- },
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-inet6.pl b/regress/sys/kern/splice/args-inet6.pl
deleted file mode 100644
index 31b481ca796..00000000000
--- a/regress/sys/kern/splice/args-inet6.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test ipv6 client and server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- connectdomain => AF_INET6,
- connectaddr => "::1",
- },
- relay => {
- listendomain => AF_INET6,
- listenaddr => "::1",
- connectdomain => AF_INET6,
- connectaddr => "::1",
- },
- server => {
- listendomain => AF_INET6,
- listenaddr => "::1",
- },
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-long.pl b/regress/sys/kern/splice/args-long.pl
deleted file mode 100644
index e88d6f40c0d..00000000000
--- a/regress/sys/kern/splice/args-long.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# test longer data length
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-client-nonblock.pl b/regress/sys/kern/splice/args-max-sleep-client-nonblock.pl
deleted file mode 100644
index 6bf962dcca3..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-client-nonblock.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test maximum data length with delay before client write with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- nocheck => 1,
- },
- relay => {
- max => 113,
- nonblocking => 1,
- },
- len => 113,
- md5 => "dc099ef642faa02bce71298f11e7d44d",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-client-short.pl b/regress/sys/kern/splice/args-max-sleep-client-short.pl
deleted file mode 100644
index 79d21aea536..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-client-short.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test maximum data length with delay before client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- nocheck => 1,
- },
- relay => {
- max => 113,
- },
- len => 113,
- md5 => "dc099ef642faa02bce71298f11e7d44d",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-client.pl b/regress/sys/kern/splice/args-max-sleep-client.pl
deleted file mode 100644
index e46f44e68ee..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-client.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test maximum data length with delay before client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); sleep 3; write_char(@_); },
- len => 2**17,
- nocheck => 1,
- },
- relay => {
- max => 32117,
- },
- len => 32117,
- md5 => "ee338e9693fb2a2ec101bb28935ed123",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-relay-short.pl b/regress/sys/kern/splice/args-max-sleep-relay-short.pl
deleted file mode 100644
index f8d38b64a3f..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-relay-short.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test maximum data length with delay before relay copy and short len
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- nocheck => 1,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- max => 113,
- },
- len => 113,
- md5 => "dc099ef642faa02bce71298f11e7d44d",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-relay.pl b/regress/sys/kern/splice/args-max-sleep-relay.pl
deleted file mode 100644
index a921608e704..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-relay.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test maximum data length with delay before relay copy
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**17,
- down => "Client print failed: Broken pipe",
- nocheck => 1,
- },
- relay => {
- func => sub { sleep 3; relay(@_); shutin(@_); sleep 1; },
- max => 32117,
- },
- len => 32117,
- md5 => "ee338e9693fb2a2ec101bb28935ed123",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-sleep-server.pl b/regress/sys/kern/splice/args-max-sleep-server.pl
deleted file mode 100644
index e6493ad3690..00000000000
--- a/regress/sys/kern/splice/args-max-sleep-server.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test maximum data length with delay before server read
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**17,
- nocheck => 1,
- },
- relay => {
- max => 32117,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 32117,
- md5 => "ee338e9693fb2a2ec101bb28935ed123",
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max-time.pl b/regress/sys/kern/splice/args-max-time.pl
deleted file mode 100644
index 438964ecd3f..00000000000
--- a/regress/sys/kern/splice/args-max-time.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test immediate data transfer after maximum data length
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { $| = 1; errignore(@_); write_char(@_); sleep(6); },
- nocheck => 1,
- },
- relay => {
- func => sub { relay(@_); sleep(5); },
- max => 63,
- },
- server => {
- func => sub { alarm(4); read_char(@_); },
- max => 63,
- },
- len => 63,
- md5 => "4a3c3783fc56943715c53e435973b2ee",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-max.pl b/regress/sys/kern/splice/args-max.pl
deleted file mode 100644
index 33d98d02130..00000000000
--- a/regress/sys/kern/splice/args-max.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test maximum data length
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**17,
- nocheck => 1,
- },
- relay => {
- max => 32117,
- },
- len => 32117,
- md5 => "ee338e9693fb2a2ec101bb28935ed123",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-maxcopy-sleep-client.pl b/regress/sys/kern/splice/args-maxcopy-sleep-client.pl
deleted file mode 100644
index adaed950640..00000000000
--- a/regress/sys/kern/splice/args-maxcopy-sleep-client.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test relay maximum data length then copy with delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- },
- relay => {
- func => sub { relay(@_, 61); relay_copy(@_); },
- nocheck => 1,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-maxcopy-sleep-relay.pl b/regress/sys/kern/splice/args-maxcopy-sleep-relay.pl
deleted file mode 100644
index 36e0832cb0e..00000000000
--- a/regress/sys/kern/splice/args-maxcopy-sleep-relay.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# test relay maximum data length then copy with delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- relay => {
- func => sub { sleep 3; relay(@_, 61); relay_copy(@_); },
- nocheck => 1,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-maxcopy-sleep-server.pl b/regress/sys/kern/splice/args-maxcopy-sleep-server.pl
deleted file mode 100644
index 672c90db1ef..00000000000
--- a/regress/sys/kern/splice/args-maxcopy-sleep-server.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test relay maximum data length then copy with delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- relay => {
- func => sub { relay(@_, 61); relay_copy(@_); },
- nocheck => 1,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-nonblock.pl b/regress/sys/kern/splice/args-nonblock.pl
deleted file mode 100644
index 4f3ae6a9737..00000000000
--- a/regress/sys/kern/splice/args-nonblock.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- nonblocking => 1,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-null-max-sleep-client-nonblock.pl b/regress/sys/kern/splice/args-null-max-sleep-client-nonblock.pl
deleted file mode 100644
index 42c3c5557cf..00000000000
--- a/regress/sys/kern/splice/args-null-max-sleep-client-nonblock.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test maximum data length with delay before empty client write with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 0,
- },
- relay => {
- max => 113,
- nonblocking => 1,
- },
- len => 0,
- md5 => "d41d8cd98f00b204e9800998ecf8427e",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-null-max-sleep-client.pl b/regress/sys/kern/splice/args-null-max-sleep-client.pl
deleted file mode 100644
index d39b7ee6897..00000000000
--- a/regress/sys/kern/splice/args-null-max-sleep-client.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test maximum data length with delay before empty client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 0,
- },
- relay => {
- max => 113,
- },
- len => 0,
- md5 => "d41d8cd98f00b204e9800998ecf8427e",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-null-sleep-client.pl b/regress/sys/kern/splice/args-null-sleep-client.pl
deleted file mode 100644
index 2205b87853d..00000000000
--- a/regress/sys/kern/splice/args-null-sleep-client.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# test with delay before empty client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 0,
- },
- len => 0,
- md5 => "d41d8cd98f00b204e9800998ecf8427e",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-null.pl b/regress/sys/kern/splice/args-null.pl
deleted file mode 100644
index fcb0c70826f..00000000000
--- a/regress/sys/kern/splice/args-null.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# test emtpy client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 0,
- },
- len => 0,
- md5 => "d41d8cd98f00b204e9800998ecf8427e",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-max-sleep-client.pl b/regress/sys/kern/splice/args-oob-max-sleep-client.pl
deleted file mode 100644
index 3fa0302317a..00000000000
--- a/regress/sys/kern/splice/args-oob-max-sleep-client.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# test out-of-band data with maximum data length delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); sleep 3; write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- md5 => "e4282daf8d2ca21cc8b70b1314713314",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-max-sleep-relay.pl b/regress/sys/kern/splice/args-oob-max-sleep-relay.pl
deleted file mode 100644
index 72e0d2d6aa6..00000000000
--- a/regress/sys/kern/splice/args-oob-max-sleep-relay.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test out-of-band data with maximum data length delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- md5 => "e4282daf8d2ca21cc8b70b1314713314",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-max-sleep-server.pl b/regress/sys/kern/splice/args-oob-max-sleep-server.pl
deleted file mode 100644
index 72dff6a0dfb..00000000000
--- a/regress/sys/kern/splice/args-oob-max-sleep-server.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# test out-of-band data with maximum data length delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- max => 61,
- },
- server => {
- func => sub { sleep 3; read_oob(@_); },
- },
- len => 61,
- md5 => "e4282daf8d2ca21cc8b70b1314713314",
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-max.pl b/regress/sys/kern/splice/args-oob-max.pl
deleted file mode 100644
index a60cfed6d48..00000000000
--- a/regress/sys/kern/splice/args-oob-max.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# test out-of-band data with maximum data length
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- md5 => "e4282daf8d2ca21cc8b70b1314713314",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-nonblock.pl b/regress/sys/kern/splice/args-oob-nonblock.pl
deleted file mode 100644
index 63ca0c55471..00000000000
--- a/regress/sys/kern/splice/args-oob-nonblock.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# test out-of-band data with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&write_oob,
- nocheck => 1,
- },
- relay => {
- nonblocking => 1,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 247,
- md5 => "f76df02a35322058b8c29002aaea944f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-reverse-nonblock.pl b/regress/sys/kern/splice/args-oob-reverse-nonblock.pl
deleted file mode 100644
index b9b8f3bb712..00000000000
--- a/regress/sys/kern/splice/args-oob-reverse-nonblock.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test out-of-band data when reverse sending with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_oob,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- nonblocking => 1,
- nocheck => 1,
- },
- server => {
- func => \&write_oob,
- nocheck => 1,
- },
- len => 247,
- md5 => "f76df02a35322058b8c29002aaea944f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob-reverse.pl b/regress/sys/kern/splice/args-oob-reverse.pl
deleted file mode 100644
index fb83bb3b645..00000000000
--- a/regress/sys/kern/splice/args-oob-reverse.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# test out-of-band data when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_oob,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- nocheck => 1,
- },
- server => {
- func => \&write_oob,
- nocheck => 1,
- },
- len => 247,
- md5 => "f76df02a35322058b8c29002aaea944f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oob.pl b/regress/sys/kern/splice/args-oob.pl
deleted file mode 100644
index b630a0702e7..00000000000
--- a/regress/sys/kern/splice/args-oob.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test out-of-band data
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&write_oob,
- nocheck => 1,
- },
- relay => {
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 247,
- md5 => "f76df02a35322058b8c29002aaea944f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-max-sleep-client.pl b/regress/sys/kern/splice/args-oobinline-max-sleep-client.pl
deleted file mode 100644
index 9e48feb9cfe..00000000000
--- a/regress/sys/kern/splice/args-oobinline-max-sleep-client.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test inline out-of-band data with maximum data length delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); sleep 3; write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- oobinline => 1,
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- md5 => "c9f459db9b4f369980c79bff17e1c2a0",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-max-sleep-relay.pl b/regress/sys/kern/splice/args-oobinline-max-sleep-relay.pl
deleted file mode 100644
index d778af41778..00000000000
--- a/regress/sys/kern/splice/args-oobinline-max-sleep-relay.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# test inline out-of-band data with maximum data length delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- oobinline => 1,
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- # the oob data is converted to non-oob
- md5 => "4b5efc5f86fa5fc873c82103ceece85d",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-max-sleep-server.pl b/regress/sys/kern/splice/args-oobinline-max-sleep-server.pl
deleted file mode 100644
index d4145fe8a0a..00000000000
--- a/regress/sys/kern/splice/args-oobinline-max-sleep-server.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# test inline out-of-band data with maximum data length delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- oobinline => 1,
- max => 61,
- },
- server => {
- func => sub { sleep 3; read_oob(@_); },
- },
- len => 61,
- md5 => "c9f459db9b4f369980c79bff17e1c2a0",
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-max.pl b/regress/sys/kern/splice/args-oobinline-max.pl
deleted file mode 100644
index 43a7b2d4964..00000000000
--- a/regress/sys/kern/splice/args-oobinline-max.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# test inline out-of-band data with maximum data length
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_oob(@_); },
- nocheck => 1,
- },
- relay => {
- oobinline => 1,
- max => 61,
- nocheck => 1,
- },
- server => {
- func => \&read_oob,
- },
- len => 61,
- md5 => "c9f459db9b4f369980c79bff17e1c2a0",
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-nonblock.pl b/regress/sys/kern/splice/args-oobinline-nonblock.pl
deleted file mode 100644
index c3b6114c1a4..00000000000
--- a/regress/sys/kern/splice/args-oobinline-nonblock.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# test inline out-of-band data with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&write_oob,
- },
- relay => {
- oobinline => 1,
- nonblocking => 1,
- },
- server => {
- func => \&read_oob,
- oobinline => 1,
- },
- len => 251,
- md5 => [
- "24b69642243fee9834bceee5b47078ae",
- "5aa8135a1340e173a7d7a5fa048a999e",
- ],
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-reverse-nonblock.pl b/regress/sys/kern/splice/args-oobinline-reverse-nonblock.pl
deleted file mode 100644
index 30711b072c2..00000000000
--- a/regress/sys/kern/splice/args-oobinline-reverse-nonblock.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# test inline out-of-band data when reverse sending with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_oob,
- oobinline => 1,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- oobinline => 1,
- nonblocking => 1,
- },
- server => {
- func => \&write_oob,
- },
- len => 251,
- md5 => [
- "24b69642243fee9834bceee5b47078ae",
- "5aa8135a1340e173a7d7a5fa048a999e",
- ],
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline-reverse.pl b/regress/sys/kern/splice/args-oobinline-reverse.pl
deleted file mode 100644
index ef0a1dfe478..00000000000
--- a/regress/sys/kern/splice/args-oobinline-reverse.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# test inline out-of-band data when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_oob,
- oobinline => 1,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- oobinline => 1,
- },
- server => {
- func => \&write_oob,
- },
- len => 251,
- md5 => [
- "24b69642243fee9834bceee5b47078ae",
- "5aa8135a1340e173a7d7a5fa048a999e",
- ],
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-oobinline.pl b/regress/sys/kern/splice/args-oobinline.pl
deleted file mode 100644
index 561341fba6b..00000000000
--- a/regress/sys/kern/splice/args-oobinline.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# test inline out-of-band data
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&write_oob,
- },
- relay => {
- oobinline => 1,
- },
- server => {
- func => \&read_oob,
- oobinline => 1,
- },
- len => 251,
- md5 => [
- "24b69642243fee9834bceee5b47078ae",
- "5aa8135a1340e173a7d7a5fa048a999e",
- ],
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-relay-close-in.pl b/regress/sys/kern/splice/args-relay-close-in.pl
deleted file mode 100644
index 95cb3c03b82..00000000000
--- a/regress/sys/kern/splice/args-relay-close-in.pl
+++ /dev/null
@@ -1,31 +0,0 @@
-# test relay closes stdin after relaying some data
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**30, # not reached
- sndbuf => 2**10, # small buffer triggers error during write
- # the error message seems to be timing dependent
- down => "Client print failed: (Broken pipe|Connection reset by peer)",
- nocheck => 1,
- error => 54,
- },
- relay => {
- func => sub { errignore(@_); $SIG{ALRM} = sub { close STDIN };
- alarm(3); relay(@_); },
- rcvbuf => 2**10,
- sndbuf => 2**10,
- down => "Bad file descriptor",
- nocheck => 1,
- errorin => "",
- },
- server => {
- rcvbuf => 2**10,
- nocheck => 1,
- },
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-relay-read-blocking.pl b/regress/sys/kern/splice/args-relay-read-blocking.pl
deleted file mode 100644
index 0ecc4c12cf7..00000000000
--- a/regress/sys/kern/splice/args-relay-read-blocking.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test waiting for splice finish with blocking read
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- readblocking => 1,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-relay-read-eof.pl b/regress/sys/kern/splice/args-relay-read-eof.pl
deleted file mode 100644
index 3287c099572..00000000000
--- a/regress/sys/kern/splice/args-relay-read-eof.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# test waiting for splice finish with read and eof has happend
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- # fill server buffer, relay send buffer, half relay recv buffer
- # then send eof
- len => 2**13 + 2**10,
- },
- relay => {
- nonblocking => 1,
- readblocking => 1,
- sndbuf => 2**12,
- rcvbuf => 2**12,
- },
- server => {
- # wait until all buffers are filled and client sends eof
- func => sub { sleep 4; read_char(@_); },
- rcvbuf => 2**12,
- },
- len => 9216,
- md5 => "6d263239be35ccf30cb04c5f58a35dbe",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-relay-read-forked.pl b/regress/sys/kern/splice/args-relay-read-forked.pl
deleted file mode 100644
index 36ac91de1e4..00000000000
--- a/regress/sys/kern/splice/args-relay-read-forked.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-# test concurrent read and splice
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**20,
- },
- relay => {
- nonblocking => 1,
- func => sub {
- defined(my $pid = fork())
- or die "relay func: fork failed: $!";
- if ($pid) {
- relay(@_);
- return;
- }
- my $n;
- do {
- $n = sysread(STDIN, my $buf, 10);
- } while (!defined($n) || $n);
- POSIX::_exit(0);
- },
- },
- server => {
- func => sub { sleep 2; read_char(@_); },
- },
- # As sysread() may extract data from the socket before splicing starts,
- # the spliced content length is not reliable. Disable the checks.
- nocheck => 1,
- len => 1048576,
- md5 => '6649bbec13f3d7efaedf01c0cfa54f88',
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-relay-write-forked.pl b/regress/sys/kern/splice/args-relay-write-forked.pl
deleted file mode 100644
index 3717e112d8b..00000000000
--- a/regress/sys/kern/splice/args-relay-write-forked.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-# test concurrent write and splice
-
-use strict;
-use warnings;
-use Time::HiRes 'sleep';
-
-our %args = (
- client => {
- len => 2**20,
- },
- relay => {
- func => sub {
- defined(my $pid = fork())
- or die "relay func: fork failed: $!";
- if ($pid) {
- relay(@_);
- kill 15, $pid;
- return;
- }
- my $n;
- do {
- $n = syswrite(STDOUT, "\n foo bar\n");
- sleep .1;
- } while (defined($n));
- POSIX::_exit(0);
- },
- },
- server => {
- func => sub { sleep 2; read_char(@_); },
- },
- # As syswrite() adds data to the socket, the content length is not
- # correct. Disable the checks.
- nocheck => 1,
- len => 1048576,
- md5 => '6649bbec13f3d7efaedf01c0cfa54f88',
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reset-eof.pl b/regress/sys/kern/splice/args-reset-eof.pl
deleted file mode 100644
index fc94f5ffead..00000000000
--- a/regress/sys/kern/splice/args-reset-eof.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# test connection reset by server at eof, after all data has been read
-
-use strict;
-use warnings;
-
-our %args = (
- server => {
- func => sub { read_char(@_); sleep 3; solingerin(@_); },
- },
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reset-sleep-server.pl b/regress/sys/kern/splice/args-reset-sleep-server.pl
deleted file mode 100644
index c72726732f1..00000000000
--- a/regress/sys/kern/splice/args-reset-sleep-server.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-# test delay before server read, client sends reset during splice
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- alarm => 1,
- func => sub { solingerout(@_); write_char(@_); },
- len => 2**19,
- nocheck => 1,
- },
- relay => {
- func => sub { errignore(@_); relay(@_); },
- rcvbuf => 2**10,
- sndbuf => 2**10,
- down => "Broken pipe|Connection reset by peer",
- nocheck => 1,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- nocheck => 1,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reset.pl b/regress/sys/kern/splice/args-reset.pl
deleted file mode 100644
index 3edfcfafd4c..00000000000
--- a/regress/sys/kern/splice/args-reset.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# test connection reset by server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**17,
- },
- relay => {
- func => sub { errignore(@_); relay(@_); },
- sndbuf => 2**12,
- rcvbuf => 2**12,
- down => "Broken pipe|Connection reset by peer",
- },
- server => {
- func => sub { sleep 3; solingerin(@_); },
- rcvbuf => 2**12,
- },
- nocheck => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-long.pl b/regress/sys/kern/splice/args-reverse-long.pl
deleted file mode 100644
index 27d5f0e4ae8..00000000000
--- a/regress/sys/kern/splice/args-reverse-long.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test longer data lenght when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- },
- server => {
- func => \&write_char,
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-nonblock.pl b/regress/sys/kern/splice/args-reverse-nonblock.pl
deleted file mode 100644
index 48146c8b354..00000000000
--- a/regress/sys/kern/splice/args-reverse-nonblock.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test reverse sending with non-blocking relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- nonblocking => 1,
- },
- server => {
- func => \&write_char,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-null.pl b/regress/sys/kern/splice/args-reverse-null.pl
deleted file mode 100644
index 65c54a93b0a..00000000000
--- a/regress/sys/kern/splice/args-reverse-null.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test emtpy server write when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- },
- server => {
- func => \&write_char,
- len => 0,
- },
- len => 0,
- md5 => "d41d8cd98f00b204e9800998ecf8427e",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-sleep-client.pl b/regress/sys/kern/splice/args-reverse-sleep-client.pl
deleted file mode 100644
index 244e65dc85b..00000000000
--- a/regress/sys/kern/splice/args-reverse-sleep-client.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test delay before client read when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; read_char(@_); },
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- },
- server => {
- func => \&write_char,
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-sleep-relay.pl b/regress/sys/kern/splice/args-reverse-sleep-relay.pl
deleted file mode 100644
index fbc218f82cf..00000000000
--- a/regress/sys/kern/splice/args-reverse-sleep-relay.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test delay before relay copy when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); sleep 3; relay(@_); },
- },
- server => {
- func => \&write_char,
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse-sleep-server.pl b/regress/sys/kern/splice/args-reverse-sleep-server.pl
deleted file mode 100644
index ceff0eac461..00000000000
--- a/regress/sys/kern/splice/args-reverse-sleep-server.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test delay before server write when reverse sending
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- },
- server => {
- func => sub { sleep 3; write_char(@_); },
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-reverse.pl b/regress/sys/kern/splice/args-reverse.pl
deleted file mode 100644
index 33ef06466a7..00000000000
--- a/regress/sys/kern/splice/args-reverse.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# test reverse sending from server to client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => \&read_char,
- },
- relay => {
- func => sub { ioflip(@_); relay(@_); },
- },
- server => {
- func => \&write_char,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-server-abort.pl b/regress/sys/kern/splice/args-server-abort.pl
deleted file mode 100644
index a2a98acbc4d..00000000000
--- a/regress/sys/kern/splice/args-server-abort.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-# test server reads and exits after reading some data
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**30, # not reached
- sndbuf => 2**10, # small buffer triggers error during write
- # the error message seems to be timing dependent
- down => "Client print failed: (Broken pipe|Connection reset by peer)",
- nocheck => 1,
- error => 54,
- },
- relay => {
- func => sub { errignore(@_); relay(@_); },
- rcvbuf => 2**10,
- sndbuf => 2**10,
- down => "Broken pipe|Connection reset by peer",
- nocheck => 1,
- errorin => 0, # syscall has read the error and resetted it
- errorout => 54,
- },
- server => {
- alarm => 3,
- nocheck => 1,
- },
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-server-exit.pl b/regress/sys/kern/splice/args-server-exit.pl
deleted file mode 100644
index 2698ac7d157..00000000000
--- a/regress/sys/kern/splice/args-server-exit.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# test server sleeps and exits without reading data
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { errignore(@_); write_char(@_); },
- len => 2**17,
- sndbuf => 2**10, # small buffer triggers error during write
- # the error message seems to be timing dependent
- down => "Client print failed: (Broken pipe|Connection reset by peer)",
- nocheck => 1,
- error => 54,
- },
- relay => {
- func => sub { errignore(@_); relay(@_); },
- rcvbuf => 2**10,
- sndbuf => 2**10,
- down => "Broken pipe",
- nocheck => 1,
- errorin => 0, # syscall has read the error and resetted it
- errorout => 54,
- },
- server => {
- func => sub { sleep 3; },
- rcvbuf => 2**10,
- nocheck => 1,
- },
- noecho => 1,
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-short.pl b/regress/sys/kern/splice/args-short.pl
deleted file mode 100644
index 39c238c9c31..00000000000
--- a/regress/sys/kern/splice/args-short.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# test copy with short block size
-
-use strict;
-use warnings;
-
-our %args = (
- realy => {
- size => 17,
- },
- len => 251,
- md5 => "bc3a3f39af35fe5b1687903da2b00c7f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-sleep-client.pl b/regress/sys/kern/splice/args-sleep-client.pl
deleted file mode 100644
index 9070a18c691..00000000000
--- a/regress/sys/kern/splice/args-sleep-client.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# test delay before client write
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 2**17,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-sleep-relay.pl b/regress/sys/kern/splice/args-sleep-relay.pl
deleted file mode 100644
index 3b3b9b1651c..00000000000
--- a/regress/sys/kern/splice/args-sleep-relay.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test delay before relay copy
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-sleep-server.pl b/regress/sys/kern/splice/args-sleep-server.pl
deleted file mode 100644
index 50920d1a091..00000000000
--- a/regress/sys/kern/splice/args-sleep-server.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test delay before server read
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallbuf-sleep-client.pl b/regress/sys/kern/splice/args-smallbuf-sleep-client.pl
deleted file mode 100644
index e3f01629433..00000000000
--- a/regress/sys/kern/splice/args-smallbuf-sleep-client.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test with smaller relay send and receive buffers delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallbuf-sleep-relay.pl b/regress/sys/kern/splice/args-smallbuf-sleep-relay.pl
deleted file mode 100644
index 3a116bfeafe..00000000000
--- a/regress/sys/kern/splice/args-smallbuf-sleep-relay.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# test with smaller relay send and receive buffers delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- sndbuf => 2**12,
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallbuf-sleep-server.pl b/regress/sys/kern/splice/args-smallbuf-sleep-server.pl
deleted file mode 100644
index 0ffbf9bae0f..00000000000
--- a/regress/sys/kern/splice/args-smallbuf-sleep-server.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# test with smaller relay send and receive buffers delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- rcvbuf => 2**12,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallbuf.pl b/regress/sys/kern/splice/args-smallbuf.pl
deleted file mode 100644
index a554b849c4f..00000000000
--- a/regress/sys/kern/splice/args-smallbuf.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test with smaller relay send and receive buffers
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallrcv-sleep-client.pl b/regress/sys/kern/splice/args-smallrcv-sleep-client.pl
deleted file mode 100644
index 154e7ee0c0b..00000000000
--- a/regress/sys/kern/splice/args-smallrcv-sleep-client.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test with smaller relay receive buffer delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 2**17,
- },
- relay => {
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallrcv-sleep-relay.pl b/regress/sys/kern/splice/args-smallrcv-sleep-relay.pl
deleted file mode 100644
index f1845c55d36..00000000000
--- a/regress/sys/kern/splice/args-smallrcv-sleep-relay.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test with smaller relay receive buffer delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallrcv-sleep-server.pl b/regress/sys/kern/splice/args-smallrcv-sleep-server.pl
deleted file mode 100644
index 6f30c7ee903..00000000000
--- a/regress/sys/kern/splice/args-smallrcv-sleep-server.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# test with smaller relay receive buffer delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- rcvbuf => 2**12,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallrcv.pl b/regress/sys/kern/splice/args-smallrcv.pl
deleted file mode 100644
index f13f4e09d32..00000000000
--- a/regress/sys/kern/splice/args-smallrcv.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test with smaller relay receive buffer
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- rcvbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallsnd-sleep-client.pl b/regress/sys/kern/splice/args-smallsnd-sleep-client.pl
deleted file mode 100644
index f2c2715023c..00000000000
--- a/regress/sys/kern/splice/args-smallsnd-sleep-client.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test with smaller relay send buffer delay before client
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 3; write_char(@_); },
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallsnd-sleep-relay.pl b/regress/sys/kern/splice/args-smallsnd-sleep-relay.pl
deleted file mode 100644
index 0d79e6bc0cf..00000000000
--- a/regress/sys/kern/splice/args-smallsnd-sleep-relay.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# test with smaller relay send buffer delay before relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- func => sub { sleep 3; relay(@_); },
- sndbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallsnd-sleep-server.pl b/regress/sys/kern/splice/args-smallsnd-sleep-server.pl
deleted file mode 100644
index 62270e60d2b..00000000000
--- a/regress/sys/kern/splice/args-smallsnd-sleep-server.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# test with smaller relay send buffer delay before server
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-smallsnd.pl b/regress/sys/kern/splice/args-smallsnd.pl
deleted file mode 100644
index 3193d69830e..00000000000
--- a/regress/sys/kern/splice/args-smallsnd.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# test with smaller relay send buffer
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 2**17,
- },
- relay => {
- sndbuf => 2**12,
- },
- len => 131072,
- md5 => "31e5ad3d0d2aeb1ad8aaa847dfa665c2",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-write-sleep-server.pl b/regress/sys/kern/splice/args-write-sleep-server.pl
deleted file mode 100644
index a67ba013adb..00000000000
--- a/regress/sys/kern/splice/args-write-sleep-server.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-# test mix write and relay delaying before server read
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- func => sub { sleep 4; write_char(@_); },
- len => 65521,
- nocheck => 1,
- },
- relay => {
- func => sub {
- write_char(@_, 32749);
- IO::Handle::flush(\*STDOUT);
- relay(@_);
- write_char(@_, 2039);
- },
- nocheck => 1,
- },
- server => {
- func => sub { sleep 3; read_char(@_); },
- },
- len => 100309,
- md5 => "0efc7833e5c0652823ca63eaccb9918f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/args-write.pl b/regress/sys/kern/splice/args-write.pl
deleted file mode 100644
index 055475f7dc9..00000000000
--- a/regress/sys/kern/splice/args-write.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# test mix write and relay
-
-use strict;
-use warnings;
-
-our %args = (
- client => {
- len => 65521,
- nocheck => 1,
- },
- relay => {
- func => sub {
- write_char(@_, 32749);
- IO::Handle::flush(\*STDOUT);
- relay(@_);
- write_char(@_, 2039);
- },
- nocheck => 1,
- },
- len => 100309,
- md5 => "0efc7833e5c0652823ca63eaccb9918f",
-);
-
-1;
diff --git a/regress/sys/kern/splice/direct.pl b/regress/sys/kern/splice/direct.pl
deleted file mode 100755
index 9acee3b3e27..00000000000
--- a/regress/sys/kern/splice/direct.pl
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/perl
-# $OpenBSD: direct.pl,v 1.2 2011/07/23 23:56:08 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-use Socket;
-use Socket6;
-
-use Client;
-use Server;
-require 'funcs.pl';
-
-our %args;
-if (my $test = pop) {
- do $test
- or die "Do test file $test failed: ", $@ || $!;
-}
-
-@ARGV == 0 or die "usage: direct.pl [test-args.pl]\n";
-
-my $s = Server->new(
- func => \&read_char,
- %{$args{server}},
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
-);
-my $c = Client->new(
- func => \&write_char,
- %{$args{client}},
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- connectport => $s->{listenport},
-);
-
-$s->run;
-$c->run->up;
-$s->up;
-
-$c->down;
-$s->down;
-
-exit if $args{nocheck} || $args{client}{nocheck};
-
-my $clen = $c->loggrep(qr/^LEN: /) unless $args{client}{nocheck};
-my $slen = $s->loggrep(qr/^LEN: /) unless $args{server}{nocheck};
-!$clen || !$slen || $clen eq $slen
- or die "client: $clen", "server: $slen", "len mismatch";
-!defined($args{len}) || !$clen || $clen eq "LEN: $args{len}\n"
- or die "client: $clen", "len $args{len} expected";
-!defined($args{len}) || !$slen || $slen eq "LEN: $args{len}\n"
- or die "server: $slen", "len $args{len} expected";
-
-my $cmd5 = $c->loggrep(qr/^MD5: /) unless $args{client}{nocheck};
-my $smd5 = $s->loggrep(qr/^MD5: /) unless $args{server}{nocheck};
-!$cmd5 || !$smd5 || ref($args{md5}) eq 'ARRAY' || $cmd5 eq $smd5
- or die "client: $cmd5", "server: $smd5", "md5 mismatch";
-my $md5 = ref($args{md5}) eq 'ARRAY' ? join('|', @{$args{md5}}) : $args{md5};
-!$md5 || !$cmd5 || $cmd5 =~ /^MD5: ($md5)$/
- or die "client: $cmd5", "md5 $md5 expected";
-!$md5 || !$smd5 || $smd5 =~ /^MD5: ($md5)$/
- or die "server: $smd5", "md5 $md5 expected";
-
-my %name2proc = (client => $c, server => $s);
-foreach my $name (qw(client server)) {
- $args{$name}{errorin} //= $args{$name}{error};
- if (defined($args{$name}{errorin})) {
- my $ein = $name2proc{$name}->loggrep(qr/^ERROR IN: /);
- defined($ein) && $ein eq "ERROR IN: $args{$name}{errorin}\n"
- or die "$name: $ein",
- "error in $args{$name}{errorin} expected";
- }
- if (defined($args{$name}{errorout})) {
- my $eout = $name2proc{$name}->loggrep(qr/^ERROR OUT: /);
- defined($eout) && $eout eq "ERROR OUT: $args{$name}{errorout}\n"
- or die "$name: $eout",
- "error out $args{$name}{errorout} expected";
- }
-}
diff --git a/regress/sys/kern/splice/echo.pl b/regress/sys/kern/splice/echo.pl
deleted file mode 100755
index 4c8e60809e4..00000000000
--- a/regress/sys/kern/splice/echo.pl
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/perl
-# $OpenBSD: echo.pl,v 1.6 2012/07/09 14:23:17 bluhm Exp $
-
-# Copyright (c) 2010-2012 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-use Socket;
-use Socket6;
-
-use Child;
-use Client;
-use Server;
-require 'funcs.pl';
-
-sub usage {
- die "usage: echo.pl copy|splice [test-args.pl]\n";
-}
-
-my $test;
-our %args;
-if (@ARGV and -f $ARGV[-1]) {
- $test = pop;
- do $test
- or die "Do test file $test failed: ", $@ || $!;
-}
-@ARGV == 1 or usage();
-
-exit 0 if $args{noecho} || $args{client}{alarm} || $args{server}{alarm};
-
-my $r = Server->new(
- forward => $ARGV[0],
- func => \&relay,
- logfile => "relay.log",
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
- %{$args{relay}},
-);
-my $s = Child->new(
- logfile => "server.log",
- oobinline => 1,
- %{$args{server}},
- func => sub {
- ($args{server}{func} || \&read_char)->(@_);
- eval { shutout(@_) };
- },
-);
-my $c = Client->new(
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- connectport => $r->{listenport},
- oobinline => 1,
- %{$args{client}},
- func => sub {
- $s->run->up;
- eval { ($args{client}{func} || \&write_char)->(@_) };
- warn $@ if $@;
- eval { shutout(@_) };
- $s->down;
- },
-);
-
-$r->run;
-$c->run->up;
-$r->up;
-
-$c->down;
-$r->down;
-$s->{pid} = -1; # XXX hack
-
-exit if $args{nocheck};
-
-$r->loggrep(qr/^Timeout$/) or die "no relay timeout"
- if $args{relay}{timeout};
-$r->loggrep(qr/^Max$/) or die "no relay max"
- if $args{relay}{max} && $args{len};
-
-my $clen = $c->loggrep(qr/^LEN: /) // die "no client len"
- unless $args{client}{nocheck};
-my $rlen = $r->loggrep(qr/^LEN: /) // die "no relay len"
- unless $args{relay}{nocheck};
-my $slen = $s->loggrep(qr/^LEN: /) // die "no server len"
- unless $args{server}{nocheck};
-!$clen || !$rlen || $clen eq $rlen
- or die "client: $clen", "relay: $rlen", "len mismatch";
-!$rlen || !$slen || $rlen eq $slen
- or die "relay: $rlen", "server: $slen", "len mismatch";
-!$clen || !$slen || $clen eq $slen
- or die "client: $clen", "server: $slen", "len mismatch";
-!defined($args{len}) || !$clen || $clen eq "LEN: $args{len}\n"
- or die "client: $clen", "len $args{len} expected";
-!defined($args{len}) || !$rlen || $rlen eq "LEN: $args{len}\n"
- or die "relay: $rlen", "len $args{len} expected";
-!defined($args{len}) || !$slen || $slen eq "LEN: $args{len}\n"
- or die "server: $slen", "len $args{len} expected";
-
-my $cmd5 = $c->loggrep(qr/^MD5: /) unless $args{client}{nocheck};
-my $smd5 = $s->loggrep(qr/^MD5: /) unless $args{server}{nocheck};
-!$cmd5 || !$smd5 || ref($args{md5}) eq 'ARRAY' || $cmd5 eq $smd5
- or die "client: $cmd5", "server: $smd5", "md5 mismatch";
-my $md5 = ref($args{md5}) eq 'ARRAY' ? join('|', @{$args{md5}}) : $args{md5};
-!$md5 || !$cmd5 || $cmd5 =~ /^MD5: ($md5)$/
- or die "client: $cmd5", "md5 $md5 expected";
-!$md5 || !$smd5 || $smd5 =~ /^MD5: ($md5)$/
- or die "server: $smd5", "md5 $md5 expected";
-
-$args{relay}{errorin} //= 0 unless $args{relay}{nocheck};
-$args{relay}{errorout} //= 0 unless $args{relay}{nocheck};
-$args{relay}{errorin} //= $args{relay}{error};
-if (defined($args{relay}{errorin})) {
- my $ein = $r->loggrep(qr/^ERROR IN: /);
- defined($ein) && $ein eq "ERROR IN: $args{relay}{errorin}\n"
- or die "relay: $ein",
- "error in $args{relay}{errorin} expected";
-}
-if (defined($args{relay}{errorout})) {
- my $eout = $r->loggrep(qr/^ERROR OUT: /);
- defined($eout) && $eout eq "ERROR OUT: $args{relay}{errorout}\n"
- or die "relay: $eout",
- "error out $args{relay}{errorout} expected";
-}
diff --git a/regress/sys/kern/splice/error-EBUSY.pl b/regress/sys/kern/splice/error-EBUSY.pl
deleted file mode 100755
index 1f72809d214..00000000000
--- a/regress/sys/kern/splice/error-EBUSY.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-# test EBUSY for splicing from a spliced socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket connect failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket splice connect failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- or die "splice failed: $!";
-
-my $so = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket other failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $so->fileno()))
- and die "splice from spliced socket succeeded";
-$!{EBUSY}
- or die "error not EBUSY: $!"
diff --git a/regress/sys/kern/splice/error-ENOTCONN.pl b/regress/sys/kern/splice/error-ENOTCONN.pl
deleted file mode 100755
index 4c980d74252..00000000000
--- a/regress/sys/kern/splice/error-ENOTCONN.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/perl
-# test ENOTCONN for splicing from unconnected socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice from unconnected socket succeeded";
-$!{ENOTCONN}
- or die "error not ENOTCONN: $!"
diff --git a/regress/sys/kern/splice/error-EOPNOTSUPP.pl b/regress/sys/kern/splice/error-EOPNOTSUPP.pl
deleted file mode 100755
index 4d5831dc500..00000000000
--- a/regress/sys/kern/splice/error-EOPNOTSUPP.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/perl
-# test EOPNOTSUPP for splicing from listen socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 1,
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice from listen socket succeeded";
-$!{EOPNOTSUPP}
- or die "error not EOPNOTSUPP: $!"
diff --git a/regress/sys/kern/splice/error-EPROTONOSUPPORT.pl b/regress/sys/kern/splice/error-EPROTONOSUPPORT.pl
deleted file mode 100755
index 652ad8b92e4..00000000000
--- a/regress/sys/kern/splice/error-EPROTONOSUPPORT.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/perl
-# test EPROTONOSUPPORT for splicing udp sockets
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $s = IO::Socket::INET->new(
- Proto => "udp",
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "udp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice udp sockets succeeded";
-$!{EPROTONOSUPPORT}
- or die "error not EPROTONOSUPPORT: $!"
diff --git a/regress/sys/kern/splice/error-idle-EINVAL.pl b/regress/sys/kern/splice/error-idle-EINVAL.pl
deleted file mode 100755
index 42f5c1a818a..00000000000
--- a/regress/sys/kern/splice/error-idle-EINVAL.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-# test EINVAL for splicing with negative idle timeout
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-use Config;
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket splice failed: $!";
-
-my $packed;
-if ($Config{longsize} == 8) {
- $packed = pack('iiiiiiii', $ss->fileno(),0,0,0,-1,-1,-1,-1);
-} else {
- $packed = pack('iiiii', $ss->fileno(),0,0,-1,-1);
-}
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, $packed)
- and die "splice to unconnected socket succeeded";
-$!{EINVAL}
- or die "error not EINVAL: $!"
diff --git a/regress/sys/kern/splice/error-max-EINVAL.pl b/regress/sys/kern/splice/error-max-EINVAL.pl
deleted file mode 100755
index 34cdbd0265f..00000000000
--- a/regress/sys/kern/splice/error-max-EINVAL.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-# test EINVAL for splicing with negative maximum
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-use Config;
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket splice failed: $!";
-
-my $packed;
-if ($Config{longsize} == 8) {
- $packed = pack('iiiiiiii', $ss->fileno(),0,-1,-1,0,0,0,0);
-} else {
- $packed = pack('iiiii', $ss->fileno(),-1,-1,0,0);
-}
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, $packed)
- and die "splice to unconnected socket succeeded";
-$!{EINVAL}
- or die "error not EINVAL: $!"
diff --git a/regress/sys/kern/splice/error-splice-EBADF.pl b/regress/sys/kern/splice/error-splice-EBADF.pl
deleted file mode 100755
index aae12871856..00000000000
--- a/regress/sys/kern/splice/error-splice-EBADF.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-# test EBADF for splicing with non existing fileno
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', 23))
- and die "splice with non existing fileno succeeded";
-$!{EBADF}
- or die "error not EBADF: $!"
diff --git a/regress/sys/kern/splice/error-splice-EBUSY.pl b/regress/sys/kern/splice/error-splice-EBUSY.pl
deleted file mode 100755
index 797f183fc07..00000000000
--- a/regress/sys/kern/splice/error-splice-EBUSY.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-# test EBUSY for splicing to a spliced socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket connect failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket splice connect failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- or die "splice failed: $!";
-
-my $so = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket other failed: $!";
-
-$so->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice to spliced socket succeeded";
-$!{EBUSY}
- or die "error not EBUSY: $!"
diff --git a/regress/sys/kern/splice/error-splice-EINVAL.pl b/regress/sys/kern/splice/error-splice-EINVAL.pl
deleted file mode 100755
index 7d95d703011..00000000000
--- a/regress/sys/kern/splice/error-splice-EINVAL.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# test EINVAL for splicing with short fileno size
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('s', $ss->fileno()))
- and die "splice with short fileno size succeeded";
-$!{EINVAL}
- or die "error not EINVAL: $!"
diff --git a/regress/sys/kern/splice/error-splice-ENOTCONN.pl b/regress/sys/kern/splice/error-splice-ENOTCONN.pl
deleted file mode 100755
index 51984f4b412..00000000000
--- a/regress/sys/kern/splice/error-splice-ENOTCONN.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# test ENOTCONN for splicing to unconnected socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice to unconnected socket succeeded";
-$!{ENOTCONN}
- or die "error not ENOTCONN: $!"
diff --git a/regress/sys/kern/splice/error-splice-ENOTSOCK.pl b/regress/sys/kern/splice/error-splice-ENOTSOCK.pl
deleted file mode 100755
index 2c035e767ea..00000000000
--- a/regress/sys/kern/splice/error-splice-ENOTSOCK.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-# test ENOTSOCK for splicing with non-socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', 0))
- and die "splice with non non-socket fileno succeeded";
-$!{ENOTSOCK}
- or die "error not ENOTSOCK: $!"
diff --git a/regress/sys/kern/splice/error-splice-EOPNOTSUPP.pl b/regress/sys/kern/splice/error-splice-EOPNOTSUPP.pl
deleted file mode 100755
index 2bf6000dced..00000000000
--- a/regress/sys/kern/splice/error-splice-EOPNOTSUPP.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-# test EOPNOTSUPP for splicing to listen socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 1,
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice to listen socket succeeded";
-$!{EOPNOTSUPP}
- or die "error not EOPNOTSUPP: $!"
diff --git a/regress/sys/kern/splice/error-splice-EPROTONOSUPPORT.pl b/regress/sys/kern/splice/error-splice-EPROTONOSUPPORT.pl
deleted file mode 100755
index 50eb4f63ee1..00000000000
--- a/regress/sys/kern/splice/error-splice-EPROTONOSUPPORT.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# test EPROTONOSUPPORT for splicing to udp socket
-
-use Errno;
-use IO::Socket;
-use BSD::Socket::Splice "SO_SPLICE";
-
-my $sl = IO::Socket::INET->new(
- Proto => "tcp",
- Listen => 5,
- LocalAddr => "127.0.0.1",
-) or die "socket listen failed: $!";
-
-my $s = IO::Socket::INET->new(
- Proto => "tcp",
- PeerAddr => $sl->sockhost(),
- PeerPort => $sl->sockport(),
-) or die "socket failed: $!";
-
-my $ss = IO::Socket::INET->new(
- Proto => "udp",
-) or die "socket splice failed: $!";
-
-$s->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $ss->fileno()))
- and die "splice to udp socket succeeded";
-$!{EPROTONOSUPPORT}
- or die "error not EPROTONOSUPPORT: $!"
diff --git a/regress/sys/kern/splice/funcs.pl b/regress/sys/kern/splice/funcs.pl
deleted file mode 100644
index 03c6a710ed1..00000000000
--- a/regress/sys/kern/splice/funcs.pl
+++ /dev/null
@@ -1,412 +0,0 @@
-# $OpenBSD: funcs.pl,v 1.10 2012/07/09 14:23:17 bluhm Exp $
-
-# Copyright (c) 2010-2012 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-use feature 'switch';
-use Errno;
-use Digest::MD5;
-use IO::Socket qw(sockatmark);
-use Socket;
-use Time::HiRes qw(time alarm sleep);
-use BSD::Socket::Splice qw(setsplice getsplice geterror);
-
-########################################################################
-# Client funcs
-########################################################################
-
-sub write_char {
- my $self = shift;
- my $len = shift // $self->{len} // 251;
- my $sleep = $self->{sleep};
-
- my $ctx = Digest::MD5->new();
- my $char = '0';
- for (my $i = 1; $i < $len; $i++) {
- $ctx->add($char);
- print $char
- or die ref($self), " print failed: $!";
- given ($char) {
- when(/9/) { $char = 'A' }
- when(/Z/) { $char = 'a' }
- when(/z/) { $char = "\n" }
- when(/\n/) { print STDERR "."; $char = '0' }
- default { $char++ }
- }
- if ($self->{sleep}) {
- IO::Handle::flush(\*STDOUT);
- sleep $self->{sleep};
- }
- }
- if ($len) {
- $char = "\n";
- $ctx->add($char);
- print $char
- or die ref($self), " print failed: $!";
- print STDERR ".\n";
- }
- IO::Handle::flush(\*STDOUT);
-
- print STDERR "LEN: ", $len, "\n";
- print STDERR "MD5: ", $ctx->hexdigest, "\n";
-}
-
-sub write_oob {
- my $self = shift;
- my $len = shift // $self->{len} // 251;
-
- my $ctx = Digest::MD5->new();
- my $msg = "";
- my $char = '0';
- for (my $i = 1; $i < $len; $i++) {
- $msg .= $char;
- given ($char) {
- when(/9/) {
- $ctx->add("[$char]");
- defined(send(STDOUT, $msg, MSG_OOB))
- or die ref($self), " send OOB failed: $!";
- # If tcp urgent data is sent too fast,
- # it may get overwritten and lost.
- sleep .1;
- $msg = "";
- $char = 'A';
- }
- when(/Z/) { $ctx->add($char); $char = 'a' }
- when(/z/) { $ctx->add($char); $char = "\n" }
- when(/\n/) {
- $ctx->add($char);
- defined(send(STDOUT, $msg, 0))
- or die ref($self), " send failed: $!";
- print STDERR ".";
- $msg = "";
- $char = '0';
- }
- default { $ctx->add($char); $char++ }
- }
- }
- if ($len) {
- $char = "\n";
- $msg .= $char;
- $ctx->add($char);
- send(STDOUT, $msg, 0)
- or die ref($self), " send failed: $!";
- print STDERR ".\n";
- }
- IO::Handle::flush(\*STDOUT);
-
- print STDERR "LEN: ", $len, "\n";
- print STDERR "MD5: ", $ctx->hexdigest, "\n";
-}
-
-sub solingerout {
- my $self = shift;
-
- setsockopt(STDOUT, SOL_SOCKET, SO_LINGER, pack('ii', 1, 0))
- or die ref($self), " set linger out failed: $!";
-}
-
-########################################################################
-# Relay funcs
-########################################################################
-
-sub relay_copy {
- my $self = shift;
- my $max = $self->{max};
- my $idle = $self->{idle};
- my $size = $self->{size} || 8093;
-
- my $len = 0;
- while (1) {
- my $rin = my $win = my $ein = '';
- vec($rin, fileno(STDIN), 1) = 1;
- vec($ein, fileno(STDIN), 1) = 1 unless $self->{oobinline};
- defined(my $n = select($rin, undef, $ein, $idle))
- or die ref($self), " select failed: $!";
- if ($idle && $n == 0) {
- print STDERR "\n";
- print STDERR "Timeout\n";
- last;
- }
- my $buf;
- my $atmark = sockatmark(\*STDIN)
- or die ref($self), " sockatmark failed: $!";
- if ($atmark == 1) {
- if ($self->{oobinline}) {
- defined(recv(STDIN, $buf, 1, 0))
- or die ref($self), " recv OOB failed: $!";
- $len += length($buf);
- defined(send(STDOUT, $buf, MSG_OOB))
- or die ref($self), " send OOB failed: $!";
- } else {
- defined(recv(STDIN, $buf, 1, MSG_OOB)) ||
- $!{EINVAL}
- or die ref($self), " recv OOB failed: $!";
- print STDERR "OOB: $buf\n" if length($buf);
- }
- }
- if ($self->{nonblocking}) {
- vec($rin, fileno(STDIN), 1) = 1;
- select($rin, undef, undef, undef)
- or die ref($self), " select read failed: $!";
- }
- my $read = sysread(STDIN, $buf,
- $max && $max < $size ? $max : $size);
- defined($read)
- or die ref($self), " sysread at $len failed: $!";
- if ($read == 0) {
- print STDERR "\n";
- print STDERR "End\n";
- last;
- }
- print STDERR ".";
- if ($max && $len + $read > $max) {
- $read = $max - $len;
- }
- my $off = 0;
- while ($off < $read) {
- if ($self->{nonblocking}) {
- vec($win, fileno(STDOUT), 1) = 1;
- select(undef, $win, undef, undef)
- or die ref($self),
- " select write failed: $!";
- }
- my $write;
- # Unfortunately Perl installs signal handlers without
- # SA_RESTART. Work around by restarting manually.
- do {
- $write = syswrite(STDOUT, $buf, $read - $off,
- $off);
- } while (!defined($write) && $!{EINTR});
- defined($write) || $!{ETIMEDOUT}
- or die ref($self), " syswrite at $len failed: $!";
- defined($write) or next;
- $off += $write;
- $len += $write;
- }
- if ($max && $len == $max) {
- print STDERR "\n";
- print STDERR "Max\n";
- last;
- }
- }
-
- print STDERR "LEN: ", $len, "\n";
-}
-
-sub relay_splice {
- my $self = shift;
- my $max = $self->{max};
- my $idle = $self->{idle};
-
- my $len = 0;
- my $splicelen;
- my $shortsplice = 0;
- my $error;
- do {
- my $splicemax = $max ? $max - $len : 0;
- setsplice(\*STDIN, \*STDOUT, $splicemax, $idle)
- or die ref($self), " splice stdin to stdout failed: $!";
-
- if ($self->{readblocking}) {
- my $read;
- # block by reading from the source socket
- do {
- # busy loop to test soreceive
- $read = sysread(STDIN, my $buf, 2**16);
- } while ($self->{nonblocking} && !defined($read) &&
- $!{EAGAIN});
- defined($read)
- or die ref($self), " read blocking failed: $!";
- $read > 0 and die ref($self),
- " read blocking has data: $read";
- print STDERR "Read\n";
- } else {
- my $rin = '';
- vec($rin, fileno(STDIN), 1) = 1;
- select($rin, undef, undef, undef)
- or die ref($self), " select failed: $!";
- }
-
- defined($error = geterror(\*STDIN))
- or die ref($self), " get error from stdin failed: $!";
- ($! = $error) && ! $!{ETIMEDOUT}
- and die ref($self), " splice failed: $!";
-
- defined($splicelen = getsplice(\*STDIN))
- or die ref($self), " get splice len from stdin failed: $!";
- print STDERR "SPLICELEN: ", $splicelen, "\n";
- !$max || $splicelen <= $splicemax
- or die ref($self), " splice len $splicelen ".
- "greater than max $splicemax";
- $len += $splicelen;
- } while ($max && $max > $len && !$shortsplice++);
-
- if ($idle && $error == Errno::ETIMEDOUT) {
- print STDERR "Timeout\n";
- }
- if ($max && $max == $len) {
- print STDERR "Max\n";
- } elsif ($max && $max < $len) {
- die ref($self), " max $max less than len $len";
- } elsif ($max && $max > $len && $splicelen) {
- die ref($self), " max $max greater than len $len";
- } elsif (!$error) {
- defined(my $read = sysread(STDIN, my $buf, 2**16))
- or die ref($self), " sysread stdin failed: $!";
- $read > 0
- and die ref($self), " sysread stdin has data: $read";
- print STDERR "End\n";
- }
- print STDERR "LEN: ", $len, "\n";
-}
-
-sub relay {
- my $self = shift;
- my $forward = $self->{forward};
-
- given ($forward) {
- when (/splice/) { relay_splice($self, @_) }
- when (/copy/) { relay_copy($self, @_) }
- default { die "Unknown forward name: $forward" }
- }
-
- my $soerror;
- $soerror = getsockopt(STDIN, SOL_SOCKET, SO_ERROR)
- or die ref($self), " get error from stdin failed: $!";
- print STDERR "ERROR IN: ", unpack('i', $soerror), "\n";
- $soerror = getsockopt(STDOUT, SOL_SOCKET, SO_ERROR)
- or die ref($self), " get error from stdout failed: $!";
- print STDERR "ERROR OUT: ", unpack('i', $soerror), "\n";
-}
-
-sub ioflip {
- my $self = shift;
-
- open(my $fh, '<&', \*STDIN)
- or die ref($self), " ioflip dup failed: $!";
- open(STDIN, '<&', \*STDOUT)
- or die ref($self), " ioflip dup STDIN failed: $!";
- open(STDOUT, '>&', $fh)
- or die ref($self), " ioflip dup STDOUT failed: $!";
- close($fh)
- or die ref($self), " ioflip close failed: $!";
-}
-
-sub errignore {
- $SIG{PIPE} = 'IGNORE';
- $SIG{__DIE__} = sub {
- die @_ if $^S;
- warn @_;
- my $soerror;
- $soerror = getsockopt(STDIN, SOL_SOCKET, SO_ERROR);
- print STDERR "ERROR IN: ", unpack('i', $soerror), "\n";
- $soerror = getsockopt(STDOUT, SOL_SOCKET, SO_ERROR);
- print STDERR "ERROR OUT: ", unpack('i', $soerror), "\n";
- IO::Handle::flush(\*STDERR);
- POSIX::_exit(0);
- };
-}
-
-sub shutin {
- my $self = shift;
- shutdown(\*STDIN, SHUT_RD)
- or die ref($self), " shutdown read failed: $!";
-}
-
-sub shutout {
- my $self = shift;
- IO::Handle::flush(\*STDOUT)
- or die ref($self), " flush stdout failed: $!";
- shutdown(\*STDOUT, SHUT_WR)
- or die ref($self), " shutdown write failed: $!";
-}
-
-########################################################################
-# Server funcs
-########################################################################
-
-sub read_char {
- my $self = shift;
- my $max = $self->{max};
-
- my $ctx = Digest::MD5->new();
- my $len = 0;
- while (<STDIN>) {
- $len += length($_);
- $ctx->add($_);
- print STDERR ".";
- if ($max && $len >= $max) {
- print STDERR "\nMax";
- last;
- }
- }
- print STDERR "\n";
-
- print STDERR "LEN: ", $len, "\n";
- print STDERR "MD5: ", $ctx->hexdigest, "\n";
-}
-
-sub read_oob {
- my $self = shift;
- my $size = $self->{size} || 4091;
-
- my $ctx = Digest::MD5->new();
- my $len = 0;
- while (1) {
- my $rin = my $ein = '';
- vec($rin, fileno(STDIN), 1) = 1;
- vec($ein, fileno(STDIN), 1) = 1 unless $self->{oobinline};
- select($rin, undef, $ein, undef)
- or die ref($self), " select failed: $!";
- my $buf;
- my $atmark = sockatmark(\*STDIN)
- or die ref($self), " sockatmark failed: $!";
- if ($atmark == 1) {
- if ($self->{oobinline}) {
- defined(recv(STDIN, $buf, 1, 0))
- or die ref($self), " recv OOB failed: $!";
- print STDERR "[$buf]";
- $ctx->add("[$buf]");
- $len += length($buf);
- } else {
- defined(recv(STDIN, $buf, 1, MSG_OOB)) ||
- $!{EINVAL}
- or die ref($self), " recv OOB failed: $!";
- print STDERR "OOB: $buf\n" if length($buf);
- }
- }
- defined(recv(STDIN, $buf, $size, 0))
- or die ref($self), " recv failed: $!";
- last unless length($buf);
- print STDERR $buf;
- $ctx->add($buf);
- $len += length($buf);
- print STDERR ".";
- }
- print STDERR "\n";
-
- print STDERR "LEN: ", $len, "\n";
- print STDERR "MD5: ", $ctx->hexdigest, "\n";
-}
-
-sub solingerin {
- my $self = shift;
-
- setsockopt(STDIN, SOL_SOCKET, SO_LINGER, pack('ii', 1, 0))
- or die ref($self), " set linger in failed: $!";
-}
-
-1;
diff --git a/regress/sys/kern/splice/relay.pl b/regress/sys/kern/splice/relay.pl
deleted file mode 100755
index c7e82e4c067..00000000000
--- a/regress/sys/kern/splice/relay.pl
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/perl
-# $OpenBSD: relay.pl,v 1.5 2011/08/21 22:51:00 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-use Socket;
-use Socket6;
-
-use Client;
-use Relay;
-use Server;
-require 'funcs.pl';
-
-sub usage {
- die "usage: relay.pl copy|splice [test-args.pl]\n";
-}
-
-my $test;
-our %args;
-if (@ARGV and -f $ARGV[-1]) {
- $test = pop;
- do $test
- or die "Do test file $test failed: ", $@ || $!;
-}
-@ARGV == 1 or usage();
-
-my $s = Server->new(
- func => \&read_char,
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
- oobinline => 1,
- %{$args{server}},
-);
-my $r = Relay->new(
- forward => $ARGV[0],
- func => \&relay,
- listendomain => AF_INET,
- listenaddr => "127.0.0.1",
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- connectport => $s->{listenport},
- %{$args{relay}},
-);
-my $c = Client->new(
- func => \&write_char,
- connectdomain => AF_INET,
- connectaddr => "127.0.0.1",
- connectport => $r->{listenport},
- oobinline => 1,
- %{$args{client}},
-);
-
-$s->run;
-$r->run;
-$c->run->up;
-$r->up;
-$s->up;
-
-$c->down;
-$r->down;
-$s->down;
-
-exit if $args{nocheck};
-
-$r->loggrep(qr/^Timeout$/) or die "no relay timeout"
- if $args{relay}{timeout};
-$r->loggrep(qr/^Max$/) or die "no relay max"
- if $args{relay}{max} && $args{len};
-
-my $clen = $c->loggrep(qr/^LEN: /) // die "no client len"
- unless $args{client}{nocheck};
-my $rlen = $r->loggrep(qr/^LEN: /) // die "no relay len"
- unless $args{relay}{nocheck};
-my $slen = $s->loggrep(qr/^LEN: /) // die "no server len"
- unless $args{server}{nocheck};
-!$clen || !$rlen || $clen eq $rlen
- or die "client: $clen", "relay: $rlen", "len mismatch";
-!$rlen || !$slen || $rlen eq $slen
- or die "relay: $rlen", "server: $slen", "len mismatch";
-!$clen || !$slen || $clen eq $slen
- or die "client: $clen", "server: $slen", "len mismatch";
-!defined($args{len}) || !$clen || $clen eq "LEN: $args{len}\n"
- or die "client: $clen", "len $args{len} expected";
-!defined($args{len}) || !$rlen || $rlen eq "LEN: $args{len}\n"
- or die "relay: $rlen", "len $args{len} expected";
-!defined($args{len}) || !$slen || $slen eq "LEN: $args{len}\n"
- or die "server: $slen", "len $args{len} expected";
-
-my $cmd5 = $c->loggrep(qr/^MD5: /) unless $args{client}{nocheck};
-my $smd5 = $s->loggrep(qr/^MD5: /) unless $args{server}{nocheck};
-!$cmd5 || !$smd5 || ref($args{md5}) eq 'ARRAY' || $cmd5 eq $smd5
- or die "client: $cmd5", "server: $smd5", "md5 mismatch";
-my $md5 = ref($args{md5}) eq 'ARRAY' ? join('|', @{$args{md5}}) : $args{md5};
-!$md5 || !$cmd5 || $cmd5 =~ /^MD5: ($md5)$/
- or die "client: $cmd5", "md5 $md5 expected";
-!$md5 || !$smd5 || $smd5 =~ /^MD5: ($md5)$/
- or die "server: $smd5", "md5 $md5 expected";
-
-$args{relay}{errorin} //= 0 unless $args{relay}{nocheck};
-$args{relay}{errorout} //= 0 unless $args{relay}{nocheck};
-my %name2proc = (client => $c, relay => $r, server => $s);
-foreach my $name (qw(client relay server)) {
- $args{$name}{errorin} //= $args{$name}{error};
- if (defined($args{$name}{errorin})) {
- my $ein = $name2proc{$name}->loggrep(qr/^ERROR IN: /);
- defined($ein) && $ein eq "ERROR IN: $args{$name}{errorin}\n"
- or die "$name: $ein",
- "error in $args{$name}{errorin} expected";
- }
- if (defined($args{$name}{errorout})) {
- my $eout = $name2proc{$name}->loggrep(qr/^ERROR OUT: /);
- defined($eout) && $eout eq "ERROR OUT: $args{$name}{errorout}\n"
- or die "$name: $eout",
- "error out $args{$name}{errorout} expected";
- }
-}
diff --git a/regress/sys/kern/splice/remote.pl b/regress/sys/kern/splice/remote.pl
deleted file mode 100755
index d3f3cc04d9c..00000000000
--- a/regress/sys/kern/splice/remote.pl
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/perl
-# $OpenBSD: remote.pl,v 1.5 2011/08/21 22:51:00 bluhm Exp $
-
-# Copyright (c) 2010 Alexander Bluhm <bluhm@openbsd.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-use strict;
-use warnings;
-use File::Basename;
-use File::Copy;
-use Socket;
-use Socket6;
-
-use Client;
-use Relay;
-use Server;
-use Remote;
-require 'funcs.pl';
-
-sub usage {
- die <<"EOF";
-usage:
- remote.pl localport remoteaddr remoteport [test-args.pl]
- Run test with local client and server. Remote relay
- forwarding from remoteaddr remoteport to server localport
- has to be started manually.
- remote.pl copy|splice listenaddr connectaddr connectport [test-args.pl]
- Only start remote relay.
- remote.pl copy|splice localaddr remoteaddr remotessh [test-args.pl]
- Run test with local client and server. Remote relay is
- started automatically with ssh on remotessh.
-EOF
-}
-
-my $test;
-our %args;
-if (@ARGV and -f $ARGV[-1]) {
- $test = pop;
- do $test
- or die "Do test file $test failed: ", $@ || $!;
-}
-my $mode =
- @ARGV == 3 && $ARGV[0] =~ /^\d+$/ && $ARGV[2] =~ /^\d+$/ ? "manual" :
- @ARGV == 4 && $ARGV[1] !~ /^\d+$/ && $ARGV[3] =~ /^\d+$/ ? "relay" :
- @ARGV == 4 && $ARGV[1] !~ /^\d+$/ && $ARGV[3] !~ /^\d+$/ ? "auto" :
- usage();
-
-my $r;
-if ($mode eq "relay") {
- $r = Relay->new(
- forward => $ARGV[0],
- logfile => dirname($0)."/remote.log",
- func => \&relay,
- %{$args{relay}},
- listendomain => AF_INET,
- listenaddr => $ARGV[1],
- connectdomain => AF_INET,
- connectaddr => $ARGV[2],
- connectport => $ARGV[3],
- );
- open(my $log, '<', $r->{logfile})
- or die "Remote log file open failed: $!";
- $SIG{__DIE__} = sub {
- die @_ if $^S;
- copy($log, \*STDERR);
- warn @_;
- exit 255;
- };
- copy($log, \*STDERR);
- $r->run;
- copy($log, \*STDERR);
- $r->up;
- copy($log, \*STDERR);
- $r->down;
- copy($log, \*STDERR);
-
- exit;
-}
-
-my $s = Server->new(
- func => \&read_char,
- oobinline => 1,
- %{$args{server}},
- listendomain => AF_INET,
- listenaddr => ($mode eq "auto" ? $ARGV[1] : undef),
- listenport => ($mode eq "manual" ? $ARGV[0] : undef),
-);
-if ($mode eq "auto") {
- $r = Remote->new(
- forward => $ARGV[0],
- logfile => "relay.log",
- testfile => $test,
- %{$args{relay}},
- remotessh => $ARGV[3],
- listenaddr => $ARGV[2],
- connectaddr => $ARGV[1],
- connectport => $s->{listenport},
- );
- $r->run->up;
-}
-my $c = Client->new(
- func => \&write_char,
- oobinline => 1,
- %{$args{client}},
- connectdomain => AF_INET,
- connectaddr => ($mode eq "manual" ? $ARGV[1] : $r->{listenaddr}),
- connectport => ($mode eq "manual" ? $ARGV[2] : $r->{listenport}),
-);
-
-$s->run;
-$c->run->up;
-$s->up;
-
-$c->down;
-$r->down if $r;
-$s->down;
-
-exit if $args{nocheck};
-
-$r->loggrep(qr/^Timeout$/) or die "no relay timeout"
- if $args{relay}{timeout};
-$r->loggrep(qr/^Max$/) or die "no relay max"
- if $args{relay}{max} && $args{len};
-
-my $clen = $c->loggrep(qr/^LEN: /) // die "no client len"
- unless $args{client}{nocheck};
-my $slen = $s->loggrep(qr/^LEN: /) // die "no server len"
- unless $args{server}{nocheck};
-!$clen || !$slen || $clen eq $slen
- or die "client: $clen", "server: $slen", "len mismatch";
-!defined($args{len}) || !$clen || $clen eq "LEN: $args{len}\n"
- or die "client: $clen", "len $args{len} expected";
-!defined($args{len}) || !$slen || $slen eq "LEN: $args{len}\n"
- or die "server: $slen", "len $args{len} expected";
-
-my $cmd5 = $c->loggrep(qr/^MD5: /) unless $args{client}{nocheck};
-my $smd5 = $s->loggrep(qr/^MD5: /) unless $args{server}{nocheck};
-!$cmd5 || !$smd5 || ref($args{md5}) eq 'ARRAY' || $cmd5 eq $smd5
- or die "client: $cmd5", "server: $smd5", "md5 mismatch";
-my $md5 = ref($args{md5}) eq 'ARRAY' ? join('|', @{$args{md5}}) : $args{md5};
-!$md5 || !$cmd5 || $cmd5 =~ /^MD5: ($md5)$/
- or die "client: $cmd5", "md5 $md5 expected";
-!$md5 || !$smd5 || $smd5 =~ /^MD5: ($md5)$/
- or die "server: $smd5", "md5 $md5 expected";
-
-$args{relay}{errorin} //= 0 unless $args{relay}{nocheck};
-$args{relay}{errorout} //= 0 unless $args{relay}{nocheck};
-my %name2proc = (client => $c, relay => $r, server => $s);
-foreach my $name (qw(client relay server)) {
- $args{$name}{errorin} //= $args{$name}{error};
- if (defined($args{$name}{errorin})) {
- my $ein = $name2proc{$name}->loggrep(qr/^ERROR IN: /);
- defined($ein) && $ein eq "ERROR IN: $args{$name}{errorin}\n"
- or die "$name: $ein",
- "error in $args{$name}{errorin} expected";
- }
- if (defined($args{$name}{errorout})) {
- my $eout = $name2proc{$name}->loggrep(qr/^ERROR OUT: /);
- defined($eout) && $eout eq "ERROR OUT: $args{$name}{errorout}\n"
- or die "$name: $eout",
- "error out $args{$name}{errorout} expected";
- }
-}