summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2017-09-13 00:35:53 +0000
committerbluhm <bluhm@openbsd.org>2017-09-13 00:35:53 +0000
commitbe4712f2954571375e2919c9330590d17b249861 (patch)
treefdaed2a5ae759b49e9915c5e22b52e2e681ab78d
parent- sprinkle variable name and printf tweaks (diff)
downloadwireguard-openbsd-be4712f2954571375e2919c9330590d17b249861.tar.xz
wireguard-openbsd-be4712f2954571375e2919c9330590d17b249861.zip
Check that the hostname added by syslogd -h in file and server log
is correct. Use generic redo functions. Do syntax check for all Perl files.
-rw-r--r--regress/usr.sbin/syslogd/Client.pm6
-rw-r--r--regress/usr.sbin/syslogd/Makefile9
-rw-r--r--regress/usr.sbin/syslogd/args-client-multilisten.pl54
-rw-r--r--regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-hostname.pl93
-rw-r--r--regress/usr.sbin/syslogd/args-secure-udp.pl42
-rw-r--r--regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-server-tls-reconnect.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-sighup-tcp.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-sighup-tls.pl8
-rw-r--r--regress/usr.sbin/syslogd/args-sync-tcp.pl8
-rw-r--r--regress/usr.sbin/syslogd/funcs.pl60
13 files changed, 201 insertions, 119 deletions
diff --git a/regress/usr.sbin/syslogd/Client.pm b/regress/usr.sbin/syslogd/Client.pm
index bcc02b24895..b2f2b9514ea 100644
--- a/regress/usr.sbin/syslogd/Client.pm
+++ b/regress/usr.sbin/syslogd/Client.pm
@@ -1,4 +1,4 @@
-# $OpenBSD: Client.pm,v 1.10 2017/04/17 14:27:46 bluhm Exp $
+# $OpenBSD: Client.pm,v 1.11 2017/09/13 00:35:53 bluhm Exp $
# Copyright (c) 2010-2014 Alexander Bluhm <bluhm@openbsd.org>
#
@@ -34,7 +34,9 @@ sub new {
$args{logfile} ||= "client.log";
$args{up} ||= "Openlog";
my $self = Proc::new($class, %args);
- $self->{connectproto} ||= "udp";
+ if (defined($self->{connectdomain})) {
+ $self->{connectproto} ||= "udp";
+ }
return $self;
}
diff --git a/regress/usr.sbin/syslogd/Makefile b/regress/usr.sbin/syslogd/Makefile
index 178d381e042..9c0cf8f3d8f 100644
--- a/regress/usr.sbin/syslogd/Makefile
+++ b/regress/usr.sbin/syslogd/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.19 2017/01/02 16:58:28 bluhm Exp $
+# $OpenBSD: Makefile,v 1.20 2017/09/13 00:35:53 bluhm Exp $
# The following ports must be installed for the regression tests:
# p5-IO-Socket-INET6 object interface for AF_INET and AF_INET6 domain sockets
@@ -27,6 +27,8 @@ regress:
# Automatically generate regress targets from test cases in directory.
+PERLS = Client.pm Proc.pm RSyslogd.pm Server.pm \
+ Syslogc.pm Syslogd.pm funcs.pl syslogd.pl
ARGS != cd ${.CURDIR} && ls args-*.pl
.if exists (/usr/local/sbin/rsyslogd)
TARGETS ?= ${ARGS}
@@ -118,7 +120,10 @@ ${REGRESS_TARGETS}: ttylog
syntax: stamp-syntax
-stamp-syntax: ${ARGS}
+stamp-syntax: ${PERLS} ${ARGS}
+.for p in ${PERLS}
+ @perl -c ${PERLINC} ${PERLPATH}$p
+.endfor
.for a in ${ARGS}
@perl -c ${PERLPATH}$a
.endfor
diff --git a/regress/usr.sbin/syslogd/args-client-multilisten.pl b/regress/usr.sbin/syslogd/args-client-multilisten.pl
index bc0aca12ee8..58b1749b64a 100644
--- a/regress/usr.sbin/syslogd/args-client-multilisten.pl
+++ b/regress/usr.sbin/syslogd/args-client-multilisten.pl
@@ -16,79 +16,65 @@ our %args = (
client => {
connectproto => "none",
redo => [
- {
+ { connect => {
proto => "udp",
domain => AF_INET,
addr => "127.0.0.1",
port => 514,
- },
- {
+ }},
+ { connect => {
proto => "udp",
domain => AF_INET,
addr => "127.0.0.1",
port => 513,
- },
- {
+ }},
+ { connect => {
proto => "udp",
domain => AF_INET6,
addr => "::1",
port => 514,
- },
- {
+ }},
+ { connect => {
proto => "tcp",
domain => AF_INET,
addr => "127.0.0.1",
port => 514,
- },
- {
+ }},
+ { connect => {
proto => "tcp",
domain => AF_INET6,
addr => "::1",
port => 513,
- },
- {
+ }},
+ { connect => {
proto => "tcp",
domain => AF_INET6,
addr => "::1",
port => 514,
- },
- {
+ }},
+ { connect => {
proto => "tls",
domain => AF_INET6,
addr => "::1",
port => 6514,
- },
- {
+ }},
+ { connect => {
proto => "tls",
domain => AF_INET,
addr => "127.0.0.1",
port => 6514,
- },
- {
+ }},
+ { connect => {
proto => "tls",
domain => AF_INET,
addr => "127.0.0.1",
port => 6515,
- },
+ }},
],
- func => sub {
+ func => sub { redo_connect(shift, sub {
my $self = shift;
write_message($self, "client proto: ". $self->{connectproto});
- close($self->{cs}) if $self->{cs};
- if (my $connect = shift @{$self->{redo}}) {
- $self->{connectproto} = $connect->{proto};
- $self->{connectdomain} = $connect->{domain};
- $self->{connectaddr} = $connect->{addr};
- $self->{connectport} = $connect->{port};
- } else {
- delete $self->{connectdomain};
- $self->{logsock} = { type => "native" };
- setlogsock($self->{logsock})
- or die ref($self), " setlogsock failed: $!";
- write_log($self);
- undef $self->{redo};
- }
- },
+ })},
loggrep => {
qr/connect sock: (127.0.0.1|::1) \d+/ => 9,
get_testgrep() => 1,
diff --git a/regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl b/regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl
index 1cc9e4af397..a68360ed020 100644
--- a/regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl
+++ b/regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl
@@ -34,13 +34,8 @@ our %args = (
server => {
listen => { domain => AF_UNSPEC, proto => "tcp", addr => "localhost" },
rcvbuf => 2**12,
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
${$self->{syslogd}}->loggrep(get_thirdlog(), 20)
or die ref($self), " syslogd did not receive third log";
${$self->{syslogd}}->kill_syslogd('HUP');
@@ -48,7 +43,6 @@ our %args = (
or die ref($self), " no 'syslogd: restarted' between logs";
# syslogd has shut down, read from kernel socket buffer
read_log($self);
- $self->{redo}++;
})},
loggrep => {
get_between2loggrep(),
diff --git a/regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl b/regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl
index af34a7179f8..d6a0a9dcc7b 100644
--- a/regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl
+++ b/regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl
@@ -35,13 +35,8 @@ our %args = (
server => {
listen => { domain => AF_UNSPEC, proto => "tls", addr => "localhost" },
rcvbuf => 2**12,
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
${$self->{syslogd}}->loggrep(get_thirdlog(), 20)
or die ref($self), " syslogd did not receive third log";
${$self->{syslogd}}->kill_syslogd('HUP');
@@ -49,7 +44,6 @@ our %args = (
or die ref($self), " no 'syslogd: restarted' between logs";
# syslogd has shut down, read from kernel socket buffer
read_log($self);
- $self->{redo}++;
})},
loggrep => {
get_between2loggrep(),
diff --git a/regress/usr.sbin/syslogd/args-hostname.pl b/regress/usr.sbin/syslogd/args-hostname.pl
new file mode 100644
index 00000000000..25a66381518
--- /dev/null
+++ b/regress/usr.sbin/syslogd/args-hostname.pl
@@ -0,0 +1,93 @@
+# The client writes messages with various methods.
+# The syslogd writes them into a file and through a pipe and to tty.
+# The syslogd is run with -h, adds a hostname, and passes them to loghost.
+# The server receives the messages on its UDP socket.
+# Find the message in client, file, pipe, console, user, syslogd, server log.
+# Check that the hostname in file and server log is correct.
+
+use strict;
+use warnings;
+use Socket;
+use Sys::Hostname;
+
+(my $host = hostname()) =~ s/\..*//;
+
+our %args = (
+ client => {
+ redo => [
+ { connect => {
+ proto => "udp",
+ domain => AF_INET,
+ addr => "127.0.0.1",
+ port => 514,
+ }},
+ { connect => {
+ proto => "tcp",
+ domain => AF_INET,
+ addr => "127.0.0.1",
+ port => 514,
+ }},
+ { connect => {
+ proto => "tls",
+ domain => AF_INET,
+ addr => "127.0.0.1",
+ port => 6514,
+ }},
+ { logsock => {
+ type => "native",
+ }},
+ { logsock => {
+ type => "unix",
+ }},
+ { logsock => {
+ type => "udp",
+ host => "127.0.0.1",
+ port => 514,
+ }},
+ { logsock => {
+ type => "tcp",
+ host => "127.0.0.1",
+ port => 514,
+ }},
+ ],
+ func => sub { redo_connect( shift, sub {
+ my $self = shift;
+ write_message($self, "client connect proto: ".
+ $self->{connectproto}) if $self->{connectproto};
+ write_message($self, "client logsock type: ".
+ $self->{logsock}{type}) if $self->{logsock};
+ })},
+ },
+ syslogd => {
+ options => [qw(-h -n -rr
+ -U 127.0.0.1:514 -T 127.0.0.1:514 -S 127.0.0.1:6514)],
+ },
+ server => {
+ loggrep => {
+ qr/ client connect / => 3,
+ qr/:\d\d $host client connect proto: udp$/ => 1,
+ qr/:\d\d $host client connect proto: tcp$/ => 1,
+ qr/:\d\d $host client connect proto: tls$/ => 1,
+ qr/ client logsock / => 4,
+ qr/:\d\d $host syslogd-.*: client logsock type: native/ => 1,
+ qr/:\d\d $host syslogd-.*: client logsock type: unix/ => 1,
+ qr/:\d\d $host syslogd-.*: client logsock type: udp/ => 1,
+ qr/:\d\d $host syslogd-.*: client logsock type: tcp/ => 1,
+ },
+ },
+ file => {
+ loggrep => {
+ qr/ client connect / => 3,
+ qr/:\d\d 127.0.0.1 client connect proto: udp$/ => 1,
+ qr/:\d\d 127.0.0.1 client connect proto: tcp$/ => 1,
+ qr/:\d\d 127.0.0.1 client connect proto: tls$/ => 1,
+ qr/ client logsock / => 4,
+ qr/:\d\d $host syslogd-.*: client logsock type: native/ => 1,
+ qr/:\d\d $host syslogd-.*: client logsock type: unix/ => 1,
+ qr/:\d\d 127.0.0.1 syslogd-.*: client logsock type: udp/ => 1,
+ qr/:\d\d 127.0.0.1 syslogd-.*: client logsock type: tcp/ => 1,
+ },
+ },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-secure-udp.pl b/regress/usr.sbin/syslogd/args-secure-udp.pl
index 0ac255d66e0..9203940e73c 100644
--- a/regress/usr.sbin/syslogd/args-secure-udp.pl
+++ b/regress/usr.sbin/syslogd/args-secure-udp.pl
@@ -13,43 +13,29 @@ our %args = (
client => {
connectaddr => "none",
redo => [
- {
+ { connect => {
domain => AF_INET,
addr => "127.0.0.1",
- },
- {
+ proto => "udp",
+ port => "514",
+ }},
+ { connect => {
domain => AF_INET,
addr => "127.0.0.1",
- },
- {
+ proto => "udp",
+ port => "514",
+ }},
+ { connect => {
domain => AF_INET6,
addr => "::1",
- },
+ proto => "udp",
+ port => "514",
+ }},
],
- func => sub {
+ func => sub { redo_connect(shift, sub {
my $self = shift;
write_message($self, "client addr: ". $self->{connectaddr});
- if ($self->{cs}) {
- # wait for possible icmp errors, port is open
- sleep .1;
- close($self->{cs})
- or die ref($self), " close failed: $!";
- };
- if (my $connect = shift @{$self->{redo}}) {
- $self->{connectdomain} = $connect->{domain};
- $self->{connectaddr} = $connect->{addr};
- $self->{connectproto} = "udp";
- $self->{connectport} = "514";
- } else {
- delete $self->{connectdomain};
- $self->{logsock} = { type => "native" };
- setlogsock($self->{logsock})
- or die ref($self), " setlogsock failed: $!";
- sleep .1;
- write_log($self);
- undef $self->{redo};
- }
- },
+ })},
loggrep => {
qr/client addr:/ => 4,
get_testgrep() => 1,
diff --git a/regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl b/regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl
index edb521187ab..dc921b34e9f 100644
--- a/regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl
+++ b/regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl
@@ -32,20 +32,14 @@ our %args = (
},
server => {
listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
$self->close();
shutdown(\*STDOUT, 1)
or die "shutdown write failed: $!";
${$self->{syslogd}}->loggrep($errors, 5)
or die "no $errors in syslogd.log";
$self->listen();
- $self->{redo}++;
})},
loggrep => {
qr/Accepted/ => 2,
diff --git a/regress/usr.sbin/syslogd/args-server-tls-reconnect.pl b/regress/usr.sbin/syslogd/args-server-tls-reconnect.pl
index 46df33377c3..4bbdf3e6b04 100644
--- a/regress/usr.sbin/syslogd/args-server-tls-reconnect.pl
+++ b/regress/usr.sbin/syslogd/args-server-tls-reconnect.pl
@@ -34,20 +34,14 @@ our %args = (
},
server => {
listen => { domain => AF_INET, proto => "tls", addr => "127.0.0.1" },
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
$self->close();
shutdown(\*STDOUT, 1)
or die "shutdown write failed: $!";
${$self->{syslogd}}->loggrep($errors, 5)
or die "no $errors in syslogd.log";
$self->listen();
- $self->{redo}++;
})},
loggrep => {
qr/Accepted/ => 2,
diff --git a/regress/usr.sbin/syslogd/args-sighup-tcp.pl b/regress/usr.sbin/syslogd/args-sighup-tcp.pl
index 77467ee977f..bb939a606d5 100644
--- a/regress/usr.sbin/syslogd/args-sighup-tcp.pl
+++ b/regress/usr.sbin/syslogd/args-sighup-tcp.pl
@@ -37,13 +37,8 @@ our %args = (
},
server => {
listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
${$self->{syslogd}}->rotate();
${$self->{syslogd}}->kill_syslogd('HUP');
${$self->{syslogd}}->loggrep("syslogd: restarted", 5)
@@ -51,7 +46,6 @@ our %args = (
print STDERR "Signal\n";
# regenerate fstat file
${$self->{syslogd}}->fstat();
- $self->{redo}++;
})},
loggrep => {
get_between2loggrep(),
diff --git a/regress/usr.sbin/syslogd/args-sighup-tls.pl b/regress/usr.sbin/syslogd/args-sighup-tls.pl
index d6df5f8066b..9b4071b6fcd 100644
--- a/regress/usr.sbin/syslogd/args-sighup-tls.pl
+++ b/regress/usr.sbin/syslogd/args-sighup-tls.pl
@@ -37,13 +37,8 @@ our %args = (
},
server => {
listen => { domain => AF_INET, proto => "tls", addr => "127.0.0.1" },
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
${$self->{syslogd}}->rotate();
${$self->{syslogd}}->kill_syslogd('HUP');
${$self->{syslogd}}->loggrep("syslogd: restarted", 5)
@@ -51,7 +46,6 @@ our %args = (
print STDERR "Signal\n";
# regenerate fstat file
${$self->{syslogd}}->fstat();
- $self->{redo}++;
})},
loggrep => {
get_between2loggrep(),
diff --git a/regress/usr.sbin/syslogd/args-sync-tcp.pl b/regress/usr.sbin/syslogd/args-sync-tcp.pl
index 19d83033d88..aa5e638c62a 100644
--- a/regress/usr.sbin/syslogd/args-sync-tcp.pl
+++ b/regress/usr.sbin/syslogd/args-sync-tcp.pl
@@ -40,13 +40,8 @@ our %args = (
server => {
listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
rcvbuf => 2**12,
- redo => 0,
- func => sub { read_between2logs(shift, sub {
+ func => sub { accept_between2logs(shift, sub {
my $self = shift;
- if ($self->{redo}) {
- $self->{redo}--;
- return;
- }
# read slowly to get output buffer out of sync
foreach (1..10) {
print STDERR ">>> ". scalar <STDIN>;
@@ -57,7 +52,6 @@ our %args = (
or die ref($self), " syslogd did not receive third log";
shutdown(\*STDOUT, 1)
or die "shutdown write failed: $!";
- $self->{redo}++;
})},
loggrep => {
qr/Accepted/ => 2,
diff --git a/regress/usr.sbin/syslogd/funcs.pl b/regress/usr.sbin/syslogd/funcs.pl
index e296b3ebcb9..0ab59a2e05e 100644
--- a/regress/usr.sbin/syslogd/funcs.pl
+++ b/regress/usr.sbin/syslogd/funcs.pl
@@ -1,4 +1,4 @@
-# $OpenBSD: funcs.pl,v 1.32 2017/04/07 15:49:46 bluhm Exp $
+# $OpenBSD: funcs.pl,v 1.33 2017/09/13 00:35:53 bluhm Exp $
# Copyright (c) 2010-2015 Alexander Bluhm <bluhm@openbsd.org>
#
@@ -193,6 +193,47 @@ sub write_tcp {
print STDERR "<<< $msg\n";
}
+sub redo_connect {
+ my $self = shift;
+ my $func = shift;
+
+ $func->($self, @_);
+ if ($self->{cs}) {
+ # wait for possible icmp errors, port is open
+ sleep .1;
+ close(delete $self->{cs})
+ or die ref($self), " close failed: $!";
+ }
+ if (my $redo = shift @{$self->{redo}}) {
+ if (my $connect = $redo->{connect}) {
+ delete $self->{logsock};
+ $self->{connectdomain} = $connect->{domain};
+ $self->{connectaddr} = $connect->{addr};
+ $self->{connectproto} = $connect->{proto};
+ $self->{connectport} = $connect->{port};
+ } elsif (my $logsock = $redo->{logsock}) {
+ delete $self->{connectdomain};
+ delete $self->{connectaddr};
+ delete $self->{connectproto};
+ delete $self->{connectport};
+ $self->{logsock} = $logsock;
+ } else {
+ die ref($self), " no connect or logsock in redo";
+ }
+ } else {
+ delete $self->{connectdomain};
+ delete $self->{connectaddr};
+ delete $self->{connectproto};
+ delete $self->{connectport};
+ $self->{logsock} = { type => "native" };
+ setlogsock($self->{logsock})
+ or die ref($self), " setlogsock failed: $!";
+ sleep .1;
+ write_log($self);
+ undef $self->{redo};
+ }
+}
+
########################################################################
# Server funcs
########################################################################
@@ -207,11 +248,22 @@ sub read_between2logs {
my $self = shift;
my $func = shift;
- unless ($self->{redo}) {
- read_message($self, $firstlog);
- }
+ read_message($self, $firstlog);
$func->($self, @_);
+ read_message($self, $testlog);
+ read_message($self, $downlog);
+}
+
+sub accept_between2logs {
+ my $self = shift;
+ my $func = shift;
+
unless ($self->{redo}) {
+ read_message($self, $firstlog);
+ $func->($self, @_);
+ $self->{redo} = 1;
+ } else {
+ $self->{redo} = 0;
read_message($self, $testlog);
read_message($self, $downlog);
}