aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-04-27 14:26:04 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2016-04-27 15:02:18 +0300
commit94973146c58df26b20e17e2e5b1274216ca88969 (patch)
tree17538cc2991af0acec5bebfe6a826ef67cd9fc95
parent319c154c46214fdc5d8f8b498ae5a23bc8d03072 (diff)
downloadvarnish-mib-94973146c58df26b20e17e2e5b1274216ca88969.tar.gz
varnish-mib-94973146c58df26b20e17e2e5b1274216ca88969.tar.bz2
Support for Varnish 4.1
* NEWS: Update. * bootstrap: Rewrite as a Perl script; create m4/varnish_mib.m4 from src/varnish_mib.mib2c * configure.ac: Version 1.1.90 Use AC_CHECK_VSC_C_MAIN_MEMBERS Define VARNISHAPI_MAJOR, VARNISHAPI_MINOR and VARNISHAPI_PATCH for use in preprocessor directives. * src/betab.c [VARNISHAPI_MINOR] (VSC_POINT_FMT): Define depending on Varnish API minor version. * src/varnish_mib.mib2c (varnish_translate_table): New variable. It is used both by varnish_translate in this module, and by bootstrap to produce a list of macros checking for members of struct VSC_C_main. Output preprocessor conditionals in right places. * src/vcli.c (vcli_connect): Fix cc warnings. * src/varnish-mib.8: Update.
-rw-r--r--NEWS11
-rwxr-xr-xbootstrap84
-rw-r--r--configure.ac20
-rw-r--r--src/betab.c8
-rw-r--r--src/varnish-mib.840
-rw-r--r--src/varnish_mib.mib2c39
-rw-r--r--src/vcli.c4
7 files changed, 172 insertions, 34 deletions
diff --git a/NEWS b/NEWS
index cb6b102..f12c539 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,3 @@
-Varnish-mib NEWS -- history of user-visible changes. 2015-02-25
-Copyright (C) 2014-2015 Sergey Poznyakoff
+Varnish-mib NEWS -- history of user-visible changes. 2016-04-27
+Copyright (C) 2014-2016 Sergey Poznyakoff
See the end of file for copying conditions.
@@ -6,2 +6,7 @@ Please send Varnish-mib bug reports to <gray@gnu.org>
+Version 1.1.90 (Git)
+
+* Support for Varnish 4.1
+
+
Version 1.1, 2015-02-25
@@ -18,3 +23,3 @@ Initial release.
-Copyright (C) 2014-2015 Sergey Poznyakoff
+Copyright (C) 2014-2016 Sergey Poznyakoff
diff --git a/bootstrap b/bootstrap
index c55c2b2..25bc72e 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,7 +1,77 @@
-#!/bin/sh
-for dir in m4 build-aux
-do
- test -d $dir || mkdir $dir
-done
-> ChangeLog
-autoreconf -f -i -s
+#!/usr/bin/perl
+use strict;
+use autodie;
+
+my $mib2c_config = 'src/varnish_mib.mib2c';
+
+die "This file must be run from the varnish-mib top level source directory"
+ unless -r $mib2c_config;
+
+print "$0: creating ancillary directories and files\n";
+foreach my $dir ('m4', 'build-aux') {
+ mkdir($dir) unless -d $dir;
+}
+
+unless (-f 'ChangeLog') {
+ open(my $fd, '>', 'ChangeLog');
+ print $fd <<EOT
+This file is a placeholder. It will be filled with actual data by the first
+run of make.
+EOT
+;
+ close $fd;
+}
+
+print "$0: generating m4/varnish_mib.m4\n";
+open(my $fd, '<', $mib2c_config);
+my $prog;
+while (<$fd>) {
+ if (defined($prog)) {
+ last if /^\@endperl\@/;
+ $prog .= $_;
+ } else {
+ if (/^\@startperl\@/) {
+ $prog = "no strict \"vars\";\n";
+ }
+ }
+}
+
+my %vars;
+eval $prog;
+die $@ if $@;
+die "$mib2c_config does not declare translation table"
+ unless exists $vars{'varnish_translate_table'};
+
+open(my $fd, '>', 'm4/varnish_mib.m4');
+print $fd <<'EOT';
+AC_DEFUN([AC_CHECK_VSC_C_MAIN_MEMBERS],
+[save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $VARNISHAPI_CFLAGS"
+EOT
+;
+
+foreach my $member (sort
+ map { $_->[1] }
+ grep { $_->[0] eq 'MAIN' }
+ values %{$vars{'varnish_translate_table'}}) {
+ print $fd <<EOT
+ AC_CHECK_MEMBERS([struct VSC_C_main.$member],,,
+[#include <stddef.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <limits.h>
+#include <vapi/vsc.h>
+#include <vapi/vsm.h>
+#include <vcli.h>])
+EOT
+;
+}
+print $fd <<'EOT'
+CFLAGS="$save_CFLAGS"
+])
+EOT
+;
+close $fd;
+
+print "$0: reconfiguring\n";
+exec('autoreconf -f -i -s');
diff --git a/configure.ac b/configure.ac
index d571518..cf0bf05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,3 +1,3 @@
# This file is part of Varnish-mib -*- autoconf -*-
-# Copyright (C) 2014-2015 Sergey Poznyakoff
+# Copyright (C) 2014-2016 Sergey Poznyakoff
#
@@ -17,3 +17,3 @@
AC_PREREQ(2.69)
-AC_INIT([varnish-mib], 1.1, [gray@gnu.org])
+AC_INIT([varnish-mib], 1.1.90, [gray@gnu.org])
AC_CONFIG_SRCDIR(src/varnish_mib.mib2c)
@@ -45,2 +45,18 @@ PKG_CHECK_MODULES([VARNISHAPI], [varnishapi >= 4.0])
+varnishapi_version() {
+ AC_DEFINE_UNQUOTED([VARNISHAPI_MAJOR],[$1],[Varnish API major version number])
+ AC_DEFINE_UNQUOTED([VARNISHAPI_MINOR],[$2],[Varnish API minor version number])
+ AC_DEFINE_UNQUOTED([VARNISHAPI_PATCH],[$3],[Varnish API patchlevel])
+}
+
+v=$($PKG_CONFIG --modversion varnishapi)
+if test -n "$v"; then
+ save_IFS=$IFS
+ IFS='.'
+ varnishapi_version $v
+ IFS=$save_IFS
+fi
+
+AC_CHECK_VSC_C_MAIN_MEMBERS
+
# Check for Net-SNMP
diff --git a/src/betab.c b/src/betab.c
index b583958..49e02f7 100644
--- a/src/betab.c
+++ b/src/betab.c
@@ -61,3 +61,9 @@ create_entry(netsnmp_tdata *table_data, long idx,
#define VSC_POINT_NAME(p) ((p)->desc->name)
-#define VSC_POINT_FMT(p) ((p)->desc->fmt)
+#if VARNISHAPI_MINOR == 0
+# define VSC_POINT_FMT(p) ((p)->desc->fmt)
+#elif VARNISHAPI_MINOR == 1
+# define VSC_POINT_FMT(p) ((p)->desc->ctype)
+#else
+# error "unsupported Varnish API minor number"
+#endif
diff --git a/src/varnish-mib.8 b/src/varnish-mib.8
index 4559b0c..0c54e6f 100644
--- a/src/varnish-mib.8
+++ b/src/varnish-mib.8
@@ -1,3 +1,3 @@
.\" This file is part of Varnish-mib -*- nroff -*-
-.\" Copyright (C) 2014-2015 Sergey Poznyakoff
+.\" Copyright (C) 2014-2016 Sergey Poznyakoff
.\"
@@ -15,3 +15,3 @@
.\" along with Varnish-mib. If not, see <http://www.gnu.org/licenses/>.
-.TH VARNISH-MIB 8 "November 28, 2014" "varnish-mib"
+.TH VARNISH-MIB 8 "April 27, 2016" "varnish-mib"
.SH NAME
@@ -29,3 +29,12 @@ loaded into
as shown above (actual path can of course differ, depending on how
-the package was configured).
+the package was configured). Varnish version \fB4.0\fR and \fB4.1\fR
+are supported.
+.PP
+When using with \fBVarnish\fR version \fB4.1\fR, make sure the
+\fB_.vsm\fR file is readable for \fBsnmpd\fR. This file is normally
+located in \fB/var/lib/varnish/\fIHOSTNAME\fR and has mode \fB640\fR.
+Its owner is determined by the \fB\-j\fR (\fB\-\-jail\fR)
+\fBvarnishd\fR option. There are two ways to ensure it is readable:
+either make sure \fBsnmpd\fR and \fBvarnishd\fR run with the same user
+group, or use \fBsetfacl\fR(1) to tune access to that file.
.PP
@@ -36,4 +45,4 @@ administrative interface. For these to work, the module must have
read access to Varnish secret file. In other words, the secret file
-must be readable either by the user \fBsnmpd\fR runs as, or by one
-of this user's groups.
+must be readable either by the user \fBsnmpd\fR runs as, or by its
+group.
.SH CONFIGURATION OPTIONS
@@ -95,2 +104,13 @@ the backend before delivering it to the client.
.TP
+.B clientRequests400
+Client requests received, subject to 400 errors.
+.TP
+.B clientRequests411
+Client requests received, subject to 411 errors. This variable is
+available only in Varnish version \fR4.0\fR.
+.TP
+.B clientRequests413
+Client requests received, subject to 413 errors. This variable is
+available only in Varnish version \fR4.0\fR.
+.TP
.B clientBan
@@ -130,3 +150,4 @@ unless the backend closes it.
.B backendConnUnused
-Number of unused backend connections.
+Number of unused backend connections. This variable is available only
+in Varnish version \fR4.0\fR.
.TP
@@ -239,3 +260,3 @@ Number of sessions closed.
.B sessPipeline
-Session pipeline.
+Session pipeline. This variable is available only in Varnish version \fR4.0\fR.
.TP
@@ -254,3 +275,4 @@ Number of session accept failures.
.B sessPipeOverflow
-Number of session pipe overflows.
+Number of session pipe overflows. This variable is available only in
+Varnish version \fR4.0\fR.
.SS Branch \(dqthreads\(dq
@@ -359,3 +381,3 @@ Report bugs to <gray@gnu.org>.
.SH COPYRIGHT
-Copyright \(co 2014 Sergey Poznyakoff
+Copyright \(co 2014-2016 Sergey Poznyakoff
.br
diff --git a/src/varnish_mib.mib2c b/src/varnish_mib.mib2c
index a5367e0..9d49ce9 100644
--- a/src/varnish_mib.mib2c
+++ b/src/varnish_mib.mib2c
@@ -1,3 +1,3 @@
# This file is part of varnish-mib -*- c -*-
-# Copyright (C) 2014-2015 Sergey Poznyakoff
+# Copyright (C) 2014-2016 Sergey Poznyakoff
#
@@ -26,5 +26,3 @@
@startperl@
-$vars{'varnish_translate'} = sub {
- my $name = shift;
- my %trans = (
+$vars{'varnish_translate_table'} = {
uptime => [ 'MAIN', 'uptime' ],
@@ -104,5 +102,8 @@ $vars{'varnish_translate'} = sub {
- );
+};
+
+$vars{'varnish_translate'} = sub {
+ my $name = shift;
- my $r = $trans{$name};
+ my $r = $vars{'varnish_translate_table'}->{$name};
if (!defined($r)) {
@@ -119,2 +120,9 @@ $vars{'varnish_translate'} = sub {
}
+ if ($vars{'varnish_type'} eq 'MAIN') {
+ $vars{'varnish_if'} = "#if HAVE_STRUCT_VSC_C_MAIN_" . uc($vars{'varnish_member'});
+ $vars{'varnish_endif'} = '#endif';
+ } else {
+ delete $vars{'varnish_if'};
+ delete $vars{'varnish_endif'}
+ }
return 0;
@@ -226,2 +234,6 @@ varnish_get_vsm_data()
@foreach $i scalar@
+ @startperl@
+ &{$vars{'varnish_translate'}}($vars{'i'});
+ @endperl@
+$varnish_if
static int
@@ -236,6 +248,2 @@ handle_$i(netsnmp_mib_handler *handler,
- @startperl@
- &{$vars{'varnish_translate'}}($vars{'i'});
- @endperl@
-
if (!varnish_get_vsm_data())
@@ -361,2 +369,3 @@ handle_$i(netsnmp_mib_handler *handler,
}
+$varnish_endif
@end@
@@ -545,3 +554,8 @@ init_$modulename(void)
@foreach $i scalar@
+ @startperl@
+ &{$vars{'varnish_translate'}}($vars{'i'});
+ @endperl@
+$varnish_if
const oid ${i}_oid[] = { $i.commaoid };
+$varnish_endif
@end@
@@ -569,2 +583,6 @@ init_$modulename(void)
@foreach $i scalar@
+ @startperl@
+ &{$vars{'varnish_translate'}}($vars{'i'});
+ @endperl@
+$varnish_if
netsnmp_register_scalar(
@@ -579,2 +597,3 @@ init_$modulename(void)
));
+$varnish_endif
@end@
diff --git a/src/vcli.c b/src/vcli.c
index 736d9b3..c204cf3 100644
--- a/src/vcli.c
+++ b/src/vcli.c
@@ -441,3 +441,3 @@ vcli_connect(struct VSM_data *vd, struct vcli_conn *conn)
}
- DEBUGMSGTL(("varnish_mib:vcli", "-T '%s'\n", vt.b));
+ DEBUGMSGTL(("varnish_mib:vcli", "-T '%s'\n", (char*) vt.b));
@@ -491,3 +491,3 @@ vcli_connect(struct VSM_data *vd, struct vcli_conn *conn)
}
- DEBUGMSGTL(("varnish_mib:vcli", "-S '%s'\n", vt.b));
+ DEBUGMSGTL(("varnish_mib:vcli", "-S '%s'\n", (char*) vt.b));
s = strdup(vt.b);

Return to:

Send suggestions and report system problems to the System administrator.