MINOR: diag: create cfgdiag module

This module is intended to serve as a placeholder for various
diagnostics executed after the configuration file has been fully loaded.
This commit is contained in:
Amaury Denoyelle 2021-03-30 17:34:24 +02:00
parent da0e7f61e0
commit 5a6926dcf0
4 changed files with 62 additions and 1 deletions

View File

@ -878,7 +878,7 @@ OBJS += src/mux_h2.o src/mux_fcgi.o src/http_ana.o src/stream.o \
src/ebistree.o src/auth.o src/wdt.o src/http_acl.o \
src/hpack-enc.o src/hpack-huff.o src/ebtree.o src/base64.o \
src/hash.o src/dgram.o src/version.o src/fix.o src/mqtt.o src/dns.o \
src/server_state.o src/proto_uxdg.o src/init.o
src/server_state.o src/proto_uxdg.o src/init.o src/cfgdiag.o
ifneq ($(TRACE),)
OBJS += src/calltrace.o

11
include/haproxy/cfgdiag.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef _HAPROXY_CFGDIAG_H
#define _HAPROXY_CFGDIAG_H
/* Placeholder to execute various diagnostic checks after the configuration file
* has been fully parsed. It will output a warning for each diagnostic found.
*
* Returns 0 if no diagnostic message has been found else 1.
*/
int cfg_run_diagnostics();
#endif /* _HAPROXY_CFGDIAG_H */

45
src/cfgdiag.c Normal file
View File

@ -0,0 +1,45 @@
#include <stdarg.h>
#include <stdlib.h>
#include <haproxy/cfgdiag.h>
#include <haproxy/log.h>
/* Use this fonction to emit diagnostic.
* This can be used as a shortcut to set value pointed by <ret> to 1 at the
* same time.
*/
static inline void diag_warning(int *ret, char *fmt, ...)
{
va_list argp;
va_start(argp, fmt);
*ret = 1;
_ha_vdiag_warning(fmt, argp);
va_end(argp);
}
/* Use this for dynamic allocation in diagnostics.
* In case of allocation failure, this will immediately terminates haproxy.
*/
static inline void *diag_alloc(size_t size)
{
void *out = NULL;
if (!(out = malloc(size))) {
fprintf(stderr, "out of memory\n");
exit(1);
}
return out;
}
/* Placeholder to execute various diagnostic checks after the configuration file
* has been fully parsed. It will output a warning for each diagnostic found.
*
* Returns 0 if no diagnostic message has been found else 1.
*/
int cfg_run_diagnostics()
{
int ret = 0;
return ret;
}

View File

@ -87,6 +87,7 @@
#include <haproxy/auth.h>
#include <haproxy/base64.h>
#include <haproxy/capture-t.h>
#include <haproxy/cfgdiag.h>
#include <haproxy/cfgparse.h>
#include <haproxy/chunk.h>
#include <haproxy/cli.h>
@ -1806,6 +1807,10 @@ static void init(int argc, char **argv)
exit(2);
}
if (global.mode & MODE_DIAG) {
cfg_run_diagnostics();
}
/* now we know the buffer size, we can initialize the channels and buffers */
init_buffer();