diff options
Diffstat (limited to 'src/varnish_mib.mib2c')
-rw-r--r-- | src/varnish_mib.mib2c | 86 |
1 files changed, 39 insertions, 47 deletions
diff --git a/src/varnish_mib.mib2c b/src/varnish_mib.mib2c index 6915689..404f511 100644 --- a/src/varnish_mib.mib2c +++ b/src/varnish_mib.mib2c @@ -35,8 +35,8 @@ $vars{'varnish_translate_table'} = { clientRequestsReceived => [ 'DICT', 'MAIN.client_req' ], clientRequests400 => [ 'DICT', 'MAIN.client_req_400' ], - clientRequests411 => [ 'NULL', 'MAIN.client_req_411' ], - clientRequests413 => [ 'NULL', 'MAIN.client_req_413' ], + clientRequests411 => [ 'NULL' ], + clientRequests413 => [ 'NULL' ], clientRequests417 => [ 'DICT', 'MAIN.client_req_417' ], @@ -46,7 +46,7 @@ $vars{'varnish_translate_table'} = { backendConnFailures => [ 'DICT', 'MAIN.backend_fail' ], backendConnReuses => [ 'DICT', 'MAIN.backend_reuse' ], backendConnRecycled => [ 'DICT', 'MAIN.backend_recycle' ], - backendConnUnused => [ 'NULL', 'MAIN.backend_toolate' ], + backendConnUnused => [ 'NULL' ], backendConnRetry => [ 'DICT', 'MAIN.backend_retry' ], backendRequests => [ 'DICT', 'MAIN.backend_req' ], @@ -161,30 +161,19 @@ $vars{'modulename'} =~ s/\.c$//; #include <stdlib.h> #include <stdint.h> #include <limits.h> +#include <errno.h> #include <vapi/vsc.h> #include <vapi/vsm.h> #include <vcli.h> +#include <vas.h> #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> #include <net-snmp/agent/net-snmp-agent-includes.h> -typedef struct vcli_conn { - int fd; - char *secret; - int resp; - char *base; - size_t bufmax; - size_t bufsize; -} vcli_conn_t; - -int vcli_write(vcli_conn_t *conn); -int vcli_read_response(vcli_conn_t *conn); -int vcli_vasprintf(vcli_conn_t *conn, const char *fmt, va_list ap); -int vcli_asprintf(vcli_conn_t *conn, const char *fmt, ...); -void vcli_disconnect(vcli_conn_t *conn); -int vcli_connect(struct vsm *vsm, vcli_conn_t *conn); +#include "vclient.h" +#include "modconf.h" struct vsm *varnish_get_vsm_data(void); @@ -195,12 +184,6 @@ int varnish_ban(netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests, struct vsm *vsm); -int varnish_mib_timeout_parser(const char *token, char *line, - unsigned *retval); - -void varnish_ban_table_timeout_parser(const char *token, char *line); -void varnish_vcli_timeout_parser(const char *token, char *line); - int dict_lookup(char const *key, uint64_t *val); void dict_install(struct VSC_point const *pt); void dict_load(struct vsc *vsc); @@ -214,18 +197,36 @@ void dict_load(struct vsc *vsc); static struct vsm *vd; static struct vsc *vsc; -void -varnish_snmp_init(void) +int +post_config(int majorID, int minorID, void *serverarg, void *clientarg) { vd = VSM_New(); - if (vd) { - vsc = VSC_New(vd); - if (vsc) { - if (VSM_Attach(vd, 2)) - fprintf(stderr, "%s\n", VSM_Error(vd)); + if (!vd) { + snmp_log(LOG_ERR, "VSM_New: %s\n", strerror(errno)); + return 1; } + + vsc = VSC_New(vd); + if (!vsc) { + snmp_log(LOG_ERR, "VSC_New: %s\n", strerror(errno)); + return 1; } + + if (VSM_Attach(vd, 2)) + snmp_log(LOG_ERR, "%s\n", VSM_Error(vd)); + dict_load(vsc); + backend_collect_addr(vd); + return 0; +} + +void +varnish_snmp_init(void) +{ + snmp_register_callback(SNMP_CALLBACK_LIBRARY, + SNMP_CALLBACK_POST_READ_CONFIG, + post_config, + NULL); } void @@ -235,12 +236,13 @@ varnish_snmp_deinit(void) } struct vsm * -varnish_get_vsm_data() +varnish_get_vsm_data(void) { if (vd) { if (VSM_Status(vd) & (VSM_MGT_CHANGED|VSM_WRK_CHANGED)) { DEBUGMSGTL(("$modulename", "reopening vd\n")); dict_load(vsc); + backend_collect_addr(vd); } } return vd; @@ -588,6 +590,10 @@ initialize_table_$i(void) void init_$modulename(void) { + if (vd) { + snmp_log(LOG_ERR, "%s: can't be loaded twice\n", "$modulename"); + abort(); + } @foreach $i scalar@ @startperl@ &{$vars{'varnish_translate'}}($vars{'i'}); @@ -601,21 +607,7 @@ $varnish_endif DEBUGMSGTL(("$modulename", "Initializing\n")); - if (!register_config_handler("snmpd", "varnishBanTableTimeout", - varnish_ban_table_timeout_parser, - NULL, - "varnishBanTableTimeout SECONDS")) - snmp_log(LOG_ERR,"can't register config handler\n"); - if (!register_config_handler("snmpd", "varnishBackendTableTimeout", - varnish_backend_table_timeout_parser, - NULL, - "varnishBackendTableTimeout SECONDS")) - snmp_log(LOG_ERR,"can't register config handler\n"); - if (!register_config_handler("snmpd", "varnishCLIPortTimeout", - varnish_vcli_timeout_parser, - NULL, - "varnishCLIPortTimeout SECONDS")) - snmp_log(LOG_ERR,"can't register config handler\n"); + varnish_mib_config_init(); @foreach $i scalar@ @startperl@ |