From 1b64651bd192a4cf5f5b2777ad94a37b542bd0a2 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 8 Jul 2019 20:36:19 +0900 Subject: [PATCH] network: use string table for route protocol --- src/network/networkd-route.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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) { -- 2.47.3