You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.3 KiB
69 lines
2.3 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Benjamin Marzinski <bmarzins@redhat.com> |
|
Date: Thu, 23 Sep 2021 14:16:51 -0500 |
|
Subject: [PATCH] libmultipath: add section name to invalid keyword output |
|
|
|
If users forget the closing brace for a section in multipath.conf, |
|
multipath has no way to detect that. When it sees the keyword at the |
|
start of the next section, it will complain that there is an invalid |
|
keyword, because that keyword doesn't belong in previous section (which |
|
was never ended with a closing brace). This can confuse users. To make |
|
this easier to understand, when multipath prints an invalid keyword |
|
message, it now also prints the current section name, which can give |
|
users a hint that they didn't end the previous section. |
|
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> |
|
--- |
|
libmultipath/parser.c | 20 +++++++++++++------- |
|
1 file changed, 13 insertions(+), 7 deletions(-) |
|
|
|
diff --git a/libmultipath/parser.c b/libmultipath/parser.c |
|
index 8ca91bf2..611054f7 100644 |
|
--- a/libmultipath/parser.c |
|
+++ b/libmultipath/parser.c |
|
@@ -504,7 +504,7 @@ validate_config_strvec(vector strvec, const char *file) |
|
|
|
static int |
|
process_stream(struct config *conf, FILE *stream, vector keywords, |
|
- const char *file) |
|
+ const char *section, const char *file) |
|
{ |
|
int i; |
|
int r = 0, t; |
|
@@ -568,16 +568,22 @@ process_stream(struct config *conf, FILE *stream, vector keywords, |
|
if (keyword->sub) { |
|
kw_level++; |
|
r += process_stream(conf, stream, |
|
- keyword->sub, file); |
|
+ keyword->sub, |
|
+ keyword->string, |
|
+ file); |
|
kw_level--; |
|
} |
|
break; |
|
} |
|
} |
|
- if (i >= VECTOR_SIZE(keywords)) |
|
- condlog(1, "%s line %d, invalid keyword: %s", |
|
- file, line_nr, str); |
|
- |
|
+ if (i >= VECTOR_SIZE(keywords)) { |
|
+ if (section) |
|
+ condlog(1, "%s line %d, invalid keyword in the %s section: %s", |
|
+ file, line_nr, section, str); |
|
+ else |
|
+ condlog(1, "%s line %d, invalid keyword: %s", |
|
+ file, line_nr, str); |
|
+ } |
|
free_strvec(strvec); |
|
} |
|
if (kw_level == 1) |
|
@@ -608,7 +614,7 @@ process_file(struct config *conf, const char *file) |
|
|
|
/* Stream handling */ |
|
line_nr = 0; |
|
- r = process_stream(conf, stream, conf->keywords, file); |
|
+ r = process_stream(conf, stream, conf->keywords, NULL, file); |
|
fclose(stream); |
|
//free_keywords(keywords); |
|
|
|
|