diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-04-30 11:36:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-30 11:36:12 +0200 |
commit | 2766d951c9385d91e504d968551247b115a77ef6 (patch) | |
tree | 2dd823cb709c165f82624ebcbc4fedc7502b04a5 /src/shared/conf-parser.c | |
parent | a0693fc9517132cfae773b2b1cfc11b808e9b377 (diff) | |
parent | 9861673574097a07eb1590d17eda6fb4c175eebc (diff) |
Merge pull request #5808 from ssahani/util
conf parser: add config_parse_ip_port
Diffstat (limited to 'src/shared/conf-parser.c')
-rw-r--r-- | src/shared/conf-parser.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index d8393cbc8d..dae521ef9f 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -960,3 +960,40 @@ int config_parse_ifname( return 0; } + +int config_parse_ip_port( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + uint16_t *s = data; + uint16_t port; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + if (isempty(rvalue)) { + *s = 0; + return 0; + } + + r = parse_ip_port(rvalue, &port); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse port '%s'.", rvalue); + return 0; + } + + *s = port; + + return 0; +} |