diff options
author | 2017-09-13 00:35:53 +0000 | |
---|---|---|
committer | 2017-09-13 00:35:53 +0000 | |
commit | be4712f2954571375e2919c9330590d17b249861 (patch) | |
tree | fdaed2a5ae759b49e9915c5e22b52e2e681ab78d | |
parent | - sprinkle variable name and printf tweaks (diff) | |
download | wireguard-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.pm | 6 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/Makefile | 9 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-client-multilisten.pl | 54 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-dropped-sighup-tcp.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-dropped-sighup-tls.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-hostname.pl | 93 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-secure-udp.pl | 42 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-server-tcp-reconnect.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-server-tls-reconnect.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-sighup-tcp.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-sighup-tls.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/args-sync-tcp.pl | 8 | ||||
-rw-r--r-- | regress/usr.sbin/syslogd/funcs.pl | 60 |
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); } |