]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: replace geneve parsers with generic config_parse_uint8
authorSusant Sahani <susant@redhat.com>
Tue, 25 Apr 2017 13:12:56 +0000 (18:42 +0530)
committerSusant Sahani <susant@redhat.com>
Tue, 25 Apr 2017 13:16:04 +0000 (18:46 +0530)
src/network/netdev/geneve.c
src/network/netdev/geneve.h
src/network/netdev/netdev-gperf.gperf

index bb9807b556085b90d4ffd0d74e339a858a9f4884..07c69f4711a7aeb1285d1c22639c710db40682f8 100644 (file)
@@ -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,
 };
index 3ba599aae6dae6f8123b1879f8f1244204978103..d97dac892c5a7040c2405bfeeb3898cda47421a3 100644 (file)
@@ -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,
index a27a3d5562e7f95a911960f55bd8fd44dac3841b..6016b99b543d9655cd93fd69586ee16db31b881d 100644 (file)
@@ -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)