From 3ded5bbfdac0f809632067a3643570848dc11000 Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 25 Apr 2017 18:42:56 +0530 Subject: networkd: replace geneve parsers with generic config_parse_uint8 --- src/network/netdev/geneve.c | 81 +++++++---------------------------- src/network/netdev/geneve.h | 22 ---------- src/network/netdev/netdev-gperf.gperf | 4 +- 3 files changed, 18 insertions(+), 89 deletions(-) diff --git a/src/network/netdev/geneve.c b/src/network/netdev/geneve.c index bb9807b556..07c69f4711 100644 --- a/src/network/netdev/geneve.c +++ b/src/network/netdev/geneve.c @@ -201,71 +201,6 @@ int config_parse_geneve_vni(const char *unit, return 0; } -int config_parse_geneve_tos(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) { - Geneve *v = userdata; - uint8_t f; - int r; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - r = safe_atou8(rvalue, &f); - if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse Geneve TOS '%s'.", rvalue); - return 0; - } - - v->tos = f; - - return 0; -} - -int config_parse_geneve_ttl(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) { - Geneve *v = userdata; - uint8_t f; - int r; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - r = safe_atou8(rvalue, &f); - if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse Geneve TTL '%s'.", rvalue); - return 0; - } - - if (f == 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Invalid Geneve TTL '%s'.", rvalue); - return 0; - } - - v->ttl = f; - - return 0; -} - int config_parse_geneve_address(const char *unit, const char *filename, unsigned line, @@ -369,6 +304,21 @@ int config_parse_geneve_flow_label(const char *unit, return 0; } +static int netdev_geneve_verify(NetDev *netdev, const char *filename) { + Geneve *v = GENEVE(netdev); + + assert(netdev); + assert(v); + assert(filename); + + if (v->ttl == 0) { + log_warning("Invalid Geneve TTL value '0' configured in '%s'. Ignoring", filename); + return -EINVAL; + } + + return 0; +} + static void geneve_init(NetDev *netdev) { Geneve *v; @@ -391,4 +341,5 @@ const NetDevVTable geneve_vtable = { .sections = "Match\0NetDev\0GENEVE\0", .create = netdev_geneve_create, .create_type = NETDEV_CREATE_INDEPENDENT, + .config_verify = netdev_geneve_verify, }; diff --git a/src/network/netdev/geneve.h b/src/network/netdev/geneve.h index 3ba599aae6..d97dac892c 100644 --- a/src/network/netdev/geneve.h +++ b/src/network/netdev/geneve.h @@ -63,28 +63,6 @@ int config_parse_geneve_vni(const char *unit, void *data, void *userdata); -int config_parse_geneve_tos(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); - -int config_parse_geneve_ttl(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); - int config_parse_geneve_address(const char *unit, const char *filename, unsigned line, diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf index a27a3d5562..6016b99b54 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf @@ -83,8 +83,8 @@ VXLAN.DestinationPort, config_parse_destination_port, 0, VXLAN.FlowLabel, config_parse_flow_label, 0, 0 GENEVE.Id, config_parse_geneve_vni, 0, offsetof(Geneve, id) GENEVE.Remote, config_parse_geneve_address, 0, offsetof(Geneve, remote) -GENEVE.TOS, config_parse_geneve_tos, 0, offsetof(Geneve, tos) -GENEVE.TTL, config_parse_geneve_ttl, 0, offsetof(Geneve, ttl) +GENEVE.TOS, config_parse_uint8, 0, offsetof(Geneve, tos) +GENEVE.TTL, config_parse_uint8, 0, offsetof(Geneve, ttl) GENEVE.UDPChecksum, config_parse_bool, 0, offsetof(Geneve, udpcsum) GENEVE.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumrx) GENEVE.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumtx) -- cgit v1.2.3-54-g00ecf