diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-04-27 14:26:04 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-04-27 15:02:18 +0300 |
commit | 94973146c58df26b20e17e2e5b1274216ca88969 (patch) | |
tree | 17538cc2991af0acec5bebfe6a826ef67cd9fc95 | |
parent | 319c154c46214fdc5d8f8b498ae5a23bc8d03072 (diff) | |
download | varnish-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-- | NEWS | 11 | ||||
-rwxr-xr-x | bootstrap | 84 | ||||
-rw-r--r-- | configure.ac | 20 | ||||
-rw-r--r-- | src/betab.c | 8 | ||||
-rw-r--r-- | src/varnish-mib.8 | 40 | ||||
-rw-r--r-- | src/varnish_mib.mib2c | 39 | ||||
-rw-r--r-- | src/vcli.c | 4 |
7 files changed, 172 insertions, 34 deletions
@@ -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 @@ -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@ @@ -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); |