]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: always log error in network_load_one() and netdev_load_one()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 4 Apr 2022 16:58:37 +0000 (01:58 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 4 Apr 2022 17:02:42 +0000 (02:02 +0900)
src/network/netdev/netdev.c
src/network/networkd-network.c

index af5a0a9ffce40a3e3ad6088c080cb95ae6a6bd12..f015168692b318a826f83da4e61b269ab176cf0f 100644 (file)
@@ -749,10 +749,8 @@ int netdev_load_one(Manager *manager, const char *filename) {
         assert(filename);
 
         r = null_or_empty_path(filename);
-        if (r == -ENOENT)
-                return 0;
         if (r < 0)
-                return r;
+                return log_warning_errno(r, "Failed to check if \"%s\" is empty: %m", filename);
         if (r > 0) {
                 log_debug("Skipping empty file: %s", filename);
                 return 0;
@@ -777,7 +775,7 @@ int netdev_load_one(Manager *manager, const char *filename) {
                         netdev_raw,
                         NULL);
         if (r < 0)
-                return r;
+                return r; /* config_parse_many() logs internally. */
 
         /* skip out early if configuration does not match the environment */
         if (!condition_test_list(netdev_raw->conditions, environ, NULL, NULL, NULL)) {
@@ -785,15 +783,11 @@ int netdev_load_one(Manager *manager, const char *filename) {
                 return 0;
         }
 
-        if (netdev_raw->kind == _NETDEV_KIND_INVALID) {
-                log_warning("NetDev has no Kind= configured in %s. Ignoring", filename);
-                return 0;
-        }
+        if (netdev_raw->kind == _NETDEV_KIND_INVALID)
+                return log_warning_errno(SYNTHETIC_ERRNO(EINVAL), "NetDev has no Kind= configured in \"%s\", ignoring.", filename);
 
-        if (!netdev_raw->ifname) {
-                log_warning("NetDev without Name= configured in %s. Ignoring", filename);
-                return 0;
-        }
+        if (!netdev_raw->ifname)
+                return log_warning_errno(SYNTHETIC_ERRNO(EINVAL), "NetDev without Name= configured in \"%s\", ignoring.", filename);
 
         netdev = malloc0(NETDEV_VTABLE(netdev_raw)->object_size);
         if (!netdev)
@@ -815,13 +809,13 @@ int netdev_load_one(Manager *manager, const char *filename) {
                         CONFIG_PARSE_WARN,
                         netdev, NULL);
         if (r < 0)
-                return r;
+                return r; /* config_parse_many() logs internally. */
 
         /* verify configuration */
         if (NETDEV_VTABLE(netdev)->config_verify) {
                 r = NETDEV_VTABLE(netdev)->config_verify(netdev, filename);
                 if (r < 0)
-                        return 0;
+                        return r; /* config_verify() logs internally. */
         }
 
         netdev->filename = strdup(filename);
@@ -837,22 +831,21 @@ int netdev_load_one(Manager *manager, const char *filename) {
                 assert(n);
                 if (!streq(netdev->filename, n->filename))
                         log_netdev_warning_errno(netdev, r,
-                                                 "Device was already configured by file %s, ignoring %s.",
+                                                 "Device was already configured by \"%s\", ignoring %s.",
                                                  n->filename, netdev->filename);
 
                 /* Clear ifname before netdev_free() is called. Otherwise, the NetDev object 'n' is
                  * removed from the hashmap 'manager->netdevs'. */
                 netdev->ifname = mfree(netdev->ifname);
-                return 0;
+                return -EEXIST;
         }
-        if (r < 0)
-                return r;
+        assert(r > 0);
 
-        log_netdev_debug(netdev, "loaded %s", netdev_kind_to_string(netdev->kind));
+        log_netdev_debug(netdev, "loaded \"%s\"", netdev_kind_to_string(netdev->kind));
 
         r = netdev_request_to_create(netdev);
         if (r < 0)
-                return r;
+                return r; /* netdev_request_to_create() logs internally. */
 
         TAKE_PTR(netdev);
         return 0;
@@ -871,11 +864,8 @@ int netdev_load(Manager *manager, bool reload) {
         if (r < 0)
                 return log_error_errno(r, "Failed to enumerate netdev files: %m");
 
-        STRV_FOREACH(f, files) {
-                r = netdev_load_one(manager, *f);
-                if (r < 0)
-                        log_error_errno(r, "Failed to load %s, ignoring: %m", *f);
-        }
+        STRV_FOREACH(f, files)
+                (void) netdev_load_one(manager, *f);
 
         return 0;
 }
index a5130ebff2e6e3a2d3c47c14926d2f2d943fc556..291707cd93d4931f41e70027ff070b099dd90e2c 100644 (file)
@@ -313,7 +313,7 @@ int network_verify(Network *network) {
 
         r = network_drop_invalid_addresses(network);
         if (r < 0)
-                return r;
+                return r; /* network_drop_invalid_addresses() logs internally. */
         network_drop_invalid_routes(network);
         network_drop_invalid_nexthops(network);
         network_drop_invalid_bridge_fdb_entries(network);
@@ -327,7 +327,7 @@ int network_verify(Network *network) {
         network_drop_invalid_tclass(network);
         r = sr_iov_drop_invalid_sections(UINT32_MAX, network->sr_iov_by_section);
         if (r < 0)
-                return r;
+                return r; /* sr_iov_drop_invalid_sections() logs internally. */
         network_drop_invalid_static_leases(network);
 
         network_adjust_dhcp_server(network);
@@ -346,10 +346,8 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
         assert(filename);
 
         r = null_or_empty_path(filename);
-        if (r == -ENOENT)
-                return 0;
         if (r < 0)
-                return r;
+                return log_warning_errno(r, "Failed to check if \"%s\" is empty: %m", filename);
         if (r > 0) {
                 log_debug("Skipping empty file: %s", filename);
                 return 0;
@@ -365,7 +363,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
 
         d = strrchr(name, '.');
         if (!d)
-                return -EINVAL;
+                return log_warning_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid file name: %s", filename);
 
         *d = '\0';
 
@@ -552,7 +550,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                         network,
                         &network->stats_by_path);
         if (r < 0)
-                return r;
+                return r; /* config_parse_many() logs internally. */
 
         r = network_add_ipv4ll_route(network);
         if (r < 0)
@@ -564,15 +562,12 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                                          network->filename);
 
         r = network_verify(network);
-        if (r == -ENOMEM)
-                return r;
         if (r < 0)
-                /* Ignore .network files that do not match the conditions. */
-                return 0;
+                return r; /* network_verify() logs internally. */
 
         r = ordered_hashmap_ensure_put(networks, &string_hash_ops, network->name, network);
         if (r < 0)
-                return r;
+                return log_warning_errno(r, "%s: Failed to store configuration into hashmap: %m", filename);
 
         TAKE_PTR(network);
         return 0;