aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@nxc.no>2018-02-02 14:50:53 +0100
committerSergey Poznyakoff <gray@nxc.no>2018-02-02 14:50:53 +0100
commit8a2e9da972cee4714c02f3dd23a3b7fcab9a0476 (patch)
treeee00ab302734161ec756313e8bbede8a82fb86eb /src
parent83919b99e222077a1bb61757403779cc4f456edc (diff)
downloadvarnish-mib-8a2e9da972cee4714c02f3dd23a3b7fcab9a0476.tar.gz
varnish-mib-8a2e9da972cee4714c02f3dd23a3b7fcab9a0476.tar.bz2
Bugfixes
Use consistend debug token names. Make sure configuration settings are honored by opening VSM and doing initial loading after the configuration has been read and processed. Avoid inifinite recursion in dict_load. * src/modconf.c: New file. * src/modconf.h: New file. * src/vclient.h: New file. * src/Makefile.am: Add new files. * src/VARNISH-MIB.txt: Minor changes in descriptions. * src/backend.h (backend_collect_addr): Change prototype. * src/ban.c: Remove configuration management functions. * src/betab.c: Likewise. * src/statdict.c (dict_lookup): Remove debugging kludge. (dict_load): Don't call backend_collect_addr. It is responsibility of the caller. * src/varnish_mib.mib2c: Rearrange includes. Open VSM after parsing configuration. (init_$modulename): Allow loading of one instance only. * src/vcli.c: Rewrite socket support.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am5
-rw-r--r--src/VARNISH-MIB.txt16
-rw-r--r--src/backend.h2
-rw-r--r--src/ban.c45
-rw-r--r--src/betab.c20
-rw-r--r--src/modconf.c123
-rw-r--r--src/modconf.h9
-rw-r--r--src/statdict.c4
-rw-r--r--src/varnish_mib.mib2c88
-rw-r--r--src/vcli.c228
-rw-r--r--src/vclient.h21
11 files changed, 357 insertions, 204 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 3b5547b..3ef9fa5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,18 +20,21 @@ dlmod_LTLIBRARIES = varnish-mib.la
20varnish_mib_la_SOURCES = \ 20varnish_mib_la_SOURCES = \
21 auth.c\ 21 auth.c\
22 ban.c\ 22 ban.c\
23 backend.h\ 23 backend.h\
24 belex.l\ 24 belex.l\
25 betab.c\ 25 betab.c\
26 modconf.h\
27 modconf.c\
26 sha256.c\ 28 sha256.c\
27 sha256.h\ 29 sha256.h\
28 statdict.c\ 30 statdict.c\
29 varnish_mib.c\ 31 varnish_mib.c\
30 varnish_mib.h\ 32 varnish_mib.h\
31 vcli.c 33 vcli.c\
34 vclient.h
32 35
33BUILT_SOURCES = \ 36BUILT_SOURCES = \
34 varnish_mib.c\ 37 varnish_mib.c\
35 varnish_mib.h 38 varnish_mib.h
36 39
37varnish_mib.c varnish_mib.h: varnish_mib.mib2c VARNISH-MIB.txt 40varnish_mib.c varnish_mib.h: varnish_mib.mib2c VARNISH-MIB.txt
diff --git a/src/VARNISH-MIB.txt b/src/VARNISH-MIB.txt
index 8d60477..6b03f21 100644
--- a/src/VARNISH-MIB.txt
+++ b/src/VARNISH-MIB.txt
@@ -17,20 +17,20 @@ IMPORTS
17 InetAddressIPv4, InetAddressIPv6, InetPortNumber 17 InetAddressIPv4, InetAddressIPv6, InetPortNumber
18 FROM INET-ADDRESS-MIB 18 FROM INET-ADDRESS-MIB
19 OBJECT-GROUP, MODULE-COMPLIANCE 19 OBJECT-GROUP, MODULE-COMPLIANCE
20 FROM SNMPv2-CONF; 20 FROM SNMPv2-CONF;
21 21
22varnishMIB MODULE-IDENTITY 22varnishMIB MODULE-IDENTITY
23 LAST-UPDATED "201802012132Z" 23 LAST-UPDATED "201802020845Z"
24 ORGANIZATION "Shared Autonomous sYstems" 24 ORGANIZATION "Shared Autonomous sYstems"
25 CONTACT-INFO "Morten Hermanrud <mhe@say.no> 25 CONTACT-INFO "Morten Hermanrud <mhe@say.no>
26 Sergey Poznyakoff <gray@gnu.org> 26 Sergey Poznyakoff <gray@gnu.org>
27 " 27 "
28 DESCRIPTION 28 DESCRIPTION
29 "This MIB module defines objects for Varnish reverse web proxy." 29 "This MIB module defines objects for Varnish reverse web proxy."
30 REVISION "201802012132Z" 30 REVISION "201802020845Z"
31 DESCRIPTION 31 DESCRIPTION
32 "Second revision." 32 "Second revision."
33 ::= { varnish 0 } 33 ::= { varnish 0 }
34 34
35varnish OBJECT IDENTIFIER ::= { enterprises 33043 6 1 } 35varnish OBJECT IDENTIFIER ::= { enterprises 33043 6 1 }
36client OBJECT IDENTIFIER ::= { varnish 1 } 36client OBJECT IDENTIFIER ::= { varnish 1 }
@@ -109,21 +109,23 @@ clientRequests400 OBJECT-TYPE
109 109
110clientRequests411 OBJECT-TYPE 110clientRequests411 OBJECT-TYPE
111 SYNTAX Counter64 111 SYNTAX Counter64
112 MAX-ACCESS read-only 112 MAX-ACCESS read-only
113 STATUS current 113 STATUS current
114 DESCRIPTION 114 DESCRIPTION
115 "Client requests received, subject to 411 errors." 115 "Client requests received, subject to 411 errors.
116 This OID is not available in Varnish version 5 and above."
116 ::= { client 8 } 117 ::= { client 8 }
117 118
118clientRequests413 OBJECT-TYPE 119clientRequests413 OBJECT-TYPE
119 SYNTAX Counter64 120 SYNTAX Counter64
120 MAX-ACCESS read-only 121 MAX-ACCESS read-only
121 STATUS current 122 STATUS current
122 DESCRIPTION 123 DESCRIPTION
123 "Client requests received, subject to 413 errors." 124 "Client requests received, subject to 413 errors.
125 This OID is not available in Varnish version 5 and above."
124 ::= { client 9 } 126 ::= { client 9 }
125 127
126clientRequests417 OBJECT-TYPE 128clientRequests417 OBJECT-TYPE
127 SYNTAX Counter64 129 SYNTAX Counter64
128 MAX-ACCESS read-only 130 MAX-ACCESS read-only
129 STATUS current 131 STATUS current
@@ -183,13 +185,14 @@ backendConnRecycled OBJECT-TYPE
183 185
184backendConnUnused OBJECT-TYPE 186backendConnUnused OBJECT-TYPE
185 SYNTAX Counter64 187 SYNTAX Counter64
186 MAX-ACCESS read-only 188 MAX-ACCESS read-only
187 STATUS current 189 STATUS current
188 DESCRIPTION 190 DESCRIPTION
189 "Backend connections unused." 191 "Backend connections unused.
192 This OID is not available in Varnish version 5 and above."
190 ::= { connections 7 } 193 ::= { connections 7 }
191 194
192backendConnRetry OBJECT-TYPE 195backendConnRetry OBJECT-TYPE
193 SYNTAX Counter64 196 SYNTAX Counter64
194 MAX-ACCESS read-only 197 MAX-ACCESS read-only
195 STATUS current 198 STATUS current
@@ -909,13 +912,14 @@ vclDiscard OBJECT-TYPE
909 912
910vclFail OBJECT-TYPE 913vclFail OBJECT-TYPE
911 SYNTAX Counter64 914 SYNTAX Counter64
912 MAX-ACCESS read-only 915 MAX-ACCESS read-only
913 STATUS current 916 STATUS current
914 DESCRIPTION 917 DESCRIPTION
915 "Number of VCL failures" 918 "Number of VCL failures.
919 This OID is not available in Varnish 4 and below."
916 ::= { vcl 4 } 920 ::= { vcl 4 }
917 921
918-- 922--
919-- Groups and Compliance 923-- Groups and Compliance
920-- 924--
921varnishConfs OBJECT IDENTIFIER ::= { varnish 100 } 925varnishConfs OBJECT IDENTIFIER ::= { varnish 100 }
diff --git a/src/backend.h b/src/backend.h
index 0c15e60..d60f613 100644
--- a/src/backend.h
+++ b/src/backend.h
@@ -8,9 +8,9 @@ typedef void (*regfun_t)(be_string_t *, be_string_t *, be_string_t *, void *);
8void read_defs(const char *str, size_t len, regfun_t regfun, void *d); 8void read_defs(const char *str, size_t len, regfun_t regfun, void *d);
9void varnish_backend_table_timeout_parser(const char *token, char *line); 9void varnish_backend_table_timeout_parser(const char *token, char *line);
10struct VSC_point; 10struct VSC_point;
11void backend_register(char const *name, size_t len, char const *param, 11void backend_register(char const *name, size_t len, char const *param,
12 const struct VSC_point *vpt); 12 const struct VSC_point *vpt);
13void backend_clear(void); 13void backend_clear(void);
14int backend_collect_addr(void); 14int backend_collect_addr(struct vsm *vsm);
15void backend_parser(const char *str, size_t len, regfun_t regfun, void *d); 15void backend_parser(const char *str, size_t len, regfun_t regfun, void *d);
16 16
diff --git a/src/ban.c b/src/ban.c
index 0c354e9..1f4583b 100644
--- a/src/ban.c
+++ b/src/ban.c
@@ -48,59 +48,22 @@ varnish_ban(netsnmp_agent_request_info *reqinfo,
48 if (!expr) { 48 if (!expr) {
49 snmp_log(LOG_ERR, "out of memory\n"); 49 snmp_log(LOG_ERR, "out of memory\n");
50 return SNMP_ERR_GENERR; 50 return SNMP_ERR_GENERR;
51 } 51 }
52 memcpy(expr, requests->requestvb->val.string, len); 52 memcpy(expr, requests->requestvb->val.string, len);
53 expr[len] = 0; 53 expr[len] = 0;
54 DEBUGMSGTL(("varnish_ban", "setting ban %s\n", expr)); 54 DEBUGMSGTL(("varnish_mib:ban", "setting ban %s\n", expr));
55 rc = vcli_connect(vsm, &conn); 55 rc = vcli_connect(vsm, &conn);
56 if (rc == SNMP_ERR_NOERROR) { 56 if (rc == SNMP_ERR_NOERROR) {
57 rc = send_ban_cmd(&conn, expr); 57 rc = send_ban_cmd(&conn, expr);
58 vcli_disconnect(&conn); 58 vcli_disconnect(&conn);
59 } 59 }
60 free(expr); 60 free(expr);
61 return rc ? SNMP_ERR_GENERR : SNMP_ERR_NOERROR; 61 return rc ? SNMP_ERR_GENERR : SNMP_ERR_NOERROR;
62} 62}
63 63
64unsigned banTable_timeout = 60;
65
66int
67varnish_mib_timeout_parser(const char *token, char *line, unsigned *retval)
68{
69 char *p;
70 unsigned long n = strtoul(line, &p, 10);
71
72 if (*p) {
73 if (isspace(*p)) {
74 while (*p && isspace(*p))
75 ++p;
76 if (*p) {
77 config_perror("too many arguments");
78 return 1;
79 }
80 } else {
81 config_perror("invalid timeout value");
82 return 1;
83 }
84 }
85
86 if (n > UINT_MAX) {
87 config_perror("timeout value out of allowed range");
88 return 1;
89 }
90
91 *retval = n;