]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/network/tc/sfb.c
tree-wide: use ASSERT_PTR more
[thirdparty/systemd.git] / src / network / tc / sfb.c
index 9e954ff9359324288f0e739371087807f3612fb2..861c5fe2a0c0b78574a454ba84c96404adeea758 100644 (file)
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
  * Copyright © 2020 VMware, Inc. */
 
 #include <linux/pkt_sched.h>
 
 static int stochastic_fair_blue_fill_message(Link *link, QDisc *qdisc, sd_netlink_message *req) {
         StochasticFairBlue *sfb;
-        struct tc_sfb_qopt opt = {
+        int r;
+
+        assert(link);
+        assert(qdisc);
+        assert(req);
+
+        assert_se(sfb = SFB(qdisc));
+
+        const struct tc_sfb_qopt opt = {
             .rehash_interval = 600*1000,
             .warmup_time = 60*1000,
             .penalty_rate = 10,
@@ -22,28 +30,20 @@ static int stochastic_fair_blue_fill_message(Link *link, QDisc *qdisc, sd_netlin
             .decrement = (SFB_MAX_PROB + 10000) / 20000,
             .max = 25,
             .bin_size = 20,
+            .limit = sfb->packet_limit,
         };
-        int r;
-
-        assert(link);
-        assert(qdisc);
-        assert(req);
-
-        sfb = SFB(qdisc);
-
-        opt.limit = sfb->packet_limit;
 
         r = sd_netlink_message_open_container_union(req, TCA_OPTIONS, "sfb");
         if (r < 0)
-                return log_link_error_errno(link, r, "Could not open container TCA_OPTIONS: %m");
+                return r;
 
-        r = sd_netlink_message_append_data(req, TCA_SFB_PARMS, &opt, sizeof(struct tc_sfb_qopt));
+        r = sd_netlink_message_append_data(req, TCA_SFB_PARMS, &opt, sizeof(opt));
         if (r < 0)
-                return log_link_error_errno(link, r, "Could not append TCA_SFB_PARMS attribute: %m");
+                return r;
 
         r = sd_netlink_message_close_container(req);
         if (r < 0)
-                return log_link_error_errno(link, r, "Could not close container TCA_OPTIONS: %m");
+                return r;
 
         return 0;
 }
@@ -62,39 +62,40 @@ int config_parse_stochastic_fair_blue_u32(
 
         _cleanup_(qdisc_free_or_set_invalidp) QDisc *qdisc = NULL;
         StochasticFairBlue *sfb;
-        Network *network = data;
+        Network *network = ASSERT_PTR(data);
         int r;
 
         assert(filename);
         assert(lvalue);
         assert(rvalue);
-        assert(data);
 
         r = qdisc_new_static(QDISC_KIND_SFB, network, filename, section_line, &qdisc);
         if (r == -ENOMEM)
                 return log_oom();
-        if (r < 0)
-                return log_syntax(unit, LOG_ERR, filename, line, r,
-                                  "More than one kind of queueing discipline, ignoring assignment: %m");
+        if (r < 0) {
+                log_syntax(unit, LOG_WARNING, filename, line, r,
+                           "More than one kind of queueing discipline, ignoring assignment: %m");
+                return 0;
+        }
 
         sfb = SFB(qdisc);
 
         if (isempty(rvalue)) {
                 sfb->packet_limit = 0;
 
-                qdisc = NULL;
+                TAKE_PTR(qdisc);
                 return 0;
         }
 
         r = safe_atou32(rvalue, &sfb->packet_limit);
         if (r < 0) {
-                log_syntax(unit, LOG_ERR, filename, line, r,
+                log_syntax(unit, LOG_WARNING, filename, line, r,
                            "Failed to parse '%s=', ignoring assignment: %s",
                            lvalue, rvalue);
                 return 0;
         }
 
-        qdisc = NULL;
+        TAKE_PTR(qdisc);
 
         return 0;
 }