]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce new [QDisc] section to support Parent=ingress
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 5 Feb 2020 10:10:33 +0000 (19:10 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 7 Feb 2020 04:48:54 +0000 (13:48 +0900)
Follow-up for 18de0969c5763ce119692b59f8622c379e79c6cc.

man/systemd.network.xml
src/network/networkd-network-gperf.gperf
src/network/networkd-network.c
src/network/tc/qdisc.c
test/fuzz/fuzz-network-parser/directives.network

index 793243f9aef834a3c011d0cd353c1ad39b31a736..d8485f736f7f374468ca1f74fdb646361d85ad7e 100644 (file)
       </variablelist>
   </refsect1>
 
+  <refsect1>
+    <title>[QDisc] Section Options</title>
+    <para>The <literal>[QDisc]</literal> section manages the traffic control queueing discipline (qdisc).</para>
+
+    <variablelist class='network-directives'>
+      <varlistentry>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>clsact</literal>
+          or <literal>ingress</literal>. This is mandatory.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
   <refsect1>
     <title>[NetworkEmulator] Section Options</title>
     <para>The <literal>[NetworkEmulator]</literal> section manages the queueing discipline (qdisc) of
index 369631d9ee2c5c077fb708d267ecfbfb6a8c2d82..81ce9ee1e49a80c1e108f3d711e5f49e9655c5f1 100644 (file)
@@ -251,6 +251,7 @@ CAN.BitRate,                                 config_parse_si_uint64,
 CAN.SamplePoint,                             config_parse_permille,                                    0,                             offsetof(Network, can_sample_point)
 CAN.RestartSec,                              config_parse_sec,                                         0,                             offsetof(Network, can_restart_us)
 CAN.TripleSampling,                          config_parse_tristate,                                    0,                             offsetof(Network, can_triple_sampling)
+QDisc.Parent,                                config_parse_qdisc_parent,                                _QDISC_KIND_INVALID,           0
 ControlledDelay.Parent,                      config_parse_qdisc_parent,                                QDISC_KIND_CODEL,              0
 ControlledDelay.PacketLimit,                 config_parse_controlled_delay_u32,                        QDISC_KIND_CODEL,              0
 ControlledDelay.TargetSec,                   config_parse_controlled_delay_usec,                       QDISC_KIND_CODEL,              0
@@ -320,7 +321,7 @@ DHCP.RapidCommit,                            config_parse_bool,
 DHCP.ForceDHCPv6PDOtherInformation,          config_parse_bool,                                        0,                             offsetof(Network, dhcp6_force_pd_other_information)
 DHCPv4.UseDomainName,                        config_parse_dhcp_use_domains,                            0,                             offsetof(Network, dhcp_use_domains)
 DHCPv4.CriticalConnection,                   config_parse_tristate,                                    0,                             offsetof(Network, dhcp_critical)
-TrafficControlQueueingDiscipline.Parent,                        config_parse_qdisc_parent,             QDISC_KIND_NETEM,              0
+TrafficControlQueueingDiscipline.Parent,                        config_parse_qdisc_parent,             _QDISC_KIND_INVALID,           0
 TrafficControlQueueingDiscipline.NetworkEmulatorDelaySec,       config_parse_network_emulator_delay,   0,                             0
 TrafficControlQueueingDiscipline.NetworkEmulatorDelayJitterSec, config_parse_network_emulator_delay,   0,                             0
 TrafficControlQueueingDiscipline.NetworkEmulatorLossRate,       config_parse_network_emulator_rate,    0,                             0
index 1b9e6a22b4fcc70ab9b5779a1cc489f9f2ce4678..96f9c785bab9e22b2d58562bb4b848b147a82cce 100644 (file)
@@ -482,6 +482,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                               "IPv6RoutePrefix\0"
                               "TrafficControlQueueingDiscipline\0"
                               "CAN\0"
+                              "QDisc\0"
                               "ControlledDelay\0"
                               "FairQueueing\0"
                               "FairQueueingControlledDelay\0"
index ee0637bf32c2e493b662ccbff087e7be5d426c0b..c156fe5ce920c705e8870d0b6daf1b9eadd8e4f3 100644 (file)
@@ -254,7 +254,6 @@ int config_parse_qdisc_parent(
         assert(lvalue);
         assert(rvalue);
         assert(data);
-        assert(ltype >= 0 && ltype < _QDISC_KIND_MAX);
 
         r = qdisc_new_static(ltype, network, filename, section_line, &qdisc);
         if (r < 0)
index 180a30c32cc6db56be0999543401d85e6613a371..5b04fefeb59f9d33a5d3cfd680be7e89ed0cadb4 100644 (file)
@@ -270,6 +270,8 @@ SendOption=
 [NextHop]
 Id=
 Gateway=
+[QDisc]
+Parent=
 [NetworkEmulator]
 Parent=
 DelaySec=