#16 update to v256.6
Merged 2 months ago by daandemeyer. Opened 2 months ago by teknoraver.
rpms/ teknoraver/systemd c10s-sig-hyperscale  into  c10s-sig-hyperscale

file removed
-38
@@ -1,38 +0,0 @@ 

- From 1310492f7a58db4315390db174da65aef699aa91 Mon Sep 17 00:00:00 2001

- From: Daan De Meyer <daan.j.demeyer@gmail.com>

- Date: Mon, 29 Jul 2024 15:41:51 +0200

- Subject: [PATCH] kernel-install: Try some more initrd variants in

-  90-loaderentry.install

- 

- On CentOS/Fedora, dracut is configured to write the initrd to

- /boot/initramfs-$KERNEL_VERSION...img so let's check for that as well

- if no initrds were supplied.

- ---

-  src/kernel-install/90-loaderentry.install.in | 14 ++++++++++++--

-  1 file changed, 12 insertions(+), 2 deletions(-)

- 

- diff --git a/src/kernel-install/90-loaderentry.install.in b/src/kernel-install/90-loaderentry.install.in

- index 4ef6aca169c1a..84f7a4a97fb43 100755

- --- a/src/kernel-install/90-loaderentry.install.in

- +++ b/src/kernel-install/90-loaderentry.install.in

- @@ -205,8 +205,18 @@ mkdir -p "${LOADER_ENTRY%/*}" || {

-          have_initrd=yes

-      done

-  

- -    # Try "initrd", generated by dracut in its kernel-install hook, if no initrds were supplied

- -    [ -z "$have_initrd" ] && [ -f "$ENTRY_DIR_ABS/initrd" ] && echo "initrd     $ENTRY_DIR/initrd"

- +    # Try a few variations that are generated by various initrd generators in their kernel-install hooks if

- +    # no initrds were supplied.

- +

- +    if [ -z "$have_initrd" ] && [ -f "$ENTRY_DIR_ABS/initrd" ]; then

- +        echo "initrd     $ENTRY_DIR/initrd"

- +        have_initrd=yes

- +    fi

- +

- +    if [ -z "$have_initrd" ] && [ -f "$BOOT_ROOT/initramfs-$KERNEL_VERSION.img" ]; then

- +        echo "initrd     /initramfs-$KERNEL_VERSION.img"

- +        have_initrd=yes

- +    fi

-      :

-  } >"$LOADER_ENTRY" || {

-      echo "Error: could not create loader entry '$LOADER_ENTRY'." >&2

file removed
-39
@@ -1,39 +0,0 @@ 

- From 94a2999f250e3f7579883f5c79815b80398043cd Mon Sep 17 00:00:00 2001

- From: Daan De Meyer <daan.j.demeyer@gmail.com>

- Date: Mon, 29 Jul 2024 17:13:28 +0200

- Subject: [PATCH] kernel-install: Only read cmdline from /proc/cmdline when not

-  in container

- 

- If we're running from within a container, we're very likely not going

- to want to use the kernel command line from /proc/cmdline, so let's add

- a check to see if we're running from a container to decide whether we'll

- use the kernel command line from /proc/cmdline.

- ---

-  src/kernel-install/90-loaderentry.install.in | 6 ++++--

-  1 file changed, 4 insertions(+), 2 deletions(-)

- 

- diff --git a/src/kernel-install/90-loaderentry.install.in b/src/kernel-install/90-loaderentry.install.in

- index 4ef6aca169c1a..79427684cc5c9 100755

- --- a/src/kernel-install/90-loaderentry.install.in

- +++ b/src/kernel-install/90-loaderentry.install.in

- @@ -79,8 +79,10 @@ elif [ -f /etc/kernel/cmdline ]; then

-      BOOT_OPTIONS="$(tr -s "$IFS" ' ' </etc/kernel/cmdline)"

-  elif [ -f /usr/lib/kernel/cmdline ]; then

-      BOOT_OPTIONS="$(tr -s "$IFS" ' ' </usr/lib/kernel/cmdline)"

- -else

- +elif ! systemd-detect-virt --container --quiet; then

-      BOOT_OPTIONS="$(tr -s "$IFS" '\n' </proc/cmdline | grep -ve '^BOOT_IMAGE=' -e '^initrd=' | tr '\n' ' ')"

- +else

- +    BOOT_OPTIONS=""

-  fi

-  

-  BOOT_OPTIONS="${BOOT_OPTIONS% }"

- @@ -194,7 +196,7 @@ mkdir -p "${LOADER_ENTRY%/*}" || {

-          echo "machine-id $MACHINE_ID"

-      fi

-      [ -n "$SORT_KEY" ] && echo "sort-key   $SORT_KEY"

- -    echo "options    $BOOT_OPTIONS"

- +    [ -n "$BOOT_OPTIONS" ] && echo "options    $BOOT_OPTIONS"

-      echo "linux      $KERNEL_ENTRY"

-      [ -n "$DEVICETREE_ENTRY" ] && echo "devicetree $DEVICETREE_ENTRY"

-  

file added
+373
@@ -0,0 +1,373 @@ 

+ From 3f14557ce01cc9012991a602851b03f0a4205fc2 Mon Sep 17 00:00:00 2001

+ From: Daan De Meyer <daan.j.demeyer@gmail.com>

+ Date: Wed, 4 Sep 2024 12:19:49 +0200

+ Subject: [PATCH 1/2] network: Add support for multiq qdisc

+ 

+ ---

+  man/systemd.network.xml                       | 10 ++++++++++

+  src/network/meson.build                       |  1 +

+  src/network/networkd-network-gperf.gperf      |  2 ++

+  src/network/networkd-network.c                |  1 +

+  src/network/tc/multiq.c                       | 19 +++++++++++++++++++

+  src/network/tc/multiq.h                       | 11 +++++++++++

+  src/network/tc/qdisc.c                        |  1 +

+  src/network/tc/qdisc.h                        |  2 ++

+  .../test-network/conf/25-qdisc-multiq.network | 12 ++++++++++++

+  test/test-network/systemd-networkd-tests.py   | 10 ++++++++++

+  10 files changed, 69 insertions(+)

+  create mode 100644 src/network/tc/multiq.c

+  create mode 100644 src/network/tc/multiq.h

+  create mode 100644 test/test-network/conf/25-qdisc-multiq.network

+ 

+ diff --git a/man/systemd.network.xml b/man/systemd.network.xml

+ index 734a4f7c0b21b..cc6a31484f20c 100644

+ --- a/man/systemd.network.xml

+ +++ b/man/systemd.network.xml

+ @@ -6064,6 +6064,16 @@ ServerAddress=192.168.0.1/24</programlisting>

+      </variablelist>

+    </refsect1>

+  

+ +  <refsect1>

+ +    <title>[BandMultiQueueing] Section Options</title>

+ +    <para>The [BandMultiQueueing] section manages the queueing discipline (qdisc) of Band Multi Queueing (multiq).</para>

+ +

+ +    <variablelist class='network-directives'>

+ +      <xi:include href="tc.xml" xpointer="qdisc-parent" />

+ +      <xi:include href="tc.xml" xpointer="qdisc-handle" />

+ +    </variablelist>

+ +  </refsect1>

+ +

+    <refsect1>

+      <title>[HeavyHitterFilter] Section Options</title>

+      <para>The [HeavyHitterFilter] section manages the queueing discipline (qdisc) of Heavy Hitter Filter

+ diff --git a/src/network/meson.build b/src/network/meson.build

+ index 275542daa27f5..3edcd48c83e63 100644

+ --- a/src/network/meson.build

+ +++ b/src/network/meson.build

+ @@ -93,6 +93,7 @@ sources = files(

+          'tc/gred.c',

+          'tc/hhf.c',

+          'tc/htb.c',

+ +        'tc/multiq.c',

+          'tc/netem.c',

+          'tc/pie.c',

+          'tc/qdisc.c',

+ diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf

+ index 0957eeef6ed8b..95fe0275a9be4 100644

+ --- a/src/network/networkd-network-gperf.gperf

+ +++ b/src/network/networkd-network-gperf.gperf

+ @@ -552,6 +552,8 @@ HierarchyTokenBucketClass.Rate,              config_parse_hierarchy_token_bucket

+  HierarchyTokenBucketClass.CeilRate,          config_parse_hierarchy_token_bucket_class_rate,           TCLASS_KIND_HTB,               0

+  HierarchyTokenBucketClass.BufferBytes,       config_parse_hierarchy_token_bucket_class_size,           TCLASS_KIND_HTB,               0

+  HierarchyTokenBucketClass.CeilBufferBytes,   config_parse_hierarchy_token_bucket_class_size,           TCLASS_KIND_HTB,               0

+ +BandMultiQueueing.Parent,                    config_parse_qdisc_parent,                                QDISC_KIND_MULTIQ,             0

+ +BandMultiQueueing.Handle,                    config_parse_qdisc_handle,                                QDISC_KIND_MULTIQ,             0

+  NetworkEmulator.Parent,                      config_parse_qdisc_parent,                                QDISC_KIND_NETEM,              0

+  NetworkEmulator.Handle,                      config_parse_qdisc_handle,                                QDISC_KIND_NETEM,              0

+  NetworkEmulator.DelaySec,                    config_parse_network_emulator_delay,                      QDISC_KIND_NETEM,              0

+ diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c

+ index ecd54a3829d49..2c2f8ad939064 100644

+ --- a/src/network/networkd-network.c

+ +++ b/src/network/networkd-network.c

+ @@ -551,6 +551,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi

+                          "HeavyHitterFilter\0"

+                          "HierarchyTokenBucket\0"

+                          "HierarchyTokenBucketClass\0"

+ +                        "BandMultiQueueing\0"

+                          "NetworkEmulator\0"

+                          "PFIFO\0"

+                          "PFIFOFast\0"

+ diff --git a/src/network/tc/multiq.c b/src/network/tc/multiq.c

+ new file mode 100644

+ index 0000000000000..c70d8c59061e3

+ --- /dev/null

+ +++ b/src/network/tc/multiq.c

+ @@ -0,0 +1,19 @@

+ +/* SPDX-License-Identifier: LGPL-2.1-or-later */

+ +

+ +#include "multiq.h"

+ +

+ +static int multi_queueing_fill_message(Link *link, QDisc *qdisc, sd_netlink_message *req) {

+ +        struct tc_multiq_qopt opt = {};

+ +

+ +        assert(req);

+ +

+ +        /* It looks weird, but the multiq qdisc initialization wants to receive a tc_multiq_qopt attr even

+ +         * though it doesn't do anything with it. */

+ +        return sd_netlink_message_append_data(req, TCA_OPTIONS, &opt, sizeof(opt));

+ +}

+ +

+ +const QDiscVTable multiq_vtable = {

+ +        .object_size = sizeof(BandMultiQueueing),

+ +        .tca_kind = "multiq",

+ +        .fill_message = multi_queueing_fill_message,

+ +};

+ diff --git a/src/network/tc/multiq.h b/src/network/tc/multiq.h

+ new file mode 100644

+ index 0000000000000..e53ed57c716ab

+ --- /dev/null

+ +++ b/src/network/tc/multiq.h

+ @@ -0,0 +1,11 @@

+ +/* SPDX-License-Identifier: LGPL-2.1-or-later */

+ +#pragma once

+ +

+ +#include "qdisc.h"

+ +

+ +typedef struct BandMultiQueueing {

+ +        QDisc meta;

+ +} BandMultiQueueing;

+ +

+ +DEFINE_QDISC_CAST(MULTIQ, BandMultiQueueing);

+ +extern const QDiscVTable multiq_vtable;

+ diff --git a/src/network/tc/qdisc.c b/src/network/tc/qdisc.c

+ index 0f89d844f585a..5e8f97a785100 100644

+ --- a/src/network/tc/qdisc.c

+ +++ b/src/network/tc/qdisc.c

+ @@ -30,6 +30,7 @@ const QDiscVTable * const qdisc_vtable[_QDISC_KIND_MAX] = {

+          [QDISC_KIND_GRED]            = &gred_vtable,

+          [QDISC_KIND_HHF]             = &hhf_vtable,

+          [QDISC_KIND_HTB]             = &htb_vtable,

+ +        [QDISC_KIND_MULTIQ]          = &multiq_vtable,

+          [QDISC_KIND_NETEM]           = &netem_vtable,

+          [QDISC_KIND_PIE]             = &pie_vtable,

+          [QDISC_KIND_QFQ]             = &qfq_vtable,

+ diff --git a/src/network/tc/qdisc.h b/src/network/tc/qdisc.h

+ index 50a8f4ead1951..83853dcaa742c 100644

+ --- a/src/network/tc/qdisc.h

+ +++ b/src/network/tc/qdisc.h

+ @@ -21,6 +21,7 @@ typedef enum QDiscKind {

+          QDISC_KIND_GRED,

+          QDISC_KIND_HHF,

+          QDISC_KIND_HTB,

+ +        QDISC_KIND_MULTIQ,

+          QDISC_KIND_NETEM,

+          QDISC_KIND_PFIFO,

+          QDISC_KIND_PFIFO_FAST,

+ @@ -106,6 +107,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_qdisc_handle);

+  #include "gred.h"

+  #include "hhf.h"

+  #include "htb.h"

+ +#include "multiq.h"

+  #include "pie.h"

+  #include "qfq.h"

+  #include "netem.h"

+ diff --git a/test/test-network/conf/25-qdisc-multiq.network b/test/test-network/conf/25-qdisc-multiq.network

+ new file mode 100644

+ index 0000000000000..a805c77124d0c

+ --- /dev/null

+ +++ b/test/test-network/conf/25-qdisc-multiq.network

+ @@ -0,0 +1,12 @@

+ +# SPDX-License-Identifier: LGPL-2.1-or-later

+ +[Match]

+ +Name=testtun99

+ +Name=testtap99

+ +

+ +[Network]

+ +LinkLocalAddressing=yes

+ +IPv6AcceptRA=no

+ +

+ +[BandMultiQueueing]

+ +Parent=root

+ +Handle=0002

+ diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py

+ index 1b61038d09e08..a2b4eb40b239d 100755

+ --- a/test/test-network/systemd-networkd-tests.py

+ +++ b/test/test-network/systemd-networkd-tests.py

+ @@ -4648,6 +4648,16 @@ def test_qdisc_ingress(self):

+          print(output)

+          self.assertRegex(output, 'qdisc ingress')

+  

+ +    @expectedFailureIfModuleIsNotAvailable('sch_multiq')

+ +    def test_qdisc_multiq(self):

+ +        copy_network_unit('25-tun.netdev', '25-tap.netdev', '25-qdisc-multiq.network')

+ +        start_networkd()

+ +        self.wait_online('testtun99:degraded', 'testtap99:degraded')

+ +

+ +        output = check_output('tc qdisc show dev testtun99')

+ +        print(output)

+ +        self.assertIn('qdisc multiq 2: root', output)

+ +

+      @expectedFailureIfModuleIsNotAvailable('sch_netem')

+      def test_qdisc_netem(self):

+          copy_network_unit('25-qdisc-netem.network', '12-dummy.netdev',

+ 

+ From 2b9ced9072a280a2cb0c2c7783a288788a3a6771 Mon Sep 17 00:00:00 2001

+ From: Daan De Meyer <daan.j.demeyer@gmail.com>

+ Date: Wed, 4 Sep 2024 13:32:32 +0200

+ Subject: [PATCH 2/2] network: Add support for mq qdisc

+ 

+ ---

+  man/systemd.network.xml                     | 10 ++++++++++

+  src/network/meson.build                     |  1 +

+  src/network/networkd-network-gperf.gperf    |  2 ++

+  src/network/networkd-network.c              |  1 +

+  src/network/tc/mq.c                         |  8 ++++++++

+  src/network/tc/mq.h                         | 11 +++++++++++

+  src/network/tc/qdisc.c                      |  1 +

+  src/network/tc/qdisc.h                      |  2 ++

+  test/test-network/conf/25-qdisc-mq.network  | 12 ++++++++++++

+  test/test-network/systemd-networkd-tests.py |  9 +++++++++

+  10 files changed, 57 insertions(+)

+  create mode 100644 src/network/tc/mq.c

+  create mode 100644 src/network/tc/mq.h

+  create mode 100644 test/test-network/conf/25-qdisc-mq.network

+ 

+ diff --git a/man/systemd.network.xml b/man/systemd.network.xml

+ index cc6a31484f20c..89484c449f31d 100644

+ --- a/man/systemd.network.xml

+ +++ b/man/systemd.network.xml

+ @@ -6064,6 +6064,16 @@ ServerAddress=192.168.0.1/24</programlisting>

+      </variablelist>

+    </refsect1>

+  

+ +  <refsect1>

+ +    <title>[ClassfulMultiQueueing] Section Options</title>

+ +    <para>The [ClassfulMultiQueueing] section manages the queueing discipline (qdisc) of Classful Multi Queueing (mq).</para>

+ +

+ +    <variablelist class='network-directives'>

+ +      <xi:include href="tc.xml" xpointer="qdisc-parent" />

+ +      <xi:include href="tc.xml" xpointer="qdisc-handle" />

+ +    </variablelist>

+ +  </refsect1>

+ +

+    <refsect1>

+      <title>[BandMultiQueueing] Section Options</title>

+      <para>The [BandMultiQueueing] section manages the queueing discipline (qdisc) of Band Multi Queueing (multiq).</para>

+ diff --git a/src/network/meson.build b/src/network/meson.build

+ index 3edcd48c83e63..54cf694aeb47e 100644

+ --- a/src/network/meson.build

+ +++ b/src/network/meson.build

+ @@ -93,6 +93,7 @@ sources = files(

+          'tc/gred.c',

+          'tc/hhf.c',

+          'tc/htb.c',

+ +        'tc/mq.c',

+          'tc/multiq.c',

+          'tc/netem.c',

+          'tc/pie.c',

+ diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf

+ index 95fe0275a9be4..a84de4ca7fca9 100644

+ --- a/src/network/networkd-network-gperf.gperf

+ +++ b/src/network/networkd-network-gperf.gperf

+ @@ -552,6 +552,8 @@ HierarchyTokenBucketClass.Rate,              config_parse_hierarchy_token_bucket

+  HierarchyTokenBucketClass.CeilRate,          config_parse_hierarchy_token_bucket_class_rate,           TCLASS_KIND_HTB,               0

+  HierarchyTokenBucketClass.BufferBytes,       config_parse_hierarchy_token_bucket_class_size,           TCLASS_KIND_HTB,               0

+  HierarchyTokenBucketClass.CeilBufferBytes,   config_parse_hierarchy_token_bucket_class_size,           TCLASS_KIND_HTB,               0

+ +ClassfulMultiQueueing.Parent,                config_parse_qdisc_parent,                                QDISC_KIND_MQ,                 0

+ +ClassfulMultiQueueing.Handle,                config_parse_qdisc_handle,                                QDISC_KIND_MQ,                 0

+  BandMultiQueueing.Parent,                    config_parse_qdisc_parent,                                QDISC_KIND_MULTIQ,             0

+  BandMultiQueueing.Handle,                    config_parse_qdisc_handle,                                QDISC_KIND_MULTIQ,             0

+  NetworkEmulator.Parent,                      config_parse_qdisc_parent,                                QDISC_KIND_NETEM,              0

+ diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c

+ index 2c2f8ad939064..8ccf215a71e84 100644

+ --- a/src/network/networkd-network.c

+ +++ b/src/network/networkd-network.c

+ @@ -551,6 +551,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi

+                          "HeavyHitterFilter\0"

+                          "HierarchyTokenBucket\0"

+                          "HierarchyTokenBucketClass\0"

+ +                        "ClassfulMultiQueueing\0"

+                          "BandMultiQueueing\0"

+                          "NetworkEmulator\0"

+                          "PFIFO\0"

+ diff --git a/src/network/tc/mq.c b/src/network/tc/mq.c

+ new file mode 100644

+ index 0000000000000..1435ed1fda0fa

+ --- /dev/null

+ +++ b/src/network/tc/mq.c

+ @@ -0,0 +1,8 @@

+ +/* SPDX-License-Identifier: LGPL-2.1-or-later */

+ +

+ +#include "mq.h"

+ +

+ +const QDiscVTable mq_vtable = {

+ +        .object_size = sizeof(ClassfulMultiQueueing),

+ +        .tca_kind = "mq",

+ +};

+ diff --git a/src/network/tc/mq.h b/src/network/tc/mq.h

+ new file mode 100644

+ index 0000000000000..88f0049670cf1

+ --- /dev/null

+ +++ b/src/network/tc/mq.h

+ @@ -0,0 +1,11 @@

+ +/* SPDX-License-Identifier: LGPL-2.1-or-later */

+ +#pragma once

+ +

+ +#include "qdisc.h"

+ +

+ +typedef struct ClassfulMultiQueueing {

+ +        QDisc meta;

+ +} ClassfulMultiQueueing;

+ +

+ +DEFINE_QDISC_CAST(MQ, ClassfulMultiQueueing);

+ +extern const QDiscVTable mq_vtable;

+ diff --git a/src/network/tc/qdisc.c b/src/network/tc/qdisc.c

+ index 5e8f97a785100..3bcc3930662f4 100644

+ --- a/src/network/tc/qdisc.c

+ +++ b/src/network/tc/qdisc.c

+ @@ -30,6 +30,7 @@ const QDiscVTable * const qdisc_vtable[_QDISC_KIND_MAX] = {

+          [QDISC_KIND_GRED]            = &gred_vtable,

+          [QDISC_KIND_HHF]             = &hhf_vtable,

+          [QDISC_KIND_HTB]             = &htb_vtable,

+ +        [QDISC_KIND_MQ]              = &mq_vtable,

+          [QDISC_KIND_MULTIQ]          = &multiq_vtable,

+          [QDISC_KIND_NETEM]           = &netem_vtable,

+          [QDISC_KIND_PIE]             = &pie_vtable,

+ diff --git a/src/network/tc/qdisc.h b/src/network/tc/qdisc.h

+ index 83853dcaa742c..80b95c2aab4fc 100644

+ --- a/src/network/tc/qdisc.h

+ +++ b/src/network/tc/qdisc.h

+ @@ -21,6 +21,7 @@ typedef enum QDiscKind {

+          QDISC_KIND_GRED,

+          QDISC_KIND_HHF,

+          QDISC_KIND_HTB,

+ +        QDISC_KIND_MQ,

+          QDISC_KIND_MULTIQ,

+          QDISC_KIND_NETEM,

+          QDISC_KIND_PFIFO,

+ @@ -107,6 +108,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_qdisc_handle);

+  #include "gred.h"

+  #include "hhf.h"

+  #include "htb.h"

+ +#include "mq.h"

+  #include "multiq.h"

+  #include "pie.h"

+  #include "qfq.h"

+ diff --git a/test/test-network/conf/25-qdisc-mq.network b/test/test-network/conf/25-qdisc-mq.network

+ new file mode 100644

+ index 0000000000000..32366d05dabed

+ --- /dev/null

+ +++ b/test/test-network/conf/25-qdisc-mq.network

+ @@ -0,0 +1,12 @@

+ +# SPDX-License-Identifier: LGPL-2.1-or-later

+ +[Match]

+ +Name=testtun99

+ +Name=testtap99

+ +

+ +[Network]

+ +LinkLocalAddressing=yes

+ +IPv6AcceptRA=no

+ +

+ +[ClassfulMultiQueueing]

+ +Parent=root

+ +Handle=0002

+ diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py

+ index a2b4eb40b239d..3989fc04014d1 100755

+ --- a/test/test-network/systemd-networkd-tests.py

+ +++ b/test/test-network/systemd-networkd-tests.py

+ @@ -4648,6 +4648,15 @@ def test_qdisc_ingress(self):

+          print(output)

+          self.assertRegex(output, 'qdisc ingress')

+  

+ +    def test_qdisc_mq(self):

+ +        copy_network_unit('25-tun.netdev', '25-tap.netdev', '25-qdisc-mq.network')

+ +        start_networkd()

+ +        self.wait_online('testtun99:degraded', 'testtap99:degraded')

+ +

+ +        output = check_output('tc qdisc show dev testtun99')

+ +        print(output)

+ +        self.assertIn('qdisc mq 2: root', output)

+ +

+      @expectedFailureIfModuleIsNotAvailable('sch_multiq')

+      def test_qdisc_multiq(self):

+          copy_network_unit('25-tun.netdev', '25-tap.netdev', '25-qdisc-multiq.network')

@@ -1,31 +0,0 @@ 

- From c4b803dc60b63a35c977d39610b7872175ec03bd Mon Sep 17 00:00:00 2001

- From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>

- Date: Wed, 14 Dec 2022 22:24:53 +0100

- Subject: [PATCH] fedora: use system-auth in pam systemd-user

- 

- ---

-  src/login/systemd-user.in | 4 ++--

-  1 file changed, 2 insertions(+), 2 deletions(-)

- 

- diff --git a/src/login/systemd-user.in b/src/login/systemd-user.in

- index 8a3c9e0165..74ef5f2552 100644

- --- a/src/login/systemd-user.in

- +++ b/src/login/systemd-user.in

- @@ -7,7 +7,7 @@

-  -account sufficient pam_systemd_home.so

-  {% endif %}

-  account  sufficient pam_unix.so no_pass_expiry

- -account  required   pam_permit.so

- +account  include    system-auth

-  

-  {% if HAVE_SELINUX %}

-  session  required   pam_selinux.so close

- @@ -20,4 +20,4 @@ session  required   pam_namespace.so

-  -session optional   pam_systemd_home.so

-  {% endif %}

-  session  optional   pam_umask.so silent

- -session  optional   pam_systemd.so

- +session  include    system-auth

- -- 

- 2.41.0

- 

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (systemd-256.4.tar.gz) = 0357f1b61a07e594aff118dec54bd7233f37b69ccdfa393b91f46f32f08238fa7dd44df70d1df858464c866e114868ae1bec66dc685703d425cbd4c86baddfb8

+ SHA512 (systemd-256.6.tar.gz) = 99d0fad02cab3559e081dabc2797d1d66bbc21daf9aaec847aeb6bce289456ff9c8599a34563c9bfa3826db36ae9ab30836b09bae00bf1a410b54d0bad9bd4dc

file modified
+1 -1
@@ -260,6 +260,6 @@ 

  if [print(f'ERROR: no file names were written to {o.name}')

      for name, o in outputs.items()

      if (o.tell() == 0 and

-         not (no_bootloader and name in ('ukify', 'boot')))

+         not (no_bootloader and name == 'boot'))

      ]:

      sys.exit(1)

file added
+14
@@ -0,0 +1,14 @@ 

+ # Used by systemd --user instances.

+ 

+ -account sufficient pam_systemd_home.so

+ account  sufficient pam_unix.so no_pass_expiry

+ account  include    system-auth

+ 

+ session  required   pam_selinux.so close

+ session  required   pam_selinux.so nottys open

+ session  required   pam_loginuid.so

+ session  optional   pam_keyinit.so force revoke

+ session  required   pam_namespace.so

+ -session optional   pam_systemd_home.so

+ session  optional   pam_umask.so silent

+ session  include    system-auth

file modified
+43 -19
@@ -39,16 +39,12 @@ 

  %global __meson_auto_features disabled

  %endif

  

- # Override %%autorelease. This is ugly, but rpmautospec doesn't implement

- # autorelease correctly if the macro is conditionalized in the Release field.

- %{?release_override:%global autorelease %{release_override}%{?dist}}

- 

  Name:           systemd

  Url:            https://systemd.io

  # Allow users to specify the version and release when building the rpm by 

  # setting the %%version_override and %%release_override macros.

- Version:        %{?version_override}%{!?version_override:256.4}

- Release:        %autorelease

+ Version:        %{?version_override}%{!?version_override:256.6}

+ Release:        %{?release_override}%{!?release_override:1.1}%{?dist}

  

  %global stable %(c="%version"; [ "$c" = "${c#*.*}" ]; echo $?)

  
@@ -96,6 +92,8 @@ 

  

  Source25:       98-default-mac-none.link

  

+ Source26:       systemd-user

+ 

  %if 0

  GIT_DIR=../../src/systemd/.git git format-patch-ab --no-signature -M -N v235..v235-stable

  i=1; for j in 00*patch; do printf "Patch%04d:      %s\n" $i $j; i=$((i+1));done|xclip
@@ -108,7 +106,6 @@ 

  # than in the next section. Packit CI will drop any patches in this range before

  # applying upstream pull requests.

  

- %if %{without upstream}

  %if 0%{?fedora} < 40 && 0%{?rhel} < 10

  # Work-around for dracut issue: run generators directly when we are in initrd

  # https://bugzilla.redhat.com/show_bug.cgi?id=2164404
@@ -119,19 +116,15 @@ 

  # Requested in https://bugzilla.redhat.com/show_bug.cgi?id=2298422

  Patch0011:      https://github.com/systemd/systemd/pull/33738.patch

  

- Patch0012:      https://github.com/systemd/systemd/pull/33861.patch

- Patch0013:      https://github.com/systemd/systemd/pull/33864.patch

- 

  # Those are downstream-only patches, but we don't want them in packit builds:

  # https://bugzilla.redhat.com/show_bug.cgi?id=2251843

  Patch0491:      https://github.com/systemd/systemd/pull/30846.patch

  

  # Soft-disable tmpfiles --purge until a good use case comes up.

  Patch0492:      0001-tmpfiles-make-purge-hard-to-mis-use.patch

- %endif

  

- # Adjust upstream config to use our shared stack

- Patch0499:      fedora-use-system-auth-in-pam-systemd-user.patch

+ # network: Add support for multiq qdisc

+ Patch0493:      https://github.com/systemd/systemd/pull/34251.patch

  

  %ifarch %{ix86} x86_64 aarch64 riscv64

  %global want_bootloader 1
@@ -422,8 +415,10 @@ 

  Provides:       udev = %{version}

  Provides:       udev%{_isa} = %{version}

  Obsoletes:      udev < 183

+ %if 0%{?fedora} || 0%{?rhel} >= 10

  Requires:       (grubby > 8.40-72 if grubby)

  Requires:       (sdubby > 1.0-3 if sdubby)

+ %endif

  # A backport of systemd-timesyncd is shipped as a separate package in EPEL so

  # let's make sure we properly handle that.

  %if 0%{?rhel}
@@ -487,18 +482,24 @@ 

  It also contains tools to manage encrypted home areas and secrets bound to the

  machine, and to create or grow partitions and make file systems automatically.

  

- %if 0%{?want_bootloader}

  %package ukify

  Summary:        Tool to build Unified Kernel Images

  Requires:       %{name} = %{version}-%{release}

  

- Requires:       systemd-boot

+ Requires:       (systemd-boot if %{shrink:(

+         filesystem(x86-32) or

+         filesystem(x86-64) or

+         filesystem(aarch64) or

+         filesystem(riscv64)

+ )})

  Requires:       python3dist(pefile)

  %if 0%{?fedora}

  Requires:       python3dist(zstd)

  %endif

  Requires:       python3dist(cryptography)

+ %if 0%{?fedora}

  Recommends:     python3dist(pillow)

+ %endif

  

  # for tests

  %ifarch riscv64
@@ -514,6 +515,7 @@ 

  with a command line, and possibly PCR measurements and other metadata, into a

  Unified Kernel Image (UKI).

  

+ %if 0%{?want_bootloader}

  %package boot-unsigned

  Summary: UEFI boot manager (unsigned version)

  
@@ -828,12 +830,19 @@ 

          # For now, let's build the bootloader in the same places where we

          # built with gnu-efi. Later on, we might want to extend coverage, but

          # considering that that support is untested, let's not do this now.

-         # Note, ukify requires bootloader, let's also explicitly enable/disable it

-         # here for https://github.com/systemd/systemd/pull/24175.

          -Dbootloader=%[%{?want_bootloader}?"enabled":"disabled"]

-         -Dukify=%[%{?want_bootloader}?"enabled":"disabled"]

+         -Dukify=enabled

  )

  

+ %if 0%{?facebook}

+ CONFIGURE_OPTS+=(

+         -Dntp-servers='1.ntp.vip.facebook.com 2.ntp.vip.facebook.com 3.ntp.vip.facebook.com 4.ntp.vip.facebook.com'

+         -Ddns-servers='10.127.255.51 10.191.255.51 2401:db00:eef0:a53:: 2401:db00:eef0:b53::'

+         -Dsupport-url='https://fb.workplace.com/groups/systemd.and.friends'

+         -Dcontainer-uid-base-min=10485760

+ )

+ %endif

+ 

  %if %{without lto}

  %global _lto_cflags %nil

  %endif
@@ -968,11 +977,13 @@ 

  # https://fedoraproject.org/wiki/Changes/IncreaseVmMaxMapCount

  install -Dm0644 -t %{buildroot}%{_prefix}/lib/sysctl.d/ %{SOURCE17}

  

+ %if %{undefined facebook}

  # As requested in https://bugzilla.redhat.com/show_bug.cgi?id=1738828.

  # Test results are that bfq seems to behave better and more consistently on

  # typical hardware. The kernel does not have a configuration option to set the

  # default scheduler, and it currently needs to be set by userspace.

  install -Dm0644 -t %{buildroot}%{_prefix}/lib/udev/rules.d/ %{SOURCE18}

+ %endif

  

  sed -i 's|#!/usr/bin/env python3|#!%{__python3}|' %{buildroot}/usr/lib/systemd/tests/run-unit-tests.py

  
@@ -1005,6 +1016,15 @@ 

  rm %{buildroot}/usr/lib/sysusers.d/basic.conf

  %endif

  

+ # Disable sshd_config.d/20-systemd-userdb.conf for now.

+ # This option may override an existing AuthorizedKeysCommand setting

+ # (or be ineffective, depending on the order of configuration).

+ # See https://github.com/systemd/systemd/issues/33648.

+ rm %{buildroot}/etc/ssh/sshd_config.d/20-systemd-userdb.conf

+ mv %{buildroot}/usr/lib/tmpfiles.d/20-systemd-userdb.conf{,.example}

+ 

+ install -m 0644 -t %{buildroot}%{_prefix}/lib/pam.d/ %{SOURCE26}

+ 

  %find_lang %{name}

  

  # Split files in build root into rpms
@@ -1150,7 +1170,11 @@ 

  %systemd_preun systemd-networkd.service systemd-networkd-wait-online.service

  

  %postun networkd

+ %if %{undefined facebook}

  %systemd_postun_with_restart systemd-networkd.service

+ %else

+ %systemd_postun systemd-networkd.service

+ %endif

  %systemd_postun systemd-networkd-wait-online.service

  

  %post resolved
@@ -1258,8 +1282,8 @@ 

  

  %files udev -f .file-list-udev

  

- %if 0%{?want_bootloader}

  %files ukify -f .file-list-ukify

+ %if 0%{?want_bootloader}

  %files boot-unsigned -f .file-list-boot

  %endif