]> git.ipfire.org Git - thirdparty/haproxy.git/commit
[MEDIUM] add support for configuration keyword registration
authorWilly Tarreau <w@1wt.eu>
Wed, 9 Jul 2008 17:39:06 +0000 (19:39 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 9 Jul 2008 17:44:58 +0000 (19:44 +0200)
commit5b2c33683ba81a1aa12521b6492b6d6ae1e06375
tree91a4fe28988ee56d8d801032bd8b1ece67033d96
parent11382813a1aa1cb3c822997e7f20dfdfed34a60f
[MEDIUM] add support for configuration keyword registration

Any module which needs configuration keywords may now dynamically
register a keyword in a given section, and associate it with a
configuration parsing function using cfg_register_keywords() from
a constructor function. This makes the configuration parser more
modular because it is not required anymore to touch cfg_parse.c.
Example :

static int parse_global_blah(char **args, int section_type, struct proxy *curpx,
                             struct proxy *defpx, char *err, int errlen)
{
printf("parsing blah in global section\n");
return 0;
}

static int parse_listen_blah(char **args, int section_type, struct proxy *curpx,
      struct proxy *defpx, char *err, int errlen)
{
printf("parsing blah in listen section\n");
if (*args[1]) {
snprintf(err, errlen, "missing arg for listen_blah!!!");
return -1;
}
return 0;
}

static struct cfg_kw_list cfg_kws = {{ },{
{ CFG_GLOBAL, "blah", parse_global_blah },
{ CFG_LISTEN, "blah", parse_listen_blah },
{ 0, NULL, NULL },
}};

__attribute__((constructor))
static void __module_init(void)
{
cfg_register_keywords(&cfg_kws);
}
include/common/cfgparse.h
src/cfgparse.c