]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-network: drop fallback values
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 24 Sep 2022 00:22:03 +0000 (09:22 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 27 Sep 2022 01:42:31 +0000 (10:42 +0900)
This drops spurious lines in `networkctl status` for unmanaged interfaces.
Before:
```
$ networkctl status --lines 0 lo
● 1: lo
                     Link File: n/a
                  Network File: n/a
                          Type: loopback
                         State: carrier (unmanaged)
                  Online state: unknown
                    HW Address: 00:00:00:00:00:00
                           MTU: 65536
                         QDisc: noqueue
  IPv6 Address Generation Mode: eui64
          Queue Length (Tx/Rx): 1/1
                       Address: 127.0.0.1
                                ::1
             Activation Policy: up
           Required For Online: yes
```
After:
```
$ networkctl status --lines 0 lo
● 1: lo
                     Link File: n/a
                  Network File: n/a
                         State: carrier (unmanaged)
                  Online state: unknown
                          Type: loopback
              Hardware Address: 00:00:00:00:00:00
                           MTU: 65536
                         QDisc: noqueue
  IPv6 Address Generation Mode: eui64
      Number of Queues (Tx/Rx): 1/1
                       Address: 127.0.0.1
                                ::1
```

That is, the lines for Activation Policy and Required For Online are
dropped.

src/libsystemd/sd-network/sd-network.c
src/network/wait-online/link.c

index 9d00470fe1e07b90b9d1d33ad1dda90a02271e20..4fd4c2502b6db7ec5ebe76cebcf41c44a43e1404 100644 (file)
@@ -173,23 +173,7 @@ int sd_network_link_get_operational_state(int ifindex, char **ret) {
 }
 
 int sd_network_link_get_required_family_for_online(int ifindex, char **ret) {
-        _cleanup_free_ char *s = NULL;
-        int r;
-
-        assert_return(ret, -EINVAL);
-
-        r = network_link_get_string(ifindex, "REQUIRED_FAMILY_FOR_ONLINE", &s);
-        if (r < 0) {
-                if (r != -ENODATA)
-                        return r;
-
-                s = strdup("any");
-                if (!s)
-                        return -ENOMEM;
-        }
-
-        *ret = TAKE_PTR(s);
-        return 0;
+        return network_link_get_string(ifindex, "REQUIRED_FAMILY_FOR_ONLINE", ret);
 }
 
 int sd_network_link_get_carrier_state(int ifindex, char **ret) {
@@ -221,60 +205,15 @@ int sd_network_link_get_dhcp6_client_duid_string(int ifindex, char **ret) {
 }
 
 int sd_network_link_get_required_for_online(int ifindex) {
-        _cleanup_free_ char *s = NULL;
-        int r;
-
-        r = network_link_get_string(ifindex, "REQUIRED_FOR_ONLINE", &s);
-        if (r < 0) {
-                /* Handle -ENODATA as RequiredForOnline=yes, for compatibility */
-                if (r == -ENODATA)
-                        return true;
-                return r;
-        }
-
-        return parse_boolean(s);
+        return network_link_get_boolean(ifindex, "REQUIRED_FOR_ONLINE");
 }
 
 int sd_network_link_get_required_operstate_for_online(int ifindex, char **ret) {
-        _cleanup_free_ char *s = NULL;
-        int r;
-
-        assert_return(ret, -EINVAL);
-
-        r = network_link_get_string(ifindex, "REQUIRED_OPER_STATE_FOR_ONLINE", &s);
-        if (r < 0) {
-                if (r != -ENODATA)
-                        return r;
-
-                /* For compatibility, assuming degraded. */
-                s = strdup("degraded");
-                if (!s)
-                        return -ENOMEM;
-        }
-
-        *ret = TAKE_PTR(s);
-        return 0;
+        return network_link_get_string(ifindex, "REQUIRED_OPER_STATE_FOR_ONLINE", ret);
 }
 
 int sd_network_link_get_activation_policy(int ifindex, char **ret) {
-        _cleanup_free_ char *s = NULL;
-        int r;
-
-        assert_return(ret, -EINVAL);
-
-        r = network_link_get_string(ifindex, "ACTIVATION_POLICY", &s);
-        if (r < 0) {
-                if (r != -ENODATA)
-                        return r;
-
-                /* For compatibility, assuming up. */
-                s = strdup("up");
-                if (!s)
-                        return -ENOMEM;
-        }
-
-        *ret = TAKE_PTR(s);
-        return 0;
+        return network_link_get_string(ifindex, "ACTIVATION_POLICY", ret);
 }
 
 int sd_network_link_get_llmnr(int ifindex, char **ret) {
index ce6c8b181c2abac2ca27b3674e4b8f6b79fab60b..836d713f79c9548217239d18ef93ded93114184b 100644 (file)
@@ -107,14 +107,14 @@ int link_update_monitor(Link *l) {
         r = sd_network_link_get_required_for_online(l->ifindex);
         if (r < 0)
                 ret = log_link_debug_errno(l, r, "Failed to determine whether the link is required for online or not, "
-                                           "ignoring: %m");
-        else
-                l->required_for_online = r > 0;
+                                           "assuming required: %m");
+        l->required_for_online = r != 0;
 
         r = sd_network_link_get_required_operstate_for_online(l->ifindex, &required_operstate);
-        if (r < 0)
+        if (r < 0) {
                 ret = log_link_debug_errno(l, r, "Failed to get required operational state, ignoring: %m");
-        else if (isempty(required_operstate))
+                l->required_operstate = LINK_OPERSTATE_RANGE_DEFAULT;
+        } else if (isempty(required_operstate))
                 l->required_operstate = LINK_OPERSTATE_RANGE_DEFAULT;
         else {
                 r = parse_operational_state_range(required_operstate, &l->required_operstate);