From: Yu Watanabe Date: Mon, 8 Jul 2019 11:36:19 +0000 (+0900) Subject: network: use string table for route protocol X-Git-Tag: v243-rc1~143^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1b64651bd192a4cf5f5b2777ad94a37b542bd0a2;p=thirdparty%2Fsystemd.git network: use string table for route protocol --- diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index cf09e49018b..798c9ed314a 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -840,6 +840,14 @@ const char *format_route_table(int table, char *buf, size_t size) { return buf; } +static const char * const route_protocol_table[] = { + [RTPROT_KERNEL] = "kernel", + [RTPROT_BOOT] = "boot", + [RTPROT_STATIC] = "static", +}; + +DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(route_protocol, int); + int config_parse_gateway( const char *unit, const char *filename, @@ -1188,12 +1196,9 @@ int config_parse_route_protocol( if (r < 0) return r; - if (streq(rvalue, "kernel")) - n->protocol = RTPROT_KERNEL; - else if (streq(rvalue, "boot")) - n->protocol = RTPROT_BOOT; - else if (streq(rvalue, "static")) - n->protocol = RTPROT_STATIC; + r = route_protocol_from_string(rvalue); + if (r >= 0) + n->protocol = r; else { r = safe_atou8(rvalue , &n->protocol); if (r < 0) {