]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: split TrafficControlQueueingDiscipline section into small pieces
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 4 Feb 2020 12:45:29 +0000 (21:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 4 Feb 2020 12:45:39 +0000 (21:45 +0900)
Closes #14763.

21 files changed:
man/systemd.network.xml
src/network/networkd-network-gperf.gperf
src/network/networkd-network.c
src/network/tc/codel.c
src/network/tc/codel.h
src/network/tc/fq-codel.c
src/network/tc/fq-codel.h
src/network/tc/fq.c
src/network/tc/fq.h
src/network/tc/netem.c
src/network/tc/netem.h
src/network/tc/qdisc.c
src/network/tc/qdisc.h
src/network/tc/sfq.c
src/network/tc/sfq.h
src/network/tc/tbf.c
src/network/tc/tbf.h
test/fuzz/fuzz-network-parser/directives.network
test/test-network/conf/25-qdisc-fq-codel.network
test/test-network/conf/25-qdisc-netem-and-fqcodel.network
test/test-network/conf/25-qdisc-tbf-and-sfq.network

index 1492f2032a9d83746032ea6b45676959e1ee7ef6..e3bd1bbda2a8be54703f5067dfee940a977b240a 100644 (file)
   </refsect1>
 
   <refsect1>
-    <title>[TrafficControlQueueingDiscipline] Section Options</title>
-    <para>The <literal>[TrafficControlQueueingDiscipline]</literal> section manages the Traffic control. It can be used
-    to configure the kernel packet scheduler and simulate packet delay and loss for UDP or TCP applications,
-    or limit the bandwidth usage of a particular service to simulate internet connections.</para>
+    <title>[NetworkEmulator] Section Options</title>
+    <para>The <literal>[NetworkEmulator]</literal> section manages the queueing discipline (qdisc) of
+    the network emulator. It can be used to configure the kernel packet scheduler and simulate packet
+    delay and loss for UDP or TCP applications, or limit the bandwidth usage of a particular service to
+    simulate internet connections.</para>
 
     <variablelist class='network-directives'>
       <varlistentry>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>NetworkEmulatorDelaySec=</varname></term>
+        <term><varname>DelaySec=</varname></term>
         <listitem>
           <para>Specifies the fixed amount of delay to be added to all packets going out of the
           interface. Defaults to unset.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>NetworkEmulatorDelayJitterSec=</varname></term>
+        <term><varname>DelayJitterSec=</varname></term>
         <listitem>
           <para>Specifies the chosen delay to be added to the packets outgoing to the network
           interface. Defaults to unset.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>NetworkEmulatorPacketLimit=</varname></term>
+        <term><varname>PacketLimit=</varname></term>
         <listitem>
           <para>Specifies the maximum number of packets the qdisc may hold queued at a time.
           An unsigned integer ranges 0 to 4294967294. Defaults to 1000.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>NetworkEmulatorLossRate=</varname></term>
+        <term><varname>LossRate=</varname></term>
         <listitem>
           <para>Specifies an independent loss probability to be added to the packets outgoing from the
           network interface. Takes a percentage value, suffixed with "%". Defaults to unset.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>NetworkEmulatorDuplicateRate=</varname></term>
+        <term><varname>DuplicateRate=</varname></term>
         <listitem>
           <para>Specifies that the chosen percent of packets is duplicated before queuing them.
           Takes a percentage value, suffixed with "%". Defaults to unset.</para>
         </listitem>
       </varlistentry>
+    </variablelist>
+  </refsect1>
 
+  <refsect1>
+    <title>[TokenBufferFilter] Section Options</title>
+    <para>The <literal>[TokenBufferFilter]</literal> section manages the queueing discipline (qdisc) of
+    token buffer filter (tbf).</para>
+
+    <variablelist class='network-directives'>
       <varlistentry>
-        <term><varname>TokenBufferFilterLatencySec=</varname></term>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
+          <literal>clsact</literal> or <literal>ingress</literal>. Defaults to <literal>root</literal>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><varname>LatencySec=</varname></term>
         <listitem>
           <para>Specifies the latency parameter, which specifies the maximum amount of time a
           packet can sit in the Token Buffer Filter (TBF). Defaults to unset.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterLimitSize=</varname></term>
+        <term><varname>LimitSize=</varname></term>
         <listitem>
           <para>Takes the number of bytes that can be queued waiting for tokens to become available.
           When the size is suffixed with K, M, or G, it is parsed as Kilobytes, Megabytes, or Gigabytes,
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterBurst=</varname></term>
+        <term><varname>Burst=</varname></term>
         <listitem>
           <para>Specifies the size of the bucket. This is the maximum amount of bytes that tokens
           can be available for instantaneous transfer. When the size is suffixed with K, M, or G, it is
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterRate=</varname></term>
+        <term><varname>Rate=</varname></term>
         <listitem>
           <para>Specifies the device specific bandwidth. When suffixed with K, M, or G, the specified
           bandwidth is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of 1000.
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterMPUBytes=</varname></term>
+        <term><varname>MPUBytes=</varname></term>
         <listitem>
           <para>The Minimum Packet Unit (MPU) determines the minimal token usage (specified in bytes)
           for a packet. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterPeakRate=</varname></term>
+        <term><varname>PeakRate=</varname></term>
         <listitem>
           <para>Takes the maximum depletion rate of the bucket. When suffixed with K, M, or G, the
           specified size is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of
       </varlistentry>
 
       <varlistentry>
-        <term><varname>TokenBufferFilterMTUBytes=</varname></term>
+        <term><varname>MTUBytes=</varname></term>
         <listitem>
           <para>Specifies the size of the peakrate bucket. When suffixed with K, M, or G, the specified
           size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1000.
           Defaults to unset.</para>
         </listitem>
       </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>[StochasticFairnessQueueing] Section Options</title>
+    <para>The <literal>[StochasticFairnessQueueing]</literal> section manages the queueing discipline
+    (qdisc) of stochastic fairness queueing (sfq).</para>
+
+    <variablelist class='network-directives'>
+      <varlistentry>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
+          <literal>clsact</literal> or <literal>ingress</literal>. Defaults to <literal>root</literal>.</para>
+        </listitem>
+      </varlistentry>
 
       <varlistentry>
-        <term><varname>StochasticFairnessQueueingPerturbPeriodSec=</varname></term>
+        <term><varname>PerturbPeriodSec=</varname></term>
         <listitem>
           <para>Specifies the interval in seconds for queue algorithm perturbation. Defaults to unset.</para>
         </listitem>
       </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>[ControlledDelay] Section Options</title>
+    <para>The <literal>[ControlledDelay]</literal> section manages the queueing discipline (qdisc) of
+    controlled delay (CoDel).</para>
 
+    <variablelist class='network-directives'>
       <varlistentry>
-        <term><varname>ControlledDelayPacketLimit=</varname></term>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
+          <literal>clsact</literal> or <literal>ingress</literal>. Defaults to <literal>root</literal>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><varname>PacketLimit=</varname></term>
         <listitem>
           <para>Specifies the hard lmit on the queue size in number of packets. When this limit is reached, incoming packets are
           dropped. An unsigned integer ranges 0 to 4294967294. Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>ControlledDelayTargetSec=</varname></term>
+        <term><varname>TargetSec=</varname></term>
         <listitem>
           <para>Takes a timespan. Specifies the acceptable minimum standing/persistent queue delay.
           Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>ControlledDelayIntervalSec=</varname></term>
+        <term><varname>IntervalSec=</varname></term>
         <listitem>
           <para>Takes a timespan. This is used to ensure that the measured minimum delay does not
           become too stale. Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>ControlledDelayECN=</varname></term>
+        <term><varname>ECN=</varname></term>
         <listitem>
           <para>Takes a boolean. This can be used to mark packets instead of dropping them. Defaults to
           unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>ControlledDelayCEThresholdSec=</varname></term>
+        <term><varname>CEThresholdSec=</varname></term>
         <listitem>
           <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
           Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
         </listitem>
       </varlistentry>
+    </variablelist>
+  </refsect1>
 
+  <refsect1>
+    <title>[FairQueueingControlledDelay] Section Options</title>
+    <para>The <literal>[FairQueueingControlledDelay]</literal> section manages the queueing discipline
+    (qdisc) of fair queuing controlled delay (FQ-CoDel).</para>
+
+    <variablelist class='network-directives'>
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayPacketLimit=</varname></term>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
+          <literal>clsact</literal> or <literal>ingress</literal>. Defaults to <literal>root</literal>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><varname>PacketLimit=</varname></term>
         <listitem>
           <para>Specifies the hard limit on the real queue size. When this limit is reached, incoming packets are
           dropped. Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayMemoryLimit=</varname></term>
+        <term><varname>MemoryLimit=</varname></term>
         <listitem>
           <para>Specifies the limit on the total number of bytes that can be queued in this FQ-CoDel instance.
           When suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayFlows=</varname></term>
+        <term><varname>Flows=</varname></term>
         <listitem>
           <para>Specifies the number of flows into which the incoming packets are classified.
           Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayTargetSec=</varname></term>
+        <term><varname>TargetSec=</varname></term>
         <listitem>
           <para>Takes a timespan. Specifies the acceptable minimum standing/persistent queue delay.
           Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayIntervalSec=</varname></term>
+        <term><varname>IntervalSec=</varname></term>
         <listitem>
           <para>Takes a timespan. This is used to ensure that the measured minimum delay does not
           become too stale. Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayQuantum=</varname></term>
+        <term><varname>Quantum=</varname></term>
         <listitem>
           <para>Specifies the number of bytes used as 'deficit' in the fair queuing algorithmtimespan.
           When suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayECN=</varname></term>
+        <term><varname>ECN=</varname></term>
         <listitem>
           <para>Takes a boolean. This can be used to mark packets instead of dropping them. Defaults to
           unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueuingControlledDelayCEThresholdSec=</varname></term>
+        <term><varname>CEThresholdSec=</varname></term>
         <listitem>
           <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
           Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
         </listitem>
       </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>[FairQueueTrafficPolicing] Section Options</title>
+    <para>The <literal>[FairQueueTrafficPolicing]</literal> section manages the queueing discipline
+    (qdisc) of fair queue traffic policing (FQ).</para>
+
+    <variablelist class='network-directives'>
+      <varlistentry>
+        <term><varname>Parent=</varname></term>
+        <listitem>
+          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
+          <literal>clsact</literal> or <literal>ingress</literal>. Defaults to <literal>root</literal>.</para>
+        </listitem>
+      </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingPacketLimit=</varname></term>
+        <term><varname>PacketLimit=</varname></term>
         <listitem>
           <para>Specifies the hard limit on the real queue size. When this limit is reached, incoming packets are
           dropped. Defaults to unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingFlowLimit=</varname></term>
+        <term><varname>FlowLimit=</varname></term>
         <listitem>
           <para>Specifies the hard limit on the maximum number of packets queued per flow. Defaults to
           unset and kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingQuantum=</varname></term>
+        <term><varname>Quantum=</varname></term>
         <listitem>
           <para>Specifies the credit per dequeue RR round, i.e. the amount of bytes a flow is allowed
           to dequeue at once. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingInitialQuantum=</varname></term>
+        <term><varname>InitialQuantum=</varname></term>
         <listitem>
           <para>Specifies the initial sending rate credit, i.e. the amount of bytes a new flow is
           allowed to dequeue initially. When suffixed with K, M, or G, the specified size is parsed as
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingMaximumRate=</varname></term>
+        <term><varname>MaximumRate=</varname></term>
         <listitem>
           <para>Specifies the maximum sending rate of a flow. When suffixed with K, M, or G, the
           specified size is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingBuckets=</varname></term>
+        <term><varname>Buckets=</varname></term>
         <listitem>
           <para>Specifies the size of the hash table used for flow lookups. Defaults to unset and
           kernel's default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingOrphanMask=</varname></term>
+        <term><varname>OrphanMask=</varname></term>
         <listitem>
           <para>Takes an unsigned integer. For packets not owned by a socket, fq is able to mask a part
           of hash and reduce number of buckets associated with the traffic. Defaults to unset and
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingPacing=</varname></term>
+        <term><varname>Pacing=</varname></term>
         <listitem>
           <para>Takes a boolean, and enables or disables flow pacing. Defaults to unset and kernel's
           default is used.</para>
       </varlistentry>
 
       <varlistentry>
-        <term><varname>FairQueueTrafficPolicingCEThresholdSec=</varname></term>
+        <term><varname>CEThresholdSec=</varname></term>
         <listitem>
           <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
           Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
         </listitem>
       </varlistentry>
-
     </variablelist>
   </refsect1>
 
index 00a8914f8f70fd87f7b2b33339d5f855afd448a8..490e1b12edd57e3141fdec48d3511c8aa1099aa7 100644 (file)
@@ -27,291 +27,302 @@ struct ConfigPerfItem;
 %struct-type
 %includes
 %%
-Match.MACAddress,                       config_parse_hwaddrs,                                0,                             offsetof(Network, match_mac)
-Match.PermanentMACAddress,              config_parse_hwaddrs,                                0,                             offsetof(Network, match_permanent_mac)
-Match.Path,                             config_parse_match_strv,                             0,                             offsetof(Network, match_path)
-Match.Driver,                           config_parse_match_strv,                             0,                             offsetof(Network, match_driver)
-Match.Type,                             config_parse_match_strv,                             0,                             offsetof(Network, match_type)
-Match.WLANInterfaceType,                config_parse_match_strv,                             0,                             offsetof(Network, match_wlan_iftype)
-Match.SSID,                             config_parse_match_strv,                             0,                             offsetof(Network, match_ssid)
-Match.BSSID,                            config_parse_hwaddrs,                                0,                             offsetof(Network, match_bssid)
-Match.Name,                             config_parse_match_ifnames,                          1,                             offsetof(Network, match_name)
-Match.Property,                         config_parse_match_property,                         0,                             offsetof(Network, match_property)
-Match.Host,                             config_parse_net_condition,                          CONDITION_HOST,                offsetof(Network, conditions)
-Match.Virtualization,                   config_parse_net_condition,                          CONDITION_VIRTUALIZATION,      offsetof(Network, conditions)
-Match.KernelCommandLine,                config_parse_net_condition,                          CONDITION_KERNEL_COMMAND_LINE, offsetof(Network, conditions)
-Match.KernelVersion,                    config_parse_net_condition,                          CONDITION_KERNEL_VERSION,      offsetof(Network, conditions)
-Match.Architecture,                     config_parse_net_condition,                          CONDITION_ARCHITECTURE,        offsetof(Network, conditions)
-Link.MACAddress,                        config_parse_hwaddr,                                 0,                             offsetof(Network, mac)
-Link.MTUBytes,                          config_parse_mtu,                                    AF_UNSPEC,                     offsetof(Network, mtu)
-Link.ARP,                               config_parse_tristate,                               0,                             offsetof(Network, arp)
-Link.Multicast,                         config_parse_tristate,                               0,                             offsetof(Network, multicast)
-Link.AllMulticast,                      config_parse_tristate,                               0,                             offsetof(Network, allmulticast)
-Link.Unmanaged,                         config_parse_bool,                                   0,                             offsetof(Network, unmanaged)
-Link.RequiredForOnline,                 config_parse_required_for_online,                    0,                             0
-Network.Description,                    config_parse_string,                                 0,                             offsetof(Network, description)
-Network.Bridge,                         config_parse_ifname,                                 0,                             offsetof(Network, bridge_name)
-Network.Bond,                           config_parse_ifname,                                 0,                             offsetof(Network, bond_name)
-Network.VLAN,                           config_parse_stacked_netdev,                         NETDEV_KIND_VLAN,              offsetof(Network, stacked_netdev_names)
-Network.MACVLAN,                        config_parse_stacked_netdev,                         NETDEV_KIND_MACVLAN,           offsetof(Network, stacked_netdev_names)
-Network.MACVTAP,                        config_parse_stacked_netdev,                         NETDEV_KIND_MACVTAP,           offsetof(Network, stacked_netdev_names)
-Network.IPVLAN,                         config_parse_stacked_netdev,                         NETDEV_KIND_IPVLAN,            offsetof(Network, stacked_netdev_names)
-Network.IPVTAP,                         config_parse_stacked_netdev,                         NETDEV_KIND_IPVTAP,            offsetof(Network, stacked_netdev_names)
-Network.VXLAN,                          config_parse_stacked_netdev,                         NETDEV_KIND_VXLAN,             offsetof(Network, stacked_netdev_names)
-Network.L2TP,                           config_parse_stacked_netdev,                         NETDEV_KIND_L2TP,              offsetof(Network, stacked_netdev_names)
-Network.MACsec,                         config_parse_stacked_netdev,                         NETDEV_KIND_MACSEC,            offsetof(Network, stacked_netdev_names)
-Network.Tunnel,                         config_parse_stacked_netdev,                         _NETDEV_KIND_TUNNEL,           offsetof(Network, stacked_netdev_names)
-Network.Xfrm,                           config_parse_stacked_netdev,                         NETDEV_KIND_XFRM,              offsetof(Network, stacked_netdev_names)
-Network.VRF,                            config_parse_ifname,                                 0,                             offsetof(Network, vrf_name)
-Network.DHCP,                           config_parse_dhcp,                                   0,                             offsetof(Network, dhcp)
-Network.DHCPServer,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_server)
-Network.LinkLocalAddressing,            config_parse_link_local_address_family,              0,                             offsetof(Network, link_local)
-Network.IPv4LLRoute,                    config_parse_bool,                                   0,                             offsetof(Network, ipv4ll_route)
-Network.DefaultRouteOnDevice,           config_parse_bool,                                   0,                             offsetof(Network, default_route_on_device)
-Network.IPv6Token,                      config_parse_ipv6token,                              0,                             offsetof(Network, ipv6_token)
-Network.LLDP,                           config_parse_lldp_mode,                              0,                             offsetof(Network, lldp_mode)
-Network.EmitLLDP,                       config_parse_lldp_emit,                              0,                             offsetof(Network, lldp_emit)
-Network.Address,                        config_parse_address,                                0,                             0
-Network.Gateway,                        config_parse_gateway,                                0,                             0
-Network.Domains,                        config_parse_domains,                                0,                             0
-Network.DNS,                            config_parse_dns,                                    0,                             0
-Network.DNSDefaultRoute,                config_parse_tristate,                               0,                             offsetof(Network, dns_default_route)
-Network.LLMNR,                          config_parse_resolve_support,                        0,                             offsetof(Network, llmnr)
-Network.MulticastDNS,                   config_parse_resolve_support,                        0,                             offsetof(Network, mdns)
-Network.DNSOverTLS,                     config_parse_dns_over_tls_mode,                      0,                             offsetof(Network, dns_over_tls_mode)
-Network.DNSSEC,                         config_parse_dnssec_mode,                            0,                             offsetof(Network, dnssec_mode)
-Network.DNSSECNegativeTrustAnchors,     config_parse_dnssec_negative_trust_anchors,          0,                             0
-Network.NTP,                            config_parse_ntp,                                    0,                             offsetof(Network, ntp)
-Network.IPForward,                      config_parse_address_family_with_kernel,             0,                             offsetof(Network, ip_forward)
-Network.IPMasquerade,                   config_parse_bool,                                   0,                             offsetof(Network, ip_masquerade)
-Network.IPv6PrivacyExtensions,          config_parse_ipv6_privacy_extensions,                0,                             offsetof(Network, ipv6_privacy_extensions)
-Network.IPv6AcceptRA,                   config_parse_tristate,                               0,                             offsetof(Network, ipv6_accept_ra)
-Network.IPv6AcceptRouterAdvertisements, config_parse_tristate,                               0,                             offsetof(Network, ipv6_accept_ra)
-Network.IPv6DuplicateAddressDetection,  config_parse_int,                                    0,                             offsetof(Network, ipv6_dad_transmits)
-Network.IPv6HopLimit,                   config_parse_int,                                    0,                             offsetof(Network, ipv6_hop_limit)
-Network.IPv6ProxyNDP,                   config_parse_tristate,                               0,                             offsetof(Network, ipv6_proxy_ndp)
-Network.IPv6MTUBytes,                   config_parse_mtu,                                    AF_INET6,                      offsetof(Network, ipv6_mtu)
-Network.ActiveSlave,                    config_parse_bool,                                   0,                             offsetof(Network, active_slave)
-Network.PrimarySlave,                   config_parse_bool,                                   0,                             offsetof(Network, primary_slave)
-Network.IPv4ProxyARP,                   config_parse_tristate,                               0,                             offsetof(Network, proxy_arp)
-Network.ProxyARP,                       config_parse_tristate,                               0,                             offsetof(Network, proxy_arp)
-Network.IPv6ProxyNDPAddress,            config_parse_ipv6_proxy_ndp_address,                 0,                             0
-Network.BindCarrier,                    config_parse_strv,                                   0,                             offsetof(Network, bind_carrier)
-Network.ConfigureWithoutCarrier,        config_parse_bool,                                   0,                             offsetof(Network, configure_without_carrier)
-Network.IgnoreCarrierLoss,              config_parse_bool,                                   0,                             offsetof(Network, ignore_carrier_loss)
-Network.KeepConfiguration,              config_parse_keep_configuration,                     0,                             offsetof(Network, keep_configuration)
-Address.Address,                        config_parse_address,                                0,                             0
-Address.Peer,                           config_parse_address,                                0,                             0
-Address.Broadcast,                      config_parse_broadcast,                              0,                             0
-Address.Label,                          config_parse_label,                                  0,                             0
-Address.PreferredLifetime,              config_parse_lifetime,                               0,                             0
-Address.HomeAddress,                    config_parse_address_flags,                          0,                             0
-Address.ManageTemporaryAddress,         config_parse_address_flags,                          0,                             0
-Address.PrefixRoute,                    config_parse_address_flags,                          0,                             0 /* deprecated */
-Address.AddPrefixRoute,                 config_parse_address_flags,                          0,                             0
-Address.AutoJoin,                       config_parse_address_flags,                          0,                             0
-Address.DuplicateAddressDetection,      config_parse_duplicate_address_detection,            0,                             0
-Address.Scope,                          config_parse_address_scope,                          0,                             0
-IPv6AddressLabel.Prefix,                config_parse_address_label_prefix,                   0,                             0
-IPv6AddressLabel.Label,                 config_parse_address_label,                          0,                             0
-Neighbor.Address,                       config_parse_neighbor_address,                       0,                             0
-Neighbor.LinkLayerAddress,              config_parse_neighbor_lladdr,                        0,                             0
-Neighbor.MACAddress,                    config_parse_neighbor_hwaddr,                        0,                             0 /* deprecated */
-RoutingPolicyRule.TypeOfService,        config_parse_routing_policy_rule_tos,                0,                             0
-RoutingPolicyRule.Priority,             config_parse_routing_policy_rule_priority,           0,                             0
-RoutingPolicyRule.Table,                config_parse_routing_policy_rule_table,              0,                             0
-RoutingPolicyRule.FirewallMark,         config_parse_routing_policy_rule_fwmark_mask,        0,                             0
-RoutingPolicyRule.From,                 config_parse_routing_policy_rule_prefix,             0,                             0
-RoutingPolicyRule.To,                   config_parse_routing_policy_rule_prefix,             0,                             0
-RoutingPolicyRule.IncomingInterface,    config_parse_routing_policy_rule_device,             0,                             0
-RoutingPolicyRule.OutgoingInterface,    config_parse_routing_policy_rule_device,             0,                             0
-RoutingPolicyRule.IPProtocol,           config_parse_routing_policy_rule_ip_protocol,        0,                             0
-RoutingPolicyRule.SourcePort,           config_parse_routing_policy_rule_port_range,         0,                             0
-RoutingPolicyRule.DestinationPort,      config_parse_routing_policy_rule_port_range,         0,                             0
-RoutingPolicyRule.InvertRule,           config_parse_routing_policy_rule_invert,             0,                             0
-RoutingPolicyRule.Family,               config_parse_routing_policy_rule_family,             0,                             0
-RoutingPolicyRule.User,                 config_parse_routing_policy_rule_uid_range,          0,                             0
-RoutingPolicyRule.SuppressPrefixLength, config_parse_routing_policy_rule_suppress_prefixlen, 0,                             0
-Route.Gateway,                          config_parse_gateway,                                0,                             0
-Route.Destination,                      config_parse_destination,                            0,                             0
-Route.Source,                           config_parse_destination,                            0,                             0
-Route.Metric,                           config_parse_route_priority,                         0,                             0
-Route.Scope,                            config_parse_route_scope,                            0,                             0
-Route.PreferredSource,                  config_parse_preferred_src,                          0,                             0
-Route.Table,                            config_parse_route_table,                            0,                             0
-Route.MTUBytes,                         config_parse_route_mtu,                              AF_UNSPEC,                     0
-Route.GatewayOnLink,                    config_parse_gateway_onlink,                         0,                             0
-Route.GatewayOnlink,                    config_parse_gateway_onlink,                         0,                             0
-Route.IPv6Preference,                   config_parse_ipv6_route_preference,                  0,                             0
-Route.Protocol,                         config_parse_route_protocol,                         0,                             0
-Route.Type,                             config_parse_route_type,                             0,                             0
-Route.InitialCongestionWindow,          config_parse_tcp_window,                             0,                             0
-Route.InitialAdvertisedReceiveWindow,   config_parse_tcp_window,                             0,                             0
-Route.QuickAck,                         config_parse_quickack,                               0,                             0
-Route.FastOpenNoCookie,                 config_parse_fast_open_no_cookie,                    0,                             0
-Route.TTLPropagate,                     config_parse_route_ttl_propagate,                    0,                             0
-Route.MultiPathRoute,                   config_parse_multipath_route,                        0,                             0
-NextHop.Id,                             config_parse_nexthop_id,                             0,                             0
-NextHop.Gateway,                        config_parse_nexthop_gateway,                        0,                             0
-DHCPv4.ClientIdentifier,                config_parse_dhcp_client_identifier,                 0,                             offsetof(Network, dhcp_client_identifier)
-DHCPv4.UseDNS,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_dns)
-DHCPv4.RoutesToDNS,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_routes_to_dns)
-DHCPv4.UseNTP,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_ntp)
-DHCPv4.UseSIP,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_sip)
-DHCPv4.UseMTU,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_mtu)
-DHCPv4.UseHostname,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_hostname)
-DHCPv4.UseDomains,                      config_parse_dhcp_use_domains,                       0,                             offsetof(Network, dhcp_use_domains)
-DHCPv4.UseRoutes,                       config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_routes)
-DHCPv4.RequestOptions,                  config_parse_dhcp_request_options,                   0,                             0
-DHCPv4.Anonymize,                       config_parse_bool,                                   0,                             offsetof(Network, dhcp_anonymize)
-DHCPv4.SendHostname,                    config_parse_bool,                                   0,                             offsetof(Network, dhcp_send_hostname)
-DHCPv4.Hostname,                        config_parse_hostname,                               0,                             offsetof(Network, dhcp_hostname)
-DHCPv4.RequestBroadcast,                config_parse_bool,                                   0,                             offsetof(Network, dhcp_broadcast)
-DHCPv4.VendorClassIdentifier,           config_parse_string,                                 0,                             offsetof(Network, dhcp_vendor_class_identifier)
-DHCPv4.MaxAttempts,                     config_parse_dhcp_max_attempts,                      0,                             0
-DHCPv4.UserClass,                       config_parse_dhcp_user_class,                        0,                             offsetof(Network, dhcp_user_class)
-DHCPv4.DUIDType,                        config_parse_duid_type,                              0,                             offsetof(Network, duid)
-DHCPv4.DUIDRawData,                     config_parse_duid_rawdata,                           0,                             offsetof(Network, duid)
-DHCPv4.RouteMetric,                     config_parse_unsigned,                               0,                             offsetof(Network, dhcp_route_metric)
-DHCPv4.RouteTable,                      config_parse_section_route_table,                    0,                             0
-DHCPv4.UseTimezone,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_use_timezone)
-DHCPv4.IAID,                            config_parse_iaid,                                   0,                             0
-DHCPv4.ListenPort,                      config_parse_uint16,                                 0,                             offsetof(Network, dhcp_client_port)
-DHCPv4.SendRelease,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_send_release)
-DHCPv4.SendDecline,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_send_decline)
-DHCPv4.BlackList,                       config_parse_dhcp_black_listed_ip_address,           0,                             0
-DHCPv4.IPServiceType,                   config_parse_ip_service_type,                        0,                             offsetof(Network, ip_service_type)
-DHCPv4.SendOption,                      config_parse_dhcp_send_option,                       0,                             offsetof(Network, dhcp_client_send_options)
-DHCPv4.RouteMTUBytes,                   config_parse_mtu,                                    AF_INET,                       offsetof(Network, dhcp_route_mtu)
-DHCPv6.UseDNS,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp6_use_dns)
-DHCPv6.UseNTP,                          config_parse_bool,                                   0,                             offsetof(Network, dhcp6_use_ntp)
-DHCPv6.RapidCommit,                     config_parse_bool,                                   0,                             offsetof(Network, rapid_commit)
-DHCPv6.ForceDHCPv6PDOtherInformation,   config_parse_bool,                                   0,                             offsetof(Network, dhcp6_force_pd_other_information)
-DHCPv6.PrefixDelegationHint,            config_parse_dhcp6_pd_hint,                          0,                             0
-IPv6AcceptRA.UseAutonomousPrefix,       config_parse_bool,                                   0,                             offsetof(Network, ipv6_accept_ra_use_autonomous_prefix)
-IPv6AcceptRA.UseOnLinkPrefix,           config_parse_bool,                                   0,                             offsetof(Network, ipv6_accept_ra_use_onlink_prefix)
-IPv6AcceptRA.UseDNS,                    config_parse_bool,                                   0,                             offsetof(Network, ipv6_accept_ra_use_dns)
-IPv6AcceptRA.UseDomains,                config_parse_dhcp_use_domains,                       0,                             offsetof(Network, ipv6_accept_ra_use_domains)
-IPv6AcceptRA.RouteTable,                config_parse_section_route_table,                    0,                             0
-IPv6AcceptRA.BlackList,                 config_parse_ndisc_black_listed_prefix,              0,                             0
-DHCPServer.MaxLeaseTimeSec,             config_parse_sec,                                    0,                             offsetof(Network, dhcp_server_max_lease_time_usec)
-DHCPServer.DefaultLeaseTimeSec,         config_parse_sec,                                    0,                             offsetof(Network, dhcp_server_default_lease_time_usec)
-DHCPServer.EmitDNS,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_server_emit_dns)
-DHCPServer.DNS,                         config_parse_dhcp_server_dns,                        0,                             0
-DHCPServer.EmitNTP,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_server_emit_ntp)
-DHCPServer.NTP,                         config_parse_dhcp_server_ntp,                        0,                             0
-DHCPServer.EmitSIP,                     config_parse_bool,                                   0,                             offsetof(Network, dhcp_server_emit_sip)
-DHCPServer.SIP,                         config_parse_dhcp_server_sip,                        0,                             0
-DHCPServer.EmitRouter,                  config_parse_bool,                                   0,                             offsetof(Network, dhcp_server_emit_router)
-DHCPServer.EmitTimezone,                config_parse_bool,                                   0,                             offsetof(Network, dhcp_server_emit_timezone)
-DHCPServer.Timezone,                    config_parse_timezone,                               0,                             offsetof(Network, dhcp_server_timezone)
-DHCPServer.PoolOffset,                  config_parse_uint32,                                 0,                             offsetof(Network, dhcp_server_pool_offset)
-DHCPServer.PoolSize,                    config_parse_uint32,                                 0,                             offsetof(Network, dhcp_server_pool_size)
-DHCPServer.SendOption,                  config_parse_dhcp_send_option,                       0,                             offsetof(Network, dhcp_server_send_options)
-Bridge.Cost,                            config_parse_uint32,                                 0,                             offsetof(Network, cost)
-Bridge.UseBPDU,                         config_parse_tristate,                               0,                             offsetof(Network, use_bpdu)
-Bridge.HairPin,                         config_parse_tristate,                               0,                             offsetof(Network, hairpin)
-Bridge.FastLeave,                       config_parse_tristate,                               0,                             offsetof(Network, fast_leave)
-Bridge.AllowPortToBeRoot,               config_parse_tristate,                               0,                             offsetof(Network, allow_port_to_be_root)
-Bridge.UnicastFlood,                    config_parse_tristate,                               0,                             offsetof(Network, unicast_flood)
-Bridge.MulticastFlood,                  config_parse_tristate,                               0,                             offsetof(Network, multicast_flood)
-Bridge.MulticastToUnicast,              config_parse_tristate,                               0,                             offsetof(Network, multicast_to_unicast)
-Bridge.NeighborSuppression,             config_parse_tristate,                               0,                             offsetof(Network, neighbor_suppression)
-Bridge.Learning,                        config_parse_tristate,                               0,                             offsetof(Network, learning)
-Bridge.ProxyARP,                        config_parse_tristate,                               0,                             offsetof(Network, bridge_proxy_arp)
-Bridge.ProxyARPWiFi,                    config_parse_tristate,                               0,                             offsetof(Network, bridge_proxy_arp_wifi)
-Bridge.Priority,                        config_parse_bridge_port_priority,                   0,                             offsetof(Network, priority)
-Bridge.MulticastRouter,                 config_parse_multicast_router,                       0,                             offsetof(Network, multicast_router)
-BridgeFDB.MACAddress,                   config_parse_fdb_hwaddr,                             0,                             0
-BridgeFDB.VLANId,                       config_parse_fdb_vlan_id,                            0,                             0
-BridgeFDB.Destination,                  config_parse_fdb_destination,                        0,                             0
-BridgeFDB.VNI,                          config_parse_fdb_vxlan_vni,                          0,                             0
-BridgeFDB.AssociatedWith,               config_parse_fdb_ntf_flags,                          0,                             0
-BridgeVLAN.PVID,                        config_parse_brvlan_pvid,                            0,                             0
-BridgeVLAN.VLAN,                        config_parse_brvlan_vlan,                            0,                             0
-BridgeVLAN.EgressUntagged,              config_parse_brvlan_untagged,                        0,                             0
-Network.IPv6PrefixDelegation,           config_parse_router_prefix_delegation,               0,                             0
-IPv6PrefixDelegation.RouterLifetimeSec, config_parse_sec,                                    0,                             offsetof(Network, router_lifetime_usec)
-IPv6PrefixDelegation.Managed,           config_parse_bool,                                   0,                             offsetof(Network, router_managed)
-IPv6PrefixDelegation.OtherInformation,  config_parse_bool,                                   0,                             offsetof(Network, router_other_information)
-IPv6PrefixDelegation.RouterPreference,  config_parse_router_preference,                      0,                             0
-IPv6PrefixDelegation.EmitDNS,           config_parse_bool,                                   0,                             offsetof(Network, router_emit_dns)
-IPv6PrefixDelegation.DNS,               config_parse_radv_dns,                               0,                             0
-IPv6PrefixDelegation.EmitDomains,       config_parse_bool,                                   0,                             offsetof(Network, router_emit_domains)
-IPv6PrefixDelegation.Domains,           config_parse_radv_search_domains,                    0,                             0
-IPv6PrefixDelegation.DNSLifetimeSec,    config_parse_sec,                                    0,                             offsetof(Network, router_dns_lifetime_usec)
-IPv6Prefix.Prefix,                      config_parse_prefix,                                 0,                             0
-IPv6Prefix.OnLink,                      config_parse_prefix_flags,                           0,                             0
-IPv6Prefix.AddressAutoconfiguration,    config_parse_prefix_flags,                           0,                             0
-IPv6Prefix.ValidLifetimeSec,            config_parse_prefix_lifetime,                        0,                             0
-IPv6Prefix.PreferredLifetimeSec,        config_parse_prefix_lifetime,                        0,                             0
-IPv6RoutePrefix.Route,                  config_parse_route_prefix,                           0,                             0
-IPv6RoutePrefix.LifetimeSec,            config_parse_route_prefix_lifetime,                  0,                             0
-CAN.BitRate,                            config_parse_si_uint64,                              0,                             offsetof(Network, can_bitrate)
-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)
-TrafficControlQueueingDiscipline.Parent,                                     config_parse_tc_qdiscs_parent,                               0, 0
-TrafficControlQueueingDiscipline.NetworkEmulatorDelaySec,                    config_parse_tc_network_emulator_delay,                      0, 0
-TrafficControlQueueingDiscipline.NetworkEmulatorDelayJitterSec,              config_parse_tc_network_emulator_delay,                      0, 0
-TrafficControlQueueingDiscipline.NetworkEmulatorLossRate,                    config_parse_tc_network_emulator_rate,                       0, 0
-TrafficControlQueueingDiscipline.NetworkEmulatorDuplicateRate,               config_parse_tc_network_emulator_rate,                       0, 0
-TrafficControlQueueingDiscipline.NetworkEmulatorPacketLimit,                 config_parse_tc_network_emulator_packet_limit,               0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterRate,                      config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterBurst,                     config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterLimitSize,                 config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterMTUBytes,                  config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterMPUBytes,                  config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterPeakRate,                  config_parse_tc_token_buffer_filter_size,                    0, 0
-TrafficControlQueueingDiscipline.TokenBufferFilterLatencySec,                config_parse_tc_token_buffer_filter_latency,                 0, 0
-TrafficControlQueueingDiscipline.StochasticFairnessQueueingPerturbPeriodSec, config_parse_tc_stochastic_fairness_queueing_perturb_period, 0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayPacketLimit,      config_parse_tc_fair_queuing_controlled_delay_u32,           0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayMemoryLimit,      config_parse_tc_fair_queuing_controlled_delay_size,          0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayFlows,            config_parse_tc_fair_queuing_controlled_delay_u32,           0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayQuantum,          config_parse_tc_fair_queuing_controlled_delay_size,          0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayTargetSec,        config_parse_tc_fair_queuing_controlled_delay_usec,          0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayIntervalSec,      config_parse_tc_fair_queuing_controlled_delay_usec,          0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayCEThresholdSec,   config_parse_tc_fair_queuing_controlled_delay_usec,          0, 0
-TrafficControlQueueingDiscipline.FairQueuingControlledDelayECN,              config_parse_tc_fair_queuing_controlled_delay_bool,          0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingPacketLimit,        config_parse_tc_fair_queue_traffic_policing_u32,             0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingFlowLimit,          config_parse_tc_fair_queue_traffic_policing_u32,             0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingQuantum,            config_parse_tc_fair_queue_traffic_policing_size,            0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingInitialQuantum,     config_parse_tc_fair_queue_traffic_policing_size,            0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingMaximumRate,        config_parse_tc_fair_queue_traffic_policing_max_rate,        0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingBuckets,            config_parse_tc_fair_queue_traffic_policing_u32,             0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingOrphanMask,         config_parse_tc_fair_queue_traffic_policing_u32,             0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingPacing,             config_parse_tc_fair_queue_traffic_policing_bool,            0, 0
-TrafficControlQueueingDiscipline.FairQueueTrafficPolicingCEThresholdSec,     config_parse_tc_fair_queue_traffic_policing_usec,            0, 0
-TrafficControlQueueingDiscipline.ControlledDelayPacketLimit,                 config_parse_tc_controlled_delay_u32,                        0, 0
-TrafficControlQueueingDiscipline.ControlledDelayTargetSec,                   config_parse_tc_controlled_delay_usec,                       0, 0
-TrafficControlQueueingDiscipline.ControlledDelayIntervalSec,                 config_parse_tc_controlled_delay_usec,                       0, 0
-TrafficControlQueueingDiscipline.ControlledDelayCEThresholdSec,              config_parse_tc_controlled_delay_usec,                       0, 0
-TrafficControlQueueingDiscipline.ControlledDelayECN,                         config_parse_tc_controlled_delay_bool,                       0, 0
+Match.MACAddress,                            config_parse_hwaddrs,                                     0,                             offsetof(Network, match_mac)
+Match.PermanentMACAddress,                   config_parse_hwaddrs,                                     0,                             offsetof(Network, match_permanent_mac)
+Match.Path,                                  config_parse_match_strv,                                  0,                             offsetof(Network, match_path)
+Match.Driver,                                config_parse_match_strv,                                  0,                             offsetof(Network, match_driver)
+Match.Type,                                  config_parse_match_strv,                                  0,                             offsetof(Network, match_type)
+Match.WLANInterfaceType,                     config_parse_match_strv,                                  0,                             offsetof(Network, match_wlan_iftype)
+Match.SSID,                                  config_parse_match_strv,                                  0,                             offsetof(Network, match_ssid)
+Match.BSSID,                                 config_parse_hwaddrs,                                     0,                             offsetof(Network, match_bssid)
+Match.Name,                                  config_parse_match_ifnames,                               1,                             offsetof(Network, match_name)
+Match.Property,                              config_parse_match_property,                              0,                             offsetof(Network, match_property)
+Match.Host,                                  config_parse_net_condition,                               CONDITION_HOST,                offsetof(Network, conditions)
+Match.Virtualization,                        config_parse_net_condition,                               CONDITION_VIRTUALIZATION,      offsetof(Network, conditions)
+Match.KernelCommandLine,                     config_parse_net_condition,                               CONDITION_KERNEL_COMMAND_LINE, offsetof(Network, conditions)
+Match.KernelVersion,                         config_parse_net_condition,                               CONDITION_KERNEL_VERSION,      offsetof(Network, conditions)
+Match.Architecture,                          config_parse_net_condition,                               CONDITION_ARCHITECTURE,        offsetof(Network, conditions)
+Link.MACAddress,                             config_parse_hwaddr,                                      0,                             offsetof(Network, mac)
+Link.MTUBytes,                               config_parse_mtu,                                         AF_UNSPEC,                     offsetof(Network, mtu)
+Link.ARP,                                    config_parse_tristate,                                    0,                             offsetof(Network, arp)
+Link.Multicast,                              config_parse_tristate,                                    0,                             offsetof(Network, multicast)
+Link.AllMulticast,                           config_parse_tristate,                                    0,                             offsetof(Network, allmulticast)
+Link.Unmanaged,                              config_parse_bool,                                        0,                             offsetof(Network, unmanaged)
+Link.RequiredForOnline,                      config_parse_required_for_online,                         0,                             0
+Network.Description,                         config_parse_string,                                      0,                             offsetof(Network, description)
+Network.Bridge,                              config_parse_ifname,                                      0,                             offsetof(Network, bridge_name)
+Network.Bond,                                config_parse_ifname,                                      0,                             offsetof(Network, bond_name)
+Network.VLAN,                                config_parse_stacked_netdev,                              NETDEV_KIND_VLAN,              offsetof(Network, stacked_netdev_names)
+Network.MACVLAN,                             config_parse_stacked_netdev,                              NETDEV_KIND_MACVLAN,           offsetof(Network, stacked_netdev_names)
+Network.MACVTAP,                             config_parse_stacked_netdev,                              NETDEV_KIND_MACVTAP,           offsetof(Network, stacked_netdev_names)
+Network.IPVLAN,                              config_parse_stacked_netdev,                              NETDEV_KIND_IPVLAN,            offsetof(Network, stacked_netdev_names)
+Network.IPVTAP,                              config_parse_stacked_netdev,                              NETDEV_KIND_IPVTAP,            offsetof(Network, stacked_netdev_names)
+Network.VXLAN,                               config_parse_stacked_netdev,                              NETDEV_KIND_VXLAN,             offsetof(Network, stacked_netdev_names)
+Network.L2TP,                                config_parse_stacked_netdev,                              NETDEV_KIND_L2TP,              offsetof(Network, stacked_netdev_names)
+Network.MACsec,                              config_parse_stacked_netdev,                              NETDEV_KIND_MACSEC,            offsetof(Network, stacked_netdev_names)
+Network.Tunnel,                              config_parse_stacked_netdev,                              _NETDEV_KIND_TUNNEL,           offsetof(Network, stacked_netdev_names)
+Network.Xfrm,                                config_parse_stacked_netdev,                              NETDEV_KIND_XFRM,              offsetof(Network, stacked_netdev_names)
+Network.VRF,                                 config_parse_ifname,                                      0,                             offsetof(Network, vrf_name)
+Network.DHCP,                                config_parse_dhcp,                                        0,                             offsetof(Network, dhcp)
+Network.DHCPServer,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_server)
+Network.LinkLocalAddressing,                 config_parse_link_local_address_family,                   0,                             offsetof(Network, link_local)
+Network.IPv4LLRoute,                         config_parse_bool,                                        0,                             offsetof(Network, ipv4ll_route)
+Network.DefaultRouteOnDevice,                config_parse_bool,                                        0,                             offsetof(Network, default_route_on_device)
+Network.IPv6Token,                           config_parse_ipv6token,                                   0,                             offsetof(Network, ipv6_token)
+Network.LLDP,                                config_parse_lldp_mode,                                   0,                             offsetof(Network, lldp_mode)
+Network.EmitLLDP,                            config_parse_lldp_emit,                                   0,                             offsetof(Network, lldp_emit)
+Network.Address,                             config_parse_address,                                     0,                             0
+Network.Gateway,                             config_parse_gateway,                                     0,                             0
+Network.Domains,                             config_parse_domains,                                     0,                             0
+Network.DNS,                                 config_parse_dns,                                         0,                             0
+Network.DNSDefaultRoute,                     config_parse_tristate,                                    0,                             offsetof(Network, dns_default_route)
+Network.LLMNR,                               config_parse_resolve_support,                             0,                             offsetof(Network, llmnr)
+Network.MulticastDNS,                        config_parse_resolve_support,                             0,                             offsetof(Network, mdns)
+Network.DNSOverTLS,                          config_parse_dns_over_tls_mode,                           0,                             offsetof(Network, dns_over_tls_mode)
+Network.DNSSEC,                              config_parse_dnssec_mode,                                 0,                             offsetof(Network, dnssec_mode)
+Network.DNSSECNegativeTrustAnchors,          config_parse_dnssec_negative_trust_anchors,               0,                             0
+Network.NTP,                                 config_parse_ntp,                                         0,                             offsetof(Network, ntp)
+Network.IPForward,                           config_parse_address_family_with_kernel,                  0,                             offsetof(Network, ip_forward)
+Network.IPMasquerade,                        config_parse_bool,                                        0,                             offsetof(Network, ip_masquerade)
+Network.IPv6PrivacyExtensions,               config_parse_ipv6_privacy_extensions,                     0,                             offsetof(Network, ipv6_privacy_extensions)
+Network.IPv6AcceptRA,                        config_parse_tristate,                                    0,                             offsetof(Network, ipv6_accept_ra)
+Network.IPv6AcceptRouterAdvertisements,      config_parse_tristate,                                    0,                             offsetof(Network, ipv6_accept_ra)
+Network.IPv6DuplicateAddressDetection,       config_parse_int,                                         0,                             offsetof(Network, ipv6_dad_transmits)
+Network.IPv6HopLimit,                        config_parse_int,                                         0,                             offsetof(Network, ipv6_hop_limit)
+Network.IPv6ProxyNDP,                        config_parse_tristate,                                    0,                             offsetof(Network, ipv6_proxy_ndp)
+Network.IPv6MTUBytes,                        config_parse_mtu,                                         AF_INET6,                      offsetof(Network, ipv6_mtu)
+Network.ActiveSlave,                         config_parse_bool,                                        0,                             offsetof(Network, active_slave)
+Network.PrimarySlave,                        config_parse_bool,                                        0,                             offsetof(Network, primary_slave)
+Network.IPv4ProxyARP,                        config_parse_tristate,                                    0,                             offsetof(Network, proxy_arp)
+Network.ProxyARP,                            config_parse_tristate,                                    0,                             offsetof(Network, proxy_arp)
+Network.IPv6ProxyNDPAddress,                 config_parse_ipv6_proxy_ndp_address,                      0,                             0
+Network.BindCarrier,                         config_parse_strv,                                        0,                             offsetof(Network, bind_carrier)
+Network.ConfigureWithoutCarrier,             config_parse_bool,                                        0,                             offsetof(Network, configure_without_carrier)
+Network.IgnoreCarrierLoss,                   config_parse_bool,                                        0,                             offsetof(Network, ignore_carrier_loss)
+Network.KeepConfiguration,                   config_parse_keep_configuration,                          0,                             offsetof(Network, keep_configuration)
+Address.Address,                             config_parse_address,                                     0,                             0
+Address.Peer,                                config_parse_address,                                     0,                             0
+Address.Broadcast,                           config_parse_broadcast,                                   0,                             0
+Address.Label,                               config_parse_label,                                       0,                             0
+Address.PreferredLifetime,                   config_parse_lifetime,                                    0,                             0
+Address.HomeAddress,                         config_parse_address_flags,                               0,                             0
+Address.ManageTemporaryAddress,              config_parse_address_flags,                               0,                             0
+Address.PrefixRoute,                         config_parse_address_flags,                               0,                             0 /* deprecated */
+Address.AddPrefixRoute,                      config_parse_address_flags,                               0,                             0
+Address.AutoJoin,                            config_parse_address_flags,                               0,                             0
+Address.DuplicateAddressDetection,           config_parse_duplicate_address_detection,                 0,                             0
+Address.Scope,                               config_parse_address_scope,                               0,                             0
+IPv6AddressLabel.Prefix,                     config_parse_address_label_prefix,                        0,                             0
+IPv6AddressLabel.Label,                      config_parse_address_label,                               0,                             0
+Neighbor.Address,                            config_parse_neighbor_address,                            0,                             0
+Neighbor.LinkLayerAddress,                   config_parse_neighbor_lladdr,                             0,                             0
+Neighbor.MACAddress,                         config_parse_neighbor_hwaddr,                             0,                             0 /* deprecated */
+RoutingPolicyRule.TypeOfService,             config_parse_routing_policy_rule_tos,                     0,                             0
+RoutingPolicyRule.Priority,                  config_parse_routing_policy_rule_priority,                0,                             0
+RoutingPolicyRule.Table,                     config_parse_routing_policy_rule_table,                   0,                             0
+RoutingPolicyRule.FirewallMark,              config_parse_routing_policy_rule_fwmark_mask,             0,                             0
+RoutingPolicyRule.From,                      config_parse_routing_policy_rule_prefix,                  0,                             0
+RoutingPolicyRule.To,                        config_parse_routing_policy_rule_prefix,                  0,                             0
+RoutingPolicyRule.IncomingInterface,         config_parse_routing_policy_rule_device,                  0,                             0
+RoutingPolicyRule.OutgoingInterface,         config_parse_routing_policy_rule_device,                  0,                             0
+RoutingPolicyRule.IPProtocol,                config_parse_routing_policy_rule_ip_protocol,             0,                             0
+RoutingPolicyRule.SourcePort,                config_parse_routing_policy_rule_port_range,              0,                             0
+RoutingPolicyRule.DestinationPort,           config_parse_routing_policy_rule_port_range,              0,                             0
+RoutingPolicyRule.InvertRule,                config_parse_routing_policy_rule_invert,                  0,                             0
+RoutingPolicyRule.Family,                    config_parse_routing_policy_rule_family,                  0,                             0
+RoutingPolicyRule.User,                      config_parse_routing_policy_rule_uid_range,               0,                             0
+RoutingPolicyRule.SuppressPrefixLength,      config_parse_routing_policy_rule_suppress_prefixlen,      0,                             0
+Route.Gateway,                               config_parse_gateway,                                     0,                             0
+Route.Destination,                           config_parse_destination,                                 0,                             0
+Route.Source,                                config_parse_destination,                                 0,                             0
+Route.Metric,                                config_parse_route_priority,                              0,                             0
+Route.Scope,                                 config_parse_route_scope,                                 0,                             0
+Route.PreferredSource,                       config_parse_preferred_src,                               0,                             0
+Route.Table,                                 config_parse_route_table,                                 0,                             0
+Route.MTUBytes,                              config_parse_route_mtu,                                   AF_UNSPEC,                     0
+Route.GatewayOnLink,                         config_parse_gateway_onlink,                              0,                             0
+Route.GatewayOnlink,                         config_parse_gateway_onlink,                              0,                             0
+Route.IPv6Preference,                        config_parse_ipv6_route_preference,                       0,                             0
+Route.Protocol,                              config_parse_route_protocol,                              0,                             0
+Route.Type,                                  config_parse_route_type,                                  0,                             0
+Route.InitialCongestionWindow,               config_parse_tcp_window,                                  0,                             0
+Route.InitialAdvertisedReceiveWindow,        config_parse_tcp_window,                                  0,                             0
+Route.QuickAck,                              config_parse_quickack,                                    0,                             0
+Route.FastOpenNoCookie,                      config_parse_fast_open_no_cookie,                         0,                             0
+Route.TTLPropagate,                          config_parse_route_ttl_propagate,                         0,                             0
+Route.MultiPathRoute,                        config_parse_multipath_route,                             0,                             0
+NextHop.Id,                                  config_parse_nexthop_id,                                  0,                             0
+NextHop.Gateway,                             config_parse_nexthop_gateway,                             0,                             0
+DHCPv4.ClientIdentifier,                     config_parse_dhcp_client_identifier,                      0,                             offsetof(Network, dhcp_client_identifier)
+DHCPv4.UseDNS,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_dns)
+DHCPv4.RoutesToDNS,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_routes_to_dns)
+DHCPv4.UseNTP,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_ntp)
+DHCPv4.UseSIP,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_sip)
+DHCPv4.UseMTU,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_mtu)
+DHCPv4.UseHostname,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_hostname)
+DHCPv4.UseDomains,                           config_parse_dhcp_use_domains,                            0,                             offsetof(Network, dhcp_use_domains)
+DHCPv4.UseRoutes,                            config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_routes)
+DHCPv4.RequestOptions,                       config_parse_dhcp_request_options,                        0,                             0
+DHCPv4.Anonymize,                            config_parse_bool,                                        0,                             offsetof(Network, dhcp_anonymize)
+DHCPv4.SendHostname,                         config_parse_bool,                                        0,                             offsetof(Network, dhcp_send_hostname)
+DHCPv4.Hostname,                             config_parse_hostname,                                    0,                             offsetof(Network, dhcp_hostname)
+DHCPv4.RequestBroadcast,                     config_parse_bool,                                        0,                             offsetof(Network, dhcp_broadcast)
+DHCPv4.VendorClassIdentifier,                config_parse_string,                                      0,                             offsetof(Network, dhcp_vendor_class_identifier)
+DHCPv4.MaxAttempts,                          config_parse_dhcp_max_attempts,                           0,                             0
+DHCPv4.UserClass,                            config_parse_dhcp_user_class,                             0,                             offsetof(Network, dhcp_user_class)
+DHCPv4.DUIDType,                             config_parse_duid_type,                                   0,                             offsetof(Network, duid)
+DHCPv4.DUIDRawData,                          config_parse_duid_rawdata,                                0,                             offsetof(Network, duid)
+DHCPv4.RouteMetric,                          config_parse_unsigned,                                    0,                             offsetof(Network, dhcp_route_metric)
+DHCPv4.RouteTable,                           config_parse_section_route_table,                         0,                             0
+DHCPv4.UseTimezone,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_timezone)
+DHCPv4.IAID,                                 config_parse_iaid,                                        0,                             0
+DHCPv4.ListenPort,                           config_parse_uint16,                                      0,                             offsetof(Network, dhcp_client_port)
+DHCPv4.SendRelease,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_send_release)
+DHCPv4.SendDecline,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_send_decline)
+DHCPv4.BlackList,                            config_parse_dhcp_black_listed_ip_address,                0,                             0
+DHCPv4.IPServiceType,                        config_parse_ip_service_type,                             0,                             offsetof(Network, ip_service_type)
+DHCPv4.SendOption,                           config_parse_dhcp_send_option,                            0,                             offsetof(Network, dhcp_client_send_options)
+DHCPv4.RouteMTUBytes,                        config_parse_mtu,                                         AF_INET,                       offsetof(Network, dhcp_route_mtu)
+DHCPv6.UseDNS,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp6_use_dns)
+DHCPv6.UseNTP,                               config_parse_bool,                                        0,                             offsetof(Network, dhcp6_use_ntp)
+DHCPv6.RapidCommit,                          config_parse_bool,                                        0,                             offsetof(Network, rapid_commit)
+DHCPv6.ForceDHCPv6PDOtherInformation,        config_parse_bool,                                        0,                             offsetof(Network, dhcp6_force_pd_other_information)
+DHCPv6.PrefixDelegationHint,                 config_parse_dhcp6_pd_hint,                               0,                             0
+IPv6AcceptRA.UseAutonomousPrefix,            config_parse_bool,                                        0,                             offsetof(Network, ipv6_accept_ra_use_autonomous_prefix)
+IPv6AcceptRA.UseOnLinkPrefix,                config_parse_bool,                                        0,                             offsetof(Network, ipv6_accept_ra_use_onlink_prefix)
+IPv6AcceptRA.UseDNS,                         config_parse_bool,                                        0,                             offsetof(Network, ipv6_accept_ra_use_dns)
+IPv6AcceptRA.UseDomains,                     config_parse_dhcp_use_domains,                            0,                             offsetof(Network, ipv6_accept_ra_use_domains)
+IPv6AcceptRA.RouteTable,                     config_parse_section_route_table,                         0,                             0
+IPv6AcceptRA.BlackList,                      config_parse_ndisc_black_listed_prefix,                   0,                             0
+DHCPServer.MaxLeaseTimeSec,                  config_parse_sec,                                         0,                             offsetof(Network, dhcp_server_max_lease_time_usec)
+DHCPServer.DefaultLeaseTimeSec,              config_parse_sec,                                         0,                             offsetof(Network, dhcp_server_default_lease_time_usec)
+DHCPServer.EmitDNS,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_server_emit_dns)
+DHCPServer.DNS,                              config_parse_dhcp_server_dns,                             0,                             0
+DHCPServer.EmitNTP,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_server_emit_ntp)
+DHCPServer.NTP,                              config_parse_dhcp_server_ntp,                             0,                             0
+DHCPServer.EmitSIP,                          config_parse_bool,                                        0,                             offsetof(Network, dhcp_server_emit_sip)
+DHCPServer.SIP,                              config_parse_dhcp_server_sip,                             0,                             0
+DHCPServer.EmitRouter,                       config_parse_bool,                                        0,                             offsetof(Network, dhcp_server_emit_router)
+DHCPServer.EmitTimezone,                     config_parse_bool,                                        0,                             offsetof(Network, dhcp_server_emit_timezone)
+DHCPServer.Timezone,                         config_parse_timezone,                                    0,                             offsetof(Network, dhcp_server_timezone)
+DHCPServer.PoolOffset,                       config_parse_uint32,                                      0,                             offsetof(Network, dhcp_server_pool_offset)
+DHCPServer.PoolSize,                         config_parse_uint32,                                      0,                             offsetof(Network, dhcp_server_pool_size)
+DHCPServer.SendOption,                       config_parse_dhcp_send_option,                            0,                             offsetof(Network, dhcp_server_send_options)
+Bridge.Cost,                                 config_parse_uint32,                                      0,                             offsetof(Network, cost)
+Bridge.UseBPDU,                              config_parse_tristate,                                    0,                             offsetof(Network, use_bpdu)
+Bridge.HairPin,                              config_parse_tristate,                                    0,                             offsetof(Network, hairpin)
+Bridge.FastLeave,                            config_parse_tristate,                                    0,                             offsetof(Network, fast_leave)
+Bridge.AllowPortToBeRoot,                    config_parse_tristate,                                    0,                             offsetof(Network, allow_port_to_be_root)
+Bridge.UnicastFlood,                         config_parse_tristate,                                    0,                             offsetof(Network, unicast_flood)
+Bridge.MulticastFlood,                       config_parse_tristate,                                    0,                             offsetof(Network, multicast_flood)
+Bridge.MulticastToUnicast,                   config_parse_tristate,                                    0,                             offsetof(Network, multicast_to_unicast)
+Bridge.NeighborSuppression,                  config_parse_tristate,                                    0,                             offsetof(Network, neighbor_suppression)
+Bridge.Learning,                             config_parse_tristate,                                    0,                             offsetof(Network, learning)
+Bridge.ProxyARP,                             config_parse_tristate,                                    0,                             offsetof(Network, bridge_proxy_arp)
+Bridge.ProxyARPWiFi,                         config_parse_tristate,                                    0,                             offsetof(Network, bridge_proxy_arp_wifi)
+Bridge.Priority,                             config_parse_bridge_port_priority,                        0,                             offsetof(Network, priority)
+Bridge.MulticastRouter,                      config_parse_multicast_router,                            0,                             offsetof(Network, multicast_router)
+BridgeFDB.MACAddress,                        config_parse_fdb_hwaddr,                                  0,                             0
+BridgeFDB.VLANId,                            config_parse_fdb_vlan_id,                                 0,                             0
+BridgeFDB.Destination,                       config_parse_fdb_destination,                             0,                             0
+BridgeFDB.VNI,                               config_parse_fdb_vxlan_vni,                               0,                             0
+BridgeFDB.AssociatedWith,                    config_parse_fdb_ntf_flags,                               0,                             0
+BridgeVLAN.PVID,                             config_parse_brvlan_pvid,                                 0,                             0
+BridgeVLAN.VLAN,                             config_parse_brvlan_vlan,                                 0,                             0
+BridgeVLAN.EgressUntagged,                   config_parse_brvlan_untagged,                             0,                             0
+Network.IPv6PrefixDelegation,                config_parse_router_prefix_delegation,                    0,                             0
+IPv6PrefixDelegation.RouterLifetimeSec,      config_parse_sec,                                         0,                             offsetof(Network, router_lifetime_usec)
+IPv6PrefixDelegation.Managed,                config_parse_bool,                                        0,                             offsetof(Network, router_managed)
+IPv6PrefixDelegation.OtherInformation,       config_parse_bool,                                        0,                             offsetof(Network, router_other_information)
+IPv6PrefixDelegation.RouterPreference,       config_parse_router_preference,                           0,                             0
+IPv6PrefixDelegation.EmitDNS,                config_parse_bool,                                        0,                             offsetof(Network, router_emit_dns)
+IPv6PrefixDelegation.DNS,                    config_parse_radv_dns,                                    0,                             0
+IPv6PrefixDelegation.EmitDomains,            config_parse_bool,                                        0,                             offsetof(Network, router_emit_domains)
+IPv6PrefixDelegation.Domains,                config_parse_radv_search_domains,                         0,                             0
+IPv6PrefixDelegation.DNSLifetimeSec,         config_parse_sec,                                         0,                             offsetof(Network, router_dns_lifetime_usec)
+IPv6Prefix.Prefix,                           config_parse_prefix,                                      0,                             0
+IPv6Prefix.OnLink,                           config_parse_prefix_flags,                                0,                             0
+IPv6Prefix.AddressAutoconfiguration,         config_parse_prefix_flags,                                0,                             0
+IPv6Prefix.ValidLifetimeSec,                 config_parse_prefix_lifetime,                             0,                             0
+IPv6Prefix.PreferredLifetimeSec,             config_parse_prefix_lifetime,                             0,                             0
+IPv6RoutePrefix.Route,                       config_parse_route_prefix,                                0,                             0
+IPv6RoutePrefix.LifetimeSec,                 config_parse_route_prefix_lifetime,                       0,                             0
+CAN.BitRate,                                 config_parse_si_uint64,                                   0,                             offsetof(Network, can_bitrate)
+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)
+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
+ControlledDelay.IntervalSec,                 config_parse_controlled_delay_usec,                       QDISC_KIND_CODEL,              0
+ControlledDelay.CEThresholdSec,              config_parse_controlled_delay_usec,                       QDISC_KIND_CODEL,              0
+ControlledDelay.ECN,                         config_parse_controlled_delay_bool,                       QDISC_KIND_CODEL,              0
+FairQueueTrafficPolicing.Parent,             config_parse_qdisc_parent,                                QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.PacketLimit,        config_parse_fair_queue_traffic_policing_u32,             QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.FlowLimit,          config_parse_fair_queue_traffic_policing_u32,             QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.Quantum,            config_parse_fair_queue_traffic_policing_size,            QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.InitialQuantum,     config_parse_fair_queue_traffic_policing_size,            QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.MaximumRate,        config_parse_fair_queue_traffic_policing_max_rate,        QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.Buckets,            config_parse_fair_queue_traffic_policing_u32,             QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.OrphanMask,         config_parse_fair_queue_traffic_policing_u32,             QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.Pacing,             config_parse_fair_queue_traffic_policing_bool,            QDISC_KIND_FQ,                 0
+FairQueueTrafficPolicing.CEThresholdSec,     config_parse_fair_queue_traffic_policing_usec,            QDISC_KIND_FQ,                 0
+FairQueueingControlledDelay.Parent,          config_parse_qdisc_parent,                                QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.PacketLimit,     config_parse_fair_queueing_controlled_delay_u32,          QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.MemoryLimit,     config_parse_fair_queueing_controlled_delay_size,         QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.Flows,           config_parse_fair_queueing_controlled_delay_u32,          QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.Quantum,         config_parse_fair_queueing_controlled_delay_size,         QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.TargetSec,       config_parse_fair_queueing_controlled_delay_usec,         QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.IntervalSec,     config_parse_fair_queueing_controlled_delay_usec,         QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.CEThresholdSec,  config_parse_fair_queueing_controlled_delay_usec,         QDISC_KIND_FQ_CODEL,           0
+FairQueueingControlledDelay.ECN,             config_parse_fair_queueing_controlled_delay_bool,         QDISC_KIND_FQ_CODEL,           0
+NetworkEmulator.Parent,                      config_parse_qdisc_parent,                                QDISC_KIND_NETEM,              0
+NetworkEmulator.DelaySec,                    config_parse_network_emulator_delay,                      QDISC_KIND_NETEM,              0
+NetworkEmulator.DelayJitterSec,              config_parse_network_emulator_delay,                      QDISC_KIND_NETEM,              0
+NetworkEmulator.LossRate,                    config_parse_network_emulator_rate,                       QDISC_KIND_NETEM,              0
+NetworkEmulator.DuplicateRate,               config_parse_network_emulator_rate,                       QDISC_KIND_NETEM,              0
+NetworkEmulator.PacketLimit,                 config_parse_network_emulator_packet_limit,               QDISC_KIND_NETEM,              0
+StochasticFairnessQueueing.Parent,           config_parse_qdisc_parent,                                QDISC_KIND_SFQ,                0
+StochasticFairnessQueueing.PerturbPeriodSec, config_parse_stochastic_fairness_queueing_perturb_period, QDISC_KIND_SFQ,                0
+TokenBufferFilter.Parent,                    config_parse_qdisc_parent,                                QDISC_KIND_TBF,                0
+TokenBufferFilter.Rate,                      config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.Burst,                     config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.LimitSize,                 config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.MTUBytes,                  config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.MPUBytes,                  config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.PeakRate,                  config_parse_token_buffer_filter_size,                    QDISC_KIND_TBF,                0
+TokenBufferFilter.LatencySec,                config_parse_token_buffer_filter_latency,                 QDISC_KIND_TBF,                0
 /* backwards compatibility: do not add new entries to this section */
-Network.IPv4LL,                         config_parse_ipv4ll,                             0,                             offsetof(Network, link_local)
-DHCP.ClientIdentifier,                  config_parse_dhcp_client_identifier,             0,                             offsetof(Network, dhcp_client_identifier)
-DHCP.UseDNS,                            config_parse_dhcp_use_dns,                       0,                             0
-DHCP.UseNTP,                            config_parse_dhcp_use_ntp,                       0,                             0
-DHCP.UseMTU,                            config_parse_bool,                               0,                             offsetof(Network, dhcp_use_mtu)
-DHCP.UseHostname,                       config_parse_bool,                               0,                             offsetof(Network, dhcp_use_hostname)
-DHCP.UseDomains,                        config_parse_dhcp_use_domains,                   0,                             offsetof(Network, dhcp_use_domains)
-DHCP.UseDomainName,                     config_parse_dhcp_use_domains,                   0,                             offsetof(Network, dhcp_use_domains)
-DHCP.UseRoutes,                         config_parse_bool,                               0,                             offsetof(Network, dhcp_use_routes)
-DHCP.Anonymize,                         config_parse_bool,                               0,                             offsetof(Network, dhcp_anonymize)
-DHCP.SendHostname,                      config_parse_bool,                               0,                             offsetof(Network, dhcp_send_hostname)
-DHCP.Hostname,                          config_parse_hostname,                           0,                             offsetof(Network, dhcp_hostname)
-DHCP.RequestBroadcast,                  config_parse_bool,                               0,                             offsetof(Network, dhcp_broadcast)
-DHCP.CriticalConnection,                config_parse_tristate,                           0,                             offsetof(Network, dhcp_critical)
-DHCP.VendorClassIdentifier,             config_parse_string,                             0,                             offsetof(Network, dhcp_vendor_class_identifier)
-DHCP.UserClass,                         config_parse_dhcp_user_class,                    0,                             offsetof(Network, dhcp_user_class)
-DHCP.DUIDType,                          config_parse_duid_type,                          0,                             offsetof(Network, duid)
-DHCP.DUIDRawData,                       config_parse_duid_rawdata,                       0,                             offsetof(Network, duid)
-DHCP.RouteMetric,                       config_parse_unsigned,                           0,                             offsetof(Network, dhcp_route_metric)
-DHCP.RouteTable,                        config_parse_section_route_table,                0,                             0
-DHCP.UseTimezone,                       config_parse_bool,                               0,                             offsetof(Network, dhcp_use_timezone)
-DHCP.IAID,                              config_parse_iaid,                               0,                             0
-DHCP.ListenPort,                        config_parse_uint16,                             0,                             offsetof(Network, dhcp_client_port)
-DHCP.RapidCommit,                       config_parse_bool,                               0,                             offsetof(Network, rapid_commit)
-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)
+Network.IPv4LL,                              config_parse_ipv4ll,                                      0,                             offsetof(Network, link_local)
+DHCP.ClientIdentifier,                       config_parse_dhcp_client_identifier,                      0,                             offsetof(Network, dhcp_client_identifier)
+DHCP.UseDNS,                                 config_parse_dhcp_use_dns,                                0,                             0
+DHCP.UseNTP,                                 config_parse_dhcp_use_ntp,                                0,                             0
+DHCP.UseMTU,                                 config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_mtu)
+DHCP.UseHostname,                            config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_hostname)
+DHCP.UseDomains,                             config_parse_dhcp_use_domains,                            0,                             offsetof(Network, dhcp_use_domains)
+DHCP.UseDomainName,                          config_parse_dhcp_use_domains,                            0,                             offsetof(Network, dhcp_use_domains)
+DHCP.UseRoutes,                              config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_routes)
+DHCP.Anonymize,                              config_parse_bool,                                        0,                             offsetof(Network, dhcp_anonymize)
+DHCP.SendHostname,                           config_parse_bool,                                        0,                             offsetof(Network, dhcp_send_hostname)
+DHCP.Hostname,                               config_parse_hostname,                                    0,                             offsetof(Network, dhcp_hostname)
+DHCP.RequestBroadcast,                       config_parse_bool,                                        0,                             offsetof(Network, dhcp_broadcast)
+DHCP.CriticalConnection,                     config_parse_tristate,                                    0,                             offsetof(Network, dhcp_critical)
+DHCP.VendorClassIdentifier,                  config_parse_string,                                      0,                             offsetof(Network, dhcp_vendor_class_identifier)
+DHCP.UserClass,                              config_parse_dhcp_user_class,                             0,                             offsetof(Network, dhcp_user_class)
+DHCP.DUIDType,                               config_parse_duid_type,                                   0,                             offsetof(Network, duid)
+DHCP.DUIDRawData,                            config_parse_duid_rawdata,                                0,                             offsetof(Network, duid)
+DHCP.RouteMetric,                            config_parse_unsigned,                                    0,                             offsetof(Network, dhcp_route_metric)
+DHCP.RouteTable,                             config_parse_section_route_table,                         0,                             0
+DHCP.UseTimezone,                            config_parse_bool,                                        0,                             offsetof(Network, dhcp_use_timezone)
+DHCP.IAID,                                   config_parse_iaid,                                        0,                             0
+DHCP.ListenPort,                             config_parse_uint16,                                      0,                             offsetof(Network, dhcp_client_port)
+DHCP.RapidCommit,                            config_parse_bool,                                        0,                             offsetof(Network, rapid_commit)
+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.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
+TrafficControlQueueingDiscipline.NetworkEmulatorDuplicateRate,  config_parse_network_emulator_rate,    0,                             0
+TrafficControlQueueingDiscipline.NetworkEmulatorPacketLimit,    config_parse_network_emulator_packet_limit, 0,                        0
index 4fd48be52a023720088fa2312a39cb2e7731ca00..8a8f42089718d189e63be943505098e96f94ad11 100644 (file)
@@ -481,7 +481,13 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                               "IPv6Prefix\0"
                               "IPv6RoutePrefix\0"
                               "TrafficControlQueueingDiscipline\0"
-                              "CAN\0",
+                              "CAN\0"
+                              "ControlledDelay\0"
+                              "FairQueueTrafficPolicing\0"
+                              "FairQueueingControlledDelay\0"
+                              "NetworkEmulator\0"
+                              "StochasticFairnessQueueing\0"
+                              "TokenBufferFilter\0",
                               config_item_perf_lookup, network_network_gperf_lookup,
                               CONFIG_PARSE_WARN, network);
         if (r < 0)
index 24b5720c41c4876955b861be9d80a4f2c290c472..65c724da751ee05ce81ff2982b8099464271eb80 100644 (file)
@@ -74,7 +74,7 @@ static int controlled_delay_fill_message(Link *link, QDisc *qdisc, sd_netlink_me
         return 0;
 }
 
-int config_parse_tc_controlled_delay_u32(
+int config_parse_controlled_delay_u32(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -125,7 +125,7 @@ int config_parse_tc_controlled_delay_u32(
         return 0;
 }
 
-int config_parse_tc_controlled_delay_usec(
+int config_parse_controlled_delay_usec(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -157,17 +157,17 @@ int config_parse_tc_controlled_delay_usec(
 
         cd = CODEL(qdisc);
 
-        if (streq(lvalue, "ControlledDelayTargetSec"))
+        if (streq(lvalue, "TargetSec"))
                 p = &cd->target_usec;
-        else if (streq(lvalue, "ControlledDelayIntervalSec"))
+        else if (streq(lvalue, "IntervalSec"))
                 p = &cd->interval_usec;
-        else if (streq(lvalue, "ControlledDelayCEThresholdSec"))
+        else if (streq(lvalue, "CEThresholdSec"))
                 p = &cd->ce_threshold_usec;
         else
                 assert_not_reached("Invalid lvalue");
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "ControlledDelayCEThresholdSec"))
+                if (streq(lvalue, "CEThresholdSec"))
                         *p = USEC_INFINITY;
                 else
                         *p = 0;
@@ -189,7 +189,7 @@ int config_parse_tc_controlled_delay_usec(
         return 0;
 }
 
-int config_parse_tc_controlled_delay_bool(
+int config_parse_controlled_delay_bool(
                 const char *unit,
                 const char *filename,
                 unsigned line,
index 075423dec14f7ca5b8a2ed3cea245c901bfcbfa6..4023a7dee578b3b398e1b7521b5cffd1b0085146 100644 (file)
@@ -19,6 +19,6 @@ typedef struct ControlledDelay {
 DEFINE_QDISC_CAST(CODEL, ControlledDelay);
 extern const QDiscVTable codel_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_controlled_delay_u32);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_controlled_delay_usec);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_controlled_delay_bool);
+CONFIG_PARSER_PROTOTYPE(config_parse_controlled_delay_u32);
+CONFIG_PARSER_PROTOTYPE(config_parse_controlled_delay_usec);
+CONFIG_PARSER_PROTOTYPE(config_parse_controlled_delay_bool);
index a64b77651cda733a116174757f557a214bab9212..6c7932c70f738e5a441456545157a47e210a38ab 100644 (file)
@@ -10,8 +10,8 @@
 #include "qdisc.h"
 #include "string-util.h"
 
-static int fair_queuing_controlled_delay_init(QDisc *qdisc) {
-        FairQueuingControlledDelay *fqcd;
+static int fair_queueing_controlled_delay_init(QDisc *qdisc) {
+        FairQueueingControlledDelay *fqcd;
 
         assert(qdisc);
 
@@ -24,8 +24,8 @@ static int fair_queuing_controlled_delay_init(QDisc *qdisc) {
         return 0;
 }
 
-static int fair_queuing_controlled_delay_fill_message(Link *link, QDisc *qdisc, sd_netlink_message *req) {
-        FairQueuingControlledDelay *fqcd;
+static int fair_queueing_controlled_delay_fill_message(Link *link, QDisc *qdisc, sd_netlink_message *req) {
+        FairQueueingControlledDelay *fqcd;
         int r;
 
         assert(link);
@@ -93,7 +93,7 @@ static int fair_queuing_controlled_delay_fill_message(Link *link, QDisc *qdisc,
         return 0;
 }
 
-int config_parse_tc_fair_queuing_controlled_delay_u32(
+int config_parse_fair_queueing_controlled_delay_u32(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -106,7 +106,7 @@ int config_parse_tc_fair_queuing_controlled_delay_u32(
                 void *userdata) {
 
         _cleanup_(qdisc_free_or_set_invalidp) QDisc *qdisc = NULL;
-        FairQueuingControlledDelay *fqcd;
+        FairQueueingControlledDelay *fqcd;
         Network *network = data;
         uint32_t *p;
         int r;
@@ -125,9 +125,9 @@ int config_parse_tc_fair_queuing_controlled_delay_u32(
 
         fqcd = FQ_CODEL(qdisc);
 
-        if (streq(lvalue, "FairQueuingControlledDelayPacketLimit"))
+        if (streq(lvalue, "PacketLimit"))
                 p = &fqcd->packet_limit;
-        else if (streq(lvalue, "FairQueuingControlledDelayFlows"))
+        else if (streq(lvalue, "Flows"))
                 p = &fqcd->flows;
         else
                 assert_not_reached("Invalid lvalue.");
@@ -152,7 +152,7 @@ int config_parse_tc_fair_queuing_controlled_delay_u32(
         return 0;
 }
 
-int config_parse_tc_fair_queuing_controlled_delay_usec(
+int config_parse_fair_queueing_controlled_delay_usec(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -165,7 +165,7 @@ int config_parse_tc_fair_queuing_controlled_delay_usec(
                 void *userdata) {
 
         _cleanup_(qdisc_free_or_set_invalidp) QDisc *qdisc = NULL;
-        FairQueuingControlledDelay *fqcd;
+        FairQueueingControlledDelay *fqcd;
         Network *network = data;
         usec_t *p;
         int r;
@@ -184,17 +184,17 @@ int config_parse_tc_fair_queuing_controlled_delay_usec(
 
         fqcd = FQ_CODEL(qdisc);
 
-        if (streq(lvalue, "FairQueuingControlledDelayTargetSec"))
+        if (streq(lvalue, "TargetSec"))
                 p = &fqcd->target_usec;
-        else if (streq(lvalue, "FairQueuingControlledDelayIntervalSec"))
+        else if (streq(lvalue, "IntervalSec"))
                 p = &fqcd->interval_usec;
-        else if (streq(lvalue, "FairQueuingControlledDelayCEThresholdSec"))
+        else if (streq(lvalue, "CEThresholdSec"))
                 p = &fqcd->ce_threshold_usec;
         else
                 assert_not_reached("Invalid lvalue.");
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "FairQueuingControlledDelayCEThresholdSec"))
+                if (streq(lvalue, "CEThresholdSec"))
                         *p = USEC_INFINITY;
                 else
                         *p = 0;
@@ -216,7 +216,7 @@ int config_parse_tc_fair_queuing_controlled_delay_usec(
         return 0;
 }
 
-int config_parse_tc_fair_queuing_controlled_delay_bool(
+int config_parse_fair_queueing_controlled_delay_bool(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -229,7 +229,7 @@ int config_parse_tc_fair_queuing_controlled_delay_bool(
                 void *userdata) {
 
         _cleanup_(qdisc_free_or_set_invalidp) QDisc *qdisc = NULL;
-        FairQueuingControlledDelay *fqcd;
+        FairQueueingControlledDelay *fqcd;
         Network *network = data;
         int r;
 
@@ -268,7 +268,7 @@ int config_parse_tc_fair_queuing_controlled_delay_bool(
         return 0;
 }
 
-int config_parse_tc_fair_queuing_controlled_delay_size(
+int config_parse_fair_queueing_controlled_delay_size(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -281,7 +281,7 @@ int config_parse_tc_fair_queuing_controlled_delay_size(
                 void *userdata) {
 
         _cleanup_(qdisc_free_or_set_invalidp) QDisc *qdisc = NULL;
-        FairQueuingControlledDelay *fqcd;
+        FairQueueingControlledDelay *fqcd;
         Network *network = data;
         uint64_t sz;
         uint32_t *p;
@@ -301,15 +301,15 @@ int config_parse_tc_fair_queuing_controlled_delay_size(
 
         fqcd = FQ_CODEL(qdisc);
 
-        if (streq(lvalue, "FairQueuingControlledDelayMemoryLimit"))
+        if (streq(lvalue, "MemoryLimit"))
                 p = &fqcd->memory_limit;
-        else if (streq(lvalue, "FairQueuingControlledDelayQuantum"))
+        else if (streq(lvalue, "Quantum"))
                 p = &fqcd->quantum;
         else
                 assert_not_reached("Invalid lvalue.");
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "FairQueuingControlledMemoryLimit"))
+                if (streq(lvalue, "MemoryLimit"))
                         *p = UINT32_MAX;
                 else
                         *p = 0;
@@ -339,8 +339,8 @@ int config_parse_tc_fair_queuing_controlled_delay_size(
 }
 
 const QDiscVTable fq_codel_vtable = {
-        .object_size = sizeof(FairQueuingControlledDelay),
+        .object_size = sizeof(FairQueueingControlledDelay),
         .tca_kind = "fq_codel",
-        .init = fair_queuing_controlled_delay_init,
-        .fill_message = fair_queuing_controlled_delay_fill_message,
+        .init = fair_queueing_controlled_delay_init,
+        .fill_message = fair_queueing_controlled_delay_fill_message,
 };
index aa74216fa40d99d312c4f8dd6e01ff3c23d8594f..1a80963df6b27ff30423c659498b0fc9788f2c9f 100644 (file)
@@ -6,7 +6,7 @@
 #include "qdisc.h"
 #include "time-util.h"
 
-typedef struct FairQueuingControlledDelay {
+typedef struct FairQueueingControlledDelay {
         QDisc meta;
 
         uint32_t packet_limit;
@@ -17,12 +17,12 @@ typedef struct FairQueuingControlledDelay {
         usec_t interval_usec;
         usec_t ce_threshold_usec;
         int ecn;
-} FairQueuingControlledDelay;
+} FairQueueingControlledDelay;
 
-DEFINE_QDISC_CAST(FQ_CODEL, FairQueuingControlledDelay);
+DEFINE_QDISC_CAST(FQ_CODEL, FairQueueingControlledDelay);
 extern const QDiscVTable fq_codel_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queuing_controlled_delay_u32);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queuing_controlled_delay_usec);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queuing_controlled_delay_bool);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queuing_controlled_delay_size);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queueing_controlled_delay_u32);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queueing_controlled_delay_usec);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queueing_controlled_delay_bool);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queueing_controlled_delay_size);
index 58a008f4c2e0fdf0d3b1909b070284104ab24a13..30ec71cbad8445c1af508ed6ea195da5978dbd1e 100644 (file)
@@ -102,7 +102,7 @@ static int fair_queue_traffic_policing_fill_message(Link *link, QDisc *qdisc, sd
         return 0;
 }
 
-int config_parse_tc_fair_queue_traffic_policing_u32(
+int config_parse_fair_queue_traffic_policing_u32(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -134,13 +134,13 @@ int config_parse_tc_fair_queue_traffic_policing_u32(
 
         fq = FQ(qdisc);
 
-        if (streq(lvalue, "FairQueueTrafficPolicingPacketLimit"))
+        if (streq(lvalue, "PacketLimit"))
                 p = &fq->packet_limit;
-        else if (streq(lvalue, "FairQueueTrafficPolicingFlowLimit"))
+        else if (streq(lvalue, "FlowLimit"))
                 p = &fq->flow_limit;
-        else if (streq(lvalue, "FairQueueTrafficPolicingBuckets"))
+        else if (streq(lvalue, "Buckets"))
                 p = &fq->buckets;
-        else if (streq(lvalue, "FairQueueTrafficPolicingOrphanMask"))
+        else if (streq(lvalue, "OrphanMask"))
                 p = &fq->orphan_mask;
         else
                 assert_not_reached("Invalid lvalue");
@@ -165,7 +165,7 @@ int config_parse_tc_fair_queue_traffic_policing_u32(
         return 0;
 }
 
-int config_parse_tc_fair_queue_traffic_policing_size(
+int config_parse_fair_queue_traffic_policing_size(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -198,9 +198,9 @@ int config_parse_tc_fair_queue_traffic_policing_size(
 
         fq = FQ(qdisc);
 
-        if (streq(lvalue, "FairQueueTrafficPolicingQuantum"))
+        if (streq(lvalue, "Quantum"))
                 p = &fq->quantum;
-        else if (streq(lvalue, "FairQueueTrafficPolicingInitialQuantum"))
+        else if (streq(lvalue, "InitialQuantum"))
                 p = &fq->initial_quantum;
         else
                 assert_not_reached("Invalid lvalue");
@@ -232,7 +232,7 @@ int config_parse_tc_fair_queue_traffic_policing_size(
         return 0;
 }
 
-int config_parse_tc_fair_queue_traffic_policing_bool(
+int config_parse_fair_queue_traffic_policing_bool(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -284,7 +284,7 @@ int config_parse_tc_fair_queue_traffic_policing_bool(
         return 0;
 }
 
-int config_parse_tc_fair_queue_traffic_policing_usec(
+int config_parse_fair_queue_traffic_policing_usec(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -343,7 +343,7 @@ int config_parse_tc_fair_queue_traffic_policing_usec(
         return 0;
 }
 
-int config_parse_tc_fair_queue_traffic_policing_max_rate(
+int config_parse_fair_queue_traffic_policing_max_rate(
                 const char *unit,
                 const char *filename,
                 unsigned line,
index 5a171b2acf4371e6d20b6e8ff1347002f4f3a37b..9bce285605318f39d71ea1be6203363423a50899 100644 (file)
@@ -22,8 +22,8 @@ typedef struct FairQueueTrafficPolicing {
 DEFINE_QDISC_CAST(FQ, FairQueueTrafficPolicing);
 extern const QDiscVTable fq_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queue_traffic_policing_u32);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queue_traffic_policing_size);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queue_traffic_policing_bool);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queue_traffic_policing_usec);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_fair_queue_traffic_policing_max_rate);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queue_traffic_policing_u32);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queue_traffic_policing_size);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queue_traffic_policing_bool);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queue_traffic_policing_usec);
+CONFIG_PARSER_PROTOTYPE(config_parse_fair_queue_traffic_policing_max_rate);
index f74be288e1b2020ab4974bef3f5cd760a1a1ab7c..7d0add9e303f813f46ee3ba70b84c9f7f495a0b1 100644 (file)
@@ -10,7 +10,7 @@
 #include "networkd-manager.h"
 #include "parse-util.h"
 #include "qdisc.h"
-#include "string-util.h"
+#include "strv.h"
 #include "tc-util.h"
 
 static int network_emulator_fill_message(Link *link, QDisc *qdisc, sd_netlink_message *req) {
@@ -54,7 +54,7 @@ static int network_emulator_fill_message(Link *link, QDisc *qdisc, sd_netlink_me
         return 0;
 }
 
-int config_parse_tc_network_emulator_delay(
+int config_parse_network_emulator_delay(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -87,9 +87,9 @@ int config_parse_tc_network_emulator_delay(
         ne = NETEM(qdisc);
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "NetworkEmulatorDelaySec"))
+                if (STR_IN_SET(lvalue, "DelaySec", "NetworkEmulatorDelaySec"))
                         ne->delay = USEC_INFINITY;
-                else if (streq(lvalue, "NetworkEmulatorDelayJitterSec"))
+                else if (STR_IN_SET(lvalue, "DelayJitterSec", "NetworkEmulatorDelayJitterSec"))
                         ne->jitter = USEC_INFINITY;
 
                 qdisc = NULL;
@@ -104,9 +104,9 @@ int config_parse_tc_network_emulator_delay(
                 return 0;
         }
 
-        if (streq(lvalue, "NetworkEmulatorDelaySec"))
+        if (STR_IN_SET(lvalue, "DelaySec", "NetworkEmulatorDelaySec"))
                 ne->delay = u;
-        else if (streq(lvalue, "NetworkEmulatorDelayJitterSec"))
+        else if (STR_IN_SET(lvalue, "DelayJitterSec", "NetworkEmulatorDelayJitterSec"))
                 ne->jitter = u;
 
         qdisc = NULL;
@@ -114,7 +114,7 @@ int config_parse_tc_network_emulator_delay(
         return 0;
 }
 
-int config_parse_tc_network_emulator_rate(
+int config_parse_network_emulator_rate(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -147,9 +147,9 @@ int config_parse_tc_network_emulator_rate(
         ne = NETEM(qdisc);
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "NetworkEmulatorLossRate"))
+                if (STR_IN_SET(lvalue, "LossRate", "NetworkEmulatorLossRate"))
                         ne->loss = 0;
-                else if (streq(lvalue, "NetworkEmulatorDuplicateRate"))
+                else if (STR_IN_SET(lvalue, "DuplicateRate", "NetworkEmulatorDuplicateRate"))
                         ne->duplicate = 0;
 
                 qdisc = NULL;
@@ -164,16 +164,16 @@ int config_parse_tc_network_emulator_rate(
                 return 0;
         }
 
-        if (streq(lvalue, "NetworkEmulatorLossRate"))
+        if (STR_IN_SET(lvalue, "LossRate", "NetworkEmulatorLossRate"))
                 ne->loss = rate;
-        else if (streq(lvalue, "NetworkEmulatorDuplicateRate"))
+        else if (STR_IN_SET(lvalue, "DuplicateRate", "NetworkEmulatorDuplicateRate"))
                 ne->duplicate = rate;
 
         qdisc = NULL;
         return 0;
 }
 
-int config_parse_tc_network_emulator_packet_limit(
+int config_parse_network_emulator_packet_limit(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -214,8 +214,8 @@ int config_parse_tc_network_emulator_packet_limit(
         r = safe_atou(rvalue, &ne->limit);
         if (r < 0) {
                 log_syntax(unit, LOG_ERR, filename, line, r,
-                           "Failed to parse 'NetworkEmulatorPacketLimit=', ignoring assignment: %s",
-                           rvalue);
+                           "Failed to parse '%s=', ignoring assignment: %s",
+                           lvalue, rvalue);
                 return 0;
         }
 
index 7bf27e34fdba070d0fbd8c671b9c1a8b96c7310f..6319c7252174b3724a172bc93ee149ab532c023e 100644 (file)
@@ -20,6 +20,6 @@ typedef struct NetworkEmulator {
 DEFINE_QDISC_CAST(NETEM, NetworkEmulator);
 extern const QDiscVTable netem_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_network_emulator_delay);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_network_emulator_rate);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_network_emulator_packet_limit);
+CONFIG_PARSER_PROTOTYPE(config_parse_network_emulator_delay);
+CONFIG_PARSER_PROTOTYPE(config_parse_network_emulator_rate);
+CONFIG_PARSER_PROTOTYPE(config_parse_network_emulator_packet_limit);
index 38086a897554a167fc42208b3ba7cef10b6f3753..ee0637bf32c2e493b662ccbff087e7be5d426c0b 100644 (file)
@@ -234,7 +234,7 @@ int qdisc_section_verify(QDisc *qdisc, bool *has_root, bool *has_clsact) {
         return 0;
 }
 
-int config_parse_tc_qdiscs_parent(
+int config_parse_qdisc_parent(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -254,8 +254,9 @@ int config_parse_tc_qdiscs_parent(
         assert(lvalue);
         assert(rvalue);
         assert(data);
+        assert(ltype >= 0 && ltype < _QDISC_KIND_MAX);
 
-        r = qdisc_new_static(_QDISC_KIND_INVALID, network, filename, section_line, &qdisc);
+        r = qdisc_new_static(ltype, network, filename, section_line, &qdisc);
         if (r < 0)
                 return r;
 
index 506c737935b771ea0a791374606c4d1ee54512ec..bae4d1ab3f36224c0d4c102d38a1e9757759c5b6 100644 (file)
@@ -63,7 +63,7 @@ int qdisc_section_verify(QDisc *qdisc, bool *has_root, bool *has_clsact);
 
 DEFINE_NETWORK_SECTION_FUNCTIONS(QDisc, qdisc_free);
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_qdiscs_parent);
+CONFIG_PARSER_PROTOTYPE(config_parse_qdisc_parent);
 
 #include "codel.h"
 #include "fq-codel.h"
index fc0c9bfc27666ca56f8a3178cb2cc1bf3fe2082f..ee66409b94abc2edab5c8ef74a1aeaf471e8338d 100644 (file)
@@ -31,7 +31,7 @@ static int stochastic_fairness_queueing_fill_message(Link *link, QDisc *qdisc, s
         return 0;
 }
 
-int config_parse_tc_stochastic_fairness_queueing_perturb_period(
+int config_parse_stochastic_fairness_queueing_perturb_period(
                 const char *unit,
                 const char *filename,
                 unsigned line,
index d29bcc2e93c552a79249778f4cd0572e63c682ee..19c8decf131ae4dcb25334e6df06cd143752460b 100644 (file)
@@ -15,4 +15,4 @@ typedef struct StochasticFairnessQueueing {
 DEFINE_QDISC_CAST(SFQ, StochasticFairnessQueueing);
 extern const QDiscVTable sfq_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_stochastic_fairness_queueing_perturb_period);
+CONFIG_PARSER_PROTOTYPE(config_parse_stochastic_fairness_queueing_perturb_period);
index 7dfc5651117e52b5ac93b09f274091683261a3b9..3b068b4ab453a677281fa54f6df89248965b5622 100644 (file)
@@ -110,7 +110,7 @@ static int token_buffer_filter_fill_message(Link *link, QDisc *qdisc, sd_netlink
         return 0;
 }
 
-int config_parse_tc_token_buffer_filter_size(
+int config_parse_token_buffer_filter_size(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -143,17 +143,17 @@ int config_parse_tc_token_buffer_filter_size(
         tbf = TBF(qdisc);
 
         if (isempty(rvalue)) {
-                if (streq(lvalue, "TokenBufferFilterRate"))
+                if (streq(lvalue, "Rate"))
                         tbf->rate = 0;
-                else if (streq(lvalue, "TokenBufferFilterBurst"))
+                else if (streq(lvalue, "Burst"))
                         tbf->burst = 0;
-                else if (streq(lvalue, "TokenBufferFilterLimitSize"))
+                else if (streq(lvalue, "LimitSize"))
                         tbf->limit = 0;
-                else if (streq(lvalue, "TokenBufferFilterMTUBytes"))
+                else if (streq(lvalue, "MTUBytes"))
                         tbf->mtu = 0;
-                else if (streq(lvalue, "TokenBufferFilterMPUBytes"))
+                else if (streq(lvalue, "MPUBytes"))
                         tbf->mpu = 0;
-                else if (streq(lvalue, "TokenBufferFilterPeakRate"))
+                else if (streq(lvalue, "PeakRate"))
                         tbf->peak_rate = 0;
 
                 qdisc = NULL;
@@ -168,17 +168,17 @@ int config_parse_tc_token_buffer_filter_size(
                 return 0;
         }
 
-        if (streq(lvalue, "TokenBufferFilterRate"))
+        if (streq(lvalue, "Rate"))
                 tbf->rate = k / 8;
-        else if (streq(lvalue, "TokenBufferFilterBurst"))
+        else if (streq(lvalue, "Burst"))
                 tbf->burst = k;
-        else if (streq(lvalue, "TokenBufferFilterLimitSize"))
+        else if (streq(lvalue, "LimitSize"))
                 tbf->limit = k;
-        else if (streq(lvalue, "TokenBufferFilterMPUBytes"))
+        else if (streq(lvalue, "MPUBytes"))
                 tbf->mpu = k;
-        else if (streq(lvalue, "TokenBufferFilterMTUBytes"))
+        else if (streq(lvalue, "MTUBytes"))
                 tbf->mtu = k;
-        else if (streq(lvalue, "TokenBufferFilterPeakRate"))
+        else if (streq(lvalue, "PeakRate"))
                 tbf->peak_rate = k / 8;
 
         qdisc = NULL;
@@ -186,7 +186,7 @@ int config_parse_tc_token_buffer_filter_size(
         return 0;
 }
 
-int config_parse_tc_token_buffer_filter_latency(
+int config_parse_token_buffer_filter_latency(
                 const char *unit,
                 const char *filename,
                 unsigned line,
@@ -245,32 +245,32 @@ static int token_buffer_filter_verify(QDisc *qdisc) {
 
         if (tbf->limit > 0 && tbf->latency > 0)
                 return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
-                                         "%s: Specifying both TokenBufferFilterLimitSize= and TokenBufferFilterLatencySec= is not allowed. "
-                                         "Ignoring [TrafficControlQueueingDiscipline] section from line %u.",
+                                         "%s: Specifying both LimitSize= and LatencySec= is not allowed. "
+                                         "Ignoring [TokenBufferFilter] section from line %u.",
                                          qdisc->section->filename, qdisc->section->line);
 
         if (tbf->limit == 0 && tbf->latency == 0)
                 return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
-                                         "%s: Either TokenBufferFilterLimitSize= or TokenBufferFilterLatencySec= is required. "
-                                         "Ignoring [TrafficControlQueueingDiscipline] section from line %u.",
+                                         "%s: Either LimitSize= or LatencySec= is required. "
+                                         "Ignoring [TokenBufferFilter] section from line %u.",
                                          qdisc->section->filename, qdisc->section->line);
 
         if (tbf->rate == 0)
                 return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
-                                         "%s: TokenBufferFilterRate= is mandatory. "
-                                         "Ignoring [TrafficControlQueueingDiscipline] section from line %u.",
+                                         "%s: Rate= is mandatory. "
+                                         "Ignoring [TokenBufferFilter] section from line %u.",
                                          qdisc->section->filename, qdisc->section->line);
 
         if (tbf->burst == 0)
                 return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
-                                         "%s: TokenBufferFilterBurst= is mandatory. "
-                                         "Ignoring [TrafficControlQueueingDiscipline] section from line %u.",
+                                         "%s: Burst= is mandatory. "
+                                         "Ignoring [TokenBufferFilter] section from line %u.",
                                          qdisc->section->filename, qdisc->section->line);
 
         if (tbf->peak_rate > 0 && tbf->mtu == 0)
                 return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
-                                         "%s: TokenBufferFilterMTUBytes= is mandatory when TokenBufferFilterPeakRate= is specified. "
-                                         "Ignoring [TrafficControlQueueingDiscipline] section from line %u.",
+                                         "%s: MTUBytes= is mandatory when PeakRate= is specified. "
+                                         "Ignoring [TokenBufferFilter] section from line %u.",
                                          qdisc->section->filename, qdisc->section->line);
 
         return 0;
index 317dc0310722acbb0932656fd98a67c51fe943a6..5695dbc07b86fcd6c399fc4f865ad8f5c7adbb97 100644 (file)
@@ -21,5 +21,5 @@ typedef struct TokenBufferFilter {
 DEFINE_QDISC_CAST(TBF, TokenBufferFilter);
 extern const QDiscVTable tbf_vtable;
 
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_token_buffer_filter_latency);
-CONFIG_PARSER_PROTOTYPE(config_parse_tc_token_buffer_filter_size);
+CONFIG_PARSER_PROTOTYPE(config_parse_token_buffer_filter_latency);
+CONFIG_PARSER_PROTOTYPE(config_parse_token_buffer_filter_size);
index 7262ae1ee2ca41c5a0be42148650d064748394bb..70d5245749f8d70047a81ad5a49f4ca3ac0014c5 100644 (file)
@@ -270,6 +270,53 @@ SendOption=
 [NextHop]
 Id=
 Gateway=
+[NetworkEmulator]
+Parent=
+DelaySec=
+DelayJitterSec=
+LossRate=
+DuplicateRate=
+PacketLimit=
+[TokenBufferFilter]
+Parent=
+Rate=
+Burst=
+LimitSize=
+MTUBytes=
+MPUBytes=
+PeakRate=
+LatencySec=
+[StochasticFairnessQueueing]
+Parent=
+PerturbPeriodSec=
+[FairQueueingControlledDelay]
+Parent=
+PacketLimit=
+MemoryLimit=
+Flows=
+Quantum=
+TargetSec=
+IntervalSec=
+CEThresholdSec=
+ECN=
+[FairQueueTrafficPolicing]
+Parent=
+PacketLimit=
+FlowLimit=
+Quantum=
+InitialQuantum=
+MaximumRate=
+Buckets=
+OrphanMask=
+Pacing=
+CEThresholdSec=
+[ControlledDelay]
+Parent=
+PacketLimit=
+TargetSec=
+IntervalSec=
+CEThresholdSec=
+ECN=
 [TrafficControlQueueingDiscipline]
 Parent=
 NetworkEmulatorDelaySec=
@@ -277,33 +324,3 @@ NetworkEmulatorDelayJitterSec=
 NetworkEmulatorLossRate=
 NetworkEmulatorDuplicateRate=
 NetworkEmulatorPacketLimit=
-TokenBufferFilterRate=
-TokenBufferFilterBurst=
-TokenBufferFilterLimitSize=
-TokenBufferFilterMTUBytes=
-TokenBufferFilterMPUBytes=
-TokenBufferFilterPeakRate=
-TokenBufferFilterLatencySec=
-StochasticFairnessQueueingPerturbPeriodSec=
-FairQueuingControlledDelayPacketLimit=
-FairQueuingControlledDelayMemoryLimit=
-FairQueuingControlledDelayFlows=
-FairQueuingControlledDelayQuantum=
-FairQueuingControlledDelayTargetSec=
-FairQueuingControlledDelayIntervalSec=
-FairQueuingControlledDelayCEThresholdSec=
-FairQueuingControlledDelayECN=
-FairQueueTrafficPolicingPacketLimit=
-FairQueueTrafficPolicingFlowLimit=
-FairQueueTrafficPolicingQuantum=
-FairQueueTrafficPolicingInitialQuantum=
-FairQueueTrafficPolicingMaximumRate=
-FairQueueTrafficPolicingBuckets=
-FairQueueTrafficPolicingOrphanMask=
-FairQueueTrafficPolicingPacing=
-FairQueueTrafficPolicingCEThresholdSec=
-ControlledDelayPacketLimit=
-ControlledDelayTargetSec=
-ControlledDelayIntervalSec=
-ControlledDelayCEThresholdSec=
-ControlledDelayECN=
index 20bcca2e506a4c5706ac870cb3451387dbfdccfc..f682b426e7858bdd2e883bc4b531ae4db732d12b 100644 (file)
@@ -5,22 +5,22 @@ Name=dummy98
 IPv6AcceptRA=no
 Address=10.1.2.3/16
 
-[TrafficControlQueueingDiscipline]
+[FairQueueTrafficPolicing]
 Parent=root
-FairQueueTrafficPolicingPacketLimit=1000
-FairQueueTrafficPolicingFlowLimit=200
-FairQueueTrafficPolicingQuantum=1500
-FairQueueTrafficPolicingInitialQuantum=13000
-FairQueueTrafficPolicingMaximumRate=1M
-FairQueueTrafficPolicingBuckets=512
-FairQueueTrafficPolicingOrphanMask=511
-FairQueueTrafficPolicingPacing=yes
-FairQueueTrafficPolicingCEThresholdSec=100ms
+PacketLimit=1000
+FlowLimit=200
+Quantum=1500
+InitialQuantum=13000
+MaximumRate=1M
+Buckets=512
+OrphanMask=511
+Pacing=yes
+CEThresholdSec=100ms
 
-[TrafficControlQueueingDiscipline]
+[ControlledDelay]
 Parent=clsact
-ControlledDelayPacketLimit=2000
-ControlledDelayTargetSec=10ms
-ControlledDelayIntervalSec=50ms
-ControlledDelayECN=yes
-ControlledDelayCEThresholdSec=100ms
+PacketLimit=2000
+TargetSec=10ms
+IntervalSec=50ms
+ECN=yes
+CEThresholdSec=100ms
index 0e2ad741762bbb5a9570ada92d22333426a62c24..f6e1f2b9588590396288455a07024dbc96f49add 100644 (file)
@@ -5,20 +5,20 @@ Name=dummy98
 IPv6AcceptRA=no
 Address=10.1.2.3/16
 
-[TrafficControlQueueingDiscipline]
+[NetworkEmulator]
 Parent=root
-NetworkEmulatorDelaySec=50ms
-NetworkEmulatorDelayJitterSec=10ms
-NetworkEmulatorLossRate=20%
-NetworkEmulatorPacketLimit=100
+DelaySec=50ms
+DelayJitterSec=10ms
+LossRate=20%
+PacketLimit=100
 
-[TrafficControlQueueingDiscipline]
+[FairQueueingControlledDelay]
 Parent=ingress
-FairQueuingControlledDelayPacketLimit=20480
-FairQueuingControlledDelayMemoryLimit=64M
-FairQueuingControlledDelayFlows=2048
-FairQueuingControlledDelayTargetSec=10ms
-FairQueuingControlledDelayIntervalSec=200ms
-FairQueuingControlledDelayQuantum=1400
-FairQueuingControlledDelayECN=yes
-FairQueuingControlledDelayCEThresholdSec=100ms
+PacketLimit=20480
+MemoryLimit=64M
+Flows=2048
+TargetSec=10ms
+IntervalSec=200ms
+Quantum=1400
+ECN=yes
+CEThresholdSec=100ms
index 781add219f4f1ed191e0a193693866c6fe8e0dcc..680dd6b46dee3d043617f6ce95dcf84c8446fda3 100644 (file)
@@ -5,14 +5,14 @@ Name=test1
 IPv6AcceptRA=no
 Address=10.1.2.4/16
 
-[TrafficControlQueueingDiscipline]
+[TokenBufferFilter]
 Parent=root
-TokenBufferFilterRate=1G
-TokenBufferFilterBurst=5K
-TokenBufferFilterLatencySec=70msec
-TokenBufferFilterPeakRate=100G
-TokenBufferFilterMTUBytes=1M
+Rate=1G
+Burst=5K
+LatencySec=70msec
+PeakRate=100G
+MTUBytes=1M
 
-[TrafficControlQueueingDiscipline]
+[StochasticFairnessQueueing]
 Parent=clsact
-StochasticFairnessQueueingPerturbPeriodSec=5sec
+PerturbPeriodSec=5sec