diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-03-19 14:00:53 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-04-29 14:43:04 +1000 |
commit | 5e7c90eddd7ac2e4a3b05a7a5f6e29166edfa161 (patch) | |
tree | 2ad50697e3380c2c14f72522fa719d3d571e7f8b /discover/parser.c | |
parent | 45e92aa32a80fdbbf5ad3ad64e34b1ac872018ef (diff) | |
download | talos-petitboot-5e7c90eddd7ac2e4a3b05a7a5f6e29166edfa161.tar.gz talos-petitboot-5e7c90eddd7ac2e4a3b05a7a5f6e29166edfa161.zip |
discover: Add configuration methods
We'd like to be able to download petitboot configurations from other
sources (not just local files), but we'll need some way to indicate to
the parsers that a chunk of config data is from a specific source.
This change adds "configuration methods". At present, we have only one:
CONF_METHOD_LOCAL_FILE. For any incoming configuration data, we only run
parsers that have registered themselves with that configuration method.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/parser.c')
-rw-r--r-- | discover/parser.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/discover/parser.c b/discover/parser.c index 641e06b..c04a0af 100644 --- a/discover/parser.c +++ b/discover/parser.c @@ -98,18 +98,23 @@ static void iterate_parser_files(struct discover_context *ctx, } } -void iterate_parsers(struct discover_context *ctx) +void iterate_parsers(struct discover_context *ctx, enum conf_method method) { int i; pb_log("trying parsers for %s\n", ctx->device->device->id); - for (i = 0; i < n_parsers; i++) { - pb_log("\ttrying parser '%s'\n", parsers[i]->name); - ctx->parser = parsers[i]; - iterate_parser_files(ctx, parsers[i]); + if (method == CONF_METHOD_LOCAL_FILE) { + for (i = 0; i < n_parsers; i++) { + if (parsers[i]->method != CONF_METHOD_LOCAL_FILE) + continue; + + pb_log("\ttrying parser '%s'\n", parsers[i]->name); + ctx->parser = parsers[i]; + iterate_parser_files(ctx, ctx->parser); + } + ctx->parser = NULL; } - ctx->parser = NULL; } void __register_parser(struct parser *parser) |