From 2aaceffb63c380c5ea3df653b8aee499968c289a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 09 2023 05:39:14 +0000 Subject: import systemd-252-13.el9_2 --- diff --git a/.gitignore b/.gitignore index f414847..1e7d69d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/systemd-250.tar.gz +SOURCES/systemd-252.tar.gz diff --git a/.systemd.metadata b/.systemd.metadata index 7e5b661..9d85202 100644 --- a/.systemd.metadata +++ b/.systemd.metadata @@ -1 +1 @@ -3b9db821b29a577d004c8823f4ff7a054c81a39c SOURCES/systemd-250.tar.gz +7c961dc6e8bb950825b85129f59dc80f4536cabb SOURCES/systemd-252.tar.gz diff --git a/SOURCES/0001-logind-set-RemoveIPC-to-false-by-default.patch b/SOURCES/0001-logind-set-RemoveIPC-to-false-by-default.patch deleted file mode 100644 index b533028..0000000 --- a/SOURCES/0001-logind-set-RemoveIPC-to-false-by-default.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 5a66d993a5be88524d9952193b053eac607a5c17 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Wed, 1 Aug 2018 10:58:28 +0200 -Subject: [PATCH] logind: set RemoveIPC to false by default - -RHEL-only - -Resolves: #1959836 ---- - man/logind.conf.xml | 2 +- - src/login/logind-core.c | 2 +- - src/login/logind.conf.in | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/man/logind.conf.xml b/man/logind.conf.xml -index 3045c1b9ba..96fa076239 100644 ---- a/man/logind.conf.xml -+++ b/man/logind.conf.xml -@@ -354,7 +354,7 @@ - user fully logs out. Takes a boolean argument. If enabled, the user may not consume IPC resources after the - last of the user's sessions terminated. This covers System V semaphores, shared memory and message queues, as - well as POSIX shared memory and message queues. Note that IPC objects of the root user and other system users -- are excluded from the effect of this setting. Defaults to yes. -+ are excluded from the effect of this setting. Defaults to no. - - - -diff --git a/src/login/logind-core.c b/src/login/logind-core.c -index 254a1a69fb..616c08132a 100644 ---- a/src/login/logind-core.c -+++ b/src/login/logind-core.c -@@ -34,7 +34,7 @@ void manager_reset_config(Manager *m) { - - m->n_autovts = 6; - m->reserve_vt = 6; -- m->remove_ipc = true; -+ m->remove_ipc = false; - m->inhibit_delay_max = 5 * USEC_PER_SEC; - m->user_stop_delay = 10 * USEC_PER_SEC; - -diff --git a/src/login/logind.conf.in b/src/login/logind.conf.in -index 2d084e134d..79d685b3de 100644 ---- a/src/login/logind.conf.in -+++ b/src/login/logind.conf.in -@@ -40,6 +40,6 @@ - #IdleActionSec=30min - #RuntimeDirectorySize=10% - #RuntimeDirectoryInodes=400k --#RemoveIPC=yes -+#RemoveIPC=no - #InhibitorsMax=8192 - #SessionsMax=8192 diff --git a/SOURCES/0001-macro-Simply-case-macros-for-IN_SET.patch b/SOURCES/0001-macro-Simply-case-macros-for-IN_SET.patch new file mode 100644 index 0000000..7df76bd --- /dev/null +++ b/SOURCES/0001-macro-Simply-case-macros-for-IN_SET.patch @@ -0,0 +1,78 @@ +From 87bf366c97be1c811c4bfdf80b48d6c3e35da76a Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 25 Oct 2022 19:55:08 +0200 +Subject: [PATCH] macro: Simply case macros for IN_SET + +The CASE param would normally provide the operation for the compiler to +do in this macro magic. But in this case CASE_F_1 was hardcoding the +operation, making the parameter moot. +This just removes the somewhat pointless parameter instead of fixing +the one case. These macros are used for IN_SET case labels only and +not named generically anyways. + +(cherry picked from commit 790f4dda74d7ecdb4e57101a37cc9f2f9236bef6) + +Related #2138081 +--- + src/fundamental/macro-fundamental.h | 43 ++++++++++++++--------------- + 1 file changed, 21 insertions(+), 22 deletions(-) + +diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h +index 2536c741c6..63f4c49e78 100644 +--- a/src/fundamental/macro-fundamental.h ++++ b/src/fundamental/macro-fundamental.h +@@ -251,33 +251,32 @@ + (UNIQ_T(X, xq) / UNIQ_T(Y, yq) + !!(UNIQ_T(X, xq) % UNIQ_T(Y, yq))); \ + }) + +-#define CASE_F(X) case X: +-#define CASE_F_1(CASE, X) CASE_F(X) +-#define CASE_F_2(CASE, X, ...) CASE(X) CASE_F_1(CASE, __VA_ARGS__) +-#define CASE_F_3(CASE, X, ...) CASE(X) CASE_F_2(CASE, __VA_ARGS__) +-#define CASE_F_4(CASE, X, ...) CASE(X) CASE_F_3(CASE, __VA_ARGS__) +-#define CASE_F_5(CASE, X, ...) CASE(X) CASE_F_4(CASE, __VA_ARGS__) +-#define CASE_F_6(CASE, X, ...) CASE(X) CASE_F_5(CASE, __VA_ARGS__) +-#define CASE_F_7(CASE, X, ...) CASE(X) CASE_F_6(CASE, __VA_ARGS__) +-#define CASE_F_8(CASE, X, ...) CASE(X) CASE_F_7(CASE, __VA_ARGS__) +-#define CASE_F_9(CASE, X, ...) CASE(X) CASE_F_8(CASE, __VA_ARGS__) +-#define CASE_F_10(CASE, X, ...) CASE(X) CASE_F_9(CASE, __VA_ARGS__) +-#define CASE_F_11(CASE, X, ...) CASE(X) CASE_F_10(CASE, __VA_ARGS__) +-#define CASE_F_12(CASE, X, ...) CASE(X) CASE_F_11(CASE, __VA_ARGS__) +-#define CASE_F_13(CASE, X, ...) CASE(X) CASE_F_12(CASE, __VA_ARGS__) +-#define CASE_F_14(CASE, X, ...) CASE(X) CASE_F_13(CASE, __VA_ARGS__) +-#define CASE_F_15(CASE, X, ...) CASE(X) CASE_F_14(CASE, __VA_ARGS__) +-#define CASE_F_16(CASE, X, ...) CASE(X) CASE_F_15(CASE, __VA_ARGS__) +-#define CASE_F_17(CASE, X, ...) CASE(X) CASE_F_16(CASE, __VA_ARGS__) +-#define CASE_F_18(CASE, X, ...) CASE(X) CASE_F_17(CASE, __VA_ARGS__) +-#define CASE_F_19(CASE, X, ...) CASE(X) CASE_F_18(CASE, __VA_ARGS__) +-#define CASE_F_20(CASE, X, ...) CASE(X) CASE_F_19(CASE, __VA_ARGS__) ++#define CASE_F_1(X) case X: ++#define CASE_F_2(X, ...) case X: CASE_F_1( __VA_ARGS__) ++#define CASE_F_3(X, ...) case X: CASE_F_2( __VA_ARGS__) ++#define CASE_F_4(X, ...) case X: CASE_F_3( __VA_ARGS__) ++#define CASE_F_5(X, ...) case X: CASE_F_4( __VA_ARGS__) ++#define CASE_F_6(X, ...) case X: CASE_F_5( __VA_ARGS__) ++#define CASE_F_7(X, ...) case X: CASE_F_6( __VA_ARGS__) ++#define CASE_F_8(X, ...) case X: CASE_F_7( __VA_ARGS__) ++#define CASE_F_9(X, ...) case X: CASE_F_8( __VA_ARGS__) ++#define CASE_F_10(X, ...) case X: CASE_F_9( __VA_ARGS__) ++#define CASE_F_11(X, ...) case X: CASE_F_10( __VA_ARGS__) ++#define CASE_F_12(X, ...) case X: CASE_F_11( __VA_ARGS__) ++#define CASE_F_13(X, ...) case X: CASE_F_12( __VA_ARGS__) ++#define CASE_F_14(X, ...) case X: CASE_F_13( __VA_ARGS__) ++#define CASE_F_15(X, ...) case X: CASE_F_14( __VA_ARGS__) ++#define CASE_F_16(X, ...) case X: CASE_F_15( __VA_ARGS__) ++#define CASE_F_17(X, ...) case X: CASE_F_16( __VA_ARGS__) ++#define CASE_F_18(X, ...) case X: CASE_F_17( __VA_ARGS__) ++#define CASE_F_19(X, ...) case X: CASE_F_18( __VA_ARGS__) ++#define CASE_F_20(X, ...) case X: CASE_F_19( __VA_ARGS__) + + #define GET_CASE_F(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,NAME,...) NAME + #define FOR_EACH_MAKE_CASE(...) \ + GET_CASE_F(__VA_ARGS__,CASE_F_20,CASE_F_19,CASE_F_18,CASE_F_17,CASE_F_16,CASE_F_15,CASE_F_14,CASE_F_13,CASE_F_12,CASE_F_11, \ + CASE_F_10,CASE_F_9,CASE_F_8,CASE_F_7,CASE_F_6,CASE_F_5,CASE_F_4,CASE_F_3,CASE_F_2,CASE_F_1) \ +- (CASE_F,__VA_ARGS__) ++ (__VA_ARGS__) + + #define IN_SET(x, ...) \ + ({ \ diff --git a/SOURCES/0002-macro-fix-indentation.patch b/SOURCES/0002-macro-fix-indentation.patch new file mode 100644 index 0000000..e58e576 --- /dev/null +++ b/SOURCES/0002-macro-fix-indentation.patch @@ -0,0 +1,25 @@ +From 0c372e24bb30c25beccd76c071baca22258e71c9 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 26 Oct 2022 03:28:08 +0900 +Subject: [PATCH] macro: fix indentation + +(cherry picked from commit e967926b092d8635b3da28fc4ca492009e32228f) + +Related #2138081 +--- + src/fundamental/macro-fundamental.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h +index 63f4c49e78..faab16ab31 100644 +--- a/src/fundamental/macro-fundamental.h ++++ b/src/fundamental/macro-fundamental.h +@@ -290,7 +290,7 @@ + switch (x) { \ + FOR_EACH_MAKE_CASE(__VA_ARGS__) \ + _found = true; \ +- break; \ ++ break; \ + default: \ + break; \ + } \ diff --git a/SOURCES/0002-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch b/SOURCES/0002-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch deleted file mode 100644 index 929a63b..0000000 --- a/SOURCES/0002-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 92b6ae2097ae90355775217529d2fd55f7b84e31 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Thu, 5 Aug 2021 17:11:47 +0200 -Subject: [PATCH] tmpfiles: don't create resolv.conf -> stub-resolv.conf - symlink - -RHEL-only - -Resolves: #1989472 ---- - tmpfiles.d/meson.build | 1 - - tmpfiles.d/systemd-resolve.conf | 10 ---------- - 2 files changed, 11 deletions(-) - delete mode 100644 tmpfiles.d/systemd-resolve.conf - -diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build -index b8d3919025..6ae9e3e0b8 100644 ---- a/tmpfiles.d/meson.build -+++ b/tmpfiles.d/meson.build -@@ -7,7 +7,6 @@ files = [['README', ''], - ['journal-nocow.conf', ''], - ['systemd-nologin.conf', 'HAVE_PAM'], - ['systemd-nspawn.conf', 'ENABLE_MACHINED'], -- ['systemd-resolve.conf', 'ENABLE_RESOLVE'], - ['systemd-tmp.conf', ''], - ['portables.conf', 'ENABLE_PORTABLED'], - ['systemd-pstore.conf', 'ENABLE_PSTORE'], -diff --git a/tmpfiles.d/systemd-resolve.conf b/tmpfiles.d/systemd-resolve.conf -deleted file mode 100644 -index cb1c56d6a6..0000000000 ---- a/tmpfiles.d/systemd-resolve.conf -+++ /dev/null -@@ -1,10 +0,0 @@ --# This file is part of systemd. --# --# systemd is free software; you can redistribute it and/or modify it --# under the terms of the GNU Lesser General Public License as published by --# the Free Software Foundation; either version 2.1 of the License, or --# (at your option) any later version. -- --# See tmpfiles.d(5) for details -- --L! /etc/resolv.conf - - - - ../run/systemd/resolve/stub-resolv.conf diff --git a/SOURCES/0003-Copy-40-redhat.rules-from-RHEL-8.patch b/SOURCES/0003-Copy-40-redhat.rules-from-RHEL-8.patch deleted file mode 100644 index 9f6bf2c..0000000 --- a/SOURCES/0003-Copy-40-redhat.rules-from-RHEL-8.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 24f033a2a5c03848ae518278c8025e13130146af Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Fri, 2 Jul 2021 13:25:51 +0200 -Subject: [PATCH] Copy 40-redhat.rules from RHEL-8 - -RHEL-only - -Resolves: #1978639 ---- - rules.d/40-redhat.rules | 46 +++++++++++++++++++++++++++++++++++++++++ - rules.d/meson.build | 1 + - 2 files changed, 47 insertions(+) - create mode 100644 rules.d/40-redhat.rules - -diff --git a/rules.d/40-redhat.rules b/rules.d/40-redhat.rules -new file mode 100644 -index 0000000000..3c95cd2df0 ---- /dev/null -+++ b/rules.d/40-redhat.rules -@@ -0,0 +1,46 @@ -+# do not edit this file, it will be overwritten on update -+ -+# CPU hotadd request -+SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1" -+ -+# Memory hotadd request -+SUBSYSTEM!="memory", GOTO="memory_hotplug_end" -+ACTION!="add", GOTO="memory_hotplug_end" -+CONST{arch}=="s390*", GOTO="memory_hotplug_end" -+CONST{arch}=="ppc64*", GOTO="memory_hotplug_end" -+ -+ENV{.state}="online" -+CONST{virt}=="none", ENV{.state}="online_movable" -+ATTR{state}=="offline", ATTR{state}="$env{.state}" -+ -+LABEL="memory_hotplug_end" -+ -+# reload sysctl.conf / sysctl.conf.d settings when the bridge module is loaded -+ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge" -+ -+# load SCSI generic (sg) driver -+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" -+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_target", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" -+ -+# Rule for prandom character device node permissions -+KERNEL=="prandom", MODE="0644" -+ -+# Rules for creating the ID_PATH for SCSI devices based on the CCW bus -+# using the form: ccw--zfcp-: -+# -+ACTION=="remove", GOTO="zfcp_scsi_device_end" -+ -+# -+# Set environment variable "ID_ZFCP_BUS" to "1" if the devices -+# (both disk and partition) are SCSI devices based on FCP devices -+# -+KERNEL=="sd*", SUBSYSTEMS=="ccw", DRIVERS=="zfcp", ENV{.ID_ZFCP_BUS}="1" -+ -+# For SCSI disks -+KERNEL=="sd*[!0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="disk", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}" -+ -+ -+# For partitions on a SCSI disk -+KERNEL=="sd*[0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="partition", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}-part%n" -+ -+LABEL="zfcp_scsi_device_end" -diff --git a/rules.d/meson.build b/rules.d/meson.build -index 5cecddb34f..c5c3590b29 100644 ---- a/rules.d/meson.build -+++ b/rules.d/meson.build -@@ -5,6 +5,7 @@ install_data( - install_dir : udevrulesdir) - - rules = files(''' -+ 40-redhat.rules - 60-autosuspend.rules - 60-block.rules - 60-cdrom_id.rules diff --git a/SOURCES/0003-test-add-a-couple-of-sanity-tests-for-journalctl.patch b/SOURCES/0003-test-add-a-couple-of-sanity-tests-for-journalctl.patch new file mode 100644 index 0000000..8fd729b --- /dev/null +++ b/SOURCES/0003-test-add-a-couple-of-sanity-tests-for-journalctl.patch @@ -0,0 +1,61 @@ +From 5ac8c56f111f2875467422c851a05891c0ec7d1b Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 31 Oct 2022 12:11:59 +0100 +Subject: [PATCH] test: add a couple of sanity tests for journalctl + +(cherry picked from commit ca46781c5ffa3aaa7a8fb6f09976357d003c4aae) + +Related #2138081 +--- + test/units/testsuite-04.sh | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/test/units/testsuite-04.sh b/test/units/testsuite-04.sh +index b5468cbea4..fdc3273fea 100755 +--- a/test/units/testsuite-04.sh ++++ b/test/units/testsuite-04.sh +@@ -119,6 +119,44 @@ systemctl start silent-success + journalctl --sync + [[ -z "$(journalctl -b -q -u silent-success.service)" ]] + ++# Exercise the matching machinery ++SYSTEMD_LOG_LEVEL=debug journalctl -b -n 1 /dev/null /dev/zero /dev/null /dev/null /dev/null ++journalctl -b -n 1 /bin/true /bin/false ++journalctl -b -n 1 /bin/true + /bin/false ++journalctl -b -n 1 -r --unit "systemd*" ++ ++systemd-run --user -M "testuser@.host" /bin/echo hello ++journalctl --sync ++journalctl -b -n 1 -r --user-unit "*" ++ ++(! journalctl -b /dev/lets-hope-this-doesnt-exist) ++(! journalctl -b /dev/null /dev/zero /dev/this-also-shouldnt-exist) ++(! journalctl -b --unit "this-unit-should-not-exist*") ++ ++# Facilities & priorities ++journalctl --facility help ++journalctl --facility kern -n 1 ++journalctl --facility syslog --priority 0..3 -n 1 ++journalctl --facility syslog --priority 3..0 -n 1 ++journalctl --facility user --priority 0..0 -n 1 ++journalctl --facility daemon --priority warning -n 1 ++journalctl --facility daemon --priority warning..info -n 1 ++journalctl --facility daemon --priority notice..crit -n 1 ++journalctl --facility daemon --priority 5..crit -n 1 ++ ++(! journalctl --facility hopefully-an-unknown-facility) ++(! journalctl --priority hello-world) ++(! journalctl --priority 0..128) ++(! journalctl --priority 0..systemd) ++ ++# Other options ++journalctl --disk-usage ++journalctl --dmesg -n 1 ++journalctl --fields ++journalctl --list-boots ++journalctl --update-catalog ++journalctl --list-catalog ++ + # Add new tests before here, the journald restarts below + # may make tests flappy. + diff --git a/SOURCES/0004-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch b/SOURCES/0004-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch deleted file mode 100644 index 504f7d3..0000000 --- a/SOURCES/0004-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch +++ /dev/null @@ -1,45 +0,0 @@ -From c9ca30a1debbdf24ab6fcbe1aa1ec7ac5f222cb4 Mon Sep 17 00:00:00 2001 -From: Jan Synacek -Date: Tue, 15 May 2018 09:24:20 +0200 -Subject: [PATCH] Avoid /tmp being mounted as tmpfs without the user's will - -Ensure PrivateTmp doesn't require tmpfs through tmp.mount, but rather -adds an After relationship. - -RHEL-only - -Resolves: #1959826 ---- - src/core/unit.c | 7 +------ - units/basic.target | 3 ++- - 2 files changed, 3 insertions(+), 7 deletions(-) - -diff --git a/src/core/unit.c b/src/core/unit.c -index b1f1f5c82c..3a8251e2b8 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1280,12 +1280,7 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { - } - - if (c->private_tmp) { -- -- /* FIXME: for now we make a special case for /tmp and add a weak dependency on -- * tmp.mount so /tmp being masked is supported. However there's no reason to treat -- * /tmp specifically and masking other mount units should be handled more -- * gracefully too, see PR#16894. */ -- r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_WANTS, "tmp.mount", true, UNIT_DEPENDENCY_FILE); -+ r = unit_add_dependency_by_name(u, UNIT_AFTER, "tmp.mount", true, UNIT_DEPENDENCY_FILE); - if (r < 0) - return r; - -diff --git a/units/basic.target b/units/basic.target -index d8cdd5ac14..9eae0782a2 100644 ---- a/units/basic.target -+++ b/units/basic.target -@@ -19,4 +19,5 @@ After=sysinit.target sockets.target paths.target slices.target tmp.mount - # require /var and /var/tmp, but only add a Wants= type dependency on /tmp, as - # we support that unit being masked, and this should not be considered an error. - RequiresMountsFor=/var /var/tmp --Wants=tmp.mount -+# RHEL-only: Disable /tmp on tmpfs. -+#Wants=tmp.mount diff --git a/SOURCES/0004-man-fix-typo-found-by-Lintian.patch b/SOURCES/0004-man-fix-typo-found-by-Lintian.patch new file mode 100644 index 0000000..ee1fc6a --- /dev/null +++ b/SOURCES/0004-man-fix-typo-found-by-Lintian.patch @@ -0,0 +1,25 @@ +From b1a2687cf5b419d6928d024f26aabe1de8ff7727 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Mon, 31 Oct 2022 21:17:47 +0000 +Subject: [PATCH] man: fix typo found by Lintian + +(cherry picked from commit 84033dd40588dbf4f57a746c141fe7d111247a93) + +Related #2138081 +--- + man/loader.conf.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/loader.conf.xml b/man/loader.conf.xml +index 3ee42cdb73..7f173aec61 100644 +--- a/man/loader.conf.xml ++++ b/man/loader.conf.xml +@@ -236,7 +236,7 @@ + + The different sets of variables can be set up under /loader/keys/NAME + where NAME is the name that is going to be used as the name of the entry. +- This allows to ship multiple sets of Secure Boot variables and choose which one to enroll at runtime. ++ This allows one to ship multiple sets of Secure Boot variables and choose which one to enroll at runtime. + + Supported secure boot variables are one database for authorized images, one key exchange key (KEK) + and one platform key (PK). For more information, refer to the UEFI specification, diff --git a/SOURCES/0005-test-add-x-to-assert.sh.patch b/SOURCES/0005-test-add-x-to-assert.sh.patch new file mode 100644 index 0000000..05da9d6 --- /dev/null +++ b/SOURCES/0005-test-add-x-to-assert.sh.patch @@ -0,0 +1,19 @@ +From 3d2fc0517d43ff2c5c6fc03ebb68ef9429be5fd4 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Mon, 31 Oct 2022 21:18:53 +0000 +Subject: [PATCH] test: add +x to assert.sh + +The script has a shebang and .sh extension, so make it executable + +W: systemd-tests: script-not-executable [usr/lib/systemd/tests/testdata/units/assert.sh] +(cherry picked from commit fb4f7271d9f75a44756b110706cdb53b82f407ce) + +Related #2138081 +--- + test/units/assert.sh | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + mode change 100644 => 100755 test/units/assert.sh + +diff --git a/test/units/assert.sh b/test/units/assert.sh +old mode 100644 +new mode 100755 diff --git a/SOURCES/0005-unit-don-t-add-Requires-for-tmp.mount.patch b/SOURCES/0005-unit-don-t-add-Requires-for-tmp.mount.patch deleted file mode 100644 index 5f61739..0000000 --- a/SOURCES/0005-unit-don-t-add-Requires-for-tmp.mount.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ba6b7f1b4409b337b5b4ffc47259ad5c43c436c4 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Mon, 5 Sep 2016 12:47:09 +0200 -Subject: [PATCH] unit: don't add Requires for tmp.mount - -rhel-only -Resolves: #1619292 ---- - src/core/mount.c | 2 +- - src/core/unit.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/mount.c b/src/core/mount.c -index 0170406351..4d407ca4e5 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -335,7 +335,7 @@ static int mount_add_mount_dependencies(Mount *m) { - if (r < 0) - return r; - -- if (UNIT(m)->fragment_path) { -+ if (UNIT(m)->fragment_path && !streq(UNIT(m)->id, "tmp.mount")) { - /* If we have fragment configuration, then make this dependency required */ - r = unit_add_dependency(other, UNIT_REQUIRES, UNIT(m), true, UNIT_DEPENDENCY_PATH); - if (r < 0) -diff --git a/src/core/unit.c b/src/core/unit.c -index 3a8251e2b8..d2adb447b6 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1520,7 +1520,7 @@ static int unit_add_mount_dependencies(Unit *u) { - if (r < 0) - return r; - -- if (m->fragment_path) { -+ if (m->fragment_path && !streq(m->id, "tmp.mount")) { - r = unit_add_dependency(u, UNIT_REQUIRES, m, true, di.origin_mask); - if (r < 0) - return r; diff --git a/SOURCES/0006-parse_hwdb-allow-negative-value-for-EVDEV_ABS_-prope.patch b/SOURCES/0006-parse_hwdb-allow-negative-value-for-EVDEV_ABS_-prope.patch new file mode 100644 index 0000000..475f90b --- /dev/null +++ b/SOURCES/0006-parse_hwdb-allow-negative-value-for-EVDEV_ABS_-prope.patch @@ -0,0 +1,25 @@ +From a2cb8467652ca36bd5420dc685d5e6b76014c3e1 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 1 Nov 2022 13:10:20 +0900 +Subject: [PATCH] parse_hwdb: allow negative value for EVDEV_ABS_ properties + +(cherry picked from commit f0b75cda5a3eac3fe953fd1a429a39e077387997) + +Related #2138081 +--- + hwdb.d/parse_hwdb.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py +index c0dde75650..5a1ae5a6a0 100755 +--- a/hwdb.d/parse_hwdb.py ++++ b/hwdb.d/parse_hwdb.py +@@ -202,7 +202,7 @@ def property_grammar(): + ] + abs_props = [Regex(r'EVDEV_ABS_[0-9a-f]{2}')('NAME') + - Suppress('=') - +- Word(nums + ':')('VALUE') ++ Word('-' + nums + ':')('VALUE') + ] + + grammar = Or(fixed_props + kbd_props + abs_props) + EOL diff --git a/SOURCES/0006-units-add-Install-section-to-tmp.mount.patch b/SOURCES/0006-units-add-Install-section-to-tmp.mount.patch deleted file mode 100644 index 1eb4e7e..0000000 --- a/SOURCES/0006-units-add-Install-section-to-tmp.mount.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 0e4d18011e394d83c5e6ce045c05b03619fe7145 Mon Sep 17 00:00:00 2001 -From: Jan Synacek -Date: Tue, 22 Jan 2019 10:28:42 +0100 -Subject: [PATCH] units: add [Install] section to tmp.mount - -RHEL-only - -Related: #1959826 ---- - units/tmp.mount | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/units/tmp.mount b/units/tmp.mount -index 4e1bb8de24..4874e8daff 100644 ---- a/units/tmp.mount -+++ b/units/tmp.mount -@@ -23,3 +23,7 @@ What=tmpfs - Where=/tmp - Type=tmpfs - Options=mode=1777,strictatime,nosuid,nodev,size=50%,nr_inodes=1m -+ -+# Make 'systemctl enable tmp.mount' work: -+[Install] -+WantedBy=local-fs.target diff --git a/SOURCES/0007-rc-local-order-after-network-online.target.patch b/SOURCES/0007-rc-local-order-after-network-online.target.patch deleted file mode 100644 index d7c6ae9..0000000 --- a/SOURCES/0007-rc-local-order-after-network-online.target.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 6dc2d5628fded20609561ca3c63517b3dc381042 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Thu, 11 Mar 2021 15:48:23 +0100 -Subject: [PATCH] rc-local: order after network-online.target - -I think this was the intent of commit 91b684c7300879a8d2006038f7d9185d92c3c3bf, -just network-online.target didn't exist back then. - -RHEL-only - -Resolves: #1954429 ---- - units/rc-local.service.in | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/units/rc-local.service.in b/units/rc-local.service.in -index 55e83dfe00..0eee722154 100644 ---- a/units/rc-local.service.in -+++ b/units/rc-local.service.in -@@ -13,7 +13,8 @@ - Description={{RC_LOCAL_PATH}} Compatibility - Documentation=man:systemd-rc-local-generator(8) - ConditionFileIsExecutable={{RC_LOCAL_PATH}} --After=network.target -+After=network-online.target -+Wants=network-online.target - - [Service] - Type=forking diff --git a/SOURCES/0007-resolved-fix-typo-in-feature-level-table.patch b/SOURCES/0007-resolved-fix-typo-in-feature-level-table.patch new file mode 100644 index 0000000..ecb09f5 --- /dev/null +++ b/SOURCES/0007-resolved-fix-typo-in-feature-level-table.patch @@ -0,0 +1,24 @@ +From 07aa3fcbb7b4e4cca7b2e9be6e038ab92bfc5fdc Mon Sep 17 00:00:00 2001 +From: Youfu Zhang <1315097+zhangyoufu@users.noreply.github.com> +Date: Tue, 1 Nov 2022 13:18:25 +0800 +Subject: [PATCH] resolved: fix typo in feature level table + +(cherry picked from commit 2ab0042854934827e61076c6e42c7381fdf78fdf) + +Related #2138081 +--- + src/resolve/resolved-dns-server.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c +index 9b74a8d6d8..04a4f53ed0 100644 +--- a/src/resolve/resolved-dns-server.c ++++ b/src/resolve/resolved-dns-server.c +@@ -1087,6 +1087,6 @@ static const char* const dns_server_feature_level_table[_DNS_SERVER_FEATURE_LEVE + [DNS_SERVER_FEATURE_LEVEL_EDNS0] = "UDP+EDNS0", + [DNS_SERVER_FEATURE_LEVEL_TLS_PLAIN] = "TLS+EDNS0", + [DNS_SERVER_FEATURE_LEVEL_DO] = "UDP+EDNS0+DO", +- [DNS_SERVER_FEATURE_LEVEL_TLS_DO] = "TLS+EDNS0+D0", ++ [DNS_SERVER_FEATURE_LEVEL_TLS_DO] = "TLS+EDNS0+DO", + }; + DEFINE_STRING_TABLE_LOOKUP(dns_server_feature_level, DnsServerFeatureLevel); diff --git a/SOURCES/0008-ci-drop-CIs-irrelevant-for-downstream.patch b/SOURCES/0008-ci-drop-CIs-irrelevant-for-downstream.patch deleted file mode 100644 index 7d41fd8..0000000 --- a/SOURCES/0008-ci-drop-CIs-irrelevant-for-downstream.patch +++ /dev/null @@ -1,298 +0,0 @@ -From b9c7cd794733257a17b2eb9eadc716007e509ca9 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sun, 18 Apr 2021 20:46:06 +0200 -Subject: [PATCH] ci: drop CIs irrelevant for downstream - - * CIFuzz would need a separate project in oss-fuzz - * Coverity would also need a separate project - * the Labeler action is superfluous, since we already have a bot for - that - * mkosi testing on other distros is irrelevant for downstream RHEL - repo - -Resolves: #1960703 -rhel-only ---- - .github/labeler.yml | 40 ----------------- - .github/workflows/cifuzz.yml | 55 ----------------------- - .github/workflows/coverity.yml | 43 ------------------ - .github/workflows/labeler.yml | 23 ---------- - .github/workflows/mkosi.yml | 80 ---------------------------------- - 5 files changed, 241 deletions(-) - delete mode 100644 .github/labeler.yml - delete mode 100644 .github/workflows/cifuzz.yml - delete mode 100644 .github/workflows/coverity.yml - delete mode 100644 .github/workflows/labeler.yml - delete mode 100644 .github/workflows/mkosi.yml - -diff --git a/.github/labeler.yml b/.github/labeler.yml -deleted file mode 100644 -index 7d128f42d6..0000000000 ---- a/.github/labeler.yml -+++ /dev/null -@@ -1,40 +0,0 @@ --# SPDX-License-Identifier: LGPL-2.1-or-later -- --hwdb: -- - hwdb.d/**/* --units: -- - units/**/* --documentation: -- - NEWS -- - docs/* --network: -- - src/libsystemd-network/**/* -- - src/network/**/* --udev: -- - src/udev/**/* -- - src/libudev/* --selinux: -- - '**/*selinux*' --apparmor: -- - '**/*apparmor*' --meson: -- - meson_option.txt --mkosi: -- - .mkosi/* -- - mkosi.build --busctl: -- - src/busctl/* --systemctl: -- - src/systemctl/* --journal: -- - src/journal/* --journal-remote: -- - src/journal-remote/* --portable: -- - src/portable/**/* --resolve: -- - src/resolve/* --timedate: -- - src/timedate/* --timesync: -- - src/timesync/* -diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml -deleted file mode 100644 -index 11ea788a47..0000000000 ---- a/.github/workflows/cifuzz.yml -+++ /dev/null -@@ -1,55 +0,0 @@ ----- --# vi: ts=2 sw=2 et: --# SPDX-License-Identifier: LGPL-2.1-or-later --# See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/ -- --name: CIFuzz -- --permissions: -- contents: read -- --on: -- pull_request: -- paths: -- - '**/meson.build' -- - '.github/workflows/**' -- - 'meson_options.txt' -- - 'src/**' -- - 'test/fuzz/**' -- - 'tools/oss-fuzz.sh' -- push: -- branches: -- - main --jobs: -- Fuzzing: -- runs-on: ubuntu-latest -- if: github.repository == 'systemd/systemd' -- concurrency: -- group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }} -- cancel-in-progress: true -- strategy: -- fail-fast: false -- matrix: -- sanitizer: [address, undefined, memory] -- steps: -- - name: Build Fuzzers (${{ matrix.sanitizer }}) -- id: build -- uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master -- with: -- oss-fuzz-project-name: 'systemd' -- dry-run: false -- allowed-broken-targets-percentage: 0 -- sanitizer: ${{ matrix.sanitizer }} -- - name: Run Fuzzers (${{ matrix.sanitizer }}) -- uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master -- with: -- oss-fuzz-project-name: 'systemd' -- fuzz-seconds: 600 -- dry-run: false -- sanitizer: ${{ matrix.sanitizer }} -- - name: Upload Crash -- uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2 -- if: failure() && steps.build.outcome == 'success' -- with: -- name: ${{ matrix.sanitizer }}-artifacts -- path: ./out/artifacts -diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml -deleted file mode 100644 -index a164d16fbf..0000000000 ---- a/.github/workflows/coverity.yml -+++ /dev/null -@@ -1,43 +0,0 @@ ----- --# vi: ts=2 sw=2 et: --# SPDX-License-Identifier: LGPL-2.1-or-later --# --name: Coverity -- --on: -- schedule: -- # Run Coverity daily at midnight -- - cron: '0 0 * * *' -- --permissions: -- contents: read -- --jobs: -- build: -- runs-on: ubuntu-20.04 -- if: github.repository == 'systemd/systemd' -- env: -- COVERITY_SCAN_BRANCH_PATTERN: "${{ github.ref}}" -- COVERITY_SCAN_NOTIFICATION_EMAIL: "" -- COVERITY_SCAN_PROJECT_NAME: "${{ github.repository }}" -- # Set in repo settings -> secrets -> repository secrets -- COVERITY_SCAN_TOKEN: "${{ secrets.COVERITY_SCAN_TOKEN }}" -- CURRENT_REF: "${{ github.ref }}" -- steps: -- - name: Repository checkout -- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 -- # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable -- - name: Set the $COVERITY_SCAN_NOTIFICATION_EMAIL env variable -- run: echo "COVERITY_SCAN_NOTIFICATION_EMAIL=$(git log -1 ${{ github.sha }} --pretty=\"%aE\")" >> $GITHUB_ENV -- - name: Install Coverity tools -- run: tools/get-coverity.sh -- # Reuse the setup phase of the unit test script to avoid code duplication -- - name: Install build dependencies -- run: sudo -E .github/workflows/unit_tests.sh SETUP -- # Preconfigure with meson to prevent Coverity from capturing meson metadata -- - name: Preconfigure the build directory -- run: meson cov-build -Dman=false -- - name: Build -- run: tools/coverity.sh build -- - name: Upload the results -- run: tools/coverity.sh upload -diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml -deleted file mode 100644 -index 34d9d63d42..0000000000 ---- a/.github/workflows/labeler.yml -+++ /dev/null -@@ -1,23 +0,0 @@ ----- --# vi: ts=2 sw=2 et: --# SPDX-License-Identifier: LGPL-2.1-or-later --# --name: "Pull Request Labeler" -- --on: --- pull_request_target -- --permissions: -- contents: read -- --jobs: -- triage: -- runs-on: ubuntu-latest -- permissions: -- pull-requests: write -- steps: -- - uses: actions/labeler@69da01b8e0929f147b8943611bee75ee4175a49e -- with: -- repo-token: "${{ secrets.GITHUB_TOKEN }}" -- configuration-path: .github/labeler.yml -- sync-labels: "" # This is a workaround for issue 18671 -diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml -deleted file mode 100644 -index 8fd6c72e26..0000000000 ---- a/.github/workflows/mkosi.yml -+++ /dev/null -@@ -1,80 +0,0 @@ ----- --# vi: ts=2 sw=2 et: --# SPDX-License-Identifier: LGPL-2.1-or-later --# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in mkosi.default.d/. --name: mkosi -- --on: -- push: -- branches: -- - main -- - v[0-9]+-stable -- pull_request: -- branches: -- - main -- - v[0-9]+-stable -- --permissions: -- contents: read -- --env: -- # Enable debug logging in systemd, but keep udev's log level to info, -- # since it's _very_ verbose in the QEMU task -- KERNEL_CMDLINE: "systemd.unit=mkosi-check-and-shutdown.service !quiet systemd.log_level=debug systemd.log_target=console udev.log_level=info systemd.default_standard_output=journal+console" -- --jobs: -- ci: -- runs-on: ubuntu-20.04 -- concurrency: -- group: ${{ github.workflow }}-${{ matrix.distro }}-${{ github.ref }} -- cancel-in-progress: true -- strategy: -- fail-fast: false -- matrix: -- distro: -- - arch -- - debian -- - ubuntu -- - fedora -- - opensuse -- -- steps: -- - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 -- - uses: systemd/mkosi@4d64fc8134f93d87ac584183e7762ac1d0efa0e5 -- -- - name: Install -- run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2 -- -- - name: Configure -- run: echo -e "[Distribution]\nDistribution=${{ matrix.distro }}\n" >mkosi.default -- -- # Ubuntu's systemd-nspawn doesn't support faccessat2() syscall, which is -- # required, since current Arch's glibc implements faccessat() via faccessat2(). -- - name: Update systemd-nspawn -- if: ${{ matrix.distro == 'arch' }} -- run: | -- echo "deb-src http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list -- sudo apt update -- sudo apt build-dep systemd -- meson build -- ninja -C build -- sudo ln -svf $PWD/build/systemd-nspawn `which systemd-nspawn` -- systemd-nspawn --version -- -- - name: Build ${{ matrix.distro }} -- run: ./.github/workflows/run_mkosi.sh --build-environment=CI_BUILD=1 --kernel-command-line "${{ env.KERNEL_CMDLINE }}" build -- -- - name: Show ${{ matrix.distro }} image summary -- run: ./.github/workflows/run_mkosi.sh summary -- -- - name: Boot ${{ matrix.distro }} systemd-nspawn -- run: ./.github/workflows/run_mkosi.sh boot ${{ env.KERNEL_CMDLINE }} -- -- - name: Check ${{ matrix.distro }} systemd-nspawn -- run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" -- -- - name: Boot ${{ matrix.distro }} QEMU -- run: ./.github/workflows/run_mkosi.sh qemu -- -- - name: Check ${{ matrix.distro }} QEMU -- run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" diff --git a/SOURCES/0008-coverage-Mark-_coverage__exit-as-noreturn.patch b/SOURCES/0008-coverage-Mark-_coverage__exit-as-noreturn.patch new file mode 100644 index 0000000..cc41699 --- /dev/null +++ b/SOURCES/0008-coverage-Mark-_coverage__exit-as-noreturn.patch @@ -0,0 +1,28 @@ +From a1f18876d5f7122c9f94af9a84f1324f50dba0ed Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 1 Nov 2022 09:43:32 +0100 +Subject: [PATCH] coverage: Mark _coverage__exit as noreturn + +../src/basic/coverage.h:15:48: warning: function '_coverage__exit' could +be declared with attribute 'noreturn' [-Wmissing-noreturn] + +(cherry picked from commit 0bab5534b334677652bb69fe15eaa54ce84cbe7d) + +Related #2138081 +--- + src/basic/coverage.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/basic/coverage.h b/src/basic/coverage.h +index 3ef02cf70e..640bddc485 100644 +--- a/src/basic/coverage.h ++++ b/src/basic/coverage.h +@@ -12,7 +12,7 @@ + extern void _exit(int); + extern void __gcov_dump(void); + +-static inline void _coverage__exit(int status) { ++static inline _Noreturn void _coverage__exit(int status) { + __gcov_dump(); + _exit(status); + } diff --git a/SOURCES/0009-ci-reconfigure-Packit-for-RHEL-9.patch b/SOURCES/0009-ci-reconfigure-Packit-for-RHEL-9.patch deleted file mode 100644 index fbe6ca9..0000000 --- a/SOURCES/0009-ci-reconfigure-Packit-for-RHEL-9.patch +++ /dev/null @@ -1,61 +0,0 @@ -From d931821a263e34805f825cf12a0a0fcde9beda99 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 9 Jun 2021 15:23:59 +0200 -Subject: [PATCH] ci: reconfigure Packit for RHEL 9 - -Resolves: #1960703 -rhel-only ---- - .packit.yml | 28 ++++++++++++++++++---------- - 1 file changed, 18 insertions(+), 10 deletions(-) - -diff --git a/.packit.yml b/.packit.yml -index 962c77913e..3461bccbc5 100644 ---- a/.packit.yml -+++ b/.packit.yml -@@ -16,14 +16,12 @@ upstream_tag_template: "v{version}" - - actions: - post-upstream-clone: -- # Use the Fedora Rawhide specfile -- - "git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1" -+ # Use the CentOS Stream specfile -+ - "git clone https://gitlab.com/redhat/centos-stream/rpms/systemd.git .packit_rpm --depth=1" - # Drop the "sources" file so rebase-helper doesn't think we're a dist-git - - "rm -fv .packit_rpm/sources" -- # Drop backported patches from the specfile, but keep the downstream-only ones -- # - Patch0000-0499: backported patches from upstream -- # - Patch0500-9999: downstream-only patches -- - "sed -ri '/^Patch0[0-4]?[0-9]{0,2}\\:.+\\.patch/d' .packit_rpm/systemd.spec" -+ # Drop all patches, since they're already included in the tarball -+ - "sed -ri '/^Patch[0-9]+:/d' .packit_rpm/systemd.spec" - # Build the RPM with --werror. Even though --werror doesn't work in all - # cases (see [0]), we can't use -Dc_args=/-Dcpp_args= here because of the - # RPM hardening macros, that use $CFLAGS/$CPPFLAGS (see [1]). -@@ -32,12 +30,22 @@ actions: - # [1] https://github.com/systemd/systemd/pull/18908#issuecomment-792250110 - - 'sed -i "/^CONFIGURE_OPTS=(/a--werror" .packit_rpm/systemd.spec' - -+# Available targets can be listed via `copr-cli list-chroots` - jobs: -+# Build test - - job: copr_build - trigger: pull_request - metadata: - targets: -- - fedora-rawhide-aarch64 -- - fedora-rawhide-i386 -- - fedora-rawhide-ppc64le -- - fedora-rawhide-x86_64 -+ # FIXME: change to CentOS 9 once it's available -+ - fedora-34-x86_64 -+ - fedora-34-aarch64 -+ -+# TODO: can't use TFT yet due to https://pagure.io/fedora-ci/general/issue/184 -+# Run tests (via testing farm) -+#- job: tests -+# trigger: pull_request -+# metadata: -+# targets: -+# # FIXME: change to CentOS 9 once it's available -+# - fedora-34-x86_64 diff --git a/SOURCES/0009-namespace-Add-hidepid-subset-support-check.patch b/SOURCES/0009-namespace-Add-hidepid-subset-support-check.patch new file mode 100644 index 0000000..34a609c --- /dev/null +++ b/SOURCES/0009-namespace-Add-hidepid-subset-support-check.patch @@ -0,0 +1,154 @@ +From 6ab61ac93e534aec1ea4d16e77c1c355c8286e64 Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Thu, 27 Oct 2022 13:14:12 +0200 +Subject: [PATCH] namespace: Add hidepid/subset support check + +Using fsopen()/fsconfig(), we can check if hidepid/subset are supported to +avoid the noisy logs from the kernel if they aren't supported. This works +on centos/redhat 8 as well since they've backported fsopen()/fsconfig(). + +(cherry picked from commit 1c265fcd5963603d338233840129ecad8d9c1420) + +Related #2138081 +--- + meson.build | 2 ++ + src/basic/missing_syscall.h | 40 +++++++++++++++++++++++++++++++ + src/core/namespace.c | 47 ++++++++++++++++++++++++++++++++----- + 3 files changed, 83 insertions(+), 6 deletions(-) + +diff --git a/meson.build b/meson.build +index 76ad51d3fb..7750534466 100644 +--- a/meson.build ++++ b/meson.build +@@ -606,6 +606,8 @@ foreach ident : [ + ['mount_setattr', '''#include '''], + ['move_mount', '''#include '''], + ['open_tree', '''#include '''], ++ ['fsopen', '''#include '''], ++ ['fsconfig', '''#include '''], + ['getdents64', '''#include '''], + ] + +diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h +index 793d111c55..d54e59fdf9 100644 +--- a/src/basic/missing_syscall.h ++++ b/src/basic/missing_syscall.h +@@ -593,6 +593,46 @@ static inline int missing_move_mount( + + /* ======================================================================= */ + ++#if !HAVE_FSOPEN ++ ++#ifndef FSOPEN_CLOEXEC ++#define FSOPEN_CLOEXEC 0x00000001 ++#endif ++ ++static inline int missing_fsopen(const char *fsname, unsigned flags) { ++# if defined __NR_fsopen && __NR_fsopen >= 0 ++ return syscall(__NR_fsopen, fsname, flags); ++# else ++ errno = ENOSYS; ++ return -1; ++# endif ++} ++ ++# define fsopen missing_fsopen ++#endif ++ ++/* ======================================================================= */ ++ ++#if !HAVE_FSCONFIG ++ ++#ifndef FSCONFIG_SET_STRING ++#define FSCONFIG_SET_STRING 1 /* Set parameter, supplying a string value */ ++#endif ++ ++static inline int missing_fsconfig(int fd, unsigned cmd, const char *key, const void *value, int aux) { ++# if defined __NR_fsconfig && __NR_fsconfig >= 0 ++ return syscall(__NR_fsconfig, fd, cmd, key, value, aux); ++# else ++ errno = ENOSYS; ++ return -1; ++# endif ++} ++ ++# define fsconfig missing_fsconfig ++#endif ++ ++/* ======================================================================= */ ++ + #if !HAVE_GETDENTS64 + + static inline ssize_t missing_getdents64(int fd, void *buffer, size_t length) { +diff --git a/src/core/namespace.c b/src/core/namespace.c +index c3cced7410..852be3bdde 100644 +--- a/src/core/namespace.c ++++ b/src/core/namespace.c +@@ -26,6 +26,7 @@ + #include "list.h" + #include "loop-util.h" + #include "loopback-setup.h" ++#include "missing_syscall.h" + #include "mkdir-label.h" + #include "mount-util.h" + #include "mountpoint-util.h" +@@ -1073,6 +1074,27 @@ static int mount_sysfs(const MountEntry *m) { + return 1; + } + ++static bool mount_option_supported(const char *fstype, const char *key, const char *value) { ++ _cleanup_close_ int fd = -1; ++ int r; ++ ++ /* This function assumes support by default. Only if the fsconfig() call fails with -EINVAL/-EOPNOTSUPP ++ * will it report that the option/value is not supported. */ ++ ++ fd = fsopen(fstype, FSOPEN_CLOEXEC); ++ if (fd < 0) { ++ if (errno != ENOSYS) ++ log_debug_errno(errno, "Failed to open superblock context for '%s': %m", fstype); ++ return true; /* If fsopen() fails for whatever reason, assume the value is supported. */ ++ } ++ ++ r = fsconfig(fd, FSCONFIG_SET_STRING, key, value, 0); ++ if (r < 0 && !IN_SET(errno, EINVAL, EOPNOTSUPP, ENOSYS)) ++ log_debug_errno(errno, "Failed to set '%s=%s' on '%s' superblock context: %m", key, value, fstype); ++ ++ return r >= 0 || !IN_SET(errno, EINVAL, EOPNOTSUPP); ++} ++ + static int mount_procfs(const MountEntry *m, const NamespaceInfo *ns_info) { + _cleanup_free_ char *opts = NULL; + const char *entry_path; +@@ -1090,12 +1112,25 @@ static int mount_procfs(const MountEntry *m, const NamespaceInfo *ns_info) { + * per-instance, we'll exclusively use the textual value for hidepid=, since support was + * added in the same commit: if it's supported it is thus also per-instance. */ + +- opts = strjoin("hidepid=", +- ns_info->protect_proc == PROTECT_PROC_DEFAULT ? "off" : +- protect_proc_to_string(ns_info->protect_proc), +- ns_info->proc_subset == PROC_SUBSET_PID ? ",subset=pid" : ""); +- if (!opts) +- return -ENOMEM; ++ const char *hpv = ns_info->protect_proc == PROTECT_PROC_DEFAULT ? ++ "off" : ++ protect_proc_to_string(ns_info->protect_proc); ++ ++ /* hidepid= support was added in 5.8, so we can use fsconfig()/fsopen() (which were added in ++ * 5.2) to check if hidepid= is supported. This avoids a noisy dmesg log by the kernel when ++ * trying to use hidepid= on systems where it isn't supported. The same applies for subset=. ++ * fsopen()/fsconfig() was also backported on some distros which allows us to detect ++ * hidepid=/subset= support in even more scenarios. */ ++ ++ if (mount_option_supported("proc", "hidepid", hpv)) { ++ opts = strjoin("hidepid=", hpv); ++ if (!opts) ++ return -ENOMEM; ++ } ++ ++ if (ns_info->proc_subset == PROC_SUBSET_PID && mount_option_supported("proc", "subset", "pid")) ++ if (!strextend_with_separator(&opts, ",", "subset=pid")) ++ return -ENOMEM; + } + + entry_path = mount_entry_path(m); diff --git a/SOURCES/0010-ci-run-unit-tests-on-z-stream-branches-as-well.patch b/SOURCES/0010-ci-run-unit-tests-on-z-stream-branches-as-well.patch deleted file mode 100644 index 65ae57c..0000000 --- a/SOURCES/0010-ci-run-unit-tests-on-z-stream-branches-as-well.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 785b53d7b16c6c56638029e8b4f59c436f1394b8 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 15 Jul 2021 12:23:27 +0200 -Subject: [PATCH] ci: run unit tests on z-stream branches as well - -Resolves: #1960703 -rhel-only ---- - .github/workflows/unit_tests.yml | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml -index d4a4f3c723..2afde5d59d 100644 ---- a/.github/workflows/unit_tests.yml -+++ b/.github/workflows/unit_tests.yml -@@ -3,11 +3,7 @@ - # SPDX-License-Identifier: LGPL-2.1-or-later - # - name: Unit tests --on: -- pull_request: -- branches: -- - main -- - v[0-9]+-stable -+on: [pull_request] - - permissions: - contents: read diff --git a/SOURCES/0010-test-add-a-couple-of-sanity-tests-for-loginctl.patch b/SOURCES/0010-test-add-a-couple-of-sanity-tests-for-loginctl.patch new file mode 100644 index 0000000..16aa83d --- /dev/null +++ b/SOURCES/0010-test-add-a-couple-of-sanity-tests-for-loginctl.patch @@ -0,0 +1,75 @@ +From 07f188e9ca17345af904e6549c03b1c57d34405a Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 1 Nov 2022 09:17:58 +0100 +Subject: [PATCH] test: add a couple of sanity tests for loginctl + +(cherry picked from commit 70e9066bc2eaf159e9cde7d95bbee99e44f3045a) + +Related #2138081 +--- + test/units/testsuite-35.sh | 45 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh +index 4ef0f0c11c..85925f2471 100755 +--- a/test/units/testsuite-35.sh ++++ b/test/units/testsuite-35.sh +@@ -338,6 +338,50 @@ EOF + assert_eq "$(loginctl --no-legend | awk '$3=="logind-test-user" { print $5 }')" "tty2" + } + ++test_sanity_check() { ++ # Exercise basic loginctl options ++ ++ if [[ ! -c /dev/tty2 ]]; then ++ echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." ++ return ++ fi ++ ++ trap cleanup_session RETURN ++ create_session ++ ++ # Run most of the loginctl commands from a user session to make ++ # the seat/session autodetection work-ish ++ systemd-run --user --pipe --wait -M "logind-test-user@.host" bash -eux <<\EOF ++ loginctl list-sessions ++ loginctl session-status ++ loginctl show-session ++ loginctl show-session -P DelayInhibited ++ ++ # We're not in the same session scope, so in this case we need to specify ++ # the session ID explicitly ++ session=$(loginctl --no-legend | awk '$3 == "logind-test-user" { print $1; exit; }') ++ loginctl kill-session --signal=SIGCONT "$session" ++ # FIXME(?) ++ #loginctl kill-session --signal=SIGCONT --kill-who=leader "$session" ++ ++ loginctl list-users ++ loginctl user-status ++ loginctl show-user -a ++ loginctl show-user -P IdleAction ++ loginctl kill-user --signal=SIGCONT "" ++ ++ loginctl list-seats ++ loginctl seat-status ++ loginctl show-seat ++ loginctl show-seat -P IdleActionUSec ++EOF ++ ++ # Requires root privileges ++ loginctl lock-sessions ++ loginctl unlock-sessions ++ loginctl flush-devices ++} ++ + test_session() { + local dev + +@@ -537,6 +581,7 @@ test_properties + test_started + test_suspend_on_lid + test_shutdown ++test_sanity_check + test_session + test_lock_idle_action + test_session_properties diff --git a/SOURCES/0011-random-util-increase-random-seed-size-to-1024.patch b/SOURCES/0011-random-util-increase-random-seed-size-to-1024.patch deleted file mode 100644 index f026b4b..0000000 --- a/SOURCES/0011-random-util-increase-random-seed-size-to-1024.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c1555a7d38235cca32492c4606e30028dc008b35 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Thu, 15 Jul 2021 11:15:17 +0200 -Subject: [PATCH] random-util: increase random seed size to 1024 - -RHEL-only - -Resolves: #1982603 ---- - src/basic/random-util.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/basic/random-util.h b/src/basic/random-util.h -index e6528ddc7f..fda78552f6 100644 ---- a/src/basic/random-util.h -+++ b/src/basic/random-util.h -@@ -34,7 +34,7 @@ static inline uint32_t random_u32(void) { - int rdrand(unsigned long *ret); - - /* Some limits on the pool sizes when we deal with the kernel random pool */ --#define RANDOM_POOL_SIZE_MIN 512U -+#define RANDOM_POOL_SIZE_MIN 1024U - #define RANDOM_POOL_SIZE_MAX (10U*1024U*1024U) - - size_t random_pool_size(void); diff --git a/SOURCES/0011-test-rename-TEST-26-SETENV-to-TEST-26-SYSTEMCTL.patch b/SOURCES/0011-test-rename-TEST-26-SETENV-to-TEST-26-SYSTEMCTL.patch new file mode 100644 index 0000000..db89638 --- /dev/null +++ b/SOURCES/0011-test-rename-TEST-26-SETENV-to-TEST-26-SYSTEMCTL.patch @@ -0,0 +1,48 @@ +From 66a9a36c3bcd5709c30ac1f2be998eea034a9f6d Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 1 Nov 2022 17:53:42 +0100 +Subject: [PATCH] test: rename TEST-26-SETENV to TEST-26-SYSTEMCTL + +(cherry picked from commit c5c258ae0a4a0cfc829ed07ff96c7fab79b6ca71) + +Related #2138081 +--- + test/{TEST-26-SETENV => TEST-26-SYSTEMCTL}/Makefile | 0 + test/{TEST-26-SETENV => TEST-26-SYSTEMCTL}/test.sh | 2 +- + test/units/testsuite-26.service | 2 +- + 3 files changed, 2 insertions(+), 2 deletions(-) + rename test/{TEST-26-SETENV => TEST-26-SYSTEMCTL}/Makefile (100%) + rename test/{TEST-26-SETENV => TEST-26-SYSTEMCTL}/test.sh (79%) + +diff --git a/test/TEST-26-SETENV/Makefile b/test/TEST-26-SYSTEMCTL/Makefile +similarity index 100% +rename from test/TEST-26-SETENV/Makefile +rename to test/TEST-26-SYSTEMCTL/Makefile +diff --git a/test/TEST-26-SETENV/test.sh b/test/TEST-26-SYSTEMCTL/test.sh +similarity index 79% +rename from test/TEST-26-SETENV/test.sh +rename to test/TEST-26-SYSTEMCTL/test.sh +index b38e37bfce..64accf850f 100755 +--- a/test/TEST-26-SETENV/test.sh ++++ b/test/TEST-26-SYSTEMCTL/test.sh +@@ -2,7 +2,7 @@ + # SPDX-License-Identifier: LGPL-2.1-or-later + set -e + +-TEST_DESCRIPTION="test setenv" ++TEST_DESCRIPTION="systemctl-related tests" + + # shellcheck source=test/test-functions + . "${TEST_BASE_DIR:?}/test-functions" +diff --git a/test/units/testsuite-26.service b/test/units/testsuite-26.service +index aa553b61a6..d8fdaffb06 100644 +--- a/test/units/testsuite-26.service ++++ b/test/units/testsuite-26.service +@@ -1,6 +1,6 @@ + # SPDX-License-Identifier: LGPL-2.1-or-later + [Unit] +-Description=TEST-26-SETENV ++Description=TEST-26-SYSTEMCTL + + [Service] + ExecStartPre=rm -f /failed /testok diff --git a/SOURCES/0012-journal-don-t-enable-systemd-journald-audit.socket-b.patch b/SOURCES/0012-journal-don-t-enable-systemd-journald-audit.socket-b.patch deleted file mode 100644 index 944281a..0000000 --- a/SOURCES/0012-journal-don-t-enable-systemd-journald-audit.socket-b.patch +++ /dev/null @@ -1,41 +0,0 @@ -From f1d66259bcff8333d7dd495bbeef274206f7300d Mon Sep 17 00:00:00 2001 -From: Jan Synacek -Date: Thu, 2 May 2019 14:11:54 +0200 -Subject: [PATCH] journal: don't enable systemd-journald-audit.socket by - default - -RHEL-only - -Resolves: #1973856 ---- - units/meson.build | 3 +-- - units/systemd-journald.service.in | 2 +- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/units/meson.build b/units/meson.build -index a9bf28f6d9..69d53f4259 100644 ---- a/units/meson.build -+++ b/units/meson.build -@@ -124,8 +124,7 @@ units = [ - 'sysinit.target.wants/'], - ['systemd-journal-gatewayd.socket', 'ENABLE_REMOTE HAVE_MICROHTTPD'], - ['systemd-journal-remote.socket', 'ENABLE_REMOTE HAVE_MICROHTTPD'], -- ['systemd-journald-audit.socket', '', -- 'sockets.target.wants/'], -+ ['systemd-journald-audit.socket', ''], - ['systemd-journald-dev-log.socket', '', - 'sockets.target.wants/'], - ['systemd-journald.socket', '', -diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in -index cd17b6b4e7..d981273b07 100644 ---- a/units/systemd-journald.service.in -+++ b/units/systemd-journald.service.in -@@ -12,7 +12,7 @@ Description=Journal Service - Documentation=man:systemd-journald.service(8) man:journald.conf(5) - DefaultDependencies=no - Requires=systemd-journald.socket --After=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket syslog.socket -+After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket - Before=sysinit.target - - [Service] diff --git a/SOURCES/0012-test-add-a-couple-of-sanity-tests-for-systemctl.patch b/SOURCES/0012-test-add-a-couple-of-sanity-tests-for-systemctl.patch new file mode 100644 index 0000000..3d03956 --- /dev/null +++ b/SOURCES/0012-test-add-a-couple-of-sanity-tests-for-systemctl.patch @@ -0,0 +1,251 @@ +From 680d2b33d3b2a0bed17c2c1594690155bdb910bb Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 1 Nov 2022 20:47:37 +0100 +Subject: [PATCH] test: add a couple of sanity tests for systemctl + +(cherry picked from commit d16684fe13e1d56e55df19b57b6c01b9a9303086) + +Related #2138081 +--- + test/units/testsuite-26.sh | 209 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 202 insertions(+), 7 deletions(-) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index ad08415317..b83f85917b 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -3,32 +3,227 @@ + set -eux + set -o pipefail + ++at_exit() { ++ if [[ -v UNIT_NAME && -e "/usr/lib/systemd/system/$UNIT_NAME" ]]; then ++ rm -fv "/usr/lib/systemd/system/$UNIT_NAME" ++ fi ++} ++ ++trap at_exit EXIT ++ ++# Create a simple unit file for testing ++# Note: the service file is created under /usr on purpose to test ++# the 'revert' verb as well ++UNIT_NAME="systemctl-test-$RANDOM.service" ++cat >"/usr/lib/systemd/system/$UNIT_NAME" <<\EOF ++[Unit] ++Description=systemctl test ++ ++[Service] ++ExecStart=sleep infinity ++ExecReload=true ++ ++# For systemctl clean ++CacheDirectory=%n ++ConfigurationDirectory=%n ++LogsDirectory=%n ++RuntimeDirectory=%n ++StateDirectory=%n ++ ++[Install] ++WantedBy=multi-user.target ++EOF ++ ++# Configure the preset setting for the unit file ++mkdir /run/systemd/system-preset/ ++echo "disable $UNIT_NAME" >/run/systemd/system-preset/99-systemd-test.preset ++ ++systemctl daemon-reload ++ ++# Argument help ++systemctl --state help ++systemctl --signal help ++systemctl --type help ++ ++# list-dependencies ++systemctl list-dependencies systemd-journald ++systemctl list-dependencies --after systemd-journald ++systemctl list-dependencies --before systemd-journald ++systemctl list-dependencies --after --reverse systemd-journald ++systemctl list-dependencies --before --reverse systemd-journald ++systemctl list-dependencies --plain systemd-journald ++ ++# list-* verbs ++systemctl list-units ++systemctl list-units --recursive ++systemctl list-units --type=socket ++systemctl list-units --type=service,timer ++systemctl list-units --legend=yes -a "systemd-*" ++systemctl list-units --state=active ++systemctl list-units --with-dependencies systemd-journald.service ++systemctl list-units --with-dependencies --after systemd-journald.service ++systemctl list-units --with-dependencies --before --reverse systemd-journald.service ++systemctl list-sockets ++systemctl list-sockets --legend=no -a "*journal*" ++systemctl list-sockets --show-types ++systemctl list-sockets --state=listening ++systemctl list-timers -a -l ++systemctl list-unit-files ++systemctl list-unit-files "*journal*" ++systemctl list-jobs ++systemctl list-jobs --after ++systemctl list-jobs --before ++systemctl list-jobs --after --before ++systemctl list-jobs "*" ++ ++# Basic service management ++systemctl start --show-transaction "$UNIT_NAME" ++systemctl status -n 5 "$UNIT_NAME" ++systemctl is-active "$UNIT_NAME" ++systemctl reload -T "$UNIT_NAME" ++systemctl restart -T "$UNIT_NAME" ++systemctl try-restart --show-transaction "$UNIT_NAME" ++systemctl try-reload-or-restart --show-transaction "$UNIT_NAME" ++systemctl kill "$UNIT_NAME" ++(! systemctl is-active "$UNIT_NAME") ++systemctl restart "$UNIT_NAME" ++systemctl is-active "$UNIT_NAME" ++systemctl restart "$UNIT_NAME" ++systemctl stop "$UNIT_NAME" ++(! systemctl is-active "$UNIT_NAME") ++ ++# enable/disable/preset ++(! systemctl is-enabled "$UNIT_NAME") ++systemctl enable "$UNIT_NAME" ++systemctl is-enabled -l "$UNIT_NAME" ++# We created a preset file for this unit above with a "disable" policy ++systemctl preset "$UNIT_NAME" ++(! systemctl is-enabled "$UNIT_NAME") ++systemctl reenable "$UNIT_NAME" ++systemctl is-enabled "$UNIT_NAME" ++systemctl preset --preset-mode=enable-only "$UNIT_NAME" ++systemctl is-enabled "$UNIT_NAME" ++systemctl preset --preset-mode=disable-only "$UNIT_NAME" ++(! systemctl is-enabled "$UNIT_NAME") ++systemctl enable --runtime "$UNIT_NAME" ++[[ -e "/run/systemd/system/multi-user.target.wants/$UNIT_NAME" ]] ++systemctl is-enabled "$UNIT_NAME" ++systemctl disable "$UNIT_NAME" ++# The unit should be still enabled, as we didn't use the --runtime switch ++systemctl is-enabled "$UNIT_NAME" ++systemctl disable --runtime "$UNIT_NAME" ++(! systemctl is-enabled "$UNIT_NAME") ++ ++# mask/unmask/revert ++systemctl disable "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == disabled ]] ++systemctl mask "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == masked ]] ++systemctl unmask "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == disabled ]] ++systemctl mask "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == masked ]] ++systemctl revert "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == disabled ]] ++systemctl mask --runtime "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == masked-runtime ]] ++# This should be a no-op without the --runtime switch ++systemctl unmask "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == masked-runtime ]] ++systemctl unmask --runtime "$UNIT_NAME" ++[[ "$(systemctl is-enabled "$UNIT_NAME")" == disabled ]] ++ ++# add-wants/add-requires ++(! systemctl show -P Wants "$UNIT_NAME" | grep "systemd-journald.service") ++systemctl add-wants "$UNIT_NAME" "systemd-journald.service" ++systemctl show -P Wants "$UNIT_NAME" | grep "systemd-journald.service" ++(! systemctl show -P Requires "$UNIT_NAME" | grep "systemd-journald.service") ++systemctl add-requires "$UNIT_NAME" "systemd-journald.service" ++systemctl show -P Requires "$UNIT_NAME" | grep "systemd-journald.service" ++ ++# set-property ++systemctl set-property "$UNIT_NAME" IPAccounting=yes MemoryMax=1234567 ++systemctl cat "$UNIT_NAME" ++# These properties should be saved to a persistent storage ++grep -r "IPAccounting=yes" "/etc/systemd/system.control/${UNIT_NAME}.d/" ++grep -r "MemoryMax=1234567" "/etc/systemd/system.control/${UNIT_NAME}.d" ++systemctl revert "$UNIT_NAME" ++(! grep -r "IPAccounting=" "/etc/systemd/system.control/${UNIT_NAME}.d/") ++(! grep -r "MemoryMax=" "/etc/systemd/system.control/${UNIT_NAME}.d/") ++# Same stuff, but with --runtime, which should use /run ++systemctl set-property --runtime "$UNIT_NAME" CPUAccounting=no CPUQuota=10% ++systemctl cat "$UNIT_NAME" ++grep -r "CPUAccounting=no" "/run/systemd/system.control/${UNIT_NAME}.d/" ++grep -r "CPUQuota=10%" "/run/systemd/system.control/${UNIT_NAME}.d/" ++systemctl revert "$UNIT_NAME" ++(! grep -r "CPUAccounting=" "/run/systemd/system.control/${UNIT_NAME}.d/") ++(! grep -r "CPUQuota=" "/run/systemd/system.control/${UNIT_NAME}.d/") ++ ++# Failed-unit related tests ++systemd-run --unit "failed.service" /bin/false ++systemctl is-failed failed.service ++systemctl --state=failed | grep failed.service ++systemctl --failed | grep failed.service ++systemctl reset-failed "fail*.service" ++(! systemctl is-failed failed.service) ++ ++# clean ++systemctl restart "$UNIT_NAME" ++systemctl stop "$UNIT_NAME" ++# Check if the directories from *Directory= directives exist ++# (except RuntimeDirectory= in /run, which is removed when the unit is stopped) ++for path in /var/lib /var/cache /var/log /etc; do ++ [[ -e "$path/$UNIT_NAME" ]] ++done ++# Run the cleanup ++for what in "" configuration state cache logs runtime all; do ++ systemctl clean ${what:+--what="$what"} "$UNIT_NAME" ++done ++# All respective directories should be removed ++for path in /run /var/lib /var/cache /var/log /etc; do ++ [[ ! -e "$path/$UNIT_NAME" ]] ++done ++ ++# --timestamp ++for value in pretty us µs utc us+utc µs+utc; do ++ systemctl show -P KernelTimestamp --timestamp="$value" ++done ++ ++# Aux verbs & assorted checks ++systemctl is-active "*-journald.service" ++systemctl cat "*journal*" ++systemctl cat "$UNIT_NAME" ++systemctl help "$UNIT_NAME" ++ ++# show/set-environment + # Make sure PATH is set + systemctl show-environment | grep -q '^PATH=' +- + # Let's add an entry and override a built-in one + systemctl set-environment PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/testaddition FOO=BAR +- + # Check that both are set + systemctl show-environment | grep -q '^PATH=.*testaddition$' + systemctl show-environment | grep -q '^FOO=BAR$' +- + systemctl daemon-reload +- + # Check again after the reload + systemctl show-environment | grep -q '^PATH=.*testaddition$' + systemctl show-environment | grep -q '^FOO=BAR$' +- + # Check that JSON output is supported + systemctl show-environment --output=json | grep -q '^{.*"FOO":"BAR".*}$' +- + # Drop both + systemctl unset-environment FOO PATH +- + # Check that one is gone and the other reverted to the built-in + systemctl show-environment | grep '^FOO=$' && exit 1 + systemctl show-environment | grep '^PATH=.*testaddition$' && exit 1 + systemctl show-environment | grep -q '^PATH=' ++# Check import-environment ++export IMPORT_THIS=hello ++export IMPORT_THIS_TOO=world ++systemctl import-environment IMPORT_THIS IMPORT_THIS_TOO ++systemctl show-environment | grep "^IMPORT_THIS=$IMPORT_THIS" ++systemctl show-environment | grep "^IMPORT_THIS_TOO=$IMPORT_THIS_TOO" ++systemctl unset-environment IMPORT_THIS IMPORT_THIS_TOO ++(! systemctl show-environment | grep "^IMPORT_THIS=") ++(! systemctl show-environment | grep "^IMPORT_THIS_TOO=") + + echo OK >/testok + diff --git a/SOURCES/0013-docs-DPS-and-BLS-have-moved-to-uapi-group.org.patch b/SOURCES/0013-docs-DPS-and-BLS-have-moved-to-uapi-group.org.patch new file mode 100644 index 0000000..3572a6c --- /dev/null +++ b/SOURCES/0013-docs-DPS-and-BLS-have-moved-to-uapi-group.org.patch @@ -0,0 +1,1192 @@ +From 3c3d99309e5e8dfd1c6a7c48dc3810e30b77fefc Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Tue, 1 Nov 2022 21:55:23 +0000 +Subject: [PATCH] docs: DPS and BLS have moved to uapi-group.org + +(cherry picked from commit 729a49288153d341d5c4edd5d701421bb766135c) + +Related #2138081 +--- + docs/BOOT_LOADER_SPECIFICATION.md | 745 +----------------------------- + docs/DISCOVERABLE_PARTITIONS.md | 424 +---------------- + 2 files changed, 2 insertions(+), 1167 deletions(-) + +diff --git a/docs/BOOT_LOADER_SPECIFICATION.md b/docs/BOOT_LOADER_SPECIFICATION.md +index 9188033768..33066b2875 100644 +--- a/docs/BOOT_LOADER_SPECIFICATION.md ++++ b/docs/BOOT_LOADER_SPECIFICATION.md +@@ -1,744 +1 @@ +---- +-title: Boot Loader Specification +-category: Booting +-layout: default +-SPDX-License-Identifier: LGPL-2.1-or-later +---- +- +-# The Boot Loader Specification +- +-This document defines a set of file formats and naming conventions that allow +-the boot loader menu entries to be shared between multiple operating systems +-and boot loaders installed on one device. +- +-Operating systems cooperatively manage boot loader menu entry directories that +-contain drop-in files, making multi-boot scenarios easy to support. Boot menu +-entries are defined via two simple formats that can be understood by different +-boot loader implementations, operating systems, and userspace programs. The +-same scheme can be used to prepare OS media for cases where the firmware +-includes a boot loader. +- +-## Target Audience +- +-The target audience for this specification is: +- +-* Boot loader developers, to write a boot loader that directly reads its +- menu entries from these files +-* Firmware developers, to add generic boot loading support directly to the +- firmware itself +-* OS installer developers, to create appropriate partitions and set up the +- initial boot loader menu entries +-* Distribution developers, to create appropriate menu entry snippets when +- installing or updating kernel packages +-* UI developers, to implement user interfaces that list and select among the +- available boot options +- +-## The Partitions +- +-Everything described below is located on one or two partitions. The boot loader +-or user-space programs reading the boot loader menu entries should locate them +-in the following manner: +- +-* On disks with an MBR partition table: +- +- * The boot partition — a partition with the type ID of `0xEA` — shall be used +- as the single location for boot loader menu entries. +- +-* On disks with GPT (GUID Partition Table) +- +- * The EFI System Partition (ESP for short) — a partition with a GPT type GUID +- of `c12a7328-f81f-11d2-ba4b-00a0c93ec93b` — may be used as one of two locations for +- boot loader menu entries. +- +- * Optionally, an Extended Boot Loader Partition (XBOOTLDR partition for +- short) — a partition with GPT type GUID of +- `bc13c2ff-59e6-4262-a352-b275fd6f7172` — may be used as the second of two +- locations for boot loader menu entries. This partition must be located on +- the same disk as the ESP. +- +-There may be at most one partition of each of the types listed above on the +-same disk. +- +-**Note:** _These partitions are **shared** among all OS installations on the +-same disk. Instead of maintaining one boot partition per installed OS (as +-`/boot/` was traditionally handled), all installed OSes use the same place for +-boot loader menu entries._ +- +-For systems where the firmware is able to read file systems directly, the ESP +-must — and the MBR boot and GPT XBOOTLDR partition should — be a file system +-readable by the firmware. For most systems this means VFAT (16 or 32 +-bit). Applications accessing both partitions should hence not assume that +-fancier file system features such as symlinks, hardlinks, access control or +-case sensitivity are supported. +- +-### The `$BOOT` Partition Placeholder +- +-In the text below, the placeholder `$BOOT` will be used to refer to the +-partition determined as follows: +- +- 1. On disks with an MBR partition table: → the boot partition, as described above +- +- 2. On disks with a GPT partition table: → the XBOOTLDR partition if it exists +- +- 3. Otherwise, on disks with a GPT partition table: → the ESP +- +-`$BOOT` is the *primary* place to put boot menu entry resources into, but +-typically not the only one. Most importantly, boot loaders should also pick up +-menu entries from the ESP, even if XBOOTLDR exists (for details see below). +- +-### Creating These Partitions +- +-An installer for an operating system should use this logic when selecting or +-creating partitions: +- +- * If a boot partition (in case of MBR) or an XBOOTLDR partition (in case of +- GPT) already exists it should be used as `$BOOT` and used as primary +- location to place boot loader menu resources in. +- +- * Otherwise, if on GPT and an ESP is found and it is large enough (let's say +- at least 1G) it should be used as `$BOOT` and used as primary location to +- place boot loader menu resources in. +- +- * Otherwise, if on GPT and neither XBOOTLDR nor ESP exist, an ESP should be +- created of the appropriate size and be used as `$BOOT`, and used as primary +- location to place boot loader menu resources in. +- +- * Otherwise, a boot partition (in case of MBR) or XBOOTLDR partition (in case +- of GPT) should be created of an appropriate size, and be used as `$BOOT`, +- and used as primary location to place boot loader menu resources in. +- +-These partitions shall be determined during _installation time_, and +-`/etc/fstab` entries may be created. +- +-### Mount Points +- +-It is recommended to mount `$BOOT` to `/boot/`, and the ESP to `/efi/`. If +-`$BOOT` and the ESP are the same, then either a bind mount or a symlink should +-be established making the partition available under both paths. +- +-(Mounting the ESP to `/boot/efi/`, as was traditionally done, is not +-recommended. Such a nested setup complicates an implementation via direct +-`autofs` mounts — as implemented by `systemd` for example —, as establishing +-the inner `autofs` will trigger the outer one. Mounting the two partitions via +-`autofs` is recommended because the simple VFAT file system has weak data +-integrity properties and should remain unmounted whenever possible.) +- +-## Boot Loader Entries +- +-This specification defines two types of boot loader entries. The first type is +-text based, very simple, and suitable for a variety of firmware, architecture +-and image types ("Type #1"). The second type is specific to EFI, but allows +-single-file images that embed all metadata in the kernel binary itself, which +-is useful to cryptographically sign them as one file for the purpose of +-SecureBoot ("Type #2"). +- +-Not all boot loader entries will apply to all systems. For example, Type #1 +-entries that use the `efi` key and all Type #2 entries only apply to EFI +-systems. Entries using the `architecture` key might specify an architecture that +-doesn't match the local one. Boot loaders should ignore all entries that don't +-match the local platform and what the boot loader can support, and hide them +-from the user. Only entries matching the feature set of boot loader and system +-shall be considered and displayed. This allows image builders to put together +-images that transparently support multiple different architectures. +- +-Note that the three partitions described above are not supposed to be the +-exclusive territory of this specification. This specification only defines +-semantics of the `/loader/entries/` directory (along with the companion file +-`/loader/entries.srel`) and the `/EFI/Linux/` directory inside the file system, +-but it doesn't intend to define contents of the rest of the file system. Boot +-loaders, firmware, and other software implementing this specification may +-choose to place other files and directories in the same file system. For +-example, boot loaders that implement this specification might install their own +-boot code on the same partition; this is particularly common in the case of the +-ESP. Implementations of this specification must be able to operate correctly if +-files or directories other than `/loader/entries/` and `/EFI/Linux/` are found +-in the top level directory. Implementations that add their own files or +-directories to the file systems should use well-named directories, to make name +-collisions between multiple users of the file system unlikely. +- +-### Type #1 Boot Loader Specification Entries +- +-`/loader/entries/` in `$BOOT` is the primary directory containing Type #1 +-drop-in snippets defining boot entries, one `.conf` file for each boot menu +-item. Each OS may provide one or more such entries. +- +-If the ESP is separate from `$BOOT` it may also contain a `/loader/entries/` +-directory, where the boot loader should look for boot entry snippets, as an +-additional source. The boot loader should enumerate both directories and +-present a merged list to the user. Note that this is done for compatibility +-only: while boot loaders should look in both places, OSes should only add their +-files to `$BOOT`. +- +-**Note:** _In all cases the `/loader/entries/` directory should be located +-directly in the root of the file system. Specifically, the `/loader/entries/` +-directory should **not** be located under the `/EFI/` subdirectory on the ESP._ +- +-The file name of the boot entry snippets is used for identification of the boot +-item but shall never be presented to the user in the UI. The file name may be +-chosen freely but should be unique enough to avoid clashes between OS +-installations. More specifically, it is suggested to include the `entry-token` +-(see +-[kernel-install](https://www.freedesktop.org/software/systemd/man/kernel-install.html)) +-or machine ID (see +-[/etc/machine-id](https://www.freedesktop.org/software/systemd/man/machine-id.html)), +-and the kernel version (as returned by `uname -r`, including the OS +-identifier), so that the whole filename is +-`$BOOT/loader/entries/-.conf`. +- +-Example: `$BOOT/loader/entries/6a9857a393724b7a981ebb5b8495b9ea-3.8.0-2.fc19.x86_64.conf`. +- +-In order to maximize compatibility with file system implementations and +-restricted boot loader environments, and to minimize conflicting character use +-with other programs, file names shall be chosen from a restricted character +-set: ASCII upper and lower case characters, digits, "+", "-", "_" and ".". +-Also, the file names should have a length of at least one and at most 255 +-characters (including the file name suffix). +- +-These boot loader menu snippets shall be UNIX-style text files (i.e. lines +-separated by a single newline character), in the UTF-8 encoding. The +-boot loader menu snippets are loosely inspired by Grub1's configuration syntax. +-Lines beginning with "#" are used for comments and shall be ignored. The first +-word of a line is used as key and is separated by one or more spaces from the +-value. +- +-#### Type #1 Boot Loader Entry Keys +- +-The following keys are recognized: +- +-* `title` is a human-readable title for this menu item to be displayed in the +- boot menu. It is a good idea to initialize this from the `PRETTY_NAME=` of +- [os-release](https://www.freedesktop.org/software/systemd/man/os-release.html). +- This name should be descriptive and does not have to be unique. If a boot +- loader discovers two entries with the same title it should show more than +- just the raw title in the UI, for example by appending the `version` +- field. This field is optional. +- +- Example: `title Fedora 18 (Spherical Cow)` +- +-* `version` is a human-readable version for this menu item. This is usually the +- kernel version and is intended for use by OSes to install multiple kernel +- versions with the same `title` field. This field is used for sorting entries, +- so that the boot loader can order entries by age or select the newest one +- automatically. This field is optional. +- +- See [Sorting](#sorting) below. +- +- Example: `version 3.7.2-201.fc18.x86_64` +- +-* `machine-id` is the machine ID of the OS. This can be used by boot loaders +- and applications to filter out boot entries, for example to show only a +- single newest kernel per OS, to group items by OS, or to filter out the +- currently booted OS when showing only other installed operating systems. +- This ID shall be formatted as 32 lower case hexadecimal characters +- (i.e. without any UUID formatting). This key is optional. +- +- Example: `machine-id 4098b3f648d74c13b1f04ccfba7798e8` +- +-* `sort-key` is a short string used for sorting entries on display. This should +- typically be initialized from the `IMAGE_ID=` or `ID=` fields of +- [os-release](https://www.freedesktop.org/software/systemd/man/os-release.html), +- possibly with an additional suffix. This field is optional. +- +- Example: `sort-key fedora` +- +-* `linux` is the Linux kernel image to execute and takes a path relative to the +- root of the file system containing the boot entry snippet itself. It is +- recommended that every distribution creates an entry-token/machine-id and +- version specific subdirectory and places its kernels and initrd images there +- (see below). +- +- Example: `linux /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/linux` +- +-* `initrd` is the initrd `cpio` image to use when executing the kernel. This key +- may appear more than once in which case all specified images are used, in the +- order they are listed. +- +- Example: `initrd 6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/initrd` +- +-* `efi` refers to an arbitrary EFI program. If this key is set, and the system +- is not an EFI system, this entry should be hidden. +- +-* `options` shall contain kernel parameters to pass to the Linux kernel to +- spawn. This key is optional and may appear more than once in which case all +- specified parameters are combined in the order they are listed. +- +- Example: `options root=UUID=6d3376e4-fc93-4509-95ec-a21d68011da2 quiet` +- +-* `devicetree` refers to the binary device tree to use when executing the +- kernel. This key is optional. +- +- Example: `devicetree 6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.armv7hl/tegra20-paz00.dtb` +- +-* `devicetree-overlay` refers to a list of device tree overlays that should be +- applied by the boot loader. Multiple overlays are separated by spaces and +- applied in the same order as they are listed. This key is optional but +- depends on the `devicetree` key. +- +- Example: `devicetree-overlay /6a9857a393724b7a981ebb5b8495b9ea/overlays/overlay_A.dtbo /6a9857a393724b7a981ebb5b8495b9ea/overlays/overlay_B.dtbo` +- +-* `architecture` refers to the architecture this entry is for. The argument +- should be an architecture identifier, using the architecture vocabulary +- defined by the EFI specification (i.e. `IA32`, `x64`, `IA64`, `ARM`, `AA64`, +- …). If specified and it does not match the local system architecture this +- entry should be hidden. The comparison should be done case-insensitively. +- +- Example: `architecture aa64` +- +-Each boot loader menu entry drop-in snippet must include at least a `linux` or an `efi` +-key. Here is an example for a complete drop-in file: +- +- # /boot/loader/entries/6a9857a393724b7a981ebb5b8495b9ea-3.8.0-2.fc19.x86_64.conf +- title Fedora 19 (Rawhide) +- sort-key fedora +- machine-id 6a9857a393724b7a981ebb5b8495b9ea +- version 3.8.0-2.fc19.x86_64 +- options root=UUID=6d3376e4-fc93-4509-95ec-a21d68011da2 quiet +- architecture x64 +- linux /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/linux +- initrd /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/initrd +- +-On EFI systems all Linux kernel images should be EFI images. In order to +-increase compatibility with EFI systems it is highly recommended only to +-install EFI kernel images, even on non-EFI systems, if that's applicable and +-supported on the specific architecture. +- +-Conversely, in order to increase compatibility it is recommended to install +-generic kernel images that make few assumptions about the firmware they run on, +-i.e. it is a good idea that both images shipped as UEFI PE images and those +-which are not don't make unnecessary assumption on the underlying firmware, +-i.e. don't hard depend on legacy BIOS calls or UEFI boot services. +- +-When Type #1 boot loader menu entry snippets refer to other files (for `linux`, +-`initrd`, `efi`, `devicetree`, and `devicetree-overlay`), those files must be +-located on the same partition, and the paths must be absolute paths relative to +-the root of that file system. The naming of those files can be chosen by the +-installer. A recommended scheme is described in the next section. Paths should +-be normalized, i.e. not include `..`, `.` or a sequence of more than one +-`/`. Paths may be prefixed with a `/`, but this is optional and has the same +-effect as paths without it: all paths are always relative to the root directory +-of the partition they are referenced from. +- +-Even though the backing file system is typically case-insensitive (i.e. VFAT) +-it is strongly recommended to reference files in the casing actually used for +-the directories/files, so that placing these files on other file systems is +-still safe and robust. +- +-### Recommended Directory Layout for Additional Files +- +-It is recommended to place the kernel and other other files comprising a single +-boot loader entry in a separate directory: +-`///`. This naming scheme uses the same +-elements as the boot loader menu entry snippet, providing the same level of +-uniqueness. +- +-Example: `$BOOT/6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/linux` +- `$BOOT/6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/initrd` +- +-Other naming schemes are possible. In particular, traditionally a flat naming +-scheme with files in the root directory was used. This is not recommended +-because it is hard to avoid conflicts in a multi-boot installation. +- +-### Standard-conformance Marker File +- +-Unfortunately, there are implementations of boot loading infrastructure that +-are also using the `/loader/entries/` directory, but install files that do not +-follow this specification. In order to minimize confusion, a boot loader +-implementation may place the file `/loader/entries.srel` next to the +-`/loader/entries/` directory containing the ASCII string `type1` (followed by a +-UNIX newline). Tools that need to determine whether an existing directory +-implements the semantics described here may check for this file and contents: +-if it exists and contains the mentioned string, it shall assume a +-standards-compliant implementation is in place. If it exists but contains a +-different string it shall assume other semantics are implemented. If the file +-does not exist, no assumptions should be made. +- +-### Type #2 EFI Unified Kernel Images +- +-A unified kernel image is a single EFI PE executable combining an EFI stub +-loader, a kernel image, an initrd image, and the kernel command line. See +-[systemd-stub(7)](https://www.freedesktop.org/software/systemd/man/systemd-stub.html) +-for details. The primary place for such unified images is the `/EFI/Linux/` +-directory in `$BOOT`. Operating systems should place unified EFI kernels only +-in the `$BOOT` partition. Boot loaders should also look in the `/EFI/Linux/` of +-the ESP — if it is different from `$BOOT` — and present a merged list of menu +-entries from both partitions. Regardless if placed in the primary or secondary +-location: the files must have the extension `.efi`. Support for images of this +-type is of course specific to systems with EFI firmware. Ignore this section if +-you work on systems not supporting EFI. +- +-Type #2 file names should be chosen from the same restricted character set as +-Type #1 described above (but with the file name suffix of `.efi` instead of +-`.conf`). +- +-Images of this type have the advantage that all metadata and payload that makes +-up the boot entry is contained in a single PE file that can be signed +-cryptographically as one for the purpose of EFI SecureBoot. +- +-A valid unified kernel image in the `/EFI/Linux/` directory must contain two PE sections: +- +-* `.cmdline` section with the kernel command line, +-* `.osrel` section with an embedded copy of the +- [os-release](https://www.freedesktop.org/software/systemd/man/os-release.html) +- file describing the image. +- +-The `PRETTY_NAME=` and `VERSION_ID=` fields in the embedded `os-release` file +-are used the same as `title` and `version` in the Type #1 entries. The +-`.cmdline` section is used instead of the `options` field. `linux` and `initrd` +-fields are not necessary, and there is no counterpart for the `machine-id` +-field. +- +-On EFI, any such images shall be added to the list of valid boot entries. +- +-### Additional Notes +- +-Note that these boot entry snippets and unified kernels do not need to be the +-only menu entry sources for a boot loader. It may extend this list of +-entries with additional items from other configuration files (for example its +-own native configuration files) or automatically detected other entries without +-explicit configuration. +- +-To make this explicitly clear: this specification is designed with "free" +-operating systems in mind, starting Windows or MacOS is out of focus with these +-boot loader menu entry snippets, use boot-loader specific solutions for +-that. In the text above, if we say "OS" we hence imply "free", i.e. primarily +-Linux (though this could be easily be extended to the BSDs and whatnot). +- +-Note that all paths used in the boot loader menu entry snippets use a +-Unix-style "/" as path separator. This needs to be converted to an EFI-style +-"\\" separator in EFI boot loaders. +- +- +-## Locating Boot Entries +- +-A _boot loader_ locates the XBOOTLDR partition and the ESP, then simply reads +-all the files `/loader/entries/*.conf` in them, and populates its boot menu +-(and handle gracefully if one of the two partitions is missing). On EFI, it +-then extends this with any unified kernel images found in `/EFI/Linux/*.efi` in +-the two partitions. It may also add additional entries, for example a "Reboot +-into firmware" option. Optionally it may sort the menu based on the +-`sort-key`, `machine-id` and `version` fields, and possibly others. It uses the +-file name to identify specific items, for example in case it supports storing +-away default entry information somewhere. A boot loader should generally not +-modify these files. +- +-For "Boot Loader Specification Entries" (Type #1), the _kernel package +-installer_ installs the kernel and initrd images to `$BOOT`. It is recommended +-to place these files in a vendor and OS and installation specific directory. It +-then generates a boot loader menu entry snippet, placing it in +-`$BOOT/loader/entries/xyz.conf`, with "xyz" as concatenation of +-entry-token/machine-id and version information (see above). The files created +-by a kernel package are tied to the kernel package and should be removed along +-with it. +- +-For "EFI Unified Kernel Images" (Type #2), the vendor or kernel package +-installer should create the combined image and drop it into +-`$BOOT/EFI/Linux/`. This file is also tied to the kernel package and should be +-removed along with it. +- +-A _UI application_ intended to show available boot options shall operate +-similarly to a boot loader (and thus search both `$BOOT` and the ESP if +-distinct), but might apply additional filters, for example by filtering the +-booted OS via the machine ID, or by suppressing all but the newest kernel +-versions. +- +-An _OS installer_ picks the right place for `$BOOT` as defined above (possibly +-creating a partition and file system for it) and creates the `/loader/entries/` +-directory and the `/loader/entries.srel` file in it (the latter only if the +-directory didn't exist yet). It then installs an appropriate boot loader that +-can read these snippets. Finally, it installs one or more kernel packages. +- +-## Boot counting +- +-The main idea is that when boot entries are initially installed, they are +-marked as "indeterminate" and assigned a number of boot attempts. Each time the +-boot loader tries to boot an entry, it decreases this count by one. If the +-operating system considers the boot as successful, it removes the counter +-altogether and the entry becomes "good". Otherwise, once the assigned number of +-boots is exhausted, the entry is marked as "bad". +- +-Which boots are "successful" is determined by the operating system. systemd +-provides a generic mechanism that can be extended with arbitrary checks and +-actions, see [Automatic Boot Assessment](AUTOMATIC_BOOT_ASSESSMENT.md), but the +-boot counting mechanism described in this specification can also be used with +-other implementations. +- +-The boot counting data is stored in the name of the boot loader entry. A boot +-loader entry file name may contain a plus (`+`) followed by a number. This may +-optionally be followed by a minus (`-`) followed by a second number. The dot +-(`.`) and file name suffix (`conf` of `efi`) must immediately follow. Boot +-counting is enabled for entries which match this pattern. +- +-The first number is the "tries left" counter signifying how many attempts to boot +-this entry shall still be made. The second number is the "tries done" counter, +-showing how many failed attempts to boot it have already been made. Each time +-a boot loader entry marked this way is booted, the first counter is decremented, +-and the second one incremented. (If the second counter is missing, +-then it is assumed to be equivalent to zero.) If the "tries left" counter is +-above zero the entry is still considered "indeterminate". A boot entry with the +-"tries left" counter at zero is considered "bad". +- +-If the boot attempt completed successfully the entry's counters are removed +-from the name (entry state becomes "good"), thus turning off boot counting for +-this entry. +- +-## Sorting +- +-The boot loader menu should generally show entries in some order meaningful to +-the user. The `title` key is free-form and not suitable to be used as the +-primary sorting key. Instead, the boot loader should use the following rules: +- +-1. Entries which are subject to boot counting and are marked as "bad", should +- be sorted later than all other entries. Entries which are marked as +- "indeterminate" or "good" (or were not subject to boot counting at all), +- are thus sorted earlier. +- +-2. If `sort-key` is set on both entries, use in order of priority, +- the `sort-key` (A-Z, increasing [alphanumerical order](#alphanumerical-order)), +- `machine-id` (A-Z, increasing alphanumerical order), +- and `version` keys (decreasing [version order](#version-order)). +- +-3. If `sort-key` is set on one entry, it sorts earlier. +- +-4. At the end, if necessary, when `sort-key` is not set or those fields are not +- set or are all equal, the boot loader should sort using the file name of the +- entry (decreasing version sort), with the suffix removed. +- +-**Note:** _This description assumes that the boot loader shows entries in a +-traditional menu, with newest and "best" entries at the top, thus entries with +-a higher version number are sorter *earlier*. The boot loader is free to +-use a different direction (or none at all) during display._ +- +-**Note:** _The boot loader should allow booting "bad" entries, e.g. in case no +-other entries are left or they are unusable for other reasons. It may +-deemphasize or hide such entries by default._ +- +-**Note:** _"Bad" boot entries have a suffix of "+0-`n`", where `n` is the +-number of failed boot attempts. Removal of the suffix is not necessary for +-comparisons described by the last point above. In the unlikely scenario that we +-have multiple such boot entries that differ only by the boot counting data, we +-would sort them by `n`._ +- +-### Alphanumerical Order +- +-Free-form strings and machine IDs should be compared using a method equivalent +-to [strcmp(3)](https://man7.org/linux/man-pages/man3/strcmp.3.html) on their +-UTF-8 representations. If just one of the strings is unspecified or empty, it +-compares lower. If both strings are unspecified or empty, they compare equal. +- +-### Version Order +- +-The following method should be used to compare version strings. The algorithm +-is based on rpm's `rpmvercmp()`, but not identical. +- +-ASCII letters (`a-z`, `A-Z`) and digits (`0-9`) form alphanumerical components of the version. +-Minus (`-`) separates the version and release parts. +-Dot (`.`) separates parts of version or release. +-Tilde (`~`) is a prefix that always compares lower. +-Caret (`^`) is a prefix that always compares higher. +- +-Both strings are compared from the beginning until the end, or until the +-strings are found to compare as different. In a loop: +-1. Any characters which are outside of the set of listed above (`a-z`, `A-Z`, `0-9`, `-`, `.`, `~`, `^`) +- are skipped in both strings. In particular, this means that non-ASCII characters +- that are Unicode digits or letters are skipped too. +-2. If one of the strings has ended: if the other string hasn't, the string that +- has remaining characters compares higher. Otherwise, the strings compare +- equal. +-3. If the remaining part of one of strings starts with `~`: +- if other remaining part does not start with `~`, +- the string with `~` compares lower. Otherwise, both tilde characters are skipped. +-4. The check from point 2. is repeated here. +-5. If the remaining part of one of strings starts with `-`: +- if the other remaining part does not start with `-`, +- the string with `-` compares lower. Otherwise, both minus characters are skipped. +-6. If the remaining part of one of strings starts with `^`: +- if the other remaining part does not start with `^`, +- the string with `^` compares higher. Otherwise, both caret characters are skipped. +-6. If the remaining part of one of strings starts with `.`: +- if the other remaining part does not start with `.`, +- the string with `.` compares lower. Otherwise, both dot characters are skipped. +-7. If either of the remaining parts starts with a digit, numerical prefixes are +- compared numerically. Any leading zeroes are skipped. +- The numerical prefixes (until the first non-digit character) are evaluated as numbers. +- If one of the prefixes is empty, it evaluates as 0. +- If the numbers are different, the string with the bigger number compares higher. +- Otherwise, the comparison continues at the following characters at point 1. +-8. Leading alphabetical prefixes are compared alphabetically. +- The substrings are compared letter-by-letter. +- If both letters are the same, the comparison continues with the next letter. +- Capital letters compare lower than lower-case letters (`A < a`). +- When the end of one substring has been reached (a non-letter character or the end +- of the whole string), if the other substring has remaining letters, it compares higher. +- Otherwise, the comparison continues at the following characters at point 1. +- +-Examples (with '' meaning the empty string): +- +-* `11 == 11` +-* `systemd-123 == systemd-123` +-* `bar-123 < foo-123` +-* `123a > 123` +-* `123.a > 123` +-* `123.a < 123.b` +-* `123a > 123.a` +-* `11α == 11β` +-* `A < a` +-* '' < `0` +-* `0.` > `0` +-* `0.0` > `0` +-* `0` < `~` +-* '' < `~` +- +-Note: [systemd-analyze](https://www.freedesktop.org/software/systemd/man/systemd-analyze.html) +-implements this version comparison algorithm as +-``` +-systemd-analyze compare-versions +-``` +- +-## Additional discussion +- +-### Why is there a need for this specification? +- +-This specification brings the following advantages: +- +-* Installation of new boot entries is more robust, as no explicit rewriting of +- configuration files is required. +- +-* It allows an out-of-the-box boot experience on any platform without the need +- of traditional firmware mechanisms (e.g. BIOS calls, UEFI Boot Services). +- +-* It improves dual-boot scenarios. Without cooperation, multiple Linux +- installations tend to fight over which boot loader becomes the primary one in +- possession of the MBR or the boot partition, and only that one installation +- can then update the boot loader configuration. Other Linux installs have to +- be manually configured to never touch the MBR and instead install a +- chain-loaded boot loader in their own partition headers. In this new scheme +- all installations share a loader directory and no manual configuration has to +- take place. All participants implicitly cooperate due to removal of name +- collisions and can install/remove their own boot menu entries without +- interfering with the entries of other installed operating systems. +- +-* Drop-in directories are now pretty ubiquitous on Linux as an easy way to +- extend boot loader menus without having to edit, regenerate or manipulate +- configuration files. For the sake of uniformity, we should do the same for +- the boot menu. +- +-* Userspace code can sanely parse boot loader menu entries which is essential +- with modern firmware which does not necessarily initialize USB keyboards +- during boot, which makes boot menus hard to reach for the user. If userspace +- code can parse the boot loader menu entries too, UI can be written that +- select a boot menu item to boot into before rebooting the machine, thus not +- requiring interactivity during early boot. +- +-* To unify and thus simplify menu entries of the various boot loaders, which +- makes configuration of the boot loading process easier for users, +- administrators, and developers alike. +- +-* For boot loaders with configuration _scripts_ such as grub2, adopting this +- spec allows for mostly static scripts that are generated only once at first +- installation, but then do not need to be updated anymore as that is done via +- drop-in files exclusively. +- +-### Why not simply rely on the EFI boot menu logic? +- +-EFI is not ubiquitous, especially not in embedded systems. But even on systems +-with EFI, which provides a boot options logic that can offer similar +-functionality, this specification is still needed for the following reasons: +- +-* The various EFI implementations implement the boot order/boot item logic to +- different levels. Some firmware implementations do not offer a boot menu at +- all and instead unconditionally follow the EFI boot order, booting the first +- item that is working. +- +-* If the firmware setup is used to reset data, usually all EFI boot entries +- are lost, making the system entirely unbootable, as the firmware setups +- generally do not offer a UI to define additional boot items. By placing the +- menu item information on disk, it is always available, even if the firmware +- configuration is lost. +- +-* Harddisk images should be movable between machines and be bootable without +- requiring firmware configuration. This also requires that the list +- of boot options is defined on disk, and not in EFI variables alone. +- +-* EFI is not universal yet (especially on non-x86 platforms), this +- specification is useful both for EFI and non-EFI boot loaders. +- +-* Many EFI systems disable USB support during early boot to optimize boot +- times, thus making keyboard input unavailable in the EFI menu. It is thus +- useful if the OS UI has a standardized way to discover available boot options +- which can be booted to. +- +-### Why is the version comparison logic so complicated? +- +-The `sort-key` allows us to group entries by "operating system", e.g. all +-versions of Fedora together, no matter if they identify themselves as "Fedora +-Workstation" or "Fedora Rawhide (prerelease)". The `sort-key` was introduced +-only recently, so we need to provide a meaningful order for entries both with +-and without it. Since it is a new concept, it is assumed that entries with +-`sort-key` are newer. +- +-In a traditional menu with entries displayed vertically, we want names to be +-sorter alpabetically (CentOS, Debian, Fedora, OpenSUSE, …), it would be strange +-to have them in reverse order. But when multiple kernels are available for the +-same installation, we want to display the latest kernel with highest priority, +-i.e. earlier in the list. +- +-### Why do you use file renames to store the counter? Why not a regular file? +- +-Mainly two reasons: it's relatively likely that renames can be implemented +-atomically even in simpler file systems, as renaming generally avoids +-allocating or releasing data blocks. Writing to file contents has a much bigger +-chance to be result in incomplete or corrupt data. Moreover renaming has the +-benefit that the boot count metadata is directly attached to the boot loader +-entry file, and thus the lifecycle of the metadata and the entry itself are +-bound together. This means no additional clean-up needs to take place to drop +-the boot loader counting information for an entry when it is removed. +- +-### Why not use EFI variables for storing the boot counter? +- +-The memory chips used to back the persistent EFI variables are generally not of +-the highest quality, hence shouldn't be written to more than necessary. This +-means we can't really use it for changes made regularly during boot, but should +-use it only for seldom-made configuration changes. +- +-### Out of Focus +- +-There are a couple of items that are out of focus for this specification: +- +-* If userspace can figure out the available boot options, then this is only +- useful so much: we'd still need to come up with a way how userspace could +- communicate to the boot loader the default boot loader entry temporarily or +- persistently. Defining a common scheme for this is certainly a good idea, but +- out of focus for this specification. +- +-* This specification is just about "Free" Operating systems. Hooking in other +- operating systems (like Windows and macOS) into the boot menu is a different +- story and should probably happen outside of this specification. For example, +- boot loaders might choose to detect other available OSes dynamically at +- runtime without explicit configuration (like `systemd-boot` does it), or via +- native configuration (for example via explicit Grub2 configuration generated +- once at installation). +- +-* This specification leaves undefined what to do about systems which are +- upgraded from an OS that does not implement this specification. As the +- previous boot loader logic was largely handled by in distribution-specific +- ways we probably should leave the upgrade path (and whether there actually is +- one) to the distributions. The simplest solution might be to simply continue +- with the old scheme for old installations and use this new scheme only for +- new installations. +- +-* Referencing kernels or initrds on other partitions other than the partition +- containing the Type #1 boot loader entry. This is by design, as specifying +- other partitions or devices would require a non-trivial language for denoting +- device paths. In particular this means that on non-EFI systems boot loader +- menu entry snippets following this specification cannot be used to spawn +- other operating systems (such as Windows). +- +- +-## Links +- +-[GUID Partition Table](https://en.wikipedia.org/wiki/GUID_Partition_Table)
+-[Boot Loader Interface](BOOT_LOADER_INTERFACE.md)
+-[Discoverable Partitions Specification](DISCOVERABLE_PARTITIONS.md)
+-[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)
+-[`bootctl(1)`](https://www.freedesktop.org/software/systemd/man/bootctl.html)
+-[`systemd-gpt-auto-generator(8)`](https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html) ++[This content has moved to the UAPI group website](https://uapi-group.org/specifications/specs/boot_loader_specification/) +diff --git a/docs/DISCOVERABLE_PARTITIONS.md b/docs/DISCOVERABLE_PARTITIONS.md +index efd20533a5..bc05b6cc5a 100644 +--- a/docs/DISCOVERABLE_PARTITIONS.md ++++ b/docs/DISCOVERABLE_PARTITIONS.md +@@ -1,423 +1 @@ +---- +-title: Discoverable Partitions Specification +-category: Concepts +-layout: default +-SPDX-License-Identifier: LGPL-2.1-or-later +---- +-# The Discoverable Partitions Specification (DPS) +- +-_TL;DR: Let's automatically discover, mount and enable the root partition, +-`/home/`, `/srv/`, `/var/` and `/var/tmp/` and the swap partitions based on +-GUID Partition Tables (GPT)!_ +- +-This specification describes the use of GUID Partition Table (GPT) UUIDs to +-enable automatic discovery of partitions and their intended mountpoints. +-Traditionally Linux has made little use of partition types, mostly just +-defining one UUID for file system/data partitions and another one for swap +-partitions. With this specification, we introduce additional partition types +-for specific uses. This has many benefits: +- +-* OS installers can automatically discover and make sense of partitions of +- existing Linux installations. +-* The OS can discover and mount the necessary file systems with a non-existent +- or incomplete `/etc/fstab` file and without the `root=` kernel command line +- option. +-* Container managers (such as nspawn and libvirt-lxc) can introspect and set up +- file systems contained in GPT disk images automatically and mount them to the +- right places, thus allowing booting the same, identical images on bare metal +- and in Linux containers. This enables true, natural portability of disk +- images between physical machines and Linux containers. +-* As a help to administrators and users partition manager tools can show more +- descriptive information about partitions tables. +- +-Note that the OS side of this specification is currently implemented in +-[systemd](https://systemd.io/) 211 and newer in the +-[systemd-gpt-auto-generator(8)](https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html) +-generator tool. Note that automatic discovery of the root only works if the +-boot loader communicates this information to the OS, by implementing the +-[Boot Loader Interface](BOOT_LOADER_INTERFACE.md). +- +-## Defined Partition Type UUIDs +- +-| Name | Partition Type UUID | Allowed File Systems | Explanation | +-|------|---------------------|----------------------|-------------| +-| _Root Partition (Alpha)_ | `6523f8ae-3eb1-4e2a-a05a-18b695ae656f` `SD_GPT_ROOT_ALPHA` | Any native, optionally in LUKS | On systems with matching architecture, the first partition with this type UUID on the disk containing the active EFI ESP is automatically mounted to the root directory `/`. If the partition is encrypted with LUKS or has dm-verity integrity data (see below), the device mapper file will be named `/dev/mapper/root`. | +-| _Root Partition (ARC)_ | `d27f46ed-2919-4cb8-bd25-9531f3c16534` `SD_GPT_ROOT_ARC` | ditto | ditto | +-| _Root Partition (32-bit ARM)_ | `69dad710-2ce4-4e3c-b16c-21a1d49abed3` `SD_GPT_ROOT_ARM` | ditto | ditto | +-| _Root Partition (64-bit ARM/AArch64)_ | `b921b045-1df0-41c3-af44-4c6f280d3fae` `SD_GPT_ROOT_ARM64` | ditto | ditto | +-| _Root Partition (Itanium/IA-64)_ | `993d8d3d-f80e-4225-855a-9daf8ed7ea97` `SD_GPT_ROOT_IA64` | ditto | ditto | +-| _Root Partition (LoongArch 64-bit)_ | `77055800-792c-4f94-b39a-98c91b762bb6` `SD_GPT_ROOT_LOONGARCH64` | ditto | ditto | +-| _Root Partition (32-bit MIPS LittleEndian (mipsel))_ | `37c58c8a-d913-4156-a25f-48b1b64e07f0` `SD_GPT_ROOT_MIPS_LE` | ditto | ditto | +-| _Root Partition (64-bit MIPS LittleEndian (mips64el))_ | `700bda43-7a34-4507-b179-eeb93d7a7ca3` `SD_GPT_ROOT_MIPS64_LE` | ditto | ditto | +-| _Root Partition (HPPA/PARISC)_ | `1aacdb3b-5444-4138-bd9e-e5c2239b2346` `SD_GPT_ROOT_PARISC` | ditto | ditto | +-| _Root Partition (32-bit PowerPC)_ | `1de3f1ef-fa98-47b5-8dcd-4a860a654d78` `SD_GPT_ROOT_PPC` | ditto | ditto | +-| _Root Partition (64-bit PowerPC BigEndian)_ | `912ade1d-a839-4913-8964-a10eee08fbd2` `SD_GPT_ROOT_PPC64` | ditto | ditto | +-| _Root Partition (64-bit PowerPC LittleEndian)_ | `c31c45e6-3f39-412e-80fb-4809c4980599` `SD_GPT_ROOT_PPC64_LE` | ditto | ditto | +-| _Root Partition (RISC-V 32-bit)_ | `60d5a7fe-8e7d-435c-b714-3dd8162144e1` `SD_GPT_ROOT_RISCV32` | ditto | ditto | +-| _Root Partition (RISC-V 64-bit)_ | `72ec70a6-cf74-40e6-bd49-4bda08e8f224` `SD_GPT_ROOT_RISCV64` | ditto | ditto | +-| _Root Partition (s390)_ | `08a7acea-624c-4a20-91e8-6e0fa67d23f9` `SD_GPT_ROOT_S390` | ditto | ditto | +-| _Root Partition (s390x)_ | `5eead9a9-fe09-4a1e-a1d7-520d00531306` `SD_GPT_ROOT_S390X` | ditto | ditto | +-| _Root Partition (TILE-Gx)_ | `c50cdd70-3862-4cc3-90e1-809a8c93ee2c` `SD_GPT_ROOT_TILEGX` | ditto | ditto | +-| _Root Partition (x86)_ | `44479540-f297-41b2-9af7-d131d5f0458a` `SD_GPT_ROOT_X86` | ditto | ditto | +-| _Root Partition (amd64/x86_64)_ | `4f68bce3-e8cd-4db1-96e7-fbcaf984b709` `SD_GPT_ROOT_X86_64` | ditto | ditto | +-| _`/usr/` Partition (Alpha)_ | `e18cf08c-33ec-4c0d-8246-c6c6fb3da024` `SD_GPT_USR_ALPHA` | Any native, optionally in LUKS | Similar semantics to root partition, but just the `/usr/` partition. | +-| _`/usr/` Partition (ARC)_ | `7978a683-6316-4922-bbee-38bff5a2fecc` `SD_GPT_USR_ARC` | ditto | ditto | +-| _`/usr/` Partition (32-bit ARM)_ | `7d0359a3-02b3-4f0a-865c-654403e70625` `SD_GPT_USR_ARM` | ditto | ditto | +-| _`/usr/` Partition (64-bit ARM/AArch64)_ | `b0e01050-ee5f-4390-949a-9101b17104e9` `SD_GPT_USR_ARM64` | ditto | ditto | +-| _`/usr/` Partition (Itanium/IA-64)_ | `4301d2a6-4e3b-4b2a-bb94-9e0b2c4225ea` `SD_GPT_USR_IA64` | ditto | ditto | +-| _`/usr/` Partition (LoongArch 64-bit)_ | `e611c702-575c-4cbe-9a46-434fa0bf7e3f` `SD_GPT_USR_LOONGARCH64` | ditto | ditto | +-| _`/usr/` Partition (32-bit MIPS LittleEndian (mipsel))_ | `0f4868e9-9952-4706-979f-3ed3a473e947` `SD_GPT_USR_MIPS_LE` | ditto | ditto | +-| _`/usr/` Partition (64-bit MIPS LittleEndian (mips64el))_ | `c97c1f32-ba06-40b4-9f22-236061b08aa8` `SD_GPT_USR_MIPS64_LE` | ditto | ditto | +-| _`/usr/` Partition (HPPA/PARISC)_ | `dc4a4480-6917-4262-a4ec-db9384949f25` `SD_GPT_USR_PARISC` | ditto | ditto | +-| _`/usr/` Partition (32-bit PowerPC)_ | `7d14fec5-cc71-415d-9d6c-06bf0b3c3eaf` `SD_GPT_USR_PPC` | ditto | ditto | +-| _`/usr/` Partition (64-bit PowerPC BigEndian)_ | `2c9739e2-f068-46b3-9fd0-01c5a9afbcca` `SD_GPT_USR_PPC64` | ditto | ditto | +-| _`/usr/` Partition (64-bit PowerPC LittleEndian)_ | `15bb03af-77e7-4d4a-b12b-c0d084f7491c` `SD_GPT_USR_PPC64_LE` | ditto | ditto | +-| _`/usr/` Partition (RISC-V 32-bit)_ | `b933fb22-5c3f-4f91-af90-e2bb0fa50702` `SD_GPT_USR_RISCV32` | ditto | ditto | +-| _`/usr/` Partition (RISC-V 64-bit)_ | `beaec34b-8442-439b-a40b-984381ed097d` `SD_GPT_USR_RISCV64` | ditto | ditto | +-| _`/usr/` Partition (s390)_ | `cd0f869b-d0fb-4ca0-b141-9ea87cc78d66` `SD_GPT_USR_S390` | ditto | ditto | +-| _`/usr/` Partition (s390x)_ | `8a4f5770-50aa-4ed3-874a-99b710db6fea` `SD_GPT_USR_S390X` | ditto | ditto | +-| _`/usr/` Partition (TILE-Gx)_ | `55497029-c7c1-44cc-aa39-815ed1558630` `SD_GPT_USR_TILEGX` | ditto | ditto | +-| _`/usr/` Partition (x86)_ | `75250d76-8cc6-458e-bd66-bd47cc81a812` `SD_GPT_USR_X86` | ditto | ditto | +-| _`/usr/` Partition (amd64/x86_64)_ | `8484680c-9521-48c6-9c11-b0720656f69e` `SD_GPT_USR_X86_64` | ditto | ditto | +-| _Root Verity Partition (Alpha)_ | `fc56d9e9-e6e5-4c06-be32-e74407ce09a5` `SD_GPT_ROOT_ALPHA_VERITY` | A dm-verity superblock followed by hash data | Contains dm-verity integrity hash data for the matching root partition. If this feature is used the partition UUID of the root partition should be the first 128 bits of the root hash of the dm-verity hash data, and the partition UUID of this dm-verity partition should be the final 128 bits of it, so that the root partition and its Verity partition can be discovered easily, simply by specifying the root hash. | +-| _Root Verity Partition (ARC)_ | `24b2d975-0f97-4521-afa1-cd531e421b8d` `SD_GPT_ROOT_ARC_VERITY` | ditto | ditto | +-| _Root Verity Partition (32-bit ARM)_ | `7386cdf2-203c-47a9-a498-f2ecce45a2d6` `SD_GPT_ROOT_ARM_VERITY` | ditto | ditto | +-| _Root Verity Partition (64-bit ARM/AArch64)_ | `df3300ce-d69f-4c92-978c-9bfb0f38d820` `SD_GPT_ROOT_ARM64_VERITY` | ditto | ditto | +-| _Root Verity Partition (Itanium/IA-64)_ | `86ed10d5-b607-45bb-8957-d350f23d0571` `SD_GPT_ROOT_IA64_VERITY` | ditto | ditto | +-| _Root Verity Partition (LoongArch 64-bit)_ | `f3393b22-e9af-4613-a948-9d3bfbd0c535` `SD_GPT_ROOT_LOONGARCH64_VERITY` | ditto | ditto | +-| _Root Verity Partition (32-bit MIPS LittleEndian (mipsel))_ | `d7d150d2-2a04-4a33-8f12-16651205ff7b` `SD_GPT_ROOT_MIPS_LE_VERITY` | ditto | ditto | +-| _Root Verity Partition (64-bit MIPS LittleEndian (mips64el))_ | `16b417f8-3e06-4f57-8dd2-9b5232f41aa6` `SD_GPT_ROOT_MIPS64_LE_VERITY` | ditto | ditto | +-| _Root Verity Partition (HPPA/PARISC)_ | `d212a430-fbc5-49f9-a983-a7feef2b8d0e` `SD_GPT_ROOT_PARISC_VERITY` | ditto | ditto | +-| _Root Verity Partition (64-bit PowerPC LittleEndian)_ | `906bd944-4589-4aae-a4e4-dd983917446a` `SD_GPT_ROOT_PPC64_LE_VERITY` | ditto | ditto | +-| _Root Verity Partition (64-bit PowerPC BigEndian)_ | `9225a9a3-3c19-4d89-b4f6-eeff88f17631` `SD_GPT_ROOT_PPC64_VERITY` | ditto | ditto | +-| _Root Verity Partition (32-bit PowerPC)_ | `98cfe649-1588-46dc-b2f0-add147424925` `SD_GPT_ROOT_PPC_VERITY` | ditto | ditto | +-| _Root Verity Partition (RISC-V 32-bit)_ | `ae0253be-1167-4007-ac68-43926c14c5de` `SD_GPT_ROOT_RISCV32_VERITY` | ditto | ditto | +-| _Root Verity Partition (RISC-V 64-bit)_ | `b6ed5582-440b-4209-b8da-5ff7c419ea3d` `SD_GPT_ROOT_RISCV64_VERITY` | ditto | ditto | +-| _Root Verity Partition (s390)_ | `7ac63b47-b25c-463b-8df8-b4a94e6c90e1` `SD_GPT_ROOT_S390_VERITY` | ditto | ditto | +-| _Root Verity Partition (s390x)_ | `b325bfbe-c7be-4ab8-8357-139e652d2f6b` `SD_GPT_ROOT_S390X_VERITY` | ditto | ditto | +-| _Root Verity Partition (TILE-Gx)_ | `966061ec-28e4-4b2e-b4a5-1f0a825a1d84` `SD_GPT_ROOT_TILEGX_VERITY` | ditto | ditto | +-| _Root Verity Partition (amd64/x86_64)_ | `2c7357ed-ebd2-46d9-aec1-23d437ec2bf5` `SD_GPT_ROOT_X86_64_VERITY` | ditto | ditto | +-| _Root Verity Partition (x86)_ | `d13c5d3b-b5d1-422a-b29f-9454fdc89d76` `SD_GPT_ROOT_X86_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (Alpha)_ | `8cce0d25-c0d0-4a44-bd87-46331bf1df67` `SD_GPT_USR_ALPHA_VERITY` | A dm-verity superblock followed by hash data | Similar semantics to root Verity partition, but just for the `/usr/` partition. | +-| _`/usr/` Verity Partition (ARC)_ | `fca0598c-d880-4591-8c16-4eda05c7347c` `SD_GPT_USR_ARC_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (32-bit ARM)_ | `c215d751-7bcd-4649-be90-6627490a4c05` `SD_GPT_USR_ARM_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (64-bit ARM/AArch64)_ | `6e11a4e7-fbca-4ded-b9e9-e1a512bb664e` `SD_GPT_USR_ARM64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (Itanium/IA-64)_ | `6a491e03-3be7-4545-8e38-83320e0ea880` `SD_GPT_USR_IA64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (LoongArch 64-bit)_ | `f46b2c26-59ae-48f0-9106-c50ed47f673d` `SD_GPT_USR_LOONGARCH64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (32-bit MIPS LittleEndian (mipsel))_ | `46b98d8d-b55c-4e8f-aab3-37fca7f80752` `SD_GPT_USR_MIPS_LE_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (64-bit MIPS LittleEndian (mips64el))_ | `3c3d61fe-b5f3-414d-bb71-8739a694a4ef` `SD_GPT_USR_MIPS64_LE_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (HPPA/PARISC)_ | `5843d618-ec37-48d7-9f12-cea8e08768b2` `SD_GPT_USR_PARISC_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (64-bit PowerPC LittleEndian)_ | `ee2b9983-21e8-4153-86d9-b6901a54d1ce` `SD_GPT_USR_PPC64_LE_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (64-bit PowerPC BigEndian)_ | `bdb528a5-a259-475f-a87d-da53fa736a07` `SD_GPT_USR_PPC64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (32-bit PowerPC)_ | `df765d00-270e-49e5-bc75-f47bb2118b09` `SD_GPT_USR_PPC_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (RISC-V 32-bit)_ | `cb1ee4e3-8cd0-4136-a0a4-aa61a32e8730` `SD_GPT_USR_RISCV32_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (RISC-V 64-bit)_ | `8f1056be-9b05-47c4-81d6-be53128e5b54` `SD_GPT_USR_RISCV64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (s390)_ | `b663c618-e7bc-4d6d-90aa-11b756bb1797` `SD_GPT_USR_S390_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (s390x)_ | `31741cc4-1a2a-4111-a581-e00b447d2d06` `SD_GPT_USR_S390X_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (TILE-Gx)_ | `2fb4bf56-07fa-42da-8132-6b139f2026ae` `SD_GPT_USR_TILEGX_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (amd64/x86_64)_ | `77ff5f63-e7b6-4633-acf4-1565b864c0e6` `SD_GPT_USR_X86_64_VERITY` | ditto | ditto | +-| _`/usr/` Verity Partition (x86)_ | `8f461b0d-14ee-4e81-9aa9-049b6fb97abd` `SD_GPT_USR_X86_VERITY` | ditto | ditto | +-| _Root Verity Signature Partition (Alpha)_ | `d46495b7-a053-414f-80f7-700c99921ef8` `SD_GPT_ROOT_ALPHA_VERITY_SIG` | A serialized JSON object, see below | Contains a root hash and a PKCS#7 signature for it, permitting signed dm-verity GPT images. | +-| _Root Verity Signature Partition (ARC)_ | `143a70ba-cbd3-4f06-919f-6c05683a78bc` `SD_GPT_ROOT_ARC_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (32-bit ARM)_ | `42b0455f-eb11-491d-98d3-56145ba9d037` `SD_GPT_ROOT_ARM_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (64-bit ARM/AArch64)_ | `6db69de6-29f4-4758-a7a5-962190f00ce3` `SD_GPT_ROOT_ARM64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (Itanium/IA-64)_ | `e98b36ee-32ba-4882-9b12-0ce14655f46a` `SD_GPT_ROOT_IA64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (LoongArch 64-bit)_ | `5afb67eb-ecc8-4f85-ae8e-ac1e7c50e7d0` `SD_GPT_ROOT_LOONGARCH64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (32-bit MIPS LittleEndian (mipsel))_ | `c919cc1f-4456-4eff-918c-f75e94525ca5` `SD_GPT_ROOT_MIPS_LE_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (64-bit MIPS LittleEndian (mips64el))_ | `904e58ef-5c65-4a31-9c57-6af5fc7c5de7` `SD_GPT_ROOT_MIPS64_LE_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (HPPA/PARISC)_ | `15de6170-65d3-431c-916e-b0dcd8393f25` `SD_GPT_ROOT_PARISC_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (64-bit PowerPC LittleEndian)_ | `d4a236e7-e873-4c07-bf1d-bf6cf7f1c3c6` `SD_GPT_ROOT_PPC64_LE_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (64-bit PowerPC BigEndian)_ | `f5e2c20c-45b2-4ffa-bce9-2a60737e1aaf` `SD_GPT_ROOT_PPC64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (32-bit PowerPC)_ | `1b31b5aa-add9-463a-b2ed-bd467fc857e7` `SD_GPT_ROOT_PPC_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (RISC-V 32-bit)_ | `3a112a75-8729-4380-b4cf-764d79934448` `SD_GPT_ROOT_RISCV32_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (RISC-V 64-bit)_ | `efe0f087-ea8d-4469-821a-4c2a96a8386a` `SD_GPT_ROOT_RISCV64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (s390)_ | `3482388e-4254-435a-a241-766a065f9960` `SD_GPT_ROOT_S390_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (s390x)_ | `c80187a5-73a3-491a-901a-017c3fa953e9` `SD_GPT_ROOT_S390X_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (TILE-Gx)_ | `b3671439-97b0-4a53-90f7-2d5a8f3ad47b` `SD_GPT_ROOT_TILEGX_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (amd64/x86_64)_ | `41092b05-9fc8-4523-994f-2def0408b176` `SD_GPT_ROOT_X86_64_VERITY_SIG` | ditto | ditto | +-| _Root Verity Signature Partition (x86)_ | `5996fc05-109c-48de-808b-23fa0830b676` `SD_GPT_ROOT_X86_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (Alpha)_ | `5c6e1c76-076a-457a-a0fe-f3b4cd21ce6e` `SD_GPT_USR_ALPHA_VERITY_SIG` | A serialized JSON object, see below | Similar semantics to root Verity signature partition, but just for the `/usr/` partition. | +-| _`/usr/` Verity Signature Partition (ARC)_ | `94f9a9a1-9971-427a-a400-50cb297f0f35` `SD_GPT_USR_ARC_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (32-bit ARM)_ | `d7ff812f-37d1-4902-a810-d76ba57b975a` `SD_GPT_USR_ARM_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (64-bit ARM/AArch64)_ | `c23ce4ff-44bd-4b00-b2d4-b41b3419e02a` `SD_GPT_USR_ARM64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (Itanium/IA-64)_ | `8de58bc2-2a43-460d-b14e-a76e4a17b47f` `SD_GPT_USR_IA64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (LoongArch 64-bit)_ | `b024f315-d330-444c-8461-44bbde524e99` `SD_GPT_USR_LOONGARCH64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (32-bit MIPS LittleEndian (mipsel))_ | `3e23ca0b-a4bc-4b4e-8087-5ab6a26aa8a9` `SD_GPT_USR_MIPS_LE_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (64-bit MIPS LittleEndian (mips64el))_ | `f2c2c7ee-adcc-4351-b5c6-ee9816b66e16` `SD_GPT_USR_MIPS64_LE_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (HPPA/PARISC)_ | `450dd7d1-3224-45ec-9cf2-a43a346d71ee` `SD_GPT_USR_PARISC_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (64-bit PowerPC LittleEndian)_ | `c8bfbd1e-268e-4521-8bba-bf314c399557` `SD_GPT_USR_PPC64_LE_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (64-bit PowerPC BigEndian)_ | `0b888863-d7f8-4d9e-9766-239fce4d58af` `SD_GPT_USR_PPC64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (32-bit PowerPC)_ | `7007891d-d371-4a80-86a4-5cb875b9302e` `SD_GPT_USR_PPC_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (RISC-V 32-bit)_ | `c3836a13-3137-45ba-b583-b16c50fe5eb4` `SD_GPT_USR_RISCV32_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (RISC-V 64-bit)_ | `d2f9000a-7a18-453f-b5cd-4d32f77a7b32` `SD_GPT_USR_RISCV64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (s390)_ | `17440e4f-a8d0-467f-a46e-3912ae6ef2c5` `SD_GPT_USR_S390_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (s390x)_ | `3f324816-667b-46ae-86ee-9b0c0c6c11b4` `SD_GPT_USR_S390X_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (TILE-Gx)_ | `4ede75e2-6ccc-4cc8-b9c7-70334b087510` `SD_GPT_USR_TILEGX_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (amd64/x86_64)_ | `e7bb33fb-06cf-4e81-8273-e543b413e2e2` `SD_GPT_USR_X86_64_VERITY_SIG` | ditto | ditto | +-| _`/usr/` Verity Signature Partition (x86)_ | `974a71c0-de41-43c3-be5d-5c5ccd1ad2c0` `SD_GPT_USR_X86_VERITY_SIG` | ditto | ditto | +-| _EFI System Partition_ | `c12a7328-f81f-11d2-ba4b-00a0c93ec93b` `SD_GPT_ESP` | VFAT | The ESP used for the current boot is automatically mounted to `/efi/` (or `/boot/` as fallback), unless a different partition is mounted there (possibly via `/etc/fstab`, or because the Extended Boot Loader Partition — see below — exists) or the directory is non-empty on the root disk. This partition type is defined by the [UEFI Specification](http://www.uefi.org/specifications). | +-| _Extended Boot Loader Partition_ | `bc13c2ff-59e6-4262-a352-b275fd6f7172` `SD_GPT_XBOOTLDR` | Typically VFAT | The Extended Boot Loader Partition (XBOOTLDR) used for the current boot is automatically mounted to `/boot/`, unless a different partition is mounted there (possibly via `/etc/fstab`) or the directory is non-empty on the root disk. This partition type is defined by the [Boot Loader Specification](https://systemd.io/BOOT_LOADER_SPECIFICATION). | +-| _Swap_ | `0657fd6d-a4ab-43c4-84e5-0933c84b4f4f` `SD_GPT_SWAP` | Swap, optionally in LUKS | All swap partitions on the disk containing the root partition are automatically enabled. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/swap`. This partition type predates the Discoverable Partitions Specification. | +-| _Home Partition_ | `933ac7e1-2eb4-4f13-b844-0e14e2aef915` `SD_GPT_HOME` | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/home/`. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/home`. | +-| _Server Data Partition_ | `3b8f8425-20e0-4f3b-907f-1a25a76f98e8` `SD_GPT_SRV` | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/srv/`. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/srv`. | +-| _Variable Data Partition_ | `4d21b016-b534-45c2-a9fb-5c16e091fd2d` `SD_GPT_VAR` | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/var/` — under the condition that its partition UUID matches the first 128 bits of `HMAC-SHA256(machine-id, 0x4d21b016b53445c2a9fb5c16e091fd2d)` (i.e. the SHA256 HMAC hash of the binary type UUID keyed by the machine ID as read from [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html). This special requirement is made because `/var/` (unlike the other partition types listed here) is inherently private to a specific installation and cannot possibly be shared between multiple OS installations on the same disk, and thus should be bound to a specific instance of the OS, identified by its machine ID. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/var`. | +-| _Temporary Data Partition_ | `7ec6f557-3bc5-4aca-b293-16ef5df639d1` `SD_GPT_TMP` | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/var/tmp/`. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/tmp`. Note that the intended mount point is indeed `/var/tmp/`, not `/tmp/`. The latter is typically maintained in memory via `tmpfs` and does not require a partition on disk. In some cases it might be desirable to make `/tmp/` persistent too, in which case it is recommended to make it a symlink or bind mount to `/var/tmp/`, thus not requiring its own partition type UUID. | +-| _Per-user Home Partition_ | `773f91ef-66d4-49b5-bd83-d683bf40ad16` `SD_GPT_USER_HOME` | Any native, optionally in LUKS | A home partition of a user, managed by [`systemd-homed`](https://www.freedesktop.org/software/systemd/man/systemd-homed.html). | +-| _Generic Linux Data Partition_ | `0fc63daf-8483-4772-8e79-3d69d8477de4` `SD_GPT_LINUX_GENERIC` | Any native, optionally in LUKS | No automatic mounting takes place for other Linux data partitions. This partition type should be used for all partitions that carry Linux file systems. The installer needs to mount them explicitly via entries in `/etc/fstab`. Optionally, these partitions may be encrypted with LUKS. This partition type predates the Discoverable Partitions Specification. | +- +-Other GPT type IDs might be used on Linux, for example to mark software RAID or +-LVM partitions. The definitions of those GPT types is outside of the scope of +-this specification. +- +-[systemd-id128(1)](https://www.freedesktop.org/software/systemd/man/systemd-id128.html)'s +-`show` command may be used to list those GPT partition type UUIDs. +- +-## Partition Names +- +-For partitions of the types listed above it is recommended to use +-human-friendly, descriptive partition names in the GPT partition table, for +-example "*Home*", "*Server* *Data*", "*Fedora* *Root*" and similar, possibly +-localized. +- +-For the Root/Verity/Verity signature partitions it might make sense to use a +-versioned naming scheme reflecting the OS name and its version, +-e.g. "fooOS_2021.4" or similar. +- +-## Partition Attribute Flags +- +-This specification defines three GPT partition attribute flags that may be set +-for the partition types defined above: +- +-1. For the root, `/usr/`, Verity, Verity signature, home, server data, variable +- data, temporary data, swap, and extended boot loader partitions, the +- partition flag bit 63 ("*no-auto*", *SD_GPT_FLAG_NO_AUTO*) may be used to +- turn off auto-discovery for the specific partition. If set, the partition +- will not be automatically mounted or enabled. +- +-2. For the root, `/usr/`, Verity, Verity signature home, server data, variable +- data, temporary data and extended boot loader partitions, the partition flag +- bit 60 ("*read-only*", *SD_GPT_FLAG_READ_ONLY*) may be used to mark a +- partition for read-only mounts only. If set, the partition will be mounted +- read-only instead of read-write. Note that the variable data partition and +- the temporary data partition will generally not be able to serve their +- purpose if marked read-only, since by their very definition they are +- supposed to be mutable. (The home and server data partitions are generally +- assumed to be mutable as well, but the requirement for them is not equally +- strong.) Because of that, while the read-only flag is defined and supported, +- it's almost never a good idea to actually use it for these partitions. Also +- note that Verity and signature partitions are by their semantics always +- read-only. The flag is hence of little effect for them, and it is +- recommended to set it unconditionally for the Verity and signature partition +- types. +- +-3. For the root, `/usr/`, home, server data, variable data, temporary data and +- extended boot loader partitions, the partition flag bit 59 +- ("*grow-file-system*", *SD_GPT_FLAG_GROWFS*) may be used to mark a partition +- for automatic growing of the contained file system to the size of the +- partition when mounted. Tools that automatically mount disk image with a GPT +- partition table are suggested to implicitly grow the contained file system +- to the partition size they are contained in, if they are found to be +- smaller. This flag is without effect on partitions marked "*read-only*". +- +-Note that the first two flag definitions happen to correspond nicely to the +-same ones used by Microsoft Basic Data Partitions. +- +-All three of these flags generally affect only auto-discovery and automatic +-mounting of disk images. If partitions marked with these flags are mounted +-using low-level commands like +-[mount(8)](https://man7.org/linux/man-pages/man2/mount.8.html) or directly with +-[mount(2)](https://man7.org/linux/man-pages/man2/mount.2.html), they typically +-have no effect. +- +-## Verity +- +-The Root/`/usr/` partition types and their matching Verity and Verity signature +-partitions enable relatively automatic handling of `dm-verity` protected +-setups. These types are defined with two modes of operation in mind: +- +-1. A trusted Verity root hash is passed in externally, for example is specified +- on the kernel command line that is signed along with the kernel image using +- SecureBoot PE signing (which in turn is tested against a set of +- firmware-provided set of signing keys). If so, discovery and setup of a +- Verity volume may be fully automatic: if the root partition's UUID is chosen +- to match the first 128 bit of the root hash, and the matching Verity +- partition UUIDs is chosen to match the last 128bit of the root hash, then +- automatic discovery and match-up of the two partitions is possible, as the +- root hash is enough to both find the partitions and then combine them in a +- Verity volume. In this mode a Verity signature partition is not used and +- unnecessary. +- +-2. A Verity signature partition is included on the disk, with a signature to be +- tested against a system-provided set of signing keys. The signature +- partition primarily contains two fields: the root hash to use, and a PKCS#7 +- signature of it, using a signature key trusted by the OS. If so, discovery +- and setup of a Verity volume may be fully automatic. First, the specified +- root hash is validated with the signature and the OS-provided trusted +- keys. If the signature checks out the root hash is then used in the same way +- as in the first mode of operation described above. +- +-Both modes of operation may be combined in a single image. This is particularly +-useful for images that shall be usable in two different contexts: for example +-an image that shall be able to boot directly on UEFI systems (in which +-case it makes sense to include the root hash on the kernel command line that is +-included in the signed kernel image to boot, as per mode of operation #1 +-above), but also be able to used as image for a container engine (such as +-`systemd-nspawn`), which can use the signature partition to validate the image, +-without making use of the signed kernel image (and thus following mode of +-operation #2). +- +-The Verity signature partition's contents should be a serialized JSON object in +-text form, padded with NUL bytes to the next multiple of 4096 bytes in +-size. Currently three fields are defined for the JSON object: +- +-1. The (mandatory) `rootHash` field should be a string containing the Verity root hash, +- formatted as series of (lowercase) hex characters. +- +-2. The (mandatory) `signature` field should be a string containing the PKCS#7 +- signature of the root hash, in Base64-encoded DER format. This should be the +- same format used by the Linux kernel's dm-verity signature logic, i.e. the +- signed data should be the exact string representation of the hash, as stored +- in `rootHash` above. +- +-3. The (optional) `certificateFingerprint` field should be a string containing +- a SHA256 fingerprint of the X.509 certificate in DER format for the key that +- signed the root hash, formatted as series of (lowercase) hex characters (no `:` +- separators or such). +- +-More fields might be added in later revisions of this specification. +- +-## Suggested Mode of Operation +- +-An *installer* that repartitions the hard disk _should_ use the above UUID +-partition types for appropriate partitions it creates. +- +-An *installer* which supports a "manual partitioning" interface _may_ choose to +-pre-populate the interface with swap, `/home/`, `/srv/`, `/var/tmp/` partitions +-of pre-existing Linux installations, identified with the GPT type UUIDs +-above. The installer should not pre-populate such an interface with any +-identified root, `/usr` or `/var/` partition unless the intention is to +-overwrite an existing operating system that might be installed. +- +-An *installer* _may_ omit creating entries in `/etc/fstab` for root, `/home/`, +-`/srv/`, `/var/`, `/var/tmp` and for the swap partitions if they use these UUID +-partition types, and are the first partitions on the disk of each type. If the +-ESP shall be mounted to `/efi/` (or `/boot/`), it may additionally omit +-creating the entry for it in `/etc/fstab`. If the EFI partition shall not be +-mounted to `/efi/` or `/boot/`, it _must_ create `/etc/fstab` entries for them. +-If other partitions are used (for example for `/usr/local/` or +-`/var/lib/mysql/`), the installer _must_ register these in `/etc/fstab`. The +-`root=` parameter passed to the kernel by the boot loader may be omitted if the +-root partition is the first one on the disk of its type. If the root partition +-is not the first one on the disk, the `root=` parameter _must_ be passed to the +-kernel by the boot loader. An installer that mounts a root, `/usr/`, `/home/`, +-`/srv/`, `/var/`, or `/var/tmp/` file system with the partition types defined +-as above which contains a LUKS header _must_ call the device mapper device +-"root", "usr", "home", "srv", "var" or "tmp", respectively. This is necessary +-to ensure that the automatic discovery will never result in different device +-mapper names than any static configuration by the installer, thus eliminating +-possible naming conflicts and ambiguities. +- +-An *operating* *system* _should_ automatically discover and mount the first +-root partition that does not have the no-auto flag set (as described above) by +-scanning the disk containing the currently used EFI ESP. It _should_ +-automatically discover and mount the first `/usr/`, `/home/`, `/srv/`, `/var/`, +-`/var/tmp/` and swap partitions that do not have the no-auto flag set by +-scanning the disk containing the discovered root partition. It should +-automatically discover and mount the partition containing the currently used +-EFI ESP to `/efi/` (or `/boot/` as fallback). It should automatically discover +-and mount the partition containing the currently used Extended Boot Loader +-Partition to `/boot/`. It _should not_ discover or automatically mount +-partitions with other UUID partition types, or partitions located on other +-disks, or partitions with the no-auto flag set. User configuration shall +-always override automatic discovery and mounting. If a root, `/usr/`, +-`/home/`, `/srv/`, `/boot/`, `/var/`, `/var/tmp/`, `/efi/`, `/boot/` or swap +-partition is listed in `/etc/fstab` or with `root=` on the kernel command line, +-it _must_ take precedence over automatically discovered partitions. If a +-`/home/`, `/usr/`, `/srv/`, `/boot/`, `/var/`, `/var/tmp/`, `/efi/` or `/boot/` +-directory is found to be populated already in the root partition, the automatic +-discovery _must not_ mount any discovered file system over it. Optionally, in +-case of the root, `/usr/` and their Verity partitions instead of strictly +-mounting the first suitable partition an OS might choose to mount the partition +-whose label compares the highest according to `strverscmp()` or similar logic, +-in order to implement a simple partition-based A/B versioning scheme. The +-precise rules are left for the implementation to decide, but when in doubt +-earlier partitions (by their index) should always win over later partitions if +-the label comparison is inconclusive. +- +-A *container* *manager* should automatically discover and mount the root, +-`/usr/`, `/home/`, `/srv/`, `/var/`, `/var/tmp/` partitions inside a container +-disk image. It may choose to mount any discovered ESP and/or XBOOTLDR +-partition to `/efi/` or `/boot/`. It should ignore any swap should they be +-included in a container disk image. +- +-If a btrfs file system is automatically discovered and mounted by the operating +-system/container manager it will be mounted with its *default* subvolume. The +-installer should make sure to set the default subvolume correctly using "btrfs +-subvolume set-default". +- +-## Sharing of File Systems between Installations +- +-If two Linux-based operating systems are installed on the same disk, the scheme +-above suggests that they may share the swap, `/home/`, `/srv/`, `/var/tmp/`, +-ESP, XBOOTLDR. However, they should each have their own root, `/usr/` and +-`/var/` partition. +- +-## Frequently Asked Questions +- +-### Why are you taking my `/etc/fstab` away? +- +-We are not. `/etc/fstab` always overrides automatic discovery and is indeed +-mentioned in the specifications. We are simply trying to make the boot and +-installation processes of Linux a bit more robust and self-descriptive. +- +-### Why did you only define the root partition for these listed architectures? +- +-Please submit a patch that adds appropriate partition type UUIDs for the +-architecture of your choice should they be missing so far. The only reason they +-aren't defined yet is that nobody submitted them yet. +- +-### Why define distinct root partition UUIDs for the various architectures? +- +-This allows disk images that may be booted on multiple architectures to use +-discovery of the appropriate root partition on each architecture. +- +-### Doesn't this break multi-boot scenarios? +- +-No, it doesn't. The specification says that installers may not stop creating +-`/etc/fstab` or stop including `root=` on the kernel command line, unless the used +-partitions are the first ones of their type on the disk. Additionally, +-`/etc/fstab` and `root=` both override automatic discovery. Multi-boot is hence +-well supported, since it doesn't change anything for anything but the first +-installation. +- +-That all said, it's not expected that generic installers generally stop setting +-`root=` and creating `/etc/fstab` anyway. The option to drop these configuration +-bits is primarily something for appliance-like devices. However, generic +-installers should *still* set the right GPT partition types for the partitions +-they create so that container managers, partition tools and administrators can +-benefit. Phrased differently, this specification introduces A) the +-*recommendation* to use the newly defined partition types to tag things +-properly and B) the *option* to then drop `root=` and `/etc/fstab`. While we +-advertise A) to *all* installers, we only propose B) for simpler, +-appliance-like installations. +- +-### What partitioning tools will create a DPS-compliant partition table? +- +-As of util-linux 2.25.2, the `fdisk` tool provides type codes to create the +-root, home, and swap partitions that the DPS expects. By default, `fdisk` will +-create an old-style MBR, not a GPT, so typing `l` to list partition types will +-not show the choices to let you set the correct UUID. Make sure to first create +-an empty GPT, then type `l` in order for the DPS-compliant type codes to be +-available. +- +-The `gdisk` tool (from version 1.0.5 onward) and its variants (`sgdisk`, +-`cgdisk`) also support creation of partitions with a matching type code. +- +-## Links +- +-[Boot Loader Specification](BOOT_LOADER_SPECIFICATION.md)
+-[Boot Loader Interface](BOOT_LOADER_INTERFACE.md)
+-[Safely Building Images](BUILDING_IMAGES.md)
+-[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)
+-[`bootctl(1)`](https://www.freedesktop.org/software/systemd/man/bootctl.html)
+-[`systemd-gpt-auto-generator(8)`](https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html) ++[This content has moved to the UAPI group website](https://uapi-group.org/specifications/specs/discoverable_partitions_specification/) diff --git a/SOURCES/0013-journald.conf-don-t-touch-current-audit-settings.patch b/SOURCES/0013-journald.conf-don-t-touch-current-audit-settings.patch deleted file mode 100644 index 6a49362..0000000 --- a/SOURCES/0013-journald.conf-don-t-touch-current-audit-settings.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 56d9b62ce456e8c0e520bda3447db38864983173 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Thu, 5 Aug 2021 15:26:13 +0200 -Subject: [PATCH] journald.conf: don't touch current audit settings - -RHEL-only - -Related: #1973856 ---- - src/journal/journald.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/journal/journald.conf b/src/journal/journald.conf -index 5a60a9d39c..3544da2112 100644 ---- a/src/journal/journald.conf -+++ b/src/journal/journald.conf -@@ -44,4 +44,4 @@ - #MaxLevelWall=emerg - #LineMax=48K - #ReadKMsg=yes --#Audit=yes -+Audit= diff --git a/SOURCES/0014-Revert-udev-remove-WAIT_FOR-key.patch b/SOURCES/0014-Revert-udev-remove-WAIT_FOR-key.patch deleted file mode 100644 index a5acad5..0000000 --- a/SOURCES/0014-Revert-udev-remove-WAIT_FOR-key.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 2843766767452a69dade1ef8ab2d1d3e5e68a1d3 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Tue, 10 Aug 2021 14:46:16 +0200 -Subject: [PATCH] Revert "udev: remove WAIT_FOR key" - -This reverts commit f2b8052fb648b788936dd3e85be6a9aca90fbb2f. - -RHEL-only - -Resolves: #1982666 ---- - man/udev.xml | 9 +++++++ - src/udev/udev-rules.c | 56 +++++++++++++++++++++++++++++++++++++++ - test/rule-syntax-check.py | 2 +- - 3 files changed, 66 insertions(+), 1 deletion(-) - -diff --git a/man/udev.xml b/man/udev.xml -index f6ea2abc12..ce96e201e4 100644 ---- a/man/udev.xml -+++ b/man/udev.xml -@@ -592,6 +592,15 @@ - - - -+ -+ WAIT_FOR -+ -+ Wait for a file to become available or until a timeout of -+ 10 seconds expires. The path is relative to the sysfs device; -+ if no path is specified, this waits for an attribute to appear. -+ -+ -+ - - OPTIONS - -diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c -index 1a384d6b38..243a792662 100644 ---- a/src/udev/udev-rules.c -+++ b/src/udev/udev-rules.c -@@ -79,6 +79,7 @@ typedef enum { - TK_M_TAG, /* strv, sd_device_get_tag_first(), sd_device_get_tag_next() */ - TK_M_SUBSYSTEM, /* string, sd_device_get_subsystem() */ - TK_M_DRIVER, /* string, sd_device_get_driver() */ -+ TK_M_WAITFOR, - TK_M_ATTR, /* string, takes filename through attribute, sd_device_get_sysattr_value(), udev_resolve_subsys_kernel(), etc. */ - TK_M_SYSCTL, /* string, takes kernel parameter through attribute */ - -@@ -416,6 +417,47 @@ static void rule_line_append_token(UdevRuleLine *rule_line, UdevRuleToken *token - rule_line->current_token = token; - } - -+#define WAIT_LOOP_PER_SECOND 50 -+static int wait_for_file(sd_device *dev, const char *file, int timeout) { -+ char filepath[UDEV_PATH_SIZE]; -+ char devicepath[UDEV_PATH_SIZE]; -+ struct stat stats; -+ int loop = timeout * WAIT_LOOP_PER_SECOND; -+ -+ /* a relative path is a device attribute */ -+ devicepath[0] = '\0'; -+ if (file[0] != '/') { -+ const char *val; -+ int r; -+ -+ r = sd_device_get_syspath(dev, &val); -+ if (r < 0) -+ return r; -+ strscpyl(devicepath, sizeof(devicepath), val, NULL); -+ strscpyl(filepath, sizeof(filepath), devicepath, "/", file, NULL); -+ file = filepath; -+ } -+ -+ while (--loop) { -+ const struct timespec duration = { 0, 1000 * 1000 * 1000 / WAIT_LOOP_PER_SECOND }; -+ -+ /* lookup file */ -+ if (stat(file, &stats) == 0) { -+ log_debug("file '%s' appeared after %i loops", file, (timeout * WAIT_LOOP_PER_SECOND) - loop-1); -+ return 0; -+ } -+ /* make sure, the device did not disappear in the meantime */ -+ if (devicepath[0] != '\0' && stat(devicepath, &stats) != 0) { -+ log_debug("device disappeared while waiting for '%s'", file); -+ return -2; -+ } -+ log_debug("wait for '%s' for %i mseconds", file, 1000 / WAIT_LOOP_PER_SECOND); -+ nanosleep(&duration, NULL); -+ } -+ log_debug("waiting for '%s' failed", file); -+ return -1; -+} -+ - static int rule_line_add_token(UdevRuleLine *rule_line, UdevRuleTokenType type, UdevRuleOperatorType op, char *value, void *data) { - UdevRuleToken *token; - UdevRuleMatchType match_type = _MATCH_TYPE_INVALID; -@@ -958,6 +1000,12 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp - r = rule_line_add_token(rule_line, TK_A_RUN_BUILTIN, op, value, UDEV_BUILTIN_CMD_TO_PTR(cmd)); - } else - return log_token_invalid_attr(rules, key); -+ } else if (streq(key, "WAIT_FOR") || streq(key, "WAIT_FOR_SYSFS")) { -+ if (op == OP_REMOVE) -+ return log_token_invalid_op(rules, key); -+ -+ rule_line_add_token(rule_line, TK_M_WAITFOR, 0, value, NULL); -+ return 1; - } else if (streq(key, "GOTO")) { - if (attr) - return log_token_invalid_attr(rules, key); -@@ -1643,6 +1691,14 @@ static int udev_rule_apply_token_to_event( - - return token_match_string(token, val); - } -+ case TK_M_WAITFOR: { -+ char filename[UDEV_PATH_SIZE]; -+ int found; -+ -+ udev_event_apply_format(event, token->value, filename, sizeof(filename), false); -+ found = (wait_for_file(event->dev, filename, 10) == 0); -+ return found || (token->op == OP_NOMATCH); -+ } - case TK_M_ATTR: - case TK_M_PARENTS_ATTR: - return token_match_attr(token, dev, event); -diff --git a/test/rule-syntax-check.py b/test/rule-syntax-check.py -index 9a9e4d1658..0649bcf58e 100755 ---- a/test/rule-syntax-check.py -+++ b/test/rule-syntax-check.py -@@ -20,7 +20,7 @@ no_args_tests = re.compile(r'(ACTION|DEVPATH|KERNELS?|NAME|SYMLINK|SUBSYSTEMS?|D - # PROGRAM can also be specified as an assignment. - program_assign = re.compile(r'PROGRAM\s*=\s*' + quoted_string_re + '$') - args_tests = re.compile(r'(ATTRS?|ENV|CONST|TEST){([a-zA-Z0-9/_.*%-]+)}\s*(?:=|!)=\s*' + quoted_string_re + '$') --no_args_assign = re.compile(r'(NAME|SYMLINK|OWNER|GROUP|MODE|TAG|RUN|LABEL|GOTO|OPTIONS|IMPORT)\s*(?:\+=|:=|=)\s*' + quoted_string_re + '$') -+no_args_assign = re.compile(r'(NAME|SYMLINK|OWNER|GROUP|MODE|TAG|RUN|LABEL|GOTO|WAIT_FOR|OPTIONS|IMPORT)\s*(?:\+=|:=|=)\s*' + quoted_string_re + '$') - args_assign = re.compile(r'(ATTR|ENV|IMPORT|RUN){([a-zA-Z0-9/_.*%-]+)}\s*(=|\+=)\s*' + quoted_string_re + '$') - # Find comma-separated groups, but allow commas that are inside quoted strings. - # Using quoted_string_re + '?' so that strings missing the last double quote diff --git a/SOURCES/0014-core-fix-memleak-in-GetUnitFileLinks-method.patch b/SOURCES/0014-core-fix-memleak-in-GetUnitFileLinks-method.patch new file mode 100644 index 0000000..2e2aed4 --- /dev/null +++ b/SOURCES/0014-core-fix-memleak-in-GetUnitFileLinks-method.patch @@ -0,0 +1,49 @@ +From a9424191821c8c967edd7dd92a19d02ff5bbca87 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 2 Nov 2022 07:06:46 +0900 +Subject: [PATCH] core: fix memleak in GetUnitFileLinks method + +(cherry picked from commit a12ba535fa677e642c7ba19e81062ed6e9365ceb) + +Related #2138081 +--- + src/core/dbus-manager.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c +index 919aa58cde..88f098ec86 100644 +--- a/src/core/dbus-manager.c ++++ b/src/core/dbus-manager.c +@@ -2647,21 +2647,27 @@ static int method_get_unit_file_links(sd_bus_message *message, void *userdata, s + (runtime ? UNIT_FILE_RUNTIME : 0); + + r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, flags, NULL, p, &changes, &n_changes); +- if (r < 0) +- return log_error_errno(r, "Failed to get file links for %s: %m", name); ++ if (r < 0) { ++ log_error_errno(r, "Failed to get file links for %s: %m", name); ++ goto finish; ++ } + + for (i = 0; i < n_changes; i++) + if (changes[i].type == INSTALL_CHANGE_UNLINK) { + r = sd_bus_message_append(reply, "s", changes[i].path); + if (r < 0) +- return r; ++ goto finish; + } + + r = sd_bus_message_close_container(reply); + if (r < 0) +- return r; ++ goto finish; + +- return sd_bus_send(NULL, reply, NULL); ++ r = sd_bus_send(NULL, reply, NULL); ++ ++finish: ++ install_changes_free(changes, n_changes); ++ return r; + } + + static int method_get_job_waiting(sd_bus_message *message, void *userdata, sd_bus_error *error) { diff --git a/SOURCES/0015-Really-don-t-enable-systemd-journald-audit.socket.patch b/SOURCES/0015-Really-don-t-enable-systemd-journald-audit.socket.patch deleted file mode 100644 index 30d9a20..0000000 --- a/SOURCES/0015-Really-don-t-enable-systemd-journald-audit.socket.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9a0acc0b292d283b4507c6b749396c019af7e4ab Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Wed, 25 Aug 2021 16:03:04 +0200 -Subject: [PATCH] Really don't enable systemd-journald-audit.socket - -RHEL-only - -Resolves: #1973856 ---- - units/systemd-journald.service.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in -index d981273b07..f190dff5fb 100644 ---- a/units/systemd-journald.service.in -+++ b/units/systemd-journald.service.in -@@ -33,7 +33,7 @@ RestrictRealtime=yes - RestrictSUIDSGID=yes - RuntimeDirectory=systemd/journal - RuntimeDirectoryPreserve=yes --Sockets=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket -+Sockets=systemd-journald.socket systemd-journald-dev-log.socket - StandardOutput=null - SystemCallArchitectures=native - SystemCallErrorNumber=EPERM diff --git a/SOURCES/0015-man-use-the-correct-Markers-property-name-for-markin.patch b/SOURCES/0015-man-use-the-correct-Markers-property-name-for-markin.patch new file mode 100644 index 0000000..36a2571 --- /dev/null +++ b/SOURCES/0015-man-use-the-correct-Markers-property-name-for-markin.patch @@ -0,0 +1,42 @@ +From ada95dd4f4c0014815a2c3162de6297107569b05 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Wed, 2 Nov 2022 11:48:23 +0100 +Subject: [PATCH] man: use the correct 'Markers' property name for marking + units + +Follow-up to c9615f7352 and 70666e28a1. + +(cherry picked from commit 1ca1bb03dec9ae3e8d734bd40eeb60210ffd7a0a) + +Related #2138081 +--- + man/org.freedesktop.systemd1.xml | 2 +- + man/systemctl.xml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml +index cbd552bd99..5e08b35234 100644 +--- a/man/org.freedesktop.systemd1.xml ++++ b/man/org.freedesktop.systemd1.xml +@@ -1250,7 +1250,7 @@ node /org/freedesktop/systemd1 { + "ReloadOrRestart" flavors attempt a reload if the unit supports it and use a restart otherwise.
+ + EnqueueMarkedJobs() creates reload/restart jobs for units which have been +- appropriately marked, see Marks property above. This is equivalent to calling ++ appropriately marked, see Markers property above. This is equivalent to calling + TryRestartUnit() or ReloadOrTryRestartUnit() for the marked + units. + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index 4d4f6c3992..997925892d 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -2386,7 +2386,7 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + Only allowed with reload-or-restart. Enqueues restart jobs for all + units that have the needs-restart mark, and reload jobs for units that have the + needs-reload mark. When a unit marked for reload does not support reload, restart +- will be queued. Those properties can be set using set-property Marks. ++ will be queued. Those properties can be set using set-property Markers=…. + + Unless is used, systemctl will wait for the + queued jobs to finish. diff --git a/SOURCES/0016-rules-add-elevator-kernel-command-line-parameter.patch b/SOURCES/0016-rules-add-elevator-kernel-command-line-parameter.patch deleted file mode 100644 index 8338727..0000000 --- a/SOURCES/0016-rules-add-elevator-kernel-command-line-parameter.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 1e423276a24d7c895d196f9f10bf8c0b9155c633 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Tue, 12 Feb 2019 16:58:16 +0100 -Subject: [PATCH] rules: add elevator= kernel command line parameter - -Kernel removed the elevator= option, so let's reintroduce -it for rhel8 via udev rule. - -RHEL-only - -Resolves: #2003002 ---- - rules.d/40-elevator.rules | 20 ++++++++++++++++++++ - rules.d/meson.build | 1 + - 2 files changed, 21 insertions(+) - create mode 100644 rules.d/40-elevator.rules - -diff --git a/rules.d/40-elevator.rules b/rules.d/40-elevator.rules -new file mode 100644 -index 0000000000..dbe8fc81a4 ---- /dev/null -+++ b/rules.d/40-elevator.rules -@@ -0,0 +1,20 @@ -+# We aren't adding devices skip the elevator check -+ACTION!="add", GOTO="sched_out" -+ -+SUBSYSTEM!="block", GOTO="sched_out" -+ENV{DEVTYPE}!="disk", GOTO="sched_out" -+ -+# Technically, dm-multipath can be configured to use an I/O scheduler. -+# However, there are races between the 'add' uevent and the linking in -+# of the queue/scheduler sysfs file. For now, just skip dm- devices. -+KERNEL=="dm-*|md*", GOTO="sched_out" -+ -+# Skip bio-based devices, which don't support an I/O scheduler. -+ATTR{queue/scheduler}=="none", GOTO="sched_out" -+ -+# If elevator= is specified on the kernel command line, change the -+# scheduler to the one specified. -+IMPORT{cmdline}="elevator" -+ENV{elevator}!="", ATTR{queue/scheduler}="$env{elevator}" -+ -+LABEL="sched_out" -\ No newline at end of file -diff --git a/rules.d/meson.build b/rules.d/meson.build -index c5c3590b29..7e0bd89200 100644 ---- a/rules.d/meson.build -+++ b/rules.d/meson.build -@@ -5,6 +5,7 @@ install_data( - install_dir : udevrulesdir) - - rules = files(''' -+ 40-elevator.rules - 40-redhat.rules - 60-autosuspend.rules - 60-block.rules diff --git a/SOURCES/0016-test-further-extend-systemctl-s-sanity-coverage.patch b/SOURCES/0016-test-further-extend-systemctl-s-sanity-coverage.patch new file mode 100644 index 0000000..e50d9b5 --- /dev/null +++ b/SOURCES/0016-test-further-extend-systemctl-s-sanity-coverage.patch @@ -0,0 +1,115 @@ +From cce2e337e37524df5ff81e758dbcfa91bf8b696a Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Wed, 2 Nov 2022 11:44:00 +0100 +Subject: [PATCH] test: further extend systemctl's sanity coverage + +Also, fix a race condition introduced by d16684fe13: +``` +[ 16.904218] H testsuite-26.sh[394]: + systemd-run --unit failed.service /bin/false +[ 16.964783] H systemd[845]: failed.service: Executing: /bin/false +[ 16.965062] H systemd[1]: Started failed.service. +[ 16.965462] H testsuite-26.sh[844]: Running as unit: failed.service +[ 16.966390] H testsuite-26.sh[394]: + systemctl is-failed failed.service +[ 16.977970] H testsuite-26.sh[846]: active +[ 16.978403] H systemd[1]: failed.service: Main process exited, code=exited, status=1/FAILURE +[ 16.978478] H systemd[1]: failed.service: Failed with result 'exit-code'. +``` + +(cherry picked from commit 23f3a6f5ff864fd26063c6c35fdaa6d85de566c7) + +Related #2138081 +--- + test/units/testsuite-26.sh | 61 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 60 insertions(+), 1 deletion(-) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index b83f85917b..7c7a12b1ae 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -58,6 +58,9 @@ systemctl list-units + systemctl list-units --recursive + systemctl list-units --type=socket + systemctl list-units --type=service,timer ++# Compat: --type= allows load states for compatibility reasons ++systemctl list-units --type=loaded ++systemctl list-units --type=loaded,socket + systemctl list-units --legend=yes -a "systemd-*" + systemctl list-units --state=active + systemctl list-units --with-dependencies systemd-journald.service +@@ -160,7 +163,7 @@ systemctl revert "$UNIT_NAME" + (! grep -r "CPUQuota=" "/run/systemd/system.control/${UNIT_NAME}.d/") + + # Failed-unit related tests +-systemd-run --unit "failed.service" /bin/false ++(! systemd-run --wait --unit "failed.service" /bin/false) + systemctl is-failed failed.service + systemctl --state=failed | grep failed.service + systemctl --failed | grep failed.service +@@ -189,11 +192,67 @@ for value in pretty us µs utc us+utc µs+utc; do + systemctl show -P KernelTimestamp --timestamp="$value" + done + ++# set-default/get-default ++target="$(systemctl get-default)" ++systemctl set-default emergency.target ++[[ "$(systemctl get-default)" == emergency.target ]] ++systemctl set-default "$target" ++[[ "$(systemctl get-default)" == "$target" ]] ++ ++# show/status ++systemctl show --property "" ++# Pick a heavily sandboxed unit for the best effect on coverage ++systemctl show systemd-logind.service ++systemctl status ++# Ignore the exit code in this case, as it might try to load non-existing units ++systemctl status -a >/dev/null || : ++systemctl status -a --state active,running,plugged >/dev/null ++systemctl status "systemd-*.timer" ++systemctl status "systemd-journald*.socket" ++systemctl status "sys-devices-*-ttyS0.device" ++systemctl status -- -.mount ++ ++# --marked ++systemctl restart "$UNIT_NAME" ++systemctl set-property "$UNIT_NAME" Markers=needs-restart ++systemctl show -P Markers "$UNIT_NAME" | grep needs-restart ++systemctl reload-or-restart --marked ++(! systemctl show -P Markers "$UNIT_NAME" | grep needs-restart) ++ ++# --dry-run with destructive verbs ++# kexec is skipped intentionally, as it requires a bit more involved setup ++VERBS=( ++ default ++ emergency ++ exit ++ halt ++ hibernate ++ hybrid-sleep ++ poweroff ++ reboot ++ rescue ++ suspend ++ suspend-then-hibernate ++) ++ ++for verb in "${VERBS[@]}"; do ++ systemctl --dry-run "$verb" ++ ++ if [[ "$verb" =~ (halt|poweroff|reboot) ]]; then ++ systemctl --dry-run --message "Hello world" "$verb" ++ systemctl --dry-run --no-wall "$verb" ++ systemctl --dry-run -f "$verb" ++ systemctl --dry-run -ff "$verb" ++ fi ++done ++ + # Aux verbs & assorted checks + systemctl is-active "*-journald.service" + systemctl cat "*journal*" + systemctl cat "$UNIT_NAME" + systemctl help "$UNIT_NAME" ++systemctl service-watchdogs ++systemctl service-watchdogs "$(systemctl service-watchdogs)" + + # show/set-environment + # Make sure PATH is set diff --git a/SOURCES/0017-test-add-a-sanity-coverage-for-systemd-analyze-verbs.patch b/SOURCES/0017-test-add-a-sanity-coverage-for-systemd-analyze-verbs.patch new file mode 100644 index 0000000..e194f13 --- /dev/null +++ b/SOURCES/0017-test-add-a-sanity-coverage-for-systemd-analyze-verbs.patch @@ -0,0 +1,131 @@ +From d68d785ba0e3ecd59a2678fe00fbd7b1bde90622 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Wed, 2 Nov 2022 17:51:51 +0100 +Subject: [PATCH] test: add a sanity coverage for systemd-analyze verbs + +(cherry picked from commit 6c83054c0133eb53245e479d71589dceff76cf74) + +Related #2138081 +--- + test/units/testsuite-65.sh | 108 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 108 insertions(+) + +diff --git a/test/units/testsuite-65.sh b/test/units/testsuite-65.sh +index 64ce629f3b..ece6b8734e 100755 +--- a/test/units/testsuite-65.sh ++++ b/test/units/testsuite-65.sh +@@ -9,6 +9,114 @@ set -eux + systemd-analyze log-level debug + export SYSTEMD_LOG_LEVEL=debug + ++# Sanity checks ++# ++# We can't really test time, blame, critical-chain and plot verbs here, as ++# the testsuite service is a part of the boot transaction, so let's assume ++# they fail ++systemd-analyze || : ++systemd-analyze time || : ++systemd-analyze blame || : ++systemd-analyze critical-chain || : ++systemd-analyze plot >/dev/null || : ++# dot ++systemd-analyze dot >/dev/null ++systemd-analyze dot systemd-journald.service >/dev/null ++systemd-analyze dot systemd-journald.service systemd-logind.service >/dev/null ++systemd-analyze dot --from-pattern="*" --from-pattern="*.service" systemd-journald.service >/dev/null ++systemd-analyze dot --to-pattern="*" --to-pattern="*.service" systemd-journald.service >/dev/null ++systemd-analyze dot --from-pattern="*.service" --to-pattern="*.service" systemd-journald.service >/dev/null ++systemd-analyze dot --order systemd-journald.service systemd-logind.service >/dev/null ++systemd-analyze dot --require systemd-journald.service systemd-logind.service >/dev/null ++systemd-analyze dot "systemd-*.service" >/dev/null ++(! systemd-analyze dot systemd-journald.service systemd-logind.service "*" bbb ccc) ++# dump ++systemd-analyze dump >/dev/null ++systemd-analyze dump "*" >/dev/null ++systemd-analyze dump "*.socket" >/dev/null ++systemd-analyze dump systemd-journald.service >/dev/null ++(! systemd-analyze dump "") ++# unit-paths ++systemd-analyze unit-paths ++systemd-analyze unit-paths --user ++systemd-analyze unit-paths --global ++# exist-status ++systemd-analyze exit-status ++systemd-analyze exit-status STDOUT BPF ++systemd-analyze exit-status 0 1 {63..65} ++(! systemd-analyze exit-status STDOUT BPF "hello*") ++# capability ++systemd-analyze capability ++systemd-analyze capability cap_chown CAP_KILL ++systemd-analyze capability 0 1 {30..32} ++(! systemd-analyze capability cap_chown CAP_KILL "hello*") ++# condition ++mkdir -p /run/systemd/system ++UNIT_NAME="analyze-condition-$RANDOM.service" ++cat >"/run/systemd/system/$UNIT_NAME" <1.0 ++ConditionPathExists=/etc/os-release ++ ++[Service] ++ExecStart=/bin/true ++EOF ++systemctl daemon-reload ++systemd-analyze condition --unit="$UNIT_NAME" ++systemd-analyze condition 'ConditionKernelVersion = ! <4.0' \ ++ 'ConditionKernelVersion = >=3.1' \ ++ 'ConditionACPower=|false' \ ++ 'ConditionArchitecture=|!arm' \ ++ 'AssertPathExists=/etc/os-release' ++(! systemd-analyze condition 'ConditionArchitecture=|!arm' 'AssertXYZ=foo') ++(! systemd-analyze condition 'ConditionKernelVersion=<1.0') ++(! systemd-analyze condition 'AssertKernelVersion=<1.0') ++# syscall-filter ++systemd-analyze syscall-filter >/dev/null ++systemd-analyze syscall-filter @chown @sync ++systemd-analyze syscall-filter @sync @sync @sync ++(! systemd-analyze syscall-filter @chown @sync @foobar) ++# filesystems (requires libbpf support) ++if systemctl --version | grep "+BPF_FRAMEWORK"; then ++ systemd-analyze filesystems >/dev/null ++ systemd-analyze filesystems @basic-api ++ systemd-analyze filesystems @basic-api @basic-api @basic-api ++ (! systemd-analyze filesystems @basic-api @basic-api @foobar @basic-api) ++fi ++# calendar ++systemd-analyze calendar '*-2-29 0:0:0' ++systemd-analyze calendar --iterations=5 '*-2-29 0:0:0' ++systemd-analyze calendar '*-* *:*:*' ++systemd-analyze calendar --iterations=5 '*-* *:*:*' ++systemd-analyze calendar --iterations=50 '*-* *:*:*' ++systemd-analyze calendar --iterations=0 '*-* *:*:*' ++systemd-analyze calendar --base-time=yesterday --iterations=5 '*-* *:*:*' ++(! systemd-analyze calendar --iterations=0 '*-* 99:*:*') ++(! systemd-analyze calendar --base-time=never '*-* *:*:*') ++(! systemd-analyze calendar 1) ++(! systemd-analyze calendar "") ++# timestamp ++systemd-analyze timestamp now ++systemd-analyze timestamp -- -1 ++systemd-analyze timestamp yesterday now tomorrow ++(! systemd-analyze timestamp yesterday never tomorrow) ++(! systemd-analyze timestamp 1) ++(! systemd-analyze timestamp "") ++# timespan ++systemd-analyze timespan 1 ++systemd-analyze timespan 1s 300s '1year 0.000001s' ++(! systemd-analyze timespan 1s 300s aaaaaa '1year 0.000001s') ++(! systemd-analyze timespan -- -1) ++(! systemd-analyze timespan "") ++# cat-config ++systemd-analyze cat-config systemd/system.conf >/dev/null ++systemd-analyze cat-config /etc/systemd/system.conf >/dev/null ++systemd-analyze cat-config systemd/system.conf systemd/journald.conf >/dev/null ++systemd-analyze cat-config systemd/system.conf foo/bar systemd/journald.conf >/dev/null ++systemd-analyze cat-config foo/bar ++ + mkdir -p /tmp/img/usr/lib/systemd/system/ + mkdir -p /tmp/img/opt/ + diff --git a/SOURCES/0017-units-don-t-enable-tmp.mount-statically-in-local-fs..patch b/SOURCES/0017-units-don-t-enable-tmp.mount-statically-in-local-fs..patch deleted file mode 100644 index 53151bd..0000000 --- a/SOURCES/0017-units-don-t-enable-tmp.mount-statically-in-local-fs..patch +++ /dev/null @@ -1,26 +0,0 @@ -From 41ccc595538752f04f88c80fe7a9e283d4ef12c4 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 22 Sep 2021 14:38:00 +0200 -Subject: [PATCH] units: don't enable tmp.mount statically in local-fs.target - -RHEL-only - -Related: #2000927 ---- - units/meson.build | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/units/meson.build b/units/meson.build -index 69d53f4259..9eb535858a 100644 ---- a/units/meson.build -+++ b/units/meson.build -@@ -159,8 +159,7 @@ units = [ - ['time-set.target', ''], - ['time-sync.target', ''], - ['timers.target', ''], -- ['tmp.mount', '', -- 'local-fs.target.wants/'], -+ ['tmp.mount', ''], - ['umount.target', ''], - ['usb-gadget.target', ''], - ['user.slice', ''], diff --git a/SOURCES/0018-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch b/SOURCES/0018-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch deleted file mode 100644 index ffec2d6..0000000 --- a/SOURCES/0018-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 4ec48c87803916e90a8f30afae6c8bdee5bb9ba5 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Wed, 1 Aug 2018 13:19:39 +0200 -Subject: [PATCH] pid1: bump DefaultTasksMax to 80% of the kernel pid.max value - -This should be hopefully high enough even for the very big deployments. - -RHEL-only - -Resolves: #2003031 ---- - man/systemd-system.conf.xml | 4 ++-- - src/core/main.c | 2 +- - src/core/system.conf.in | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml -index 3805a010e2..b8e2b65625 100644 ---- a/man/systemd-system.conf.xml -+++ b/man/systemd-system.conf.xml -@@ -404,10 +404,10 @@ - Configure the default value for the per-unit TasksMax= setting. See - systemd.resource-control5 - for details. This setting applies to all unit types that support resource control settings, with the exception -- of slice units. Defaults to 15% of the minimum of kernel.pid_max=, kernel.threads-max= -+ of slice units. Defaults to 80% of the minimum of kernel.pid_max=, kernel.threads-max= - and root cgroup pids.max. - Kernel has a default value for kernel.pid_max= and an algorithm of counting in case of more than 32 cores. -- For example with the default kernel.pid_max=, DefaultTasksMax= defaults to 4915, -+ For example with the default kernel.pid_max=, DefaultTasksMax= defaults to 26214, - but might be greater in other systems or smaller in OS containers. - - -diff --git a/src/core/main.c b/src/core/main.c -index 57aedb9b93..7ea848ebeb 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -98,7 +98,7 @@ - #include - #endif - --#define DEFAULT_TASKS_MAX ((TasksMax) { 15U, 100U }) /* 15% */ -+#define DEFAULT_TASKS_MAX ((TasksMax) { 80U, 100U }) /* 80% */ - - static enum { - ACTION_RUN, -diff --git a/src/core/system.conf.in b/src/core/system.conf.in -index 96fb64d2c1..c0dc6a7e17 100644 ---- a/src/core/system.conf.in -+++ b/src/core/system.conf.in -@@ -54,7 +54,7 @@ - #DefaultBlockIOAccounting=no - #DefaultMemoryAccounting={{ 'yes' if MEMORY_ACCOUNTING_DEFAULT else 'no' }} - #DefaultTasksAccounting=yes --#DefaultTasksMax=15% -+#DefaultTasksMax=80% - #DefaultLimitCPU= - #DefaultLimitFSIZE= - #DefaultLimitDATA= diff --git a/SOURCES/0018-udev-first-set-properties-based-on-usb-subsystem.patch b/SOURCES/0018-udev-first-set-properties-based-on-usb-subsystem.patch new file mode 100644 index 0000000..8f9c37e --- /dev/null +++ b/SOURCES/0018-udev-first-set-properties-based-on-usb-subsystem.patch @@ -0,0 +1,37 @@ +From 080747ee6685b9c5877073c5120375e7a04d8216 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 3 Nov 2022 09:39:36 +0900 +Subject: [PATCH] udev: first set properties based on usb subsystem + +After 479da1107a0d4e2f7ef5cd938512b87a0e45f180, the usb_id builtin +command does not set ID_SERIAL if ID_BUS is already set. +Before the commit, all properties set based on pci bus were overwritten +by the usb_id, hence now it is sufficient setting them only when ID_BUS is +not set yet. + +Fixes #25238. + +(cherry picked from commit 01e704eba982fbc1517287cd261d229ff8e0a779) + +Related #2138081 +--- + rules.d/60-serial.rules | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/rules.d/60-serial.rules b/rules.d/60-serial.rules +index f303e27fd5..c133f26109 100644 +--- a/rules.d/60-serial.rules ++++ b/rules.d/60-serial.rules +@@ -3,9 +3,10 @@ + ACTION=="remove", GOTO="serial_end" + SUBSYSTEM!="tty", GOTO="serial_end" + +-SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" +-SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" + SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" ++SUBSYSTEMS=="pci", ENV{ID_BUS}=="", ENV{ID_BUS}="pci", \ ++ ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}", \ ++ IMPORT{builtin}="hwdb --subsystem=pci" + + # /dev/serial/by-path/, /dev/serial/by-id/ for USB devices + KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end" diff --git a/SOURCES/0019-set-core-ulimit-to-0-like-on-RHEL-7.patch b/SOURCES/0019-set-core-ulimit-to-0-like-on-RHEL-7.patch deleted file mode 100644 index 4fff5b0..0000000 --- a/SOURCES/0019-set-core-ulimit-to-0-like-on-RHEL-7.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 7344cdfb2792f67e50848f87eced21cded226d4a Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Mon, 25 Jan 2021 16:19:56 +0100 -Subject: [PATCH] set core ulimit to 0 like on RHEL-7 - -RHEL-only - -Resolves: #1998509 ---- - src/core/system.conf.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/system.conf.in b/src/core/system.conf.in -index c0dc6a7e17..5913b5b0e4 100644 ---- a/src/core/system.conf.in -+++ b/src/core/system.conf.in -@@ -59,7 +59,7 @@ - #DefaultLimitFSIZE= - #DefaultLimitDATA= - #DefaultLimitSTACK= --#DefaultLimitCORE= -+DefaultLimitCORE=0:infinity - #DefaultLimitRSS= - #DefaultLimitNOFILE=1024:{{HIGH_RLIMIT_NOFILE}} - #DefaultLimitAS= diff --git a/SOURCES/0019-udev-drop-redundant-call-of-usb_id-and-assignment-of.patch b/SOURCES/0019-udev-drop-redundant-call-of-usb_id-and-assignment-of.patch new file mode 100644 index 0000000..8cc2c38 --- /dev/null +++ b/SOURCES/0019-udev-drop-redundant-call-of-usb_id-and-assignment-of.patch @@ -0,0 +1,30 @@ +From 35ec16bfef92d072edacad892fc138b3595ee69b Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 3 Nov 2022 09:43:14 +0900 +Subject: [PATCH] udev: drop redundant call of usb_id and assignment of + ID_USB_INTERFACE_NUM + +The usb_id builtin command is already called in the above, and the +command sets the ID_USB_INTERFACE_NUM property. + +(cherry picked from commit b2e53f5a0f12db65c88404477fedee5c57d201ba) + +Related #2138081 +--- + rules.d/60-serial.rules | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/rules.d/60-serial.rules b/rules.d/60-serial.rules +index c133f26109..2c1488e930 100644 +--- a/rules.d/60-serial.rules ++++ b/rules.d/60-serial.rules +@@ -17,9 +17,7 @@ IMPORT{builtin}="path_id" + ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}" + ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}" + +-IMPORT{builtin}="usb_id" + ENV{ID_SERIAL}=="", GOTO="serial_end" +-SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}" + ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end" + ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}" + ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}" diff --git a/SOURCES/0020-ci-use-C9S-chroots-in-Packit.patch b/SOURCES/0020-ci-use-C9S-chroots-in-Packit.patch deleted file mode 100644 index 4651c6e..0000000 --- a/SOURCES/0020-ci-use-C9S-chroots-in-Packit.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 402595e7b0668b8fe44b5b00b1dd45ba9cc42b82 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 4 Nov 2021 12:31:32 +0100 -Subject: [PATCH] ci: use C9S chroots in Packit - -rhel-only -Related: #2017035 ---- - .packit.yml | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/.packit.yml b/.packit.yml -index 3461bccbc5..ce8782aae2 100644 ---- a/.packit.yml -+++ b/.packit.yml -@@ -37,9 +37,8 @@ jobs: - trigger: pull_request - metadata: - targets: -- # FIXME: change to CentOS 9 once it's available -- - fedora-34-x86_64 -- - fedora-34-aarch64 -+ - centos-stream-9-x86_64 -+ - centos-stream-9-aarch64 - - # TODO: can't use TFT yet due to https://pagure.io/fedora-ci/general/issue/184 - # Run tests (via testing farm) diff --git a/SOURCES/0020-udev-add-safe-guard-for-setting-by-id-symlink.patch b/SOURCES/0020-udev-add-safe-guard-for-setting-by-id-symlink.patch new file mode 100644 index 0000000..975ad03 --- /dev/null +++ b/SOURCES/0020-udev-add-safe-guard-for-setting-by-id-symlink.patch @@ -0,0 +1,26 @@ +From 03bb31bbb875e20da7ae37eb44e98d244823e0e7 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 3 Nov 2022 09:52:23 +0900 +Subject: [PATCH] udev: add safe guard for setting by-id symlink + +The ID_BUS property is necessary for creating by-id symlinks. + +(cherry picked from commit 5286da064c97d2ac934cb301066aaa8605a3c8f9) + +Related #2138081 +--- + rules.d/60-serial.rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/rules.d/60-serial.rules b/rules.d/60-serial.rules +index 2c1488e930..a0e66323a9 100644 +--- a/rules.d/60-serial.rules ++++ b/rules.d/60-serial.rules +@@ -17,6 +17,7 @@ IMPORT{builtin}="path_id" + ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}" + ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}" + ++ENV{ID_BUS}=="", GOTO="serial_end" + ENV{ID_SERIAL}=="", GOTO="serial_end" + ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end" + ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}" diff --git a/SOURCES/0021-test-cover-legacy-deprecated-systemd-analyze-verbs.patch b/SOURCES/0021-test-cover-legacy-deprecated-systemd-analyze-verbs.patch new file mode 100644 index 0000000..af66167 --- /dev/null +++ b/SOURCES/0021-test-cover-legacy-deprecated-systemd-analyze-verbs.patch @@ -0,0 +1,45 @@ +From 266baa71dbb336d9c2eb1e4e7db3983477cc6ce0 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 3 Nov 2022 10:59:38 +0100 +Subject: [PATCH] test: cover legacy/deprecated systemd-analyze verbs + +They're no longer documented since 26e1e97345 but still work. + +(cherry picked from commit 926d95cd4c209b8c292829511542b11d7c43e662) + +Related #2138081 +--- + test/units/testsuite-65.sh | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/test/units/testsuite-65.sh b/test/units/testsuite-65.sh +index ece6b8734e..89406a108e 100755 +--- a/test/units/testsuite-65.sh ++++ b/test/units/testsuite-65.sh +@@ -6,7 +6,7 @@ set -eux + # shellcheck source=test/units/assert.sh + . "$(dirname "$0")"/assert.sh + +-systemd-analyze log-level debug ++systemctl log-level debug + export SYSTEMD_LOG_LEVEL=debug + + # Sanity checks +@@ -19,6 +19,17 @@ systemd-analyze time || : + systemd-analyze blame || : + systemd-analyze critical-chain || : + systemd-analyze plot >/dev/null || : ++# legacy/deprecated options (moved to systemctl, but still usable from analyze) ++systemd-analyze log-level ++systemd-analyze log-level "$(systemctl log-level)" ++systemd-analyze get-log-level ++systemd-analyze set-log-level "$(systemctl log-level)" ++systemd-analyze log-target ++systemd-analyze log-target "$(systemctl log-target)" ++systemd-analyze get-log-target ++systemd-analyze set-log-target "$(systemctl log-target)" ++systemd-analyze service-watchdogs ++systemd-analyze service-watchdogs "$(systemctl service-watchdogs)" + # dot + systemd-analyze dot >/dev/null + systemd-analyze dot systemd-journald.service >/dev/null diff --git a/SOURCES/0021-test-mountpointutil-util-do-not-assert-in-test_mnt_i.patch b/SOURCES/0021-test-mountpointutil-util-do-not-assert-in-test_mnt_i.patch deleted file mode 100644 index 1e2a147..0000000 --- a/SOURCES/0021-test-mountpointutil-util-do-not-assert-in-test_mnt_i.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 68199fe69a2c46e498bc7e9528d54922deecc553 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 14 Sep 2020 17:58:03 +0200 -Subject: [PATCH] test-mountpointutil-util: do not assert in test_mnt_id() - -https://bugzilla.redhat.com/show_bug.cgi?id=1803070 - -I *think* this a kernel bug: the mnt_id as listed in /proc/self/mountinfo is different -than the one we get from /proc/self/fdinfo/. This only matters when both statx and -name_to_handle_at are unavailable and we hit the fallback path that goes through fdinfo: - -(gdb) !uname -r -5.6.19-200.fc31.ppc64le - -(gdb) !cat /proc/self/mountinfo -697 664 253:0 /var/lib/mock/fedora-31-ppc64le/root / rw,relatime shared:298 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota -698 697 253:0 /var/cache/mock/fedora-31-ppc64le/yum_cache /var/cache/yum rw,relatime shared:299 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota -699 697 253:0 /var/cache/mock/fedora-31-ppc64le/dnf_cache /var/cache/dnf rw,relatime shared:300 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota -700 697 0:32 /mock-selinux-plugin.7me9bfpi /proc/filesystems rw,nosuid,nodev shared:301 master:18 - tmpfs tmpfs rw,seclabel <========================================================== -701 697 0:41 / /sys ro,nosuid,nodev,noexec,relatime shared:302 - sysfs sysfs ro,seclabel -702 701 0:21 / /sys/fs/selinux ro,nosuid,nodev,noexec,relatime shared:306 master:8 - selinuxfs selinuxfs rw -703 697 0:42 / /dev rw,nosuid shared:303 - tmpfs tmpfs rw,seclabel,mode=755 -704 703 0:43 / /dev/shm rw,nosuid,nodev shared:304 - tmpfs tmpfs rw,seclabel -705 703 0:45 / /dev/pts rw,nosuid,noexec,relatime shared:307 - devpts devpts rw,seclabel,gid=5,mode=620,ptmxmode=666 -706 703 0:6 /btrfs-control /dev/btrfs-control rw,nosuid shared:308 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -707 703 0:6 /loop-control /dev/loop-control rw,nosuid shared:309 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -708 703 0:6 /loop0 /dev/loop0 rw,nosuid shared:310 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -709 703 0:6 /loop1 /dev/loop1 rw,nosuid shared:311 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -710 703 0:6 /loop10 /dev/loop10 rw,nosuid shared:312 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -711 703 0:6 /loop11 /dev/loop11 rw,nosuid shared:313 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -712 703 0:6 /loop2 /dev/loop2 rw,nosuid shared:314 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -713 703 0:6 /loop3 /dev/loop3 rw,nosuid shared:315 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -714 703 0:6 /loop4 /dev/loop4 rw,nosuid shared:316 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -715 703 0:6 /loop5 /dev/loop5 rw,nosuid shared:317 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -716 703 0:6 /loop6 /dev/loop6 rw,nosuid shared:318 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -717 703 0:6 /loop7 /dev/loop7 rw,nosuid shared:319 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -718 703 0:6 /loop8 /dev/loop8 rw,nosuid shared:320 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -719 703 0:6 /loop9 /dev/loop9 rw,nosuid shared:321 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755 -720 697 0:44 / /run rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -721 720 0:25 /systemd/nspawn/propagate/9cc8a155d0244558b273f773d2b92142 /run/systemd/nspawn/incoming ro master:12 - tmpfs tmpfs rw,seclabel,mode=755 -722 697 0:32 /mock-resolv.dvml91hp /etc/resolv.conf rw,nosuid,nodev shared:322 master:18 - tmpfs tmpfs rw,seclabel -725 697 0:47 / /proc rw,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -603 725 0:47 /sys /proc/sys ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -604 725 0:44 /systemd/inaccessible/reg /proc/kallsyms ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -605 725 0:44 /systemd/inaccessible/reg /proc/kcore ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -606 725 0:44 /systemd/inaccessible/reg /proc/keys ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -607 725 0:44 /systemd/inaccessible/reg /proc/sysrq-trigger ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -608 725 0:44 /systemd/inaccessible/reg /proc/timer_list ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -609 725 0:47 /bus /proc/bus ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -610 725 0:47 /fs /proc/fs ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -611 725 0:47 /irq /proc/irq ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -612 725 0:47 /scsi /proc/scsi ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw -613 703 0:46 / /dev/mqueue rw,nosuid,nodev,noexec,relatime shared:324 - mqueue mqueue rw,seclabel -614 701 0:26 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:325 - cgroup2 cgroup rw,seclabel,nsdelegate -615 603 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -616 725 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755 -617 725 0:44 /.#proc-kmsg5b7a8bcfe6717139//deleted /proc/kmsg rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755 - -The test process does -name_to_handle_at("/proc/filesystems") which returns -EOPNOTSUPP, and then -openat(AT_FDCWD, "/proc/filesystems") which returns 4, and then -read(open("/proc/self/fdinfo/4", ...)) which gives -"pos:\t0\nflags:\t012100000\nmnt_id:\t725\n" - -and the "725" is clearly inconsistent with "700" in /proc/self/mountinfo. - -We could either drop the fallback path (and fail name_to_handle_at() is not -avaliable) or ignore the error in the test. Not sure what is better. I think -this issue only occurs sometimes and with older kernels, so probably continuing -with the current flaky implementation is better than ripping out the fallback. - -Another strace: -writev(2, [{iov_base="mnt ids of /proc/sys is 603", iov_len=27}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/sys is 603 -) = 28 -name_to_handle_at(AT_FDCWD, "/", {handle_bytes=128 => 12, handle_type=129, f_handle=0x52748401000000008b93e20d}, [697], 0) = 0 -writev(2, [{iov_base="mnt ids of / is 697", iov_len=19}, {iov_base="\n", iov_len=1}], 2mnt ids of / is 697 -) = 20 -name_to_handle_at(AT_FDCWD, "/proc/kcore", {handle_bytes=128 => 12, handle_type=1, f_handle=0x92ddcfcd2e802d0100000000}, [605], 0) = 0 -writev(2, [{iov_base="mnt ids of /proc/kcore is 605", iov_len=29}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/kcore is 605 -) = 30 -name_to_handle_at(AT_FDCWD, "/dev", {handle_bytes=128 => 12, handle_type=1, f_handle=0x8ae269160c802d0100000000}, [703], 0) = 0 -writev(2, [{iov_base="mnt ids of /dev is 703", iov_len=22}, {iov_base="\n", iov_len=1}], 2mnt ids of /dev is 703 -) = 23 -name_to_handle_at(AT_FDCWD, "/proc/filesystems", {handle_bytes=128}, 0x7fffe36ddb84, 0) = -1 EOPNOTSUPP (Operation not supported) -openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4 -openat(AT_FDCWD, "/proc/self/fdinfo/4", O_RDONLY|O_CLOEXEC) = 5 -fstat(5, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0 -fstat(5, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0 -read(5, "pos:\t0\nflags:\t012100000\nmnt_id:\t725\n", 2048) = 36 -read(5, "", 1024) = 0 -close(5) = 0 -close(4) = 0 -writev(2, [{iov_base="mnt ids of /proc/filesystems are 700, 725", iov_len=41}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/filesystems are 700, 725 -) = 42 -writev(2, [{iov_base="the other path for mnt id 725 is /proc", iov_len=38}, {iov_base="\n", iov_len=1}], 2the other path for mnt id 725 is /proc -) = 39 -writev(2, [{iov_base="Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting.", iov_len=108}, {iov_base="\n", iov_len=1}], 2Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting. -) = 109 -rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 -rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 -getpid() = 20 -gettid() = 20 -tgkill(20, 20, SIGABRT) = 0 -rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 - -RHEL notes: af918c4 should mitigate this issue, but in some build -systems (Copr, brew, etc.) we don't have enough privileges to create a -new mount namespace - -Cherry-picked manually from https://github.com/systemd/systemd/pull/17050. - -rhel-only -Related: #2017035 ---- - src/test/test-mountpoint-util.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c -index d11edf502a..9515d8cf7b 100644 ---- a/src/test/test-mountpoint-util.c -+++ b/src/test/test-mountpoint-util.c -@@ -101,8 +101,12 @@ TEST(mnt_id) { - /* The ids don't match? If so, then there are two mounts on the same path, let's check if - * that's really the case */ - char *t = hashmap_get(h, INT_TO_PTR(mnt_id2)); -- log_debug("the other path for mnt id %i is %s\n", mnt_id2, t); -- assert_se(path_equal(p, t)); -+ log_debug("Path for mnt id %i from /proc/self/mountinfo is %s\n", mnt_id2, t); -+ -+ if (!path_equal(p, t)) -+ /* Apparent kernel bug in /proc/self/fdinfo */ -+ log_warning("Bad mount id given for %s: %d, should be %d", -+ p, mnt_id2, mnt_id); - } - } - diff --git a/SOURCES/0022-Treat-EPERM-as-not-available-too.patch b/SOURCES/0022-Treat-EPERM-as-not-available-too.patch deleted file mode 100644 index 4d356d0..0000000 --- a/SOURCES/0022-Treat-EPERM-as-not-available-too.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3c54c67a7fc65dc5b49b2452739c19b94eeb98a9 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Tue, 21 Dec 2021 10:46:17 +0100 -Subject: [PATCH] Treat EPERM as "not available" too - -We need to do this because idmapped mounts habe been disabled in RHEL-9 -kernel: https://bugzilla.redhat.com/show_bug.cgi?id=2018141 . - -RHEL-only - -Fixes #55 - -Related: #2017035 ---- - src/nspawn/nspawn.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 8f17ab8810..9225c8f162 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -3780,7 +3780,7 @@ static int outer_child( - arg_uid_shift != 0) { - - r = remount_idmap(directory, arg_uid_shift, arg_uid_range); -- if (r == -EINVAL || ERRNO_IS_NOT_SUPPORTED(r)) { -+ if (IN_SET(r, -EINVAL, -EPERM) || ERRNO_IS_NOT_SUPPORTED(r)) { - /* This might fail because the kernel or file system doesn't support idmapping. We - * can't really distinguish this nicely, nor do we have any guarantees about the - * error codes we see, could be EOPNOTSUPP or EINVAL. */ diff --git a/SOURCES/0022-test-cover-a-couple-of-previously-missed-analyze-cod.patch b/SOURCES/0022-test-cover-a-couple-of-previously-missed-analyze-cod.patch new file mode 100644 index 0000000..f5a3f00 --- /dev/null +++ b/SOURCES/0022-test-cover-a-couple-of-previously-missed-analyze-cod.patch @@ -0,0 +1,56 @@ +From 37614533602981aa3757cd3e847f184fdae1432e Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 3 Nov 2022 11:33:13 +0100 +Subject: [PATCH] test: cover a couple of previously missed analyze code paths + +(cherry picked from commit 8b1879bcd0ed1168f5ad35a3dd0e213a31a2ee42) + +Related #2138081 +--- + test/units/testsuite-65.sh | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/test/units/testsuite-65.sh b/test/units/testsuite-65.sh +index 89406a108e..1f34308b44 100755 +--- a/test/units/testsuite-65.sh ++++ b/test/units/testsuite-65.sh +@@ -45,8 +45,16 @@ systemd-analyze dot "systemd-*.service" >/dev/null + systemd-analyze dump >/dev/null + systemd-analyze dump "*" >/dev/null + systemd-analyze dump "*.socket" >/dev/null ++systemd-analyze dump "*.socket" "*.service" aaaaaaa ... >/dev/null + systemd-analyze dump systemd-journald.service >/dev/null + (! systemd-analyze dump "") ++# unit-files ++systemd-analyze unit-files >/dev/null ++systemd-analyze unit-files systemd-journald.service >/dev/null ++systemd-analyze unit-files "*" >/dev/null ++systemd-analyze unit-files "*" aaaaaa "*.service" "*.target" >/dev/null ++systemd-analyze unit-files --user >/dev/null ++systemd-analyze unit-files --user "*" aaaaaa "*.service" "*.target" >/dev/null + # unit-paths + systemd-analyze unit-paths + systemd-analyze unit-paths --user +@@ -103,6 +111,7 @@ systemd-analyze calendar '*-* *:*:*' + systemd-analyze calendar --iterations=5 '*-* *:*:*' + systemd-analyze calendar --iterations=50 '*-* *:*:*' + systemd-analyze calendar --iterations=0 '*-* *:*:*' ++systemd-analyze calendar --iterations=5 '01-01-22 01:00:00' + systemd-analyze calendar --base-time=yesterday --iterations=5 '*-* *:*:*' + (! systemd-analyze calendar --iterations=0 '*-* 99:*:*') + (! systemd-analyze calendar --base-time=never '*-* *:*:*') +@@ -114,12 +123,14 @@ systemd-analyze timestamp -- -1 + systemd-analyze timestamp yesterday now tomorrow + (! systemd-analyze timestamp yesterday never tomorrow) + (! systemd-analyze timestamp 1) ++(! systemd-analyze timestamp '*-2-29 0:0:0') + (! systemd-analyze timestamp "") + # timespan + systemd-analyze timespan 1 + systemd-analyze timespan 1s 300s '1year 0.000001s' + (! systemd-analyze timespan 1s 300s aaaaaa '1year 0.000001s') + (! systemd-analyze timespan -- -1) ++(! systemd-analyze timespan '*-2-29 0:0:0') + (! systemd-analyze timespan "") + # cat-config + systemd-analyze cat-config systemd/system.conf >/dev/null diff --git a/SOURCES/0023-test-copy-portable-profiles-into-the-image-if-they-d.patch b/SOURCES/0023-test-copy-portable-profiles-into-the-image-if-they-d.patch deleted file mode 100644 index ea3e2fd..0000000 --- a/SOURCES/0023-test-copy-portable-profiles-into-the-image-if-they-d.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 324d99159e1e64d78a580073626f5b645f1c3639 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 31 Jan 2022 14:19:09 +0100 -Subject: [PATCH] test: copy portable profiles into the image if they don't - exist there - -If we're built with `-Dportable=false`, the portable profiles won't get -installed into the image. Since we need only the profile files and -nothing else, let's copy them into the image explicitly in such case. - -(cherry picked from commit 6f73ef8b30803ac1be1b2607aec1a89d778caa9a) - -Related: #2017035 ---- - test/test-functions | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/test/test-functions b/test/test-functions -index 218d0e6888..35d8f074a9 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1151,6 +1151,17 @@ install_systemd() { - mkdir -p "$initdir/etc/systemd/system/service.d/" - echo -e "[Service]\nProtectSystem=no\nProtectHome=no\n" >"$initdir/etc/systemd/system/service.d/gcov-override.conf" - fi -+ -+ # If we're built with -Dportabled=false, tests with systemd-analyze -+ # --profile will fail. Since we need just the profile (text) files, let's -+ # copy them into the image if they don't exist there. -+ local portable_dir="${initdir:?}${ROOTLIBDIR:?}/portable" -+ if [[ ! -d "$portable_dir/profile/strict" ]]; then -+ dinfo "Couldn't find portable profiles in the test image" -+ dinfo "Copying them directly from the source tree" -+ mkdir -p "$portable_dir" -+ cp -frv "${SOURCE_DIR:?}/src/portable/profile" "$portable_dir" -+ fi - } - - get_ldpath() { diff --git a/SOURCES/0023-test-introduce-sanity-coverage-for-auxiliary-utils.patch b/SOURCES/0023-test-introduce-sanity-coverage-for-auxiliary-utils.patch new file mode 100644 index 0000000..a5816ba --- /dev/null +++ b/SOURCES/0023-test-introduce-sanity-coverage-for-auxiliary-utils.patch @@ -0,0 +1,371 @@ +From e0d51a65a8bbe8c86af4bb843a5f9ac7d590fa01 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 3 Nov 2022 13:13:03 +0100 +Subject: [PATCH] test: introduce sanity coverage for auxiliary utils + +(cherry picked from commit d1020334fd15e0cffe68cb4d7e862a36253cc481) + +Related #2138081 +--- + test/TEST-74-AUX-UTILS/Makefile | 1 + + test/TEST-74-AUX-UTILS/test.sh | 10 ++ + test/units/testsuite-74.cgls.sh | 26 +++++ + test/units/testsuite-74.cgtop.sh | 32 ++++++ + test/units/testsuite-74.delta.sh | 59 +++++++++++ + test/units/testsuite-74.firstboot.sh | 145 +++++++++++++++++++++++++++ + test/units/testsuite-74.service | 8 ++ + test/units/testsuite-74.sh | 14 +++ + 8 files changed, 295 insertions(+) + create mode 120000 test/TEST-74-AUX-UTILS/Makefile + create mode 100755 test/TEST-74-AUX-UTILS/test.sh + create mode 100755 test/units/testsuite-74.cgls.sh + create mode 100755 test/units/testsuite-74.cgtop.sh + create mode 100755 test/units/testsuite-74.delta.sh + create mode 100755 test/units/testsuite-74.firstboot.sh + create mode 100644 test/units/testsuite-74.service + create mode 100755 test/units/testsuite-74.sh + +diff --git a/test/TEST-74-AUX-UTILS/Makefile b/test/TEST-74-AUX-UTILS/Makefile +new file mode 120000 +index 0000000000..e9f93b1104 +--- /dev/null ++++ b/test/TEST-74-AUX-UTILS/Makefile +@@ -0,0 +1 @@ ++../TEST-01-BASIC/Makefile +\ No newline at end of file +diff --git a/test/TEST-74-AUX-UTILS/test.sh b/test/TEST-74-AUX-UTILS/test.sh +new file mode 100755 +index 0000000000..f422c89141 +--- /dev/null ++++ b/test/TEST-74-AUX-UTILS/test.sh +@@ -0,0 +1,10 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -e ++ ++TEST_DESCRIPTION="Tests for auxiliary utilities" ++ ++# shellcheck source=test/test-functions ++. "${TEST_BASE_DIR:?}/test-functions" ++ ++do_test "$@" +diff --git a/test/units/testsuite-74.cgls.sh b/test/units/testsuite-74.cgls.sh +new file mode 100755 +index 0000000000..120570c9cc +--- /dev/null ++++ b/test/units/testsuite-74.cgls.sh +@@ -0,0 +1,26 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -eux ++set -o pipefail ++ ++systemd-cgls ++systemd-cgls --all --full ++systemd-cgls -k ++systemd-cgls --xattr=yes ++systemd-cgls --xattr=no ++systemd-cgls --cgroup-id=yes ++systemd-cgls --cgroup-id=no ++ ++systemd-cgls /system.slice/systemd-journald.service ++systemd-cgls /system.slice/systemd-journald.service /init.scope ++systemd-cgls /sys/fs/cgroup/system.slice/systemd-journald.service /init.scope ++(cd /sys/fs/cgroup/init.scope && systemd-cgls) ++systemd-cgls --unit=systemd-journald.service ++# There's most likely no user session running, so we need to create one ++systemd-run --user --wait --pipe -M testuser@.host systemd-cgls --user-unit=app.slice ++ ++(! systemd-cgls /foo/bar) ++(! systemd-cgls --unit=hello.world) ++(! systemd-cgls --user-unit=hello.world) ++(! systemd-cgls --xattr=foo) ++(! systemd-cgls --cgroup-id=foo) +diff --git a/test/units/testsuite-74.cgtop.sh b/test/units/testsuite-74.cgtop.sh +new file mode 100755 +index 0000000000..8141ec1b1f +--- /dev/null ++++ b/test/units/testsuite-74.cgtop.sh +@@ -0,0 +1,32 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -eux ++set -o pipefail ++ ++# Without tty attached cgtop should default to --iterations=1 ++systemd-cgtop ++systemd-cgtop --iterations=1 ++# Same as --iterations=1 ++systemd-cgtop -1 ++systemd-cgtop --delay=1ms ++systemd-cgtop --raw ++systemd-cgtop --batch ++systemd-cgtop --cpu=percentage ++systemd-cgtop --cpu=time ++systemd-cgtop -P ++systemd-cgtop -k ++# FIXME: https://github.com/systemd/systemd/issues/25248 ++#systemd-cgtop --recursive=no ++systemd-cgtop --depth=0 ++systemd-cgtop --depth=100 ++ ++for order in path tasks cpu memory io; do ++ systemd-cgtop --order="$order" ++done ++systemd-cgtop -p -t -c -m -i ++ ++(! systemd-cgtop --cpu=foo) ++(! systemd-cgtop --order=foo) ++(! systemd-cgtop --depth=-1) ++(! systemd-cgtop --recursive=foo) ++(! systemd-cgtop --delay=1foo) +diff --git a/test/units/testsuite-74.delta.sh b/test/units/testsuite-74.delta.sh +new file mode 100755 +index 0000000000..a0e1cb52dd +--- /dev/null ++++ b/test/units/testsuite-74.delta.sh +@@ -0,0 +1,59 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -eux ++set -o pipefail ++ ++at_exit() { ++ rm -rfv /{run,etc}/systemd/system/delta-test* ++} ++ ++trap at_exit EXIT ++ ++# Create a couple of supporting units with overrides ++# ++# Extended unit ++cat >"/run/systemd/system/delta-test-unit-extended.service" <"/run/systemd/system/delta-test-unit-extended.service.d/override.conf" <>/etc/systemd/system/delta-test-unit-overridden.service ++# Overridden but equivalent unit ++ln -srfv /run/systemd/system/delta-test-unit-extended.service /run/systemd/system/delta-test-unit-equivalent.service ++ln -sfv /run/systemd/system/delta-test-unit-extended.service /etc/systemd/system/delta-test-unit-equivalent.service ++# Redirected unit ++ln -srfv /run/systemd/system/delta-test-unit-extended.service /run/systemd/system/delta-test-unit-redirected.service ++ln -sfv /run/systemd/system/delta-test-unit-overidden.service /etc/systemd/system/delta-test-unit-extended.service ++ ++systemctl daemon-reload ++ ++systemd-delta ++systemd-delta /run ++systemd-delta systemd/system ++systemd-delta /run systemd/system /run ++systemd-delta /run foo/bar hello/world systemd/system /run ++systemd-delta foo/bar ++systemd-delta --diff=true ++systemd-delta --diff=false ++ ++for type in masked equivalent redirected overridden extended unchanged; do ++ systemd-delta --type="$type" ++ systemd-delta --type="$type" /run ++done ++systemd-delta --type=equivalent,redirected ++ ++(! systemd-delta --diff=foo) ++(! systemd-delta --type=foo) ++(! systemd-delta --type=equivalent,redirected,foo) +diff --git a/test/units/testsuite-74.firstboot.sh b/test/units/testsuite-74.firstboot.sh +new file mode 100755 +index 0000000000..02f9f5cd7a +--- /dev/null ++++ b/test/units/testsuite-74.firstboot.sh +@@ -0,0 +1,145 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -eux ++set -o pipefail ++ ++if ! command -v systemd-firstboot >/dev/null; then ++ echo "systemd-firstboot not found, skipping the test" ++ exit 0 ++fi ++ ++at_exit() { ++ if [[ -v ROOT && -n "$ROOT" ]]; then ++ ls -lR "$ROOT" ++ rm -fr "$ROOT" ++ fi ++} ++ ++trap at_exit EXIT ++ ++# Generated via `mkpasswd -m sha-512 -S foobarsalt password1` ++# shellcheck disable=SC2016 ++ROOT_HASHED_PASSWORD1='$6$foobarsalt$YbwdaATX6IsFxvWbY3QcZj2gB31R/LFRFrjlFrJtTTqFtSfn4dfOAg/km2k4Sl.a2g7LOYDo31wMTaEsCo9j41' ++# Generated via `mkpasswd -m sha-512 -S foobarsalt password2` ++# shellcheck disable=SC2016 ++ROOT_HASHED_PASSWORD2='$6$foobarsalt$q.P2932zYMLbKnjFwIxPI8y3iuxeuJ2BgE372LcZMMnj3Gcg/9mJg2LPKUl.ha0TG/.fRNNnRQcLfzM0SNot3.' ++ ++# Create a minimal root so we don't modify the testbed ++ROOT=test-root ++mkdir -p "$ROOT/bin" ++# Dummy shell for --root-shell= ++touch "$ROOT/bin/fooshell" "$ROOT/bin/barshell" ++ ++systemd-firstboot --root="$ROOT" --locale=foo ++grep -q "LANG=foo" "$ROOT/etc/locale.conf" ++rm -fv "$ROOT/etc/locale.conf" ++# FIXME: https://github.com/systemd/systemd/issues/25249 ++#systemd-firstboot --root="$ROOT" --locale-messages=foo ++#grep -q "LC_MESSAGES=foo" "$ROOT/etc/locale.conf" ++#rm -fv "$ROOT/etc/locale.conf" ++systemd-firstboot --root="$ROOT" --locale=foo --locale-messages=bar ++grep -q "LANG=foo" "$ROOT/etc/locale.conf" ++grep -q "LC_MESSAGES=bar" "$ROOT/etc/locale.conf" ++ ++systemd-firstboot --root="$ROOT" --keymap=foo ++grep -q "KEYMAP=foo" "$ROOT/etc/vconsole.conf" ++ ++systemd-firstboot --root="$ROOT" --timezone=Europe/Berlin ++readlink "$ROOT/etc/localtime" | grep -q "Europe/Berlin" ++ ++systemd-firstboot --root="$ROOT" --hostname "foobar" ++grep -q "foobar" "$ROOT/etc/hostname" ++ ++systemd-firstboot --root="$ROOT" --machine-id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ++grep -q "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "$ROOT/etc/machine-id" ++ ++rm -fv "$ROOT/etc/passwd" "$ROOT/etc/shadow" ++systemd-firstboot --root="$ROOT" --root-password=foo ++grep -q "^root:x:0:0:" "$ROOT/etc/passwd" ++grep -q "^root:" "$ROOT/etc/shadow" ++rm -fv "$ROOT/etc/passwd" "$ROOT/etc/shadow" ++echo "foo" >root.passwd ++systemd-firstboot --root="$ROOT" --root-password-file=root.passwd ++grep -q "^root:x:0:0:" "$ROOT/etc/passwd" ++grep -q "^root:" "$ROOT/etc/shadow" ++rm -fv "$ROOT/etc/passwd" "$ROOT/etc/shadow" root.passwd ++# Set the shell together with the password, as firstboot won't touch ++# /etc/passwd if it already exists ++systemd-firstboot --root="$ROOT" --root-password-hashed="$ROOT_HASHED_PASSWORD1" --root-shell=/bin/fooshell ++grep -q "^root:x:0:0:.*:/bin/fooshell$" "$ROOT/etc/passwd" ++grep -q "^root:$ROOT_HASHED_PASSWORD1:" "$ROOT/etc/shadow" ++ ++systemd-firstboot --root="$ROOT" --kernel-command-line="foo.bar=42" ++grep -q "foo.bar=42" "$ROOT/etc/kernel/cmdline" ++ ++# Configs should not get overwritten if they exist unless --force is used ++systemd-firstboot --root="$ROOT" \ ++ --locale=locale-overwrite \ ++ --locale-messages=messages-overwrite \ ++ --keymap=keymap-overwrite \ ++ --timezone=CET \ ++ --hostname=hostname-overwrite \ ++ --machine-id=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb \ ++ --root-password-hashed="$ROOT_HASHED_PASSWORD2" \ ++ --root-shell=/bin/barshell \ ++ --kernel-command-line="hello.world=0" ++grep -q "LANG=foo" "$ROOT/etc/locale.conf" ++grep -q "LC_MESSAGES=bar" "$ROOT/etc/locale.conf" ++grep -q "KEYMAP=foo" "$ROOT/etc/vconsole.conf" ++readlink "$ROOT/etc/localtime" | grep -q "Europe/Berlin$" ++grep -q "foobar" "$ROOT/etc/hostname" ++grep -q "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "$ROOT/etc/machine-id" ++grep -q "^root:x:0:0:.*:/bin/fooshell$" "$ROOT/etc/passwd" ++grep -q "^root:$ROOT_HASHED_PASSWORD1:" "$ROOT/etc/shadow" ++grep -q "foo.bar=42" "$ROOT/etc/kernel/cmdline" ++ ++# The same thing, but now with --force ++systemd-firstboot --root="$ROOT" --force \ ++ --locale=locale-overwrite \ ++ --locale-messages=messages-overwrite \ ++ --keymap=keymap-overwrite \ ++ --timezone=CET \ ++ --hostname=hostname-overwrite \ ++ --machine-id=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb \ ++ --root-password-hashed="$ROOT_HASHED_PASSWORD2" \ ++ --root-shell=/bin/barshell \ ++ --kernel-command-line="hello.world=0" ++grep -q "LANG=locale-overwrite" "$ROOT/etc/locale.conf" ++grep -q "LC_MESSAGES=messages-overwrite" "$ROOT/etc/locale.conf" ++grep -q "KEYMAP=keymap-overwrite" "$ROOT/etc/vconsole.conf" ++readlink "$ROOT/etc/localtime" | grep -q "/CET$" ++grep -q "hostname-overwrite" "$ROOT/etc/hostname" ++grep -q "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" "$ROOT/etc/machine-id" ++grep -q "^root:x:0:0:.*:/bin/barshell$" "$ROOT/etc/passwd" ++grep -q "^root:$ROOT_HASHED_PASSWORD2:" "$ROOT/etc/shadow" ++grep -q "hello.world=0" "$ROOT/etc/kernel/cmdline" ++ ++# --copy-* options ++rm -fr "$ROOT" ++mkdir "$ROOT" ++# Copy everything at once (--copy) ++systemd-firstboot --root="$ROOT" --copy ++diff /etc/locale.conf "$ROOT/etc/locale.conf" ++diff <(awk -F: '/^root/ { print $7; }' /etc/passwd) <(awk -F: '/^root/ { print $7; }' "$ROOT/etc/passwd") ++diff <(awk -F: '/^root/ { print $2; }' /etc/shadow) <(awk -F: '/^root/ { print $2; }' "$ROOT/etc/shadow") ++[[ -e /etc/vconsole.conf ]] && diff /etc/vconsole.conf "$ROOT/etc/vconsole.conf" ++[[ -e /etc/localtime ]] && diff <(readlink /etc/localtime) <(readlink "$ROOT/etc/localtime") ++rm -fr "$ROOT" ++mkdir "$ROOT" ++# Copy everything at once, but now by using separate switches ++systemd-firstboot --root="$ROOT" --copy-locale --copy-keymap --copy-timezone --copy-root-password --copy-root-shell ++diff /etc/locale.conf "$ROOT/etc/locale.conf" ++diff <(awk -F: '/^root/ { print $7; }' /etc/passwd) <(awk -F: '/^root/ { print $7; }' "$ROOT/etc/passwd") ++diff <(awk -F: '/^root/ { print $2; }' /etc/shadow) <(awk -F: '/^root/ { print $2; }' "$ROOT/etc/shadow") ++[[ -e /etc/vconsole.conf ]] && diff /etc/vconsole.conf "$ROOT/etc/vconsole.conf" ++[[ -e /etc/localtime ]] && diff <(readlink /etc/localtime) <(readlink "$ROOT/etc/localtime") ++ ++# Assorted tests ++rm -fr "$ROOT" ++mkdir "$ROOT" ++ ++systemd-firstboot --root="$ROOT" --setup-machine-id ++grep -E "[a-z0-9]{32}" "$ROOT/etc/machine-id" ++ ++systemd-firstboot --root="$ROOT" --delete-root-password ++diff <(echo) <(awk -F: '/^root/ { print $2; }' "$ROOT/etc/shadow") +diff --git a/test/units/testsuite-74.service b/test/units/testsuite-74.service +new file mode 100644 +index 0000000000..f782132a92 +--- /dev/null ++++ b/test/units/testsuite-74.service +@@ -0,0 +1,8 @@ ++# SPDX-License-Identifier: LGPL-2.1-or-later ++[Unit] ++Description=TEST-74-AUX-UTILS ++ ++[Service] ++ExecStartPre=rm -f /failed /testok ++ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh ++Type=oneshot +diff --git a/test/units/testsuite-74.sh b/test/units/testsuite-74.sh +new file mode 100755 +index 0000000000..13c767e490 +--- /dev/null ++++ b/test/units/testsuite-74.sh +@@ -0,0 +1,14 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: LGPL-2.1-or-later ++set -eux ++set -o pipefail ++ ++: >/failed ++ ++for script in "${0%.sh}".*.sh; do ++ echo "Running $script" ++ "./$script" ++done ++ ++touch /testok ++rm /failed diff --git a/SOURCES/0024-firstboot-fix-segfault-when-locale-messages-is-passe.patch b/SOURCES/0024-firstboot-fix-segfault-when-locale-messages-is-passe.patch new file mode 100644 index 0000000..3e841db --- /dev/null +++ b/SOURCES/0024-firstboot-fix-segfault-when-locale-messages-is-passe.patch @@ -0,0 +1,56 @@ +From 1ef6ffdf0923095752665c7ff6062514dfa6c6bf Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Fri, 4 Nov 2022 00:01:16 +0000 +Subject: [PATCH] firstboot: fix segfault when --locale-messages= is passed + without --locale= + +\#0 __strcmp_evex () at ../sysdeps/x86_64/multiarch/strcmp-evex.S:295 +No locals. +\#1 0x0000557444eb172b in process_locale () at ../src/firstboot/firstboot.c:342 + etc_localeconf = 0x7ffd40217b80 "/root/root/etc/locale.conf" + locales = {0x0, 0x0, 0x0} + i = 0 + r = + __PRETTY_FUNCTION__ = "process_locale" + __func__ = "process_locale" +\#2 0x0000557444eaff93 in run (argv=0x7ffd40217d98, argc=3) at ../src/firstboot/firstboot.c:1401 + loop_device = 0x0 + unlink_dir = 0x0 + r = + loop_device = + unlink_dir = + r = + __func__ = + __PRETTY_FUNCTION__ = + enabled = + _error = + _level = + _e = + _level = + _e = +\#3 main (argc=3, argv=0x7ffd40217d98) at ../src/firstboot/firstboot.c:1432 + r = + __PRETTY_FUNCTION__ = "main" + +Fixes https://github.com/systemd/systemd/issues/25249 + +(cherry picked from commit 4c4a73ce068ef16cfe7ad07c7c3386ac1dbc58fe) + +Related #2138081 +--- + src/firstboot/firstboot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c +index 065ee896cd..63db78b52d 100644 +--- a/src/firstboot/firstboot.c ++++ b/src/firstboot/firstboot.c +@@ -339,7 +339,7 @@ static int process_locale(void) { + + if (!isempty(arg_locale)) + locales[i++] = strjoina("LANG=", arg_locale); +- if (!isempty(arg_locale_messages) && !streq(arg_locale_messages, arg_locale)) ++ if (!isempty(arg_locale_messages) && !streq_ptr(arg_locale_messages, arg_locale)) + locales[i++] = strjoina("LC_MESSAGES=", arg_locale_messages); + + if (i == 0) diff --git a/SOURCES/0024-test-introduce-get_cgroup_hierarchy-helper.patch b/SOURCES/0024-test-introduce-get_cgroup_hierarchy-helper.patch deleted file mode 100644 index b9734d3..0000000 --- a/SOURCES/0024-test-introduce-get_cgroup_hierarchy-helper.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 16908e1ec833d857cb418712c382c6f604426b36 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 1 Feb 2022 20:18:29 +0100 -Subject: [PATCH] test: introduce `get_cgroup_hierarchy() helper - -which returns the host's cgroup hierarchy (unified, hybrid, or legacy). - -(cherry picked from commit f723740871bd3eb89d16a526a1ff77c04bb3787a) - -Related: #2047768 ---- - test/test-functions | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/test/test-functions b/test/test-functions -index 35d8f074a9..4827b6bedf 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1996,6 +1996,24 @@ import_initdir() { - export initdir - } - -+get_cgroup_hierarchy() { -+ case "$(stat -c '%T' -f /sys/fs/cgroup)" in -+ cgroup2fs) -+ echo "unified" -+ ;; -+ tmpfs) -+ if [[ -d /sys/fs/cgroup/unified && "$(stat -c '%T' -f /sys/fs/cgroup/unified)" == cgroup2fs ]]; then -+ echo "hybrid" -+ else -+ echo "legacy" -+ fi -+ ;; -+ *) -+ dfatal "Failed to determine host's cgroup hierarchy" -+ exit 1 -+ esac -+} -+ - ## @brief Converts numeric logging level to the first letter of level name. - # - # @param lvl Numeric logging level in range from 1 to 6. diff --git a/SOURCES/0025-test-require-unified-cgroup-hierarchy-for-TEST-56.patch b/SOURCES/0025-test-require-unified-cgroup-hierarchy-for-TEST-56.patch deleted file mode 100644 index 1bf03cd..0000000 --- a/SOURCES/0025-test-require-unified-cgroup-hierarchy-for-TEST-56.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 523e72e97d7c945114b54b726eaab0d379fb35fb Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 1 Feb 2022 20:25:00 +0100 -Subject: [PATCH] test: require unified cgroup hierarchy for TEST-56 - -since cgroup empty notifications are unreliable in legacy cgroups. - -See: systemd/systemd#22320 -Complements: systemd/systemd#22344 -(cherry picked from commit e2620820188428de7086f5e8ac41305177f70954) - -Related: #2047768 ---- - test/TEST-56-EXIT-TYPE/test.sh | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/test/TEST-56-EXIT-TYPE/test.sh b/test/TEST-56-EXIT-TYPE/test.sh -index 0f84dca1ba..37475e817e 100755 ---- a/test/TEST-56-EXIT-TYPE/test.sh -+++ b/test/TEST-56-EXIT-TYPE/test.sh -@@ -6,4 +6,9 @@ TEST_DESCRIPTION="test ExitType=cgroup" - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" - -+if [[ "$(get_cgroup_hierarchy)" != unified ]]; then -+ echo "This test requires unified cgroup hierarchy, skipping..." -+ exit 0 -+fi -+ - do_test "$@" diff --git a/SOURCES/0025-tests-make-test-execute-pass-on-openSUSE.patch b/SOURCES/0025-tests-make-test-execute-pass-on-openSUSE.patch new file mode 100644 index 0000000..1d42aaa --- /dev/null +++ b/SOURCES/0025-tests-make-test-execute-pass-on-openSUSE.patch @@ -0,0 +1,76 @@ +From 1d41d2789bb67f5909d6974d2fd916e462a0a5cf Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Fri, 4 Nov 2022 12:24:10 +0100 +Subject: [PATCH] tests: make test-execute pass on openSUSE + +In my understanding user group "3" (aka "sys") is kept for historical reasons +but not really useful these days. That's probably explained why this group +isn't defined on openSUSE. + +Hence let's drop reference to this user group, this shouldn't lessen the +revelance of the test since SupplementaryGroups= is still tested with 2 other +groups. + +(cherry picked from commit d723b0467d7b8c5c772086d5352442f3fca4368d) + +Related #2138081 +--- + test/test-execute/exec-dynamicuser-supplementarygroups.service | 3 +-- + ...plementarygroups-multiple-groups-default-group-user.service | 3 +-- + .../exec-supplementarygroups-multiple-groups-withgid.service | 3 +-- + .../exec-supplementarygroups-multiple-groups-withuid.service | 3 +-- + 4 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/test/test-execute/exec-dynamicuser-supplementarygroups.service b/test/test-execute/exec-dynamicuser-supplementarygroups.service +index fb0b57bc00..53ba0ec7cb 100644 +--- a/test/test-execute/exec-dynamicuser-supplementarygroups.service ++++ b/test/test-execute/exec-dynamicuser-supplementarygroups.service +@@ -5,7 +5,6 @@ Description=Test DynamicUser with SupplementaryGroups= + [Service] + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "3" && HAVE=1; done; test "$$HAVE" -eq 1' + Type=oneshot + DynamicUser=yes +-SupplementaryGroups=1 2 3 ++SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service +index 362e539287..4cb0326320 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service +@@ -6,7 +6,6 @@ Description=Test for Supplementary Group with multiple groups without Group and + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "%G" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "3" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "%G" && test "$$(id -u)" = "%U"' + Type=oneshot +-SupplementaryGroups=1 2 3 ++SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service +index ff3fdc8142..e11743d754 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service +@@ -5,8 +5,7 @@ Description=Test for Supplementary Group with multiple groups and Group=1 + [Service] + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "3" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "%U"' + Type=oneshot + Group=1 +-SupplementaryGroups=1 2 3 ++SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service +index f35ff84765..3efbbfb0f9 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service +@@ -5,7 +5,6 @@ Description=Test for Supplementary Group with multiple groups and Uid=1 + [Service] + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' + ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "3" && HAVE=1; done; test "$$HAVE" -eq 1' + Type=oneshot + User=1 +-SupplementaryGroups=1 2 3 ++SupplementaryGroups=1 2 diff --git a/SOURCES/0026-tests-minor-simplification-in-test-execute.patch b/SOURCES/0026-tests-minor-simplification-in-test-execute.patch new file mode 100644 index 0000000..9c97139 --- /dev/null +++ b/SOURCES/0026-tests-minor-simplification-in-test-execute.patch @@ -0,0 +1,150 @@ +From 5685a8b01abf34ec5da7c43a99ede6e3bb7394eb Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Fri, 4 Nov 2022 12:50:04 +0100 +Subject: [PATCH] tests: minor simplification in test-execute + +No functional change. + +(cherry picked from commit 09415aef940f4a471da7cb899b9a66f1504d7c77) + +Related #2138081 +--- + ...xec-dynamicuser-fixeduser-one-supplementarygroup.service | 2 +- + test/test-execute/exec-dynamicuser-fixeduser.service | 2 +- + .../exec-dynamicuser-supplementarygroups.service | 4 ++-- + ...mentarygroups-multiple-groups-default-group-user.service | 6 +++--- + ...exec-supplementarygroups-multiple-groups-withgid.service | 4 ++-- + ...exec-supplementarygroups-multiple-groups-withuid.service | 4 ++-- + .../exec-supplementarygroups-single-group-user.service | 2 +- + .../exec-supplementarygroups-single-group.service | 2 +- + test/test-execute/exec-supplementarygroups.service | 4 ++-- + 9 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service b/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service +index 0c2a218be0..bbb1af5fb3 100644 +--- a/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service ++++ b/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service +@@ -3,7 +3,7 @@ + Description=Test DynamicUser with User= and SupplementaryGroups= + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "1"' + Type=oneshot + User=1 +diff --git a/test/test-execute/exec-dynamicuser-fixeduser.service b/test/test-execute/exec-dynamicuser-fixeduser.service +index 061bbd2b93..c5828c2a93 100644 +--- a/test/test-execute/exec-dynamicuser-fixeduser.service ++++ b/test/test-execute/exec-dynamicuser-fixeduser.service +@@ -3,7 +3,7 @@ + Description=Test DynamicUser with User= + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "1"' + Type=oneshot + User=1 +diff --git a/test/test-execute/exec-dynamicuser-supplementarygroups.service b/test/test-execute/exec-dynamicuser-supplementarygroups.service +index 53ba0ec7cb..d601af272e 100644 +--- a/test/test-execute/exec-dynamicuser-supplementarygroups.service ++++ b/test/test-execute/exec-dynamicuser-supplementarygroups.service +@@ -3,8 +3,8 @@ + Description=Test DynamicUser with SupplementaryGroups= + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "2" && exit 0; done; exit 1' + Type=oneshot + DynamicUser=yes + SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service +index 4cb0326320..0ecc34441c 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service +@@ -3,9 +3,9 @@ + Description=Test for Supplementary Group with multiple groups without Group and User + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "%G" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "%G" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "2" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "%G" && test "$$(id -u)" = "%U"' + Type=oneshot + SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service +index e11743d754..cd1021bbdf 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service +@@ -3,8 +3,8 @@ + Description=Test for Supplementary Group with multiple groups and Group=1 + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "2" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "%U"' + Type=oneshot + Group=1 +diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service +index 3efbbfb0f9..7913a2c2ed 100644 +--- a/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service ++++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service +@@ -3,8 +3,8 @@ + Description=Test for Supplementary Group with multiple groups and Uid=1 + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "2" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "2" && exit 0; done; exit 1' + Type=oneshot + User=1 + SupplementaryGroups=1 2 +diff --git a/test/test-execute/exec-supplementarygroups-single-group-user.service b/test/test-execute/exec-supplementarygroups-single-group-user.service +index aae71d0a30..ee4017e74e 100644 +--- a/test/test-execute/exec-supplementarygroups-single-group-user.service ++++ b/test/test-execute/exec-supplementarygroups-single-group-user.service +@@ -3,7 +3,7 @@ + Description=Test for Supplementary Group with only one group and uid 1 + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "1"' + Type=oneshot + User=1 +diff --git a/test/test-execute/exec-supplementarygroups-single-group.service b/test/test-execute/exec-supplementarygroups-single-group.service +index c870774382..62275201cc 100644 +--- a/test/test-execute/exec-supplementarygroups-single-group.service ++++ b/test/test-execute/exec-supplementarygroups-single-group.service +@@ -3,7 +3,7 @@ + Description=Test for Supplementary Group with only one group + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' + ExecStart=/bin/sh -x -c 'test "$$(id -g)" = "1" && test "$$(id -u)" = "0"' + Type=oneshot + Group=1 +diff --git a/test/test-execute/exec-supplementarygroups.service b/test/test-execute/exec-supplementarygroups.service +index 75601eab57..03406c3ee8 100644 +--- a/test/test-execute/exec-supplementarygroups.service ++++ b/test/test-execute/exec-supplementarygroups.service +@@ -3,7 +3,7 @@ + Description=Test for Supplementary Group + + [Service] +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "%G" && HAVE=1; done; test "$$HAVE" -eq 1' +-ExecStart=/bin/sh -x -c 'HAVE=0; for g in $$(id -G); do test "$$g" = "1" && HAVE=1; done; test "$$HAVE" -eq 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "%G" && exit 0; done; exit 1' ++ExecStart=/bin/sh -x -c 'for g in $$(id -G); do test "$$g" = "1" && exit 0; done; exit 1' + Type=oneshot + SupplementaryGroups=1 diff --git a/SOURCES/0026-tests-rework-test-macros-to-not-take-code-as-paramet.patch b/SOURCES/0026-tests-rework-test-macros-to-not-take-code-as-paramet.patch deleted file mode 100644 index b04e74a..0000000 --- a/SOURCES/0026-tests-rework-test-macros-to-not-take-code-as-paramet.patch +++ /dev/null @@ -1,671 +0,0 @@ -From 845417e653b42b8f3928c68955bd6416f2fa4509 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 1 Feb 2022 12:06:59 +0100 -Subject: [PATCH] tests: rework test macros to not take code as parameters - -C macros are nasty. We use them, but we try to be conservative with -them. In particular passing literal, complex code blocks as argument is -icky, because of "," handling of C, and also because it's quite a -challange for most code highlighters and similar. Hence, let's avoid -that. Using macros for genreating functions is OK but if so, the -parameters should be simple words, not full code blocks. - -hence, rework DEFINE_CUSTOM_TEST_MAIN() to take a function name instead -of code block as argument. - -As side-effect this also fixes a bunch of cases where we might end up -returning a negative value from main(). - -Some uses of DEFINE_CUSTOM_TEST_MAIN() inserted local variables into the -main() functions, these are replaced by static variables, and their -destructors by the static destructor logic. - -This doesn't fix any bugs or so, it's just supposed to make the code -easier to work with and improve it easthetically. - -Or in other words: let's use macros where it really makes sense, but -let's not go overboard with it. - -(And yes, FOREACH_DIRENT() is another one of those macros that take -code, and I dislike that too and regret I ever added that.) - -(cherry picked from commit 99839c7ebd4b83a5b0d5982d669cfe10d1252e1f) - -Related: #2017035 ---- - src/shared/tests.h | 25 +++++++++++++----- - src/test/test-barrier.c | 46 +++++++++++++++++---------------- - src/test/test-cgroup-setup.c | 15 ++++++----- - src/test/test-chown-rec.c | 15 ++++++----- - src/test/test-format-table.c | 14 +++++----- - src/test/test-fs-util.c | 7 ++++- - src/test/test-hashmap.c | 16 +++++++++--- - src/test/test-install-root.c | 14 +++++++--- - src/test/test-load-fragment.c | 21 ++++++++------- - src/test/test-mountpoint-util.c | 30 +++++++++++---------- - src/test/test-namespace.c | 15 ++++++----- - src/test/test-proc-cmdline.c | 15 ++++++----- - src/test/test-process-util.c | 7 ++++- - src/test/test-sd-hwdb.c | 21 ++++++++------- - src/test/test-serialize.c | 16 ++++++------ - src/test/test-sleep.c | 15 ++++++----- - src/test/test-stat-util.c | 7 ++++- - src/test/test-time-util.c | 6 +++-- - src/test/test-unit-file.c | 7 ++++- - src/test/test-unit-name.c | 21 ++++++++------- - src/test/test-unit-serialize.c | 21 ++++++++------- - src/test/test-utf8.c | 7 ++++- - 22 files changed, 215 insertions(+), 146 deletions(-) - -diff --git a/src/shared/tests.h b/src/shared/tests.h -index 3b93aab498..59448f38f6 100644 ---- a/src/shared/tests.h -+++ b/src/shared/tests.h -@@ -6,6 +6,7 @@ - #include "sd-daemon.h" - - #include "macro.h" -+#include "static-destruct.h" - #include "util.h" - - static inline bool manager_errno_skip_test(int r) { -@@ -109,15 +110,27 @@ static inline int run_test_table(void) { - return r; - } - -+static inline int test_nop(void) { -+ return EXIT_SUCCESS; -+} -+ - #define DEFINE_CUSTOM_TEST_MAIN(log_level, intro, outro) \ - int main(int argc, char *argv[]) { \ -- int _r = EXIT_SUCCESS; \ -+ int _r, _q; \ - test_setup_logging(log_level); \ - save_argc_argv(argc, argv); \ -- intro; \ -- _r = run_test_table(); \ -- outro; \ -- return _r; \ -+ _r = intro(); \ -+ if (_r == EXIT_SUCCESS) \ -+ _r = run_test_table(); \ -+ _q = outro(); \ -+ static_destruct(); \ -+ if (_r < 0) \ -+ return EXIT_FAILURE; \ -+ if (_r != EXIT_SUCCESS) \ -+ return _r; \ -+ if (_q < 0) \ -+ return EXIT_FAILURE; \ -+ return _q; \ - } - --#define DEFINE_TEST_MAIN(log_level) DEFINE_CUSTOM_TEST_MAIN(log_level, , ) -+#define DEFINE_TEST_MAIN(log_level) DEFINE_CUSTOM_TEST_MAIN(log_level, test_nop, test_nop) -diff --git a/src/test/test-barrier.c b/src/test/test-barrier.c -index 8998282afb..b87538806a 100644 ---- a/src/test/test-barrier.c -+++ b/src/test/test-barrier.c -@@ -421,25 +421,27 @@ TEST_BARRIER(barrier_pending_exit, - }), - TEST_BARRIER_WAIT_SUCCESS(pid2)); - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- ({ -- if (!slow_tests_enabled()) -- return log_tests_skipped("slow tests are disabled"); -- -- /* -- * This test uses real-time alarms and sleeps to test for CPU races -- * explicitly. This is highly fragile if your system is under load. We -- * already increased the BASE_TIME value to make the tests more robust, -- * but that just makes the test take significantly longer. Given the recent -- * issues when running the test in a virtualized environments, limit it -- * to bare metal machines only, to minimize false-positives in CIs. -- */ -- int v = detect_virtualization(); -- if (IN_SET(v, -EPERM, -EACCES)) -- return log_tests_skipped("Cannot detect virtualization"); -- -- if (v != VIRTUALIZATION_NONE) -- return log_tests_skipped("This test requires a baremetal machine"); -- }), -- /* no outro */); -+ -+static int intro(void) { -+ if (!slow_tests_enabled()) -+ return log_tests_skipped("slow tests are disabled"); -+ -+ /* -+ * This test uses real-time alarms and sleeps to test for CPU races explicitly. This is highly -+ * fragile if your system is under load. We already increased the BASE_TIME value to make the tests -+ * more robust, but that just makes the test take significantly longer. Given the recent issues when -+ * running the test in a virtualized environments, limit it to bare metal machines only, to minimize -+ * false-positives in CIs. -+ */ -+ -+ int v = detect_virtualization(); -+ if (IN_SET(v, -EPERM, -EACCES)) -+ return log_tests_skipped("Cannot detect virtualization"); -+ -+ if (v != VIRTUALIZATION_NONE) -+ return log_tests_skipped("This test requires a baremetal machine"); -+ -+ return EXIT_SUCCESS; -+ } -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-cgroup-setup.c b/src/test/test-cgroup-setup.c -index 018992f96d..6f93647685 100644 ---- a/src/test/test-cgroup-setup.c -+++ b/src/test/test-cgroup-setup.c -@@ -64,10 +64,11 @@ TEST(is_wanted) { - test_is_wanted_print_one(false); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -- ({ -- if (access("/proc/cmdline", R_OK) < 0 && ERRNO_IS_PRIVILEGE(errno)) -- return log_tests_skipped("can't read /proc/cmdline"); -- }), -- /* no outro */); -+static int intro(void) { -+ if (access("/proc/cmdline", R_OK) < 0 && ERRNO_IS_PRIVILEGE(errno)) -+ return log_tests_skipped("can't read /proc/cmdline"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-chown-rec.c b/src/test/test-chown-rec.c -index 53d44566d5..691cfe767f 100644 ---- a/src/test/test-chown-rec.c -+++ b/src/test/test-chown-rec.c -@@ -149,10 +149,11 @@ TEST(chown_recursive) { - assert_se(!has_xattr(p)); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -- ({ -- if (geteuid() != 0) -- return log_tests_skipped("not running as root"); -- }), -- /* no outro */); -+static int intro(void) { -+ if (geteuid() != 0) -+ return log_tests_skipped("not running as root"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-format-table.c b/src/test/test-format-table.c -index a3b29ca337..7515a74c12 100644 ---- a/src/test/test-format-table.c -+++ b/src/test/test-format-table.c -@@ -529,10 +529,10 @@ TEST(table) { - "5min 5min \n")); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- ({ -- assert_se(setenv("SYSTEMD_COLORS", "0", 1) >= 0); -- assert_se(setenv("COLUMNS", "40", 1) >= 0); -- }), -- /* no outro */); -+static int intro(void) { -+ assert_se(setenv("SYSTEMD_COLORS", "0", 1) >= 0); -+ assert_se(setenv("COLUMNS", "40", 1) >= 0); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c -index 0e0d91d04e..da5a16b4bc 100644 ---- a/src/test/test-fs-util.c -+++ b/src/test/test-fs-util.c -@@ -968,4 +968,9 @@ TEST(open_mkdir_at) { - assert_se(subsubdir_fd >= 0); - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, arg_test_dir = argv[1], /* no outro */); -+static int intro(void) { -+ arg_test_dir = saved_argv[1]; -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c -index cba0c33a8a..4dc155d818 100644 ---- a/src/test/test-hashmap.c -+++ b/src/test/test-hashmap.c -@@ -158,7 +158,15 @@ TEST(hashmap_put_strdup_null) { - /* This variable allows us to assert that the tests from different compilation units were actually run. */ - int n_extern_tests_run = 0; - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- assert_se(n_extern_tests_run == 0), -- assert_se(n_extern_tests_run == 2)); /* Ensure hashmap and ordered_hashmap were tested. */ -+static int intro(void) { -+ assert_se(n_extern_tests_run == 0); -+ return EXIT_SUCCESS; -+} -+ -+static int outro(void) { -+ /* Ensure hashmap and ordered_hashmap were tested. */ -+ assert_se(n_extern_tests_run == 2); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, outro); -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index ba715e6d7e..f540a832bd 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -11,8 +11,11 @@ - #include "special.h" - #include "string-util.h" - #include "tests.h" -+#include "tmpfile-util.h" - --static char root[] = "/tmp/rootXXXXXX"; -+static char *root = NULL; -+ -+STATIC_DESTRUCTOR_REGISTER(root, rm_rf_physical_and_freep); - - TEST(basic_mask_and_enable) { - const char *p; -@@ -1239,10 +1242,10 @@ TEST(verify_alias) { - verify_one(&di_inst_template, "goo.target.conf/plain.service", -EXDEV, NULL); - } - --static void setup_root(void) { -+static int intro(void) { - const char *p; - -- assert_se(mkdtemp(root)); -+ assert_se(mkdtemp_malloc("/tmp/rootXXXXXX", &root) >= 0); - - p = strjoina(root, "/usr/lib/systemd/system/"); - assert_se(mkdir_p(p, 0755) >= 0); -@@ -1264,6 +1267,9 @@ static void setup_root(void) { - - p = strjoina(root, "/usr/lib/systemd/system/graphical.target"); - assert_se(write_string_file(p, "# pretty much empty", WRITE_STRING_FILE_CREATE) >= 0); -+ -+ return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, setup_root(), assert_se(rm_rf(root, REMOVE_ROOT|REMOVE_PHYSICAL) >= 0)); -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index e878979a89..2e105df56a 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -30,6 +30,10 @@ - /* Nontrivial value serves as a placeholder to check that parsing function (didn't) change it */ - #define CGROUP_LIMIT_DUMMY 3 - -+static char *runtime_dir = NULL; -+ -+STATIC_DESTRUCTOR_REGISTER(runtime_dir, rm_rf_physical_and_freep); -+ - TEST_RET(unit_file_get_set) { - int r; - Hashmap *h; -@@ -894,15 +898,12 @@ TEST(unit_is_recursive_template_dependency) { - assert_se(unit_is_likely_recursive_template_dependency(u, "foobar@foobar@123.mount", "foobar@%n.mount") == 0); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -+static int intro(void) { -+ if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -+ return log_tests_skipped("cgroupfs not available"); - -- _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; -- ({ -- if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -- return log_tests_skipped("cgroupfs not available"); -- -- assert_se(runtime_dir = setup_fake_runtime_dir()); -- }), -+ assert_se(runtime_dir = setup_fake_runtime_dir()); -+ return EXIT_SUCCESS; -+} - -- /* no outro */); -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c -index 9515d8cf7b..102d2850bf 100644 ---- a/src/test/test-mountpoint-util.c -+++ b/src/test/test-mountpoint-util.c -@@ -298,17 +298,19 @@ TEST(fd_is_mount_point) { - assert_se(IN_SET(fd_is_mount_point(fd, "root/", 0), -ENOENT, 0)); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -- ({ -- /* let's move into our own mount namespace with all propagation from the host turned off, so -- * that /proc/self/mountinfo is static and constant for the whole time our test runs. */ -- if (unshare(CLONE_NEWNS) < 0) { -- if (!ERRNO_IS_PRIVILEGE(errno)) -- return log_error_errno(errno, "Failed to detach mount namespace: %m"); -- -- log_notice("Lacking privilege to create separate mount namespace, proceeding in originating mount namespace."); -- } else -- assert_se(mount(NULL, "/", NULL, MS_PRIVATE | MS_REC, NULL) >= 0); -- }), -- /* no outro */); -+static int intro(void) { -+ /* let's move into our own mount namespace with all propagation from the host turned off, so -+ * that /proc/self/mountinfo is static and constant for the whole time our test runs. */ -+ -+ if (unshare(CLONE_NEWNS) < 0) { -+ if (!ERRNO_IS_PRIVILEGE(errno)) -+ return log_error_errno(errno, "Failed to detach mount namespace: %m"); -+ -+ log_notice("Lacking privilege to create separate mount namespace, proceeding in originating mount namespace."); -+ } else -+ assert_se(mount(NULL, "/", NULL, MS_PRIVATE | MS_REC, NULL) >= 0); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c -index 8df5533d6e..f9e34f3bfa 100644 ---- a/src/test/test-namespace.c -+++ b/src/test/test-namespace.c -@@ -220,10 +220,11 @@ TEST(protect_kernel_logs) { - assert_se(wait_for_terminate_and_check("ns-kernellogs", pid, WAIT_LOG) == EXIT_SUCCESS); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- ({ -- if (!have_namespaces()) -- return log_tests_skipped("Don't have namespace support"); -- }), -- /* no outro */); -+static int intro(void) { -+ if (!have_namespaces()) -+ return log_tests_skipped("Don't have namespace support"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-proc-cmdline.c b/src/test/test-proc-cmdline.c -index 1c8c9b80b7..064b4d838f 100644 ---- a/src/test/test-proc-cmdline.c -+++ b/src/test/test-proc-cmdline.c -@@ -247,10 +247,11 @@ TEST(proc_cmdline_key_startswith) { - assert_se(!proc_cmdline_key_startswith("foo-bar", "foo_xx")); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- ({ -- if (access("/proc/cmdline", R_OK) < 0 && ERRNO_IS_PRIVILEGE(errno)) -- return log_tests_skipped("can't read /proc/cmdline"); -- }), -- /* no outro */); -+static int intro(void) { -+ if (access("/proc/cmdline", R_OK) < 0 && ERRNO_IS_PRIVILEGE(errno)) -+ return log_tests_skipped("can't read /proc/cmdline"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c -index 06a640b1cc..8661934929 100644 ---- a/src/test/test-process-util.c -+++ b/src/test/test-process-util.c -@@ -895,4 +895,9 @@ TEST(set_oom_score_adjust) { - assert_se(b == a); - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, log_show_color(true), /* no outro */); -+static int intro(void) { -+ log_show_color(true); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-sd-hwdb.c b/src/test/test-sd-hwdb.c -index 7961c17c4a..88992a6c2b 100644 ---- a/src/test/test-sd-hwdb.c -+++ b/src/test/test-sd-hwdb.c -@@ -52,12 +52,15 @@ TEST(basic_enumerate) { - assert_se(len1 == len2); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -- ({ -- _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; -- int r = sd_hwdb_new(&hwdb); -- if (r == -ENOENT || ERRNO_IS_PRIVILEGE(r)) -- return log_tests_skipped_errno(r, "cannot open hwdb"); -- }), -- /* no outro */); -+static int intro(void) { -+ _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; -+ int r; -+ -+ r = sd_hwdb_new(&hwdb); -+ if (r == -ENOENT || ERRNO_IS_PRIVILEGE(r)) -+ return log_tests_skipped_errno(r, "cannot open hwdb"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-serialize.c b/src/test/test-serialize.c -index fb04b3e7fa..9aeb6c5920 100644 ---- a/src/test/test-serialize.c -+++ b/src/test/test-serialize.c -@@ -10,7 +10,7 @@ - #include "tests.h" - #include "tmpfile-util.h" - --char long_string[LONG_LINE_MAX+1]; -+static char long_string[LONG_LINE_MAX+1]; - - TEST(serialize_item) { - _cleanup_(unlink_tempfilep) char fn[] = "/tmp/test-serialize.XXXXXX"; -@@ -189,10 +189,10 @@ TEST(serialize_environment) { - assert_se(strv_equal(env, env2)); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -- ({ -- memset(long_string, 'x', sizeof(long_string)-1); -- char_array_0(long_string); -- }), -- /* no outro */); -+static int intro(void) { -+ memset(long_string, 'x', sizeof(long_string)-1); -+ char_array_0(long_string); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c -index 183ad4f7b7..f56e7e0167 100644 ---- a/src/test/test-sleep.c -+++ b/src/test/test-sleep.c -@@ -118,10 +118,11 @@ TEST(sleep) { - log_info("Suspend-then-Hibernate configured and possible: %s", r >= 0 ? yes_no(r) : strerror_safe(r)); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -- ({ -- if (getuid() != 0) -- log_warning("This program is unlikely to work for unprivileged users"); -- }), -- /* no outro */); -+static int intro(void) { -+ if (getuid() != 0) -+ log_warning("This program is unlikely to work for unprivileged users"); -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c -index 0f7b3ca3ce..2965ee679f 100644 ---- a/src/test/test-stat-util.c -+++ b/src/test/test-stat-util.c -@@ -236,4 +236,9 @@ TEST(dir_is_empty) { - assert_se(dir_is_empty_at(AT_FDCWD, empty_dir) > 0); - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, log_show_color(true), /* no outro */); -+static int intro(void) { -+ log_show_color(true); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c -index 4d0131827e..f21d8b7794 100644 ---- a/src/test/test-time-util.c -+++ b/src/test/test-time-util.c -@@ -588,7 +588,7 @@ TEST(map_clock_usec) { - } - } - --static void setup_test(void) { -+static int intro(void) { - log_info("realtime=" USEC_FMT "\n" - "monotonic=" USEC_FMT "\n" - "boottime=" USEC_FMT "\n", -@@ -603,6 +603,8 @@ static void setup_test(void) { - uintmax_t x = TIME_T_MAX; - x++; - assert_se((time_t) x < 0); -+ -+ return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, setup_test(), /* no outro */); -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c -index 0f8c25c218..6c9f245c7e 100644 ---- a/src/test/test-unit-file.c -+++ b/src/test/test-unit-file.c -@@ -102,4 +102,9 @@ TEST(runlevel_to_target) { - assert_se(streq_ptr(runlevel_to_target("rd.rescue"), SPECIAL_RESCUE_TARGET)); - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, log_show_color(true), /* no outro */); -+static int intro(void) { -+ log_show_color(true); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c -index 6bde9e090d..1f65407e5f 100644 ---- a/src/test/test-unit-name.c -+++ b/src/test/test-unit-name.c -@@ -23,6 +23,10 @@ - #include "user-util.h" - #include "util.h" - -+static char *runtime_dir = NULL; -+ -+STATIC_DESTRUCTOR_REGISTER(runtime_dir, rm_rf_physical_and_freep); -+ - static void test_unit_name_is_valid_one(const char *name, UnitNameFlags flags, bool expected) { - log_info("%s ( %s%s%s ): %s", - name, -@@ -844,15 +848,12 @@ TEST(unit_name_prefix_equal) { - assert_se(!unit_name_prefix_equal("a", "a")); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_INFO, -+static int intro(void) { -+ if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -+ return log_tests_skipped("cgroupfs not available"); - -- _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; -- ({ -- if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -- return log_tests_skipped("cgroupfs not available"); -- -- assert_se(runtime_dir = setup_fake_runtime_dir()); -- }), -+ assert_se(runtime_dir = setup_fake_runtime_dir()); -+ return EXIT_SUCCESS; -+} - -- /* no outro */); -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -diff --git a/src/test/test-unit-serialize.c b/src/test/test-unit-serialize.c -index 899fdc000c..5d39176db2 100644 ---- a/src/test/test-unit-serialize.c -+++ b/src/test/test-unit-serialize.c -@@ -4,6 +4,10 @@ - #include "service.h" - #include "tests.h" - -+static char *runtime_dir = NULL; -+ -+STATIC_DESTRUCTOR_REGISTER(runtime_dir, rm_rf_physical_and_freep); -+ - #define EXEC_START_ABSOLUTE \ - "ExecStart 0 /bin/sh \"sh\" \"-e\" \"-x\" \"-c\" \"systemctl --state=failed --no-legend --no-pager >/failed ; systemctl daemon-reload ; echo OK >/testok\"" - #define EXEC_START_RELATIVE \ -@@ -48,15 +52,12 @@ TEST(deserialize_exec_command) { - test_deserialize_exec_command_one(m, "control-command", "ExecWhat 11 /a/b c d e", -EINVAL); - } - --DEFINE_CUSTOM_TEST_MAIN( -- LOG_DEBUG, -+static int intro(void) { -+ if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -+ return log_tests_skipped("cgroupfs not available"); - -- _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; -- ({ -- if (enter_cgroup_subroot(NULL) == -ENOMEDIUM) -- return log_tests_skipped("cgroupfs not available"); -- -- assert_se(runtime_dir = setup_fake_runtime_dir()); -- }), -+ assert_se(runtime_dir = setup_fake_runtime_dir()); -+ return EXIT_SUCCESS; -+} - -- /* no outro */); -+DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c -index a21fcd6fd2..1b31d1f852 100644 ---- a/src/test/test-utf8.c -+++ b/src/test/test-utf8.c -@@ -231,4 +231,9 @@ TEST(utf8_to_utf16) { - } - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, log_show_color(true), /* no outro */); -+static int intro(void) { -+ log_show_color(true); -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); diff --git a/SOURCES/0027-test-allow-to-set-NULL-to-intro-or-outro.patch b/SOURCES/0027-test-allow-to-set-NULL-to-intro-or-outro.patch deleted file mode 100644 index d57eb07..0000000 --- a/SOURCES/0027-test-allow-to-set-NULL-to-intro-or-outro.patch +++ /dev/null @@ -1,300 +0,0 @@ -From 0be677fb6663ab6bfd02eae6ad32e7f031cfde0f Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 2 Feb 2022 11:06:41 +0900 -Subject: [PATCH] test: allow to set NULL to intro or outro - -Addresses https://github.com/systemd/systemd/pull/22338#discussion_r796741033. - -(cherry picked from commit e85fdacc8ad7d91f140a135aaa3fd5372d3fa47c) - -Related: #2017035 ---- - src/shared/tests.h | 45 +++++++++++++++++---------------- - src/test/test-barrier.c | 2 +- - src/test/test-cgroup-setup.c | 2 +- - src/test/test-chown-rec.c | 2 +- - src/test/test-format-table.c | 2 +- - src/test/test-fs-util.c | 2 +- - src/test/test-hashmap.c | 2 +- - src/test/test-install-root.c | 2 +- - src/test/test-load-fragment.c | 2 +- - src/test/test-mountpoint-util.c | 2 +- - src/test/test-namespace.c | 2 +- - src/test/test-proc-cmdline.c | 2 +- - src/test/test-process-util.c | 2 +- - src/test/test-sd-hwdb.c | 2 +- - src/test/test-serialize.c | 2 +- - src/test/test-sleep.c | 2 +- - src/test/test-stat-util.c | 2 +- - src/test/test-time-util.c | 2 +- - src/test/test-unit-file.c | 2 +- - src/test/test-unit-name.c | 2 +- - src/test/test-unit-serialize.c | 2 +- - src/test/test-utf8.c | 2 +- - 22 files changed, 44 insertions(+), 43 deletions(-) - -diff --git a/src/shared/tests.h b/src/shared/tests.h -index 59448f38f6..ef6acd368e 100644 ---- a/src/shared/tests.h -+++ b/src/shared/tests.h -@@ -110,27 +110,28 @@ static inline int run_test_table(void) { - return r; - } - --static inline int test_nop(void) { -- return EXIT_SUCCESS; --} -- --#define DEFINE_CUSTOM_TEST_MAIN(log_level, intro, outro) \ -- int main(int argc, char *argv[]) { \ -- int _r, _q; \ -- test_setup_logging(log_level); \ -- save_argc_argv(argc, argv); \ -- _r = intro(); \ -- if (_r == EXIT_SUCCESS) \ -- _r = run_test_table(); \ -- _q = outro(); \ -- static_destruct(); \ -- if (_r < 0) \ -- return EXIT_FAILURE; \ -- if (_r != EXIT_SUCCESS) \ -- return _r; \ -- if (_q < 0) \ -- return EXIT_FAILURE; \ -- return _q; \ -+#define DEFINE_TEST_MAIN_FULL(log_level, intro, outro) \ -+ int main(int argc, char *argv[]) { \ -+ int (*_intro)(void) = intro; \ -+ int (*_outro)(void) = outro; \ -+ int _r, _q; \ -+ test_setup_logging(log_level); \ -+ save_argc_argv(argc, argv); \ -+ _r = _intro ? _intro() : EXIT_SUCCESS; \ -+ if (_r == EXIT_SUCCESS) \ -+ _r = run_test_table(); \ -+ _q = _outro ? _outro() : EXIT_SUCCESS; \ -+ static_destruct(); \ -+ if (_r < 0) \ -+ return EXIT_FAILURE; \ -+ if (_r != EXIT_SUCCESS) \ -+ return _r; \ -+ if (_q < 0) \ -+ return EXIT_FAILURE; \ -+ return _q; \ - } - --#define DEFINE_TEST_MAIN(log_level) DEFINE_CUSTOM_TEST_MAIN(log_level, test_nop, test_nop) -+#define DEFINE_TEST_MAIN_WITH_INTRO(log_level, intro) \ -+ DEFINE_TEST_MAIN_FULL(log_level, intro, NULL) -+#define DEFINE_TEST_MAIN(log_level) \ -+ DEFINE_TEST_MAIN_FULL(log_level, NULL, NULL) -diff --git a/src/test/test-barrier.c b/src/test/test-barrier.c -index b87538806a..bbd7e2bddb 100644 ---- a/src/test/test-barrier.c -+++ b/src/test/test-barrier.c -@@ -444,4 +444,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-cgroup-setup.c b/src/test/test-cgroup-setup.c -index 6f93647685..c377ff0a00 100644 ---- a/src/test/test-cgroup-setup.c -+++ b/src/test/test-cgroup-setup.c -@@ -71,4 +71,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-chown-rec.c b/src/test/test-chown-rec.c -index 691cfe767f..97711f58b0 100644 ---- a/src/test/test-chown-rec.c -+++ b/src/test/test-chown-rec.c -@@ -156,4 +156,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-format-table.c b/src/test/test-format-table.c -index 7515a74c12..1b4963d928 100644 ---- a/src/test/test-format-table.c -+++ b/src/test/test-format-table.c -@@ -535,4 +535,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c -index da5a16b4bc..602ce75f98 100644 ---- a/src/test/test-fs-util.c -+++ b/src/test/test-fs-util.c -@@ -973,4 +973,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c -index 4dc155d818..dbf762cc0b 100644 ---- a/src/test/test-hashmap.c -+++ b/src/test/test-hashmap.c -@@ -169,4 +169,4 @@ static int outro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, outro); -+DEFINE_TEST_MAIN_FULL(LOG_INFO, intro, outro); -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index f540a832bd..f718689c3a 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -1272,4 +1272,4 @@ static int intro(void) { - } - - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index 2e105df56a..1bd68c7e0a 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -906,4 +906,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c -index 102d2850bf..4d140c42b6 100644 ---- a/src/test/test-mountpoint-util.c -+++ b/src/test/test-mountpoint-util.c -@@ -313,4 +313,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c -index f9e34f3bfa..7a634adca9 100644 ---- a/src/test/test-namespace.c -+++ b/src/test/test-namespace.c -@@ -227,4 +227,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-proc-cmdline.c b/src/test/test-proc-cmdline.c -index 064b4d838f..1f43bb3eb0 100644 ---- a/src/test/test-proc-cmdline.c -+++ b/src/test/test-proc-cmdline.c -@@ -254,4 +254,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c -index 8661934929..7a8adad50c 100644 ---- a/src/test/test-process-util.c -+++ b/src/test/test-process-util.c -@@ -900,4 +900,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-sd-hwdb.c b/src/test/test-sd-hwdb.c -index 88992a6c2b..4251e2a809 100644 ---- a/src/test/test-sd-hwdb.c -+++ b/src/test/test-sd-hwdb.c -@@ -63,4 +63,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-serialize.c b/src/test/test-serialize.c -index 9aeb6c5920..bcf2e843b0 100644 ---- a/src/test/test-serialize.c -+++ b/src/test/test-serialize.c -@@ -195,4 +195,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c -index f56e7e0167..5aebcdd935 100644 ---- a/src/test/test-sleep.c -+++ b/src/test/test-sleep.c -@@ -125,4 +125,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c -index 2965ee679f..7f633ab259 100644 ---- a/src/test/test-stat-util.c -+++ b/src/test/test-stat-util.c -@@ -241,4 +241,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c -index f21d8b7794..554693834b 100644 ---- a/src/test/test-time-util.c -+++ b/src/test/test-time-util.c -@@ -607,4 +607,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c -index 6c9f245c7e..cc08a4ae4b 100644 ---- a/src/test/test-unit-file.c -+++ b/src/test/test-unit-file.c -@@ -107,4 +107,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c -index 1f65407e5f..8cd0e0b4a1 100644 ---- a/src/test/test-unit-name.c -+++ b/src/test/test-unit-name.c -@@ -856,4 +856,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -diff --git a/src/test/test-unit-serialize.c b/src/test/test-unit-serialize.c -index 5d39176db2..3ef15f3b1e 100644 ---- a/src/test/test-unit-serialize.c -+++ b/src/test/test-unit-serialize.c -@@ -60,4 +60,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_DEBUG, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c -index 1b31d1f852..7337b81227 100644 ---- a/src/test/test-utf8.c -+++ b/src/test/test-utf8.c -@@ -236,4 +236,4 @@ static int intro(void) { - return EXIT_SUCCESS; - } - --DEFINE_CUSTOM_TEST_MAIN(LOG_INFO, intro, test_nop); -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); diff --git a/SOURCES/0027-tmpfiles.d-do-not-fail-if-provision.conf-fails.patch b/SOURCES/0027-tmpfiles.d-do-not-fail-if-provision.conf-fails.patch new file mode 100644 index 0000000..11c83c2 --- /dev/null +++ b/SOURCES/0027-tmpfiles.d-do-not-fail-if-provision.conf-fails.patch @@ -0,0 +1,29 @@ +From 6d8f91ab2f7db862d95d0565bad3aaf4279c00bc Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Thu, 3 Nov 2022 20:10:57 +0000 +Subject: [PATCH] tmpfiles.d: do not fail if provision.conf fails + +On a read-only filesystem creating /root/.ssh might fail, but that's ok. +Do not fail the run, as this is only needed to add the credential, which +is a separate step. + +(cherry picked from commit e0fc9be37e4d15e2c322eb8281692c2639dac023) + +Related #2138081 +--- + tmpfiles.d/provision.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tmpfiles.d/provision.conf b/tmpfiles.d/provision.conf +index 3c56f42d58..093104aaaf 100644 +--- a/tmpfiles.d/provision.conf ++++ b/tmpfiles.d/provision.conf +@@ -17,6 +17,6 @@ f^ /etc/issue.d/50-provision.conf - - - - login.issue + f^ /etc/hosts - - - - network.hosts + + # Provision SSH key for root +-d /root :0700 root :root - +-d /root/.ssh :0700 root :root - ++d- /root :0700 root :root - ++d- /root/.ssh :0700 root :root - + f^ /root/.ssh/authorized_keys :0600 root :root - ssh.authorized_keys.root diff --git a/SOURCES/0028-kernel-install-90-loaderentry-do-not-add-multiple-sy.patch b/SOURCES/0028-kernel-install-90-loaderentry-do-not-add-multiple-sy.patch new file mode 100644 index 0000000..3b9a8a6 --- /dev/null +++ b/SOURCES/0028-kernel-install-90-loaderentry-do-not-add-multiple-sy.patch @@ -0,0 +1,31 @@ +From d3b559f5e561750e6c50449b2ca84b40abeb492d Mon Sep 17 00:00:00 2001 +From: Antonio Alvarez Feijoo +Date: Fri, 4 Nov 2022 09:57:24 +0100 +Subject: [PATCH] kernel-install/90-loaderentry: do not add multiple + systemd.machine_id options + +Do not unconditionally add a new systemd.machine_id command line option, first +check if it already exists with the expected value. + +Fixes #25203 + +(cherry picked from commit 981502c5cc9ce32c3f77ff74aad87cd6f0da3b16) + +Related #2138081 +--- + src/kernel-install/90-loaderentry.install | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install +index 743af33aa9..ea75e1b0d8 100755 +--- a/src/kernel-install/90-loaderentry.install ++++ b/src/kernel-install/90-loaderentry.install +@@ -85,7 +85,7 @@ BOOT_OPTIONS="${BOOT_OPTIONS% }" + # command line with the machine ID we use, so that the machine ID remains + # stable, even during factory reset, in the initrd (where the system's machine + # ID is not directly accessible yet), and if the root file system is volatile. +-if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ]; then ++if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ] && ! echo "$BOOT_OPTIONS" | grep -q "systemd.machine_id=$MACHINE_ID"; then + BOOT_OPTIONS="$BOOT_OPTIONS systemd.machine_id=$MACHINE_ID" + fi + diff --git a/SOURCES/0028-udev-net-setup-link-change-the-default-MACAddressPol.patch b/SOURCES/0028-udev-net-setup-link-change-the-default-MACAddressPol.patch deleted file mode 100644 index e7f152a..0000000 --- a/SOURCES/0028-udev-net-setup-link-change-the-default-MACAddressPol.patch +++ /dev/null @@ -1,53 +0,0 @@ -From f00cbfd1cf67f28a92863c74ef64a1aedfacabc6 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Tue, 21 Sep 2021 15:01:19 +0200 -Subject: [PATCH] udev/net-setup-link: change the default MACAddressPolicy to - "none" - -While stable MAC address for interface types that don't have the -address provided by HW could be useful it also breaks LACP based bonds. -Let's err on the side of caution and don't change the MAC address from -udev. - -RHEL-only - -Resolves: #2009237 ---- - man/systemd.link.xml | 2 +- - network/99-default.link | 2 +- - test/fuzz/fuzz-link-parser/99-default.link | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/man/systemd.link.xml b/man/systemd.link.xml -index 45cabbccf7..0033e4c28f 100644 ---- a/man/systemd.link.xml -+++ b/man/systemd.link.xml -@@ -961,7 +961,7 @@ - - [Link] - NamePolicy=kernel database onboard slot path --MACAddressPolicy=persistent -+MACAddressPolicy=none - - - -diff --git a/network/99-default.link b/network/99-default.link -index bca660ac28..31aee37e75 100644 ---- a/network/99-default.link -+++ b/network/99-default.link -@@ -13,4 +13,4 @@ OriginalName=* - [Link] - NamePolicy=keep kernel database onboard slot path - AlternativeNamesPolicy=database onboard slot path --MACAddressPolicy=persistent -+MACAddressPolicy=none -diff --git a/test/fuzz/fuzz-link-parser/99-default.link b/test/fuzz/fuzz-link-parser/99-default.link -index feb5b1fbb0..3d755898b4 100644 ---- a/test/fuzz/fuzz-link-parser/99-default.link -+++ b/test/fuzz/fuzz-link-parser/99-default.link -@@ -9,4 +9,4 @@ - - [Link] - NamePolicy=keep kernel database onboard slot path --MACAddressPolicy=persistent -+MACAddressPolicy=none diff --git a/SOURCES/0029-condition-Check-that-subsystem-is-enabled-in-Conditi.patch b/SOURCES/0029-condition-Check-that-subsystem-is-enabled-in-Conditi.patch new file mode 100644 index 0000000..44e715c --- /dev/null +++ b/SOURCES/0029-condition-Check-that-subsystem-is-enabled-in-Conditi.patch @@ -0,0 +1,120 @@ +From 1b7dfe48d6d66cad5d0368b8e8b387a4d9586ccd Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Thu, 27 Oct 2022 11:12:10 +0200 +Subject: [PATCH] condition: Check that subsystem is enabled in + ConditionSecurity=tpm2 + +Instead of succeeding when either the firmware reports a TPM device +or we find a TPM device, let's check that the firmware reports a TPM +device and the TPM subsystem is enabled in the kernel. + +To check whether the subsystem enabled, we check if the relevant +subdirectory in /sys exists at all. + +(cherry picked from commit 300bba79c22e4be1effe2faad0e59ac725d396a1) + +Related #2138081 +--- + man/systemd-creds.xml | 4 ++-- + src/creds/creds.c | 6 ++++-- + src/shared/condition.c | 9 ++++----- + src/shared/tpm2-util.c | 6 +++++- + src/shared/tpm2-util.h | 11 ++++++----- + 5 files changed, 21 insertions(+), 15 deletions(-) + +diff --git a/man/systemd-creds.xml b/man/systemd-creds.xml +index 1e5632e63d..003fbcd463 100644 +--- a/man/systemd-creds.xml ++++ b/man/systemd-creds.xml +@@ -175,8 +175,8 @@ + by the OS kernel drivers and by userspace (i.e. systemd) this prints yes and exits + with exit status zero. If no such device is discovered/supported/used, prints + no. Otherwise prints partial. In either of these two cases +- exits with non-zero exit status. It also shows three lines indicating separately whether drivers, +- firmware and the system discovered/support/use TPM2. ++ exits with non-zero exit status. It also shows four lines indicating separately whether firmware, ++ drivers, the system and the kernel discovered/support/use TPM2. + + Combine with to suppress the output. + +diff --git a/src/creds/creds.c b/src/creds/creds.c +index 5586fd776a..a755a52c34 100644 +--- a/src/creds/creds.c ++++ b/src/creds/creds.c +@@ -637,10 +637,12 @@ static int verb_has_tpm2(int argc, char **argv, void *userdata) { + + printf("%sfirmware\n" + "%sdriver\n" +- "%ssystem\n", ++ "%ssystem\n" ++ "%ssubsystem\n", + plus_minus(s & TPM2_SUPPORT_FIRMWARE), + plus_minus(s & TPM2_SUPPORT_DRIVER), +- plus_minus(s & TPM2_SUPPORT_SYSTEM)); ++ plus_minus(s & TPM2_SUPPORT_SYSTEM), ++ plus_minus(s & TPM2_SUPPORT_SUBSYSTEM)); + } + + /* Return inverted bit flags. So that TPM2_SUPPORT_FULL becomes EXIT_SUCCESS and the other values +diff --git a/src/shared/condition.c b/src/shared/condition.c +index 310ffcbdc6..a23d6a3e45 100644 +--- a/src/shared/condition.c ++++ b/src/shared/condition.c +@@ -664,14 +664,13 @@ static int condition_test_ac_power(Condition *c, char **env) { + } + + static int has_tpm2(void) { +- /* Checks whether the system has at least one TPM2 resource manager device, i.e. at least one "tpmrm" +- * class device. Alternatively, we are also happy if the firmware reports support (this is to cover +- * for cases where we simply haven't loaded the driver for it yet, i.e. during early boot where we +- * very likely want to use this condition check). ++ /* Checks whether the kernel has the TPM subsystem enabled and the firmware reports support. Note ++ * we don't check for actual TPM devices, since we might not have loaded the driver for it yet, i.e. ++ * during early boot where we very likely want to use this condition check). + * + * Note that we don't check if we ourselves are built with TPM2 support here! */ + +- return (tpm2_support() & (TPM2_SUPPORT_DRIVER|TPM2_SUPPORT_FIRMWARE)) != 0; ++ return FLAGS_SET(tpm2_support(), TPM2_SUPPORT_SUBSYSTEM|TPM2_SUPPORT_FIRMWARE); + } + + static int condition_test_security(Condition *c, char **env) { +diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c +index 13e92c4144..65e8d48347 100644 +--- a/src/shared/tpm2-util.c ++++ b/src/shared/tpm2-util.c +@@ -2189,7 +2189,11 @@ Tpm2Support tpm2_support(void) { + if (r != -ENOENT) + log_debug_errno(r, "Unable to test whether /sys/class/tpmrm/ exists and is populated, assuming it is not: %m"); + } else if (r == 0) /* populated! */ +- support |= TPM2_SUPPORT_DRIVER; ++ support |= TPM2_SUPPORT_SUBSYSTEM|TPM2_SUPPORT_DRIVER; ++ else ++ /* If the directory exists but is empty, we know the subsystem is enabled but no ++ * driver has been loaded yet. */ ++ support |= TPM2_SUPPORT_SUBSYSTEM; + } + + if (efi_has_tpm2()) +diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h +index 048c28d6ca..c240335ae6 100644 +--- a/src/shared/tpm2-util.h ++++ b/src/shared/tpm2-util.h +@@ -137,11 +137,12 @@ typedef struct { + typedef enum Tpm2Support { + /* NOTE! The systemd-creds tool returns these flags 1:1 as exit status. Hence these flags are pretty + * much ABI! Hence, be extra careful when changing/extending these definitions. */ +- TPM2_SUPPORT_NONE = 0, /* no support */ +- TPM2_SUPPORT_FIRMWARE = 1 << 0, /* firmware reports TPM2 was used */ +- TPM2_SUPPORT_DRIVER = 1 << 1, /* the kernel has a driver loaded for it */ +- TPM2_SUPPORT_SYSTEM = 1 << 2, /* we support it ourselves */ +- TPM2_SUPPORT_FULL = TPM2_SUPPORT_FIRMWARE|TPM2_SUPPORT_DRIVER|TPM2_SUPPORT_SYSTEM, ++ TPM2_SUPPORT_NONE = 0, /* no support */ ++ TPM2_SUPPORT_FIRMWARE = 1 << 0, /* firmware reports TPM2 was used */ ++ TPM2_SUPPORT_DRIVER = 1 << 1, /* the kernel has a driver loaded for it */ ++ TPM2_SUPPORT_SYSTEM = 1 << 2, /* we support it ourselves */ ++ TPM2_SUPPORT_SUBSYSTEM = 1 << 3, /* the kernel has the tpm subsystem enabled */ ++ TPM2_SUPPORT_FULL = TPM2_SUPPORT_FIRMWARE|TPM2_SUPPORT_DRIVER|TPM2_SUPPORT_SYSTEM|TPM2_SUPPORT_SUBSYSTEM, + } Tpm2Support; + + Tpm2Support tpm2_support(void); diff --git a/SOURCES/0029-man-mention-System-Administrator-s-Guide-in-systemct.patch b/SOURCES/0029-man-mention-System-Administrator-s-Guide-in-systemct.patch deleted file mode 100644 index df32d47..0000000 --- a/SOURCES/0029-man-mention-System-Administrator-s-Guide-in-systemct.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 17a3bad51a7efefd6dc63249c49ddaabda6cbd19 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Thu, 28 Aug 2014 15:12:10 +0200 -Subject: [PATCH] man: mention System Administrator's Guide in systemctl - manpage - -RHEL-only - -Resolves: #1982596 ---- - man/systemctl.xml | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index 1c14909523..3b3d709ab3 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -2455,6 +2455,17 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err - - - -+ -+ Examples -+ -+ For examples how to use systemctl in comparsion -+ with old service and chkconfig command please see: -+ -+ Managing System Services -+ -+ -+ -+ - - See Also - diff --git a/SOURCES/0030-Net-naming-scheme-for-RHEL-9.0.patch b/SOURCES/0030-Net-naming-scheme-for-RHEL-9.0.patch deleted file mode 100644 index 793a4ee..0000000 --- a/SOURCES/0030-Net-naming-scheme-for-RHEL-9.0.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 464a8fc4e0b218793105431cc71bf98b0dc97fb5 Mon Sep 17 00:00:00 2001 -From: Jacek Migacz -Date: Thu, 3 Feb 2022 23:46:09 +0100 -Subject: [PATCH] Net naming scheme for RHEL-9.0 - -RHEL-only - -Resolves: #2052106 ---- - man/systemd.net-naming-scheme.xml | 7 +++++++ - src/shared/netif-naming-scheme.c | 1 + - src/shared/netif-naming-scheme.h | 1 + - 3 files changed, 9 insertions(+) - -diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml -index 41408411fc..942ef572ff 100644 ---- a/man/systemd.net-naming-scheme.xml -+++ b/man/systemd.net-naming-scheme.xml -@@ -403,6 +403,13 @@ - - - -+ -+ rhel-9.0 -+ -+ Same as naming scheme v250. -+ -+ -+ - - - Note that latest may be used to denote the latest scheme known (to this -diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c -index 245466c4cb..44d011a9b7 100644 ---- a/src/shared/netif-naming-scheme.c -+++ b/src/shared/netif-naming-scheme.c -@@ -23,6 +23,7 @@ static const NamingScheme naming_schemes[] = { - { "v247", NAMING_V247 }, - { "v249", NAMING_V249 }, - { "v250", NAMING_V250 }, -+ { "rhel-9.0", NAMING_RHEL_9_0 }, - /* … add more schemes here, as the logic to name devices is updated … */ - - EXTRA_NET_NAMING_MAP -diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h -index 16b304ce10..f765db6ef2 100644 ---- a/src/shared/netif-naming-scheme.h -+++ b/src/shared/netif-naming-scheme.h -@@ -47,6 +47,7 @@ typedef enum NamingSchemeFlags { - NAMING_V247 = NAMING_V245 | NAMING_BRIDGE_NO_SLOT, - NAMING_V249 = NAMING_V247 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX | NAMING_REPLACE_STRICTLY, - NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF, -+ NAMING_RHEL_9_0 = NAMING_V250, - - EXTRA_NET_NAMING_SCHEMES - diff --git a/SOURCES/0030-semaphore-remove-the-Semaphore-repositories-recursiv.patch b/SOURCES/0030-semaphore-remove-the-Semaphore-repositories-recursiv.patch new file mode 100644 index 0000000..dc3513d --- /dev/null +++ b/SOURCES/0030-semaphore-remove-the-Semaphore-repositories-recursiv.patch @@ -0,0 +1,52 @@ +From f0839034c9910529f368e60262b5653afad58f63 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 7 Nov 2022 16:39:12 +0100 +Subject: [PATCH] semaphore: remove the Semaphore repositories recursively + +The list of disabled repositories was recently converted from a single +file into a directory with separate repository files, so let's adjust +the setup script accordingly. + +``` +$ ls -lR /etc/apt/sources.list.d/ +/etc/apt/sources.list.d/: +total 36 +-rw-r--r-- 1 root root 76 Nov 3 10:28 azure-cli.list +-rw-r--r-- 1 root root 72 Nov 3 10:22 bazel.list +drwxr-xr-x 2 root root 4096 Nov 3 10:31 disabled +-rw-r--r-- 1 root root 113 Nov 3 10:13 docker-source.list +-rw-r--r-- 1 root root 367 Nov 3 10:28 github_git-lfs.list +-rw-r--r-- 1 root root 111 Nov 3 10:25 google-chrome-source.list +-rw-r--r-- 1 root root 64 Nov 3 10:14 google-cloud-sdk.list +-rw-r--r-- 1 root root 54 Nov 3 10:23 helm-stable-debian.list +-rw-r--r-- 1 root root 89 Nov 3 10:29 yarn-source.list + +/etc/apt/sources.list.d/disabled: +total 20 +-rw-r--r-- 1 root root 100 Nov 3 10:23 devel_kubic_libcontainers_stable.list +-rw-r--r-- 1 root root 103 Nov 3 10:27 git.list +-rw-r--r-- 1 root root 105 Nov 3 10:22 gradle.list +-rw-r--r-- 1 root root 118 Nov 3 10:13 pypy.list +-rw-r--r-- 1 root root 104 Nov 3 10:13 python.list +``` + +(cherry picked from commit 610eb3f8260ecbb161db5186a5e27417f3110a68) + +Related #2138081 +--- + .semaphore/semaphore-runner.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.semaphore/semaphore-runner.sh b/.semaphore/semaphore-runner.sh +index 98fd7b4411..b0d32bd136 100755 +--- a/.semaphore/semaphore-runner.sh ++++ b/.semaphore/semaphore-runner.sh +@@ -55,7 +55,7 @@ for phase in "${PHASES[@]}"; do + case "$phase" in + SETUP) + # remove semaphore repos, some of them don't work and cause error messages +- sudo rm -f /etc/apt/sources.list.d/* ++ sudo rm -rf /etc/apt/sources.list.d/* + + # enable backports for latest LXC + echo "deb http://archive.ubuntu.com/ubuntu $UBUNTU_RELEASE-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/backports.list diff --git a/SOURCES/0031-core-decrease-log-level-of-messages-about-use-of-Kil.patch b/SOURCES/0031-core-decrease-log-level-of-messages-about-use-of-Kil.patch deleted file mode 100644 index d536c44..0000000 --- a/SOURCES/0031-core-decrease-log-level-of-messages-about-use-of-Kil.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 16c4a3c3a826d03f60db83c8d6d809d59e6f38ad Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Tue, 22 Feb 2022 13:24:11 +0100 -Subject: [PATCH] core: decrease log level of messages about use of - KillMode=none - -RHEL-only - -Resolves: #2013213 ---- - src/core/load-fragment.c | 2 +- - src/core/unit.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c -index 92a52819e2..ad5a0912fc 100644 ---- a/src/core/load-fragment.c -+++ b/src/core/load-fragment.c -@@ -816,7 +816,7 @@ int config_parse_kill_mode( - } - - if (m == KILL_NONE) -- log_syntax(unit, LOG_WARNING, filename, line, 0, -+ log_syntax(unit, LOG_DEBUG, filename, line, 0, - "Unit configured to use KillMode=none. " - "This is unsafe, as it disables systemd's process lifecycle management for the service. " - "Please update your service to use a safer KillMode=, such as 'mixed' or 'control-group'. " -diff --git a/src/core/unit.c b/src/core/unit.c -index d2adb447b6..9cbed08987 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -5458,7 +5458,7 @@ int unit_log_leftover_process_start(pid_t pid, int sig, void *userdata) { - - /* During start we print a warning */ - -- log_unit_warning(userdata, -+ log_unit_debug(userdata, - "Found left-over process " PID_FMT " (%s) in control group while starting unit. Ignoring.\n" - "This usually indicates unclean termination of a previous run, or service implementation deficiencies.", - pid, strna(comm)); diff --git a/SOURCES/0031-kernel-install-90-loaderentry-do-not-override-an-exi.patch b/SOURCES/0031-kernel-install-90-loaderentry-do-not-override-an-exi.patch new file mode 100644 index 0000000..7715845 --- /dev/null +++ b/SOURCES/0031-kernel-install-90-loaderentry-do-not-override-an-exi.patch @@ -0,0 +1,29 @@ +From c440081c968c93d527d441f4d106e0acad9540eb Mon Sep 17 00:00:00 2001 +From: Antonio Alvarez Feijoo +Date: Mon, 7 Nov 2022 15:25:25 +0100 +Subject: [PATCH] kernel-install/90-loaderentry: do not override an existing + systemd.machine_id + +If the systemd.machine_id command line option is already set, do not override +it. + +(cherry picked from commit 802d9219aa19d759113dd6cd1e91b2bb661fe9ba) + +Related #2138081 +--- + src/kernel-install/90-loaderentry.install | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install +index ea75e1b0d8..41a05534b9 100755 +--- a/src/kernel-install/90-loaderentry.install ++++ b/src/kernel-install/90-loaderentry.install +@@ -85,7 +85,7 @@ BOOT_OPTIONS="${BOOT_OPTIONS% }" + # command line with the machine ID we use, so that the machine ID remains + # stable, even during factory reset, in the initrd (where the system's machine + # ID is not directly accessible yet), and if the root file system is volatile. +-if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ] && ! echo "$BOOT_OPTIONS" | grep -q "systemd.machine_id=$MACHINE_ID"; then ++if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ] && ! echo "$BOOT_OPTIONS" | grep -q "systemd.machine_id="; then + BOOT_OPTIONS="$BOOT_OPTIONS systemd.machine_id=$MACHINE_ID" + fi + diff --git a/SOURCES/0032-ci-replace-apt-key-with-signed-by.patch b/SOURCES/0032-ci-replace-apt-key-with-signed-by.patch deleted file mode 100644 index 8fc33a8..0000000 --- a/SOURCES/0032-ci-replace-apt-key-with-signed-by.patch +++ /dev/null @@ -1,34 +0,0 @@ -From be021c2328550a9d5b987cb206eda5df90b45acd Mon Sep 17 00:00:00 2001 -From: Evgeny Vereshchagin -Date: Sun, 26 Dec 2021 01:11:00 +0000 -Subject: [PATCH] ci: replace apt-key with signed-by - -to limit the scope of the key to apt.llvm.org only. - -This is mostly inspired by https://blog.cloudflare.com/dont-use-apt-key/ - -(cherry picked from commit bfa6bd1be098adc4710e1819b9cd34d65b3855da) - -Related: #2013213 ---- - .github/workflows/build_test.sh | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/.github/workflows/build_test.sh b/.github/workflows/build_test.sh -index 5b18784461..549e59b2c9 100755 ---- a/.github/workflows/build_test.sh -+++ b/.github/workflows/build_test.sh -@@ -80,9 +80,10 @@ if [[ "$COMPILER" == clang ]]; then - # llvm package if available in such cases to avoid that. - if ! apt show --quiet "llvm-$COMPILER_VERSION" &>/dev/null; then - # Latest LLVM stack deb packages provided by https://apt.llvm.org/ -- # Following snippet was borrowed from https://apt.llvm.org/llvm.sh -- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - -- add-apt-repository -y "deb http://apt.llvm.org/$RELEASE/ llvm-toolchain-$RELEASE-$COMPILER_VERSION main" -+ # Following snippet was partly borrowed from https://apt.llvm.org/llvm.sh -+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --yes --dearmor --output /usr/share/keyrings/apt-llvm-org.gpg -+ printf "deb [signed-by=/usr/share/keyrings/apt-llvm-org.gpg] http://apt.llvm.org/%s/ llvm-toolchain-%s-%s main\n" \ -+ "$RELEASE" "$RELEASE" "$COMPILER_VERSION" >/etc/apt/sources.list.d/llvm-toolchain.list - PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION") - fi - elif [[ "$COMPILER" == gcc ]]; then diff --git a/SOURCES/0032-kernel-install-skip-50-depmod-if-depmod-is-not-avail.patch b/SOURCES/0032-kernel-install-skip-50-depmod-if-depmod-is-not-avail.patch new file mode 100644 index 0000000..6847cc2 --- /dev/null +++ b/SOURCES/0032-kernel-install-skip-50-depmod-if-depmod-is-not-avail.patch @@ -0,0 +1,28 @@ +From d1abf107c5b4c661886001de996bf03587bb35c1 Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Mon, 7 Nov 2022 16:28:33 +0000 +Subject: [PATCH] kernel-install: skip 50-depmod if depmod is not available + +Images might be built without any kernel module, and without +installing depmod as it is not needed. Skip it. + +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023607 +(cherry picked from commit cda4d00dfcbcd075cef95341f8a466f0c4ee8e1d) + +Related #2138081 +--- + src/kernel-install/50-depmod.install | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install +index d4b991cfd6..43bd87c7ed 100755 +--- a/src/kernel-install/50-depmod.install ++++ b/src/kernel-install/50-depmod.install +@@ -26,6 +26,7 @@ KERNEL_VERSION="${2:?}" + case "$COMMAND" in + add) + [ -d "/lib/modules/$KERNEL_VERSION/kernel" ] || exit 0 ++ command -v depmod >/dev/null || exit 0 + [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+depmod -a $KERNEL_VERSION" + exec depmod -a "$KERNEL_VERSION" + ;; diff --git a/SOURCES/0033-ci-fix-clang-13-installation.patch b/SOURCES/0033-ci-fix-clang-13-installation.patch deleted file mode 100644 index 6540c05..0000000 --- a/SOURCES/0033-ci-fix-clang-13-installation.patch +++ /dev/null @@ -1,54 +0,0 @@ -From b9b1f92cdc74beb8487c87aa2b5c2806e100d1aa Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 22 Feb 2022 14:43:40 +0100 -Subject: [PATCH] ci: fix clang-13 installation - -For some reason Ubuntu Focal repositories now have `llvm-13` virtual -package which can't be installed, but successfully fools our check, -resulting in no clang/llvm being installed... - -``` -$ apt show llvm-13 -Package: llvm-13 -State: not a real package (virtual) -N: Can't select candidate version from package llvm-13 as it has no candidate -N: Can't select versions from package 'llvm-13' as it is purely virtual -N: No packages found - -$ apt install --dry-run llvm-13 -Reading package lists... Done -Building dependency tree -Reading state information... Done -Package llvm-13 is not available, but is referred to by another package. -This may mean that the package is missing, has been obsoleted, or -is only available from another source - -E: Package 'llvm-13' has no installation candidate -``` - -(cherry picked from commit b491d74064f9d5e17a71b38b014434237169a077) - -Related: #2013213 ---- - .github/workflows/build_test.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/build_test.sh b/.github/workflows/build_test.sh -index 549e59b2c9..5a173a18d5 100755 ---- a/.github/workflows/build_test.sh -+++ b/.github/workflows/build_test.sh -@@ -78,12 +78,12 @@ if [[ "$COMPILER" == clang ]]; then - # ATTOW llvm-11 got into focal-updates, which conflicts with llvm-11 - # provided by the apt.llvm.org repositories. Let's use the system - # llvm package if available in such cases to avoid that. -- if ! apt show --quiet "llvm-$COMPILER_VERSION" &>/dev/null; then -+ if ! apt install --dry-run "llvm-$COMPILER_VERSION" >/dev/null; then - # Latest LLVM stack deb packages provided by https://apt.llvm.org/ - # Following snippet was partly borrowed from https://apt.llvm.org/llvm.sh - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --yes --dearmor --output /usr/share/keyrings/apt-llvm-org.gpg - printf "deb [signed-by=/usr/share/keyrings/apt-llvm-org.gpg] http://apt.llvm.org/%s/ llvm-toolchain-%s-%s main\n" \ -- "$RELEASE" "$RELEASE" "$COMPILER_VERSION" >/etc/apt/sources.list.d/llvm-toolchain.list -+ "$RELEASE" "$RELEASE" "$COMPILER_VERSION" >/etc/apt/sources.list.d/llvm-toolchain.list - PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION") - fi - elif [[ "$COMPILER" == gcc ]]; then diff --git a/SOURCES/0033-man-add-note-that-network-generator-is-not-a-generat.patch b/SOURCES/0033-man-add-note-that-network-generator-is-not-a-generat.patch new file mode 100644 index 0000000..e0a1d28 --- /dev/null +++ b/SOURCES/0033-man-add-note-that-network-generator-is-not-a-generat.patch @@ -0,0 +1,38 @@ +From 04cdbacc26c7e38d3bd684235b51c79ab64b6026 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 8 Nov 2022 11:07:02 +0100 +Subject: [PATCH] man: add note that network-generator is not a generator + +Also fix indentation. + +(cherry picked from commit 2fa6574e835566c2aa5cbf4167ecee316f71bf98) + +Related #2138081 +--- + man/systemd-network-generator.service.xml | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/man/systemd-network-generator.service.xml b/man/systemd-network-generator.service.xml +index 6b7e2564d4..2ddeadfc54 100644 +--- a/man/systemd-network-generator.service.xml ++++ b/man/systemd-network-generator.service.xml +@@ -41,10 +41,17 @@ + + + Files are generated in /run/systemd/network/. ++ ++ Note: despite the name, this generator executes as a normal systemd service and is ++ not an implementation of the ++ systemd.generator7 ++ concept. + + +- Kernel command line options +- This tool understands the following options: ++ ++ Kernel command line options ++ ++ This tool understands the following options: + + + diff --git a/SOURCES/0034-test-check-systemd-RPM-macros.patch b/SOURCES/0034-test-check-systemd-RPM-macros.patch deleted file mode 100644 index fbab83d..0000000 --- a/SOURCES/0034-test-check-systemd-RPM-macros.patch +++ /dev/null @@ -1,240 +0,0 @@ -From 29cda567564d548cce5867c9d054ebb6cefcdca0 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 3 Mar 2022 20:30:43 +0100 -Subject: [PATCH] test: check systemd RPM macros - -Make sure our RPM macros work as intended. Based on the original PR -(#16464) by Mikhail Novosyolov. - -Co-authored-by: Mikhail Novosyolov -(cherry picked from commit 55c09511e13c6a57ffe64bef4a9d0a00f34d37d9) - -Related: #2017035 ---- - .github/workflows/unit_tests.sh | 1 + - .semaphore/semaphore-runner.sh | 2 +- - test/meson.build | 16 ++++ - test/test-rpm-macros.sh | 162 ++++++++++++++++++++++++++++++++ - 4 files changed, 180 insertions(+), 1 deletion(-) - create mode 100755 test/test-rpm-macros.sh - -diff --git a/.github/workflows/unit_tests.sh b/.github/workflows/unit_tests.sh -index 9c7beb6d19..f41b070e57 100755 ---- a/.github/workflows/unit_tests.sh -+++ b/.github/workflows/unit_tests.sh -@@ -20,6 +20,7 @@ ADDITIONAL_DEPS=( - perl - python3-libevdev - python3-pyparsing -+ rpm - zstd - ) - -diff --git a/.semaphore/semaphore-runner.sh b/.semaphore/semaphore-runner.sh -index d02b449e0e..6ccf271a82 100755 ---- a/.semaphore/semaphore-runner.sh -+++ b/.semaphore/semaphore-runner.sh -@@ -42,7 +42,7 @@ apt-get -q --allow-releaseinfo-change update - apt-get -y dist-upgrade - apt-get install -y eatmydata - # The following four are needed as long as these deps are not covered by Debian's own packaging --apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev -+apt-get install -y fdisk tree libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev rpm - apt-get purge --auto-remove -y unattended-upgrades - systemctl unmask systemd-networkd - systemctl enable systemd-networkd -diff --git a/test/meson.build b/test/meson.build -index 8de1043e17..04ae9ebc78 100644 ---- a/test/meson.build -+++ b/test/meson.build -@@ -163,6 +163,22 @@ endif - - ############################################################ - -+rpm = find_program('rpm', required : false) -+rpmspec = find_program('rpmspec', required : false) -+test_rpm_macros = find_program('test-rpm-macros.sh') -+ -+if rpm.found() and rpmspec.found() -+ if want_tests != 'false' -+ test('test-rpm-macros', -+ test_rpm_macros, -+ args : [project_build_root]) -+ endif -+else -+ message('Skipping test-rpm-macros since rpm and/or rpmspec are not available') -+endif -+ -+############################################################ -+ - if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family()) - udev_dmi_memory_id_test = find_program('udev-dmi-memory-id-test.sh') - -diff --git a/test/test-rpm-macros.sh b/test/test-rpm-macros.sh -new file mode 100755 -index 0000000000..5843b72346 ---- /dev/null -+++ b/test/test-rpm-macros.sh -@@ -0,0 +1,162 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+# This test makes some basic checks that RPM macros work correctly. -+# RPM is a simple C program available on different Linux distros, not only RPM-based ones, -+# and even BSD systems, so it must not be a problem to require it. -+# rpmspec utility is required (so this test will work with RPM 4 but won't work with RPM 5). -+set -eu -+ -+BUILD_DIR="${1:?Missing argument: build directory}" -+RPM_MACROS_FILE="${BUILD_DIR:?}/src/rpm/macros.systemd" -+ -+if ! command -v rpm >/dev/null || ! command -v rpmspec >/dev/null; then -+ echo >&2 "Missing necessary utilities (rpm, rpmspec), can't continue" -+ exit 1 -+fi -+ -+if [[ ! -f "${RPM_MACROS_FILE:?}" ]]; then -+ echo "RPM macros file not found in $RPM_MACROS_FILE!" -+ exit 1 -+fi -+ -+at_exit() { -+ if [[ -v WORK_DIR && -d "$WORK_DIR" ]]; then -+ rm -frv "$WORK_DIR" -+ fi -+} -+ -+trap at_exit EXIT -+ -+WORK_DIR="$(mktemp -d)" -+RPM_SPEC="$(mktemp "$WORK_DIR/systemd-test-rpm-macros-XXX.spec")" -+TEMP_LOG="$(mktemp "$WORK_DIR/out-XXX.log")" -+ -+die() { -+ echo >&2 "${1:?}" -+ exit 1 -+} -+ -+mk_mini_spec() { -+ cat >"${RPM_SPEC:?}" <>"$RPM_SPEC" -+: >"$TEMP_LOG" -+rpmspec --parse "$RPM_SPEC" | tee "$TEMP_LOG" -+for i in post preun postun; do -+ echo "== Requires($i) ==" -+ grep "^Requires($i): systemd$" "$TEMP_LOG" -+done -+ -+echo "=== Test %systemd_ordering ===" -+mk_mini_spec -+echo "%systemd_ordering" >>"$RPM_SPEC" -+: >"$TEMP_LOG" -+rpmspec --parse "$RPM_SPEC" | tee "$TEMP_LOG" -+for i in post preun postun; do -+ echo "== OrderWithRequires($i) ==" -+ grep "^OrderWithRequires($i): systemd$" "$TEMP_LOG" -+done -+ -+echo "=== Test macros requiring an argument without specifying such argument ===" -+for i in \ -+ systemd_post \ -+ systemd_preun \ -+ systemd_postun \ -+ systemd_postun_with_restart \ -+ systemd_user_preun \ -+ systemd_user_postun \ -+ systemd_user_postun_with_restart \ -+ tmpfiles_create \ -+ tmpfiles_create_package \ -+ sysusers_create \ -+ sysusers_create_package -+do -+ echo "== Macro: $i ==" -+ mk_mini_spec -+ echo "%${i}" >>"$RPM_SPEC" -+ if rpmspec --parse "$RPM_SPEC"; then -+ die "Unexpected pass with macro $i (no arguments)" -+ fi -+done -+ -+echo "=== Test macros requiring two arguments ===" -+for i in \ -+ tmpfiles_create_package \ -+ sysusers_create_package -+do -+ echo "== Macro: $i ==" -+ # Test with an incorrect number of arguments (0, 1, 3) -+ for args in "" "arg1" "arg1 arg2 arg3"; do -+ mk_mini_spec -+ echo "%${i} $args" >>"$RPM_SPEC" -+ if rpmspec --parse "$RPM_SPEC"; then -+ die "Unexpected pass with macro $i (arguments: $args)" -+ fi -+ done -+ -+ # Test with the correct number of arguments (2) -+ mk_mini_spec -+ echo "%${i} arg1 arg2" >>"$RPM_SPEC" -+ if ! rpmspec --parse "$RPM_SPEC"; then -+ die "Unexpected fail with macro $i (arguments: $args)" -+ fi -+done -+ -+ -+# Test that: -+# - *_create_package macros do work correctly -+# - shell syntax is correct (https://github.com/systemd/systemd/commit/93406fd37) -+# - RPM macros, loaded from macros.in, are actually expanded -+echo "=== Test %*_create_package macros ===" -+for i in sysusers tmpfiles; do -+ echo "== Macro: ${i}_create_package ==" -+ -+ PKG_DATA_FILE="$(mktemp "$WORK_DIR/pkg-data-XXX")" -+ EXP_OUT="$(mktemp "$WORK_DIR/exp-out-XXX.log")" -+ CONF_DIR="$(pkg-config --variable="${i}dir" systemd)" -+ EXTRA_ARGS=() -+ -+ if [[ "$i" == tmpfiles ]]; then -+ EXTRA_ARGS+=("--create") -+ fi -+ -+ echo "TEST_DATA" >"$PKG_DATA_FILE" -+ mk_mini_spec -+ echo "%${i}_create_package TEST_NAME ${PKG_DATA_FILE}" >>"$RPM_SPEC" -+ -+ cat >"$EXP_OUT" <"$TEMP_LOG" -+ rpmspec --parse "$RPM_SPEC" | tee "$TEMP_LOG" -+ diff "$EXP_OUT" <(grep -A1 -B1 '^TEST_DATA$' "$TEMP_LOG") -+ -+ rm -f "$PKG_DATA_FILE" -+done diff --git a/SOURCES/0034-test-fstab-generator-adjust-PATH-for-fsck.patch b/SOURCES/0034-test-fstab-generator-adjust-PATH-for-fsck.patch new file mode 100644 index 0000000..1cd1c0c --- /dev/null +++ b/SOURCES/0034-test-fstab-generator-adjust-PATH-for-fsck.patch @@ -0,0 +1,64 @@ +From 054da791c98fba7e11079e94c9b9fe0b1ca4e8d4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= +Date: Fri, 4 Nov 2022 15:48:50 +0100 +Subject: [PATCH] test: fstab-generator: adjust PATH for fsck + +fsck(8) is located in /usr/sib/ on Debian sid: + + stdout: + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-01-dev-nfs.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-02-dhcp.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-03-dhcp6.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-04-nfs.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-05-nfs4.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-06-ipv4.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-07-ipv6.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-08-implicit-nfs.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-09-cifs.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-10-iscsi.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-11-live.input + *** Running /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-12-dev-sdx.input + --- /dev/fd/63 2022-11-04 15:39:13.131532174 +0100 + +++ /dev/fd/62 2022-11-04 15:39:13.131532174 +0100 + @@ -6,3 +6,4 @@ + initrd-usr-fs.target.requires + initrd-usr-fs.target.requires/sysroot.mount + sysroot.mount + +systemd-fsck-root.service + **** Unexpected output for /home/christian/Coding/workspaces/systemd/test/testdata/test-fstab-generator/test-12-dev-sdx.input + stderr: + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on NFS was requested. + Skipping root directory handling, as root on CIFS was requested. + Skipping root directory handling, as root on iSCSI was requested. + Skipping root directory handling, as root on live image was requested. + Found entry what=/dev/sdx1 where=/sysroot type=n/a opts=ro + Checking was requested for /dev/sdx1, but the fsck command does not exist. + +(cherry picked from commit a45efc9e4b574a85176610496f2ac7ae769364bb) + +Related #2138081 +--- + test/test-fstab-generator.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/test/test-fstab-generator.sh b/test/test-fstab-generator.sh +index 0c977645e3..7c060dfac7 100755 +--- a/test/test-fstab-generator.sh ++++ b/test/test-fstab-generator.sh +@@ -14,6 +14,9 @@ fi + + src="$(dirname "$0")/testdata/test-fstab-generator" + ++# fsck(8) is located in /usr/sbin on Debian ++PATH=$PATH:/usr/sbin ++ + for f in "$src"/test-*.input; do + echo "*** Running $f" + diff --git a/SOURCES/0035-loop-util-open-lock-fd-read-only.patch b/SOURCES/0035-loop-util-open-lock-fd-read-only.patch new file mode 100644 index 0000000..3fc3fe3 --- /dev/null +++ b/SOURCES/0035-loop-util-open-lock-fd-read-only.patch @@ -0,0 +1,30 @@ +From ba5d26d85d0c4250b10a46a5c9cd3a3e1f0ce43b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= +Date: Fri, 4 Nov 2022 19:36:31 +0100 +Subject: [PATCH] loop-util: open lock fd read-only + +flock(2) works with file descriptors opened with O_RDONLY. + +This affects SELinux systems where access to block devices is quite +restricted to avoid bypasses on filesystem objects. + +(cherry picked from commit 3e6b7d2626de9c0faf8b34b2629e8d6d8fa85a7d) + +Related #2138081 +--- + src/shared/loop-util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c +index 731ce29112..fb7e80b1b5 100644 +--- a/src/shared/loop-util.c ++++ b/src/shared/loop-util.c +@@ -77,7 +77,7 @@ static int open_lock_fd(int primary_fd, int operation) { + assert(primary_fd >= 0); + assert(IN_SET(operation & ~LOCK_NB, LOCK_SH, LOCK_EX)); + +- lock_fd = fd_reopen(primary_fd, O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); ++ lock_fd = fd_reopen(primary_fd, O_RDONLY|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + if (lock_fd < 0) + return lock_fd; + diff --git a/SOURCES/0035-test-do-not-assume-x86-64-arch-in-TEST-58-REPART.patch b/SOURCES/0035-test-do-not-assume-x86-64-arch-in-TEST-58-REPART.patch deleted file mode 100644 index 86068c7..0000000 --- a/SOURCES/0035-test-do-not-assume-x86-64-arch-in-TEST-58-REPART.patch +++ /dev/null @@ -1,161 +0,0 @@ -From 7cc55d22394b8583b637e7e4b8baa00eb8f0dc49 Mon Sep 17 00:00:00 2001 -From: Luca Boccassi -Date: Wed, 12 Jan 2022 22:38:22 +0000 -Subject: [PATCH] test: do not assume x86-64 arch in TEST-58-REPART - -(cherry picked from commit 8e65d93e85f06e3f28b0b7a6e33b041ddf119917) - -Related: #2017035 ---- - test/units/testsuite-58.sh | 76 ++++++++++++++++++++++++++++++++------ - 1 file changed, 65 insertions(+), 11 deletions(-) - -diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh -index 78c25051a2..4b3c984c84 100755 ---- a/test/units/testsuite-58.sh -+++ b/test/units/testsuite-58.sh -@@ -11,6 +11,60 @@ fi - export SYSTEMD_LOG_LEVEL=debug - export PAGER=cat - -+machine="$(uname -m)" -+if [ "${machine}" = "x86_64" ]; then -+ root_guid=4f68bce3-e8cd-4db1-96e7-fbcaf984b709 -+ root_uuid=60F33797-1D71-4DCB-AA6F-20564F036CD0 -+ usr_guid=8484680c-9521-48c6-9c11-b0720656f69e -+ usr_uuid=7E3369DD-D653-4513-ADF5-B993A9F20C16 -+ architecture="x86-64" -+elif [ "${machine}" = "i386" ] || [ "${machine}" = "i686" ] || [ "${machine}" = "x86" ]; then -+ root_guid=44479540-f297-41b2-9af7-d131d5f0458a -+ root_uuid=02b4253f-29a4-404e-8972-1669d3b03c87 -+ usr_guid=75250d76-8cc6-458e-bd66-bd47cc81a812 -+ usr_uuid=7b42ffb0-b0e1-4395-b20b-c78f4a571648 -+ architecture="x86" -+elif [ "${machine}" = "aarch64" ] || [ "${machine}" = "aarch64_be" ] || [ "${machine}" = "armv8b" ] || [ "${machine}" = "armv8l" ]; then -+ root_guid=b921b045-1df0-41c3-af44-4c6f280d3fae -+ root_uuid=055d0227-53a6-4033-85c3-9a5973eff483 -+ usr_guid=b0e01050-ee5f-4390-949a-9101b17104e9 -+ usr_uuid=fce3c75e-d6a4-44c0-87f0-4c105183fb1f -+ architecture="arm64" -+elif [ "${machine}" = "arm" ]; then -+ root_guid=69dad710-2ce4-4e3c-b16c-21a1d49abed3 -+ root_uuid=567da89e-8de2-4499-8d10-18f212dff034 -+ usr_guid=7d0359a3-02b3-4f0a-865c-654403e70625 -+ usr_uuid=71e93dc2-5073-42cb-8a84-a354e64d8966 -+ architecture="arm" -+elif [ "${machine}" = "loongarch64" ]; then -+ root_guid=77055800-792c-4f94-b39a-98c91b762bb6 -+ root_uuid=d8efc2d2-0133-41e4-bdcb-3b9f4cfddde8 -+ usr_guid=e611c702-575c-4cbe-9a46-434fa0bf7e3f -+ usr_uuid=031ffa75-00bb-49b6-a70d-911d2d82a5b7 -+ architecture="loongarch64" -+elif [ "${machine}" = "ia64" ]; then -+ root_guid=993d8d3d-f80e-4225-855a-9daf8ed7ea97 -+ root_uuid=dcf33449-0896-4ea9-bc24-7d58aeef522d -+ usr_guid=4301d2a6-4e3b-4b2a-bb94-9e0b2c4225ea -+ usr_uuid=bc2bcce7-80d6-449a-85cc-637424ce5241 -+ architecture="ia64" -+elif [ "${machine}" = "s390x" ]; then -+ root_guid=5eead9a9-fe09-4a1e-a1d7-520d00531306 -+ root_uuid=7ebe0c85-e27e-48ec-b164-f4807606232e -+ usr_guid=8a4f5770-50aa-4ed3-874a-99b710db6fea -+ usr_uuid=51171d30-35cf-4a49-b8b5-9478b9b796a5 -+ architecture="s390x" -+elif [ "${machine}" = "ppc64le" ]; then -+ root_guid=c31c45e6-3f39-412e-80fb-4809c4980599 -+ root_uuid=061e67a1-092f-482f-8150-b525d50d6654 -+ usr_guid=15bb03af-77e7-4d4a-b12b-c0d084f7491c -+ usr_uuid=c0d0823b-8040-4c7c-a629-026248e297fb -+ architecture="ppc64-le" -+else -+ echo "Unexpected uname -m: ${machine} in testsuite-58.sh, please fix me" -+ exit 1 -+fi -+ - rm -f /var/tmp/testsuite-58.img /var/tmp/testsuite-58.2.img /tmp/testsuite-58.dump - mkdir -p /tmp/testsuite-58-defs/ - -@@ -25,7 +79,7 @@ EOF - - cat >/tmp/testsuite-58-defs/usr.conf </tmp/testsuite-58-defs/root.conf </tmp/testsuite-58-defs/usr.conf </tmp/testsuite-58-defs/root.conf </tmp/testsuite-58.3-defs/root.conf </tmp/testsuite-58-issue-21817-defs/test.conf < +Date: Mon, 7 Nov 2022 11:55:29 +0100 +Subject: [PATCH] test: don't ignore non-existent paths in inst_recursive() + +The process substitution in the while loop hides errors raised by the +find utility, which might (and did), in turn, hide errors in test setup. + +(cherry picked from commit eb5d7730e1b3b1bddecb80be37e5a4c938183f61) + +Related #2138081 +--- + test/test-functions | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/test/test-functions b/test/test-functions +index 16d9da637b..80ce383e64 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -2773,6 +2773,10 @@ inst_recursive() { + local p item + + for p in "$@"; do ++ # Make sure the source exists, as the process substitution below ++ # suppresses errors ++ stat "$p" >/dev/null || return 1 ++ + while read -r item; do + if [[ -d "$item" ]]; then + inst_dir "$item" diff --git a/SOURCES/0036-tests-add-repart-tests-for-block-devices-with-1024-2.patch b/SOURCES/0036-tests-add-repart-tests-for-block-devices-with-1024-2.patch deleted file mode 100644 index dc76052..0000000 --- a/SOURCES/0036-tests-add-repart-tests-for-block-devices-with-1024-2.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 9a98a3b83e9e974d8d1cdc31e2286a862cc548be Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 7 Feb 2022 14:35:40 +0100 -Subject: [PATCH] tests: add repart tests for block devices with 1024, 2048, - 4096 byte sector sizes - -let's make sure repart works with 4K drives and exotic sector sizes. - -(cherry picked from commit 2cd341afb96486bd4afcdba23f02a27631c5b8db) - -Related: #2017035 ---- - test/units/testsuite-58.sh | 42 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 42 insertions(+) - -diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh -index 4b3c984c84..7aed965fb4 100755 ---- a/test/units/testsuite-58.sh -+++ b/test/units/testsuite-58.sh -@@ -189,6 +189,48 @@ grep -qF 'p2 : start= 104448, size= 100319,' /tmp/testsuite-58-issue-2 - rm /tmp/testsuite-58-issue-21817.img /tmp/testsuite-58-issue-21817.dump - rm -r /tmp/testsuite-58-issue-21817-defs/ - -+testsector() -+{ -+ echo "Running sector test with sector size $1..." -+ -+ mkdir -p /tmp/testsuite-58-sector -+ cat > /tmp/testsuite-58-sector/a.conf < /tmp/testsuite-58-sector/b.conf < /tmp/testsuite-58-sector/c.conf <= 512 and <= PAGE_SIZE, and -+# must be powers of 2. Which leaves exactly four different ones to test on -+# typical hardware -+testsector 512 -+testsector 1024 -+testsector 2048 -+testsector 4096 -+ - echo OK >/testok - - exit 0 diff --git a/SOURCES/0037-test-accept-both-unpadded-and-padded-partition-sizes.patch b/SOURCES/0037-test-accept-both-unpadded-and-padded-partition-sizes.patch deleted file mode 100644 index a810f33..0000000 --- a/SOURCES/0037-test-accept-both-unpadded-and-padded-partition-sizes.patch +++ /dev/null @@ -1,31 +0,0 @@ -From c16ff9acad53e741ee121a21bd2ba5dfce1f459e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 25 Feb 2022 15:09:07 +0100 -Subject: [PATCH] test: accept both unpadded and padded partition sizes - -Since util-linux/util-linux@921c7da55ec78350e4067b3fd6b7de6f299106ee -libfdisk aligns the last partition (on GPT) for optimal I/O. Let's -account for that. - -Fixes: #22606 -(cherry picked from commit d490188b8f6da658d8086dd53b7db95735e5cca1) - -Related: #2017035 ---- - test/units/testsuite-58.sh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh -index 7aed965fb4..f1b690a71f 100755 ---- a/test/units/testsuite-58.sh -+++ b/test/units/testsuite-58.sh -@@ -184,7 +184,8 @@ sfdisk --dump "$LOOP" | tee /tmp/testsuite-58-issue-21817.dump - losetup -d "$LOOP" - - grep -qiF "p1 : start= 2048, size= 102400, type=${root_guid}," /tmp/testsuite-58-issue-21817.dump --grep -qF 'p2 : start= 104448, size= 100319,' /tmp/testsuite-58-issue-21817.dump -+# Accept both unpadded (pre-v2.38 util-linux) and padded (v2.38+ util-linux) sizes -+grep -qE "p2 : start= 104448, size= (100319| 98304)," /tmp/testsuite-58-issue-21817.dump - - rm /tmp/testsuite-58-issue-21817.img /tmp/testsuite-58-issue-21817.dump - rm -r /tmp/testsuite-58-issue-21817-defs/ diff --git a/SOURCES/0037-test-fix-locale-installation-when-locale-gen-is-used.patch b/SOURCES/0037-test-fix-locale-installation-when-locale-gen-is-used.patch new file mode 100644 index 0000000..be0488e --- /dev/null +++ b/SOURCES/0037-test-fix-locale-installation-when-locale-gen-is-used.patch @@ -0,0 +1,46 @@ +From ea8b80cdc0dfd0ad92301a0e421df4d3110fe09c Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 7 Nov 2022 11:57:59 +0100 +Subject: [PATCH] test: fix locale installation when locale-gen is used + +locale-gen might merge all compiled locales into a simple archive, so we +need to install it as well if necessary. + +(cherry picked from commit 0c416ea01bc14adff10f4fc5415a36bd2d48f604) + +Related #2138081 +--- + test/test-functions | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/test/test-functions b/test/test-functions +index 80ce383e64..45ca472916 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -1988,14 +1988,19 @@ install_locales() { + inst /usr/share/i18n/SUPPORTED || : + inst_recursive /usr/share/i18n/charmaps + inst_recursive /usr/share/i18n/locales +- inst_recursive /usr/share/locale/en +- inst_recursive /usr/share/locale/en_* ++ inst_recursive /usr/share/locale/en* ++ inst_recursive /usr/share/locale/de* ++ image_install /usr/share/locale/locale.alias ++ # locale-gen might either generate each locale separately or merge them ++ # into a single archive ++ if ! (inst_recursive /usr/lib/locale/C.*8 /usr/lib/locale/en_*8 || ++ image_install /usr/lib/locale/locale-archive); then ++ dfatal "Failed to install required locales" ++ exit 1 ++ fi ++ else ++ inst_recursive /usr/lib/locale/C.*8 /usr/lib/locale/en_*8 + fi +- +- inst_recursive /usr/lib/locale/C.utf8 +- inst_recursive /usr/lib/locale/C.UTF-8 +- inst_recursive /usr/lib/locale/en_*.utf8 +- inst_recursive /usr/lib/locale/en_*.UTF-8 + } + + # shellcheck disable=SC2120 diff --git a/SOURCES/0038-test-fix-keymaps-installation-on-Arch.patch b/SOURCES/0038-test-fix-keymaps-installation-on-Arch.patch new file mode 100644 index 0000000..4832575 --- /dev/null +++ b/SOURCES/0038-test-fix-keymaps-installation-on-Arch.patch @@ -0,0 +1,71 @@ +From bec9d65390249d4e88f5095e751283645a2a4c08 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 7 Nov 2022 12:07:27 +0100 +Subject: [PATCH] test: fix keymaps installation on Arch + +Where the keymaps live under /usr/share/kbd/keymaps/. + +(cherry picked from commit 1edad89399e7cbee230878589ac618103c157ec7) + +Related #2138081 +--- + test/test-functions | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +diff --git a/test/test-functions b/test/test-functions +index 45ca472916..194cd682bb 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -2007,7 +2007,8 @@ install_locales() { + install_keymaps() { + local i p + local -a prefix=( +- "/usr" ++ "/usr/lib" ++ "/usr/share" + ) + + dinfo "Install console keymaps" +@@ -2016,7 +2017,7 @@ install_keymaps() { + && [[ "$(meson configure "${BUILD_DIR:?}" | grep 'split-usr' | awk '{ print $2 }')" == "true" ]] \ + || [[ ! -L /lib ]]; then + prefix+=( +- "" ++ "/lib" + ) + fi + +@@ -2025,12 +2026,12 @@ install_keymaps() { + # The first three paths may be deprecated. + # It seems now the last three paths are used by many distributions. + for i in \ +- "$p"/lib/kbd/keymaps/include/* \ +- "$p"/lib/kbd/keymaps/i386/include/* \ +- "$p"/lib/kbd/keymaps/i386/qwerty/us.* \ +- "$p"/lib/kbd/keymaps/legacy/include/* \ +- "$p"/lib/kbd/keymaps/legacy/i386/qwerty/us.* \ +- "$p"/lib/kbd/keymaps/xkb/us*; do ++ "$p"/kbd/keymaps/include/* \ ++ "$p"/kbd/keymaps/i386/include/* \ ++ "$p"/kbd/keymaps/i386/qwerty/us.* \ ++ "$p"/kbd/keymaps/legacy/include/* \ ++ "$p"/kbd/keymaps/legacy/i386/qwerty/us.* \ ++ "$p"/kbd/keymaps/xkb/us*; do + [[ -f "$i" ]] || continue + inst "$i" + done +@@ -2039,10 +2040,10 @@ install_keymaps() { + # When it takes any argument, then install more keymaps. + for p in "${prefix[@]}"; do + for i in \ +- "$p"/lib/kbd/keymaps/include/* \ +- "$p"/lib/kbd/keymaps/i386/*/* \ +- "$p"/lib/kbd/keymaps/legacy/i386/*/* \ +- "$p"/lib/kbd/keymaps/xkb/*; do ++ "$p"/kbd/keymaps/include/* \ ++ "$p"/kbd/keymaps/i386/*/* \ ++ "$p"/kbd/keymaps/legacy/i386/*/* \ ++ "$p"/kbd/keymaps/xkb/*; do + [[ -f "$i" ]] || continue + inst "$i" + done diff --git a/SOURCES/0038-test-lvm-2.03.15-dropped-the-static-autoactivation.patch b/SOURCES/0038-test-lvm-2.03.15-dropped-the-static-autoactivation.patch deleted file mode 100644 index fcdd5e9..0000000 --- a/SOURCES/0038-test-lvm-2.03.15-dropped-the-static-autoactivation.patch +++ /dev/null @@ -1,41 +0,0 @@ -From fcaf368341c85285017f77333543656e1382975e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 9 Feb 2022 22:35:03 +0100 -Subject: [PATCH] test: lvm 2.03.15 dropped the static autoactivation - -so install the respective generator only if we're running with older -lvm versions. - -See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=ee8fb0310c53ed003a43b324c99cdfd891dd1a7c -(cherry picked from commit d10d562bd4b9f93130fb2b23f2b0d0d4126ea7d4) - -Related: #2017035 ---- - test/test-functions | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/test/test-functions b/test/test-functions -index 4827b6bedf..dcc893733c 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -973,16 +973,19 @@ install_lvm() { - image_install lvm - image_install "${ROOTLIBDIR:?}"/system/lvm2-lvmpolld.{service,socket} - image_install "${ROOTLIBDIR:?}"/system/{blk-availability,lvm2-monitor}.service -- image_install "${ROOTLIBDIR:?}"/system-generators/lvm2-activation-generator - image_install -o "/lib/tmpfiles.d/lvm2.conf" - if get_bool "$LOOKS_LIKE_DEBIAN"; then - inst_rules 56-lvm.rules 69-lvm-metad.rules - else - # Support the new udev autoactivation introduced in lvm 2.03.14 - # https://sourceware.org/git/?p=lvm2.git;a=commit;h=67722b312390cdab29c076c912e14bd739c5c0f6 -+ # Static autoactivation (via lvm2-activation-generator) was dropped -+ # in lvm 2.03.15 -+ # https://sourceware.org/git/?p=lvm2.git;a=commit;h=ee8fb0310c53ed003a43b324c99cdfd891dd1a7c - if [[ -f /lib/udev/rules.d/69-dm-lvm.rules ]]; then - inst_rules 11-dm-lvm.rules 69-dm-lvm.rules - else -+ image_install "${ROOTLIBDIR:?}"/system-generators/lvm2-activation-generator - image_install "${ROOTLIBDIR:?}"/system/lvm2-pvscan@.service - inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules - fi diff --git a/SOURCES/0039-test-accept-GC-ed-units-in-newer-LVM.patch b/SOURCES/0039-test-accept-GC-ed-units-in-newer-LVM.patch deleted file mode 100644 index 3926a40..0000000 --- a/SOURCES/0039-test-accept-GC-ed-units-in-newer-LVM.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 494045e03c7e1b81ac4dcea7d4bf776e2bc50c77 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 10 Feb 2022 12:29:53 +0100 -Subject: [PATCH] test: accept GC'ed units in newer LVM - -Since lvm 2.03.15 the transient units are started without `-r`, thus -disappearing once they finish and breaking the test (which expects them -to remain loaded after finishing). Let's accept `LoadState=not-found` as -a valid result as well to fix this. - -Follow-up to: d10d562bd4b9f93130fb2b23f2b0d0d4126ea7d4 -See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=fbd8b0cf43dc67f51f86f060dce748f446985855 - -(cherry picked from commit b034f02c628057c30a2136289a1b388a6fb9a737) - -Related: #2017035 ---- - test/units/testsuite-64.sh | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh -index f75382d90a..dc8b263b10 100755 ---- a/test/units/testsuite-64.sh -+++ b/test/units/testsuite-64.sh -@@ -96,6 +96,14 @@ helper_wait_for_lvm_activate() { - if [[ "$(systemctl show -P SubState "$lvm_activate_svc")" == exited ]]; then - return 0 - fi -+ else -+ # Since lvm 2.03.15 the lvm-activate transient unit no longer remains -+ # after finishing, so we have to treat non-existent units as a success -+ # as well -+ # See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=fbd8b0cf43dc67f51f86f060dce748f446985855 -+ if [[ "$(systemctl show -P LoadState "$lvm_activate_svc")" == not-found ]]; then -+ return 0 -+ fi - fi - - sleep .5 diff --git a/SOURCES/0039-test-compile-test-utmp.c-only-if-UTMP-is-enabled.patch b/SOURCES/0039-test-compile-test-utmp.c-only-if-UTMP-is-enabled.patch new file mode 100644 index 0000000..db6f229 --- /dev/null +++ b/SOURCES/0039-test-compile-test-utmp.c-only-if-UTMP-is-enabled.patch @@ -0,0 +1,43 @@ +From d63a1edb6bef959e8d6a481464a809badcc3a2eb Mon Sep 17 00:00:00 2001 +From: Torsten Hilbrich +Date: Mon, 7 Nov 2022 08:38:58 +0100 +Subject: [PATCH] test: compile test-utmp.c only if UTMP is enabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When compiling with -D utmp=false the compilation fails with: + +../../git/systemd/src/test/test-utmp.c: In function ‘test_dump_run_utmp’: +../../git/systemd/src/test/test-utmp.c:21:9: error: cleanup argument not a function + 21 | _unused_ _cleanup_(utxent_cleanup) bool utmpx = false; + | ^~~~~~~~ +../../git/systemd/src/test/test-utmp.c:23:17: error: implicit declaration of function ‘utxent_start’ [-Werror=implicit-function-declaration] + 23 | utmpx = utxent_start(); + | ^~~~~~~~~~~~ + +any many other errors + +Add a conditional to compile test-utmp.c only if ENABLE_UTMP is true. + +(cherry picked from commit 41cac2a8b98fc5faebe942c697b17e109822342d) + +Related: #2138081 +--- + src/test/meson.build | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/test/meson.build b/src/test/meson.build +index 86fc1d4fc0..2a4dfe26db 100644 +--- a/src/test/meson.build ++++ b/src/test/meson.build +@@ -622,7 +622,8 @@ tests += [ + + [files('test-journal-importer.c')], + +- [files('test-utmp.c')], ++ [files('test-utmp.c'), ++ [], [], [], 'ENABLE_UTMP'], + + [files('test-udev.c'), + [libudevd_core, diff --git a/SOURCES/0040-Create-CNAME.patch b/SOURCES/0040-Create-CNAME.patch new file mode 100644 index 0000000..aa2780d --- /dev/null +++ b/SOURCES/0040-Create-CNAME.patch @@ -0,0 +1,19 @@ +From d9328ee5e53d1901af9396ae3e0b2dd05f731781 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 14 Nov 2022 09:25:37 +0100 +Subject: [PATCH] Create CNAME + +Related: #2138081 +--- + docs/CNAME | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 docs/CNAME + +diff --git a/docs/CNAME b/docs/CNAME +new file mode 100644 +index 0000000000..cdcf4d9a52 +--- /dev/null ++++ b/docs/CNAME +@@ -0,0 +1 @@ ++systemd.io +\ No newline at end of file diff --git a/SOURCES/0040-shared-Add-more-dlopen-tests.patch b/SOURCES/0040-shared-Add-more-dlopen-tests.patch deleted file mode 100644 index 6113824..0000000 --- a/SOURCES/0040-shared-Add-more-dlopen-tests.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 3ed5b365c5134cb18da8aed397c7c4551af25715 Mon Sep 17 00:00:00 2001 -From: Daan De Meyer -Date: Tue, 1 Mar 2022 17:04:13 +0000 -Subject: [PATCH] shared: Add more dlopen() tests - -Add dlopen_dw(), dlopen_elf() and dlopen_pcre2() to the dlopen test. -To enable adding dlopen_pcre2(), we move pcre2-dlopen.h/c from -src/journal to src/shared. - -(cherry picked from commit ee48779e05831a0ec5e1ba5e7ed5fe92aaca1d9e) - -Related: #2017035 ---- - src/journal/meson.build | 2 -- - src/shared/elf-util.c | 4 ++-- - src/shared/elf-util.h | 3 +++ - src/shared/meson.build | 2 ++ - src/{journal => shared}/pcre2-dlopen.c | 0 - src/{journal => shared}/pcre2-dlopen.h | 0 - src/test/test-dlopen-so.c | 11 +++++++++++ - 7 files changed, 18 insertions(+), 4 deletions(-) - rename src/{journal => shared}/pcre2-dlopen.c (100%) - rename src/{journal => shared}/pcre2-dlopen.h (100%) - -diff --git a/src/journal/meson.build b/src/journal/meson.build -index eb66bfd584..270592f2ac 100644 ---- a/src/journal/meson.build -+++ b/src/journal/meson.build -@@ -49,8 +49,6 @@ systemd_cat_sources = files('cat.c') - - journalctl_sources = files(''' - journalctl.c -- pcre2-dlopen.c -- pcre2-dlopen.h - '''.split()) - - if install_sysconfdir_samples -diff --git a/src/shared/elf-util.c b/src/shared/elf-util.c -index 4d93e7eaba..6d9fcfbbf2 100644 ---- a/src/shared/elf-util.c -+++ b/src/shared/elf-util.c -@@ -80,7 +80,7 @@ unsigned int (*sym_elf_version)(unsigned int); - GElf_Phdr *(*sym_gelf_getphdr)(Elf *, int, GElf_Phdr *); - size_t (*sym_gelf_getnote)(Elf_Data *, size_t, GElf_Nhdr *, size_t *, size_t *); - --static int dlopen_dw(void) { -+int dlopen_dw(void) { - int r; - - r = dlopen_many_sym_or_warn( -@@ -123,7 +123,7 @@ static int dlopen_dw(void) { - return 1; - } - --static int dlopen_elf(void) { -+int dlopen_elf(void) { - int r; - - r = dlopen_many_sym_or_warn( -diff --git a/src/shared/elf-util.h b/src/shared/elf-util.h -index cf3d9be128..b28e64cea6 100644 ---- a/src/shared/elf-util.h -+++ b/src/shared/elf-util.h -@@ -4,6 +4,9 @@ - #include "json.h" - - #if HAVE_ELFUTILS -+int dlopen_dw(void); -+int dlopen_elf(void); -+ - /* Parse an ELF object in a forked process, so that errors while iterating over - * untrusted and potentially malicious data do not propagate to the main caller's process. - * If fork_disable_dump, the child process will not dump core if it crashes. */ -diff --git a/src/shared/meson.build b/src/shared/meson.build -index 5dc58a863d..006310a917 100644 ---- a/src/shared/meson.build -+++ b/src/shared/meson.build -@@ -241,6 +241,8 @@ shared_sources = files(''' - parse-argument.h - parse-socket-bind-item.c - parse-socket-bind-item.h -+ pcre2-dlopen.c -+ pcre2-dlopen.h - pe-header.h - pkcs11-util.c - pkcs11-util.h -diff --git a/src/journal/pcre2-dlopen.c b/src/shared/pcre2-dlopen.c -similarity index 100% -rename from src/journal/pcre2-dlopen.c -rename to src/shared/pcre2-dlopen.c -diff --git a/src/journal/pcre2-dlopen.h b/src/shared/pcre2-dlopen.h -similarity index 100% -rename from src/journal/pcre2-dlopen.h -rename to src/shared/pcre2-dlopen.h -diff --git a/src/test/test-dlopen-so.c b/src/test/test-dlopen-so.c -index ea2ef31b1f..002f666ed8 100644 ---- a/src/test/test-dlopen-so.c -+++ b/src/test/test-dlopen-so.c -@@ -5,10 +5,12 @@ - - #include "bpf-dlopen.h" - #include "cryptsetup-util.h" -+#include "elf-util.h" - #include "idn-util.h" - #include "libfido2-util.h" - #include "macro.h" - #include "main-func.h" -+#include "pcre2-dlopen.h" - #include "pwquality-util.h" - #include "qrcode-util.h" - #include "tests.h" -@@ -49,6 +51,15 @@ static int run(int argc, char **argv) { - assert_se(dlopen_bpf() >= 0); - #endif - -+#if HAVE_ELFUTILS -+ assert_se(dlopen_dw() >= 0); -+ assert_se(dlopen_elf() >= 0); -+#endif -+ -+#if HAVE_PCRE2 -+ assert_se(dlopen_pcre2() >= 0); -+#endif -+ - return 0; - } - diff --git a/SOURCES/0041-systemctl-Show-how-long-a-service-ran-for-after-it-e.patch b/SOURCES/0041-systemctl-Show-how-long-a-service-ran-for-after-it-e.patch deleted file mode 100644 index a8558ed..0000000 --- a/SOURCES/0041-systemctl-Show-how-long-a-service-ran-for-after-it-e.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b07519fd5241eacfdb735917eca4ccbf441b5a8a Mon Sep 17 00:00:00 2001 -From: Daan De Meyer -Date: Tue, 22 Feb 2022 11:06:00 +0000 -Subject: [PATCH] systemctl: Show how long a service ran for after it exited in - status output - -(cherry picked from commit 0802f62efc1d1c67d5be67223b529c93536cf2ed) - -Related: #2017035 ---- - src/systemctl/systemctl-show.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c -index 37c898f313..9b23471990 100644 ---- a/src/systemctl/systemctl-show.c -+++ b/src/systemctl/systemctl-show.c -@@ -433,6 +433,18 @@ static void print_status_info( - FORMAT_TIMESTAMP_STYLE(until_timestamp, arg_timestamp_style), - FORMAT_TIMESTAMP_RELATIVE(until_timestamp)); - } -+ -+ if (!endswith(i->id, ".target") && -+ STRPTR_IN_SET(i->active_state, "inactive", "failed") && -+ timestamp_is_set(i->active_enter_timestamp) && -+ timestamp_is_set(i->active_exit_timestamp) && -+ i->active_exit_timestamp >= i->active_enter_timestamp) { -+ -+ usec_t duration; -+ -+ duration = i->active_exit_timestamp - i->active_enter_timestamp; -+ printf(" Duration: %s\n", FORMAT_TIMESPAN(duration, MSEC_PER_SEC)); -+ } - } else - printf("\n"); - diff --git a/SOURCES/0041-tpm2-util-force-default-TCTI-to-be-device-with-param.patch b/SOURCES/0041-tpm2-util-force-default-TCTI-to-be-device-with-param.patch new file mode 100644 index 0000000..1de7853 --- /dev/null +++ b/SOURCES/0041-tpm2-util-force-default-TCTI-to-be-device-with-param.patch @@ -0,0 +1,46 @@ +From 31f0c1b06bfd90d52009b59b9a4bf26c297790a7 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 14 Nov 2022 17:26:49 +0100 +Subject: [PATCH] tpm2-util: force default TCTI to be "device" with parameter + "/dev/tpmrm0" + +Apparently some distros default to tss-abmrd. Let's bypass that and +always go to the kernel resource manager. + +abmrd cannot really work for us, since we want to access the TPM already +in earliest boot i.e. in environments the abmrd service is not available +in. + +Fixes: #25352 +(cherry picked from commit 34906680afe60d724ea435b79b9b830a4bf2e7e9) + +Related: #2138081 +--- + src/shared/tpm2-util.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c +index 65e8d48347..9d73316146 100644 +--- a/src/shared/tpm2-util.c ++++ b/src/shared/tpm2-util.c +@@ -152,8 +152,19 @@ int tpm2_context_init(const char *device, struct tpm2_context *ret) { + if (r < 0) + return log_error_errno(r, "TPM2 support not installed: %m"); + +- if (!device) ++ if (!device) { + device = secure_getenv("SYSTEMD_TPM2_DEVICE"); ++ if (device) ++ /* Setting the env var to an empty string forces tpm2-tss' own device picking ++ * logic to be used. */ ++ device = empty_to_null(device); ++ else ++ /* If nothing was specified explicitly, we'll use a hardcoded default: the "device" tcti ++ * driver and the "/dev/tpmrm0" device. We do this since on some distributions the tpm2-abrmd ++ * might be used and we really don't want that, since it is a system service and that creates ++ * various ordering issues/deadlocks during early boot. */ ++ device = "device:/dev/tpmrm0"; ++ } + + if (device) { + const char *param, *driver, *fn; diff --git a/SOURCES/0042-time-util-introduce-TIMESTAMP_UNIX.patch b/SOURCES/0042-time-util-introduce-TIMESTAMP_UNIX.patch deleted file mode 100644 index a71e3db..0000000 --- a/SOURCES/0042-time-util-introduce-TIMESTAMP_UNIX.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 5f59cc1593eaa251161061fe9a4ac4afb1592e6e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 21 Feb 2022 13:08:20 +0100 -Subject: [PATCH] time-util: introduce TIMESTAMP_UNIX - -Allow formatting timestamps as number of seconds since the Epoch for easier -machine parsing. - -Fixes: #22567 - -``` -$ systemctl show systemd-journald | grep Timestamp -WatchdogTimestampMonotonic=0 -ExecMainStartTimestamp=Sat 2021-12-11 15:25:57 CET -ExecMainStartTimestampMonotonic=13030408 -ExecMainExitTimestampMonotonic=0 -StateChangeTimestamp=Sat 2021-12-11 15:25:57 CET -StateChangeTimestampMonotonic=13049273 -InactiveExitTimestamp=Sat 2021-12-11 15:25:57 CET -InactiveExitTimestampMonotonic=13030430 -ActiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET -ActiveEnterTimestampMonotonic=13049273 -ActiveExitTimestamp=Sat 2021-12-11 15:25:57 CET -ActiveExitTimestampMonotonic=12997236 -InactiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET -InactiveEnterTimestampMonotonic=13028890 -ConditionTimestamp=Sat 2021-12-11 15:25:57 CET -ConditionTimestampMonotonic=13029539 -AssertTimestamp=Sat 2021-12-11 15:25:57 CET -AssertTimestampMonotonic=13029540 - -$ systemctl show --timestamp=unix systemd-journald | grep Timestamp -WatchdogTimestampMonotonic=0 -ExecMainStartTimestamp=@1639232757 -ExecMainStartTimestampMonotonic=13030408 -ExecMainExitTimestampMonotonic=0 -StateChangeTimestamp=@1639232757 -StateChangeTimestampMonotonic=13049273 -InactiveExitTimestamp=@1639232757 -InactiveExitTimestampMonotonic=13030430 -ActiveEnterTimestamp=@1639232757 -ActiveEnterTimestampMonotonic=13049273 -ActiveExitTimestamp=@1639232757 -ActiveExitTimestampMonotonic=12997236 -InactiveEnterTimestamp=@1639232757 -InactiveEnterTimestampMonotonic=13028890 -ConditionTimestamp=@1639232757 -ConditionTimestampMonotonic=13029539 -AssertTimestamp=@1639232757 -AssertTimestampMonotonic=13029540 -``` - -(cherry picked from commit ed4a5b434517eeebc508379476cf112704e7981c) - -Related: #2017035 ---- - src/basic/time-util.c | 11 +++++++++++ - src/basic/time-util.h | 1 + - src/test/test-time-util.c | 5 +++++ - 3 files changed, 17 insertions(+) - -diff --git a/src/basic/time-util.c b/src/basic/time-util.c -index b659d6905d..c0841af8f3 100644 ---- a/src/basic/time-util.c -+++ b/src/basic/time-util.c -@@ -320,11 +320,13 @@ char *format_timestamp_style( - time_t sec; - size_t n; - bool utc = false, us = false; -+ int r; - - assert(buf); - - switch (style) { - case TIMESTAMP_PRETTY: -+ case TIMESTAMP_UNIX: - break; - case TIMESTAMP_US: - us = true; -@@ -350,6 +352,14 @@ char *format_timestamp_style( - if (t <= 0 || t == USEC_INFINITY) - return NULL; /* Timestamp is unset */ - -+ if (style == TIMESTAMP_UNIX) { -+ r = snprintf(buf, l, "@" USEC_FMT, t / USEC_PER_SEC); /* round down µs → s */ -+ if (r < 0 || (size_t) r >= l) -+ return NULL; /* Doesn't fit */ -+ -+ return buf; -+ } -+ - /* Let's not format times with years > 9999 */ - if (t > USEC_TIMESTAMP_FORMATTABLE_MAX) { - assert(l >= STRLEN("--- XXXX-XX-XX XX:XX:XX") + 1); -@@ -1632,6 +1642,7 @@ static const char* const timestamp_style_table[_TIMESTAMP_STYLE_MAX] = { - [TIMESTAMP_US] = "us", - [TIMESTAMP_UTC] = "utc", - [TIMESTAMP_US_UTC] = "us+utc", -+ [TIMESTAMP_UNIX] = "unix", - }; - - /* Use the macro for enum → string to allow for aliases */ -diff --git a/src/basic/time-util.h b/src/basic/time-util.h -index 895af88299..01a72026e3 100644 ---- a/src/basic/time-util.h -+++ b/src/basic/time-util.h -@@ -34,6 +34,7 @@ typedef enum TimestampStyle { - TIMESTAMP_US, - TIMESTAMP_UTC, - TIMESTAMP_US_UTC, -+ TIMESTAMP_UNIX, - _TIMESTAMP_STYLE_MAX, - _TIMESTAMP_STYLE_INVALID = -EINVAL, - } TimestampStyle; -diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c -index 554693834b..799d271a44 100644 ---- a/src/test/test-time-util.c -+++ b/src/test/test-time-util.c -@@ -325,6 +325,11 @@ TEST(format_timestamp) { - assert_se(parse_timestamp(buf, &y) >= 0); - assert_se(x / USEC_PER_SEC == y / USEC_PER_SEC); - -+ assert_se(format_timestamp_style(buf, sizeof(buf), x, TIMESTAMP_UNIX)); -+ log_debug("%s", buf); -+ assert_se(parse_timestamp(buf, &y) >= 0); -+ assert_se(x / USEC_PER_SEC == y / USEC_PER_SEC); -+ - assert_se(format_timestamp_style(buf, sizeof(buf), x, TIMESTAMP_UTC)); - log_debug("%s", buf); - assert_se(parse_timestamp(buf, &y) >= 0); diff --git a/SOURCES/0042-tpm2-add-some-extra-validation-of-device-string-befo.patch b/SOURCES/0042-tpm2-add-some-extra-validation-of-device-string-befo.patch new file mode 100644 index 0000000..41c05aa --- /dev/null +++ b/SOURCES/0042-tpm2-add-some-extra-validation-of-device-string-befo.patch @@ -0,0 +1,52 @@ +From 5b20ba25259da453a2aac5e65978a11bc2d048ed Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 15 Nov 2022 23:01:04 +0100 +Subject: [PATCH] tpm2: add some extra validation of device string before using + it + +Let's add some extra validation before constructing and using the .so +name to load. This isn't really security sensitive, given that we +used secure_getenv() to get the device string (and it thus should have +been come from a trusted source) but let's better be safe than sorry. + +(cherry picked from commit 50a085143fa8f5dd6b6b3cef8a6ea2ec7c53ed0d) + +Related: #2138081 +--- + src/shared/tpm2-util.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c +index 9d73316146..4d0df944a9 100644 +--- a/src/shared/tpm2-util.c ++++ b/src/shared/tpm2-util.c +@@ -174,15 +174,27 @@ int tpm2_context_init(const char *device, struct tpm2_context *ret) { + + param = strchr(device, ':'); + if (param) { ++ /* Syntax #1: Pair of driver string and arbitrary parameter */ + driver = strndupa_safe(device, param - device); ++ if (isempty(driver)) ++ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "TPM2 driver name is empty, refusing."); ++ + param++; +- } else { ++ } else if (path_is_absolute(device) && path_is_valid(device)) { ++ /* Syntax #2: TPM device node */ + driver = "device"; + param = device; +- } ++ } else ++ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid TPM2 driver string, refusing."); ++ ++ log_debug("Using TPM2 TCTI driver '%s' with device '%s'.", driver, param); + + fn = strjoina("libtss2-tcti-", driver, ".so.0"); + ++ /* Better safe than sorry, let's refuse strings that cannot possibly be valid driver early, before going to disk. */ ++ if (!filename_is_valid(fn)) ++ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "TPM2 driver name '%s' not valid, refusing.", driver); ++ + dl = dlopen(fn, RTLD_NOW); + if (!dl) + return log_error_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), "Failed to load %s: %s", fn, dlerror()); diff --git a/SOURCES/0043-boot-Fix-error-message.patch b/SOURCES/0043-boot-Fix-error-message.patch new file mode 100644 index 0000000..e5eb228 --- /dev/null +++ b/SOURCES/0043-boot-Fix-error-message.patch @@ -0,0 +1,25 @@ +From 2fdb15b3053d20282d7f3c20a7a4d2bd96d9a39b Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sun, 13 Nov 2022 16:14:17 +0100 +Subject: [PATCH] boot: Fix error message + +(cherry picked from commit 6ee4aa22140dd8d51b1a18882eb4220629b8dd8f) + +Related: #2138081 +--- + src/boot/efi/boot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 4150b16ecf..84f4cc11a3 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -2678,7 +2678,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + + err = device_path_to_str(loaded_image->FilePath, &loaded_image_path); + if (err != EFI_SUCCESS) +- return log_error_status_stall(err, L"Error getting loaded image path: %m"); ++ return log_error_status_stall(err, L"Error getting loaded image path: %r", err); + + export_variables(loaded_image, loaded_image_path, init_usec); + diff --git a/SOURCES/0043-systemctl-man-update-docs-for-timestamp.patch b/SOURCES/0043-systemctl-man-update-docs-for-timestamp.patch deleted file mode 100644 index fda8122..0000000 --- a/SOURCES/0043-systemctl-man-update-docs-for-timestamp.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 17dfcbd7fe332e7559e168520a57b0241d688485 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 21 Feb 2022 13:14:18 +0100 -Subject: [PATCH] systemctl,man: update docs for `--timestamp=` - -(cherry picked from commit b58b4a9f379748fec667fb60606de945eaafadbe) - -Related: #2017035 ---- - man/systemctl.xml | 7 +++++++ - src/systemctl/systemctl.c | 7 ++----- - 2 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index 3b3d709ab3..f28579e05d 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -2305,6 +2305,13 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err - - - -+ -+ -+ -+ @seconds-since-the-epoch -+ -+ -+ - - - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 9031e685ea..0489796a75 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -296,11 +296,8 @@ static int systemctl_help(void) { - " --boot-loader-entry=NAME\n" - " Boot into a specific boot loader entry on next boot\n" - " --plain Print unit dependencies as a list instead of a tree\n" -- " --timestamp=FORMAT Change format of printed timestamps.\n" -- " 'pretty' (default): 'Day YYYY-MM-DD HH:MM:SS TZ\n" -- " 'us': 'Day YYYY-MM-DD HH:MM:SS.UUUUUU TZ\n" -- " 'utc': 'Day YYYY-MM-DD HH:MM:SS UTC\n" -- " 'us+utc': 'Day YYYY-MM-DD HH:MM:SS.UUUUUU UTC\n" -+ " --timestamp=FORMAT Change format of printed timestamps (pretty, unix,\n" -+ " us, utc, us+utc)\n" - " --read-only Create read-only bind mount\n" - " --mkdir Create directory before mounting, if missing\n" - " --marked Restart/reload previously marked units\n" diff --git a/SOURCES/0044-boot-Fix-memory-leak.patch b/SOURCES/0044-boot-Fix-memory-leak.patch new file mode 100644 index 0000000..5e62484 --- /dev/null +++ b/SOURCES/0044-boot-Fix-memory-leak.patch @@ -0,0 +1,25 @@ +From 58a3aaaad640bee3cca79a644422489e184b49c1 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Mon, 14 Nov 2022 14:18:26 +0100 +Subject: [PATCH] boot: Fix memory leak + +(cherry picked from commit b7b327f856b3782f28be561d612d66ff406c7789) + +Related: #2138081 +--- + src/boot/efi/boot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 84f4cc11a3..17d4ec2d09 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -2650,7 +2650,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + EFI_LOADED_IMAGE_PROTOCOL *loaded_image; + _cleanup_(file_closep) EFI_FILE *root_dir = NULL; + _cleanup_(config_free) Config config = {}; +- char16_t *loaded_image_path; ++ _cleanup_free_ char16_t *loaded_image_path = NULL; + EFI_STATUS err; + uint64_t init_usec; + bool menu = false; diff --git a/SOURCES/0044-systemctl-make-timestamp-affect-the-show-verb-as-wel.patch b/SOURCES/0044-systemctl-make-timestamp-affect-the-show-verb-as-wel.patch deleted file mode 100644 index 4be9398..0000000 --- a/SOURCES/0044-systemctl-make-timestamp-affect-the-show-verb-as-wel.patch +++ /dev/null @@ -1,69 +0,0 @@ -From ab458e74eccf14550711ca024e9176fba7993abc Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 18 Feb 2022 23:09:18 +0100 -Subject: [PATCH] systemctl: make `--timestamp=` affect the `show` verb as well - -Currently the `--timestamp=` option has no effect on timestamps shown by -`systemctl show`, let's fix that. - -Spotted in #22567. - -Before: -``` -$ systemctl show --timestamp=us+utc systemd-journald | grep Timestamp= -ExecMainStartTimestamp=Sat 2021-12-11 15:25:57 CET -StateChangeTimestamp=Sat 2021-12-11 15:25:57 CET -InactiveExitTimestamp=Sat 2021-12-11 15:25:57 CET -ActiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET -ActiveExitTimestamp=Sat 2021-12-11 15:25:57 CET -InactiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET -ConditionTimestamp=Sat 2021-12-11 15:25:57 CET -AssertTimestamp=Sat 2021-12-11 15:25:57 CET -``` - -After: -``` -$ systemctl show --timestamp=us+utc systemd-journald | grep Timestamp= -ExecMainStartTimestamp=Sat 2021-12-11 14:25:57.177848 UTC -StateChangeTimestamp=Sat 2021-12-11 14:25:57.196714 UTC -InactiveExitTimestamp=Sat 2021-12-11 14:25:57.177871 UTC -ActiveEnterTimestamp=Sat 2021-12-11 14:25:57.196714 UTC -ActiveExitTimestamp=Sat 2021-12-11 14:25:57.144677 UTC -InactiveEnterTimestamp=Sat 2021-12-11 14:25:57.176331 UTC -ConditionTimestamp=Sat 2021-12-11 14:25:57.176980 UTC -AssertTimestamp=Sat 2021-12-11 14:25:57.176980 UTC - -``` - -(cherry picked from commit a59e5c625da5a6e0c46e493d55f2f4212e9457ca) - -Related: #2017035 ---- - src/systemctl/systemctl-show.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c -index 9b23471990..7a6655da74 100644 ---- a/src/systemctl/systemctl-show.c -+++ b/src/systemctl/systemctl-show.c -@@ -1001,6 +1001,20 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m - } - break; - -+ case SD_BUS_TYPE_UINT64: -+ if (endswith(name, "Timestamp")) { -+ uint64_t timestamp; -+ -+ r = sd_bus_message_read_basic(m, bus_type, ×tamp); -+ if (r < 0) -+ return r; -+ -+ bus_print_property_value(name, expected_value, flags, FORMAT_TIMESTAMP_STYLE(timestamp, arg_timestamp_style)); -+ -+ return 1; -+ } -+ break; -+ - case SD_BUS_TYPE_STRUCT: - - if (contents[0] == SD_BUS_TYPE_UINT32 && streq(name, "Job")) { diff --git a/SOURCES/0045-boot-Do-not-require-a-loaded-image-path.patch b/SOURCES/0045-boot-Do-not-require-a-loaded-image-path.patch new file mode 100644 index 0000000..b878368 --- /dev/null +++ b/SOURCES/0045-boot-Do-not-require-a-loaded-image-path.patch @@ -0,0 +1,88 @@ +From 8cbb38625364640f390b2df2cda44ff3877fb16d Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Mon, 14 Nov 2022 14:37:13 +0100 +Subject: [PATCH] boot: Do not require a loaded image path + +If the device path to text protocol is not available (looking angrily at +Apple) we would fail to boot because we cannot get the loaded image +path. As this is only used for cosmetic purposes, we can just silently +continue. + +Fixes: #25363 +(cherry picked from commit af7ef648cddeb96da525de2410565d166f75cc96) + +Related: #2138081 +--- + src/boot/efi/boot.c | 13 +++---------- + 1 file changed, 3 insertions(+), 10 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 17d4ec2d09..b490a1d972 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -471,7 +471,6 @@ static void print_status(Config *config, char16_t *loaded_image_path) { + _cleanup_free_ char16_t *device_part_uuid = NULL; + + assert(config); +- assert(loaded_image_path); + + clear_screen(COLOR_NORMAL); + console_query_mode(&x_max, &y_max); +@@ -619,7 +618,6 @@ static bool menu_run( + + assert(config); + assert(chosen_entry); +- assert(loaded_image_path); + + EFI_STATUS err; + UINTN visible_max = 0; +@@ -1478,7 +1476,7 @@ static void config_entry_add_type1( + entry->loader = xstra_to_path(value); + + /* do not add an entry for ourselves */ +- if (loaded_image_path && strcaseeq16(entry->loader, loaded_image_path)) { ++ if (strcaseeq16(entry->loader, loaded_image_path)) { + entry->type = LOADER_UNDEFINED; + break; + } +@@ -1908,12 +1906,11 @@ static ConfigEntry *config_entry_add_loader_auto( + assert(root_dir); + assert(id); + assert(title); +- assert(loader || loaded_image_path); + + if (!config->auto_entries) + return NULL; + +- if (loaded_image_path) { ++ if (!loader) { + loader = L"\\EFI\\BOOT\\BOOT" EFI_MACHINE_TYPE_NAME ".efi"; + + /* We are trying to add the default EFI loader here, +@@ -2562,7 +2559,6 @@ static void export_variables( + char16_t uuid[37]; + + assert(loaded_image); +- assert(loaded_image_path); + + efivar_set_time_usec(LOADER_GUID, L"LoaderTimeInitUSec", init_usec); + efivar_set(LOADER_GUID, L"LoaderInfo", L"systemd-boot " GIT_VERSION, 0); +@@ -2591,7 +2587,6 @@ static void config_load_all_entries( + + assert(config); + assert(loaded_image); +- assert(loaded_image_path); + assert(root_dir); + + config_load_defaults(config, root_dir); +@@ -2676,9 +2671,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + if (err != EFI_SUCCESS) + return log_error_status_stall(err, L"Error getting a LoadedImageProtocol handle: %r", err); + +- err = device_path_to_str(loaded_image->FilePath, &loaded_image_path); +- if (err != EFI_SUCCESS) +- return log_error_status_stall(err, L"Error getting loaded image path: %r", err); ++ (void) device_path_to_str(loaded_image->FilePath, &loaded_image_path); + + export_variables(loaded_image, loaded_image_path, init_usec); + diff --git a/SOURCES/0045-tests-allow-running-all-the-services-with-SYSTEMD_LO.patch b/SOURCES/0045-tests-allow-running-all-the-services-with-SYSTEMD_LO.patch deleted file mode 100644 index 6fc7971..0000000 --- a/SOURCES/0045-tests-allow-running-all-the-services-with-SYSTEMD_LO.patch +++ /dev/null @@ -1,39 +0,0 @@ -From fdd32f48af7993305f65989162dedd75a929966a Mon Sep 17 00:00:00 2001 -From: Evgeny Vereshchagin -Date: Tue, 15 Feb 2022 01:13:10 +0000 -Subject: [PATCH] tests: allow running all the services with SYSTEMD_LOG_LEVEL - -It should make it easier to figure out what exactly services do there. -For example, with SYSTEMD_LOG_LEVEL=debug userdbd (v249) prints -``` -varlink-5: New incoming message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{}} -``` -before it crashes and systemd-resolved prints -``` -varlink-21: New incoming message: {"method":"io.systemd.Resolve.ResolveAddress","parameters":{"address":[127,0,0,1],"flags":0,"ifindex":1000000,"family":0}} -``` -and those messages are helpful (especially when scripts causing them -aren't clever enough to keep track of random stuff they send to systemd -:-)) - -(cherry picked from commit bf6ef6b6a9156e5f52ee69ce0c529a246f103e54) - -Related: #2017035 ---- - test/test-functions | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/test/test-functions b/test/test-functions -index dcc893733c..a299f5ff1f 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1142,6 +1142,9 @@ install_systemd() { - - # enable debug logging in PID1 - echo LogLevel=debug >>"$initdir/etc/systemd/system.conf" -+ if [[ -n "$TEST_SYSTEMD_LOG_LEVEL" ]]; then -+ echo DefaultEnvironment=SYSTEMD_LOG_LEVEL="$TEST_SYSTEMD_LOG_LEVEL" >>"$initdir/etc/systemd/system.conf" -+ fi - # store coredumps in journal - echo Storage=journal >>"$initdir/etc/systemd/coredump.conf" - # Propagate SYSTEMD_UNIT_PATH to user systemd managers diff --git a/SOURCES/0046-boot-Manually-convert-filepaths-if-needed.patch b/SOURCES/0046-boot-Manually-convert-filepaths-if-needed.patch new file mode 100644 index 0000000..55596aa --- /dev/null +++ b/SOURCES/0046-boot-Manually-convert-filepaths-if-needed.patch @@ -0,0 +1,75 @@ +From 806165285b822436023df84ca0a3e5b28a3099d6 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Mon, 14 Nov 2022 15:24:32 +0100 +Subject: [PATCH] boot: Manually convert filepaths if needed + +The conversion of a filepath device path to text is needed for the stub +loader to find credential files. + +(cherry picked from commit 679007044fbbcf82c66cf20b99f2f5086b7df6b4) + +Related: #2138081 +--- + src/boot/efi/util.c | 40 ++++++++++++++++++++++++++++++++++++---- + 1 file changed, 36 insertions(+), 4 deletions(-) + +diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c +index 5547d288de..57436dbf0c 100644 +--- a/src/boot/efi/util.c ++++ b/src/boot/efi/util.c +@@ -772,19 +772,51 @@ EFI_STATUS make_file_device_path(EFI_HANDLE device, const char16_t *file, EFI_DE + EFI_STATUS device_path_to_str(const EFI_DEVICE_PATH *dp, char16_t **ret) { + EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *dp_to_text; + EFI_STATUS err; ++ _cleanup_free_ char16_t *str = NULL; + + assert(dp); + assert(ret); + + err = BS->LocateProtocol(&(EFI_GUID) EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID, NULL, (void **) &dp_to_text); +- if (err != EFI_SUCCESS) +- return err; ++ if (err != EFI_SUCCESS) { ++ /* If the device path to text protocol is not available we can still do a best-effort attempt ++ * to convert it ourselves if we are given filepath-only device path. */ ++ ++ size_t size = 0; ++ for (const EFI_DEVICE_PATH *node = dp; !IsDevicePathEnd(node); ++ node = NextDevicePathNode(node)) { ++ ++ if (DevicePathType(node) != MEDIA_DEVICE_PATH || ++ DevicePathSubType(node) != MEDIA_FILEPATH_DP) ++ return err; ++ ++ size_t path_size = DevicePathNodeLength(node); ++ if (path_size <= offsetof(FILEPATH_DEVICE_PATH, PathName) || path_size % sizeof(char16_t)) ++ return EFI_INVALID_PARAMETER; ++ path_size -= offsetof(FILEPATH_DEVICE_PATH, PathName); ++ ++ _cleanup_free_ char16_t *old = str; ++ str = xmalloc(size + path_size); ++ if (old) { ++ memcpy(str, old, size); ++ str[size / sizeof(char16_t) - 1] = '\\'; ++ } ++ ++ memcpy(str + (size / sizeof(char16_t)), ++ ((uint8_t *) node) + offsetof(FILEPATH_DEVICE_PATH, PathName), ++ path_size); ++ size += path_size; ++ } ++ ++ *ret = TAKE_PTR(str); ++ return EFI_SUCCESS; ++ } + +- char16_t *str = dp_to_text->ConvertDevicePathToText(dp, false, false); ++ str = dp_to_text->ConvertDevicePathToText(dp, false, false); + if (!str) + return EFI_OUT_OF_RESOURCES; + +- *ret = str; ++ *ret = TAKE_PTR(str); + return EFI_SUCCESS; + } + diff --git a/SOURCES/0046-coredump-raise-the-coredump-save-size-on-64bit-syste.patch b/SOURCES/0046-coredump-raise-the-coredump-save-size-on-64bit-syste.patch deleted file mode 100644 index 44cedde..0000000 --- a/SOURCES/0046-coredump-raise-the-coredump-save-size-on-64bit-syste.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 19d3bf238c41c756b391fc7e66e5217cde42a896 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 8 Feb 2022 11:52:17 +0100 -Subject: [PATCH] coredump: raise the coredump save size on 64bit systems to - 32G (and lower it to 1G on 32bit systems) - -Apparently 2G is too low for various real-life systems. But raising it -universally above 2^32 sounds wrong to me, since that makes no sense on -32bit systems, that we still support. - -Hence, let's raise the limit to 32G on 64bit systems, and *lower* it to -1G on 32bit systems. - -32G is 4 orders of magnitude higher then the old settings. Let's hope -that's enough for now. Should this not be enough we can raise it -further. - -Fixes: #22076 -(cherry picked from commit e677041e7a6988f73de802db6e49d962d432944b) - -Related: #2017035 ---- - src/coredump/coredump.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c -index 6a6e9765d4..fd156370b2 100644 ---- a/src/coredump/coredump.c -+++ b/src/coredump/coredump.c -@@ -48,8 +48,14 @@ - #include "uid-alloc-range.h" - #include "user-util.h" - --/* The maximum size up to which we process coredumps */ --#define PROCESS_SIZE_MAX ((uint64_t) (2LLU*1024LLU*1024LLU*1024LLU)) -+/* The maximum size up to which we process coredumps. We use 1G on 32bit systems, and 32G on 64bit systems */ -+#if __SIZEOF_POINTER__ == 4 -+#define PROCESS_SIZE_MAX ((uint64_t) (1LLU*1024LLU*1024LLU*1024LLU)) -+#elif __SIZEOF_POINTER__ == 8 -+#define PROCESS_SIZE_MAX ((uint64_t) (32LLU*1024LLU*1024LLU*1024LLU)) -+#else -+#error "Unexpected pointer size" -+#endif - - /* The maximum size up to which we leave the coredump around on disk */ - #define EXTERNAL_SIZE_MAX PROCESS_SIZE_MAX diff --git a/SOURCES/0047-boot-Rework-security-arch-override.patch b/SOURCES/0047-boot-Rework-security-arch-override.patch new file mode 100644 index 0000000..5a77743 --- /dev/null +++ b/SOURCES/0047-boot-Rework-security-arch-override.patch @@ -0,0 +1,433 @@ +From 519625977d19b7842d9b2ded8be12ed0aecbaefc Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 15 Nov 2022 18:22:38 +0100 +Subject: [PATCH] boot: Rework security arch override + +This simplifies the caller interface for security arch overrides by only +having to pass a validator and an optional context. + +(cherry picked from commit 5489c13bae119dc5f6e65be8d7f241aa7d54c023) + +Related: #2138081 +--- + src/boot/efi/linux.c | 61 ++++++++------------- + src/boot/efi/secure-boot.c | 105 +++++++++++++++++++++++++++++-------- + src/boot/efi/secure-boot.h | 28 +++------- + src/boot/efi/shim.c | 104 +++++++++++------------------------- + 4 files changed, 146 insertions(+), 152 deletions(-) + +diff --git a/src/boot/efi/linux.c b/src/boot/efi/linux.c +index 75b9507709..dd7eb48c8c 100644 +--- a/src/boot/efi/linux.c ++++ b/src/boot/efi/linux.c +@@ -20,35 +20,26 @@ + #define STUB_PAYLOAD_GUID \ + { 0x55c5d1f8, 0x04cd, 0x46b5, { 0x8a, 0x20, 0xe5, 0x6c, 0xbb, 0x30, 0x52, 0xd0 } } + +-static EFIAPI EFI_STATUS security_hook( +- const SecurityOverride *this, uint32_t authentication_status, const EFI_DEVICE_PATH *file) { ++typedef struct { ++ const void *addr; ++ size_t len; ++ const EFI_DEVICE_PATH *device_path; ++} ValidationContext; + +- assert(this); +- assert(this->hook == security_hook); ++static bool validate_payload( ++ const void *ctx, const EFI_DEVICE_PATH *device_path, const void *file_buffer, size_t file_size) { + +- if (file == this->payload_device_path) +- return EFI_SUCCESS; ++ const ValidationContext *payload = ASSERT_PTR(ctx); + +- return this->original_security->FileAuthenticationState( +- this->original_security, authentication_status, file); +-} +- +-static EFIAPI EFI_STATUS security2_hook( +- const SecurityOverride *this, +- const EFI_DEVICE_PATH *device_path, +- void *file_buffer, +- size_t file_size, +- BOOLEAN boot_policy) { +- +- assert(this); +- assert(this->hook == security2_hook); ++ if (device_path != payload->device_path) ++ return false; + +- if (file_buffer == this->payload && file_size == this->payload_len && +- device_path == this->payload_device_path) +- return EFI_SUCCESS; ++ /* Security arch (1) protocol does not provide a file buffer. Instead we are supposed to fetch the payload ++ * ourselves, which is not needed as we already have everything in memory and the device paths match. */ ++ if (file_buffer && (file_buffer != payload->addr || file_size != payload->len)) ++ return false; + +- return this->original_security2->FileAuthentication( +- this->original_security2, device_path, file_buffer, file_size, boot_policy); ++ return true; + } + + static EFI_STATUS load_image(EFI_HANDLE parent, const void *source, size_t len, EFI_HANDLE *ret_image) { +@@ -79,19 +70,13 @@ static EFI_STATUS load_image(EFI_HANDLE parent, const void *source, size_t len, + + /* We want to support unsigned kernel images as payload, which is safe to do under secure boot + * because it is embedded in this stub loader (and since it is already running it must be trusted). */ +- SecurityOverride security_override = { +- .hook = security_hook, +- .payload = source, +- .payload_len = len, +- .payload_device_path = &payload_device_path.payload.Header, +- }, security2_override = { +- .hook = security2_hook, +- .payload = source, +- .payload_len = len, +- .payload_device_path = &payload_device_path.payload.Header, +- }; +- +- install_security_override(&security_override, &security2_override); ++ install_security_override( ++ validate_payload, ++ &(ValidationContext) { ++ .addr = source, ++ .len = len, ++ .device_path = &payload_device_path.payload.Header, ++ }); + + EFI_STATUS ret = BS->LoadImage( + /*BootPolicy=*/false, +@@ -101,7 +86,7 @@ static EFI_STATUS load_image(EFI_HANDLE parent, const void *source, size_t len, + len, + ret_image); + +- uninstall_security_override(&security_override, &security2_override); ++ uninstall_security_override(); + + return ret; + } +diff --git a/src/boot/efi/secure-boot.c b/src/boot/efi/secure-boot.c +index 171b2c96b3..0e615c55e0 100644 +--- a/src/boot/efi/secure-boot.c ++++ b/src/boot/efi/secure-boot.c +@@ -127,10 +127,60 @@ out_deallocate: + return err; + } + +-static EFI_STATUS install_security_override_one(EFI_GUID guid, SecurityOverride *override) { ++static struct SecurityOverride { ++ /* Our own security arch instances that we register onto original_handle, thereby replacing the ++ * firmware provided instances. */ ++ EFI_SECURITY_ARCH_PROTOCOL override; ++ EFI_SECURITY2_ARCH_PROTOCOL override2; ++ ++ /* These are saved so we can uninstall our own instance later. */ ++ EFI_HANDLE original_handle, original_handle2; ++ EFI_SECURITY_ARCH_PROTOCOL *original_security; ++ EFI_SECURITY2_ARCH_PROTOCOL *original_security2; ++ ++ security_validator_t validator; ++ const void *validator_ctx; ++} security_override; ++ ++static EFIAPI EFI_STATUS security_hook( ++ const EFI_SECURITY_ARCH_PROTOCOL *this, ++ uint32_t authentication_status, ++ const EFI_DEVICE_PATH *file) { ++ ++ assert(security_override.validator); ++ assert(security_override.original_security); ++ ++ if (security_override.validator(security_override.validator_ctx, file, NULL, 0)) ++ return EFI_SUCCESS; ++ ++ return security_override.original_security->FileAuthenticationState( ++ security_override.original_security, authentication_status, file); ++} ++ ++static EFIAPI EFI_STATUS security2_hook( ++ const EFI_SECURITY2_ARCH_PROTOCOL *this, ++ const EFI_DEVICE_PATH *device_path, ++ void *file_buffer, ++ size_t file_size, ++ BOOLEAN boot_policy) { ++ ++ assert(security_override.validator); ++ assert(security_override.original_security2); ++ ++ if (security_override.validator(security_override.validator_ctx, device_path, file_buffer, file_size)) ++ return EFI_SUCCESS; ++ ++ return security_override.original_security2->FileAuthentication( ++ security_override.original_security2, device_path, file_buffer, file_size, boot_policy); ++} ++ ++static EFI_STATUS install_security_override_one( ++ EFI_GUID guid, void *override, EFI_HANDLE *ret_original_handle, void **ret_original_security) { + EFI_STATUS err; + + assert(override); ++ assert(ret_original_handle); ++ assert(ret_original_security); + + _cleanup_free_ EFI_HANDLE *handles = NULL; + size_t n_handles = 0; +@@ -152,8 +202,8 @@ static EFI_STATUS install_security_override_one(EFI_GUID guid, SecurityOverride + if (err != EFI_SUCCESS) + return log_error_status_stall(err, u"Error overriding security arch protocol: %r", err); + +- override->original = security; +- override->original_handle = handles[0]; ++ *ret_original_security = security; ++ *ret_original_handle = handles[0]; + return EFI_SUCCESS; + } + +@@ -161,35 +211,46 @@ static EFI_STATUS install_security_override_one(EFI_GUID guid, SecurityOverride + * Specification) with the provided override instances. If not running in secure boot or the protocols are + * not available nothing happens. The override instances are provided with the necessary info to undo this + * in uninstall_security_override(). */ +-void install_security_override(SecurityOverride *override, SecurityOverride *override2) { +- assert(override); +- assert(override2); ++void install_security_override(security_validator_t validator, const void *validator_ctx) { ++ assert(validator); + + if (!secure_boot_enabled()) + return; + +- (void) install_security_override_one((EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, override); +- (void) install_security_override_one((EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, override2); +-} ++ security_override = (struct SecurityOverride) { ++ { .FileAuthenticationState = security_hook, }, ++ { .FileAuthentication = security2_hook, }, ++ .validator = validator, ++ .validator_ctx = validator_ctx, ++ }; + +-void uninstall_security_override(SecurityOverride *override, SecurityOverride *override2) { +- assert(override); +- assert(override2); ++ (void) install_security_override_one( ++ (EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, ++ &security_override.override, ++ &security_override.original_handle, ++ (void **) &security_override.original_security); ++ (void) install_security_override_one( ++ (EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, ++ &security_override.override2, ++ &security_override.original_handle2, ++ (void **) &security_override.original_security2); ++} + ++void uninstall_security_override(void) { + /* We use assert_se here to guarantee the system is not in a weird state in the unlikely case of an + * error restoring the original protocols. */ + +- if (override->original_handle) ++ if (security_override.original_handle) + assert_se(BS->ReinstallProtocolInterface( +- override->original_handle, +- &(EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, +- override, +- override->original) == EFI_SUCCESS); ++ security_override.original_handle, ++ &(EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, ++ &security_override.override, ++ security_override.original_security) == EFI_SUCCESS); + +- if (override2->original_handle) ++ if (security_override.original_handle2) + assert_se(BS->ReinstallProtocolInterface( +- override2->original_handle, +- &(EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, +- override2, +- override2->original) == EFI_SUCCESS); ++ security_override.original_handle2, ++ &(EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, ++ &security_override.override2, ++ security_override.original_security2) == EFI_SUCCESS); + } +diff --git a/src/boot/efi/secure-boot.h b/src/boot/efi/secure-boot.h +index 91b6770edb..e98de81c2a 100644 +--- a/src/boot/efi/secure-boot.h ++++ b/src/boot/efi/secure-boot.h +@@ -17,23 +17,11 @@ SecureBootMode secure_boot_mode(void); + + EFI_STATUS secure_boot_enroll_at(EFI_FILE *root_dir, const char16_t *path); + +-typedef struct { +- void *hook; +- +- /* End of EFI_SECURITY_ARCH(2)_PROTOCOL. The rest is our own protocol instance data. */ +- +- EFI_HANDLE original_handle; +- union { +- void *original; +- EFI_SECURITY_ARCH_PROTOCOL *original_security; +- EFI_SECURITY2_ARCH_PROTOCOL *original_security2; +- }; +- +- /* Used by the stub to identify the embedded image. */ +- const void *payload; +- size_t payload_len; +- const EFI_DEVICE_PATH *payload_device_path; +-} SecurityOverride; +- +-void install_security_override(SecurityOverride *override, SecurityOverride *override2); +-void uninstall_security_override(SecurityOverride *override, SecurityOverride *override2); ++typedef bool (*security_validator_t)( ++ const void *ctx, ++ const EFI_DEVICE_PATH *device_path, ++ const void *file_buffer, ++ size_t file_size); ++ ++void install_security_override(security_validator_t validator, const void *validator_ctx); ++void uninstall_security_override(void); +diff --git a/src/boot/efi/shim.c b/src/boot/efi/shim.c +index 3ae058cb84..ac224336bc 100644 +--- a/src/boot/efi/shim.c ++++ b/src/boot/efi/shim.c +@@ -23,7 +23,7 @@ + #endif + + struct ShimLock { +- EFI_STATUS __sysv_abi__ (*shim_verify) (void *buffer, uint32_t size); ++ EFI_STATUS __sysv_abi__ (*shim_verify) (const void *buffer, uint32_t size); + + /* context is actually a struct for the PE header, but it isn't needed so void is sufficient just do define the interface + * see shim.c/shim.h and PeHeader.h in the github shim repo */ +@@ -41,79 +41,45 @@ bool shim_loaded(void) { + return BS->LocateProtocol((EFI_GUID*) SHIM_LOCK_GUID, NULL, (void**) &shim_lock) == EFI_SUCCESS; + } + +-static bool shim_validate(void *data, uint32_t size) { +- struct ShimLock *shim_lock; +- +- if (!data) +- return false; +- +- if (BS->LocateProtocol((EFI_GUID*) SHIM_LOCK_GUID, NULL, (void**) &shim_lock) != EFI_SUCCESS) +- return false; +- +- if (!shim_lock) +- return false; +- +- return shim_lock->shim_verify(data, size) == EFI_SUCCESS; +-} +- +-static EFIAPI EFI_STATUS security2_hook( +- const SecurityOverride *this, +- const EFI_DEVICE_PATH *device_path, +- void *file_buffer, +- UINTN file_size, +- BOOLEAN boot_policy) { +- +- assert(this); +- assert(this->hook == security2_hook); +- +- if (shim_validate(file_buffer, file_size)) +- return EFI_SUCCESS; +- +- return this->original_security2->FileAuthentication( +- this->original_security2, device_path, file_buffer, file_size, boot_policy); +-} +- +-static EFIAPI EFI_STATUS security_hook( +- const SecurityOverride *this, +- uint32_t authentication_status, +- const EFI_DEVICE_PATH *device_path) { ++static bool shim_validate( ++ const void *ctx, const EFI_DEVICE_PATH *device_path, const void *file_buffer, size_t file_size) { + + EFI_STATUS err; ++ _cleanup_free_ char *file_buffer_owned = NULL; + +- assert(this); +- assert(this->hook == security_hook); ++ if (!file_buffer) { ++ if (!device_path) ++ return false; + +- if (!device_path) +- return this->original_security->FileAuthenticationState( +- this->original_security, authentication_status, device_path); ++ EFI_HANDLE device_handle; ++ EFI_DEVICE_PATH *file_dp = (EFI_DEVICE_PATH *) device_path; ++ err = BS->LocateDevicePath(&FileSystemProtocol, &file_dp, &device_handle); ++ if (err != EFI_SUCCESS) ++ return false; + +- EFI_HANDLE device_handle; +- EFI_DEVICE_PATH *dp = (EFI_DEVICE_PATH *) device_path; +- err = BS->LocateDevicePath(&FileSystemProtocol, &dp, &device_handle); +- if (err != EFI_SUCCESS) +- return err; ++ _cleanup_(file_closep) EFI_FILE *root = NULL; ++ err = open_volume(device_handle, &root); ++ if (err != EFI_SUCCESS) ++ return false; + +- _cleanup_(file_closep) EFI_FILE *root = NULL; +- err = open_volume(device_handle, &root); +- if (err != EFI_SUCCESS) +- return err; ++ _cleanup_free_ char16_t *dp_str = NULL; ++ err = device_path_to_str(file_dp, &dp_str); ++ if (err != EFI_SUCCESS) ++ return false; + +- _cleanup_free_ char16_t *dp_str = NULL; +- err = device_path_to_str(dp, &dp_str); +- if (err != EFI_SUCCESS) +- return err; ++ err = file_read(root, dp_str, 0, 0, &file_buffer_owned, &file_size); ++ if (err != EFI_SUCCESS) ++ return false; + +- char *file_buffer; +- size_t file_size; +- err = file_read(root, dp_str, 0, 0, &file_buffer, &file_size); +- if (err != EFI_SUCCESS) +- return err; ++ file_buffer = file_buffer_owned; ++ } + +- if (shim_validate(file_buffer, file_size)) +- return EFI_SUCCESS; ++ struct ShimLock *shim_lock; ++ err = BS->LocateProtocol((EFI_GUID *) SHIM_LOCK_GUID, NULL, (void **) &shim_lock); ++ if (err != EFI_SUCCESS) ++ return false; + +- return this->original_security->FileAuthenticationState( +- this->original_security, authentication_status, device_path); ++ return shim_lock->shim_verify(file_buffer, file_size) == EFI_SUCCESS; + } + + EFI_STATUS shim_load_image(EFI_HANDLE parent, const EFI_DEVICE_PATH *device_path, EFI_HANDLE *ret_image) { +@@ -122,20 +88,14 @@ EFI_STATUS shim_load_image(EFI_HANDLE parent, const EFI_DEVICE_PATH *device_path + + bool have_shim = shim_loaded(); + +- SecurityOverride security_override = { +- .hook = security_hook, +- }, security2_override = { +- .hook = security2_hook, +- }; +- + if (have_shim) +- install_security_override(&security_override, &security2_override); ++ install_security_override(shim_validate, NULL); + + EFI_STATUS ret = BS->LoadImage( + /*BootPolicy=*/false, parent, (EFI_DEVICE_PATH *) device_path, NULL, 0, ret_image); + + if (have_shim) +- uninstall_security_override(&security_override, &security2_override); ++ uninstall_security_override(); + + return ret; + } diff --git a/SOURCES/0047-repart-fix-sector-size-handling.patch b/SOURCES/0047-repart-fix-sector-size-handling.patch deleted file mode 100644 index 361fae2..0000000 --- a/SOURCES/0047-repart-fix-sector-size-handling.patch +++ /dev/null @@ -1,644 +0,0 @@ -From 389cc9af2087aa5369ac6bf0124d14877d541966 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 4 Feb 2022 17:39:44 +0100 -Subject: [PATCH] repart: fix sector size handling - -This queries the sector size from libfdisk instead of assuming 512, and -uses that when converting from bytes to the offset/size values libfdisk -expects. - -This is an alternative to Tom Yan's #21823, but prefers using libfdisk's -own ideas of the sector size instead of going directly to the backing -device via ioctls. (libfdisk can after all also operate on regular -files, where the sector size concept doesn't necessarily apply the same -way.) - -This also makes the "grain" variable, i.e. how we'll align the -partitions. Previously this was hardcoded to 4K, and that still will be -the minimum grain we use, but should the sector size be larger than that -we'll use the next multiple of the sector size instead. - -(cherry picked from commit 994b303123ebe6a140bf3e56c66aa66119ae7d95) - -Related: #2017035 ---- - src/partition/repart.c | 212 +++++++++++++++++++++++++---------------- - 1 file changed, 132 insertions(+), 80 deletions(-) - -diff --git a/src/partition/repart.c b/src/partition/repart.c -index d08f47f2c4..0862a37a8d 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -195,6 +195,8 @@ struct Context { - uint64_t start, end, total; - - struct fdisk_context *fdisk_context; -+ uint64_t sector_size; -+ uint64_t grain_size; - - sd_id128_t seed; - }; -@@ -407,9 +409,12 @@ static bool context_drop_one_priority(Context *context) { - return true; - } - --static uint64_t partition_min_size(const Partition *p) { -+static uint64_t partition_min_size(Context *context, const Partition *p) { - uint64_t sz; - -+ assert(context); -+ assert(p); -+ - /* Calculate the disk space we really need at minimum for this partition. If the partition already - * exists the current size is what we really need. If it doesn't exist yet refuse to allocate less - * than 4K. -@@ -428,50 +433,60 @@ static uint64_t partition_min_size(const Partition *p) { - uint64_t d = 0; - - if (p->encrypt != ENCRYPT_OFF) -- d += round_up_size(LUKS2_METADATA_SIZE, 4096); -+ d += round_up_size(LUKS2_METADATA_SIZE, context->grain_size); - - if (p->copy_blocks_size != UINT64_MAX) -- d += round_up_size(p->copy_blocks_size, 4096); -+ d += round_up_size(p->copy_blocks_size, context->grain_size); - else if (p->format || p->encrypt != ENCRYPT_OFF) { - uint64_t f; - - /* If we shall synthesize a file system, take minimal fs size into account (assumed to be 4K if not known) */ -- f = p->format ? minimal_size_by_fs_name(p->format) : UINT64_MAX; -- d += f == UINT64_MAX ? 4096 : f; -+ f = p->format ? round_up_size(minimal_size_by_fs_name(p->format), context->grain_size) : UINT64_MAX; -+ d += f == UINT64_MAX ? context->grain_size : f; - } - - if (d > sz) - sz = d; - } - -- return MAX(p->size_min != UINT64_MAX ? p->size_min : DEFAULT_MIN_SIZE, sz); -+ return MAX(round_up_size(p->size_min != UINT64_MAX ? p->size_min : DEFAULT_MIN_SIZE, context->grain_size), sz); - } - --static uint64_t partition_max_size(const Partition *p) { -+static uint64_t partition_max_size(const Context *context, const Partition *p) { -+ uint64_t sm; -+ - /* Calculate how large the partition may become at max. This is generally the configured maximum - * size, except when it already exists and is larger than that. In that case it's the existing size, - * since we never want to shrink partitions. */ - -+ assert(context); -+ assert(p); -+ - if (PARTITION_IS_FOREIGN(p)) { - /* Don't allow changing size of partitions not managed by us */ - assert(p->current_size != UINT64_MAX); - return p->current_size; - } - -+ sm = round_down_size(p->size_max, context->grain_size); -+ - if (p->current_size != UINT64_MAX) -- return MAX(p->current_size, p->size_max); -+ return MAX(p->current_size, sm); - -- return p->size_max; -+ return sm; - } - --static uint64_t partition_min_size_with_padding(const Partition *p) { -+static uint64_t partition_min_size_with_padding(Context *context, const Partition *p) { - uint64_t sz; - - /* Calculate the disk space we need for this partition plus any free space coming after it. This - * takes user configured padding into account as well as any additional whitespace needed to align - * the next partition to 4K again. */ - -- sz = partition_min_size(p); -+ assert(context); -+ assert(p); -+ -+ sz = partition_min_size(context, p); - - if (p->padding_min != UINT64_MAX) - sz += p->padding_min; -@@ -479,11 +494,11 @@ static uint64_t partition_min_size_with_padding(const Partition *p) { - if (PARTITION_EXISTS(p)) { - /* If the partition wasn't aligned, add extra space so that any we might add will be aligned */ - assert(p->offset != UINT64_MAX); -- return round_up_size(p->offset + sz, 4096) - p->offset; -+ return round_up_size(p->offset + sz, context->grain_size) - p->offset; - } - - /* If this is a new partition we'll place it aligned, hence we just need to round up the required size here */ -- return round_up_size(sz, 4096); -+ return round_up_size(sz, context->grain_size); - } - - static uint64_t free_area_available(const FreeArea *a) { -@@ -495,9 +510,12 @@ static uint64_t free_area_available(const FreeArea *a) { - return a->size - a->allocated; - } - --static uint64_t free_area_available_for_new_partitions(const FreeArea *a) { -+static uint64_t free_area_available_for_new_partitions(Context *context, const FreeArea *a) { - uint64_t avail; - -+ assert(context); -+ assert(a); -+ - /* Similar to free_area_available(), but takes into account that the required size and padding of the - * preceding partition is honoured. */ - -@@ -505,16 +523,16 @@ static uint64_t free_area_available_for_new_partitions(const FreeArea *a) { - if (a->after) { - uint64_t need, space_end, new_end; - -- need = partition_min_size_with_padding(a->after); -+ need = partition_min_size_with_padding(context, a->after); - - assert(a->after->offset != UINT64_MAX); - assert(a->after->current_size != UINT64_MAX); - - /* Calculate where the free area ends, based on the offset of the partition preceding it */ -- space_end = round_up_size(a->after->offset + a->after->current_size, 4096) + avail; -+ space_end = round_up_size(a->after->offset + a->after->current_size, context->grain_size) + avail; - - /* Calculate where the partition would end when we give it as much as it needs */ -- new_end = round_up_size(a->after->offset + need, 4096); -+ new_end = round_up_size(a->after->offset + need, context->grain_size); - - /* Calculate saturated difference of the two: that's how much we have free for other partitions */ - return LESS_BY(space_end, new_end); -@@ -523,15 +541,18 @@ static uint64_t free_area_available_for_new_partitions(const FreeArea *a) { - return avail; - } - --static int free_area_compare(FreeArea *const *a, FreeArea *const*b) { -- return CMP(free_area_available_for_new_partitions(*a), -- free_area_available_for_new_partitions(*b)); -+static int free_area_compare(FreeArea *const *a, FreeArea *const*b, Context *context) { -+ assert(context); -+ -+ return CMP(free_area_available_for_new_partitions(context, *a), -+ free_area_available_for_new_partitions(context, *b)); - } - --static uint64_t charge_size(uint64_t total, uint64_t amount) { -+static uint64_t charge_size(Context *context, uint64_t total, uint64_t amount) { -+ assert(context); - /* Subtract the specified amount from total, rounding up to multiple of 4K if there's room */ - assert(amount <= total); -- return LESS_BY(total, round_up_size(amount, 4096)); -+ return LESS_BY(total, round_up_size(amount, context->grain_size)); - } - - static uint64_t charge_weight(uint64_t total, uint64_t amount) { -@@ -545,14 +566,14 @@ static bool context_allocate_partitions(Context *context, uint64_t *ret_largest_ - assert(context); - - /* Sort free areas by size, putting smallest first */ -- typesafe_qsort(context->free_areas, context->n_free_areas, free_area_compare); -+ typesafe_qsort_r(context->free_areas, context->n_free_areas, free_area_compare, context); - - /* In any case return size of the largest free area (i.e. not the size of all free areas - * combined!) */ - if (ret_largest_free_area) - *ret_largest_free_area = - context->n_free_areas == 0 ? 0 : -- free_area_available_for_new_partitions(context->free_areas[context->n_free_areas-1]); -+ free_area_available_for_new_partitions(context, context->free_areas[context->n_free_areas-1]); - - /* A simple first-fit algorithm. We return true if we can fit the partitions in, otherwise false. */ - LIST_FOREACH(partitions, p, context->partitions) { -@@ -565,13 +586,13 @@ static bool context_allocate_partitions(Context *context, uint64_t *ret_largest_ - continue; - - /* How much do we need to fit? */ -- required = partition_min_size_with_padding(p); -- assert(required % 4096 == 0); -+ required = partition_min_size_with_padding(context, p); -+ assert(required % context->grain_size == 0); - - for (size_t i = 0; i < context->n_free_areas; i++) { - a = context->free_areas[i]; - -- if (free_area_available_for_new_partitions(a) >= required) { -+ if (free_area_available_for_new_partitions(context, a) >= required) { - fits = true; - break; - } -@@ -683,8 +704,8 @@ static int context_grow_partitions_phase( - if (r < 0) - return r; - -- rsz = partition_min_size(p); -- xsz = partition_max_size(p); -+ rsz = partition_min_size(context, p); -+ xsz = partition_max_size(context, p); - - if (phase == PHASE_OVERCHARGE && rsz > share) { - /* This partition needs more than its calculated share. Let's assign -@@ -712,13 +733,13 @@ static int context_grow_partitions_phase( - /* Never change of foreign partitions (i.e. those we don't manage) */ - p->new_size = p->current_size; - else -- p->new_size = MAX(round_down_size(share, 4096), rsz); -+ p->new_size = MAX(round_down_size(share, context->grain_size), rsz); - - charge = true; - } - - if (charge) { -- *span = charge_size(*span, p->new_size); -+ *span = charge_size(context, *span, p->new_size); - *weight_sum = charge_weight(*weight_sum, p->weight); - } - -@@ -742,7 +763,7 @@ static int context_grow_partitions_phase( - charge = try_again = true; - } else if (phase == PHASE_DISTRIBUTE) { - -- p->new_padding = round_down_size(share, 4096); -+ p->new_padding = round_down_size(share, context->grain_size); - if (p->padding_min != UINT64_MAX && p->new_padding < p->padding_min) - p->new_padding = p->padding_min; - -@@ -750,7 +771,7 @@ static int context_grow_partitions_phase( - } - - if (charge) { -- *span = charge_size(*span, p->new_padding); -+ *span = charge_size(context, *span, p->new_padding); - *weight_sum = charge_weight(*weight_sum, p->padding_weight); - } - -@@ -779,7 +800,7 @@ static int context_grow_partitions_on_free_area(Context *context, FreeArea *a) { - assert(a->after->offset != UINT64_MAX); - assert(a->after->current_size != UINT64_MAX); - -- span += round_up_size(a->after->offset + a->after->current_size, 4096) - a->after->offset; -+ span += round_up_size(a->after->offset + a->after->current_size, context->grain_size) - a->after->offset; - } - - for (GrowPartitionPhase phase = 0; phase < _GROW_PARTITION_PHASE_MAX;) { -@@ -799,13 +820,13 @@ static int context_grow_partitions_on_free_area(Context *context, FreeArea *a) { - assert(a->after->new_size != UINT64_MAX); - - /* Calculate new size and align (but ensure this doesn't shrink the size) */ -- m = MAX(a->after->new_size, round_down_size(a->after->new_size + span, 4096)); -+ m = MAX(a->after->new_size, round_down_size(a->after->new_size + span, context->grain_size)); - -- xsz = partition_max_size(a->after); -+ xsz = partition_max_size(context, a->after); - if (xsz != UINT64_MAX && m > xsz) - m = xsz; - -- span = charge_size(span, m - a->after->new_size); -+ span = charge_size(context, span, m - a->after->new_size); - a->after->new_size = m; - } - -@@ -824,13 +845,13 @@ static int context_grow_partitions_on_free_area(Context *context, FreeArea *a) { - continue; - - assert(p->new_size != UINT64_MAX); -- m = MAX(p->new_size, round_down_size(p->new_size + span, 4096)); -+ m = MAX(p->new_size, round_down_size(p->new_size + span, context->grain_size)); - -- xsz = partition_max_size(p); -+ xsz = partition_max_size(context, p); - if (xsz != UINT64_MAX && m > xsz) - m = xsz; - -- span = charge_size(span, m - p->new_size); -+ span = charge_size(context, span, m - p->new_size); - p->new_size = m; - - if (span == 0) -@@ -910,7 +931,7 @@ static void context_place_partitions(Context *context) { - } else - start = context->start; - -- start = round_up_size(start, 4096); -+ start = round_up_size(start, context->grain_size); - left = a->size; - - LIST_FOREACH(partitions, p, context->partitions) { -@@ -1422,6 +1443,8 @@ static int determine_current_padding( - struct fdisk_context *c, - struct fdisk_table *t, - struct fdisk_partition *p, -+ uint64_t secsz, -+ uint64_t grainsz, - uint64_t *ret) { - - size_t n_partitions; -@@ -1435,8 +1458,8 @@ static int determine_current_padding( - return log_error_errno(SYNTHETIC_ERRNO(EIO), "Partition has no end!"); - - offset = fdisk_partition_get_end(p); -- assert(offset < UINT64_MAX / 512); -- offset *= 512; -+ assert(offset < UINT64_MAX / secsz); -+ offset *= secsz; - - n_partitions = fdisk_table_get_nents(t); - for (size_t i = 0; i < n_partitions; i++) { -@@ -1454,8 +1477,8 @@ static int determine_current_padding( - continue; - - start = fdisk_partition_get_start(q); -- assert(start < UINT64_MAX / 512); -- start *= 512; -+ assert(start < UINT64_MAX / secsz); -+ start *= secsz; - - if (start >= offset && (next == UINT64_MAX || next > start)) - next = start; -@@ -1467,16 +1490,16 @@ static int determine_current_padding( - assert(next < UINT64_MAX); - next++; /* The last LBA is one sector before the end */ - -- assert(next < UINT64_MAX / 512); -- next *= 512; -+ assert(next < UINT64_MAX / secsz); -+ next *= secsz; - - if (offset > next) - return log_error_errno(SYNTHETIC_ERRNO(EIO), "Partition end beyond disk end."); - } - - assert(next >= offset); -- offset = round_up_size(offset, 4096); -- next = round_down_size(next, 4096); -+ offset = round_up_size(offset, grainsz); -+ next = round_down_size(next, grainsz); - - *ret = LESS_BY(next, offset); /* Saturated subtraction, rounding might have fucked things up */ - return 0; -@@ -1549,6 +1572,8 @@ static int context_load_partition_table( - bool from_scratch = false; - sd_id128_t disk_uuid; - size_t n_partitions; -+ unsigned long secsz; -+ uint64_t grainsz; - int r; - - assert(context); -@@ -1583,8 +1608,12 @@ static int context_load_partition_table( - if (r < 0) - return log_error_errno(errno, "Failed to stat block device '%s': %m", node); - -- if (S_ISREG(st.st_mode) && st.st_size == 0) -+ if (S_ISREG(st.st_mode) && st.st_size == 0) { -+ /* User the fallback values if we have no better idea */ -+ context->sector_size = 512; -+ context->grain_size = 4096; - return /* from_scratch = */ true; -+ } - - r = -EINVAL; - } -@@ -1602,6 +1631,23 @@ static int context_load_partition_table( - if (flock(fdisk_get_devfd(c), arg_dry_run ? LOCK_SH : LOCK_EX) < 0) - return log_error_errno(errno, "Failed to lock block device: %m"); - -+ /* The offsets/sizes libfdisk returns to us will be in multiple of the sector size of the -+ * device. This is typically 512, and sometimes 4096. Let's query libfdisk once for it, and then use -+ * it for all our needs. Note that the values we use ourselves always are in bytes though, thus mean -+ * the same thing universally. Also note that regardless what kind of sector size is in use we'll -+ * place partitions at multiples of 4K. */ -+ secsz = fdisk_get_sector_size(c); -+ -+ /* Insist on a power of two, and that it's a multiple of 512, i.e. the traditional sector size. */ -+ if (secsz < 512 || secsz != 1UL << log2u64(secsz)) -+ return log_error_errno(errno, "Sector size %lu is not a power of two larger than 512? Refusing.", secsz); -+ -+ /* Use at least 4K, and ensure it's a multiple of the sector size, regardless if that is smaller or -+ * larger */ -+ grainsz = secsz < 4096 ? 4096 : secsz; -+ -+ log_debug("Sector size of device is %lu bytes. Using grain size of %" PRIu64 ".", secsz, grainsz); -+ - switch (arg_empty) { - - case EMPTY_REFUSE: -@@ -1732,12 +1778,12 @@ static int context_load_partition_table( - } - - sz = fdisk_partition_get_size(p); -- assert_se(sz <= UINT64_MAX/512); -- sz *= 512; -+ assert_se(sz <= UINT64_MAX/secsz); -+ sz *= secsz; - - start = fdisk_partition_get_start(p); -- assert_se(start <= UINT64_MAX/512); -- start *= 512; -+ assert_se(start <= UINT64_MAX/secsz); -+ start *= secsz; - - partno = fdisk_partition_get_partno(p); - -@@ -1762,7 +1808,7 @@ static int context_load_partition_table( - pp->current_partition = p; - fdisk_ref_partition(p); - -- r = determine_current_padding(c, t, p, &pp->current_padding); -+ r = determine_current_padding(c, t, p, secsz, grainsz, &pp->current_padding); - if (r < 0) - return r; - -@@ -1795,7 +1841,7 @@ static int context_load_partition_table( - np->current_partition = p; - fdisk_ref_partition(p); - -- r = determine_current_padding(c, t, p, &np->current_padding); -+ r = determine_current_padding(c, t, p, secsz, grainsz, &np->current_padding); - if (r < 0) - return r; - -@@ -1812,26 +1858,26 @@ static int context_load_partition_table( - - add_initial_free_area: - nsectors = fdisk_get_nsectors(c); -- assert(nsectors <= UINT64_MAX/512); -- nsectors *= 512; -+ assert(nsectors <= UINT64_MAX/secsz); -+ nsectors *= secsz; - - first_lba = fdisk_get_first_lba(c); -- assert(first_lba <= UINT64_MAX/512); -- first_lba *= 512; -+ assert(first_lba <= UINT64_MAX/secsz); -+ first_lba *= secsz; - - last_lba = fdisk_get_last_lba(c); - assert(last_lba < UINT64_MAX); - last_lba++; -- assert(last_lba <= UINT64_MAX/512); -- last_lba *= 512; -+ assert(last_lba <= UINT64_MAX/secsz); -+ last_lba *= secsz; - - assert(last_lba >= first_lba); - - if (left_boundary == UINT64_MAX) { - /* No partitions at all? Then the whole disk is up for grabs. */ - -- first_lba = round_up_size(first_lba, 4096); -- last_lba = round_down_size(last_lba, 4096); -+ first_lba = round_up_size(first_lba, grainsz); -+ last_lba = round_down_size(last_lba, grainsz); - - if (last_lba > first_lba) { - r = context_add_free_area(context, last_lba - first_lba, NULL); -@@ -1842,9 +1888,9 @@ add_initial_free_area: - /* Add space left of first partition */ - assert(left_boundary >= first_lba); - -- first_lba = round_up_size(first_lba, 4096); -- left_boundary = round_down_size(left_boundary, 4096); -- last_lba = round_down_size(last_lba, 4096); -+ first_lba = round_up_size(first_lba, grainsz); -+ left_boundary = round_down_size(left_boundary, grainsz); -+ last_lba = round_down_size(last_lba, grainsz); - - if (left_boundary > first_lba) { - r = context_add_free_area(context, left_boundary - first_lba, NULL); -@@ -1856,6 +1902,8 @@ add_initial_free_area: - context->start = first_lba; - context->end = last_lba; - context->total = nsectors; -+ context->sector_size = secsz; -+ context->grain_size = grainsz; - context->fdisk_context = TAKE_PTR(c); - - return from_scratch; -@@ -2360,7 +2408,7 @@ static int context_discard_range( - if (S_ISBLK(st.st_mode)) { - uint64_t range[2], end; - -- range[0] = round_up_size(offset, 512); -+ range[0] = round_up_size(offset, context->sector_size); - - if (offset > UINT64_MAX - size) - return -ERANGE; -@@ -2369,7 +2417,7 @@ static int context_discard_range( - if (end <= range[0]) - return 0; - -- range[1] = round_down_size(end - range[0], 512); -+ range[1] = round_down_size(end - range[0], context->sector_size); - if (range[1] <= 0) - return 0; - -@@ -2519,6 +2567,7 @@ static int context_wipe_and_discard(Context *context, bool from_scratch) { - } - - static int partition_encrypt( -+ Context *context, - Partition *p, - const char *node, - struct crypt_device **ret_cd, -@@ -2532,6 +2581,7 @@ static int partition_encrypt( - sd_id128_t uuid; - int r; - -+ assert(context); - assert(p); - assert(p->encrypt != ENCRYPT_OFF); - -@@ -2579,7 +2629,7 @@ static int partition_encrypt( - volume_key_size, - &(struct crypt_params_luks2) { - .label = strempty(p->new_label), -- .sector_size = 512U, -+ .sector_size = context->sector_size, - }); - if (r < 0) - return log_error_errno(r, "Failed to LUKS2 format future partition: %m"); -@@ -2735,7 +2785,7 @@ static int context_copy_blocks(Context *context) { - if (r < 0) - return log_error_errno(r, "Failed to lock loopback device: %m"); - -- r = partition_encrypt(p, d->node, &cd, &encrypted, &encrypted_dev_fd); -+ r = partition_encrypt(context, p, d->node, &cd, &encrypted, &encrypted_dev_fd); - if (r < 0) - return log_error_errno(r, "Failed to encrypt device: %m"); - -@@ -2988,7 +3038,7 @@ static int context_mkfs(Context *context) { - return log_error_errno(r, "Failed to lock loopback device: %m"); - - if (p->encrypt != ENCRYPT_OFF) { -- r = partition_encrypt(p, d->node, &cd, &encrypted, &encrypted_dev_fd); -+ r = partition_encrypt(context, p, d->node, &cd, &encrypted, &encrypted_dev_fd); - if (r < 0) - return log_error_errno(r, "Failed to encrypt device: %m"); - -@@ -3307,13 +3357,13 @@ static int context_mangle_partitions(Context *context) { - - if (p->new_size != p->current_size) { - assert(p->new_size >= p->current_size); -- assert(p->new_size % 512 == 0); -+ assert(p->new_size % context->sector_size == 0); - - r = fdisk_partition_size_explicit(p->current_partition, true); - if (r < 0) - return log_error_errno(r, "Failed to enable explicit sizing: %m"); - -- r = fdisk_partition_set_size(p->current_partition, p->new_size / 512); -+ r = fdisk_partition_set_size(p->current_partition, p->new_size / context->sector_size); - if (r < 0) - return log_error_errno(r, "Failed to grow partition: %m"); - -@@ -3353,8 +3403,8 @@ static int context_mangle_partitions(Context *context) { - _cleanup_(fdisk_unref_parttypep) struct fdisk_parttype *t = NULL; - - assert(!p->new_partition); -- assert(p->offset % 512 == 0); -- assert(p->new_size % 512 == 0); -+ assert(p->offset % context->sector_size == 0); -+ assert(p->new_size % context->sector_size == 0); - assert(!sd_id128_is_null(p->new_uuid)); - assert(p->new_label); - -@@ -3378,11 +3428,11 @@ static int context_mangle_partitions(Context *context) { - if (r < 0) - return log_error_errno(r, "Failed to enable explicit sizing: %m"); - -- r = fdisk_partition_set_start(q, p->offset / 512); -+ r = fdisk_partition_set_start(q, p->offset / context->sector_size); - if (r < 0) - return log_error_errno(r, "Failed to position partition: %m"); - -- r = fdisk_partition_set_size(q, p->new_size / 512); -+ r = fdisk_partition_set_size(q, p->new_size / context->sector_size); - if (r < 0) - return log_error_errno(r, "Failed to grow partition: %m"); - -@@ -4746,18 +4796,20 @@ done: - } - - static int determine_auto_size(Context *c) { -- uint64_t sum = round_up_size(GPT_METADATA_SIZE, 4096); -+ uint64_t sum; - Partition *p; - - assert_se(c); - -+ sum = round_up_size(GPT_METADATA_SIZE, 4096); -+ - LIST_FOREACH(partitions, p, c->partitions) { - uint64_t m; - - if (p->dropped) - continue; - -- m = partition_min_size_with_padding(p); -+ m = partition_min_size_with_padding(c, p); - if (m > UINT64_MAX - sum) - return log_error_errno(SYNTHETIC_ERRNO(EOVERFLOW), "Image would grow too large, refusing."); - diff --git a/SOURCES/0048-boot-Replace-firmware-security-hooks-directly.patch b/SOURCES/0048-boot-Replace-firmware-security-hooks-directly.patch new file mode 100644 index 0000000..ee3bd53 --- /dev/null +++ b/SOURCES/0048-boot-Replace-firmware-security-hooks-directly.patch @@ -0,0 +1,185 @@ +From 8d0b70887a09b9d4a8b669620579d3b6780f0755 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 15 Nov 2022 18:53:02 +0100 +Subject: [PATCH] boot: Replace firmware security hooks directly + +For some firmware, replacing their own security arch instance with our +override using ReinstallProtocolInterface() is not enough as they will +not use it. This commit goes back to how this was done before by +directly modifying the security protocols. + +Fixes: #25336 +(cherry picked from commit 967a868563996e928f1fade5bcafc82a7219742b) + +Related: #2138081 +--- + src/boot/efi/secure-boot.c | 119 +++++++++++++------------------------ + 1 file changed, 40 insertions(+), 79 deletions(-) + +diff --git a/src/boot/efi/secure-boot.c b/src/boot/efi/secure-boot.c +index 0e615c55e0..65457bf423 100644 +--- a/src/boot/efi/secure-boot.c ++++ b/src/boot/efi/secure-boot.c +@@ -128,15 +128,10 @@ out_deallocate: + } + + static struct SecurityOverride { +- /* Our own security arch instances that we register onto original_handle, thereby replacing the +- * firmware provided instances. */ +- EFI_SECURITY_ARCH_PROTOCOL override; +- EFI_SECURITY2_ARCH_PROTOCOL override2; +- +- /* These are saved so we can uninstall our own instance later. */ +- EFI_HANDLE original_handle, original_handle2; +- EFI_SECURITY_ARCH_PROTOCOL *original_security; +- EFI_SECURITY2_ARCH_PROTOCOL *original_security2; ++ EFI_SECURITY_ARCH_PROTOCOL *security; ++ EFI_SECURITY2_ARCH_PROTOCOL *security2; ++ EFI_SECURITY_FILE_AUTHENTICATION_STATE original_hook; ++ EFI_SECURITY2_FILE_AUTHENTICATION original_hook2; + + security_validator_t validator; + const void *validator_ctx; +@@ -148,13 +143,13 @@ static EFIAPI EFI_STATUS security_hook( + const EFI_DEVICE_PATH *file) { + + assert(security_override.validator); +- assert(security_override.original_security); ++ assert(security_override.security); ++ assert(security_override.original_hook); + + if (security_override.validator(security_override.validator_ctx, file, NULL, 0)) + return EFI_SUCCESS; + +- return security_override.original_security->FileAuthenticationState( +- security_override.original_security, authentication_status, file); ++ return security_override.original_hook(security_override.security, authentication_status, file); + } + + static EFIAPI EFI_STATUS security2_hook( +@@ -165,92 +160,58 @@ static EFIAPI EFI_STATUS security2_hook( + BOOLEAN boot_policy) { + + assert(security_override.validator); +- assert(security_override.original_security2); ++ assert(security_override.security2); ++ assert(security_override.original_hook2); + + if (security_override.validator(security_override.validator_ctx, device_path, file_buffer, file_size)) + return EFI_SUCCESS; + +- return security_override.original_security2->FileAuthentication( +- security_override.original_security2, device_path, file_buffer, file_size, boot_policy); ++ return security_override.original_hook2( ++ security_override.security2, device_path, file_buffer, file_size, boot_policy); + } + +-static EFI_STATUS install_security_override_one( +- EFI_GUID guid, void *override, EFI_HANDLE *ret_original_handle, void **ret_original_security) { ++/* This replaces the platform provided security arch protocols hooks (defined in the UEFI Platform ++ * Initialization Specification) with our own that uses the given validator to decide if a image is to be ++ * trusted. If not running in secure boot or the protocols are not available nothing happens. The override ++ * must be removed with uninstall_security_override() after LoadImage() has been called. ++ * ++ * This is a hack as we do not own the security protocol instances and modifying them is not an official part ++ * of their spec. But there is little else we can do to circumvent secure boot short of implementing our own ++ * PE loader. We could replace the firmware instances with our own instance using ++ * ReinstallProtocolInterface(), but some firmware will still use the old ones. */ ++void install_security_override(security_validator_t validator, const void *validator_ctx) { + EFI_STATUS err; + +- assert(override); +- assert(ret_original_handle); +- assert(ret_original_security); +- +- _cleanup_free_ EFI_HANDLE *handles = NULL; +- size_t n_handles = 0; +- +- err = BS->LocateHandleBuffer(ByProtocol, &guid, NULL, &n_handles, &handles); +- if (err != EFI_SUCCESS) +- /* No security arch protocol around? */ +- return err; +- +- /* There should only ever be one security arch protocol instance, but let's be paranoid here. */ +- assert(n_handles == 1); +- +- void *security = NULL; +- err = BS->LocateProtocol(&guid, NULL, &security); +- if (err != EFI_SUCCESS) +- return log_error_status_stall(err, u"Error getting security arch protocol: %r", err); +- +- err = BS->ReinstallProtocolInterface(handles[0], &guid, security, override); +- if (err != EFI_SUCCESS) +- return log_error_status_stall(err, u"Error overriding security arch protocol: %r", err); +- +- *ret_original_security = security; +- *ret_original_handle = handles[0]; +- return EFI_SUCCESS; +-} +- +-/* This replaces the platform provided security arch protocols (defined in the UEFI Platform Initialization +- * Specification) with the provided override instances. If not running in secure boot or the protocols are +- * not available nothing happens. The override instances are provided with the necessary info to undo this +- * in uninstall_security_override(). */ +-void install_security_override(security_validator_t validator, const void *validator_ctx) { + assert(validator); + + if (!secure_boot_enabled()) + return; + + security_override = (struct SecurityOverride) { +- { .FileAuthenticationState = security_hook, }, +- { .FileAuthentication = security2_hook, }, + .validator = validator, + .validator_ctx = validator_ctx, + }; + +- (void) install_security_override_one( +- (EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, +- &security_override.override, +- &security_override.original_handle, +- (void **) &security_override.original_security); +- (void) install_security_override_one( +- (EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, +- &security_override.override2, +- &security_override.original_handle2, +- (void **) &security_override.original_security2); ++ EFI_SECURITY_ARCH_PROTOCOL *security = NULL; ++ err = BS->LocateProtocol(&(EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, NULL, (void **) &security); ++ if (err == EFI_SUCCESS) { ++ security_override.security = security; ++ security_override.original_hook = security->FileAuthenticationState; ++ security->FileAuthenticationState = security_hook; ++ } ++ ++ EFI_SECURITY2_ARCH_PROTOCOL *security2 = NULL; ++ err = BS->LocateProtocol(&(EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, NULL, (void **) &security2); ++ if (err == EFI_SUCCESS) { ++ security_override.security2 = security2; ++ security_override.original_hook2 = security2->FileAuthentication; ++ security2->FileAuthentication = security2_hook; ++ } + } + + void uninstall_security_override(void) { +- /* We use assert_se here to guarantee the system is not in a weird state in the unlikely case of an +- * error restoring the original protocols. */ +- +- if (security_override.original_handle) +- assert_se(BS->ReinstallProtocolInterface( +- security_override.original_handle, +- &(EFI_GUID) EFI_SECURITY_ARCH_PROTOCOL_GUID, +- &security_override.override, +- security_override.original_security) == EFI_SUCCESS); +- +- if (security_override.original_handle2) +- assert_se(BS->ReinstallProtocolInterface( +- security_override.original_handle2, +- &(EFI_GUID) EFI_SECURITY2_ARCH_PROTOCOL_GUID, +- &security_override.override2, +- security_override.original_security2) == EFI_SUCCESS); ++ if (security_override.original_hook) ++ security_override.security->FileAuthenticationState = security_override.original_hook; ++ if (security_override.original_hook2) ++ security_override.security2->FileAuthentication = security_override.original_hook2; + } diff --git a/SOURCES/0048-mkdir-allow-to-create-directory-whose-path-contains-.patch b/SOURCES/0048-mkdir-allow-to-create-directory-whose-path-contains-.patch deleted file mode 100644 index 5f06daf..0000000 --- a/SOURCES/0048-mkdir-allow-to-create-directory-whose-path-contains-.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 77cde7d38bf8cd3438a867a6330c314f4580e43b Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 2 Feb 2022 14:20:48 +0900 -Subject: [PATCH] mkdir: allow to create directory whose path contains symlink - -Fixes a regression caused by 3008a6f21c1c42efe852d69798a2fdd63fe657ec. - -Before the commit, when `mkdir_parents_internal()` is called from `mkdir_p()`, -it uses `_mkdir()` as `flag` is zero. But after the commit, `mkdir_safe_internal()` -is always used. Hence, if the path contains a symlink, it fails with -ENOTDIR. - -To fix the issue, this makes `mkdir_p()` calls `mkdir_parents_internal()` with -MKDIR_FOLLOW_SYMLINK flag. - -Fixes #22334. - -(cherry picked from commit 5117059ee9f84ed2fd37801ec0b90473db475422) - -Related: #2017035 ---- - src/basic/mkdir.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c -index 6e2b94d024..88782ab0d4 100644 ---- a/src/basic/mkdir.c -+++ b/src/basic/mkdir.c -@@ -162,7 +162,7 @@ int mkdir_p_internal(const char *prefix, const char *path, mode_t mode, uid_t ui - - assert(_mkdirat != mkdirat); - -- r = mkdir_parents_internal(prefix, path, mode, uid, gid, flags, _mkdirat); -+ r = mkdir_parents_internal(prefix, path, mode, uid, gid, flags | MKDIR_FOLLOW_SYMLINK, _mkdirat); - if (r < 0) - return r; - diff --git a/SOURCES/0049-mkdir-CHASE_NONEXISTENT-cannot-used-in-chase_symlink.patch b/SOURCES/0049-mkdir-CHASE_NONEXISTENT-cannot-used-in-chase_symlink.patch deleted file mode 100644 index 3d899a4..0000000 --- a/SOURCES/0049-mkdir-CHASE_NONEXISTENT-cannot-used-in-chase_symlink.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 848b8dde6fe096b317abf0b4996f21c8fe6a39ce Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 2 Feb 2022 15:06:27 +0900 -Subject: [PATCH] mkdir: CHASE_NONEXISTENT cannot used in - chase_symlinks_and_stat() - -(cherry picked from commit e22916e61d1fdb7b46918b605ebf783d9017f9d8) - -Related: #2017035 ---- - src/basic/mkdir.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c -index 88782ab0d4..51a0d74e87 100644 ---- a/src/basic/mkdir.c -+++ b/src/basic/mkdir.c -@@ -42,7 +42,7 @@ int mkdir_safe_internal( - if ((flags & MKDIR_FOLLOW_SYMLINK) && S_ISLNK(st.st_mode)) { - _cleanup_free_ char *p = NULL; - -- r = chase_symlinks_and_stat(path, NULL, CHASE_NONEXISTENT, &p, &st, NULL); -+ r = chase_symlinks_and_stat(path, NULL, 0, &p, &st, NULL); - if (r < 0) - return r; - if (r == 0) diff --git a/SOURCES/0049-networkd-ipv4acd.c-Use-net-if.h-for-getting-IFF_LOOP.patch b/SOURCES/0049-networkd-ipv4acd.c-Use-net-if.h-for-getting-IFF_LOOP.patch new file mode 100644 index 0000000..789b812 --- /dev/null +++ b/SOURCES/0049-networkd-ipv4acd.c-Use-net-if.h-for-getting-IFF_LOOP.patch @@ -0,0 +1,31 @@ +From a43bf9f897002744610a9ea5ce7bdc91c3e3dc83 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 8 Nov 2022 12:21:35 -0800 +Subject: [PATCH] networkd-ipv4acd.c: Use net/if.h for getting IFF_LOOPBACK + definition + +This helps in avoiding compiling errors on musl. Definition of +IFF_LOOPBACK is the reason for including linux/if_arp.h, this however +could be obtained from net/if.h glibc header equally and makes it +portable as well. + +(cherry picked from commit 239e4a42a69c31e55e58618d800e0d68c68931d3) + +Related: #2138081 +--- + src/network/networkd-ipv4acd.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/network/networkd-ipv4acd.c b/src/network/networkd-ipv4acd.c +index 4127657ebd..877dee00ec 100644 +--- a/src/network/networkd-ipv4acd.c ++++ b/src/network/networkd-ipv4acd.c +@@ -1,6 +1,7 @@ + /* SPDX-License-Identifier: LGPL-2.1-or-later */ + +-#include ++#include /* IFF_LOOPBACK */ ++#include /* ARPHRD_ETHER */ + + #include "sd-dhcp-client.h" + #include "sd-ipv4acd.h" diff --git a/SOURCES/0050-Revert-initrd-extend-SYSTEMD_IN_INITRD-to-accept-non.patch b/SOURCES/0050-Revert-initrd-extend-SYSTEMD_IN_INITRD-to-accept-non.patch new file mode 100644 index 0000000..c730373 --- /dev/null +++ b/SOURCES/0050-Revert-initrd-extend-SYSTEMD_IN_INITRD-to-accept-non.patch @@ -0,0 +1,111 @@ +From 94f9a80db599dcc298f3058e5cf2bb60c4972228 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 24 Nov 2022 13:58:39 +0100 +Subject: [PATCH] Revert "initrd: extend SYSTEMD_IN_INITRD to accept non-ramfs + rootfs" + +This reverts commit 1f22621ba33f8089d2ae5fbcaf8b3970dd68aaf0. + +This is a replacement for b1fd5cd4eda02a323db93d7daa97f5138f89677d. See that +commit for details. + +Related: #2138081 +--- + docs/ENVIRONMENT.md | 10 +++------- + src/basic/util.c | 47 ++++++++------------------------------------- + 2 files changed, 11 insertions(+), 46 deletions(-) + +diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md +index a840dd0c90..ab3add6031 100644 +--- a/docs/ENVIRONMENT.md ++++ b/docs/ENVIRONMENT.md +@@ -73,13 +73,9 @@ All tools: + (relevant in particular for the system manager and `systemd-hostnamed`). + Must be a valid hostname (either a single label or a FQDN). + +-* `$SYSTEMD_IN_INITRD=[auto|lenient|0|1]` — if set, specifies initrd detection +- method. Defaults to `auto`. Behavior is defined as follows: +- `auto`: Checks if `/etc/initrd-release` exists, and a temporary fs is mounted +- on `/`. If both conditions meet, then it's in initrd. +- `lenient`: Similar to `auto`, but the rootfs check is skipped. +- `0|1`: Simply overrides initrd detection. This is useful for debugging and +- testing initrd-only programs in the main system. ++* `$SYSTEMD_IN_INITRD` — takes a boolean. If set, overrides initrd detection. ++ This is useful for debugging and testing initrd-only programs in the main ++ system. + + * `$SYSTEMD_BUS_TIMEOUT=SECS` — specifies the maximum time to wait for method call + completion. If no time unit is specified, assumes seconds. The usual other units +diff --git a/src/basic/util.c b/src/basic/util.c +index d7ef382737..981f917fab 100644 +--- a/src/basic/util.c ++++ b/src/basic/util.c +@@ -52,13 +52,11 @@ int prot_from_flags(int flags) { + + bool in_initrd(void) { + int r; +- const char *e; +- bool lenient = false; + + if (saved_in_initrd >= 0) + return saved_in_initrd; + +- /* We have two checks here: ++ /* We make two checks here: + * + * 1. the flag file /etc/initrd-release must exist + * 2. the root file system must be a memory file system +@@ -66,46 +64,17 @@ bool in_initrd(void) { + * The second check is extra paranoia, since misdetecting an + * initrd can have bad consequences due the initrd + * emptying when transititioning to the main systemd. +- * +- * If env var $SYSTEMD_IN_INITRD is not set or set to "auto", +- * both checks are used. If it's set to "lenient", only check +- * 1 is used. If set to a boolean value, then the boolean +- * value is returned. + */ + +- e = secure_getenv("SYSTEMD_IN_INITRD"); +- if (e) { +- if (streq(e, "lenient")) +- lenient = true; +- else if (!streq(e, "auto")) { +- r = parse_boolean(e); +- if (r >= 0) { +- saved_in_initrd = r > 0; +- return saved_in_initrd; +- } +- log_debug_errno(r, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m"); +- } +- } +- +- if (!lenient) { +- r = path_is_temporary_fs("/"); +- if (r < 0) +- log_debug_errno(r, "Couldn't determine if / is a temporary file system: %m"); ++ r = getenv_bool_secure("SYSTEMD_IN_INITRD"); ++ if (r < 0 && r != -ENXIO) ++ log_debug_errno(r, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m"); + ++ if (r >= 0) + saved_in_initrd = r > 0; +- } +- +- r = access("/etc/initrd-release", F_OK); +- if (r >= 0) { +- if (saved_in_initrd == 0) +- log_debug("/etc/initrd-release exists, but it's not an initrd."); +- else +- saved_in_initrd = 1; +- } else { +- if (errno != ENOENT) +- log_debug_errno(errno, "Failed to test if /etc/initrd-release exists: %m"); +- saved_in_initrd = 0; +- } ++ else ++ saved_in_initrd = access("/etc/initrd-release", F_OK) >= 0 && ++ path_is_temporary_fs("/") > 0; + + return saved_in_initrd; + } diff --git a/SOURCES/0050-meson-move-efi-file-lists-closer-to-where-they-are-u.patch b/SOURCES/0050-meson-move-efi-file-lists-closer-to-where-they-are-u.patch deleted file mode 100644 index 59c3aef..0000000 --- a/SOURCES/0050-meson-move-efi-file-lists-closer-to-where-they-are-u.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 9cfc2fd3c58609252b3fd203af95bec1aab1b832 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 23 Dec 2021 12:55:40 +0100 -Subject: [PATCH] meson: move efi file lists closer to where they are used - -The goal is to have the detection of features and paths done first, and -then the build target constructions second. - -(cherry picked from commit 65dcf9f9a0d877de0dc53558547462a7f1750c78) - -Related: #2017035 ---- - src/boot/efi/meson.build | 104 +++++++++++++++++++-------------------- - 1 file changed, 51 insertions(+), 53 deletions(-) - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index e10e51cf4e..1125c64ea3 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -99,59 +99,6 @@ if efi_lds == '' - subdir_done() - endif - --efi_headers = files(''' -- bcd.h -- console.h -- cpio.h -- devicetree.h -- disk.h -- drivers.h -- graphics.h -- linux.h -- measure.h -- missing_efi.h -- pe.h -- random-seed.h -- shim.h -- splash.h -- util.h -- xbootldr.h --'''.split()) -- --common_sources = ''' -- assert.c -- devicetree.c -- disk.c -- graphics.c -- measure.c -- pe.c -- secure-boot.c -- util.c --'''.split() -- --systemd_boot_sources = ''' -- bcd.c -- boot.c -- console.c -- drivers.c -- random-seed.c -- shim.c -- xbootldr.c --'''.split() -- --stub_sources = ''' -- cpio.c -- initrd.c -- splash.c -- stub.c --'''.split() -- --if efi_arch[1] in ['ia32', 'x86_64'] -- stub_sources += 'linux_x86.c' --else -- stub_sources += 'linux.c' --endif -- - conf.set10('HAVE_GNU_EFI', true) - conf.set_quoted('EFI_MACHINE_TYPE_NAME', efi_arch[0]) - -@@ -332,6 +279,57 @@ if efi_cc_version.contains('clang') and efi_cc_version.split('.')[0].split(' ')[ - efi_ldflags += ['-Wl,-T,' + efi_lds, '-Wno-unused-command-line-argument'] - endif - -+############################################################ -+ -+efi_headers = files( -+ 'bcd.h', -+ 'console.h', -+ 'cpio.h', -+ 'devicetree.h', -+ 'disk.h', -+ 'drivers.h', -+ 'graphics.h', -+ 'linux.h', -+ 'measure.h', -+ 'missing_efi.h', -+ 'pe.h', -+ 'random-seed.h', -+ 'shim.h', -+ 'splash.h', -+ 'util.h', -+ 'xbootldr.h') -+ -+common_sources = [ -+ 'assert.c', -+ 'devicetree.c', -+ 'disk.c', -+ 'graphics.c', -+ 'measure.c', -+ 'pe.c', -+ 'secure-boot.c', -+ 'util.c'] -+ -+systemd_boot_sources = [ -+ 'bcd.c', -+ 'boot.c', -+ 'console.c', -+ 'drivers.c', -+ 'random-seed.c', -+ 'shim.c', -+ 'xbootldr.c'] -+ -+stub_sources = [ -+ 'cpio.c', -+ 'initrd.c', -+ 'splash.c', -+ 'stub.c'] -+ -+if efi_arch[1] in ['ia32', 'x86_64'] -+ stub_sources += 'linux_x86.c' -+else -+ stub_sources += 'linux.c' -+endif -+ - systemd_boot_objects = [] - stub_objects = [] - foreach file : fundamental_source_paths + common_sources + systemd_boot_sources + stub_sources diff --git a/SOURCES/0051-meson-move-efi-summary-section-to-src-boot-efi.patch b/SOURCES/0051-meson-move-efi-summary-section-to-src-boot-efi.patch deleted file mode 100644 index d448f5f..0000000 --- a/SOURCES/0051-meson-move-efi-summary-section-to-src-boot-efi.patch +++ /dev/null @@ -1,77 +0,0 @@ -From a6c93d3200c0fd0eeee3a725b428cee94108cf48 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 23 Dec 2021 13:05:01 +0100 -Subject: [PATCH] meson: move efi summary() section to src/boot/efi - -This way we can add the entries more naturally in the same place where -they are defined. - -(cherry picked from commit 3f871f120520aa2d11218735b0741bacc0309b4d) - -Related: #2017035 ---- - meson.build | 16 ++++------------ - src/boot/efi/meson.build | 9 +++++++++ - 2 files changed, 13 insertions(+), 12 deletions(-) - -diff --git a/meson.build b/meson.build -index e07875a054..f040eeab99 100644 ---- a/meson.build -+++ b/meson.build -@@ -43,6 +43,10 @@ endif - skip_deps = want_ossfuzz or want_libfuzzer - fuzzer_build = want_ossfuzz or want_libfuzzer - -+# Create a title-less summary section early, so it ends up first in the output. -+# More items are added later after they have been detected. -+summary({'build mode' : get_option('mode')}) -+ - ##################################################################### - - # Try to install the git pre-commit hook -@@ -3902,7 +3906,6 @@ alt_time_epoch = run_command('date', '-Is', '-u', '-d', '@@0@'.format(time_epoch - check : true).stdout().strip() - - summary({ -- 'build mode' : get_option('mode'), - 'split /usr' : split_usr, - 'split bin-sbin' : split_bin, - 'prefix directory' : prefixdir, -@@ -3960,17 +3963,6 @@ summary({ - # CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} - # LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS} - --if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_GNU_EFI') == 1 -- summary({ -- 'EFI machine type' : efi_arch[0], -- 'EFI CC' : '@0@'.format(' '.join(efi_cc)), -- 'EFI LD' : efi_ld, -- 'EFI lds' : efi_lds, -- 'EFI crt0' : efi_crt0, -- 'EFI include directory' : efi_incdir}, -- section : 'Extensible Firmware Interface') --endif -- - found = [] - missing = [] - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 1125c64ea3..dd318079fc 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -279,6 +279,15 @@ if efi_cc_version.contains('clang') and efi_cc_version.split('.')[0].split(' ')[ - efi_ldflags += ['-Wl,-T,' + efi_lds, '-Wno-unused-command-line-argument'] - endif - -+summary({ -+ 'EFI machine type' : efi_arch[0], -+ 'EFI CC' : '@0@'.format(' '.join(efi_cc)), -+ 'EFI LD' : efi_ld, -+ 'EFI lds' : efi_lds, -+ 'EFI crt0' : efi_crt0, -+ 'EFI include directory' : efi_incdir}, -+ section : 'Extensible Firmware Interface') -+ - ############################################################ - - efi_headers = files( diff --git a/SOURCES/0051-pid1-skip-cleanup-if-root-is-not-tmpfs-ramfs.patch b/SOURCES/0051-pid1-skip-cleanup-if-root-is-not-tmpfs-ramfs.patch new file mode 100644 index 0000000..83e511c --- /dev/null +++ b/SOURCES/0051-pid1-skip-cleanup-if-root-is-not-tmpfs-ramfs.patch @@ -0,0 +1,124 @@ +From 7b6a09c47f1fee035c4b42840fabf65edce12aa8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 7 Nov 2022 12:40:20 +0100 +Subject: [PATCH] pid1: skip cleanup if root is not tmpfs/ramfs + +in_initrd() was really doing two things: checking if we're in the initrd, and +also verifying that the initrd is set up correctly. But this second check is +complicated, in particular it would return false for overlayfs, even with an +upper tmpfs layer. It also doesn't support the use case of having an initial +initrd with tmpfs, and then transitioning into an intermediate initrd that is +e.g. a DDI, i.e. a filesystem possibly with verity arranged as a disk image. + +We don't need to check if we're in initrd in every program. Instead, concerns +are separated: +- in_initrd() just does a simple check for /etc/initrd-release. +- When doing cleanup, pid1 checks if it's on a tmpfs before starting to wipe + the old root. The only case where we want to remove the old root is when + we're on a plain tempory filesystem. With an overlay, we'd be creating + whiteout files, which is not very useful. (*) + +This should resolve https://bugzilla.redhat.com/show_bug.cgi?id=2137631 +which is caused by systemd refusing to treat the system as an initrd because +overlayfs is used. + +(*) I think the idea of keeping the initrd fs around for shutdown is outdated. +We should just have a completely separate exitrd that is unpacked when we want +to shut down. This way, we don't waste memory at runtime, and we also don't +transition to a potentially older version of systemd. But we don't have support +for this yet. + +This replaces 0fef5b0f0bd9ded1ae7bcb3e4e4b2893e36c51a6. + +(cherry picked from commit a940f507fbe1c81d6787dc0b7ce232c39818eec9) + +Related: #2138081 +--- + src/basic/util.c | 19 ++++++++----------- + src/shared/switch-root.c | 22 ++++++++++++---------- + 2 files changed, 20 insertions(+), 21 deletions(-) + +diff --git a/src/basic/util.c b/src/basic/util.c +index 981f917fab..e6aaa2dc9b 100644 +--- a/src/basic/util.c ++++ b/src/basic/util.c +@@ -56,14 +56,8 @@ bool in_initrd(void) { + if (saved_in_initrd >= 0) + return saved_in_initrd; + +- /* We make two checks here: +- * +- * 1. the flag file /etc/initrd-release must exist +- * 2. the root file system must be a memory file system +- * +- * The second check is extra paranoia, since misdetecting an +- * initrd can have bad consequences due the initrd +- * emptying when transititioning to the main systemd. ++ /* If /etc/initrd-release exists, we're in an initrd. ++ * This can be overridden by setting SYSTEMD_IN_INITRD=0|1. + */ + + r = getenv_bool_secure("SYSTEMD_IN_INITRD"); +@@ -72,9 +66,12 @@ bool in_initrd(void) { + + if (r >= 0) + saved_in_initrd = r > 0; +- else +- saved_in_initrd = access("/etc/initrd-release", F_OK) >= 0 && +- path_is_temporary_fs("/") > 0; ++ else { ++ r = access("/etc/initrd-release", F_OK); ++ if (r < 0 && errno != ENOENT) ++ log_debug_errno(r, "Failed to check if /etc/initrd-release exists, assuming it does not: %m"); ++ saved_in_initrd = r >= 0; ++ } + + return saved_in_initrd; + } +diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c +index 1a444841fa..4cad3551a6 100644 +--- a/src/shared/switch-root.c ++++ b/src/shared/switch-root.c +@@ -32,7 +32,6 @@ int switch_root(const char *new_root, + + _cleanup_free_ char *resolved_old_root_after = NULL; + _cleanup_close_ int old_root_fd = -1; +- bool old_root_remove; + int r; + + assert(new_root); +@@ -42,12 +41,16 @@ int switch_root(const char *new_root, + return 0; + + /* Check if we shall remove the contents of the old root */ +- old_root_remove = in_initrd(); +- if (old_root_remove) { +- old_root_fd = open("/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY|O_DIRECTORY); +- if (old_root_fd < 0) +- return log_error_errno(errno, "Failed to open root directory: %m"); +- } ++ old_root_fd = open("/", O_RDONLY | O_CLOEXEC | O_DIRECTORY); ++ if (old_root_fd < 0) ++ return log_error_errno(errno, "Failed to open root directory: %m"); ++ r = fd_is_temporary_fs(old_root_fd); ++ if (r < 0) ++ return log_error_errno(r, "Failed to stat root directory: %m"); ++ if (r > 0) ++ log_debug("Root directory is on tmpfs, will do cleanup later."); ++ else ++ old_root_fd = safe_close(old_root_fd); + + /* Determine where we shall place the old root after the transition */ + r = chase_symlinks(old_root_after, new_root, CHASE_PREFIX_ROOT|CHASE_NONEXISTENT, &resolved_old_root_after, NULL); +@@ -117,9 +120,8 @@ int switch_root(const char *new_root, + struct stat rb; + + if (fstat(old_root_fd, &rb) < 0) +- log_warning_errno(errno, "Failed to stat old root directory, leaving: %m"); +- else +- (void) rm_rf_children(TAKE_FD(old_root_fd), 0, &rb); /* takes possession of the dir fd, even on failure */ ++ return log_error_errno(errno, "Failed to stat old root directory: %m"); ++ (void) rm_rf_children(TAKE_FD(old_root_fd), 0, &rb); /* takes possession of the dir fd, even on failure */ + } + + return 0; diff --git a/SOURCES/0052-ac-power-check-battery-existence-and-status.patch b/SOURCES/0052-ac-power-check-battery-existence-and-status.patch new file mode 100644 index 0000000..0c186a2 --- /dev/null +++ b/SOURCES/0052-ac-power-check-battery-existence-and-status.patch @@ -0,0 +1,106 @@ +From 2ac7d7a818788110342a99978680485fbe27cc25 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 11 Nov 2022 13:54:03 +0900 +Subject: [PATCH] ac-power: check battery existence and status + +If a battery is not present or its status is not discharging, then +the battery should not be used as a power source. +Let's count batteries currently discharging. + +Fixes #25316. + +(cherry picked from commit 1c03f7f4ba419aa65997e90accc0d935ae1cfbc5) + +Related: #2138081 +--- + src/shared/udev-util.c | 58 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 44 insertions(+), 14 deletions(-) + +diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c +index aac02cd61b..7d95353452 100644 +--- a/src/shared/udev-util.c ++++ b/src/shared/udev-util.c +@@ -642,9 +642,46 @@ static int device_is_power_sink(sd_device *device) { + return found_sink || !found_source; + } + ++static bool battery_is_discharging(sd_device *d) { ++ const char *val; ++ int r; ++ ++ assert(d); ++ ++ r = sd_device_get_sysattr_value(d, "scope", &val); ++ if (r < 0) { ++ if (r != -ENOENT) ++ log_device_debug_errno(d, r, "Failed to read 'scope' sysfs attribute, ignoring: %m"); ++ } else if (streq(val, "Device")) { ++ log_device_debug(d, "The power supply is a device battery, ignoring device."); ++ return false; ++ } ++ ++ r = device_get_sysattr_bool(d, "present"); ++ if (r < 0) ++ log_device_debug_errno(d, r, "Failed to read 'present' sysfs attribute, assuming the battery is present: %m"); ++ else if (r == 0) { ++ log_device_debug(d, "The battery is not present, ignoring the power supply."); ++ return false; ++ } ++ ++ /* Possible values: "Unknown", "Charging", "Discharging", "Not charging", "Full" */ ++ r = sd_device_get_sysattr_value(d, "status", &val); ++ if (r < 0) { ++ log_device_debug_errno(d, r, "Failed to read 'status' sysfs attribute, assuming the battery is discharging: %m"); ++ return true; ++ } ++ if (!streq(val, "Discharging")) { ++ log_device_debug(d, "The battery status is '%s', assuming the battery is not used as a power source of this machine.", val); ++ return false; ++ } ++ ++ return true; ++} ++ + int on_ac_power(void) { + _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; +- bool found_ac_online = false, found_battery = false; ++ bool found_ac_online = false, found_discharging_battery = false; + sd_device *d; + int r; + +@@ -686,17 +723,10 @@ int on_ac_power(void) { + } + + if (streq(val, "Battery")) { +- r = sd_device_get_sysattr_value(d, "scope", &val); +- if (r < 0) { +- if (r != -ENOENT) +- log_device_debug_errno(d, r, "Failed to read 'scope' sysfs attribute, ignoring: %m"); +- } else if (streq(val, "Device")) { +- log_device_debug(d, "The power supply is a device battery, ignoring device."); +- continue; ++ if (battery_is_discharging(d)) { ++ found_discharging_battery = true; ++ log_device_debug(d, "The power supply is a battery and currently discharging."); + } +- +- found_battery = true; +- log_device_debug(d, "The power supply is battery."); + continue; + } + +@@ -713,11 +743,11 @@ int on_ac_power(void) { + if (found_ac_online) { + log_debug("Found at least one online non-battery power supply, system is running on AC."); + return true; +- } else if (found_battery) { +- log_debug("Found battery and no online power sources, assuming system is running from battery."); ++ } else if (found_discharging_battery) { ++ log_debug("Found at least one discharging battery and no online power sources, assuming system is running from battery."); + return false; + } else { +- log_debug("No power supply reported online and no battery, assuming system is running on AC."); ++ log_debug("No power supply reported online and no discharging battery found, assuming system is running on AC."); + return true; + } + } diff --git a/SOURCES/0052-meson-report-SBAT-settings.patch b/SOURCES/0052-meson-report-SBAT-settings.patch deleted file mode 100644 index c8e5584..0000000 --- a/SOURCES/0052-meson-report-SBAT-settings.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 340f8e02cf4db0e6b3733bfcc14630b3ce8181a5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 23 Dec 2021 13:19:42 +0100 -Subject: [PATCH] meson: report SBAT settings - -(cherry picked from commit e4e44a0107645891e82a538100a7590eb59a516c) - -Related: #2017035 ---- - src/boot/efi/meson.build | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index dd318079fc..e628068596 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -130,7 +130,6 @@ elif get_option('sbat-distro') != '' - if (value == '' or value == 'auto') and not meson.is_cross_build() - cmd = 'if [ -e /etc/os-release ]; then . /etc/os-release; else . /usr/lib/os-release; fi; echo $@0@'.format(sbatvar[1]) - value = run_command(sh, '-c', cmd).stdout().strip() -- message('@0@ (from @1@): @2@'.format(sbatvar[0], sbatvar[1], value)) - endif - if value == '' - error('Required @0@ option not set and autodetection failed'.format(sbatvar[0])) -@@ -147,8 +146,11 @@ elif get_option('sbat-distro') != '' - pkgver = get_option('sbat-distro-version') - if pkgver == '' - efi_conf.set('SBAT_DISTRO_VERSION', 'GIT_VERSION') -+ # This is determined during build, not configuration, so we can't display it yet. -+ sbat_distro_version_display = '(git version)' - else - efi_conf.set_quoted('SBAT_DISTRO_VERSION', pkgver) -+ sbat_distro_version_display = pkgver - endif - endif - -@@ -288,6 +290,16 @@ summary({ - 'EFI include directory' : efi_incdir}, - section : 'Extensible Firmware Interface') - -+if efi_conf.get('SBAT_DISTRO', '') != '' -+ summary({ -+ 'SBAT distro': efi_conf.get('SBAT_DISTRO'), -+ 'SBAT distro generation': efi_conf.get('SBAT_DISTRO_GENERATION'), -+ 'SBAT distro version': sbat_distro_version_display, -+ 'SBAT distro summary': efi_conf.get('SBAT_DISTRO_SUMMARY'), -+ 'SBAT distro URL': efi_conf.get('SBAT_DISTRO_URL')}, -+ section : 'Extensible Firmware Interface') -+endif -+ - ############################################################ - - efi_headers = files( diff --git a/SOURCES/0053-boot-Build-BCD-parser-only-on-arches-supported-by-Wi.patch b/SOURCES/0053-boot-Build-BCD-parser-only-on-arches-supported-by-Wi.patch deleted file mode 100644 index 3e6a7d4..0000000 --- a/SOURCES/0053-boot-Build-BCD-parser-only-on-arches-supported-by-Wi.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 2d3b47dcd5a4b356c481f89c483db3eb308fcab9 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Tue, 28 Dec 2021 13:10:39 +0100 -Subject: [PATCH] boot: Build BCD parser only on arches supported by Windows - -(cherry picked from commit 77fcf28cb88b302453b4c991a6571cb37f10634d) - -Related: #2017035 ---- - src/boot/efi/boot.c | 2 ++ - src/boot/efi/meson.build | 21 ++++++++++++--------- - 2 files changed, 14 insertions(+), 9 deletions(-) - -diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c -index 0286914b8b..83358406f2 100644 ---- a/src/boot/efi/boot.c -+++ b/src/boot/efi/boot.c -@@ -1941,6 +1941,7 @@ static void config_entry_add_osx(Config *config) { - } - - static void config_entry_add_windows(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir) { -+#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) - _cleanup_freepool_ CHAR8 *bcd = NULL; - CHAR16 *title = NULL; - EFI_STATUS err; -@@ -1961,6 +1962,7 @@ static void config_entry_add_windows(Config *config, EFI_HANDLE *device, EFI_FIL - config_entry_add_loader_auto(config, device, root_dir, NULL, - L"auto-windows", 'w', title ?: L"Windows Boot Manager", - L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi"); -+#endif - } - - static void config_entry_add_linux( -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index e628068596..6a0c8da9ba 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -331,7 +331,6 @@ common_sources = [ - 'util.c'] - - systemd_boot_sources = [ -- 'bcd.c', - 'boot.c', - 'console.c', - 'drivers.c', -@@ -351,6 +350,18 @@ else - stub_sources += 'linux.c' - endif - -+# BCD parser only makes sense on arches that Windows supports. -+if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] -+ systemd_boot_sources += 'bcd.c' -+ tests += [ -+ [['src/boot/efi/test-bcd.c'], -+ [], -+ [libzstd], -+ [], -+ 'HAVE_ZSTD'], -+ ] -+endif -+ - systemd_boot_objects = [] - stub_objects = [] - foreach file : fundamental_source_paths + common_sources + systemd_boot_sources + stub_sources -@@ -408,14 +419,6 @@ endforeach - - ############################################################ - --tests += [ -- [['src/boot/efi/test-bcd.c'], -- [], -- [libzstd], -- [], -- 'HAVE_ZSTD'], --] -- - test_efi_disk_img = custom_target( - 'test-efi-disk.img', - input : [efi_stubs[0][0], efi_stubs[1][1]], diff --git a/SOURCES/0053-systemctl-do-not-show-unit-properties-with-all.patch b/SOURCES/0053-systemctl-do-not-show-unit-properties-with-all.patch new file mode 100644 index 0000000..eee52a5 --- /dev/null +++ b/SOURCES/0053-systemctl-do-not-show-unit-properties-with-all.patch @@ -0,0 +1,34 @@ +From c2317e2a2be2dd39266b82712ec9569a86f7fde3 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 21:10:56 +0900 +Subject: [PATCH] systemctl: do not show unit properties with --all + +Fixes a bug introduced by a6e334649d4bdff0c6f664e98666b2223aa21a8b. + +Fixes #25343. + +(cherry picked from commit 0b51a1c8c4c77f98a8c234cd2c7a7849329be027) + +Related: #2138081 +--- + src/systemctl/systemctl-show.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c +index 8d3db98c0a..24c7d564b8 100644 +--- a/src/systemctl/systemctl-show.c ++++ b/src/systemctl/systemctl-show.c +@@ -2207,9 +2207,10 @@ int verb_show(int argc, char *argv[], void *userdata) { + + if (!arg_states && !arg_types) { + if (show_mode == SYSTEMCTL_SHOW_PROPERTIES) +- r = show_one(bus, "/org/freedesktop/systemd1", NULL, show_mode, &new_line, &ellipsized); +- else +- r = show_system_status(bus); ++ /* systemctl show --all → show properties of the manager */ ++ return show_one(bus, "/org/freedesktop/systemd1", NULL, show_mode, &new_line, &ellipsized); ++ ++ r = show_system_status(bus); + if (r < 0) + return r; + diff --git a/SOURCES/0054-Fix-reading-etc-machine-id-in-kernel-install-25388.patch b/SOURCES/0054-Fix-reading-etc-machine-id-in-kernel-install-25388.patch new file mode 100644 index 0000000..be70de1 --- /dev/null +++ b/SOURCES/0054-Fix-reading-etc-machine-id-in-kernel-install-25388.patch @@ -0,0 +1,46 @@ +From abbfdf2aa3e17a84d0f4075f125e670defaf7296 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marcus=20Sch=C3=A4fer?= +Date: Wed, 16 Nov 2022 00:17:19 +0100 +Subject: [PATCH] Fix reading /etc/machine-id in kernel-install (#25388) + +* Fix reading /etc/machine-id in kernel-install + +The kernel-install script has code to read the contents of +/etc/machine-id into the MACHINE_ID variable. Depending +on the variable content kernel-install either logs the +value or creates a new machine id via 'systemd-id128 new'. +In that logic there is one issue. If the file /etc/machine-id +exists but is empty, the script tries to call read on an +empty file which return with an exit code != 0. As the +script code also uses 'set -e', kernel-install will exit at +this point which is unexpected. + +The condition of an empty /etc/machine-id file exists for +example when building OS images, which should initialize the +system id on first boot but not staticly inside of the image. +afaik an empty /etc/machine-id is also a common approach +to make systemd indicate that it should create a new system +id. Because of this, the commit makes sure the reading of +/etc/machine-id does not fail in any case such that the +handling of the MACHINE_ID variable takes place. + +(cherry picked from commit 883e7cbfc0dba6c81338e7924419b5cbb0cba0b2) + +Related: #2138081 +--- + src/kernel-install/kernel-install.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in +index 22eb4d2be1..bba22f8a20 100755 +--- a/src/kernel-install/kernel-install.in ++++ b/src/kernel-install/kernel-install.in +@@ -158,7 +158,7 @@ if [ -z "$MACHINE_ID" ] && [ -f /etc/machine-info ]; then + [ -n "$MACHINE_ID" ] && \ + log_verbose "machine-id $MACHINE_ID acquired from /etc/machine-info" + fi +-if [ -z "$MACHINE_ID" ] && [ -f /etc/machine-id ]; then ++if [ -z "$MACHINE_ID" ] && [ -s /etc/machine-id ]; then + read -r MACHINE_ID -Date: Wed, 29 Dec 2021 15:02:04 +0100 -Subject: [PATCH] meson: Remove efi-cc option - -Changing the efi compiler this way doesn't really work. The gnu-efi -header checks as well as supported compiler flag checks use the -regular cc that meson detects. Changing the compiler this way will -end up with bad compiler flags. For the very same reason, this does -not work with a cross-compiler without going through proper meson -cross-compilation steps either. - -The proper way to build systemd-boot with a different compiler is to -use a different build folder and then just use the proper ninja build -target to only build the bootloader/stub. - -(cherry picked from commit 52adf0e91ef00d21a2e83f7669d0823667ce6b6c) - -Related: #2017035 ---- - meson_options.txt | 2 -- - src/boot/efi/meson.build | 14 ++++---------- - 2 files changed, 4 insertions(+), 12 deletions(-) - -diff --git a/meson_options.txt b/meson_options.txt -index 401f0933d7..62cdeb4201 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -414,8 +414,6 @@ option('dbus', type : 'combo', choices : ['auto', 'true', 'false'], - - option('gnu-efi', type : 'combo', choices : ['auto', 'true', 'false'], - description : 'gnu-efi support for sd-boot') --option('efi-cc', type : 'array', -- description : 'the compiler to use for EFI modules') - # Note that LLD does not support PE/COFF relocations - # https://lists.llvm.org/pipermail/llvm-dev/2021-March/149234.html - option('efi-ld', type : 'combo', choices : ['auto', 'bfd', 'gold'], -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 6a0c8da9ba..11e6bf2dd0 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -44,10 +44,6 @@ if not cc.has_header_symbol('efi.h', 'EFI_IMAGE_MACHINE_X64', - endif - - objcopy = find_program('objcopy') --efi_cc = get_option('efi-cc') --if efi_cc.length() == 0 -- efi_cc = cc.cmd_array() --endif - - efi_ld = get_option('efi-ld') - if efi_ld == 'auto' -@@ -62,7 +58,7 @@ efi_libdir = '' - foreach dir : [get_option('efi-libdir'), - '/usr/lib/gnuefi' / efi_arch[0], - run_command('realpath', '-e', -- '/usr/lib' / run_command(efi_cc, '-print-multi-os-directory').stdout().strip()).stdout().strip()] -+ '/usr/lib' / run_command(cc.cmd_array(), '-print-multi-os-directory').stdout().strip()).stdout().strip()] - if dir != '' and fs.is_dir(dir) - efi_libdir = dir - break -@@ -275,15 +271,13 @@ if run_command('grep', '-q', '__CTOR_LIST__', efi_lds).returncode() == 0 - ] - endif - --efi_cc_version = run_command(efi_cc, '--version').stdout().split('\n')[0] --if efi_cc_version.contains('clang') and efi_cc_version.split('.')[0].split(' ')[-1].to_int() <= 10 -+if cc.get_id() == 'clang' and cc.version().split('.')[0].to_int() <= 10 - # clang <= 10 doesn't pass -T to the linker and then even complains about it being unused - efi_ldflags += ['-Wl,-T,' + efi_lds, '-Wno-unused-command-line-argument'] - endif - - summary({ - 'EFI machine type' : efi_arch[0], -- 'EFI CC' : '@0@'.format(' '.join(efi_cc)), - 'EFI LD' : efi_ld, - 'EFI lds' : efi_lds, - 'EFI crt0' : efi_crt0, -@@ -368,7 +362,7 @@ foreach file : fundamental_source_paths + common_sources + systemd_boot_sources - o_file = custom_target(file.split('/')[-1] + '.o', - input : file, - output : file.split('/')[-1] + '.o', -- command : [efi_cc, '-c', '@INPUT@', '-o', '@OUTPUT@', efi_cflags], -+ command : [cc.cmd_array(), '-c', '@INPUT@', '-o', '@OUTPUT@', efi_cflags], - depend_files : efi_headers + fundamental_headers) - if (fundamental_source_paths + common_sources + systemd_boot_sources).contains(file) - systemd_boot_objects += o_file -@@ -389,7 +383,7 @@ foreach tuple : [['systemd_boot.so', systemd_boot_efi_name, systemd_boot_objects - tuple[0], - input : tuple[2], - output : tuple[0], -- command : [efi_cc, '-o', '@OUTPUT@', efi_ldflags, efi_cflags, tuple[2], '-lefi', '-lgnuefi', '-lgcc'], -+ command : [cc.cmd_array(), '-o', '@OUTPUT@', efi_ldflags, efi_cflags, tuple[2], '-lefi', '-lgnuefi', '-lgcc'], - install : tuple[3], - install_dir : bootlibdir) - diff --git a/SOURCES/0055-Revert-journal-Make-sd_journal_previous-next-return-.patch b/SOURCES/0055-Revert-journal-Make-sd_journal_previous-next-return-.patch new file mode 100644 index 0000000..e9e503d --- /dev/null +++ b/SOURCES/0055-Revert-journal-Make-sd_journal_previous-next-return-.patch @@ -0,0 +1,83 @@ +From 29c414e616f39e06d585ce6ecf25bb226963d0bc Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Mon, 14 Nov 2022 12:45:47 +0100 +Subject: [PATCH] Revert "journal: Make sd_journal_previous/next() return 0 at + HEAD/TAIL" + +This commit broke backwards compatibility so let's revert it until +we find a better solution. + +This reverts commit 977ad21b5b8f6323515297bd8995dcaaca0905df. + +(cherry picked from commit 1db6dbb1dcdacfd7d2b4c84562fc6e77bc8c43a5) + +Related: #2138081 +--- + src/journal/test-journal-interleaving.c | 4 ---- + src/libsystemd/sd-journal/sd-journal.c | 8 ++++---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c +index 378bf162ca..b3ae4b8143 100644 +--- a/src/journal/test-journal-interleaving.c ++++ b/src/journal/test-journal-interleaving.c +@@ -158,7 +158,6 @@ static void test_skip_one(void (*setup)(void)) { + */ + assert_ret(sd_journal_open_directory(&j, t, 0)); + assert_ret(sd_journal_seek_head(j)); +- assert_ret(sd_journal_previous(j) == 0); + assert_ret(sd_journal_next(j)); + test_check_numbers_down(j, 4); + sd_journal_close(j); +@@ -167,7 +166,6 @@ static void test_skip_one(void (*setup)(void)) { + */ + assert_ret(sd_journal_open_directory(&j, t, 0)); + assert_ret(sd_journal_seek_tail(j)); +- assert_ret(sd_journal_next(j) == 0); + assert_ret(sd_journal_previous(j)); + test_check_numbers_up(j, 4); + sd_journal_close(j); +@@ -176,7 +174,6 @@ static void test_skip_one(void (*setup)(void)) { + */ + assert_ret(sd_journal_open_directory(&j, t, 0)); + assert_ret(sd_journal_seek_tail(j)); +- assert_ret(sd_journal_next(j) == 0); + assert_ret(r = sd_journal_previous_skip(j, 4)); + assert_se(r == 4); + test_check_numbers_down(j, 4); +@@ -186,7 +183,6 @@ static void test_skip_one(void (*setup)(void)) { + */ + assert_ret(sd_journal_open_directory(&j, t, 0)); + assert_ret(sd_journal_seek_head(j)); +- assert_ret(sd_journal_previous(j) == 0); + assert_ret(r = sd_journal_next_skip(j, 4)); + assert_se(r == 4); + test_check_numbers_up(j, 4); +diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c +index 53c0b2a01e..1e4d128f05 100644 +--- a/src/libsystemd/sd-journal/sd-journal.c ++++ b/src/libsystemd/sd-journal/sd-journal.c +@@ -606,9 +606,9 @@ static int find_location_for_match( + /* FIXME: missing: find by monotonic */ + + if (j->current_location.type == LOCATION_HEAD) +- return direction == DIRECTION_DOWN ? journal_file_next_entry_for_data(f, d, DIRECTION_DOWN, ret, offset) : 0; ++ return journal_file_next_entry_for_data(f, d, DIRECTION_DOWN, ret, offset); + if (j->current_location.type == LOCATION_TAIL) +- return direction == DIRECTION_UP ? journal_file_next_entry_for_data(f, d, DIRECTION_UP, ret, offset) : 0; ++ return journal_file_next_entry_for_data(f, d, DIRECTION_UP, ret, offset); + if (j->current_location.seqnum_set && sd_id128_equal(j->current_location.seqnum_id, f->header->seqnum_id)) + return journal_file_move_to_entry_by_seqnum_for_data(f, d, j->current_location.seqnum, direction, ret, offset); + if (j->current_location.monotonic_set) { +@@ -701,9 +701,9 @@ static int find_location_with_matches( + /* No matches is simple */ + + if (j->current_location.type == LOCATION_HEAD) +- return direction == DIRECTION_DOWN ? journal_file_next_entry(f, 0, DIRECTION_DOWN, ret, offset) : 0; ++ return journal_file_next_entry(f, 0, DIRECTION_DOWN, ret, offset); + if (j->current_location.type == LOCATION_TAIL) +- return direction == DIRECTION_UP ? journal_file_next_entry(f, 0, DIRECTION_UP, ret, offset) : 0; ++ return journal_file_next_entry(f, 0, DIRECTION_UP, ret, offset); + if (j->current_location.seqnum_set && sd_id128_equal(j->current_location.seqnum_id, f->header->seqnum_id)) + return journal_file_move_to_entry_by_seqnum(f, j->current_location.seqnum, direction, ret, offset); + if (j->current_location.monotonic_set) { diff --git a/SOURCES/0055-meson-Get-objcopy-location-from-compiler.patch b/SOURCES/0055-meson-Get-objcopy-location-from-compiler.patch deleted file mode 100644 index bd91bcc..0000000 --- a/SOURCES/0055-meson-Get-objcopy-location-from-compiler.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b077524848816638fc7d0cf3e65c062da095626f Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Wed, 29 Dec 2021 15:13:35 +0100 -Subject: [PATCH] meson: Get objcopy location from compiler - -(cherry picked from commit 2f2b07226751827303a88f3a301f2d834f3fb97b) - -Related: #2017035 ---- - src/boot/efi/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 11e6bf2dd0..144fbb0f43 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -43,7 +43,7 @@ if not cc.has_header_symbol('efi.h', 'EFI_IMAGE_MACHINE_X64', - subdir_done() - endif - --objcopy = find_program('objcopy') -+objcopy = run_command(cc.cmd_array(), '-print-prog-name=objcopy', check: true).stdout().strip() - - efi_ld = get_option('efi-ld') - if efi_ld == 'auto' diff --git a/SOURCES/0056-boot-Correctly-handle-saved-default-patterns.patch b/SOURCES/0056-boot-Correctly-handle-saved-default-patterns.patch new file mode 100644 index 0000000..1820864 --- /dev/null +++ b/SOURCES/0056-boot-Correctly-handle-saved-default-patterns.patch @@ -0,0 +1,29 @@ +From f740d67fd0ed36bc3318d724ccb1fdfca2f04125 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sun, 4 Sep 2022 00:22:23 +0200 +Subject: [PATCH] boot: Correctly handle @saved default patterns + +(cherry picked from commit 7941f11acb67c4f8ec857a791a51f3148af67b32) + +Related: #2138081 +--- + src/shared/bootspec.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c +index 6a34b10c04..d3cfb41a12 100644 +--- a/src/shared/bootspec.c ++++ b/src/shared/bootspec.c +@@ -994,6 +994,12 @@ static int boot_config_find(const BootConfig *config, const char *id) { + if (!id) + return -1; + ++ if (id[0] == '@') { ++ if (!strcaseeq(id, "@saved")) ++ return -1; ++ id = config->entry_selected; ++ } ++ + for (size_t i = 0; i < config->n_entries; i++) + if (fnmatch(id, config->entries[i].id, FNM_CASEFOLD) == 0) + return i; diff --git a/SOURCES/0056-meson-Use-files-for-source-lists-for-boot-and-fundam.patch b/SOURCES/0056-meson-Use-files-for-source-lists-for-boot-and-fundam.patch deleted file mode 100644 index 0ae6347..0000000 --- a/SOURCES/0056-meson-Use-files-for-source-lists-for-boot-and-fundam.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 3088f292855f4a525271906a5652985f01c5d7b2 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Fri, 7 Jan 2022 21:55:50 +0100 -Subject: [PATCH] meson: Use files() for source lists for boot and fundamental - -This fixes build reproducibility as otherwise the full path -of the source files ends up in the output binary. - -(cherry picked from commit b3c5a7074cd434bc02c4b560afe933d3df24759e) - -Related: #2017035 ---- - src/boot/efi/meson.build | 29 +++++++++++++++++------------ - src/fundamental/meson.build | 22 +++++++++------------- - 2 files changed, 26 insertions(+), 25 deletions(-) - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 144fbb0f43..4cc43dc00c 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -312,9 +312,10 @@ efi_headers = files( - 'shim.h', - 'splash.h', - 'util.h', -- 'xbootldr.h') -+ 'xbootldr.h', -+) - --common_sources = [ -+common_sources = files( - 'assert.c', - 'devicetree.c', - 'disk.c', -@@ -322,31 +323,34 @@ common_sources = [ - 'measure.c', - 'pe.c', - 'secure-boot.c', -- 'util.c'] -+ 'util.c', -+) - --systemd_boot_sources = [ -+systemd_boot_sources = files( - 'boot.c', - 'console.c', - 'drivers.c', - 'random-seed.c', - 'shim.c', -- 'xbootldr.c'] -+ 'xbootldr.c', -+) - --stub_sources = [ -+stub_sources = files( - 'cpio.c', - 'initrd.c', - 'splash.c', -- 'stub.c'] -+ 'stub.c', -+) - - if efi_arch[1] in ['ia32', 'x86_64'] -- stub_sources += 'linux_x86.c' -+ stub_sources += files('linux_x86.c') - else -- stub_sources += 'linux.c' -+ stub_sources += files('linux.c') - endif - - # BCD parser only makes sense on arches that Windows supports. - if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] -- systemd_boot_sources += 'bcd.c' -+ systemd_boot_sources += files('bcd.c') - tests += [ - [['src/boot/efi/test-bcd.c'], - [], -@@ -359,9 +363,10 @@ endif - systemd_boot_objects = [] - stub_objects = [] - foreach file : fundamental_source_paths + common_sources + systemd_boot_sources + stub_sources -- o_file = custom_target(file.split('/')[-1] + '.o', -+ # FIXME: replace ''.format(file) with fs.name(file) when meson_version requirement is >= 0.59.0 -+ o_file = custom_target('@0@.o'.format(file).split('/')[-1], - input : file, -- output : file.split('/')[-1] + '.o', -+ output : '@0@.o'.format(file).split('/')[-1], - command : [cc.cmd_array(), '-c', '@INPUT@', '-o', '@OUTPUT@', efi_cflags], - depend_files : efi_headers + fundamental_headers) - if (fundamental_source_paths + common_sources + systemd_boot_sources).contains(file) -diff --git a/src/fundamental/meson.build b/src/fundamental/meson.build -index 287f0fe36a..f927788c3a 100644 ---- a/src/fundamental/meson.build -+++ b/src/fundamental/meson.build -@@ -8,20 +8,16 @@ fundamental_headers = files( - 'macro-fundamental.h', - 'sha256.h', - 'string-util-fundamental.h', -- 'types-fundamental.h') -- --sources = ''' -- bootspec-fundamental.c -- efivars-fundamental.c -- string-util-fundamental.c -- sha256.c --'''.split() -+ 'types-fundamental.h', -+) - - # for sd-boot --fundamental_source_paths = [] --foreach source : sources -- fundamental_source_paths += meson.current_source_dir() / source --endforeach -+fundamental_source_paths = files( -+ 'bootspec-fundamental.c', -+ 'efivars-fundamental.c', -+ 'sha256.c', -+ 'string-util-fundamental.c', -+) - - # for libbasic --fundamental_sources = files(sources) + fundamental_headers -+fundamental_sources = fundamental_source_paths + fundamental_headers diff --git a/SOURCES/0057-meson-Use-files-for-tests.patch b/SOURCES/0057-meson-Use-files-for-tests.patch deleted file mode 100644 index 9607bcf..0000000 --- a/SOURCES/0057-meson-Use-files-for-tests.patch +++ /dev/null @@ -1,1483 +0,0 @@ -From 70cbab08c63909a671136ee9600f9818e404646c Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Tue, 11 Jan 2022 10:21:23 +0100 -Subject: [PATCH] meson: Use files() for tests - -Not having to provide the full path in the source tree is much -nicer and the produced lists can also be used anywhere in the source -tree. - -(cherry picked from commit e1eeebbb11ca0eca5dfd2ce32a928ee5174ea7ff) - -Related: #2017035 ---- - meson.build | 3 +- - src/analyze/meson.build | 6 +- - src/boot/efi/meson.build | 2 +- - src/busctl/meson.build | 6 +- - src/coredump/meson.build | 6 +- - src/import/meson.build | 6 +- - src/journal/meson.build | 14 +- - src/libsystemd-network/meson.build | 22 +- - src/libsystemd/meson.build | 70 ++--- - src/libudev/meson.build | 2 +- - src/locale/meson.build | 6 +- - src/login/meson.build | 6 +- - src/machine/meson.build | 2 +- - src/network/meson.build | 16 +- - src/nspawn/meson.build | 4 +- - src/oom/meson.build | 6 +- - src/resolve/meson.build | 16 +- - src/shutdown/meson.build | 6 +- - src/test/meson.build | 386 ++++++++++++------------ - src/timesync/meson.build | 2 +- - src/tmpfiles/meson.build | 6 +- - src/udev/meson.build | 16 +- - src/xdg-autostart-generator/meson.build | 6 +- - 23 files changed, 308 insertions(+), 307 deletions(-) - -diff --git a/meson.build b/meson.build -index f040eeab99..35ba29aecf 100644 ---- a/meson.build -+++ b/meson.build -@@ -3566,7 +3566,8 @@ foreach tuple : tests - parallel = tuple.length() > 7 ? tuple[7] : true - timeout = 30 - -- name = sources[0].split('/')[-1].split('.')[0] -+ # FIXME: Use fs.stem() with meson >= 0.54.0 -+ name = '@0@'.format(sources[0]).split('/')[-1].split('.')[0] - if type.startswith('timeout=') - timeout = type.split('=')[1].to_int() - type = '' -diff --git a/src/analyze/meson.build b/src/analyze/meson.build -index 492b79069f..fbc4d7e20d 100644 ---- a/src/analyze/meson.build -+++ b/src/analyze/meson.build -@@ -13,9 +13,9 @@ systemd_analyze_sources = files(''' - '''.split()) - - tests += [ -- [['src/analyze/test-verify.c', -- 'src/analyze/analyze-verify.c', -- 'src/analyze/analyze-verify.h'], -+ [files('test-verify.c', -+ 'analyze-verify.c', -+ 'analyze-verify.h'), - [libcore, - libshared], - [], -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 4cc43dc00c..16b34f0ac2 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -352,7 +352,7 @@ endif - if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] - systemd_boot_sources += files('bcd.c') - tests += [ -- [['src/boot/efi/test-bcd.c'], -+ [files('test-bcd.c'), - [], - [libzstd], - [], -diff --git a/src/busctl/meson.build b/src/busctl/meson.build -index f463436fab..295dc0926d 100644 ---- a/src/busctl/meson.build -+++ b/src/busctl/meson.build -@@ -6,7 +6,7 @@ busctl_sources = files( - 'busctl.c') - - tests += [ -- [['src/busctl/test-busctl-introspect.c', -- 'src/busctl/busctl-introspect.c', -- 'src/busctl/busctl-introspect.h']], -+ [files('test-busctl-introspect.c', -+ 'busctl-introspect.c', -+ 'busctl-introspect.h')], - ] -diff --git a/src/coredump/meson.build b/src/coredump/meson.build -index b832192c9f..49ea93965b 100644 ---- a/src/coredump/meson.build -+++ b/src/coredump/meson.build -@@ -14,8 +14,8 @@ if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir_samples - endif - - tests += [ -- [['src/coredump/test-coredump-vacuum.c', -- 'src/coredump/coredump-vacuum.c', -- 'src/coredump/coredump-vacuum.h'], -+ [files('test-coredump-vacuum.c', -+ 'coredump-vacuum.c', -+ 'coredump-vacuum.h'), - [], [], [], '', 'manual'], - ] -diff --git a/src/import/meson.build b/src/import/meson.build -index 23f0858817..7e923072a9 100644 ---- a/src/import/meson.build -+++ b/src/import/meson.build -@@ -61,9 +61,9 @@ if conf.get('ENABLE_IMPORTD') == 1 - endif - - tests += [ -- [['src/import/test-qcow2.c', -- 'src/import/qcow2-util.c', -- 'src/import/qcow2-util.h'], -+ [files('test-qcow2.c', -+ 'qcow2-util.c', -+ 'qcow2-util.h'), - [], - [libz], - [], 'HAVE_ZLIB', 'manual'], -diff --git a/src/journal/meson.build b/src/journal/meson.build -index 270592f2ac..b9a63d5e2f 100644 ---- a/src/journal/meson.build -+++ b/src/journal/meson.build -@@ -79,7 +79,7 @@ endif - ############################################################ - - tests += [ -- [['src/journal/test-journal-syslog.c'], -+ [files('test-journal-syslog.c'), - [libjournal_core, - libshared], - [threads, -@@ -87,30 +87,30 @@ tests += [ - liblz4, - libselinux]], - -- [['src/journal/test-journal-config.c'], -+ [files('test-journal-config.c'), - [libjournal_core, - libshared], - [libxz, - liblz4, - libselinux]], - -- [['src/journal/test-journal.c'], -+ [files('test-journal.c'), - [libjournal_core, - libshared]], - -- [['src/journal/test-journal-stream.c'], -+ [files('test-journal-stream.c'), - [libjournal_core, - libshared]], - -- [['src/journal/test-journal-flush.c'], -+ [files('test-journal-flush.c'), - [libjournal_core, - libshared]], - -- [['src/journal/test-journal-verify.c'], -+ [files('test-journal-verify.c'), - [libjournal_core, - libshared]], - -- [['src/journal/test-journal-interleaving.c'], -+ [files('test-journal-interleaving.c'), - [libjournal_core, - libshared]], - ] -diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build -index a7838cdaa1..3923df48ea 100644 ---- a/src/libsystemd-network/meson.build -+++ b/src/libsystemd-network/meson.build -@@ -57,49 +57,49 @@ libsystemd_network_includes = [includes, include_directories('.')] - ############################################################ - - tests += [ -- [['src/libsystemd-network/test-dhcp-option.c'], -+ [files('test-dhcp-option.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-sd-dhcp-lease.c'], -+ [files('test-sd-dhcp-lease.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-dhcp-client.c'], -+ [files('test-dhcp-client.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-dhcp-server.c'], -+ [files('test-dhcp-server.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-ipv4ll.c'], -+ [files('test-ipv4ll.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-ipv4ll-manual.c'], -+ [files('test-ipv4ll-manual.c'), - [libshared, - libsystemd_network], - [], [], '', 'manual'], - -- [['src/libsystemd-network/test-acd.c'], -+ [files('test-acd.c'), - [libshared, - libsystemd_network], - [], [], '', 'manual'], - -- [['src/libsystemd-network/test-ndisc-rs.c'], -+ [files('test-ndisc-rs.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-ndisc-ra.c'], -+ [files('test-ndisc-ra.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-dhcp6-client.c'], -+ [files('test-dhcp6-client.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/test-lldp-rx.c'], -+ [files('test-lldp-rx.c'), - [libshared, - libsystemd_network]], - ] -diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build -index 124393d3e6..42746e560f 100644 ---- a/src/libsystemd/meson.build -+++ b/src/libsystemd/meson.build -@@ -190,43 +190,43 @@ custom_target( - ############################################################ - - tests += [ -- [['src/libsystemd/sd-journal/test-journal-send.c']], -+ [files('sd-journal/test-journal-send.c')], - -- [['src/libsystemd/sd-journal/test-journal-match.c']], -+ [files('sd-journal/test-journal-match.c')], - -- [['src/libsystemd/sd-journal/test-journal-enum.c'], -+ [files('sd-journal/test-journal-enum.c'), - [], [], [], '', 'timeout=360'], - -- [['src/libsystemd/sd-journal/test-journal-init.c']], -+ [files('sd-journal/test-journal-init.c')], - -- [['src/libsystemd/sd-journal/test-mmap-cache.c']], -+ [files('sd-journal/test-mmap-cache.c')], - -- [['src/libsystemd/sd-journal/test-catalog.c']], -+ [files('sd-journal/test-catalog.c')], - -- [['src/libsystemd/sd-journal/test-compress.c'], -+ [files('sd-journal/test-compress.c'), - [], - [liblz4, - libzstd, - libxz]], - -- [['src/libsystemd/sd-journal/test-compress-benchmark.c'], -+ [files('sd-journal/test-compress-benchmark.c'), - [], - [liblz4, - libzstd, - libxz], - [], '', 'timeout=90'], - -- [['src/libsystemd/sd-journal/test-audit-type.c']], -+ [files('sd-journal/test-audit-type.c')], - ] - - ############################################################ - - tests += [ -- [['src/libsystemd/sd-bus/test-bus-address.c'], -+ [files('sd-bus/test-bus-address.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-marshal.c'], -+ [files('sd-bus/test-bus-marshal.c'), - [], - [threads, - libglib, -@@ -234,82 +234,82 @@ tests += [ - libgio, - libdbus]], - -- [['src/libsystemd/sd-bus/test-bus-signature.c'], -+ [files('sd-bus/test-bus-signature.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c'], -+ [files('sd-bus/test-bus-queue-ref-cycle.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-watch-bind.c'], -+ [files('sd-bus/test-bus-watch-bind.c'), - [], - [threads], - [], '', 'timeout=120'], - -- [['src/libsystemd/sd-bus/test-bus-chat.c'], -+ [files('sd-bus/test-bus-chat.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-cleanup.c'], -+ [files('sd-bus/test-bus-cleanup.c'), - [], - [threads, - libseccomp]], - -- [['src/libsystemd/sd-bus/test-bus-track.c'], -+ [files('sd-bus/test-bus-track.c'), - [], - [libseccomp]], - -- [['src/libsystemd/sd-bus/test-bus-server.c'], -+ [files('sd-bus/test-bus-server.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-objects.c'], -+ [files('sd-bus/test-bus-objects.c'), - [], - [threads]], - -- [['src/libsystemd/sd-bus/test-bus-vtable.c', -- 'src/libsystemd/sd-bus/test-vtable-data.h']], -+ [files('sd-bus/test-bus-vtable.c', -+ 'sd-bus/test-vtable-data.h')], - -- [['src/libsystemd/sd-bus/test-bus-gvariant.c'], -+ [files('sd-bus/test-bus-gvariant.c'), - [], - [libglib, - libgobject, - libgio]], - -- [['src/libsystemd/sd-bus/test-bus-creds.c']], -+ [files('sd-bus/test-bus-creds.c')], - -- [['src/libsystemd/sd-bus/test-bus-match.c']], -+ [files('sd-bus/test-bus-match.c')], - -- [['src/libsystemd/sd-bus/test-bus-benchmark.c'], -+ [files('sd-bus/test-bus-benchmark.c'), - [], - [threads], - [], '', 'manual'], - -- [['src/libsystemd/sd-bus/test-bus-introspect.c', -- 'src/libsystemd/sd-bus/test-vtable-data.h']], -+ [files('sd-bus/test-bus-introspect.c', -+ 'sd-bus/test-vtable-data.h')], - -- [['src/libsystemd/sd-event/test-event.c']], -+ [files('sd-event/test-event.c')], - -- [['src/libsystemd/sd-netlink/test-netlink.c']], -+ [files('sd-netlink/test-netlink.c')], - -- [['src/libsystemd/sd-resolve/test-resolve.c'], -+ [files('sd-resolve/test-resolve.c'), - [], - [threads], - [], '', 'timeout=120'], - -- [['src/libsystemd/sd-login/test-login.c']], -+ [files('sd-login/test-login.c')], - -- [['src/libsystemd/sd-device/test-sd-device.c']], -+ [files('sd-device/test-sd-device.c')], - -- [['src/libsystemd/sd-device/test-device-util.c']], -+ [files('sd-device/test-device-util.c')], - -- [['src/libsystemd/sd-device/test-sd-device-monitor.c']], -+ [files('sd-device/test-sd-device-monitor.c')], - ] - - if cxx_cmd != '' - tests += [ -- [['src/libsystemd/sd-bus/test-bus-vtable-cc.cc']], -+ [files('sd-bus/test-bus-vtable-cc.cc')], - ] - endif - -diff --git a/src/libudev/meson.build b/src/libudev/meson.build -index 77b31a9492..2d51ff7c58 100644 ---- a/src/libudev/meson.build -+++ b/src/libudev/meson.build -@@ -45,7 +45,7 @@ custom_target( - ############################################################ - - tests += [ -- [['src/libudev/test-libudev.c'], -+ [files('test-libudev.c'), - [libshared, - libudev_basic]], - ] -diff --git a/src/locale/meson.build b/src/locale/meson.build -index a2ff2a9873..0ccf71583d 100644 ---- a/src/locale/meson.build -+++ b/src/locale/meson.build -@@ -30,7 +30,7 @@ if conf.get('ENABLE_LOCALED') == 1 - endif - - tests += [ -- [['src/locale/test-keymap-util.c', -- 'src/locale/keymap-util.c', -- 'src/locale/keymap-util.h']], -+ [files('test-keymap-util.c', -+ 'keymap-util.c', -+ 'keymap-util.h')], - ] -diff --git a/src/login/meson.build b/src/login/meson.build -index a78c2bc2dd..92f491665c 100644 ---- a/src/login/meson.build -+++ b/src/login/meson.build -@@ -101,12 +101,12 @@ endif - ############################################################ - - tests += [ -- [['src/login/test-login-shared.c']], -+ [files('test-login-shared.c')], - -- [['src/login/test-inhibit.c'], -+ [files('test-inhibit.c'), - [], [], [], '', 'manual'], - -- [['src/login/test-login-tables.c'], -+ [files('test-login-tables.c'), - [liblogind_core, - libshared], - [threads]], -diff --git a/src/machine/meson.build b/src/machine/meson.build -index ef858a5988..87e4dde24c 100644 ---- a/src/machine/meson.build -+++ b/src/machine/meson.build -@@ -37,7 +37,7 @@ if conf.get('ENABLE_MACHINED') == 1 - endif - - tests += [ -- [['src/machine/test-machine-tables.c'], -+ [files('test-machine-tables.c'), - [libmachine_core, - libshared], - [threads]], -diff --git a/src/network/meson.build b/src/network/meson.build -index 5857439c5a..a598701e4f 100644 ---- a/src/network/meson.build -+++ b/src/network/meson.build -@@ -277,37 +277,37 @@ fuzzers += [ - ] - - tests += [ -- [['src/network/test-networkd-address.c'], -+ [files('test-networkd-address.c'), - [libnetworkd_core, - libsystemd_network], - [], - network_includes], - -- [['src/network/test-networkd-conf.c'], -+ [files('test-networkd-conf.c'), - [libnetworkd_core, - libsystemd_network], - [], - network_includes], - -- [['src/network/test-networkd-util.c'], -+ [files('test-networkd-util.c'), - [libnetworkd_core, - libsystemd_network], - [], - network_includes], - -- [['src/network/test-network.c'], -+ [files('test-network.c'), - [libnetworkd_core, - libsystemd_network], - [threads], - network_includes], - -- [['src/network/test-network-tables.c'], -+ [files('test-network-tables.c'), - [libnetworkd_core, - libsystemd_network], - [threads], - network_includes], - -- [['src/network/generator/test-network-generator.c', -- 'src/network/generator/network-generator.c', -- 'src/network/generator/network-generator.h']], -+ [files('generator/test-network-generator.c', -+ 'generator/network-generator.c', -+ 'generator/network-generator.h')], - ] -diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build -index 11ac404e99..3c1a9c6182 100644 ---- a/src/nspawn/meson.build -+++ b/src/nspawn/meson.build -@@ -53,12 +53,12 @@ systemd_nspawn_sources = files('nspawn.c') - ############################################################ - - tests += [ -- [['src/nspawn/test-nspawn-tables.c'], -+ [files('test-nspawn-tables.c'), - [libnspawn_core, - libshared], - [libseccomp]], - -- [['src/nspawn/test-patch-uid.c'], -+ [files('test-patch-uid.c'), - [libnspawn_core, - libshared], - [libacl], -diff --git a/src/oom/meson.build b/src/oom/meson.build -index 4e1c8543c8..da00cbf99e 100644 ---- a/src/oom/meson.build -+++ b/src/oom/meson.build -@@ -28,7 +28,7 @@ if conf.get('ENABLE_OOMD') == 1 - endif - - tests += [ -- [['src/oom/test-oomd-util.c', -- 'src/oom/oomd-util.c', -- 'src/oom/oomd-util.h']], -+ [files('test-oomd-util.c', -+ 'oomd-util.c', -+ 'oomd-util.h')], - ] -diff --git a/src/resolve/meson.build b/src/resolve/meson.build -index 2cdf24b1cb..4de50c3d8e 100644 ---- a/src/resolve/meson.build -+++ b/src/resolve/meson.build -@@ -174,40 +174,40 @@ custom_target( - ############################################################ - - tests += [ -- [['src/resolve/test-resolve-tables.c'], -+ [files('test-resolve-tables.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, - libm]], - -- [['src/resolve/test-dns-packet.c'], -+ [files('test-dns-packet.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, - libm]], - -- [['src/resolve/test-resolved-etc-hosts.c', -- 'src/resolve/resolved-etc-hosts.c', -- 'src/resolve/resolved-etc-hosts.h'], -+ [files('test-resolved-etc-hosts.c', -+ 'resolved-etc-hosts.c', -+ 'resolved-etc-hosts.h'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, - libm]], - -- [['src/resolve/test-resolved-packet.c'], -+ [files('test-resolved-packet.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, - libm]], - -- [['src/resolve/test-dnssec.c'], -+ [files('test-dnssec.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, - libm], - [], 'HAVE_OPENSSL_OR_GCRYPT'], - -- [['src/resolve/test-dnssec-complex.c'], -+ [files('test-dnssec-complex.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, -diff --git a/src/shutdown/meson.build b/src/shutdown/meson.build -index e1348d95d4..fcc9f9f0ac 100644 ---- a/src/shutdown/meson.build -+++ b/src/shutdown/meson.build -@@ -7,9 +7,9 @@ systemd_shutdown_sources = files(''' - '''.split()) - - tests += [ -- [['src/shutdown/test-umount.c', -- 'src/shutdown/umount.c', -- 'src/shutdown/umount.h'], -+ [files('test-umount.c', -+ 'umount.c', -+ 'umount.h'), - [], - [libmount]], - ] -diff --git a/src/test/meson.build b/src/test/meson.build -index 48001d17ec..9e224d69ce 100644 ---- a/src/test/meson.build -+++ b/src/test/meson.build -@@ -41,11 +41,11 @@ test_dlopen_c = files('test-dlopen.c') - ############################################################ - - tests += [ -- [['src/test/test-device-nodes.c']], -+ [files('test-device-nodes.c')], - -- [['src/test/test-ether-addr-util.c']], -+ [files('test-ether-addr-util.c')], - -- [['src/test/test-engine.c'], -+ [files('test-engine.c'), - [libcore, - libshared], - [threads, -@@ -56,21 +56,21 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-emergency-action.c'], -+ [files('test-emergency-action.c'), - [libcore, - libshared], - [], - core_includes], - -- [['src/test/test-chown-rec.c'], -+ [files('test-chown-rec.c'), - [libcore, - libshared], - [], - core_includes], - -- [['src/test/test-dlopen-so.c']], -+ [files('test-dlopen-so.c')], - -- [['src/test/test-job-type.c'], -+ [files('test-job-type.c'), - [libcore, - libshared], - [threads, -@@ -81,7 +81,7 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-ns.c'], -+ [files('test-ns.c'), - [libcore, - libshared], - [threads, -@@ -92,7 +92,7 @@ tests += [ - libblkid], - core_includes, '', 'manual'], - -- [['src/test/test-loopback.c'], -+ [files('test-loopback.c'), - [libcore, - libshared], - [threads, -@@ -103,14 +103,14 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-dns-domain.c']], -+ [files('test-dns-domain.c')], - -- [['src/test/test-boot-timestamps.c'], -+ [files('test-boot-timestamps.c'), - [], [], [], 'ENABLE_EFI'], - -- [['src/test/test-unit-file.c']], -+ [files('test-unit-file.c')], - -- [['src/test/test-unit-name.c'], -+ [files('test-unit-name.c'), - [libcore, - libshared], - [threads, -@@ -121,7 +121,7 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-load-fragment.c'], -+ [files('test-load-fragment.c'), - [libcore, - libshared], - [threads, -@@ -132,9 +132,9 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-serialize.c']], -+ [files('test-serialize.c')], - -- [['src/test/test-unit-serialize.c'], -+ [files('test-unit-serialize.c'), - [libcore, - libshared], - [threads, -@@ -145,196 +145,196 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-utf8.c']], -+ [files('test-utf8.c')], - -- [['src/test/test-kbd-util.c']], -+ [files('test-kbd-util.c')], - -- [['src/test/test-blockdev-util.c']], -+ [files('test-blockdev-util.c')], - -- [['src/test/test-dev-setup.c']], -+ [files('test-dev-setup.c')], - -- [['src/test/test-capability.c'], -+ [files('test-capability.c'), - [], - [libcap]], - -- [['src/test/test-async.c'], -+ [files('test-async.c'), - [], [], [], '', 'timeout=120'], - -- [['src/test/test-locale-util.c']], -+ [files('test-locale-util.c')], - -- [['src/test/test-copy.c']], -+ [files('test-copy.c')], - -- [['src/test/test-recurse-dir.c']], -+ [files('test-recurse-dir.c')], - -- [['src/test/test-data-fd-util.c']], -+ [files('test-data-fd-util.c')], - -- [['src/test/test-static-destruct.c']], -+ [files('test-static-destruct.c')], - -- [['src/test/test-sigbus.c']], -+ [files('test-sigbus.c')], - -- [['src/test/test-condition.c']], -+ [files('test-condition.c')], - -- [['src/test/test-fdset.c']], -+ [files('test-fdset.c')], - -- [['src/test/test-fstab-util.c']], -+ [files('test-fstab-util.c')], - -- [['src/test/test-random-util.c'], -+ [files('test-random-util.c'), - [], - [libm], - [], '', 'timeout=120'], - -- [['src/test/test-format-table.c']], -+ [files('test-format-table.c')], - -- [['src/test/test-format-util.c']], -+ [files('test-format-util.c')], - -- [['src/test/test-ratelimit.c']], -+ [files('test-ratelimit.c')], - -- [['src/test/test-util.c']], -+ [files('test-util.c')], - -- [['src/test/test-macro.c']], -+ [files('test-macro.c')], - -- [['src/test/test-json.c']], -+ [files('test-json.c')], - -- [['src/test/test-modhex.c']], -+ [files('test-modhex.c')], - -- [['src/test/test-libmount.c'], -+ [files('test-libmount.c'), - [], - [threads, - libmount]], - -- [['src/test/test-mount-util.c']], -+ [files('test-mount-util.c')], - -- [['src/test/test-mountpoint-util.c']], -+ [files('test-mountpoint-util.c')], - -- [['src/test/test-exec-util.c']], -+ [files('test-exec-util.c')], - -- [['src/test/test-hexdecoct.c']], -+ [files('test-hexdecoct.c')], - -- [['src/test/test-alloc-util.c']], -+ [files('test-alloc-util.c')], - -- [['src/test/test-xattr-util.c']], -+ [files('test-xattr-util.c')], - -- [['src/test/test-io-util.c']], -+ [files('test-io-util.c')], - -- [['src/test/test-glob-util.c']], -+ [files('test-glob-util.c')], - -- [['src/test/test-fs-util.c']], -+ [files('test-fs-util.c')], - -- [['src/test/test-install-file.c']], -+ [files('test-install-file.c')], - -- [['src/test/test-umask-util.c']], -+ [files('test-umask-util.c')], - -- [['src/test/test-proc-cmdline.c']], -+ [files('test-proc-cmdline.c')], - -- [['src/test/test-fd-util.c'], -+ [files('test-fd-util.c'), - [], - [libseccomp]], - -- [['src/test/test-web-util.c']], -+ [files('test-web-util.c')], - -- [['src/test/test-cpu-set-util.c']], -+ [files('test-cpu-set-util.c')], - -- [['src/test/test-stat-util.c']], -+ [files('test-stat-util.c')], - -- [['src/test/test-os-util.c']], -+ [files('test-os-util.c')], - -- [['src/test/test-libcrypt-util.c'], -+ [files('test-libcrypt-util.c'), - [], [libcrypt], [], '', 'timeout=120'], - -- [['src/test/test-escape.c']], -+ [files('test-escape.c')], - -- [['src/test/test-exit-status.c']], -+ [files('test-exit-status.c')], - -- [['src/test/test-specifier.c']], -+ [files('test-specifier.c')], - -- [['src/test/test-string-util.c']], -+ [files('test-string-util.c')], - -- [['src/test/test-extract-word.c']], -+ [files('test-extract-word.c')], - -- [['src/test/test-parse-argument.c']], -+ [files('test-parse-argument.c')], - -- [['src/test/test-parse-socket-bind-item.c']], -+ [files('test-parse-socket-bind-item.c')], - -- [['src/test/test-parse-util.c']], -+ [files('test-parse-util.c')], - -- [['src/test/test-sysctl-util.c']], -+ [files('test-sysctl-util.c')], - -- [['src/test/test-import-util.c']], -+ [files('test-import-util.c')], - -- [['src/test/test-uid-alloc-range.c']], -+ [files('test-uid-alloc-range.c')], - -- [['src/test/test-user-util.c']], -+ [files('test-user-util.c')], - -- [['src/test/test-hostname-setup.c']], -+ [files('test-hostname-setup.c')], - -- [['src/test/test-hostname-util.c']], -+ [files('test-hostname-util.c')], - -- [['src/test/test-process-util.c']], -+ [files('test-process-util.c')], - -- [['src/test/test-terminal-util.c']], -+ [files('test-terminal-util.c')], - -- [['src/test/test-path-lookup.c']], -+ [files('test-path-lookup.c')], - -- [['src/test/test-pretty-print.c']], -+ [files('test-pretty-print.c')], - -- [['src/test/test-uid-range.c']], -+ [files('test-uid-range.c')], - -- [['src/test/test-cap-list.c', -- generated_gperf_headers], -+ [files('test-cap-list.c') + -+ generated_gperf_headers, - [], - [libcap]], - -- [['src/test/test-socket-util.c']], -+ [files('test-socket-util.c')], - -- [['src/test/test-socket-netlink.c']], -+ [files('test-socket-netlink.c')], - -- [['src/test/test-in-addr-util.c']], -+ [files('test-in-addr-util.c')], - -- [['src/test/test-in-addr-prefix-util.c']], -+ [files('test-in-addr-prefix-util.c')], - -- [['src/test/test-barrier.c']], -+ [files('test-barrier.c')], - -- [['src/test/test-tmpfiles.c']], -+ [files('test-tmpfiles.c')], - -- [['src/test/test-namespace.c'], -+ [files('test-namespace.c'), - [libcore, - libshared], - [threads, - libblkid], - core_includes], - -- [['src/test/test-verbs.c']], -+ [files('test-verbs.c')], - -- [['src/test/test-install-root.c']], -+ [files('test-install-root.c')], - -- [['src/test/test-acl-util.c'], -+ [files('test-acl-util.c'), - [], [], [], 'HAVE_ACL'], - -- [['src/test/test-seccomp.c'], -+ [files('test-seccomp.c'), - [], - [libseccomp], - [], 'HAVE_SECCOMP'], - -- [['src/test/test-rlimit-util.c']], -+ [files('test-rlimit-util.c')], - -- [['src/test/test-ask-password-api.c'], -+ [files('test-ask-password-api.c'), - [], [], [], '', 'manual'], - -- [['src/test/test-signal-util.c']], -+ [files('test-signal-util.c')], - -- [['src/test/test-loop-block.c'], -+ [files('test-loop-block.c'), - [libcore, - libshared], - [threads, - libblkid], - core_includes, '', '', [], false], - -- [['src/test/test-selinux.c']], -+ [files('test-selinux.c')], - -- [['src/test/test-sizeof.c'], -+ [files('test-sizeof.c'), - [libbasic]], - -- [['src/test/test-bpf-devices.c'], -+ [files('test-bpf-devices.c'), - [libcore, - libshared], - [libmount, -@@ -345,7 +345,7 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-bpf-firewall.c'], -+ [files('test-bpf-firewall.c'), - [libcore, - libshared], - [libmount, -@@ -356,13 +356,13 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-bpf-foreign-programs.c'], -+ [files('test-bpf-foreign-programs.c'), - [libcore, - libshared], - [], - core_includes], - -- [['src/test/test-bpf-lsm.c'], -+ [files('test-bpf-lsm.c'), - [libcore, - libshared], - [libmount, -@@ -373,7 +373,7 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-watch-pid.c'], -+ [files('test-watch-pid.c'), - [libcore, - libshared], - [libmount, -@@ -384,32 +384,32 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-hashmap.c', -- 'src/test/test-hashmap-plain.c', -- test_hashmap_ordered_c], -+ [files('test-hashmap.c', -+ 'test-hashmap-plain.c') + -+ [test_hashmap_ordered_c], - [], [], [], '', 'timeout=180'], - -- [['src/test/test-set.c']], -+ [files('test-set.c')], - -- [['src/test/test-ordered-set.c']], -+ [files('test-ordered-set.c')], - -- [['src/test/test-set-disable-mempool.c'], -+ [files('test-set-disable-mempool.c'), - [], - [threads]], - -- [['src/test/test-hash-funcs.c']], -+ [files('test-hash-funcs.c')], - -- [['src/test/test-bitmap.c']], -+ [files('test-bitmap.c')], - -- [['src/test/test-xml.c']], -+ [files('test-xml.c')], - -- [['src/test/test-list.c']], -+ [files('test-list.c')], - -- [['src/test/test-procfs-util.c']], -+ [files('test-procfs-util.c')], - -- [['src/test/test-unaligned.c']], -+ [files('test-unaligned.c')], - -- [['src/test/test-tables.c'], -+ [files('test-tables.c'), - [libcore, - libjournal_core, - libudevd_core, -@@ -422,70 +422,70 @@ tests += [ - libblkid], - [core_includes, journal_includes, udev_includes]], - -- [['src/test/test-prioq.c']], -+ [files('test-prioq.c')], - -- [['src/test/test-fileio.c']], -+ [files('test-fileio.c')], - -- [['src/test/test-time-util.c']], -+ [files('test-time-util.c')], - -- [['src/test/test-clock.c']], -+ [files('test-clock.c')], - -- [['src/test/test-tmpfile-util.c']], -+ [files('test-tmpfile-util.c')], - -- [['src/test/test-architecture.c']], -+ [files('test-architecture.c')], - -- [['src/test/test-gpt.c']], -+ [files('test-gpt.c')], - -- [['src/test/test-log.c']], -+ [files('test-log.c')], - -- [['src/test/test-ipcrm.c'], -+ [files('test-ipcrm.c'), - [], [], [], '', 'unsafe'], - -- [['src/test/test-btrfs.c'], -+ [files('test-btrfs.c'), - [], [], [], '', 'manual'], - -- [['src/test/test-firewall-util.c']], -+ [files('test-firewall-util.c')], - -- [['src/test/test-net-naming-scheme.c']], -+ [files('test-net-naming-scheme.c')], - -- [['src/test/test-netlink-manual.c'], -+ [files('test-netlink-manual.c'), - [], - [libkmod], - [], 'HAVE_KMOD', 'manual'], - -- [['src/test/test-ellipsize.c']], -+ [files('test-ellipsize.c')], - -- [['src/test/test-date.c']], -+ [files('test-date.c')], - -- [['src/test/test-sleep.c']], -+ [files('test-sleep.c')], - -- [['src/test/test-tpm2.c']], -+ [files('test-tpm2.c')], - -- [['src/test/test-replace-var.c']], -+ [files('test-replace-var.c')], - -- [['src/test/test-calendarspec.c']], -+ [files('test-calendarspec.c')], - -- [['src/test/test-strip-tab-ansi.c']], -+ [files('test-strip-tab-ansi.c')], - -- [['src/test/test-coredump-util.c']], -+ [files('test-coredump-util.c')], - -- [['src/test/test-daemon.c']], -+ [files('test-daemon.c')], - -- [['src/test/test-cgroup.c']], -+ [files('test-cgroup.c')], - -- [['src/test/test-cgroup-cpu.c'], -+ [files('test-cgroup-cpu.c'), - [libcore, - libshared], - [], - core_includes], - -- [['src/test/test-cgroup-unit-default.c'], -+ [files('test-cgroup-unit-default.c'), - [libcore, - libshared], - [], - core_includes], - -- [['src/test/test-cgroup-mask.c'], -+ [files('test-cgroup-mask.c'), - [libcore, - libshared], - [threads, -@@ -496,30 +496,30 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-varlink.c'], -+ [files('test-varlink.c'), - [], - [threads]], - -- [['src/test/test-cgroup-util.c']], -+ [files('test-cgroup-util.c')], - -- [['src/test/test-cgroup-setup.c']], -+ [files('test-cgroup-setup.c')], - -- [['src/test/test-env-file.c']], -+ [files('test-env-file.c')], - -- [['src/test/test-env-util.c']], -+ [files('test-env-util.c')], - -- [['src/test/test-strbuf.c']], -+ [files('test-strbuf.c')], - -- [['src/test/test-strv.c']], -+ [files('test-strv.c')], - -- [['src/test/test-path-util.c']], -+ [files('test-path-util.c')], - -- [['src/test/test-rm-rf.c']], -+ [files('test-rm-rf.c')], - -- [['src/test/test-chase-symlinks.c'], -+ [files('test-chase-symlinks.c'), - [], [], [], '', 'manual'], - -- [['src/test/test-path.c'], -+ [files('test-path.c'), - [libcore, - libshared], - [threads, -@@ -530,7 +530,7 @@ tests += [ - libblkid], - core_includes, '', 'timeout=120'], - -- [['src/test/test-execute.c'], -+ [files('test-execute.c'), - [libcore, - libshared], - [threads, -@@ -541,20 +541,20 @@ tests += [ - libblkid], - core_includes, '', 'timeout=360'], - -- [['src/test/test-siphash24.c']], -+ [files('test-siphash24.c')], - -- [['src/test/test-strxcpyx.c']], -+ [files('test-strxcpyx.c')], - -- [['src/test/test-install.c'], -+ [files('test-install.c'), - [libcore, - libshared], - [], - core_includes, '', 'manual'], - -- [['src/test/test-watchdog.c'], -+ [files('test-watchdog.c'), - [], [], [], '', 'unsafe'], - -- [['src/test/test-sched-prio.c'], -+ [files('test-sched-prio.c'), - [libcore, - libshared], - [threads, -@@ -565,25 +565,25 @@ tests += [ - libblkid], - core_includes], - -- [['src/test/test-conf-files.c']], -+ [files('test-conf-files.c')], - -- [['src/test/test-conf-parser.c']], -+ [files('test-conf-parser.c')], - -- [['src/test/test-af-list.c', -- generated_gperf_headers]], -+ [files('test-af-list.c') + -+ generated_gperf_headers], - -- [['src/test/test-arphrd-util.c', -- generated_gperf_headers]], -+ [files('test-arphrd-util.c') + -+ generated_gperf_headers], - -- [['src/test/test-errno-list.c', -- generated_gperf_headers]], -+ [files('test-errno-list.c') + -+ generated_gperf_headers], - -- [['src/test/test-ip-protocol-list.c', -- shared_generated_gperf_headers]], -+ [files('test-ip-protocol-list.c') + -+ shared_generated_gperf_headers], - -- [['src/test/test-journal-importer.c']], -+ [files('test-journal-importer.c')], - -- [['src/test/test-udev.c'], -+ [files('test-udev.c'), - [libudevd_core, - libshared], - [threads, -@@ -594,49 +594,49 @@ tests += [ - libselinux], - udev_includes, '', 'manual'], - -- [['src/test/test-udev-util.c']], -+ [files('test-udev-util.c')], - -- [['src/test/test-id128.c']], -+ [files('test-id128.c')], - -- [['src/test/test-cryptolib.c'], -+ [files('test-cryptolib.c'), - [libshared], - [lib_openssl_or_gcrypt], - [], 'HAVE_OPENSSL_OR_GCRYPT'], - -- [['src/test/test-nss-hosts.c', -- 'src/test/nss-test-util.c', -- 'src/test/nss-test-util.h'], -+ [files('test-nss-hosts.c', -+ 'nss-test-util.c', -+ 'nss-test-util.h'), - [], - [libdl], - [], 'ENABLE_NSS', 'manual'], - -- [['src/test/test-nss-users.c', -- 'src/test/nss-test-util.c', -- 'src/test/nss-test-util.h'], -+ [files('test-nss-users.c', -+ 'nss-test-util.c', -+ 'nss-test-util.h'), - [], - [libdl], - [], 'ENABLE_NSS', 'manual'], - -- [['src/test/test-bus-util.c']], -+ [files('test-bus-util.c')], - -- [['src/test/test-percent-util.c']], -+ [files('test-percent-util.c')], - -- [['src/test/test-sd-hwdb.c']], -+ [files('test-sd-hwdb.c')], - -- [['src/test/test-sd-path.c']], -+ [files('test-sd-path.c')], - -- [['src/test/test-local-addresses.c']], -+ [files('test-local-addresses.c')], - -- [['src/test/test-psi-util.c']], -+ [files('test-psi-util.c')], - -- [['src/test/test-qrcode-util.c'], -+ [files('test-qrcode-util.c'), - [], - [libdl]], - -- [['src/test/test-nscd-flush.c'], -+ [files('test-nscd-flush.c'), - [], [], [], 'ENABLE_NSCD', 'manual'], - -- [['src/test/test-hmac.c']], -+ [files('test-hmac.c')], - ] - - ############################################################ -@@ -644,23 +644,23 @@ tests += [ - # define some tests here, because the link_with deps were not defined earlier - - tests += [ -- [['src/libsystemd/sd-bus/test-bus-error.c'], -+ [files('../libsystemd/sd-bus/test-bus-error.c'), - [libshared_static, - libsystemd_static]], - -- [['src/libsystemd/sd-device/test-sd-device-thread.c'], -+ [files('../libsystemd/sd-device/test-sd-device-thread.c'), - [libsystemd], - [threads]], - -- [['src/libudev/test-udev-device-thread.c'], -+ [files('../libudev/test-udev-device-thread.c'), - [libudev], - [threads]], - ] - - tests += [ -- [['src/test/test-socket-bind.c'], -- [libcore, -- libshared], -+ [files('test-socket-bind.c'), -+ [libcore, -+ libshared], - [libdl], - core_includes, - 'BPF_FRAMEWORK'], -diff --git a/src/timesync/meson.build b/src/timesync/meson.build -index 83dd7c8f67..8ecfbfab82 100644 ---- a/src/timesync/meson.build -+++ b/src/timesync/meson.build -@@ -55,7 +55,7 @@ endif - ############################################################ - - tests += [ -- [['src/timesync/test-timesync.c'], -+ [files('test-timesync.c'), - [libtimesyncd_core, - libshared], - [libm]], -diff --git a/src/tmpfiles/meson.build b/src/tmpfiles/meson.build -index c72b386cda..cfa3d370a7 100644 ---- a/src/tmpfiles/meson.build -+++ b/src/tmpfiles/meson.build -@@ -6,7 +6,7 @@ systemd_tmpfiles_sources = files( - 'offline-passwd.h') - - tests += [ -- [['src/tmpfiles/test-offline-passwd.c', -- 'src/tmpfiles/offline-passwd.c', -- 'src/tmpfiles/offline-passwd.h']], -+ [files('test-offline-passwd.c', -+ 'offline-passwd.c', -+ 'offline-passwd.h')], - ] -diff --git a/src/udev/meson.build b/src/udev/meson.build -index 29ac85da12..57fbf8c8fc 100644 ---- a/src/udev/meson.build -+++ b/src/udev/meson.build -@@ -195,28 +195,28 @@ fuzzers += [ - ] - - tests += [ -- [['src/udev/test-udev-event.c'], -+ [files('test-udev-event.c'), - [libudevd_core, - libshared], - [threads, - libacl]], - -- [['src/udev/test-udev-node.c'], -+ [files('test-udev-node.c'), - [libudevd_core, - libshared], - [threads, - libacl]], - -- [['src/udev/test-udev-builtin.c'], -+ [files('test-udev-builtin.c'), - [libudevd_core, - libshared], - [threads, - libacl]], - -- [['src/udev/test-udev-netlink.c', -- 'src/udev/udev-netlink.c', -- 'src/udev/udev-netlink.h']], -+ [files('test-udev-netlink.c', -+ 'udev-netlink.c', -+ 'udev-netlink.h')], - -- [['src/udev/fido_id/test-fido-id-desc.c', -- 'src/udev/fido_id/fido_id_desc.c']], -+ [files('fido_id/test-fido-id-desc.c', -+ 'fido_id/fido_id_desc.c')], - ] -diff --git a/src/xdg-autostart-generator/meson.build b/src/xdg-autostart-generator/meson.build -index aa722f7f3c..6418f57c40 100644 ---- a/src/xdg-autostart-generator/meson.build -+++ b/src/xdg-autostart-generator/meson.build -@@ -6,9 +6,9 @@ systemd_xdg_autostart_generator_sources = files( - 'xdg-autostart-service.h') - - tests += [ -- [['src/xdg-autostart-generator/test-xdg-autostart.c', -- 'src/xdg-autostart-generator/xdg-autostart-service.c', -- 'src/xdg-autostart-generator/xdg-autostart-service.h']], -+ [files('test-xdg-autostart.c', -+ 'xdg-autostart-service.c', -+ 'xdg-autostart-service.h')], - ] - - fuzzers += [ diff --git a/SOURCES/0057-shared-tpm2-util-Fix-Error-Esys-invalid-ESAPI-handle.patch b/SOURCES/0057-shared-tpm2-util-Fix-Error-Esys-invalid-ESAPI-handle.patch new file mode 100644 index 0000000..220358d --- /dev/null +++ b/SOURCES/0057-shared-tpm2-util-Fix-Error-Esys-invalid-ESAPI-handle.patch @@ -0,0 +1,82 @@ +From fda254c954d6a543e1977edc1d283c915ee43adc Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Tue, 15 Nov 2022 14:57:23 +0100 +Subject: [PATCH] shared/tpm2-util: Fix "Error: Esys invalid ESAPI handle + (40000001)" warning + +systemd-cryptenroll complains (but succeeds!) upon binding to a signed PCR +policy: + +$ systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto + --tpm2-public-key=... --tpm2-signature=..." /tmp/tmp.img + +ERROR:esys:src/tss2-esys/esys_iutil.c:394:iesys_handle_to_tpm_handle() Error: Esys invalid ESAPI handle (40000001). +WARNING:esys:src/tss2-esys/esys_iutil.c:415:iesys_is_platform_handle() Convert handle from TPM2_RH to ESYS_TR, got: 0x40000001 +ERROR:esys:src/tss2-esys/esys_iutil.c:394:iesys_handle_to_tpm_handle() Error: Esys invalid ESAPI handle (40000001). +WARNING:esys:src/tss2-esys/esys_iutil.c:415:iesys_is_platform_handle() Convert handle from TPM2_RH to ESYS_TR, got: 0x4000000 +New TPM2 token enrolled as key slot 1. + +The problem seems to be that Esys_LoadExternal() function from tpm2-tss +expects a 'ESYS_TR_RH*' constant specifying the requested hierarchy and not +a 'TPM2_RH_*' one (see Esys_LoadExternal() -> Esys_LoadExternal_Async() -> +iesys_handle_to_tpm_handle() call chain). + +It all works because Esys_LoadExternal_Async() falls back to using the +supplied values when iesys_handle_to_tpm_handle() fails: + + r = iesys_handle_to_tpm_handle(hierarchy, &tpm_hierarchy); + if (r != TSS2_RC_SUCCESS) { + ... + tpm_hierarchy = hierarchy; + } + +Note, TPM2_RH_OWNER was used on purpose to support older tpm2-tss versions +(pre https://github.com/tpm2-software/tpm2-tss/pull/1531), use meson magic +to preserve compatibility. + +Signed-off-by: Vitaly Kuznetsov +(cherry picked from commit 155c51293d5bf37f54c65fd0a66ea29e6eedd580) + +Related: #2138081 +--- + meson.build | 3 +++ + src/shared/tpm2-util.c | 6 ++++++ + 2 files changed, 9 insertions(+) + +diff --git a/meson.build b/meson.build +index 7750534466..015849af49 100644 +--- a/meson.build ++++ b/meson.build +@@ -1474,11 +1474,14 @@ if want_tpm2 != 'false' and not skip_deps + tpm2 = dependency('tss2-esys tss2-rc tss2-mu', + required : want_tpm2 == 'true') + have = tpm2.found() ++ have_esys3 = tpm2.version().version_compare('>= 3.0.0') + else + have = false ++ have_esys3 = false + tpm2 = [] + endif + conf.set10('HAVE_TPM2', have) ++conf.set10('HAVE_TSS2_ESYS3', have_esys3) + + want_elfutils = get_option('elfutils') + if want_elfutils != 'false' and not skip_deps +diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c +index 4d0df944a9..8171b3e9e9 100644 +--- a/src/shared/tpm2-util.c ++++ b/src/shared/tpm2-util.c +@@ -1117,7 +1117,13 @@ static int tpm2_make_policy_session( + ESYS_TR_NONE, + NULL, + &pubkey_tpm2, ++#if HAVE_TSS2_ESYS3 ++ /* tpm2-tss >= 3.0.0 requires a ESYS_TR_RH_* constant specifying the requested ++ * hierarchy, older versions need TPM2_RH_* instead. */ ++ ESYS_TR_RH_OWNER, ++#else + TPM2_RH_OWNER, ++#endif + &pubkey_handle); + if (rc != TSS2_RC_SUCCESS) { + r = log_error_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), diff --git a/SOURCES/0058-Handle-MACHINE_ID-uninitialized.patch b/SOURCES/0058-Handle-MACHINE_ID-uninitialized.patch new file mode 100644 index 0000000..4112cd2 --- /dev/null +++ b/SOURCES/0058-Handle-MACHINE_ID-uninitialized.patch @@ -0,0 +1,31 @@ +From 89adb54468aff192fccc9dce793e24d98b26d994 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marcus=20Sch=C3=A4fer?= +Date: Wed, 16 Nov 2022 16:25:08 +0100 +Subject: [PATCH] Handle MACHINE_ID=uninitialized + +systemd supports /etc/machine-id to be set to: uninitialized +In this case the expectation is that systemd creates a new +machine ID and replaces the value 'uninitialized' with the +effective machine id. In the scope of kernel-install we +should also enforce the creation of a new machine id in this +condition + +(cherry picked from commit 305dd91adfde332e7e5c1b2470edb32774f9a032) + +Related: #2138081 +--- + src/kernel-install/kernel-install.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in +index bba22f8a20..fa2c0d5276 100755 +--- a/src/kernel-install/kernel-install.in ++++ b/src/kernel-install/kernel-install.in +@@ -160,6 +160,7 @@ if [ -z "$MACHINE_ID" ] && [ -f /etc/machine-info ]; then + fi + if [ -z "$MACHINE_ID" ] && [ -s /etc/machine-id ]; then + read -r MACHINE_ID -Date: Sun, 26 Dec 2021 23:26:56 +0000 -Subject: [PATCH] tests: add fuzz-bcd - -(cherry picked from commit 4b65fc8725fa169bf870eb022d7b346796977c21) - -Related: #2017035 ---- - src/boot/efi/fuzz-bcd.c | 26 ++++++++++++++++++++++++++ - src/boot/efi/meson.build | 3 +++ - tools/oss-fuzz.sh | 16 ++++++++++++++++ - 3 files changed, 45 insertions(+) - create mode 100644 src/boot/efi/fuzz-bcd.c - -diff --git a/src/boot/efi/fuzz-bcd.c b/src/boot/efi/fuzz-bcd.c -new file mode 100644 -index 0000000000..e5ed6638a4 ---- /dev/null -+++ b/src/boot/efi/fuzz-bcd.c -@@ -0,0 +1,26 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+#include "alloc-util.h" -+#include "fd-util.h" -+#include "fuzz.h" -+#include "utf8.h" -+ -+#include "bcd.c" -+ -+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { -+ _cleanup_free_ void *p = NULL; -+ -+ /* This limit was borrowed from src/boot/efi/boot.c */ -+ if (size > 100*1024) -+ return 0; -+ -+ if (!getenv("SYSTEMD_LOG_LEVEL")) -+ log_set_max_level(LOG_CRIT); -+ -+ p = memdup(data, size); -+ assert_se(p); -+ -+ char16_t *title = get_bcd_title(p, size); -+ assert_se(!title || char16_strlen(title) >= 0); -+ return 0; -+} -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 16b34f0ac2..229771026d 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -358,6 +358,9 @@ if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] - [], - 'HAVE_ZSTD'], - ] -+ fuzzers += [ -+ [['src/boot/efi/fuzz-bcd.c']], -+ ] - endif - - systemd_boot_objects = [] -diff --git a/tools/oss-fuzz.sh b/tools/oss-fuzz.sh -index 8a19da665e..ae57fc25d5 100755 ---- a/tools/oss-fuzz.sh -+++ b/tools/oss-fuzz.sh -@@ -36,6 +36,13 @@ else - apt-get install -y gperf m4 gettext python3-pip \ - libcap-dev libmount-dev libkmod-dev \ - pkg-config wget python3-jinja2 -+ -+ # gnu-efi is installed here to enable -Dgnu-efi behind which fuzz-bcd -+ # is hidden. It isn't linked against efi. It doesn't -+ # even include "efi.h" because "bcd.c" can work in "unit test" mode -+ # where it isn't necessary. -+ apt-get install -y gnu-efi zstd -+ - pip3 install -r .github/workflows/requirements.txt --require-hashes - - # https://github.com/google/oss-fuzz/issues/6868 -@@ -56,6 +63,15 @@ fi - - ninja -v -C "$build" fuzzers - -+# Compressed BCD files are kept in test/test-bcd so let's unpack them -+# and put them all in the seed corpus. -+bcd=$(mktemp -d) -+for i in test/test-bcd/*.zst; do -+ unzstd "$i" -o "$bcd/$(basename "${i%.zst}")"; -+done -+zip -jqr "$OUT/fuzz-bcd_seed_corpus.zip" "$bcd" -+rm -rf "$bcd" -+ - # The seed corpus is a separate flat archive for each fuzzer, - # with a fixed name ${fuzzer}_seed_corpus.zip. - for d in "$(dirname "$0")/../test/fuzz/fuzz-"*; do diff --git a/SOURCES/0059-fuzz-fuzz-compress-fix-copy-and-paste-error-buf-buf2.patch b/SOURCES/0059-fuzz-fuzz-compress-fix-copy-and-paste-error-buf-buf2.patch new file mode 100644 index 0000000..3b96e63 --- /dev/null +++ b/SOURCES/0059-fuzz-fuzz-compress-fix-copy-and-paste-error-buf-buf2.patch @@ -0,0 +1,26 @@ +From c64c705d9496faba81c8a2326a23f87470ffa692 Mon Sep 17 00:00:00 2001 +From: Li kunyu +Date: Fri, 18 Nov 2022 06:03:41 +0000 +Subject: [PATCH] fuzz: fuzz-compress: fix copy-and-paste error: buf -> buf2 + (#25431) + +(cherry picked from commit f54f6d88b1235487eb7f0c634c488edc7813579a) + +Related: #2138081 +--- + src/fuzz/fuzz-compress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fuzz/fuzz-compress.c b/src/fuzz/fuzz-compress.c +index 712ab3ffa9..10956cc548 100644 +--- a/src/fuzz/fuzz-compress.c ++++ b/src/fuzz/fuzz-compress.c +@@ -55,7 +55,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + + size_t sw_alloc = MAX(h->sw_alloc, 1u); + buf2 = malloc(sw_alloc); +- if (!buf) { ++ if (!buf2) { + log_oom(); + return 0; + } diff --git a/SOURCES/0059-meson-Use-files-for-fuzzers.patch b/SOURCES/0059-meson-Use-files-for-fuzzers.patch deleted file mode 100644 index 44a6669..0000000 --- a/SOURCES/0059-meson-Use-files-for-fuzzers.patch +++ /dev/null @@ -1,335 +0,0 @@ -From a21bc03df9504c7a9b0c8e0e894d94f226a7a038 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Tue, 11 Jan 2022 10:47:01 +0100 -Subject: [PATCH] meson: Use files() for fuzzers - -Not having to provide the full path in the source tree is much -nicer and the produced lists can also be used anywhere in the source -tree. - -(cherry picked from commit bbec46c817951225f1e535d3df95b82a114e502a) - -Related: #2017035 ---- - meson.build | 3 ++- - src/boot/efi/meson.build | 2 +- - src/core/meson.build | 2 +- - src/fuzz/meson.build | 20 ++++++++++---------- - src/journal-remote/meson.build | 2 +- - src/journal/meson.build | 24 ++++++++++++------------ - src/libsystemd-network/meson.build | 8 ++++---- - src/libsystemd/meson.build | 4 ++-- - src/network/meson.build | 4 ++-- - src/nspawn/meson.build | 4 ++-- - src/resolve/meson.build | 2 +- - src/systemctl/meson.build | 7 ++++--- - src/udev/meson.build | 11 +++++------ - src/xdg-autostart-generator/meson.build | 6 +++--- - 14 files changed, 50 insertions(+), 49 deletions(-) - -diff --git a/meson.build b/meson.build -index 35ba29aecf..fdf02b8110 100644 ---- a/meson.build -+++ b/meson.build -@@ -3677,7 +3677,8 @@ foreach tuple : fuzzers - sources += 'src/fuzz/fuzz-main.c' - endif - -- name = sources[0].split('/')[-1].split('.')[0] -+ # FIXME: Use fs.stem() with meson >= 0.54.0 -+ name = '@0@'.format(sources[0]).split('/')[-1].split('.')[0] - - exe = executable( - name, -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 229771026d..3e948281f2 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -359,7 +359,7 @@ if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] - 'HAVE_ZSTD'], - ] - fuzzers += [ -- [['src/boot/efi/fuzz-bcd.c']], -+ [files('fuzz-bcd.c')], - ] - endif - -diff --git a/src/core/meson.build b/src/core/meson.build -index d229d46779..97ac431763 100644 ---- a/src/core/meson.build -+++ b/src/core/meson.build -@@ -228,7 +228,7 @@ endif - ############################################################ - - fuzzers += [ -- [['src/core/fuzz-unit-file.c'], -+ [files('fuzz-unit-file.c'), - [libcore, - libshared], - [libmount]], -diff --git a/src/fuzz/meson.build b/src/fuzz/meson.build -index 1ed1dd8251..d987f32b08 100644 ---- a/src/fuzz/meson.build -+++ b/src/fuzz/meson.build -@@ -1,23 +1,23 @@ - # SPDX-License-Identifier: LGPL-2.1-or-later - - fuzzers += [ -- [['src/fuzz/fuzz-catalog.c']], -+ [files('fuzz-catalog.c')], - -- [['src/fuzz/fuzz-json.c']], -+ [files('fuzz-json.c')], - -- [['src/fuzz/fuzz-varlink.c']], -+ [files('fuzz-varlink.c')], - -- [['src/fuzz/fuzz-udev-database.c']], -+ [files('fuzz-udev-database.c')], - -- [['src/fuzz/fuzz-compress.c']], -+ [files('fuzz-compress.c')], - -- [['src/fuzz/fuzz-bus-label.c']], -+ [files('fuzz-bus-label.c')], - -- [['src/fuzz/fuzz-env-file.c']], -+ [files('fuzz-env-file.c')], - -- [['src/fuzz/fuzz-hostname-setup.c']], -+ [files('fuzz-hostname-setup.c')], - -- [['src/fuzz/fuzz-calendarspec.c']], -+ [files('fuzz-calendarspec.c')], - -- [['src/fuzz/fuzz-time-util.c']], -+ [files('fuzz-time-util.c')], - ] -diff --git a/src/journal-remote/meson.build b/src/journal-remote/meson.build -index 168d0ed6a3..1f3e0878ae 100644 ---- a/src/journal-remote/meson.build -+++ b/src/journal-remote/meson.build -@@ -76,7 +76,7 @@ endif - ############################################################ - - fuzzers += [ -- [['src/journal-remote/fuzz-journal-remote.c'], -+ [files('fuzz-journal-remote.c'), - [libsystemd_journal_remote, - libshared], - [], -diff --git a/src/journal/meson.build b/src/journal/meson.build -index b9a63d5e2f..21c4d2561c 100644 ---- a/src/journal/meson.build -+++ b/src/journal/meson.build -@@ -116,38 +116,38 @@ tests += [ - ] - - fuzzers += [ -- [['src/journal/fuzz-journald-audit.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-audit.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], - -- [['src/journal/fuzz-journald-kmsg.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-kmsg.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], - -- [['src/journal/fuzz-journald-native.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-native.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], - -- [['src/journal/fuzz-journald-native-fd.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-native-fd.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], - -- [['src/journal/fuzz-journald-stream.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-stream.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], - -- [['src/journal/fuzz-journald-syslog.c', -- 'src/journal/fuzz-journald.c'], -+ [files('fuzz-journald-syslog.c', -+ 'fuzz-journald.c'), - [libjournal_core, - libshared], - [libselinux]], -diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build -index 3923df48ea..6be409d8ad 100644 ---- a/src/libsystemd-network/meson.build -+++ b/src/libsystemd-network/meson.build -@@ -105,19 +105,19 @@ tests += [ - ] - - fuzzers += [ -- [['src/libsystemd-network/fuzz-dhcp6-client.c'], -+ [files('fuzz-dhcp6-client.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/fuzz-dhcp-server.c'], -+ [files('fuzz-dhcp-server.c'), - [libsystemd_network, - libshared]], - -- [['src/libsystemd-network/fuzz-lldp-rx.c'], -+ [files('fuzz-lldp-rx.c'), - [libshared, - libsystemd_network]], - -- [['src/libsystemd-network/fuzz-ndisc-rs.c'], -+ [files('fuzz-ndisc-rs.c'), - [libshared, - libsystemd_network]], - ] -diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build -index 42746e560f..2e5255d479 100644 ---- a/src/libsystemd/meson.build -+++ b/src/libsystemd/meson.build -@@ -316,7 +316,7 @@ endif - ############################################################ - - fuzzers += [ -- [['src/libsystemd/sd-bus/fuzz-bus-message.c']], -+ [files('sd-bus/fuzz-bus-message.c')], - -- [['src/libsystemd/sd-bus/fuzz-bus-match.c']], -+ [files('sd-bus/fuzz-bus-match.c')], - ] -diff --git a/src/network/meson.build b/src/network/meson.build -index a598701e4f..23743233fa 100644 ---- a/src/network/meson.build -+++ b/src/network/meson.build -@@ -261,14 +261,14 @@ if conf.get('ENABLE_NETWORKD') == 1 - endif - - fuzzers += [ -- [['src/network/fuzz-netdev-parser.c'], -+ [files('fuzz-netdev-parser.c'), - [libnetworkd_core, - libsystemd_network, - networkd_link_with], - [threads], - network_includes], - -- [['src/network/fuzz-network-parser.c'], -+ [files('fuzz-network-parser.c'), - [libnetworkd_core, - libsystemd_network, - networkd_link_with], -diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build -index 3c1a9c6182..2934672e9a 100644 ---- a/src/nspawn/meson.build -+++ b/src/nspawn/meson.build -@@ -66,12 +66,12 @@ tests += [ - ] - - fuzzers += [ -- [['src/nspawn/fuzz-nspawn-settings.c'], -+ [files('fuzz-nspawn-settings.c'), - [libshared, - libnspawn_core], - [libseccomp]], - -- [['src/nspawn/fuzz-nspawn-oci.c'], -+ [files('fuzz-nspawn-oci.c'), - [libshared, - libnspawn_core], - [libseccomp]], -diff --git a/src/resolve/meson.build b/src/resolve/meson.build -index 4de50c3d8e..1fee993d0a 100644 ---- a/src/resolve/meson.build -+++ b/src/resolve/meson.build -@@ -216,7 +216,7 @@ tests += [ - ] - - fuzzers += [ -- [['src/resolve/fuzz-dns-packet.c'], -+ [files('fuzz-dns-packet.c'), - [libsystemd_resolve_core, - libshared], - [lib_openssl_or_gcrypt, -diff --git a/src/systemctl/meson.build b/src/systemctl/meson.build -index 38bf33d49a..f0d405bb58 100644 ---- a/src/systemctl/meson.build -+++ b/src/systemctl/meson.build -@@ -83,7 +83,8 @@ else - endif - - fuzzers += [ -- [['src/systemctl/fuzz-systemctl-parse-argv.c', -- systemctl_sources], -+ [files('fuzz-systemctl-parse-argv.c') + -+ systemctl_sources, - systemctl_link_with, -- [], [], ['-DFUZZ_SYSTEMCTL_PARSE_ARGV']]] -+ [], [], ['-DFUZZ_SYSTEMCTL_PARSE_ARGV']] -+] -diff --git a/src/udev/meson.build b/src/udev/meson.build -index 57fbf8c8fc..9fd0bcdd0e 100644 ---- a/src/udev/meson.build -+++ b/src/udev/meson.build -@@ -174,24 +174,23 @@ if install_sysconfdir - endif - - fuzzers += [ -- [['src/udev/net/fuzz-link-parser.c', -- 'src/fuzz/fuzz.h'], -+ [files('net/fuzz-link-parser.c'), - [libudevd_core, - libshared], - [threads, - libacl], - udev_includes], - -- [['src/udev/fuzz-udev-rules.c'], -+ [files('fuzz-udev-rules.c'), - [libudevd_core, - libshared], - [threads, - libacl]], - -- [['src/udev/fuzz-udev-rule-parse-value.c']], -+ [files('fuzz-udev-rule-parse-value.c')], - -- [['src/udev/fido_id/fuzz-fido-id-desc.c', -- 'src/udev/fido_id/fido_id_desc.c']], -+ [files('fido_id/fuzz-fido-id-desc.c', -+ 'fido_id/fido_id_desc.c')], - ] - - tests += [ -diff --git a/src/xdg-autostart-generator/meson.build b/src/xdg-autostart-generator/meson.build -index 6418f57c40..cdce66b6fc 100644 ---- a/src/xdg-autostart-generator/meson.build -+++ b/src/xdg-autostart-generator/meson.build -@@ -12,7 +12,7 @@ tests += [ - ] - - fuzzers += [ -- [['src/xdg-autostart-generator/fuzz-xdg-desktop.c', -- 'src/xdg-autostart-generator/xdg-autostart-service.c', -- 'src/xdg-autostart-generator/xdg-autostart-service.h']], -+ [files('fuzz-xdg-desktop.c', -+ 'xdg-autostart-service.c', -+ 'xdg-autostart-service.h')], - ] diff --git a/SOURCES/0060-boot-measure-fix-oom-check.patch b/SOURCES/0060-boot-measure-fix-oom-check.patch new file mode 100644 index 0000000..180638c --- /dev/null +++ b/SOURCES/0060-boot-measure-fix-oom-check.patch @@ -0,0 +1,25 @@ +From 944fa2afca2bd6bd4d1d5aecd265fd4756ee44e2 Mon Sep 17 00:00:00 2001 +From: Li kunyu +Date: Fri, 18 Nov 2022 16:10:24 +0900 +Subject: [PATCH] boot/measure: fix oom check + +(cherry picked from commit fc0cc6db1ecbaa16513125d3fd1a7d11e391a8ee) + +Related: #2138081 +--- + src/boot/measure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/boot/measure.c b/src/boot/measure.c +index 4f16acedf0..0bbd386449 100644 +--- a/src/boot/measure.c ++++ b/src/boot/measure.c +@@ -897,7 +897,7 @@ static int verb_sign(int argc, char *argv[], void *userdata) { + } + + _cleanup_free_ void *sig = malloc(ss); +- if (!ss) { ++ if (!sig) { + r = log_oom(); + goto finish; + } diff --git a/SOURCES/0060-meson-Add-check-argument-to-remaining-run_command-ca.patch b/SOURCES/0060-meson-Add-check-argument-to-remaining-run_command-ca.patch deleted file mode 100644 index 6ba403f..0000000 --- a/SOURCES/0060-meson-Add-check-argument-to-remaining-run_command-ca.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 5a35f08026cad007f460170fe6a3e43bd51f60f9 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Tue, 11 Jan 2022 10:56:22 +0100 -Subject: [PATCH] meson: Add check argument to remaining run_command() calls - -(cherry picked from commit 68a06b3cdfe35ff08092e139033edb4a5189a439) - -Related: #2017035 ---- - man/meson.build | 2 +- - src/basic/meson.build | 2 +- - src/boot/efi/meson.build | 11 +++++++---- - src/test/meson.build | 2 +- - test/fuzz/meson.build | 7 ++++--- - test/meson.build | 8 +++++--- - 6 files changed, 19 insertions(+), 13 deletions(-) - -diff --git a/man/meson.build b/man/meson.build -index a06a601767..710b4ca008 100644 ---- a/man/meson.build -+++ b/man/meson.build -@@ -105,7 +105,7 @@ endforeach - - ############################################################ - --have_lxml = run_command(xml_helper_py).returncode() == 0 -+have_lxml = run_command(xml_helper_py, check: false).returncode() == 0 - if not have_lxml - message('python-lxml not available, not making man page indices') - endif -diff --git a/src/basic/meson.build b/src/basic/meson.build -index 229ac97c69..5a9e13d741 100644 ---- a/src/basic/meson.build -+++ b/src/basic/meson.build -@@ -384,7 +384,7 @@ filesystem_includes = ['linux/magic.h', - 'linux/gfs2_ondisk.h'] - - check_filesystems = find_program('check-filesystems.sh') --r = run_command([check_filesystems, cpp, 'filesystems-gperf.gperf'] + filesystem_includes) -+r = run_command([check_filesystems, cpp, 'filesystems-gperf.gperf'] + filesystem_includes, check: false) - if r.returncode() != 0 - error('found unknown filesystem(s) defined in kernel headers:\n\n' + r.stdout()) - r.stdout() -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index 3e948281f2..fad92f09a1 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -57,8 +57,11 @@ endif - efi_libdir = '' - foreach dir : [get_option('efi-libdir'), - '/usr/lib/gnuefi' / efi_arch[0], -- run_command('realpath', '-e', -- '/usr/lib' / run_command(cc.cmd_array(), '-print-multi-os-directory').stdout().strip()).stdout().strip()] -+ run_command( -+ 'realpath', '-e', -+ '/usr/lib' / run_command(cc.cmd_array(), '-print-multi-os-directory', check: false).stdout().strip(), -+ check: false -+ ).stdout().strip()] - if dir != '' and fs.is_dir(dir) - efi_libdir = dir - break -@@ -125,7 +128,7 @@ elif get_option('sbat-distro') != '' - value = get_option(sbatvar[0]) - if (value == '' or value == 'auto') and not meson.is_cross_build() - cmd = 'if [ -e /etc/os-release ]; then . /etc/os-release; else . /usr/lib/os-release; fi; echo $@0@'.format(sbatvar[1]) -- value = run_command(sh, '-c', cmd).stdout().strip() -+ value = run_command(sh, '-c', cmd, check: true).stdout().strip() - endif - if value == '' - error('Required @0@ option not set and autodetection failed'.format(sbatvar[0])) -@@ -254,7 +257,7 @@ if efi_arch[1] == 'arm' - efi_ldflags += ['-Wl,--no-warn-mismatch'] - endif - --if run_command('grep', '-q', '__CTOR_LIST__', efi_lds).returncode() == 0 -+if run_command('grep', '-q', '__CTOR_LIST__', efi_lds, check: false).returncode() == 0 - # fedora has a patched gnu-efi that adds support for ELF constructors. - # If ld is called by gcc something about these symbols breaks, resulting - # in sd-boot freezing when gnu-efi runs the constructors. Force defining -diff --git a/src/test/meson.build b/src/test/meson.build -index 9e224d69ce..75f78e2e1a 100644 ---- a/src/test/meson.build -+++ b/src/test/meson.build -@@ -11,7 +11,7 @@ test_hashmap_ordered_c = custom_target( - - test_include_dir = include_directories('.') - --path = run_command(sh, '-c', 'echo "$PATH"').stdout().strip() -+path = run_command(sh, '-c', 'echo "$PATH"', check: true).stdout().strip() - test_env = environment() - test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map) - test_env.set('PATH', project_build_root + ':' + path) -diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build -index 30e26b09cf..b4766de3eb 100644 ---- a/test/fuzz/meson.build -+++ b/test/fuzz/meson.build -@@ -13,12 +13,13 @@ sanitize_address_undefined = custom_target( - - sanitizers = [['address,undefined', sanitize_address_undefined]] - --if git.found() -+if git.found() and fs.exists(project_source_root / '.git') - out = run_command(env, '-u', 'GIT_WORK_TREE', - git, '--git-dir=@0@/.git'.format(project_source_root), -- 'ls-files', ':/test/fuzz/*/*') -+ 'ls-files', ':/test/fuzz/*/*', -+ check: true) - else -- out = run_command(sh, '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root)) -+ out = run_command(sh, '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root), check: true) - endif - - fuzz_regression_tests = [] -diff --git a/test/meson.build b/test/meson.build -index 04ae9ebc78..baf94703ea 100644 ---- a/test/meson.build -+++ b/test/meson.build -@@ -182,14 +182,16 @@ endif - if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family()) - udev_dmi_memory_id_test = find_program('udev-dmi-memory-id-test.sh') - -- if git.found() -+ if git.found() and fs.exists(project_source_root / '.git') - out = run_command( - env, '-u', 'GIT_WORK_TREE', - git, '--git-dir=@0@/.git'.format(project_source_root), -- 'ls-files', ':/test/dmidecode-dumps/*.bin') -+ 'ls-files', ':/test/dmidecode-dumps/*.bin', -+ check: true) - else - out = run_command( -- sh, '-c', 'ls @0@/test/dmidecode-dumps/*.bin'.format(project_source_root)) -+ sh, '-c', 'ls @0@/test/dmidecode-dumps/*.bin'.format(project_source_root), -+ check: true) - endif - - foreach p : out.stdout().split() diff --git a/SOURCES/0061-meson-Use-echo-to-list-files.patch b/SOURCES/0061-meson-Use-echo-to-list-files.patch deleted file mode 100644 index 2e9b302..0000000 --- a/SOURCES/0061-meson-Use-echo-to-list-files.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5de4b00e4150080e68064fa1de003039a0901468 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Tue, 11 Jan 2022 11:27:27 +0100 -Subject: [PATCH] meson: Use echo to list files - -No need to invoke ls when we are just interested in file names. -Also, the cd to source root makes the output identical to -"git ls-files" (relative instead of absolute paths). - -(cherry picked from commit 3a469802f4d7b0a59fe1644cb53d34aee4e56bab) - -Related: #2017035 ---- - test/fuzz/meson.build | 2 +- - test/meson.build | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build -index b4766de3eb..39730a615c 100644 ---- a/test/fuzz/meson.build -+++ b/test/fuzz/meson.build -@@ -19,7 +19,7 @@ if git.found() and fs.exists(project_source_root / '.git') - 'ls-files', ':/test/fuzz/*/*', - check: true) - else -- out = run_command(sh, '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root), check: true) -+ out = run_command(sh, '-c', 'cd "@0@"; echo test/fuzz/*/*'.format(project_source_root), check: true) - endif - - fuzz_regression_tests = [] -diff --git a/test/meson.build b/test/meson.build -index baf94703ea..c5d8d6917b 100644 ---- a/test/meson.build -+++ b/test/meson.build -@@ -190,7 +190,7 @@ if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family()) - check: true) - else - out = run_command( -- sh, '-c', 'ls @0@/test/dmidecode-dumps/*.bin'.format(project_source_root), -+ sh, '-c', 'cd "@0@"; echo test/dmidecode-dumps/*.bin'.format(project_source_root), - check: true) - endif - diff --git a/SOURCES/0061-nspawn-allow-sched_rr_get_interval_time64-through-se.patch b/SOURCES/0061-nspawn-allow-sched_rr_get_interval_time64-through-se.patch new file mode 100644 index 0000000..ebc0641 --- /dev/null +++ b/SOURCES/0061-nspawn-allow-sched_rr_get_interval_time64-through-se.patch @@ -0,0 +1,57 @@ +From b2d259a82329e37b0f369e9951f19a067cb8bfb4 Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Fri, 18 Nov 2022 07:18:18 +0000 +Subject: [PATCH] nspawn: allow sched_rr_get_interval_time64 through seccomp + filter + +We only allow a selected subset of syscalls from nspawn containers +and don't list any time64 variants (needed for 32-bit arches when +built using TIME_BITS=64, which is relatively new). + +We allow sched_rr_get_interval which cpython's test suite makes +use of, but we don't allow sched_rr_get_interval_time64. + +The test failures when run in an arm32 nspawn container on an arm64 host +were as follows: +``` +====================================================================== +ERROR: test_sched_rr_get_interval (test.test_posix.PosixTester.test_sched_rr_get_interval) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/var/tmp/portage/dev-lang/python-3.11.0_p1/work/Python-3.11.0/Lib/test/test_posix.py", line 1180, in test_sched_rr_get_interval + interval = posix.sched_rr_get_interval(0) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +PermissionError: [Errno 1] Operation not permitted +``` + +Then strace showed: +``` +sched_rr_get_interval_time64(0, 0xffbbd4a0) = -1 EPERM (Operation not permitted) +``` + +This appears to be the only time64 syscall that isn't already included one of +the sets listed in nspawn-seccomp.c that has a non-time64 variant. Checked +over each of the time64 syscalls known to systemd and verified that none +of the others had a non-time64-variant whitelisted in nspawn other than +sched_rr_get_interval. + +Bug: https://bugs.gentoo.org/880131 +(cherry picked from commit b9e7f22c2d80930cad36ae53e66e42a2996dca4a) + +Related: #2138081 +--- + src/nspawn/nspawn-seccomp.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/nspawn/nspawn-seccomp.c b/src/nspawn/nspawn-seccomp.c +index 77f4c2ac88..27044fadd2 100644 +--- a/src/nspawn/nspawn-seccomp.c ++++ b/src/nspawn/nspawn-seccomp.c +@@ -88,6 +88,7 @@ static int add_syscall_filters( + { 0, "sched_getparam" }, + { 0, "sched_getscheduler" }, + { 0, "sched_rr_get_interval" }, ++ { 0, "sched_rr_get_interval_time64" }, + { 0, "sched_yield" }, + { 0, "seccomp" }, + { 0, "sendfile" }, diff --git a/SOURCES/0062-resolved-use-right-conditionalization-when-setting-u.patch b/SOURCES/0062-resolved-use-right-conditionalization-when-setting-u.patch new file mode 100644 index 0000000..d0a3a96 --- /dev/null +++ b/SOURCES/0062-resolved-use-right-conditionalization-when-setting-u.patch @@ -0,0 +1,26 @@ +From 39974d2ee3b1e514e9d2cf25e4a11447d4dfee53 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 18 Nov 2022 16:52:01 +0100 +Subject: [PATCH] resolved: use right conditionalization when setting unicast + ifindex on UDP sockets + +(cherry picked from commit 5faaed5b62d5ed88d8df2802c5ab4d3ab2eb755a) + +Related: #2138081 +--- + src/resolve/resolved-dns-scope.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c +index 852829569d..4f744499aa 100644 +--- a/src/resolve/resolved-dns-scope.c ++++ b/src/resolve/resolved-dns-scope.c +@@ -424,7 +424,7 @@ static int dns_scope_socket( + return r; + } + +- if (s->link) { ++ if (ifindex != 0) { + r = socket_set_unicast_if(fd, sa.sa.sa_family, ifindex); + if (r < 0) + return r; diff --git a/SOURCES/0062-test-add-a-test-for-mkdir_p.patch b/SOURCES/0062-test-add-a-test-for-mkdir_p.patch deleted file mode 100644 index 40ebe72..0000000 --- a/SOURCES/0062-test-add-a-test-for-mkdir_p.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 010c5dc6b7f18eba37f3df015b3e36b4f28bd559 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 2 Feb 2022 15:08:18 +0900 -Subject: [PATCH] test: add a test for mkdir_p() - -(cherry picked from commit 6f6b017b9bc69df3f3e308c36c95597002ce6e29) - -Related: #2017035 ---- - src/test/meson.build | 2 ++ - src/test/test-mkdir.c | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 32 insertions(+) - create mode 100644 src/test/test-mkdir.c - -diff --git a/src/test/meson.build b/src/test/meson.build -index 75f78e2e1a..14b7939b1f 100644 ---- a/src/test/meson.build -+++ b/src/test/meson.build -@@ -193,6 +193,8 @@ tests += [ - - [files('test-macro.c')], - -+ [files('test-mkdir.c')], -+ - [files('test-json.c')], - - [files('test-modhex.c')], -diff --git a/src/test/test-mkdir.c b/src/test/test-mkdir.c -new file mode 100644 -index 0000000000..c715d5f096 ---- /dev/null -+++ b/src/test/test-mkdir.c -@@ -0,0 +1,30 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+#include -+ -+#include "mkdir.h" -+#include "path-util.h" -+#include "rm-rf.h" -+#include "tests.h" -+#include "tmpfile-util.h" -+ -+TEST(mkdir_p) { -+ _cleanup_(rm_rf_physical_and_freep) char *tmp = NULL; -+ _cleanup_free_ char *p = NULL; -+ -+ assert_se(mkdtemp_malloc("/tmp/test-mkdir-XXXXXX", &tmp) >= 0); -+ -+ assert_se(p = path_join(tmp, "run")); -+ assert_se(mkdir_p(p, 0755) >= 0); -+ -+ p = mfree(p); -+ assert_se(p = path_join(tmp, "var/run")); -+ assert_se(mkdir_parents(p, 0755) >= 0); -+ assert_se(symlink("../run", p) >= 0); -+ -+ p = mfree(p); -+ assert_se(p = path_join(tmp, "var/run/hoge/foo/baz")); -+ assert_se(mkdir_p(p, 0755) >= 0); -+} -+ -+DEFINE_TEST_MAIN(LOG_DEBUG); diff --git a/SOURCES/0063-resolved-when-configuring-127.0.0.1-as-per-interface.patch b/SOURCES/0063-resolved-when-configuring-127.0.0.1-as-per-interface.patch new file mode 100644 index 0000000..0d760ca --- /dev/null +++ b/SOURCES/0063-resolved-when-configuring-127.0.0.1-as-per-interface.patch @@ -0,0 +1,34 @@ +From d8d96bce62e8597b8d35bed1d9e9cb103336fd6b Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 18 Nov 2022 16:52:06 +0100 +Subject: [PATCH] resolved: when configuring 127.0.0.1 as per-interface DNS + server, contact it via "lo" always + +ussually if you specify a DNS server on some interface then we'll use +that interface to talk to it. Let's override this for localhost +addresses, as they only really make sense on "lo". + +Fixes: #25397 +(cherry picked from commit 6e32414a66ff8dbcef233981a7066684d903ee9f) + +Related: #2138081 +--- + src/resolve/resolved-dns-server.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c +index 04a4f53ed0..8ff513fa33 100644 +--- a/src/resolve/resolved-dns-server.c ++++ b/src/resolve/resolved-dns-server.c +@@ -648,6 +648,11 @@ int dns_server_adjust_opt(DnsServer *server, DnsPacket *packet, DnsServerFeature + int dns_server_ifindex(const DnsServer *s) { + assert(s); + ++ /* For loopback addresses, go via the loopback interface, regardless which interface this is linked ++ * to. */ ++ if (in_addr_is_localhost(s->family, &s->address)) ++ return LOOPBACK_IFINDEX; ++ + /* The link ifindex always takes precedence */ + if (s->link) + return s->link->ifindex; diff --git a/SOURCES/0063-util-another-set-of-CVE-2021-4034-assert-s.patch b/SOURCES/0063-util-another-set-of-CVE-2021-4034-assert-s.patch deleted file mode 100644 index 6671776..0000000 --- a/SOURCES/0063-util-another-set-of-CVE-2021-4034-assert-s.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c134e85526f160ad4392edb333caadc5e425957d Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 1 Feb 2022 12:06:21 +0100 -Subject: [PATCH] util: another set of CVE-2021-4034 assert()s - -It's a good idea that we validate argc/argv when we are supposed to -store them away. - -(cherry picked from commit 007e03b284e8ffc0b92edb2122cd9d2d16f049ef) - -Related: #2017035 ---- - src/basic/util.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/basic/util.h b/src/basic/util.h -index 94804f28e3..68ae3b51e0 100644 ---- a/src/basic/util.h -+++ b/src/basic/util.h -@@ -9,6 +9,12 @@ extern int saved_argc; - extern char **saved_argv; - - static inline void save_argc_argv(int argc, char **argv) { -+ -+ /* Protect against CVE-2021-4034 style attacks */ -+ assert_se(argc > 0); -+ assert_se(argv); -+ assert_se(argv[0]); -+ - saved_argc = argc; - saved_argv = argv; - } diff --git a/SOURCES/0064-basic-update-CIFS-magic.patch b/SOURCES/0064-basic-update-CIFS-magic.patch deleted file mode 100644 index 101c13e..0000000 --- a/SOURCES/0064-basic-update-CIFS-magic.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 75b23fa0a4916a228b2b66e73044378931862a49 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sun, 30 Jan 2022 23:40:05 +0100 -Subject: [PATCH] basic: update CIFS magic - -Kernel commit dea2903719283c156b53741126228c4a1b40440f exposed (and -renamed) CIFS_MAGIC_NUMBER as CIFS_SUPER_MAGIC along with -SMB2_SUPER_MAGIC. - -This fixes the following build fail on current Fedora Rawhide: -``` -../src/basic/meson.build:389:8: ERROR: Problem encountered: found unknown filesystem(s) defined in kernel headers: - -Filesystem found in kernel header but not in filesystems-gperf.gperf: CIFS_SUPER_MAGIC -Filesystem found in kernel header but not in filesystems-gperf.gperf: SMB2_SUPER_MAGIC -``` - -(cherry picked from commit bbe53713455be38c0a587626439fd171f28c77fc) - -Related: #2017035 ---- - src/basic/filesystems-gperf.gperf | 4 ++-- - src/basic/missing_magic.h | 11 ++++++++--- - 2 files changed, 10 insertions(+), 5 deletions(-) - -diff --git a/src/basic/filesystems-gperf.gperf b/src/basic/filesystems-gperf.gperf -index 08c8c44510..e8c5357f91 100644 ---- a/src/basic/filesystems-gperf.gperf -+++ b/src/basic/filesystems-gperf.gperf -@@ -40,7 +40,7 @@ ceph, {CEPH_SUPER_MAGIC} - cgroup2, {CGROUP2_SUPER_MAGIC} - # note that the cgroupfs magic got reassigned from cpuset - cgroup, {CGROUP_SUPER_MAGIC} --cifs, {CIFS_MAGIC_NUMBER} -+cifs, {CIFS_SUPER_MAGIC, SMB2_SUPER_MAGIC} - coda, {CODA_SUPER_MAGIC} - configfs, {CONFIGFS_MAGIC} - cramfs, {CRAMFS_MAGIC} -@@ -109,7 +109,7 @@ selinuxfs, {SELINUX_MAGIC} - shiftfs, {SHIFTFS_MAGIC} - smackfs, {SMACK_MAGIC} - # smb3 is an alias for cifs --smb3, {CIFS_MAGIC_NUMBER} -+smb3, {CIFS_SUPER_MAGIC} - # smbfs was removed from the kernel in 2010, the magic remains - smbfs, {SMB_SUPER_MAGIC} - sockfs, {SOCKFS_MAGIC} -diff --git a/src/basic/missing_magic.h b/src/basic/missing_magic.h -index 7d9320bb6d..c104fcfba3 100644 ---- a/src/basic/missing_magic.h -+++ b/src/basic/missing_magic.h -@@ -38,9 +38,14 @@ - #define XFS_SB_MAGIC 0x58465342 - #endif - --/* Not exposed yet. Defined at fs/cifs/cifsglob.h */ --#ifndef CIFS_MAGIC_NUMBER --#define CIFS_MAGIC_NUMBER 0xFF534D42 -+/* dea2903719283c156b53741126228c4a1b40440f (5.17) */ -+#ifndef CIFS_SUPER_MAGIC -+#define CIFS_SUPER_MAGIC 0xFF534D42 -+#endif -+ -+/* dea2903719283c156b53741126228c4a1b40440f (5.17) */ -+#ifndef SMB2_SUPER_MAGIC -+#define SMB2_SUPER_MAGIC 0xFE534D42 - #endif - - /* 257f871993474e2bde6c497b54022c362cf398e1 (4.5) */ diff --git a/SOURCES/0064-manager-fix-format-strings-for-trigger-metadata.patch b/SOURCES/0064-manager-fix-format-strings-for-trigger-metadata.patch new file mode 100644 index 0000000..e62e697 --- /dev/null +++ b/SOURCES/0064-manager-fix-format-strings-for-trigger-metadata.patch @@ -0,0 +1,50 @@ +From bca4fe362cb2198f964d33c5a0fb27298d8e9ad8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 21 Nov 2022 20:03:08 +0100 +Subject: [PATCH] manager: fix format strings for trigger metadata + +Fixup for c8bc7519c888a99134f88f8c82353246d3c0cc5d. + +(cherry picked from commit 6457ce15be84cf3c304d1ba47b89bacc2f60bf6e) + +Related: #2138081 +--- + src/core/timer.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/core/timer.c b/src/core/timer.c +index 8bd430b931..b6810c8599 100644 +--- a/src/core/timer.c ++++ b/src/core/timer.c +@@ -948,11 +948,11 @@ static int activation_details_timer_append_env(ActivationDetails *details, char + if (!dual_timestamp_is_set(&t->last_trigger)) + return 0; + +- r = strv_extendf(strv, "TRIGGER_TIMER_REALTIME_USEC=%" USEC_FMT, t->last_trigger.realtime); ++ r = strv_extendf(strv, "TRIGGER_TIMER_REALTIME_USEC=" USEC_FMT, t->last_trigger.realtime); + if (r < 0) + return r; + +- r = strv_extendf(strv, "TRIGGER_TIMER_MONOTONIC_USEC=%" USEC_FMT, t->last_trigger.monotonic); ++ r = strv_extendf(strv, "TRIGGER_TIMER_MONOTONIC_USEC=" USEC_FMT, t->last_trigger.monotonic); + if (r < 0) + return r; + +@@ -974,7 +974,7 @@ static int activation_details_timer_append_pair(ActivationDetails *details, char + if (r < 0) + return r; + +- r = strv_extendf(strv, "%" USEC_FMT, t->last_trigger.realtime); ++ r = strv_extendf(strv, USEC_FMT, t->last_trigger.realtime); + if (r < 0) + return r; + +@@ -982,7 +982,7 @@ static int activation_details_timer_append_pair(ActivationDetails *details, char + if (r < 0) + return r; + +- r = strv_extendf(strv, "%" USEC_FMT, t->last_trigger.monotonic); ++ r = strv_extendf(strv, USEC_FMT, t->last_trigger.monotonic); + if (r < 0) + return r; + diff --git a/SOURCES/0065-basic-strv-check-printf-arguments-to-strv_extendf.patch b/SOURCES/0065-basic-strv-check-printf-arguments-to-strv_extendf.patch new file mode 100644 index 0000000..ae7fdec --- /dev/null +++ b/SOURCES/0065-basic-strv-check-printf-arguments-to-strv_extendf.patch @@ -0,0 +1,30 @@ +From c103428e24f002e495412a5f9a0b919f4b92c2b7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 21 Nov 2022 20:06:55 +0100 +Subject: [PATCH] basic/strv: check printf arguments to strv_extendf() + +The second argument to _printf_() specifies where the arguments start. We need to +use 0 in two cases: when the args in a va_list and can't be checked, and with journald +logging functions which accept multiple format strings with multiple argument sets, +which the _printf_ checker does not understand. But strv_extendf() can be checked. + +(cherry picked from commit 400102ec91aa3404848a04f49a43d49e1a181708) + +Related: #2138081 +--- + src/basic/strv.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/basic/strv.h b/src/basic/strv.h +index d6f5ac6ba5..6c9fa47943 100644 +--- a/src/basic/strv.h ++++ b/src/basic/strv.h +@@ -45,7 +45,7 @@ static inline int strv_extend(char ***l, const char *value) { + return strv_extend_with_size(l, NULL, value); + } + +-int strv_extendf(char ***l, const char *format, ...) _printf_(2,0); ++int strv_extendf(char ***l, const char *format, ...) _printf_(2,3); + int strv_extend_front(char ***l, const char *value); + + int strv_push_with_size(char ***l, size_t *n, char *value); diff --git a/SOURCES/0065-shared-be-extra-paranoid-and-check-if-argc-0.patch b/SOURCES/0065-shared-be-extra-paranoid-and-check-if-argc-0.patch deleted file mode 100644 index a89cfd2..0000000 --- a/SOURCES/0065-shared-be-extra-paranoid-and-check-if-argc-0.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 83845c85669084c4cd69fa8bfe60c57d36bb8713 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 28 Jan 2022 21:44:32 +0100 -Subject: [PATCH] shared: be extra paranoid and check if argc > 0 - -and also if argv[0] is non-empty as a precaution for issues similar to -CVE-2021-4034. - -(cherry picked from commit 1637e757070a61b12b26a2a4ef547330562dc77f) - -Related: #2017035 ---- - src/shared/main-func.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/shared/main-func.h b/src/shared/main-func.h -index 05cdffeec0..09103bace9 100644 ---- a/src/shared/main-func.h -+++ b/src/shared/main-func.h -@@ -15,6 +15,7 @@ - #define _DEFINE_MAIN_FUNCTION(intro, impl, ret) \ - int main(int argc, char *argv[]) { \ - int r; \ -+ assert(argc > 0 && !isempty(argv[0])); \ - save_argc_argv(argc, argv); \ - intro; \ - r = impl; \ diff --git a/SOURCES/0066-core-check-if-argc-0-and-argv-0-is-set.patch b/SOURCES/0066-core-check-if-argc-0-and-argv-0-is-set.patch deleted file mode 100644 index 830b64f..0000000 --- a/SOURCES/0066-core-check-if-argc-0-and-argv-0-is-set.patch +++ /dev/null @@ -1,27 +0,0 @@ -From efe174ec51b9242101868e83f12cc1186fe1b71b Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 30 Jan 2022 17:54:55 +0900 -Subject: [PATCH] core: check if argc > 0 and argv[0] is set - -Follow-up for 1637e757070a61b12b26a2a4ef547330562dc77f. - -(cherry picked from commit cf3095ac2bbdba3db0d8f7fa7afcee8b8c136201) - -Related: #2017035 ---- - src/core/main.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/core/main.c b/src/core/main.c -index 7ea848ebeb..f315a44a08 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -2726,6 +2726,8 @@ int main(int argc, char *argv[]) { - Manager *m = NULL; - FDSet *fds = NULL; - -+ assert(argc > 0 && !isempty(argv[0])); -+ - /* SysV compatibility: redirect init → telinit */ - redirect_telinit(argc, argv); - diff --git a/SOURCES/0066-resolved-Fix-OpenSSL-error-messages.patch b/SOURCES/0066-resolved-Fix-OpenSSL-error-messages.patch new file mode 100644 index 0000000..2ea5e78 --- /dev/null +++ b/SOURCES/0066-resolved-Fix-OpenSSL-error-messages.patch @@ -0,0 +1,139 @@ +From 57bdd8a488d544282dcc71e6a23987ded71ac64d Mon Sep 17 00:00:00 2001 +From: Benjamin Fogle +Date: Thu, 17 Nov 2022 09:52:50 -0500 +Subject: [PATCH] resolved: Fix OpenSSL error messages + +(cherry picked from commit f4a49d1c58578cb8d759dc6266a23d1acabdc38f) + +Related: #2138081 +--- + src/resolve/resolved-dnstls-openssl.c | 65 +++++++++++---------------- + 1 file changed, 26 insertions(+), 39 deletions(-) + +diff --git a/src/resolve/resolved-dnstls-openssl.c b/src/resolve/resolved-dnstls-openssl.c +index 4d3a88c8da..4a0132ad3d 100644 +--- a/src/resolve/resolved-dnstls-openssl.c ++++ b/src/resolve/resolved-dnstls-openssl.c +@@ -14,6 +14,19 @@ + #include "resolved-dnstls.h" + #include "resolved-manager.h" + ++static char *dnstls_error_string(int ssl_error, char *buf, size_t count) { ++ assert(buf || count == 0); ++ if (ssl_error == SSL_ERROR_SSL) ++ ERR_error_string_n(ERR_get_error(), buf, count); ++ else ++ snprintf(buf, count, "SSL_get_error()=%d", ssl_error); ++ return buf; ++} ++ ++#define DNSTLS_ERROR_BUFSIZE 256 ++#define DNSTLS_ERROR_STRING(error) \ ++ dnstls_error_string((error), (char[DNSTLS_ERROR_BUFSIZE]){}, DNSTLS_ERROR_BUFSIZE) ++ + static int dnstls_flush_write_buffer(DnsStream *stream) { + ssize_t ss; + +@@ -97,26 +110,18 @@ int dnstls_stream_connect_tls(DnsStream *stream, DnsServer *server) { + + if (server->server_name) { + r = SSL_set_tlsext_host_name(s, server->server_name); +- if (r <= 0) { +- char errbuf[256]; +- +- error = ERR_get_error(); +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); +- return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Failed to set server name: %s", errbuf); +- } ++ if (r <= 0) ++ return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), ++ "Failed to set server name: %s", DNSTLS_ERROR_STRING(SSL_ERROR_SSL)); + } + + ERR_clear_error(); + stream->dnstls_data.handshake = SSL_do_handshake(s); + if (stream->dnstls_data.handshake <= 0) { + error = SSL_get_error(s, stream->dnstls_data.handshake); +- if (!IN_SET(error, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE)) { +- char errbuf[256]; +- +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); ++ if (!IN_SET(error, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE)) + return log_debug_errno(SYNTHETIC_ERRNO(ECONNREFUSED), +- "Failed to invoke SSL_do_handshake: %s", errbuf); +- } ++ "Failed to invoke SSL_do_handshake: %s", DNSTLS_ERROR_STRING(error)); + } + + stream->encrypted = true; +@@ -177,12 +182,8 @@ int dnstls_stream_on_io(DnsStream *stream, uint32_t revents) { + } else if (error == SSL_ERROR_SYSCALL) { + if (errno > 0) + log_debug_errno(errno, "Failed to invoke SSL_shutdown, ignoring: %m"); +- } else { +- char errbuf[256]; +- +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); +- log_debug("Failed to invoke SSL_shutdown, ignoring: %s", errbuf); +- } ++ } else ++ log_debug("Failed to invoke SSL_shutdown, ignoring: %s", DNSTLS_ERROR_STRING(error)); + } + + stream->dnstls_events = 0; +@@ -206,14 +207,10 @@ int dnstls_stream_on_io(DnsStream *stream, uint32_t revents) { + return r; + + return -EAGAIN; +- } else { +- char errbuf[256]; +- +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); ++ } else + return log_debug_errno(SYNTHETIC_ERRNO(ECONNREFUSED), + "Failed to invoke SSL_do_handshake: %s", +- errbuf); +- } ++ DNSTLS_ERROR_STRING(error)); + } + + stream->dnstls_events = 0; +@@ -275,12 +272,8 @@ int dnstls_stream_shutdown(DnsStream *stream, int error) { + } else if (ssl_error == SSL_ERROR_SYSCALL) { + if (errno > 0) + log_debug_errno(errno, "Failed to invoke SSL_shutdown, ignoring: %m"); +- } else { +- char errbuf[256]; +- +- ERR_error_string_n(ssl_error, errbuf, sizeof(errbuf)); +- log_debug("Failed to invoke SSL_shutdown, ignoring: %s", errbuf); +- } ++ } else ++ log_debug("Failed to invoke SSL_shutdown, ignoring: %s", DNSTLS_ERROR_STRING(ssl_error)); + } + + stream->dnstls_events = 0; +@@ -307,10 +300,7 @@ static ssize_t dnstls_stream_write(DnsStream *stream, const char *buf, size_t co + stream->dnstls_events = 0; + ss = 0; + } else { +- char errbuf[256]; +- +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); +- log_debug("Failed to invoke SSL_write: %s", errbuf); ++ log_debug("Failed to invoke SSL_write: %s", DNSTLS_ERROR_STRING(error)); + stream->dnstls_events = 0; + ss = -EPIPE; + } +@@ -375,10 +365,7 @@ ssize_t dnstls_stream_read(DnsStream *stream, void *buf, size_t count) { + stream->dnstls_events = 0; + ss = 0; + } else { +- char errbuf[256]; +- +- ERR_error_string_n(error, errbuf, sizeof(errbuf)); +- log_debug("Failed to invoke SSL_read: %s", errbuf); ++ log_debug("Failed to invoke SSL_read: %s", DNSTLS_ERROR_STRING(error)); + stream->dnstls_events = 0; + ss = -EPIPE; + } diff --git a/SOURCES/0067-core-check-argc-argv-uncoditionally.patch b/SOURCES/0067-core-check-argc-argv-uncoditionally.patch deleted file mode 100644 index 070c1f1..0000000 --- a/SOURCES/0067-core-check-argc-argv-uncoditionally.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 43622b6eed32aece624a293167a6d705c08b8d03 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sun, 30 Jan 2022 15:49:27 +0100 -Subject: [PATCH] core: check argc/argv uncoditionally - -as `assert()` might be dropped with `-DNDEBUG`. - -Follow-up to cf3095a and 1637e75. - -(cherry picked from commit 61b9769bda465f4832080e2a7a8285d247121d70) - -Related: #2017035 ---- - src/core/main.c | 2 +- - src/shared/main-func.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/main.c b/src/core/main.c -index f315a44a08..cb3131c12a 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -2726,7 +2726,7 @@ int main(int argc, char *argv[]) { - Manager *m = NULL; - FDSet *fds = NULL; - -- assert(argc > 0 && !isempty(argv[0])); -+ assert_se(argc > 0 && !isempty(argv[0])); - - /* SysV compatibility: redirect init → telinit */ - redirect_telinit(argc, argv); -diff --git a/src/shared/main-func.h b/src/shared/main-func.h -index 09103bace9..81a5c1813c 100644 ---- a/src/shared/main-func.h -+++ b/src/shared/main-func.h -@@ -15,7 +15,7 @@ - #define _DEFINE_MAIN_FUNCTION(intro, impl, ret) \ - int main(int argc, char *argv[]) { \ - int r; \ -- assert(argc > 0 && !isempty(argv[0])); \ -+ assert_se(argc > 0 && !isempty(argv[0])); \ - save_argc_argv(argc, argv); \ - intro; \ - r = impl; \ diff --git a/SOURCES/0067-network-wifi-try-to-reconfigure-when-connected.patch b/SOURCES/0067-network-wifi-try-to-reconfigure-when-connected.patch new file mode 100644 index 0000000..f585174 --- /dev/null +++ b/SOURCES/0067-network-wifi-try-to-reconfigure-when-connected.patch @@ -0,0 +1,70 @@ +From ff7e9a0e3bf9229b2ea55ac0e832358fe13b97b4 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 22 Nov 2022 14:24:32 +0900 +Subject: [PATCH] network: wifi: try to reconfigure when connected + +Sometimes, RTM_NEWLINK message with carrier is received earlier than +NL80211_CMD_CONNECT. To make SSID= or other WiFi related settings in +[Match] section work, let's try to reconfigure the interface. + +Fixes a bug introduced by 96f5f9ef9a1ba5146d3357c1548fb675d3bd5b68. + +Fixes #25384. + +(cherry picked from commit 8a4ad01a72481a6a7c0309064dd2dbd814818c94) + +Related: #2138081 +--- + src/network/networkd-link.c | 2 +- + src/network/networkd-link.h | 1 + + src/network/networkd-wifi.c | 12 ++++++++++++ + 3 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c +index 00e4e451ef..788c7957d3 100644 +--- a/src/network/networkd-link.c ++++ b/src/network/networkd-link.c +@@ -1178,7 +1178,7 @@ static int link_get_network(Link *link, Network **ret) { + return -ENOENT; + } + +-static int link_reconfigure_impl(Link *link, bool force) { ++int link_reconfigure_impl(Link *link, bool force) { + Network *network = NULL; + NetDev *netdev = NULL; + int r; +diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h +index 9f1cdca312..65b0164106 100644 +--- a/src/network/networkd-link.h ++++ b/src/network/networkd-link.h +@@ -234,6 +234,7 @@ int link_stop_engines(Link *link, bool may_keep_dhcp); + const char* link_state_to_string(LinkState s) _const_; + LinkState link_state_from_string(const char *s) _pure_; + ++int link_reconfigure_impl(Link *link, bool force); + int link_reconfigure(Link *link, bool force); + int link_reconfigure_after_sleep(Link *link); + +diff --git a/src/network/networkd-wifi.c b/src/network/networkd-wifi.c +index 4bf798a9eb..62cbca0cf9 100644 +--- a/src/network/networkd-wifi.c ++++ b/src/network/networkd-wifi.c +@@ -269,6 +269,18 @@ int manager_genl_process_nl80211_mlme(sd_netlink *genl, sd_netlink_message *mess + if (link->wlan_iftype == NL80211_IFTYPE_STATION && link->ssid) + log_link_info(link, "Connected WiFi access point: %s (%s)", + link->ssid, ETHER_ADDR_TO_STR(&link->bssid)); ++ ++ /* Sometimes, RTM_NEWLINK message with carrier is received earlier than NL80211_CMD_CONNECT. ++ * To make SSID= or other WiFi related settings in [Match] section work, let's try to ++ * reconfigure the interface. */ ++ if (link->ssid && link_has_carrier(link)) { ++ r = link_reconfigure_impl(link, /* force = */ false); ++ if (r < 0) { ++ log_link_warning_errno(link, r, "Failed to reconfigure interface: %m"); ++ link_enter_failed(link); ++ return 0; ++ } ++ } + break; + } + case NL80211_CMD_DISCONNECT: diff --git a/SOURCES/0068-oomd-always-allow-root-owned-cgroups-to-set-ManagedO.patch b/SOURCES/0068-oomd-always-allow-root-owned-cgroups-to-set-ManagedO.patch new file mode 100644 index 0000000..0bd251e --- /dev/null +++ b/SOURCES/0068-oomd-always-allow-root-owned-cgroups-to-set-ManagedO.patch @@ -0,0 +1,38 @@ +From 6135d6239a40edb260dde80e5662d3e062dde0bd Mon Sep 17 00:00:00 2001 +From: Nick Rosbrook +Date: Tue, 22 Nov 2022 10:33:55 -0500 +Subject: [PATCH] oomd: always allow root-owned cgroups to set + ManagedOOMPreference + +Commit 652a4efb66a ("oomd: loosen the restriction on ManagedOOMPreference") +made the change to allow ManagedOOMPreference on a cgroup candidate when +the monitored cgroup and cgroup candidate are owned by the same user. + +The commit assumed that this check was sufficient to continue allowing +ManagedOOMPreference on all cgroups owned by root. However, it caused a +regression for unprivileged LXD containers where e.g. /sys/fs/cgroup is +owned by nobody (uid=65534). + +Fix this by explicitly allowing the ManagedOOMPreference if uid == 0 in +oomd_fetch_cgroup_oom_preference(). + +(cherry picked from commit 89186093485b52ca957d17842fc1f7c87958454a) + +Related: #2138081 +--- + src/oom/oomd-util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c +index 1fc81d1843..70a1dc941e 100644 +--- a/src/oom/oomd-util.c ++++ b/src/oom/oomd-util.c +@@ -164,7 +164,7 @@ int oomd_fetch_cgroup_oom_preference(OomdCGroupContext *ctx, const char *prefix) + if (r < 0) + return log_debug_errno(r, "Failed to get owner/group from %s: %m", ctx->path); + +- if (uid == prefix_uid) { ++ if (uid == prefix_uid || uid == 0) { + /* Ignore most errors when reading the xattr since it is usually unset and cgroup xattrs are only used + * as an optional feature of systemd-oomd (and the system might not even support them). */ + r = cg_get_xattr_bool(SYSTEMD_CGROUP_CONTROLLER, ctx->path, "user.oomd_avoid"); diff --git a/SOURCES/0068-test-temporary-workaround-for-21819.patch b/SOURCES/0068-test-temporary-workaround-for-21819.patch deleted file mode 100644 index bed8471..0000000 --- a/SOURCES/0068-test-temporary-workaround-for-21819.patch +++ /dev/null @@ -1,48 +0,0 @@ -From d924e5c3014a65e059fd414b90893d320e1784bd Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 27 Jan 2022 22:51:15 +0100 -Subject: [PATCH] test: temporary workaround for #21819 - -Since the TEST-64-UDEV-STORAGE fails are quite frequent now and the root -cause is yet to be discovered, let's add a kludge that attempts to retry -the test up to two more times in case it fails, so we don't -unnecessarily disturb CIs while the issue is being investigated. - -Revert this commit once #21819 is sorted out. - -(cherry picked from commit 95e35511bbdb7810c00c2e4a6cbda5b187192f74) - -Related: #2017035 ---- - test/TEST-64-UDEV-STORAGE/test.sh | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/test/TEST-64-UDEV-STORAGE/test.sh b/test/TEST-64-UDEV-STORAGE/test.sh -index 0f26eaafeb..f784e65984 100755 ---- a/test/TEST-64-UDEV-STORAGE/test.sh -+++ b/test/TEST-64-UDEV-STORAGE/test.sh -@@ -119,7 +119,6 @@ test_run() { - - # Execute each currently defined function starting with "testcase_" - for testcase in "${TESTCASES[@]}"; do -- _image_cleanup - echo "------ $testcase: BEGIN ------" - # Note for my future frustrated self: `fun && xxx` (as well as ||, if, while, - # until, etc.) _DISABLES_ the `set -e` behavior in _ALL_ nested function -@@ -130,8 +129,14 @@ test_run() { - # So, be careful when adding clean up snippets in the testcase_*() functions - - # if the `test_run_one()` function isn't the last command, you have propagate - # the exit code correctly (e.g. `test_run_one() || return $?`, see below). -- ec=0 -- "$testcase" "$test_id" || ec=$? -+ -+ # FIXME: temporary workaround for intermittent fails in certain tests -+ # See: https://github.com/systemd/systemd/issues/21819 -+ for ((_i = 0; _i < 3; _i++)); do -+ _image_cleanup -+ ec=0 -+ "$testcase" "$test_id" && break || ec=$? -+ done - case $ec in - 0) - passed+=("$testcase") diff --git a/SOURCES/0069-oomd-fix-unreachable-test-case-in-test-oomd-util.patch b/SOURCES/0069-oomd-fix-unreachable-test-case-in-test-oomd-util.patch new file mode 100644 index 0000000..addff9f --- /dev/null +++ b/SOURCES/0069-oomd-fix-unreachable-test-case-in-test-oomd-util.patch @@ -0,0 +1,36 @@ +From 7706a5f2d35c6192a557fe7a72f76ea4e2591daf Mon Sep 17 00:00:00 2001 +From: Nick Rosbrook +Date: Tue, 22 Nov 2022 11:30:03 -0500 +Subject: [PATCH] oomd: fix unreachable test case in test-oomd-util + +This conditional with !empty_or_root(ctx->path) always returns false +because the most recent oomd_cgroup_context_acquire() call was with the +root cgroup. Make sure this test case can be reached by checking cgroup +instead of ctx->path. + +While here, use an unused uid (61183) instead of the nobody uid so the +test case does not fail in unprivileged LXD containers. + +(cherry picked from commit f05bcc18941eef5c2f93cfa06660eb06e0dc4c55) + +Related: #2138081 +--- + src/oom/test-oomd-util.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/oom/test-oomd-util.c b/src/oom/test-oomd-util.c +index 176e3a8d69..faa75c5578 100644 +--- a/src/oom/test-oomd-util.c ++++ b/src/oom/test-oomd-util.c +@@ -475,9 +475,9 @@ static void test_oomd_fetch_cgroup_oom_preference(void) { + + /* Assert that avoid/omit are not set if the cgroup and prefix are not + * owned by the same user.*/ +- if (test_xattrs && !empty_or_root(ctx->path)) { ++ if (test_xattrs && !empty_or_root(cgroup)) { + ctx = oomd_cgroup_context_free(ctx); +- assert_se(cg_set_access(SYSTEMD_CGROUP_CONTROLLER, cgroup, 65534, 0) >= 0); ++ assert_se(cg_set_access(SYSTEMD_CGROUP_CONTROLLER, cgroup, 61183, 0) >= 0); + assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0); + + assert_se(oomd_fetch_cgroup_oom_preference(ctx, NULL) == 0); diff --git a/SOURCES/0069-test-don-t-leak-local-variable-to-outer-scopes.patch b/SOURCES/0069-test-don-t-leak-local-variable-to-outer-scopes.patch deleted file mode 100644 index 44bcc9e..0000000 --- a/SOURCES/0069-test-don-t-leak-local-variable-to-outer-scopes.patch +++ /dev/null @@ -1,52 +0,0 @@ -From fe4bd1d397af0fef644c401ca5a94e4c82316b4c Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 27 Jan 2022 22:50:58 +0100 -Subject: [PATCH] test: don't leak local variable to outer scopes - -(cherry picked from commit 888d0bc074c6d11593d28c6a876787ae864604ea) - -Related: #2017035 ---- - test/TEST-64-UDEV-STORAGE/test.sh | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/test/TEST-64-UDEV-STORAGE/test.sh b/test/TEST-64-UDEV-STORAGE/test.sh -index f784e65984..c360c8b661 100755 ---- a/test/TEST-64-UDEV-STORAGE/test.sh -+++ b/test/TEST-64-UDEV-STORAGE/test.sh -@@ -171,6 +171,7 @@ testcase_megasas2_basic() { - return 77 - fi - -+ local i - local qemu_opts=( - "-device megasas-gen2,id=scsi0" - "-device megasas-gen2,id=scsi1" -@@ -197,6 +198,9 @@ testcase_nvme_basic() { - return 77 - fi - -+ local i -+ local qemu_opts=() -+ - for i in {0..27}; do - qemu_opts+=( - "-device nvme,drive=nvme$i,serial=deadbeef$i,num_queues=8" -@@ -220,7 +224,7 @@ testcase_virtio_scsi_identically_named_partitions() { - # and attach them to a virtio-scsi controller - local qemu_opts=("-device virtio-scsi-pci,id=scsi0,num_queues=4") - local diskpath="${TESTDIR:?}/namedpart0.img" -- local lodev qemu_timeout -+ local i lodev qemu_timeout - - dd if=/dev/zero of="$diskpath" bs=1M count=18 - lodev="$(losetup --show -f -P "$diskpath")" -@@ -330,7 +334,7 @@ testcase_lvm_basic() { - fi - - local qemu_opts=("-device ahci,id=ahci0") -- local diskpath -+ local diskpath i - - # Attach 4 SATA disks to the VM (and set their model and serial fields - # to something predictable, so we can refer to them later) diff --git a/SOURCES/0070-portable-add-a-few-more-useful-debug-log-messages.patch b/SOURCES/0070-portable-add-a-few-more-useful-debug-log-messages.patch new file mode 100644 index 0000000..c3a9207 --- /dev/null +++ b/SOURCES/0070-portable-add-a-few-more-useful-debug-log-messages.patch @@ -0,0 +1,48 @@ +From e44e907f58d3c89e0de01e8ff4e25079f1ca505e Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Wed, 23 Nov 2022 16:06:48 +0000 +Subject: [PATCH] portable: add a few more useful debug log messages + +When attaching and /etc/systemd/system.attached can't be created or used +(eg: dead symlink) the logs are pretty much useless as even at debug +level there's no indication of what is going wrong. +Add some debug logs, and return a more specific error string over D-Bus. + +(cherry picked from commit 80d95fcd6e1947a7887b96b22a32dbca115baac9) + +Related: #2138081 +--- + src/portable/portable.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/portable/portable.c b/src/portable/portable.c +index be906f786c..fbc4497014 100644 +--- a/src/portable/portable.c ++++ b/src/portable/portable.c +@@ -1131,7 +1131,7 @@ static int attach_unit_file( + (void) mkdir_parents(where, 0755); + if (mkdir(where, 0755) < 0) { + if (errno != EEXIST) +- return -errno; ++ return log_debug_errno(errno, "Failed to create attach directory %s: %m", where); + } else + (void) portable_changes_add(changes, n_changes, PORTABLE_MKDIR, where, NULL); + +@@ -1145,7 +1145,7 @@ static int attach_unit_file( + + if (mkdir(dropin_dir, 0755) < 0) { + if (errno != EEXIST) +- return -errno; ++ return log_debug_errno(errno, "Failed to create drop-in directory %s: %m", dropin_dir); + } else + (void) portable_changes_add(changes, n_changes, PORTABLE_MKDIR, dropin_dir, NULL); + +@@ -1392,7 +1392,7 @@ int portable_attach( + r = attach_unit_file(&paths, image->path, image->type, extension_images, + item, profile, flags, changes, n_changes); + if (r < 0) +- return r; ++ return sd_bus_error_set_errnof(error, r, "Failed to attach unit '%s': %m", item->name); + } + + /* We don't care too much for the image symlink, it's just a convenience thing, it's not necessary for proper diff --git a/SOURCES/0070-tree-wide-don-t-use-strjoina-on-getenv-values.patch b/SOURCES/0070-tree-wide-don-t-use-strjoina-on-getenv-values.patch deleted file mode 100644 index 4c3045b..0000000 --- a/SOURCES/0070-tree-wide-don-t-use-strjoina-on-getenv-values.patch +++ /dev/null @@ -1,208 +0,0 @@ -From 03bf37877f1c7045724cba12d69e93c8c411646e Mon Sep 17 00:00:00 2001 -From: Anita Zhang -Date: Wed, 26 Jan 2022 10:53:40 -0800 -Subject: [PATCH] tree-wide: don't use strjoina() on getenv() values - -Avoid doing stack allocations on environment variables. - -(cherry picked from commit 1d3b68f6e1538b6a86cbe3650d8b81df2877ef42) - -Related: #2017035 ---- - src/basic/path-lookup.c | 8 ++++++-- - src/core/dbus.c | 8 ++++++-- - src/home/homed-home.c | 10 +++++++--- - src/home/homed-manager.c | 26 ++++++++++++++++++-------- - src/run/run.c | 7 +++++-- - src/shared/pager.c | 9 +++++++-- - 6 files changed, 49 insertions(+), 19 deletions(-) - -diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c -index 6fb8c40e7a..921a30cef7 100644 ---- a/src/basic/path-lookup.c -+++ b/src/basic/path-lookup.c -@@ -238,7 +238,7 @@ static int acquire_generator_dirs( - char **generator_early, - char **generator_late) { - -- _cleanup_free_ char *x = NULL, *y = NULL, *z = NULL; -+ _cleanup_free_ char *x = NULL, *y = NULL, *z = NULL, *p = NULL; - const char *prefix; - - assert(generator); -@@ -261,7 +261,11 @@ static int acquire_generator_dirs( - if (!e) - return -ENXIO; - -- prefix = strjoina(e, "/systemd"); -+ p = path_join(e, "/systemd"); -+ if (!p) -+ return -ENOMEM; -+ -+ prefix = p; - } - - x = path_join(prefix, "generator"); -diff --git a/src/core/dbus.c b/src/core/dbus.c -index 2c5bda58f9..073675ceef 100644 ---- a/src/core/dbus.c -+++ b/src/core/dbus.c -@@ -925,14 +925,18 @@ int bus_init_private(Manager *m) { - - r = sockaddr_un_set_path(&sa.un, "/run/systemd/private"); - } else { -- const char *e, *joined; -+ _cleanup_free_ char *joined = NULL; -+ const char *e; - - e = secure_getenv("XDG_RUNTIME_DIR"); - if (!e) - return log_error_errno(SYNTHETIC_ERRNO(EHOSTDOWN), - "XDG_RUNTIME_DIR is not set, refusing."); - -- joined = strjoina(e, "/systemd/private"); -+ joined = path_join(e, "/systemd/private"); -+ if (!joined) -+ return log_oom(); -+ - r = sockaddr_un_set_path(&sa.un, joined); - } - if (r < 0) -diff --git a/src/home/homed-home.c b/src/home/homed-home.c -index 470c7f07f6..1340cf30d3 100644 ---- a/src/home/homed-home.c -+++ b/src/home/homed-home.c -@@ -1185,14 +1185,18 @@ static int home_start_work(Home *h, const char *verb, UserRecord *hr, UserRecord - if (r < 0) - return r; - if (r == 0) { -+ _cleanup_free_ char *joined = NULL; - const char *homework, *suffix, *unix_path; - - /* Child */ - - suffix = getenv("SYSTEMD_HOME_DEBUG_SUFFIX"); -- if (suffix) -- unix_path = strjoina("/run/systemd/home/notify.", suffix); -- else -+ if (suffix) { -+ joined = strjoin("/run/systemd/home/notify.", suffix); -+ if (!joined) -+ return log_oom(); -+ unix_path = joined; -+ } else - unix_path = "/run/systemd/home/notify"; - - if (setenv("NOTIFY_SOCKET", unix_path, 1) < 0) { -diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c -index 6c178b8a0e..c1ec555cac 100644 ---- a/src/home/homed-manager.c -+++ b/src/home/homed-manager.c -@@ -936,6 +936,7 @@ int manager_enumerate_images(Manager *m) { - } - - static int manager_connect_bus(Manager *m) { -+ _cleanup_free_ char *b = NULL; - const char *suffix, *busname; - int r; - -@@ -955,9 +956,12 @@ static int manager_connect_bus(Manager *m) { - return r; - - suffix = getenv("SYSTEMD_HOME_DEBUG_SUFFIX"); -- if (suffix) -- busname = strjoina("org.freedesktop.home1.", suffix); -- else -+ if (suffix) { -+ b = strjoin("org.freedesktop.home1.", suffix); -+ if (!b) -+ return log_oom(); -+ busname = b; -+ } else - busname = "org.freedesktop.home1"; - - r = sd_bus_request_name_async(m->bus, NULL, busname, 0, NULL, NULL); -@@ -974,6 +978,7 @@ static int manager_connect_bus(Manager *m) { - } - - static int manager_bind_varlink(Manager *m) { -+ _cleanup_free_ char *p = NULL; - const char *suffix, *socket_path; - int r; - -@@ -999,9 +1004,12 @@ static int manager_bind_varlink(Manager *m) { - /* To make things easier to debug, when working from a homed managed home directory, let's optionally - * use a different varlink socket name */ - suffix = getenv("SYSTEMD_HOME_DEBUG_SUFFIX"); -- if (suffix) -- socket_path = strjoina("/run/systemd/userdb/io.systemd.Home.", suffix); -- else -+ if (suffix) { -+ p = strjoin("/run/systemd/userdb/io.systemd.Home.", suffix); -+ if (!p) -+ return log_oom(); -+ socket_path = p; -+ } else - socket_path = "/run/systemd/userdb/io.systemd.Home"; - - r = varlink_server_listen_address(m->varlink_server, socket_path, 0666); -@@ -1159,9 +1167,11 @@ static int manager_listen_notify(Manager *m) { - - suffix = getenv("SYSTEMD_HOME_DEBUG_SUFFIX"); - if (suffix) { -- const char *unix_path; -+ _cleanup_free_ char *unix_path = NULL; - -- unix_path = strjoina("/run/systemd/home/notify.", suffix); -+ unix_path = strjoin("/run/systemd/home/notify.", suffix); -+ if (!unix_path) -+ return log_oom(); - r = sockaddr_un_set_path(&sa.un, unix_path); - if (r < 0) - return log_error_errno(r, "Socket path %s does not fit in sockaddr_un: %m", unix_path); -diff --git a/src/run/run.c b/src/run/run.c -index ff24373847..e75b027542 100644 ---- a/src/run/run.c -+++ b/src/run/run.c -@@ -794,9 +794,12 @@ static int transient_service_set_properties(sd_bus_message *m, const char *pty_p - - e = getenv("TERM"); - if (e) { -- char *n; -+ _cleanup_free_ char *n = NULL; -+ -+ n = strjoin("TERM=", e); -+ if (!n) -+ return log_oom(); - -- n = strjoina("TERM=", e); - r = sd_bus_message_append(m, - "(sv)", - "Environment", "as", 1, n); -diff --git a/src/shared/pager.c b/src/shared/pager.c -index f75ef62d2d..9426d3ef98 100644 ---- a/src/shared/pager.c -+++ b/src/shared/pager.c -@@ -86,6 +86,7 @@ static int no_quit_on_interrupt(int exe_name_fd, const char *less_opts) { - void pager_open(PagerFlags flags) { - _cleanup_close_pair_ int fd[2] = { -1, -1 }, exe_name_pipe[2] = { -1, -1 }; - _cleanup_strv_free_ char **pager_args = NULL; -+ _cleanup_free_ char *l = NULL; - const char *pager, *less_opts; - int r; - -@@ -131,8 +132,12 @@ void pager_open(PagerFlags flags) { - less_opts = getenv("SYSTEMD_LESS"); - if (!less_opts) - less_opts = "FRSXMK"; -- if (flags & PAGER_JUMP_TO_END) -- less_opts = strjoina(less_opts, " +G"); -+ if (flags & PAGER_JUMP_TO_END) { -+ l = strjoin(less_opts, " +G"); -+ if (!l) -+ return (void) log_oom(); -+ less_opts = l; -+ } - - /* We set SIGINT as PR_DEATHSIG signal here, to match the "K" parameter we set in $LESS, which enables SIGINT behaviour. */ - r = safe_fork("(pager)", FORK_RESET_SIGNALS|FORK_DEATHSIG_SIGINT|FORK_RLIMIT_NOFILE_SAFE|FORK_LOG, &pager_pid); diff --git a/SOURCES/0071-man-clarify-Environmentfile-format.patch b/SOURCES/0071-man-clarify-Environmentfile-format.patch deleted file mode 100644 index 91dc2d5..0000000 --- a/SOURCES/0071-man-clarify-Environmentfile-format.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 05ea18897aeafa1f2d47c5eae6c43bdd6ff71b9d Mon Sep 17 00:00:00 2001 -From: Yonathan Randolph -Date: Sun, 26 Dec 2021 17:12:00 -0800 -Subject: [PATCH] man: clarify Environmentfile format - -Remove incorrect claim that C escapes (such as \t and \n) are recognized and that control characters are disallowed. Specify the allowed characters and escapes with single quotes, with double quotes, and without quotes. - -(cherry picked from commit 4bbcde8498eb59557ebddd7830efb47c0297ff4b) - -Related: #2017035 ---- - man/systemd.exec.xml | 51 ++++++++++++++++++++++++++++---------------- - 1 file changed, 33 insertions(+), 18 deletions(-) - -diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml -index cd21d5b28d..69858d5e59 100644 ---- a/man/systemd.exec.xml -+++ b/man/systemd.exec.xml -@@ -2485,18 +2485,39 @@ SystemCallErrorNumber=EPERM - - EnvironmentFile= - -- Similar to Environment= but reads the environment variables from a text -- file. The text file should contain new-line-separated variable assignments. Empty lines, lines without an -- = separator, or lines starting with ; or # will be ignored, which may be used for -- commenting. A line ending with a backslash will be concatenated with the following one, allowing multiline -- variable definitions. The parser strips leading and trailing whitespace from the values of assignments, unless -- you use double quotes ("). -- -- C escapes -- are supported, but not -- most control characters. -- \t and \n can be used to insert tabs and newlines within -- EnvironmentFile=. -+ Similar to Environment= but reads the environment variables from a text file. -+ The text file should contain newline-separated variable assignments. Empty lines, lines without an -+ = separator, or lines starting with ; or # will be -+ ignored, which may be used for commenting. The file must be UTF-8 encoded. Valid characters are unicode scalar values other than noncharacters, U+0000 NUL, and U+FEFF byte order mark. Control codes other than NUL -+ are allowed. -+ -+ In the file, an unquoted value after the = is parsed with the same backslash-escape -+ rules as unquoted -+ text in a POSIX shell, but unlike in a shell, interior whitespace is preserved and quotes after the -+ first non-whitespace character are preserved. Leading and trailing whitespace (space, tab, carriage return) is -+ discarded, but interior whitespace within the line is preserved verbatim. A line ending with a backslash will be -+ continued to the following one, with the newline itself discarded. A backslash -+ \ followed by any character other than newline will preserve the following character, so that -+ \\ will become the value \. -+ -+ In the file, a '-quoted value after the = can span multiple lines -+ and contain any character verbatim other than single quote, like single-quoted -+ text in a POSIX shell. No backslash-escape sequences are recognized. Leading and trailing whitespace -+ outside of the single quotes is discarded. -+ -+ In the file, a "-quoted value after the = can span multiple lines, -+ and the same escape sequences are recognized as in double-quoted -+ text of a POSIX shell. Backslash (\) followed by any of "\`$ will -+ preserve that character. A backslash followed by newline is a line continuation, and the newline itself is -+ discarded. A backslash followed by any other character is ignored; both the backslash and the following -+ character are preserved verbatim. Leading and trailing whitespace outside of the double quotes is -+ discarded. - - The argument passed should be an absolute filename or wildcard expression, optionally prefixed with - -, which indicates that if the file does not exist, it will not be read and no error or -@@ -2529,12 +2550,6 @@ SystemCallErrorNumber=EPERM - Variables set for invoked processes due to this setting are subject to being overridden by those - configured with Environment= or EnvironmentFile=. - -- C escapes -- are supported, but not -- most control characters. -- \t and \n can be used to insert tabs and newlines within -- EnvironmentFile=. -- - Example: - PassEnvironment=VAR1 VAR2 VAR3 - passes three variables VAR1, diff --git a/SOURCES/0071-repart-respect-discard-no-also-for-block-devices.patch b/SOURCES/0071-repart-respect-discard-no-also-for-block-devices.patch new file mode 100644 index 0000000..57b016e --- /dev/null +++ b/SOURCES/0071-repart-respect-discard-no-also-for-block-devices.patch @@ -0,0 +1,43 @@ +From 44843b307d9acbe4f17b7af710cf66932667533a Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Tue, 22 Nov 2022 16:24:54 +0000 +Subject: [PATCH] repart: respect --discard=no also for block devices + +It's only used to avoid BLKDISCARD on individual partitions at the moment. +It can take a lot of time to run on very slow devices, so avoid it for +them too. + +(cherry picked from commit 0dce448bbc97c861520c287b01d632b887442925) + +Related: #2138081 +--- + src/partition/repart.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git a/src/partition/repart.c b/src/partition/repart.c +index 8e3cfece89..c4ca9840c8 100644 +--- a/src/partition/repart.c ++++ b/src/partition/repart.c +@@ -4387,13 +4387,15 @@ static int context_write_partition_table( + + log_info("Wiped block device."); + +- r = context_discard_range(context, 0, context->total); +- if (r == -EOPNOTSUPP) +- log_info("Storage does not support discard, not discarding entire block device data."); +- else if (r < 0) +- return log_error_errno(r, "Failed to discard entire block device: %m"); +- else if (r > 0) +- log_info("Discarded entire block device."); ++ if (arg_discard) { ++ r = context_discard_range(context, 0, context->total); ++ if (r == -EOPNOTSUPP) ++ log_info("Storage does not support discard, not discarding entire block device data."); ++ else if (r < 0) ++ return log_error_errno(r, "Failed to discard entire block device: %m"); ++ else if (r > 0) ++ log_info("Discarded entire block device."); ++ } + } + + r = fdisk_get_partitions(context->fdisk_context, &original_table); diff --git a/SOURCES/0072-test-load-fragment-add-a-basic-test-for-config_parse.patch b/SOURCES/0072-test-load-fragment-add-a-basic-test-for-config_parse.patch deleted file mode 100644 index c0ca80d..0000000 --- a/SOURCES/0072-test-load-fragment-add-a-basic-test-for-config_parse.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 01df4d485c8a6f3493a83a2a61572e9f2bccb649 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 09:39:55 +0100 -Subject: [PATCH] test-load-fragment: add a basic test for - config_parse_unit_env_file() - -(cherry picked from commit 3ef86964ed151aa2464701eef46d665adfd70895) - -Related: #2017035 ---- - src/test/test-load-fragment.c | 64 +++++++++++++++++++++++++++++++++++ - 1 file changed, 64 insertions(+) - -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index 1bd68c7e0a..fbe4744333 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -773,6 +773,70 @@ TEST(config_parse_pass_environ) { - assert_se(streq(passenv[0], "normal_name")); - } - -+TEST(config_parse_unit_env_file) { -+ /* int config_parse_unit_env_file( -+ const char *unit, -+ const char *filename, -+ unsigned line, -+ const char *section, -+ unsigned section_line, -+ const char *lvalue, -+ int ltype, -+ const char *rvalue, -+ void *data, -+ void *userdata) */ -+ -+ _cleanup_(manager_freep) Manager *m = NULL; -+ Unit *u; -+ _cleanup_strv_free_ char **files = NULL; -+ int r; -+ -+ r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ if (manager_errno_skip_test(r)) { -+ log_notice_errno(r, "Skipping test: manager_new: %m"); -+ return; -+ } -+ -+ assert_se(r >= 0); -+ assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); -+ -+ assert_se(u = unit_new(m, sizeof(Service))); -+ assert_se(unit_add_name(u, "foobar.service") == 0); -+ -+ r = config_parse_unit_env_file(u->id, "fake", 1, "section", 1, -+ "EnvironmentFile", 0, "not-absolute", -+ &files, u); -+ assert_se(r == 0); -+ assert_se(strv_length(files) == 0); -+ -+ r = config_parse_unit_env_file(u->id, "fake", 1, "section", 1, -+ "EnvironmentFile", 0, "/absolute1", -+ &files, u); -+ assert_se(r == 0); -+ assert_se(strv_length(files) == 1); -+ -+ r = config_parse_unit_env_file(u->id, "fake", 1, "section", 1, -+ "EnvironmentFile", 0, "/absolute2", -+ &files, u); -+ assert_se(r == 0); -+ assert_se(strv_length(files) == 2); -+ assert_se(streq(files[0], "/absolute1")); -+ assert_se(streq(files[1], "/absolute2")); -+ -+ r = config_parse_unit_env_file(u->id, "fake", 1, "section", 1, -+ "EnvironmentFile", 0, "", -+ &files, u); -+ assert_se(r == 0); -+ assert_se(strv_isempty(files)); -+ -+ r = config_parse_unit_env_file(u->id, "fake", 1, "section", 1, -+ "EnvironmentFile", 0, "/path/%n.conf", -+ &files, u); -+ assert_se(r == 0); -+ assert_se(strv_length(files) == 1); -+ assert_se(streq(files[0], "/path/foobar.service.conf")); -+} -+ - TEST(unit_dump_config_items) { - unit_dump_config_items(stdout); - } diff --git a/SOURCES/0072-udev-make-sure-auto-root-logic-also-works-in-UKIs-bo.patch b/SOURCES/0072-udev-make-sure-auto-root-logic-also-works-in-UKIs-bo.patch new file mode 100644 index 0000000..9b50d61 --- /dev/null +++ b/SOURCES/0072-udev-make-sure-auto-root-logic-also-works-in-UKIs-bo.patch @@ -0,0 +1,92 @@ +From e3dfedee10cb0c348d748bf438c76e5c3623ad69 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 21 Nov 2022 15:32:22 +0100 +Subject: [PATCH] udev: make sure auto-root logic also works in UKIs booted + from XBOOTLDR +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If no root= switch is specified on the kernel command line we'll use the +root disk on which the partition the LoaderDevicePartUUID efi var is +located – as long as that partition is an ESP. Let's slightly liberalize +that and also allow it if that partition is an XBOOTLDR partition. This +ensures that UKIs spawned directly from XBOOTLDR work the same as those +from the ESP. + +(Note that this makes no difference if sd-boot is in the mix, as in that +case LoaderDevicePartUUID is always set to the ESP, as that's where +sd-boot is located, and sd-boot will set the var first, sd-stub will +only set it later if it#s not set yet.) + +(cherry picked from commit e4cb147a2e230a4a0b804c3e70f2692a5e2fd698) + +Related: #2138081 +--- + src/udev/udev-builtin-blkid.c | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) + +diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c +index 92ea43eef0..9f5646ffdd 100644 +--- a/src/udev/udev-builtin-blkid.c ++++ b/src/udev/udev-builtin-blkid.c +@@ -120,14 +120,14 @@ static int find_gpt_root(sd_device *dev, blkid_probe pr, bool test) { + #if defined(SD_GPT_ROOT_NATIVE) && ENABLE_EFI + + _cleanup_free_ char *root_id = NULL, *root_label = NULL; +- bool found_esp = false; ++ bool found_esp_or_xbootldr = false; + int r; + + assert(pr); + +- /* Iterate through the partitions on this disk, and see if the +- * EFI ESP we booted from is on it. If so, find the first root +- * disk, and add a property indicating its partition UUID. */ ++ /* Iterate through the partitions on this disk, and see if the UEFI ESP or XBOOTLDR partition we ++ * booted from is on it. If so, find the first root disk, and add a property indicating its partition ++ * UUID. */ + + errno = 0; + blkid_partlist pl = blkid_probe_get_partitions(pr); +@@ -157,21 +157,20 @@ static int find_gpt_root(sd_device *dev, blkid_probe pr, bool test) { + if (sd_id128_from_string(stype, &type) < 0) + continue; + +- if (sd_id128_equal(type, SD_GPT_ESP)) { +- sd_id128_t id, esp; ++ if (sd_id128_in_set(type, SD_GPT_ESP, SD_GPT_XBOOTLDR)) { ++ sd_id128_t id, esp_or_xbootldr; + +- /* We found an ESP, let's see if it matches +- * the ESP we booted from. */ ++ /* We found an ESP or XBOOTLDR, let's see if it matches the ESP/XBOOTLDR we booted from. */ + + if (sd_id128_from_string(sid, &id) < 0) + continue; + +- r = efi_loader_get_device_part_uuid(&esp); ++ r = efi_loader_get_device_part_uuid(&esp_or_xbootldr); + if (r < 0) + return r; + +- if (sd_id128_equal(id, esp)) +- found_esp = true; ++ if (sd_id128_equal(id, esp_or_xbootldr)) ++ found_esp_or_xbootldr = true; + + } else if (sd_id128_equal(type, SD_GPT_ROOT_NATIVE)) { + unsigned long long flags; +@@ -195,9 +194,9 @@ static int find_gpt_root(sd_device *dev, blkid_probe pr, bool test) { + } + } + +- /* We found the ESP on this disk, and also found a root +- * partition, nice! Let's export its UUID */ +- if (found_esp && root_id) ++ /* We found the ESP/XBOOTLDR on this disk, and also found a root partition, nice! Let's export its ++ * UUID */ ++ if (found_esp_or_xbootldr && root_id) + udev_builtin_add_property(dev, test, "ID_PART_GPT_AUTO_ROOT_UUID", root_id); + #endif + diff --git a/SOURCES/0073-core-execute-use-_cleanup_-in-exec_context_load_envi.patch b/SOURCES/0073-core-execute-use-_cleanup_-in-exec_context_load_envi.patch deleted file mode 100644 index bc2d6ae..0000000 --- a/SOURCES/0073-core-execute-use-_cleanup_-in-exec_context_load_envi.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 65aca6d552b69af81fe9588720194e0b86a160fb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 09:51:19 +0100 -Subject: [PATCH] core/execute: use _cleanup_ in - exec_context_load_environment() - -Also rename variables. - -(cherry picked from commit 398a5009169fdc0c4eb147692c0cd929b9fe4c84) - -Related: #2017035 ---- - src/core/execute.c | 51 +++++++++++++++++++--------------------------- - 1 file changed, 21 insertions(+), 30 deletions(-) - -diff --git a/src/core/execute.c b/src/core/execute.c -index 16f346f339..2ab65e9cfe 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -5363,20 +5363,18 @@ static int exec_context_named_iofds( - return targets == 0 ? 0 : -ENOENT; - } - --static int exec_context_load_environment(const Unit *unit, const ExecContext *c, char ***l) { -- char **i, **r = NULL; -+static int exec_context_load_environment(const Unit *unit, const ExecContext *c, char ***ret) { -+ _cleanup_strv_free_ char **v = NULL; -+ char **i; -+ int r; - - assert(c); -- assert(l); -+ assert(ret); - - STRV_FOREACH(i, c->environment_files) { -- char *fn; -- int k; -- bool ignore = false; -- char **p; - _cleanup_globfree_ glob_t pglob = {}; -- -- fn = *i; -+ bool ignore = false; -+ char *fn = *i; - - if (fn[0] == '-') { - ignore = true; -@@ -5386,33 +5384,30 @@ static int exec_context_load_environment(const Unit *unit, const ExecContext *c, - if (!path_is_absolute(fn)) { - if (ignore) - continue; -- -- strv_free(r); - return -EINVAL; - } - - /* Filename supports globbing, take all matching files */ -- k = safe_glob(fn, 0, &pglob); -- if (k < 0) { -+ r = safe_glob(fn, 0, &pglob); -+ if (r < 0) { - if (ignore) - continue; -- -- strv_free(r); -- return k; -+ return r; - } - - /* When we don't match anything, -ENOENT should be returned */ - assert(pglob.gl_pathc > 0); - - for (unsigned n = 0; n < pglob.gl_pathc; n++) { -- k = load_env_file(NULL, pglob.gl_pathv[n], &p); -- if (k < 0) { -+ _cleanup_strv_free_ char **p = NULL; -+ -+ r = load_env_file(NULL, pglob.gl_pathv[n], &p); -+ if (r < 0) { - if (ignore) - continue; -- -- strv_free(r); -- return k; -+ return r; - } -+ - /* Log invalid environment variables with filename */ - if (p) { - InvalidEnvInfo info = { -@@ -5423,23 +5418,19 @@ static int exec_context_load_environment(const Unit *unit, const ExecContext *c, - p = strv_env_clean_with_callback(p, invalid_env, &info); - } - -- if (!r) -- r = p; -+ if (!v) -+ v = TAKE_PTR(p); - else { -- char **m; -- -- m = strv_env_merge(r, p); -- strv_free(r); -- strv_free(p); -+ char **m = strv_env_merge(v, p); - if (!m) - return -ENOMEM; - -- r = m; -+ strv_free_and_replace(v, m); - } - } - } - -- *l = r; -+ *ret = TAKE_PTR(v); - - return 0; - } diff --git a/SOURCES/0073-meson-install-test-kernel-install-only-when-Dkernel-.patch b/SOURCES/0073-meson-install-test-kernel-install-only-when-Dkernel-.patch new file mode 100644 index 0000000..4db4f55 --- /dev/null +++ b/SOURCES/0073-meson-install-test-kernel-install-only-when-Dkernel-.patch @@ -0,0 +1,32 @@ +From 812e979fe66e9c1a768fbcee3f568234fec2cded Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Tue, 15 Nov 2022 09:04:42 +0100 +Subject: [PATCH] meson: install test-kernel-install only when + -Dkernel-install=true + +This patch fixes the following build failure: + + meson.build:3853:8: ERROR: Unknown variable "test_kernel_install_sh". + +Fixes #25432. + +(cherry picked from commit cc77a56532ddb59770e8312fc1b9954b0b135e72) + +Related: #2138081 +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 015849af49..35704947e3 100644 +--- a/meson.build ++++ b/meson.build +@@ -3841,7 +3841,7 @@ exe = custom_target( + install_dir : bindir) + public_programs += exe + +-if want_tests != 'false' ++if want_tests != 'false' and want_kernel_install + test('test-kernel-install', + test_kernel_install_sh, + args : [exe.full_path(), loaderentry_install]) diff --git a/SOURCES/0074-boot-Silence-driver-reconnect-errors.patch b/SOURCES/0074-boot-Silence-driver-reconnect-errors.patch new file mode 100644 index 0000000..f9c0cf8 --- /dev/null +++ b/SOURCES/0074-boot-Silence-driver-reconnect-errors.patch @@ -0,0 +1,55 @@ +From 1dc423e2c194eec07a04b666533cd39e74eab6de Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sat, 12 Nov 2022 16:24:53 +0100 +Subject: [PATCH] boot: Silence driver reconnect errors + +(cherry picked from commit 98ac5192d5feddae19f6f5ceb60aa3751a30676b) + +Related: #2138081 +--- + src/boot/efi/drivers.c | 28 +++++++++++++--------------- + 1 file changed, 13 insertions(+), 15 deletions(-) + +diff --git a/src/boot/efi/drivers.c b/src/boot/efi/drivers.c +index 39b65e74a6..7f2057f5a1 100644 +--- a/src/boot/efi/drivers.c ++++ b/src/boot/efi/drivers.c +@@ -51,25 +51,23 @@ static EFI_STATUS load_one_driver( + } + + EFI_STATUS reconnect_all_drivers(void) { +- _cleanup_free_ EFI_HANDLE *handles = NULL; +- UINTN n_handles = 0; +- EFI_STATUS err; ++ _cleanup_free_ EFI_HANDLE *handles = NULL; ++ size_t n_handles = 0; ++ EFI_STATUS err; + +- /* Reconnects all handles, so that any loaded drivers can take effect. */ ++ /* Reconnects all handles, so that any loaded drivers can take effect. */ + +- err = BS->LocateHandleBuffer(AllHandles, NULL, NULL, &n_handles, &handles); +- if (err != EFI_SUCCESS) +- return log_error_status_stall(err, L"Failed to get list of handles: %r", err); ++ err = BS->LocateHandleBuffer(AllHandles, NULL, NULL, &n_handles, &handles); ++ if (err != EFI_SUCCESS) ++ return log_error_status_stall(err, L"Failed to get list of handles: %r", err); + +- for (UINTN i = 0; i < n_handles; i++) { +- err = BS->ConnectController(handles[i], NULL, NULL, true); +- if (err == EFI_NOT_FOUND) /* No drivers for this handle */ +- continue; +- if (err != EFI_SUCCESS) +- log_error_status_stall(err, L"Failed to reconnect handle %" PRIuN L", ignoring: %r", i, err); +- } ++ for (size_t i = 0; i < n_handles; i++) ++ /* Some firmware gives us some bogus handles (or they might become bad due to ++ * reconnecting everything). Security policy may also prevent us from doing so too. ++ * There is nothing we can realistically do on errors anyways, so just ignore them. */ ++ (void) BS->ConnectController(handles[i], NULL, NULL, true); + +- return EFI_SUCCESS; ++ return EFI_SUCCESS; + } + + EFI_STATUS load_drivers( diff --git a/SOURCES/0074-test-env-file-add-tests-for-quoting-in-env-files.patch b/SOURCES/0074-test-env-file-add-tests-for-quoting-in-env-files.patch deleted file mode 100644 index 6b1fdce..0000000 --- a/SOURCES/0074-test-env-file-add-tests-for-quoting-in-env-files.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 402854a52a0a659fd914279eae17b4e065a9c294 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 10:15:50 +0100 -Subject: [PATCH] test-env-file: add tests for quoting in env files - -(cherry picked from commit e9e982a29d52834375e5fb553cecb45bc905cf91) - -Related: #2017035 ---- - src/test/test-env-file.c | 68 +++++++++++++++++++++++++++++----------- - 1 file changed, 50 insertions(+), 18 deletions(-) - -diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c -index 6cc2455c1f..7b132447bf 100644 ---- a/src/test/test-env-file.c -+++ b/src/test/test-env-file.c -@@ -13,11 +13,11 @@ - "a=a\n" \ - "b=b\\\n" \ - "c\n" \ -- "d=d\\\n" \ -- "e\\\n" \ -- "f\n" \ -+ "d= d\\\n" \ -+ "e \\\n" \ -+ "f \n" \ - "g=g\\ \n" \ -- "h=h\n" \ -+ "h= ąęół\\ śćńźżµ \n" \ - "i=i\\" - - #define env_file_2 \ -@@ -26,22 +26,34 @@ - #define env_file_3 \ - "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \ - "#--nouser-config \\\n" \ -- "normal=line" -- --#define env_file_4 \ -- "# Generated\n" \ -- "\n" \ -- "HWMON_MODULES=\"coretemp f71882fg\"\n" \ -- "\n" \ -- "# For compatibility reasons\n" \ -- "\n" \ -- "MODULE_0=coretemp\n" \ -- "MODULE_1=f71882fg" -+ "normal=line \\\n" \ -+ ";normal=ignored \\\n" \ -+ "normal_ignored \\\n" \ -+ "normal ignored \\\n" -+ -+#define env_file_4 \ -+ "# Generated\n" \ -+ "\n" \ -+ "HWMON_MODULES=\"coretemp f71882fg\"\n" \ -+ "\n" \ -+ "# For compatibility reasons\n" \ -+ "\n" \ -+ "MODULE_0=coretemp\n" \ -+ "MODULE_1=f71882fg" - - #define env_file_5 \ -- "a=\n" \ -+ "a=\n" \ - "b=" - -+#define env_file_6 \ -+ "a=\\ \\n \\t \\x \\y \\' \n" \ -+ "b= \\$' \n" \ -+ "c= ' \\n\\t\\$\\`\\\\\n" \ -+ "' \n" \ -+ "d= \" \\n\\t\\$\\`\\\\\n" \ -+ "\" \n" -+ -+ - TEST(load_env_file_1) { - _cleanup_strv_free_ char **data = NULL; - int r; -@@ -57,9 +69,9 @@ TEST(load_env_file_1) { - assert_se(r == 0); - assert_se(streq(data[0], "a=a")); - assert_se(streq(data[1], "b=bc")); -- assert_se(streq(data[2], "d=def")); -+ assert_se(streq(data[2], "d=de f")); - assert_se(streq(data[3], "g=g ")); -- assert_se(streq(data[4], "h=h")); -+ assert_se(streq(data[4], "h=ąęół śćńźżµ")); - assert_se(streq(data[5], "i=i")); - assert_se(data[6] == NULL); - } -@@ -133,6 +145,26 @@ TEST(load_env_file_5) { - assert_se(data[2] == NULL); - } - -+TEST(load_env_file_6) { -+ _cleanup_strv_free_ char **data = NULL; -+ int r; -+ -+ _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -+ _cleanup_close_ int fd; -+ -+ fd = mkostemp_safe(name); -+ assert_se(fd >= 0); -+ assert_se(write(fd, env_file_6, strlen(env_file_6)) == strlen(env_file_6)); -+ -+ r = load_env_file(NULL, name, &data); -+ assert_se(r == 0); -+ assert_se(streq(data[0], "a= n t x y '")); -+ assert_se(streq(data[1], "b=$'")); -+ assert_se(streq(data[2], "c= \\n\\t\\$\\`\\\\\n")); -+ assert_se(streq(data[3], "d= \\n\\t$`\\\n")); -+ assert_se(data[4] == NULL); -+} -+ - TEST(write_and_load_env_file) { - const char *v; - diff --git a/SOURCES/0075-core-shorten-long-unit-names-that-are-based-on-paths.patch b/SOURCES/0075-core-shorten-long-unit-names-that-are-based-on-paths.patch deleted file mode 100644 index 305ebd1..0000000 --- a/SOURCES/0075-core-shorten-long-unit-names-that-are-based-on-paths.patch +++ /dev/null @@ -1,275 +0,0 @@ -From 4bc17b038971160f94321c7be9cd924b256d9ef8 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Tue, 15 Mar 2022 19:02:05 +0100 -Subject: [PATCH] core: shorten long unit names that are based on paths and - append path hash at the end - -Fixes #18077 - -(cherry picked from commit 1d0727e76fd5e9a07cc9991ec9a10ea1d78a99c7) - -Resolves: #2083493 ---- - src/basic/string-util.h | 23 ++++++----- - src/basic/unit-name.c | 86 ++++++++++++++++++++++++++++++++++++++- - src/basic/unit-name.h | 3 ++ - src/core/mount.c | 3 ++ - src/test/test-unit-name.c | 26 ++++++++++-- - 5 files changed, 125 insertions(+), 16 deletions(-) - -diff --git a/src/basic/string-util.h b/src/basic/string-util.h -index a1d88fbb95..ffb69e69cc 100644 ---- a/src/basic/string-util.h -+++ b/src/basic/string-util.h -@@ -10,17 +10,18 @@ - #include "string-util-fundamental.h" - - /* What is interpreted as whitespace? */ --#define WHITESPACE " \t\n\r" --#define NEWLINE "\n\r" --#define QUOTES "\"\'" --#define COMMENTS "#;" --#define GLOB_CHARS "*?[" --#define DIGITS "0123456789" --#define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" --#define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" --#define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS --#define ALPHANUMERICAL LETTERS DIGITS --#define HEXDIGITS DIGITS "abcdefABCDEF" -+#define WHITESPACE " \t\n\r" -+#define NEWLINE "\n\r" -+#define QUOTES "\"\'" -+#define COMMENTS "#;" -+#define GLOB_CHARS "*?[" -+#define DIGITS "0123456789" -+#define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" -+#define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" -+#define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS -+#define ALPHANUMERICAL LETTERS DIGITS -+#define HEXDIGITS DIGITS "abcdefABCDEF" -+#define LOWERCASE_HEXDIGITS DIGITS "abcdef" - - static inline char* strstr_ptr(const char *haystack, const char *needle) { - if (!haystack || !needle) -diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c -index 671e30a53f..6cba8ba140 100644 ---- a/src/basic/unit-name.c -+++ b/src/basic/unit-name.c -@@ -5,12 +5,17 @@ - #include - #include - -+#include "sd-id128.h" -+ - #include "alloc-util.h" - #include "glob-util.h" - #include "hexdecoct.h" - #include "memory-util.h" - #include "path-util.h" -+#include "random-util.h" -+#include "sparse-endian.h" - #include "special.h" -+#include "stdio-util.h" - #include "string-util.h" - #include "strv.h" - #include "unit-name.h" -@@ -31,6 +36,9 @@ - VALID_CHARS_WITH_AT \ - "[]!-*?" - -+#define LONG_UNIT_NAME_HASH_KEY SD_ID128_MAKE(ec,f2,37,fb,58,32,4a,32,84,9f,06,9b,0d,21,eb,9a) -+#define UNIT_NAME_HASH_LENGTH_CHARS 16 -+ - bool unit_name_is_valid(const char *n, UnitNameFlags flags) { - const char *e, *i, *at; - -@@ -507,6 +515,68 @@ int unit_name_template(const char *f, char **ret) { - return 0; - } - -+bool unit_name_is_hashed(const char *name) { -+ char *s; -+ -+ if (!unit_name_is_valid(name, UNIT_NAME_PLAIN)) -+ return false; -+ -+ assert_se(s = strrchr(name, '.')); -+ -+ if (s - name < UNIT_NAME_HASH_LENGTH_CHARS + 1) -+ return false; -+ -+ s -= UNIT_NAME_HASH_LENGTH_CHARS; -+ if (s[-1] != '_') -+ return false; -+ -+ for (size_t i = 0; i < UNIT_NAME_HASH_LENGTH_CHARS; i++) -+ if (!strchr(LOWERCASE_HEXDIGITS, s[i])) -+ return false; -+ -+ return true; -+} -+ -+int unit_name_hash_long(const char *name, char **ret) { -+ _cleanup_free_ char *n = NULL, *hash = NULL; -+ char *suffix; -+ le64_t h; -+ size_t len; -+ -+ if (strlen(name) < UNIT_NAME_MAX) -+ return -EMSGSIZE; -+ -+ suffix = strrchr(name, '.'); -+ if (!suffix) -+ return -EINVAL; -+ -+ if (unit_type_from_string(suffix+1) < 0) -+ return -EINVAL; -+ -+ h = htole64(siphash24_string(name, LONG_UNIT_NAME_HASH_KEY.bytes)); -+ -+ hash = hexmem(&h, sizeof(h)); -+ if (!hash) -+ return -ENOMEM; -+ -+ assert_se(strlen(hash) == UNIT_NAME_HASH_LENGTH_CHARS); -+ -+ len = UNIT_NAME_MAX - 1 - strlen(suffix+1) - UNIT_NAME_HASH_LENGTH_CHARS - 2; -+ assert(len > 0 && len < UNIT_NAME_MAX); -+ -+ n = strndup(name, len); -+ if (!n) -+ return -ENOMEM; -+ -+ if (!strextend(&n, "_", hash, suffix)) -+ return -ENOMEM; -+ assert_se(unit_name_is_valid(n, UNIT_NAME_PLAIN)); -+ -+ *ret = TAKE_PTR(n); -+ -+ return 0; -+} -+ - int unit_name_from_path(const char *path, const char *suffix, char **ret) { - _cleanup_free_ char *p = NULL, *s = NULL; - int r; -@@ -526,8 +596,17 @@ int unit_name_from_path(const char *path, const char *suffix, char **ret) { - if (!s) - return -ENOMEM; - -- if (strlen(s) >= UNIT_NAME_MAX) /* Return a slightly more descriptive error for this specific condition */ -- return -ENAMETOOLONG; -+ if (strlen(s) >= UNIT_NAME_MAX) { -+ _cleanup_free_ char *n = NULL; -+ -+ log_debug("Unit name \"%s\" too long, falling back to hashed unit name.", s); -+ -+ r = unit_name_hash_long(s, &n); -+ if (r < 0) -+ return r; -+ -+ free_and_replace(s, n); -+ } - - /* Refuse if this for some other reason didn't result in a valid name */ - if (!unit_name_is_valid(s, UNIT_NAME_PLAIN)) -@@ -581,6 +660,9 @@ int unit_name_to_path(const char *name, char **ret) { - if (r < 0) - return r; - -+ if (unit_name_is_hashed(name)) -+ return -ENAMETOOLONG; -+ - return unit_name_path_unescape(prefix, ret); - } - -diff --git a/src/basic/unit-name.h b/src/basic/unit-name.h -index b62b3e034e..eaa701e9f6 100644 ---- a/src/basic/unit-name.h -+++ b/src/basic/unit-name.h -@@ -44,6 +44,9 @@ int unit_name_replace_instance(const char *f, const char *i, char **ret); - - int unit_name_template(const char *f, char **ret); - -+int unit_name_hash_long(const char *name, char **ret); -+bool unit_name_is_hashed(const char *name); -+ - int unit_name_from_path(const char *path, const char *suffix, char **ret); - int unit_name_from_path_instance(const char *prefix, const char *path, const char *suffix, char **ret); - int unit_name_to_path(const char *name, char **ret); -diff --git a/src/core/mount.c b/src/core/mount.c -index 4d407ca4e5..d63884e47e 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -622,6 +622,9 @@ static int mount_add_extras(Mount *m) { - - if (!m->where) { - r = unit_name_to_path(u->id, &m->where); -+ if (r == -ENAMETOOLONG) -+ log_unit_error_errno(u, r, "Failed to derive mount point path from unit name, because unit name is hashed. " -+ "Set \"Where=\" in the unit file explicitly."); - if (r < 0) - return r; - } -diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c -index 8cd0e0b4a1..b6137333aa 100644 ---- a/src/test/test-unit-name.c -+++ b/src/test/test-unit-name.c -@@ -106,6 +106,7 @@ TEST(unit_name_replace_instance) { - - static void test_unit_name_from_path_one(const char *path, const char *suffix, const char *expected, int ret) { - _cleanup_free_ char *t = NULL; -+ int r; - - assert_se(unit_name_from_path(path, suffix, &t) == ret); - puts(strna(t)); -@@ -113,12 +114,31 @@ static void test_unit_name_from_path_one(const char *path, const char *suffix, c - - if (t) { - _cleanup_free_ char *k = NULL; -- assert_se(unit_name_to_path(t, &k) == 0); -+ -+ /* We don't support converting hashed unit names back to paths */ -+ r = unit_name_to_path(t, &k); -+ if (r == -ENAMETOOLONG) -+ return; -+ assert(r == 0); -+ - puts(strna(k)); - assert_se(path_equal(k, empty_to_root(path))); - } - } - -+TEST(unit_name_is_hashed) { -+ assert_se(!unit_name_is_hashed("")); -+ assert_se(!unit_name_is_hashed("foo@bar.service")); -+ assert_se(!unit_name_is_hashed("foo@.service")); -+ assert_se(unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7736d9ed33c2ec55.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7736D9ED33C2EC55.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!7736d9ed33c2ec55.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7736d9gd33c2ec55.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_2103e1466b87f7f7@waldo.mount")); -+ assert_se(!unit_name_is_hashed("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_2103e1466b87f7f7@.mount")); -+} -+ - TEST(unit_name_from_path) { - test_unit_name_from_path_one("/waldo", ".mount", "waldo.mount", 0); - test_unit_name_from_path_one("/waldo/quuix", ".mount", "waldo-quuix.mount", 0); -@@ -128,7 +148,8 @@ TEST(unit_name_from_path) { - test_unit_name_from_path_one("///", ".mount", "-.mount", 0); - test_unit_name_from_path_one("/foo/../bar", ".mount", NULL, -EINVAL); - test_unit_name_from_path_one("/foo/./bar", ".mount", "foo-bar.mount", 0); -- test_unit_name_from_path_one("/waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", ".mount", NULL, -ENAMETOOLONG); -+ test_unit_name_from_path_one("/waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", ".mount", -+ "waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7736d9ed33c2ec55.mount", 0); - } - - static void test_unit_name_from_path_instance_one(const char *pattern, const char *path, const char *suffix, const char *expected, int ret) { -@@ -156,7 +177,6 @@ TEST(unit_name_from_path_instance) { - test_unit_name_from_path_instance_one("waldo", "..", ".mount", NULL, -EINVAL); - test_unit_name_from_path_instance_one("waldo", "/foo", ".waldi", NULL, -EINVAL); - test_unit_name_from_path_instance_one("wa--ldo", "/--", ".mount", "wa--ldo@\\x2d\\x2d.mount", 0); -- test_unit_name_from_path_instance_one("waldoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "/waldo", ".mount", NULL, -ENAMETOOLONG); - } - - static void test_unit_name_to_path_one(const char *unit, const char *path, int ret) { diff --git a/SOURCES/0075-dissect-image-do-not-try-to-close-invalid-fd.patch b/SOURCES/0075-dissect-image-do-not-try-to-close-invalid-fd.patch new file mode 100644 index 0000000..24613d1 --- /dev/null +++ b/SOURCES/0075-dissect-image-do-not-try-to-close-invalid-fd.patch @@ -0,0 +1,124 @@ +From c67164cf2c6aed29f70a98ef9050503e56aba952 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 19:25:02 +0900 +Subject: [PATCH] dissect-image: do not try to close invalid fd + +Fixes a bug introduced by f7725647bb41c3398a867f139efe526efe8aa1b3. + +Hopefully fixes #25348. + +(cherry picked from commit 088377e0920a3785e7926f2ed382810836480ae6) + +Related: #2138081 +--- + src/shared/dissect-image.c | 58 +++++++++++++------------------------- + src/shared/dissect-image.h | 6 ++++ + 2 files changed, 26 insertions(+), 38 deletions(-) + +diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c +index 2989d31d3c..6a991c877a 100644 +--- a/src/shared/dissect-image.c ++++ b/src/shared/dissect-image.c +@@ -1010,19 +1010,13 @@ static int dissect_image( + log_debug("No root partition found of the native architecture, falling back to a root " + "partition of the secondary architecture."); + +- m->partitions[PARTITION_ROOT] = m->partitions[PARTITION_ROOT_SECONDARY]; +- zero(m->partitions[PARTITION_ROOT_SECONDARY]); +- m->partitions[PARTITION_ROOT_VERITY] = m->partitions[PARTITION_ROOT_SECONDARY_VERITY]; +- zero(m->partitions[PARTITION_ROOT_SECONDARY_VERITY]); +- m->partitions[PARTITION_ROOT_VERITY_SIG] = m->partitions[PARTITION_ROOT_SECONDARY_VERITY_SIG]; +- zero(m->partitions[PARTITION_ROOT_SECONDARY_VERITY_SIG]); +- +- m->partitions[PARTITION_USR] = m->partitions[PARTITION_USR_SECONDARY]; +- zero(m->partitions[PARTITION_USR_SECONDARY]); +- m->partitions[PARTITION_USR_VERITY] = m->partitions[PARTITION_USR_SECONDARY_VERITY]; +- zero(m->partitions[PARTITION_USR_SECONDARY_VERITY]); +- m->partitions[PARTITION_USR_VERITY_SIG] = m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]; +- zero(m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]); ++ m->partitions[PARTITION_ROOT] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_SECONDARY]); ++ m->partitions[PARTITION_ROOT_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_SECONDARY_VERITY]); ++ m->partitions[PARTITION_ROOT_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_SECONDARY_VERITY_SIG]); ++ ++ m->partitions[PARTITION_USR] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY]); ++ m->partitions[PARTITION_USR_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY_VERITY]); ++ m->partitions[PARTITION_USR_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]); + + m->partitions[PARTITION_ROOT_OTHER].found = false; + m->partitions[PARTITION_ROOT_OTHER_VERITY].found = false; +@@ -1044,19 +1038,13 @@ static int dissect_image( + "falling back to a root partition of a non-native architecture (%s).", + architecture_to_string(m->partitions[PARTITION_ROOT_OTHER].architecture)); + +- m->partitions[PARTITION_ROOT] = m->partitions[PARTITION_ROOT_OTHER]; +- zero(m->partitions[PARTITION_ROOT_OTHER]); +- m->partitions[PARTITION_ROOT_VERITY] = m->partitions[PARTITION_ROOT_OTHER_VERITY]; +- zero(m->partitions[PARTITION_ROOT_OTHER_VERITY]); +- m->partitions[PARTITION_ROOT_VERITY_SIG] = m->partitions[PARTITION_ROOT_OTHER_VERITY_SIG]; +- zero(m->partitions[PARTITION_ROOT_OTHER_VERITY_SIG]); +- +- m->partitions[PARTITION_USR] = m->partitions[PARTITION_USR_OTHER]; +- zero(m->partitions[PARTITION_USR_OTHER]); +- m->partitions[PARTITION_USR_VERITY] = m->partitions[PARTITION_USR_OTHER_VERITY]; +- zero(m->partitions[PARTITION_USR_OTHER_VERITY]); +- m->partitions[PARTITION_USR_VERITY_SIG] = m->partitions[PARTITION_USR_OTHER_VERITY_SIG]; +- zero(m->partitions[PARTITION_USR_OTHER_VERITY_SIG]); ++ m->partitions[PARTITION_ROOT] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_OTHER]); ++ m->partitions[PARTITION_ROOT_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_OTHER_VERITY]); ++ m->partitions[PARTITION_ROOT_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_ROOT_OTHER_VERITY_SIG]); ++ ++ m->partitions[PARTITION_USR] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER]); ++ m->partitions[PARTITION_USR_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER_VERITY]); ++ m->partitions[PARTITION_USR_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER_VERITY_SIG]); + } + + /* Hmm, we found a signature partition but no Verity data? Something is off. */ +@@ -1083,12 +1071,9 @@ static int dissect_image( + "partition of the secondary architecture."); + + /* Upgrade secondary arch to primary */ +- m->partitions[PARTITION_USR] = m->partitions[PARTITION_USR_SECONDARY]; +- zero(m->partitions[PARTITION_USR_SECONDARY]); +- m->partitions[PARTITION_USR_VERITY] = m->partitions[PARTITION_USR_SECONDARY_VERITY]; +- zero(m->partitions[PARTITION_USR_SECONDARY_VERITY]); +- m->partitions[PARTITION_USR_VERITY_SIG] = m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]; +- zero(m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]); ++ m->partitions[PARTITION_USR] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY]); ++ m->partitions[PARTITION_USR_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY_VERITY]); ++ m->partitions[PARTITION_USR_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_USR_SECONDARY_VERITY_SIG]); + + m->partitions[PARTITION_USR_OTHER].found = false; + m->partitions[PARTITION_USR_OTHER_VERITY].found = false; +@@ -1105,12 +1090,9 @@ static int dissect_image( + architecture_to_string(m->partitions[PARTITION_ROOT_OTHER].architecture)); + + /* Upgrade other arch to primary */ +- m->partitions[PARTITION_USR] = m->partitions[PARTITION_USR_OTHER]; +- zero(m->partitions[PARTITION_USR_OTHER]); +- m->partitions[PARTITION_USR_VERITY] = m->partitions[PARTITION_USR_OTHER_VERITY]; +- zero(m->partitions[PARTITION_USR_OTHER_VERITY]); +- m->partitions[PARTITION_USR_VERITY_SIG] = m->partitions[PARTITION_USR_OTHER_VERITY_SIG]; +- zero(m->partitions[PARTITION_USR_OTHER_VERITY_SIG]); ++ m->partitions[PARTITION_USR] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER]); ++ m->partitions[PARTITION_USR_VERITY] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER_VERITY]); ++ m->partitions[PARTITION_USR_VERITY_SIG] = TAKE_PARTITION(m->partitions[PARTITION_USR_OTHER_VERITY_SIG]); + } + + /* Hmm, we found a signature partition but no Verity data? Something is off. */ +diff --git a/src/shared/dissect-image.h b/src/shared/dissect-image.h +index 8007b544e7..f2278c4dfa 100644 +--- a/src/shared/dissect-image.h ++++ b/src/shared/dissect-image.h +@@ -40,6 +40,12 @@ struct DissectedPartition { + .architecture = _ARCHITECTURE_INVALID, \ + .mount_node_fd = -1, \ + }) ++#define TAKE_PARTITION(p) \ ++ ({ \ ++ DissectedPartition *_pp = &(p), _p = *_pp; \ ++ *_pp = DISSECTED_PARTITION_NULL; \ ++ _p; \ ++ }) + + typedef enum PartitionDesignator { + PARTITION_ROOT, diff --git a/SOURCES/0076-bootctl-make-boot-entry-id-logged-in-hex.patch b/SOURCES/0076-bootctl-make-boot-entry-id-logged-in-hex.patch new file mode 100644 index 0000000..9f93892 --- /dev/null +++ b/SOURCES/0076-bootctl-make-boot-entry-id-logged-in-hex.patch @@ -0,0 +1,33 @@ +From 29180c67635d3a6e4d5fd340ff9251724c803a65 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 14:36:01 +0900 +Subject: [PATCH] bootctl: make boot entry id logged in hex + +To make consistent with the printed boot id below and other tools e.g. +efibootmgr. + +(cherry picked from commit a7dcb75c539dd5bb69b72e47c820fe79c794409a) + +Related: #2138081 +--- + src/boot/bootctl.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c +index b53df11764..64a4b74715 100644 +--- a/src/boot/bootctl.c ++++ b/src/boot/bootctl.c +@@ -586,11 +586,11 @@ static int print_efi_option(uint16_t id, int *n_printed, bool in_order) { + + r = efi_get_boot_option(id, &title, &partition, &path, &active); + if (r < 0) +- return log_error_errno(r, "Failed to read boot option %u: %m", id); ++ return log_error_errno(r, "Failed to read boot option 0x%04X: %m", id); + + /* print only configured entries with partition information */ + if (!path || sd_id128_is_null(partition)) { +- log_debug("Ignoring boot entry %u without partition information.", id); ++ log_debug("Ignoring boot entry 0x%04X without partition information.", id); + return 0; + } + diff --git a/SOURCES/0076-tests-add-test-case-for-long-unit-names.patch b/SOURCES/0076-tests-add-test-case-for-long-unit-names.patch deleted file mode 100644 index 5a267c0..0000000 --- a/SOURCES/0076-tests-add-test-case-for-long-unit-names.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 1121def1f02c847df894611e171a1025f859fb3d Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 23 Mar 2022 13:35:44 +0100 -Subject: [PATCH] tests: add test case for long unit names - -(cherry picked from commit 2ef0101e0b2813e8c99fc8f137dbaa763ca16057) - -Related: #2083493 ---- - test/units/testsuite-60.sh | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/test/units/testsuite-60.sh b/test/units/testsuite-60.sh -index eb174f00ed..239d7b0d4c 100755 ---- a/test/units/testsuite-60.sh -+++ b/test/units/testsuite-60.sh -@@ -8,6 +8,25 @@ systemd-analyze log-target journal - - NUM_DIRS=20 - -+# make sure we can handle mounts at very long paths such that mount unit name must be hashed to fall within our unit name limit -+LONGPATH="$(printf "/$(printf "x%0.s" {1..255})%0.s" {1..7})" -+LONGMNT="$(systemd-escape --suffix=mount --path "$LONGPATH")" -+TS="$(date '+%H:%M:%S')" -+ -+mkdir -p "$LONGPATH" -+mount -t tmpfs tmpfs "$LONGPATH" -+systemctl daemon-reload -+ -+# check that unit is active(mounted) -+systemctl --no-pager show -p SubState --value "$LONGPATH" | grep -q mounted -+ -+# check that relevant part of journal doesn't contain any errors related to unit -+[ "$(journalctl -b --since="$TS" --priority=err | grep -c "$LONGMNT")" = "0" ] -+ -+# check that we can successfully stop the mount unit -+systemctl stop "$LONGPATH" -+rm -rf "$LONGPATH" -+ - # mount/unmount enough times to trigger the /proc/self/mountinfo parsing rate limiting - - for ((i = 0; i < NUM_DIRS; i++)); do diff --git a/SOURCES/0077-bootctl-downgrade-log-message-when-firmware-reports-.patch b/SOURCES/0077-bootctl-downgrade-log-message-when-firmware-reports-.patch new file mode 100644 index 0000000..ee2db0a --- /dev/null +++ b/SOURCES/0077-bootctl-downgrade-log-message-when-firmware-reports-.patch @@ -0,0 +1,28 @@ +From 6164408188766a31e778ec670239482db886d9be Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 14:41:08 +0900 +Subject: [PATCH] bootctl: downgrade log message when firmware reports + non-existent or invalid boot entry + +Fixes #25359. + +(cherry picked from commit 78bfeeae508a554483de02b52aa2e5afdc341e1a) + +Related: #2138081 +--- + src/boot/bootctl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c +index 64a4b74715..a5811adf20 100644 +--- a/src/boot/bootctl.c ++++ b/src/boot/bootctl.c +@@ -586,7 +586,7 @@ static int print_efi_option(uint16_t id, int *n_printed, bool in_order) { + + r = efi_get_boot_option(id, &title, &partition, &path, &active); + if (r < 0) +- return log_error_errno(r, "Failed to read boot option 0x%04X: %m", id); ++ return log_debug_errno(r, "Failed to read boot option 0x%04X: %m", id); + + /* print only configured entries with partition information */ + if (!path || sd_id128_is_null(partition)) { diff --git a/SOURCES/0077-tests-reflect-that-we-can-now-handle-devices-with-ve.patch b/SOURCES/0077-tests-reflect-that-we-can-now-handle-devices-with-ve.patch deleted file mode 100644 index 8f2e825..0000000 --- a/SOURCES/0077-tests-reflect-that-we-can-now-handle-devices-with-ve.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 87e45d9c58c74ae7ba46f99a3f0e2db39cf345ff Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Thu, 24 Mar 2022 19:24:16 +0100 -Subject: [PATCH] tests: reflect that we can now handle devices with very long - sysfs paths - -(cherry picked from commit b26f4f0028e27b6ad46ef9af56aac7571caa3a25) - -Related: #2083493 ---- - test/units/testsuite-64.sh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh -index dc8b263b10..218b2ee8d1 100755 ---- a/test/units/testsuite-64.sh -+++ b/test/units/testsuite-64.sh -@@ -674,6 +674,7 @@ testcase_long_sysfs_path() { - echo "UUID=deadbeef-dead-dead-beef-222222222222 $mpoint ext4 defaults 0 0" >>/etc/fstab - systemctl daemon-reload - mount "$mpoint" -+ systemctl status "$mpoint" - test -e "$mpoint/test" - umount "$mpoint" - -@@ -684,9 +685,9 @@ testcase_long_sysfs_path() { - udevadm settle - - logfile="$(mktemp)" -- journalctl -b -q --no-pager -o short-monotonic -p info --grep "Device path.*vda.?' too long to fit into unit name" -+ [[ "$(journalctl -b -q --no-pager -o short-monotonic -p info --grep "Device path.*vda.?' too long to fit into unit name" | wc -l)" -eq 0 ]] - # Make sure we don't unnecessarily spam the log -- journalctl -b -q --no-pager -o short-monotonic -p info --grep "/sys/devices/.+/vda[0-9]?" _PID=1 + UNIT=systemd-udevd.service | tee "$logfile" -+ { journalctl -b -q --no-pager -o short-monotonic -p info --grep "/sys/devices/.+/vda[0-9]?" _PID=1 + UNIT=systemd-udevd.service || :;} | tee "$logfile" - [[ "$(wc -l <"$logfile")" -lt 10 ]] - - : >/etc/fstab diff --git a/SOURCES/0078-bootctl-rework-how-we-handle-referenced-but-absent-E.patch b/SOURCES/0078-bootctl-rework-how-we-handle-referenced-but-absent-E.patch new file mode 100644 index 0000000..b4e5bcc --- /dev/null +++ b/SOURCES/0078-bootctl-rework-how-we-handle-referenced-but-absent-E.patch @@ -0,0 +1,37 @@ +From 23ede492fbea1bd1440d84cef6dd68bb46d2e5fb Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 18 Nov 2022 18:05:53 +0100 +Subject: [PATCH] bootctl: rework how we handle referenced but absent EFI boot + entries + +Follow-up for #25368. + +Let's consider ENOENT an expected error, and just debug log about it +(though, let's suffix it with `, ignoring.`). All other errors will log +loudly, as they are unexpected errors. + +(cherry picked from commit af1bed8e83c3d380d1eb0b9147684b76d1ee4df0) + +Related: #2138081 +--- + src/boot/bootctl.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c +index a5811adf20..7da48b4ca4 100644 +--- a/src/boot/bootctl.c ++++ b/src/boot/bootctl.c +@@ -585,8 +585,12 @@ static int print_efi_option(uint16_t id, int *n_printed, bool in_order) { + assert(n_printed); + + r = efi_get_boot_option(id, &title, &partition, &path, &active); ++ if (r == -ENOENT) { ++ log_debug_errno(r, "Boot option 0x%04X referenced but missing, ignoring: %m", id); ++ return 0; ++ } + if (r < 0) +- return log_debug_errno(r, "Failed to read boot option 0x%04X: %m", id); ++ return log_error_errno(r, "Failed to read boot option 0x%04X: %m", id); + + /* print only configured entries with partition information */ + if (!path || sd_id128_is_null(partition)) { diff --git a/SOURCES/0078-test-extend-the-hashed-unit-names-coverage-a-bit.patch b/SOURCES/0078-test-extend-the-hashed-unit-names-coverage-a-bit.patch deleted file mode 100644 index e824455..0000000 --- a/SOURCES/0078-test-extend-the-hashed-unit-names-coverage-a-bit.patch +++ /dev/null @@ -1,63 +0,0 @@ -From c9fe9526f07ad24d29842fa853ee458b68660896 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 22 Apr 2022 18:03:14 +0200 -Subject: [PATCH] test: extend the "hashed" unit names coverage a bit - -Follow-up to #22759. - -(cherry picked from commit 98f8c316389177169c6599e67010ebb1789a6b26) - -Related: #2083493 ---- - test/units/testsuite-64.sh | 19 ++++++++++++++++--- - 1 file changed, 16 insertions(+), 3 deletions(-) - -diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh -index 218b2ee8d1..5f9aeee261 100755 ---- a/test/units/testsuite-64.sh -+++ b/test/units/testsuite-64.sh -@@ -646,7 +646,7 @@ testcase_iscsi_lvm() { - } - - testcase_long_sysfs_path() { -- local link logfile mpoint -+ local cursor link logfile mpoint - local expected_symlinks=( - "/dev/disk/by-label/data_vol" - "/dev/disk/by-label/swap_vol" -@@ -657,6 +657,12 @@ testcase_long_sysfs_path() { - "/dev/disk/by-uuid/deadbeef-dead-dead-beef-222222222222" - ) - -+ # Create a cursor file to skip messages generated by udevd in initrd, as it -+ # might not be the same up-to-date version as we currently run (hence generating -+ # messages we check for later and making the test fail) -+ cursor="$(mktemp)" -+ journalctl --cursor-file="${cursor:?}" -n0 -q -+ - # Make sure the test device is connected and show its "wonderful" path - stat /sys/block/vda - readlink -f /sys/block/vda/dev -@@ -685,13 +691,20 @@ testcase_long_sysfs_path() { - udevadm settle - - logfile="$(mktemp)" -- [[ "$(journalctl -b -q --no-pager -o short-monotonic -p info --grep "Device path.*vda.?' too long to fit into unit name" | wc -l)" -eq 0 ]] -+ # Check state of affairs after https://github.com/systemd/systemd/pull/22759 -+ # Note: can't use `--cursor-file` here, since we don't want to update the cursor -+ # after using it -+ [[ "$(journalctl --after-cursor="$(<"$cursor")" -q --no-pager -o short-monotonic -p info --grep "Device path.*vda.?' too long to fit into unit name" | wc -l)" -eq 0 ]] -+ [[ "$(journalctl --after-cursor="$(<"$cursor")" -q --no-pager -o short-monotonic --grep "Unit name .*vda.?\.device\" too long, falling back to hashed unit name" | wc -l)" -gt 0 ]] -+ # Check if the respective "hashed" units exist and are active (plugged) -+ systemctl status --no-pager "$(readlink -f /sys/block/vda/vda1)" -+ systemctl status --no-pager "$(readlink -f /sys/block/vda/vda2)" - # Make sure we don't unnecessarily spam the log - { journalctl -b -q --no-pager -o short-monotonic -p info --grep "/sys/devices/.+/vda[0-9]?" _PID=1 + UNIT=systemd-udevd.service || :;} | tee "$logfile" - [[ "$(wc -l <"$logfile")" -lt 10 ]] - - : >/etc/fstab -- rm -fr "${logfile:?}" "${mpoint:?}" -+ rm -fr "${cursor:?}" "${logfile:?}" "${mpoint:?}" - } - - : >/failed diff --git a/SOURCES/0079-Revert-kernel-install-also-remove-modules.builtin.al.patch b/SOURCES/0079-Revert-kernel-install-also-remove-modules.builtin.al.patch deleted file mode 100644 index a00c8c4..0000000 --- a/SOURCES/0079-Revert-kernel-install-also-remove-modules.builtin.al.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 17f516c0714e05d3dea7f168304286658aead870 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Thu, 17 Mar 2022 12:35:35 +0100 -Subject: [PATCH] Revert "kernel-install: also remove - modules.builtin.alias.bin" - -This reverts commit fdcb1bf67371615f12c4b11283f2bd6a25bda019. - -Related: #2065061 - -[msekleta: this revert is done in order to make backporting easier, -patch will be reapplied later.] ---- - src/kernel-install/50-depmod.install | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install -index fd00c43632..2fd959865f 100644 ---- a/src/kernel-install/50-depmod.install -+++ b/src/kernel-install/50-depmod.install -@@ -36,7 +36,7 @@ case "$COMMAND" in - remove) - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ - echo "Removing /lib/modules/${KERNEL_VERSION}/modules.dep and associated files" -- exec rm -f /lib/modules/"${KERNEL_VERSION}"/modules.{alias{,.bin},builtin{,.alias}.bin,dep{,.bin},devname,softdep,symbols{,.bin}} -+ exec rm -f /lib/modules/"${KERNEL_VERSION}"/modules.{alias{,.bin},builtin.bin,dep{,.bin},devname,softdep,symbols{,.bin}} - ;; - *) - exit 0 diff --git a/SOURCES/0079-strv-Make-sure-strv_make_nulstr-always-returns-a-val.patch b/SOURCES/0079-strv-Make-sure-strv_make_nulstr-always-returns-a-val.patch new file mode 100644 index 0000000..259ca2d --- /dev/null +++ b/SOURCES/0079-strv-Make-sure-strv_make_nulstr-always-returns-a-val.patch @@ -0,0 +1,44 @@ +From c59555a86d3fcd2b8d644885134e19fe864251e5 Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Fri, 11 Nov 2022 11:26:54 +0100 +Subject: [PATCH] strv: Make sure strv_make_nulstr() always returns a valid + nulstr + +strv_make_nulstr() is documented to always return a valid nulstr, +but if the input is `NULL` we return a string terminated with only +a single NUL terminator, so let's fix that and always terminate the +resulting string with two NUL bytes. + +(cherry picked from commit 5ea173a91b2093664a9ebb9add678edd6f5d1efd) + +Related: #2138081 +--- + src/basic/strv.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/basic/strv.c b/src/basic/strv.c +index eea34ca68d..24fc56a1a5 100644 +--- a/src/basic/strv.c ++++ b/src/basic/strv.c +@@ -721,7 +721,7 @@ int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) { + } + + if (!m) { +- m = new0(char, 1); ++ m = new0(char, 2); + if (!m) + return -ENOMEM; + n = 1; +@@ -730,11 +730,9 @@ int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) { + m[n] = '\0'; + + assert(n > 0); +- *ret = m; ++ *ret = TAKE_PTR(m); + *ret_size = n - 1; + +- m = NULL; +- + return 0; + } + diff --git a/SOURCES/0080-Revert-kernel-install-prefer-boot-over-boot-efi-for-.patch b/SOURCES/0080-Revert-kernel-install-prefer-boot-over-boot-efi-for-.patch deleted file mode 100644 index 95429ea..0000000 --- a/SOURCES/0080-Revert-kernel-install-prefer-boot-over-boot-efi-for-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3fae5c22831288c075e371e67ecc91968ab60d63 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Thu, 17 Mar 2022 12:37:57 +0100 -Subject: [PATCH] Revert "kernel-install: prefer /boot over /boot/efi for - $BOOT_ROOT" - -This reverts commit d0e98b7a1211412dccfcf4dcd2cc0772ac70b304. - -Related: #2065061 - -[msekleta: this revert is done in order to make backporting easier, -patch will be reapplied later.] ---- - src/kernel-install/kernel-install | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index d85852532b..b358b03b2f 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -108,7 +108,7 @@ fi - [ -z "$MACHINE_ID" ] && MACHINE_ID="Default" - - [ -z "$BOOT_ROOT" ] && for suff in "$MACHINE_ID" "loader/entries"; do -- for pref in "/efi" "/boot" "/boot/efi" ; do -+ for pref in "/efi" "/boot/efi" "/boot"; do - if [ -d "$pref/$suff" ]; then - BOOT_ROOT="$pref" - break 2 diff --git a/SOURCES/0080-sd-bus-Use-goto-finish-instead-of-return-in-bus_add_.patch b/SOURCES/0080-sd-bus-Use-goto-finish-instead-of-return-in-bus_add_.patch new file mode 100644 index 0000000..bbe4900 --- /dev/null +++ b/SOURCES/0080-sd-bus-Use-goto-finish-instead-of-return-in-bus_add_.patch @@ -0,0 +1,28 @@ +From 7da1d4780b1dae16369fa5191832ec26d24a2ace Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Fri, 11 Nov 2022 11:09:28 +0100 +Subject: [PATCH] sd-bus: Use goto finish instead of return in + bus_add_match_full + +Fixes #25340 + +(cherry picked from commit 0f3c342903d1a09577378912717539b530af1fcf) + +Related: #2138081 +--- + src/libsystemd/sd-bus/sd-bus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c +index 3803a2c4c4..bc716afabf 100644 +--- a/src/libsystemd/sd-bus/sd-bus.c ++++ b/src/libsystemd/sd-bus/sd-bus.c +@@ -3529,7 +3529,7 @@ static int bus_add_match_full( + s); + + if (r < 0) +- return r; ++ goto finish; + + /* Make the slot of the match call floating now. We need the reference, but we don't + * want that this match pins the bus object, hence we first create it non-floating, but diff --git a/SOURCES/0081-find-esp-downgrade-and-ignore-error-on-retrieving-PA.patch b/SOURCES/0081-find-esp-downgrade-and-ignore-error-on-retrieving-PA.patch new file mode 100644 index 0000000..e2c3ae6 --- /dev/null +++ b/SOURCES/0081-find-esp-downgrade-and-ignore-error-on-retrieving-PA.patch @@ -0,0 +1,56 @@ +From 2edd56af85a0360df8bc49a6ee19e0f1051a2d68 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 11 Nov 2022 09:34:17 +0900 +Subject: [PATCH] find-esp: downgrade and ignore error on retrieving + PART_ENTRY_SCHEME when searching + +Fixes #25332. + +(cherry picked from commit 01f234c6f5672926d6cfe4fbfcdb48326ce06250) + +Related: #2138081 +--- + src/shared/find-esp.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/shared/find-esp.c b/src/shared/find-esp.c +index dfe0574aba..aa0b02cc2f 100644 +--- a/src/shared/find-esp.c ++++ b/src/shared/find-esp.c +@@ -177,7 +177,9 @@ static int verify_esp_udev( + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_SCHEME", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_full_errno(searching && r == -ENOENT ? LOG_DEBUG : LOG_ERR, ++ searching && r == -ENOENT ? SYNTHETIC_ERRNO(EADDRNOTAVAIL) : r, ++ "Failed to get device property: %m"); + if (!streq(v, "gpt")) + return log_full_errno(searching ? LOG_DEBUG : LOG_ERR, + SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), +@@ -572,10 +574,11 @@ static int verify_xbootldr_blkid( + else if (r != 0) + return log_error_errno(errno ?: SYNTHETIC_ERRNO(EIO), "%s: Failed to probe file system: %m", node); + +- errno = 0; + r = blkid_probe_lookup_value(b, "PART_ENTRY_SCHEME", &type, NULL); + if (r != 0) +- return log_error_errno(errno ?: SYNTHETIC_ERRNO(EIO), "%s: Failed to probe PART_ENTRY_SCHEME: %m", node); ++ return log_full_errno(searching ? LOG_DEBUG : LOG_ERR, ++ searching ? SYNTHETIC_ERRNO(EADDRNOTAVAIL) : SYNTHETIC_ERRNO(EIO), ++ "%s: Failed to probe PART_ENTRY_SCHEME: %m", node); + if (streq(type, "gpt")) { + + errno = 0; +@@ -638,7 +641,10 @@ static int verify_xbootldr_udev( + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_SCHEME", &type); + if (r < 0) +- return log_device_error_errno(d, r, "Failed to query ID_PART_ENTRY_SCHEME: %m"); ++ return log_device_full_errno(d, ++ searching && r == -ENOENT ? LOG_DEBUG : LOG_ERR, ++ searching && r == -ENOENT ? SYNTHETIC_ERRNO(EADDRNOTAVAIL) : r, ++ "Failed to query ID_PART_ENTRY_SCHEME: %m"); + + if (streq(type, "gpt")) { + diff --git a/SOURCES/0081-kernel-install-50-depmod-port-to-bin-sh.patch b/SOURCES/0081-kernel-install-50-depmod-port-to-bin-sh.patch deleted file mode 100644 index 952e1f0..0000000 --- a/SOURCES/0081-kernel-install-50-depmod-port-to-bin-sh.patch +++ /dev/null @@ -1,60 +0,0 @@ -From d90268728f268f4e5291d29bc2b899137cd7ddf5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Thu, 16 Dec 2021 14:35:17 +0100 -Subject: [PATCH] kernel-install: 50-depmod: port to /bin/sh - -(cherry picked from commit b3ceb3d9fff69b33b8665a0137f5177f72c45cc0) - -Related: #2065061 ---- - src/kernel-install/50-depmod.install | 28 +++++++++++++++------------- - 1 file changed, 15 insertions(+), 13 deletions(-) - -diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install -index 2fd959865f..aa1f6b8e0e 100644 ---- a/src/kernel-install/50-depmod.install -+++ b/src/kernel-install/50-depmod.install -@@ -1,4 +1,4 @@ --#!/usr/bin/env bash -+#!/bin/sh - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - # SPDX-License-Identifier: LGPL-2.1-or-later -@@ -20,23 +20,25 @@ - - COMMAND="$1" - KERNEL_VERSION="$2" --ENTRY_DIR_ABS="$3" --KERNEL_IMAGE="$4" --INITRD_OPTIONS_START="5" -- --[[ $KERNEL_VERSION ]] || exit 1 - - case "$COMMAND" in - add) -- [[ -d "/lib/modules/${KERNEL_VERSION}/kernel" ]] || exit 0 -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "Running depmod -a ${KERNEL_VERSION}" -- exec depmod -a "${KERNEL_VERSION}" -+ [ -d "/lib/modules/$KERNEL_VERSION/kernel" ] || exit 0 -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+depmod -a $KERNEL_VERSION" -+ exec depmod -a "$KERNEL_VERSION" - ;; - remove) -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "Removing /lib/modules/${KERNEL_VERSION}/modules.dep and associated files" -- exec rm -f /lib/modules/"${KERNEL_VERSION}"/modules.{alias{,.bin},builtin.bin,dep{,.bin},devname,softdep,symbols{,.bin}} -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Removing /lib/modules/$KERNEL_VERSION/modules.dep and associated files" -+ exec rm -f \ -+ "/lib/modules/$KERNEL_VERSION/modules.alias" \ -+ "/lib/modules/$KERNEL_VERSION/modules.alias.bin" \ -+ "/lib/modules/$KERNEL_VERSION/modules.builtin.bin" \ -+ "/lib/modules/$KERNEL_VERSION/modules.dep" \ -+ "/lib/modules/$KERNEL_VERSION/modules.dep.bin" \ -+ "/lib/modules/$KERNEL_VERSION/modules.devname" \ -+ "/lib/modules/$KERNEL_VERSION/modules.softdep" \ -+ "/lib/modules/$KERNEL_VERSION/modules.symbols" \ -+ "/lib/modules/$KERNEL_VERSION/modules.symbols.bin" - ;; - *) - exit 0 diff --git a/SOURCES/0082-find-esp-include-device-sysname-in-the-log-message.patch b/SOURCES/0082-find-esp-include-device-sysname-in-the-log-message.patch new file mode 100644 index 0000000..70290cf --- /dev/null +++ b/SOURCES/0082-find-esp-include-device-sysname-in-the-log-message.patch @@ -0,0 +1,114 @@ +From 0f7bee592dfc80fd1a682a280399fdb493ea5e6d Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 13:27:36 +0900 +Subject: [PATCH] find-esp: include device sysname in the log message + +(cherry picked from commit 388d14659d250545125f8e950e3abb6eb8682c61) + +Related: #2138081 +--- + src/shared/find-esp.c | 52 +++++++++++++++++++++++-------------------- + 1 file changed, 28 insertions(+), 24 deletions(-) + +diff --git a/src/shared/find-esp.c b/src/shared/find-esp.c +index aa0b02cc2f..fa234c8b5f 100644 +--- a/src/shared/find-esp.c ++++ b/src/shared/find-esp.c +@@ -165,61 +165,65 @@ static int verify_esp_udev( + + r = sd_device_get_devname(d, &node); + if (r < 0) +- return log_error_errno(r, "Failed to get device node: %m"); ++ return log_device_error_errno(d, r, "Failed to get device node: %m"); + + r = sd_device_get_property_value(d, "ID_FS_TYPE", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + if (!streq(v, "vfat")) +- return log_full_errno(searching ? LOG_DEBUG : LOG_ERR, +- SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), +- "File system \"%s\" is not FAT.", node ); ++ return log_device_full_errno(d, ++ searching ? LOG_DEBUG : LOG_ERR, ++ SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), ++ "File system \"%s\" is not FAT.", node ); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_SCHEME", &v); + if (r < 0) +- return log_full_errno(searching && r == -ENOENT ? LOG_DEBUG : LOG_ERR, +- searching && r == -ENOENT ? SYNTHETIC_ERRNO(EADDRNOTAVAIL) : r, +- "Failed to get device property: %m"); ++ return log_device_full_errno(d, ++ searching && r == -ENOENT ? LOG_DEBUG : LOG_ERR, ++ searching && r == -ENOENT ? SYNTHETIC_ERRNO(EADDRNOTAVAIL) : r, ++ "Failed to get device property: %m"); + if (!streq(v, "gpt")) +- return log_full_errno(searching ? LOG_DEBUG : LOG_ERR, +- SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), +- "File system \"%s\" is not on a GPT partition table.", node); ++ return log_device_full_errno(d, ++ searching ? LOG_DEBUG : LOG_ERR, ++ SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), ++ "File system \"%s\" is not on a GPT partition table.", node); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_TYPE", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + if (sd_id128_string_equal(v, SD_GPT_ESP) <= 0) +- return log_full_errno(searching ? LOG_DEBUG : LOG_ERR, +- SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), +- "File system \"%s\" has wrong type for an EFI System Partition (ESP).", node); ++ return log_device_full_errno(d, ++ searching ? LOG_DEBUG : LOG_ERR, ++ SYNTHETIC_ERRNO(searching ? EADDRNOTAVAIL : ENODEV), ++ "File system \"%s\" has wrong type for an EFI System Partition (ESP).", node); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_UUID", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + r = sd_id128_from_string(v, &uuid); + if (r < 0) +- return log_error_errno(r, "Partition \"%s\" has invalid UUID \"%s\".", node, v); ++ return log_device_error_errno(d, r, "Partition \"%s\" has invalid UUID \"%s\".", node, v); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_NUMBER", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + r = safe_atou32(v, &part); + if (r < 0) +- return log_error_errno(r, "Failed to parse PART_ENTRY_NUMBER field."); ++ return log_device_error_errno(d, r, "Failed to parse PART_ENTRY_NUMBER field."); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_OFFSET", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + r = safe_atou64(v, &pstart); + if (r < 0) +- return log_error_errno(r, "Failed to parse PART_ENTRY_OFFSET field."); ++ return log_device_error_errno(d, r, "Failed to parse PART_ENTRY_OFFSET field."); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_SIZE", &v); + if (r < 0) +- return log_error_errno(r, "Failed to get device property: %m"); ++ return log_device_error_errno(d, r, "Failed to get device property: %m"); + r = safe_atou64(v, &psize); + if (r < 0) +- return log_error_errno(r, "Failed to parse PART_ENTRY_SIZE field."); ++ return log_device_error_errno(d, r, "Failed to parse PART_ENTRY_SIZE field."); + + if (ret_part) + *ret_part = part; +@@ -637,7 +641,7 @@ static int verify_xbootldr_udev( + + r = sd_device_get_devname(d, &node); + if (r < 0) +- return log_error_errno(r, "Failed to get device node: %m"); ++ return log_device_error_errno(d, r, "Failed to get device node: %m"); + + r = sd_device_get_property_value(d, "ID_PART_ENTRY_SCHEME", &type); + if (r < 0) diff --git a/SOURCES/0082-kernel-install-90-loaderentry-port-to-bin-sh.patch b/SOURCES/0082-kernel-install-90-loaderentry-port-to-bin-sh.patch deleted file mode 100644 index 5502981..0000000 --- a/SOURCES/0082-kernel-install-90-loaderentry-port-to-bin-sh.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 7b05dc8184e1a459d0a073dfe569560681525980 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Thu, 16 Dec 2021 14:35:33 +0100 -Subject: [PATCH] kernel-install: 90-loaderentry: port to /bin/sh - -Also, forward the rm -f exit code on removal instead of swallowing it - -(cherry picked from commit 662f45e3ea9f6e933234b81bec532d584bda6ead) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 110 +++++++++------------- - 1 file changed, 45 insertions(+), 65 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 044eced3f0..35324e69a9 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -1,4 +1,4 @@ --#!/usr/bin/env bash -+#!/bin/sh - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - # SPDX-License-Identifier: LGPL-2.1-or-later -@@ -22,68 +22,53 @@ COMMAND="$1" - KERNEL_VERSION="$2" - ENTRY_DIR_ABS="$3" - KERNEL_IMAGE="$4" --INITRD_OPTIONS_START="5" -+INITRD_OPTIONS_SHIFT=4 - --if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then -- exit 0 --fi -- --if [ "$KERNEL_INSTALL_LAYOUT" != "bls" ]; then -- exit 0 --fi -+[ "$KERNEL_INSTALL_LAYOUT" = "bls" ] || exit 0 - - MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" - BOOT_ROOT="$KERNEL_INSTALL_BOOT_ROOT" - - BOOT_MNT="$(stat -c %m "$BOOT_ROOT")" --if [[ "$BOOT_MNT" == '/' ]]; then -+if [ "$BOOT_MNT" = '/' ]; then - ENTRY_DIR="$ENTRY_DIR_ABS" - else - ENTRY_DIR="${ENTRY_DIR_ABS#$BOOT_MNT}" - fi - --if [[ $COMMAND == remove ]]; then -- rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" -- rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+"*".conf" -- exit 0 --fi -- --if ! [[ $COMMAND == add ]]; then -- exit 1 --fi -- --if ! [[ $KERNEL_IMAGE ]]; then -- exit 1 --fi -+case "$COMMAND" in -+ remove) -+ exec rm -f \ -+ "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" \ -+ "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+"*".conf" -+ ;; -+ add) -+ ;; -+ *) -+ exit 1 -+ ;; -+esac - --if [[ -f /etc/os-release ]]; then -+if [ -r /etc/os-release ]; then - . /etc/os-release --elif [[ -f /usr/lib/os-release ]]; then -+elif [ -r /usr/lib/os-release ]; then - . /usr/lib/os-release - fi - --if ! [[ $PRETTY_NAME ]]; then -- PRETTY_NAME="Linux $KERNEL_VERSION" --fi -+[ -n "$PRETTY_NAME" ] || PRETTY_NAME="Linux $KERNEL_VERSION" - --if [[ -f /etc/kernel/cmdline ]]; then -- read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline --elif [[ -f /usr/lib/kernel/cmdline ]]; then -- read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline -+if [ -r /etc/kernel/cmdline ]; then -+ BOOT_OPTIONS="$(tr -s "$IFS" ' ' &2 - exit 1 - fi -@@ -106,43 +91,38 @@ install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { - exit 1 - } - --INITRD_OPTIONS=( "${@:${INITRD_OPTIONS_START}}" ) -- --for initrd in "${INITRD_OPTIONS[@]}"; do -- if [[ -f "${initrd}" ]]; then -- initrd_basename="$(basename ${initrd})" -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "Installing $ENTRY_DIR_ABS/${initrd_basename}" -- install -g root -o root -m 0644 "${initrd}" "$ENTRY_DIR_ABS/${initrd_basename}" || { -- echo "Could not copy '${initrd}' to '$ENTRY_DIR_ABS/${initrd_basename}'." >&2 -- exit 1 -- } -- fi --done -+shift "$INITRD_OPTIONS_SHIFT" -+for initrd; do -+ [ -f "$initrd" ] || continue - --# If no initrd option is supplied, fall back to "initrd" which is --# the name used by dracut when generating it in its kernel-install hook --[[ ${#INITRD_OPTIONS[@]} == 0 ]] && INITRD_OPTIONS=( initrd ) -+ initrd_basename="${initrd##*/}" -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Installing $ENTRY_DIR_ABS/$initrd_basename" -+ install -g root -o root -m 0644 "$initrd" "$ENTRY_DIR_ABS/$initrd_basename" || { -+ echo "Could not copy '$initrd' to '$ENTRY_DIR_ABS/$initrd_basename'." >&2 -+ exit 1 -+ } -+done - - mkdir -p "${LOADER_ENTRY%/*}" || { - echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 - exit 1 - } - --[ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "Creating $LOADER_ENTRY" -+# Try "initrd", generated by dracut in its kernel-install hook, if no initrds were supplied -+[ $# -eq 0 ] && set -- "initrd" -+ -+[ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Creating $LOADER_ENTRY" - { - echo "title $PRETTY_NAME" - echo "version $KERNEL_VERSION" - echo "machine-id $MACHINE_ID" -- echo "options ${BOOT_OPTIONS[*]}" -+ echo "options $BOOT_OPTIONS" - echo "linux $ENTRY_DIR/linux" -- for initrd in "${INITRD_OPTIONS[@]}"; do -- [[ -f $ENTRY_DIR_ABS/$(basename ${initrd}) ]] && \ -- echo "initrd $ENTRY_DIR/$(basename ${initrd})" -+ for initrd; do -+ [ -f "$ENTRY_DIR_ABS/${initrd##*/}" ] && echo "initrd $ENTRY_DIR/${initrd##*/}" - done - : --} > "$LOADER_ENTRY" || { -+} >"$LOADER_ENTRY" || { - echo "Could not create loader entry '$LOADER_ENTRY'." >&2 - exit 1 - } diff --git a/SOURCES/0083-kernel-install-fix-shellcheck.patch b/SOURCES/0083-kernel-install-fix-shellcheck.patch deleted file mode 100644 index 89094a2..0000000 --- a/SOURCES/0083-kernel-install-fix-shellcheck.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 52f6eedb3bb4dc7a57fea6a8991b9058dedc8edc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Thu, 16 Dec 2021 14:37:53 +0100 -Subject: [PATCH] kernel-install: fix shellcheck - -(cherry picked from commit 0bb1cb1fce5ebf307501dec1679e37f0c0157be9) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index b358b03b2f..f6da0cf7a8 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -26,8 +26,8 @@ usage() - echo " $0 [OPTIONS...] add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE ...]" - echo " $0 [OPTIONS...] remove KERNEL-VERSION" - echo "Options:" -- echo " -h,--help Print this help" -- echo " -v,--verbose Increase verbosity" -+ echo " -h, --help Print this help" -+ echo " -v, --verbose Increase verbosity" - } - - dropindirs_sort() -@@ -58,15 +58,15 @@ dropindirs_sort() - - export LC_COLLATE=C - --for i in "$@"; do -- if [ "$i" == "--help" -o "$i" == "-h" ]; then -+for i; do -+ if [ "$i" = "--help" ] || [ "$i" = "-h" ]; then - usage - exit 0 - fi - done - - KERNEL_INSTALL_VERBOSE=0 --if [ "$1" == "--verbose" -o "$1" == "-v" ]; then -+if [ "$1" = "--verbose" ] || [ "$1" = "-v" ]; then - shift - KERNEL_INSTALL_VERBOSE=1 - fi -@@ -185,13 +185,13 @@ case $COMMAND in - for f in "${PLUGINS[@]}"; do - if [[ -x $f ]]; then - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $KERNEL_IMAGE ${INITRD_OPTIONS[@]}" -+ echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $KERNEL_IMAGE ${INITRD_OPTIONS[*]}" - "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$KERNEL_IMAGE" "${INITRD_OPTIONS[@]}" - x=$? -- if [[ $x == $SKIP_REMAINING ]]; then -+ if [ $x -eq "$SKIP_REMAINING" ]; then - break - fi -- ((ret+=$x)) -+ ((ret+=x)) - fi - done - ;; -@@ -203,10 +203,10 @@ case $COMMAND in - echo "+$f remove $KERNEL_VERSION $ENTRY_DIR_ABS" - "$f" remove "$KERNEL_VERSION" "$ENTRY_DIR_ABS" - x=$? -- if [[ $x == $SKIP_REMAINING ]]; then -+ if [ $x -eq "$SKIP_REMAINING" ]; then - break - fi -- ((ret+=$x)) -+ ((ret+=x)) - fi - done - -@@ -222,4 +222,4 @@ case $COMMAND in - ;; - esac - --exit $ret -+exit "$ret" diff --git a/SOURCES/0083-tmpfiles-log-at-info-level-when-some-allowed-failure.patch b/SOURCES/0083-tmpfiles-log-at-info-level-when-some-allowed-failure.patch new file mode 100644 index 0000000..6a0e338 --- /dev/null +++ b/SOURCES/0083-tmpfiles-log-at-info-level-when-some-allowed-failure.patch @@ -0,0 +1,191 @@ +From 2f79547e8bbb5434a84c0b07c30fff63b351590c Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Thu, 10 Nov 2022 15:47:19 +0000 +Subject: [PATCH] tmpfiles: log at info level when some allowed failures occur + +In provision.conf we ship: + +d- /root :0700 root :root - +d- /root/.ssh :0700 root :root - + +These are allowed to fail, for example on a read-only filesystem. But they still +log at error level, which is annoying and gets flagged. Tune those specific errors +down to info. + +There are likely more that could be tuned down, but the important thing is to cover +the tmpfiles.d that we ship right now. + +Before: + +$ echo -e "d- /root :0700 root :root - \nd- /root/.ssh :0700 root :root -" | SYSTEMD_LOG_LEVEL=err build/systemd-tmpfiles --root=/tmp/img --create - +Failed to create directory or subvolume "/tmp/img/root": Read-only file system +Failed to open path '/tmp/img/root': No such file or directory +$ + +After: + +$ echo -e "d- /root :0700 root :root - \nd- /root/.ssh :0700 root :root -" | SYSTEMD_LOG_LEVEL=err build/systemd-tmpfiles --root=/tmp/img --create - +$ + +(cherry picked from commit 244c2a8344c01e94cd9bdf835de998b89bc53179) + +Related: #2138081 +--- + src/tmpfiles/tmpfiles.c | 49 +++++++++++++++++++++++++++-------------- + 1 file changed, 33 insertions(+), 16 deletions(-) + +diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c +index 784b895577..18bb75715b 100644 +--- a/src/tmpfiles/tmpfiles.c ++++ b/src/tmpfiles/tmpfiles.c +@@ -961,22 +961,34 @@ shortcut: + return label_fix_full(fd, /* inode_path= */ NULL, /* label_path= */ path, 0); + } + +-static int path_open_parent_safe(const char *path) { ++static int path_open_parent_safe(const char *path, bool allow_failure) { + _cleanup_free_ char *dn = NULL; + int r, fd; + + if (!path_is_normalized(path)) +- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Failed to open parent of '%s': path not normalized.", path); ++ return log_full_errno(allow_failure ? LOG_INFO : LOG_ERR, ++ SYNTHETIC_ERRNO(EINVAL), ++ "Failed to open parent of '%s': path not normalized%s.", ++ path, ++ allow_failure ? ", ignoring" : ""); + + r = path_extract_directory(path, &dn); + if (r < 0) +- return log_error_errno(r, "Unable to determine parent directory of '%s': %m", path); ++ return log_full_errno(allow_failure ? LOG_INFO : LOG_ERR, ++ r, ++ "Unable to determine parent directory of '%s'%s: %m", ++ path, ++ allow_failure ? ", ignoring" : ""); + +- r = chase_symlinks(dn, arg_root, CHASE_SAFE|CHASE_WARN, NULL, &fd); ++ r = chase_symlinks(dn, arg_root, allow_failure ? CHASE_SAFE : CHASE_SAFE|CHASE_WARN, NULL, &fd); + if (r == -ENOLINK) /* Unsafe symlink: already covered by CHASE_WARN */ + return r; + if (r < 0) +- return log_error_errno(r, "Failed to open path '%s': %m", dn); ++ return log_full_errno(allow_failure ? LOG_INFO : LOG_ERR, ++ r, ++ "Failed to open path '%s'%s: %m", ++ dn, ++ allow_failure ? ", ignoring" : ""); + + return fd; + } +@@ -1431,7 +1443,7 @@ static int write_one_file(Item *i, const char *path, CreationMode creation) { + + /* Validate the path and keep the fd on the directory for opening the file so we're sure that it + * can't be changed behind our back. */ +- dir_fd = path_open_parent_safe(path); ++ dir_fd = path_open_parent_safe(path, i->allow_failure); + if (dir_fd < 0) + return dir_fd; + +@@ -1481,7 +1493,7 @@ static int create_file(Item *i, const char *path) { + + /* Validate the path and keep the fd on the directory for opening the file so we're sure that it + * can't be changed behind our back. */ +- dir_fd = path_open_parent_safe(path); ++ dir_fd = path_open_parent_safe(path, i->allow_failure); + if (dir_fd < 0) + return dir_fd; + +@@ -1549,7 +1561,7 @@ static int truncate_file(Item *i, const char *path) { + + /* Validate the path and keep the fd on the directory for opening the file so we're sure that it + * can't be changed behind our back. */ +- dir_fd = path_open_parent_safe(path); ++ dir_fd = path_open_parent_safe(path, i->allow_failure); + if (dir_fd < 0) + return dir_fd; + +@@ -1628,7 +1640,7 @@ static int copy_files(Item *i) { + + /* Validate the path and use the returned directory fd for copying the target so we're sure that the + * path can't be changed behind our back. */ +- dfd = path_open_parent_safe(i->path); ++ dfd = path_open_parent_safe(i->path, i->allow_failure); + if (dfd < 0) + return dfd; + +@@ -1664,6 +1676,7 @@ static int create_directory_or_subvolume( + const char *path, + mode_t mode, + bool subvol, ++ bool allow_failure, + struct stat *ret_st, + CreationMode *ret_creation) { + +@@ -1679,7 +1692,7 @@ static int create_directory_or_subvolume( + if (r < 0) + return log_error_errno(r, "Failed to extract filename from path '%s': %m", path); + +- pfd = path_open_parent_safe(path); ++ pfd = path_open_parent_safe(path, allow_failure); + if (pfd < 0) + return pfd; + +@@ -1720,7 +1733,11 @@ static int create_directory_or_subvolume( + + /* Then look at the original error */ + if (r < 0) +- return log_error_errno(r, "Failed to create directory or subvolume \"%s\": %m", path); ++ return log_full_errno(allow_failure ? LOG_INFO : LOG_ERR, ++ r, ++ "Failed to create directory or subvolume \"%s\"%s: %m", ++ path, ++ allow_failure ? ", ignoring" : ""); + + return log_error_errno(errno, "Failed to open directory/subvolume we just created '%s': %m", path); + } +@@ -1748,7 +1765,7 @@ static int create_directory(Item *i, const char *path) { + assert(i); + assert(IN_SET(i->type, CREATE_DIRECTORY, TRUNCATE_DIRECTORY)); + +- fd = create_directory_or_subvolume(path, i->mode, /* subvol= */ false, &st, &creation); ++ fd = create_directory_or_subvolume(path, i->mode, /* subvol= */ false, i->allow_failure, &st, &creation); + if (fd == -EEXIST) + return 0; + if (fd < 0) +@@ -1766,7 +1783,7 @@ static int create_subvolume(Item *i, const char *path) { + assert(i); + assert(IN_SET(i->type, CREATE_SUBVOLUME, CREATE_SUBVOLUME_NEW_QUOTA, CREATE_SUBVOLUME_INHERIT_QUOTA)); + +- fd = create_directory_or_subvolume(path, i->mode, /* subvol = */ true, &st, &creation); ++ fd = create_directory_or_subvolume(path, i->mode, /* subvol = */ true, i->allow_failure, &st, &creation); + if (fd == -EEXIST) + return 0; + if (fd < 0) +@@ -1845,7 +1862,7 @@ static int create_device(Item *i, mode_t file_type) { + + /* Validate the path and use the returned directory fd for copying the target so we're sure that the + * path can't be changed behind our back. */ +- dfd = path_open_parent_safe(i->path); ++ dfd = path_open_parent_safe(i->path, i->allow_failure); + if (dfd < 0) + return dfd; + +@@ -1947,7 +1964,7 @@ static int create_fifo(Item *i) { + if (r == O_DIRECTORY) + return log_error_errno(SYNTHETIC_ERRNO(EISDIR), "Cannot open path '%s' for creating FIFO, is a directory.", i->path); + +- pfd = path_open_parent_safe(i->path); ++ pfd = path_open_parent_safe(i->path, i->allow_failure); + if (pfd < 0) + return pfd; + +@@ -2032,7 +2049,7 @@ static int create_symlink(Item *i) { + if (r == O_DIRECTORY) + return log_error_errno(SYNTHETIC_ERRNO(EISDIR), "Cannot open path '%s' for creating FIFO, is a directory.", i->path); + +- pfd = path_open_parent_safe(i->path); ++ pfd = path_open_parent_safe(i->path, i->allow_failure); + if (pfd < 0) + return pfd; + diff --git a/SOURCES/0084-fd-util-make-fd_in_set-and-thus-close_all_fds-handle.patch b/SOURCES/0084-fd-util-make-fd_in_set-and-thus-close_all_fds-handle.patch new file mode 100644 index 0000000..90ba257 --- /dev/null +++ b/SOURCES/0084-fd-util-make-fd_in_set-and-thus-close_all_fds-handle.patch @@ -0,0 +1,47 @@ +From 60fa029fe83af62f27bf833dc86c0aeeb76b412b Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Nov 2022 18:19:29 +0100 +Subject: [PATCH] fd-util: make fd_in_set() (and thus close_all_fds()) handle + invalidated fds in the array + +let's handle gracefully if fds in the specified array are already +invalidated (i.e. negative). This is handy when putting together arrays +on the fly. + +(cherry picked from commit d11c14a9817f6561a30d96d8faea126a4c811af8) + +Related: #2138081 +--- + src/basic/fd-util.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c +index cee20a9a81..6ed04449bf 100644 +--- a/src/basic/fd-util.c ++++ b/src/basic/fd-util.c +@@ -177,9 +177,13 @@ int fd_cloexec(int fd, bool cloexec) { + _pure_ static bool fd_in_set(int fd, const int fdset[], size_t n_fdset) { + assert(n_fdset == 0 || fdset); + +- for (size_t i = 0; i < n_fdset; i++) ++ for (size_t i = 0; i < n_fdset; i++) { ++ if (fdset[i] < 0) ++ continue; ++ + if (fdset[i] == fd) + return true; ++ } + + return false; + } +@@ -252,6 +256,10 @@ static int close_all_fds_special_case(const int except[], size_t n_except) { + if (!have_close_range) + return 0; + ++ if (n_except == 1 && except[0] < 0) /* Minor optimization: if we only got one fd, and it's invalid, ++ * we got none */ ++ n_except = 0; ++ + switch (n_except) { + + case 0: diff --git a/SOURCES/0084-kernel-install-port-to-bin-sh.patch b/SOURCES/0084-kernel-install-port-to-bin-sh.patch deleted file mode 100644 index db473f9..0000000 --- a/SOURCES/0084-kernel-install-port-to-bin-sh.patch +++ /dev/null @@ -1,205 +0,0 @@ -From 1f9eec4ab2a8a2213fec66194c537086e8242a0d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Thu, 16 Dec 2021 15:06:06 +0100 -Subject: [PATCH] kernel-install: port to /bin/sh - -(cherry picked from commit 76b1274a5cb54acaa4a0f0c2e570d751f9067c06) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 109 ++++++++++++------------------ - 1 file changed, 43 insertions(+), 66 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index f6da0cf7a8..2e8f382d5f 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -1,4 +1,4 @@ --#!/usr/bin/env bash -+#!/bin/sh - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - # SPDX-License-Identifier: LGPL-2.1-or-later -@@ -18,7 +18,7 @@ - # You should have received a copy of the GNU Lesser General Public License - # along with systemd; If not, see . - --SKIP_REMAINING=77 -+skip_remaining=77 - - usage() - { -@@ -32,24 +32,17 @@ usage() - - dropindirs_sort() - { -- local suffix=$1; shift -- local -a files -- local f d i -- -- readarray -t files <<<"$( -- for d in "$@"; do -- for i in "$d/"*"$suffix"; do -- if [[ -e "$i" ]]; then -- echo "${i##*/}" -- fi -- done -- done | sort -Vu -- )" -- -- for f in "${files[@]}"; do -- for d in "$@"; do -- if [[ -e "$d/$f" ]]; then -- echo "$d/$f" -+ suffix="$1" -+ shift -+ -+ for d; do -+ for i in "$d/"*"$suffix"; do -+ [ -e "$i" ] && echo "${i##*/}" -+ done -+ done | sort -Vu | while read -r f; do -+ for d; do -+ if [ -e "$d/$f" ]; then -+ [ -x "$d/$f" ] && echo "$d/$f" - continue 2 - fi - done -@@ -65,27 +58,25 @@ for i; do - fi - done - --KERNEL_INSTALL_VERBOSE=0 -+export KERNEL_INSTALL_VERBOSE=0 - if [ "$1" = "--verbose" ] || [ "$1" = "-v" ]; then - shift - KERNEL_INSTALL_VERBOSE=1 - fi --export KERNEL_INSTALL_VERBOSE - --if [[ "${0##*/}" == 'installkernel' ]]; then -- COMMAND='add' -- # make install doesn't pass any parameter wrt initrd handling -- INITRD_OPTIONS=() -+if [ "${0##*/}" = "installkernel" ]; then -+ COMMAND=add -+ # make install doesn't pass any initrds - else - COMMAND="$1" -- shift -- INITRD_OPTIONS=( "${@:3}" ) -+ [ $# -ge 1 ] && shift - fi - - KERNEL_VERSION="$1" - KERNEL_IMAGE="$2" -+[ $# -ge 2 ] && shift 2 - --if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then -+if [ -z "$COMMAND" ] || [ -z "$KERNEL_VERSION" ]; then - echo "Not enough arguments" >&2 - exit 1 - fi -@@ -99,12 +90,11 @@ fi - # Prefer to use an existing machine ID from /etc/machine-info or /etc/machine-id. If we're using the machine - # ID /etc/machine-id, try to persist it in /etc/machine-info. If no machine ID is found, try to generate - # a new machine ID in /etc/machine-info. If that fails, use "Default". -- --[ -z "$MACHINE_ID" ] && [ -f /etc/machine-info ] && source /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" --[ -z "$MACHINE_ID" ] && [ -f /etc/machine-id ] && read -r MACHINE_ID >/etc/machine-info -+[ -z "$MACHINE_ID" ] && [ -r /etc/machine-info ] && . /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" -+[ -z "$MACHINE_ID" ] && [ -r /etc/machine-id ] && read -r MACHINE_ID >/etc/machine-info - [ -z "$MACHINE_ID" ] && NEW_MACHINE_ID="$(systemd-id128 new)" && echo "KERNEL_INSTALL_MACHINE_ID=$NEW_MACHINE_ID" >>/etc/machine-info --[ -z "$MACHINE_ID" ] && [ -f /etc/machine-info ] && source /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" -+[ -z "$MACHINE_ID" ] && [ -r /etc/machine-info ] && . /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" - [ -z "$MACHINE_ID" ] && MACHINE_ID="Default" - - [ -z "$BOOT_ROOT" ] && for suff in "$MACHINE_ID" "loader/entries"; do -@@ -125,11 +115,6 @@ done - [ -z "$BOOT_ROOT" ] && BOOT_ROOT="/boot" - - --ENTRY_DIR_ABS="$BOOT_ROOT/$MACHINE_ID/$KERNEL_VERSION" -- --export KERNEL_INSTALL_MACHINE_ID="$MACHINE_ID" --export KERNEL_INSTALL_BOOT_ROOT="$BOOT_ROOT" -- - if [ -z "$layout" ]; then - # Administrative decision: if not present, some scripts generate into /boot. - if [ -d "$BOOT_ROOT/$MACHINE_ID" ]; then -@@ -152,21 +137,23 @@ MAKE_ENTRY_DIR_ABS=$? - - ret=0 - --readarray -t PLUGINS <<<"$( -+PLUGINS="$( - dropindirs_sort ".install" \ - "/etc/kernel/install.d" \ - "/usr/lib/kernel/install.d" - )" -+IFS=" -+" - --case $COMMAND in -+case "$COMMAND" in - add) -- if [[ ! "$KERNEL_IMAGE" ]]; then -+ if [ -z "$KERNEL_IMAGE" ]; then - echo "Command 'add' requires an argument" >&2 - exit 1 - fi - -- if [[ ! -f "$KERNEL_IMAGE" ]]; then -- echo "Kernel image argument ${KERNEL_IMAGE} not a file" >&2 -+ if ! [ -f "$KERNEL_IMAGE" ]; then -+ echo "Kernel image argument $KERNEL_IMAGE not a file" >&2 - exit 1 - fi - -@@ -182,32 +169,22 @@ case $COMMAND in - fi - fi - -- for f in "${PLUGINS[@]}"; do -- if [[ -x $f ]]; then -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $KERNEL_IMAGE ${INITRD_OPTIONS[*]}" -- "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$KERNEL_IMAGE" "${INITRD_OPTIONS[@]}" -- x=$? -- if [ $x -eq "$SKIP_REMAINING" ]; then -- break -- fi -- ((ret+=x)) -- fi -+ for f in $PLUGINS; do -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $KERNEL_IMAGE $*" -+ "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$KERNEL_IMAGE" "$@" -+ err=$? -+ [ $err -eq $skip_remaining ] && break -+ ret=$(( ret + err )) - done - ;; - - remove) -- for f in "${PLUGINS[@]}"; do -- if [[ -x $f ]]; then -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "+$f remove $KERNEL_VERSION $ENTRY_DIR_ABS" -- "$f" remove "$KERNEL_VERSION" "$ENTRY_DIR_ABS" -- x=$? -- if [ $x -eq "$SKIP_REMAINING" ]; then -- break -- fi -- ((ret+=x)) -- fi -+ for f in $PLUGINS; do -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f remove $KERNEL_VERSION $ENTRY_DIR_ABS" -+ "$f" remove "$KERNEL_VERSION" "$ENTRY_DIR_ABS" -+ err=$? -+ [ $err -eq $skip_remaining ] && break -+ ret=$(( ret + err )) - done - - if [ "$MAKE_ENTRY_DIR_ABS" -eq 0 ]; then diff --git a/SOURCES/0085-fd-util-add-new-fd_cloexec_many-helper.patch b/SOURCES/0085-fd-util-add-new-fd_cloexec_many-helper.patch new file mode 100644 index 0000000..f4fe208 --- /dev/null +++ b/SOURCES/0085-fd-util-add-new-fd_cloexec_many-helper.patch @@ -0,0 +1,55 @@ +From b9223cd76c73fa5cf3ed19a2238980047bf13826 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Nov 2022 18:20:19 +0100 +Subject: [PATCH] fd-util: add new fd_cloexec_many() helper + +(cherry picked from commit ed18c22c989495aab36512f03449222cfcf79aa7) + +Related: #2138081 +--- + src/basic/fd-util.c | 19 +++++++++++++++++++ + src/basic/fd-util.h | 1 + + 2 files changed, 20 insertions(+) + +diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c +index 6ed04449bf..66bb7569bb 100644 +--- a/src/basic/fd-util.c ++++ b/src/basic/fd-util.c +@@ -174,6 +174,25 @@ int fd_cloexec(int fd, bool cloexec) { + return RET_NERRNO(fcntl(fd, F_SETFD, nflags)); + } + ++int fd_cloexec_many(const int fds[], size_t n_fds, bool cloexec) { ++ int ret = 0, r; ++ ++ assert(n_fds == 0 || fds); ++ ++ for (size_t i = 0; i < n_fds; i++) { ++ if (fds[i] < 0) /* Skip gracefully over already invalidated fds */ ++ continue; ++ ++ r = fd_cloexec(fds[i], cloexec); ++ if (r < 0 && ret >= 0) /* Continue going, but return first error */ ++ ret = r; ++ else ++ ret = 1; /* report if we did anything */ ++ } ++ ++ return ret; ++} ++ + _pure_ static bool fd_in_set(int fd, const int fdset[], size_t n_fdset) { + assert(n_fdset == 0 || fdset); + +diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h +index d9896e27e8..29c7d86f27 100644 +--- a/src/basic/fd-util.h ++++ b/src/basic/fd-util.h +@@ -56,6 +56,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(DIR*, closedir, NULL); + + int fd_nonblock(int fd, bool nonblock); + int fd_cloexec(int fd, bool cloexec); ++int fd_cloexec_many(const int fds[], size_t n_fds, bool cloexec); + + int get_max_fd(void); + diff --git a/SOURCES/0085-kernel-install-90-loaderentry-error-out-on-nonexiste.patch b/SOURCES/0085-kernel-install-90-loaderentry-error-out-on-nonexiste.patch deleted file mode 100644 index 95d70d4..0000000 --- a/SOURCES/0085-kernel-install-90-loaderentry-error-out-on-nonexiste.patch +++ /dev/null @@ -1,51 +0,0 @@ -From bc1c914ebdec526151964c1aa3c2aeea0d4e2680 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Fri, 17 Dec 2021 19:51:12 +0100 -Subject: [PATCH] kernel-install: 90-loaderentry: error out on nonexistent - initrds instead of swallowing them quietly - -(cherry picked from commit 742561efbe938c45936f2e4f5d81b3ff6b352882) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 12 +++++++----- - 1 file changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 35324e69a9..e588e72bf9 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -93,7 +93,10 @@ install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { - - shift "$INITRD_OPTIONS_SHIFT" - for initrd; do -- [ -f "$initrd" ] || continue -+ [ -f "$initrd" ] || { -+ echo "Initrd '$initrd' not a file." >&2 -+ exit 1 -+ } - - initrd_basename="${initrd##*/}" - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Installing $ENTRY_DIR_ABS/$initrd_basename" -@@ -108,9 +111,6 @@ mkdir -p "${LOADER_ENTRY%/*}" || { - exit 1 - } - --# Try "initrd", generated by dracut in its kernel-install hook, if no initrds were supplied --[ $# -eq 0 ] && set -- "initrd" -- - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Creating $LOADER_ENTRY" - { - echo "title $PRETTY_NAME" -@@ -119,8 +119,10 @@ mkdir -p "${LOADER_ENTRY%/*}" || { - echo "options $BOOT_OPTIONS" - echo "linux $ENTRY_DIR/linux" - for initrd; do -- [ -f "$ENTRY_DIR_ABS/${initrd##*/}" ] && echo "initrd $ENTRY_DIR/${initrd##*/}" -+ echo "initrd $ENTRY_DIR/${initrd##*/}" - done -+ # Try "initrd", generated by dracut in its kernel-install hook, if no initrds were supplied -+ [ $# -eq 0 ] && [ -f "$ENTRY_DIR_ABS/initrd" ] && echo "initrd $ENTRY_DIR/initrd" - : - } >"$LOADER_ENTRY" || { - echo "Could not create loader entry '$LOADER_ENTRY'." >&2 diff --git a/SOURCES/0086-kernel-install-don-t-pull-out-KERNEL_IMAGE.patch b/SOURCES/0086-kernel-install-don-t-pull-out-KERNEL_IMAGE.patch deleted file mode 100644 index 1913f15..0000000 --- a/SOURCES/0086-kernel-install-don-t-pull-out-KERNEL_IMAGE.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 8a52c3a1797084956ddcd2acfb65a4023a4f0655 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= -Date: Mon, 20 Dec 2021 14:57:39 +0100 -Subject: [PATCH] kernel-install: don't pull out KERNEL_IMAGE - -It's part of the pack directly passed to scripts on add and ignored on -remove - -(cherry picked from commit af319a4b14bd05cd4c8460487f2c6d7a31b35640) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 21 ++++++++++----------- - 1 file changed, 10 insertions(+), 11 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index 2e8f382d5f..097d6557f2 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -72,15 +72,14 @@ else - [ $# -ge 1 ] && shift - fi - --KERNEL_VERSION="$1" --KERNEL_IMAGE="$2" --[ $# -ge 2 ] && shift 2 -- --if [ -z "$COMMAND" ] || [ -z "$KERNEL_VERSION" ]; then -+if [ $# -lt 1 ]; then - echo "Not enough arguments" >&2 - exit 1 - fi - -+KERNEL_VERSION="$1" -+shift -+ - if [ -r "/etc/kernel/install.conf" ]; then - . /etc/kernel/install.conf - elif [ -r "/usr/lib/kernel/install.conf" ]; then -@@ -147,13 +146,13 @@ IFS=" - - case "$COMMAND" in - add) -- if [ -z "$KERNEL_IMAGE" ]; then -- echo "Command 'add' requires an argument" >&2 -+ if [ $# -lt 1 ]; then -+ echo "Command 'add' requires a kernel image" >&2 - exit 1 - fi - -- if ! [ -f "$KERNEL_IMAGE" ]; then -- echo "Kernel image argument $KERNEL_IMAGE not a file" >&2 -+ if ! [ -f "$1" ]; then -+ echo "Kernel image argument $1 not a file" >&2 - exit 1 - fi - -@@ -170,8 +169,8 @@ case "$COMMAND" in - fi - - for f in $PLUGINS; do -- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $KERNEL_IMAGE $*" -- "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$KERNEL_IMAGE" "$@" -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $*" -+ "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$@" - err=$? - [ $err -eq $skip_remaining ] && break - ret=$(( ret + err )) diff --git a/SOURCES/0086-process-util-add-new-FORK_CLOEXEC_OFF-flag-for-disab.patch b/SOURCES/0086-process-util-add-new-FORK_CLOEXEC_OFF-flag-for-disab.patch new file mode 100644 index 0000000..1a5a22f --- /dev/null +++ b/SOURCES/0086-process-util-add-new-FORK_CLOEXEC_OFF-flag-for-disab.patch @@ -0,0 +1,49 @@ +From 4fb6e9eddc7487a965b3e051115f9bb1d0413342 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Nov 2022 18:20:47 +0100 +Subject: [PATCH] process-util: add new FORK_CLOEXEC_OFF flag for disabling + O_CLOEXEC on remaining fds + +Often the fds that shall stay around in the child shall be passed +to a process over execve(), hence add an option to explicitly disable +O_CLOEXEC on them in the child. + +(cherry picked from commit 981cfbe046297a18f2cb115ef81202f3bd68d2a3) + +Related: #2138081 +--- + src/basic/process-util.c | 8 ++++++++ + src/basic/process-util.h | 1 + + 2 files changed, 9 insertions(+) + +diff --git a/src/basic/process-util.c b/src/basic/process-util.c +index fb0b38fa49..0213f5913f 100644 +--- a/src/basic/process-util.c ++++ b/src/basic/process-util.c +@@ -1372,6 +1372,14 @@ int safe_fork_full( + } + } + ++ if (flags & FORK_CLOEXEC_OFF) { ++ r = fd_cloexec_many(except_fds, n_except_fds, false); ++ if (r < 0) { ++ log_full_errno(prio, r, "Failed to turn off O_CLOEXEC on file descriptors: %m"); ++ _exit(EXIT_FAILURE); ++ } ++ } ++ + /* When we were asked to reopen the logs, do so again now */ + if (flags & FORK_REOPEN_LOG) { + log_open(); +diff --git a/src/basic/process-util.h b/src/basic/process-util.h +index f8c374a310..ed2f73673e 100644 +--- a/src/basic/process-util.h ++++ b/src/basic/process-util.h +@@ -150,6 +150,7 @@ typedef enum ForkFlags { + FORK_STDOUT_TO_STDERR = 1 << 11, /* Make stdout a copy of stderr */ + FORK_FLUSH_STDIO = 1 << 12, /* fflush() stdout (and stderr) before forking */ + FORK_NEW_USERNS = 1 << 13, /* Run child in its own user namespace */ ++ FORK_CLOEXEC_OFF = 1 << 14, /* In the child: turn off O_CLOEXEC on all fds in except_fds[] */ + } ForkFlags; + + int safe_fork_full(const char *name, const int except_fds[], size_t n_except_fds, ForkFlags flags, pid_t *ret_pid); diff --git a/SOURCES/0087-dissect-fix-fsck.patch b/SOURCES/0087-dissect-fix-fsck.patch new file mode 100644 index 0000000..40f9916 --- /dev/null +++ b/SOURCES/0087-dissect-fix-fsck.patch @@ -0,0 +1,71 @@ +From 7f0f2caa082e7490c160b2c992a094116474a95f Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Nov 2022 18:26:42 +0100 +Subject: [PATCH] dissect: fix fsck + +Since f7725647bb41c3398a867f139efe526efe8aa1b3 when dissecting a disk +image we operate with fds to the device nodes in question wherever we +can. This includes when we fork off fsck, where we pass a /proc/self/fd/ +path as argument. This only works if we keep that fd open however and +disable O_CLOEXEC on the fd. Hence do so, and fix fsck this way. + +(Without this, all fsck will fail, since the fd path is invalid) + +(cherry picked from commit f8ab781223bcb0330ee4499b879a62e84fee313e) + +Related: #2138081 +--- + src/shared/dissect-image.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c +index 6a991c877a..7676636723 100644 +--- a/src/shared/dissect-image.c ++++ b/src/shared/dissect-image.c +@@ -1309,11 +1309,11 @@ static int is_loop_device(const char *path) { + return true; + } + +-static int run_fsck(const char *node, const char *fstype) { ++static int run_fsck(int node_fd, const char *fstype) { + int r, exit_status; + pid_t pid; + +- assert(node); ++ assert(node_fd >= 0); + assert(fstype); + + r = fsck_exists_for_fstype(fstype); +@@ -1322,16 +1322,20 @@ static int run_fsck(const char *node, const char *fstype) { + return 0; + } + if (r == 0) { +- log_debug("Not checking partition %s, as fsck for %s does not exist.", node, fstype); ++ log_debug("Not checking partition %s, as fsck for %s does not exist.", FORMAT_PROC_FD_PATH(node_fd), fstype); + return 0; + } + +- r = safe_fork("(fsck)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_RLIMIT_NOFILE_SAFE|FORK_DEATHSIG|FORK_NULL_STDIO, &pid); ++ r = safe_fork_full( ++ "(fsck)", ++ &node_fd, 1, /* Leave the node fd open */ ++ FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_RLIMIT_NOFILE_SAFE|FORK_DEATHSIG|FORK_NULL_STDIO|FORK_CLOEXEC_OFF, ++ &pid); + if (r < 0) + return log_debug_errno(r, "Failed to fork off fsck: %m"); + if (r == 0) { + /* Child */ +- execl("/sbin/fsck", "/sbin/fsck", "-aT", node, NULL); ++ execl("/sbin/fsck", "/sbin/fsck", "-aT", FORMAT_PROC_FD_PATH(node_fd), NULL); + log_open(); + log_debug_errno(errno, "Failed to execl() fsck: %m"); + _exit(FSCK_OPERATIONAL_ERROR); +@@ -1421,7 +1425,7 @@ static int mount_partition( + rw = m->rw && !(flags & DISSECT_IMAGE_MOUNT_READ_ONLY); + + if (FLAGS_SET(flags, DISSECT_IMAGE_FSCK) && rw) { +- r = run_fsck(node, fstype); ++ r = run_fsck(m->mount_node_fd, fstype); + if (r < 0) + return r; + } diff --git a/SOURCES/0087-kernel-install-prefer-boot-over-boot-efi-for-BOOT_RO.patch b/SOURCES/0087-kernel-install-prefer-boot-over-boot-efi-for-BOOT_RO.patch deleted file mode 100644 index 5da86e6..0000000 --- a/SOURCES/0087-kernel-install-prefer-boot-over-boot-efi-for-BOOT_RO.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8bcb1df836fccb5ddb6fb071b022bfd490f94e11 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Wed, 5 Jan 2022 14:07:14 -0800 -Subject: [PATCH] kernel-install: prefer /boot over /boot/efi for $BOOT_ROOT - -This restores the preference order from before 9e82a74. The code -previous to that change 'preferred' /boot over /boot/efi; that -commit changed it to check /boot/efi before checking /boot. -Changing this precedence could (and did, for me) have unexpected -effects - it seems safer to leave it how it was. - -Signed-off-by: Adam Williamson -(cherry picked from commit a5307e173bf86d695fe85b8e15e91126e8618a14) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index 097d6557f2..e56483ef96 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -97,7 +97,7 @@ fi - [ -z "$MACHINE_ID" ] && MACHINE_ID="Default" - - [ -z "$BOOT_ROOT" ] && for suff in "$MACHINE_ID" "loader/entries"; do -- for pref in "/efi" "/boot/efi" "/boot"; do -+ for pref in "/efi" "/boot" "/boot/efi" ; do - if [ -d "$pref/$suff" ]; then - BOOT_ROOT="$pref" - break 2 diff --git a/SOURCES/0088-core-update-audit-messages.patch b/SOURCES/0088-core-update-audit-messages.patch new file mode 100644 index 0000000..ff52e58 --- /dev/null +++ b/SOURCES/0088-core-update-audit-messages.patch @@ -0,0 +1,31 @@ +From 0a191f8306b4439049fcac8eea206835c144215e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= +Date: Fri, 4 Nov 2022 16:30:57 +0100 +Subject: [PATCH] core: update audit messages + +Pass getuid() instead of literal `0` as auid, since user session +managers also issue audit messages on SELinux denials. + +(cherry picked from commit c826b7ef3272157167a5c9d493e9672f00d84b98) + +Related: #2138081 +--- + src/core/selinux-access.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c +index c69baa8a1a..c1744cff92 100644 +--- a/src/core/selinux-access.c ++++ b/src/core/selinux-access.c +@@ -113,9 +113,9 @@ _printf_(2, 3) static int log_callback(int type, const char *fmt, ...) { + + if (r >= 0) { + if (type == SELINUX_AVC) +- audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, 0); ++ audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, getuid()); + else if (type == SELINUX_ERROR) +- audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_SELINUX_ERR, buf, NULL, NULL, NULL, 0); ++ audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_SELINUX_ERR, buf, NULL, NULL, NULL, getuid()); + + return 0; + } diff --git a/SOURCES/0088-kernel-install-also-remove-modules.builtin.alias.bin.patch b/SOURCES/0088-kernel-install-also-remove-modules.builtin.alias.bin.patch deleted file mode 100644 index ba2f56a..0000000 --- a/SOURCES/0088-kernel-install-also-remove-modules.builtin.alias.bin.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 491f0e55e1f1095b1d52d45e5753d5f1ea621231 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sat, 15 Jan 2022 03:37:40 +0900 -Subject: [PATCH] kernel-install: also remove modules.builtin.alias.bin - -Fixes RHBZ#2016630. - -(cherry picked from commit 06006691b5c56b6123044179d934b3ed81c237ca) - -Related: #2065061 ---- - src/kernel-install/50-depmod.install | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install -index aa1f6b8e0e..be414f39d1 100644 ---- a/src/kernel-install/50-depmod.install -+++ b/src/kernel-install/50-depmod.install -@@ -33,6 +33,7 @@ case "$COMMAND" in - "/lib/modules/$KERNEL_VERSION/modules.alias" \ - "/lib/modules/$KERNEL_VERSION/modules.alias.bin" \ - "/lib/modules/$KERNEL_VERSION/modules.builtin.bin" \ -+ "/lib/modules/$KERNEL_VERSION/modules.builtin.alias.bin" \ - "/lib/modules/$KERNEL_VERSION/modules.dep" \ - "/lib/modules/$KERNEL_VERSION/modules.dep.bin" \ - "/lib/modules/$KERNEL_VERSION/modules.devname" \ diff --git a/SOURCES/0089-kernel-install-add-new-variable-KERNEL_INSTALL_INITR.patch b/SOURCES/0089-kernel-install-add-new-variable-KERNEL_INSTALL_INITR.patch deleted file mode 100644 index 120a52e..0000000 --- a/SOURCES/0089-kernel-install-add-new-variable-KERNEL_INSTALL_INITR.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 931ae9749924a396a78044f8b1536085ff574ae6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 18 Jan 2022 17:40:13 +0100 -Subject: [PATCH] kernel-install: add new variable - $KERNEL_INSTALL_INITRD_GENERATOR - -The idea is that when not set, we do whatever we did in the past. But -with a new setting of initrd_generator=mkosi-initrd, mkosi-initrd will -generate an initrd. - -(cherry picked from commit 5c1b257faf87cb4f93aee8866f45a8cb98230af9) - -Related: #2065061 ---- - man/kernel-install.xml | 6 +++++- - src/kernel-install/install.conf | 1 + - src/kernel-install/kernel-install | 5 ++++- - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/man/kernel-install.xml b/man/kernel-install.xml -index 83255bb932..bb76074d2e 100644 ---- a/man/kernel-install.xml -+++ b/man/kernel-install.xml -@@ -171,11 +171,15 @@ - KERNEL_INSTALL_BOOT_ROOT= is set for the plugins to the root directory (mount point, usually) of the hierarchy - where boot-loader entries, kernel images, and associated resources should be placed. Can be overridden by setting BOOT_ROOT=. - -- KERNEL_INSTALL_LAYOUT=bls|other|... specifies the installation layout. -+ KERNEL_INSTALL_LAYOUT=bls|other|... is set for the plugins to specify the installation layout. - Defaults to if $BOOT/MACHINE-ID exists, or otherwise. - Additional layout names may be defined by convention. If a plugin uses a special layout, - it's encouraged to declare its own layout name and configure layout= in install.conf upon initial installation. - -+ KERNEL_INSTALL_INITRD_GENERATOR=... is set for plugins to select the initrd generator. -+ This should be configured as initrd_generator= in install.conf. -+ -+ - - - bls -diff --git a/src/kernel-install/install.conf b/src/kernel-install/install.conf -index e4802e6fae..43b6e7d792 100644 ---- a/src/kernel-install/install.conf -+++ b/src/kernel-install/install.conf -@@ -8,3 +8,4 @@ - # See kernel-install(8) for details. - - #layout=bls|other|... -+#initrd_generator=dracut|... -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index e56483ef96..fe457c1070 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -80,6 +80,9 @@ fi - KERNEL_VERSION="$1" - shift - -+layout= -+initrd_generator= -+ - if [ -r "/etc/kernel/install.conf" ]; then - . /etc/kernel/install.conf - elif [ -r "/usr/lib/kernel/install.conf" ]; then -@@ -123,12 +126,12 @@ if [ -z "$layout" ]; then - fi - fi - -- - ENTRY_DIR_ABS="$BOOT_ROOT/$MACHINE_ID/$KERNEL_VERSION" - - export KERNEL_INSTALL_MACHINE_ID="$MACHINE_ID" - export KERNEL_INSTALL_BOOT_ROOT="$BOOT_ROOT" - export KERNEL_INSTALL_LAYOUT="$layout" -+export KERNEL_INSTALL_INITRD_GENERATOR="$initrd_generator" - - [ "$layout" = "bls" ] - MAKE_ENTRY_DIR_ABS=$? diff --git a/SOURCES/0089-logind-set-RemoveIPC-to-false-by-default.patch b/SOURCES/0089-logind-set-RemoveIPC-to-false-by-default.patch new file mode 100644 index 0000000..1f91c9f --- /dev/null +++ b/SOURCES/0089-logind-set-RemoveIPC-to-false-by-default.patch @@ -0,0 +1,53 @@ +From 49fab9715ce09b86652e9855555e4ab4fc185220 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Wed, 1 Aug 2018 10:58:28 +0200 +Subject: [PATCH] logind: set RemoveIPC to false by default + +RHEL-only + +Related: #2138081 +--- + man/logind.conf.xml | 2 +- + src/login/logind-core.c | 2 +- + src/login/logind.conf.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/man/logind.conf.xml b/man/logind.conf.xml +index 9682add08c..1a87cf6baf 100644 +--- a/man/logind.conf.xml ++++ b/man/logind.conf.xml +@@ -341,7 +341,7 @@ + user fully logs out. Takes a boolean argument. If enabled, the user may not consume IPC resources after the + last of the user's sessions terminated. This covers System V semaphores, shared memory and message queues, as + well as POSIX shared memory and message queues. Note that IPC objects of the root user and other system users +- are excluded from the effect of this setting. Defaults to yes. ++ are excluded from the effect of this setting. Defaults to no. + + + +diff --git a/src/login/logind-core.c b/src/login/logind-core.c +index 02adc81909..b5050c54c4 100644 +--- a/src/login/logind-core.c ++++ b/src/login/logind-core.c +@@ -34,7 +34,7 @@ void manager_reset_config(Manager *m) { + + m->n_autovts = 6; + m->reserve_vt = 6; +- m->remove_ipc = true; ++ m->remove_ipc = false; + m->inhibit_delay_max = 5 * USEC_PER_SEC; + m->user_stop_delay = 10 * USEC_PER_SEC; + +diff --git a/src/login/logind.conf.in b/src/login/logind.conf.in +index 0b10df6839..09c363817a 100644 +--- a/src/login/logind.conf.in ++++ b/src/login/logind.conf.in +@@ -43,7 +43,7 @@ + #IdleActionSec=30min + #RuntimeDirectorySize=10% + #RuntimeDirectoryInodesMax= +-#RemoveIPC=yes ++#RemoveIPC=no + #InhibitorsMax=8192 + #SessionsMax=8192 + #StopIdleSessionSec=infinity diff --git a/SOURCES/0090-kernel-install-k-i-already-creates-ENTRY_DIR_ABS-no-.patch b/SOURCES/0090-kernel-install-k-i-already-creates-ENTRY_DIR_ABS-no-.patch deleted file mode 100644 index 071ac07..0000000 --- a/SOURCES/0090-kernel-install-k-i-already-creates-ENTRY_DIR_ABS-no-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 27b017353a06a22d42dc8bbabbaf602200730719 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 12:10:37 +0100 -Subject: [PATCH] kernel-install: k-i already creates $ENTRY_DIR_ABS, no need - to do it again - -(cherry picked from commit a520d5dddb991cd713392d4de0e342e312547a2e) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index e588e72bf9..7b768457c1 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -78,12 +78,8 @@ else - fi - - if ! [ -d "$ENTRY_DIR_ABS" ]; then -- if [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ]; then -- echo "+mkdir -v -p $ENTRY_DIR_ABS" -- mkdir -v -p "$ENTRY_DIR_ABS" -- else -- mkdir -p "$ENTRY_DIR_ABS" -- fi -+ echo "Error: entry directory '$ENTRY_DIR_ABS' does not exist" >&2 -+ exit 1 - fi - - install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { diff --git a/SOURCES/0090-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch b/SOURCES/0090-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch new file mode 100644 index 0000000..aa07282 --- /dev/null +++ b/SOURCES/0090-tmpfiles-don-t-create-resolv.conf-stub-resolv.conf-s.patch @@ -0,0 +1,43 @@ +From efe2c6703e3132dafaa29c1a7d3e3db4a683ed15 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Thu, 5 Aug 2021 17:11:47 +0200 +Subject: [PATCH] tmpfiles: don't create resolv.conf -> stub-resolv.conf + symlink + +RHEL-only + +Related: #2138081 +--- + tmpfiles.d/meson.build | 1 - + tmpfiles.d/systemd-resolve.conf | 10 ---------- + 2 files changed, 11 deletions(-) + delete mode 100644 tmpfiles.d/systemd-resolve.conf + +diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build +index ca1abbf3fe..179c71d375 100644 +--- a/tmpfiles.d/meson.build ++++ b/tmpfiles.d/meson.build +@@ -10,7 +10,6 @@ files = [['README', ''], + ['systemd-nologin.conf', 'HAVE_PAM'], + ['systemd-nspawn.conf', 'ENABLE_MACHINED'], + ['systemd-pstore.conf', 'ENABLE_PSTORE'], +- ['systemd-resolve.conf', 'ENABLE_RESOLVE'], + ['systemd-tmp.conf', ''], + ['tmp.conf', ''], + ['x11.conf', ''], +diff --git a/tmpfiles.d/systemd-resolve.conf b/tmpfiles.d/systemd-resolve.conf +deleted file mode 100644 +index cb1c56d6a6..0000000000 +--- a/tmpfiles.d/systemd-resolve.conf ++++ /dev/null +@@ -1,10 +0,0 @@ +-# This file is part of systemd. +-# +-# systemd is free software; you can redistribute it and/or modify it +-# under the terms of the GNU Lesser General Public License as published by +-# the Free Software Foundation; either version 2.1 of the License, or +-# (at your option) any later version. +- +-# See tmpfiles.d(5) for details +- +-L! /etc/resolv.conf - - - - ../run/systemd/resolve/stub-resolv.conf diff --git a/SOURCES/0091-Copy-40-redhat.rules-from-RHEL-8.patch b/SOURCES/0091-Copy-40-redhat.rules-from-RHEL-8.patch new file mode 100644 index 0000000..5d4c145 --- /dev/null +++ b/SOURCES/0091-Copy-40-redhat.rules-from-RHEL-8.patch @@ -0,0 +1,80 @@ +From 6b5b5fefcb68cb53427747be4984531bdeddcf7e Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Fri, 2 Jul 2021 13:25:51 +0200 +Subject: [PATCH] Copy 40-redhat.rules from RHEL-8 + +RHEL-only + +Related: #2138081 +--- + rules.d/40-redhat.rules | 46 +++++++++++++++++++++++++++++++++++++++++ + rules.d/meson.build | 3 ++- + 2 files changed, 48 insertions(+), 1 deletion(-) + create mode 100644 rules.d/40-redhat.rules + +diff --git a/rules.d/40-redhat.rules b/rules.d/40-redhat.rules +new file mode 100644 +index 0000000000..3c95cd2df0 +--- /dev/null ++++ b/rules.d/40-redhat.rules +@@ -0,0 +1,46 @@ ++# do not edit this file, it will be overwritten on update ++ ++# CPU hotadd request ++SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1" ++ ++# Memory hotadd request ++SUBSYSTEM!="memory", GOTO="memory_hotplug_end" ++ACTION!="add", GOTO="memory_hotplug_end" ++CONST{arch}=="s390*", GOTO="memory_hotplug_end" ++CONST{arch}=="ppc64*", GOTO="memory_hotplug_end" ++ ++ENV{.state}="online" ++CONST{virt}=="none", ENV{.state}="online_movable" ++ATTR{state}=="offline", ATTR{state}="$env{.state}" ++ ++LABEL="memory_hotplug_end" ++ ++# reload sysctl.conf / sysctl.conf.d settings when the bridge module is loaded ++ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge" ++ ++# load SCSI generic (sg) driver ++SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" ++SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_target", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" ++ ++# Rule for prandom character device node permissions ++KERNEL=="prandom", MODE="0644" ++ ++# Rules for creating the ID_PATH for SCSI devices based on the CCW bus ++# using the form: ccw--zfcp-: ++# ++ACTION=="remove", GOTO="zfcp_scsi_device_end" ++ ++# ++# Set environment variable "ID_ZFCP_BUS" to "1" if the devices ++# (both disk and partition) are SCSI devices based on FCP devices ++# ++KERNEL=="sd*", SUBSYSTEMS=="ccw", DRIVERS=="zfcp", ENV{.ID_ZFCP_BUS}="1" ++ ++# For SCSI disks ++KERNEL=="sd*[!0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="disk", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}" ++ ++ ++# For partitions on a SCSI disk ++KERNEL=="sd*[0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="partition", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}-part%n" ++ ++LABEL="zfcp_scsi_device_end" +diff --git a/rules.d/meson.build b/rules.d/meson.build +index 8d2878a36d..70f48e877b 100644 +--- a/rules.d/meson.build ++++ b/rules.d/meson.build +@@ -5,7 +5,8 @@ install_data( + install_dir : udevrulesdir) + + rules = [ +- [files('60-autosuspend.rules', ++ [files('40-redhat.rules', ++ '60-autosuspend.rules', + '60-block.rules', + '60-cdrom_id.rules', + '60-drm.rules', diff --git a/SOURCES/0091-kernel-install-prefix-errors-with-Error-exit-immedia.patch b/SOURCES/0091-kernel-install-prefix-errors-with-Error-exit-immedia.patch deleted file mode 100644 index 0bd51bb..0000000 --- a/SOURCES/0091-kernel-install-prefix-errors-with-Error-exit-immedia.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 7e5ff353f8b35352f6c36233841754154b4f453b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 12:15:16 +0100 -Subject: [PATCH] kernel-install: prefix errors with "Error:", exit immediately -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -kernel-install would continue after errors… We don't want this, as it -makes the results totally unpredicatable. If we didn't install the kernel -or didn't do some important part of the setup, let's just return an error -and let the user deal with it. - -When looking at output, the error was often hard to distinguish, esp. -with -v. Add "Error:" everywhere to make the output easier to parse. - -(cherry picked from commit 680cec6b4ddb356d7dd087b197718712cb5c1662) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 10 +++++----- - src/kernel-install/kernel-install | 12 ++++++------ - 2 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 7b768457c1..6a396910cb 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -83,27 +83,27 @@ if ! [ -d "$ENTRY_DIR_ABS" ]; then - fi - - install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { -- echo "Could not copy '$KERNEL_IMAGE' to '$ENTRY_DIR_ABS/linux'." >&2 -+ echo "Error: could not copy '$KERNEL_IMAGE' to '$ENTRY_DIR_ABS/linux'." >&2 - exit 1 - } - - shift "$INITRD_OPTIONS_SHIFT" - for initrd; do - [ -f "$initrd" ] || { -- echo "Initrd '$initrd' not a file." >&2 -+ echo "Error: initrd '$initrd' not a file." >&2 - exit 1 - } - - initrd_basename="${initrd##*/}" - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Installing $ENTRY_DIR_ABS/$initrd_basename" - install -g root -o root -m 0644 "$initrd" "$ENTRY_DIR_ABS/$initrd_basename" || { -- echo "Could not copy '$initrd' to '$ENTRY_DIR_ABS/$initrd_basename'." >&2 -+ echo "Error: could not copy '$initrd' to '$ENTRY_DIR_ABS/$initrd_basename'." >&2 - exit 1 - } - done - - mkdir -p "${LOADER_ENTRY%/*}" || { -- echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 -+ echo "Error: could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 - exit 1 - } - -@@ -121,7 +121,7 @@ mkdir -p "${LOADER_ENTRY%/*}" || { - [ $# -eq 0 ] && [ -f "$ENTRY_DIR_ABS/initrd" ] && echo "initrd $ENTRY_DIR/initrd" - : - } >"$LOADER_ENTRY" || { -- echo "Could not create loader entry '$LOADER_ENTRY'." >&2 -+ echo "Error: could not create loader entry '$LOADER_ENTRY'." >&2 - exit 1 - } - exit 0 -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index fe457c1070..a73a205d79 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -73,7 +73,7 @@ else - fi - - if [ $# -lt 1 ]; then -- echo "Not enough arguments" >&2 -+ echo "Error: not enough arguments" >&2 - exit 1 - fi - -@@ -150,12 +150,12 @@ IFS=" - case "$COMMAND" in - add) - if [ $# -lt 1 ]; then -- echo "Command 'add' requires a kernel image" >&2 -+ echo "Error: command 'add' requires a kernel image" >&2 - exit 1 - fi - - if ! [ -f "$1" ]; then -- echo "Kernel image argument $1 not a file" >&2 -+ echo "Error: kernel image argument $1 not a file" >&2 - exit 1 - fi - -@@ -165,9 +165,9 @@ case "$COMMAND" in - # to serve as the indication to use or to not use the BLS - if [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ]; then - echo "+mkdir -v -p $ENTRY_DIR_ABS" -- mkdir -v -p "$ENTRY_DIR_ABS" -+ mkdir -v -p "$ENTRY_DIR_ABS" || exit 1 - else -- mkdir -p "$ENTRY_DIR_ABS" -+ mkdir -p "$ENTRY_DIR_ABS" || exit 1 - fi - fi - -@@ -196,7 +196,7 @@ case "$COMMAND" in - ;; - - *) -- echo "Unknown command '$COMMAND'" >&2 -+ echo "Error: unknown command '$COMMAND'" >&2 - exit 1 - ;; - esac diff --git a/SOURCES/0092-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch b/SOURCES/0092-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch new file mode 100644 index 0000000..e510c2e --- /dev/null +++ b/SOURCES/0092-Avoid-tmp-being-mounted-as-tmpfs-without-the-user-s-.patch @@ -0,0 +1,45 @@ +From 711aca5f4820c2345489136cbbde7428d9f9da1b Mon Sep 17 00:00:00 2001 +From: Jan Synacek +Date: Tue, 15 May 2018 09:24:20 +0200 +Subject: [PATCH] Avoid /tmp being mounted as tmpfs without the user's will + +Ensure PrivateTmp doesn't require tmpfs through tmp.mount, but rather +adds an After relationship. + +RHEL-only + +Related: #2138081 +--- + src/core/unit.c | 7 +------ + units/basic.target | 3 ++- + 2 files changed, 3 insertions(+), 7 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index d08c73613b..1fad0b0ac8 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1301,12 +1301,7 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { + } + + if (c->private_tmp) { +- +- /* FIXME: for now we make a special case for /tmp and add a weak dependency on +- * tmp.mount so /tmp being masked is supported. However there's no reason to treat +- * /tmp specifically and masking other mount units should be handled more +- * gracefully too, see PR#16894. */ +- r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_WANTS, "tmp.mount", true, UNIT_DEPENDENCY_FILE); ++ r = unit_add_dependency_by_name(u, UNIT_AFTER, "tmp.mount", true, UNIT_DEPENDENCY_FILE); + if (r < 0) + return r; + +diff --git a/units/basic.target b/units/basic.target +index d8cdd5ac14..9eae0782a2 100644 +--- a/units/basic.target ++++ b/units/basic.target +@@ -19,4 +19,5 @@ After=sysinit.target sockets.target paths.target slices.target tmp.mount + # require /var and /var/tmp, but only add a Wants= type dependency on /tmp, as + # we support that unit being masked, and this should not be considered an error. + RequiresMountsFor=/var /var/tmp +-Wants=tmp.mount ++# RHEL-only: Disable /tmp on tmpfs. ++#Wants=tmp.mount diff --git a/SOURCES/0092-kernel-install-add-KERNEL_INSTALL_STAGING_AREA-direc.patch b/SOURCES/0092-kernel-install-add-KERNEL_INSTALL_STAGING_AREA-direc.patch deleted file mode 100644 index 8913774..0000000 --- a/SOURCES/0092-kernel-install-add-KERNEL_INSTALL_STAGING_AREA-direc.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 0f4ea4aee6e404dfbd6e3c4bbfb4f805e4e257f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 12:20:22 +0100 -Subject: [PATCH] kernel-install: add "$KERNEL_INSTALL_STAGING_AREA" directory - -The general approach of kernel-install was that each plugin would drop in some -files into the entry directory. But this doesn't scale well, because if we have -multiple initrd generators, or multiple initrds, each generator would need to -recreate the logic to put the generated files in the right place. - -Also, effective cleanup is impossible if anything goes wrong on the way, so we -could end up with unused files in $BOOT. - -So let's invert the process: plugins drop files into $KERNEL_INSTALL_STAGING_AREA, -and at the end 90-loaderentry.install DTRT with those files. - -This allow new plugins like 50-mkosi-initrd.install to be significantly simpler. - -(cherry picked from commit 367165a4069ac0c04882a05a8a80f6afb1e42760) - -Related: #2065061 ---- - man/kernel-install.xml | 4 ++++ - src/kernel-install/90-loaderentry.install | 13 ++++++++++--- - src/kernel-install/kernel-install | 10 ++++++++++ - 3 files changed, 24 insertions(+), 3 deletions(-) - -diff --git a/man/kernel-install.xml b/man/kernel-install.xml -index bb76074d2e..685617863e 100644 ---- a/man/kernel-install.xml -+++ b/man/kernel-install.xml -@@ -180,6 +180,10 @@ - This should be configured as initrd_generator= in install.conf. - - -+ KERNEL_INSTALL_STAGING_AREA=... is set for plugins to a path to a directory. -+ Plugins may drop files in that directory, and they will be installed as part of the loader entry, based -+ on the file name and extension. -+ - - - bls -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 6a396910cb..0888c260e2 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -18,6 +18,8 @@ - # You should have received a copy of the GNU Lesser General Public License - # along with systemd; If not, see . - -+shopt -s nullglob -+ - COMMAND="$1" - KERNEL_VERSION="$2" - ENTRY_DIR_ABS="$3" -@@ -88,7 +90,8 @@ install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { - } - - shift "$INITRD_OPTIONS_SHIFT" --for initrd; do -+# All files listed as arguments, and staged files called "initrd*" are installed as initrds. -+for initrd in "$@" "${KERNEL_INSTALL_STAGING_AREA}"/initrd*; do - [ -f "$initrd" ] || { - echo "Error: initrd '$initrd' not a file." >&2 - exit 1 -@@ -114,11 +117,15 @@ mkdir -p "${LOADER_ENTRY%/*}" || { - echo "machine-id $MACHINE_ID" - echo "options $BOOT_OPTIONS" - echo "linux $ENTRY_DIR/linux" -- for initrd; do -+ -+ have_initrd= -+ for initrd in "${@}" "${KERNEL_INSTALL_STAGING_AREA}"/initrd*; do - echo "initrd $ENTRY_DIR/${initrd##*/}" -+ have_initrd=yes - done -+ - # Try "initrd", generated by dracut in its kernel-install hook, if no initrds were supplied -- [ $# -eq 0 ] && [ -f "$ENTRY_DIR_ABS/initrd" ] && echo "initrd $ENTRY_DIR/initrd" -+ [ -z "$have_initrd" ] && [ -f "$ENTRY_DIR_ABS/initrd" ] && echo "initrd $ENTRY_DIR/initrd" - : - } >"$LOADER_ENTRY" || { - echo "Error: could not create loader entry '$LOADER_ENTRY'." >&2 -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index a73a205d79..8cfef3208d 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -128,10 +128,20 @@ fi - - ENTRY_DIR_ABS="$BOOT_ROOT/$MACHINE_ID/$KERNEL_VERSION" - -+# Provide a directory where to store generated initrds -+cleanup() { -+ [ -n "$KERNEL_INSTALL_STAGING_AREA" ] && rm -rf "$KERNEL_INSTALL_STAGING_AREA" -+} -+ -+trap cleanup EXIT -+ -+KERNEL_INSTALL_STAGING_AREA="$(mktemp -d -t -p /tmp kernel-install.staging.XXXXXXX)" -+ - export KERNEL_INSTALL_MACHINE_ID="$MACHINE_ID" - export KERNEL_INSTALL_BOOT_ROOT="$BOOT_ROOT" - export KERNEL_INSTALL_LAYOUT="$layout" - export KERNEL_INSTALL_INITRD_GENERATOR="$initrd_generator" -+export KERNEL_INSTALL_STAGING_AREA - - [ "$layout" = "bls" ] - MAKE_ENTRY_DIR_ABS=$? diff --git a/SOURCES/0093-kernel-install-add-missing-log-line.patch b/SOURCES/0093-kernel-install-add-missing-log-line.patch deleted file mode 100644 index da10435..0000000 --- a/SOURCES/0093-kernel-install-add-missing-log-line.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9f36dbd7cb7ca1f2e77ea6c1a3129988f346b287 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Jan 2022 14:03:24 +0100 -Subject: [PATCH] kernel-install: add missing log line - -(cherry picked from commit 29f604131b2c0b82dca7d6ffaa5e6bc6a253620d) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 0888c260e2..3edefdefb4 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -40,6 +40,8 @@ fi - - case "$COMMAND" in - remove) -+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -+ echo "Removing $BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION*.conf" - exec rm -f \ - "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" \ - "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+"*".conf" diff --git a/SOURCES/0093-unit-don-t-add-Requires-for-tmp.mount.patch b/SOURCES/0093-unit-don-t-add-Requires-for-tmp.mount.patch new file mode 100644 index 0000000..2d28be0 --- /dev/null +++ b/SOURCES/0093-unit-don-t-add-Requires-for-tmp.mount.patch @@ -0,0 +1,38 @@ +From c5f1cc8f23dfe545c0d03eae88bbd91e8a1db226 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Mon, 5 Sep 2016 12:47:09 +0200 +Subject: [PATCH] unit: don't add Requires for tmp.mount + +rhel-only +Related: #2138081 +--- + src/core/mount.c | 2 +- + src/core/unit.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 5e8a6ead61..ba55f7dd86 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -336,7 +336,7 @@ static int mount_add_mount_dependencies(Mount *m) { + if (r < 0) + return r; + +- if (UNIT(m)->fragment_path) { ++ if (UNIT(m)->fragment_path && !streq(UNIT(m)->id, "tmp.mount")) { + /* If we have fragment configuration, then make this dependency required */ + r = unit_add_dependency(other, UNIT_REQUIRES, UNIT(m), true, UNIT_DEPENDENCY_PATH); + if (r < 0) +diff --git a/src/core/unit.c b/src/core/unit.c +index 1fad0b0ac8..5af44aaf4a 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1541,7 +1541,7 @@ static int unit_add_mount_dependencies(Unit *u) { + return r; + changed = changed || r > 0; + +- if (m->fragment_path) { ++ if (m->fragment_path && !streq(m->id, "tmp.mount")) { + r = unit_add_dependency(u, UNIT_REQUIRES, m, true, di.origin_mask); + if (r < 0) + return r; diff --git a/SOURCES/0094-kernel-install-don-t-try-to-persist-used-machine-ID-.patch b/SOURCES/0094-kernel-install-don-t-try-to-persist-used-machine-ID-.patch deleted file mode 100644 index c13105e..0000000 --- a/SOURCES/0094-kernel-install-don-t-try-to-persist-used-machine-ID-.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 7738d7793bc83421536f9962c794633006613725 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 9 Feb 2022 13:59:36 +0100 -Subject: [PATCH] kernel-install: don't try to persist used machine ID locally - -This reworks the how machine ID used by the boot loader spec snippet -generation logic. Instead of persisting it automatically to /etc/ we'll -append it via systemd.machined_id= to the kernel command line, and thus -persist it in the generated boot loader spec snippets instead. This has -nice benefits: - - 1. We do not collide with read-only root - 2. The machine ID remains stable across factory reset, so that we can - safely recognize the path in $BOOT we drop our kernel images in - again, i.e. kernel updates will work correctly and safely across - kernel factory resets. - 3. Previously regular systems had different machine IDs while in - initrd and after booting into the host system. With this change - they will now have the same. - -This then drops implicit persisting of KERNEL_INSTALL_MACHINE_ID, as its -unnecessary then. The field is still honoured though, for compat -reasons. - -This also drops the "Default" fallback previously used, as it actually -is without effect, the randomized ID generation already took precedence -in all cases. This means $MACHNE_ID/KERNEL_INSTALL_MACHINE_ID are now -guaranteed to look like a proper machine ID, which is useful for us, -given you need it that way to be able to pass it to the -systemd.machine_id= kernel command line option. - -(cherry picked from commit 11ce3ea2f2219ab9c0700bcf7f8ed4312d80e937) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 6 +++++- - src/kernel-install/kernel-install | 16 +++++++--------- - 2 files changed, 12 insertions(+), 10 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 3edefdefb4..046771169c 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -68,7 +68,11 @@ elif [ -r /usr/lib/kernel/cmdline ]; then - else - BOOT_OPTIONS="$(tr -s "$IFS" '\n' >/etc/machine-info --[ -z "$MACHINE_ID" ] && NEW_MACHINE_ID="$(systemd-id128 new)" && echo "KERNEL_INSTALL_MACHINE_ID=$NEW_MACHINE_ID" >>/etc/machine-info --[ -z "$MACHINE_ID" ] && [ -r /etc/machine-info ] && . /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" --[ -z "$MACHINE_ID" ] && MACHINE_ID="Default" -+# If /etc/machine-id is initialized we'll use it, otherwise we'll use a freshly -+# generated one. If the user configured an explicit machine ID to use in -+# /etc/machine-info to use for our purpose, we'll use that instead (for -+# compatibility). -+[ -z "$MACHINE_ID" ] && [ -r /etc/machine-info ] && . /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" -+[ -z "$MACHINE_ID" ] && [ -r /etc/machine-id ] && read -r MACHINE_ID +Date: Tue, 22 Jan 2019 10:28:42 +0100 +Subject: [PATCH] units: add [Install] section to tmp.mount + +RHEL-only + +Related: #2138081 +--- + units/tmp.mount | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/units/tmp.mount b/units/tmp.mount +index 734acea237..b9a41cd803 100644 +--- a/units/tmp.mount ++++ b/units/tmp.mount +@@ -23,3 +23,7 @@ What=tmpfs + Where=/tmp + Type=tmpfs + Options=mode=1777,strictatime,nosuid,nodev,size=50%%,nr_inodes=1m ++ ++# Make 'systemctl enable tmp.mount' work: ++[Install] ++WantedBy=local-fs.target diff --git a/SOURCES/0095-kernel-install-add-a-new-ENTRY_TOKEN-variable-for-na.patch b/SOURCES/0095-kernel-install-add-a-new-ENTRY_TOKEN-variable-for-na.patch deleted file mode 100644 index 90f0121..0000000 --- a/SOURCES/0095-kernel-install-add-a-new-ENTRY_TOKEN-variable-for-na.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 455b9b9dd4d462db7482f67d8e730b25e75b1505 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 9 Feb 2022 14:29:19 +0100 -Subject: [PATCH] kernel-install: add a new $ENTRY_TOKEN variable for naming - boot entries -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This cleans up naming of boot loader spec boot entries a bit (i.e. the -naming of the .conf snippet files, and the directory in $BOOT where the -kernel images and initrds are placed), and isolates it from the actual machine -ID concept. - -Previously there was a sinlge concept for both things, because typically -the entries are just named after the machine ID. However one could also -use a different identifier, i.e. not a 128bit ID in which cases issues -pop up everywhere. For example, the "machine-id" field in the generated -snippets would not be a machine ID anymore, and the newly added -systemd.machine_id= kernel parameter would possibly get passed invalid -data. - -Hence clean this up: - -$MACHINE_ID → always a valid 128bit ID. - -$ENTRY_TOKEN → usually the $MACHINE_ID but can be any other string too. -This is used to name the directory to put kernels/initrds in. It's also -used for naming the *.conf snippets that implement the Boot Loader Type -1 spec. - -(cherry picked from commit 3907044ffa568aedf076d0f9807489ec78f87502) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 11 ++++++----- - src/kernel-install/kernel-install | 21 +++++++++++++++++---- - 2 files changed, 23 insertions(+), 9 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 046771169c..46261a2c11 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -29,6 +29,7 @@ INITRD_OPTIONS_SHIFT=4 - [ "$KERNEL_INSTALL_LAYOUT" = "bls" ] || exit 0 - - MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID" -+ENTRY_TOKEN="$KERNEL_INSTALL_ENTRY_TOKEN" - BOOT_ROOT="$KERNEL_INSTALL_BOOT_ROOT" - - BOOT_MNT="$(stat -c %m "$BOOT_ROOT")" -@@ -41,10 +42,10 @@ fi - case "$COMMAND" in - remove) - [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \ -- echo "Removing $BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION*.conf" -+ echo "Removing $BOOT_ROOT/loader/entries/$ENTRY_TOKEN-$KERNEL_VERSION*.conf" - exec rm -f \ -- "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" \ -- "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+"*".conf" -+ "$BOOT_ROOT/loader/entries/$ENTRY_TOKEN-$KERNEL_VERSION.conf" \ -+ "$BOOT_ROOT/loader/entries/$ENTRY_TOKEN-$KERNEL_VERSION+"*".conf" - ;; - add) - ;; -@@ -80,9 +81,9 @@ if [ -r /etc/kernel/tries ]; then - echo "/etc/kernel/tries does not contain an integer." >&2 - exit 1 - fi -- LOADER_ENTRY="$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+$TRIES.conf" -+ LOADER_ENTRY="$BOOT_ROOT/loader/entries/$ENTRY_TOKEN-$KERNEL_VERSION+$TRIES.conf" - else -- LOADER_ENTRY="$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" -+ LOADER_ENTRY="$BOOT_ROOT/loader/entries/$ENTRY_TOKEN-$KERNEL_VERSION.conf" - fi - - if ! [ -d "$ENTRY_DIR_ABS" ]; then -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index e94aa79bc6..75a31c62d4 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -97,7 +97,19 @@ fi - [ -z "$MACHINE_ID" ] && [ -r /etc/machine-id ] && read -r MACHINE_ID +Date: Thu, 11 Mar 2021 15:48:23 +0100 +Subject: [PATCH] rc-local: order after network-online.target + +I think this was the intent of commit 91b684c7300879a8d2006038f7d9185d92c3c3bf, +just network-online.target didn't exist back then. + +RHEL-only + +Related: #2138081 +--- + units/rc-local.service.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/units/rc-local.service.in b/units/rc-local.service.in +index 55e83dfe00..0eee722154 100644 +--- a/units/rc-local.service.in ++++ b/units/rc-local.service.in +@@ -13,7 +13,8 @@ + Description={{RC_LOCAL_PATH}} Compatibility + Documentation=man:systemd-rc-local-generator(8) + ConditionFileIsExecutable={{RC_LOCAL_PATH}} +-After=network.target ++After=network-online.target ++Wants=network-online.target + + [Service] + Type=forking diff --git a/SOURCES/0096-ci-drop-CIs-irrelevant-for-downstream.patch b/SOURCES/0096-ci-drop-CIs-irrelevant-for-downstream.patch new file mode 100644 index 0000000..b38ede8 --- /dev/null +++ b/SOURCES/0096-ci-drop-CIs-irrelevant-for-downstream.patch @@ -0,0 +1,303 @@ +From 36f9fb0c7e19bda07ce6de5f4b04f58a5da2f122 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Sun, 18 Apr 2021 20:46:06 +0200 +Subject: [PATCH] ci: drop CIs irrelevant for downstream + + * CIFuzz would need a separate project in oss-fuzz + * Coverity would also need a separate project + * the Labeler action is superfluous, since we already have a bot for + that + * mkosi testing on other distros is irrelevant for downstream RHEL + repo + +Related: #2138081 +rhel-only +--- + .github/labeler.yml | 40 --------------- + .github/workflows/cifuzz.yml | 62 ----------------------- + .github/workflows/coverity.yml | 30 ------------ + .github/workflows/labeler.yml | 24 --------- + .github/workflows/mkosi.yml | 90 ---------------------------------- + 5 files changed, 246 deletions(-) + delete mode 100644 .github/labeler.yml + delete mode 100644 .github/workflows/cifuzz.yml + delete mode 100644 .github/workflows/coverity.yml + delete mode 100644 .github/workflows/labeler.yml + delete mode 100644 .github/workflows/mkosi.yml + +diff --git a/.github/labeler.yml b/.github/labeler.yml +deleted file mode 100644 +index 7d128f42d6..0000000000 +--- a/.github/labeler.yml ++++ /dev/null +@@ -1,40 +0,0 @@ +-# SPDX-License-Identifier: LGPL-2.1-or-later +- +-hwdb: +- - hwdb.d/**/* +-units: +- - units/**/* +-documentation: +- - NEWS +- - docs/* +-network: +- - src/libsystemd-network/**/* +- - src/network/**/* +-udev: +- - src/udev/**/* +- - src/libudev/* +-selinux: +- - '**/*selinux*' +-apparmor: +- - '**/*apparmor*' +-meson: +- - meson_option.txt +-mkosi: +- - .mkosi/* +- - mkosi.build +-busctl: +- - src/busctl/* +-systemctl: +- - src/systemctl/* +-journal: +- - src/journal/* +-journal-remote: +- - src/journal-remote/* +-portable: +- - src/portable/**/* +-resolve: +- - src/resolve/* +-timedate: +- - src/timedate/* +-timesync: +- - src/timesync/* +diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml +deleted file mode 100644 +index 25731abc5a..0000000000 +--- a/.github/workflows/cifuzz.yml ++++ /dev/null +@@ -1,62 +0,0 @@ +---- +-# vi: ts=2 sw=2 et: +-# SPDX-License-Identifier: LGPL-2.1-or-later +-# See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/ +- +-name: CIFuzz +- +-permissions: +- contents: read +- +-on: +- pull_request: +- paths: +- - '**/meson.build' +- - '.github/workflows/**' +- - 'meson_options.txt' +- - 'src/**' +- - 'test/fuzz/**' +- - 'tools/oss-fuzz.sh' +- push: +- branches: +- - main +-jobs: +- Fuzzing: +- runs-on: ubuntu-latest +- if: github.repository == 'systemd/systemd' +- concurrency: +- group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ matrix.architecture }}-${{ github.ref }} +- cancel-in-progress: true +- strategy: +- fail-fast: false +- matrix: +- sanitizer: [address, undefined, memory] +- architecture: [x86_64] +- include: +- - sanitizer: address +- architecture: i386 +- steps: +- - name: Build Fuzzers (${{ matrix.sanitizer }}) +- id: build +- uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master +- with: +- oss-fuzz-project-name: 'systemd' +- dry-run: false +- allowed-broken-targets-percentage: 0 +- # keep-unaffected-fuzz-targets should be removed once https://github.com/google/oss-fuzz/issues/7011 is fixed +- keep-unaffected-fuzz-targets: true +- sanitizer: ${{ matrix.sanitizer }} +- architecture: ${{ matrix.architecture }} +- - name: Run Fuzzers (${{ matrix.sanitizer }}) +- uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master +- with: +- oss-fuzz-project-name: 'systemd' +- fuzz-seconds: 600 +- dry-run: false +- sanitizer: ${{ matrix.sanitizer }} +- - name: Upload Crash +- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 +- if: failure() && steps.build.outcome == 'success' +- with: +- name: ${{ matrix.sanitizer }}-${{ matrix.architecture }}-artifacts +- path: ./out/artifacts +diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml +deleted file mode 100644 +index 3fbebc6bbf..0000000000 +--- a/.github/workflows/coverity.yml ++++ /dev/null +@@ -1,30 +0,0 @@ +---- +-# vi: ts=2 sw=2 et: +-# SPDX-License-Identifier: LGPL-2.1-or-later +-# +-name: Coverity +- +-on: +- schedule: +- # Run Coverity daily at midnight +- - cron: '0 0 * * *' +- +-permissions: +- contents: read +- +-jobs: +- build: +- runs-on: ubuntu-22.04 +- if: github.repository == 'systemd/systemd' +- env: +- # Set in repo settings -> secrets -> actions +- COVERITY_SCAN_TOKEN: "${{ secrets.COVERITY_SCAN_TOKEN }}" +- COVERITY_SCAN_NOTIFICATION_EMAIL: "${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}" +- steps: +- - name: Repository checkout +- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b +- # Reuse the setup phase of the unit test script to avoid code duplication +- - name: Install build dependencies +- run: sudo -E .github/workflows/unit_tests.sh SETUP +- - name: Build & upload the results +- run: tools/coverity.sh +diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml +deleted file mode 100644 +index 35766df591..0000000000 +--- a/.github/workflows/labeler.yml ++++ /dev/null +@@ -1,24 +0,0 @@ +---- +-# vi: ts=2 sw=2 et: +-# SPDX-License-Identifier: LGPL-2.1-or-later +-# +-name: "Pull Request Labeler" +- +-on: +-- pull_request_target +- +-permissions: +- contents: read +- +-jobs: +- triage: +- if: github.event.repository.name != 'systemd-security' +- runs-on: ubuntu-latest +- permissions: +- pull-requests: write +- steps: +- - uses: actions/labeler@e54e5b338fbd6e6cdb5d60f51c22335fc57c401e +- with: +- repo-token: "${{ secrets.GITHUB_TOKEN }}" +- configuration-path: .github/labeler.yml +- sync-labels: "" # This is a workaround for issue 18671 +diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml +deleted file mode 100644 +index 2a1163aa07..0000000000 +--- a/.github/workflows/mkosi.yml ++++ /dev/null +@@ -1,90 +0,0 @@ +---- +-# vi: ts=2 sw=2 et: +-# SPDX-License-Identifier: LGPL-2.1-or-later +-# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in mkosi.default.d/. +-name: mkosi +- +-on: +- push: +- branches: +- - main +- - v[0-9]+-stable +- pull_request: +- branches: +- - main +- - v[0-9]+-stable +- +-permissions: +- contents: read +- +-env: +- # Enable debug logging in systemd, but keep udev's log level to info, +- # since it's _very_ verbose in the QEMU task +- # Disable the ISC DHCP servers, as they are failing in Ubuntu +- KERNEL_CMDLINE: "systemd.unit=mkosi-check-and-shutdown.service !quiet systemd.log_level=debug systemd.log_target=console udev.log_level=info systemd.default_standard_output=journal+console systemd.mask=isc-dhcp-server6.service systemd.mask=isc-dhcp-server.service" +- +-jobs: +- ci: +- runs-on: ubuntu-22.04 +- concurrency: +- group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }} +- cancel-in-progress: true +- strategy: +- fail-fast: false +- matrix: +- include: +- - distro: arch +- release: rolling +- - distro: debian +- release: testing +- - distro: ubuntu +- release: jammy +- - distro: fedora +- release: "37" +- - distro: fedora +- release: rawhide +- - distro: opensuse +- release: tumbleweed +- - distro: centos_epel +- release: 9-stream +- - distro: centos_epel +- release: 8-stream +- +- steps: +- - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b +- - uses: systemd/mkosi@792cbc60eb2dc4a58d66bb3c212bf92f8d50f6ea +- +- - name: Install +- run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2 +- +- - name: Configure +- run: | +- tee mkosi.default <<- EOF +- [Distribution] +- Distribution=${{ matrix.distro }} +- Release=${{ matrix.release }} +- +- [Content] +- Environment=CI_BUILD=1 +- +- [Output] +- KernelCommandLine=${{ env.KERNEL_CMDLINE }} +- EOF +- +- - name: Build ${{ matrix.distro }} +- run: sudo python3 -m mkosi build +- +- - name: Show ${{ matrix.distro }} image summary +- run: sudo python3 -m mkosi summary +- +- - name: Boot ${{ matrix.distro }} systemd-nspawn +- run: sudo python3 -m mkosi boot ${{ env.KERNEL_CMDLINE }} +- +- - name: Check ${{ matrix.distro }} systemd-nspawn +- run: sudo python3 -m mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" +- +- - name: Boot ${{ matrix.distro }} QEMU +- run: sudo timeout -k 30 10m python3 -m mkosi qemu +- +- - name: Check ${{ matrix.distro }} QEMU +- run: sudo python3 -m mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" diff --git a/SOURCES/0096-kernel-install-only-generate-systemd.boot_id-in-kern.patch b/SOURCES/0096-kernel-install-only-generate-systemd.boot_id-in-kern.patch deleted file mode 100644 index ddb3264..0000000 --- a/SOURCES/0096-kernel-install-only-generate-systemd.boot_id-in-kern.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 5eb855bddaf8270e7274132ded0e36325d8ffbbe Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 9 Feb 2022 14:44:48 +0100 -Subject: [PATCH] kernel-install: only generate systemd.boot_id= in kernel - command line if used for naming the boot loader spec files/dirs - -Now that we can distinguish the naming of the boot loader spec -dirs/files and the machine ID let's tweak the logic for suffixing the -kernel cmdline with systemd.boot_id=: let's only do that when we -actually need the boot ID for naming these dirs/files. If we don't, -let's not bother. - -This should be beneficial for "golden" images that shall not carry any -machine IDs at all, i.e acquire their identity only once the final -userspace is actually reached. - -(cherry picked from commit 953b61004c37948dcd897265b56c1613bc73b9f9) - -Related: #2065061 ---- - src/kernel-install/90-loaderentry.install | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install -index 46261a2c11..c1d69aa824 100644 ---- a/src/kernel-install/90-loaderentry.install -+++ b/src/kernel-install/90-loaderentry.install -@@ -70,10 +70,15 @@ else - BOOT_OPTIONS="$(tr -s "$IFS" '\n' +Date: Wed, 9 Jun 2021 15:23:59 +0200 +Subject: [PATCH] ci: reconfigure Packit for RHEL 9 + +Related: #2138081 +rhel-only +--- + .packit.yml | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/.packit.yml b/.packit.yml +index a7502b25b4..d0eebab181 100644 +--- a/.packit.yml ++++ b/.packit.yml +@@ -17,14 +17,12 @@ srpm_build_deps: [] + + actions: + post-upstream-clone: +- # Use the Fedora Rawhide specfile +- - "git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1" ++ # Use the CentOS Stream specfile ++ - "git clone https://gitlab.com/redhat/centos-stream/rpms/systemd.git .packit_rpm --depth=1" + # Drop the "sources" file so rebase-helper doesn't think we're a dist-git + - "rm -fv .packit_rpm/sources" +- # Drop backported patches from the specfile, but keep the downstream-only ones +- # - Patch(0000-0499): backported patches from upstream +- # - Patch0500-9999: downstream-only patches +- - "sed -ri '/^Patch(0[0-4]?[0-9]{0,2})?\\:.+\\.patch/d' .packit_rpm/systemd.spec" ++ # Drop all patches, since they're already included in the tarball ++ - "sed -ri '/^Patch[0-9]+:/d' .packit_rpm/systemd.spec" + # Build the RPM with --werror. Even though --werror doesn't work in all + # cases (see [0]), we can't use -Dc_args=/-Dcpp_args= here because of the + # RPM hardening macros, that use $CFLAGS/$CPPFLAGS (see [1]). +@@ -33,7 +31,9 @@ actions: + # [1] https://github.com/systemd/systemd/pull/18908#issuecomment-792250110 + - 'sed -i "/^CONFIGURE_OPTS=(/a--werror" .packit_rpm/systemd.spec' + ++# Available targets can be listed via `copr-cli list-chroots` + jobs: ++# Build test + - job: copr_build + trigger: pull_request + metadata: diff --git a/SOURCES/0097-kernel-install-search-harder-for-kernel-image-initrd.patch b/SOURCES/0097-kernel-install-search-harder-for-kernel-image-initrd.patch deleted file mode 100644 index 933401c..0000000 --- a/SOURCES/0097-kernel-install-search-harder-for-kernel-image-initrd.patch +++ /dev/null @@ -1,75 +0,0 @@ -From a774b3d6c43863b632f211aa21e61cb48e2ee736 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 10 Feb 2022 14:27:22 +0100 -Subject: [PATCH] kernel-install: search harder for kernel image/initrd drop-in - dir - -If not explicitly configured, let's search a bit harder for the -ENTRY_TOKEN, and let's try the machine ID, the IMAGE_ID and ID fields of -/etc/os-release and finally "Default", all below potential $XBOOTLDR. - -(cherry picked from commit 6637cf9db67237857279262d93ee0e39023c5b85) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 27 ++++++++++++++++++++++++--- - 1 file changed, 24 insertions(+), 3 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index 75a31c62d4..c42c40592a 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -103,29 +103,50 @@ fi - # for naming the .conf boot loader spec entry. Typically this is just the - # machine ID, but it can be anything else, too, if we are told so. - [ -z "$ENTRY_TOKEN" ] && [ -r /etc/kernel/entry-token ] && read -r ENTRY_TOKEN +Date: Thu, 15 Jul 2021 12:23:27 +0200 +Subject: [PATCH] ci: run unit tests on z-stream branches as well + +Related: #2138081 +rhel-only +--- + .github/workflows/unit_tests.yml | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml +index cd6c33eb64..ca4464e95d 100644 +--- a/.github/workflows/unit_tests.yml ++++ b/.github/workflows/unit_tests.yml +@@ -3,11 +3,7 @@ + # SPDX-License-Identifier: LGPL-2.1-or-later + # + name: Unit tests +-on: +- pull_request: +- branches: +- - main +- - v[0-9]+-stable ++on: [pull_request] + + permissions: + contents: read diff --git a/SOURCES/0098-kernel-install-add-new-inspect-verb-showing-paths-an.patch b/SOURCES/0098-kernel-install-add-new-inspect-verb-showing-paths-an.patch deleted file mode 100644 index bfc88d7..0000000 --- a/SOURCES/0098-kernel-install-add-new-inspect-verb-showing-paths-an.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 8742d040aa5ef5e784c903d0c3efacba7d69ade2 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 10 Feb 2022 14:37:37 +0100 -Subject: [PATCH] kernel-install: add new "inspect" verb, showing paths and - parameters we discovered - -(cherry picked from commit c73cf4184441d3cc37a5e2195938f07420ec38b7) - -Related: #2065061 ---- - src/kernel-install/kernel-install | 29 +++++++++++++++++++++++------ - 1 file changed, 23 insertions(+), 6 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index c42c40592a..b8099bd12c 100755 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -25,6 +25,7 @@ usage() - echo "Usage:" - echo " $0 [OPTIONS...] add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE ...]" - echo " $0 [OPTIONS...] remove KERNEL-VERSION" -+ echo " $0 [OPTIONS...] inspect" - echo "Options:" - echo " -h, --help Print this help" - echo " -v, --verbose Increase verbosity" -@@ -72,13 +73,17 @@ else - [ $# -ge 1 ] && shift - fi - --if [ $# -lt 1 ]; then -- echo "Error: not enough arguments" >&2 -- exit 1 --fi -+if [ "$COMMAND" = "inspect" ]; then -+ KERNEL_VERSION="" -+else -+ if [ $# -lt 1 ]; then -+ echo "Error: not enough arguments" >&2 -+ exit 1 -+ fi - --KERNEL_VERSION="$1" --shift -+ KERNEL_VERSION="$1" -+ shift -+fi - - layout= - initrd_generator= -@@ -237,6 +242,18 @@ case "$COMMAND" in - fi - ;; - -+ inspect) -+ echo "KERNEL_INSTALL_MACHINE_ID: $KERNEL_INSTALL_MACHINE_ID" -+ echo "KERNEL_INSTALL_ENTRY_TOKEN: $KERNEL_INSTALL_ENTRY_TOKEN" -+ echo "KERNEL_INSTALL_BOOT_ROOT: $KERNEL_INSTALL_BOOT_ROOT" -+ echo "KERNEL_INSTALL_LAYOUT: $KERNEL_INSTALL_LAYOUT" -+ echo "KERNEL_INSTALL_INITRD_GENERATOR: $KERNEL_INSTALL_INITRD_GENERATOR" -+ echo "ENTRY_DIR_ABS: $KERNEL_INSTALL_BOOT_ROOT/$ENTRY_TOKEN/\$KERNEL_VERSION" -+ -+ # Assert that ENTRY_DIR_ABS actually matches what we are printing here -+ [ "${ENTRY_DIR_ABS%/*}" = "$KERNEL_INSTALL_BOOT_ROOT/$ENTRY_TOKEN" ] || { echo "Assertion didn't pass." >&2; exit 1; } -+ -+ ;; - *) - echo "Error: unknown command '$COMMAND'" >&2 - exit 1 diff --git a/SOURCES/0099-ci-Mergify-configuration-update.patch b/SOURCES/0099-ci-Mergify-configuration-update.patch deleted file mode 100644 index 992cdf9..0000000 --- a/SOURCES/0099-ci-Mergify-configuration-update.patch +++ /dev/null @@ -1,97 +0,0 @@ -From caf80cd558222a08687e8db95e3e1fcad0d69946 Mon Sep 17 00:00:00 2001 -From: Jan Macku -Date: Mon, 30 May 2022 15:19:16 +0200 -Subject: [PATCH] ci(Mergify): configuration update - -Add rules for `needs-ci` label management - -RHEL-only - -Related: #2087652 ---- - .mergify.yml | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 76 insertions(+) - create mode 100644 .mergify.yml - -diff --git a/.mergify.yml b/.mergify.yml -new file mode 100644 -index 0000000000..c06e0fb1be ---- /dev/null -+++ b/.mergify.yml -@@ -0,0 +1,76 @@ -+# doc: https://docs.mergify.com -+--- -+ -+pull_request_rules: -+ - name: Add `needs-ci` label on CI fail -+ conditions: -+ - or: -+ # Build test -+ - -check-success=build (gcc, 10, bfd) -+ - -check-success=build (gcc, 11, gold) -+ - -check-success=build (clang, 11, bfd) -+ - -check-success=build (clang, 12, gold) -+ - -check-success=build (clang, 13, lld) -+ # Unit tests -+ - -check-success=build (GCC, auto) -+ - -check-success=build (GCC_ASAN_UBSAN, auto) -+ - -check-success=build (CLANG, auto) -+ - -check-success=build (CLANG_ASAN_UBSAN, auto) -+ - -check-success=build (GCC, openssl) -+ - -check-success=build (CLANG, gcrypt) -+ # CentOS CI -+ - -check-success=CentOS CI (CentOS Stream 9) -+ - -check-success=CentOS CI (CentOS Stream 9 + sanitizers) -+ # LGTM -+ - and: -+ - "-check-success=LGTM analysis: JavaScript" -+ - "-check-neutral=LGTM analysis: JavaScript" -+ - and: -+ - "-check-success=LGTM analysis: Python" -+ - "-check-neutral=LGTM analysis: Python" -+ - and: -+ - "-check-success=LGTM analysis: C/C++" -+ - "-check-neutral=LGTM analysis: Python" -+ # Packit -+ - -check-success=rpm-build:centos-stream-9-aarch64 -+ - -check-success=rpm-build:centos-stream-9-x86_64 -+ actions: -+ label: -+ add: -+ - needs-ci -+ -+ - name: Remove `needs-ci` label on CI success -+ conditions: -+ # Build test -+ - check-success=build (gcc, 10, bfd) -+ - check-success=build (gcc, 11, gold) -+ - check-success=build (clang, 11, bfd) -+ - check-success=build (clang, 12, gold) -+ - check-success=build (clang, 13, lld) -+ # Unit tests -+ - check-success=build (GCC, auto) -+ - check-success=build (GCC_ASAN_UBSAN, auto) -+ - check-success=build (CLANG, auto) -+ - check-success=build (CLANG_ASAN_UBSAN, auto) -+ - check-success=build (GCC, openssl) -+ - check-success=build (CLANG, gcrypt) -+ # CentOS CI -+ - check-success=CentOS CI (CentOS Stream 9) -+ - check-success=CentOS CI (CentOS Stream 9 + sanitizers) -+ # LGTM -+ - or: -+ - "check-success=LGTM analysis: JavaScript" -+ - "check-neutral=LGTM analysis: JavaScript" -+ - or: -+ - "check-success=LGTM analysis: Python" -+ - "check-neutral=LGTM analysis: Python" -+ - or: -+ - "check-success=LGTM analysis: C/C++" -+ - "check-neutral=LGTM analysis: Python" -+ # Packit -+ - check-success=rpm-build:centos-stream-9-aarch64 -+ - check-success=rpm-build:centos-stream-9-x86_64 -+ actions: -+ label: -+ remove: -+ - needs-ci diff --git a/SOURCES/0099-random-util-increase-random-seed-size-to-1024.patch b/SOURCES/0099-random-util-increase-random-seed-size-to-1024.patch new file mode 100644 index 0000000..6e90ff7 --- /dev/null +++ b/SOURCES/0099-random-util-increase-random-seed-size-to-1024.patch @@ -0,0 +1,25 @@ +From 216f6490af452a774ef882319083858248248da8 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 15 Jul 2021 11:15:17 +0200 +Subject: [PATCH] random-util: increase random seed size to 1024 + +RHEL-only + +Related: #2138081 +--- + src/basic/random-util.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/basic/random-util.h b/src/basic/random-util.h +index 2d99807272..7e6f66df4d 100644 +--- a/src/basic/random-util.h ++++ b/src/basic/random-util.h +@@ -21,7 +21,7 @@ static inline uint32_t random_u32(void) { + } + + /* Some limits on the pool sizes when we deal with the kernel random pool */ +-#define RANDOM_POOL_SIZE_MIN 32U ++#define RANDOM_POOL_SIZE_MIN 1024U + #define RANDOM_POOL_SIZE_MAX (10U*1024U*1024U) + + size_t random_pool_size(void); diff --git a/SOURCES/0100-ci-Mergify-fix-copy-paste-bug.patch b/SOURCES/0100-ci-Mergify-fix-copy-paste-bug.patch deleted file mode 100644 index b907dea..0000000 --- a/SOURCES/0100-ci-Mergify-fix-copy-paste-bug.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 14b8f663049a902aac962f9a522595df9db6b6bc Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Mon, 6 Jun 2022 15:39:22 +0200 -Subject: [PATCH] ci(Mergify): fix copy&paste bug - -RHEL-only - -Related: #2087652 ---- - .mergify.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.mergify.yml b/.mergify.yml -index c06e0fb1be..b7852b201c 100644 ---- a/.mergify.yml -+++ b/.mergify.yml -@@ -30,7 +30,7 @@ pull_request_rules: - - "-check-neutral=LGTM analysis: Python" - - and: - - "-check-success=LGTM analysis: C/C++" -- - "-check-neutral=LGTM analysis: Python" -+ - "-check-neutral=LGTM analysis: C/C++" - # Packit - - -check-success=rpm-build:centos-stream-9-aarch64 - - -check-success=rpm-build:centos-stream-9-x86_64 -@@ -66,7 +66,7 @@ pull_request_rules: - - "check-neutral=LGTM analysis: Python" - - or: - - "check-success=LGTM analysis: C/C++" -- - "check-neutral=LGTM analysis: Python" -+ - "check-neutral=LGTM analysis: C/C++" - # Packit - - check-success=rpm-build:centos-stream-9-aarch64 - - check-success=rpm-build:centos-stream-9-x86_64 diff --git a/SOURCES/0100-journal-don-t-enable-systemd-journald-audit.socket-b.patch b/SOURCES/0100-journal-don-t-enable-systemd-journald-audit.socket-b.patch new file mode 100644 index 0000000..19e8b1d --- /dev/null +++ b/SOURCES/0100-journal-don-t-enable-systemd-journald-audit.socket-b.patch @@ -0,0 +1,41 @@ +From 44740b947ed0b34ed9848dae276ec1d448340ce9 Mon Sep 17 00:00:00 2001 +From: Jan Synacek +Date: Thu, 2 May 2019 14:11:54 +0200 +Subject: [PATCH] journal: don't enable systemd-journald-audit.socket by + default + +RHEL-only + +Related: #2138081 +--- + units/meson.build | 3 +-- + units/systemd-journald.service.in | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/units/meson.build b/units/meson.build +index 25e9209b4d..b224701eb9 100644 +--- a/units/meson.build ++++ b/units/meson.build +@@ -123,8 +123,7 @@ units = [ + 'sysinit.target.wants/'], + ['systemd-journal-gatewayd.socket', 'ENABLE_REMOTE HAVE_MICROHTTPD'], + ['systemd-journal-remote.socket', 'ENABLE_REMOTE HAVE_MICROHTTPD'], +- ['systemd-journald-audit.socket', '', +- 'sockets.target.wants/'], ++ ['systemd-journald-audit.socket', ''], + ['systemd-journald-dev-log.socket', '', + 'sockets.target.wants/'], + ['systemd-journald.socket', '', +diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in +index 38ba3e2856..e8be031de5 100644 +--- a/units/systemd-journald.service.in ++++ b/units/systemd-journald.service.in +@@ -12,7 +12,7 @@ Description=Journal Service + Documentation=man:systemd-journald.service(8) man:journald.conf(5) + DefaultDependencies=no + Requires=systemd-journald.socket +-After=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket syslog.socket ++After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket + Before=sysinit.target + + # Mount and swap units need the journal socket units. If they were removed by diff --git a/SOURCES/0101-journald.conf-don-t-touch-current-audit-settings.patch b/SOURCES/0101-journald.conf-don-t-touch-current-audit-settings.patch new file mode 100644 index 0000000..d939bc2 --- /dev/null +++ b/SOURCES/0101-journald.conf-don-t-touch-current-audit-settings.patch @@ -0,0 +1,22 @@ +From 5222b89ef6f281f0a4eb55589d2d62e8e2b6352b Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 5 Aug 2021 15:26:13 +0200 +Subject: [PATCH] journald.conf: don't touch current audit settings + +RHEL-only + +Related: #2138081 +--- + src/journal/journald.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/journal/journald.conf b/src/journal/journald.conf +index 5a60a9d39c..3544da2112 100644 +--- a/src/journal/journald.conf ++++ b/src/journal/journald.conf +@@ -44,4 +44,4 @@ + #MaxLevelWall=emerg + #LineMax=48K + #ReadKMsg=yes +-#Audit=yes ++Audit= diff --git a/SOURCES/0101-shared-Fix-memory-leak-in-bus_append_execute_propert.patch b/SOURCES/0101-shared-Fix-memory-leak-in-bus_append_execute_propert.patch deleted file mode 100644 index 9b8fcce..0000000 --- a/SOURCES/0101-shared-Fix-memory-leak-in-bus_append_execute_propert.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 18b0bc42dc097af6147324deef100c41dedfa755 Mon Sep 17 00:00:00 2001 -From: Daan De Meyer -Date: Mon, 9 May 2022 09:50:32 +0200 -Subject: [PATCH] shared: Fix memory leak in bus_append_execute_property() - -Fixes #23317 - -(cherry picked from commit 2aaf6d407e8541985a15b7106abf6fbdfed0766a) -Related: #2087652 ---- - src/shared/bus-unit-util.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c -index dcce530c99..ef134bcee4 100644 ---- a/src/shared/bus-unit-util.c -+++ b/src/shared/bus-unit-util.c -@@ -1952,7 +1952,7 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con - path_simplify(source); - - if (isempty(destination)) { -- r = strv_extend(&sources, TAKE_PTR(source)); -+ r = strv_consume(&sources, TAKE_PTR(source)); - if (r < 0) - return bus_log_create_error(r); - } else { diff --git a/SOURCES/0102-Revert-udev-remove-WAIT_FOR-key.patch b/SOURCES/0102-Revert-udev-remove-WAIT_FOR-key.patch new file mode 100644 index 0000000..56a2dbb --- /dev/null +++ b/SOURCES/0102-Revert-udev-remove-WAIT_FOR-key.patch @@ -0,0 +1,137 @@ +From ddaf24341a512a9891226e85c13d51d7e2cfcb01 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 10 Aug 2021 14:46:16 +0200 +Subject: [PATCH] Revert "udev: remove WAIT_FOR key" + +This reverts commit f2b8052fb648b788936dd3e85be6a9aca90fbb2f. + +RHEL-only + +Related: #2138081 +--- + man/udev.xml | 9 +++++++ + src/udev/udev-rules.c | 56 +++++++++++++++++++++++++++++++++++++++ + test/rule-syntax-check.py | 2 +- + 3 files changed, 66 insertions(+), 1 deletion(-) + +diff --git a/man/udev.xml b/man/udev.xml +index 142f295f3e..5b096c7ef2 100644 +--- a/man/udev.xml ++++ b/man/udev.xml +@@ -592,6 +592,15 @@ + + + ++ ++ WAIT_FOR ++ ++ Wait for a file to become available or until a timeout of ++ 10 seconds expires. The path is relative to the sysfs device; ++ if no path is specified, this waits for an attribute to appear. ++ ++ ++ + + OPTIONS + +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c +index f44a174d1f..a8473041c3 100644 +--- a/src/udev/udev-rules.c ++++ b/src/udev/udev-rules.c +@@ -79,6 +79,7 @@ typedef enum { + TK_M_TAG, /* strv, sd_device_get_tag_first(), sd_device_get_tag_next() */ + TK_M_SUBSYSTEM, /* string, sd_device_get_subsystem() */ + TK_M_DRIVER, /* string, sd_device_get_driver() */ ++ TK_M_WAITFOR, + TK_M_ATTR, /* string, takes filename through attribute, sd_device_get_sysattr_value(), udev_resolve_subsys_kernel(), etc. */ + TK_M_SYSCTL, /* string, takes kernel parameter through attribute */ + +@@ -411,6 +412,47 @@ static void rule_line_append_token(UdevRuleLine *rule_line, UdevRuleToken *token + rule_line->current_token = token; + } + ++#define WAIT_LOOP_PER_SECOND 50 ++static int wait_for_file(sd_device *dev, const char *file, int timeout) { ++ char filepath[UDEV_PATH_SIZE]; ++ char devicepath[UDEV_PATH_SIZE]; ++ struct stat stats; ++ int loop = timeout * WAIT_LOOP_PER_SECOND; ++ ++ /* a relative path is a device attribute */ ++ devicepath[0] = '\0'; ++ if (file[0] != '/') { ++ const char *val; ++ int r; ++ ++ r = sd_device_get_syspath(dev, &val); ++ if (r < 0) ++ return r; ++ strscpyl(devicepath, sizeof(devicepath), val, NULL); ++ strscpyl(filepath, sizeof(filepath), devicepath, "/", file, NULL); ++ file = filepath; ++ } ++ ++ while (--loop) { ++ const struct timespec duration = { 0, 1000 * 1000 * 1000 / WAIT_LOOP_PER_SECOND }; ++ ++ /* lookup file */ ++ if (stat(file, &stats) == 0) { ++ log_debug("file '%s' appeared after %i loops", file, (timeout * WAIT_LOOP_PER_SECOND) - loop-1); ++ return 0; ++ } ++ /* make sure, the device did not disappear in the meantime */ ++ if (devicepath[0] != '\0' && stat(devicepath, &stats) != 0) { ++ log_debug("device disappeared while waiting for '%s'", file); ++ return -2; ++ } ++ log_debug("wait for '%s' for %i mseconds", file, 1000 / WAIT_LOOP_PER_SECOND); ++ nanosleep(&duration, NULL); ++ } ++ log_debug("waiting for '%s' failed", file); ++ return -1; ++} ++ + static int rule_line_add_token(UdevRuleLine *rule_line, UdevRuleTokenType type, UdevRuleOperatorType op, char *value, void *data) { + UdevRuleToken *token; + UdevRuleMatchType match_type = _MATCH_TYPE_INVALID; +@@ -953,6 +995,12 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp + r = rule_line_add_token(rule_line, TK_A_RUN_BUILTIN, op, value, UDEV_BUILTIN_CMD_TO_PTR(cmd)); + } else + return log_token_invalid_attr(rules, key); ++ } else if (streq(key, "WAIT_FOR") || streq(key, "WAIT_FOR_SYSFS")) { ++ if (op == OP_REMOVE) ++ return log_token_invalid_op(rules, key); ++ ++ rule_line_add_token(rule_line, TK_M_WAITFOR, 0, value, NULL); ++ return 1; + } else if (streq(key, "GOTO")) { + if (attr) + return log_token_invalid_attr(rules, key); +@@ -1670,6 +1718,14 @@ static int udev_rule_apply_token_to_event( + + return token_match_string(token, val); + } ++ case TK_M_WAITFOR: { ++ char filename[UDEV_PATH_SIZE]; ++ int found; ++ ++ udev_event_apply_format(event, token->value, filename, sizeof(filename), false, NULL); ++ found = (wait_for_file(event->dev, filename, 10) == 0); ++ return found || (token->op == OP_NOMATCH); ++ } + case TK_M_ATTR: + case TK_M_PARENTS_ATTR: + return token_match_attr(rules, token, dev, event); +diff --git a/test/rule-syntax-check.py b/test/rule-syntax-check.py +index ec1c75a854..5543931064 100755 +--- a/test/rule-syntax-check.py ++++ b/test/rule-syntax-check.py +@@ -18,7 +18,7 @@ no_args_tests = re.compile(r'(ACTION|DEVPATH|KERNELS?|NAME|SYMLINK|SUBSYSTEMS?|D + # PROGRAM can also be specified as an assignment. + program_assign = re.compile(r'PROGRAM\s*=\s*' + quoted_string_re + '$') + args_tests = re.compile(r'(ATTRS?|ENV|CONST|TEST){([a-zA-Z0-9/_.*%-]+)}\s*(?:=|!)=\s*' + quoted_string_re + '$') +-no_args_assign = re.compile(r'(NAME|SYMLINK|OWNER|GROUP|MODE|TAG|RUN|LABEL|GOTO|OPTIONS|IMPORT)\s*(?:\+=|:=|=)\s*' + quoted_string_re + '$') ++no_args_assign = re.compile(r'(NAME|SYMLINK|OWNER|GROUP|MODE|TAG|RUN|LABEL|GOTO|WAIT_FOR|OPTIONS|IMPORT)\s*(?:\+=|:=|=)\s*' + quoted_string_re + '$') + args_assign = re.compile(r'(ATTR|ENV|IMPORT|RUN){([a-zA-Z0-9/_.*%-]+)}\s*(=|\+=)\s*' + quoted_string_re + '$') + # Find comma-separated groups, but allow commas that are inside quoted strings. + # Using quoted_string_re + '?' so that strings missing the last double quote diff --git a/SOURCES/0102-fuzz-no-longer-skip-empty-files.patch b/SOURCES/0102-fuzz-no-longer-skip-empty-files.patch deleted file mode 100644 index b6f91c3..0000000 --- a/SOURCES/0102-fuzz-no-longer-skip-empty-files.patch +++ /dev/null @@ -1,187 +0,0 @@ -From 0235f9ea3d221aba513f4b6215418bf554e02791 Mon Sep 17 00:00:00 2001 -From: Evgeny Vereshchagin -Date: Mon, 3 Jan 2022 12:31:07 +0000 -Subject: [PATCH] fuzz: no longer skip empty files - -Empty files and empty strings seem to have triggered various -issues in the past so it seems they shouldn't be ignore by the -fuzzers just because fmemopen can't handle them. - -Prompted by https://github.com/systemd/systemd/pull/21939#issuecomment-1003113669 - -(cherry picked from commit 5df66d7d68006615abb4c4d3b1ebad545af4dd72) -Related: #2087652 ---- - src/core/fuzz-unit-file.c | 6 +----- - src/fuzz/fuzz-env-file.c | 5 ++--- - src/fuzz/fuzz-hostname-setup.c | 6 +----- - src/fuzz/fuzz-json.c | 6 +----- - src/fuzz/fuzz.h | 9 +++++++++ - src/nspawn/fuzz-nspawn-oci.c | 6 +----- - src/nspawn/fuzz-nspawn-settings.c | 6 +----- - 7 files changed, 16 insertions(+), 28 deletions(-) - -diff --git a/src/core/fuzz-unit-file.c b/src/core/fuzz-unit-file.c -index aef29f4cf7..780dd3988d 100644 ---- a/src/core/fuzz-unit-file.c -+++ b/src/core/fuzz-unit-file.c -@@ -2,7 +2,6 @@ - - #include "conf-parser.h" - #include "fd-util.h" --#include "fileio.h" - #include "fuzz.h" - #include "install.h" - #include "load-fragment.h" -@@ -22,10 +21,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - const char *name; - long offset; - -- if (size == 0) -- return 0; -- -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - if (read_line(f, LINE_MAX, &p) < 0) -diff --git a/src/fuzz/fuzz-env-file.c b/src/fuzz/fuzz-env-file.c -index e0dac260b0..3b3e625608 100644 ---- a/src/fuzz/fuzz-env-file.c -+++ b/src/fuzz/fuzz-env-file.c -@@ -4,7 +4,6 @@ - - #include "alloc-util.h" - #include "env-file.h" --#include "fileio.h" - #include "fd-util.h" - #include "fuzz.h" - #include "strv.h" -@@ -13,10 +12,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **rl = NULL, **rlp = NULL; - -- if (size == 0 || size > 65535) -+ if (size > 65535) - return 0; - -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - /* We don't want to fill the logs with messages about parse errors. -diff --git a/src/fuzz/fuzz-hostname-setup.c b/src/fuzz/fuzz-hostname-setup.c -index b8d36da54a..d7c23eef12 100644 ---- a/src/fuzz/fuzz-hostname-setup.c -+++ b/src/fuzz/fuzz-hostname-setup.c -@@ -2,7 +2,6 @@ - - #include "alloc-util.h" - #include "fd-util.h" --#include "fileio.h" - #include "fuzz.h" - #include "hostname-setup.h" - -@@ -10,10 +9,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *ret = NULL; - -- if (size == 0) -- return 0; -- -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - /* We don't want to fill the logs with messages about parse errors. -diff --git a/src/fuzz/fuzz-json.c b/src/fuzz/fuzz-json.c -index f9a0e818c4..ad7460c6fd 100644 ---- a/src/fuzz/fuzz-json.c -+++ b/src/fuzz/fuzz-json.c -@@ -1,7 +1,6 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" --#include "fileio.h" - #include "fd-util.h" - #include "fuzz.h" - #include "json.h" -@@ -12,10 +11,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - _cleanup_fclose_ FILE *f = NULL, *g = NULL; - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; - -- if (size == 0) -- return 0; -- -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - if (json_parse_file(f, NULL, 0, &v, NULL, NULL) < 0) -diff --git a/src/fuzz/fuzz.h b/src/fuzz/fuzz.h -index 579b0eed73..d7cbb0bb16 100644 ---- a/src/fuzz/fuzz.h -+++ b/src/fuzz/fuzz.h -@@ -4,5 +4,14 @@ - #include - #include - -+#include "fileio.h" -+ - /* The entry point into the fuzzer */ - int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); -+ -+static inline FILE* data_to_file(const uint8_t *data, size_t size) { -+ if (size == 0) -+ return fopen("/dev/null", "re"); -+ else -+ return fmemopen_unlocked((char*) data, size, "re"); -+} -diff --git a/src/nspawn/fuzz-nspawn-oci.c b/src/nspawn/fuzz-nspawn-oci.c -index cfebf65c00..91f2a81dfc 100644 ---- a/src/nspawn/fuzz-nspawn-oci.c -+++ b/src/nspawn/fuzz-nspawn-oci.c -@@ -2,7 +2,6 @@ - - #include "alloc-util.h" - #include "fd-util.h" --#include "fileio.h" - #include "fuzz.h" - #include "nspawn-oci.h" - -@@ -10,10 +9,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_(settings_freep) Settings *s = NULL; - -- if (size == 0) -- return 0; -- -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - /* We don't want to fill the logs with messages about parse errors. -diff --git a/src/nspawn/fuzz-nspawn-settings.c b/src/nspawn/fuzz-nspawn-settings.c -index bd98ed26e8..6b91e1506e 100644 ---- a/src/nspawn/fuzz-nspawn-settings.c -+++ b/src/nspawn/fuzz-nspawn-settings.c -@@ -2,7 +2,6 @@ - - #include "alloc-util.h" - #include "fd-util.h" --#include "fileio.h" - #include "fuzz.h" - #include "nspawn-settings.h" - -@@ -10,10 +9,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_(settings_freep) Settings *s = NULL; - -- if (size == 0) -- return 0; -- -- f = fmemopen_unlocked((char*) data, size, "re"); -+ f = data_to_file(data, size); - assert_se(f); - - /* We don't want to fill the logs with messages about parse errors. diff --git a/SOURCES/0103-Really-don-t-enable-systemd-journald-audit.socket.patch b/SOURCES/0103-Really-don-t-enable-systemd-journald-audit.socket.patch new file mode 100644 index 0000000..05c3ee0 --- /dev/null +++ b/SOURCES/0103-Really-don-t-enable-systemd-journald-audit.socket.patch @@ -0,0 +1,25 @@ +From e715ac2104707b6a8744fa54b1e4419a07ff88f6 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Wed, 25 Aug 2021 16:03:04 +0200 +Subject: [PATCH] Really don't enable systemd-journald-audit.socket + +RHEL-only + +Related: #2138081 +--- + units/systemd-journald.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in +index e8be031de5..ee8bdcb9ca 100644 +--- a/units/systemd-journald.service.in ++++ b/units/systemd-journald.service.in +@@ -38,7 +38,7 @@ RestrictRealtime=yes + RestrictSUIDSGID=yes + RuntimeDirectory=systemd/journal + RuntimeDirectoryPreserve=yes +-Sockets=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket ++Sockets=systemd-journald.socket systemd-journald-dev-log.socket + StandardOutput=null + SystemCallArchitectures=native + SystemCallErrorNumber=EPERM diff --git a/SOURCES/0103-networkctl-open-the-bus-just-once.patch b/SOURCES/0103-networkctl-open-the-bus-just-once.patch deleted file mode 100644 index d36d4d0..0000000 --- a/SOURCES/0103-networkctl-open-the-bus-just-once.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 3852f94de9582dc1acb44844579873cd0e2f3162 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 11 Jan 2022 15:12:42 +0100 -Subject: [PATCH] networkctl: open the bus just once - -We'd connect to the bus twice: the first time to check networkd namespace, -and then the second time to do the deed we were asked to do. It's nicer -to open the bus just once, for efficience and also to avoid the open call -in all functions. - -An ASSERT_PTR helper is added: -- sd_bus *bus = userdata; - ... -- assert(bus); -+ sd_bus *bus = ASSERT_PTR(userdata); - ... - -It can be used in other place too, but I'm leaving that for a later -refactoring. - -(cherry picked from commit d821e40ca96d2b14216f7a18e4512364bfb83628) -Related: #2087652 ---- - src/fundamental/macro-fundamental.h | 8 ++++ - src/network/networkctl.c | 74 ++++++++++------------------- - 2 files changed, 33 insertions(+), 49 deletions(-) - -diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h -index f87839d47b..d597c743bb 100644 ---- a/src/fundamental/macro-fundamental.h -+++ b/src/fundamental/macro-fundamental.h -@@ -66,6 +66,14 @@ - #define free(a) FreePool(a) - #endif - -+/* This passes the argument through after (if asserts are enabled) checking that it is not null. */ -+#define ASSERT_PTR(expr) \ -+ ({ \ -+ typeof(expr) _expr_ = (expr); \ -+ assert(_expr_); \ -+ _expr_; \ -+ }) -+ - #if defined(static_assert) - #define assert_cc(expr) \ - static_assert(expr, #expr) -diff --git a/src/network/networkctl.c b/src/network/networkctl.c -index 68dd4b185c..c35f851bdb 100644 ---- a/src/network/networkctl.c -+++ b/src/network/networkctl.c -@@ -79,17 +79,12 @@ static bool arg_full = false; - static unsigned arg_lines = 10; - static JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF; - --static int get_description(JsonVariant **ret) { -+static int get_description(sd_bus *bus, JsonVariant **ret) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - const char *text = NULL; - int r; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - r = bus_call_method(bus, bus_network_mgr, "Describe", &error, &reply, NULL); - if (r < 0) - return log_error_errno(r, "Failed to get description: %s", bus_error_message(&error, r)); -@@ -105,11 +100,11 @@ static int get_description(JsonVariant **ret) { - return 0; - } - --static int dump_manager_description(void) { -+static int dump_manager_description(sd_bus *bus) { - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; - int r; - -- r = get_description(&v); -+ r = get_description(bus, &v); - if (r < 0) - return r; - -@@ -117,14 +112,14 @@ static int dump_manager_description(void) { - return 0; - } - --static int dump_link_description(char **patterns) { -+static int dump_link_description(sd_bus *bus, char **patterns) { - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; - _cleanup_free_ bool *matched_patterns = NULL; - JsonVariant *i; - size_t c = 0; - int r; - -- r = get_description(&v); -+ r = get_description(bus, &v); - if (r < 0) - return r; - -@@ -790,6 +785,7 @@ static int acquire_link_info(sd_bus *bus, sd_netlink *rtnl, char **patterns, Lin - } - - static int list_links(int argc, char *argv[], void *userdata) { -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - _cleanup_(link_info_array_freep) LinkInfo *links = NULL; - _cleanup_(table_unrefp) Table *table = NULL; -@@ -798,9 +794,9 @@ static int list_links(int argc, char *argv[], void *userdata) { - - if (arg_json_format_flags != JSON_FORMAT_OFF) { - if (arg_all || argc <= 1) -- return dump_manager_description(); -+ return dump_manager_description(bus); - else -- return dump_link_description(strv_skip(argv, 1)); -+ return dump_link_description(bus, strv_skip(argv, 1)); - } - - r = sd_netlink_open(&rtnl); -@@ -2383,7 +2379,7 @@ static int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) { - } - - static int link_status(int argc, char *argv[], void *userdata) { -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; - _cleanup_(link_info_array_freep) LinkInfo *links = NULL; -@@ -2391,17 +2387,13 @@ static int link_status(int argc, char *argv[], void *userdata) { - - if (arg_json_format_flags != JSON_FORMAT_OFF) { - if (arg_all || argc <= 1) -- return dump_manager_description(); -+ return dump_manager_description(bus); - else -- return dump_link_description(strv_skip(argv, 1)); -+ return dump_link_description(bus, strv_skip(argv, 1)); - } - - pager_open(arg_pager_flags); - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - r = sd_netlink_open(&rtnl); - if (r < 0) - return log_error_errno(r, "Failed to connect to netlink: %m"); -@@ -2738,14 +2730,10 @@ static int link_renew_one(sd_bus *bus, int index, const char *name) { - } - - static int link_renew(int argc, char *argv[], void *userdata) { -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - int index, k = 0, r; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - for (int i = 1; i < argc; i++) { - index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]); - if (index < 0) -@@ -2772,14 +2760,10 @@ static int link_force_renew_one(sd_bus *bus, int index, const char *name) { - } - - static int link_force_renew(int argc, char *argv[], void *userdata) { -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - int k = 0, r; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - for (int i = 1; i < argc; i++) { - int index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]); - if (index < 0) -@@ -2794,14 +2778,10 @@ static int link_force_renew(int argc, char *argv[], void *userdata) { - } - - static int verb_reload(int argc, char *argv[], void *userdata) { -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - r = bus_call_method(bus, bus_network_mgr, "Reload", &error, NULL, NULL); - if (r < 0) - return log_error_errno(r, "Failed to reload network settings: %m"); -@@ -2810,17 +2790,13 @@ static int verb_reload(int argc, char *argv[], void *userdata) { - } - - static int verb_reconfigure(int argc, char *argv[], void *userdata) { -+ sd_bus *bus = ASSERT_PTR(userdata); - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - _cleanup_set_free_ Set *indexes = NULL; - int index, r; - void *p; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - indexes = set_new(NULL); - if (!indexes) - return log_oom(); -@@ -2968,7 +2944,7 @@ static int parse_argv(int argc, char *argv[]) { - return 1; - } - --static int networkctl_main(int argc, char *argv[]) { -+static int networkctl_main(sd_bus *bus, int argc, char *argv[]) { - static const Verb verbs[] = { - { "list", VERB_ANY, VERB_ANY, VERB_DEFAULT, list_links }, - { "status", VERB_ANY, VERB_ANY, 0, link_status }, -@@ -2984,20 +2960,15 @@ static int networkctl_main(int argc, char *argv[]) { - {} - }; - -- return dispatch_verb(argc, argv, verbs, NULL); -+ return dispatch_verb(argc, argv, verbs, bus); - } - --static int check_netns_match(void) { -+static int check_netns_match(sd_bus *bus) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - struct stat st; - uint64_t id; - int r; - -- r = sd_bus_open_system(&bus); -- if (r < 0) -- return log_error_errno(r, "Failed to connect system bus: %m"); -- - r = sd_bus_get_property_trivial( - bus, - "org.freedesktop.network1", -@@ -3035,6 +3006,7 @@ static void warn_networkd_missing(void) { - } - - static int run(int argc, char* argv[]) { -+ _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r; - - log_setup(); -@@ -3043,13 +3015,17 @@ static int run(int argc, char* argv[]) { - if (r <= 0) - return r; - -- r = check_netns_match(); -+ r = sd_bus_open_system(&bus); -+ if (r < 0) -+ return log_error_errno(r, "Failed to connect system bus: %m"); -+ -+ r = check_netns_match(bus); - if (r < 0) - return r; - - warn_networkd_missing(); - -- return networkctl_main(argc, argv); -+ return networkctl_main(bus, argc, argv); - } - - DEFINE_MAIN_FUNCTION(run); diff --git a/SOURCES/0104-json-align-table.patch b/SOURCES/0104-json-align-table.patch deleted file mode 100644 index d058681..0000000 --- a/SOURCES/0104-json-align-table.patch +++ /dev/null @@ -1,55 +0,0 @@ -From ee588179205de7c1584bd45bd22ec59028f11405 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 10:24:36 +0200 -Subject: [PATCH] json: align table - -(cherry picked from commit 9674b089cfb1f75653579e83735e049ddcbbed7e) -Related: #2087652 ---- - src/shared/json.c | 18 ++++++++---------- - 1 file changed, 8 insertions(+), 10 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index dff95eda26..6375b87a0b 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -4754,7 +4754,6 @@ bool json_variant_is_sorted(JsonVariant *v) { - } - - int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size) { -- - if (!json_variant_is_string(v)) - return -EINVAL; - -@@ -4762,7 +4761,6 @@ int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size) { - } - - int json_variant_unhex(JsonVariant *v, void **ret, size_t *ret_size) { -- - if (!json_variant_is_string(v)) - return -EINVAL; - -@@ -4770,15 +4768,15 @@ int json_variant_unhex(JsonVariant *v, void **ret, size_t *ret_size) { - } - - static const char* const json_variant_type_table[_JSON_VARIANT_TYPE_MAX] = { -- [JSON_VARIANT_STRING] = "string", -- [JSON_VARIANT_INTEGER] = "integer", -+ [JSON_VARIANT_STRING] = "string", -+ [JSON_VARIANT_INTEGER] = "integer", - [JSON_VARIANT_UNSIGNED] = "unsigned", -- [JSON_VARIANT_REAL] = "real", -- [JSON_VARIANT_NUMBER] = "number", -- [JSON_VARIANT_BOOLEAN] = "boolean", -- [JSON_VARIANT_ARRAY] = "array", -- [JSON_VARIANT_OBJECT] = "object", -- [JSON_VARIANT_NULL] = "null", -+ [JSON_VARIANT_REAL] = "real", -+ [JSON_VARIANT_NUMBER] = "number", -+ [JSON_VARIANT_BOOLEAN] = "boolean", -+ [JSON_VARIANT_ARRAY] = "array", -+ [JSON_VARIANT_OBJECT] = "object", -+ [JSON_VARIANT_NULL] = "null", - }; - - DEFINE_STRING_TABLE_LOOKUP(json_variant_type, JsonVariantType); diff --git a/SOURCES/0104-rules-add-elevator-kernel-command-line-parameter.patch b/SOURCES/0104-rules-add-elevator-kernel-command-line-parameter.patch new file mode 100644 index 0000000..8ead8b8 --- /dev/null +++ b/SOURCES/0104-rules-add-elevator-kernel-command-line-parameter.patch @@ -0,0 +1,58 @@ +From 9ffd83c333bdc7741bfa1a73b3461f1b51208c5f Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Tue, 12 Feb 2019 16:58:16 +0100 +Subject: [PATCH] rules: add elevator= kernel command line parameter + +Kernel removed the elevator= option, so let's reintroduce +it for rhel8 via udev rule. + +RHEL-only + +Related: #2138081 +--- + rules.d/40-elevator.rules | 20 ++++++++++++++++++++ + rules.d/meson.build | 3 ++- + 2 files changed, 22 insertions(+), 1 deletion(-) + create mode 100644 rules.d/40-elevator.rules + +diff --git a/rules.d/40-elevator.rules b/rules.d/40-elevator.rules +new file mode 100644 +index 0000000000..dbe8fc81a4 +--- /dev/null ++++ b/rules.d/40-elevator.rules +@@ -0,0 +1,20 @@ ++# We aren't adding devices skip the elevator check ++ACTION!="add", GOTO="sched_out" ++ ++SUBSYSTEM!="block", GOTO="sched_out" ++ENV{DEVTYPE}!="disk", GOTO="sched_out" ++ ++# Technically, dm-multipath can be configured to use an I/O scheduler. ++# However, there are races between the 'add' uevent and the linking in ++# of the queue/scheduler sysfs file. For now, just skip dm- devices. ++KERNEL=="dm-*|md*", GOTO="sched_out" ++ ++# Skip bio-based devices, which don't support an I/O scheduler. ++ATTR{queue/scheduler}=="none", GOTO="sched_out" ++ ++# If elevator= is specified on the kernel command line, change the ++# scheduler to the one specified. ++IMPORT{cmdline}="elevator" ++ENV{elevator}!="", ATTR{queue/scheduler}="$env{elevator}" ++ ++LABEL="sched_out" +\ No newline at end of file +diff --git a/rules.d/meson.build b/rules.d/meson.build +index 70f48e877b..4e88400d02 100644 +--- a/rules.d/meson.build ++++ b/rules.d/meson.build +@@ -5,7 +5,8 @@ install_data( + install_dir : udevrulesdir) + + rules = [ +- [files('40-redhat.rules', ++ [files('40-elevator.rules', ++ '40-redhat.rules', + '60-autosuspend.rules', + '60-block.rules', + '60-cdrom_id.rules', diff --git a/SOURCES/0105-fuzz-json-optionally-allow-logging-and-output.patch b/SOURCES/0105-fuzz-json-optionally-allow-logging-and-output.patch deleted file mode 100644 index c3e3f22..0000000 --- a/SOURCES/0105-fuzz-json-optionally-allow-logging-and-output.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 3087505025b78b80951ab3a5f496eb255f1a9a21 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 10:41:36 +0200 -Subject: [PATCH] fuzz-json: optionally allow logging and output -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Similarly to other fuzzers… this makes development easier. - -(cherry picked from commit 9ad955ce40e244a52984c68ae2a6b151d918b4a8) -Related: #2087652 ---- - src/fuzz/fuzz-json.c | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) - -diff --git a/src/fuzz/fuzz-json.c b/src/fuzz/fuzz-json.c -index ad7460c6fd..648a6d441d 100644 ---- a/src/fuzz/fuzz-json.c -+++ b/src/fuzz/fuzz-json.c -@@ -1,6 +1,7 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" -+#include "env-util.h" - #include "fd-util.h" - #include "fuzz.h" - #include "json.h" -@@ -10,18 +11,26 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - size_t out_size; - _cleanup_fclose_ FILE *f = NULL, *g = NULL; - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; -+ int r; -+ -+ /* Disable most logging if not running standalone */ -+ if (!getenv("SYSTEMD_LOG_LEVEL")) -+ log_set_max_level(LOG_CRIT); - - f = data_to_file(data, size); - assert_se(f); - -- if (json_parse_file(f, NULL, 0, &v, NULL, NULL) < 0) -+ r = json_parse_file(f, NULL, 0, &v, NULL, NULL); -+ if (r < 0) { -+ log_debug_errno(r, "failed to parse input: %m"); - return 0; -+ } - -- g = open_memstream_unlocked(&out, &out_size); -- assert_se(g); -+ if (getenv_bool("SYSTEMD_FUZZ_OUTPUT") <= 0) -+ assert_se(g = open_memstream_unlocked(&out, &out_size)); - -- json_variant_dump(v, 0, g, NULL); -- json_variant_dump(v, JSON_FORMAT_PRETTY|JSON_FORMAT_COLOR|JSON_FORMAT_SOURCE, g, NULL); -+ json_variant_dump(v, 0, g ?: stdout, NULL); -+ json_variant_dump(v, JSON_FORMAT_PRETTY|JSON_FORMAT_COLOR|JSON_FORMAT_SOURCE, g ?: stdout, NULL); - - return 0; - } diff --git a/SOURCES/0105-units-don-t-enable-tmp.mount-statically-in-local-fs..patch b/SOURCES/0105-units-don-t-enable-tmp.mount-statically-in-local-fs..patch new file mode 100644 index 0000000..bf998d7 --- /dev/null +++ b/SOURCES/0105-units-don-t-enable-tmp.mount-statically-in-local-fs..patch @@ -0,0 +1,26 @@ +From 19524651b38a0db99447ca5df181d69240d75d47 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Wed, 22 Sep 2021 14:38:00 +0200 +Subject: [PATCH] units: don't enable tmp.mount statically in local-fs.target + +RHEL-only + +Related: #2138081 +--- + units/meson.build | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/units/meson.build b/units/meson.build +index b224701eb9..eae7394731 100644 +--- a/units/meson.build ++++ b/units/meson.build +@@ -160,8 +160,7 @@ units = [ + ['time-set.target', ''], + ['time-sync.target', ''], + ['timers.target', ''], +- ['tmp.mount', '', +- 'local-fs.target.wants/'], ++ ['tmp.mount', ''], + ['umount.target', ''], + ['usb-gadget.target', ''], + ['user.slice', ''], diff --git a/SOURCES/0106-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch b/SOURCES/0106-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch new file mode 100644 index 0000000..47d4bbe --- /dev/null +++ b/SOURCES/0106-pid1-bump-DefaultTasksMax-to-80-of-the-kernel-pid.ma.patch @@ -0,0 +1,59 @@ +From 6e6aaec20c62887fa5c5c4bf47a9c2238f8f027f Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Wed, 1 Aug 2018 13:19:39 +0200 +Subject: [PATCH] pid1: bump DefaultTasksMax to 80% of the kernel pid.max value + +This should be hopefully high enough even for the very big deployments. + +RHEL-only + +Related: #2138081 +--- + man/systemd-system.conf.xml | 4 ++-- + src/core/main.c | 2 +- + src/core/system.conf.in | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml +index ac21c31d9a..00de04d426 100644 +--- a/man/systemd-system.conf.xml ++++ b/man/systemd-system.conf.xml +@@ -461,10 +461,10 @@ + Configure the default value for the per-unit TasksMax= setting. See + systemd.resource-control5 + for details. This setting applies to all unit types that support resource control settings, with the exception +- of slice units. Defaults to 15% of the minimum of kernel.pid_max=, kernel.threads-max= ++ of slice units. Defaults to 80% of the minimum of kernel.pid_max=, kernel.threads-max= + and root cgroup pids.max. + Kernel has a default value for kernel.pid_max= and an algorithm of counting in case of more than 32 cores. +- For example with the default kernel.pid_max=, DefaultTasksMax= defaults to 4915, ++ For example with the default kernel.pid_max=, DefaultTasksMax= defaults to 26214, + but might be greater in other systems or smaller in OS containers. + + +diff --git a/src/core/main.c b/src/core/main.c +index 14a4f81452..d3ec526e7e 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -100,7 +100,7 @@ + #include + #endif + +-#define DEFAULT_TASKS_MAX ((TasksMax) { 15U, 100U }) /* 15% */ ++#define DEFAULT_TASKS_MAX ((TasksMax) { 80U, 100U }) /* 80% */ + + static enum { + ACTION_RUN, +diff --git a/src/core/system.conf.in b/src/core/system.conf.in +index 71a5869ec0..5d1f6d24f0 100644 +--- a/src/core/system.conf.in ++++ b/src/core/system.conf.in +@@ -56,7 +56,7 @@ + #DefaultIPAccounting=no + #DefaultMemoryAccounting={{ 'yes' if MEMORY_ACCOUNTING_DEFAULT else 'no' }} + #DefaultTasksAccounting=yes +-#DefaultTasksMax=15% ++#DefaultTasksMax=80% + #DefaultLimitCPU= + #DefaultLimitFSIZE= + #DefaultLimitDATA= diff --git a/SOURCES/0106-shared-json-reduce-scope-of-variables.patch b/SOURCES/0106-shared-json-reduce-scope-of-variables.patch deleted file mode 100644 index f9f2214..0000000 --- a/SOURCES/0106-shared-json-reduce-scope-of-variables.patch +++ /dev/null @@ -1,435 +0,0 @@ -From 272d6e85877bb436709ed54c02d3b68101e0438d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 11:01:32 +0200 -Subject: [PATCH] shared/json: reduce scope of variables - -(cherry picked from commit a4669764f7329d1e8a3d364db519500355cea5f0) -Related: #2087652 ---- - src/shared/json.c | 133 +++++++++++++++++++--------------------------- - 1 file changed, 54 insertions(+), 79 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index 6375b87a0b..d35874f8e3 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -574,9 +574,6 @@ int json_variant_new_array(JsonVariant **ret, JsonVariant **array, size_t n) { - } - - int json_variant_new_array_bytes(JsonVariant **ret, const void *p, size_t n) { -- JsonVariant *v; -- size_t i; -- - assert_return(ret, -EINVAL); - if (n == 0) { - *ret = JSON_VARIANT_MAGIC_EMPTY_ARRAY; -@@ -584,7 +581,7 @@ int json_variant_new_array_bytes(JsonVariant **ret, const void *p, size_t n) { - } - assert_return(p, -EINVAL); - -- v = new(JsonVariant, n + 1); -+ JsonVariant *v = new(JsonVariant, n + 1); - if (!v) - return -ENOMEM; - -@@ -595,7 +592,7 @@ int json_variant_new_array_bytes(JsonVariant **ret, const void *p, size_t n) { - .depth = 1, - }; - -- for (i = 0; i < n; i++) { -+ for (size_t i = 0; i < n; i++) { - JsonVariant *w = v + 1 + i; - - *w = (JsonVariant) { -@@ -790,12 +787,9 @@ static void json_variant_free_inner(JsonVariant *v, bool force_sensitive) { - return; - } - -- if (IN_SET(v->type, JSON_VARIANT_ARRAY, JSON_VARIANT_OBJECT)) { -- size_t i; -- -- for (i = 0; i < v->n_elements; i++) -+ if (IN_SET(v->type, JSON_VARIANT_ARRAY, JSON_VARIANT_OBJECT)) -+ for (size_t i = 0; i < v->n_elements; i++) - json_variant_free_inner(v + 1 + i, sensitive); -- } - - if (sensitive) - explicit_bzero_safe(v, json_variant_size(v)); -@@ -839,11 +833,9 @@ JsonVariant *json_variant_unref(JsonVariant *v) { - } - - void json_variant_unref_many(JsonVariant **array, size_t n) { -- size_t i; -- - assert(array || n == 0); - -- for (i = 0; i < n; i++) -+ for (size_t i = 0; i < n; i++) - json_variant_unref(array[i]); - } - -@@ -1218,8 +1210,6 @@ mismatch: - } - - JsonVariant *json_variant_by_key_full(JsonVariant *v, const char *key, JsonVariant **ret_key) { -- size_t i; -- - if (!v) - goto not_found; - if (!key) -@@ -1241,6 +1231,7 @@ JsonVariant *json_variant_by_key_full(JsonVariant *v, const char *key, JsonVaria - while (b > a) { - JsonVariant *p; - const char *f; -+ size_t i; - int c; - - i = (a + b) / 2; -@@ -1264,7 +1255,7 @@ JsonVariant *json_variant_by_key_full(JsonVariant *v, const char *key, JsonVaria - } - - /* The variant is not sorted, hence search for the field linearly */ -- for (i = 0; i < v->n_elements; i += 2) { -+ for (size_t i = 0; i < v->n_elements; i += 2) { - JsonVariant *p; - - p = json_variant_dereference(v + 1 + i); -@@ -1335,34 +1326,28 @@ bool json_variant_equal(JsonVariant *a, JsonVariant *b) { - return true; - - case JSON_VARIANT_ARRAY: { -- size_t i, n; -- -- n = json_variant_elements(a); -+ size_t n = json_variant_elements(a); - if (n != json_variant_elements(b)) - return false; - -- for (i = 0; i < n; i++) { -+ for (size_t i = 0; i < n; i++) - if (!json_variant_equal(json_variant_by_index(a, i), json_variant_by_index(b, i))) - return false; -- } - - return true; - } - - case JSON_VARIANT_OBJECT: { -- size_t i, n; -- -- n = json_variant_elements(a); -+ size_t n = json_variant_elements(a); - if (n != json_variant_elements(b)) - return false; - - /* Iterate through all keys in 'a' */ -- for (i = 0; i < n; i += 2) { -+ for (size_t i = 0; i < n; i += 2) { - bool found = false; -- size_t j; - - /* Match them against all keys in 'b' */ -- for (j = 0; j < n; j += 2) { -+ for (size_t j = 0; j < n; j += 2) { - JsonVariant *key_b; - - key_b = json_variant_by_index(b, j); -@@ -1470,16 +1455,14 @@ static int print_source(FILE *f, JsonVariant *v, JsonFormatFlags flags, bool whi - DECIMAL_STR_MAX(unsigned) -1; - - if (whitespace) { -- size_t i, n; -- -- n = 1 + (v->source ? strlen(v->source->name) : 0) + -- ((v->source && (v->line > 0 || v->column > 0)) ? 1 : 0) + -- (v->line > 0 ? w : 0) + -- (((v->source || v->line > 0) && v->column > 0) ? 1 : 0) + -- (v->column > 0 ? k : 0) + -- 2; -- -- for (i = 0; i < n; i++) -+ size_t n = 1 + (v->source ? strlen(v->source->name) : 0) + -+ ((v->source && (v->line > 0 || v->column > 0)) ? 1 : 0) + -+ (v->line > 0 ? w : 0) + -+ (((v->source || v->line > 0) && v->column > 0) ? 1 : 0) + -+ (v->column > 0 ? k : 0) + -+ 2; -+ -+ for (size_t i = 0; i < n; i++) - fputc(' ', f); - } else { - fputc('[', f); -@@ -1631,10 +1614,7 @@ static int json_format(FILE *f, JsonVariant *v, JsonFormatFlags flags, const cha - break; - - case JSON_VARIANT_ARRAY: { -- size_t i, n; -- -- n = json_variant_elements(v); -- -+ size_t n = json_variant_elements(v); - if (n == 0) - fputs("[]", f); - else { -@@ -1653,7 +1633,7 @@ static int json_format(FILE *f, JsonVariant *v, JsonFormatFlags flags, const cha - fputc('[', f); - } - -- for (i = 0; i < n; i++) { -+ for (size_t i = 0; i < n; i++) { - JsonVariant *e; - - assert_se(e = json_variant_by_index(v, i)); -@@ -1687,10 +1667,7 @@ static int json_format(FILE *f, JsonVariant *v, JsonFormatFlags flags, const cha - } - - case JSON_VARIANT_OBJECT: { -- size_t i, n; -- -- n = json_variant_elements(v); -- -+ size_t n = json_variant_elements(v); - if (n == 0) - fputs("{}", f); - else { -@@ -1709,7 +1686,7 @@ static int json_format(FILE *f, JsonVariant *v, JsonFormatFlags flags, const cha - fputc('{', f); - } - -- for (i = 0; i < n; i += 2) { -+ for (size_t i = 0; i < n; i += 2) { - JsonVariant *e; - - e = json_variant_by_index(v, i); -@@ -1826,7 +1803,7 @@ void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const cha - int json_variant_filter(JsonVariant **v, char **to_remove) { - _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; - _cleanup_free_ JsonVariant **array = NULL; -- size_t i, n = 0, k = 0; -+ size_t n = 0, k = 0; - int r; - - assert(v); -@@ -1839,7 +1816,7 @@ int json_variant_filter(JsonVariant **v, char **to_remove) { - if (strv_isempty(to_remove)) - return 0; - -- for (i = 0; i < json_variant_elements(*v); i += 2) { -+ for (size_t i = 0; i < json_variant_elements(*v); i += 2) { - JsonVariant *p; - - p = json_variant_by_index(*v, i); -@@ -1881,7 +1858,7 @@ int json_variant_filter(JsonVariant **v, char **to_remove) { - int json_variant_set_field(JsonVariant **v, const char *field, JsonVariant *value) { - _cleanup_(json_variant_unrefp) JsonVariant *field_variant = NULL, *w = NULL; - _cleanup_free_ JsonVariant **array = NULL; -- size_t i, k = 0; -+ size_t k = 0; - int r; - - assert(v); -@@ -1896,7 +1873,7 @@ int json_variant_set_field(JsonVariant **v, const char *field, JsonVariant *valu - if (!json_variant_is_object(*v)) - return -EINVAL; - -- for (i = 0; i < json_variant_elements(*v); i += 2) { -+ for (size_t i = 0; i < json_variant_elements(*v); i += 2) { - JsonVariant *p; - - p = json_variant_by_index(*v, i); -@@ -2007,7 +1984,7 @@ int json_variant_set_field_strv(JsonVariant **v, const char *field, char **l) { - int json_variant_merge(JsonVariant **v, JsonVariant *m) { - _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; - _cleanup_free_ JsonVariant **array = NULL; -- size_t v_elements, m_elements, i, k; -+ size_t v_elements, m_elements, k; - bool v_blank, m_blank; - int r; - -@@ -2040,7 +2017,7 @@ int json_variant_merge(JsonVariant **v, JsonVariant *m) { - return -ENOMEM; - - k = 0; -- for (i = 0; i < v_elements; i += 2) { -+ for (size_t i = 0; i < v_elements; i += 2) { - JsonVariant *u; - - u = json_variant_by_index(*v, i); -@@ -2054,7 +2031,7 @@ int json_variant_merge(JsonVariant **v, JsonVariant *m) { - array[k++] = json_variant_by_index(*v, i + 1); - } - -- for (i = 0; i < m_elements; i++) -+ for (size_t i = 0; i < m_elements; i++) - array[k++] = json_variant_by_index(m, i); - - r = json_variant_new_object(&w, array, k); -@@ -2089,19 +2066,17 @@ int json_variant_append_array(JsonVariant **v, JsonVariant *element) { - if (blank) - r = json_variant_new_array(&nv, (JsonVariant*[]) { element }, 1); - else { -- _cleanup_free_ JsonVariant **array = NULL; -- size_t i; -- -- array = new(JsonVariant*, json_variant_elements(*v) + 1); -+ _cleanup_free_ JsonVariant **array = new(JsonVariant*, json_variant_elements(*v) + 1); - if (!array) - return -ENOMEM; - -- for (i = 0; i < json_variant_elements(*v); i++) -+ size_t size = json_variant_elements(*v); -+ for (size_t i = 0; i < size; i++) - array[i] = json_variant_by_index(*v, i); - -- array[i] = element; -+ array[size] = element; - -- r = json_variant_new_array(&nv, array, i + 1); -+ r = json_variant_new_array(&nv, array, size + 1); - } - if (r < 0) - return r; -@@ -2116,7 +2091,6 @@ int json_variant_append_array(JsonVariant **v, JsonVariant *element) { - - int json_variant_strv(JsonVariant *v, char ***ret) { - char **l = NULL; -- size_t n, i; - bool sensitive; - int r; - -@@ -2136,12 +2110,12 @@ int json_variant_strv(JsonVariant *v, char ***ret) { - - sensitive = v->sensitive; - -- n = json_variant_elements(v); -+ size_t n = json_variant_elements(v); - l = new(char*, n+1); - if (!l) - return -ENOMEM; - -- for (i = 0; i < n; i++) { -+ for (size_t i = 0; i < n; i++) { - JsonVariant *e; - - assert_se(e = json_variant_by_index(v, i)); -@@ -2160,7 +2134,7 @@ int json_variant_strv(JsonVariant *v, char ***ret) { - } - } - -- l[i] = NULL; -+ l[n] = NULL; - *ret = TAKE_PTR(l); - - return 0; -@@ -2847,7 +2821,7 @@ static int json_parse_internal( - unsigned *column, - bool continue_end) { - -- size_t n_stack = 1, i; -+ size_t n_stack = 1; - unsigned line_buffer = 0, column_buffer = 0; - void *tokenizer_state = NULL; - JsonStack *stack = NULL; -@@ -3186,7 +3160,7 @@ done: - r = 0; - - finish: -- for (i = 0; i < n_stack; i++) -+ for (size_t i = 0; i < n_stack; i++) - json_stack_release(stack + i); - - free(stack); -@@ -3229,7 +3203,7 @@ int json_parse_file_at(FILE *f, int dir_fd, const char *path, JsonParseFlags fla - - int json_buildv(JsonVariant **ret, va_list ap) { - JsonStack *stack = NULL; -- size_t n_stack = 1, i; -+ size_t n_stack = 1; - int r; - - assert_return(ret, -EINVAL); -@@ -4147,7 +4121,7 @@ done: - r = 0; - - finish: -- for (i = 0; i < n_stack; i++) -+ for (size_t i = 0; i < n_stack; i++) - json_stack_release(stack + i); - - free(stack); -@@ -4231,8 +4205,7 @@ int json_log_internal( - } - - int json_dispatch(JsonVariant *v, const JsonDispatch table[], JsonDispatchCallback bad, JsonDispatchFlags flags, void *userdata) { -- const JsonDispatch *p; -- size_t i, n, m; -+ size_t m; - int r, done = 0; - bool *found; - -@@ -4245,14 +4218,16 @@ int json_dispatch(JsonVariant *v, const JsonDispatch table[], JsonDispatchCallba - return -EINVAL; - } - -- for (p = table, m = 0; p->name; p++) -+ m = 0; -+ for (const JsonDispatch *p = table; p->name; p++) - m++; - - found = newa0(bool, m); - -- n = json_variant_elements(v); -- for (i = 0; i < n; i += 2) { -+ size_t n = json_variant_elements(v); -+ for (size_t i = 0; i < n; i += 2) { - JsonVariant *key, *value; -+ const JsonDispatch *p; - - assert_se(key = json_variant_by_index(v, i)); - assert_se(value = json_variant_by_index(v, i+1)); -@@ -4326,7 +4301,7 @@ int json_dispatch(JsonVariant *v, const JsonDispatch table[], JsonDispatchCallba - } - } - -- for (p = table; p->name; p++) { -+ for (const JsonDispatch *p = table; p->name; p++) { - JsonDispatchFlags merged_flags = p->flags | flags; - - if ((merged_flags & JSON_MANDATORY) && !found[p-table]) { -@@ -4621,7 +4596,7 @@ static int json_cmp_strings(const void *x, const void *y) { - int json_variant_sort(JsonVariant **v) { - _cleanup_free_ JsonVariant **a = NULL; - JsonVariant *n = NULL; -- size_t i, m; -+ size_t m; - int r; - - assert(v); -@@ -4639,7 +4614,7 @@ int json_variant_sort(JsonVariant **v) { - if (!a) - return -ENOMEM; - -- for (i = 0; i < m; i++) -+ for (size_t i = 0; i < m; i++) - a[i] = json_variant_by_index(*v, i); - - qsort(a, m/2, sizeof(JsonVariant*)*2, json_cmp_strings); -@@ -4662,7 +4637,7 @@ int json_variant_sort(JsonVariant **v) { - int json_variant_normalize(JsonVariant **v) { - _cleanup_free_ JsonVariant **a = NULL; - JsonVariant *n = NULL; -- size_t i, j, m; -+ size_t i, m; - int r; - - assert(v); -@@ -4714,7 +4689,7 @@ int json_variant_normalize(JsonVariant **v) { - r = 1; - - finish: -- for (j = 0; j < i; j++) -+ for (size_t j = 0; j < i; j++) - json_variant_unref(a[j]); - - return r; diff --git a/SOURCES/0107-fuzz-json-also-do-sorting-and-normalizing-and-other-.patch b/SOURCES/0107-fuzz-json-also-do-sorting-and-normalizing-and-other-.patch deleted file mode 100644 index 10a1b24..0000000 --- a/SOURCES/0107-fuzz-json-also-do-sorting-and-normalizing-and-other-.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 495eb07a2d8aa7f19b775b4508466fecb1b3ce50 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 11:07:06 +0200 -Subject: [PATCH] fuzz-json: also do sorting and normalizing and other easy - calls - -(cherry picked from commit a2c5735dd80e19d2d525f9be322395530096cbe2) -Related: #2087652 ---- - src/fuzz/fuzz-json.c | 75 ++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 75 insertions(+) - -diff --git a/src/fuzz/fuzz-json.c b/src/fuzz/fuzz-json.c -index 648a6d441d..995a0265ba 100644 ---- a/src/fuzz/fuzz-json.c -+++ b/src/fuzz/fuzz-json.c -@@ -32,5 +32,80 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - json_variant_dump(v, 0, g ?: stdout, NULL); - json_variant_dump(v, JSON_FORMAT_PRETTY|JSON_FORMAT_COLOR|JSON_FORMAT_SOURCE, g ?: stdout, NULL); - -+ bool sorted = json_variant_is_sorted(v); -+ log_debug("json_variant_is_sorted: %s", yes_no(sorted)); -+ -+ r = json_variant_sort(&v); -+ log_debug_errno(r, "json_variant_sort: %d/%m", r); -+ -+ sorted = json_variant_is_sorted(v); -+ log_debug("json_variant_is_sorted: %s", yes_no(sorted)); -+ assert_se(r < 0 || sorted); -+ -+ bool normalized = json_variant_is_normalized(v); -+ log_debug("json_variant_is_normalized: %s", yes_no(normalized)); -+ -+ r = json_variant_normalize(&v); -+ log_debug_errno(r, "json_variant_normalize: %d/%m", r); -+ -+ normalized = json_variant_is_normalized(v); -+ log_debug("json_variant_is_normalized: %s", yes_no(normalized)); -+ assert_se(r < 0 || normalized); -+ -+ double real = json_variant_real(v); -+ log_debug("json_variant_real: %lf", real); -+ -+ bool negative = json_variant_is_negative(v); -+ log_debug("json_variant_is_negative: %s", yes_no(negative)); -+ -+ bool blank = json_variant_is_blank_object(v); -+ log_debug("json_variant_is_blank_object: %s", yes_no(blank)); -+ -+ blank = json_variant_is_blank_array(v); -+ log_debug("json_variant_is_blank_array: %s", yes_no(blank)); -+ -+ size_t elements = json_variant_elements(v); -+ log_debug("json_variant_elements: %zu", elements); -+ -+ for (size_t i = 0; i <= elements + 2; i++) -+ (void) json_variant_by_index(v, i); -+ -+ assert_se(json_variant_equal(v, v)); -+ assert_se(!json_variant_equal(v, NULL)); -+ assert_se(!json_variant_equal(NULL, v)); -+ -+ bool sensitive = json_variant_is_sensitive(v); -+ log_debug("json_variant_is_sensitive: %s", yes_no(sensitive)); -+ -+ json_variant_sensitive(v); -+ -+ sensitive = json_variant_is_sensitive(v); -+ log_debug("json_variant_is_sensitive: %s", yes_no(sensitive)); -+ -+ const char *source; -+ unsigned line, column; -+ assert_se(json_variant_get_source(v, &source, &line, &column) == 0); -+ log_debug("json_variant_get_source: %s:%u:%u", source ?: "-", line, column); -+ -+ r = json_variant_set_field_string(&v, "a", "string-a"); -+ log_debug_errno(r, "json_set_field_string: %d/%m", r); -+ -+ r = json_variant_set_field_integer(&v, "b", -12345); -+ log_debug_errno(r, "json_set_field_integer: %d/%m", r); -+ -+ r = json_variant_set_field_unsigned(&v, "c", 12345); -+ log_debug_errno(r, "json_set_field_unsigned: %d/%m", r); -+ -+ r = json_variant_set_field_boolean(&v, "d", false); -+ log_debug_errno(r, "json_set_field_boolean: %d/%m", r); -+ -+ r = json_variant_set_field_strv(&v, "e", STRV_MAKE("e-1", "e-2", "e-3")); -+ log_debug_errno(r, "json_set_field_strv: %d/%m", r); -+ -+ r = json_variant_filter(&v, STRV_MAKE("a", "b", "c", "d", "e")); -+ log_debug_errno(r, "json_variant_filter: %d/%m", r); -+ -+ // TODO: json_variant_merge(&v, …); -+ // TODO: json_variant_append_array(&v, …); - return 0; - } diff --git a/SOURCES/0107-set-core-ulimit-to-0-like-on-RHEL-7.patch b/SOURCES/0107-set-core-ulimit-to-0-like-on-RHEL-7.patch new file mode 100644 index 0000000..b0137ae --- /dev/null +++ b/SOURCES/0107-set-core-ulimit-to-0-like-on-RHEL-7.patch @@ -0,0 +1,25 @@ +From 7b1eb758d1f87bfd98dbb8037a842ceedb245815 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Mon, 25 Jan 2021 16:19:56 +0100 +Subject: [PATCH] set core ulimit to 0 like on RHEL-7 + +RHEL-only + +Related: #2138081 +--- + src/core/system.conf.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/system.conf.in b/src/core/system.conf.in +index 5d1f6d24f0..624746e512 100644 +--- a/src/core/system.conf.in ++++ b/src/core/system.conf.in +@@ -61,7 +61,7 @@ + #DefaultLimitFSIZE= + #DefaultLimitDATA= + #DefaultLimitSTACK= +-#DefaultLimitCORE= ++DefaultLimitCORE=0:infinity + #DefaultLimitRSS= + #DefaultLimitNOFILE=1024:{{HIGH_RLIMIT_NOFILE}} + #DefaultLimitAS= diff --git a/SOURCES/0108-ci-use-C9S-chroots-in-Packit.patch b/SOURCES/0108-ci-use-C9S-chroots-in-Packit.patch new file mode 100644 index 0000000..f1b418f --- /dev/null +++ b/SOURCES/0108-ci-use-C9S-chroots-in-Packit.patch @@ -0,0 +1,28 @@ +From 395bf82a5950b7e3bfe974d3f4d52ee2fb5a9e56 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 4 Nov 2021 12:31:32 +0100 +Subject: [PATCH] ci: use C9S chroots in Packit + +rhel-only +Related: #2138081 +--- + .packit.yml | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/.packit.yml b/.packit.yml +index d0eebab181..35938f3586 100644 +--- a/.packit.yml ++++ b/.packit.yml +@@ -38,8 +38,7 @@ jobs: + trigger: pull_request + metadata: + targets: +- - fedora-rawhide-aarch64 +- - fedora-rawhide-i386 +- - fedora-rawhide-ppc64le +- - fedora-rawhide-s390x +- - fedora-rawhide-x86_64 ++ - centos-stream-9-aarch64 ++ - centos-stream-9-ppc64le ++ - centos-stream-9-s390x ++ - centos-stream-9-x86_64 diff --git a/SOURCES/0108-shared-json-wrap-long-comments.patch b/SOURCES/0108-shared-json-wrap-long-comments.patch deleted file mode 100644 index 7e1a8d0..0000000 --- a/SOURCES/0108-shared-json-wrap-long-comments.patch +++ /dev/null @@ -1,106 +0,0 @@ -From eb01fd30cb625e90d5620b3ca31ca6474e1b0ac0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 13:37:35 +0200 -Subject: [PATCH] shared/json: wrap long comments - -(cherry picked from commit bac06497feda9eb8c485243f2e05a7f7c112616c) -Related: #2087652 ---- - src/shared/json.c | 35 +++++++++++++++++------------------ - 1 file changed, 17 insertions(+), 18 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index d35874f8e3..ea1291e21b 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -273,8 +273,8 @@ static JsonVariant *json_variant_formalize(JsonVariant *v) { - - static JsonVariant *json_variant_conservative_formalize(JsonVariant *v) { - -- /* Much like json_variant_formalize(), but won't simplify if the variant has a source/line location attached to -- * it, in order not to lose context */ -+ /* Much like json_variant_formalize(), but won't simplify if the variant has a source/line location -+ * attached to it, in order not to lose context */ - - if (!v) - return NULL; -@@ -546,7 +546,7 @@ int json_variant_new_array(JsonVariant **ret, JsonVariant **array, size_t n) { - - for (v->n_elements = 0; v->n_elements < n; v->n_elements++) { - JsonVariant *w = v + 1 + v->n_elements, -- *c = array[v->n_elements]; -+ *c = array[v->n_elements]; - uint16_t d; - - d = json_variant_depth(c); -@@ -690,7 +690,7 @@ int json_variant_new_object(JsonVariant **ret, JsonVariant **array, size_t n) { - - for (v->n_elements = 0; v->n_elements < n; v->n_elements++) { - JsonVariant *w = v + 1 + v->n_elements, -- *c = array[v->n_elements]; -+ *c = array[v->n_elements]; - uint16_t d; - - if ((v->n_elements & 1) == 0) { -@@ -731,7 +731,6 @@ int json_variant_new_object(JsonVariant **ret, JsonVariant **array, size_t n) { - } - - static size_t json_variant_size(JsonVariant* v) { -- - if (!json_variant_is_regular(v)) - return 0; - -@@ -2253,8 +2252,9 @@ static int json_variant_set_source(JsonVariant **v, JsonSource *source, unsigned - - assert(v); - -- /* Patch in source and line/column number. Tries to do this in-place if the caller is the sole referencer of -- * the object. If not, allocates a new object, possibly a surrogate for the original one */ -+ /* Patch in source and line/column number. Tries to do this in-place if the caller is the sole -+ * referencer of the object. If not, allocates a new object, possibly a surrogate for the original -+ * one */ - - if (!*v) - return 0; -@@ -3731,10 +3731,10 @@ int json_buildv(JsonVariant **ret, va_list ap) { - - stack[n_stack++] = (JsonStack) { - .expect = EXPECT_OBJECT_KEY, -- .n_suppress = current->n_suppress != 0 ? SIZE_MAX : 0, /* if we shall suppress the -- * new object, then we should -- * also suppress all object -- * members */ -+ .n_suppress = current->n_suppress != 0 ? SIZE_MAX : 0, /* If we shall suppress the -+ * new object, then we should -+ * also suppress all object -+ * members. */ - }; - - break; -@@ -4102,9 +4102,9 @@ int json_buildv(JsonVariant **ret, va_list ap) { - current->elements[current->n_elements++] = TAKE_PTR(add_more); - } - -- /* If we are supposed to suppress items, let's subtract how many items where generated from that -- * counter. Except if the counter is SIZE_MAX, i.e. we shall suppress an infinite number of elements -- * on this stack level */ -+ /* If we are supposed to suppress items, let's subtract how many items where generated from -+ * that counter. Except if the counter is SIZE_MAX, i.e. we shall suppress an infinite number -+ * of elements on this stack level */ - if (current->n_suppress != SIZE_MAX) { - if (current->n_suppress <= n_subtract) /* Saturated */ - current->n_suppress = 0; -@@ -4696,10 +4696,9 @@ finish: - } - - bool json_variant_is_normalized(JsonVariant *v) { -- -- /* For now, let's consider anything containing numbers not expressible as integers as -- * non-normalized. That's because we cannot sensibly compare them due to accuracy issues, nor even -- * store them if they are too large. */ -+ /* For now, let's consider anything containing numbers not expressible as integers as non-normalized. -+ * That's because we cannot sensibly compare them due to accuracy issues, nor even store them if they -+ * are too large. */ - if (json_variant_is_real(v) && !json_variant_is_integer(v) && !json_variant_is_unsigned(v)) - return false; - diff --git a/SOURCES/0109-Treat-EPERM-as-not-available-too.patch b/SOURCES/0109-Treat-EPERM-as-not-available-too.patch new file mode 100644 index 0000000..a514554 --- /dev/null +++ b/SOURCES/0109-Treat-EPERM-as-not-available-too.patch @@ -0,0 +1,30 @@ +From 9e51ecd3ec0484d7ffefb0ceaf242e96b31195bb Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 21 Dec 2021 10:46:17 +0100 +Subject: [PATCH] Treat EPERM as "not available" too + +We need to do this because idmapped mounts habe been disabled in RHEL-9 +kernel: https://bugzilla.redhat.com/show_bug.cgi?id=2018141 . + +RHEL-only + +Fixes #55 + +Related: #2138081 +--- + src/nspawn/nspawn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index 01a67b5553..93d646ed56 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -3806,7 +3806,7 @@ static int outer_child( + arg_uid_shift != 0) { + + r = remount_idmap(directory, arg_uid_shift, arg_uid_range, UID_INVALID, REMOUNT_IDMAPPING_HOST_ROOT); +- if (r == -EINVAL || ERRNO_IS_NOT_SUPPORTED(r)) { ++ if (IN_SET(r, -EINVAL, -EPERM) || ERRNO_IS_NOT_SUPPORTED(r)) { + /* This might fail because the kernel or file system doesn't support idmapping. We + * can't really distinguish this nicely, nor do we have any guarantees about the + * error codes we see, could be EOPNOTSUPP or EINVAL. */ diff --git a/SOURCES/0109-shared-json-fix-memory-leak-on-failed-normalization.patch b/SOURCES/0109-shared-json-fix-memory-leak-on-failed-normalization.patch deleted file mode 100644 index a1caeab..0000000 --- a/SOURCES/0109-shared-json-fix-memory-leak-on-failed-normalization.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0c5992cdb85ac6d9d14b95e77f03797600e87667 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 14:28:36 +0200 -Subject: [PATCH] shared/json: fix memory leak on failed normalization - -We need to increase the counter immediately after taking the ref, -otherwise we may not unref it properly if we fail before incrementing. - -(cherry picked from commit 7e4be6a5845f983a299932d4ccb2c4349cf8dd52) -Related: #2087652 ---- - src/shared/json.c | 5 +++-- - test/fuzz/fuzz-json/leak-normalize-fail | 1 + - 2 files changed, 4 insertions(+), 2 deletions(-) - create mode 100644 test/fuzz/fuzz-json/leak-normalize-fail - -diff --git a/src/shared/json.c b/src/shared/json.c -index ea1291e21b..fe05657dad 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -4655,10 +4655,11 @@ int json_variant_normalize(JsonVariant **v) { - if (!a) - return -ENOMEM; - -- for (i = 0; i < m; i++) { -+ for (i = 0; i < m; ) { - a[i] = json_variant_ref(json_variant_by_index(*v, i)); -+ i++; - -- r = json_variant_normalize(a + i); -+ r = json_variant_normalize(&a[i-1]); - if (r < 0) - goto finish; - } -diff --git a/test/fuzz/fuzz-json/leak-normalize-fail b/test/fuzz/fuzz-json/leak-normalize-fail -new file mode 100644 -index 0000000000..b247ccd199 ---- /dev/null -+++ b/test/fuzz/fuzz-json/leak-normalize-fail -@@ -0,0 +1 @@ -+[7E73] -\ No newline at end of file diff --git a/SOURCES/0110-shared-json-add-helper-to-ref-first-unref-second.patch b/SOURCES/0110-shared-json-add-helper-to-ref-first-unref-second.patch deleted file mode 100644 index 843a505..0000000 --- a/SOURCES/0110-shared-json-add-helper-to-ref-first-unref-second.patch +++ /dev/null @@ -1,141 +0,0 @@ -From fb195ccc27d1643d4152ee874144c36c0104c56d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 15:10:36 +0200 -Subject: [PATCH] shared/json: add helper to ref first, unref second - -This normally wouldn't happen, but if some of those places were called -with lhs and rhs being the same object, we could unref the last ref first, -and then try to take the ref again. It's easier to be safe, and with the -helper we save some lines too. - -(cherry picked from commit ce913e0ec4c97651c7c1509b72fb81ee61d80c6a) -Related: #2087652 ---- - src/shared/json.c | 36 ++++++++++-------------------------- - src/shared/json.h | 8 ++++++++ - 2 files changed, 18 insertions(+), 26 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index fe05657dad..bb2363fd98 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -1847,9 +1847,7 @@ int json_variant_filter(JsonVariant **v, char **to_remove) { - return r; - - json_variant_propagate_sensitive(*v, w); -- -- json_variant_unref(*v); -- *v = TAKE_PTR(w); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(w)); - - return (int) n; - } -@@ -1918,9 +1916,7 @@ int json_variant_set_field(JsonVariant **v, const char *field, JsonVariant *valu - return r; - - json_variant_propagate_sensitive(*v, w); -- -- json_variant_unref(*v); -- *v = TAKE_PTR(w); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(w)); - - return 1; - } -@@ -2001,8 +1997,7 @@ int json_variant_merge(JsonVariant **v, JsonVariant *m) { - return 0; /* nothing to do */ - - if (v_blank) { -- json_variant_unref(*v); -- *v = json_variant_ref(m); -+ JSON_VARIANT_REPLACE(*v, json_variant_ref(m)); - return 1; - } - -@@ -2039,9 +2034,7 @@ int json_variant_merge(JsonVariant **v, JsonVariant *m) { - - json_variant_propagate_sensitive(*v, w); - json_variant_propagate_sensitive(m, w); -- -- json_variant_unref(*v); -- *v = TAKE_PTR(w); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(w)); - - return 1; - } -@@ -2081,9 +2074,7 @@ int json_variant_append_array(JsonVariant **v, JsonVariant *element) { - return r; - - json_variant_propagate_sensitive(*v, nv); -- -- json_variant_unref(*v); -- *v = TAKE_PTR(nv); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(nv)); - - return 0; - } -@@ -2297,8 +2288,7 @@ static int json_variant_set_source(JsonVariant **v, JsonSource *source, unsigned - w->line = line; - w->column = column; - -- json_variant_unref(*v); -- *v = w; -+ JSON_VARIANT_REPLACE(*v, w); - - return 1; - } -@@ -4499,14 +4489,10 @@ int json_dispatch_strv(const char *name, JsonVariant *variant, JsonDispatchFlags - } - - int json_dispatch_variant(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { -- JsonVariant **p = userdata; -- -+ JsonVariant **p = ASSERT_PTR(userdata); - assert(variant); -- assert(p); -- -- json_variant_unref(*p); -- *p = json_variant_ref(variant); - -+ JSON_VARIANT_REPLACE(*p, json_variant_ref(variant)); - return 0; - } - -@@ -4628,8 +4614,7 @@ int json_variant_sort(JsonVariant **v) { - if (!n->sorted) /* Check if this worked. This will fail if there are multiple identical keys used. */ - return -ENOTUNIQ; - -- json_variant_unref(*v); -- *v = n; -+ JSON_VARIANT_REPLACE(*v, n); - - return 1; - } -@@ -4684,8 +4669,7 @@ int json_variant_normalize(JsonVariant **v) { - goto finish; - } - -- json_variant_unref(*v); -- *v = n; -+ JSON_VARIANT_REPLACE(*v, n); - - r = 1; - -diff --git a/src/shared/json.h b/src/shared/json.h -index 8760354b66..dd73c1e497 100644 ---- a/src/shared/json.h -+++ b/src/shared/json.h -@@ -82,6 +82,14 @@ JsonVariant *json_variant_ref(JsonVariant *v); - JsonVariant *json_variant_unref(JsonVariant *v); - void json_variant_unref_many(JsonVariant **array, size_t n); - -+#define JSON_VARIANT_REPLACE(v, q) \ -+ do { \ -+ typeof(v)* _v = &(v); \ -+ typeof(q) _q = (q); \ -+ json_variant_unref(*_v); \ -+ *_v = _q; \ -+ } while(0) -+ - DEFINE_TRIVIAL_CLEANUP_FUNC(JsonVariant *, json_variant_unref); - - const char *json_variant_string(JsonVariant *v); diff --git a/SOURCES/0110-udev-net-setup-link-change-the-default-MACAddressPol.patch b/SOURCES/0110-udev-net-setup-link-change-the-default-MACAddressPol.patch new file mode 100644 index 0000000..7acbcf6 --- /dev/null +++ b/SOURCES/0110-udev-net-setup-link-change-the-default-MACAddressPol.patch @@ -0,0 +1,53 @@ +From c150bc4cc27d560970fd34cf2347142325e7704a Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 21 Sep 2021 15:01:19 +0200 +Subject: [PATCH] udev/net-setup-link: change the default MACAddressPolicy to + "none" + +While stable MAC address for interface types that don't have the +address provided by HW could be useful it also breaks LACP based bonds. +Let's err on the side of caution and don't change the MAC address from +udev. + +RHEL-only + +Related: #2138081 +--- + man/systemd.link.xml | 2 +- + network/99-default.link | 2 +- + test/fuzz/fuzz-link-parser/99-default.link | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/man/systemd.link.xml b/man/systemd.link.xml +index cc55b02b18..69e0ac779c 100644 +--- a/man/systemd.link.xml ++++ b/man/systemd.link.xml +@@ -1117,7 +1117,7 @@ + + [Link] + NamePolicy=kernel database onboard slot path +-MACAddressPolicy=persistent ++MACAddressPolicy=none + + + +diff --git a/network/99-default.link b/network/99-default.link +index 429ac31e80..083bdb5659 100644 +--- a/network/99-default.link ++++ b/network/99-default.link +@@ -17,4 +17,4 @@ OriginalName=* + [Link] + NamePolicy=keep kernel database onboard slot path + AlternativeNamesPolicy=database onboard slot path +-MACAddressPolicy=persistent ++MACAddressPolicy=none +diff --git a/test/fuzz/fuzz-link-parser/99-default.link b/test/fuzz/fuzz-link-parser/99-default.link +index feb5b1fbb0..3d755898b4 100644 +--- a/test/fuzz/fuzz-link-parser/99-default.link ++++ b/test/fuzz/fuzz-link-parser/99-default.link +@@ -9,4 +9,4 @@ + + [Link] + NamePolicy=keep kernel database onboard slot path +-MACAddressPolicy=persistent ++MACAddressPolicy=none diff --git a/SOURCES/0111-basic-alloc-util-remove-unnecessary-parens.patch b/SOURCES/0111-basic-alloc-util-remove-unnecessary-parens.patch deleted file mode 100644 index 4abdc43..0000000 --- a/SOURCES/0111-basic-alloc-util-remove-unnecessary-parens.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 965a99f34a185bb3b3aa5ac0e9e5d5eb05d0fac0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 15:11:20 +0200 -Subject: [PATCH] basic/alloc-util: remove unnecessary parens - -Those symbols are not macros anymore, so we can drop parens. - -(cherry picked from commit 96d651a22bf62e63080e489cb45e82bead11aa5d) -Related: #2087652 ---- - src/basic/alloc-util.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h -index 65d5175619..f57bcbdbcd 100644 ---- a/src/basic/alloc-util.h -+++ b/src/basic/alloc-util.h -@@ -54,8 +54,8 @@ typedef void (*free_func_t)(void *p); - typeof(a)* _a = &(a); \ - typeof(b)* _b = &(b); \ - free(*_a); \ -- (*_a) = (*_b); \ -- (*_b) = NULL; \ -+ *_a = *_b; \ -+ *_b = NULL; \ - 0; \ - }) - diff --git a/SOURCES/0111-man-mention-System-Administrator-s-Guide-in-systemct.patch b/SOURCES/0111-man-mention-System-Administrator-s-Guide-in-systemct.patch new file mode 100644 index 0000000..b138880 --- /dev/null +++ b/SOURCES/0111-man-mention-System-Administrator-s-Guide-in-systemct.patch @@ -0,0 +1,35 @@ +From 5b2c931fb85d79db5a369a46eaeaf4ba297cbeef Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Thu, 28 Aug 2014 15:12:10 +0200 +Subject: [PATCH] man: mention System Administrator's Guide in systemctl + manpage + +RHEL-only + +Related: #2138081 +--- + man/systemctl.xml | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index 997925892d..f743c182fe 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -2496,6 +2496,17 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + + + ++ ++ Examples ++ ++ For examples how to use systemctl in comparsion ++ with old service and chkconfig command please see: ++ ++ Managing System Services ++ ++ ++ ++ + + See Also + diff --git a/SOURCES/0112-Net-naming-scheme-for-RHEL-9.0.patch b/SOURCES/0112-Net-naming-scheme-for-RHEL-9.0.patch new file mode 100644 index 0000000..57b2cfd --- /dev/null +++ b/SOURCES/0112-Net-naming-scheme-for-RHEL-9.0.patch @@ -0,0 +1,56 @@ +From 9e03c4d6c1245af87569cb337c4fd82d873ea5c7 Mon Sep 17 00:00:00 2001 +From: Jacek Migacz +Date: Thu, 3 Feb 2022 23:46:09 +0100 +Subject: [PATCH] Net naming scheme for RHEL-9.0 + +RHEL-only + +Related: #2138081 +--- + man/systemd.net-naming-scheme.xml | 7 +++++++ + src/shared/netif-naming-scheme.c | 1 + + src/shared/netif-naming-scheme.h | 1 + + 3 files changed, 9 insertions(+) + +diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml +index 8aac42b49d..8c2017a0ce 100644 +--- a/man/systemd.net-naming-scheme.xml ++++ b/man/systemd.net-naming-scheme.xml +@@ -448,6 +448,13 @@ + + + ++ ++ rhel-9.0 ++ ++ Same as naming scheme v250. ++ ++ ++ + + + Note that latest may be used to denote the latest scheme known (to this +diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c +index 18748e5376..c5b8ddfcf9 100644 +--- a/src/shared/netif-naming-scheme.c ++++ b/src/shared/netif-naming-scheme.c +@@ -25,6 +25,7 @@ static const NamingScheme naming_schemes[] = { + { "v250", NAMING_V250 }, + { "v251", NAMING_V251 }, + { "v252", NAMING_V252 }, ++ { "rhel-9.0", NAMING_RHEL_9_0 }, + /* … add more schemes here, as the logic to name devices is updated … */ + + EXTRA_NET_NAMING_MAP +diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h +index 4fa9170969..b5fa1f0ef0 100644 +--- a/src/shared/netif-naming-scheme.h ++++ b/src/shared/netif-naming-scheme.h +@@ -51,6 +51,7 @@ typedef enum NamingSchemeFlags { + NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF, + NAMING_V251 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, + NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES, ++ NAMING_RHEL_9_0 = NAMING_V250, + + EXTRA_NET_NAMING_SCHEMES + diff --git a/SOURCES/0112-fuzz-json-also-try-self-merge-operations.patch b/SOURCES/0112-fuzz-json-also-try-self-merge-operations.patch deleted file mode 100644 index 7f8627e..0000000 --- a/SOURCES/0112-fuzz-json-also-try-self-merge-operations.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 03795a6ae06088bc434906f3ef7222acfbdbe8cb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 9 May 2022 15:14:33 +0200 -Subject: [PATCH] fuzz-json: also try self-merge operations - -This might even work ;) - -(cherry picked from commit dbd27c6d2830aeb7173933d1f4a9a07457e4092d) -Related: #2087652 ---- - src/fuzz/fuzz-json.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/fuzz/fuzz-json.c b/src/fuzz/fuzz-json.c -index 995a0265ba..c393fcf394 100644 ---- a/src/fuzz/fuzz-json.c -+++ b/src/fuzz/fuzz-json.c -@@ -105,7 +105,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - r = json_variant_filter(&v, STRV_MAKE("a", "b", "c", "d", "e")); - log_debug_errno(r, "json_variant_filter: %d/%m", r); - -- // TODO: json_variant_merge(&v, …); -- // TODO: json_variant_append_array(&v, …); -+ /* I assume we can merge v with itself… */ -+ r = json_variant_merge(&v, v); -+ log_debug_errno(r, "json_variant_merge: %d/%m", r); -+ -+ r = json_variant_append_array(&v, v); -+ log_debug_errno(r, "json_variant_append_array: %d/%m", r); -+ - return 0; - } diff --git a/SOURCES/0113-core-decrease-log-level-of-messages-about-use-of-Kil.patch b/SOURCES/0113-core-decrease-log-level-of-messages-about-use-of-Kil.patch new file mode 100644 index 0000000..2bef6e0 --- /dev/null +++ b/SOURCES/0113-core-decrease-log-level-of-messages-about-use-of-Kil.patch @@ -0,0 +1,40 @@ +From 1db882cea4fe51183076d11893e9efe855310948 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 22 Feb 2022 13:24:11 +0100 +Subject: [PATCH] core: decrease log level of messages about use of + KillMode=none + +RHEL-only + +Related: #2138081 +--- + src/core/load-fragment.c | 2 +- + src/core/unit.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c +index 1a5895346d..0b5c8acee4 100644 +--- a/src/core/load-fragment.c ++++ b/src/core/load-fragment.c +@@ -834,7 +834,7 @@ int config_parse_kill_mode( + } + + if (m == KILL_NONE) +- log_syntax(unit, LOG_WARNING, filename, line, 0, ++ log_syntax(unit, LOG_DEBUG, filename, line, 0, + "Unit uses KillMode=none. " + "This is unsafe, as it disables systemd's process lifecycle management for the service. " + "Please update the service to use a safer KillMode=, such as 'mixed' or 'control-group'. " +diff --git a/src/core/unit.c b/src/core/unit.c +index 5af44aaf4a..4bb7e2d498 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -5510,7 +5510,7 @@ int unit_log_leftover_process_start(pid_t pid, int sig, void *userdata) { + + /* During start we print a warning */ + +- log_unit_warning(userdata, ++ log_unit_debug(userdata, + "Found left-over process " PID_FMT " (%s) in control group while starting unit. Ignoring.\n" + "This usually indicates unclean termination of a previous run, or service implementation deficiencies.", + pid, strna(comm)); diff --git a/SOURCES/0113-shared-json-fix-another-memleak-in-normalization.patch b/SOURCES/0113-shared-json-fix-another-memleak-in-normalization.patch deleted file mode 100644 index df1a30e..0000000 --- a/SOURCES/0113-shared-json-fix-another-memleak-in-normalization.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 6e0d847273e6ef6ee1011fb1c8b6689e64a94276 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 10 May 2022 09:05:43 +0200 -Subject: [PATCH] shared/json: fix another memleak in normalization - -(cherry picked from commit 3b6ce05537cd3544a15073f920347cabd7a39450) -Related: #2087652 ---- - src/shared/json.c | 4 ++-- - test/fuzz/fuzz-json/leak-normalize-object | 1 + - 2 files changed, 3 insertions(+), 2 deletions(-) - create mode 100644 test/fuzz/fuzz-json/leak-normalize-object - -diff --git a/src/shared/json.c b/src/shared/json.c -index bb2363fd98..06ef556233 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -4621,7 +4621,7 @@ int json_variant_sort(JsonVariant **v) { - - int json_variant_normalize(JsonVariant **v) { - _cleanup_free_ JsonVariant **a = NULL; -- JsonVariant *n = NULL; -+ _cleanup_(json_variant_unrefp) JsonVariant *n = NULL; - size_t i, m; - int r; - -@@ -4669,7 +4669,7 @@ int json_variant_normalize(JsonVariant **v) { - goto finish; - } - -- JSON_VARIANT_REPLACE(*v, n); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(n)); - - r = 1; - -diff --git a/test/fuzz/fuzz-json/leak-normalize-object b/test/fuzz/fuzz-json/leak-normalize-object -new file mode 100644 -index 0000000000..0a8caa426c ---- /dev/null -+++ b/test/fuzz/fuzz-json/leak-normalize-object -@@ -0,0 +1 @@ -+[7,7,7,7,{"":7,"":7,"^t":7,"-":7},2777,7,7,7,3] -\ No newline at end of file diff --git a/SOURCES/0114-ci-Mergify-configuration-update.patch b/SOURCES/0114-ci-Mergify-configuration-update.patch new file mode 100644 index 0000000..95d41c1 --- /dev/null +++ b/SOURCES/0114-ci-Mergify-configuration-update.patch @@ -0,0 +1,97 @@ +From a2e1634b7c8f0f422975799de0d09f898c82d742 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Mon, 30 May 2022 15:19:16 +0200 +Subject: [PATCH] ci(Mergify): configuration update + +Add rules for `needs-ci` label management + +RHEL-only + +Related: #2138081 +--- + .mergify.yml | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 76 insertions(+) + create mode 100644 .mergify.yml + +diff --git a/.mergify.yml b/.mergify.yml +new file mode 100644 +index 0000000000..c06e0fb1be +--- /dev/null ++++ b/.mergify.yml +@@ -0,0 +1,76 @@ ++# doc: https://docs.mergify.com ++--- ++ ++pull_request_rules: ++ - name: Add `needs-ci` label on CI fail ++ conditions: ++ - or: ++ # Build test ++ - -check-success=build (gcc, 10, bfd) ++ - -check-success=build (gcc, 11, gold) ++ - -check-success=build (clang, 11, bfd) ++ - -check-success=build (clang, 12, gold) ++ - -check-success=build (clang, 13, lld) ++ # Unit tests ++ - -check-success=build (GCC, auto) ++ - -check-success=build (GCC_ASAN_UBSAN, auto) ++ - -check-success=build (CLANG, auto) ++ - -check-success=build (CLANG_ASAN_UBSAN, auto) ++ - -check-success=build (GCC, openssl) ++ - -check-success=build (CLANG, gcrypt) ++ # CentOS CI ++ - -check-success=CentOS CI (CentOS Stream 9) ++ - -check-success=CentOS CI (CentOS Stream 9 + sanitizers) ++ # LGTM ++ - and: ++ - "-check-success=LGTM analysis: JavaScript" ++ - "-check-neutral=LGTM analysis: JavaScript" ++ - and: ++ - "-check-success=LGTM analysis: Python" ++ - "-check-neutral=LGTM analysis: Python" ++ - and: ++ - "-check-success=LGTM analysis: C/C++" ++ - "-check-neutral=LGTM analysis: Python" ++ # Packit ++ - -check-success=rpm-build:centos-stream-9-aarch64 ++ - -check-success=rpm-build:centos-stream-9-x86_64 ++ actions: ++ label: ++ add: ++ - needs-ci ++ ++ - name: Remove `needs-ci` label on CI success ++ conditions: ++ # Build test ++ - check-success=build (gcc, 10, bfd) ++ - check-success=build (gcc, 11, gold) ++ - check-success=build (clang, 11, bfd) ++ - check-success=build (clang, 12, gold) ++ - check-success=build (clang, 13, lld) ++ # Unit tests ++ - check-success=build (GCC, auto) ++ - check-success=build (GCC_ASAN_UBSAN, auto) ++ - check-success=build (CLANG, auto) ++ - check-success=build (CLANG_ASAN_UBSAN, auto) ++ - check-success=build (GCC, openssl) ++ - check-success=build (CLANG, gcrypt) ++ # CentOS CI ++ - check-success=CentOS CI (CentOS Stream 9) ++ - check-success=CentOS CI (CentOS Stream 9 + sanitizers) ++ # LGTM ++ - or: ++ - "check-success=LGTM analysis: JavaScript" ++ - "check-neutral=LGTM analysis: JavaScript" ++ - or: ++ - "check-success=LGTM analysis: Python" ++ - "check-neutral=LGTM analysis: Python" ++ - or: ++ - "check-success=LGTM analysis: C/C++" ++ - "check-neutral=LGTM analysis: Python" ++ # Packit ++ - check-success=rpm-build:centos-stream-9-aarch64 ++ - check-success=rpm-build:centos-stream-9-x86_64 ++ actions: ++ label: ++ remove: ++ - needs-ci diff --git a/SOURCES/0114-shared-json-fix-memleak-in-sort.patch b/SOURCES/0114-shared-json-fix-memleak-in-sort.patch deleted file mode 100644 index e8f0602..0000000 --- a/SOURCES/0114-shared-json-fix-memleak-in-sort.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 51bbb027e93637f5821215ebb067454ad6620190 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 10 May 2022 10:51:43 +0200 -Subject: [PATCH] shared/json: fix memleak in sort - -(cherry picked from commit 99b1145aae682ddd7554c7e3ac5ebf778e88f87d) -Related: #2087652 ---- - src/shared/json.c | 4 ++-- - test/fuzz/fuzz-json/leak-sort | 1 + - 2 files changed, 3 insertions(+), 2 deletions(-) - create mode 100644 test/fuzz/fuzz-json/leak-sort - -diff --git a/src/shared/json.c b/src/shared/json.c -index 06ef556233..6d23bdf4f9 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -4581,7 +4581,7 @@ static int json_cmp_strings(const void *x, const void *y) { - - int json_variant_sort(JsonVariant **v) { - _cleanup_free_ JsonVariant **a = NULL; -- JsonVariant *n = NULL; -+ _cleanup_(json_variant_unrefp) JsonVariant *n = NULL; - size_t m; - int r; - -@@ -4614,7 +4614,7 @@ int json_variant_sort(JsonVariant **v) { - if (!n->sorted) /* Check if this worked. This will fail if there are multiple identical keys used. */ - return -ENOTUNIQ; - -- JSON_VARIANT_REPLACE(*v, n); -+ JSON_VARIANT_REPLACE(*v, TAKE_PTR(n)); - - return 1; - } -diff --git a/test/fuzz/fuzz-json/leak-sort b/test/fuzz/fuzz-json/leak-sort -new file mode 100644 -index 0000000000..f8446dbdc7 ---- /dev/null -+++ b/test/fuzz/fuzz-json/leak-sort -@@ -0,0 +1 @@ -+{"":2,"":6,"-":7} -\ No newline at end of file diff --git a/SOURCES/0115-ci-Mergify-fix-copy-paste-bug.patch b/SOURCES/0115-ci-Mergify-fix-copy-paste-bug.patch new file mode 100644 index 0000000..048f662 --- /dev/null +++ b/SOURCES/0115-ci-Mergify-fix-copy-paste-bug.patch @@ -0,0 +1,34 @@ +From 44637741bccdcabc8257ffee1996afeadf441690 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Mon, 6 Jun 2022 15:39:22 +0200 +Subject: [PATCH] ci(Mergify): fix copy&paste bug + +RHEL-only + +Related: #2138081 +--- + .mergify.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/.mergify.yml b/.mergify.yml +index c06e0fb1be..b7852b201c 100644 +--- a/.mergify.yml ++++ b/.mergify.yml +@@ -30,7 +30,7 @@ pull_request_rules: + - "-check-neutral=LGTM analysis: Python" + - and: + - "-check-success=LGTM analysis: C/C++" +- - "-check-neutral=LGTM analysis: Python" ++ - "-check-neutral=LGTM analysis: C/C++" + # Packit + - -check-success=rpm-build:centos-stream-9-aarch64 + - -check-success=rpm-build:centos-stream-9-x86_64 +@@ -66,7 +66,7 @@ pull_request_rules: + - "check-neutral=LGTM analysis: Python" + - or: + - "check-success=LGTM analysis: C/C++" +- - "check-neutral=LGTM analysis: Python" ++ - "check-neutral=LGTM analysis: C/C++" + # Packit + - check-success=rpm-build:centos-stream-9-aarch64 + - check-success=rpm-build:centos-stream-9-x86_64 diff --git a/SOURCES/0115-execute-fix-resource-leak.patch b/SOURCES/0115-execute-fix-resource-leak.patch deleted file mode 100644 index 194c836..0000000 --- a/SOURCES/0115-execute-fix-resource-leak.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 08b6aa9dfbe9476ad71b48edd0f4454511d9ac19 Mon Sep 17 00:00:00 2001 -From: Shreenidhi Shedi -Date: Sat, 4 Jun 2022 15:24:08 +0530 -Subject: [PATCH] execute: fix resource leak - -CID#1431998 - -(cherry picked from commit 41abd7f6dfe09ccc78cdbdcdec3bdcc10be40faf) -Related: #2087652 ---- - src/core/execute.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/execute.c b/src/core/execute.c -index 2ab65e9cfe..8a1d070e26 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -3331,7 +3331,7 @@ static int apply_mount_namespace( - /* Symlinks for exec dirs are set up after other mounts, before they are made read-only. */ - r = compile_symlinks(context, params, &symlinks); - if (r < 0) -- return r; -+ goto finalize; - - needs_sandboxing = (params->flags & EXEC_APPLY_SANDBOXING) && !(command_flags & EXEC_COMMAND_FULLY_PRIVILEGED); - if (needs_sandboxing) { diff --git a/SOURCES/0116-ci-Mergify-Add-ci-waived-logic.patch b/SOURCES/0116-ci-Mergify-Add-ci-waived-logic.patch new file mode 100644 index 0000000..3387169 --- /dev/null +++ b/SOURCES/0116-ci-Mergify-Add-ci-waived-logic.patch @@ -0,0 +1,104 @@ +From 9fee3c33a05596de1658eb0099cd04cbf0a5d99a Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Tue, 19 Jul 2022 12:29:28 +0200 +Subject: [PATCH] ci(Mergify): Add `ci-waived` logic + +RHEL-only + +Related: #2138081 +--- + .mergify.yml | 66 ++++++++++++++++++++++++++++------------------------ + 1 file changed, 35 insertions(+), 31 deletions(-) + +diff --git a/.mergify.yml b/.mergify.yml +index b7852b201c..be25e52c76 100644 +--- a/.mergify.yml ++++ b/.mergify.yml +@@ -4,6 +4,7 @@ + pull_request_rules: + - name: Add `needs-ci` label on CI fail + conditions: ++ - label!=ci-waived + - or: + # Build test + - -check-success=build (gcc, 10, bfd) +@@ -31,9 +32,9 @@ pull_request_rules: + - and: + - "-check-success=LGTM analysis: C/C++" + - "-check-neutral=LGTM analysis: C/C++" +- # Packit +- - -check-success=rpm-build:centos-stream-9-aarch64 +- - -check-success=rpm-build:centos-stream-9-x86_64 ++ # Packit ++ - -check-success=rpm-build:centos-stream-9-aarch64 ++ - -check-success=rpm-build:centos-stream-9-x86_64 + actions: + label: + add: +@@ -41,35 +42,38 @@ pull_request_rules: + + - name: Remove `needs-ci` label on CI success + conditions: +- # Build test +- - check-success=build (gcc, 10, bfd) +- - check-success=build (gcc, 11, gold) +- - check-success=build (clang, 11, bfd) +- - check-success=build (clang, 12, gold) +- - check-success=build (clang, 13, lld) +- # Unit tests +- - check-success=build (GCC, auto) +- - check-success=build (GCC_ASAN_UBSAN, auto) +- - check-success=build (CLANG, auto) +- - check-success=build (CLANG_ASAN_UBSAN, auto) +- - check-success=build (GCC, openssl) +- - check-success=build (CLANG, gcrypt) +- # CentOS CI +- - check-success=CentOS CI (CentOS Stream 9) +- - check-success=CentOS CI (CentOS Stream 9 + sanitizers) +- # LGTM + - or: +- - "check-success=LGTM analysis: JavaScript" +- - "check-neutral=LGTM analysis: JavaScript" +- - or: +- - "check-success=LGTM analysis: Python" +- - "check-neutral=LGTM analysis: Python" +- - or: +- - "check-success=LGTM analysis: C/C++" +- - "check-neutral=LGTM analysis: C/C++" +- # Packit +- - check-success=rpm-build:centos-stream-9-aarch64 +- - check-success=rpm-build:centos-stream-9-x86_64 ++ - label=ci-waived ++ - and: ++ # Build test ++ - check-success=build (gcc, 10, bfd) ++ - check-success=build (gcc, 11, gold) ++ - check-success=build (clang, 11, bfd) ++ - check-success=build (clang, 12, gold) ++ - check-success=build (clang, 13, lld) ++ # Unit tests ++ - check-success=build (GCC, auto) ++ - check-success=build (GCC_ASAN_UBSAN, auto) ++ - check-success=build (CLANG, auto) ++ - check-success=build (CLANG_ASAN_UBSAN, auto) ++ - check-success=build (GCC, openssl) ++ - check-success=build (CLANG, gcrypt) ++ # CentOS CI ++ - check-success=CentOS CI (CentOS Stream 9) ++ - check-success=CentOS CI (CentOS Stream 9 + sanitizers) ++ # LGTM ++ - or: ++ - "check-success=LGTM analysis: JavaScript" ++ - "check-neutral=LGTM analysis: JavaScript" ++ - or: ++ - "check-success=LGTM analysis: Python" ++ - "check-neutral=LGTM analysis: Python" ++ - or: ++ - "check-success=LGTM analysis: C/C++" ++ - "check-neutral=LGTM analysis: C/C++" ++ # Packit ++ - check-success=rpm-build:centos-stream-9-aarch64 ++ - check-success=rpm-build:centos-stream-9-x86_64 + actions: + label: + remove: diff --git a/SOURCES/0116-tests-ignore-dbus-broker-launcher.patch b/SOURCES/0116-tests-ignore-dbus-broker-launcher.patch deleted file mode 100644 index e97f951..0000000 --- a/SOURCES/0116-tests-ignore-dbus-broker-launcher.patch +++ /dev/null @@ -1,31 +0,0 @@ -From ae27d5b4be42cd98b3db299d161a2e3ea77eb604 Mon Sep 17 00:00:00 2001 -From: Evgeny Vereshchagin -Date: Wed, 11 May 2022 22:32:32 +0000 -Subject: [PATCH] tests: ignore dbus-broker-launcher - -There are memory leaks there https://github.com/bus1/dbus-broker/issues/289 -and it crashes from time to time -https://github.com/matusmarhefka/dfuzzer/issues/20#issuecomment-1114097840 -so let's just skip it by analogy with dbus-daemon to avoid -reports that have nothing to do with systemd itself. - -It's kind of a part of https://github.com/systemd/systemd/pull/22547 - -(cherry picked from commit d0880faa5dda495c7c77425697b82a94b4e68bf6) -Related: #2087652 ---- - test/test-functions | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/test/test-functions b/test/test-functions -index a299f5ff1f..7c37d05610 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1328,6 +1328,7 @@ check_asan_reports() { - BEGIN { - %services_to_ignore = ( - "dbus-daemon" => undef, -+ "dbus-broker-launch" => undef, - ); - } - print $2 if /\s(\S*)\[(\d+)\]:\s*SUMMARY:\s+\w+Sanitizer/ && !exists $services_to_ignore{$1}' diff --git a/SOURCES/0117-core-timer-fix-memleak.patch b/SOURCES/0117-core-timer-fix-memleak.patch deleted file mode 100644 index 3e58e63..0000000 --- a/SOURCES/0117-core-timer-fix-memleak.patch +++ /dev/null @@ -1,59 +0,0 @@ -From d35c27e44abcde252abddf369762dee8da309903 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 10 May 2022 14:09:24 +0900 -Subject: [PATCH] core/timer: fix memleak - -Fixes #23326. - -(cherry picked from commit d3ab7b8078944db28bc621f43dd942a3c878fffb) -Related: #2087652 ---- - src/core/timer.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/core/timer.c b/src/core/timer.c -index a13b864741..0dc49dd46b 100644 ---- a/src/core/timer.c -+++ b/src/core/timer.c -@@ -135,6 +135,7 @@ static int timer_add_trigger_dependencies(Timer *t) { - } - - static int timer_setup_persistent(Timer *t) { -+ _cleanup_free_ char *stamp_path = NULL; - int r; - - assert(t); -@@ -148,13 +149,13 @@ static int timer_setup_persistent(Timer *t) { - if (r < 0) - return r; - -- t->stamp_path = strjoin("/var/lib/systemd/timers/stamp-", UNIT(t)->id); -+ stamp_path = strjoin("/var/lib/systemd/timers/stamp-", UNIT(t)->id); - } else { - const char *e; - - e = getenv("XDG_DATA_HOME"); - if (e) -- t->stamp_path = strjoin(e, "/systemd/timers/stamp-", UNIT(t)->id); -+ stamp_path = strjoin(e, "/systemd/timers/stamp-", UNIT(t)->id); - else { - - _cleanup_free_ char *h = NULL; -@@ -163,14 +164,14 @@ static int timer_setup_persistent(Timer *t) { - if (r < 0) - return log_unit_error_errno(UNIT(t), r, "Failed to determine home directory: %m"); - -- t->stamp_path = strjoin(h, "/.local/share/systemd/timers/stamp-", UNIT(t)->id); -+ stamp_path = strjoin(h, "/.local/share/systemd/timers/stamp-", UNIT(t)->id); - } - } - -- if (!t->stamp_path) -+ if (!stamp_path) - return log_oom(); - -- return 0; -+ return free_and_replace(t->stamp_path, stamp_path); - } - - static uint64_t timer_get_fixed_delay_hash(Timer *t) { diff --git a/SOURCES/0117-udev-net_id-avoid-slot-based-names-only-for-single-f.patch b/SOURCES/0117-udev-net_id-avoid-slot-based-names-only-for-single-f.patch new file mode 100644 index 0000000..0a6dad7 --- /dev/null +++ b/SOURCES/0117-udev-net_id-avoid-slot-based-names-only-for-single-f.patch @@ -0,0 +1,50 @@ +From 6a3afa1a7e302ae414fbfa64b3da281aa56d64ed Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Wed, 23 Mar 2022 17:34:12 +0100 +Subject: [PATCH] udev/net_id: avoid slot based names only for single function + devices + +If we have two or more devices that share the same slot but they are +also multifunction then it is OK to use the slot information even if it +is the same for all of them. Name conflict will be avoided because we +will append function number and form names like, ens1f1, ens1f2... + +(cherry picked from commit 66425daf2c68793adf24a48a26d58add8662e83f) + +Related: #2138081 +--- + man/systemd.net-naming-scheme.xml | 7 ++++++- + src/shared/netif-naming-scheme.h | 2 +- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml +index 8c2017a0ce..e5268be38e 100644 +--- a/man/systemd.net-naming-scheme.xml ++++ b/man/systemd.net-naming-scheme.xml +@@ -451,7 +451,12 @@ + + rhel-9.0 + +- Same as naming scheme v250. ++ Since version v247 we no longer set ++ ID_NET_NAME_SLOT if we detect that a PCI device associated with a slot is a PCI ++ bridge as that would create naming conflict when there are more child devices on that bridge. Now, ++ this is relaxed and we will use slot information to generate the name based on it but only if ++ the PCI device has multiple functions. This is safe because distinct function number is a part of ++ the device name for multifunction devices. + + + +diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h +index b5fa1f0ef0..fd3ae1b7f5 100644 +--- a/src/shared/netif-naming-scheme.h ++++ b/src/shared/netif-naming-scheme.h +@@ -51,7 +51,7 @@ typedef enum NamingSchemeFlags { + NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF, + NAMING_V251 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, + NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES, +- NAMING_RHEL_9_0 = NAMING_V250, ++ NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, + + EXTRA_NET_NAMING_SCHEMES + diff --git a/SOURCES/0118-timedatectl-fix-a-memory-leak.patch b/SOURCES/0118-timedatectl-fix-a-memory-leak.patch deleted file mode 100644 index 68e40de..0000000 --- a/SOURCES/0118-timedatectl-fix-a-memory-leak.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 9c166afe17888b08d1e269cfd83a31838d601534 Mon Sep 17 00:00:00 2001 -From: Evgeny Vereshchagin -Date: Wed, 4 May 2022 11:35:19 +0000 -Subject: [PATCH] timedatectl: fix a memory leak - -``` -timedatectl list-timezones --no-pager -... -==164329==ERROR: LeakSanitizer: detected memory leaks - -Direct leak of 8192 byte(s) in 1 object(s) allocated from: - #0 0x7fe8a74b6f8c in reallocarray (/lib64/libasan.so.6+0xaef8c) - #1 0x7fe8a63485dc in strv_push ../src/basic/strv.c:419 - #2 0x7fe8a6349419 in strv_consume ../src/basic/strv.c:490 - #3 0x7fe8a634958d in strv_extend ../src/basic/strv.c:542 - #4 0x7fe8a643d787 in bus_message_read_strv_extend ../src/libsystemd/sd-bus/bus-message.c:5606 - #5 0x7fe8a643db9d in sd_bus_message_read_strv ../src/libsystemd/sd-bus/bus-message.c:5628 - #6 0x4085fb in list_timezones ../src/timedate/timedatectl.c:314 - #7 0x7fe8a61ef3e1 in dispatch_verb ../src/shared/verbs.c:103 - #8 0x410f91 in timedatectl_main ../src/timedate/timedatectl.c:1025 - #9 0x41111c in run ../src/timedate/timedatectl.c:1043 - #10 0x411242 in main ../src/timedate/timedatectl.c:1046 - #11 0x7fe8a489df1f in __libc_start_call_main (/lib64/libc.so.6+0x40f1f) -``` - -(cherry picked from commit a2e37d52312806b1847800df2358e61276cda052) -Related: #2087652 ---- - src/timedate/timedatectl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c -index 75ca6195da..31909064cf 100644 ---- a/src/timedate/timedatectl.c -+++ b/src/timedate/timedatectl.c -@@ -304,7 +304,7 @@ static int list_timezones(int argc, char **argv, void *userdata) { - sd_bus *bus = userdata; - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - int r; -- char** zones; -+ _cleanup_strv_free_ char **zones = NULL; - - r = bus_call_method(bus, bus_timedate, "ListTimezones", &error, &reply, NULL); - if (r < 0) diff --git a/SOURCES/0118-udev-net_id-add-rhel-9.1-naming-scheme.patch b/SOURCES/0118-udev-net_id-add-rhel-9.1-naming-scheme.patch new file mode 100644 index 0000000..a432f5f --- /dev/null +++ b/SOURCES/0118-udev-net_id-add-rhel-9.1-naming-scheme.patch @@ -0,0 +1,55 @@ +From 35ff2c23e2b95d7f1264259de17028d1b7472b87 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Wed, 24 Aug 2022 17:18:47 +0200 +Subject: [PATCH] udev/net_id: add "rhel-9.1" naming scheme + +RHEL-only + +Related: #2138081 +--- + man/systemd.net-naming-scheme.xml | 6 ++++++ + src/shared/netif-naming-scheme.c | 1 + + src/shared/netif-naming-scheme.h | 1 + + 3 files changed, 8 insertions(+) + +diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml +index e5268be38e..ca8ba7010e 100644 +--- a/man/systemd.net-naming-scheme.xml ++++ b/man/systemd.net-naming-scheme.xml +@@ -460,6 +460,12 @@ + + + ++ ++ rhel-9.1 ++ ++ Same as naming scheme rhel-9.0. ++ ++ + + + Note that latest may be used to denote the latest scheme known (to this +diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c +index c5b8ddfcf9..a20b990f2e 100644 +--- a/src/shared/netif-naming-scheme.c ++++ b/src/shared/netif-naming-scheme.c +@@ -26,6 +26,7 @@ static const NamingScheme naming_schemes[] = { + { "v251", NAMING_V251 }, + { "v252", NAMING_V252 }, + { "rhel-9.0", NAMING_RHEL_9_0 }, ++ { "rhel-9.1", NAMING_RHEL_9_1 }, + /* … add more schemes here, as the logic to name devices is updated … */ + + EXTRA_NET_NAMING_MAP +diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h +index fd3ae1b7f5..d70c19ade3 100644 +--- a/src/shared/netif-naming-scheme.h ++++ b/src/shared/netif-naming-scheme.h +@@ -52,6 +52,7 @@ typedef enum NamingSchemeFlags { + NAMING_V251 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, + NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES, + NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, ++ NAMING_RHEL_9_1 = NAMING_RHEL_9_0, + + EXTRA_NET_NAMING_SCHEMES + diff --git a/SOURCES/0119-ci-lint-Update-Differential-ShellCheck-config-to-run.patch b/SOURCES/0119-ci-lint-Update-Differential-ShellCheck-config-to-run.patch new file mode 100644 index 0000000..7f67fea --- /dev/null +++ b/SOURCES/0119-ci-lint-Update-Differential-ShellCheck-config-to-run.patch @@ -0,0 +1,32 @@ +From 60f571cb17f4147b2794eed7c272dc34e08e397f Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Tue, 16 Aug 2022 14:34:49 +0200 +Subject: [PATCH] ci(lint): Update Differential ShellCheck config to run on + Z-stream branches + +RHEL-only + +Related: #2138081 +--- + .github/workflows/differential-shellcheck.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml +index 20ce681632..47ec23731d 100644 +--- a/.github/workflows/differential-shellcheck.yml ++++ b/.github/workflows/differential-shellcheck.yml +@@ -6,13 +6,13 @@ on: + pull_request: + branches: + - main ++ - rhel-9.*.0 + + permissions: + contents: read + + jobs: + lint: +- if: github.event.repository.name != 'systemd-security' + runs-on: ubuntu-latest + + permissions: diff --git a/SOURCES/0119-test-fix-file-descriptor-leak-in-test-psi-util.patch b/SOURCES/0119-test-fix-file-descriptor-leak-in-test-psi-util.patch deleted file mode 100644 index bd57db6..0000000 --- a/SOURCES/0119-test-fix-file-descriptor-leak-in-test-psi-util.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 12274971840068b3effb7a933d62f1b5fe8009e1 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 22 Feb 2022 21:46:41 +0900 -Subject: [PATCH] test: fix file descriptor leak in test-psi-util - -Fixes an issue reported in #22576. - -(cherry picked from commit be99883e131ef422f8278ec1d099520996a78bb0) -Related: #2087652 ---- - src/test/test-psi-util.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/test/test-psi-util.c b/src/test/test-psi-util.c -index ed465b807e..111671c5a9 100644 ---- a/src/test/test-psi-util.c -+++ b/src/test/test-psi-util.c -@@ -1,20 +1,23 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" -+#include "fd-util.h" - #include "fileio.h" - #include "fs-util.h" - #include "parse-util.h" - #include "psi-util.h" - #include "tests.h" -+#include "tmpfile-util.h" - - TEST(read_mem_pressure) { - _cleanup_(unlink_tempfilep) char path[] = "/tmp/pressurereadtestXXXXXX"; -+ _cleanup_close_ int fd = -1; - ResourcePressure rp; - - if (geteuid() != 0) - return (void) log_tests_skipped("not root"); - -- assert_se(mkstemp(path)); -+ assert_se((fd = mkostemp_safe(path)) >= 0); - - assert_se(read_resource_pressure("/verylikelynonexistentpath", PRESSURE_TYPE_SOME, &rp) < 0); - assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0); diff --git a/SOURCES/0120-ci-mergify-Update-policy-Drop-LGTM-checks.patch b/SOURCES/0120-ci-mergify-Update-policy-Drop-LGTM-checks.patch new file mode 100644 index 0000000..66f45a8 --- /dev/null +++ b/SOURCES/0120-ci-mergify-Update-policy-Drop-LGTM-checks.patch @@ -0,0 +1,87 @@ +From a7be2c1e61d67f53f9eb90eb3937fa946ccef101 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Wed, 21 Sep 2022 15:36:26 +0200 +Subject: [PATCH] ci(mergify): Update policy - Drop LGTM checks + +rhel-only + +Related: #2138081 +--- + .github/workflows/differential-shellcheck.yml | 1 + + .mergify.yml | 34 +++++++------------ + 2 files changed, 13 insertions(+), 22 deletions(-) + +diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml +index 47ec23731d..105f92d1c9 100644 +--- a/.github/workflows/differential-shellcheck.yml ++++ b/.github/workflows/differential-shellcheck.yml +@@ -13,6 +13,7 @@ permissions: + + jobs: + lint: ++ name: Differential ShellCheck + runs-on: ubuntu-latest + + permissions: +diff --git a/.mergify.yml b/.mergify.yml +index be25e52c76..ddc79a1d7a 100644 +--- a/.mergify.yml ++++ b/.mergify.yml +@@ -22,24 +22,19 @@ pull_request_rules: + # CentOS CI + - -check-success=CentOS CI (CentOS Stream 9) + - -check-success=CentOS CI (CentOS Stream 9 + sanitizers) +- # LGTM +- - and: +- - "-check-success=LGTM analysis: JavaScript" +- - "-check-neutral=LGTM analysis: JavaScript" +- - and: +- - "-check-success=LGTM analysis: Python" +- - "-check-neutral=LGTM analysis: Python" +- - and: +- - "-check-success=LGTM analysis: C/C++" +- - "-check-neutral=LGTM analysis: C/C++" ++ # CodeQL ++ - -check-success=CodeQL + # Packit + - -check-success=rpm-build:centos-stream-9-aarch64 + - -check-success=rpm-build:centos-stream-9-x86_64 ++ # Other ++ - -check-success=Lint Code Base ++ - -check-success=Differential ShellCheck + actions: + label: + add: + - needs-ci +- ++ + - name: Remove `needs-ci` label on CI success + conditions: + - or: +@@ -61,20 +56,15 @@ pull_request_rules: + # CentOS CI + - check-success=CentOS CI (CentOS Stream 9) + - check-success=CentOS CI (CentOS Stream 9 + sanitizers) +- # LGTM +- - or: +- - "check-success=LGTM analysis: JavaScript" +- - "check-neutral=LGTM analysis: JavaScript" +- - or: +- - "check-success=LGTM analysis: Python" +- - "check-neutral=LGTM analysis: Python" +- - or: +- - "check-success=LGTM analysis: C/C++" +- - "check-neutral=LGTM analysis: C/C++" ++ # CodeQL ++ - check-success=CodeQL + # Packit + - check-success=rpm-build:centos-stream-9-aarch64 + - check-success=rpm-build:centos-stream-9-x86_64 ++ # Other ++ - check-success=Lint Code Base ++ - check-success=Differential ShellCheck + actions: + label: + remove: +- - needs-ci ++ - needs-ci diff --git a/SOURCES/0120-test-fix-file-descriptor-leak-in-test-tmpfiles.c.patch b/SOURCES/0120-test-fix-file-descriptor-leak-in-test-tmpfiles.c.patch deleted file mode 100644 index d670657..0000000 --- a/SOURCES/0120-test-fix-file-descriptor-leak-in-test-tmpfiles.c.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 936e8cd5aff044832c98e5a6a97c9f057f44b476 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 22 Feb 2022 21:44:58 +0900 -Subject: [PATCH] test: fix file descriptor leak in test-tmpfiles.c - -Also fixes a typo in assertion. - -Fixes an issure reported in #22576. - -(cherry picked from commit 1da5325d19dee654326e5fa2f61262e5e0a40fff) -Related: #2087652 ---- - src/test/test-tmpfiles.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/test/test-tmpfiles.c b/src/test/test-tmpfiles.c -index 99243eb77a..f26701767f 100644 ---- a/src/test/test-tmpfiles.c -+++ b/src/test/test-tmpfiles.c -@@ -35,7 +35,7 @@ TEST(tmpfiles) { - assert_se(endswith(ans, " (deleted)")); - - fd2 = mkostemp_safe(pattern); -- assert_se(fd >= 0); -+ assert_se(fd2 >= 0); - assert_se(unlink(pattern) == 0); - - assert_se(asprintf(&cmd2, "ls -l /proc/"PID_FMT"/fd/%d", getpid_cached(), fd2) > 0); -@@ -47,6 +47,7 @@ TEST(tmpfiles) { - pattern = strjoina(p, "/tmpfiles-test"); - assert_se(tempfn_random(pattern, NULL, &d) >= 0); - -+ fd = safe_close(fd); - fd = open_tmpfile_linkable(d, O_RDWR|O_CLOEXEC, &tmp); - assert_se(fd >= 0); - assert_se(write(fd, "foobar\n", 7) == 7); diff --git a/SOURCES/0121-test-fix-file-descriptor-leak-in-test-fs-util.patch b/SOURCES/0121-test-fix-file-descriptor-leak-in-test-fs-util.patch deleted file mode 100644 index 8f2a2be..0000000 --- a/SOURCES/0121-test-fix-file-descriptor-leak-in-test-fs-util.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 3ca37c58cb3ff022e029b28539fd2e3b208802fd Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 22 Feb 2022 21:42:22 +0900 -Subject: [PATCH] test: fix file descriptor leak in test-fs-util - -Fixes an issue reported in #22576. - -(cherry picked from commit 19962747ca86a25e7102c536380bb2e9d7cfee9a) -Related: #2087652 ---- - src/test/test-fs-util.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c -index 602ce75f98..f53a3ebf59 100644 ---- a/src/test/test-fs-util.c -+++ b/src/test/test-fs-util.c -@@ -29,10 +29,11 @@ static const char *arg_test_dir = NULL; - - TEST(chase_symlinks) { - _cleanup_free_ char *result = NULL; -+ _cleanup_close_ int pfd = -1; - char *temp; - const char *top, *p, *pslash, *q, *qslash; - struct stat st; -- int r, pfd; -+ int r; - - temp = strjoina(arg_test_dir ?: "/tmp", "/test-chase.XXXXXX"); - assert_se(mkdtemp(temp)); -@@ -318,6 +319,7 @@ TEST(chase_symlinks) { - assert_se(fstat(pfd, &st) >= 0); - assert_se(S_ISLNK(st.st_mode)); - result = mfree(result); -+ pfd = safe_close(pfd); - - /* s1 -> s2 -> nonexistent */ - q = strjoina(temp, "/s1"); -@@ -331,6 +333,7 @@ TEST(chase_symlinks) { - assert_se(fstat(pfd, &st) >= 0); - assert_se(S_ISLNK(st.st_mode)); - result = mfree(result); -+ pfd = safe_close(pfd); - - /* Test CHASE_STEP */ - diff --git a/SOURCES/0121-test-sd-device-skip-misc-devices.patch b/SOURCES/0121-test-sd-device-skip-misc-devices.patch new file mode 100644 index 0000000..45fd4ce --- /dev/null +++ b/SOURCES/0121-test-sd-device-skip-misc-devices.patch @@ -0,0 +1,24 @@ +From c6b52050b8da6f5e7cdd2f057141af236288e78b Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Mon, 31 Oct 2022 10:58:11 +0100 +Subject: [PATCH] test-sd-device: skip "misc" devices + +rhel-only + +Related: #2138081 +--- + src/libsystemd/sd-device/test-sd-device.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c +index 4ab8b3894a..a1bcf18059 100644 +--- a/src/libsystemd/sd-device/test-sd-device.c ++++ b/src/libsystemd/sd-device/test-sd-device.c +@@ -204,6 +204,7 @@ TEST(sd_device_enumerator_devices) { + /* On CentOS CI, systemd-networkd-tests.py may be running when this test is invoked. The networkd + * test creates and removes many network interfaces, and may interfere with this test. */ + assert_se(sd_device_enumerator_add_match_subsystem(e, "net", false) >= 0); ++ assert_se(sd_device_enumerator_add_match_subsystem(e, "misc", false) >= 0); + FOREACH_DEVICE(e, d) + test_sd_device_one(d); + } diff --git a/SOURCES/0122-test-fix-file-descriptor-leak-in-test-oomd-util.patch b/SOURCES/0122-test-fix-file-descriptor-leak-in-test-oomd-util.patch deleted file mode 100644 index 7b8ce4a..0000000 --- a/SOURCES/0122-test-fix-file-descriptor-leak-in-test-oomd-util.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 9e37cb1855c8fc1667f7e404376070952c015788 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 22 Feb 2022 21:38:15 +0900 -Subject: [PATCH] test: fix file descriptor leak in test-oomd-util - -Fixes an issue reported in #22576. - -(cherry picked from commit 282696ce52471f5e3c963b9d98dbc89fba3a1fba) -Related: #2087652 ---- - src/oom/test-oomd-util.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/oom/test-oomd-util.c b/src/oom/test-oomd-util.c -index 265e77c0a2..0252ceecd7 100644 ---- a/src/oom/test-oomd-util.c -+++ b/src/oom/test-oomd-util.c -@@ -5,6 +5,7 @@ - #include "alloc-util.h" - #include "cgroup-setup.h" - #include "cgroup-util.h" -+#include "fd-util.h" - #include "fileio.h" - #include "fs-util.h" - #include "oomd-util.h" -@@ -13,6 +14,7 @@ - #include "string-util.h" - #include "strv.h" - #include "tests.h" -+#include "tmpfile-util.h" - - static int fork_and_sleep(unsigned sleep_min) { - usec_t n, timeout, ts; -@@ -244,12 +246,13 @@ static void test_oomd_update_cgroup_contexts_between_hashmaps(void) { - - static void test_oomd_system_context_acquire(void) { - _cleanup_(unlink_tempfilep) char path[] = "/oomdgetsysctxtestXXXXXX"; -+ _cleanup_close_ int fd = -1; - OomdSystemContext ctx; - - if (geteuid() != 0) - return (void) log_tests_skipped("not root"); - -- assert_se(mkstemp(path)); -+ assert_se((fd = mkostemp_safe(path)) >= 0); - - assert_se(oomd_system_context_acquire("/verylikelynonexistentpath", &ctx) == -ENOENT); - diff --git a/SOURCES/0122-test-skip-test_ntp-if-systemd-timesyncd-is-not-avail.patch b/SOURCES/0122-test-skip-test_ntp-if-systemd-timesyncd-is-not-avail.patch new file mode 100644 index 0000000..48646bd --- /dev/null +++ b/SOURCES/0122-test-skip-test_ntp-if-systemd-timesyncd-is-not-avail.patch @@ -0,0 +1,29 @@ +From 5488431dcbea41bec11f0b1ad0a3769489f68c39 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Wed, 23 Nov 2022 15:16:41 +0100 +Subject: [PATCH] test: skip test_ntp if systemd-timesyncd is not available + +We don't ship timesyncd on RHEL, so let's skip the test there. + +rhel-only +Related: #2138081 +--- + test/units/testsuite-45.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh +index 24e888c587..7e757e4b00 100755 +--- a/test/units/testsuite-45.sh ++++ b/test/units/testsuite-45.sh +@@ -201,6 +201,11 @@ wait_mon() { + } + + test_ntp() { ++ if ! systemctl list-unit-files -q systemd-timesyncd.service; then ++ echo "systemd-timesyncd is not available, skipping the test..." ++ return 0 ++ fi ++ + # timesyncd has ConditionVirtualization=!container by default; drop/mock that for testing + if systemd-detect-virt --container --quiet; then + systemctl disable --quiet --now systemd-timesyncd diff --git a/SOURCES/0123-test-accept-EPERM-for-unavailable-idmapped-mounts-as.patch b/SOURCES/0123-test-accept-EPERM-for-unavailable-idmapped-mounts-as.patch new file mode 100644 index 0000000..2418174 --- /dev/null +++ b/SOURCES/0123-test-accept-EPERM-for-unavailable-idmapped-mounts-as.patch @@ -0,0 +1,26 @@ +From d2ccb0bf2b2078e13fc4cb1c2e2eb8079fa57df0 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 24 Nov 2022 15:19:59 +0100 +Subject: [PATCH] test: accept EPERM for unavailable idmapped mounts as well + +Follow-up for 3c54c67a7fc65dc5b49b2452739c19b94eeb98a9. + +rhel-only +Related: #2138081 +--- + test/units/testsuite-13.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/units/testsuite-13.sh b/test/units/testsuite-13.sh +index 4ad7431e42..2b6e6df8a3 100755 +--- a/test/units/testsuite-13.sh ++++ b/test/units/testsuite-13.sh +@@ -74,7 +74,7 @@ function check_rootidmap { + --register=no -D "$_root" \ + --bind=/tmp/rootidmapdir:/mnt:rootidmap \ + /bin/sh -c "$_command" |& tee nspawn.out; then +- if grep -q "Failed to map ids for bind mount.*: Function not implemented" nspawn.out; then ++ if grep -Eq "Failed to map ids for bind mount.*: (Function not implemented|Operation not permitted)" nspawn.out; then + echo "idmapped mounts are not supported, skipping the test..." + return 0 + fi diff --git a/SOURCES/0123-test-fix-file-descriptor-leak-in-test-catalog.patch b/SOURCES/0123-test-fix-file-descriptor-leak-in-test-catalog.patch deleted file mode 100644 index 58b7423..0000000 --- a/SOURCES/0123-test-fix-file-descriptor-leak-in-test-catalog.patch +++ /dev/null @@ -1,34 +0,0 @@ -From d947339b49eb7935ce282e808a7e75a6098d088a Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 22 Feb 2022 21:11:51 +0900 -Subject: [PATCH] test: fix file descriptor leak in test-catalog - -Fixes an issue reported in #22576. - -(cherry picked from commit 62d4b3b36e9aba9e605ba042a75c374155b6e18b) -Related: #2087652 ---- - src/libsystemd/sd-journal/test-catalog.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/libsystemd/sd-journal/test-catalog.c b/src/libsystemd/sd-journal/test-catalog.c -index 316c3b1634..ad06221175 100644 ---- a/src/libsystemd/sd-journal/test-catalog.c -+++ b/src/libsystemd/sd-journal/test-catalog.c -@@ -196,6 +196,7 @@ static void test_catalog_file_lang(void) { - - int main(int argc, char *argv[]) { - _cleanup_(unlink_tempfilep) char database[] = "/tmp/test-catalog.XXXXXX"; -+ _cleanup_close_ int fd = -1; - _cleanup_free_ char *text = NULL; - int r; - -@@ -218,7 +219,7 @@ int main(int argc, char *argv[]) { - test_catalog_import_merge(); - test_catalog_import_merge_no_body(); - -- assert_se(mkostemp_safe(database) >= 0); -+ assert_se((fd = mkostemp_safe(database)) >= 0); - - test_catalog_update(database); - diff --git a/SOURCES/0124-test-don-t-test-buses-we-don-t-ship.patch b/SOURCES/0124-test-don-t-test-buses-we-don-t-ship.patch new file mode 100644 index 0000000..011e419 --- /dev/null +++ b/SOURCES/0124-test-don-t-test-buses-we-don-t-ship.patch @@ -0,0 +1,52 @@ +From a8a0c31123f7a8c1c317bb1a83548f15b02974d0 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 24 Nov 2022 15:23:12 +0100 +Subject: [PATCH] test: don't test buses we don't ship + +rhel-only +Related: #2138081 +--- + test/units/testsuite-21.sh | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) + +diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh +index d931e63167..e7d97ae06e 100755 +--- a/test/units/testsuite-21.sh ++++ b/test/units/testsuite-21.sh +@@ -27,13 +27,13 @@ systemctl log-level info + # TODO + # * check for possibly newly introduced buses? + BUS_LIST=( +- org.freedesktop.home1 ++# org.freedesktop.home1 + org.freedesktop.hostname1 + org.freedesktop.import1 + org.freedesktop.locale1 + org.freedesktop.login1 + org.freedesktop.machine1 +- org.freedesktop.portable1 ++# org.freedesktop.portable1 + org.freedesktop.resolve1 + org.freedesktop.systemd1 + org.freedesktop.timedate1 +@@ -46,20 +46,6 @@ if tail -n +1 /proc/pressure/{cpu,io,memory}; then + ) + fi + +-# Some services require specific conditions: +-# - systemd-timesyncd can't run in a container +-# - systemd-networkd can run in a container if it has CAP_NET_ADMIN capability +-if ! systemd-detect-virt --container; then +- BUS_LIST+=( +- org.freedesktop.network1 +- org.freedesktop.timesync1 +- ) +-elif busctl introspect org.freedesktop.network1 / &>/dev/null; then +- BUS_LIST+=( +- org.freedesktop.network1 +- ) +-fi +- + SESSION_BUS_LIST=( + org.freedesktop.systemd1 + ) diff --git a/SOURCES/0124-test-make-masking-of-supplementary-services-configur.patch b/SOURCES/0124-test-make-masking-of-supplementary-services-configur.patch deleted file mode 100644 index 8464645..0000000 --- a/SOURCES/0124-test-make-masking-of-supplementary-services-configur.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 4197469aa26e8e3e61c859341002e37bde751ada Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 16 Feb 2022 20:29:14 +0100 -Subject: [PATCH] test: make masking of supplementary services configurable - -(cherry picked from commit 508a7f04b345878dcd8365ff0ded5f87b18d75fa) - -Related: #2087652 ---- - test/TEST-01-BASIC/test.sh | 1 + - test/test-functions | 6 +++--- - 2 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh -index a790cd78ac..cc6d0651c1 100755 ---- a/test/TEST-01-BASIC/test.sh -+++ b/test/TEST-01-BASIC/test.sh -@@ -6,6 +6,7 @@ TEST_DESCRIPTION="Basic systemd setup" - IMAGE_NAME="basic" - RUN_IN_UNPRIVILEGED_CONTAINER=${RUN_IN_UNPRIVILEGED_CONTAINER:-yes} - TEST_REQUIRE_INSTALL_TESTS=0 -+TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED=0 - - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" -diff --git a/test/test-functions b/test/test-functions -index 7c37d05610..44f465c914 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -40,6 +40,7 @@ IMAGE_NAME=${IMAGE_NAME:-default} - STRIP_BINARIES="${STRIP_BINARIES:-yes}" - TEST_REQUIRE_INSTALL_TESTS="${TEST_REQUIRE_INSTALL_TESTS:-1}" - TEST_PARALLELIZE="${TEST_PARALLELIZE:-0}" -+TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED="${TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED:-1}" - LOOPDEV= - - # Simple wrapper to unify boolean checks. -@@ -2787,9 +2788,8 @@ test_setup() { - fi - - mount_initdir -- # We want to test all services in TEST-01-BASIC, but mask them in -- # all other tests -- if [[ "${TESTID:?}" != "01" ]]; then -+ -+ if get_bool "${TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED}"; then - dinfo "Masking supporting services" - mask_supporting_services - fi diff --git a/SOURCES/0125-basic-add-fallback-in-chase_symlinks_and_opendir-for.patch b/SOURCES/0125-basic-add-fallback-in-chase_symlinks_and_opendir-for.patch new file mode 100644 index 0000000..f67e0f5 --- /dev/null +++ b/SOURCES/0125-basic-add-fallback-in-chase_symlinks_and_opendir-for.patch @@ -0,0 +1,43 @@ +From 47c0c5108b39d01283ba040c41d556b160d45a55 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Wed, 30 Nov 2022 18:01:01 +0100 +Subject: [PATCH] basic: add fallback in chase_symlinks_and_opendir() for cases + when /proc is not mounted + +rhel-only + +Related: #2138081 +--- + src/basic/chase-symlinks.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/src/basic/chase-symlinks.c b/src/basic/chase-symlinks.c +index afab54f067..c09aab389e 100644 +--- a/src/basic/chase-symlinks.c ++++ b/src/basic/chase-symlinks.c +@@ -466,14 +466,22 @@ int chase_symlinks_and_opendir( + return 0; + } + +- r = chase_symlinks(path, root, chase_flags, ret_path ? &p : NULL, &path_fd); ++ r = chase_symlinks(path, root, chase_flags, &p, &path_fd); + if (r < 0) + return r; + assert(path_fd >= 0); + + d = opendir(FORMAT_PROC_FD_PATH(path_fd)); +- if (!d) +- return -errno; ++ if (!d) { ++ /* Hmm, we have the fd already but we got ENOENT, most likely /proc is not mounted. ++ * Let's try opendir() again on the full path. */ ++ if (errno == ENOENT) { ++ d = opendir(p); ++ if (!d) ++ return -errno; ++ } else ++ return -errno; ++ } + + if (ret_path) + *ret_path = TAKE_PTR(p); diff --git a/SOURCES/0125-test-fuzz-our-dbus-interfaces-with-dfuzzer.patch b/SOURCES/0125-test-fuzz-our-dbus-interfaces-with-dfuzzer.patch deleted file mode 100644 index 1c63c5a..0000000 --- a/SOURCES/0125-test-fuzz-our-dbus-interfaces-with-dfuzzer.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 25338c37915521876c84bca196de50d73c3c17ea Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 13 Dec 2021 20:50:28 +0100 -Subject: [PATCH] test: fuzz our dbus interfaces with dfuzzer - -(cherry picked from commit 354b3364aa63620a0f732bb8a6fe9332a4f550e4) - -Related: #2087652 ---- - test/TEST-21-DFUZZER/Makefile | 1 + - test/TEST-21-DFUZZER/test.sh | 24 +++++++++ - test/test-functions | 1 + - test/units/testsuite-21.service | 10 ++++ - test/units/testsuite-21.sh | 94 +++++++++++++++++++++++++++++++++ - 5 files changed, 130 insertions(+) - create mode 120000 test/TEST-21-DFUZZER/Makefile - create mode 100755 test/TEST-21-DFUZZER/test.sh - create mode 100644 test/units/testsuite-21.service - create mode 100755 test/units/testsuite-21.sh - -diff --git a/test/TEST-21-DFUZZER/Makefile b/test/TEST-21-DFUZZER/Makefile -new file mode 120000 -index 0000000000..e9f93b1104 ---- /dev/null -+++ b/test/TEST-21-DFUZZER/Makefile -@@ -0,0 +1 @@ -+../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-21-DFUZZER/test.sh b/test/TEST-21-DFUZZER/test.sh -new file mode 100755 -index 0000000000..ecc04e368c ---- /dev/null -+++ b/test/TEST-21-DFUZZER/test.sh -@@ -0,0 +1,24 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="Fuzz our D-Bus interfaces with dfuzzer" -+TEST_NO_NSPAWN=1 -+TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED=0 -+QEMU_TIMEOUT="${QEMU_TIMEOUT:-1800}" -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+command -v dfuzzer >/dev/null || exit 0 -+ -+test_append_files() { -+ local workspace="${1:?}" -+ -+ image_install dfuzzer /etc/dfuzzer.conf -+ -+ # Enable all systemd-related services, including the D-Bus ones -+ "$SYSTEMCTL" --root="${workspace:?}" preset-all -+} -+ -+do_test "$@" -diff --git a/test/test-functions b/test/test-functions -index 44f465c914..079a7249e4 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -99,6 +99,7 @@ SYSTEMD_JOURNAL_REMOTE="${SYSTEMD_JOURNAL_REMOTE:-$(command -v "$BUILD_DIR/syste - SYSTEMD="${SYSTEMD:-$(command -v "$BUILD_DIR/systemd" || command -v "$ROOTLIBDIR/systemd")}" - SYSTEMD_NSPAWN="${SYSTEMD_NSPAWN:-$(command -v "$BUILD_DIR/systemd-nspawn" || command -v systemd-nspawn)}" - JOURNALCTL="${JOURNALCTL:-$(command -v "$BUILD_DIR/journalctl" || command -v journalctl)}" -+SYSTEMCTL="${SYSTEMCTL:-$(command -v "$BUILD_DIR/systemctl" || command -v systemctl)}" - - TESTFILE="${BASH_SOURCE[1]}" - if [ -z "$TESTFILE" ]; then -diff --git a/test/units/testsuite-21.service b/test/units/testsuite-21.service -new file mode 100644 -index 0000000000..a5f77d07b4 ---- /dev/null -+++ b/test/units/testsuite-21.service -@@ -0,0 +1,10 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=Fuzz our D-Bus interfaces with dfuzzer -+After=dbus.service multi-user.target -+Wants=dbus.service multi-user.target -+ -+[Service] -+ExecStartPre=rm -f /failed /skipped /testok -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -+Type=oneshot -diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh -new file mode 100755 -index 0000000000..43b5fb6f22 ---- /dev/null -+++ b/test/units/testsuite-21.sh -@@ -0,0 +1,94 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -eux -+set -o pipefail -+ -+# Save the end.service state before we start fuzzing, as it might get changed -+# on the fly by one of the fuzzers -+systemctl list-jobs | grep -F 'end.service' && SHUTDOWN_AT_EXIT=1 || SHUTDOWN_AT_EXIT=0 -+ -+at_exit() { -+ # "Safety net" - check for any coredumps which might have not caused dfuzzer -+ # to stop & return an error (we need to do this now before truncating the -+ # journal) -+ # TODO: check fo ASan/UBSan errors -+ local found_cd=0 -+ while read -r exe; do -+ coredumctl info "$exe" -+ found_cd=1 -+ done < <(coredumpctl -F COREDUMP_EXE | sort -u) -+ [[ $found_cd -eq 0 ]] || exit 1 -+ -+ # We have to call the end.service explicitly even if it's specified on -+ # the kernel cmdline via systemd.wants=end.service, since dfuzzer calls -+ # org.freedesktop.systemd1.Manager.ClearJobs() which drops the service -+ # from the queue -+ [[ $SHUTDOWN_AT_EXIT -ne 0 ]] && systemctl start --job-mode=flush end.service -+} -+ -+trap at_exit EXIT -+ -+systemctl log-level info -+ -+# TODO -+# * check for possibly newly introduced buses? -+BUS_LIST=( -+ org.freedesktop.home1 -+ org.freedesktop.hostname1 -+ org.freedesktop.import1 -+ org.freedesktop.locale1 -+ org.freedesktop.login1 -+ org.freedesktop.machine1 -+ org.freedesktop.network1 -+ org.freedesktop.portable1 -+ org.freedesktop.resolve1 -+ org.freedesktop.systemd1 -+ org.freedesktop.timedate1 -+ org.freedesktop.timesync1 -+) -+ -+# systemd-oomd requires PSI -+if tail -n +1 /proc/pressure/{cpu,io,memory}; then -+ BUS_LIST+=(org.freedesktop.oom1) -+fi -+ -+SESSION_BUS_LIST=( -+ org.freedesktop.systemd1 -+) -+ -+# Maximum payload size generated by dfuzzer (in bytes) - default: 50K -+PAYLOAD_MAX=50000 -+# Tweak the maximum payload size if we're running under sanitizers, since -+# with larger payloads we start hitting reply timeouts -+if [[ -v ASAN_OPTIONS || -v UBSAN_OPTIONS ]]; then -+ PAYLOAD_MAX=10000 # 10K -+fi -+ -+# Overmount /var/lib/machines with a size-limited tmpfs, as fuzzing -+# the org.freedesktop.machine1 stuff makes quite a mess -+mount -t tmpfs -o size=50M tmpfs /var/lib/machines -+ -+# Fuzz both the system and the session buses (where applicable) -+for bus in "${BUS_LIST[@]}"; do -+ echo "Bus: $bus (system)" -+ systemd-run --pipe --wait \ -+ -- dfuzzer -v -b "$PAYLOAD_MAX" -n "$bus" -+ -+ # Let's reload the systemd daemon to test (de)serialization as well -+ systemctl daemon-reload -+done -+ -+umount /var/lib/machines -+ -+for bus in "${SESSION_BUS_LIST[@]}"; do -+ echo "Bus: $bus (session)" -+ systemd-run --machine 'testuser@.host' --user --pipe --wait \ -+ -- dfuzzer -v -b "$PAYLOAD_MAX" -n "$bus" -+ -+ # Let's reload the systemd user daemon to test (de)serialization as well -+ systemctl --machine 'testuser@.host' --user daemon-reload -+done -+ -+echo OK >/testok -+ -+exit 0 diff --git a/SOURCES/0126-test-check-if-we-can-use-SHA1-MD-for-signing-before-.patch b/SOURCES/0126-test-check-if-we-can-use-SHA1-MD-for-signing-before-.patch new file mode 100644 index 0000000..ba13b70 --- /dev/null +++ b/SOURCES/0126-test-check-if-we-can-use-SHA1-MD-for-signing-before-.patch @@ -0,0 +1,69 @@ +From 17cc25a2d7c2ebe75e18cf813d539e5997610e25 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Fri, 2 Dec 2022 12:48:26 +0100 +Subject: [PATCH] test: check if we can use SHA1 MD for signing before using it + +Some distributions have started phasing out SHA1, which breaks +the systemd-measure test case in its current form. Let's make sure we +can use SHA1 for signing beforehand to mitigate this. + +Spotted on RHEL 9, where SHA1 signatures are disallowed by [0]: +``` +openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out "/tmp/pcrsign-private.pem" +... +openssl rsa -pubout -in "/tmp/pcrsign-private.pem" -out "/tmp/pcrsign-public.pem" +writing RSA key +/usr/lib/systemd/systemd-measure sign --current --bank=sha1 --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" +Failed to initialize signature context. +``` + +[0] https://gitlab.com/redhat/centos-stream/rpms/openssl/-/blob/c9s/0049-Selectively-disallow-SHA1-signatures.patch + +(cherry picked from commit d19e5540f20c78caa949ff33050b4a530cae1982) + +Related: #2141979 +--- + test/units/testsuite-70.sh | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/test/units/testsuite-70.sh b/test/units/testsuite-70.sh +index b1cf7e83c4..89cd2a3f82 100755 +--- a/test/units/testsuite-70.sh ++++ b/test/units/testsuite-70.sh +@@ -102,8 +102,17 @@ if [ -e /usr/lib/systemd/systemd-measure ] && \ + openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out "/tmp/pcrsign-private.pem" + openssl rsa -pubout -in "/tmp/pcrsign-private.pem" -out "/tmp/pcrsign-public.pem" + ++ MEASURE_BANKS=("--bank=sha256") ++ # Check if SHA1 signatures are supported ++ # ++ # Some distros have started phasing out SHA1, so make sure the SHA1 ++ # signatures are supported before trying to use them. ++ if echo hello | openssl dgst -sign /tmp/pcrsign-private.pem -sha1 >/dev/null; then ++ MEASURE_BANKS+=("--bank=sha1") ++ fi ++ + # Sign current PCR state with it +- /usr/lib/systemd/systemd-measure sign --current --bank=sha1 --bank=sha256 --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: | tee "/tmp/pcrsign.sig" ++ /usr/lib/systemd/systemd-measure sign --current "${MEASURE_BANKS[@]}" --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: | tee "/tmp/pcrsign.sig" + dd if=/dev/urandom of=/tmp/pcrtestdata bs=1024 count=64 + systemd-creds encrypt /tmp/pcrtestdata /tmp/pcrtestdata.encrypted --with-key=host+tpm2-with-public-key --tpm2-public-key="/tmp/pcrsign-public.pem" + systemd-creds decrypt /tmp/pcrtestdata.encrypted - --tpm2-signature="/tmp/pcrsign.sig" | cmp - /tmp/pcrtestdata +@@ -113,7 +122,7 @@ if [ -e /usr/lib/systemd/systemd-measure ] && \ + systemd-creds decrypt /tmp/pcrtestdata.encrypted - --tpm2-signature="/tmp/pcrsign.sig" > /dev/null && { echo 'unexpected success'; exit 1; } + + # Sign new PCR state, decrypting should work now. +- /usr/lib/systemd/systemd-measure sign --current --bank=sha1 --bank=sha256 --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: > "/tmp/pcrsign.sig2" ++ /usr/lib/systemd/systemd-measure sign --current "${MEASURE_BANKS[@]}" --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: > "/tmp/pcrsign.sig2" + systemd-creds decrypt /tmp/pcrtestdata.encrypted - --tpm2-signature="/tmp/pcrsign.sig2" | cmp - /tmp/pcrtestdata + + # Now, do the same, but with a cryptsetup binding +@@ -135,7 +144,7 @@ if [ -e /usr/lib/systemd/systemd-measure ] && \ + SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=1 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig2",headless=1 && { echo 'unexpected success'; exit 1; } + + # But once we sign the current PCRs, we should be able to unlock again +- /usr/lib/systemd/systemd-measure sign --current --bank=sha1 --bank=sha256 --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: > "/tmp/pcrsign.sig3" ++ /usr/lib/systemd/systemd-measure sign --current "${MEASURE_BANKS[@]}" --private-key="/tmp/pcrsign-private.pem" --public-key="/tmp/pcrsign-public.pem" --phase=: > "/tmp/pcrsign.sig3" + SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=0 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig3",headless=1 + /usr/lib/systemd/systemd-cryptsetup detach test-volume2 + SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=1 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig3",headless=1 diff --git a/SOURCES/0126-test-skip-TEST-21-DFUZZER-without-ASan.patch b/SOURCES/0126-test-skip-TEST-21-DFUZZER-without-ASan.patch deleted file mode 100644 index 90ee4f4..0000000 --- a/SOURCES/0126-test-skip-TEST-21-DFUZZER-without-ASan.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 8f848593293b69f293734e07ec975ee76a3e6df5 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sun, 19 Jun 2022 10:39:12 +0200 -Subject: [PATCH] test: skip TEST-21-DFUZZER without ASan - -as the test is quite time consuming and it yields more useful reports -when the target app is built with sanitizers. - -(cherry picked from commit d768243a95c33e73afe9a7e487acf329884e03c1) - -Related: #2087652 ---- - test/TEST-21-DFUZZER/test.sh | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/test/TEST-21-DFUZZER/test.sh b/test/TEST-21-DFUZZER/test.sh -index ecc04e368c..42e37c8a9c 100755 ---- a/test/TEST-21-DFUZZER/test.sh -+++ b/test/TEST-21-DFUZZER/test.sh -@@ -12,6 +12,11 @@ QEMU_TIMEOUT="${QEMU_TIMEOUT:-1800}" - - command -v dfuzzer >/dev/null || exit 0 - -+if ! get_bool "$IS_BUILT_WITH_ASAN"; then -+ echo "systemd is built without ASan, skipping..." -+ exit 0 -+fi -+ - test_append_files() { - local workspace="${1:?}" - diff --git a/SOURCES/0127-boot-cleanups-for-efivar_get-and-friends.patch b/SOURCES/0127-boot-cleanups-for-efivar_get-and-friends.patch new file mode 100644 index 0000000..e7145dd --- /dev/null +++ b/SOURCES/0127-boot-cleanups-for-efivar_get-and-friends.patch @@ -0,0 +1,188 @@ +From a83ec37232ca1ea817b3446b905f9e880223de21 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 6 Dec 2022 13:06:57 +0900 +Subject: [PATCH] boot: cleanups for efivar_get() and friends + +- rename function arguments for storing results, and support the case + that they are NULL, +- return earlier on error, +- always validate read size in efivar_get_uint32_le() and efivar_get_uint64_le(). + +(cherry picked from commit 9e406b1141da2d93b73428910f2504850631a3ee) + +Related: #2141979 +--- + src/boot/efi/util.c | 63 ++++++++++++++++++++++++--------------------- + src/boot/efi/util.h | 6 ++--- + 2 files changed, 37 insertions(+), 32 deletions(-) + +diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c +index 57436dbf0c..3eba2ade07 100644 +--- a/src/boot/efi/util.c ++++ b/src/boot/efi/util.c +@@ -91,7 +91,7 @@ EFI_STATUS efivar_set_uint64_le(const EFI_GUID *vendor, const char16_t *name, ui + return efivar_set_raw(vendor, name, buf, sizeof(buf), flags); + } + +-EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **value) { ++EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **ret) { + _cleanup_free_ char16_t *buf = NULL; + EFI_STATUS err; + char16_t *val; +@@ -108,12 +108,12 @@ EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **v + if ((size % sizeof(char16_t)) != 0) + return EFI_INVALID_PARAMETER; + +- if (!value) ++ if (!ret) + return EFI_SUCCESS; + + /* Return buffer directly if it happens to be NUL terminated already */ + if (size >= sizeof(char16_t) && buf[size / sizeof(char16_t) - 1] == 0) { +- *value = TAKE_PTR(buf); ++ *ret = TAKE_PTR(buf); + return EFI_SUCCESS; + } + +@@ -123,18 +123,17 @@ EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **v + memcpy(val, buf, size); + val[size / sizeof(char16_t) - 1] = 0; /* NUL terminate */ + +- *value = val; ++ *ret = val; + return EFI_SUCCESS; + } + +-EFI_STATUS efivar_get_uint_string(const EFI_GUID *vendor, const char16_t *name, UINTN *i) { ++EFI_STATUS efivar_get_uint_string(const EFI_GUID *vendor, const char16_t *name, UINTN *ret) { + _cleanup_free_ char16_t *val = NULL; + EFI_STATUS err; + uint64_t u; + + assert(vendor); + assert(name); +- assert(i); + + err = efivar_get(vendor, name, &val); + if (err != EFI_SUCCESS) +@@ -143,7 +142,8 @@ EFI_STATUS efivar_get_uint_string(const EFI_GUID *vendor, const char16_t *name, + if (!parse_number16(val, &u, NULL) || u > UINTN_MAX) + return EFI_INVALID_PARAMETER; + +- *i = u; ++ if (ret) ++ *ret = u; + return EFI_SUCCESS; + } + +@@ -156,15 +156,17 @@ EFI_STATUS efivar_get_uint32_le(const EFI_GUID *vendor, const char16_t *name, ui + assert(name); + + err = efivar_get_raw(vendor, name, &buf, &size); +- if (err == EFI_SUCCESS && ret) { +- if (size != sizeof(uint32_t)) +- return EFI_BUFFER_TOO_SMALL; ++ if (err != EFI_SUCCESS) ++ return err; + ++ if (size != sizeof(uint32_t)) ++ return EFI_BUFFER_TOO_SMALL; ++ ++ if (ret) + *ret = (uint32_t) buf[0] << 0U | (uint32_t) buf[1] << 8U | (uint32_t) buf[2] << 16U | + (uint32_t) buf[3] << 24U; +- } + +- return err; ++ return EFI_SUCCESS; + } + + EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const char16_t *name, uint64_t *ret) { +@@ -176,19 +178,21 @@ EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const char16_t *name, ui + assert(name); + + err = efivar_get_raw(vendor, name, &buf, &size); +- if (err == EFI_SUCCESS && ret) { +- if (size != sizeof(uint64_t)) +- return EFI_BUFFER_TOO_SMALL; ++ if (err != EFI_SUCCESS) ++ return err; ++ ++ if (size != sizeof(uint64_t)) ++ return EFI_BUFFER_TOO_SMALL; + ++ if (ret) + *ret = (uint64_t) buf[0] << 0U | (uint64_t) buf[1] << 8U | (uint64_t) buf[2] << 16U | + (uint64_t) buf[3] << 24U | (uint64_t) buf[4] << 32U | (uint64_t) buf[5] << 40U | + (uint64_t) buf[6] << 48U | (uint64_t) buf[7] << 56U; +- } + +- return err; ++ return EFI_SUCCESS; + } + +-EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const char16_t *name, char **buffer, UINTN *size) { ++EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const char16_t *name, char **ret, UINTN *ret_size) { + _cleanup_free_ char *buf = NULL; + UINTN l; + EFI_STATUS err; +@@ -200,16 +204,15 @@ EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const char16_t *name, char **b + buf = xmalloc(l); + + err = RT->GetVariable((char16_t *) name, (EFI_GUID *) vendor, NULL, &l, buf); +- if (err == EFI_SUCCESS) { +- +- if (buffer) +- *buffer = TAKE_PTR(buf); ++ if (err != EFI_SUCCESS) ++ return err; + +- if (size) +- *size = l; +- } ++ if (ret) ++ *ret = TAKE_PTR(buf); ++ if (ret_size) ++ *ret_size = l; + +- return err; ++ return EFI_SUCCESS; + } + + EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, bool *ret) { +@@ -219,13 +222,15 @@ EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, b + + assert(vendor); + assert(name); +- assert(ret); + + err = efivar_get_raw(vendor, name, &b, &size); +- if (err == EFI_SUCCESS) ++ if (err != EFI_SUCCESS) ++ return err; ++ ++ if (ret) + *ret = *b > 0; + +- return err; ++ return EFI_SUCCESS; + } + + void efivar_set_time_usec(const EFI_GUID *vendor, const char16_t *name, uint64_t usec) { +diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h +index b33c50f9fc..994cf52ad6 100644 +--- a/src/boot/efi/util.h ++++ b/src/boot/efi/util.h +@@ -105,9 +105,9 @@ EFI_STATUS efivar_set_uint32_le(const EFI_GUID *vendor, const char16_t *NAME, ui + EFI_STATUS efivar_set_uint64_le(const EFI_GUID *vendor, const char16_t *name, uint64_t value, uint32_t flags); + void efivar_set_time_usec(const EFI_GUID *vendor, const char16_t *name, uint64_t usec); + +-EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **value); +-EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const char16_t *name, char **buffer, UINTN *size); +-EFI_STATUS efivar_get_uint_string(const EFI_GUID *vendor, const char16_t *name, UINTN *i); ++EFI_STATUS efivar_get(const EFI_GUID *vendor, const char16_t *name, char16_t **ret); ++EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const char16_t *name, char **ret, UINTN *ret_size); ++EFI_STATUS efivar_get_uint_string(const EFI_GUID *vendor, const char16_t *name, UINTN *ret); + EFI_STATUS efivar_get_uint32_le(const EFI_GUID *vendor, const char16_t *name, uint32_t *ret); + EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const char16_t *name, uint64_t *ret); + EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, bool *ret); diff --git a/SOURCES/0127-core-annotate-Reexecute-as-NoReply.patch b/SOURCES/0127-core-annotate-Reexecute-as-NoReply.patch deleted file mode 100644 index eaebcb5..0000000 --- a/SOURCES/0127-core-annotate-Reexecute-as-NoReply.patch +++ /dev/null @@ -1,41 +0,0 @@ -From fc6e005962167c26b9ef6cdd9e3476abeeb47313 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 9 May 2022 23:43:40 +0200 -Subject: [PATCH] core: annotate Reexecute() as NoReply - -So we're able to tell from the introspection data that the method -doesn't reply. - -(cherry picked from commit 624f685fe8ff1a90370e02faf60d0292a8e01f26) - -Related: #2087652 ---- - man/org.freedesktop.systemd1.xml | 1 + - src/core/dbus-manager.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml -index bd69a00b57..e1abb7f389 100644 ---- a/man/org.freedesktop.systemd1.xml -+++ b/man/org.freedesktop.systemd1.xml -@@ -169,6 +169,7 @@ node /org/freedesktop/systemd1 { - Dump(out s output); - DumpByFileDescriptor(out h fd); - Reload(); -+ @org.freedesktop.DBus.Method.NoReply("true") - Reexecute(); - @org.freedesktop.systemd1.Privileged("true") - Exit(); -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 9b64a8074d..1a3098ceb1 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -3105,7 +3105,7 @@ const sd_bus_vtable bus_manager_vtable[] = { - NULL, - NULL, - method_reexecute, -- SD_BUS_VTABLE_UNPRIVILEGED), -+ SD_BUS_VTABLE_UNPRIVILEGED|SD_BUS_VTABLE_METHOD_NO_REPLY), - SD_BUS_METHOD("Exit", - NULL, - NULL, diff --git a/SOURCES/0128-boot-fix-false-maybe-uninitialized-warning.patch b/SOURCES/0128-boot-fix-false-maybe-uninitialized-warning.patch new file mode 100644 index 0000000..79a9734 --- /dev/null +++ b/SOURCES/0128-boot-fix-false-maybe-uninitialized-warning.patch @@ -0,0 +1,64 @@ +From fdb8d8dee1821dc91c44b8f8195f959b9eae12ee Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 6 Dec 2022 12:57:43 +0900 +Subject: [PATCH] boot: fix false maybe-uninitialized warning + +Fixes #25641. + +(cherry picked from commit febe556191c739fb79a22cf742dd447c75e90446) + +Related: #2141979 +--- + src/boot/efi/boot.c | 4 ++-- + src/boot/efi/cpio.c | 2 +- + src/boot/efi/secure-boot.c | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index b490a1d972..db6ca97df4 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -1572,7 +1572,7 @@ static EFI_STATUS efivar_get_timeout(const char16_t *var, uint32_t *ret_value) { + + static void config_load_defaults(Config *config, EFI_FILE *root_dir) { + _cleanup_free_ char *content = NULL; +- UINTN value; ++ UINTN value = 0; /* avoid false maybe-uninitialized warning */ + EFI_STATUS err; + + assert(root_dir); +@@ -2258,7 +2258,7 @@ static void config_load_xbootldr( + EFI_HANDLE *device) { + + _cleanup_(file_closep) EFI_FILE *root_dir = NULL; +- EFI_HANDLE new_device; ++ EFI_HANDLE new_device = NULL; /* avoid false maybe-uninitialized warning */ + EFI_STATUS err; + + assert(config); +diff --git a/src/boot/efi/cpio.c b/src/boot/efi/cpio.c +index 648f9f000f..1dbfe5f380 100644 +--- a/src/boot/efi/cpio.c ++++ b/src/boot/efi/cpio.c +@@ -485,7 +485,7 @@ EFI_STATUS pack_cpio( + + for (UINTN i = 0; i < n_items; i++) { + _cleanup_free_ char *content = NULL; +- UINTN contentsize; ++ UINTN contentsize = 0; /* avoid false maybe-uninitialized warning */ + + err = file_read(extra_dir, items[i], 0, 0, &content, &contentsize); + if (err != EFI_SUCCESS) { +diff --git a/src/boot/efi/secure-boot.c b/src/boot/efi/secure-boot.c +index 65457bf423..6212868134 100644 +--- a/src/boot/efi/secure-boot.c ++++ b/src/boot/efi/secure-boot.c +@@ -6,7 +6,7 @@ + #include "util.h" + + bool secure_boot_enabled(void) { +- bool secure; ++ bool secure = false; /* avoid false maybe-uninitialized warning */ + EFI_STATUS err; + + err = efivar_get_boolean_u8(EFI_GLOBAL_GUID, L"SecureBoot", &secure); diff --git a/SOURCES/0128-test-always-force-a-new-image-for-dfuzzer.patch b/SOURCES/0128-test-always-force-a-new-image-for-dfuzzer.patch deleted file mode 100644 index 60da622..0000000 --- a/SOURCES/0128-test-always-force-a-new-image-for-dfuzzer.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e162696827d97449e6395fc017fe6865aa6f1ad1 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 21 Jun 2022 10:01:30 +0200 -Subject: [PATCH] test: always force a new image for dfuzzer - -Otherwise we might end up with an image containing broken service -symlinks and other things, which break certain parts of the test. - -(cherry picked from commit 5dffa6b032168305213e4fb0d72fb02363acfd65) - -Related: #2087652 ---- - test/TEST-21-DFUZZER/test.sh | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/test/TEST-21-DFUZZER/test.sh b/test/TEST-21-DFUZZER/test.sh -index 42e37c8a9c..7669e4e0ad 100755 ---- a/test/TEST-21-DFUZZER/test.sh -+++ b/test/TEST-21-DFUZZER/test.sh -@@ -6,6 +6,8 @@ TEST_DESCRIPTION="Fuzz our D-Bus interfaces with dfuzzer" - TEST_NO_NSPAWN=1 - TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED=0 - QEMU_TIMEOUT="${QEMU_TIMEOUT:-1800}" -+IMAGE_NAME=dfuzzer -+TEST_FORCE_NEWIMAGE=1 - - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" diff --git a/SOURCES/0129-test-make-dfuzzer-less-verbose.patch b/SOURCES/0129-test-make-dfuzzer-less-verbose.patch deleted file mode 100644 index be24139..0000000 --- a/SOURCES/0129-test-make-dfuzzer-less-verbose.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 0e72d8a8bbed61ffa3cbf2637f1b29ade7af45be Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 21 Jun 2022 10:04:03 +0200 -Subject: [PATCH] test: make dfuzzer less verbose - -Otherwise it oversaturates the journal, which in some cases can't keep -up with the load of messages (due to the performance penalty caused by -sanitizers), and gets killed by a watchdog. - -(cherry picked from commit d3eb4159c9577f0a9ee776d34fcec7ad913d88a5) - -Related: #2087652 ---- - test/units/testsuite-21.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh -index 43b5fb6f22..604bf145ca 100755 ---- a/test/units/testsuite-21.sh -+++ b/test/units/testsuite-21.sh -@@ -72,7 +72,7 @@ mount -t tmpfs -o size=50M tmpfs /var/lib/machines - for bus in "${BUS_LIST[@]}"; do - echo "Bus: $bus (system)" - systemd-run --pipe --wait \ -- -- dfuzzer -v -b "$PAYLOAD_MAX" -n "$bus" -+ -- dfuzzer -b "$PAYLOAD_MAX" -n "$bus" - - # Let's reload the systemd daemon to test (de)serialization as well - systemctl daemon-reload -@@ -83,7 +83,7 @@ umount /var/lib/machines - for bus in "${SESSION_BUS_LIST[@]}"; do - echo "Bus: $bus (session)" - systemd-run --machine 'testuser@.host' --user --pipe --wait \ -- -- dfuzzer -v -b "$PAYLOAD_MAX" -n "$bus" -+ -- dfuzzer -b "$PAYLOAD_MAX" -n "$bus" - - # Let's reload the systemd user daemon to test (de)serialization as well - systemctl --machine 'testuser@.host' --user daemon-reload diff --git a/SOURCES/0129-tree-wide-modernizations-with-RET_NERRNO.patch b/SOURCES/0129-tree-wide-modernizations-with-RET_NERRNO.patch new file mode 100644 index 0000000..c906c4d --- /dev/null +++ b/SOURCES/0129-tree-wide-modernizations-with-RET_NERRNO.patch @@ -0,0 +1,115 @@ +From f0c8da5396c02e2a935e9e8de1e8c08956feb672 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:14:33 +0100 +Subject: [PATCH] tree-wide: modernizations with RET_NERRNO() + +(cherry picked from commit 108dfff2c7aebadb78e485ed564caf559367bf7c) + +Related: #2137584 +--- + src/shared/ask-password-api.c | 30 +++++++++++++----------------- + src/shared/barrier.c | 4 +--- + 2 files changed, 14 insertions(+), 20 deletions(-) + +diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c +index 17474fe0be..871af2ec99 100644 +--- a/src/shared/ask-password-api.c ++++ b/src/shared/ask-password-api.c +@@ -230,8 +230,7 @@ int ask_password_plymouth( + if (notify < 0) + return -errno; + +- r = inotify_add_watch(notify, flag_file, IN_ATTRIB); /* for the link count */ +- if (r < 0) ++ if (inotify_add_watch(notify, flag_file, IN_ATTRIB) < 0) /* for the link count */ + return -errno; + } + +@@ -239,8 +238,7 @@ int ask_password_plymouth( + if (fd < 0) + return -errno; + +- r = connect(fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)); +- if (r < 0) ++ if (connect(fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) + return -errno; + + if (FLAGS_SET(flags, ASK_PASSWORD_ACCEPT_CACHED)) { +@@ -464,10 +462,9 @@ int ask_password_tty( + new_termios.c_cc[VMIN] = 1; + new_termios.c_cc[VTIME] = 0; + +- if (tcsetattr(ttyfd, TCSADRAIN, &new_termios) < 0) { +- r = -errno; ++ r = RET_NERRNO(tcsetattr(ttyfd, TCSADRAIN, &new_termios)); ++ if (r < 0) + goto finish; +- } + + reset_tty = true; + } +@@ -491,11 +488,11 @@ int ask_password_tty( + else + timeout = USEC_INFINITY; + +- if (flag_file) +- if (access(flag_file, F_OK) < 0) { +- r = -errno; ++ if (flag_file) { ++ r = RET_NERRNO(access(flag_file, F_OK)); ++ if (r < 0) + goto finish; +- } ++ } + + r = ppoll_usec(pollfd, notify >= 0 ? 2 : 1, timeout); + if (r == -EINTR) +@@ -747,10 +744,10 @@ int ask_password_agent( + r = -errno; + goto finish; + } +- if (inotify_add_watch(notify, "/run/systemd/ask-password", IN_ATTRIB /* for mtime */) < 0) { +- r = -errno; ++ ++ r = RET_NERRNO(inotify_add_watch(notify, "/run/systemd/ask-password", IN_ATTRIB /* for mtime */)); ++ if (r < 0) + goto finish; +- } + } + + fd = mkostemp_safe(temp); +@@ -813,10 +810,9 @@ int ask_password_agent( + final[sizeof(final)-10] = 's'; + final[sizeof(final)-9] = 'k'; + +- if (rename(temp, final) < 0) { +- r = -errno; ++ r = RET_NERRNO(rename(temp, final)); ++ if (r < 0) + goto finish; +- } + + zero(pollfd); + pollfd[FD_SOCKET].fd = socket_fd; +diff --git a/src/shared/barrier.c b/src/shared/barrier.c +index cbe54a60cd..d76a61a5db 100644 +--- a/src/shared/barrier.c ++++ b/src/shared/barrier.c +@@ -92,7 +92,6 @@ + */ + int barrier_create(Barrier *b) { + _unused_ _cleanup_(barrier_destroyp) Barrier *staging = b; +- int r; + + assert(b); + +@@ -104,8 +103,7 @@ int barrier_create(Barrier *b) { + if (b->them < 0) + return -errno; + +- r = pipe2(b->pipe, O_CLOEXEC | O_NONBLOCK); +- if (r < 0) ++ if (pipe2(b->pipe, O_CLOEXEC | O_NONBLOCK) < 0) + return -errno; + + staging = NULL; diff --git a/SOURCES/0130-sd-bus-handle-EINTR-return-from-bus_poll.patch b/SOURCES/0130-sd-bus-handle-EINTR-return-from-bus_poll.patch new file mode 100644 index 0000000..de3a980 --- /dev/null +++ b/SOURCES/0130-sd-bus-handle-EINTR-return-from-bus_poll.patch @@ -0,0 +1,90 @@ +From d56013fb245dc2878ee91bbb937a91850050ada3 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 21 Nov 2022 17:42:04 +0100 +Subject: [PATCH] sd-bus: handle -EINTR return from bus_poll() + +In sd_bus_wait(), let's convert EINTR to a return code of 0, thus asking +the caller do loop again and enter sd_bus_process() again (which will +not find any queued events). This way we'll not return an error on +something that isn't really an error. This should typically make sure +things are properly handled by the caller, magically, without eating up +the event entirely, and still giving the caller time to run some code if +they want. + +(cherry picked from commit 3022916b4d2483452c3ddbbac9ee7c4372b1cb46) + +Resolves: #2137584 +--- + src/libsystemd/sd-bus/bus-socket.c | 5 ++++- + src/libsystemd/sd-bus/sd-bus.c | 18 +++++++++++++++--- + 2 files changed, 19 insertions(+), 4 deletions(-) + +diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c +index c94befef73..253f41c636 100644 +--- a/src/libsystemd/sd-bus/bus-socket.c ++++ b/src/libsystemd/sd-bus/bus-socket.c +@@ -1308,8 +1308,11 @@ int bus_socket_process_opening(sd_bus *b) { + assert(b->state == BUS_OPENING); + + events = fd_wait_for_event(b->output_fd, POLLOUT, 0); +- if (events < 0) ++ if (events < 0) { ++ if (ERRNO_IS_TRANSIENT(events)) ++ return 0; + return events; ++ } + if (!(events & (POLLOUT|POLLERR|POLLHUP))) + return 0; + +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c +index bc716afabf..c3a1bae295 100644 +--- a/src/libsystemd/sd-bus/sd-bus.c ++++ b/src/libsystemd/sd-bus/sd-bus.c +@@ -2465,8 +2465,11 @@ _public_ int sd_bus_call( + left = UINT64_MAX; + + r = bus_poll(bus, true, left); +- if (r < 0) ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; + goto fail; ++ } + if (r == 0) { + r = -ETIMEDOUT; + goto fail; +@@ -3321,6 +3324,7 @@ static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) { + } + + _public_ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { ++ int r; + + assert_return(bus, -EINVAL); + assert_return(bus = bus_resolve(bus), -ENOPKG); +@@ -3335,7 +3339,11 @@ _public_ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { + if (bus->rqueue_size > 0) + return 0; + +- return bus_poll(bus, false, timeout_usec); ++ r = bus_poll(bus, false, timeout_usec); ++ if (r < 0 && ERRNO_IS_TRANSIENT(r)) ++ return 1; /* treat EINTR as success, but let's exit, so that the caller will call back into us soon. */ ++ ++ return r; + } + + _public_ int sd_bus_flush(sd_bus *bus) { +@@ -3377,8 +3385,12 @@ _public_ int sd_bus_flush(sd_bus *bus) { + return 0; + + r = bus_poll(bus, false, UINT64_MAX); +- if (r < 0) ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; ++ + return r; ++ } + } + } + diff --git a/SOURCES/0130-test-drop-the-at_exit-coredump-check.patch b/SOURCES/0130-test-drop-the-at_exit-coredump-check.patch deleted file mode 100644 index 013bbff..0000000 --- a/SOURCES/0130-test-drop-the-at_exit-coredump-check.patch +++ /dev/null @@ -1,37 +0,0 @@ -From e5291b4fb0d9adfc9da510f4acc7330d57e3e415 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 21 Jun 2022 10:13:48 +0200 -Subject: [PATCH] test: drop the at_exit() coredump check - -since we don't truncate the journal anymore. - -(cherry picked from commit 5309b56505dfccf9111cb5fe6461047725429e79) - -Related: #2087652 ---- - test/units/testsuite-21.sh | 12 +----------- - 1 file changed, 1 insertion(+), 11 deletions(-) - -diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh -index 604bf145ca..053d571a90 100755 ---- a/test/units/testsuite-21.sh -+++ b/test/units/testsuite-21.sh -@@ -8,17 +8,7 @@ set -o pipefail - systemctl list-jobs | grep -F 'end.service' && SHUTDOWN_AT_EXIT=1 || SHUTDOWN_AT_EXIT=0 - - at_exit() { -- # "Safety net" - check for any coredumps which might have not caused dfuzzer -- # to stop & return an error (we need to do this now before truncating the -- # journal) -- # TODO: check fo ASan/UBSan errors -- local found_cd=0 -- while read -r exe; do -- coredumctl info "$exe" -- found_cd=1 -- done < <(coredumpctl -F COREDUMP_EXE | sort -u) -- [[ $found_cd -eq 0 ]] || exit 1 -- -+ set +e - # We have to call the end.service explicitly even if it's specified on - # the kernel cmdline via systemd.wants=end.service, since dfuzzer calls - # org.freedesktop.systemd1.Manager.ClearJobs() which drops the service diff --git a/SOURCES/0131-stdio-bridge-don-t-be-bothered-with-EINTR.patch b/SOURCES/0131-stdio-bridge-don-t-be-bothered-with-EINTR.patch new file mode 100644 index 0000000..21680ca --- /dev/null +++ b/SOURCES/0131-stdio-bridge-don-t-be-bothered-with-EINTR.patch @@ -0,0 +1,32 @@ +From b277e35fdb56560110e8b96fb90042ff2e19a2c5 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:18:07 +0100 +Subject: [PATCH] stdio-bridge: don't be bothered with EINTR + +We handle signals via signal handlers, hence no need to be concerned +about EINTR. + +(cherry picked from commit 7c75f34131772781f690860de797d3e35fd0bed9) + +Related: #2137584 +--- + src/stdio-bridge/stdio-bridge.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c +index c851059a09..1b94374b4b 100644 +--- a/src/stdio-bridge/stdio-bridge.c ++++ b/src/stdio-bridge/stdio-bridge.c +@@ -242,8 +242,11 @@ static int run(int argc, char *argv[]) { + }; + + r = ppoll_usec(p, ELEMENTSOF(p), t); +- if (r < 0) ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) /* don't be bothered by signals, i.e. EINTR */ ++ continue; + return log_error_errno(r, "ppoll() failed: %m"); ++ } + } + + return 0; diff --git a/SOURCES/0131-test-make-the-shutdown-routine-a-bit-more-robust.patch b/SOURCES/0131-test-make-the-shutdown-routine-a-bit-more-robust.patch deleted file mode 100644 index f4ec02a..0000000 --- a/SOURCES/0131-test-make-the-shutdown-routine-a-bit-more-robust.patch +++ /dev/null @@ -1,54 +0,0 @@ -From a0464b064c46f9a63fd3f8d6f2d8560c7e5d32d3 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 21 Jun 2022 10:20:12 +0200 -Subject: [PATCH] test: make the shutdown routine a bit more "robust" - -Replace the call to the `end.service` with `systemctl poweroff`, since -it seems to cause issues no matter what `--job-mode=` is used: - -``` -[ 129.070993] testsuite-21.sh[380]: ++ systemctl start --job-mode=flush end.service -[ 129.154985] testsuite-21.sh[912]: Failed to start end.service: Transaction for end.service/start is destructive (sysinit.target has 'stop' job queued, but 'start' is included in transaction). -[ 129.159636] testsuite-21.sh[912]: See system logs and 'systemctl status end.service' for details. -``` - -Also, add a "safety net" which bypasses the manager and does the -poweroff directly, since sometimes the D-Bus call performed by -`systemctl` might timeout (as the manager might be still processing data -from the fuzzing): - -``` -[ 115.776778] sh[894]: + systemctl poweroff --no-block -[ 166.164242] testsuite-21.sh[893]: Failed to start transient service unit: Connection timed out -[ 166.269289] sh[894]: Call to PowerOff failed: Connection timed out -``` - -(cherry picked from commit 56e8ee55d58e38d47992ca6b5b6466fdb5be4781) - -Related: #2087652 ---- - test/units/testsuite-21.sh | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh -index 053d571a90..e9bf18603a 100755 ---- a/test/units/testsuite-21.sh -+++ b/test/units/testsuite-21.sh -@@ -9,11 +9,15 @@ systemctl list-jobs | grep -F 'end.service' && SHUTDOWN_AT_EXIT=1 || SHUTDOWN_AT - - at_exit() { - set +e -- # We have to call the end.service explicitly even if it's specified on -+ # We have to call the end.service/poweroff explicitly even if it's specified on - # the kernel cmdline via systemd.wants=end.service, since dfuzzer calls - # org.freedesktop.systemd1.Manager.ClearJobs() which drops the service - # from the queue -- [[ $SHUTDOWN_AT_EXIT -ne 0 ]] && systemctl start --job-mode=flush end.service -+ if [[ $SHUTDOWN_AT_EXIT -ne 0 ]] && ! systemctl poweroff; then -+ # PID1 is down let's try to save the journal -+ journalctl --sync || : # journal can be down as well so let's ignore exit codes here -+ systemctl -ff poweroff # sync() and reboot(RB_POWER_OFF) -+ fi - } - - trap at_exit EXIT diff --git a/SOURCES/0132-tree-wide-drop-manually-crafted-message-for-missing-.patch b/SOURCES/0132-tree-wide-drop-manually-crafted-message-for-missing-.patch deleted file mode 100644 index 868ae1e..0000000 --- a/SOURCES/0132-tree-wide-drop-manually-crafted-message-for-missing-.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 910711b21c5fe4f26ad20a4d86e1acfb2a0afbdb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 4 May 2022 08:24:06 +0200 -Subject: [PATCH] tree-wide: drop manually-crafted message for missing - variables - -Bash will generate a very nice message for us: -/tmp/ff.sh: line 1: SOMEVAR: parameter null or not set - -Let's save some keystrokes by not replacing this with our own inferior -messages. - -(cherry picked from commit d7ff52403902900b61f644f87b5222822fd4a69b) - -Related: #2087652 ---- - test/TEST-36-NUMAPOLICY/test.sh | 2 +- - test/hwdb-test.sh | 2 +- - test/test-rpm-macros.sh | 2 +- - test/units/testsuite-15.sh | 4 ++-- - test/units/testsuite-36.sh | 14 +++++++------- - test/units/testsuite-46.sh | 2 +- - tools/check-directives.sh | 4 ++-- - 7 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/test/TEST-36-NUMAPOLICY/test.sh b/test/TEST-36-NUMAPOLICY/test.sh -index 0eaaee9608..5f38bf1009 100755 ---- a/test/TEST-36-NUMAPOLICY/test.sh -+++ b/test/TEST-36-NUMAPOLICY/test.sh -@@ -9,7 +9,7 @@ TEST_NO_NSPAWN=1 - . "${TEST_BASE_DIR:?}/test-functions" - - if qemu_min_version "5.2.0"; then -- QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:?QEMU_MEM is unset} -numa node,memdev=mem0,nodeid=0" -+ QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:?} -numa node,memdev=mem0,nodeid=0" - else - QEMU_OPTIONS="-numa node,nodeid=0" - fi -diff --git a/test/hwdb-test.sh b/test/hwdb-test.sh -index 0551f26a2d..29183e6829 100755 ---- a/test/hwdb-test.sh -+++ b/test/hwdb-test.sh -@@ -11,7 +11,7 @@ set -e - - export SYSTEMD_LOG_LEVEL=info - ROOTDIR="$(dirname "$(dirname "$(readlink -f "$0")")")" --SYSTEMD_HWDB="${1:?missing argument}" -+SYSTEMD_HWDB="${1:?}" - - if [ ! -x "$SYSTEMD_HWDB" ]; then - echo "$SYSTEMD_HWDB is not executable" >&2 -diff --git a/test/test-rpm-macros.sh b/test/test-rpm-macros.sh -index 5843b72346..c7107dec3e 100755 ---- a/test/test-rpm-macros.sh -+++ b/test/test-rpm-macros.sh -@@ -6,7 +6,7 @@ - # rpmspec utility is required (so this test will work with RPM 4 but won't work with RPM 5). - set -eu - --BUILD_DIR="${1:?Missing argument: build directory}" -+BUILD_DIR="${1:?}" - RPM_MACROS_FILE="${BUILD_DIR:?}/src/rpm/macros.systemd" - - if ! command -v rpm >/dev/null || ! command -v rpmspec >/dev/null; then -diff --git a/test/units/testsuite-15.sh b/test/units/testsuite-15.sh -index 0446e71c38..f847adac74 100755 ---- a/test/units/testsuite-15.sh -+++ b/test/units/testsuite-15.sh -@@ -4,7 +4,7 @@ set -eux - set -o pipefail - - _clear_service () { -- local SERVICE_NAME="${1:?_clear_service: missing argument}" -+ local SERVICE_NAME="${1:?}" - systemctl stop "$SERVICE_NAME.service" 2>/dev/null || : - rm -f /{etc,run,usr/lib}/systemd/system/"$SERVICE_NAME".service - rm -fr /{etc,run,usr/lib}/systemd/system/"$SERVICE_NAME".service.d -@@ -25,7 +25,7 @@ clear_services () { - } - - create_service () { -- local SERVICE_NAME="${1:?create_service: missing argument}" -+ local SERVICE_NAME="${1:?}" - clear_services "$SERVICE_NAME" - - cat >/etc/systemd/system/"$SERVICE_NAME".service <"$confDir/numa.conf" <"$testUnitNUMAConf" </dev/null || exit 77 - diff --git a/SOURCES/0132-varlink-also-handle-EINTR-gracefully-when-waiting-fo.patch b/SOURCES/0132-varlink-also-handle-EINTR-gracefully-when-waiting-fo.patch new file mode 100644 index 0000000..ac1f3a9 --- /dev/null +++ b/SOURCES/0132-varlink-also-handle-EINTR-gracefully-when-waiting-fo.patch @@ -0,0 +1,50 @@ +From e95dd8e99188377bb6351fc0a4ceb4e790612044 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:42:46 +0100 +Subject: [PATCH] varlink: also handle EINTR gracefully when waiting for EIO + via ppoll() + +(cherry picked from commit 6976bf5cd614761eb4bd57d39e24f7eca1d6b863) + +Related: #2137584 +--- + src/shared/varlink.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/shared/varlink.c b/src/shared/varlink.c +index 4f7ac97689..4d2cfee491 100644 +--- a/src/shared/varlink.c ++++ b/src/shared/varlink.c +@@ -1025,7 +1025,7 @@ static void handle_revents(Varlink *v, int revents) { + if ((revents & (POLLOUT|POLLHUP)) == 0) + return; + +- varlink_log(v, "Anynchronous connection completed."); ++ varlink_log(v, "Asynchronous connection completed."); + v->connecting = false; + } else { + /* Note that we don't care much about POLLIN/POLLOUT here, we'll just try reading and writing +@@ -1075,6 +1075,9 @@ int varlink_wait(Varlink *v, usec_t timeout) { + return events; + + r = fd_wait_for_event(fd, events, t); ++ if (r < 0 && ERRNO_IS_TRANSIENT(r)) /* Treat EINTR as not a timeout, but also nothing happened, and ++ * the caller gets a chance to call back into us */ ++ return 1; + if (r <= 0) + return r; + +@@ -1161,8 +1164,12 @@ int varlink_flush(Varlink *v) { + } + + r = fd_wait_for_event(v->fd, POLLOUT, USEC_INFINITY); +- if (r < 0) ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; ++ + return varlink_log_errno(v, r, "Poll failed on fd: %m"); ++ } + + assert(r != 0); + diff --git a/SOURCES/0133-sd-netlink-handle-EINTR-from-poll-gracefully-as-succ.patch b/SOURCES/0133-sd-netlink-handle-EINTR-from-poll-gracefully-as-succ.patch new file mode 100644 index 0000000..7a314f9 --- /dev/null +++ b/SOURCES/0133-sd-netlink-handle-EINTR-from-poll-gracefully-as-succ.patch @@ -0,0 +1,36 @@ +From cd822ff6ef904e3e25060e77556670784b0b1aea Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 13:00:48 +0100 +Subject: [PATCH] sd-netlink: handle EINTR from poll() gracefully, as success + +(cherry picked from commit 69858785335afffc51bc03127beb53332c0fb983) + +Related: #2137584 +--- + src/libsystemd/sd-netlink/sd-netlink.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c +index feb751a848..b99abae640 100644 +--- a/src/libsystemd/sd-netlink/sd-netlink.c ++++ b/src/libsystemd/sd-netlink/sd-netlink.c +@@ -464,13 +464,18 @@ static int netlink_poll(sd_netlink *nl, bool need_more, usec_t timeout_usec) { + } + + int sd_netlink_wait(sd_netlink *nl, uint64_t timeout_usec) { ++ int r; ++ + assert_return(nl, -EINVAL); + assert_return(!netlink_pid_changed(nl), -ECHILD); + + if (nl->rqueue_size > 0) + return 0; + +- return netlink_poll(nl, false, timeout_usec); ++ r = netlink_poll(nl, false, timeout_usec); ++ if (r < 0 && ERRNO_IS_TRANSIENT(r)) /* Convert EINTR to "something happened" and give user a chance to run some code before calling back into us */ ++ return 1; ++ return r; + } + + static int timeout_compare(const void *a, const void *b) { diff --git a/SOURCES/0133-test-allow-overriding-QEMU_MEM-when-running-w-ASan.patch b/SOURCES/0133-test-allow-overriding-QEMU_MEM-when-running-w-ASan.patch deleted file mode 100644 index 8f4ab69..0000000 --- a/SOURCES/0133-test-allow-overriding-QEMU_MEM-when-running-w-ASan.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 3e31fc66a206c272e7f73581c5ca752b4439fec3 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 21 Jun 2022 12:09:35 +0200 -Subject: [PATCH] test: allow overriding $QEMU_MEM when running w/ ASan - -(cherry picked from commit dc350e78fe66ae8698574202b2e30e5d650219ec) - -Related: #2087652 ---- - test/TEST-36-NUMAPOLICY/test.sh | 2 +- - test/test-functions | 5 ++--- - 2 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/test/TEST-36-NUMAPOLICY/test.sh b/test/TEST-36-NUMAPOLICY/test.sh -index 5f38bf1009..7909b1dce3 100755 ---- a/test/TEST-36-NUMAPOLICY/test.sh -+++ b/test/TEST-36-NUMAPOLICY/test.sh -@@ -9,7 +9,7 @@ TEST_NO_NSPAWN=1 - . "${TEST_BASE_DIR:?}/test-functions" - - if qemu_min_version "5.2.0"; then -- QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:?} -numa node,memdev=mem0,nodeid=0" -+ QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:-512M} -numa node,memdev=mem0,nodeid=0" - else - QEMU_OPTIONS="-numa node,nodeid=0" - fi -diff --git a/test/test-functions b/test/test-functions -index 079a7249e4..98efd047d7 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -30,7 +30,6 @@ TIMED_OUT= # will be 1 after run_* if *_TIMEOUT is set and test timed out - [[ "$LOOKS_LIKE_SUSE" ]] && FSTYPE="${FSTYPE:-btrfs}" || FSTYPE="${FSTYPE:-ext4}" - UNIFIED_CGROUP_HIERARCHY="${UNIFIED_CGROUP_HIERARCHY:-default}" - EFI_MOUNT="${EFI_MOUNT:-$(bootctl -x 2>/dev/null || echo /boot)}" --QEMU_MEM="${QEMU_MEM:-512M}" - # Note that defining a different IMAGE_NAME in a test setup script will only result - # in default.img being copied and renamed. It can then be extended by defining - # a test_append_files() function. The $1 parameter will be the root directory. -@@ -255,7 +254,7 @@ if get_bool "$IS_BUILT_WITH_ASAN"; then - STRIP_BINARIES=no - SKIP_INITRD="${SKIP_INITRD:-yes}" - PATH_TO_INIT=$ROOTLIBDIR/systemd-under-asan -- QEMU_MEM="2048M" -+ QEMU_MEM="${QEMU_MEM:-2G}" - QEMU_SMP="${QEMU_SMP:-4}" - - # We need to correctly distinguish between gcc's and clang's ASan DSOs. -@@ -444,7 +443,7 @@ run_qemu() { - qemu_options+=( - -smp "$QEMU_SMP" - -net none -- -m "$QEMU_MEM" -+ -m "${QEMU_MEM:-512M}" - -nographic - -kernel "$KERNEL_BIN" - -drive "format=raw,cache=unsafe,file=$image" diff --git a/SOURCES/0134-resolved-handle-EINTR-returned-from-fd_wait_for_even.patch b/SOURCES/0134-resolved-handle-EINTR-returned-from-fd_wait_for_even.patch new file mode 100644 index 0000000..f2da989 --- /dev/null +++ b/SOURCES/0134-resolved-handle-EINTR-returned-from-fd_wait_for_even.patch @@ -0,0 +1,79 @@ +From 471b70bca8f1a77b1d5402e190b00a61aa0d58b0 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:28:19 +0100 +Subject: [PATCH] resolved: handle -EINTR returned from fd_wait_for_event() + better + +We might get signals for various reasons (for example, somebody asking +us to reload caches via a signal), hence let's handle this gracefully. + +(cherry picked from commit 6d66a221685c15798e796d9738f73fdb1fdccdb2) + +Related: #2137584 +--- + src/resolve/resolved-manager.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c +index f62efa87aa..1c9048670b 100644 +--- a/src/resolve/resolved-manager.c ++++ b/src/resolve/resolved-manager.c +@@ -868,11 +868,14 @@ int manager_recv(Manager *m, int fd, DnsProtocol protocol, DnsPacket **ret) { + } + + static int sendmsg_loop(int fd, struct msghdr *mh, int flags) { ++ usec_t end; + int r; + + assert(fd >= 0); + assert(mh); + ++ end = usec_add(now(CLOCK_MONOTONIC), SEND_TIMEOUT_USEC); ++ + for (;;) { + if (sendmsg(fd, mh, flags) >= 0) + return 0; +@@ -881,20 +884,26 @@ static int sendmsg_loop(int fd, struct msghdr *mh, int flags) { + if (errno != EAGAIN) + return -errno; + +- r = fd_wait_for_event(fd, POLLOUT, SEND_TIMEOUT_USEC); +- if (r < 0) ++ r = fd_wait_for_event(fd, POLLOUT, LESS_BY(end, now(CLOCK_MONOTONIC))); ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; + return r; ++ } + if (r == 0) + return -ETIMEDOUT; + } + } + + static int write_loop(int fd, void *message, size_t length) { ++ usec_t end; + int r; + + assert(fd >= 0); + assert(message); + ++ end = usec_add(now(CLOCK_MONOTONIC), SEND_TIMEOUT_USEC); ++ + for (;;) { + if (write(fd, message, length) >= 0) + return 0; +@@ -903,9 +912,12 @@ static int write_loop(int fd, void *message, size_t length) { + if (errno != EAGAIN) + return -errno; + +- r = fd_wait_for_event(fd, POLLOUT, SEND_TIMEOUT_USEC); +- if (r < 0) ++ r = fd_wait_for_event(fd, POLLOUT, LESS_BY(end, now(CLOCK_MONOTONIC))); ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; + return r; ++ } + if (r == 0) + return -ETIMEDOUT; + } diff --git a/SOURCES/0134-test-don-t-test-buses-we-don-t-ship.patch b/SOURCES/0134-test-don-t-test-buses-we-don-t-ship.patch deleted file mode 100644 index fbe3762..0000000 --- a/SOURCES/0134-test-don-t-test-buses-we-don-t-ship.patch +++ /dev/null @@ -1,39 +0,0 @@ -From a2c46d33809334614f93964b1707b01cbe2e05a5 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 22 Jun 2022 11:09:58 +0200 -Subject: [PATCH] test: don't test buses we don't ship - -rhel-only - -Related: #2087652 ---- - test/units/testsuite-21.sh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh -index e9bf18603a..bb2b754f35 100755 ---- a/test/units/testsuite-21.sh -+++ b/test/units/testsuite-21.sh -@@ -27,18 +27,18 @@ systemctl log-level info - # TODO - # * check for possibly newly introduced buses? - BUS_LIST=( -- org.freedesktop.home1 -+# org.freedesktop.home1 - org.freedesktop.hostname1 - org.freedesktop.import1 - org.freedesktop.locale1 - org.freedesktop.login1 - org.freedesktop.machine1 -- org.freedesktop.network1 -- org.freedesktop.portable1 -+# org.freedesktop.network1 -+# org.freedesktop.portable1 - org.freedesktop.resolve1 - org.freedesktop.systemd1 - org.freedesktop.timedate1 -- org.freedesktop.timesync1 -+# org.freedesktop.timesync1 - ) - - # systemd-oomd requires PSI diff --git a/SOURCES/0135-homed-handle-EINTR-gracefully-when-waiting-for-devic.patch b/SOURCES/0135-homed-handle-EINTR-gracefully-when-waiting-for-devic.patch new file mode 100644 index 0000000..b9836b1 --- /dev/null +++ b/SOURCES/0135-homed-handle-EINTR-gracefully-when-waiting-for-devic.patch @@ -0,0 +1,31 @@ +From b546d82758e0149fd235d2ff8f9c4fdc8d0bd29c Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:55:10 +0100 +Subject: [PATCH] homed: handle EINTR gracefully when waiting for device node + +(cherry picked from commit f3d9278f38f0a9e03ed29215f27d8ca21c1fa6a1) + +Related: #2137584 +--- + src/home/homework-luks.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c +index 97fb5a1051..5e1d5bbd65 100644 +--- a/src/home/homework-luks.c ++++ b/src/home/homework-luks.c +@@ -2017,9 +2017,12 @@ static int wait_for_devlink(const char *path) { + if (w >= until) + return log_error_errno(SYNTHETIC_ERRNO(ETIMEDOUT), "Device link %s still hasn't shown up, giving up.", path); + +- r = fd_wait_for_event(inotify_fd, POLLIN, usec_sub_unsigned(until, w)); +- if (r < 0) ++ r = fd_wait_for_event(inotify_fd, POLLIN, until - w); ++ if (r < 0) { ++ if (ERRNO_IS_TRANSIENT(r)) ++ continue; + return log_error_errno(r, "Failed to watch inotify: %m"); ++ } + + (void) flush_fd(inotify_fd); + } diff --git a/SOURCES/0135-shutdown-get-only-active-md-arrays.patch b/SOURCES/0135-shutdown-get-only-active-md-arrays.patch deleted file mode 100644 index 93e24b5..0000000 --- a/SOURCES/0135-shutdown-get-only-active-md-arrays.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 00ee9938c9c2333dc445b44e475974a3d3e37c10 Mon Sep 17 00:00:00 2001 -From: Mariusz Tkaczyk -Date: Tue, 29 Mar 2022 12:49:54 +0200 -Subject: [PATCH] shutdown: get only active md arrays. - -Current md_list_get() implementation filters all block devices, started from -"md*". This is ambiguous because list could contain: -- partitions created upon md device (mdXpY) -- external metadata container- specific type of md array. - -For partitions there is no issue, because they aren't handle STOP_ARRAY -ioctl sent later. It generates misleading errors only. - -Second case is more problematic because containers are not locked in kernel. -They are stopped even if container member array is active. For that reason -reboot or shutdown flow could be blocked because metadata manager cannot be -restarted after switch root on shutdown. - -Add filters to remove partitions and containers from md_list. Partitions -can be excluded by DEVTYPE. Containers are determined by MD_LEVEL -property, we are excluding all with "container" value. - -Signed-off-by: Mariusz Tkaczyk -(cherry picked from commit 3a3b022d2cc112803ea7b9beea98bbcad110368a) - -Resolves: #2047682 ---- - src/shutdown/umount.c | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/shutdown/umount.c b/src/shutdown/umount.c -index f5a2cb20c1..6b08d9de74 100644 ---- a/src/shutdown/umount.c -+++ b/src/shutdown/umount.c -@@ -352,9 +352,14 @@ static int md_list_get(MountPoint **head) { - if (r < 0) - return r; - -+ /* Filter out partitions. */ -+ r = sd_device_enumerator_add_match_property(e, "DEVTYPE", "disk"); -+ if (r < 0) -+ return r; -+ - FOREACH_DEVICE(e, d) { - _cleanup_free_ char *p = NULL; -- const char *dn; -+ const char *dn, *md_level; - MountPoint *m; - dev_t devnum; - -@@ -362,6 +367,17 @@ static int md_list_get(MountPoint **head) { - sd_device_get_devname(d, &dn) < 0) - continue; - -+ r = sd_device_get_property_value(d, "MD_LEVEL", &md_level); -+ if (r < 0) { -+ log_warning_errno(r, "Failed to get MD_LEVEL property for %s, ignoring: %m", dn); -+ continue; -+ } -+ -+ /* MD "containers" are a special type of MD devices, used for external metadata. -+ * Since it doesn't provide RAID functionality in itself we don't need to stop it. */ -+ if (streq(md_level, "container")) -+ continue; -+ - p = strdup(dn); - if (!p) - return -ENOMEM; diff --git a/SOURCES/0136-bus-Use-OrderedSet-for-introspection.patch b/SOURCES/0136-bus-Use-OrderedSet-for-introspection.patch deleted file mode 100644 index 8625af6..0000000 --- a/SOURCES/0136-bus-Use-OrderedSet-for-introspection.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 52af91cfd0eece566cb2b6877e622b16289525a4 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Wed, 19 Jan 2022 10:15:36 +0100 -Subject: [PATCH] bus: Use OrderedSet for introspection - -Otherwise, the generated xml files are not reproducible. - -(cherry picked from commit acac88340ace3cd631126eebb6d0390cd54e8231) - -Resolves: #2068131 ---- - src/libsystemd/sd-bus/bus-introspect.c | 4 +-- - src/libsystemd/sd-bus/bus-introspect.h | 4 +-- - src/libsystemd/sd-bus/bus-objects.c | 45 +++++++++++++------------- - src/shared/bus-object.c | 4 +-- - 4 files changed, 28 insertions(+), 29 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c -index b9ef6af631..eed0dae82f 100644 ---- a/src/libsystemd/sd-bus/bus-introspect.c -+++ b/src/libsystemd/sd-bus/bus-introspect.c -@@ -110,7 +110,7 @@ static int set_interface_name(struct introspect *intro, const char *interface_na - return free_and_strdup(&intro->interface_name, interface_name); - } - --int introspect_write_child_nodes(struct introspect *i, Set *s, const char *prefix) { -+int introspect_write_child_nodes(struct introspect *i, OrderedSet *s, const char *prefix) { - char *node; - - assert(i); -@@ -118,7 +118,7 @@ int introspect_write_child_nodes(struct introspect *i, Set *s, const char *prefi - - assert_se(set_interface_name(i, NULL) >= 0); - -- while ((node = set_steal_first(s))) { -+ while ((node = ordered_set_steal_first(s))) { - const char *e; - - e = object_path_startswith(node, prefix); -diff --git a/src/libsystemd/sd-bus/bus-introspect.h b/src/libsystemd/sd-bus/bus-introspect.h -index 34f32a4cf9..19e3ef09e2 100644 ---- a/src/libsystemd/sd-bus/bus-introspect.h -+++ b/src/libsystemd/sd-bus/bus-introspect.h -@@ -5,7 +5,7 @@ - - #include "sd-bus.h" - --#include "set.h" -+#include "ordered-set.h" - - struct introspect { - FILE *f; -@@ -17,7 +17,7 @@ struct introspect { - - int introspect_begin(struct introspect *i, bool trusted); - int introspect_write_default_interfaces(struct introspect *i, bool object_manager); --int introspect_write_child_nodes(struct introspect *i, Set *s, const char *prefix); -+int introspect_write_child_nodes(struct introspect *i, OrderedSet *s, const char *prefix); - int introspect_write_interface( - struct introspect *i, - const char *interface_name, -diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c -index bf69539062..40158a7326 100644 ---- a/src/libsystemd/sd-bus/bus-objects.c -+++ b/src/libsystemd/sd-bus/bus-objects.c -@@ -9,7 +9,6 @@ - #include "bus-slot.h" - #include "bus-type.h" - #include "missing_capability.h" --#include "set.h" - #include "string-util.h" - #include "strv.h" - -@@ -99,7 +98,7 @@ static int add_enumerated_to_set( - sd_bus *bus, - const char *prefix, - struct node_enumerator *first, -- Set *s, -+ OrderedSet *s, - sd_bus_error *error) { - - struct node_enumerator *c; -@@ -146,7 +145,7 @@ static int add_enumerated_to_set( - continue; - } - -- r = set_consume(s, *k); -+ r = ordered_set_consume(s, *k); - if (r == -EEXIST) - r = 0; - } -@@ -171,7 +170,7 @@ static int add_subtree_to_set( - const char *prefix, - struct node *n, - unsigned flags, -- Set *s, -+ OrderedSet *s, - sd_bus_error *error) { - - struct node *i; -@@ -198,7 +197,7 @@ static int add_subtree_to_set( - if (!t) - return -ENOMEM; - -- r = set_consume(s, t); -+ r = ordered_set_consume(s, t); - if (r < 0 && r != -EEXIST) - return r; - -@@ -220,10 +219,10 @@ static int get_child_nodes( - const char *prefix, - struct node *n, - unsigned flags, -- Set **_s, -+ OrderedSet **_s, - sd_bus_error *error) { - -- Set *s = NULL; -+ OrderedSet *s = NULL; - int r; - - assert(bus); -@@ -231,13 +230,13 @@ static int get_child_nodes( - assert(n); - assert(_s); - -- s = set_new(&string_hash_ops); -+ s = ordered_set_new(&string_hash_ops); - if (!s) - return -ENOMEM; - - r = add_subtree_to_set(bus, prefix, n, flags, s, error); - if (r < 0) { -- set_free_free(s); -+ ordered_set_free_free(s); - return r; - } - -@@ -937,7 +936,7 @@ int introspect_path( - char **ret, - sd_bus_error *error) { - -- _cleanup_set_free_free_ Set *s = NULL; -+ _cleanup_ordered_set_free_ OrderedSet *s = NULL; - _cleanup_(introspect_free) struct introspect intro = {}; - struct node_vtable *c; - bool empty; -@@ -963,7 +962,7 @@ int introspect_path( - if (r < 0) - return r; - -- empty = set_isempty(s); -+ empty = ordered_set_isempty(s); - - LIST_FOREACH(vtables, c, n->vtables) { - if (require_fallback && !c->is_fallback) -@@ -1233,7 +1232,7 @@ static int process_get_managed_objects( - - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; -- _cleanup_set_free_free_ Set *s = NULL; -+ _cleanup_ordered_set_free_free_ OrderedSet *s = NULL; - char *path; - int r; - -@@ -1263,7 +1262,7 @@ static int process_get_managed_objects( - if (r < 0) - return r; - -- SET_FOREACH(path, s) { -+ ORDERED_SET_FOREACH(path, s) { - r = object_manager_serialize_path_and_fallbacks(bus, reply, path, &error); - if (r < 0) - return bus_maybe_reply_error(m, r, &error); -@@ -2352,7 +2351,7 @@ _public_ int sd_bus_emit_properties_changed( - static int object_added_append_all_prefix( - sd_bus *bus, - sd_bus_message *m, -- Set *s, -+ OrderedSet *s, - const char *prefix, - const char *path, - bool require_fallback) { -@@ -2392,10 +2391,10 @@ static int object_added_append_all_prefix( - * skip it on any of its parents. The child vtables - * always fully override any conflicting vtables of - * any parent node. */ -- if (set_get(s, c->interface)) -+ if (ordered_set_get(s, c->interface)) - continue; - -- r = set_put(s, c->interface); -+ r = ordered_set_put(s, c->interface); - if (r < 0) - return r; - -@@ -2441,7 +2440,7 @@ static int object_added_append_all_prefix( - } - - static int object_added_append_all(sd_bus *bus, sd_bus_message *m, const char *path) { -- _cleanup_set_free_ Set *s = NULL; -+ _cleanup_ordered_set_free_ OrderedSet *s = NULL; - _cleanup_free_ char *prefix = NULL; - size_t pl; - int r; -@@ -2465,7 +2464,7 @@ static int object_added_append_all(sd_bus *bus, sd_bus_message *m, const char *p - * a parent that were overwritten by a child. - */ - -- s = set_new(&string_hash_ops); -+ s = ordered_set_new(&string_hash_ops); - if (!s) - return -ENOMEM; - -@@ -2572,7 +2571,7 @@ _public_ int sd_bus_emit_object_added(sd_bus *bus, const char *path) { - static int object_removed_append_all_prefix( - sd_bus *bus, - sd_bus_message *m, -- Set *s, -+ OrderedSet *s, - const char *prefix, - const char *path, - bool require_fallback) { -@@ -2605,7 +2604,7 @@ static int object_removed_append_all_prefix( - * skip it on any of its parents. The child vtables - * always fully override any conflicting vtables of - * any parent node. */ -- if (set_get(s, c->interface)) -+ if (ordered_set_get(s, c->interface)) - continue; - - r = node_vtable_get_userdata(bus, path, c, &u, &error); -@@ -2616,7 +2615,7 @@ static int object_removed_append_all_prefix( - if (r == 0) - continue; - -- r = set_put(s, c->interface); -+ r = ordered_set_put(s, c->interface); - if (r < 0) - return r; - -@@ -2631,7 +2630,7 @@ static int object_removed_append_all_prefix( - } - - static int object_removed_append_all(sd_bus *bus, sd_bus_message *m, const char *path) { -- _cleanup_set_free_ Set *s = NULL; -+ _cleanup_ordered_set_free_ OrderedSet *s = NULL; - _cleanup_free_ char *prefix = NULL; - size_t pl; - int r; -@@ -2642,7 +2641,7 @@ static int object_removed_append_all(sd_bus *bus, sd_bus_message *m, const char - - /* see sd_bus_emit_object_added() for details */ - -- s = set_new(&string_hash_ops); -+ s = ordered_set_new(&string_hash_ops); - if (!s) - return -ENOMEM; - -diff --git a/src/shared/bus-object.c b/src/shared/bus-object.c -index f2e53913fb..4ed5215e3d 100644 ---- a/src/shared/bus-object.c -+++ b/src/shared/bus-object.c -@@ -156,10 +156,10 @@ int bus_introspect_implementations( - if (impl != main_impl) - bus_introspect_implementation(&intro, impl); - -- _cleanup_set_free_ Set *nodes = NULL; -+ _cleanup_ordered_set_free_ OrderedSet *nodes = NULL; - - for (size_t i = 0; impl->children && impl->children[i]; i++) { -- r = set_put_strdup(&nodes, impl->children[i]->path); -+ r = ordered_set_put_strdup(&nodes, impl->children[i]->path); - if (r < 0) - return log_oom(); - } diff --git a/SOURCES/0136-utmp-wtmp-fix-error-in-case-isatty-fails.patch b/SOURCES/0136-utmp-wtmp-fix-error-in-case-isatty-fails.patch new file mode 100644 index 0000000..aa0162f --- /dev/null +++ b/SOURCES/0136-utmp-wtmp-fix-error-in-case-isatty-fails.patch @@ -0,0 +1,28 @@ +From 7c2898cac4e05e24b24743e5d7d738f437d1e6f8 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:56:38 +0100 +Subject: [PATCH] utmp-wtmp: fix error in case isatty() fails + +(cherry picked from commit 80b780ba178a84b248ecee47eef82358480c9492) + +Related: #2137584 +--- + src/shared/utmp-wtmp.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c +index d2c8473c60..20add0e81b 100644 +--- a/src/shared/utmp-wtmp.c ++++ b/src/shared/utmp-wtmp.c +@@ -292,8 +292,10 @@ static int write_to_terminal(const char *tty, const char *message) { + assert(message); + + fd = open(tty, O_WRONLY|O_NONBLOCK|O_NOCTTY|O_CLOEXEC); +- if (fd < 0 || !isatty(fd)) ++ if (fd < 0) + return -errno; ++ if (!isatty(fd)) ++ return -ENOTTY; + + p = message; + left = strlen(message); diff --git a/SOURCES/0137-logind-session-dbus-allow-to-set-display-name-via-db.patch b/SOURCES/0137-logind-session-dbus-allow-to-set-display-name-via-db.patch deleted file mode 100644 index 97de43e..0000000 --- a/SOURCES/0137-logind-session-dbus-allow-to-set-display-name-via-db.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 5cfd162864213c5247d97ea31cfacce98b1caefc Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Fri, 10 Jun 2022 15:07:01 +0200 -Subject: [PATCH] logind-session-dbus: allow to set display name via dbus - -Currently, the only way to set display name of a graphical session is to -pass it to CreateSession(). But modern display managers like gdm start -the display server as part of the user session, which means that the -display name isn't known yet when the session is being created. Hence, -let's make it possible to set it later. - -(cherry picked from commit 4885d7490b23e08d8444e5a68927ce9ce8727e5a) - -Resolves: #2100340 ---- - man/org.freedesktop.login1.xml | 8 ++++++++ - src/login/logind-session-dbus.c | 29 +++++++++++++++++++++++++++ - src/login/logind-session.c | 20 ++++++++++++++++++ - src/login/logind-session.h | 1 + - src/login/org.freedesktop.login1.conf | 4 ++++ - 5 files changed, 62 insertions(+) - -diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml -index d25287b18b..c11324ee3b 100644 ---- a/man/org.freedesktop.login1.xml -+++ b/man/org.freedesktop.login1.xml -@@ -1045,6 +1045,7 @@ node /org/freedesktop/login1/session/1 { - TakeControl(in b force); - ReleaseControl(); - SetType(in s type); -+ SetDisplay(in s display); - TakeDevice(in u major, - in u minor, - out h fd, -@@ -1142,6 +1143,8 @@ node /org/freedesktop/login1/session/1 { - - - -+ -+ - - - -@@ -1238,6 +1241,11 @@ node /org/freedesktop/login1/session/1 { - connection. This should help prevent a session from entering an inconsistent state, for example if the - controller crashes. The only argument type is the new session type. - -+ SetDisplay() allows the display name of the graphical session to be changed. This is -+ useful if the display server is started as part of the session. It can only be called by session's current -+ controller. If TakeControl() has not been called, this method will fail. The only argument -+ display is the new display name. -+ - TakeDevice() allows a session controller to get a file descriptor for a - specific device. Pass in the major and minor numbers of the character device and - systemd-logind will return a file descriptor for the device. Only a limited set of -diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c -index ff4cd0a631..5480d7b2f4 100644 ---- a/src/login/logind-session-dbus.c -+++ b/src/login/logind-session-dbus.c -@@ -413,6 +413,30 @@ static int method_set_type(sd_bus_message *message, void *userdata, sd_bus_error - return sd_bus_reply_method_return(message, NULL); - } - -+static int method_set_display(sd_bus_message *message, void *userdata, sd_bus_error *error) { -+ Session *s = ASSERT_PTR(userdata); -+ const char *display; -+ int r; -+ -+ assert(message); -+ -+ r = sd_bus_message_read(message, "s", &display); -+ if (r < 0) -+ return r; -+ -+ if (!session_is_controller(s, sd_bus_message_get_sender(message))) -+ return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You must be in control of this session to set display"); -+ -+ if (!SESSION_TYPE_IS_GRAPHICAL(s->type)) -+ return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Setting display is only supported for graphical sessions"); -+ -+ r = session_set_display(s, display); -+ if (r < 0) -+ return r; -+ -+ return sd_bus_reply_method_return(message, NULL); -+} -+ - static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_error *error) { - Session *s = userdata; - uint32_t major, minor; -@@ -901,6 +925,11 @@ static const sd_bus_vtable session_vtable[] = { - SD_BUS_NO_RESULT, - method_set_type, - SD_BUS_VTABLE_UNPRIVILEGED), -+ SD_BUS_METHOD_WITH_ARGS("SetDisplay", -+ SD_BUS_ARGS("s", display), -+ SD_BUS_NO_RESULT, -+ method_set_display, -+ SD_BUS_VTABLE_UNPRIVILEGED), - SD_BUS_METHOD_WITH_ARGS("TakeDevice", - SD_BUS_ARGS("u", major, "u", minor), - SD_BUS_RESULT("h", fd, "b", inactive), -diff --git a/src/login/logind-session.c b/src/login/logind-session.c -index ab98a5055d..a052596e57 100644 ---- a/src/login/logind-session.c -+++ b/src/login/logind-session.c -@@ -1044,6 +1044,26 @@ void session_set_type(Session *s, SessionType t) { - session_send_changed(s, "Type", NULL); - } - -+int session_set_display(Session *s, const char *display) { -+ int r; -+ -+ assert(s); -+ assert(display); -+ -+ if (streq(s->display, display)) -+ return 0; -+ -+ r = free_and_strdup(&s->display, display); -+ if (r < 0) -+ return r; -+ -+ session_save(s); -+ -+ session_send_changed(s, "Display", NULL); -+ -+ return 1; -+} -+ - static int session_dispatch_fifo(sd_event_source *es, int fd, uint32_t revents, void *userdata) { - Session *s = userdata; - -diff --git a/src/login/logind-session.h b/src/login/logind-session.h -index 5c35071dc5..6b6ac2d573 100644 ---- a/src/login/logind-session.h -+++ b/src/login/logind-session.h -@@ -137,6 +137,7 @@ int session_set_idle_hint(Session *s, bool b); - int session_get_locked_hint(Session *s); - void session_set_locked_hint(Session *s, bool b); - void session_set_type(Session *s, SessionType t); -+int session_set_display(Session *s, const char *display); - int session_create_fifo(Session *s); - int session_start(Session *s, sd_bus_message *properties, sd_bus_error *error); - int session_stop(Session *s, bool force); -diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf -index 95d2ef0f06..6113b64aa7 100644 ---- a/src/login/org.freedesktop.login1.conf -+++ b/src/login/org.freedesktop.login1.conf -@@ -346,6 +346,10 @@ - send_interface="org.freedesktop.login1.User" - send_member="Kill"/> - -+ -+ - - - diff --git a/SOURCES/0137-utmp-wtmp-handle-EINTR-gracefully-when-waiting-to-wr.patch b/SOURCES/0137-utmp-wtmp-handle-EINTR-gracefully-when-waiting-to-wr.patch new file mode 100644 index 0000000..2747b09 --- /dev/null +++ b/SOURCES/0137-utmp-wtmp-handle-EINTR-gracefully-when-waiting-to-wr.patch @@ -0,0 +1,59 @@ +From 62686ccc4631b6a5f73722fd7f1dcaca8782431c Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 12:56:55 +0100 +Subject: [PATCH] utmp-wtmp: handle EINTR gracefully when waiting to write to + tty + +(cherry picked from commit 22ecfa83123dbfa2322346ac4e25ad2193a3b10c) + +Related: #2137584 +--- + src/shared/utmp-wtmp.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c +index 20add0e81b..37a5bf7990 100644 +--- a/src/shared/utmp-wtmp.c ++++ b/src/shared/utmp-wtmp.c +@@ -12,6 +12,7 @@ + #include + + #include "alloc-util.h" ++#include "errno-util.h" + #include "fd-util.h" + #include "hostname-util.h" + #include "io-util.h" +@@ -300,7 +301,7 @@ static int write_to_terminal(const char *tty, const char *message) { + p = message; + left = strlen(message); + +- end = now(CLOCK_MONOTONIC) + TIMEOUT_USEC; ++ end = usec_add(now(CLOCK_MONOTONIC), TIMEOUT_USEC); + + while (left > 0) { + ssize_t n; +@@ -308,19 +309,21 @@ static int write_to_terminal(const char *tty, const char *message) { + int k; + + t = now(CLOCK_MONOTONIC); +- + if (t >= end) + return -ETIME; + + k = fd_wait_for_event(fd, POLLOUT, end - t); +- if (k < 0) ++ if (k < 0) { ++ if (ERRNO_IS_TRANSIENT(k)) ++ continue; + return k; ++ } + if (k == 0) + return -ETIME; + + n = write(fd, p, left); + if (n < 0) { +- if (errno == EAGAIN) ++ if (ERRNO_IS_TRANSIENT(errno)) + continue; + + return -errno; diff --git a/SOURCES/0138-ci-limit-which-env-variables-we-pass-through-sudo.patch b/SOURCES/0138-ci-limit-which-env-variables-we-pass-through-sudo.patch deleted file mode 100644 index 3d1f9cd..0000000 --- a/SOURCES/0138-ci-limit-which-env-variables-we-pass-through-sudo.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 433d2036ecf211e9a7c85d57e4c91d8723f80cbb Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 13 Jul 2022 11:12:36 +0200 -Subject: [PATCH] ci: limit which env variables we pass through `sudo` - -to work around #23987. - -(cherry picked from commit d46e7c7cfd6c286a38298c067f16ac784c2a26f0) - -Related: #2087652 ---- - .github/workflows/unit_tests.yml | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml -index 2afde5d59d..58b7b7cdb2 100644 ---- a/.github/workflows/unit_tests.yml -+++ b/.github/workflows/unit_tests.yml -@@ -28,8 +28,14 @@ jobs: - - name: Repository checkout - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 - - name: Install build dependencies -- run: sudo -E .github/workflows/unit_tests.sh SETUP -+ run: | -+ # Drop XDG_* stuff from /etc/environment, so we don't get the user -+ # XDG_* variables when running under sudo -+ sudo sed -i '/^XDG_/d' /etc/environment -+ # Pass only specific env variables through sudo, to avoid having -+ # the already existing XDG_* stuff on the "other side" -+ sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit_tests.sh SETUP - - name: Build & test (${{ matrix.run_phase }}-${{ matrix.cryptolib }}) -- run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }} -+ run: sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }} - env: - CRYPTOLIB: ${{ matrix.cryptolib }} diff --git a/SOURCES/0138-io-util-document-EINTR-situation-a-bit.patch b/SOURCES/0138-io-util-document-EINTR-situation-a-bit.patch new file mode 100644 index 0000000..2b2db91 --- /dev/null +++ b/SOURCES/0138-io-util-document-EINTR-situation-a-bit.patch @@ -0,0 +1,48 @@ +From 3850d27f47a887a958ded828f6ce8de4e791037c Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 22 Nov 2022 15:23:34 +0100 +Subject: [PATCH] io-util: document EINTR situation a bit + +(cherry picked from commit ffbcc8d423671ad2fe827e4823a8032dc1f0a8b3) + +Related: #2137584 +--- + src/basic/io-util.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/src/basic/io-util.c b/src/basic/io-util.c +index cdad939aa6..f642beca3a 100644 +--- a/src/basic/io-util.c ++++ b/src/basic/io-util.c +@@ -161,6 +161,21 @@ int ppoll_usec(struct pollfd *fds, size_t nfds, usec_t timeout) { + + assert(fds || nfds == 0); + ++ /* This is a wrapper around ppoll() that does primarily two things: ++ * ++ * ✅ Takes a usec_t instead of a struct timespec ++ * ++ * ✅ Guarantees that if an invalid fd is specified we return EBADF (i.e. converts POLLNVAL to ++ * EBADF). This is done because EBADF is a programming error usually, and hence should bubble up ++ * as error, and not be eaten up as non-error POLLNVAL event. ++ * ++ * ⚠️ ⚠️ ⚠️ Note that this function does not add any special handling for EINTR. Don't forget ++ * poll()/ppoll() will return with EINTR on any received signal always, there is no automatic ++ * restarting via SA_RESTART available. Thus, typically you want to handle EINTR not as an error, ++ * but just as reason to restart things, under the assumption you use a more appropriate mechanism ++ * to handle signals, such as signalfd() or signal handlers. ⚠️ ⚠️ ⚠️ ++ */ ++ + if (nfds == 0) + return 0; + +@@ -188,6 +203,9 @@ int fd_wait_for_event(int fd, int event, usec_t timeout) { + }; + int r; + ++ /* ⚠️ ⚠️ ⚠️ Keep in mind you almost certainly want to handle -EINTR gracefully in the caller, see ++ * ppoll_usec() above! ⚠️ ⚠️ ⚠️ */ ++ + r = ppoll_usec(&pollfd, 1, timeout); + if (r <= 0) + return r; diff --git a/SOURCES/0139-ci-Mergify-Add-ci-waived-logic.patch b/SOURCES/0139-ci-Mergify-Add-ci-waived-logic.patch deleted file mode 100644 index 246526b..0000000 --- a/SOURCES/0139-ci-Mergify-Add-ci-waived-logic.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 09eeda8d25f0f45d2c545c05fd8ae84404c83d83 Mon Sep 17 00:00:00 2001 -From: Jan Macku -Date: Tue, 19 Jul 2022 12:29:28 +0200 -Subject: [PATCH] ci(Mergify): Add `ci-waived` logic - -RHEL-only - -Related: #2087652 ---- - .mergify.yml | 66 ++++++++++++++++++++++++++++------------------------ - 1 file changed, 35 insertions(+), 31 deletions(-) - -diff --git a/.mergify.yml b/.mergify.yml -index b7852b201c..be25e52c76 100644 ---- a/.mergify.yml -+++ b/.mergify.yml -@@ -4,6 +4,7 @@ - pull_request_rules: - - name: Add `needs-ci` label on CI fail - conditions: -+ - label!=ci-waived - - or: - # Build test - - -check-success=build (gcc, 10, bfd) -@@ -31,9 +32,9 @@ pull_request_rules: - - and: - - "-check-success=LGTM analysis: C/C++" - - "-check-neutral=LGTM analysis: C/C++" -- # Packit -- - -check-success=rpm-build:centos-stream-9-aarch64 -- - -check-success=rpm-build:centos-stream-9-x86_64 -+ # Packit -+ - -check-success=rpm-build:centos-stream-9-aarch64 -+ - -check-success=rpm-build:centos-stream-9-x86_64 - actions: - label: - add: -@@ -41,35 +42,38 @@ pull_request_rules: - - - name: Remove `needs-ci` label on CI success - conditions: -- # Build test -- - check-success=build (gcc, 10, bfd) -- - check-success=build (gcc, 11, gold) -- - check-success=build (clang, 11, bfd) -- - check-success=build (clang, 12, gold) -- - check-success=build (clang, 13, lld) -- # Unit tests -- - check-success=build (GCC, auto) -- - check-success=build (GCC_ASAN_UBSAN, auto) -- - check-success=build (CLANG, auto) -- - check-success=build (CLANG_ASAN_UBSAN, auto) -- - check-success=build (GCC, openssl) -- - check-success=build (CLANG, gcrypt) -- # CentOS CI -- - check-success=CentOS CI (CentOS Stream 9) -- - check-success=CentOS CI (CentOS Stream 9 + sanitizers) -- # LGTM - - or: -- - "check-success=LGTM analysis: JavaScript" -- - "check-neutral=LGTM analysis: JavaScript" -- - or: -- - "check-success=LGTM analysis: Python" -- - "check-neutral=LGTM analysis: Python" -- - or: -- - "check-success=LGTM analysis: C/C++" -- - "check-neutral=LGTM analysis: C/C++" -- # Packit -- - check-success=rpm-build:centos-stream-9-aarch64 -- - check-success=rpm-build:centos-stream-9-x86_64 -+ - label=ci-waived -+ - and: -+ # Build test -+ - check-success=build (gcc, 10, bfd) -+ - check-success=build (gcc, 11, gold) -+ - check-success=build (clang, 11, bfd) -+ - check-success=build (clang, 12, gold) -+ - check-success=build (clang, 13, lld) -+ # Unit tests -+ - check-success=build (GCC, auto) -+ - check-success=build (GCC_ASAN_UBSAN, auto) -+ - check-success=build (CLANG, auto) -+ - check-success=build (CLANG_ASAN_UBSAN, auto) -+ - check-success=build (GCC, openssl) -+ - check-success=build (CLANG, gcrypt) -+ # CentOS CI -+ - check-success=CentOS CI (CentOS Stream 9) -+ - check-success=CentOS CI (CentOS Stream 9 + sanitizers) -+ # LGTM -+ - or: -+ - "check-success=LGTM analysis: JavaScript" -+ - "check-neutral=LGTM analysis: JavaScript" -+ - or: -+ - "check-success=LGTM analysis: Python" -+ - "check-neutral=LGTM analysis: Python" -+ - or: -+ - "check-success=LGTM analysis: C/C++" -+ - "check-neutral=LGTM analysis: C/C++" -+ # Packit -+ - check-success=rpm-build:centos-stream-9-aarch64 -+ - check-success=rpm-build:centos-stream-9-x86_64 - actions: - label: - remove: diff --git a/SOURCES/0139-terminal-util-Set-OPOST-when-setting-ONLCR.patch b/SOURCES/0139-terminal-util-Set-OPOST-when-setting-ONLCR.patch new file mode 100644 index 0000000..5435222 --- /dev/null +++ b/SOURCES/0139-terminal-util-Set-OPOST-when-setting-ONLCR.patch @@ -0,0 +1,44 @@ +From c5e4b6b9b2a1dea35f58f3e1c3313bca76a90162 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 30 Nov 2022 14:07:29 -0500 +Subject: [PATCH] terminal-util: Set OPOST when setting ONLCR + +reset_terminal_fd sets certain minimum required terminal attributes +that systemd relies on. + +One of those attributes is `ONLCR` which ensures that when a new line +is sent to the terminal, that the cursor not only moves to the next +line, but also moves to the very beginning of that line. + +In order for `ONLCR` to work, the terminal needs to perform output +post-processing. That requires an additional attribute, `OPOST`, +which reset_terminal_fd currently fails to ensure is set. + +In most cases `OPOST` (and `ONLCR` actually) are both set anyway, so +it's not an issue, but it could be a problem if, e.g., the terminal was +put in raw mode by a program and the program unexpectedly died before +restoring settings. + +This commit ensures when `ONLCR` is set `OPOST` is set too, which is +the only thing that really makes sense to do. + +(cherry picked from commit 9fe26523a189435d75b9d745188e09c17928d89e) + +Related: #2138081 +--- + src/basic/terminal-util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c +index 0c092597eb..a75234f354 100644 +--- a/src/basic/terminal-util.c ++++ b/src/basic/terminal-util.c +@@ -269,7 +269,7 @@ int reset_terminal_fd(int fd, bool switch_to_text) { + + termios.c_iflag &= ~(IGNBRK | BRKINT | ISTRIP | INLCR | IGNCR | IUCLC); + termios.c_iflag |= ICRNL | IMAXBEL | IUTF8; +- termios.c_oflag |= ONLCR; ++ termios.c_oflag |= ONLCR | OPOST; + termios.c_cflag |= CREAD; + termios.c_lflag = ISIG | ICANON | IEXTEN | ECHO | ECHOE | ECHOK | ECHOCTL | ECHOPRT | ECHOKE; + diff --git a/SOURCES/0140-cgtop-Do-not-rewrite-P-or-k-options.patch b/SOURCES/0140-cgtop-Do-not-rewrite-P-or-k-options.patch new file mode 100644 index 0000000..aad192e --- /dev/null +++ b/SOURCES/0140-cgtop-Do-not-rewrite-P-or-k-options.patch @@ -0,0 +1,67 @@ +From 1672b8dd340c4d4aa6398a08b15b36368ba442ec Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Koutn=C3=BD?= +Date: Fri, 25 Nov 2022 17:50:27 +0100 +Subject: [PATCH] cgtop: Do not rewrite -P or -k options + +--recursive=no will overwrite possible -P or -k option hence making the +recursive disabling impossible. + +Check what counting types the system supports (encoded in the ordering +of our enum) of and pick whatever user requests but is also supported. + +Fixes: #25248 +(cherry picked from commit 48600b3524afe05d0faa8a5c88b5aaa53b801199) + +Related: #2138081 +--- + src/cgtop/cgtop.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c +index 95c3987525..8a51a9371b 100644 +--- a/src/cgtop/cgtop.c ++++ b/src/cgtop/cgtop.c +@@ -55,6 +55,12 @@ typedef struct Group { + uint64_t io_input_bps, io_output_bps; + } Group; + ++typedef enum PidsCount { ++ COUNT_USERSPACE_PROCESSES, ++ COUNT_ALL_PROCESSES, ++ COUNT_PIDS, ++} PidsCount; ++ + static unsigned arg_depth = 3; + static unsigned arg_iterations = UINT_MAX; + static bool arg_batch = false; +@@ -65,11 +71,7 @@ static char* arg_root = NULL; + static bool arg_recursive = true; + static bool arg_recursive_unset = false; + +-static enum { +- COUNT_PIDS, +- COUNT_USERSPACE_PROCESSES, +- COUNT_ALL_PROCESSES, +-} arg_count = COUNT_PIDS; ++static PidsCount arg_count = COUNT_PIDS; + + static enum { + ORDER_PATH, +@@ -915,6 +917,7 @@ static int run(int argc, char *argv[]) { + usec_t last_refresh = 0; + bool quit = false, immediate_refresh = false; + _cleanup_free_ char *root = NULL; ++ PidsCount possible_count; + CGroupMask mask; + int r; + +@@ -928,7 +931,8 @@ static int run(int argc, char *argv[]) { + if (r < 0) + return log_error_errno(r, "Failed to determine supported controllers: %m"); + +- arg_count = (mask & CGROUP_MASK_PIDS) ? COUNT_PIDS : COUNT_USERSPACE_PROCESSES; ++ possible_count = (mask & CGROUP_MASK_PIDS) ? COUNT_PIDS : COUNT_ALL_PROCESSES; ++ arg_count = MIN(possible_count, arg_count); + + if (arg_recursive_unset && arg_count == COUNT_PIDS) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), diff --git a/SOURCES/0140-json-use-unsigned-for-refernce-counter.patch b/SOURCES/0140-json-use-unsigned-for-refernce-counter.patch deleted file mode 100644 index 8f3042a..0000000 --- a/SOURCES/0140-json-use-unsigned-for-refernce-counter.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 46118fd04a49b25bc0c686b07d1b26309ab4e395 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 06:46:25 +0900 -Subject: [PATCH] json: use unsigned for refernce counter - -For other places, we use unsigned for reference counter. - -(cherry picked from commit 6dd18b34cf53ab663140f43f8814904c71cc29f7) - -Related: #2087652 ---- - src/shared/json.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index 6d23bdf4f9..bcc109abc2 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -41,7 +41,7 @@ assert_cc(DEPTH_MAX <= UINT16_MAX); - - typedef struct JsonSource { - /* When we parse from a file or similar, encodes the filename, to indicate the source of a json variant */ -- size_t n_ref; -+ unsigned n_ref; - unsigned max_line; - unsigned max_column; - char name[]; -@@ -53,7 +53,7 @@ struct JsonVariant { - /* We either maintain a reference counter for this variant itself, or we are embedded into an - * array/object, in which case only that surrounding object is ref-counted. (If 'embedded' is false, - * see below.) */ -- size_t n_ref; -+ unsigned n_ref; - - /* If this JsonVariant is part of an array/object, then this field points to the surrounding - * JSON_VARIANT_ARRAY/JSON_VARIANT_OBJECT object. (If 'embedded' is true, see below.) */ diff --git a/SOURCES/0141-macro-check-over-flow-in-reference-counter.patch b/SOURCES/0141-macro-check-over-flow-in-reference-counter.patch deleted file mode 100644 index 4c7e15f..0000000 --- a/SOURCES/0141-macro-check-over-flow-in-reference-counter.patch +++ /dev/null @@ -1,31 +0,0 @@ -From eb7eca006b5f290481720dc4d7fcdba88d8613cb Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 06:54:50 +0900 -Subject: [PATCH] macro: check over flow in reference counter - -(cherry picked from commit c8431e9e35a904673cf659fd238cb63b3c3896fc) - -Related: #2087652 ---- - src/basic/macro.h | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/basic/macro.h b/src/basic/macro.h -index aa04039e80..e7dc83ddc5 100644 ---- a/src/basic/macro.h -+++ b/src/basic/macro.h -@@ -387,8 +387,12 @@ static inline int __coverity_check_and_return__(int condition) { - if (!p) \ - return NULL; \ - \ -- assert(p->n_ref > 0); \ -- p->n_ref++; \ -+ /* For type check. */ \ -+ unsigned *q = &p->n_ref; \ -+ assert(*q > 0); \ -+ assert(*q < UINT_MAX); \ -+ \ -+ (*q)++; \ - return p; \ - } - diff --git a/SOURCES/0141-test-Add-tests-for-systemd-cgtop-args-parsing.patch b/SOURCES/0141-test-Add-tests-for-systemd-cgtop-args-parsing.patch new file mode 100644 index 0000000..9b40058 --- /dev/null +++ b/SOURCES/0141-test-Add-tests-for-systemd-cgtop-args-parsing.patch @@ -0,0 +1,33 @@ +From ba43ad7ae9db3e06debd9fd0b1653fc695322093 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Koutn=C3=BD?= +Date: Fri, 25 Nov 2022 18:14:22 +0100 +Subject: [PATCH] test: Add tests for systemd-cgtop args parsing + +(cherry picked from commit d4e32838e875539ad6991b75b083c9563eddc3ed) + +Related: #2138081 +--- + test/units/testsuite-74.cgtop.sh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/test/units/testsuite-74.cgtop.sh b/test/units/testsuite-74.cgtop.sh +index 8141ec1b1f..6f08362e7c 100755 +--- a/test/units/testsuite-74.cgtop.sh ++++ b/test/units/testsuite-74.cgtop.sh +@@ -15,8 +15,8 @@ systemd-cgtop --cpu=percentage + systemd-cgtop --cpu=time + systemd-cgtop -P + systemd-cgtop -k +-# FIXME: https://github.com/systemd/systemd/issues/25248 +-#systemd-cgtop --recursive=no ++systemd-cgtop --recursive=no -P ++systemd-cgtop --recursive=no -k + systemd-cgtop --depth=0 + systemd-cgtop --depth=100 + +@@ -29,4 +29,5 @@ systemd-cgtop -p -t -c -m -i + (! systemd-cgtop --order=foo) + (! systemd-cgtop --depth=-1) + (! systemd-cgtop --recursive=foo) ++(! systemd-cgtop --recursive=no) + (! systemd-cgtop --delay=1foo) diff --git a/SOURCES/0142-resolved-remove-inappropriate-assert.patch b/SOURCES/0142-resolved-remove-inappropriate-assert.patch new file mode 100644 index 0000000..fe78037 --- /dev/null +++ b/SOURCES/0142-resolved-remove-inappropriate-assert.patch @@ -0,0 +1,36 @@ +From 87b1eac151e5bbb9322d3213072dc2e5fba24f4e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 24 Nov 2022 18:42:08 +0100 +Subject: [PATCH] resolved: remove inappropriate assert() + +A NULL Bitmap object is by all our code considered identical to an empty +bitmap. Hence let's remove the entirely unnecessary assert(). + +The assert() can be triggered if debug monitoring is used an an empty +NSEC or NSEC3 RR is included in an answer resolved returns. + +it's not really a security issue since enabling debug monitoring is a +manual step requiring root privileges, that is off by default. Moreover, +it's a "clean" assert(), i.e. the worst that happens is tha a coredump +is generated and resolved restarted. + +Fixes: #25449 +(cherry picked from commit fb896517aeecc2a8ec16586a34a0249606eb9f66) + +Related: #2138081 +--- + src/resolve/resolved-dns-rr.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c +index 8123ca1f98..d47cdbbd8e 100644 +--- a/src/resolve/resolved-dns-rr.c ++++ b/src/resolve/resolved-dns-rr.c +@@ -1865,7 +1865,6 @@ static int type_bitmap_to_json(Bitmap *b, JsonVariant **ret) { + unsigned t; + int r; + +- assert(b); + assert(ret); + + BITMAP_FOREACH(t, b) { diff --git a/SOURCES/0142-sd-bus-fix-reference-counter-to-be-incremented.patch b/SOURCES/0142-sd-bus-fix-reference-counter-to-be-incremented.patch deleted file mode 100644 index 13b37c1..0000000 --- a/SOURCES/0142-sd-bus-fix-reference-counter-to-be-incremented.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 4dcd6089addae3ef6b6c82e36b30b178a4261249 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:05:07 +0900 -Subject: [PATCH] sd-bus: fix reference counter to be incremented - -Fixes #23097. - -(cherry picked from commit b21f237d996c8c18991a68e1204f060d07dc4745) - -Related: #2087652 ---- - src/libsystemd/sd-bus/bus-track.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c -index bc36673b83..891fd0c899 100644 ---- a/src/libsystemd/sd-bus/bus-track.c -+++ b/src/libsystemd/sd-bus/bus-track.c -@@ -191,12 +191,12 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) { - i = hashmap_get(track->names, name); - if (i) { - if (track->recursive) { -- unsigned k = track->n_ref + 1; -+ unsigned k = i->n_ref + 1; - -- if (k < track->n_ref) /* Check for overflow */ -+ if (k < i->n_ref) /* Check for overflow */ - return -EOVERFLOW; - -- track->n_ref = k; -+ i->n_ref = k; - } - - bus_track_remove_from_queue(track); diff --git a/SOURCES/0143-boot-Add-xstrn8_to_16.patch b/SOURCES/0143-boot-Add-xstrn8_to_16.patch new file mode 100644 index 0000000..4822e32 --- /dev/null +++ b/SOURCES/0143-boot-Add-xstrn8_to_16.patch @@ -0,0 +1,164 @@ +From c48d12fc0abb8f113ed386c47bf02451ea8f853d Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 22 Nov 2022 15:55:07 +0100 +Subject: [PATCH] boot: Add xstrn8_to_16 + +(cherry picked from commit 8ad7deffa95d33b5849ad6589dd52ab12e645edc) + +Related: #2138081 +--- + src/boot/efi/efi-string.c | 78 +++++++++++++++++++++++++++++++++- + src/boot/efi/efi-string.h | 5 +++ + src/boot/efi/test-efi-string.c | 27 ++++++++++++ + 3 files changed, 109 insertions(+), 1 deletion(-) + +diff --git a/src/boot/efi/efi-string.c b/src/boot/efi/efi-string.c +index b877c6f224..2ba15673c9 100644 +--- a/src/boot/efi/efi-string.c ++++ b/src/boot/efi/efi-string.c +@@ -9,7 +9,8 @@ + # include "util.h" + #else + # include +-# include "macro.h" ++# include "alloc-util.h" ++# define xnew(t, n) ASSERT_SE_PTR(new(t, n)) + # define xmalloc(n) ASSERT_SE_PTR(malloc(n)) + #endif + +@@ -138,6 +139,81 @@ DEFINE_STRCHR(char16_t, strchr16); + DEFINE_STRNDUP(char, xstrndup8, strnlen8); + DEFINE_STRNDUP(char16_t, xstrndup16, strnlen16); + ++static unsigned utf8_to_unichar(const char *utf8, size_t n, char32_t *c) { ++ char32_t unichar; ++ unsigned len; ++ ++ assert(utf8); ++ assert(c); ++ ++ if (!(utf8[0] & 0x80)) { ++ *c = utf8[0]; ++ return 1; ++ } else if ((utf8[0] & 0xe0) == 0xc0) { ++ len = 2; ++ unichar = utf8[0] & 0x1f; ++ } else if ((utf8[0] & 0xf0) == 0xe0) { ++ len = 3; ++ unichar = utf8[0] & 0x0f; ++ } else if ((utf8[0] & 0xf8) == 0xf0) { ++ len = 4; ++ unichar = utf8[0] & 0x07; ++ } else if ((utf8[0] & 0xfc) == 0xf8) { ++ len = 5; ++ unichar = utf8[0] & 0x03; ++ } else if ((utf8[0] & 0xfe) == 0xfc) { ++ len = 6; ++ unichar = utf8[0] & 0x01; ++ } else { ++ *c = UINT32_MAX; ++ return 1; ++ } ++ ++ if (len > n) { ++ *c = UINT32_MAX; ++ return len; ++ } ++ ++ for (unsigned i = 1; i < len; i++) { ++ if ((utf8[i] & 0xc0) != 0x80) { ++ *c = UINT32_MAX; ++ return len; ++ } ++ unichar <<= 6; ++ unichar |= utf8[i] & 0x3f; ++ } ++ ++ *c = unichar; ++ return len; ++} ++ ++/* Convert UTF-8 to UCS-2, skipping any invalid or short byte sequences. */ ++char16_t *xstrn8_to_16(const char *str8, size_t n) { ++ if (!str8 || n == 0) ++ return NULL; ++ ++ size_t i = 0; ++ char16_t *str16 = xnew(char16_t, n + 1); ++ ++ while (n > 0 && *str8 != '\0') { ++ char32_t unichar; ++ ++ size_t utf8len = utf8_to_unichar(str8, n, &unichar); ++ str8 += utf8len; ++ n = LESS_BY(n, utf8len); ++ ++ switch (unichar) { ++ case 0 ... 0xd7ffU: ++ case 0xe000U ... 0xffffU: ++ str16[i++] = unichar; ++ break; ++ } ++ } ++ ++ str16[i] = '\0'; ++ return str16; ++} ++ + static bool efi_fnmatch_prefix(const char16_t *p, const char16_t *h, const char16_t **ret_p, const char16_t **ret_h) { + assert(p); + assert(h); +diff --git a/src/boot/efi/efi-string.h b/src/boot/efi/efi-string.h +index 1ebd5fd6b7..9b2a9ad1c5 100644 +--- a/src/boot/efi/efi-string.h ++++ b/src/boot/efi/efi-string.h +@@ -99,6 +99,11 @@ static inline char16_t *xstrdup16(const char16_t *s) { + return xstrndup16(s, SIZE_MAX); + } + ++char16_t *xstrn8_to_16(const char *str8, size_t n); ++static inline char16_t *xstr8_to_16(const char *str8) { ++ return xstrn8_to_16(str8, strlen8(str8)); ++} ++ + bool efi_fnmatch(const char16_t *pattern, const char16_t *haystack); + + bool parse_number8(const char *s, uint64_t *ret_u, const char **ret_tail); +diff --git a/src/boot/efi/test-efi-string.c b/src/boot/efi/test-efi-string.c +index 2b2359fe5c..7b43e1d629 100644 +--- a/src/boot/efi/test-efi-string.c ++++ b/src/boot/efi/test-efi-string.c +@@ -324,6 +324,33 @@ TEST(xstrdup16) { + free(s); + } + ++TEST(xstrn8_to_16) { ++ char16_t *s = NULL; ++ ++ assert_se(xstrn8_to_16(NULL, 1) == NULL); ++ assert_se(xstrn8_to_16("a", 0) == NULL); ++ ++ assert_se(s = xstrn8_to_16("", 1)); ++ assert_se(streq16(s, u"")); ++ free(s); ++ ++ assert_se(s = xstrn8_to_16("1", 1)); ++ assert_se(streq16(s, u"1")); ++ free(s); ++ ++ assert_se(s = xstr8_to_16("abcxyzABCXYZ09 .,-_#*!\"§$%&/()=?`~")); ++ assert_se(streq16(s, u"abcxyzABCXYZ09 .,-_#*!\"§$%&/()=?`~")); ++ free(s); ++ ++ assert_se(s = xstr8_to_16("ÿⱿ𝇉 😺")); ++ assert_se(streq16(s, u"ÿⱿ ")); ++ free(s); ++ ++ assert_se(s = xstrn8_to_16("¶¶", 3)); ++ assert_se(streq16(s, u"¶")); ++ free(s); ++} ++ + #define TEST_FNMATCH_ONE(pattern, haystack, expect) \ + ({ \ + assert_se(fnmatch(pattern, haystack, 0) == (expect ? 0 : FNM_NOMATCH)); \ diff --git a/SOURCES/0143-sd-bus-introduce-ref-unref-function-for-track_item.patch b/SOURCES/0143-sd-bus-introduce-ref-unref-function-for-track_item.patch deleted file mode 100644 index 53f7b4b..0000000 --- a/SOURCES/0143-sd-bus-introduce-ref-unref-function-for-track_item.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 6fcc3befd0ca9897071af071287e8758a30046f0 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:20:16 +0900 -Subject: [PATCH] sd-bus: introduce ref/unref function for track_item - -(cherry picked from commit c2d7dd35d2a8cda439384a385b0c1bec804b9b79) - -Related: #2087652 ---- - src/libsystemd/sd-bus/bus-track.c | 35 ++++++++++++++----------------- - 1 file changed, 16 insertions(+), 19 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c -index 891fd0c899..135dfddc5f 100644 ---- a/src/libsystemd/sd-bus/bus-track.c -+++ b/src/libsystemd/sd-bus/bus-track.c -@@ -40,7 +40,6 @@ struct sd_bus_track { - "arg0='", name, "'") - - static struct track_item* track_item_free(struct track_item *i) { -- - if (!i) - return NULL; - -@@ -49,7 +48,8 @@ static struct track_item* track_item_free(struct track_item *i) { - return mfree(i); - } - --DEFINE_TRIVIAL_CLEANUP_FUNC(struct track_item*, track_item_free); -+DEFINE_PRIVATE_TRIVIAL_REF_UNREF_FUNC(struct track_item, track_item, track_item_free); -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct track_item*, track_item_unref); - DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(track_item_hash_ops, char, string_hash_func, string_compare_func, - struct track_item, track_item_free); - -@@ -180,7 +180,7 @@ static int on_name_owner_changed(sd_bus_message *message, void *userdata, sd_bus - } - - _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) { -- _cleanup_(track_item_freep) struct track_item *n = NULL; -+ _cleanup_(track_item_unrefp) struct track_item *n = NULL; - struct track_item *i; - const char *match; - int r; -@@ -190,14 +190,8 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) { - - i = hashmap_get(track->names, name); - if (i) { -- if (track->recursive) { -- unsigned k = i->n_ref + 1; -- -- if (k < i->n_ref) /* Check for overflow */ -- return -EOVERFLOW; -- -- i->n_ref = k; -- } -+ if (track->recursive) -+ track_item_ref(i); - - bus_track_remove_from_queue(track); - return 0; -@@ -207,9 +201,14 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) { - if (r < 0) - return r; - -- n = new0(struct track_item, 1); -+ n = new(struct track_item, 1); - if (!n) - return -ENOMEM; -+ -+ *n = (struct track_item) { -+ .n_ref = 1, -+ }; -+ - n->name = strdup(name); - if (!n->name) - return -ENOMEM; -@@ -241,8 +240,7 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) { - return r; - } - -- n->n_ref = 1; -- n = NULL; -+ TAKE_PTR(n); - - bus_track_remove_from_queue(track); - track->modified = true; -@@ -264,14 +262,13 @@ _public_ int sd_bus_track_remove_name(sd_bus_track *track, const char *name) { - i = hashmap_get(track->names, name); - if (!i) - return -EUNATCH; -- if (i->n_ref <= 0) -- return -EUNATCH; - -- i->n_ref--; -- -- if (i->n_ref <= 0) -+ assert(i->n_ref >= 1); -+ if (i->n_ref <= 1) - return bus_track_remove_name_fully(track, name); - -+ track_item_unref(i); -+ - return 1; - } - diff --git a/SOURCES/0144-boot-Use-xstr8_to_16.patch b/SOURCES/0144-boot-Use-xstr8_to_16.patch new file mode 100644 index 0000000..6eae3bb --- /dev/null +++ b/SOURCES/0144-boot-Use-xstr8_to_16.patch @@ -0,0 +1,214 @@ +From 2ccf2637e7b3caa147962976178bb347fa227946 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 22 Nov 2022 16:03:03 +0100 +Subject: [PATCH] boot: Use xstr8_to_16 + +(cherry picked from commit aee515bbb58496272a6d975858aa26a355c4fb90) + +Related: #2138081 +--- + src/boot/efi/boot.c | 30 +++++++++++++++--------------- + src/boot/efi/linux.c | 2 +- + src/boot/efi/measure.c | 2 +- + src/boot/efi/util.c | 30 ------------------------------ + src/boot/efi/util.h | 1 - + 5 files changed, 17 insertions(+), 48 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index db6ca97df4..013df67e49 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -1205,7 +1205,7 @@ static void config_defaults_load_from_file(Config *config, char *content) { + continue; + } + free(config->entry_default_config); +- config->entry_default_config = xstra_to_str(value); ++ config->entry_default_config = xstr8_to_16(value); + continue; + } + +@@ -1440,25 +1440,25 @@ static void config_entry_add_type1( + while ((line = line_get_key_value(content, " \t", &pos, &key, &value))) { + if (streq8(key, "title")) { + free(entry->title); +- entry->title = xstra_to_str(value); ++ entry->title = xstr8_to_16(value); + continue; + } + + if (streq8(key, "sort-key")) { + free(entry->sort_key); +- entry->sort_key = xstra_to_str(value); ++ entry->sort_key = xstr8_to_16(value); + continue; + } + + if (streq8(key, "version")) { + free(entry->version); +- entry->version = xstra_to_str(value); ++ entry->version = xstr8_to_16(value); + continue; + } + + if (streq8(key, "machine-id")) { + free(entry->machine_id); +- entry->machine_id = xstra_to_str(value); ++ entry->machine_id = xstr8_to_16(value); + continue; + } + +@@ -1511,7 +1511,7 @@ static void config_entry_add_type1( + if (streq8(key, "options")) { + _cleanup_free_ char16_t *new = NULL; + +- new = xstra_to_str(value); ++ new = xstr8_to_16(value); + if (entry->options) { + char16_t *s = xpool_print(L"%s %s", entry->options, new); + free(entry->options); +@@ -2157,49 +2157,49 @@ static void config_entry_add_unified( + while ((line = line_get_key_value(content, "=", &pos, &key, &value))) { + if (streq8(key, "PRETTY_NAME")) { + free(os_pretty_name); +- os_pretty_name = xstra_to_str(value); ++ os_pretty_name = xstr8_to_16(value); + continue; + } + + if (streq8(key, "IMAGE_ID")) { + free(os_image_id); +- os_image_id = xstra_to_str(value); ++ os_image_id = xstr8_to_16(value); + continue; + } + + if (streq8(key, "NAME")) { + free(os_name); +- os_name = xstra_to_str(value); ++ os_name = xstr8_to_16(value); + continue; + } + + if (streq8(key, "ID")) { + free(os_id); +- os_id = xstra_to_str(value); ++ os_id = xstr8_to_16(value); + continue; + } + + if (streq8(key, "IMAGE_VERSION")) { + free(os_image_version); +- os_image_version = xstra_to_str(value); ++ os_image_version = xstr8_to_16(value); + continue; + } + + if (streq8(key, "VERSION")) { + free(os_version); +- os_version = xstra_to_str(value); ++ os_version = xstr8_to_16(value); + continue; + } + + if (streq8(key, "VERSION_ID")) { + free(os_version_id); +- os_version_id = xstra_to_str(value); ++ os_version_id = xstr8_to_16(value); + continue; + } + + if (streq8(key, "BUILD_ID")) { + free(os_build_id); +- os_build_id = xstra_to_str(value); ++ os_build_id = xstr8_to_16(value); + continue; + } + } +@@ -2248,7 +2248,7 @@ static void config_entry_add_unified( + if (content[szs[SECTION_CMDLINE] - 1] == '\n') + content[szs[SECTION_CMDLINE] - 1] = '\0'; + +- entry->options = xstra_to_str(content); ++ entry->options = xstr8_to_16(content); + } + } + } +diff --git a/src/boot/efi/linux.c b/src/boot/efi/linux.c +index dd7eb48c8c..668510fca3 100644 +--- a/src/boot/efi/linux.c ++++ b/src/boot/efi/linux.c +@@ -133,7 +133,7 @@ EFI_STATUS linux_exec( + return log_error_status_stall(err, u"Error getting kernel loaded image protocol: %r", err); + + if (cmdline) { +- loaded_image->LoadOptions = xstra_to_str(cmdline); ++ loaded_image->LoadOptions = xstrn8_to_16(cmdline, cmdline_len); + loaded_image->LoadOptionsSize = strsize16(loaded_image->LoadOptions); + } + +diff --git a/src/boot/efi/measure.c b/src/boot/efi/measure.c +index 9a16920787..6da07d917e 100644 +--- a/src/boot/efi/measure.c ++++ b/src/boot/efi/measure.c +@@ -187,7 +187,7 @@ EFI_STATUS tpm_log_event_ascii(uint32_t pcrindex, EFI_PHYSICAL_ADDRESS buffer, U + _cleanup_free_ char16_t *c = NULL; + + if (description) +- c = xstra_to_str(description); ++ c = xstr8_to_16(description); + + return tpm_log_event(pcrindex, buffer, buffer_size, c, ret_measured); + } +diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c +index 3eba2ade07..b727d6de7e 100644 +--- a/src/boot/efi/util.c ++++ b/src/boot/efi/util.c +@@ -303,36 +303,6 @@ static int utf8_to_16(const char *stra, char16_t *c) { + return len; + } + +-char16_t *xstra_to_str(const char *stra) { +- UINTN strlen; +- UINTN len; +- UINTN i; +- char16_t *str; +- +- assert(stra); +- +- len = strlen8(stra); +- str = xnew(char16_t, len + 1); +- +- strlen = 0; +- i = 0; +- while (i < len) { +- int utf8len; +- +- utf8len = utf8_to_16(stra + i, str + strlen); +- if (utf8len <= 0) { +- /* invalid utf8 sequence, skip the garbage */ +- i++; +- continue; +- } +- +- strlen++; +- i += utf8len; +- } +- str[strlen] = '\0'; +- return str; +-} +- + char16_t *xstra_to_path(const char *stra) { + char16_t *str; + UINTN strlen; +diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h +index 994cf52ad6..d78feac39c 100644 +--- a/src/boot/efi/util.h ++++ b/src/boot/efi/util.h +@@ -113,7 +113,6 @@ EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const char16_t *name, ui + EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, bool *ret); + + char16_t *xstra_to_path(const char *stra); +-char16_t *xstra_to_str(const char *stra); + + EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **content, UINTN *content_size); + diff --git a/SOURCES/0144-sd-bus-do-not-read-unused-value.patch b/SOURCES/0144-sd-bus-do-not-read-unused-value.patch deleted file mode 100644 index c3387a5..0000000 --- a/SOURCES/0144-sd-bus-do-not-read-unused-value.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 5f241b4af41402be5357d6ab10b4c54378363c89 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:25:09 +0900 -Subject: [PATCH] sd-bus: do not read unused value - -(cherry picked from commit 6a7ca27740be4229b4c9f540cd610b205ca5752c) - -Related: #2087652 ---- - src/libsystemd/sd-bus/bus-track.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c -index 135dfddc5f..1cbdb46f4c 100644 ---- a/src/libsystemd/sd-bus/bus-track.c -+++ b/src/libsystemd/sd-bus/bus-track.c -@@ -165,13 +165,13 @@ DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(sd_bus_track, sd_bus_track, track_free); - - static int on_name_owner_changed(sd_bus_message *message, void *userdata, sd_bus_error *error) { - sd_bus_track *track = userdata; -- const char *name, *old, *new; -+ const char *name; - int r; - - assert(message); - assert(track); - -- r = sd_bus_message_read(message, "sss", &name, &old, &new); -+ r = sd_bus_message_read(message, "sss", &name, NULL, NULL); - if (r < 0) - return 0; - diff --git a/SOURCES/0145-boot-Use-xstr8_to_16-for-path-conversion.patch b/SOURCES/0145-boot-Use-xstr8_to_16-for-path-conversion.patch new file mode 100644 index 0000000..5e4c706 --- /dev/null +++ b/SOURCES/0145-boot-Use-xstr8_to_16-for-path-conversion.patch @@ -0,0 +1,218 @@ +From 57474bf255aafb683f4bb38e5bcb88cf48f07882 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 22 Nov 2022 16:30:44 +0100 +Subject: [PATCH] boot: Use xstr8_to_16 for path conversion + +(cherry picked from commit 7444e10611671abac35be3ab9fe9697cd4c90d62) + +Related: #2138081 +--- + src/boot/efi/boot.c | 8 ++-- + src/boot/efi/cpio.c | 19 +-------- + src/boot/efi/util.c | 102 ++++++++------------------------------------ + src/boot/efi/util.h | 3 +- + 4 files changed, 24 insertions(+), 108 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 013df67e49..581043df01 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -1465,7 +1465,7 @@ static void config_entry_add_type1( + if (streq8(key, "linux")) { + free(entry->loader); + entry->type = LOADER_LINUX; +- entry->loader = xstra_to_path(value); ++ entry->loader = xstr8_to_path(value); + entry->key = 'l'; + continue; + } +@@ -1473,7 +1473,7 @@ static void config_entry_add_type1( + if (streq8(key, "efi")) { + entry->type = LOADER_EFI; + free(entry->loader); +- entry->loader = xstra_to_path(value); ++ entry->loader = xstr8_to_path(value); + + /* do not add an entry for ourselves */ + if (strcaseeq16(entry->loader, loaded_image_path)) { +@@ -1494,7 +1494,7 @@ static void config_entry_add_type1( + + if (streq8(key, "devicetree")) { + free(entry->devicetree); +- entry->devicetree = xstra_to_path(value); ++ entry->devicetree = xstr8_to_path(value); + continue; + } + +@@ -1503,7 +1503,7 @@ static void config_entry_add_type1( + entry->initrd, + n_initrd == 0 ? 0 : (n_initrd + 1) * sizeof(uint16_t *), + (n_initrd + 2) * sizeof(uint16_t *)); +- entry->initrd[n_initrd++] = xstra_to_path(value); ++ entry->initrd[n_initrd++] = xstr8_to_path(value); + entry->initrd[n_initrd] = NULL; + continue; + } +diff --git a/src/boot/efi/cpio.c b/src/boot/efi/cpio.c +index 1dbfe5f380..79b5d4327b 100644 +--- a/src/boot/efi/cpio.c ++++ b/src/boot/efi/cpio.c +@@ -359,24 +359,7 @@ static char16_t *get_dropin_dir(const EFI_DEVICE_PATH *file_path) { + if (device_path_to_str(file_path, &file_path_str) != EFI_SUCCESS) + return NULL; + +- for (char16_t *i = file_path_str, *fixed = i;; i++) { +- if (*i == '\0') { +- *fixed = '\0'; +- break; +- } +- +- /* Fix device path node separator. */ +- if (*i == '/') +- *i = '\\'; +- +- /* Double '\' is not allowed in EFI file paths. */ +- if (fixed != file_path_str && fixed[-1] == '\\' && *i == '\\') +- continue; +- +- *fixed = *i; +- fixed++; +- } +- ++ convert_efi_path(file_path_str); + return xpool_print(u"%s.extra.d", file_path_str); + } + +diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c +index b727d6de7e..3268c511d0 100644 +--- a/src/boot/efi/util.c ++++ b/src/boot/efi/util.c +@@ -249,97 +249,29 @@ void efivar_set_time_usec(const EFI_GUID *vendor, const char16_t *name, uint64_t + efivar_set(vendor, name, str, 0); + } + +-static int utf8_to_16(const char *stra, char16_t *c) { +- char16_t unichar; +- UINTN len; +- +- assert(stra); +- assert(c); +- +- if (!(stra[0] & 0x80)) +- len = 1; +- else if ((stra[0] & 0xe0) == 0xc0) +- len = 2; +- else if ((stra[0] & 0xf0) == 0xe0) +- len = 3; +- else if ((stra[0] & 0xf8) == 0xf0) +- len = 4; +- else if ((stra[0] & 0xfc) == 0xf8) +- len = 5; +- else if ((stra[0] & 0xfe) == 0xfc) +- len = 6; +- else +- return -1; +- +- switch (len) { +- case 1: +- unichar = stra[0]; +- break; +- case 2: +- unichar = stra[0] & 0x1f; +- break; +- case 3: +- unichar = stra[0] & 0x0f; +- break; +- case 4: +- unichar = stra[0] & 0x07; +- break; +- case 5: +- unichar = stra[0] & 0x03; +- break; +- case 6: +- unichar = stra[0] & 0x01; +- break; +- } +- +- for (UINTN i = 1; i < len; i++) { +- if ((stra[i] & 0xc0) != 0x80) +- return -1; +- unichar <<= 6; +- unichar |= stra[i] & 0x3f; +- } +- +- *c = unichar; +- return len; +-} +- +-char16_t *xstra_to_path(const char *stra) { +- char16_t *str; +- UINTN strlen; +- UINTN len; +- UINTN i; +- +- assert(stra); ++void convert_efi_path(char16_t *path) { ++ assert(path); + +- len = strlen8(stra); +- str = xnew(char16_t, len + 2); ++ for (size_t i = 0, fixed = 0;; i++) { ++ /* Fix device path node separator. */ ++ path[fixed] = (path[i] == '/') ? '\\' : path[i]; + +- str[0] = '\\'; +- strlen = 1; +- i = 0; +- while (i < len) { +- int utf8len; +- +- utf8len = utf8_to_16(stra + i, str + strlen); +- if (utf8len <= 0) { +- /* invalid utf8 sequence, skip the garbage */ +- i++; ++ /* Double '\' is not allowed in EFI file paths. */ ++ if (fixed > 0 && path[fixed - 1] == '\\' && path[fixed] == '\\') + continue; +- } + +- if (str[strlen] == '/') +- str[strlen] = '\\'; +- if (str[strlen] == '\\' && str[strlen-1] == '\\') { +- /* skip double slashes */ +- i += utf8len; +- continue; +- } ++ if (path[i] == '\0') ++ break; + +- strlen++; +- i += utf8len; ++ fixed++; + } +- str[strlen] = '\0'; +- return str; ++} ++ ++char16_t *xstr8_to_path(const char *str8) { ++ assert(str8); ++ char16_t *path = xstr8_to_16(str8); ++ convert_efi_path(path); ++ return path; + } + + EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **ret, UINTN *ret_size) { +diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h +index d78feac39c..e4ab8138c4 100644 +--- a/src/boot/efi/util.h ++++ b/src/boot/efi/util.h +@@ -112,7 +112,8 @@ EFI_STATUS efivar_get_uint32_le(const EFI_GUID *vendor, const char16_t *name, ui + EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const char16_t *name, uint64_t *ret); + EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, bool *ret); + +-char16_t *xstra_to_path(const char *stra); ++void convert_efi_path(char16_t *path); ++char16_t *xstr8_to_path(const char *stra); + + EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **content, UINTN *content_size); + diff --git a/SOURCES/0145-sd-bus-do-not-return-negative-errno-when-unknown-nam.patch b/SOURCES/0145-sd-bus-do-not-return-negative-errno-when-unknown-nam.patch deleted file mode 100644 index 6826818..0000000 --- a/SOURCES/0145-sd-bus-do-not-return-negative-errno-when-unknown-nam.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f2ca27c7fa3e98cbb412871d7ea18b51e7f5f048 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:29:24 +0900 -Subject: [PATCH] sd-bus: do not return negative errno when unknown name is - specified - -When 'recursive' is false, then sd_bus_track_remove_name() does not -return negative errno when unknown name is specified. Let's follow the -same pattern for the case that 'recursive' is true. - -(cherry picked from commit 55bfacc6c33eaf3475762e71172b2ef504be5af8) - -Related: #2087652 ---- - src/libsystemd/sd-bus/bus-track.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c -index 1cbdb46f4c..c56bd03fc6 100644 ---- a/src/libsystemd/sd-bus/bus-track.c -+++ b/src/libsystemd/sd-bus/bus-track.c -@@ -256,12 +256,9 @@ _public_ int sd_bus_track_remove_name(sd_bus_track *track, const char *name) { - if (!track) /* Treat a NULL track object as an empty track object */ - return 0; - -- if (!track->recursive) -- return bus_track_remove_name_fully(track, name); -- - i = hashmap_get(track->names, name); - if (!i) -- return -EUNATCH; -+ return 0; - - assert(i->n_ref >= 1); - if (i->n_ref <= 1) diff --git a/SOURCES/0146-sd-bus-use-hashmap_contains-and-drop-unnecessary-cas.patch b/SOURCES/0146-sd-bus-use-hashmap_contains-and-drop-unnecessary-cas.patch deleted file mode 100644 index 80691c7..0000000 --- a/SOURCES/0146-sd-bus-use-hashmap_contains-and-drop-unnecessary-cas.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 73c3e230dd66bedc82fa6dbf020c8d24592a32be Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 08:00:20 +0900 -Subject: [PATCH] sd-bus: use hashmap_contains() and drop unnecessary cast - -(cherry picked from commit c399ed923d6fa4bf731455d485cac5f00e060806) - -Related: #2087652 ---- - src/libsystemd/sd-bus/bus-track.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c -index c56bd03fc6..4c44162108 100644 ---- a/src/libsystemd/sd-bus/bus-track.c -+++ b/src/libsystemd/sd-bus/bus-track.c -@@ -287,7 +287,7 @@ _public_ const char* sd_bus_track_contains(sd_bus_track *track, const char *name - if (!track) /* Let's consider a NULL object equivalent to an empty object */ - return NULL; - -- return hashmap_get(track->names, (void*) name) ? name : NULL; -+ return hashmap_contains(track->names, name) ? name : NULL; - } - - _public_ const char* sd_bus_track_first(sd_bus_track *track) { diff --git a/SOURCES/0146-stub-Fix-cmdline-handling.patch b/SOURCES/0146-stub-Fix-cmdline-handling.patch new file mode 100644 index 0000000..c2d77e0 --- /dev/null +++ b/SOURCES/0146-stub-Fix-cmdline-handling.patch @@ -0,0 +1,284 @@ +From 9489991adc3313efff58837010e53db80aebdd1b Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Tue, 22 Nov 2022 17:42:38 +0100 +Subject: [PATCH] stub: Fix cmdline handling + +This fixes some bugs that could lead to garbage getting appended to the +command line passed to the kernel: + 1. The .cmdline section is not guaranteed to be NUL-terminated, but it + was used as if it was. + 2. The conversion of the command line to ASCII that was passed to the + stub ate the NUL at the end. + 3. LoadOptions is not guaranteed to be a NUL-terminated EFI string (it + really should be and generally always is, though). + +This also fixes the inconsistent mangling of the command line. If the +.cmdline section was used ASCII controls chars (new lines in particular) +would not be converted to spaces. + +As part of this commit, we optimize conversion for the generic code +instead of the (deprecated) EFI handover protocol. Previously we would +convert to ASCII/UTF-8 and then back to EFI string for the (now) default +generic code path. Instead we now convert to EFI string and mangle that +back to ASCII in the EFI handover protocol path. + +(cherry picked from commit 927ebebe588970fa2dd082a0daaef246229f009b) + +Related: #2138081 +--- + src/boot/efi/boot.c | 10 ++++------ + src/boot/efi/linux.c | 12 ++++++------ + src/boot/efi/linux.h | 17 +++++++++++------ + src/boot/efi/linux_x86.c | 21 ++++++++++++++------- + src/boot/efi/stub.c | 38 +++++++++++++++++--------------------- + src/boot/efi/util.c | 7 +++++++ + src/boot/efi/util.h | 1 + + 7 files changed, 60 insertions(+), 46 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 581043df01..426bdc3cc2 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -2242,13 +2242,11 @@ static void config_entry_add_unified( + content = mfree(content); + + /* read the embedded cmdline file */ +- err = file_read(linux_dir, f->FileName, offs[SECTION_CMDLINE], szs[SECTION_CMDLINE], &content, NULL); ++ size_t cmdline_len; ++ err = file_read(linux_dir, f->FileName, offs[SECTION_CMDLINE], szs[SECTION_CMDLINE], &content, &cmdline_len); + if (err == EFI_SUCCESS) { +- /* chomp the newline */ +- if (content[szs[SECTION_CMDLINE] - 1] == '\n') +- content[szs[SECTION_CMDLINE] - 1] = '\0'; +- +- entry->options = xstr8_to_16(content); ++ entry->options = xstrn8_to_16(content, cmdline_len); ++ mangle_stub_cmdline(entry->options); + } + } + } +diff --git a/src/boot/efi/linux.c b/src/boot/efi/linux.c +index 668510fca3..48801f9dd8 100644 +--- a/src/boot/efi/linux.c ++++ b/src/boot/efi/linux.c +@@ -93,15 +93,16 @@ static EFI_STATUS load_image(EFI_HANDLE parent, const void *source, size_t len, + + EFI_STATUS linux_exec( + EFI_HANDLE parent, +- const char *cmdline, UINTN cmdline_len, +- const void *linux_buffer, UINTN linux_length, +- const void *initrd_buffer, UINTN initrd_length) { ++ const char16_t *cmdline, ++ const void *linux_buffer, ++ size_t linux_length, ++ const void *initrd_buffer, ++ size_t initrd_length) { + + uint32_t compat_address; + EFI_STATUS err; + + assert(parent); +- assert(cmdline || cmdline_len == 0); + assert(linux_buffer && linux_length > 0); + assert(initrd_buffer || initrd_length == 0); + +@@ -113,7 +114,6 @@ EFI_STATUS linux_exec( + return linux_exec_efi_handover( + parent, + cmdline, +- cmdline_len, + linux_buffer, + linux_length, + initrd_buffer, +@@ -133,7 +133,7 @@ EFI_STATUS linux_exec( + return log_error_status_stall(err, u"Error getting kernel loaded image protocol: %r", err); + + if (cmdline) { +- loaded_image->LoadOptions = xstrn8_to_16(cmdline, cmdline_len); ++ loaded_image->LoadOptions = (void *) cmdline; + loaded_image->LoadOptionsSize = strsize16(loaded_image->LoadOptions); + } + +diff --git a/src/boot/efi/linux.h b/src/boot/efi/linux.h +index 19e5f5c4a8..f0a6a37ed1 100644 +--- a/src/boot/efi/linux.h ++++ b/src/boot/efi/linux.h +@@ -2,14 +2,19 @@ + #pragma once + + #include ++#include + + EFI_STATUS linux_exec( + EFI_HANDLE parent, +- const char *cmdline, UINTN cmdline_len, +- const void *linux_buffer, UINTN linux_length, +- const void *initrd_buffer, UINTN initrd_length); ++ const char16_t *cmdline, ++ const void *linux_buffer, ++ size_t linux_length, ++ const void *initrd_buffer, ++ size_t initrd_length); + EFI_STATUS linux_exec_efi_handover( + EFI_HANDLE parent, +- const char *cmdline, UINTN cmdline_len, +- const void *linux_buffer, UINTN linux_length, +- const void *initrd_buffer, UINTN initrd_length); ++ const char16_t *cmdline, ++ const void *linux_buffer, ++ size_t linux_length, ++ const void *initrd_buffer, ++ size_t initrd_length); +diff --git a/src/boot/efi/linux_x86.c b/src/boot/efi/linux_x86.c +index 64336ce348..6a5e431107 100644 +--- a/src/boot/efi/linux_x86.c ++++ b/src/boot/efi/linux_x86.c +@@ -126,12 +126,13 @@ static void linux_efi_handover(EFI_HANDLE parent, uintptr_t kernel, BootParams * + + EFI_STATUS linux_exec_efi_handover( + EFI_HANDLE parent, +- const char *cmdline, UINTN cmdline_len, +- const void *linux_buffer, UINTN linux_length, +- const void *initrd_buffer, UINTN initrd_length) { ++ const char16_t *cmdline, ++ const void *linux_buffer, ++ size_t linux_length, ++ const void *initrd_buffer, ++ size_t initrd_length) { + + assert(parent); +- assert(cmdline || cmdline_len == 0); + assert(linux_buffer); + assert(initrd_buffer || initrd_length == 0); + +@@ -185,14 +186,20 @@ EFI_STATUS linux_exec_efi_handover( + + _cleanup_pages_ Pages cmdline_pages = {}; + if (cmdline) { ++ size_t len = MIN(strlen16(cmdline), image_params->hdr.cmdline_size); ++ + cmdline_pages = xmalloc_pages( + can_4g ? AllocateAnyPages : AllocateMaxAddress, + EfiLoaderData, +- EFI_SIZE_TO_PAGES(cmdline_len + 1), ++ EFI_SIZE_TO_PAGES(len + 1), + CMDLINE_PTR_MAX); + +- memcpy(PHYSICAL_ADDRESS_TO_POINTER(cmdline_pages.addr), cmdline, cmdline_len); +- ((char *) PHYSICAL_ADDRESS_TO_POINTER(cmdline_pages.addr))[cmdline_len] = 0; ++ /* Convert cmdline to ASCII. */ ++ char *cmdline8 = PHYSICAL_ADDRESS_TO_POINTER(cmdline_pages.addr); ++ for (size_t i = 0; i < len; i++) ++ cmdline8[i] = cmdline[i] <= 0x7E ? cmdline[i] : ' '; ++ cmdline8[len] = '\0'; ++ + boot_params->hdr.cmd_line_ptr = (uint32_t) cmdline_pages.addr; + boot_params->ext_cmd_line_ptr = cmdline_pages.addr >> 32; + assert(can_4g || cmdline_pages.addr <= CMDLINE_PTR_MAX); +diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c +index a842c5c679..841a0e41bd 100644 +--- a/src/boot/efi/stub.c ++++ b/src/boot/efi/stub.c +@@ -132,14 +132,13 @@ static void export_variables(EFI_LOADED_IMAGE_PROTOCOL *loaded_image) { + + EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + _cleanup_free_ void *credential_initrd = NULL, *global_credential_initrd = NULL, *sysext_initrd = NULL, *pcrsig_initrd = NULL, *pcrpkey_initrd = NULL; +- UINTN credential_initrd_size = 0, global_credential_initrd_size = 0, sysext_initrd_size = 0, pcrsig_initrd_size = 0, pcrpkey_initrd_size = 0; +- UINTN cmdline_len = 0, linux_size, initrd_size, dt_size; ++ size_t credential_initrd_size = 0, global_credential_initrd_size = 0, sysext_initrd_size = 0, pcrsig_initrd_size = 0, pcrpkey_initrd_size = 0; ++ size_t linux_size, initrd_size, dt_size; + EFI_PHYSICAL_ADDRESS linux_base, initrd_base, dt_base; + _cleanup_(devicetree_cleanup) struct devicetree_state dt_state = {}; + EFI_LOADED_IMAGE_PROTOCOL *loaded_image; +- UINTN addrs[_UNIFIED_SECTION_MAX] = {}, szs[_UNIFIED_SECTION_MAX] = {}; +- char *cmdline = NULL; +- _cleanup_free_ char *cmdline_owned = NULL; ++ size_t addrs[_UNIFIED_SECTION_MAX] = {}, szs[_UNIFIED_SECTION_MAX] = {}; ++ _cleanup_free_ char16_t *cmdline = NULL; + int sections_measured = -1, parameters_measured = -1; + bool sysext_measured = false, m; + EFI_STATUS err; +@@ -208,32 +207,29 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + /* Show splash screen as early as possible */ + graphics_splash((const uint8_t*) loaded_image->ImageBase + addrs[UNIFIED_SECTION_SPLASH], szs[UNIFIED_SECTION_SPLASH]); + +- if (szs[UNIFIED_SECTION_CMDLINE] > 0) { +- cmdline = (char *) loaded_image->ImageBase + addrs[UNIFIED_SECTION_CMDLINE]; +- cmdline_len = szs[UNIFIED_SECTION_CMDLINE]; +- } +- + /* if we are not in secure boot mode, or none was provided, accept a custom command line and replace + * the built-in one. We also do a superficial check whether first character of passed command line + * is printable character (for compat with some Dell systems which fill in garbage?). */ +- if ((!secure_boot_enabled() || cmdline_len == 0) && +- loaded_image->LoadOptionsSize > 0 && ++ if ((!secure_boot_enabled() || szs[UNIFIED_SECTION_CMDLINE] == 0) && ++ loaded_image->LoadOptionsSize > sizeof(char16_t) && + ((char16_t *) loaded_image->LoadOptions)[0] > 0x1F) { +- cmdline_len = (loaded_image->LoadOptionsSize / sizeof(char16_t)) * sizeof(char); +- cmdline = cmdline_owned = xnew(char, cmdline_len); +- +- for (UINTN i = 0; i < cmdline_len; i++) { +- char16_t c = ((char16_t *) loaded_image->LoadOptions)[i]; +- cmdline[i] = c > 0x1F && c < 0x7F ? c : ' '; /* convert non-printable and non_ASCII characters to spaces. */ +- } ++ /* Note that LoadOptions is a void*, so it could be anything! */ ++ cmdline = xstrndup16( ++ loaded_image->LoadOptions, loaded_image->LoadOptionsSize / sizeof(char16_t)); ++ mangle_stub_cmdline(cmdline); + + /* Let's measure the passed kernel command line into the TPM. Note that this possibly + * duplicates what we already did in the boot menu, if that was already used. However, since + * we want the boot menu to support an EFI binary, and want to this stub to be usable from + * any boot menu, let's measure things anyway. */ + m = false; +- (void) tpm_log_load_options(loaded_image->LoadOptions, &m); ++ (void) tpm_log_load_options(cmdline, &m); + parameters_measured = m; ++ } else if (szs[UNIFIED_SECTION_CMDLINE] > 0) { ++ cmdline = xstrn8_to_16( ++ (char *) loaded_image->ImageBase + addrs[UNIFIED_SECTION_CMDLINE], ++ szs[UNIFIED_SECTION_CMDLINE]); ++ mangle_stub_cmdline(cmdline); + } + + export_variables(loaded_image); +@@ -374,7 +370,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + log_error_stall(L"Error loading embedded devicetree: %r", err); + } + +- err = linux_exec(image, cmdline, cmdline_len, ++ err = linux_exec(image, cmdline, + PHYSICAL_ADDRESS_TO_POINTER(linux_base), linux_size, + PHYSICAL_ADDRESS_TO_POINTER(initrd_base), initrd_size); + graphics_mode(false); +diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c +index 3268c511d0..1f07fbc38c 100644 +--- a/src/boot/efi/util.c ++++ b/src/boot/efi/util.c +@@ -274,6 +274,13 @@ char16_t *xstr8_to_path(const char *str8) { + return path; + } + ++void mangle_stub_cmdline(char16_t *cmdline) { ++ for (; *cmdline != '\0'; cmdline++) ++ /* Convert ASCII control characters to spaces. */ ++ if (*cmdline <= 0x1F) ++ *cmdline = ' '; ++} ++ + EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **ret, UINTN *ret_size) { + _cleanup_(file_closep) EFI_FILE *handle = NULL; + _cleanup_free_ char *buf = NULL; +diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h +index e4ab8138c4..f58d24fce1 100644 +--- a/src/boot/efi/util.h ++++ b/src/boot/efi/util.h +@@ -114,6 +114,7 @@ EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const char16_t *name, b + + void convert_efi_path(char16_t *path); + char16_t *xstr8_to_path(const char *stra); ++void mangle_stub_cmdline(char16_t *cmdline); + + EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **content, UINTN *content_size); + diff --git a/SOURCES/0147-stub-Detect-empty-LoadOptions-when-run-from-EFI-shel.patch b/SOURCES/0147-stub-Detect-empty-LoadOptions-when-run-from-EFI-shel.patch new file mode 100644 index 0000000..f3cabf5 --- /dev/null +++ b/SOURCES/0147-stub-Detect-empty-LoadOptions-when-run-from-EFI-shel.patch @@ -0,0 +1,121 @@ +From c287f39f5df561968c4cb7712750e5ed23c02b29 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Wed, 2 Nov 2022 10:25:32 +0100 +Subject: [PATCH] stub: Detect empty LoadOptions when run from EFI shell + +The EFI shell will pass the entire command line to the application it +starts, which includes the file path of the stub binary. This prevents +us from using the built-in cmdline if the command line is otherwise +empty. + +Fortunately, the EFI shell registers a protocol on any images it starts +this way. The protocol even lets us access the args individually, making +it easy to strip the stub path off. + +Fixes: #25201 +(cherry picked from commit b17f3b3d8077ab6827549a123ac636d655fe8d4d) + +Related: #2138081 +--- + src/boot/efi/missing_efi.h | 13 +++++++++ + src/boot/efi/stub.c | 59 +++++++++++++++++++++++++++++++------- + 2 files changed, 61 insertions(+), 11 deletions(-) + +diff --git a/src/boot/efi/missing_efi.h b/src/boot/efi/missing_efi.h +index f9169248ec..250c84c248 100644 +--- a/src/boot/efi/missing_efi.h ++++ b/src/boot/efi/missing_efi.h +@@ -385,3 +385,16 @@ typedef struct _EFI_CONSOLE_CONTROL_PROTOCOL { + { 0xd719b2cb, 0x3d3a, 0x4596, {0xa3, 0xbc, 0xda, 0xd0, 0xe, 0x67, 0x65, 0x6f }} + + #endif ++ ++#ifndef EFI_SHELL_PARAMETERS_PROTOCOL_GUID ++# define EFI_SHELL_PARAMETERS_PROTOCOL_GUID \ ++ { 0x752f3136, 0x4e16, 0x4fdc, { 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca } } ++ ++typedef struct { ++ CHAR16 **Argv; ++ UINTN Argc; ++ void *StdIn; ++ void *StdOut; ++ void *StdErr; ++} EFI_SHELL_PARAMETERS_PROTOCOL; ++#endif +diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c +index 841a0e41bd..7c42a16c70 100644 +--- a/src/boot/efi/stub.c ++++ b/src/boot/efi/stub.c +@@ -130,6 +130,53 @@ static void export_variables(EFI_LOADED_IMAGE_PROTOCOL *loaded_image) { + (void) efivar_set_uint64_le(LOADER_GUID, L"StubFeatures", stub_features, 0); + } + ++static bool use_load_options( ++ EFI_HANDLE stub_image, ++ EFI_LOADED_IMAGE_PROTOCOL *loaded_image, ++ bool have_cmdline, ++ char16_t **ret) { ++ ++ assert(stub_image); ++ assert(loaded_image); ++ assert(ret); ++ ++ /* We only allow custom command lines if we aren't in secure boot or if no cmdline was baked into ++ * the stub image. */ ++ if (secure_boot_enabled() && have_cmdline) ++ return false; ++ ++ /* We also do a superficial check whether first character of passed command line ++ * is printable character (for compat with some Dell systems which fill in garbage?). */ ++ if (loaded_image->LoadOptionsSize < sizeof(char16_t) || ((char16_t *) loaded_image->LoadOptions)[0] <= 0x1F) ++ return false; ++ ++ /* The UEFI shell registers EFI_SHELL_PARAMETERS_PROTOCOL onto images it runs. This lets us know that ++ * LoadOptions starts with the stub binary path which we want to strip off. */ ++ EFI_SHELL_PARAMETERS_PROTOCOL *shell; ++ if (BS->HandleProtocol(stub_image, &(EFI_GUID) EFI_SHELL_PARAMETERS_PROTOCOL_GUID, (void **) &shell) ++ != EFI_SUCCESS) { ++ /* Not running from EFI shell, use entire LoadOptions. Note that LoadOptions is a void*, so ++ * it could be anything! */ ++ *ret = xstrndup16(loaded_image->LoadOptions, loaded_image->LoadOptionsSize / sizeof(char16_t)); ++ mangle_stub_cmdline(*ret); ++ return true; ++ } ++ ++ if (shell->Argc < 2) ++ /* No arguments were provided? Then we fall back to built-in cmdline. */ ++ return false; ++ ++ /* Assemble the command line ourselves without our stub path. */ ++ *ret = xstrdup16(shell->Argv[1]); ++ for (size_t i = 2; i < shell->Argc; i++) { ++ _cleanup_free_ char16_t *old = *ret; ++ *ret = xpool_print(u"%s %s", old, shell->Argv[i]); ++ } ++ ++ mangle_stub_cmdline(*ret); ++ return true; ++} ++ + EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + _cleanup_free_ void *credential_initrd = NULL, *global_credential_initrd = NULL, *sysext_initrd = NULL, *pcrsig_initrd = NULL, *pcrpkey_initrd = NULL; + size_t credential_initrd_size = 0, global_credential_initrd_size = 0, sysext_initrd_size = 0, pcrsig_initrd_size = 0, pcrpkey_initrd_size = 0; +@@ -207,17 +254,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + /* Show splash screen as early as possible */ + graphics_splash((const uint8_t*) loaded_image->ImageBase + addrs[UNIFIED_SECTION_SPLASH], szs[UNIFIED_SECTION_SPLASH]); + +- /* if we are not in secure boot mode, or none was provided, accept a custom command line and replace +- * the built-in one. We also do a superficial check whether first character of passed command line +- * is printable character (for compat with some Dell systems which fill in garbage?). */ +- if ((!secure_boot_enabled() || szs[UNIFIED_SECTION_CMDLINE] == 0) && +- loaded_image->LoadOptionsSize > sizeof(char16_t) && +- ((char16_t *) loaded_image->LoadOptions)[0] > 0x1F) { +- /* Note that LoadOptions is a void*, so it could be anything! */ +- cmdline = xstrndup16( +- loaded_image->LoadOptions, loaded_image->LoadOptionsSize / sizeof(char16_t)); +- mangle_stub_cmdline(cmdline); +- ++ if (use_load_options(image, loaded_image, szs[UNIFIED_SECTION_CMDLINE] > 0, &cmdline)) { + /* Let's measure the passed kernel command line into the TPM. Note that this possibly + * duplicates what we already did in the boot menu, if that was already used. However, since + * we want the boot menu to support an EFI binary, and want to this stub to be usable from diff --git a/SOURCES/0147-test-shorten-code-a-bit.patch b/SOURCES/0147-test-shorten-code-a-bit.patch deleted file mode 100644 index e640be2..0000000 --- a/SOURCES/0147-test-shorten-code-a-bit.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 6ddb7fc35d7051627fa2772226e07296c28b316f Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:35:05 +0900 -Subject: [PATCH] test: shorten code a bit - -(cherry picked from commit 63ec7a849039fab830961fd7fee0c1e266735fc8) - -Related: #2087652 ---- - src/libsystemd/sd-bus/test-bus-track.c | 39 +++++++++----------------- - 1 file changed, 13 insertions(+), 26 deletions(-) - -diff --git a/src/libsystemd/sd-bus/test-bus-track.c b/src/libsystemd/sd-bus/test-bus-track.c -index 64aa88bb4f..238934a880 100644 ---- a/src/libsystemd/sd-bus/test-bus-track.c -+++ b/src/libsystemd/sd-bus/test-bus-track.c -@@ -26,7 +26,6 @@ static int track_cb_x(sd_bus_track *t, void *userdata) { - } - - static int track_cb_y(sd_bus_track *t, void *userdata) { -- int r; - - log_error("TRACK CB Y"); - -@@ -35,8 +34,7 @@ static int track_cb_y(sd_bus_track *t, void *userdata) { - - /* We got disconnected, let's close everything */ - -- r = sd_event_exit(sd_bus_get_event(sd_bus_track_get_bus(t)), EXIT_SUCCESS); -- assert_se(r >= 0); -+ assert_se(sd_event_exit(sd_bus_get_event(sd_bus_track_get_bus(t)), EXIT_SUCCESS) >= 0); - - return 0; - } -@@ -51,8 +49,7 @@ int main(int argc, char *argv[]) { - - test_setup_logging(LOG_INFO); - -- r = sd_event_default(&event); -- assert_se(r >= 0); -+ assert_se(sd_event_default(&event) >= 0); - - r = sd_bus_open_user(&a); - if (IN_SET(r, -ECONNREFUSED, -ENOENT, -ENOMEDIUM)) { -@@ -63,43 +60,33 @@ int main(int argc, char *argv[]) { - } - assert_se(r >= 0); - -- r = sd_bus_attach_event(a, event, SD_EVENT_PRIORITY_NORMAL); -- assert_se(r >= 0); -+ assert_se(sd_bus_attach_event(a, event, SD_EVENT_PRIORITY_NORMAL) >= 0); - - if (use_system_bus) -- r = sd_bus_open_system(&b); -+ assert_se(sd_bus_open_system(&b) >= 0); - else -- r = sd_bus_open_user(&b); -- assert_se(r >= 0); -+ assert_se(sd_bus_open_user(&b) >= 0); - -- r = sd_bus_attach_event(b, event, SD_EVENT_PRIORITY_NORMAL); -- assert_se(r >= 0); -+ assert_se(sd_bus_attach_event(b, event, SD_EVENT_PRIORITY_NORMAL) >= 0); - - /* Watch b's name from a */ -- r = sd_bus_track_new(a, &x, track_cb_x, NULL); -- assert_se(r >= 0); -+ assert_se(sd_bus_track_new(a, &x, track_cb_x, NULL) >= 0); - -- r = sd_bus_get_unique_name(b, &unique); -- assert_se(r >= 0); -+ assert_se(sd_bus_get_unique_name(b, &unique) >= 0); - -- r = sd_bus_track_add_name(x, unique); -- assert_se(r >= 0); -+ assert_se(sd_bus_track_add_name(x, unique) >= 0); - - /* Watch's a's own name from a */ -- r = sd_bus_track_new(a, &y, track_cb_y, NULL); -- assert_se(r >= 0); -+ assert_se(sd_bus_track_new(a, &y, track_cb_y, NULL) >= 0); - -- r = sd_bus_get_unique_name(a, &unique); -- assert_se(r >= 0); -+ assert_se(sd_bus_get_unique_name(a, &unique) >= 0); - -- r = sd_bus_track_add_name(y, unique); -- assert_se(r >= 0); -+ assert_se(sd_bus_track_add_name(y, unique) >= 0); - - /* Now make b's name disappear */ - sd_bus_close(b); - -- r = sd_event_loop(event); -- assert_se(r >= 0); -+ assert_se(sd_event_loop(event) >= 0); - - assert_se(track_cb_called_x); - assert_se(track_cb_called_y); diff --git a/SOURCES/0148-boot-Use-EFI_BOOT_MANAGER_POLICY_PROTOCOL-to-connect.patch b/SOURCES/0148-boot-Use-EFI_BOOT_MANAGER_POLICY_PROTOCOL-to-connect.patch new file mode 100644 index 0000000..929f1db --- /dev/null +++ b/SOURCES/0148-boot-Use-EFI_BOOT_MANAGER_POLICY_PROTOCOL-to-connect.patch @@ -0,0 +1,75 @@ +From 071cef46b87b605f8b4918a95dcecae08b843e23 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sun, 27 Nov 2022 13:38:18 +0100 +Subject: [PATCH] boot: Use EFI_BOOT_MANAGER_POLICY_PROTOCOL to connect console + devices + +(cherry picked from commit b99bf5811850afdb2502ba37251c48348da63c82) + +Related: #2138081 +--- + src/boot/efi/console.c | 16 ++++++++++++++++ + src/boot/efi/missing_efi.h | 19 +++++++++++++++++++ + 2 files changed, 35 insertions(+) + +diff --git a/src/boot/efi/console.c b/src/boot/efi/console.c +index 14c0008afb..cd980fd535 100644 +--- a/src/boot/efi/console.c ++++ b/src/boot/efi/console.c +@@ -12,6 +12,20 @@ + #define VERTICAL_MAX_OK 1080 + #define VIEWPORT_RATIO 10 + ++static EFI_STATUS console_connect(void) { ++ EFI_BOOT_MANAGER_POLICY_PROTOCOL *boot_policy; ++ EFI_STATUS err; ++ ++ /* This should make console devices appear/fully initialize on fastboot firmware. */ ++ ++ err = BS->LocateProtocol( ++ &(EFI_GUID) EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID, NULL, (void **) &boot_policy); ++ if (err != EFI_SUCCESS) ++ return err; ++ ++ return boot_policy->ConnectDeviceClass(boot_policy, &(EFI_GUID) EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID); ++} ++ + static inline void event_closep(EFI_EVENT *event) { + if (!*event) + return; +@@ -47,6 +61,8 @@ EFI_STATUS console_key_read(uint64_t *key, uint64_t timeout_usec) { + assert(key); + + if (!checked) { ++ console_connect(); ++ + /* Get the *first* TextInputEx device.*/ + err = BS->LocateProtocol(&SimpleTextInputExProtocol, NULL, (void **) &extraInEx); + if (err != EFI_SUCCESS || BS->CheckEvent(extraInEx->WaitForKeyEx) == EFI_INVALID_PARAMETER) +diff --git a/src/boot/efi/missing_efi.h b/src/boot/efi/missing_efi.h +index 250c84c248..b446e0399f 100644 +--- a/src/boot/efi/missing_efi.h ++++ b/src/boot/efi/missing_efi.h +@@ -398,3 +398,22 @@ typedef struct { + void *StdErr; + } EFI_SHELL_PARAMETERS_PROTOCOL; + #endif ++ ++#ifndef EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID ++#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID \ ++ { 0xFEDF8E0C, 0xE147, 0x11E3, { 0x99, 0x03, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } } ++#define EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID \ ++ { 0xCAB0E94C, 0xE15F, 0x11E3, { 0x91, 0x8D, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } } ++ ++typedef struct EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; ++struct EFI_BOOT_MANAGER_POLICY_PROTOCOL { ++ UINT64 Revision; ++ EFI_STATUS (EFIAPI *ConnectDevicePath)( ++ EFI_BOOT_MANAGER_POLICY_PROTOCOL *This, ++ EFI_DEVICE_PATH *DevicePath, ++ BOOLEAN Recursive); ++ EFI_STATUS (EFIAPI *ConnectDeviceClass)( ++ EFI_BOOT_MANAGER_POLICY_PROTOCOL *This, ++ EFI_GUID *Class); ++}; ++#endif diff --git a/SOURCES/0148-test-add-several-tests-for-track-item.patch b/SOURCES/0148-test-add-several-tests-for-track-item.patch deleted file mode 100644 index da0c5e3..0000000 --- a/SOURCES/0148-test-add-several-tests-for-track-item.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 4895d281d18e244d8238c1f77e597ce43310531c Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 17 Apr 2022 07:58:45 +0900 -Subject: [PATCH] test: add several tests for track item - -(cherry picked from commit 056a18e465bedb1bd35ce0bf78831be168c636cb) - -Related: #2087652 ---- - src/libsystemd/sd-bus/test-bus-track.c | 58 +++++++++++++++++++++++++- - 1 file changed, 57 insertions(+), 1 deletion(-) - -diff --git a/src/libsystemd/sd-bus/test-bus-track.c b/src/libsystemd/sd-bus/test-bus-track.c -index 238934a880..5604e84f52 100644 ---- a/src/libsystemd/sd-bus/test-bus-track.c -+++ b/src/libsystemd/sd-bus/test-bus-track.c -@@ -10,6 +10,7 @@ - - static bool track_cb_called_x = false; - static bool track_cb_called_y = false; -+static bool track_destroy_called_z = false; - - static int track_cb_x(sd_bus_track *t, void *userdata) { - -@@ -39,9 +40,17 @@ static int track_cb_y(sd_bus_track *t, void *userdata) { - return 0; - } - -+static int track_cb_z(sd_bus_track *t, void *userdata) { -+ assert_not_reached(); -+} -+ -+static void track_destroy_z(void *userdata) { -+ track_destroy_called_z = true; -+} -+ - int main(int argc, char *argv[]) { - _cleanup_(sd_event_unrefp) sd_event *event = NULL; -- _cleanup_(sd_bus_track_unrefp) sd_bus_track *x = NULL, *y = NULL; -+ _cleanup_(sd_bus_track_unrefp) sd_bus_track *x = NULL, *y = NULL, *z = NULL; - _cleanup_(sd_bus_unrefp) sd_bus *a = NULL, *b = NULL; - bool use_system_bus = false; - const char *unique; -@@ -83,6 +92,53 @@ int main(int argc, char *argv[]) { - - assert_se(sd_bus_track_add_name(y, unique) >= 0); - -+ /* Basic tests. */ -+ assert_se(sd_bus_track_new(a, &z, track_cb_z, NULL) >= 0); -+ -+ /* non-recursive case */ -+ assert_se(sd_bus_track_set_recursive(z, false) >= 0); -+ assert_se(sd_bus_track_get_recursive(z) == 0); -+ assert_se(!sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 0); -+ assert_se(sd_bus_track_remove_name(z, unique) == 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_set_recursive(z, true) == -EBUSY); -+ assert_se(sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 1); -+ assert_se(sd_bus_track_remove_name(z, unique) == 1); -+ assert_se(!sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 0); -+ assert_se(sd_bus_track_remove_name(z, unique) == 0); -+ -+ /* recursive case */ -+ assert_se(sd_bus_track_set_recursive(z, true) >= 0); -+ assert_se(sd_bus_track_get_recursive(z) == 1); -+ assert_se(!sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 0); -+ assert_se(sd_bus_track_remove_name(z, unique) == 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_add_name(z, unique) >= 0); -+ assert_se(sd_bus_track_set_recursive(z, false) == -EBUSY); -+ assert_se(sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 3); -+ assert_se(sd_bus_track_remove_name(z, unique) == 1); -+ assert_se(sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 2); -+ assert_se(sd_bus_track_remove_name(z, unique) == 1); -+ assert_se(sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 1); -+ assert_se(sd_bus_track_remove_name(z, unique) == 1); -+ assert_se(!sd_bus_track_contains(z, unique)); -+ assert_se(sd_bus_track_count_name(z, unique) == 0); -+ assert_se(sd_bus_track_remove_name(z, unique) == 0); -+ -+ assert_se(sd_bus_track_set_destroy_callback(z, track_destroy_z) >= 0); -+ z = sd_bus_track_unref(z); -+ assert_se(track_destroy_called_z); -+ - /* Now make b's name disappear */ - sd_bus_close(b); - diff --git a/SOURCES/0149-boot-Make-sure-all-partitions-drivers-are-connected.patch b/SOURCES/0149-boot-Make-sure-all-partitions-drivers-are-connected.patch new file mode 100644 index 0000000..13fce87 --- /dev/null +++ b/SOURCES/0149-boot-Make-sure-all-partitions-drivers-are-connected.patch @@ -0,0 +1,27 @@ +From 57b58ec8a72f00a66b43e7975ed3825dc28b851f Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sun, 27 Nov 2022 13:53:30 +0100 +Subject: [PATCH] boot: Make sure all partitions drivers are connected + +(cherry picked from commit 7f19be808c9cb9cabcaf1e48ccff875fa8191d3a) + +Related: #2138081 +--- + src/boot/efi/xbootldr.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/boot/efi/xbootldr.c b/src/boot/efi/xbootldr.c +index e5b9ca7268..7fef909312 100644 +--- a/src/boot/efi/xbootldr.c ++++ b/src/boot/efi/xbootldr.c +@@ -201,6 +201,10 @@ static EFI_STATUS find_device(EFI_HANDLE *device, EFI_DEVICE_PATH **ret_device_p + if (err != EFI_SUCCESS) + return err; + ++ /* The drivers for other partitions on this drive may not be initialized on fastboot firmware, so we ++ * have to ask the firmware to do just that. */ ++ (void) BS->ConnectController(disk_handle, NULL, NULL, true); ++ + err = BS->HandleProtocol(disk_handle, &BlockIoProtocol, (void **)&block_io); + if (err != EFI_SUCCESS) + return err; diff --git a/SOURCES/0149-core-slice-make-slice_freezer_action-return-0-if-fre.patch b/SOURCES/0149-core-slice-make-slice_freezer_action-return-0-if-fre.patch deleted file mode 100644 index edf5faa..0000000 --- a/SOURCES/0149-core-slice-make-slice_freezer_action-return-0-if-fre.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 776aab7656db605a856d2d3e9225f23779da5483 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 6 May 2022 14:01:22 +0900 -Subject: [PATCH] core/slice: make slice_freezer_action() return 0 if freezing - state is unchanged - -Fixes #23278. - -(cherry picked from commit d171e72e7afa11b238ba20758384d223b0c76e39) - -Related: #2087652 ---- - src/core/slice.c | 6 +----- - src/core/unit.c | 2 ++ - 2 files changed, 3 insertions(+), 5 deletions(-) - -diff --git a/src/core/slice.c b/src/core/slice.c -index 2e43c00119..c453aa033e 100644 ---- a/src/core/slice.c -+++ b/src/core/slice.c -@@ -389,11 +389,7 @@ static int slice_freezer_action(Unit *s, FreezerAction action) { - return r; - } - -- r = unit_cgroup_freezer_action(s, action); -- if (r < 0) -- return r; -- -- return 1; -+ return unit_cgroup_freezer_action(s, action); - } - - static int slice_freeze(Unit *s) { -diff --git a/src/core/unit.c b/src/core/unit.c -index 9cbed08987..aac87dcc7a 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -5822,6 +5822,8 @@ static int unit_freezer_action(Unit *u, FreezerAction action) { - if (r <= 0) - return r; - -+ assert(IN_SET(u->freezer_state, FREEZER_FREEZING, FREEZER_THAWING)); -+ - return 1; - } - diff --git a/SOURCES/0150-boot-improve-support-for-qemu.patch b/SOURCES/0150-boot-improve-support-for-qemu.patch new file mode 100644 index 0000000..f586008 --- /dev/null +++ b/SOURCES/0150-boot-improve-support-for-qemu.patch @@ -0,0 +1,225 @@ +From e2065196eb434008cfcba7c889138f58f7d492d7 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +Date: Fri, 9 Sep 2022 13:12:04 +0200 +Subject: [PATCH] boot: improve support for qemu + +systemd-boot expects being loaded from ESP and is quite unhappy in case +the loaded image device path is something else. When running on qemu +this can easily happen though. Case one is direct kernel boot, i.e. +loading via 'qemu -kernel systemd-bootx64.efi'. Case two is sd-boot +being added to the ovmf firmware image and being loaded from there. + +This patch detects both cases and goes inspect all file systems known to +the firmware, trying to find the ESP. When present the +VMMBootOrderNNNN variables are used to inspect the file systems in the +given order. + +(cherry picked from commit 8fec4f95be7a323410f9853b6773c810ba6c7152) + +Related: #2138081 +--- + src/boot/efi/boot.c | 10 ++- + src/boot/efi/meson.build | 1 + + src/boot/efi/vmm.c | 130 +++++++++++++++++++++++++++++++++++++++ + src/boot/efi/vmm.h | 8 +++ + 4 files changed, 148 insertions(+), 1 deletion(-) + create mode 100644 src/boot/efi/vmm.c + create mode 100644 src/boot/efi/vmm.h + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 426bdc3cc2..e182ee7840 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -16,6 +16,7 @@ + #include "linux.h" + #include "measure.h" + #include "pe.h" ++#include "vmm.h" + #include "random-seed.h" + #include "secure-boot.h" + #include "shim.h" +@@ -2639,6 +2640,13 @@ static void config_load_all_entries( + config_default_entry_select(config); + } + ++static EFI_STATUS discover_root_dir(EFI_LOADED_IMAGE_PROTOCOL *loaded_image, EFI_FILE **ret_dir) { ++ if (is_direct_boot(loaded_image->DeviceHandle)) ++ return vmm_open(&loaded_image->DeviceHandle, ret_dir); ++ else ++ return open_volume(loaded_image->DeviceHandle, ret_dir); ++} ++ + EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + EFI_LOADED_IMAGE_PROTOCOL *loaded_image; + _cleanup_(file_closep) EFI_FILE *root_dir = NULL; +@@ -2673,7 +2681,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + + export_variables(loaded_image, loaded_image_path, init_usec); + +- err = open_volume(loaded_image->DeviceHandle, &root_dir); ++ err = discover_root_dir(loaded_image, &root_dir); + if (err != EFI_SUCCESS) + return log_error_status_stall(err, L"Unable to open root directory: %r", err); + +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build +index 395386d3ed..0de43993a4 100644 +--- a/src/boot/efi/meson.build ++++ b/src/boot/efi/meson.build +@@ -389,6 +389,7 @@ systemd_boot_sources = files( + 'boot.c', + 'drivers.c', + 'random-seed.c', ++ 'vmm.c', + 'shim.c', + 'xbootldr.c', + ) +diff --git a/src/boot/efi/vmm.c b/src/boot/efi/vmm.c +new file mode 100644 +index 0000000000..b1bfd778fc +--- /dev/null ++++ b/src/boot/efi/vmm.c +@@ -0,0 +1,130 @@ ++/* SPDX-License-Identifier: LGPL-2.1-or-later */ ++ ++#include ++#include ++#include ++ ++#include "drivers.h" ++#include "efi-string.h" ++#include "string-util-fundamental.h" ++#include "util.h" ++ ++#define QEMU_KERNEL_LOADER_FS_MEDIA_GUID \ ++ { 0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7 }} ++ ++#define VMM_BOOT_ORDER_GUID \ ++ { 0x668f4529, 0x63d0, 0x4bb5, {0xb6, 0x5d, 0x6f, 0xbb, 0x9d, 0x36, 0xa4, 0x4a }} ++ ++/* detect direct boot */ ++bool is_direct_boot(EFI_HANDLE device) { ++ EFI_STATUS err; ++ VENDOR_DEVICE_PATH *dp; ++ ++ err = BS->HandleProtocol(device, &DevicePathProtocol, (void **) &dp); ++ if (err != EFI_SUCCESS) ++ return false; ++ ++ /* 'qemu -kernel systemd-bootx64.efi' */ ++ if (dp->Header.Type == MEDIA_DEVICE_PATH && ++ dp->Header.SubType == MEDIA_VENDOR_DP && ++ memcmp(&dp->Guid, &(EFI_GUID)QEMU_KERNEL_LOADER_FS_MEDIA_GUID, sizeof(EFI_GUID)) == 0) ++ return true; ++ ++ /* loaded from firmware volume (sd-boot added to ovmf) */ ++ if (dp->Header.Type == MEDIA_DEVICE_PATH && ++ dp->Header.SubType == MEDIA_PIWG_FW_VOL_DP) ++ return true; ++ ++ return false; ++} ++ ++static bool device_path_startswith(const EFI_DEVICE_PATH *dp, const EFI_DEVICE_PATH *start) { ++ if (!start) ++ return true; ++ if (!dp) ++ return false; ++ for (;;) { ++ if (IsDevicePathEnd(start)) ++ return true; ++ if (IsDevicePathEnd(dp)) ++ return false; ++ size_t l1 = DevicePathNodeLength(start); ++ size_t l2 = DevicePathNodeLength(dp); ++ if (l1 != l2) ++ return false; ++ if (memcmp(dp, start, l1) != 0) ++ return false; ++ start = NextDevicePathNode(start); ++ dp = NextDevicePathNode(dp); ++ } ++} ++ ++/* ++ * Try find ESP when not loaded from ESP ++ * ++ * Inspect all filesystems known to the firmware, try find the ESP. In case VMMBootOrderNNNN variables are ++ * present they are used to inspect the filesystems in the specified order. When nothing was found or the ++ * variables are not present the function will do one final search pass over all filesystems. ++ * ++ * Recent OVMF builds store the qemu boot order (as specified using the bootindex property on the qemu ++ * command line) in VMMBootOrderNNNN. The variables contain a device path. ++ * ++ * Example qemu command line: ++ * qemu -virtio-scsi-pci,addr=14.0 -device scsi-cd,scsi-id=4,bootindex=1 ++ * ++ * Resulting variable: ++ * VMMBootOrder0000 = PciRoot(0x0)/Pci(0x14,0x0)/Scsi(0x4,0x0) ++ */ ++EFI_STATUS vmm_open(EFI_HANDLE *ret_vmm_dev, EFI_FILE **ret_vmm_dir) { ++ _cleanup_free_ EFI_HANDLE *handles = NULL; ++ size_t n_handles; ++ EFI_STATUS err, dp_err; ++ ++ assert(ret_vmm_dev); ++ assert(ret_vmm_dir); ++ ++ /* find all file system handles */ ++ err = BS->LocateHandleBuffer(ByProtocol, &FileSystemProtocol, NULL, &n_handles, &handles); ++ if (err != EFI_SUCCESS) ++ return err; ++ ++ for (size_t order = 0;; order++) { ++ _cleanup_free_ EFI_DEVICE_PATH *dp = NULL; ++ char16_t order_str[STRLEN("VMMBootOrder") + 4 + 1]; ++ ++ SPrint(order_str, sizeof(order_str), u"VMMBootOrder%04x", order); ++ dp_err = efivar_get_raw(&(EFI_GUID)VMM_BOOT_ORDER_GUID, order_str, (char**)&dp, NULL); ++ ++ for (size_t i = 0; i < n_handles; i++) { ++ _cleanup_(file_closep) EFI_FILE *root_dir = NULL, *efi_dir = NULL; ++ EFI_DEVICE_PATH *fs; ++ ++ err = BS->HandleProtocol(handles[i], &DevicePathProtocol, (void **) &fs); ++ if (err != EFI_SUCCESS) ++ return err; ++ ++ /* check against VMMBootOrderNNNN (if set) */ ++ if (dp_err == EFI_SUCCESS && !device_path_startswith(fs, dp)) ++ continue; ++ ++ err = open_volume(handles[i], &root_dir); ++ if (err != EFI_SUCCESS) ++ continue; ++ ++ /* simple ESP check */ ++ err = root_dir->Open(root_dir, &efi_dir, (char16_t*) u"\\EFI", ++ EFI_FILE_MODE_READ, ++ EFI_FILE_READ_ONLY | EFI_FILE_DIRECTORY); ++ if (err != EFI_SUCCESS) ++ continue; ++ ++ *ret_vmm_dev = handles[i]; ++ *ret_vmm_dir = TAKE_PTR(root_dir); ++ return EFI_SUCCESS; ++ } ++ ++ if (dp_err != EFI_SUCCESS) ++ return EFI_NOT_FOUND; ++ } ++ assert_not_reached(); ++} +diff --git a/src/boot/efi/vmm.h b/src/boot/efi/vmm.h +new file mode 100644 +index 0000000000..7bac1a324a +--- /dev/null ++++ b/src/boot/efi/vmm.h +@@ -0,0 +1,8 @@ ++/* SPDX-License-Identifier: LGPL-2.1-or-later */ ++#pragma once ++ ++#include ++#include ++ ++bool is_direct_boot(EFI_HANDLE device); ++EFI_STATUS vmm_open(EFI_HANDLE *ret_qemu_dev, EFI_FILE **ret_qemu_dir); diff --git a/SOURCES/0150-core-unit-fix-use-after-free.patch b/SOURCES/0150-core-unit-fix-use-after-free.patch deleted file mode 100644 index e308d5f..0000000 --- a/SOURCES/0150-core-unit-fix-use-after-free.patch +++ /dev/null @@ -1,29 +0,0 @@ -From b8ccf30c4654ed5697562842a8a608e627425370 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Mon, 9 May 2022 00:56:05 +0900 -Subject: [PATCH] core/unit: fix use-after-free - -Fixes #23312. - -(cherry picked from commit 734582830b58e000a26e18807ea277c18778573c) - -Related: #2087652 ---- - src/core/unit.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/unit.c b/src/core/unit.c -index aac87dcc7a..0eade13ee9 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -671,8 +671,8 @@ Unit* unit_free(Unit *u) { - - unit_dequeue_rewatch_pids(u); - -- sd_bus_slot_unref(u->match_bus_slot); -- sd_bus_track_unref(u->bus_track); -+ u->match_bus_slot = sd_bus_slot_unref(u->match_bus_slot); -+ u->bus_track = sd_bus_track_unref(u->bus_track); - u->deserialized_refs = strv_free(u->deserialized_refs); - u->pending_freezer_message = sd_bus_message_unref(u->pending_freezer_message); - diff --git a/SOURCES/0151-core-timer-fix-potential-use-after-free.patch b/SOURCES/0151-core-timer-fix-potential-use-after-free.patch deleted file mode 100644 index c83f10b..0000000 --- a/SOURCES/0151-core-timer-fix-potential-use-after-free.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e9acfceb104c8f9ccec8b468b5d111844285f43a Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 10 May 2022 14:10:17 +0900 -Subject: [PATCH] core/timer: fix potential use-after-free - -(cherry picked from commit 756491af392a99c4286d876b0041535e50df80ad) - -Related: #2087652 ---- - src/core/timer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/timer.c b/src/core/timer.c -index 0dc49dd46b..b439802bc2 100644 ---- a/src/core/timer.c -+++ b/src/core/timer.c -@@ -68,7 +68,7 @@ static void timer_done(Unit *u) { - t->monotonic_event_source = sd_event_source_disable_unref(t->monotonic_event_source); - t->realtime_event_source = sd_event_source_disable_unref(t->realtime_event_source); - -- free(t->stamp_path); -+ t->stamp_path = mfree(t->stamp_path); - } - - static int timer_verify(Timer *t) { diff --git a/SOURCES/0151-systemd-boot-man-page-add-section-for-virtual-machin.patch b/SOURCES/0151-systemd-boot-man-page-add-section-for-virtual-machin.patch new file mode 100644 index 0000000..7fac54a --- /dev/null +++ b/SOURCES/0151-systemd-boot-man-page-add-section-for-virtual-machin.patch @@ -0,0 +1,40 @@ +From 236e3846e8497f2f7e5c4dfcfc9ff2e922fd02a0 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +Date: Tue, 4 Oct 2022 15:01:39 +0200 +Subject: [PATCH] systemd-boot man page: add section for virtual machines + +(cherry picked from commit 941d418d19397bd20c570729877a5dfa37d762b2) + +Related: #2138081 +--- + man/systemd-boot.xml | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/man/systemd-boot.xml b/man/systemd-boot.xml +index 0eee532f90..57b66803fa 100644 +--- a/man/systemd-boot.xml ++++ b/man/systemd-boot.xml +@@ -525,6 +525,23 @@ + /etc/kernel/tries when a boot loader entry is first created. + + ++ ++ Using systemd-boot in virtual machines. ++ ++ When using qemu with OVMF (UEFI Firmware for virtual machines) the switch ++ works not only for linux kernels, but for any EFI binary, including sd-boot and unified linux ++ kernels. Example command line for loading sd-boot on x64: ++ ++ ++ qemu-system-x86_64 [ ... ] ++ -kernel /usr/lib/systemd/boot/efi/systemd-bootx64.efi ++ ++ ++ systemd-boot will detect that it was started directly instead of being loaded from ESP and will ++ search for the ESP in that case, taking into account boot order information from the hypervisor (if ++ available). ++ ++ + + See Also + diff --git a/SOURCES/0152-boot-Only-do-full-driver-initialization-in-VMs.patch b/SOURCES/0152-boot-Only-do-full-driver-initialization-in-VMs.patch new file mode 100644 index 0000000..096ae37 --- /dev/null +++ b/SOURCES/0152-boot-Only-do-full-driver-initialization-in-VMs.patch @@ -0,0 +1,51 @@ +From 7dec74695751b70a8a86eb647062e7d5a5157446 Mon Sep 17 00:00:00 2001 +From: Jan Janssen +Date: Sun, 27 Nov 2022 13:56:18 +0100 +Subject: [PATCH] boot: Only do full driver initialization in VMs + +Doing the reconnect dance on some real firmware creates huge delays on +boot. This should not be needed anymore as we now ask the firmware to +make console devices and xbootldr partitions available explicitly in a +more targeted fashion. + +Fixes: #25510 +(cherry picked from commit f6d59e2ebfc1bf50683a2e640aad501c372a50e4) + +Related: #2138081 +--- + src/boot/efi/boot.c | 6 ------ + src/boot/efi/vmm.c | 4 ++++ + 2 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index e182ee7840..5944451e6a 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -2662,12 +2662,6 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + /* Uncomment the next line if you need to wait for debugger. */ + // debug_break(); + +- /* The firmware may skip initializing some devices for the sake of a faster boot. This is especially +- * true for fastboot enabled firmwares. But this means that things we use like input devices or the +- * xbootldr partition may not be available yet. Reconnect all drivers should hopefully make the +- * firmware initialize everything we need. */ +- (void) reconnect_all_drivers(); +- + err = BS->OpenProtocol(image, + &LoadedImageProtocol, + (void **)&loaded_image, +diff --git a/src/boot/efi/vmm.c b/src/boot/efi/vmm.c +index b1bfd778fc..2260b217b7 100644 +--- a/src/boot/efi/vmm.c ++++ b/src/boot/efi/vmm.c +@@ -83,6 +83,10 @@ EFI_STATUS vmm_open(EFI_HANDLE *ret_vmm_dev, EFI_FILE **ret_vmm_dir) { + assert(ret_vmm_dev); + assert(ret_vmm_dir); + ++ /* Make sure all file systems have been initialized. Only do this in VMs as this is slow ++ * on some real firmwares. */ ++ (void) reconnect_all_drivers(); ++ + /* find all file system handles */ + err = BS->LocateHandleBuffer(ByProtocol, &FileSystemProtocol, NULL, &n_handles, &handles); + if (err != EFI_SUCCESS) diff --git a/SOURCES/0152-core-command-argument-can-be-longer-than-PATH_MAX.patch b/SOURCES/0152-core-command-argument-can-be-longer-than-PATH_MAX.patch deleted file mode 100644 index c9880b5..0000000 --- a/SOURCES/0152-core-command-argument-can-be-longer-than-PATH_MAX.patch +++ /dev/null @@ -1,64 +0,0 @@ -From fdc436432f1ca2dd9df2f24728916ab1201015c1 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 5 Apr 2022 21:47:46 +0900 -Subject: [PATCH] core: command argument can be longer than PATH_MAX - -Fixes a bug introduced by 065364920281e1cf59cab989e17aff21790505c4. - -Fixes #22957. - -(cherry picked from commit 58dd4999dcc81a0ed92fbd78bce3592c3e3afe9e) - -Resolves: #2073994 ---- - src/core/load-fragment.c | 2 +- - src/test/test-load-fragment.c | 16 ++++++++++++++++ - 2 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c -index ad5a0912fc..461e073269 100644 ---- a/src/core/load-fragment.c -+++ b/src/core/load-fragment.c -@@ -1000,7 +1000,7 @@ int config_parse_exec( - if (r < 0) - return ignore ? 0 : -ENOEXEC; - -- r = unit_path_printf(u, word, &resolved); -+ r = unit_full_printf(u, word, &resolved); - if (r < 0) { - log_syntax(unit, ignore ? LOG_WARNING : LOG_ERR, filename, line, r, - "Failed to resolve unit specifiers in %s%s: %m", -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index fbe4744333..c579be4150 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -10,6 +10,7 @@ - #include "capability-util.h" - #include "conf-parser.h" - #include "fd-util.h" -+#include "fileio.h" - #include "format-util.h" - #include "fs-util.h" - #include "hashmap.h" -@@ -416,6 +417,21 @@ TEST(config_parse_exec) { - assert_se(r == 0); - assert_se(c1->command_next == NULL); - -+ log_info("/* long arg */"); /* See issue #22957. */ -+ -+ char x[LONG_LINE_MAX-100], *y; -+ y = mempcpy(x, "/bin/echo ", STRLEN("/bin/echo ")); -+ memset(y, 'x', sizeof(x) - STRLEN("/bin/echo ") - 1); -+ x[sizeof(x) - 1] = '\0'; -+ -+ r = config_parse_exec(NULL, "fake", 5, "section", 1, -+ "LValue", 0, x, -+ &c, u); -+ assert_se(r >= 0); -+ c1 = c1->command_next; -+ check_execcommand(c1, -+ "/bin/echo", NULL, y, NULL, false); -+ - log_info("/* empty argument, reset */"); - r = config_parse_exec(NULL, "fake", 4, "section", 1, - "LValue", 0, "", diff --git a/SOURCES/0153-dissect-rework-DISSECT_IMAGE_ADD_PARTITION_DEVICES-D.patch b/SOURCES/0153-dissect-rework-DISSECT_IMAGE_ADD_PARTITION_DEVICES-D.patch new file mode 100644 index 0000000..c7d02ec --- /dev/null +++ b/SOURCES/0153-dissect-rework-DISSECT_IMAGE_ADD_PARTITION_DEVICES-D.patch @@ -0,0 +1,303 @@ +From 4d081a18d324e2010b6c46d468f693b1186c4275 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 30 Nov 2022 17:17:20 +0100 +Subject: [PATCH] dissect: rework DISSECT_IMAGE_ADD_PARTITION_DEVICES + + DISSECT_IMAGE_OPEN_PARTITION_DEVICES + +Curently, these two flags were implied by dissect_loop_device(), but +that's not right, because this means systemd-gpt-auto-generator will +dissect the root block device with these flags set and that's not +desirable: the generator should not cause the partition devices to be +created (we don't intend to use them right-away after all, but expect +udev to find/probe them first, and then mount them though .mount units). +And there's no point in opening the partition devices, since we do not +intend to mount them via fds either. + +Hence, rework this: instead of implying the flags, specify them +explicitly. + +While we are at it, let's also rename the flags to make them more +descriptive: + +DISSECT_IMAGE_MANAGE_PARTITION_DEVICES becomes +DISSECT_IMAGE_ADD_PARTITION_DEVICES, since that's really all this does: +add the partition devices via BLKPG. + +DISSECT_IMAGE_OPEN_PARTITION_DEVICES becomes +DISSECT_IMAGE_PIN_PARTITION_DEVICES, since we not only open the devices, +but keep the devices open continously (i.e. we "pin" them). + +Also, drop the DISSECT_IMAGE_BLOCK_DEVICE combination flag, since it is +misleading, i.e. it suggests it was appropriate to specify on all +dissected blocking devices, but that's precisely not the case, see the +systemd-gpt-auto-generator case. My guess is that the confusion around +this was actually the cause for this bug we are addressing here. + +Fixes: #25528 +(cherry picked from commit 73d88b806b92efa0738bb6bcccbf105441f6d8cb) + +Related: #2138081 +--- + src/core/namespace.c | 4 +++- + src/dissect/dissect.c | 4 +++- + src/gpt-auto-generator/gpt-auto-generator.c | 5 +++++ + src/nspawn/nspawn.c | 4 +++- + src/portable/portable.c | 4 +++- + src/shared/discover-image.c | 4 +++- + src/shared/dissect-image.c | 23 +++++++++++++-------- + src/shared/dissect-image.h | 6 ++---- + src/sysext/sysext.c | 4 +++- + src/test/test-loop-block.c | 6 +++--- + 10 files changed, 42 insertions(+), 22 deletions(-) + +diff --git a/src/core/namespace.c b/src/core/namespace.c +index 852be3bdde..96b05303eb 100644 +--- a/src/core/namespace.c ++++ b/src/core/namespace.c +@@ -2051,7 +2051,9 @@ int setup_namespace( + DISSECT_IMAGE_RELAX_VAR_CHECK | + DISSECT_IMAGE_FSCK | + DISSECT_IMAGE_USR_NO_ROOT | +- DISSECT_IMAGE_GROWFS; ++ DISSECT_IMAGE_GROWFS | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES; + size_t n_mounts; + int r; + +diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c +index c465115fc7..c1d731dc82 100644 +--- a/src/dissect/dissect.c ++++ b/src/dissect/dissect.c +@@ -60,7 +60,9 @@ static DissectImageFlags arg_flags = + DISSECT_IMAGE_RELAX_VAR_CHECK | + DISSECT_IMAGE_FSCK | + DISSECT_IMAGE_USR_NO_ROOT | +- DISSECT_IMAGE_GROWFS; ++ DISSECT_IMAGE_GROWFS | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES; + static VeritySettings arg_verity_settings = VERITY_SETTINGS_DEFAULT; + static JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF; + static PagerFlags arg_pager_flags = 0; +diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c +index 0fb53bb9ea..143faa0c39 100644 +--- a/src/gpt-auto-generator/gpt-auto-generator.c ++++ b/src/gpt-auto-generator/gpt-auto-generator.c +@@ -665,6 +665,11 @@ static int enumerate_partitions(dev_t devnum) { + NULL, NULL, + DISSECT_IMAGE_GPT_ONLY| + DISSECT_IMAGE_USR_NO_ROOT, ++ /* NB! Unlike most other places where we dissect block devices we do not use ++ * DISSECT_IMAGE_ADD_PARTITION_DEVICES here: we want that the kernel finds the ++ * devices, and udev probes them before we mount them via .mount units much later ++ * on. And thus we also don't set DISSECT_IMAGE_PIN_PARTITION_DEVICES here, because ++ * we don't actually mount anything immediately. */ + &m); + if (r == -ENOPKG) { + log_debug_errno(r, "No suitable partition table found, ignoring."); +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index 93d646ed56..57723aa3cf 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -5657,7 +5657,9 @@ static int run(int argc, char *argv[]) { + DISSECT_IMAGE_GENERIC_ROOT | + DISSECT_IMAGE_REQUIRE_ROOT | + DISSECT_IMAGE_RELAX_VAR_CHECK | +- DISSECT_IMAGE_USR_NO_ROOT; ++ DISSECT_IMAGE_USR_NO_ROOT | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES; + assert(arg_image); + assert(!arg_template); + +diff --git a/src/portable/portable.c b/src/portable/portable.c +index fbc4497014..570751f05b 100644 +--- a/src/portable/portable.c ++++ b/src/portable/portable.c +@@ -375,7 +375,9 @@ static int portable_extract_by_path( + DISSECT_IMAGE_REQUIRE_ROOT | + DISSECT_IMAGE_DISCARD_ON_LOOP | + DISSECT_IMAGE_RELAX_VAR_CHECK | +- DISSECT_IMAGE_USR_NO_ROOT, ++ DISSECT_IMAGE_USR_NO_ROOT | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES, + &m); + if (r == -ENOPKG) + sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Couldn't identify a suitable partition table or file system in '%s'.", path); +diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c +index fad95f7f43..5d740de266 100644 +--- a/src/shared/discover-image.c ++++ b/src/shared/discover-image.c +@@ -1203,7 +1203,9 @@ int image_read_metadata(Image *i) { + DISSECT_IMAGE_REQUIRE_ROOT | + DISSECT_IMAGE_RELAX_VAR_CHECK | + DISSECT_IMAGE_READ_ONLY | +- DISSECT_IMAGE_USR_NO_ROOT, ++ DISSECT_IMAGE_USR_NO_ROOT | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES, + &m); + if (r < 0) + return r; +diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c +index 7676636723..462ee4b3e8 100644 +--- a/src/shared/dissect-image.c ++++ b/src/shared/dissect-image.c +@@ -436,7 +436,7 @@ static int dissect_image( + const char *fstype = NULL, *options = NULL; + _cleanup_close_ int mount_node_fd = -1; + +- if (FLAGS_SET(flags, DISSECT_IMAGE_OPEN_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_PIN_PARTITION_DEVICES)) { + mount_node_fd = open_partition(devname, /* is_partition = */ false, m->loop); + if (mount_node_fd < 0) + return mount_node_fd; +@@ -505,7 +505,7 @@ static int dissect_image( + if (verity && verity->data_path) + return -EBADR; + +- if (FLAGS_SET(flags, DISSECT_IMAGE_MANAGE_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_ADD_PARTITION_DEVICES)) { + /* Safety check: refuse block devices that carry a partition table but for which the kernel doesn't + * do partition scanning. */ + r = blockdev_partscan_enabled(fd); +@@ -574,7 +574,7 @@ static int dissect_image( + * Kernel returns EBUSY if there's already a partition by that number or an overlapping + * partition already existent. */ + +- if (FLAGS_SET(flags, DISSECT_IMAGE_MANAGE_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_ADD_PARTITION_DEVICES)) { + r = block_device_add_partition(fd, node, nr, (uint64_t) start * 512, (uint64_t) size * 512); + if (r < 0) { + if (r != -EBUSY) +@@ -871,7 +871,7 @@ static int dissect_image( + dissected_partition_done(m->partitions + designator); + } + +- if (FLAGS_SET(flags, DISSECT_IMAGE_OPEN_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_PIN_PARTITION_DEVICES)) { + mount_node_fd = open_partition(node, /* is_partition = */ true, m->loop); + if (mount_node_fd < 0) + return mount_node_fd; +@@ -945,7 +945,7 @@ static int dissect_image( + if (m->partitions[PARTITION_XBOOTLDR].found) + continue; + +- if (FLAGS_SET(flags, DISSECT_IMAGE_OPEN_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_PIN_PARTITION_DEVICES)) { + mount_node_fd = open_partition(node, /* is_partition = */ true, m->loop); + if (mount_node_fd < 0) + return mount_node_fd; +@@ -1127,7 +1127,7 @@ static int dissect_image( + _cleanup_free_ char *o = NULL; + const char *options; + +- if (FLAGS_SET(flags, DISSECT_IMAGE_OPEN_PARTITION_DEVICES)) { ++ if (FLAGS_SET(flags, DISSECT_IMAGE_PIN_PARTITION_DEVICES)) { + mount_node_fd = open_partition(generic_node, /* is_partition = */ true, m->loop); + if (mount_node_fd < 0) + return mount_node_fd; +@@ -1232,7 +1232,6 @@ int dissect_image_file( + int r; + + assert(path); +- assert((flags & DISSECT_IMAGE_BLOCK_DEVICE) == 0); + assert(ret); + + fd = open(path, O_RDONLY|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); +@@ -3036,7 +3035,7 @@ int dissect_loop_device( + + m->loop = loop_device_ref(loop); + +- r = dissect_image(m, loop->fd, loop->node, verity, mount_options, flags | DISSECT_IMAGE_BLOCK_DEVICE); ++ r = dissect_image(m, loop->fd, loop->node, verity, mount_options, flags); + if (r < 0) + return r; + +@@ -3199,6 +3198,10 @@ int mount_image_privately_interactively( + assert(ret_directory); + assert(ret_loop_device); + ++ /* We intend to mount this right-away, hence add the partitions if needed and pin them*/ ++ flags |= DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES; ++ + r = verity_settings_load(&verity, image, NULL, NULL); + if (r < 0) + return log_error_errno(r, "Failed to load root hash data: %m"); +@@ -3321,7 +3324,9 @@ int verity_dissect_and_mount( + return log_debug_errno(r, "Failed to load root hash: %m"); + + dissect_image_flags = (verity.data_path ? DISSECT_IMAGE_NO_PARTITION_TABLE : 0) | +- (relax_extension_release_check ? DISSECT_IMAGE_RELAX_SYSEXT_CHECK : 0); ++ (relax_extension_release_check ? DISSECT_IMAGE_RELAX_SYSEXT_CHECK : 0) | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES; + + /* Note that we don't use loop_device_make here, as the FD is most likely O_PATH which would not be + * accepted by LOOP_CONFIGURE, so just let loop_device_make_by_path reopen it as a regular FD. */ +diff --git a/src/shared/dissect-image.h b/src/shared/dissect-image.h +index f2278c4dfa..631d4c7a04 100644 +--- a/src/shared/dissect-image.h ++++ b/src/shared/dissect-image.h +@@ -214,10 +214,8 @@ typedef enum DissectImageFlags { + DISSECT_IMAGE_MOUNT_READ_ONLY, + DISSECT_IMAGE_GROWFS = 1 << 18, /* Grow file systems in partitions marked for that to the size of the partitions after mount */ + DISSECT_IMAGE_MOUNT_IDMAPPED = 1 << 19, /* Mount mounts with kernel 5.12-style userns ID mapping, if file system type doesn't support uid=/gid= */ +- DISSECT_IMAGE_MANAGE_PARTITION_DEVICES = 1 << 20, /* Manage partition devices, e.g. probe each partition in more detail */ +- DISSECT_IMAGE_OPEN_PARTITION_DEVICES = 1 << 21, /* Open dissected partitions and decrypted partitions */ +- DISSECT_IMAGE_BLOCK_DEVICE = DISSECT_IMAGE_MANAGE_PARTITION_DEVICES | +- DISSECT_IMAGE_OPEN_PARTITION_DEVICES, ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES = 1 << 20, /* Create partition devices via BLKPG_ADD_PARTITION */ ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES = 1 << 21, /* Open dissected partitions and decrypted partitions and pin them by fd */ + DISSECT_IMAGE_RELAX_SYSEXT_CHECK = 1 << 22, /* Don't insist that the extension-release file name matches the image name */ + } DissectImageFlags; + +diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c +index 0875099d5f..c57293b0e5 100644 +--- a/src/sysext/sysext.c ++++ b/src/sysext/sysext.c +@@ -520,7 +520,9 @@ static int merge_subprocess(Hashmap *images, const char *workspace) { + DISSECT_IMAGE_GENERIC_ROOT | + DISSECT_IMAGE_REQUIRE_ROOT | + DISSECT_IMAGE_MOUNT_ROOT_ONLY | +- DISSECT_IMAGE_USR_NO_ROOT; ++ DISSECT_IMAGE_USR_NO_ROOT | ++ DISSECT_IMAGE_ADD_PARTITION_DEVICES | ++ DISSECT_IMAGE_PIN_PARTITION_DEVICES; + + r = verity_settings_load(&verity_settings, img->path, NULL, NULL); + if (r < 0) +diff --git a/src/test/test-loop-block.c b/src/test/test-loop-block.c +index e2b97dd56f..af2a9683a4 100644 +--- a/src/test/test-loop-block.c ++++ b/src/test/test-loop-block.c +@@ -71,7 +71,7 @@ static void* thread_func(void *ptr) { + + log_notice("Acquired loop device %s, will mount on %s", loop->node, mounted); + +- r = dissect_loop_device(loop, NULL, NULL, DISSECT_IMAGE_READ_ONLY, &dissected); ++ r = dissect_loop_device(loop, NULL, NULL, DISSECT_IMAGE_READ_ONLY|DISSECT_IMAGE_ADD_PARTITION_DEVICES|DISSECT_IMAGE_PIN_PARTITION_DEVICES, &dissected); + if (r < 0) + log_error_errno(r, "Failed dissect loopback device %s: %m", loop->node); + assert_se(r >= 0); +@@ -220,7 +220,7 @@ static int run(int argc, char *argv[]) { + assert_se(loop_device_make(fd, O_RDWR, 0, UINT64_MAX, 0, LO_FLAGS_PARTSCAN, LOCK_EX, &loop) >= 0); + + #if HAVE_BLKID +- assert_se(dissect_loop_device(loop, NULL, NULL, 0, &dissected) >= 0); ++ assert_se(dissect_loop_device(loop, NULL, NULL, DISSECT_IMAGE_ADD_PARTITION_DEVICES|DISSECT_IMAGE_PIN_PARTITION_DEVICES, &dissected) >= 0); + verify_dissected_image(dissected); + + FOREACH_STRING(fs, "vfat", "ext4") { +@@ -246,7 +246,7 @@ static int run(int argc, char *argv[]) { + assert_se(make_filesystem(dissected->partitions[PARTITION_HOME].node, "ext4", "home", NULL, id, true) >= 0); + + dissected = dissected_image_unref(dissected); +- assert_se(dissect_loop_device(loop, NULL, NULL, 0, &dissected) >= 0); ++ assert_se(dissect_loop_device(loop, NULL, NULL, DISSECT_IMAGE_ADD_PARTITION_DEVICES|DISSECT_IMAGE_PIN_PARTITION_DEVICES, &dissected) >= 0); + verify_dissected_image(dissected); + + assert_se(mkdtemp_malloc(NULL, &mounted) >= 0); diff --git a/SOURCES/0153-shared-install-consistently-use-lp-as-the-name-for-t.patch b/SOURCES/0153-shared-install-consistently-use-lp-as-the-name-for-t.patch deleted file mode 100644 index fa69c99..0000000 --- a/SOURCES/0153-shared-install-consistently-use-lp-as-the-name-for-t.patch +++ /dev/null @@ -1,1534 +0,0 @@ -From a2632eca864670f7a88e1a81947a9e726282e531 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 2 Mar 2022 17:17:39 +0100 -Subject: [PATCH] shared/install: consistently use 'lp' as the name for the - LookupPaths instance - -Most of the codebase does this. Here we were using 'p' or 'paths' -instead. Those names are very generic and not good for a "global-like" -object like the LookupPaths instance. And we also have 'path' variable, -and it's confusing to have 'path' and 'paths' in the same function that -are unrelated. - -Also pass down LookupPaths* lower in the call stack, in preparation for -future changes. - -(cherry picked from commit c3e7fba07c19f232f5945c07e7cc730986615adf) - -Related: #2082131 ---- - src/shared/install.c | 427 +++++++++++++++++++++---------------------- - 1 file changed, 212 insertions(+), 215 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 8f1af755fa..c6cbe96fdb 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -98,7 +98,7 @@ static const char *const unit_file_type_table[_UNIT_FILE_TYPE_MAX] = { - - DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(unit_file_type, UnitFileType); - --static int in_search_path(const LookupPaths *p, const char *path) { -+static int in_search_path(const LookupPaths *lp, const char *path) { - _cleanup_free_ char *parent = NULL; - - assert(path); -@@ -107,19 +107,16 @@ static int in_search_path(const LookupPaths *p, const char *path) { - if (!parent) - return -ENOMEM; - -- return path_strv_contains(p->search_path, parent); -+ return path_strv_contains(lp->search_path, parent); - } - --static const char* skip_root(const LookupPaths *p, const char *path) { -- char *e; -- -- assert(p); -+static const char* skip_root(const char *root_dir, const char *path) { - assert(path); - -- if (!p->root_dir) -+ if (!root_dir) - return path; - -- e = path_startswith(path, p->root_dir); -+ const char *e = path_startswith(path, root_dir); - if (!e) - return NULL; - -@@ -134,52 +131,52 @@ static const char* skip_root(const LookupPaths *p, const char *path) { - return e; - } - --static int path_is_generator(const LookupPaths *p, const char *path) { -+static int path_is_generator(const LookupPaths *lp, const char *path) { - _cleanup_free_ char *parent = NULL; - -- assert(p); -+ assert(lp); - assert(path); - - parent = dirname_malloc(path); - if (!parent) - return -ENOMEM; - -- return path_equal_ptr(parent, p->generator) || -- path_equal_ptr(parent, p->generator_early) || -- path_equal_ptr(parent, p->generator_late); -+ return path_equal_ptr(parent, lp->generator) || -+ path_equal_ptr(parent, lp->generator_early) || -+ path_equal_ptr(parent, lp->generator_late); - } - --static int path_is_transient(const LookupPaths *p, const char *path) { -+static int path_is_transient(const LookupPaths *lp, const char *path) { - _cleanup_free_ char *parent = NULL; - -- assert(p); -+ assert(lp); - assert(path); - - parent = dirname_malloc(path); - if (!parent) - return -ENOMEM; - -- return path_equal_ptr(parent, p->transient); -+ return path_equal_ptr(parent, lp->transient); - } - --static int path_is_control(const LookupPaths *p, const char *path) { -+static int path_is_control(const LookupPaths *lp, const char *path) { - _cleanup_free_ char *parent = NULL; - -- assert(p); -+ assert(lp); - assert(path); - - parent = dirname_malloc(path); - if (!parent) - return -ENOMEM; - -- return path_equal_ptr(parent, p->persistent_control) || -- path_equal_ptr(parent, p->runtime_control); -+ return path_equal_ptr(parent, lp->persistent_control) || -+ path_equal_ptr(parent, lp->runtime_control); - } - --static int path_is_config(const LookupPaths *p, const char *path, bool check_parent) { -+static int path_is_config(const LookupPaths *lp, const char *path, bool check_parent) { - _cleanup_free_ char *parent = NULL; - -- assert(p); -+ assert(lp); - assert(path); - - /* Note that we do *not* have generic checks for /etc or /run in place, since with -@@ -193,21 +190,21 @@ static int path_is_config(const LookupPaths *p, const char *path, bool check_par - path = parent; - } - -- return path_equal_ptr(path, p->persistent_config) || -- path_equal_ptr(path, p->runtime_config); -+ return path_equal_ptr(path, lp->persistent_config) || -+ path_equal_ptr(path, lp->runtime_config); - } - --static int path_is_runtime(const LookupPaths *p, const char *path, bool check_parent) { -+static int path_is_runtime(const LookupPaths *lp, const char *path, bool check_parent) { - _cleanup_free_ char *parent = NULL; - const char *rpath; - -- assert(p); -+ assert(lp); - assert(path); - - /* Everything in /run is considered runtime. On top of that we also add - * explicit checks for the various runtime directories, as safety net. */ - -- rpath = skip_root(p, path); -+ rpath = skip_root(lp->root_dir, path); - if (rpath && path_startswith(rpath, "/run")) - return true; - -@@ -219,21 +216,21 @@ static int path_is_runtime(const LookupPaths *p, const char *path, bool check_pa - path = parent; - } - -- return path_equal_ptr(path, p->runtime_config) || -- path_equal_ptr(path, p->generator) || -- path_equal_ptr(path, p->generator_early) || -- path_equal_ptr(path, p->generator_late) || -- path_equal_ptr(path, p->transient) || -- path_equal_ptr(path, p->runtime_control); -+ return path_equal_ptr(path, lp->runtime_config) || -+ path_equal_ptr(path, lp->generator) || -+ path_equal_ptr(path, lp->generator_early) || -+ path_equal_ptr(path, lp->generator_late) || -+ path_equal_ptr(path, lp->transient) || -+ path_equal_ptr(path, lp->runtime_control); - } - --static int path_is_vendor_or_generator(const LookupPaths *p, const char *path) { -+static int path_is_vendor_or_generator(const LookupPaths *lp, const char *path) { - const char *rpath; - -- assert(p); -+ assert(lp); - assert(path); - -- rpath = skip_root(p, path); -+ rpath = skip_root(lp->root_dir, path); - if (!rpath) - return 0; - -@@ -245,19 +242,19 @@ static int path_is_vendor_or_generator(const LookupPaths *p, const char *path) { - return true; - #endif - -- if (path_is_generator(p, rpath)) -+ if (path_is_generator(lp, rpath)) - return true; - - return path_equal(rpath, SYSTEM_DATA_UNIT_DIR); - } - --static const char* config_path_from_flags(const LookupPaths *paths, UnitFileFlags flags) { -- assert(paths); -+static const char* config_path_from_flags(const LookupPaths *lp, UnitFileFlags flags) { -+ assert(lp); - - if (FLAGS_SET(flags, UNIT_FILE_PORTABLE)) -- return FLAGS_SET(flags, UNIT_FILE_RUNTIME) ? paths->runtime_attached : paths->persistent_attached; -+ return FLAGS_SET(flags, UNIT_FILE_RUNTIME) ? lp->runtime_attached : lp->persistent_attached; - else -- return FLAGS_SET(flags, UNIT_FILE_RUNTIME) ? paths->runtime_config : paths->persistent_config; -+ return FLAGS_SET(flags, UNIT_FILE_RUNTIME) ? lp->runtime_config : lp->persistent_config; - } - - int unit_file_changes_add( -@@ -435,7 +432,7 @@ static bool chroot_symlinks_same(const char *root, const char *wd, const char *a - } - - static int create_symlink( -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *old_path, - const char *new_path, - bool force, -@@ -449,7 +446,7 @@ static int create_symlink( - assert(old_path); - assert(new_path); - -- rp = skip_root(paths, old_path); -+ rp = skip_root(lp->root_dir, old_path); - if (rp) - old_path = rp; - -@@ -487,7 +484,7 @@ static int create_symlink( - if (!dirname) - return -ENOMEM; - -- if (chroot_symlinks_same(paths->root_dir, dirname, dest, old_path)) { -+ if (chroot_symlinks_same(lp->root_dir, dirname, dest, old_path)) { - log_debug("Symlink %s → %s already exists", new_path, dest); - return 1; - } -@@ -642,7 +639,7 @@ static int remove_marked_symlinks_fd( - /* Now, remember the full path (but with the root prefix removed) of - * the symlink we just removed, and remove any symlinks to it, too. */ - -- rp = skip_root(lp, p); -+ rp = skip_root(lp->root_dir, p); - q = mark_symlink_for_removal(&remove_symlinks_to, rp ?: p); - if (q < 0) - return q; -@@ -861,7 +858,7 @@ static int find_symlinks( - - static int find_symlinks_in_scope( - UnitFileScope scope, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const UnitFileInstallInfo *i, - bool match_name, - UnitFileState *state) { -@@ -872,23 +869,23 @@ static int find_symlinks_in_scope( - char **p; - int r; - -- assert(paths); -+ assert(lp); - assert(i); - -- /* As we iterate over the list of search paths in paths->search_path, we may encounter "same name" -+ /* As we iterate over the list of search paths in lp->search_path, we may encounter "same name" - * symlinks. The ones which are "below" (i.e. have lower priority) than the unit file itself are - * effectively masked, so we should ignore them. */ - -- STRV_FOREACH(p, paths->search_path) { -+ STRV_FOREACH(p, lp->search_path) { - bool same_name_link = false; - -- r = find_symlinks(paths->root_dir, i, match_name, ignore_same_name, *p, &same_name_link); -+ r = find_symlinks(lp->root_dir, i, match_name, ignore_same_name, *p, &same_name_link); - if (r < 0) - return r; - if (r > 0) { - /* We found symlinks in this dir? Yay! Let's see where precisely it is enabled. */ - -- if (path_equal_ptr(*p, paths->persistent_config)) { -+ if (path_equal_ptr(*p, lp->persistent_config)) { - /* This is the best outcome, let's return it immediately. */ - *state = UNIT_FILE_ENABLED; - return 1; -@@ -900,7 +897,7 @@ static int find_symlinks_in_scope( - return 1; - } - -- r = path_is_runtime(paths, *p, false); -+ r = path_is_runtime(lp, *p, false); - if (r < 0) - return r; - if (r > 0) -@@ -909,10 +906,10 @@ static int find_symlinks_in_scope( - enabled_at_all = true; - - } else if (same_name_link) { -- if (path_equal_ptr(*p, paths->persistent_config)) -+ if (path_equal_ptr(*p, lp->persistent_config)) - same_name_link_config = true; - else { -- r = path_is_runtime(paths, *p, false); -+ r = path_is_runtime(lp, *p, false); - if (r < 0) - return r; - if (r > 0) -@@ -990,11 +987,11 @@ static UnitFileInstallInfo *install_info_find(InstallContext *c, const char *nam - - static int install_info_may_process( - const UnitFileInstallInfo *i, -- const LookupPaths *paths, -+ const LookupPaths *lp, - UnitFileChange **changes, - size_t *n_changes) { - assert(i); -- assert(paths); -+ assert(lp); - - /* Checks whether the loaded unit file is one we should process, or is masked, - * transient or generated and thus not subject to enable/disable operations. */ -@@ -1003,8 +1000,8 @@ static int install_info_may_process( - unit_file_changes_add(changes, n_changes, -ERFKILL, i->path, NULL); - return -ERFKILL; - } -- if (path_is_generator(paths, i->path) || -- path_is_transient(paths, i->path)) { -+ if (path_is_generator(lp, i->path) || -+ path_is_transient(lp, i->path)) { - unit_file_changes_add(changes, n_changes, -EADDRNOTAVAIL, i->path, NULL); - return -EADDRNOTAVAIL; - } -@@ -1339,20 +1336,20 @@ static int unit_file_load_or_readlink( - InstallContext *c, - UnitFileInstallInfo *info, - const char *path, -- const char *root_dir, -+ const LookupPaths *lp, - SearchFlags flags) { - - _cleanup_free_ char *resolved = NULL; - int r; - -- r = unit_file_load(c, info, path, root_dir, flags); -+ r = unit_file_load(c, info, path, lp->root_dir, flags); - if (r != -ELOOP || (flags & SEARCH_DROPIN)) - return r; - -- r = chase_symlinks(path, root_dir, CHASE_WARN | CHASE_NONEXISTENT, &resolved, NULL); -+ r = chase_symlinks(path, lp->root_dir, CHASE_WARN | CHASE_NONEXISTENT, &resolved, NULL); - if (r >= 0 && -- root_dir && -- path_equal_ptr(path_startswith(resolved, root_dir), "dev/null")) -+ lp->root_dir && -+ path_equal_ptr(path_startswith(resolved, lp->root_dir), "dev/null")) - /* When looking under root_dir, we can't expect /dev/ to be mounted, - * so let's see if the path is a (possibly dangling) symlink to /dev/null. */ - info->type = UNIT_FILE_TYPE_MASKED; -@@ -1402,7 +1399,7 @@ static int unit_file_load_or_readlink( - - if (path_is_absolute(target)) - /* This is an absolute path, prefix the root so that we always deal with fully qualified paths */ -- info->symlink_target = path_join(root_dir, target); -+ info->symlink_target = path_join(lp->root_dir, target); - else - /* This is a relative path, take it relative to the dir the symlink is located in. */ - info->symlink_target = file_in_same_dir(path, target); -@@ -1418,7 +1415,7 @@ static int unit_file_load_or_readlink( - static int unit_file_search( - InstallContext *c, - UnitFileInstallInfo *info, -- const LookupPaths *paths, -+ const LookupPaths *lp, - SearchFlags flags) { - - const char *dropin_dir_name = NULL, *dropin_template_dir_name = NULL; -@@ -1429,14 +1426,14 @@ static int unit_file_search( - char **p; - - assert(info); -- assert(paths); -+ assert(lp); - - /* Was this unit already loaded? */ - if (info->type != _UNIT_FILE_TYPE_INVALID) - return 0; - - if (info->path) -- return unit_file_load_or_readlink(c, info, info->path, paths->root_dir, flags); -+ return unit_file_load_or_readlink(c, info, info->path, lp, flags); - - assert(info->name); - -@@ -1446,14 +1443,14 @@ static int unit_file_search( - return r; - } - -- STRV_FOREACH(p, paths->search_path) { -+ STRV_FOREACH(p, lp->search_path) { - _cleanup_free_ char *path = NULL; - - path = path_join(*p, info->name); - if (!path) - return -ENOMEM; - -- r = unit_file_load_or_readlink(c, info, path, paths->root_dir, flags); -+ r = unit_file_load_or_readlink(c, info, path, lp, flags); - if (r >= 0) { - info->path = TAKE_PTR(path); - result = r; -@@ -1469,14 +1466,14 @@ static int unit_file_search( - * enablement was requested. We will check if it is - * possible to load template unit file. */ - -- STRV_FOREACH(p, paths->search_path) { -+ STRV_FOREACH(p, lp->search_path) { - _cleanup_free_ char *path = NULL; - - path = path_join(*p, template); - if (!path) - return -ENOMEM; - -- r = unit_file_load_or_readlink(c, info, path, paths->root_dir, flags); -+ r = unit_file_load_or_readlink(c, info, path, lp, flags); - if (r >= 0) { - info->path = TAKE_PTR(path); - result = r; -@@ -1498,7 +1495,7 @@ static int unit_file_search( - /* Search for drop-in directories */ - - dropin_dir_name = strjoina(info->name, ".d"); -- STRV_FOREACH(p, paths->search_path) { -+ STRV_FOREACH(p, lp->search_path) { - char *path; - - path = path_join(*p, dropin_dir_name); -@@ -1512,7 +1509,7 @@ static int unit_file_search( - - if (template) { - dropin_template_dir_name = strjoina(template, ".d"); -- STRV_FOREACH(p, paths->search_path) { -+ STRV_FOREACH(p, lp->search_path) { - char *path; - - path = path_join(*p, dropin_template_dir_name); -@@ -1532,7 +1529,7 @@ static int unit_file_search( - return log_debug_errno(r, "Failed to get list of conf files: %m"); - - STRV_FOREACH(p, files) { -- r = unit_file_load_or_readlink(c, info, *p, paths->root_dir, flags | SEARCH_DROPIN); -+ r = unit_file_load_or_readlink(c, info, *p, lp, flags | SEARCH_DROPIN); - if (r < 0) - return log_debug_errno(r, "Failed to load conf file %s: %m", *p); - } -@@ -1543,7 +1540,7 @@ static int unit_file_search( - static int install_info_follow( - InstallContext *c, - UnitFileInstallInfo *i, -- const char *root_dir, -+ const LookupPaths *lp, - SearchFlags flags, - bool ignore_different_name) { - -@@ -1564,7 +1561,7 @@ static int install_info_follow( - free_and_replace(i->path, i->symlink_target); - i->type = _UNIT_FILE_TYPE_INVALID; - -- return unit_file_load_or_readlink(c, i, i->path, root_dir, flags); -+ return unit_file_load_or_readlink(c, i, i->path, lp, flags); - } - - /** -@@ -1574,7 +1571,7 @@ static int install_info_follow( - static int install_info_traverse( - UnitFileScope scope, - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - UnitFileInstallInfo *start, - SearchFlags flags, - UnitFileInstallInfo **ret) { -@@ -1583,11 +1580,11 @@ static int install_info_traverse( - unsigned k = 0; - int r; - -- assert(paths); -+ assert(lp); - assert(start); - assert(c); - -- r = unit_file_search(c, start, paths, flags); -+ r = unit_file_search(c, start, lp, flags); - if (r < 0) - return r; - -@@ -1599,14 +1596,14 @@ static int install_info_traverse( - return -ELOOP; - - if (!(flags & SEARCH_FOLLOW_CONFIG_SYMLINKS)) { -- r = path_is_config(paths, i->path, true); -+ r = path_is_config(lp, i->path, true); - if (r < 0) - return r; - if (r > 0) - return -ELOOP; - } - -- r = install_info_follow(c, i, paths->root_dir, flags, false); -+ r = install_info_follow(c, i, lp, flags, false); - if (r == -EXDEV) { - _cleanup_free_ char *buffer = NULL; - const char *bn; -@@ -1635,7 +1632,7 @@ static int install_info_traverse( - /* We filled in the instance, and the target stayed the same? If so, then let's - * honour the link as it is. */ - -- r = install_info_follow(c, i, paths->root_dir, flags, true); -+ r = install_info_follow(c, i, lp, flags, true); - if (r < 0) - return r; - -@@ -1645,12 +1642,12 @@ static int install_info_traverse( - bn = buffer; - } - -- r = install_info_add(c, bn, NULL, paths->root_dir, /* auxiliary= */ false, &i); -+ r = install_info_add(c, bn, NULL, lp->root_dir, /* auxiliary= */ false, &i); - if (r < 0) - return r; - - /* Try again, with the new target we found. */ -- r = unit_file_search(c, i, paths, flags); -+ r = unit_file_search(c, i, lp, flags); - if (r == -ENOENT) - /* Translate error code to highlight this specific case */ - return -ENOLINK; -@@ -1672,7 +1669,7 @@ static int install_info_traverse( - */ - static int install_info_add_auto( - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *name_or_path, - UnitFileInstallInfo **ret) { - -@@ -1682,17 +1679,17 @@ static int install_info_add_auto( - if (path_is_absolute(name_or_path)) { - const char *pp; - -- pp = prefix_roota(paths->root_dir, name_or_path); -+ pp = prefix_roota(lp->root_dir, name_or_path); - -- return install_info_add(c, NULL, pp, paths->root_dir, /* auxiliary= */ false, ret); -+ return install_info_add(c, NULL, pp, lp->root_dir, /* auxiliary= */ false, ret); - } else -- return install_info_add(c, name_or_path, NULL, paths->root_dir, /* auxiliary= */ false, ret); -+ return install_info_add(c, name_or_path, NULL, lp->root_dir, /* auxiliary= */ false, ret); - } - - static int install_info_discover( - UnitFileScope scope, - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *name, - SearchFlags flags, - UnitFileInstallInfo **ret, -@@ -1703,12 +1700,12 @@ static int install_info_discover( - int r; - - assert(c); -- assert(paths); -+ assert(lp); - assert(name); - -- r = install_info_add_auto(c, paths, name, &i); -+ r = install_info_add_auto(c, lp, name, &i); - if (r >= 0) -- r = install_info_traverse(scope, c, paths, i, flags, ret); -+ r = install_info_traverse(scope, c, lp, i, flags, ret); - - if (r < 0) - unit_file_changes_add(changes, n_changes, r, name, NULL); -@@ -1718,7 +1715,7 @@ static int install_info_discover( - static int install_info_discover_and_check( - UnitFileScope scope, - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *name, - SearchFlags flags, - UnitFileInstallInfo **ret, -@@ -1727,11 +1724,11 @@ static int install_info_discover_and_check( - - int r; - -- r = install_info_discover(scope, c, paths, name, flags, ret, changes, n_changes); -+ r = install_info_discover(scope, c, lp, name, flags, ret, changes, n_changes); - if (r < 0) - return r; - -- return install_info_may_process(ret ? *ret : NULL, paths, changes, n_changes); -+ return install_info_may_process(ret ? *ret : NULL, lp, changes, n_changes); - } - - int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char **ret_dst) { -@@ -1812,7 +1809,7 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - - static int install_info_symlink_alias( - UnitFileInstallInfo *i, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - bool force, - UnitFileChange **changes, -@@ -1822,7 +1819,7 @@ static int install_info_symlink_alias( - int r = 0, q; - - assert(i); -- assert(paths); -+ assert(lp); - assert(config_path); - - STRV_FOREACH(s, i->aliases) { -@@ -1840,7 +1837,7 @@ static int install_info_symlink_alias( - if (!alias_path) - return -ENOMEM; - -- q = create_symlink(paths, i->path, alias_path, force, changes, n_changes); -+ q = create_symlink(lp, i->path, alias_path, force, changes, n_changes); - if (r == 0) - r = q; - } -@@ -1852,7 +1849,7 @@ static int install_info_symlink_wants( - UnitFileScope scope, - UnitFileFlags file_flags, - UnitFileInstallInfo *i, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - char **list, - const char *suffix, -@@ -1866,7 +1863,7 @@ static int install_info_symlink_wants( - int r = 0, q; - - assert(i); -- assert(paths); -+ assert(lp); - assert(config_path); - - if (strv_isempty(list)) -@@ -1889,7 +1886,7 @@ static int install_info_symlink_wants( - return r; - - instance.name = buf; -- r = unit_file_search(NULL, &instance, paths, SEARCH_FOLLOW_CONFIG_SYMLINKS); -+ r = unit_file_search(NULL, &instance, lp, SEARCH_FOLLOW_CONFIG_SYMLINKS); - if (r < 0) - return r; - -@@ -1943,11 +1940,11 @@ static int install_info_symlink_wants( - if (!path) - return -ENOMEM; - -- q = create_symlink(paths, i->path, path, true, changes, n_changes); -+ q = create_symlink(lp, i->path, path, true, changes, n_changes); - if (r == 0) - r = q; - -- if (unit_file_exists(scope, paths, dst) == 0) -+ if (unit_file_exists(scope, lp, dst) == 0) - unit_file_changes_add(changes, n_changes, UNIT_FILE_DESTINATION_NOT_PRESENT, dst, i->path); - } - -@@ -1956,7 +1953,7 @@ static int install_info_symlink_wants( - - static int install_info_symlink_link( - UnitFileInstallInfo *i, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - bool force, - UnitFileChange **changes, -@@ -1966,11 +1963,11 @@ static int install_info_symlink_link( - int r; - - assert(i); -- assert(paths); -+ assert(lp); - assert(config_path); - assert(i->path); - -- r = in_search_path(paths, i->path); -+ r = in_search_path(lp, i->path); - if (r < 0) - return r; - if (r > 0) -@@ -1980,14 +1977,14 @@ static int install_info_symlink_link( - if (!path) - return -ENOMEM; - -- return create_symlink(paths, i->path, path, force, changes, n_changes); -+ return create_symlink(lp, i->path, path, force, changes, n_changes); - } - - static int install_info_apply( - UnitFileScope scope, - UnitFileFlags file_flags, - UnitFileInstallInfo *i, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - UnitFileChange **changes, - size_t *n_changes) { -@@ -1995,7 +1992,7 @@ static int install_info_apply( - int r, q; - - assert(i); -- assert(paths); -+ assert(lp); - assert(config_path); - - if (i->type != UNIT_FILE_TYPE_REGULAR) -@@ -2003,17 +2000,17 @@ static int install_info_apply( - - bool force = file_flags & UNIT_FILE_FORCE; - -- r = install_info_symlink_alias(i, paths, config_path, force, changes, n_changes); -+ r = install_info_symlink_alias(i, lp, config_path, force, changes, n_changes); - -- q = install_info_symlink_wants(scope, file_flags, i, paths, config_path, i->wanted_by, ".wants/", changes, n_changes); -+ q = install_info_symlink_wants(scope, file_flags, i, lp, config_path, i->wanted_by, ".wants/", changes, n_changes); - if (r == 0) - r = q; - -- q = install_info_symlink_wants(scope, file_flags, i, paths, config_path, i->required_by, ".requires/", changes, n_changes); -+ q = install_info_symlink_wants(scope, file_flags, i, lp, config_path, i->required_by, ".requires/", changes, n_changes); - if (r == 0) - r = q; - -- q = install_info_symlink_link(i, paths, config_path, force, changes, n_changes); -+ q = install_info_symlink_link(i, lp, config_path, force, changes, n_changes); - /* Do not count links to the unit file towards the "carries_install_info" count */ - if (r == 0 && q < 0) - r = q; -@@ -2025,7 +2022,7 @@ static int install_context_apply( - UnitFileScope scope, - UnitFileFlags file_flags, - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - SearchFlags flags, - UnitFileChange **changes, -@@ -2035,7 +2032,7 @@ static int install_context_apply( - int r; - - assert(c); -- assert(paths); -+ assert(lp); - assert(config_path); - - if (ordered_hashmap_isempty(c->will_process)) -@@ -2053,7 +2050,7 @@ static int install_context_apply( - if (q < 0) - return q; - -- q = install_info_traverse(scope, c, paths, i, flags, NULL); -+ q = install_info_traverse(scope, c, lp, i, flags, NULL); - if (q < 0) { - if (i->auxiliary) { - q = unit_file_changes_add(changes, n_changes, UNIT_FILE_AUXILIARY_FAILED, NULL, i->name); -@@ -2080,7 +2077,7 @@ static int install_context_apply( - if (i->type != UNIT_FILE_TYPE_REGULAR) - continue; - -- q = install_info_apply(scope, file_flags, i, paths, config_path, changes, n_changes); -+ q = install_info_apply(scope, file_flags, i, lp, config_path, changes, n_changes); - if (r >= 0) { - if (q < 0) - r = q; -@@ -2095,7 +2092,7 @@ static int install_context_apply( - static int install_context_mark_for_removal( - UnitFileScope scope, - InstallContext *c, -- const LookupPaths *paths, -+ const LookupPaths *lp, - Set **remove_symlinks_to, - const char *config_path, - UnitFileChange **changes, -@@ -2105,7 +2102,7 @@ static int install_context_mark_for_removal( - int r; - - assert(c); -- assert(paths); -+ assert(lp); - assert(config_path); - - /* Marks all items for removal */ -@@ -2123,7 +2120,7 @@ static int install_context_mark_for_removal( - if (r < 0) - return r; - -- r = install_info_traverse(scope, c, paths, i, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); -+ r = install_info_traverse(scope, c, lp, i, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); - if (r == -ENOLINK) { - log_debug_errno(r, "Name %s leads to a dangling symlink, removing name.", i->name); - unit_file_changes_add(changes, n_changes, UNIT_FILE_IS_DANGLING, i->path ?: i->name, NULL); -@@ -2164,7 +2161,7 @@ int unit_file_mask( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - const char *config_path; - char **i; - int r; -@@ -2172,11 +2169,11 @@ int unit_file_mask( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -@@ -2194,7 +2191,7 @@ int unit_file_mask( - if (!path) - return -ENOMEM; - -- q = create_symlink(&paths, "/dev/null", path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ q = create_symlink(&lp, "/dev/null", path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); - if (q < 0 && r >= 0) - r = q; - } -@@ -2210,7 +2207,7 @@ int unit_file_unmask( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - _cleanup_strv_free_ char **todo = NULL; - const char *config_path; -@@ -2222,11 +2219,11 @@ int unit_file_unmask( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -@@ -2283,13 +2280,13 @@ int unit_file_unmask( - - unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, path, NULL); - -- rp = skip_root(&paths, path); -+ rp = skip_root(lp.root_dir, path); - q = mark_symlink_for_removal(&remove_symlinks_to, rp ?: path); - if (q < 0) - return q; - } - -- q = remove_marked_symlinks(remove_symlinks_to, config_path, &paths, dry_run, changes, n_changes); -+ q = remove_marked_symlinks(remove_symlinks_to, config_path, &lp, dry_run, changes, n_changes); - if (r >= 0) - r = q; - -@@ -2304,7 +2301,7 @@ int unit_file_link( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_strv_free_ char **todo = NULL; - const char *config_path; - size_t n_todo = 0; -@@ -2314,11 +2311,11 @@ int unit_file_link( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -@@ -2334,7 +2331,7 @@ int unit_file_link( - if (!unit_name_is_valid(fn, UNIT_NAME_ANY)) - return -EINVAL; - -- full = path_join(paths.root_dir, *i); -+ full = path_join(lp.root_dir, *i); - if (!full) - return -ENOMEM; - -@@ -2344,7 +2341,7 @@ int unit_file_link( - if (r < 0) - return r; - -- q = in_search_path(&paths, *i); -+ q = in_search_path(&lp, *i); - if (q < 0) - return q; - if (q > 0) -@@ -2370,7 +2367,7 @@ int unit_file_link( - if (!new_path) - return -ENOMEM; - -- q = create_symlink(&paths, *i, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ q = create_symlink(&lp, *i, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); - if (q < 0 && r >= 0) - r = q; - } -@@ -2378,23 +2375,23 @@ int unit_file_link( - return r; - } - --static int path_shall_revert(const LookupPaths *paths, const char *path) { -+static int path_shall_revert(const LookupPaths *lp, const char *path) { - int r; - -- assert(paths); -+ assert(lp); - assert(path); - - /* Checks whether the path is one where the drop-in directories shall be removed. */ - -- r = path_is_config(paths, path, true); -+ r = path_is_config(lp, path, true); - if (r != 0) - return r; - -- r = path_is_control(paths, path); -+ r = path_is_control(lp, path); - if (r != 0) - return r; - -- return path_is_transient(paths, path); -+ return path_is_transient(lp, path); - } - - int unit_file_revert( -@@ -2405,7 +2402,7 @@ int unit_file_revert( - size_t *n_changes) { - - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_strv_free_ char **todo = NULL; - size_t n_todo = 0; - char **i; -@@ -2422,7 +2419,7 @@ int unit_file_revert( - * We remove all that in both the runtime and the persistent directories, if that applies. - */ - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -@@ -2433,7 +2430,7 @@ int unit_file_revert( - if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) - return -EINVAL; - -- STRV_FOREACH(p, paths.search_path) { -+ STRV_FOREACH(p, lp.search_path) { - _cleanup_free_ char *path = NULL, *dropin = NULL; - struct stat st; - -@@ -2447,7 +2444,7 @@ int unit_file_revert( - return -errno; - } else if (S_ISREG(st.st_mode)) { - /* Check if there's a vendor version */ -- r = path_is_vendor_or_generator(&paths, path); -+ r = path_is_vendor_or_generator(&lp, path); - if (r < 0) - return r; - if (r > 0) -@@ -2464,7 +2461,7 @@ int unit_file_revert( - return -errno; - } else if (S_ISDIR(st.st_mode)) { - /* Remove the drop-ins */ -- r = path_shall_revert(&paths, dropin); -+ r = path_shall_revert(&lp, dropin); - if (r < 0) - return r; - if (r > 0) { -@@ -2480,7 +2477,7 @@ int unit_file_revert( - continue; - - /* OK, there's a vendor version, hence drop all configuration versions */ -- STRV_FOREACH(p, paths.search_path) { -+ STRV_FOREACH(p, lp.search_path) { - _cleanup_free_ char *path = NULL; - struct stat st; - -@@ -2493,7 +2490,7 @@ int unit_file_revert( - if (errno != ENOENT) - return -errno; - } else if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) { -- r = path_is_config(&paths, path, true); -+ r = path_is_config(&lp, path, true); - if (r < 0) - return r; - if (r > 0) { -@@ -2534,17 +2531,17 @@ int unit_file_revert( - - unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, *i, NULL); - -- rp = skip_root(&paths, *i); -+ rp = skip_root(lp.root_dir, *i); - q = mark_symlink_for_removal(&remove_symlinks_to, rp ?: *i); - if (q < 0) - return q; - } - -- q = remove_marked_symlinks(remove_symlinks_to, paths.runtime_config, &paths, false, changes, n_changes); -+ q = remove_marked_symlinks(remove_symlinks_to, lp.runtime_config, &lp, false, changes, n_changes); - if (r >= 0) - r = q; - -- q = remove_marked_symlinks(remove_symlinks_to, paths.persistent_config, &paths, false, changes, n_changes); -+ q = remove_marked_symlinks(remove_symlinks_to, lp.persistent_config, &lp, false, changes, n_changes); - if (r >= 0) - r = q; - -@@ -2561,7 +2558,7 @@ int unit_file_add_dependency( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext c = {}; - UnitFileInstallInfo *i, *target_info; - const char *config_path; -@@ -2578,15 +2575,15 @@ int unit_file_add_dependency( - if (!unit_name_is_valid(target, UNIT_NAME_ANY)) - return -EINVAL; - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (file_flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (file_flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -- r = install_info_discover_and_check(scope, &c, &paths, target, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(scope, &c, &lp, target, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &target_info, changes, n_changes); - if (r < 0) - return r; -@@ -2596,7 +2593,7 @@ int unit_file_add_dependency( - STRV_FOREACH(f, files) { - char ***l; - -- r = install_info_discover_and_check(scope, &c, &paths, *f, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(scope, &c, &lp, *f, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - if (r < 0) - return r; -@@ -2618,7 +2615,7 @@ int unit_file_add_dependency( - return -ENOMEM; - } - -- return install_context_apply(scope, file_flags, &c, &paths, config_path, -+ return install_context_apply(scope, file_flags, &c, &lp, config_path, - SEARCH_FOLLOW_CONFIG_SYMLINKS, changes, n_changes); - } - -@@ -2630,7 +2627,7 @@ int unit_file_enable( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext c = {}; - const char *config_path; - UnitFileInstallInfo *i; -@@ -2640,16 +2637,16 @@ int unit_file_enable( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = config_path_from_flags(&paths, file_flags); -+ config_path = config_path_from_flags(&lp, file_flags); - if (!config_path) - return -ENXIO; - - STRV_FOREACH(f, files) { -- r = install_info_discover_and_check(scope, &c, &paths, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(scope, &c, &lp, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - if (r < 0) - return r; -@@ -2662,7 +2659,7 @@ int unit_file_enable( - is useful to determine whether the passed files had any - installation data at all. */ - -- return install_context_apply(scope, file_flags, &c, &paths, config_path, SEARCH_LOAD, changes, n_changes); -+ return install_context_apply(scope, file_flags, &c, &lp, config_path, SEARCH_LOAD, changes, n_changes); - } - - int unit_file_disable( -@@ -2673,7 +2670,7 @@ int unit_file_disable( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext c = {}; - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - const char *config_path; -@@ -2683,11 +2680,11 @@ int unit_file_disable( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = config_path_from_flags(&paths, flags); -+ config_path = config_path_from_flags(&lp, flags); - if (!config_path) - return -ENXIO; - -@@ -2695,16 +2692,16 @@ int unit_file_disable( - if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_add(&c, *i, NULL, paths.root_dir, /* auxiliary= */ false, NULL); -+ r = install_info_add(&c, *i, NULL, lp.root_dir, /* auxiliary= */ false, NULL); - if (r < 0) - return r; - } - -- r = install_context_mark_for_removal(scope, &c, &paths, &remove_symlinks_to, config_path, changes, n_changes); -+ r = install_context_mark_for_removal(scope, &c, &lp, &remove_symlinks_to, config_path, changes, n_changes); - if (r < 0) - return r; - -- return remove_marked_symlinks(remove_symlinks_to, config_path, &paths, !!(flags & UNIT_FILE_DRY_RUN), changes, n_changes); -+ return remove_marked_symlinks(remove_symlinks_to, config_path, &lp, !!(flags & UNIT_FILE_DRY_RUN), changes, n_changes); - } - - int unit_file_reenable( -@@ -2742,7 +2739,7 @@ int unit_file_set_default( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext c = {}; - UnitFileInstallInfo *i; - const char *new_path; -@@ -2757,16 +2754,16 @@ int unit_file_set_default( - if (streq(name, SPECIAL_DEFAULT_TARGET)) - return -EINVAL; - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- r = install_info_discover_and_check(scope, &c, &paths, name, 0, &i, changes, n_changes); -+ r = install_info_discover_and_check(scope, &c, &lp, name, 0, &i, changes, n_changes); - if (r < 0) - return r; - -- new_path = strjoina(paths.persistent_config, "/" SPECIAL_DEFAULT_TARGET); -- return create_symlink(&paths, i->path, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ new_path = strjoina(lp.persistent_config, "/" SPECIAL_DEFAULT_TARGET); -+ return create_symlink(&lp, i->path, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); - } - - int unit_file_get_default( -@@ -2774,7 +2771,7 @@ int unit_file_get_default( - const char *root_dir, - char **name) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext c = {}; - UnitFileInstallInfo *i; - char *n; -@@ -2784,15 +2781,15 @@ int unit_file_get_default( - assert(scope < _UNIT_FILE_SCOPE_MAX); - assert(name); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- r = install_info_discover(scope, &c, &paths, SPECIAL_DEFAULT_TARGET, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover(scope, &c, &lp, SPECIAL_DEFAULT_TARGET, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, NULL, NULL); - if (r < 0) - return r; -- r = install_info_may_process(i, &paths, NULL, 0); -+ r = install_info_may_process(i, &lp, NULL, 0); - if (r < 0) - return r; - -@@ -2806,7 +2803,7 @@ int unit_file_get_default( - - int unit_file_lookup_state( - UnitFileScope scope, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *name, - UnitFileState *ret) { - -@@ -2815,13 +2812,13 @@ int unit_file_lookup_state( - UnitFileState state; - int r; - -- assert(paths); -+ assert(lp); - assert(name); - - if (!unit_name_is_valid(name, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_discover(scope, &c, paths, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover(scope, &c, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, NULL, NULL); - if (r < 0) - return log_debug_errno(r, "Failed to discover unit %s: %m", name); -@@ -2837,7 +2834,7 @@ int unit_file_lookup_state( - switch (i->type) { - - case UNIT_FILE_TYPE_MASKED: -- r = path_is_runtime(paths, i->path, true); -+ r = path_is_runtime(lp, i->path, true); - if (r < 0) - return r; - -@@ -2851,7 +2848,7 @@ int unit_file_lookup_state( - break; - } - -- r = path_is_generator(paths, i->path); -+ r = path_is_generator(lp, i->path); - if (r < 0) - return r; - if (r > 0) { -@@ -2859,7 +2856,7 @@ int unit_file_lookup_state( - break; - } - -- r = path_is_transient(paths, i->path); -+ r = path_is_transient(lp, i->path); - if (r < 0) - return r; - if (r > 0) { -@@ -2870,7 +2867,7 @@ int unit_file_lookup_state( - /* Check if any of the Alias= symlinks have been created. - * We ignore other aliases, and only check those that would - * be created by systemctl enable for this unit. */ -- r = find_symlinks_in_scope(scope, paths, i, true, &state); -+ r = find_symlinks_in_scope(scope, lp, i, true, &state); - if (r < 0) - return r; - if (r > 0) -@@ -2878,7 +2875,7 @@ int unit_file_lookup_state( - - /* Check if the file is known under other names. If it is, - * it might be in use. Report that as UNIT_FILE_INDIRECT. */ -- r = find_symlinks_in_scope(scope, paths, i, false, &state); -+ r = find_symlinks_in_scope(scope, lp, i, false, &state); - if (r < 0) - return r; - if (r > 0) -@@ -2908,31 +2905,31 @@ int unit_file_get_state( - const char *name, - UnitFileState *ret) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - int r; - - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - assert(name); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- return unit_file_lookup_state(scope, &paths, name, ret); -+ return unit_file_lookup_state(scope, &lp, name, ret); - } - --int unit_file_exists(UnitFileScope scope, const LookupPaths *paths, const char *name) { -+int unit_file_exists(UnitFileScope scope, const LookupPaths *lp, const char *name) { - _cleanup_(install_context_done) InstallContext c = {}; - int r; - -- assert(paths); -+ assert(lp); - assert(name); - - if (!unit_name_is_valid(name, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_discover(scope, &c, paths, name, 0, NULL, NULL, NULL); -+ r = install_info_discover(scope, &c, lp, name, 0, NULL, NULL, NULL); - if (r == -ENOENT) - return 0; - if (r < 0) -@@ -3195,7 +3192,7 @@ static int execute_preset( - UnitFileFlags file_flags, - InstallContext *plus, - InstallContext *minus, -- const LookupPaths *paths, -+ const LookupPaths *lp, - const char *config_path, - char **files, - UnitFilePresetMode mode, -@@ -3206,17 +3203,17 @@ static int execute_preset( - - assert(plus); - assert(minus); -- assert(paths); -+ assert(lp); - assert(config_path); - - if (mode != UNIT_FILE_PRESET_ENABLE_ONLY) { - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - -- r = install_context_mark_for_removal(scope, minus, paths, &remove_symlinks_to, config_path, changes, n_changes); -+ r = install_context_mark_for_removal(scope, minus, lp, &remove_symlinks_to, config_path, changes, n_changes); - if (r < 0) - return r; - -- r = remove_marked_symlinks(remove_symlinks_to, config_path, paths, false, changes, n_changes); -+ r = remove_marked_symlinks(remove_symlinks_to, config_path, lp, false, changes, n_changes); - } else - r = 0; - -@@ -3226,7 +3223,7 @@ static int execute_preset( - /* Returns number of symlinks that where supposed to be installed. */ - q = install_context_apply(scope, - file_flags | UNIT_FILE_IGNORE_AUXILIARY_FAILURE, -- plus, paths, config_path, SEARCH_LOAD, changes, n_changes); -+ plus, lp, config_path, SEARCH_LOAD, changes, n_changes); - if (r >= 0) { - if (q < 0) - r = q; -@@ -3242,7 +3239,7 @@ static int preset_prepare_one( - UnitFileScope scope, - InstallContext *plus, - InstallContext *minus, -- LookupPaths *paths, -+ LookupPaths *lp, - const char *name, - const UnitFilePresets *presets, - UnitFileChange **changes, -@@ -3256,7 +3253,7 @@ static int preset_prepare_one( - if (install_info_find(plus, name) || install_info_find(minus, name)) - return 0; - -- r = install_info_discover(scope, &tmp, paths, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover(scope, &tmp, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - if (r < 0) - return r; -@@ -3273,20 +3270,20 @@ static int preset_prepare_one( - if (instance_name_list) { - char **s; - STRV_FOREACH(s, instance_name_list) { -- r = install_info_discover_and_check(scope, plus, paths, *s, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(scope, plus, lp, *s, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - if (r < 0) - return r; - } - } else { -- r = install_info_discover_and_check(scope, plus, paths, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(scope, plus, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - if (r < 0) - return r; - } - - } else -- r = install_info_discover(scope, minus, paths, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover(scope, minus, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &i, changes, n_changes); - - return r; -@@ -3302,7 +3299,7 @@ int unit_file_preset( - size_t *n_changes) { - - _cleanup_(install_context_done) InstallContext plus = {}, minus = {}; -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(unit_file_presets_freep) UnitFilePresets presets = {}; - const char *config_path; - char **i; -@@ -3312,11 +3309,11 @@ int unit_file_preset( - assert(scope < _UNIT_FILE_SCOPE_MAX); - assert(mode < _UNIT_FILE_PRESET_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (file_flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (file_flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -@@ -3325,12 +3322,12 @@ int unit_file_preset( - return r; - - STRV_FOREACH(i, files) { -- r = preset_prepare_one(scope, &plus, &minus, &paths, *i, &presets, changes, n_changes); -+ r = preset_prepare_one(scope, &plus, &minus, &lp, *i, &presets, changes, n_changes); - if (r < 0) - return r; - } - -- return execute_preset(scope, file_flags, &plus, &minus, &paths, config_path, files, mode, changes, n_changes); -+ return execute_preset(scope, file_flags, &plus, &minus, &lp, config_path, files, mode, changes, n_changes); - } - - int unit_file_preset_all( -@@ -3342,7 +3339,7 @@ int unit_file_preset_all( - size_t *n_changes) { - - _cleanup_(install_context_done) InstallContext plus = {}, minus = {}; -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(unit_file_presets_freep) UnitFilePresets presets = {}; - const char *config_path = NULL; - char **i; -@@ -3352,11 +3349,11 @@ int unit_file_preset_all( - assert(scope < _UNIT_FILE_SCOPE_MAX); - assert(mode < _UNIT_FILE_PRESET_MAX); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- config_path = (file_flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; -+ config_path = (file_flags & UNIT_FILE_RUNTIME) ? lp.runtime_config : lp.persistent_config; - if (!config_path) - return -ENXIO; - -@@ -3364,7 +3361,7 @@ int unit_file_preset_all( - if (r < 0) - return r; - -- STRV_FOREACH(i, paths.search_path) { -+ STRV_FOREACH(i, lp.search_path) { - _cleanup_closedir_ DIR *d = NULL; - - d = opendir(*i); -@@ -3383,7 +3380,7 @@ int unit_file_preset_all( - if (!IN_SET(de->d_type, DT_LNK, DT_REG)) - continue; - -- r = preset_prepare_one(scope, &plus, &minus, &paths, de->d_name, &presets, changes, n_changes); -+ r = preset_prepare_one(scope, &plus, &minus, &lp, de->d_name, &presets, changes, n_changes); - if (r < 0 && - !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT)) - /* Ignore generated/transient/missing/invalid units when applying preset, propagate other errors. -@@ -3392,7 +3389,7 @@ int unit_file_preset_all( - } - } - -- return execute_preset(scope, file_flags, &plus, &minus, &paths, config_path, NULL, mode, changes, n_changes); -+ return execute_preset(scope, file_flags, &plus, &minus, &lp, config_path, NULL, mode, changes, n_changes); - } - - static UnitFileList* unit_file_list_free_one(UnitFileList *f) { -@@ -3416,7 +3413,7 @@ int unit_file_get_list( - char **states, - char **patterns) { - -- _cleanup_(lookup_paths_free) LookupPaths paths = {}; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - char **dirname; - int r; - -@@ -3424,11 +3421,11 @@ int unit_file_get_list( - assert(scope < _UNIT_FILE_SCOPE_MAX); - assert(h); - -- r = lookup_paths_init(&paths, scope, 0, root_dir); -+ r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -- STRV_FOREACH(dirname, paths.search_path) { -+ STRV_FOREACH(dirname, lp.search_path) { - _cleanup_closedir_ DIR *d = NULL; - - d = opendir(*dirname); -@@ -3466,7 +3463,7 @@ int unit_file_get_list( - if (!f->path) - return -ENOMEM; - -- r = unit_file_lookup_state(scope, &paths, de->d_name, &f->state); -+ r = unit_file_lookup_state(scope, &lp, de->d_name, &f->state); - if (r < 0) - f->state = UNIT_FILE_BAD; - diff --git a/SOURCES/0154-ci-Mergify-v252-configuration-update.patch b/SOURCES/0154-ci-Mergify-v252-configuration-update.patch new file mode 100644 index 0000000..0f73990 --- /dev/null +++ b/SOURCES/0154-ci-Mergify-v252-configuration-update.patch @@ -0,0 +1,158 @@ +From cdfc360ed871f54faa6d10c0fe9cf4cd28061a28 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Thu, 8 Dec 2022 15:42:41 +0100 +Subject: [PATCH] ci(Mergify): v252 configuration update + +rhel-only + +Related: #2138081 +--- + .mergify.yml | 101 +++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 89 insertions(+), 12 deletions(-) + +diff --git a/.mergify.yml b/.mergify.yml +index ddc79a1d7a..bc1743e8ea 100644 +--- a/.mergify.yml ++++ b/.mergify.yml +@@ -2,23 +2,31 @@ + --- + + pull_request_rules: +- - name: Add `needs-ci` label on CI fail ++ - name: Add `needs-ci` label on CI fail - v252 + conditions: ++ # Policy is relevant for rhel-9.2.0 branches and newer & main branch ++ - base~=^main$|^rhel-9.([2-9]|\d{2,}).0$ + - label!=ci-waived + - or: + # Build test +- - -check-success=build (gcc, 10, bfd) +- - -check-success=build (gcc, 11, gold) +- - -check-success=build (clang, 11, bfd) +- - -check-success=build (clang, 12, gold) +- - -check-success=build (clang, 13, lld) ++ - -check-success=build (gcc, 11, bfd, gcrypt) ++ - -check-success=build (gcc, 12, gold, openssl) ++ - -check-success=build (clang, 13, mold, gcrypt) ++ - -check-success=build (clang, 14, lld, openssl) ++ - -check-success=build (clang, 15, bfd, auto) + # Unit tests + - -check-success=build (GCC, auto) + - -check-success=build (GCC_ASAN_UBSAN, auto) + - -check-success=build (CLANG, auto) ++ - -check-success=build (CLANG_RELEASE, auto) + - -check-success=build (CLANG_ASAN_UBSAN, auto) ++ - -check-success=build (CLANG_ASAN_UBSAN_NO_DEPS, auto) + - -check-success=build (GCC, openssl) + - -check-success=build (CLANG, gcrypt) ++ # ClusterFuzzingLite ++ - -check-success=PR (address) ++ - -check-success=PR (undefined) ++ - -check-success=PR (memory) + # CentOS CI + - -check-success=CentOS CI (CentOS Stream 9) + - -check-success=CentOS CI (CentOS Stream 9 + sanitizers) +@@ -35,24 +43,62 @@ pull_request_rules: + add: + - needs-ci + +- - name: Remove `needs-ci` label on CI success ++ - name: Add `needs-ci` label on CI fail - v250 + conditions: ++ # Policy is relevant branches before rhel-9.2.0 ++ - base~=^rhel-9.0.0-beta$|^rhel-9.[0-1].0$ ++ - label!=ci-waived ++ - or: ++ # Build test ++ - -check-success=build (gcc, 10, bfd) ++ - -check-success=build (gcc, 11, gold) ++ - -check-success=build (clang, 11, bfd) ++ - -check-success=build (clang, 12, gold) ++ - -check-success=build (clang, 13, lld) ++ # Unit tests ++ - -check-success=build (GCC, auto) ++ - -check-success=build (GCC_ASAN_UBSAN, auto) ++ - -check-success=build (CLANG, auto) ++ - -check-success=build (CLANG_ASAN_UBSAN, auto) ++ - -check-success=build (GCC, openssl) ++ - -check-success=build (CLANG, gcrypt) ++ # CentOS CI ++ - -check-success=CentOS CI (CentOS Stream 9) ++ - -check-success=CentOS CI (CentOS Stream 9 + sanitizers) ++ # Packit ++ - -check-success=rpm-build:centos-stream-9-aarch64 ++ - -check-success=rpm-build:centos-stream-9-x86_64 ++ actions: ++ label: ++ add: ++ - needs-ci ++ ++ - name: Remove `needs-ci` label on CI success - v252 ++ conditions: ++ # Policy is relevant for rhel-9.2.0 branches and newer & main branch ++ - base~=^main$|^rhel-9.([2-9]|\d{2,}).0$ + - or: + - label=ci-waived + - and: + # Build test +- - check-success=build (gcc, 10, bfd) +- - check-success=build (gcc, 11, gold) +- - check-success=build (clang, 11, bfd) +- - check-success=build (clang, 12, gold) +- - check-success=build (clang, 13, lld) ++ - check-success=build (gcc, 11, bfd, gcrypt) ++ - check-success=build (gcc, 12, gold, openssl) ++ - check-success=build (clang, 13, mold, gcrypt) ++ - check-success=build (clang, 14, lld, openssl) ++ - check-success=build (clang, 15, bfd, auto) + # Unit tests + - check-success=build (GCC, auto) + - check-success=build (GCC_ASAN_UBSAN, auto) + - check-success=build (CLANG, auto) ++ - check-success=build (CLANG_RELEASE, auto) + - check-success=build (CLANG_ASAN_UBSAN, auto) ++ - check-success=build (CLANG_ASAN_UBSAN_NO_DEPS, auto) + - check-success=build (GCC, openssl) + - check-success=build (CLANG, gcrypt) ++ # ClusterFuzzingLite ++ - check-success=PR (address) ++ - check-success=PR (undefined) ++ - check-success=PR (memory) + # CentOS CI + - check-success=CentOS CI (CentOS Stream 9) + - check-success=CentOS CI (CentOS Stream 9 + sanitizers) +@@ -68,3 +114,34 @@ pull_request_rules: + label: + remove: + - needs-ci ++ ++ - name: Remove `needs-ci` label on CI success - v250 ++ conditions: ++ # Policy is relevant branches before rhel-9.2.0 ++ - base~=^rhel-9.0.0-beta$|^rhel-9.[0-1].0$ ++ - or: ++ - label=ci-waived ++ - and: ++ # Build test ++ - check-success=build (gcc, 10, bfd) ++ - check-success=build (gcc, 11, gold) ++ - check-success=build (clang, 11, bfd) ++ - check-success=build (clang, 12, gold) ++ - check-success=build (clang, 13, lld) ++ # Unit tests ++ - check-success=build (GCC, auto) ++ - check-success=build (GCC_ASAN_UBSAN, auto) ++ - check-success=build (CLANG, auto) ++ - check-success=build (CLANG_ASAN_UBSAN, auto) ++ - check-success=build (GCC, openssl) ++ - check-success=build (CLANG, gcrypt) ++ # CentOS CI ++ - check-success=CentOS CI (CentOS Stream 9) ++ - check-success=CentOS CI (CentOS Stream 9 + sanitizers) ++ # Packit ++ - check-success=rpm-build:centos-stream-9-aarch64 ++ - check-success=rpm-build:centos-stream-9-x86_64 ++ actions: ++ label: ++ remove: ++ - needs-ci diff --git a/SOURCES/0154-shared-specifier-treat-NULL-the-same-as.patch b/SOURCES/0154-shared-specifier-treat-NULL-the-same-as.patch deleted file mode 100644 index 26cd8b6..0000000 --- a/SOURCES/0154-shared-specifier-treat-NULL-the-same-as.patch +++ /dev/null @@ -1,191 +0,0 @@ -From c36354b26c757e526e9f3d8c5bc78aa36f095f61 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 20 Jan 2022 15:47:22 +0100 -Subject: [PATCH] shared/specifier: treat NULL the same as "" - -We would busily allocate an empty string to concatenate all of it's -zero characters to the output. Let's make things a bit simpler by letting -the specifier functions return NULL to mean "nothing to append". - -(cherry picked from commit 01c69460811f64e416c3e4a545ef84787bb6700b) - -Related: #2082131 ---- - src/shared/specifier.c | 56 ++++++++++++++------------------------- - src/test/test-specifier.c | 9 ++++--- - 2 files changed, 25 insertions(+), 40 deletions(-) - -diff --git a/src/shared/specifier.c b/src/shared/specifier.c -index 1fd76b1d15..f8ab98541f 100644 ---- a/src/shared/specifier.c -+++ b/src/shared/specifier.c -@@ -35,7 +35,6 @@ - int specifier_printf(const char *text, size_t max_length, const Specifier table[], const char *root, const void *userdata, char **ret) { - _cleanup_free_ char *result = NULL; - bool percent = false; -- const char *f; - size_t l; - char *t; - int r; -@@ -48,8 +47,10 @@ int specifier_printf(const char *text, size_t max_length, const Specifier table[ - return -ENOMEM; - t = result; - -- for (f = text; *f != '\0'; f++, l--) { -+ for (const char *f = text; *f != '\0'; f++, l--) { - if (percent) { -+ percent = false; -+ - if (*f == '%') - *(t++) = '%'; - else { -@@ -66,6 +67,8 @@ int specifier_printf(const char *text, size_t max_length, const Specifier table[ - r = i->lookup(i->specifier, i->data, root, userdata, &w); - if (r < 0) - return r; -+ if (isempty(w)) -+ continue; - - j = t - result; - k = strlen(w); -@@ -82,8 +85,6 @@ int specifier_printf(const char *text, size_t max_length, const Specifier table[ - *(t++) = *f; - } - } -- -- percent = false; - } else if (*f == '%') - percent = true; - else -@@ -108,11 +109,13 @@ int specifier_printf(const char *text, size_t max_length, const Specifier table[ - /* Generic handler for simple string replacements */ - - int specifier_string(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- char *n; -+ char *n = NULL; - -- n = strdup(strempty(data)); -- if (!n) -- return -ENOMEM; -+ if (!isempty(data)) { -+ n = strdup(data); -+ if (!n) -+ return -ENOMEM; -+ } - - *ret = n; - return 0; -@@ -186,10 +189,8 @@ int specifier_short_host_name(char specifier, const void *data, const char *root - int specifier_kernel_release(char specifier, const void *data, const char *root, const void *userdata, char **ret) { - struct utsname uts; - char *n; -- int r; - -- r = uname(&uts); -- if (r < 0) -+ if (uname(&uts) < 0) - return -errno; - - n = strdup(uts.release); -@@ -211,47 +212,31 @@ int specifier_architecture(char specifier, const void *data, const char *root, c - return 0; - } - --static int specifier_os_release_common(const char *field, const char *root, char **ret) { -- char *t = NULL; -- int r; -- -- r = parse_os_release(root, field, &t); -- if (r < 0) -- return r; -- if (!t) { -- /* fields in /etc/os-release might quite possibly be missing, even if everything is entirely -- * valid otherwise. Let's hence return "" in that case. */ -- t = strdup(""); -- if (!t) -- return -ENOMEM; -- } -- -- *ret = t; -- return 0; --} -+/* Note: fields in /etc/os-release might quite possibly be missing, even if everything is entirely valid -+ * otherwise. We'll return an empty value or NULL in that case from the functions below. */ - - int specifier_os_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("ID", root, ret); -+ return parse_os_release(root, "ID", ret); - } - - int specifier_os_version_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("VERSION_ID", root, ret); -+ return parse_os_release(root, "VERSION_ID", ret); - } - - int specifier_os_build_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("BUILD_ID", root, ret); -+ return parse_os_release(root, "BUILD_ID", ret); - } - - int specifier_os_variant_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("VARIANT_ID", root, ret); -+ return parse_os_release(root, "VARIANT_ID", ret); - } - - int specifier_os_image_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("IMAGE_ID", root, ret); -+ return parse_os_release(root, "IMAGE_ID", ret); - } - - int specifier_os_image_version(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return specifier_os_release_common("IMAGE_VERSION", root, ret); -+ return parse_os_release(root, "IMAGE_VERSION", ret); - } - - int specifier_group_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -@@ -291,7 +276,6 @@ int specifier_user_name(char specifier, const void *data, const char *root, cons - } - - int specifier_user_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- - if (asprintf(ret, UID_FMT, getuid()) < 0) - return -ENOMEM; - -diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c -index 40957eeb59..dda993ce9d 100644 ---- a/src/test/test-specifier.c -+++ b/src/test/test-specifier.c -@@ -56,6 +56,7 @@ TEST(specifier_printf) { - static const Specifier table[] = { - { 'X', specifier_string, (char*) "AAAA" }, - { 'Y', specifier_string, (char*) "BBBB" }, -+ { 'e', specifier_string, NULL }, - COMMON_SYSTEM_SPECIFIERS, - {} - }; -@@ -63,21 +64,21 @@ TEST(specifier_printf) { - _cleanup_free_ char *w = NULL; - int r; - -- r = specifier_printf("xxx a=%X b=%Y yyy", SIZE_MAX, table, NULL, NULL, &w); -+ r = specifier_printf("xxx a=%X b=%Y e=%e yyy", SIZE_MAX, table, NULL, NULL, &w); - assert_se(r >= 0); - assert_se(w); - - puts(w); -- assert_se(streq(w, "xxx a=AAAA b=BBBB yyy")); -+ assert_se(streq(w, "xxx a=AAAA b=BBBB e= yyy")); - - free(w); -- r = specifier_printf("machine=%m, boot=%b, host=%H, version=%v, arch=%a", SIZE_MAX, table, NULL, NULL, &w); -+ r = specifier_printf("machine=%m, boot=%b, host=%H, version=%v, arch=%a, empty=%e", SIZE_MAX, table, NULL, NULL, &w); - assert_se(r >= 0); - assert_se(w); - puts(w); - - w = mfree(w); -- specifier_printf("os=%o, os-version=%w, build=%B, variant=%W", SIZE_MAX, table, NULL, NULL, &w); -+ specifier_printf("os=%o, os-version=%w, build=%B, variant=%W, empty=%e%e%e", SIZE_MAX, table, NULL, NULL, &w); - if (w) - puts(w); - } diff --git a/SOURCES/0155-ci-Run-GitHub-workflows-on-rhel-branches.patch b/SOURCES/0155-ci-Run-GitHub-workflows-on-rhel-branches.patch new file mode 100644 index 0000000..c563bae --- /dev/null +++ b/SOURCES/0155-ci-Run-GitHub-workflows-on-rhel-branches.patch @@ -0,0 +1,62 @@ +From 70dcdd6dfcda08486201442f225f7d8c9980e047 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Thu, 8 Dec 2022 15:52:30 +0100 +Subject: [PATCH] ci: Run GitHub workflows on rhel branches + +rhel-only + +Related: #2138081 +--- + .github/workflows/cflite_pr.yml | 2 +- + .github/workflows/codeql.yml | 4 ++-- + .github/workflows/linter.yml | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml +index a35a97f046..500be1c2cf 100644 +--- a/.github/workflows/cflite_pr.yml ++++ b/.github/workflows/cflite_pr.yml +@@ -7,7 +7,7 @@ on: + pull_request: + branches: + - main +- - v[0-9]+-stable ++ - rhel-9.*.0 + + permissions: read-all + +diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml +index b531753cab..e8236b1857 100644 +--- a/.github/workflows/codeql.yml ++++ b/.github/workflows/codeql.yml +@@ -8,7 +8,7 @@ on: + pull_request: + branches: + - main +- - v[0-9]+-stable ++ - rhel-9.*.0 + paths: + - '**/meson.build' + - '.github/**/codeql*' +@@ -18,7 +18,7 @@ on: + push: + branches: + - main +- - v[0-9]+-stable ++ - rhel-9.*.0 + + permissions: + contents: read +diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml +index 180cfbfdba..eddd350122 100644 +--- a/.github/workflows/linter.yml ++++ b/.github/workflows/linter.yml +@@ -8,7 +8,7 @@ on: + pull_request: + branches: + - main +- - v[0-9]+-stable ++ - rhel-9.*.0 + + permissions: + contents: read diff --git a/SOURCES/0155-shared-install-do-not-print-aliases-longer-than-UNIT.patch b/SOURCES/0155-shared-install-do-not-print-aliases-longer-than-UNIT.patch deleted file mode 100644 index c49163f..0000000 --- a/SOURCES/0155-shared-install-do-not-print-aliases-longer-than-UNIT.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5f66b67ac6594a3dee6e463a5f31c2d1051503cc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 11:47:23 +0100 -Subject: [PATCH] shared/install: do not print aliases longer than - UNIT_NAME_MAX - -065364920281e1cf59cab989e17aff21790505c4 did the conversion to install_path_printf(). -But IIUC, here we are just looking at a unit file name, not the full -path. - -(cherry picked from commit 46801e7647d98ccac8fca4cc91ef9c3513151943) - -Related: #2082131 ---- - src/shared/install.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index c6cbe96fdb..79e5109ce1 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1825,7 +1825,7 @@ static int install_info_symlink_alias( - STRV_FOREACH(s, i->aliases) { - _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - -- q = install_path_printf(i, *s, i->root, &dst); -+ q = install_name_printf(i, *s, i->root, &dst); - if (q < 0) - return q; - diff --git a/SOURCES/0156-ci-Drop-scorecards-workflow-not-relevant.patch b/SOURCES/0156-ci-Drop-scorecards-workflow-not-relevant.patch new file mode 100644 index 0000000..40340c9 --- /dev/null +++ b/SOURCES/0156-ci-Drop-scorecards-workflow-not-relevant.patch @@ -0,0 +1,89 @@ +From e28f0b746d630230cf6256215f9388de7f3f6dd7 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Thu, 8 Dec 2022 16:00:58 +0100 +Subject: [PATCH] ci: Drop scorecards workflow, not relevant + +rhel-only + +Related: #2138081 +--- + .github/workflows/scorecards.yml | 70 -------------------------------- + 1 file changed, 70 deletions(-) + delete mode 100644 .github/workflows/scorecards.yml + +diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml +deleted file mode 100644 +index 911ac5a35e..0000000000 +--- a/.github/workflows/scorecards.yml ++++ /dev/null +@@ -1,70 +0,0 @@ +---- +-# vi: ts=2 sw=2 et: +-# SPDX-License-Identifier: LGPL-2.1-or-later +-name: Scorecards supply-chain security +-on: +- # Only the default branch is supported. +- branch_protection_rule: +- schedule: +- - cron: '15 21 * * 6' +- push: +- branches: +- - main +- pull_request: +- branches: +- - main +- paths: +- - '.github/workflows/scorecards.yml' +- +-# Declare default permissions as read only. +-permissions: read-all +- +-jobs: +- analysis: +- name: Scorecards analysis +- if: github.repository == 'systemd/systemd' +- runs-on: ubuntu-latest +- permissions: +- # Needed to upload the results to code-scanning dashboard. +- security-events: write +- # Used to receive a badge. +- id-token: write +- +- steps: +- - name: Checkout code +- uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # tag=v3.0.0 +- with: +- persist-credentials: false +- +- - name: Run analysis +- uses: ossf/scorecard-action@e363bfca00e752f91de7b7d2a77340e2e523cb18 # tag=v2.0.4 +- with: +- results_file: results.sarif +- results_format: sarif +- # (Optional) Read-only PAT token. Uncomment the `repo_token` line below if: +- # - you want to enable the Branch-Protection check on a *public* repository, or +- # - you are installing Scorecards on a *private* repository +- # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. +- # repo_token: ${{ secrets.SCORECARD_READ_TOKEN }} +- +- # Publish the results for public repositories to enable scorecard badges. For more details, see +- # https://github.com/ossf/scorecard-action#publishing-results. +- # For private repositories, `publish_results` will automatically be set to `false`, regardless +- # of the value entered here. +- publish_results: ${{ github.event_name != 'pull_request' }} +- +- # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF +- # format to the repository Actions tab. +- - name: Upload artifact +- uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # tag=v3.0.0 +- with: +- name: SARIF file +- path: results.sarif +- retention-days: 5 +- +- # Upload the results to GitHub's code scanning dashboard. +- - name: Upload to code-scanning +- if: github.event_name != 'pull_request' +- uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # tag=v1.0.26 +- with: +- sarif_file: results.sarif diff --git a/SOURCES/0156-shared-install-printf-drop-now-unused-install_path_p.patch b/SOURCES/0156-shared-install-printf-drop-now-unused-install_path_p.patch deleted file mode 100644 index 361fa69..0000000 --- a/SOURCES/0156-shared-install-printf-drop-now-unused-install_path_p.patch +++ /dev/null @@ -1,50 +0,0 @@ -From b635f03ba218df6c184da4d53648b13241b6b07d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 11:49:19 +0100 -Subject: [PATCH] shared/install-printf: drop now-unused install_path_printf() - -(cherry picked from commit 2cdd6bef9c940774d40046db9be41ea73cdb5d8e) - -Related: #2082131 ---- - src/shared/install-printf.c | 4 ++-- - src/shared/install-printf.h | 9 +-------- - 2 files changed, 3 insertions(+), 10 deletions(-) - -diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c -index 403d6013c1..6ff4198ac9 100644 ---- a/src/shared/install-printf.c -+++ b/src/shared/install-printf.c -@@ -103,7 +103,7 @@ static int specifier_last_component(char specifier, const void *data, const char - return 0; - } - --int install_full_printf_internal(const UnitFileInstallInfo *i, const char *format, size_t max_length, const char *root, char **ret) { -+int install_name_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret) { - /* This is similar to unit_name_printf() */ - - const Specifier table[] = { -@@ -123,5 +123,5 @@ int install_full_printf_internal(const UnitFileInstallInfo *i, const char *forma - assert(format); - assert(ret); - -- return specifier_printf(format, max_length, table, root, i, ret); -+ return specifier_printf(format, UNIT_NAME_MAX, table, root, i, ret); - } -diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h -index af32acc2ca..5ca9406797 100644 ---- a/src/shared/install-printf.h -+++ b/src/shared/install-printf.h -@@ -4,11 +4,4 @@ - #include "install.h" - #include "unit-name.h" - --int install_full_printf_internal(const UnitFileInstallInfo *i, const char *format, size_t max_length, const char *root, char **ret); -- --static inline int install_name_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret) { -- return install_full_printf_internal(i, format, UNIT_NAME_MAX, root, ret); --} --static inline int install_path_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret) { -- return install_full_printf_internal(i, format, PATH_MAX-1, root, ret); --} -+int install_name_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret); diff --git a/SOURCES/0157-strv-declare-iterator-of-FOREACH_STRING-in-the-loop.patch b/SOURCES/0157-strv-declare-iterator-of-FOREACH_STRING-in-the-loop.patch deleted file mode 100644 index 8ce9253..0000000 --- a/SOURCES/0157-strv-declare-iterator-of-FOREACH_STRING-in-the-loop.patch +++ /dev/null @@ -1,1088 +0,0 @@ -From f7660c55adcf3e6a7eec251c474edc0cbb19e26d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 23 Mar 2022 10:48:13 +0100 -Subject: [PATCH] strv: declare iterator of FOREACH_STRING() in the loop - -Same idea as 03677889f0ef42cdc534bf3b31265a054b20a354. - -No functional change intended. The type of the iterator is generally changed to -be 'const char*' instead of 'char*'. Despite the type commonly used, modifying -the string was not allowed. - -I adjusted the naming of some short variables for clarity and reduced the scope -of some variable declarations in code that was being touched anyway. - -(cherry picked from commit 5980d463048f25411c55da2f6387cdc8eaeef4c8) - -Related: #2082131 ---- - src/activate/activate.c | 1 - - src/basic/fs-util.c | 1 - - src/basic/os-util.c | 2 -- - src/basic/strv.h | 2 +- - src/basic/unit-file.c | 1 - - src/boot/bootctl.c | 9 ++++----- - src/cgtop/cgtop.c | 1 - - src/core/apparmor-setup.c | 1 - - src/core/efi-random.c | 11 +++++------ - src/core/execute.c | 1 - - src/core/timer.c | 2 -- - src/core/unit.c | 1 - - src/getty-generator/getty-generator.c | 4 +--- - src/home/homectl.c | 17 +++-------------- - src/home/homed-manager.c | 1 - - src/libsystemd/sd-device/sd-device.c | 6 +----- - src/locale/localed.c | 2 +- - src/login/logind-user.c | 1 - - src/nspawn/nspawn-cgroup.c | 1 - - src/nspawn/nspawn-mount.c | 4 ++-- - src/nspawn/nspawn.c | 5 ++--- - src/partition/repart.c | 3 +-- - src/portable/portable.c | 1 - - src/resolve/resolved-resolv-conf.c | 2 -- - src/resolve/test-resolved-etc-hosts.c | 1 - - src/run/run.c | 2 -- - src/shared/bootspec.c | 3 ++- - src/shared/chown-recursive.c | 1 - - src/shared/discover-image.c | 2 +- - src/shared/dissect-image.c | 1 - - src/shared/machine-id-setup.c | 2 +- - src/shared/mount-setup.c | 4 ---- - src/shared/netif-util.c | 7 ++++--- - src/shared/pager.c | 2 +- - src/shared/psi-util.c | 2 -- - src/shared/switch-root.c | 11 +++++------ - src/shared/tests.c | 11 +++++------ - src/systemctl/systemctl-edit.c | 8 ++++---- - src/systemctl/systemctl-sysv-compat.c | 25 ++++++++++++------------- - src/test/test-bpf-devices.c | 1 - - src/test/test-ellipsize.c | 8 ++------ - src/test/test-env-file.c | 2 -- - src/test/test-execute.c | 16 ++++++---------- - src/test/test-fileio.c | 1 - - src/test/test-gpt.c | 6 +----- - src/test/test-libcrypt-util.c | 2 -- - src/test/test-loop-block.c | 1 - - src/test/test-mount-util.c | 1 - - src/test/test-stat-util.c | 2 -- - src/test/test-strv.c | 4 +--- - src/test/test-utf8.c | 3 --- - src/tmpfiles/offline-passwd.c | 2 -- - 52 files changed, 66 insertions(+), 145 deletions(-) - -diff --git a/src/activate/activate.c b/src/activate/activate.c -index 0c32152671..b625d97f2e 100644 ---- a/src/activate/activate.c -+++ b/src/activate/activate.c -@@ -124,7 +124,6 @@ static int open_sockets(int *epoll_fd, bool accept) { - - static int exec_process(const char *name, char **argv, int start_fd, size_t n_fds) { - _cleanup_strv_free_ char **envp = NULL; -- const char *var; - char **s; - int r; - -diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c -index 552986f546..2ee7c23f68 100644 ---- a/src/basic/fs-util.c -+++ b/src/basic/fs-util.c -@@ -570,7 +570,6 @@ int get_files_in_directory(const char *path, char ***list) { - } - - static int getenv_tmp_dir(const char **ret_path) { -- const char *n; - int r, ret = 0; - - assert(ret_path); -diff --git a/src/basic/os-util.c b/src/basic/os-util.c -index 75c8500e51..a6e4d09473 100644 ---- a/src/basic/os-util.c -+++ b/src/basic/os-util.c -@@ -170,8 +170,6 @@ int open_extension_release(const char *root, const char *extension, char **ret_p - } - } - } else { -- const char *p; -- - FOREACH_STRING(p, "/etc/os-release", "/usr/lib/os-release") { - r = chase_symlinks(p, root, CHASE_PREFIX_ROOT, - ret_path ? &q : NULL, -diff --git a/src/basic/strv.h b/src/basic/strv.h -index 092d40c84b..27d4450468 100644 ---- a/src/basic/strv.h -+++ b/src/basic/strv.h -@@ -207,7 +207,7 @@ void strv_print(char * const *l); - }) - - #define _FOREACH_STRING(uniq, x, y, ...) \ -- for (char **UNIQ_T(l, uniq) = STRV_MAKE(({ x = y; }), ##__VA_ARGS__); \ -+ for (const char *x, * const*UNIQ_T(l, uniq) = STRV_MAKE_CONST(({ x = y; }), ##__VA_ARGS__); \ - x; \ - x = *(++UNIQ_T(l, uniq))) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index faea92f66d..96826e2940 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -237,7 +237,6 @@ bool lookup_paths_timestamp_hash_same(const LookupPaths *lp, uint64_t timestamp_ - } - - static int directory_name_is_valid(const char *name) { -- const char *suffix; - - /* Accept a directory whose name is a valid unit file name ending in .wants/, .requires/ or .d/ */ - -diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c -index 1bcb4d1689..9427a0e4ce 100644 ---- a/src/boot/bootctl.c -+++ b/src/boot/bootctl.c -@@ -1044,12 +1044,11 @@ static int remove_variables(sd_id128_t uuid, const char *path, bool in_order) { - } - - static int remove_loader_variables(void) { -- const char *variable; - int r = 0; - - /* Remove all persistent loader variables we define */ - -- FOREACH_STRING(variable, -+ FOREACH_STRING(var, - EFI_LOADER_VARIABLE(LoaderConfigTimeout), - EFI_LOADER_VARIABLE(LoaderConfigTimeoutOneShot), - EFI_LOADER_VARIABLE(LoaderEntryDefault), -@@ -1058,15 +1057,15 @@ static int remove_loader_variables(void) { - - int q; - -- q = efi_set_variable(variable, NULL, 0); -+ q = efi_set_variable(var, NULL, 0); - if (q == -ENOENT) - continue; - if (q < 0) { -- log_warning_errno(q, "Failed to remove EFI variable %s: %m", variable); -+ log_warning_errno(q, "Failed to remove EFI variable %s: %m", var); - if (r >= 0) - r = q; - } else -- log_info("Removed EFI variable %s.", variable); -+ log_info("Removed EFI variable %s.", var); - } - - return r; -diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c -index e5ab904c4f..b023e71757 100644 ---- a/src/cgtop/cgtop.c -+++ b/src/cgtop/cgtop.c -@@ -510,7 +510,6 @@ static int refresh_one( - } - - static int refresh(const char *root, Hashmap *a, Hashmap *b, unsigned iteration) { -- const char *c; - int r; - - FOREACH_STRING(c, SYSTEMD_CGROUP_CONTROLLER, "cpu", "cpuacct", "memory", "io", "blkio", "pids") { -diff --git a/src/core/apparmor-setup.c b/src/core/apparmor-setup.c -index 304a3e6aac..3426a10358 100644 ---- a/src/core/apparmor-setup.c -+++ b/src/core/apparmor-setup.c -@@ -24,7 +24,6 @@ int mac_apparmor_setup(void) { - #if HAVE_APPARMOR - _cleanup_(aa_policy_cache_unrefp) aa_policy_cache *policy_cache = NULL; - _cleanup_(aa_features_unrefp) aa_features *features = NULL; -- const char *current_file; - _cleanup_free_ char *current_profile = NULL, *cache_dir_path = NULL; - int r; - -diff --git a/src/core/efi-random.c b/src/core/efi-random.c -index a0b89d1379..e8d8ccd117 100644 ---- a/src/core/efi-random.c -+++ b/src/core/efi-random.c -@@ -20,24 +20,23 @@ - * is suitably validated. */ - - static void lock_down_efi_variables(void) { -- const char *p; - int r; - - /* Paranoia: let's restrict access modes of these a bit, so that unprivileged users can't use them to - * identify the system or gain too much insight into what we might have credited to the entropy - * pool. */ -- FOREACH_STRING(p, -+ FOREACH_STRING(path, - EFIVAR_PATH(EFI_LOADER_VARIABLE(LoaderRandomSeed)), - EFIVAR_PATH(EFI_LOADER_VARIABLE(LoaderSystemToken))) { - -- r = chattr_path(p, 0, FS_IMMUTABLE_FL, NULL); -+ r = chattr_path(path, 0, FS_IMMUTABLE_FL, NULL); - if (r == -ENOENT) - continue; - if (r < 0) -- log_warning_errno(r, "Failed to drop FS_IMMUTABLE_FL from %s, ignoring: %m", p); -+ log_warning_errno(r, "Failed to drop FS_IMMUTABLE_FL from %s, ignoring: %m", path); - -- if (chmod(p, 0600) < 0) -- log_warning_errno(errno, "Failed to reduce access mode of %s, ignoring: %m", p); -+ if (chmod(path, 0600) < 0) -+ log_warning_errno(errno, "Failed to reduce access mode of %s, ignoring: %m", path); - } - } - -diff --git a/src/core/execute.c b/src/core/execute.c -index 8a1d070e26..3cafd0f17d 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -2917,7 +2917,6 @@ static int setup_credentials( - uid_t uid) { - - _cleanup_free_ char *p = NULL, *q = NULL; -- const char *i; - int r; - - assert(context); -diff --git a/src/core/timer.c b/src/core/timer.c -index b439802bc2..23f466c630 100644 ---- a/src/core/timer.c -+++ b/src/core/timer.c -@@ -100,8 +100,6 @@ static int timer_add_default_dependencies(Timer *t) { - return r; - - LIST_FOREACH(value, v, t->values) { -- const char *target; -- - if (v->base != TIMER_CALENDAR) - continue; - -diff --git a/src/core/unit.c b/src/core/unit.c -index 0eade13ee9..3d30f3807c 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -4104,7 +4104,6 @@ int unit_patch_contexts(Unit *u) { - - if ((ec->root_image || !LIST_IS_EMPTY(ec->mount_images)) && - (cc->device_policy != CGROUP_DEVICE_POLICY_AUTO || cc->device_allow)) { -- const char *p; - - /* When RootImage= or MountImages= is specified, the following devices are touched. */ - FOREACH_STRING(p, "/dev/loop-control", "/dev/mapper/control") { -diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c -index 59bdfc496b..4e8162a319 100644 ---- a/src/getty-generator/getty-generator.c -+++ b/src/getty-generator/getty-generator.c -@@ -215,9 +215,7 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) - return r; - } - -- /* Automatically add in a serial getty on the first -- * virtualizer console */ -- const char *j; -+ /* Automatically add in a serial getty on the first virtualizer console */ - FOREACH_STRING(j, - "hvc0", - "xvc0", -diff --git a/src/home/homectl.c b/src/home/homectl.c -index 1e3c96f5ad..ac7b00889d 100644 ---- a/src/home/homectl.c -+++ b/src/home/homectl.c -@@ -2961,8 +2961,6 @@ static int parse_argv(int argc, char *argv[]) { - - case ARG_DISK_SIZE: - if (isempty(optarg)) { -- const char *prop; -- - FOREACH_STRING(prop, "diskSize", "diskSizeRelative", "rebalanceWeight") { - r = drop_from_identity(prop); - if (r < 0) -@@ -3464,9 +3462,7 @@ static int parse_argv(int argc, char *argv[]) { - break; - } - -- case ARG_PKCS11_TOKEN_URI: { -- const char *p; -- -+ case ARG_PKCS11_TOKEN_URI: - if (streq(optarg, "list")) - return pkcs11_list_tokens(); - -@@ -3500,11 +3496,8 @@ static int parse_argv(int argc, char *argv[]) { - - strv_uniq(arg_pkcs11_token_uri); - break; -- } -- -- case ARG_FIDO2_DEVICE: { -- const char *p; - -+ case ARG_FIDO2_DEVICE: - if (streq(optarg, "list")) - return fido2_list_devices(); - -@@ -3534,7 +3527,6 @@ static int parse_argv(int argc, char *argv[]) { - - strv_uniq(arg_fido2_device); - break; -- } - - case ARG_FIDO2_WITH_PIN: { - bool lock_with_pin; -@@ -3569,9 +3561,7 @@ static int parse_argv(int argc, char *argv[]) { - break; - } - -- case ARG_RECOVERY_KEY: { -- const char *p; -- -+ case ARG_RECOVERY_KEY: - r = parse_boolean(optarg); - if (r < 0) - return log_error_errno(r, "Failed to parse --recovery-key= argument: %s", optarg); -@@ -3585,7 +3575,6 @@ static int parse_argv(int argc, char *argv[]) { - } - - break; -- } - - case ARG_AUTO_RESIZE_MODE: - if (isempty(optarg)) { -diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c -index c1ec555cac..a02248a6de 100644 ---- a/src/home/homed-manager.c -+++ b/src/home/homed-manager.c -@@ -482,7 +482,6 @@ static int manager_enumerate_records(Manager *m) { - static int search_quota(uid_t uid, const char *exclude_quota_path) { - struct stat exclude_st = {}; - dev_t previous_devno = 0; -- const char *where; - int r; - - /* Checks whether the specified UID owns any files on the files system, but ignore any file system -diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c -index b163a0fb6b..af11730f33 100644 ---- a/src/libsystemd/sd-device/sd-device.c -+++ b/src/libsystemd/sd-device/sd-device.c -@@ -322,7 +322,6 @@ _public_ int sd_device_new_from_subsystem_sysname( - const char *subsystem, - const char *sysname) { - -- const char *s; - char *name; - int r; - -@@ -331,7 +330,6 @@ _public_ int sd_device_new_from_subsystem_sysname( - assert_return(path_is_normalized(sysname), -EINVAL); - - if (streq(subsystem, "subsystem")) { -- - FOREACH_STRING(s, "/sys/subsystem/", "/sys/bus/", "/sys/class/") { - r = device_strjoin_new(s, sysname, NULL, NULL, ret); - if (r < 0) -@@ -341,7 +339,6 @@ _public_ int sd_device_new_from_subsystem_sysname( - } - - } else if (streq(subsystem, "module")) { -- - r = device_strjoin_new("/sys/module/", sysname, NULL, NULL, ret); - if (r < 0) - return r; -@@ -353,9 +350,8 @@ _public_ int sd_device_new_from_subsystem_sysname( - - sep = strchr(sysname, ':'); - if (sep && sep[1] != '\0') { /* Require ":" and something non-empty after that. */ -- const char *subsys; - -- subsys = memdupa_suffix0(sysname, sep - sysname); -+ const char *subsys = memdupa_suffix0(sysname, sep - sysname); - sep++; - - FOREACH_STRING(s, "/sys/subsystem/", "/sys/bus/") { -diff --git a/src/locale/localed.c b/src/locale/localed.c -index c228385d0e..f3e6ef2db1 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -475,7 +475,7 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er - - static int method_set_vc_keyboard(sd_bus_message *m, void *userdata, sd_bus_error *error) { - Context *c = userdata; -- const char *name, *keymap, *keymap_toggle; -+ const char *keymap, *keymap_toggle; - int convert, interactive, r; - - assert(m); -diff --git a/src/login/logind-user.c b/src/login/logind-user.c -index 6d250be321..74739b4242 100644 ---- a/src/login/logind-user.c -+++ b/src/login/logind-user.c -@@ -626,7 +626,6 @@ int user_check_linger_file(User *u) { - } - - static bool user_unit_active(User *u) { -- const char *i; - int r; - - assert(u->service); -diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c -index d472e80c03..d8e1fe0907 100644 ---- a/src/nspawn/nspawn-cgroup.c -+++ b/src/nspawn/nspawn-cgroup.c -@@ -22,7 +22,6 @@ - - static int chown_cgroup_path(const char *path, uid_t uid_shift) { - _cleanup_close_ int fd = -1; -- const char *fn; - - fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY); - if (fd < 0) -diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c -index 40773d90c1..678fde3669 100644 ---- a/src/nspawn/nspawn-mount.c -+++ b/src/nspawn/nspawn-mount.c -@@ -408,7 +408,7 @@ int tmpfs_patch_options( - } - - int mount_sysfs(const char *dest, MountSettingsMask mount_settings) { -- const char *full, *top, *x; -+ const char *full, *top; - int r; - unsigned long extra_flags = 0; - -@@ -468,7 +468,7 @@ int mount_sysfs(const char *dest, MountSettingsMask mount_settings) { - /* Create mountpoint for cgroups. Otherwise we are not allowed since we - * remount /sys read-only. - */ -- x = prefix_roota(top, "/fs/cgroup"); -+ const char *x = prefix_roota(top, "/fs/cgroup"); - (void) mkdir_p(x, 0755); - - return mount_nofollow_verbose(LOG_ERR, NULL, top, NULL, -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 9225c8f162..1333a8702a 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -2564,7 +2564,7 @@ static int setup_hostname(void) { - - static int setup_journal(const char *directory) { - _cleanup_free_ char *d = NULL; -- const char *dirname, *p, *q; -+ const char *p, *q; - sd_id128_t this_id; - bool try; - int r; -@@ -3513,7 +3513,6 @@ static int inner_child( - (void) fdset_close_others(fds); - - if (arg_start_mode == START_BOOT) { -- const char *init; - char **a; - size_t m; - -@@ -4604,7 +4603,7 @@ static int load_settings(void) { - _cleanup_(settings_freep) Settings *settings = NULL; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *p = NULL; -- const char *fn, *i; -+ const char *fn; - int r; - - if (arg_oci_bundle) -diff --git a/src/partition/repart.c b/src/partition/repart.c -index 0862a37a8d..509cf69b5d 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -4561,9 +4561,8 @@ static int acquire_root_devno( - } - - static int find_root(char **ret, int *ret_fd) { -- const char *p; -- int r; - _cleanup_free_ char *device = NULL; -+ int r; - - assert(ret); - assert(ret_fd); -diff --git a/src/portable/portable.c b/src/portable/portable.c -index be311f94c4..bdc10da36f 100644 ---- a/src/portable/portable.c -+++ b/src/portable/portable.c -@@ -1568,7 +1568,6 @@ int portable_detach( - - SET_FOREACH(item, unit_files) { - _cleanup_free_ char *md = NULL; -- const char *suffix; - - if (unlinkat(dirfd(d), item, 0) < 0) { - log_debug_errno(errno, "Can't remove unit file %s/%s: %m", where, item); -diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c -index e9785ab964..ee86cf75a0 100644 ---- a/src/resolve/resolved-resolv-conf.c -+++ b/src/resolve/resolved-resolv-conf.c -@@ -51,8 +51,6 @@ int manager_check_resolv_conf(const Manager *m) { - } - - static bool file_is_our_own(const struct stat *st) { -- const char *path; -- - assert(st); - - FOREACH_STRING(path, -diff --git a/src/resolve/test-resolved-etc-hosts.c b/src/resolve/test-resolved-etc-hosts.c -index cc55a980ad..f15e025b7b 100644 ---- a/src/resolve/test-resolved-etc-hosts.c -+++ b/src/resolve/test-resolved-etc-hosts.c -@@ -45,7 +45,6 @@ static void test_parse_etc_hosts(void) { - - int fd; - _cleanup_fclose_ FILE *f; -- const char *s; - - fd = mkostemp_safe(t); - assert_se(fd >= 0); -diff --git a/src/run/run.c b/src/run/run.c -index e75b027542..2ae629f595 100644 ---- a/src/run/run.c -+++ b/src/run/run.c -@@ -1702,8 +1702,6 @@ static int start_transient_trigger( - } - - static bool shall_make_executable_absolute(void) { -- const char *f; -- - if (strv_isempty(arg_cmdline)) - return false; - if (arg_transport != BUS_TRANSPORT_LOCAL) -diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c -index 0076092c2a..a17375eb4c 100644 ---- a/src/shared/bootspec.c -+++ b/src/shared/bootspec.c -@@ -1207,7 +1207,8 @@ int find_esp_and_warn( - goto found; - } - -- FOREACH_STRING(path, "/efi", "/boot", "/boot/efi") { -+ FOREACH_STRING(_path, "/efi", "/boot", "/boot/efi") { -+ path = _path; - - r = verify_esp(path, true, unprivileged_mode, ret_part, ret_pstart, ret_psize, ret_uuid); - if (r >= 0) -diff --git a/src/shared/chown-recursive.c b/src/shared/chown-recursive.c -index 7c9a3050b4..05a7a10ce4 100644 ---- a/src/shared/chown-recursive.c -+++ b/src/shared/chown-recursive.c -@@ -21,7 +21,6 @@ static int chown_one( - gid_t gid, - mode_t mask) { - -- const char *n; - int r; - - assert(fd >= 0); -diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c -index 268d910214..1d432328e7 100644 ---- a/src/shared/discover-image.c -+++ b/src/shared/discover-image.c -@@ -85,7 +85,7 @@ DEFINE_HASH_OPS_WITH_VALUE_DESTRUCTOR(image_hash_ops, char, string_hash_func, st - - static char **image_settings_path(Image *image) { - _cleanup_strv_free_ char **l = NULL; -- const char *fn, *s; -+ const char *fn; - unsigned i = 0; - - assert(image); -diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c -index 39a7f4c3f2..b38f16c37a 100644 ---- a/src/shared/dissect-image.c -+++ b/src/shared/dissect-image.c -@@ -3042,7 +3042,6 @@ int dissected_image_acquire_metadata(DissectedImage *m, DissectImageFlags extra_ - - case META_HAS_INIT_SYSTEM: { - bool found = false; -- const char *init; - - FOREACH_STRING(init, - "/usr/lib/systemd/systemd", /* systemd on /usr merged system */ -diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c -index e483675a75..df4ac419cb 100644 ---- a/src/shared/machine-id-setup.c -+++ b/src/shared/machine-id-setup.c -@@ -197,7 +197,7 @@ finish: - - int machine_id_commit(const char *root) { - _cleanup_close_ int fd = -1, initial_mntns_fd = -1; -- const char *etc_machine_id, *sync_path; -+ const char *etc_machine_id; - sd_id128_t id; - int r; - -diff --git a/src/shared/mount-setup.c b/src/shared/mount-setup.c -index 7917968497..7eadff3ace 100644 ---- a/src/shared/mount-setup.c -+++ b/src/shared/mount-setup.c -@@ -126,9 +126,6 @@ bool mount_point_is_api(const char *path) { - } - - bool mount_point_ignore(const char *path) { -- -- const char *i; -- - /* These are API file systems that might be mounted by other software, we just list them here so that - * we know that we should ignore them. */ - FOREACH_STRING(i, -@@ -518,7 +515,6 @@ int mount_setup(bool loaded_policy, bool leave_propagation) { - * use the same label for all their files. */ - if (loaded_policy) { - usec_t before_relabel, after_relabel; -- const char *i; - int n_extra; - - before_relabel = now(CLOCK_MONOTONIC); -diff --git a/src/shared/netif-util.c b/src/shared/netif-util.c -index 603d4de109..7605427052 100644 ---- a/src/shared/netif-util.c -+++ b/src/shared/netif-util.c -@@ -39,14 +39,15 @@ int net_get_type_string(sd_device *device, uint16_t iftype, char **ret) { - } - - const char *net_get_persistent_name(sd_device *device) { -- const char *name, *field; -- - assert(device); - - /* fetch some persistent data unique (on this machine) to this device */ -- FOREACH_STRING(field, "ID_NET_NAME_ONBOARD", "ID_NET_NAME_SLOT", "ID_NET_NAME_PATH", "ID_NET_NAME_MAC") -+ FOREACH_STRING(field, "ID_NET_NAME_ONBOARD", "ID_NET_NAME_SLOT", "ID_NET_NAME_PATH", "ID_NET_NAME_MAC") { -+ const char *name; -+ - if (sd_device_get_property_value(device, field, &name) >= 0) - return name; -+ } - - return NULL; - } -diff --git a/src/shared/pager.c b/src/shared/pager.c -index 9426d3ef98..1a93deb628 100644 ---- a/src/shared/pager.c -+++ b/src/shared/pager.c -@@ -144,7 +144,7 @@ void pager_open(PagerFlags flags) { - if (r < 0) - return; - if (r == 0) { -- const char *less_charset, *exe; -+ const char *less_charset; - - /* In the child start the pager */ - -diff --git a/src/shared/psi-util.c b/src/shared/psi-util.c -index 009095e8c3..8bdd0d4a85 100644 ---- a/src/shared/psi-util.c -+++ b/src/shared/psi-util.c -@@ -106,8 +106,6 @@ int read_resource_pressure(const char *path, PressureType type, ResourcePressure - } - - int is_pressure_supported(void) { -- const char *p; -- - /* The pressure files, both under /proc and in cgroups, will exist - * even if the kernel has PSI support disabled; we have to read - * the file to make sure it doesn't return -EOPNOTSUPP */ -diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c -index 99cd574197..1a444841fa 100644 ---- a/src/shared/switch-root.c -+++ b/src/shared/switch-root.c -@@ -33,7 +33,6 @@ int switch_root(const char *new_root, - _cleanup_free_ char *resolved_old_root_after = NULL; - _cleanup_close_ int old_root_fd = -1; - bool old_root_remove; -- const char *i; - int r; - - assert(new_root); -@@ -64,12 +63,12 @@ int switch_root(const char *new_root, - if (mount(NULL, "/", NULL, MS_REC|MS_PRIVATE, NULL) < 0) - return log_error_errno(errno, "Failed to set \"/\" mount propagation to private: %m"); - -- FOREACH_STRING(i, "/sys", "/dev", "/run", "/proc") { -+ FOREACH_STRING(path, "/sys", "/dev", "/run", "/proc") { - _cleanup_free_ char *chased = NULL; - -- r = chase_symlinks(i, new_root, CHASE_PREFIX_ROOT|CHASE_NONEXISTENT, &chased, NULL); -+ r = chase_symlinks(path, new_root, CHASE_PREFIX_ROOT|CHASE_NONEXISTENT, &chased, NULL); - if (r < 0) -- return log_error_errno(r, "Failed to resolve %s/%s: %m", new_root, i); -+ return log_error_errno(r, "Failed to resolve %s/%s: %m", new_root, path); - if (r > 0) { - /* Already exists. Let's see if it is a mount point already. */ - r = path_is_mount_point(chased, NULL, 0); -@@ -81,8 +80,8 @@ int switch_root(const char *new_root, - /* Doesn't exist yet? */ - (void) mkdir_p_label(chased, 0755); - -- if (mount(i, chased, NULL, mount_flags, NULL) < 0) -- return log_error_errno(errno, "Failed to mount %s to %s: %m", i, chased); -+ if (mount(path, chased, NULL, mount_flags, NULL) < 0) -+ return log_error_errno(errno, "Failed to mount %s to %s: %m", path, chased); - } - - /* Do not fail if base_filesystem_create() fails. Not all switch roots are like base_filesystem_create() wants -diff --git a/src/shared/tests.c b/src/shared/tests.c -index b00006b41a..f5d9536411 100644 ---- a/src/shared/tests.c -+++ b/src/shared/tests.c -@@ -307,16 +307,15 @@ const char *ci_environment(void) { - * just the general CI environment type, but also whether we're sanitizing or not, etc. The caller is - * expected to use strstr on the returned value. */ - static const char *ans = POINTER_MAX; -- const char *p; - int r; - - if (ans != POINTER_MAX) - return ans; - - /* We allow specifying the environment with $CITYPE. Nobody uses this so far, but we are ready. */ -- p = getenv("CITYPE"); -- if (!isempty(p)) -- return (ans = p); -+ const char *citype = getenv("CITYPE"); -+ if (!isempty(citype)) -+ return (ans = citype); - - if (getenv_bool("TRAVIS") > 0) - return (ans = "travis"); -@@ -327,12 +326,12 @@ const char *ci_environment(void) { - if (getenv("AUTOPKGTEST_ARTIFACTS") || getenv("AUTOPKGTEST_TMP")) - return (ans = "autopkgtest"); - -- FOREACH_STRING(p, "CI", "CONTINOUS_INTEGRATION") { -+ FOREACH_STRING(var, "CI", "CONTINOUS_INTEGRATION") { - /* Those vars are booleans according to Semaphore and Travis docs: - * https://docs.travis-ci.com/user/environment-variables/#default-environment-variables - * https://docs.semaphoreci.com/ci-cd-environment/environment-variables/#ci - */ -- r = getenv_bool(p); -+ r = getenv_bool(var); - if (r > 0) - return (ans = "unknown"); /* Some other unknown thing */ - if (r == 0) -diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c -index b59a67ac22..a97aa7be4c 100644 ---- a/src/systemctl/systemctl-edit.c -+++ b/src/systemctl/systemctl-edit.c -@@ -320,7 +320,7 @@ static int run_editor(char **paths) { - if (r == 0) { - char **editor_args = NULL, **tmp_path, **original_path; - size_t n_editor_args = 0, i = 1, argc; -- const char **args, *editor, *p; -+ const char **args, *editor; - - argc = strv_length(paths)/2 + 1; - -@@ -358,9 +358,9 @@ static int run_editor(char **paths) { - if (n_editor_args > 0) - execvp(args[0], (char* const*) args); - -- FOREACH_STRING(p, "editor", "nano", "vim", "vi") { -- args[0] = p; -- execvp(p, (char* const*) args); -+ FOREACH_STRING(name, "editor", "nano", "vim", "vi") { -+ args[0] = name; -+ execvp(name, (char* const*) args); - /* We do not fail if the editor doesn't exist because we want to try each one of them - * before failing. */ - if (errno != ENOENT) { -diff --git a/src/systemctl/systemctl-sysv-compat.c b/src/systemctl/systemctl-sysv-compat.c -index a78fa1e04c..017dba2034 100644 ---- a/src/systemctl/systemctl-sysv-compat.c -+++ b/src/systemctl/systemctl-sysv-compat.c -@@ -18,9 +18,8 @@ - - int talk_initctl(char rl) { - #if HAVE_SYSV_COMPAT -- struct init_request request; - _cleanup_close_ int fd = -1; -- const char *p; -+ const char *path; - int r; - - /* Try to switch to the specified SysV runlevel. Returns == 0 if the operation does not apply on this -@@ -29,19 +28,19 @@ int talk_initctl(char rl) { - if (rl == 0) - return 0; - -- FOREACH_STRING(p, "/run/initctl", "/dev/initctl") { -- fd = open(p, O_WRONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY); -- if (fd >= 0 || errno != ENOENT) -- break; -- } -- if (fd < 0) { -- if (errno == ENOENT) -- return 0; -+ FOREACH_STRING(_path, "/run/initctl", "/dev/initctl") { -+ path = _path; - -- return log_error_errno(errno, "Failed to open initctl fifo: %m"); -+ fd = open(path, O_WRONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY); -+ if (fd < 0 && errno != ENOENT) -+ return log_error_errno(errno, "Failed to open %s: %m", path); -+ if (fd >= 0) -+ break; - } -+ if (fd < 0) -+ return 0; - -- request = (struct init_request) { -+ struct init_request request = { - .magic = INIT_MAGIC, - .sleeptime = 0, - .cmd = INIT_CMD_RUNLVL, -@@ -50,7 +49,7 @@ int talk_initctl(char rl) { - - r = loop_write(fd, &request, sizeof(request), false); - if (r < 0) -- return log_error_errno(r, "Failed to write to %s: %m", p); -+ return log_error_errno(r, "Failed to write to %s: %m", path); - - return 1; - #else -diff --git a/src/test/test-bpf-devices.c b/src/test/test-bpf-devices.c -index bbaa7b3605..587591cf04 100644 ---- a/src/test/test-bpf-devices.c -+++ b/src/test/test-bpf-devices.c -@@ -30,7 +30,6 @@ static void test_policy_closed(const char *cgroup_path, BPFProgram **installed_p - r = bpf_devices_apply_policy(&prog, CGROUP_DEVICE_POLICY_CLOSED, true, cgroup_path, installed_prog); - assert_se(r >= 0); - -- const char *s; - FOREACH_STRING(s, "/dev/null", - "/dev/zero", - "/dev/full", -diff --git a/src/test/test-ellipsize.c b/src/test/test-ellipsize.c -index b840355f5e..7317193363 100644 ---- a/src/test/test-ellipsize.c -+++ b/src/test/test-ellipsize.c -@@ -64,18 +64,14 @@ static void test_ellipsize_mem_one(const char *s, size_t old_length, size_t new_ - } - - TEST(ellipsize_mem) { -- const char *s; -- ssize_t l, k; -- - FOREACH_STRING(s, - "_XXXXXXXXXXX_", /* ASCII */ - "_aąęółśćńżźć_", /* two-byte utf-8 */ - "გამარჯობა", /* multi-byte utf-8 */ - "你好世界", /* wide characters */ - "你გą世óoó界") /* a mix */ -- -- for (l = strlen(s); l >= 0; l--) -- for (k = strlen(s) + 1; k >= 0; k--) -+ for (ssize_t l = strlen(s); l >= 0; l--) -+ for (ssize_t k = strlen(s) + 1; k >= 0; k--) - test_ellipsize_mem_one(s, l, k); - } - -diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c -index 7b132447bf..f97206b4d6 100644 ---- a/src/test/test-env-file.c -+++ b/src/test/test-env-file.c -@@ -166,8 +166,6 @@ TEST(load_env_file_6) { - } - - TEST(write_and_load_env_file) { -- const char *v; -- - /* Make sure that our writer, parser and the shell agree on what our env var files mean */ - - FOREACH_STRING(v, -diff --git a/src/test/test-execute.c b/src/test/test-execute.c -index 49629c6bc2..0760df6603 100644 ---- a/src/test/test-execute.c -+++ b/src/test/test-execute.c -@@ -190,19 +190,15 @@ static bool check_user_has_group_with_same_name(const char *name) { - } - - static bool is_inaccessible_available(void) { -- const char *p; -- - FOREACH_STRING(p, -- "/run/systemd/inaccessible/reg", -- "/run/systemd/inaccessible/dir", -- "/run/systemd/inaccessible/chr", -- "/run/systemd/inaccessible/blk", -- "/run/systemd/inaccessible/fifo", -- "/run/systemd/inaccessible/sock" -- ) { -+ "/run/systemd/inaccessible/reg", -+ "/run/systemd/inaccessible/dir", -+ "/run/systemd/inaccessible/chr", -+ "/run/systemd/inaccessible/blk", -+ "/run/systemd/inaccessible/fifo", -+ "/run/systemd/inaccessible/sock") - if (access(p, F_OK) < 0) - return false; -- } - - return true; - } -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 087d76f760..4f91d94709 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -1003,7 +1003,6 @@ TEST(read_full_file_offset_size) { - } - - static void test_read_virtual_file_one(size_t max_size) { -- const char *filename; - int r; - - log_info("/* %s (max_size=%zu) */", __func__, max_size); -diff --git a/src/test/test-gpt.c b/src/test/test-gpt.c -index ab26d5d096..05da7a9e48 100644 ---- a/src/test/test-gpt.c -+++ b/src/test/test-gpt.c -@@ -11,16 +11,13 @@ - #include "util.h" - - TEST(gpt_types_against_architectures) { -- const char *prefix; - int r; - - /* Dumps a table indicating for which architectures we know we have matching GPT partition - * types. Also validates whether we can properly categorize the entries. */ - - FOREACH_STRING(prefix, "root-", "usr-") -- for (int a = 0; a < _ARCHITECTURE_MAX; a++) { -- const char *suffix; -- -+ for (int a = 0; a < _ARCHITECTURE_MAX; a++) - FOREACH_STRING(suffix, "", "-verity", "-verity-sig") { - _cleanup_free_ char *joined = NULL; - sd_id128_t id; -@@ -48,7 +45,6 @@ TEST(gpt_types_against_architectures) { - - assert_se(gpt_partition_type_uuid_to_arch(id) == a); - } -- } - } - - DEFINE_TEST_MAIN(LOG_INFO); -diff --git a/src/test/test-libcrypt-util.c b/src/test/test-libcrypt-util.c -index ebd520f7ba..f88a9f9b24 100644 ---- a/src/test/test-libcrypt-util.c -+++ b/src/test/test-libcrypt-util.c -@@ -39,7 +39,6 @@ static int test_hash_password(void) { - /* As a warm-up exercise, check if we can hash passwords. */ - - bool have_sane_hash = false; -- const char *hash; - - FOREACH_STRING(hash, - "ew3bU1.hoKk4o", -@@ -68,7 +67,6 @@ static void test_hash_password_full(void) { - log_info("/* %s */", __func__); - - _cleanup_free_ void *cd_data = NULL; -- const char *i; - int cd_size = 0; - - log_info("sizeof(struct crypt_data): %zu bytes", sizeof(struct crypt_data)); -diff --git a/src/test/test-loop-block.c b/src/test/test-loop-block.c -index 1642f82e40..9c8c55bca2 100644 ---- a/src/test/test-loop-block.c -+++ b/src/test/test-loop-block.c -@@ -114,7 +114,6 @@ int main(int argc, char *argv[]) { - _cleanup_(dissected_image_unrefp) DissectedImage *dissected = NULL; - _cleanup_(umount_and_rmdir_and_freep) char *mounted = NULL; - pthread_t threads[N_THREADS]; -- const char *fs; - sd_id128_t id; - int r; - -diff --git a/src/test/test-mount-util.c b/src/test/test-mount-util.c -index 74d352268e..7e06fc419c 100644 ---- a/src/test/test-mount-util.c -+++ b/src/test/test-mount-util.c -@@ -128,7 +128,6 @@ TEST(mount_flags_to_string) { - TEST(bind_remount_recursive) { - _cleanup_(rm_rf_physical_and_freep) char *tmp = NULL; - _cleanup_free_ char *subdir = NULL; -- const char *p; - - if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0) { - (void) log_tests_skipped("not running privileged"); -diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c -index 7f633ab259..5f744b0288 100644 ---- a/src/test/test-stat-util.c -+++ b/src/test/test-stat-util.c -@@ -67,7 +67,6 @@ TEST(path_is_fs_type) { - } - - TEST(path_is_temporary_fs) { -- const char *s; - int r; - - FOREACH_STRING(s, "/", "/run", "/sys", "/sys/", "/proc", "/i-dont-exist", "/var", "/var/lib") { -@@ -85,7 +84,6 @@ TEST(path_is_temporary_fs) { - } - - TEST(path_is_read_only_fs) { -- const char *s; - int r; - - FOREACH_STRING(s, "/", "/run", "/sys", "/sys/", "/proc", "/i-dont-exist", "/var", "/var/lib") { -diff --git a/src/test/test-strv.c b/src/test/test-strv.c -index 94581fc832..0ece342521 100644 ---- a/src/test/test-strv.c -+++ b/src/test/test-strv.c -@@ -924,12 +924,10 @@ TEST(foreach_string) { - "waldo", - NULL - }; -- const char *x; -- unsigned i = 0; - -+ unsigned i = 0; - FOREACH_STRING(x, "foo", "bar", "waldo") - assert_se(streq_ptr(t[i++], x)); -- - assert_se(i == 3); - - FOREACH_STRING(x, "zzz") -diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c -index 7337b81227..f070c171fe 100644 ---- a/src/test/test-utf8.c -+++ b/src/test/test-utf8.c -@@ -144,7 +144,6 @@ TEST(utf8_escape_non_printable) { - } - - TEST(utf8_escape_non_printable_full) { -- const char *s; - FOREACH_STRING(s, - "goo goo goo", /* ASCII */ - "\001 \019\20\a", /* control characters */ -@@ -210,8 +209,6 @@ TEST(utf8_console_width) { - } - - TEST(utf8_to_utf16) { -- const char *p; -- - FOREACH_STRING(p, - "abc", - "zażółcić gęślą jaźń", -diff --git a/src/tmpfiles/offline-passwd.c b/src/tmpfiles/offline-passwd.c -index 8ba3fea984..c847266ed4 100644 ---- a/src/tmpfiles/offline-passwd.c -+++ b/src/tmpfiles/offline-passwd.c -@@ -39,7 +39,6 @@ static int populate_uid_cache(const char *root, Hashmap **ret) { - /* The directory list is hardcoded here: /etc is the standard, and rpm-ostree uses /usr/lib. This - * could be made configurable, but I don't see the point right now. */ - -- const char *fname; - FOREACH_STRING(fname, "/etc/passwd", "/usr/lib/passwd") { - _cleanup_fclose_ FILE *f = NULL; - -@@ -78,7 +77,6 @@ static int populate_gid_cache(const char *root, Hashmap **ret) { - if (!cache) - return -ENOMEM; - -- const char *fname; - FOREACH_STRING(fname, "/etc/group", "/usr/lib/group") { - _cleanup_fclose_ FILE *f = NULL; - diff --git a/SOURCES/0157-swap-tell-swapon-to-reinitialize-swap-if-needed.patch b/SOURCES/0157-swap-tell-swapon-to-reinitialize-swap-if-needed.patch new file mode 100644 index 0000000..83ff24c --- /dev/null +++ b/SOURCES/0157-swap-tell-swapon-to-reinitialize-swap-if-needed.patch @@ -0,0 +1,29 @@ +From 94bab389194116ab10a68bca3d72c5b06f332645 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Mon, 12 Dec 2022 16:21:30 +0100 +Subject: [PATCH] swap: tell swapon to reinitialize swap if needed + +If the page size of a swap space doesn't match the page size of the +currently running kernel, swapon will fail. Let's instruct it to +reinitialize the swap space instead. + +(cherry picked from commit cc137d53e36da5e57b060be5e621864f572b2cac) + +Resolves: #2151993 +--- + src/core/swap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/swap.c b/src/core/swap.c +index 2196793ad1..5c83c4780f 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -827,7 +827,7 @@ static void swap_enter_activating(Swap *s) { + } + } + +- r = exec_command_set(s->control_command, "/sbin/swapon", NULL); ++ r = exec_command_set(s->control_command, "/sbin/swapon", "--fixpgsz", NULL); + if (r < 0) + goto fail; + diff --git a/SOURCES/0158-basic-unit-file-split-out-the-subroutine-for-symlink.patch b/SOURCES/0158-basic-unit-file-split-out-the-subroutine-for-symlink.patch deleted file mode 100644 index 43c2405..0000000 --- a/SOURCES/0158-basic-unit-file-split-out-the-subroutine-for-symlink.patch +++ /dev/null @@ -1,213 +0,0 @@ -From d49d646d00078b201cdde2978b7941d20acb1d4b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 2 Mar 2022 16:53:54 +0100 -Subject: [PATCH] basic/unit-file: split out the subroutine for symlink - verification - -The old logs used __func__, but this doesn't make sense now, because the -low-level function will be used in other places. So those are adjusted to be -more generic. - -(cherry picked from commit 9825181143530af7003fc50567b814dbbee39046) - -Related: #2082131 ---- - src/basic/unit-file.c | 159 +++++++++++++++++++++++++----------------- - 1 file changed, 96 insertions(+), 63 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 96826e2940..25abce932a 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -260,6 +260,83 @@ static int directory_name_is_valid(const char *name) { - return false; - } - -+static int unit_file_resolve_symlink( -+ const char *root_dir, -+ char **search_path, -+ const char *dir, -+ int dirfd, -+ const char *filename, -+ char **ret_destination) { -+ -+ _cleanup_free_ char *target = NULL, *simplified = NULL, *dst = NULL; -+ int r; -+ -+ assert(dir); -+ assert(dirfd >= 0); -+ assert(filename); -+ assert(ret_destination); -+ -+ r = readlinkat_malloc(dirfd, filename, &target); -+ if (r < 0) -+ return log_warning_errno(r, "Failed to read symlink %s%s%s: %m", -+ dir, dir ? "/" : "", filename); -+ -+ bool is_abs = path_is_absolute(target); -+ if (root_dir || !is_abs) { -+ char *target_abs = path_join(is_abs ? root_dir : dir, target); -+ if (!target_abs) -+ return log_oom(); -+ -+ free_and_replace(target, target_abs); -+ } -+ -+ /* Get rid of "." and ".." components in target path */ -+ r = chase_symlinks(target, root_dir, CHASE_NOFOLLOW | CHASE_NONEXISTENT, &simplified, NULL); -+ if (r < 0) -+ return log_warning_errno(r, "Failed to resolve symlink %s/%s pointing to %s: %m", -+ dir, filename, target); -+ -+ /* Check if the symlink goes outside of our search path. -+ * If yes, it's a linked unit file or mask, and we don't care about the target name. -+ * Let's just store the link source directly. -+ * If not, let's verify that it's a good symlink. */ -+ const char *tail = path_startswith_strv(simplified, search_path); -+ if (!tail) { -+ log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified); -+ -+ dst = path_join(dir, filename); -+ if (!dst) -+ return log_oom(); -+ -+ } else { -+ r = path_extract_filename(simplified, &dst); -+ if (r < 0) -+ return r; -+ -+ bool self_alias = streq(dst, filename); -+ -+ if (is_path(tail)) -+ log_full(self_alias ? LOG_DEBUG : LOG_WARNING, -+ "Suspicious symlink %s/%s→%s, treating as alias.", -+ dir, filename, simplified); -+ -+ r = unit_validate_alias_symlink_and_warn(filename, simplified); -+ if (r < 0) -+ return r; -+ -+ if (self_alias) -+ /* A self-alias that has no effect */ -+ return log_debug_errno(SYNTHETIC_ERRNO(ELOOP), -+ "Unit file self-alias: %s/%s → %s, ignoring.", -+ dir, filename, dst); -+ -+ log_debug("Unit file alias: %s/%s → %s", dir, filename, dst); -+ } -+ -+ *ret_destination = TAKE_PTR(dst); -+ return 0; -+} -+ - int unit_file_build_name_map( - const LookupPaths *lp, - uint64_t *cache_timestamp_hash, -@@ -310,10 +387,9 @@ int unit_file_build_name_map( - - FOREACH_DIRENT_ALL(de, d, log_warning_errno(errno, "Failed to read \"%s\", ignoring: %m", *dir)) { - _unused_ _cleanup_free_ char *_filename_free = NULL; -- _cleanup_free_ char *simplified = NULL; -- bool symlink_to_dir = false; -- const char *dst = NULL; - char *filename; -+ _cleanup_free_ char *dst = NULL; -+ bool symlink_to_dir = false; - - /* We only care about valid units and dirs with certain suffixes, let's ignore the - * rest. */ -@@ -397,77 +473,34 @@ int unit_file_build_name_map( - /* We don't explicitly check for alias loops here. unit_ids_map_get() which - * limits the number of hops should be used to access the map. */ - -- _cleanup_free_ char *target = NULL; -- -- r = readlinkat_malloc(dirfd(d), de->d_name, &target); -- if (r < 0) { -- log_warning_errno(r, "Failed to read symlink %s/%s, ignoring: %m", -- *dir, de->d_name); -+ r = unit_file_resolve_symlink(lp->root_dir, lp->search_path, -+ *dir, dirfd(d), de->d_name, -+ &dst); -+ if (r == -ENOMEM) -+ return r; -+ if (r < 0) /* we ignore other errors here */ - continue; -- } - -- const bool is_abs = path_is_absolute(target); -- if (lp->root_dir || !is_abs) { -- char *target_abs = path_join(is_abs ? lp->root_dir : *dir, target); -- if (!target_abs) -+ } else { -+ dst = TAKE_PTR(_filename_free); /* Grab the copy we made previously, if available. */ -+ if (!dst) { -+ dst = strdup(filename); -+ if (!dst) - return log_oom(); -- -- free_and_replace(target, target_abs); - } - -- /* Get rid of "." and ".." components in target path */ -- r = chase_symlinks(target, lp->root_dir, CHASE_NOFOLLOW | CHASE_NONEXISTENT, &simplified, NULL); -- if (r < 0) { -- log_warning_errno(r, "Failed to resolve symlink %s pointing to %s, ignoring: %m", -- filename, target); -- continue; -- } -- -- /* Check if the symlink goes outside of our search path. -- * If yes, it's a linked unit file or mask, and we don't care about the target name. -- * Let's just store the link source directly. -- * If not, let's verify that it's a good symlink. */ -- char *tail = path_startswith_strv(simplified, lp->search_path); -- if (!tail) { -- log_debug("%s: linked unit file: %s → %s", -- __func__, filename, simplified); -- -- dst = filename; -- } else { -- -- bool self_alias; -- -- dst = basename(simplified); -- self_alias = streq(dst, de->d_name); -- -- if (is_path(tail)) -- log_full(self_alias ? LOG_DEBUG : LOG_WARNING, -- "Suspicious symlink %s→%s, treating as alias.", -- filename, simplified); -- -- r = unit_validate_alias_symlink_and_warn(filename, simplified); -- if (r < 0) -- continue; -- -- if (self_alias) { -- /* A self-alias that has no effect */ -- log_debug("%s: self-alias: %s/%s → %s, ignoring.", -- __func__, *dir, de->d_name, dst); -- continue; -- } -- -- log_debug("%s: alias: %s/%s → %s", __func__, *dir, de->d_name, dst); -- } -- -- } else { -- dst = filename; - log_debug("%s: normal unit file: %s", __func__, dst); - } - -- r = hashmap_put_strdup(&ids, de->d_name, dst); -+ _cleanup_free_ char *key = strdup(de->d_name); -+ if (!key) -+ return log_oom(); -+ -+ r = hashmap_ensure_put(&ids, &string_hash_ops_free_free, key, dst); - if (r < 0) - return log_warning_errno(r, "Failed to add entry to hashmap (%s→%s): %m", - de->d_name, dst); -+ key = dst = NULL; - } - } - diff --git a/SOURCES/0158-coredump-adjust-whitespace.patch b/SOURCES/0158-coredump-adjust-whitespace.patch new file mode 100644 index 0000000..b6dba41 --- /dev/null +++ b/SOURCES/0158-coredump-adjust-whitespace.patch @@ -0,0 +1,101 @@ +From e611a79647dd2ec68b8d5553d8aa566e79cd9f6e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 29 Nov 2022 09:00:16 +0100 +Subject: [PATCH] coredump: adjust whitespace + +(cherry picked from commit 510a146634f3e095b34e2a26023b1b1f99dcb8c0) + +Related: #2155517 +--- + src/coredump/coredump.c | 56 ++++++++++++++++++++--------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) + +diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c +index 98e7492811..7a181bdeeb 100644 +--- a/src/coredump/coredump.c ++++ b/src/coredump/coredump.c +@@ -110,16 +110,16 @@ enum { + }; + + static const char * const meta_field_names[_META_MAX] = { +- [META_ARGV_PID] = "COREDUMP_PID=", +- [META_ARGV_UID] = "COREDUMP_UID=", +- [META_ARGV_GID] = "COREDUMP_GID=", +- [META_ARGV_SIGNAL] = "COREDUMP_SIGNAL=", +- [META_ARGV_TIMESTAMP] = "COREDUMP_TIMESTAMP=", +- [META_ARGV_RLIMIT] = "COREDUMP_RLIMIT=", +- [META_ARGV_HOSTNAME] = "COREDUMP_HOSTNAME=", +- [META_COMM] = "COREDUMP_COMM=", +- [META_EXE] = "COREDUMP_EXE=", +- [META_UNIT] = "COREDUMP_UNIT=", ++ [META_ARGV_PID] = "COREDUMP_PID=", ++ [META_ARGV_UID] = "COREDUMP_UID=", ++ [META_ARGV_GID] = "COREDUMP_GID=", ++ [META_ARGV_SIGNAL] = "COREDUMP_SIGNAL=", ++ [META_ARGV_TIMESTAMP] = "COREDUMP_TIMESTAMP=", ++ [META_ARGV_RLIMIT] = "COREDUMP_RLIMIT=", ++ [META_ARGV_HOSTNAME] = "COREDUMP_HOSTNAME=", ++ [META_COMM] = "COREDUMP_COMM=", ++ [META_EXE] = "COREDUMP_EXE=", ++ [META_UNIT] = "COREDUMP_UNIT=", + }; + + typedef struct Context { +@@ -138,9 +138,9 @@ typedef enum CoredumpStorage { + } CoredumpStorage; + + static const char* const coredump_storage_table[_COREDUMP_STORAGE_MAX] = { +- [COREDUMP_STORAGE_NONE] = "none", ++ [COREDUMP_STORAGE_NONE] = "none", + [COREDUMP_STORAGE_EXTERNAL] = "external", +- [COREDUMP_STORAGE_JOURNAL] = "journal", ++ [COREDUMP_STORAGE_JOURNAL] = "journal", + }; + + DEFINE_PRIVATE_STRING_TABLE_LOOKUP(coredump_storage, CoredumpStorage); +@@ -156,13 +156,13 @@ static uint64_t arg_max_use = UINT64_MAX; + + static int parse_config(void) { + static const ConfigTableItem items[] = { +- { "Coredump", "Storage", config_parse_coredump_storage, 0, &arg_storage }, +- { "Coredump", "Compress", config_parse_bool, 0, &arg_compress }, +- { "Coredump", "ProcessSizeMax", config_parse_iec_uint64, 0, &arg_process_size_max }, +- { "Coredump", "ExternalSizeMax", config_parse_iec_uint64_infinity, 0, &arg_external_size_max }, +- { "Coredump", "JournalSizeMax", config_parse_iec_size, 0, &arg_journal_size_max }, +- { "Coredump", "KeepFree", config_parse_iec_uint64, 0, &arg_keep_free }, +- { "Coredump", "MaxUse", config_parse_iec_uint64, 0, &arg_max_use }, ++ { "Coredump", "Storage", config_parse_coredump_storage, 0, &arg_storage }, ++ { "Coredump", "Compress", config_parse_bool, 0, &arg_compress }, ++ { "Coredump", "ProcessSizeMax", config_parse_iec_uint64, 0, &arg_process_size_max }, ++ { "Coredump", "ExternalSizeMax", config_parse_iec_uint64_infinity, 0, &arg_external_size_max }, ++ { "Coredump", "JournalSizeMax", config_parse_iec_size, 0, &arg_journal_size_max }, ++ { "Coredump", "KeepFree", config_parse_iec_uint64, 0, &arg_keep_free }, ++ { "Coredump", "MaxUse", config_parse_iec_uint64, 0, &arg_max_use }, + {} + }; + +@@ -208,15 +208,15 @@ static int fix_acl(int fd, uid_t uid) { + static int fix_xattr(int fd, const Context *context) { + + static const char * const xattrs[_META_MAX] = { +- [META_ARGV_PID] = "user.coredump.pid", +- [META_ARGV_UID] = "user.coredump.uid", +- [META_ARGV_GID] = "user.coredump.gid", +- [META_ARGV_SIGNAL] = "user.coredump.signal", +- [META_ARGV_TIMESTAMP] = "user.coredump.timestamp", +- [META_ARGV_RLIMIT] = "user.coredump.rlimit", +- [META_ARGV_HOSTNAME] = "user.coredump.hostname", +- [META_COMM] = "user.coredump.comm", +- [META_EXE] = "user.coredump.exe", ++ [META_ARGV_PID] = "user.coredump.pid", ++ [META_ARGV_UID] = "user.coredump.uid", ++ [META_ARGV_GID] = "user.coredump.gid", ++ [META_ARGV_SIGNAL] = "user.coredump.signal", ++ [META_ARGV_TIMESTAMP] = "user.coredump.timestamp", ++ [META_ARGV_RLIMIT] = "user.coredump.rlimit", ++ [META_ARGV_HOSTNAME] = "user.coredump.hostname", ++ [META_COMM] = "user.coredump.comm", ++ [META_EXE] = "user.coredump.exe", + }; + + int r = 0; diff --git a/SOURCES/0159-basic-stat-util-add-null_or_empty_path_with_root.patch b/SOURCES/0159-basic-stat-util-add-null_or_empty_path_with_root.patch deleted file mode 100644 index 64f0c2e..0000000 --- a/SOURCES/0159-basic-stat-util-add-null_or_empty_path_with_root.patch +++ /dev/null @@ -1,100 +0,0 @@ -From fae45af368a90cdce95680d82b66d8e460ab939f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 23 Mar 2022 17:47:33 +0100 -Subject: [PATCH] basic/stat-util: add null_or_empty_path_with_root() - -(cherry picked from commit 48542eac39999f58f6c331b4b3cdf2d78bf15979) - -Related: #2082131 ---- - src/basic/stat-util.c | 15 ++++++++++----- - src/basic/stat-util.h | 6 +++++- - src/test/test-stat-util.c | 24 ++++++++++++++++++++++++ - 3 files changed, 39 insertions(+), 6 deletions(-) - -diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c -index efac7b002e..21e71794b4 100644 ---- a/src/basic/stat-util.c -+++ b/src/basic/stat-util.c -@@ -127,17 +127,22 @@ bool null_or_empty(struct stat *st) { - return false; - } - --int null_or_empty_path(const char *fn) { -+int null_or_empty_path_with_root(const char *fn, const char *root) { - struct stat st; -+ int r; - - assert(fn); - -- /* If we have the path, let's do an easy text comparison first. */ -- if (path_equal(fn, "/dev/null")) -+ /* A symlink to /dev/null or an empty file? -+ * When looking under root_dir, we can't expect /dev/ to be mounted, -+ * so let's see if the path is a (possibly dangling) symlink to /dev/null. */ -+ -+ if (path_equal_ptr(path_startswith(fn, root ?: "/"), "dev/null")) - return true; - -- if (stat(fn, &st) < 0) -- return -errno; -+ r = chase_symlinks_and_stat(fn, root, CHASE_PREFIX_ROOT, NULL, &st, NULL); -+ if (r < 0) -+ return r; - - return null_or_empty(&st); - } -diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h -index a566114f7c..2c5edeb891 100644 ---- a/src/basic/stat-util.h -+++ b/src/basic/stat-util.h -@@ -31,9 +31,13 @@ static inline int dir_is_populated(const char *path) { - } - - bool null_or_empty(struct stat *st) _pure_; --int null_or_empty_path(const char *fn); -+int null_or_empty_path_with_root(const char *fn, const char *root); - int null_or_empty_fd(int fd); - -+static inline int null_or_empty_path(const char *fn) { -+ return null_or_empty_path_with_root(fn, NULL); -+} -+ - int path_is_read_only_fs(const char *path); - - int files_same(const char *filea, const char *fileb, int flags); -diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c -index 5f744b0288..9975a1848d 100644 ---- a/src/test/test-stat-util.c -+++ b/src/test/test-stat-util.c -@@ -18,6 +18,30 @@ - #include "tests.h" - #include "tmpfile-util.h" - -+TEST(null_or_empty_path) { -+ assert_se(null_or_empty_path("/dev/null") == 1); -+ assert_se(null_or_empty_path("/dev/tty") == 1); /* We assume that any character device is "empty", bleh. */ -+ assert_se(null_or_empty_path("../../../../../../../../../../../../../../../../../../../../dev/null") == 1); -+ assert_se(null_or_empty_path("/proc/self/exe") == 0); -+ assert_se(null_or_empty_path("/nosuchfileordir") == -ENOENT); -+} -+ -+TEST(null_or_empty_path_with_root) { -+ assert_se(null_or_empty_path_with_root("/dev/null", NULL) == 1); -+ assert_se(null_or_empty_path_with_root("/dev/null", "/") == 1); -+ assert_se(null_or_empty_path_with_root("/dev/null", "/.././../") == 1); -+ assert_se(null_or_empty_path_with_root("/dev/null", "/.././..") == 1); -+ assert_se(null_or_empty_path_with_root("../../../../../../../../../../../../../../../../../../../../dev/null", NULL) == 1); -+ assert_se(null_or_empty_path_with_root("../../../../../../../../../../../../../../../../../../../../dev/null", "/") == 1); -+ assert_se(null_or_empty_path_with_root("/proc/self/exe", NULL) == 0); -+ assert_se(null_or_empty_path_with_root("/proc/self/exe", "/") == 0); -+ assert_se(null_or_empty_path_with_root("/nosuchfileordir", NULL) == -ENOENT); -+ assert_se(null_or_empty_path_with_root("/nosuchfileordir", "/.././../") == -ENOENT); -+ assert_se(null_or_empty_path_with_root("/nosuchfileordir", "/.././..") == -ENOENT); -+ assert_se(null_or_empty_path_with_root("/foobar/barbar/dev/null", "/foobar/barbar") == 1); -+ assert_se(null_or_empty_path_with_root("/foobar/barbar/dev/null", "/foobar/barbar/") == 1); -+} -+ - TEST(files_same) { - _cleanup_close_ int fd = -1; - char name[] = "/tmp/test-files_same.XXXXXX"; diff --git a/SOURCES/0159-coredump-do-not-allow-user-to-access-coredumps-with-.patch b/SOURCES/0159-coredump-do-not-allow-user-to-access-coredumps-with-.patch new file mode 100644 index 0000000..6fadae5 --- /dev/null +++ b/SOURCES/0159-coredump-do-not-allow-user-to-access-coredumps-with-.patch @@ -0,0 +1,383 @@ +From e86a03c4f201745a683cfe1549a202d5ae636b07 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 28 Nov 2022 12:12:55 +0100 +Subject: [PATCH] coredump: do not allow user to access coredumps with changed + uid/gid/capabilities + +When the user starts a program which elevates its permissions via setuid, +setgid, or capabilities set on the file, it may access additional information +which would then be visible in the coredump. We shouldn't make the the coredump +visible to the user in such cases. + +Reported-by: Matthias Gerstner + +This reads the /proc//auxv file and attaches it to the process metadata as +PROC_AUXV. Before the coredump is submitted, it is parsed and if either +at_secure was set (which the kernel will do for processes that are setuid, +setgid, or setcap), or if the effective uid/gid don't match uid/gid, the file +is not made accessible to the user. If we can't access this data, we assume the +file should not be made accessible either. In principle we could also access +the auxv data from a note in the core file, but that is much more complex and +it seems better to use the stand-alone file that is provided by the kernel. + +Attaching auxv is both convient for this patch (because this way it's passed +between the stages along with other fields), but I think it makes sense to save +it in general. + +We use the information early in the core file to figure out if the program was +32-bit or 64-bit and its endianness. This way we don't need heuristics to guess +whether the format of the auxv structure. This test might reject some cases on +fringe architecutes. But the impact would be limited: we just won't grant the +user permissions to view the coredump file. If people report that we're missing +some cases, we can always enhance this to support more architectures. + +I tested auxv parsing on amd64, 32-bit program on amd64, arm64, arm32, and +ppc64el, but not the whole coredump handling. + +(cherry picked from commit 3e4d0f6cf99f8677edd6a237382a65bfe758de03) + +Resolves: #2155517 +--- + src/basic/io-util.h | 9 ++ + src/coredump/coredump.c | 196 +++++++++++++++++++++++++++++++++++++--- + 2 files changed, 192 insertions(+), 13 deletions(-) + +diff --git a/src/basic/io-util.h b/src/basic/io-util.h +index 39728e06bc..3afb134266 100644 +--- a/src/basic/io-util.h ++++ b/src/basic/io-util.h +@@ -91,7 +91,16 @@ struct iovec_wrapper *iovw_new(void); + struct iovec_wrapper *iovw_free(struct iovec_wrapper *iovw); + struct iovec_wrapper *iovw_free_free(struct iovec_wrapper *iovw); + void iovw_free_contents(struct iovec_wrapper *iovw, bool free_vectors); ++ + int iovw_put(struct iovec_wrapper *iovw, void *data, size_t len); ++static inline int iovw_consume(struct iovec_wrapper *iovw, void *data, size_t len) { ++ /* Move data into iovw or free on error */ ++ int r = iovw_put(iovw, data, len); ++ if (r < 0) ++ free(data); ++ return r; ++} ++ + int iovw_put_string_field(struct iovec_wrapper *iovw, const char *field, const char *value); + int iovw_put_string_field_free(struct iovec_wrapper *iovw, const char *field, char *value); + void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new); +diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c +index 7a181bdeeb..ea3d8c415a 100644 +--- a/src/coredump/coredump.c ++++ b/src/coredump/coredump.c +@@ -4,6 +4,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -106,6 +107,7 @@ enum { + + META_EXE = _META_MANDATORY_MAX, + META_UNIT, ++ META_PROC_AUXV, + _META_MAX + }; + +@@ -120,10 +122,12 @@ static const char * const meta_field_names[_META_MAX] = { + [META_COMM] = "COREDUMP_COMM=", + [META_EXE] = "COREDUMP_EXE=", + [META_UNIT] = "COREDUMP_UNIT=", ++ [META_PROC_AUXV] = "COREDUMP_PROC_AUXV=", + }; + + typedef struct Context { + const char *meta[_META_MAX]; ++ size_t meta_size[_META_MAX]; + pid_t pid; + bool is_pid1; + bool is_journald; +@@ -185,13 +189,16 @@ static uint64_t storage_size_max(void) { + return 0; + } + +-static int fix_acl(int fd, uid_t uid) { ++static int fix_acl(int fd, uid_t uid, bool allow_user) { ++ assert(fd >= 0); ++ assert(uid_is_valid(uid)); + + #if HAVE_ACL + int r; + +- assert(fd >= 0); +- assert(uid_is_valid(uid)); ++ /* We don't allow users to read coredumps if the uid or capabilities were changed. */ ++ if (!allow_user) ++ return 0; + + if (uid_is_system(uid) || uid_is_dynamic(uid) || uid == UID_NOBODY) + return 0; +@@ -251,7 +258,8 @@ static int fix_permissions( + const char *filename, + const char *target, + const Context *context, +- uid_t uid) { ++ uid_t uid, ++ bool allow_user) { + + int r; + +@@ -261,7 +269,7 @@ static int fix_permissions( + + /* Ignore errors on these */ + (void) fchmod(fd, 0640); +- (void) fix_acl(fd, uid); ++ (void) fix_acl(fd, uid, allow_user); + (void) fix_xattr(fd, context); + + r = fsync_full(fd); +@@ -331,6 +339,153 @@ static int make_filename(const Context *context, char **ret) { + return 0; + } + ++static int parse_auxv64( ++ const uint64_t *auxv, ++ size_t size_bytes, ++ int *at_secure, ++ uid_t *uid, ++ uid_t *euid, ++ gid_t *gid, ++ gid_t *egid) { ++ ++ assert(auxv || size_bytes == 0); ++ ++ if (size_bytes % (2 * sizeof(uint64_t)) != 0) ++ return log_warning_errno(SYNTHETIC_ERRNO(EIO), "Incomplete auxv structure (%zu bytes).", size_bytes); ++ ++ size_t words = size_bytes / sizeof(uint64_t); ++ ++ /* Note that we set output variables even on error. */ ++ ++ for (size_t i = 0; i + 1 < words; i += 2) ++ switch (auxv[i]) { ++ case AT_SECURE: ++ *at_secure = auxv[i + 1] != 0; ++ break; ++ case AT_UID: ++ *uid = auxv[i + 1]; ++ break; ++ case AT_EUID: ++ *euid = auxv[i + 1]; ++ break; ++ case AT_GID: ++ *gid = auxv[i + 1]; ++ break; ++ case AT_EGID: ++ *egid = auxv[i + 1]; ++ break; ++ case AT_NULL: ++ if (auxv[i + 1] != 0) ++ goto error; ++ return 0; ++ } ++ error: ++ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), ++ "AT_NULL terminator not found, cannot parse auxv structure."); ++} ++ ++static int parse_auxv32( ++ const uint32_t *auxv, ++ size_t size_bytes, ++ int *at_secure, ++ uid_t *uid, ++ uid_t *euid, ++ gid_t *gid, ++ gid_t *egid) { ++ ++ assert(auxv || size_bytes == 0); ++ ++ size_t words = size_bytes / sizeof(uint32_t); ++ ++ if (size_bytes % (2 * sizeof(uint32_t)) != 0) ++ return log_warning_errno(SYNTHETIC_ERRNO(EIO), "Incomplete auxv structure (%zu bytes).", size_bytes); ++ ++ /* Note that we set output variables even on error. */ ++ ++ for (size_t i = 0; i + 1 < words; i += 2) ++ switch (auxv[i]) { ++ case AT_SECURE: ++ *at_secure = auxv[i + 1] != 0; ++ break; ++ case AT_UID: ++ *uid = auxv[i + 1]; ++ break; ++ case AT_EUID: ++ *euid = auxv[i + 1]; ++ break; ++ case AT_GID: ++ *gid = auxv[i + 1]; ++ break; ++ case AT_EGID: ++ *egid = auxv[i + 1]; ++ break; ++ case AT_NULL: ++ if (auxv[i + 1] != 0) ++ goto error; ++ return 0; ++ } ++ error: ++ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), ++ "AT_NULL terminator not found, cannot parse auxv structure."); ++} ++ ++static int grant_user_access(int core_fd, const Context *context) { ++ int at_secure = -1; ++ uid_t uid = UID_INVALID, euid = UID_INVALID; ++ uid_t gid = GID_INVALID, egid = GID_INVALID; ++ int r; ++ ++ assert(core_fd >= 0); ++ assert(context); ++ ++ if (!context->meta[META_PROC_AUXV]) ++ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), "No auxv data, not adjusting permissions."); ++ ++ uint8_t elf[EI_NIDENT]; ++ errno = 0; ++ if (pread(core_fd, &elf, sizeof(elf), 0) != sizeof(elf)) ++ return log_warning_errno(errno_or_else(EIO), ++ "Failed to pread from coredump fd: %s", STRERROR_OR_EOF(errno)); ++ ++ if (elf[EI_MAG0] != ELFMAG0 || ++ elf[EI_MAG1] != ELFMAG1 || ++ elf[EI_MAG2] != ELFMAG2 || ++ elf[EI_MAG3] != ELFMAG3 || ++ elf[EI_VERSION] != EV_CURRENT) ++ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), ++ "Core file does not have ELF header, not adjusting permissions."); ++ if (!IN_SET(elf[EI_CLASS], ELFCLASS32, ELFCLASS64) || ++ !IN_SET(elf[EI_DATA], ELFDATA2LSB, ELFDATA2MSB)) ++ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), ++ "Core file has strange ELF class, not adjusting permissions."); ++ ++ if ((elf[EI_DATA] == ELFDATA2LSB) != (__BYTE_ORDER == __LITTLE_ENDIAN)) ++ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), ++ "Core file has non-native endianness, not adjusting permissions."); ++ ++ if (elf[EI_CLASS] == ELFCLASS64) ++ r = parse_auxv64((const uint64_t*) context->meta[META_PROC_AUXV], ++ context->meta_size[META_PROC_AUXV], ++ &at_secure, &uid, &euid, &gid, &egid); ++ else ++ r = parse_auxv32((const uint32_t*) context->meta[META_PROC_AUXV], ++ context->meta_size[META_PROC_AUXV], ++ &at_secure, &uid, &euid, &gid, &egid); ++ if (r < 0) ++ return r; ++ ++ /* We allow access if we got all the data and at_secure is not set and ++ * the uid/gid matches euid/egid. */ ++ bool ret = ++ at_secure == 0 && ++ uid != UID_INVALID && euid != UID_INVALID && uid == euid && ++ gid != GID_INVALID && egid != GID_INVALID && gid == egid; ++ log_debug("Will %s access (uid="UID_FMT " euid="UID_FMT " gid="GID_FMT " egid="GID_FMT " at_secure=%s)", ++ ret ? "permit" : "restrict", ++ uid, euid, gid, egid, yes_no(at_secure)); ++ return ret; ++} ++ + static int save_external_coredump( + const Context *context, + int input_fd, +@@ -453,6 +608,8 @@ static int save_external_coredump( + context->meta[META_ARGV_PID], context->meta[META_COMM]); + truncated = r == 1; + ++ bool allow_user = grant_user_access(fd, context) > 0; ++ + #if HAVE_COMPRESSION + if (arg_compress) { + _cleanup_(unlink_and_freep) char *tmp_compressed = NULL; +@@ -490,7 +647,7 @@ static int save_external_coredump( + uncompressed_size += partial_uncompressed_size; + } + +- r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, context, uid); ++ r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, context, uid, allow_user); + if (r < 0) + return r; + +@@ -517,7 +674,7 @@ static int save_external_coredump( + "SIZE_LIMIT=%"PRIu64, max_size, + "MESSAGE_ID=" SD_MESSAGE_TRUNCATED_CORE_STR); + +- r = fix_permissions(fd, tmp, fn, context, uid); ++ r = fix_permissions(fd, tmp, fn, context, uid, allow_user); + if (r < 0) + return log_error_errno(r, "Failed to fix permissions and finalize coredump %s into %s: %m", coredump_tmpfile_name(tmp), fn); + +@@ -765,7 +922,7 @@ static int change_uid_gid(const Context *context) { + } + + static int submit_coredump( +- Context *context, ++ const Context *context, + struct iovec_wrapper *iovw, + int input_fd) { + +@@ -944,16 +1101,15 @@ static int save_context(Context *context, const struct iovec_wrapper *iovw) { + struct iovec *iovec = iovw->iovec + n; + + for (size_t i = 0; i < ELEMENTSOF(meta_field_names); i++) { +- char *p; +- + /* Note that these strings are NUL terminated, because we made sure that a + * trailing NUL byte is in the buffer, though not included in the iov_len + * count (see process_socket() and gather_pid_metadata_*()) */ + assert(((char*) iovec->iov_base)[iovec->iov_len] == 0); + +- p = startswith(iovec->iov_base, meta_field_names[i]); ++ const char *p = startswith(iovec->iov_base, meta_field_names[i]); + if (p) { + context->meta[i] = p; ++ context->meta_size[i] = iovec->iov_len - strlen(meta_field_names[i]); + break; + } + } +@@ -1190,6 +1346,7 @@ static int gather_pid_metadata(struct iovec_wrapper *iovw, Context *context) { + uid_t owner_uid; + pid_t pid; + char *t; ++ size_t size; + const char *p; + int r; + +@@ -1254,13 +1411,26 @@ static int gather_pid_metadata(struct iovec_wrapper *iovw, Context *context) { + (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_LIMITS=", t); + + p = procfs_file_alloca(pid, "cgroup"); +- if (read_full_virtual_file(p, &t, NULL) >=0) ++ if (read_full_virtual_file(p, &t, NULL) >= 0) + (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_CGROUP=", t); + + p = procfs_file_alloca(pid, "mountinfo"); +- if (read_full_virtual_file(p, &t, NULL) >=0) ++ if (read_full_virtual_file(p, &t, NULL) >= 0) + (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_MOUNTINFO=", t); + ++ /* We attach /proc/auxv here. ELF coredumps also contain a note for this (NT_AUXV), see elf(5). */ ++ p = procfs_file_alloca(pid, "auxv"); ++ if (read_full_virtual_file(p, &t, &size) >= 0) { ++ char *buf = malloc(strlen("COREDUMP_PROC_AUXV=") + size + 1); ++ if (buf) { ++ /* Add a dummy terminator to make save_context() happy. */ ++ *((uint8_t*) mempcpy(stpcpy(buf, "COREDUMP_PROC_AUXV="), t, size)) = '\0'; ++ (void) iovw_consume(iovw, buf, size + strlen("COREDUMP_PROC_AUXV=")); ++ } ++ ++ free(t); ++ } ++ + if (get_process_cwd(pid, &t) >= 0) + (void) iovw_put_string_field_free(iovw, "COREDUMP_CWD=", t); + diff --git a/SOURCES/0160-Revert-basic-add-fallback-in-chase_symlinks_and_open.patch b/SOURCES/0160-Revert-basic-add-fallback-in-chase_symlinks_and_open.patch new file mode 100644 index 0000000..7713be9 --- /dev/null +++ b/SOURCES/0160-Revert-basic-add-fallback-in-chase_symlinks_and_open.patch @@ -0,0 +1,43 @@ +From eb9135c9499f6be627323929df48bc9efc93926a Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Thu, 8 Dec 2022 10:56:42 +0100 +Subject: [PATCH] Revert "basic: add fallback in chase_symlinks_and_opendir() + for cases when /proc is not mounted" + +This reverts commit 47c0c5108b39d01283ba040c41d556b160d45a55. + +Related: #2138081 +--- + src/basic/chase-symlinks.c | 14 +++----------- + 1 file changed, 3 insertions(+), 11 deletions(-) + +diff --git a/src/basic/chase-symlinks.c b/src/basic/chase-symlinks.c +index c09aab389e..afab54f067 100644 +--- a/src/basic/chase-symlinks.c ++++ b/src/basic/chase-symlinks.c +@@ -466,22 +466,14 @@ int chase_symlinks_and_opendir( + return 0; + } + +- r = chase_symlinks(path, root, chase_flags, &p, &path_fd); ++ r = chase_symlinks(path, root, chase_flags, ret_path ? &p : NULL, &path_fd); + if (r < 0) + return r; + assert(path_fd >= 0); + + d = opendir(FORMAT_PROC_FD_PATH(path_fd)); +- if (!d) { +- /* Hmm, we have the fd already but we got ENOENT, most likely /proc is not mounted. +- * Let's try opendir() again on the full path. */ +- if (errno == ENOENT) { +- d = opendir(p); +- if (!d) +- return -errno; +- } else +- return -errno; +- } ++ if (!d) ++ return -errno; + + if (ret_path) + *ret_path = TAKE_PTR(p); diff --git a/SOURCES/0160-shared-install-reuse-the-standard-symlink-verificati.patch b/SOURCES/0160-shared-install-reuse-the-standard-symlink-verificati.patch deleted file mode 100644 index 3ba922e..0000000 --- a/SOURCES/0160-shared-install-reuse-the-standard-symlink-verificati.patch +++ /dev/null @@ -1,298 +0,0 @@ -From 5ec751ab9a06dadc62b30dc07e9dd7a41f8da403 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 4 Mar 2022 18:47:31 +0100 -Subject: [PATCH] shared/install: reuse the standard symlink verification - subroutine -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We save a few lines, but the important thing is that we don't have two -different implementations with slightly different rules used for enablement -and loading. Fixes #22000. - -Tested with: -- the report in #22000, it now says: -$ SYSTEMD_LOG_LEVEL=debug systemctl --root=/ enable test.service -Suspicious symlink /etc/systemd/system/test.service→/etc/systemd/system/myown.d/test.service, treating as alias. -unit_file_resolve_symlink: self-alias: /etc/systemd/system/test.service → test.service, ignoring. -running_in_chroot(): Permission denied -Suspicious symlink /etc/systemd/system/test.service→/etc/systemd/system/myown.d/test.service, treating as alias. -unit_file_resolve_symlink: self-alias: /etc/systemd/system/test.service → test.service, ignoring. -Failed to enable unit, refusing to operate on linked unit file test.service - -- a symlink to /dev/null: -... -unit_file_resolve_symlink: linked unit file: /etc/systemd/system/test3.service → /dev/null -Failed to enable unit, unit /etc/systemd/system/test3.service is masked. - -- the same from the host: -... -unit_file_resolve_symlink: linked unit file: /var/lib/machines/rawhide/etc/systemd/system/test3.service → /var/lib/machines/rawhide/dev/null -Failed to enable unit, unit /var/lib/machines/rawhide/etc/systemd/system/test3.service is masked. - -- through the manager: -$ sudo systemctl enable test.service -Failed to enable unit: Refusing to operate on alias name or linked unit file: test.service -$ sudo systemctl enable test3.service -Failed to enable unit: Unit file /etc/systemd/system/test3.service is masked. - -As seen in the first example, the warning is repeated. This is because we call -the lookup logic twice: first for sysv-compat, and then again for real. I think -that since this is only for broken setups, and when sysv-compat is enabled, and -in an infrequent manual operation, at debug level, this is OK. - -(cherry picked from commit 047d37dc3d376d912275c14d217f7a0dda9a5f0e) - -Related: #2082131 ---- - src/basic/unit-file.c | 70 +++++++++++++++++++++++++++++++---------- - src/basic/unit-file.h | 10 ++++++ - src/shared/install.c | 72 +++++++------------------------------------ - 3 files changed, 75 insertions(+), 77 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 25abce932a..f7a10b22c6 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -260,27 +260,50 @@ static int directory_name_is_valid(const char *name) { - return false; - } - --static int unit_file_resolve_symlink( -+int unit_file_resolve_symlink( - const char *root_dir, - char **search_path, - const char *dir, - int dirfd, - const char *filename, -+ bool resolve_destination_target, - char **ret_destination) { - -- _cleanup_free_ char *target = NULL, *simplified = NULL, *dst = NULL; -+ _cleanup_free_ char *target = NULL, *simplified = NULL, *dst = NULL, *_dir = NULL, *_filename = NULL; - int r; - -- assert(dir); -- assert(dirfd >= 0); -+ /* This can be called with either dir+dirfd valid and filename just a name, -+ * or !dir && dirfd==AT_FDCWD, and filename being a full path. -+ * -+ * If resolve_destination_target is true, an absolute path will be returned. -+ * If not, an absolute path is returned for linked unit files, and a relative -+ * path otherwise. */ -+ - assert(filename); - assert(ret_destination); -+ assert(dir || path_is_absolute(filename)); -+ assert(dirfd >= 0 || dirfd == AT_FDCWD); - - r = readlinkat_malloc(dirfd, filename, &target); - if (r < 0) - return log_warning_errno(r, "Failed to read symlink %s%s%s: %m", - dir, dir ? "/" : "", filename); - -+ if (!dir) { -+ r = path_extract_directory(filename, &_dir); -+ if (r < 0) -+ return r; -+ dir = _dir; -+ -+ r = path_extract_filename(filename, &_filename); -+ if (r < 0) -+ return r; -+ if (r == O_DIRECTORY) -+ return log_warning_errno(SYNTHETIC_ERRNO(EISDIR), -+ "Unexpected path to a directory \"%s\", refusing.", filename); -+ filename = _filename; -+ } -+ - bool is_abs = path_is_absolute(target); - if (root_dir || !is_abs) { - char *target_abs = path_join(is_abs ? root_dir : dir, target); -@@ -296,24 +319,36 @@ static int unit_file_resolve_symlink( - return log_warning_errno(r, "Failed to resolve symlink %s/%s pointing to %s: %m", - dir, filename, target); - -+ assert(path_is_absolute(simplified)); -+ - /* Check if the symlink goes outside of our search path. -- * If yes, it's a linked unit file or mask, and we don't care about the target name. -- * Let's just store the link source directly. -- * If not, let's verify that it's a good symlink. */ -+ * If yes, it's a linked unit file or mask, and we don't care about the target name -+ * when loading units, and we return the link *source* (resolve_destination_target == false); -+ * When this is called for installation purposes, we want the final destination, -+ * so we return the *target*. -+ * -+ * Otherwise, let's verify that it's a good alias. -+ */ - const char *tail = path_startswith_strv(simplified, search_path); - if (!tail) { - log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified); - -- dst = path_join(dir, filename); -- if (!dst) -- return log_oom(); -+ if (resolve_destination_target) -+ dst = TAKE_PTR(simplified); -+ else { -+ dst = path_join(dir, filename); -+ if (!dst) -+ return log_oom(); -+ } - - } else { -- r = path_extract_filename(simplified, &dst); -+ _cleanup_free_ char *target_name = NULL; -+ -+ r = path_extract_filename(simplified, &target_name); - if (r < 0) - return r; - -- bool self_alias = streq(dst, filename); -+ bool self_alias = streq(target_name, filename); - - if (is_path(tail)) - log_full(self_alias ? LOG_DEBUG : LOG_WARNING, -@@ -324,13 +359,15 @@ static int unit_file_resolve_symlink( - if (r < 0) - return r; - -- if (self_alias) -- /* A self-alias that has no effect */ -+ if (self_alias && !resolve_destination_target) -+ /* A self-alias that has no effect when loading, let's just ignore it. */ - return log_debug_errno(SYNTHETIC_ERRNO(ELOOP), - "Unit file self-alias: %s/%s → %s, ignoring.", -- dir, filename, dst); -+ dir, filename, target_name); -+ -+ log_debug("Unit file alias: %s/%s → %s", dir, filename, target_name); - -- log_debug("Unit file alias: %s/%s → %s", dir, filename, dst); -+ dst = resolve_destination_target ? TAKE_PTR(simplified) : TAKE_PTR(target_name); - } - - *ret_destination = TAKE_PTR(dst); -@@ -475,6 +512,7 @@ int unit_file_build_name_map( - - r = unit_file_resolve_symlink(lp->root_dir, lp->search_path, - *dir, dirfd(d), de->d_name, -+ /* resolve_destination_target= */ false, - &dst); - if (r == -ENOMEM) - return r; -diff --git a/src/basic/unit-file.h b/src/basic/unit-file.h -index cc731a9e06..e29e878cfd 100644 ---- a/src/basic/unit-file.h -+++ b/src/basic/unit-file.h -@@ -44,6 +44,16 @@ int unit_symlink_name_compatible(const char *symlink, const char *target, bool i - int unit_validate_alias_symlink_and_warn(const char *filename, const char *target); - - bool lookup_paths_timestamp_hash_same(const LookupPaths *lp, uint64_t timestamp_hash, uint64_t *ret_new); -+ -+int unit_file_resolve_symlink( -+ const char *root_dir, -+ char **search_path, -+ const char *dir, -+ int dirfd, -+ const char *filename, -+ bool resolve_destination_target, -+ char **ret_destination); -+ - int unit_file_build_name_map( - const LookupPaths *lp, - uint64_t *cache_timestamp_hash, -diff --git a/src/shared/install.c b/src/shared/install.c -index 79e5109ce1..e07ca31797 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1338,76 +1338,26 @@ static int unit_file_load_or_readlink( - const char *path, - const LookupPaths *lp, - SearchFlags flags) { -- -- _cleanup_free_ char *resolved = NULL; - int r; - - r = unit_file_load(c, info, path, lp->root_dir, flags); - if (r != -ELOOP || (flags & SEARCH_DROPIN)) - return r; - -- r = chase_symlinks(path, lp->root_dir, CHASE_WARN | CHASE_NONEXISTENT, &resolved, NULL); -- if (r >= 0 && -- lp->root_dir && -- path_equal_ptr(path_startswith(resolved, lp->root_dir), "dev/null")) -- /* When looking under root_dir, we can't expect /dev/ to be mounted, -- * so let's see if the path is a (possibly dangling) symlink to /dev/null. */ -- info->type = UNIT_FILE_TYPE_MASKED; -- -- else if (r > 0 && null_or_empty_path(resolved) > 0) -+ /* This is a symlink, let's read and verify it. */ -+ r = unit_file_resolve_symlink(lp->root_dir, lp->search_path, -+ NULL, AT_FDCWD, path, -+ true, &info->symlink_target); -+ if (r < 0) -+ return r; - -+ r = null_or_empty_path_with_root(info->symlink_target, lp->root_dir); -+ if (r < 0 && r != -ENOENT) -+ return log_debug_errno(r, "Failed to stat %s: %m", info->symlink_target); -+ if (r > 0) - info->type = UNIT_FILE_TYPE_MASKED; -- -- else { -- _cleanup_free_ char *target = NULL; -- const char *bn; -- UnitType a, b; -- -- /* This is a symlink, let's read it. We read the link again, because last time -- * we followed the link until resolution, and here we need to do one step. */ -- -- r = readlink_malloc(path, &target); -- if (r < 0) -- return r; -- -- bn = basename(target); -- -- if (unit_name_is_valid(info->name, UNIT_NAME_PLAIN)) { -- -- if (!unit_name_is_valid(bn, UNIT_NAME_PLAIN)) -- return -EINVAL; -- -- } else if (unit_name_is_valid(info->name, UNIT_NAME_INSTANCE)) { -- -- if (!unit_name_is_valid(bn, UNIT_NAME_INSTANCE|UNIT_NAME_TEMPLATE)) -- return -EINVAL; -- -- } else if (unit_name_is_valid(info->name, UNIT_NAME_TEMPLATE)) { -- -- if (!unit_name_is_valid(bn, UNIT_NAME_TEMPLATE)) -- return -EINVAL; -- } else -- return -EINVAL; -- -- /* Enforce that the symlink destination does not -- * change the unit file type. */ -- -- a = unit_name_to_type(info->name); -- b = unit_name_to_type(bn); -- if (a < 0 || b < 0 || a != b) -- return -EINVAL; -- -- if (path_is_absolute(target)) -- /* This is an absolute path, prefix the root so that we always deal with fully qualified paths */ -- info->symlink_target = path_join(lp->root_dir, target); -- else -- /* This is a relative path, take it relative to the dir the symlink is located in. */ -- info->symlink_target = file_in_same_dir(path, target); -- if (!info->symlink_target) -- return -ENOMEM; -- -+ else - info->type = UNIT_FILE_TYPE_SYMLINK; -- } - - return 0; - } diff --git a/SOURCES/0161-glyph-util-add-warning-sign-special-glyph.patch b/SOURCES/0161-glyph-util-add-warning-sign-special-glyph.patch new file mode 100644 index 0000000..c46d475 --- /dev/null +++ b/SOURCES/0161-glyph-util-add-warning-sign-special-glyph.patch @@ -0,0 +1,72 @@ +From 008cc31066925ca8ef69ad6a03d20bb4ed299a41 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 2 Dec 2022 23:50:48 +0100 +Subject: [PATCH] glyph-util: add warning sign special glyph + +(cherry picked from commit 03c16b9784151275e71db3f9a25dc42206f1b5d3) + +Related: #2138081 +--- + src/basic/glyph-util.c | 4 +++- + src/basic/glyph-util.h | 1 + + src/test/test-locale-util.c | 3 ++- + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/basic/glyph-util.c b/src/basic/glyph-util.c +index 67f2270daf..de1224f04f 100644 +--- a/src/basic/glyph-util.c ++++ b/src/basic/glyph-util.c +@@ -71,6 +71,7 @@ const char *special_glyph(SpecialGlyph code) { + [SPECIAL_GLYPH_RECYCLING] = "~", + [SPECIAL_GLYPH_DOWNLOAD] = "\\", + [SPECIAL_GLYPH_SPARKLES] = "*", ++ [SPECIAL_GLYPH_WARNING_SIGN] = "!", + }, + + /* UTF-8 */ +@@ -124,10 +125,11 @@ const char *special_glyph(SpecialGlyph code) { + /* This emoji is a single character cell glyph in Unicode, and two in ASCII */ + [SPECIAL_GLYPH_TOUCH] = u8"👆", /* actually called: BACKHAND INDEX POINTING UP */ + +- /* These three emojis are single character cell glyphs in Unicode and also in ASCII. */ ++ /* These four emojis are single character cell glyphs in Unicode and also in ASCII. */ + [SPECIAL_GLYPH_RECYCLING] = u8"♻️", /* actually called: UNIVERSAL RECYCLNG SYMBOL */ + [SPECIAL_GLYPH_DOWNLOAD] = u8"⤵️", /* actually called: RIGHT ARROW CURVING DOWN */ + [SPECIAL_GLYPH_SPARKLES] = u8"✨", ++ [SPECIAL_GLYPH_WARNING_SIGN] = u8"⚠️", + }, + }; + +diff --git a/src/basic/glyph-util.h b/src/basic/glyph-util.h +index 621d7a85b7..b64639622e 100644 +--- a/src/basic/glyph-util.h ++++ b/src/basic/glyph-util.h +@@ -44,6 +44,7 @@ typedef enum SpecialGlyph { + SPECIAL_GLYPH_RECYCLING, + SPECIAL_GLYPH_DOWNLOAD, + SPECIAL_GLYPH_SPARKLES, ++ SPECIAL_GLYPH_WARNING_SIGN, + _SPECIAL_GLYPH_MAX, + _SPECIAL_GLYPH_INVALID = -EINVAL, + } SpecialGlyph; +diff --git a/src/test/test-locale-util.c b/src/test/test-locale-util.c +index 9f50c6227f..f38100401c 100644 +--- a/src/test/test-locale-util.c ++++ b/src/test/test-locale-util.c +@@ -83,7 +83,7 @@ TEST(keymaps) { + + #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", special_glyph(x)) + TEST(dump_special_glyphs) { +- assert_cc(SPECIAL_GLYPH_SPARKLES + 1 == _SPECIAL_GLYPH_MAX); ++ assert_cc(SPECIAL_GLYPH_WARNING_SIGN + 1 == _SPECIAL_GLYPH_MAX); + + log_info("is_locale_utf8: %s", yes_no(is_locale_utf8())); + +@@ -120,6 +120,7 @@ TEST(dump_special_glyphs) { + dump_glyph(SPECIAL_GLYPH_RECYCLING); + dump_glyph(SPECIAL_GLYPH_DOWNLOAD); + dump_glyph(SPECIAL_GLYPH_SPARKLES); ++ dump_glyph(SPECIAL_GLYPH_WARNING_SIGN); + } + + DEFINE_TEST_MAIN(LOG_INFO); diff --git a/SOURCES/0161-shared-install-add-a-bit-more-quoting.patch b/SOURCES/0161-shared-install-add-a-bit-more-quoting.patch deleted file mode 100644 index 290f6b1..0000000 --- a/SOURCES/0161-shared-install-add-a-bit-more-quoting.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 348699605248eb30743c0aac4f2ecbff5dd986ad Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 3 Mar 2022 11:09:25 +0100 -Subject: [PATCH] shared/install: add a bit more quoting - -When we are printing a valid unit name, quoting isn't necessary, because -unit names cannot contain whitespace or other confusing characters. In particular -if the unit name is prefixed by " unit " or something else that clearly -identifies the string as a unit name, quoting would just add unnecessary -noise. But when we're printing paths or invalid names, it's better to add -quotes for clarity. - -(cherry picked from commit e75a26d0457d67a3146ff2d90af07db22213da3c) - -Related: #2082131 ---- - src/shared/install.c | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index e07ca31797..cbfe96b1e8 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -338,7 +338,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - break; - case UNIT_FILE_UNLINK: - if (!quiet) -- log_info("Removed %s.", changes[i].path); -+ log_info("Removed \"%s\".", changes[i].path); - break; - case UNIT_FILE_IS_MASKED: - if (!quiet) -@@ -361,11 +361,11 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - case -EEXIST: - if (changes[i].source) - log_error_errno(changes[i].type_or_errno, -- "Failed to %s unit, file %s already exists and is a symlink to %s.", -+ "Failed to %s unit, file \"%s\" already exists and is a symlink to \"%s\".", - verb, changes[i].path, changes[i].source); - else - log_error_errno(changes[i].type_or_errno, -- "Failed to %s unit, file %s already exists.", -+ "Failed to %s unit, file \"%s\" already exists.", - verb, changes[i].path); - logged = true; - break; -@@ -391,7 +391,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - logged = true; - break; - case -ELOOP: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, refusing to operate on linked unit file %s", -+ log_error_errno(changes[i].type_or_errno, "Failed to %s unit, refusing to operate on linked unit file %s.", - verb, changes[i].path); - logged = true; - break; -@@ -403,7 +403,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - - default: - assert(changes[i].type_or_errno < 0); -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file %s: %m.", -+ log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file \"%s\": %m", - verb, changes[i].path); - logged = true; - } -@@ -840,7 +840,7 @@ static int find_symlinks( - - d = opendir(path); - if (!d) { -- log_error_errno(errno, "Failed to open directory '%s' while scanning for symlinks, ignoring: %m", path); -+ log_error_errno(errno, "Failed to open directory \"%s\" while scanning for symlinks, ignoring: %m", path); - continue; - } - -@@ -848,7 +848,7 @@ static int find_symlinks( - if (r > 0) - return 1; - else if (r < 0) -- log_debug_errno(r, "Failed to lookup for symlinks in '%s': %m", path); -+ log_debug_errno(r, "Failed to look up symlinks in \"%s\": %m", path); - } - - /* We didn't find any suitable symlinks in .wants or .requires directories, let's look for linked unit files in this directory. */ -@@ -1321,7 +1321,7 @@ static int unit_file_load( - 0, info, - NULL); - if (r < 0) -- return log_debug_errno(r, "Failed to parse %s: %m", info->name); -+ return log_debug_errno(r, "Failed to parse \"%s\": %m", info->name); - - if ((flags & SEARCH_DROPIN) == 0) - info->type = UNIT_FILE_TYPE_REGULAR; -@@ -1481,7 +1481,7 @@ static int unit_file_search( - STRV_FOREACH(p, files) { - r = unit_file_load_or_readlink(c, info, *p, lp, flags | SEARCH_DROPIN); - if (r < 0) -- return log_debug_errno(r, "Failed to load conf file %s: %m", *p); -+ return log_debug_errno(r, "Failed to load conf file \"%s\": %m", *p); - } - - return result; -@@ -1726,7 +1726,7 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - return log_error_errno(r, "Failed to verify alias validity: %m"); - if (r == 0) - return log_warning_errno(SYNTHETIC_ERRNO(EXDEV), -- "Invalid unit %s symlink %s.", -+ "Invalid unit \"%s\" symlink \"%s\".", - i->name, dst); - - } else { -@@ -1737,7 +1737,7 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - - UnitNameFlags type = unit_name_to_instance(i->name, &inst); - if (type < 0) -- return log_error_errno(type, "Failed to extract instance name from %s: %m", i->name); -+ return log_error_errno(type, "Failed to extract instance name from \"%s\": %m", i->name); - - if (type == UNIT_NAME_INSTANCE) { - r = unit_name_replace_instance(dst, inst, &dst_updated); diff --git a/SOURCES/0162-chase-symlink-when-converting-directory-O_PATH-fd-to.patch b/SOURCES/0162-chase-symlink-when-converting-directory-O_PATH-fd-to.patch new file mode 100644 index 0000000..3ba6254 --- /dev/null +++ b/SOURCES/0162-chase-symlink-when-converting-directory-O_PATH-fd-to.patch @@ -0,0 +1,27 @@ +From 2bd9f97275480842c99117123daab69cbb8f45f4 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 2 Dec 2022 23:50:57 +0100 +Subject: [PATCH] chase-symlink: when converting directory O_PATH fd to real + fd, don't bother with /proc/ + +Replaces: #25581 +(cherry picked from commit 2075b6dd394e09a0f203b9cc7e3253908397f933) + +Related: #2138081 +--- + src/basic/chase-symlinks.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/basic/chase-symlinks.c b/src/basic/chase-symlinks.c +index afab54f067..ac55311f4d 100644 +--- a/src/basic/chase-symlinks.c ++++ b/src/basic/chase-symlinks.c +@@ -471,7 +471,7 @@ int chase_symlinks_and_opendir( + return r; + assert(path_fd >= 0); + +- d = opendir(FORMAT_PROC_FD_PATH(path_fd)); ++ d = xopendirat(path_fd, ".", O_NOFOLLOW); + if (!d) + return -errno; + diff --git a/SOURCES/0162-test-add-test-for-systemctl-link-enable.patch b/SOURCES/0162-test-add-test-for-systemctl-link-enable.patch deleted file mode 100644 index 439eb7c..0000000 --- a/SOURCES/0162-test-add-test-for-systemctl-link-enable.patch +++ /dev/null @@ -1,587 +0,0 @@ -From e7bd636e75a5435b80a1df478e9e637dd2f7b851 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 7 Mar 2022 12:15:42 +0100 -Subject: [PATCH] test: add test for systemctl link & enable - -This test has overlap with test-install-root, but it tests things at a -different level, so I think it's useful to add. It immediately shows various -bugs which will be fixed in later patches. - -(cherry picked from commit 50c5f5a3d907f819fa139e1853f660ad4fd82c55) - -Related: #2082131 ---- - meson.build | 9 +- - test/meson.build | 1 + - test/test-systemctl-enable.sh | 523 ++++++++++++++++++++++++++++++++++ - 3 files changed, 532 insertions(+), 1 deletion(-) - create mode 100644 test/test-systemctl-enable.sh - -diff --git a/meson.build b/meson.build -index fdf02b8110..005af872cf 100644 ---- a/meson.build -+++ b/meson.build -@@ -2371,7 +2371,7 @@ public_programs += executable( - install_rpath : rootlibexecdir, - install : true) - --public_programs += executable( -+exe = executable( - 'systemctl', - systemctl_sources, - include_directories : includes, -@@ -2385,6 +2385,13 @@ public_programs += executable( - install_rpath : rootlibexecdir, - install : true, - install_dir : rootbindir) -+public_programs += exe -+if want_tests != 'false' -+ test('test-systemctl-enable', -+ test_systemctl_enable_sh, -+ # https://github.com/mesonbuild/meson/issues/2681 -+ args : exe.full_path()) -+endif - - if conf.get('ENABLE_PORTABLED') == 1 - dbus_programs += executable( -diff --git a/test/meson.build b/test/meson.build -index c5d8d6917b..c69d8a0204 100644 ---- a/test/meson.build -+++ b/test/meson.build -@@ -88,6 +88,7 @@ endif - - test_fstab_generator_sh = find_program('test-fstab-generator.sh') - test_network_generator_conversion_sh = find_program('test-network-generator-conversion.sh') -+test_systemctl_enable_sh = find_program('test-systemctl-enable.sh') - test_systemd_tmpfiles_py = find_program('test-systemd-tmpfiles.py') - hwdb_test_sh = find_program('hwdb-test.sh') - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -new file mode 100644 -index 0000000000..30ba6532e7 ---- /dev/null -+++ b/test/test-systemctl-enable.sh -@@ -0,0 +1,523 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -ex -+ -+# Silence warning from running_in_chroot_or_offline() -+export SYSTEMD_IGNORE_CHROOT=1 -+ -+systemctl=${1:-systemctl} -+ -+unset root -+cleanup() { -+ [ -n "$root" ] && rm -rf "$root" -+} -+trap cleanup exit -+root=$(mktemp -d --tmpdir systemctl-test.XXXXXX) -+ -+islink() { -+ test -h "$1" || return 1 -+ test "$(readlink "$1")" = "$2" || return 2 -+} -+ -+: ------enablement nonexistent-------------------------------- -+"$systemctl" --root="$root" enable test1.service && { echo "Expected failure" >&2; exit 1; } -+ -+: ------basic enablement-------------------------------------- -+mkdir -p "$root/etc/systemd/system" -+cat >"$root/etc/systemd/system/test1.service" <>"$root/etc/systemd/system/test1.service" <"$root/etc/systemd/system/test2.socket" <"$root/etc/systemd/system/test2.service" <&2; exit 1; } -+test ! -e "$root/etc/systemd/system/link1.path" -+ -+cat >"$root/link1.path" <&2; exit 1; } -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+ -+: -------link bad suffix-------------------------------------- -+cp "$root/link1.path" "$root/subdir/link1.suffix" -+"$systemctl" --root="$root" link '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } -+test ! -e "$root/etc/systemd/system/link1.suffix" -+ -+: -------unlink by unit name---------------------------------- -+"$systemctl" --root="$root" disable 'link1.path' -+test ! -e "$root/etc/systemd/system/link1.path" -+ -+: -------unlink by path--------------------------------------- -+"$systemctl" --root="$root" link '/link1.path' -+test -h "$root/etc/systemd/system/link1.path" -+"$systemctl" --root="$root" disable '/link1.path' -+test ! -e "$root/etc/systemd/system/link1.path" -+ -+: -------unlink by wrong path--------------------------------- -+"$systemctl" --root="$root" link '/link1.path' -+test -h "$root/etc/systemd/system/link1.path" -+"$systemctl" --root="$root" disable '/subdir/link1.path' # we only care about the name -+test ! -e "$root/etc/systemd/system/link1.path" -+ -+ -+: -------link and enable-------------------------------------- -+"$systemctl" --root="$root" enable '/link1.path' -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+ -+: -------enable already linked same path---------------------- -+"$systemctl" --root="$root" enable '/link1.path' -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+ -+: -------enable already linked different path----------------- -+# FIXME -+# "$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } -+# test -h "$root/etc/systemd/system/link1.path" -+# readlink "$root/etc/systemd/system/link1.path" -+# test -h "$root/etc/systemd/system/paths.target.wants/link1.path" -+# readlink "$root/etc/systemd/system/paths.target.wants/link1.path" -+ -+: -------enable bad suffix------------------------------------ -+cp "$root/link1.path" "$root/subdir/link1.suffix" -+"$systemctl" --root="$root" enable '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } -+test ! -e "$root/etc/systemd/system/link1.suffix" -+test ! -e "$root/etc/systemd/system/paths.target.wants/link1.suffix" -+ -+: -------disable by unit name--------------------------------- -+"$systemctl" --root="$root" disable 'link1.path' -+test ! -e "$root/etc/systemd/system/link1.path" -+test ! -e "$root/etc/systemd/system/paths.target.wants/link1.path" -+ -+: -------disable by path-------------------------------------- -+"$systemctl" --root="$root" enable '/link1.path' -+test -h "$root/etc/systemd/system/link1.path" -+test -h "$root/etc/systemd/system/paths.target.wants/link1.path" -+"$systemctl" --root="$root" disable '/link1.path' -+test ! -e "$root/etc/systemd/system/link1.path" -+test ! -e "$root/etc/systemd/system/paths.target.wants/link1.path" -+ -+ -+: -------link then enable------------------------------------- -+"$systemctl" --root="$root" link '/link1.path' -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+test ! -h "$root/etc/systemd/system/paths.target.wants/link1.path" -+ -+"$systemctl" --root="$root" enable 'link1.path' -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+ -+# FIXME -+# "$systemctl" --root="$root" reenable 'link1.path' -+# islink "$root/etc/systemd/system/link1.path" "/link1.path" -+# islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+ -+ -+: -------manual link------------------------------------------ -+cat >"$root/link3.suffix" <&2; exit 1; } -+"$systemctl" --root="$root" enable '/etc/systemd/system/masked.service' && { echo "Expected failure" >&2; exit 1; } -+ -+: -------enable on masked alias------------------------------- -+test -h "$root/etc/systemd/system/masked.service" -+ln -s "masked.service" "$root/etc/systemd/system/masked-alias.service" -+"$systemctl" --root="$root" enable 'masked-alias.service' && { echo "Expected failure" >&2; exit 1; } -+"$systemctl" --root="$root" enable '/etc/systemd/system/masked-alias.service' && { echo "Expected failure" >&2; exit 1; } -+ -+: -------issue 22000: link in subdirectory-------------------- -+mkdir -p "$root/etc/systemd/system/myown.d" -+cat >"$root/etc/systemd/system/link5-also.service" <"$root/etc/systemd/system/myown.d/link5.service" <&2; exit 1; } -+test ! -h "$root/etc/systemd/system/services.target.wants/link5.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/link5-also.service" -+ -+"$systemctl" --root="$root" enable 'link5-also.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/link5.service" -+islink "$root/etc/systemd/system/services.target.wants/link5-also.service" "/etc/systemd/system/link5-also.service" -+ -+: -------template enablement---------------------------------- -+cat >"$root/etc/systemd/system/templ1@.service" <&2; exit 1; } -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+ -+"$systemctl" --root="$root" enable 'templ1@one.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+islink "$root/etc/systemd/system/services.target.wants/templ1@one.service" "/etc/systemd/system/templ1@.service" -+ -+"$systemctl" --root="$root" enable 'templ1@two.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+islink "$root/etc/systemd/system/services.target.wants/templ1@one.service" "/etc/systemd/system/templ1@.service" -+islink "$root/etc/systemd/system/services.target.wants/templ1@two.service" "/etc/systemd/system/templ1@.service" -+ -+"$systemctl" --root="$root" disable 'templ1@one.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service" -+islink "$root/etc/systemd/system/services.target.wants/templ1@two.service" "/etc/systemd/system/templ1@.service" -+ -+"$systemctl" --root="$root" disable 'templ1@two.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" -+ -+: -------template enablement w/ default instance-------------- -+cat >>"$root/etc/systemd/system/templ1@.service" <"$root/etc/systemd/system/link4.service" <"$root/etc/systemd/system/link5.service" <"$root/etc/systemd/system/link5@.path" <"$root/etc/systemd/system/multilink.mount" <"$root/etc/systemd/system/some-some-link6@.socket" <&2; exit 1; } -+ -+check_alias z 'z' && { echo "Expected failure because %z is not known" >&2; exit 1; } -+ -+# FIXME: if there's an invalid Alias=, we shouldn't preach about empty [Install] -+ -+exit 0 # yes, this is needed because the last test above fails -+ -+# TODO: repeat the tests above for presets diff --git a/SOURCES/0163-systemctl-print-a-clear-warning-if-people-invoke-sys.patch b/SOURCES/0163-systemctl-print-a-clear-warning-if-people-invoke-sys.patch new file mode 100644 index 0000000..fa43830 --- /dev/null +++ b/SOURCES/0163-systemctl-print-a-clear-warning-if-people-invoke-sys.patch @@ -0,0 +1,39 @@ +From d98adab06485b0da23294f8a5db4f94b40988e2a Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 2 Dec 2022 23:52:12 +0100 +Subject: [PATCH] systemctl: print a clear warning if people invoke systemctl + without /proc/ + +(cherry picked from commit 0f958c8d4fc13ed1c1af928b2a7d91d31c7576eb) + +Related: #2138081 +--- + src/systemctl/systemctl.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 5858c3f6d3..91954d91e6 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -20,6 +20,7 @@ + #include "rlimit-util.h" + #include "sigbus.h" + #include "signal-util.h" ++#include "stat-util.h" + #include "string-table.h" + #include "systemctl-add-dependency.h" + #include "systemctl-cancel-job.h" +@@ -1146,6 +1147,13 @@ static int run(int argc, char *argv[]) { + if (r <= 0) + goto finish; + ++ if (proc_mounted() == 0) ++ log_warning("%s%s/proc/ is not mounted. This is not a supported mode of operation. Please fix\n" ++ "your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.\n" ++ "Your mileage may vary.", ++ emoji_enabled() ? special_glyph(SPECIAL_GLYPH_WARNING_SIGN) : "", ++ emoji_enabled() ? " " : ""); ++ + if (arg_action != ACTION_SYSTEMCTL && running_in_chroot() > 0) { + if (!arg_quiet) + log_info("Running in chroot, ignoring request."); diff --git a/SOURCES/0163-tests-add-helper-for-creating-tempfiles-with-content.patch b/SOURCES/0163-tests-add-helper-for-creating-tempfiles-with-content.patch deleted file mode 100644 index 50d813b..0000000 --- a/SOURCES/0163-tests-add-helper-for-creating-tempfiles-with-content.patch +++ /dev/null @@ -1,248 +0,0 @@ -From ad50f15e51f4f2ffc4ebbfab10a3e1c5739c9ce6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 7 Mar 2022 15:06:57 +0100 -Subject: [PATCH] tests: add helper for creating tempfiles with content - -I put it in tests because I think we're most likely to use it in tests. -If necessary, it can be moved somewhere else later. - -(cherry picked from commit 367c47c886af7d915e23de8d6aae0a1c135c0350) - -Related: #2082131 ---- - src/shared/tests.c | 19 +++++++++ - src/shared/tests.h | 2 + - src/test/test-env-file.c | 77 +++++++++---------------------------- - src/test/test-socket-util.c | 19 +++------ - 4 files changed, 44 insertions(+), 73 deletions(-) - -diff --git a/src/shared/tests.c b/src/shared/tests.c -index f5d9536411..307f796fe2 100644 ---- a/src/shared/tests.c -+++ b/src/shared/tests.c -@@ -25,6 +25,7 @@ - #include "cgroup-util.h" - #include "env-file.h" - #include "env-util.h" -+#include "fd-util.h" - #include "fs-util.h" - #include "log.h" - #include "namespace-util.h" -@@ -33,6 +34,7 @@ - #include "random-util.h" - #include "strv.h" - #include "tests.h" -+#include "tmpfile-util.h" - - char* setup_fake_runtime_dir(void) { - char t[] = "/tmp/fake-xdg-runtime-XXXXXX", *p; -@@ -133,6 +135,23 @@ int log_tests_skipped_errno(int r, const char *message) { - return EXIT_TEST_SKIP; - } - -+int write_tmpfile(char *pattern, const char *contents) { -+ _cleanup_close_ int fd = -1; -+ -+ assert(pattern); -+ assert(contents); -+ -+ fd = mkostemp_safe(pattern); -+ if (fd < 0) -+ return fd; -+ -+ ssize_t l = strlen(contents); -+ errno = 0; -+ if (write(fd, contents, l) != l) -+ return errno_or_else(EIO); -+ return 0; -+} -+ - bool have_namespaces(void) { - siginfo_t si = {}; - pid_t pid; -diff --git a/src/shared/tests.h b/src/shared/tests.h -index ef6acd368e..ade527590b 100644 ---- a/src/shared/tests.h -+++ b/src/shared/tests.h -@@ -30,6 +30,8 @@ void test_setup_logging(int level); - int log_tests_skipped(const char *message); - int log_tests_skipped_errno(int r, const char *message); - -+int write_tmpfile(char *pattern, const char *contents); -+ - bool have_namespaces(void); - - /* We use the small but non-trivial limit here */ -diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c -index f97206b4d6..886a8e4bc8 100644 ---- a/src/test/test-env-file.c -+++ b/src/test/test-env-file.c -@@ -55,18 +55,11 @@ - - - TEST(load_env_file_1) { -- _cleanup_strv_free_ char **data = NULL; -- int r; -- - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -- -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_1, strlen(env_file_1)) == strlen(env_file_1)); -+ assert_se(write_tmpfile(name, env_file_1) == 0); - -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(streq(data[0], "a=a")); - assert_se(streq(data[1], "b=bc")); - assert_se(streq(data[2], "d=de f")); -@@ -77,50 +70,30 @@ TEST(load_env_file_1) { - } - - TEST(load_env_file_2) { -- _cleanup_strv_free_ char **data = NULL; -- int r; -- - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -+ assert_se(write_tmpfile(name, env_file_2) == 0); - -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_2, strlen(env_file_2)) == strlen(env_file_2)); -- -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(streq(data[0], "a=a")); - assert_se(data[1] == NULL); - } - - TEST(load_env_file_3) { -- _cleanup_strv_free_ char **data = NULL; -- int r; -- - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -- -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_3, strlen(env_file_3)) == strlen(env_file_3)); -+ assert_se(write_tmpfile(name, env_file_3) == 0); - -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(data == NULL); - } - - TEST(load_env_file_4) { -- _cleanup_strv_free_ char **data = NULL; - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -- int r; -- -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_4, strlen(env_file_4)) == strlen(env_file_4)); -+ assert_se(write_tmpfile(name, env_file_4) == 0); - -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(streq(data[0], "HWMON_MODULES=coretemp f71882fg")); - assert_se(streq(data[1], "MODULE_0=coretemp")); - assert_se(streq(data[2], "MODULE_1=f71882fg")); -@@ -128,36 +101,22 @@ TEST(load_env_file_4) { - } - - TEST(load_env_file_5) { -- _cleanup_strv_free_ char **data = NULL; -- int r; -- - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -- -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_5, strlen(env_file_5)) == strlen(env_file_5)); -+ assert_se(write_tmpfile(name, env_file_5) == 0); - -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(streq(data[0], "a=")); - assert_se(streq(data[1], "b=")); - assert_se(data[2] == NULL); - } - - TEST(load_env_file_6) { -- _cleanup_strv_free_ char **data = NULL; -- int r; -- - _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX"; -- _cleanup_close_ int fd; -+ assert_se(write_tmpfile(name, env_file_6) == 0); - -- fd = mkostemp_safe(name); -- assert_se(fd >= 0); -- assert_se(write(fd, env_file_6, strlen(env_file_6)) == strlen(env_file_6)); -- -- r = load_env_file(NULL, name, &data); -- assert_se(r == 0); -+ _cleanup_strv_free_ char **data = NULL; -+ assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(streq(data[0], "a= n t x y '")); - assert_se(streq(data[1], "b=$'")); - assert_se(streq(data[2], "c= \\n\\t\\$\\`\\\\\n")); -diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c -index 9ee651a5fa..3245516f9a 100644 ---- a/src/test/test-socket-util.c -+++ b/src/test/test-socket-util.c -@@ -228,17 +228,12 @@ TEST(passfd_read) { - - if (r == 0) { - /* Child */ -- char tmpfile[] = "/tmp/test-socket-util-passfd-read-XXXXXX"; -- _cleanup_close_ int tmpfd = -1; -- - pair[0] = safe_close(pair[0]); - -- tmpfd = mkostemp_safe(tmpfile); -- assert_se(tmpfd >= 0); -- assert_se(write(tmpfd, file_contents, strlen(file_contents)) == (ssize_t) strlen(file_contents)); -- tmpfd = safe_close(tmpfd); -+ char tmpfile[] = "/tmp/test-socket-util-passfd-read-XXXXXX"; -+ assert_se(write_tmpfile(tmpfile, file_contents) == 0); - -- tmpfd = open(tmpfile, O_RDONLY); -+ _cleanup_close_ int tmpfd = open(tmpfile, O_RDONLY); - assert_se(tmpfd >= 0); - assert_se(unlink(tmpfile) == 0); - -@@ -277,16 +272,12 @@ TEST(passfd_contents_read) { - /* Child */ - struct iovec iov = IOVEC_INIT_STRING(wire_contents); - char tmpfile[] = "/tmp/test-socket-util-passfd-contents-read-XXXXXX"; -- _cleanup_close_ int tmpfd = -1; - - pair[0] = safe_close(pair[0]); - -- tmpfd = mkostemp_safe(tmpfile); -- assert_se(tmpfd >= 0); -- assert_se(write(tmpfd, file_contents, strlen(file_contents)) == (ssize_t) strlen(file_contents)); -- tmpfd = safe_close(tmpfd); -+ assert_se(write_tmpfile(tmpfile, file_contents) == 0); - -- tmpfd = open(tmpfile, O_RDONLY); -+ _cleanup_close_ int tmpfd = open(tmpfile, O_RDONLY); - assert_se(tmpfd >= 0); - assert_se(unlink(tmpfile) == 0); - diff --git a/SOURCES/0164-TEST-65-check-cat-config-operation-in-chroot.patch b/SOURCES/0164-TEST-65-check-cat-config-operation-in-chroot.patch new file mode 100644 index 0000000..52a3d4a --- /dev/null +++ b/SOURCES/0164-TEST-65-check-cat-config-operation-in-chroot.patch @@ -0,0 +1,48 @@ +From 3be1c0fa543f024319a03e89decedc6106cb4e02 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 5 Dec 2022 13:52:28 +0100 +Subject: [PATCH] TEST-65: check cat-config operation in chroot + +This verifies the fix in 2075b6dd394e09a0f203b9cc7e3253908397f933. + +(cherry picked from commit a7eed3eca3d7bc022d870258deb2f738b9527c6d) + +Related: #2138081 +--- + test/test-functions | 1 + + test/units/testsuite-65.sh | 10 ++++++++++ + 2 files changed, 11 insertions(+) + +diff --git a/test/test-functions b/test/test-functions +index 194cd682bb..94e11a686a 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -158,6 +158,7 @@ BASICTOOLS=( + cat + chmod + chown ++ chroot + cmp + cryptsetup + cut +diff --git a/test/units/testsuite-65.sh b/test/units/testsuite-65.sh +index 1f34308b44..ebe1f57b52 100755 +--- a/test/units/testsuite-65.sh ++++ b/test/units/testsuite-65.sh +@@ -139,6 +139,16 @@ systemd-analyze cat-config systemd/system.conf systemd/journald.conf >/dev/null + systemd-analyze cat-config systemd/system.conf foo/bar systemd/journald.conf >/dev/null + systemd-analyze cat-config foo/bar + ++if [[ ! -v ASAN_OPTIONS ]]; then ++ # check that systemd-analyze cat-config paths work in a chroot ++ mkdir -p /tmp/root ++ mount --bind / /tmp/root ++ systemd-analyze cat-config systemd/system-preset >/tmp/out1 ++ chroot /tmp/root systemd-analyze cat-config systemd/system-preset >/tmp/out2 ++ diff /tmp/out{1,2} ++fi ++ ++# verify + mkdir -p /tmp/img/usr/lib/systemd/system/ + mkdir -p /tmp/img/opt/ + diff --git a/SOURCES/0164-man-clarify-the-descriptions-of-aliases-and-linked-u.patch b/SOURCES/0164-man-clarify-the-descriptions-of-aliases-and-linked-u.patch deleted file mode 100644 index a47ca97..0000000 --- a/SOURCES/0164-man-clarify-the-descriptions-of-aliases-and-linked-u.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 2c9079ca0eaa2a1df2a1775c28fa7a49785999df Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 28 Mar 2022 11:46:38 +0200 -Subject: [PATCH] man: clarify the descriptions of aliases and linked unit - files - -This just describes the rules that are implemented by the manager, and this -pull request does not change any of them. - -(cherry picked from commit ecd6c000d3a2e743a0f533d427250714c7593cf7) - -Related: #2082131 ---- - man/systemd.unit.xml | 58 ++++++++++++++++++++++++++++++++------------ - 1 file changed, 43 insertions(+), 15 deletions(-) - -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 2a44b8cfd8..4ba602b5ad 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -140,7 +140,7 @@ - a symlink, so when systemd is asked through D-Bus to load - dbus-org.freedesktop.network1.service, it'll load - systemd-networkd.service. As another example, default.target — -- the default system target started at boot — is commonly symlinked (aliased) to either -+ the default system target started at boot — is commonly aliased to either - multi-user.target or graphical.target to select what is started - by default. Alias names may be used in commands like disable, - start, stop, status, and similar, and in all -@@ -156,8 +156,12 @@ - template instance (e.g. alias@inst.service) may be a symlink to different template - (e.g. template@inst.service). In that case, just this specific instance is aliased, - while other instances of the template (e.g. alias@foo.service, -- alias@bar.service) are not aliased. Those rule preserve the requirement that the -- instance (if any) is always uniquely defined for a given unit and all its aliases. -+ alias@bar.service) are not aliased. Those rules preserve the requirement that the -+ instance (if any) is always uniquely defined for a given unit and all its aliases. The target of alias -+ symlink must point to a valid unit file location, i.e. the symlink target name must match the symlink -+ source name as described, and the destination path must be in one of the unit search paths, see UNIT FILE -+ LOAD PATH section below for more details. Note that the target file may not exist, i.e. the symlink may -+ be dangling. - - Unit files may specify aliases through the Alias= directive in the [Install] - section. When the unit is enabled, symlinks will be created for those names, and removed when the unit is -@@ -177,11 +181,18 @@ - exists for Requires= type dependencies as well, the directory suffix is - .requires/ in this case. This functionality is useful to hook units into the - start-up of other units, without having to modify their unit files. For details about the semantics of -- Wants=, see below. The preferred way to create symlinks in the -- .wants/ or .requires/ directory of a unit file is by embedding -- the dependency in [Install] section of the target unit, and creating the symlink in the file system with -- the enable or preset commands of -- systemctl1. -+ Wants= and Requires=, see below. The preferred way to create -+ symlinks in the .wants/ or .requires/ directories is by -+ specifying the dependency in [Install] section of the target unit, and creating the symlink in the file -+ system with the enable or preset commands of -+ systemctl1. The -+ target can be a normal unit (either plain or a specific instance of a template unit). In case when the -+ source unit is a template, the target can also be a template, in which case the instance will be -+ "propagated" to the target unit to form a valid unit instance. The target of symlinks in -+ .wants/ or .requires/ must thus point to a valid unit file -+ location, i.e. the symlink target name must satisfy the described requirements, and the destination path -+ must be in one of the unit search paths, see UNIT FILE LOAD PATH section below for more details. Note -+ that the target file may not exist, i.e. the symlink may be dangling. - - Along with a unit file foo.service, a "drop-in" directory - foo.service.d/ may exist. All files with the suffix -@@ -503,13 +514,30 @@ - systemd-analyze --user unit-paths - - -- Moreover, additional units might be loaded into systemd from -- directories not on the unit load path by creating a symlink pointing to a -- unit file in the directories. You can use systemctl link -- for this operation. See -- systemctl1 -- for its usage and precaution. -- -+ Moreover, additional units might be loaded into systemd from directories not on the unit load path -+ by creating a symlink pointing to a unit file in the directories. You can use systemctl -+ link for this; see -+ systemctl1. The file -+ system where the linked unit files are located must be accessible when systemd is started (e.g. anything -+ underneath /home/ or /var/ is not allowed, unless those -+ directories are located on the root file system). -+ -+ It is important to distinguish "linked unit files" from "unit file aliases": any symlink where the -+ symlink target is within the unit load path becomes an alias: the source name and -+ the target file name must satisfy specific constraints listed above in the discussion of aliases, but the -+ symlink target doesn't have to exist, and in fact the symlink target path is not used, except to check -+ whether the target is within the unit load path. In constrast, a symlink which goes outside of the unit -+ load path signifies a linked unit file. The symlink is followed when loading the file, but the -+ destination name is otherwise unused (and may even not be a valid unit file name). For example, symlinks -+ /etc/systemd/system/alias1.serviceservice1.service, -+ /etc/systemd/system/alias2.service/usr/lib/systemd/service1.service, -+ /etc/systemd/system/alias3.service/etc/systemd/system/service1.service -+ are all valid aliases and service1.service will have -+ four names, even if the unit file is located at -+ /run/systemd/system/service1.service. In contrast, -+ a symlink /etc/systemd/system/link1.service../link1_service_file -+ means that link1.service is a "linked unit" and the contents of -+ /etc/systemd/link1_service_file provide its configuration. - - - diff --git a/SOURCES/0165-TEST-65-use-v-more.patch b/SOURCES/0165-TEST-65-use-v-more.patch new file mode 100644 index 0000000..5ce2ece --- /dev/null +++ b/SOURCES/0165-TEST-65-use-v-more.patch @@ -0,0 +1,64 @@ +From fa44b8d1e6b0d5e0ef4dfcb01e26e7907068bfa3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 7 Dec 2022 09:52:35 +0100 +Subject: [PATCH] TEST-65: use [[ -v ]] more + +It's a bashism, but we use other bash features anyway, and it's cleaner +and much less verbose. + +(cherry picked from commit 1f9caf28cafbec89b93b8e6b641d387ac5acdd24) + +Related: #2138081 +--- + test/units/testsuite-64.sh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh +index 7673036335..fd1ad7c041 100755 +--- a/test/units/testsuite-64.sh ++++ b/test/units/testsuite-64.sh +@@ -192,7 +192,7 @@ testcase_nvme_subsystem() { + testcase_virtio_scsi_identically_named_partitions() { + local num + +- if [[ -n "${ASAN_OPTIONS:-}" ]] || [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then ++ if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + num=$((4 * 4)) + else + num=$((16 * 8)) +@@ -305,7 +305,7 @@ testcase_simultaneous_events() { + local -a devices symlinks + local -A running + +- if [[ -n "${ASAN_OPTIONS:-}" ]] || [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then ++ if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + num_part=2 + iterations=10 + timeout=240 +@@ -400,7 +400,7 @@ testcase_lvm_basic() { + /dev/disk/by-id/ata-foobar_deadbeeflvm{0..3} + ) + +- if [[ -n "${ASAN_OPTIONS:-}" ]] || [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then ++ if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + timeout=180 + else + timeout=30 +@@ -453,7 +453,7 @@ testcase_lvm_basic() { + helper_check_device_units + + # Same as above, but now with more "stress" +- if [[ -n "${ASAN_OPTIONS:-}" ]] || [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then ++ if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + iterations=10 + else + iterations=50 +@@ -478,7 +478,7 @@ testcase_lvm_basic() { + helper_check_device_units + + # Create & remove LVs in a loop, i.e. with more "stress" +- if [[ -n "${ASAN_OPTIONS:-}" ]]; then ++ if [[ -v ASAN_OPTIONS ]]; then + iterations=8 + partitions=16 + elif [[ "$(systemd-detect-virt -v)" == "qemu" ]]; then diff --git a/SOURCES/0165-basic-add-new-variable-SYSTEMD_OS_RELEASE-to-overrid.patch b/SOURCES/0165-basic-add-new-variable-SYSTEMD_OS_RELEASE-to-overrid.patch deleted file mode 100644 index 83b187f..0000000 --- a/SOURCES/0165-basic-add-new-variable-SYSTEMD_OS_RELEASE-to-overrid.patch +++ /dev/null @@ -1,85 +0,0 @@ -From d424adce45d593d41e52294bd8f32fd33c625498 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 7 Mar 2022 18:54:50 +0100 -Subject: [PATCH] basic: add new variable $SYSTEMD_OS_RELEASE to override - location of os-release - -The test for the variable is added in test-systemctl-enable because there we -can do it almost for free, and the variable is most likely to be used with -'systemctl enable --root' anyway. - -(cherry picked from commit df78419d107662dd49892d76a745c294d7031d66) - -Related: #2082131 ---- - docs/ENVIRONMENT.md | 5 +++++ - src/basic/os-util.c | 16 +++++++++++----- - test/test-systemctl-enable.sh | 12 ++++++++++-- - 3 files changed, 26 insertions(+), 7 deletions(-) - -diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md -index 71d6c55010..5e9548449c 100644 ---- a/docs/ENVIRONMENT.md -+++ b/docs/ENVIRONMENT.md -@@ -43,6 +43,11 @@ All tools: - debugging, in order to test generators and other code against specific kernel - command lines. - -+* `$SYSTEMD_OS_RELEASE` — if set, use this path instead of `/etc/os-release` or -+ `/usr/lib/os-release`. When operating under some root (e.g. `systemctl -+ --root=…`), the path is taken relative to the outside root. Only useful for -+ debugging. -+ - * `$SYSTEMD_FSTAB` — if set, use this path instead of `/etc/fstab`. Only useful - for debugging. - -diff --git a/src/basic/os-util.c b/src/basic/os-util.c -index a6e4d09473..38b2179e48 100644 ---- a/src/basic/os-util.c -+++ b/src/basic/os-util.c -@@ -170,13 +170,19 @@ int open_extension_release(const char *root, const char *extension, char **ret_p - } - } - } else { -- FOREACH_STRING(p, "/etc/os-release", "/usr/lib/os-release") { -- r = chase_symlinks(p, root, CHASE_PREFIX_ROOT, -+ const char *var = secure_getenv("SYSTEMD_OS_RELEASE"); -+ if (var) -+ r = chase_symlinks(var, root, 0, - ret_path ? &q : NULL, - ret_fd ? &fd : NULL); -- if (r != -ENOENT) -- break; -- } -+ else -+ FOREACH_STRING(path, "/etc/os-release", "/usr/lib/os-release") { -+ r = chase_symlinks(path, root, CHASE_PREFIX_ROOT, -+ ret_path ? &q : NULL, -+ ret_fd ? &fd : NULL); -+ if (r != -ENOENT) -+ break; -+ } - } - if (r < 0) - return r; -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 30ba6532e7..769341129c 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -518,6 +518,14 @@ check_alias z 'z' && { echo "Expected failure because %z is not known" >&2; exit - - # FIXME: if there's an invalid Alias=, we shouldn't preach about empty [Install] - --exit 0 # yes, this is needed because the last test above fails -- - # TODO: repeat the tests above for presets -+ -+: -------SYSTEMD_OS_RELEASE relative to root------------------ -+# check that os-release overwriting works as expected with root -+test -e "$root/etc/os-release" -+ -+cat >"$root/etc/os-release2" < +Date: Fri, 18 Nov 2022 15:43:34 +0800 +Subject: [PATCH] systemctl: warn if trying to disable a unit with no install + info + +Trying to disable a unit with no install info is mostly useless, so +adding a warning like we do for enable (with the new dbus method +'DisableUnitFilesWithFlagsAndInstallInfo()'). Note that it would +still find and remove symlinks to the unit in /etc, regardless of +whether it has install info or not, just like before. And if there are +actually files to remove, we suppress the warning. + +Fixes #17689 + +(cherry picked from commit bf1bea43f15b04152a3948702ba1695a0835c2bf) + +Related: #2141979 +--- + man/org.freedesktop.systemd1.xml | 13 ++++++++++++- + src/core/dbus-manager.c | 21 ++++++++++++++++----- + src/shared/install.c | 21 +++++++++++++++++---- + src/systemctl/systemctl-enable.c | 15 ++++++++++----- + 4 files changed, 55 insertions(+), 15 deletions(-) + +diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml +index 5e08b35234..c2f70870c7 100644 +--- a/man/org.freedesktop.systemd1.xml ++++ b/man/org.freedesktop.systemd1.xml +@@ -209,6 +209,10 @@ node /org/freedesktop/systemd1 { + DisableUnitFilesWithFlags(in as files, + in t flags, + out a(sss) changes); ++ DisableUnitFilesWithFlagsAndInstallInfo(in as files, ++ in t flags, ++ out b carries_install_info, ++ out a(sss) changes); + ReenableUnitFiles(in as files, + in b runtime, + in b force, +@@ -916,6 +920,8 @@ node /org/freedesktop/systemd1 { + + + ++ ++ + + + +@@ -1417,7 +1423,7 @@ node /org/freedesktop/systemd1 { + enabled for runtime only (true, /run/), or persistently (false, + /etc/). The second one controls whether symlinks pointing to other units shall be + replaced if necessary. This method returns one boolean and an array of the changes made. The boolean +- signals whether the unit files contained any enablement information (i.e. an [Install]) section. The ++ signals whether the unit files contained any enablement information (i.e. an [Install] section). The + changes array consists of structures with three strings: the type of the change (one of + symlink or unlink), the file name of the symlink and the + destination of the symlink. Note that most of the following calls return a changes list in the same +@@ -1440,6 +1446,11 @@ node /org/freedesktop/systemd1 { + replaced if necessary. SD_SYSTEMD_UNIT_PORTABLE will add or remove the symlinks in + /etc/systemd/system.attached and /run/systemd/system.attached. + ++ DisableUnitFilesWithFlagsAndInstallInfo() is similar to ++ DisableUnitFilesWithFlags() and takes the same arguments, but returns ++ a boolean to indicate whether the unit files contain any enablement information, like ++ EnableUnitFiles(). The changes made are still returned in an array. ++ + Similarly, ReenableUnitFiles() applies the changes to one or more units that + would result from disabling and enabling the unit quickly one after the other in an atomic + fashion. This is useful to apply updated [Install] information contained in unit files. +diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c +index 88f098ec86..2db12721a1 100644 +--- a/src/core/dbus-manager.c ++++ b/src/core/dbus-manager.c +@@ -2425,6 +2425,7 @@ static int method_disable_unit_files_generic( + sd_bus_message *message, + Manager *m, + int (*call)(LookupScope scope, UnitFileFlags flags, const char *root_dir, char *files[], InstallChange **changes, size_t *n_changes), ++ bool carries_install_info, + sd_bus_error *error) { + + _cleanup_strv_free_ char **l = NULL; +@@ -2440,7 +2441,8 @@ static int method_disable_unit_files_generic( + if (r < 0) + return r; + +- if (sd_bus_message_is_method_call(message, NULL, "DisableUnitFilesWithFlags")) { ++ if (sd_bus_message_is_method_call(message, NULL, "DisableUnitFilesWithFlags") || ++ sd_bus_message_is_method_call(message, NULL, "DisableUnitFilesWithFlagsAndInstallInfo")) { + uint64_t raw_flags; + + r = sd_bus_message_read(message, "t", &raw_flags); +@@ -2469,19 +2471,23 @@ static int method_disable_unit_files_generic( + if (r < 0) + return install_error(error, r, changes, n_changes); + +- return reply_install_changes_and_free(m, message, -1, changes, n_changes, error); ++ return reply_install_changes_and_free(m, message, carries_install_info ? r : -1, changes, n_changes, error); + } + + static int method_disable_unit_files_with_flags(sd_bus_message *message, void *userdata, sd_bus_error *error) { +- return method_disable_unit_files_generic(message, userdata, unit_file_disable, error); ++ return method_disable_unit_files_generic(message, userdata, unit_file_disable, /* carries_install_info = */ false, error); ++} ++ ++static int method_disable_unit_files_with_flags_and_install_info(sd_bus_message *message, void *userdata, sd_bus_error *error) { ++ return method_disable_unit_files_generic(message, userdata, unit_file_disable, /* carries_install_info = */ true, error); + } + + static int method_disable_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { +- return method_disable_unit_files_generic(message, userdata, unit_file_disable, error); ++ return method_disable_unit_files_generic(message, userdata, unit_file_disable, /* carries_install_info = */ false, error); + } + + static int method_unmask_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { +- return method_disable_unit_files_generic(message, userdata, unit_file_unmask, error); ++ return method_disable_unit_files_generic(message, userdata, unit_file_unmask, /* carries_install_info = */ false, error); + } + + static int method_revert_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { +@@ -3194,6 +3200,11 @@ const sd_bus_vtable bus_manager_vtable[] = { + SD_BUS_RESULT("a(sss)", changes), + method_disable_unit_files_with_flags, + SD_BUS_VTABLE_UNPRIVILEGED), ++ SD_BUS_METHOD_WITH_ARGS("DisableUnitFilesWithFlagsAndInstallInfo", ++ SD_BUS_ARGS("as", files, "t", flags), ++ SD_BUS_RESULT("b", carries_install_info, "a(sss)", changes), ++ method_disable_unit_files_with_flags_and_install_info, ++ SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD_WITH_ARGS("ReenableUnitFiles", + SD_BUS_ARGS("as", files, "b", runtime, "b", force), + SD_BUS_RESULT("b", carries_install_info, "a(sss)", changes), +diff --git a/src/shared/install.c b/src/shared/install.c +index 834a1c59e3..4b610b20a5 100644 +--- a/src/shared/install.c ++++ b/src/shared/install.c +@@ -2790,25 +2790,38 @@ static int do_unit_file_disable( + + _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; + _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; ++ InstallInfo *info; ++ bool has_install_info = false; + int r; + + STRV_FOREACH(name, names) { + if (!unit_name_is_valid(*name, UNIT_NAME_ANY)) + return install_changes_add(changes, n_changes, -EUCLEAN, *name, NULL); + +- r = install_info_add(&ctx, *name, NULL, lp->root_dir, /* auxiliary= */ false, NULL); ++ r = install_info_add(&ctx, *name, NULL, lp->root_dir, /* auxiliary= */ false, &info); ++ if (r >= 0) ++ r = install_info_traverse(&ctx, lp, info, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); ++ + if (r < 0) +- return r; ++ return install_changes_add(changes, n_changes, r, *name, NULL); ++ ++ /* If we enable multiple units, some with install info and others without, ++ * the "empty [Install] section" warning is not shown. Let's make the behavior ++ * of disable align with that. */ ++ has_install_info = has_install_info || install_info_has_rules(info) || install_info_has_also(info); + } + + r = install_context_mark_for_removal(&ctx, lp, &remove_symlinks_to, config_path, changes, n_changes); ++ if (r >= 0) ++ r = remove_marked_symlinks(remove_symlinks_to, config_path, lp, flags & UNIT_FILE_DRY_RUN, changes, n_changes); ++ + if (r < 0) + return r; + +- return remove_marked_symlinks(remove_symlinks_to, config_path, lp, flags & UNIT_FILE_DRY_RUN, changes, n_changes); ++ /* The warning is shown only if it's a no-op */ ++ return install_changes_have_modification(*changes, *n_changes) || has_install_info; + } + +- + int unit_file_disable( + LookupScope scope, + UnitFileFlags flags, +diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c +index 5be4c0c725..aea66872de 100644 +--- a/src/systemctl/systemctl-enable.c ++++ b/src/systemctl/systemctl-enable.c +@@ -109,9 +109,10 @@ int verb_enable(int argc, char *argv[], void *userdata) { + if (streq(verb, "enable")) { + r = unit_file_enable(arg_scope, flags, arg_root, names, &changes, &n_changes); + carries_install_info = r; +- } else if (streq(verb, "disable")) ++ } else if (streq(verb, "disable")) { + r = unit_file_disable(arg_scope, flags, arg_root, names, &changes, &n_changes); +- else if (streq(verb, "reenable")) { ++ carries_install_info = r; ++ } else if (streq(verb, "reenable")) { + r = unit_file_reenable(arg_scope, flags, arg_root, names, &changes, &n_changes); + carries_install_info = r; + } else if (streq(verb, "link")) +@@ -165,7 +166,8 @@ int verb_enable(int argc, char *argv[], void *userdata) { + method = "EnableUnitFiles"; + expect_carries_install_info = true; + } else if (streq(verb, "disable")) { +- method = "DisableUnitFiles"; ++ method = "DisableUnitFilesWithFlagsAndInstallInfo"; ++ expect_carries_install_info = true; + send_force = false; + } else if (streq(verb, "reenable")) { + method = "ReenableUnitFiles"; +@@ -208,7 +210,10 @@ int verb_enable(int argc, char *argv[], void *userdata) { + } + + if (send_runtime) { +- r = sd_bus_message_append(m, "b", arg_runtime); ++ if (streq(method, "DisableUnitFilesWithFlagsAndInstallInfo")) ++ r = sd_bus_message_append(m, "t", arg_runtime ? UNIT_FILE_RUNTIME : 0); ++ else ++ r = sd_bus_message_append(m, "b", arg_runtime); + if (r < 0) + return bus_log_create_error(r); + } +@@ -245,7 +250,7 @@ int verb_enable(int argc, char *argv[], void *userdata) { + if (carries_install_info == 0 && !ignore_carries_install_info) + log_notice("The unit files have no installation config (WantedBy=, RequiredBy=, Also=,\n" + "Alias= settings in the [Install] section, and DefaultInstance= for template\n" +- "units). This means they are not meant to be enabled using systemctl.\n" ++ "units). This means they are not meant to be enabled or disabled using systemctl.\n" + " \n" /* trick: the space is needed so that the line does not get stripped from output */ + "Possible reasons for having this kind of units are:\n" + "%1$s A unit may be statically enabled by being symlinked from another unit's\n" diff --git a/SOURCES/0166-test-os-util-add-basic-tests-for-os-release-parsing.patch b/SOURCES/0166-test-os-util-add-basic-tests-for-os-release-parsing.patch deleted file mode 100644 index 314fae9..0000000 --- a/SOURCES/0166-test-os-util-add-basic-tests-for-os-release-parsing.patch +++ /dev/null @@ -1,92 +0,0 @@ -From b8ebf512d4afa0f64503a96c2b58b12d9de531fb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 7 Mar 2022 19:22:01 +0100 -Subject: [PATCH] test-os-util: add basic tests for os-release parsing - -(cherry picked from commit 80e72f80bc407753582b421421c13ca50b675027) - -Related: #2082131 ---- - src/test/test-os-util.c | 62 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 62 insertions(+) - -diff --git a/src/test/test-os-util.c b/src/test/test-os-util.c -index eb5466259a..5f82748783 100644 ---- a/src/test/test-os-util.c -+++ b/src/test/test-os-util.c -@@ -2,8 +2,11 @@ - - #include - -+#include "fs-util.h" - #include "log.h" - #include "os-util.h" -+#include "string-util.h" -+#include "strv.h" - #include "tests.h" - - TEST(path_is_os_tree) { -@@ -12,4 +15,63 @@ TEST(path_is_os_tree) { - assert_se(path_is_os_tree("/idontexist") == -ENOENT); - } - -+TEST(parse_os_release) { -+ /* Let's assume that we're running in a valid system, so os-release is available */ -+ _cleanup_free_ char *id = NULL, *id2 = NULL, *name = NULL, *foobar = NULL; -+ assert_se(parse_os_release(NULL, "ID", &id) == 1); -+ log_info("ID: %s", id); -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", "/dev/null", 1) == 0); -+ assert_se(parse_os_release(NULL, "ID", &id2) == 0); -+ log_info("ID: %s", strnull(id2)); -+ -+ _cleanup_(unlink_tempfilep) char tmpfile[] = "/tmp/test-os-util.XXXXXX"; -+ assert_se(write_tmpfile(tmpfile, -+ "ID=the-id \n" -+ "NAME=the-name") == 0); -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile, 1) == 0); -+ assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 2); -+ log_info("ID: %s NAME: %s", id, name); -+ assert_se(streq(id, "the-id")); -+ assert_se(streq(name, "the-name")); -+ -+ _cleanup_(unlink_tempfilep) char tmpfile2[] = "/tmp/test-os-util.XXXXXX"; -+ assert_se(write_tmpfile(tmpfile2, -+ "ID=\"ignored\" \n" -+ "ID=\"the-id\" \n" -+ "NAME='the-name'") == 0); -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile2, 1) == 0); -+ // FIXME: we return 3, which means that the return value is useless in face of repeats -+ assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 3); -+ log_info("ID: %s NAME: %s", id, name); -+ assert_se(streq(id, "the-id")); -+ assert_se(streq(name, "the-name")); -+ -+ assert_se(parse_os_release(NULL, "FOOBAR", &foobar) == 0); -+ log_info("FOOBAR: %s", strnull(foobar)); -+ assert_se(foobar == NULL); -+ -+ assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0); -+} -+ -+TEST(load_os_release_pairs) { -+ _cleanup_(unlink_tempfilep) char tmpfile[] = "/tmp/test-os-util.XXXXXX"; -+ assert_se(write_tmpfile(tmpfile, -+ "ID=\"ignored\" \n" -+ "ID=\"the-id\" \n" -+ "NAME='the-name'") == 0); -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile, 1) == 0); -+ -+ _cleanup_strv_free_ char **pairs = NULL; -+ assert_se(load_os_release_pairs(NULL, &pairs) == 0); -+ assert_se(strv_equal(pairs, STRV_MAKE("ID", "ignored", // FIXME -+ "ID", "the-id", -+ "NAME", "the-name"))); -+ -+ assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0); -+} -+ - DEFINE_TEST_MAIN(LOG_DEBUG); diff --git a/SOURCES/0167-basic-env-file-make-load-env-file-deduplicate-entrie.patch b/SOURCES/0167-basic-env-file-make-load-env-file-deduplicate-entrie.patch deleted file mode 100644 index 3ba038c..0000000 --- a/SOURCES/0167-basic-env-file-make-load-env-file-deduplicate-entrie.patch +++ /dev/null @@ -1,104 +0,0 @@ -From f990ee961a75791adfdea2f5efb35017a51a310e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 10:08:05 +0100 -Subject: [PATCH] basic/env-file: make load-env-file deduplicate entries with - the same key - -We generally assume parsing like the shell would do it, so the last value -should win when there are repeats. - -(cherry picked from commit 25407ad2a785d10b1aadff0c99829ea0cf51082b) - -Related: #2082131 ---- - src/basic/env-file.c | 31 ++++++++++++++++++++----------- - src/test/test-env-file.c | 5 +++++ - src/test/test-os-util.c | 3 +-- - 3 files changed, 26 insertions(+), 13 deletions(-) - -diff --git a/src/basic/env-file.c b/src/basic/env-file.c -index 599b73bc22..0353f3f2a0 100644 ---- a/src/basic/env-file.c -+++ b/src/basic/env-file.c -@@ -415,30 +415,39 @@ static int load_env_file_push_pairs( - const char *key, char *value, - void *userdata, - int *n_pushed) { -- char ***m = userdata; -+ char ***m = ASSERT_PTR(userdata); -+ bool added = false; - int r; - - r = check_utf8ness_and_warn(filename, line, key, value); - if (r < 0) - return r; - -+ /* Check if the key is present */ -+ for (char **t = *m; t && *t; t += 2) -+ if (streq(t[0], key)) { -+ if (value) -+ r = free_and_replace(t[1], value); -+ else -+ r = free_and_strdup(t+1, ""); -+ goto finish; -+ } -+ - r = strv_extend(m, key); - if (r < 0) - return -ENOMEM; - -- if (!value) { -- r = strv_extend(m, ""); -- if (r < 0) -- return -ENOMEM; -- } else { -+ if (value) - r = strv_push(m, value); -- if (r < 0) -- return r; -- } -+ else -+ r = strv_extend(m, ""); -+ added = true; -+ finish: -+ if (r < 0) -+ return r; - -- if (n_pushed) -+ if (n_pushed && added) - (*n_pushed)++; -- - return 0; - } - -diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c -index 886a8e4bc8..461a0f0810 100644 ---- a/src/test/test-env-file.c -+++ b/src/test/test-env-file.c -@@ -9,7 +9,12 @@ - #include "tests.h" - #include "tmpfile-util.h" - -+/* In case of repeating keys, later entries win. */ -+ - #define env_file_1 \ -+ "a=a\n" \ -+ "a=b\n" \ -+ "a=b\n" \ - "a=a\n" \ - "b=b\\\n" \ - "c\n" \ -diff --git a/src/test/test-os-util.c b/src/test/test-os-util.c -index 5f82748783..d6336c53e9 100644 ---- a/src/test/test-os-util.c -+++ b/src/test/test-os-util.c -@@ -67,8 +67,7 @@ TEST(load_os_release_pairs) { - - _cleanup_strv_free_ char **pairs = NULL; - assert_se(load_os_release_pairs(NULL, &pairs) == 0); -- assert_se(strv_equal(pairs, STRV_MAKE("ID", "ignored", // FIXME -- "ID", "the-id", -+ assert_se(strv_equal(pairs, STRV_MAKE("ID", "the-id", - "NAME", "the-name"))); - - assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0); diff --git a/SOURCES/0167-systemctl-allow-suppress-the-warning-of-no-install-i.patch b/SOURCES/0167-systemctl-allow-suppress-the-warning-of-no-install-i.patch new file mode 100644 index 0000000..6c25260 --- /dev/null +++ b/SOURCES/0167-systemctl-allow-suppress-the-warning-of-no-install-i.patch @@ -0,0 +1,136 @@ +From 79c16ad7a09623b987a50a0d04a61fed41e45a77 Mon Sep 17 00:00:00 2001 +From: Mike Yuan +Date: Sun, 27 Nov 2022 21:18:44 +0800 +Subject: [PATCH] systemctl: allow suppress the warning of no install info + using --no-warn + +In cases like packaging scripts, it might be desired to use +enable/disable on units without install info. So, adding an +option '--no-warn' to suppress the warning. + +(cherry picked from commit 108d35ac7d435b4f1378a9c0fa50858263475e09) + +Related: #2141979 +--- + man/systemctl.xml | 18 ++++++++++++++++-- + src/systemctl/systemctl-enable.c | 2 +- + src/systemctl/systemctl.c | 9 +++++++++ + src/systemctl/systemctl.h | 1 + + 4 files changed, 27 insertions(+), 3 deletions(-) + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index f743c182fe..d909dc4db4 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -771,6 +771,9 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + account. + + ++ When using this operation on units without install information, a warning about it is shown. ++ can be used to suppress the warning. ++ + Enabling units should not be confused with starting (activating) units, as done by the + start command. Enabling and starting units is orthogonal: units may be enabled without + being started and started without being enabled. Enabling simply hooks the unit into various suggested +@@ -814,8 +817,8 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + executed. This output may be suppressed by passing . + + +- This command honors , , +- and in a similar way as enable. ++ This command honors , , , ++ and in a similar way as enable. + + + +@@ -1997,6 +2000,17 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + + + ++ ++ ++ ++ ++ Don't generate the warning shown by default when using ++ enable or disable on units ++ without install information (i.e. don't have or have an empty ++ [Install] section). ++ ++ ++ + + + +diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c +index aea66872de..86d9f602fa 100644 +--- a/src/systemctl/systemctl-enable.c ++++ b/src/systemctl/systemctl-enable.c +@@ -67,7 +67,7 @@ int verb_enable(int argc, char *argv[], void *userdata) { + InstallChange *changes = NULL; + size_t n_changes = 0; + int carries_install_info = -1; +- bool ignore_carries_install_info = arg_quiet; ++ bool ignore_carries_install_info = arg_quiet || arg_no_warn; + int r; + + if (!argv[1]) +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 91954d91e6..57e9966d3c 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -83,6 +83,7 @@ bool arg_show_types = false; + int arg_check_inhibitors = -1; + bool arg_dry_run = false; + bool arg_quiet = false; ++bool arg_no_warn = false; + bool arg_full = false; + bool arg_recursive = false; + bool arg_with_dependencies = false; +@@ -276,6 +277,8 @@ static int systemctl_help(void) { + " kexec, suspend, hibernate, suspend-then-hibernate,\n" + " hybrid-sleep, default, rescue, emergency, and exit.\n" + " -q --quiet Suppress output\n" ++ " --no-warn Don't generate warning when trying to enable/disable\n" ++ " units without install information\n" + " --wait For (re)start, wait until service stopped again\n" + " For is-system-running, wait until startup is completed\n" + " --no-block Do not wait until operation finished\n" +@@ -432,6 +435,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { + ARG_READ_ONLY, + ARG_MKDIR, + ARG_MARKED, ++ ARG_NO_WARN, + }; + + static const struct option options[] = { +@@ -464,6 +468,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { + { "no-wall", no_argument, NULL, ARG_NO_WALL }, + { "dry-run", no_argument, NULL, ARG_DRY_RUN }, + { "quiet", no_argument, NULL, 'q' }, ++ { "no-warn", no_argument, NULL, ARG_NO_WARN }, + { "root", required_argument, NULL, ARG_ROOT }, + { "image", required_argument, NULL, ARG_IMAGE }, + { "force", no_argument, NULL, 'f' }, +@@ -925,6 +930,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { + arg_marked = true; + break; + ++ case ARG_NO_WARN: ++ arg_no_warn = true; ++ break; ++ + case '.': + /* Output an error mimicking getopt, and print a hint afterwards */ + log_error("%s: invalid option -- '.'", program_invocation_name); +diff --git a/src/systemctl/systemctl.h b/src/systemctl/systemctl.h +index 2454c4c714..1a7a6e28d3 100644 +--- a/src/systemctl/systemctl.h ++++ b/src/systemctl/systemctl.h +@@ -65,6 +65,7 @@ extern bool arg_show_types; + extern int arg_check_inhibitors; + extern bool arg_dry_run; + extern bool arg_quiet; ++extern bool arg_no_warn; + extern bool arg_full; + extern bool arg_recursive; + extern bool arg_with_dependencies; diff --git a/SOURCES/0168-man-os-release-add-a-note-about-repeating-entries.patch b/SOURCES/0168-man-os-release-add-a-note-about-repeating-entries.patch deleted file mode 100644 index 2fe5e02..0000000 --- a/SOURCES/0168-man-os-release-add-a-note-about-repeating-entries.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b4087419bac3cd656a3f8ba82653750fd60c19b9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 10:10:12 +0100 -Subject: [PATCH] man/os-release: add a note about repeating entries - -We didn't actually say that keys should not be repeated. At least the -examples in docs (both python and shell) would do that, and any simple -parser that builds a dictionary would most likely behave the same way. -But let's document this expectation, but also say how to deal with malformed -files. - -(cherry picked from commit 3a84a3c9dfde5182398a6d0863a2b2fe90a936b1) - -Related: #2082131 ---- - man/os-release.xml | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/man/os-release.xml b/man/os-release.xml -index 1826a60d1a..baff088bc0 100644 ---- a/man/os-release.xml -+++ b/man/os-release.xml -@@ -75,6 +75,10 @@ - from earliest boot on, and hence must be located on the root file - system. - -+ os-release must not contain repeating keys. Nevertheless, readers should pick -+ the entries later in the file in case of repeats, similarly to how a shell sourcing the file would. A -+ reader may warn about repeating entries. -+ - For a longer rationale for os-release - please refer to the Announcement of /etc/os-release. diff --git a/SOURCES/0168-rpm-systemd-update-helper-use-no-warn-when-disabling.patch b/SOURCES/0168-rpm-systemd-update-helper-use-no-warn-when-disabling.patch new file mode 100644 index 0000000..bc54cb6 --- /dev/null +++ b/SOURCES/0168-rpm-systemd-update-helper-use-no-warn-when-disabling.patch @@ -0,0 +1,44 @@ +From 4161593c24ea24f03bc89d74147e7209dc02ba80 Mon Sep 17 00:00:00 2001 +From: Mike Yuan +Date: Sat, 3 Dec 2022 20:27:47 +0800 +Subject: [PATCH] rpm/systemd-update-helper: use --no-warn when disabling units + +Suppress the "empty [Install] section" warning (see #25437). + +(cherry picked from commit 0acb1459a15f5b4d3a9bd2e7bf52661ca7bdebf0) + +Related: #2141979 +--- + src/rpm/systemd-update-helper.in | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/rpm/systemd-update-helper.in b/src/rpm/systemd-update-helper.in +index ab8cdc0ff9..b35d952fab 100755 +--- a/src/rpm/systemd-update-helper.in ++++ b/src/rpm/systemd-update-helper.in +@@ -19,21 +19,21 @@ case "$command" in + + remove-system-units) + if [ -d /run/systemd/system ]; then +- systemctl --no-reload disable --now "$@" ++ systemctl --no-reload disable --now --no-warn "$@" + else +- systemctl --no-reload disable "$@" ++ systemctl --no-reload disable --no-warn "$@" + fi + ;; + + remove-user-units) +- systemctl --global disable "$@" ++ systemctl --global disable --no-warn "$@" + + [ -d /run/systemd/system ] || exit 0 + + users=$(systemctl list-units 'user@*' --legend=no | sed -n -r 's/.*user@([0-9]+).service.*/\1/p') + for user in $users; do + SYSTEMD_BUS_TIMEOUT={{UPDATE_HELPER_USER_TIMEOUT}} \ +- systemctl --user -M "$user@" disable --now "$@" & ++ systemctl --user -M "$user@" disable --now --no-warn "$@" & + done + wait + ;; diff --git a/SOURCES/0169-shared-specifier-clarify-and-add-test-for-missing-da.patch b/SOURCES/0169-shared-specifier-clarify-and-add-test-for-missing-da.patch deleted file mode 100644 index 9e778f6..0000000 --- a/SOURCES/0169-shared-specifier-clarify-and-add-test-for-missing-da.patch +++ /dev/null @@ -1,55 +0,0 @@ -From fb51d78042fec1a2df2a7da1f9a759875bd7e07e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 11:38:46 +0100 -Subject: [PATCH] shared/specifier: clarify and add test for missing data - -In systemd.unit we document that unset fields resolve to "". But we didn't -directly test this, so let's do that. Also, we return -ENOENT if the file -is missing, which we didn't document or test. - -(cherry picked from commit 7962116fc8a2572c5c89904ac50fe99c8101f28f) - -Related: #2082131 ---- - src/shared/specifier.c | 4 +++- - src/test/test-specifier.c | 14 ++++++++++++++ - 2 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/shared/specifier.c b/src/shared/specifier.c -index f8ab98541f..c26628975c 100644 ---- a/src/shared/specifier.c -+++ b/src/shared/specifier.c -@@ -213,7 +213,9 @@ int specifier_architecture(char specifier, const void *data, const char *root, c - } - - /* Note: fields in /etc/os-release might quite possibly be missing, even if everything is entirely valid -- * otherwise. We'll return an empty value or NULL in that case from the functions below. */ -+ * otherwise. We'll return an empty value or NULL in that case from the functions below. But if the -+ * os-release file is missing, we'll return -ENOENT. This means that something is seriously wrong with the -+ * installation. */ - - int specifier_os_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { - return parse_os_release(root, "ID", ret); -diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c -index dda993ce9d..790f0252d7 100644 ---- a/src/test/test-specifier.c -+++ b/src/test/test-specifier.c -@@ -96,4 +96,18 @@ TEST(specifiers) { - } - } - -+TEST(specifiers_missing_data_ok) { -+ _cleanup_free_ char *resolved = NULL; -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", "/dev/null", 1) == 0); -+ assert_se(specifier_printf("%A-%B-%M-%o-%w-%W", SIZE_MAX, specifier_table, NULL, NULL, &resolved) >= 0); -+ assert_se(streq(resolved, "-----")); -+ -+ assert_se(setenv("SYSTEMD_OS_RELEASE", "/nosuchfileordirectory", 1) == 0); -+ assert_se(specifier_printf("%A-%B-%M-%o-%w-%W", SIZE_MAX, specifier_table, NULL, NULL, &resolved) == -ENOENT); -+ assert_se(streq(resolved, "-----")); -+ -+ assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0); -+} -+ - DEFINE_TEST_MAIN(LOG_DEBUG); diff --git a/SOURCES/0169-systemctl-suppress-warning-about-missing-proc-when-n.patch b/SOURCES/0169-systemctl-suppress-warning-about-missing-proc-when-n.patch new file mode 100644 index 0000000..2f3a8ee --- /dev/null +++ b/SOURCES/0169-systemctl-suppress-warning-about-missing-proc-when-n.patch @@ -0,0 +1,80 @@ +From 02fbe7d4c9bd34134c12978726b036ec1ceea839 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 7 Dec 2022 13:59:01 +0900 +Subject: [PATCH] systemctl: suppress warning about missing /proc/ when + --no-warn + +Follow-up for 0f958c8d4fc13ed1c1af928b2a7d91d31c7576eb. + +systemctl is called many times by dnf or so, and missing /proc/ is not +a user's fault, but package manager's issue. +With this commit, we can suppress the warning by updating rpm macros if +necessary. + +(cherry picked from commit 91dfb74ef5e38625dada2c2a6ae30152e64c3f5b) + +Related: #2141979 +--- + man/systemctl.xml | 16 ++++++++++++---- + src/systemctl/systemctl.c | 14 +++++++------- + 2 files changed, 19 insertions(+), 11 deletions(-) + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index d909dc4db4..b73d4ac048 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -2004,10 +2004,18 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err + + + +- Don't generate the warning shown by default when using +- enable or disable on units +- without install information (i.e. don't have or have an empty +- [Install] section). ++ Don't generate the warnings shown by default in the following cases: ++ ++ ++ when systemctl is invoked without procfs mounted on ++ /proc/, ++ ++ ++ when using enable or disable on units without ++ install information (i.e. don't have or have an empty [Install] section). ++ ++ ++ + + + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 57e9966d3c..3f2b0029ca 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -277,8 +277,7 @@ static int systemctl_help(void) { + " kexec, suspend, hibernate, suspend-then-hibernate,\n" + " hybrid-sleep, default, rescue, emergency, and exit.\n" + " -q --quiet Suppress output\n" +- " --no-warn Don't generate warning when trying to enable/disable\n" +- " units without install information\n" ++ " --no-warn Suppress several warnings shown by default\n" + " --wait For (re)start, wait until service stopped again\n" + " For is-system-running, wait until startup is completed\n" + " --no-block Do not wait until operation finished\n" +@@ -1157,11 +1156,12 @@ static int run(int argc, char *argv[]) { + goto finish; + + if (proc_mounted() == 0) +- log_warning("%s%s/proc/ is not mounted. This is not a supported mode of operation. Please fix\n" +- "your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.\n" +- "Your mileage may vary.", +- emoji_enabled() ? special_glyph(SPECIAL_GLYPH_WARNING_SIGN) : "", +- emoji_enabled() ? " " : ""); ++ log_full(arg_no_warn ? LOG_DEBUG : LOG_WARNING, ++ "%s%s/proc/ is not mounted. This is not a supported mode of operation. Please fix\n" ++ "your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.\n" ++ "Your mileage may vary.", ++ emoji_enabled() ? special_glyph(SPECIAL_GLYPH_WARNING_SIGN) : "", ++ emoji_enabled() ? " " : ""); + + if (arg_action != ACTION_SYSTEMCTL && running_in_chroot() > 0) { + if (!arg_quiet) diff --git a/SOURCES/0170-shared-specifier-provide-proper-error-messages-when-.patch b/SOURCES/0170-shared-specifier-provide-proper-error-messages-when-.patch deleted file mode 100644 index 843675d..0000000 --- a/SOURCES/0170-shared-specifier-provide-proper-error-messages-when-.patch +++ /dev/null @@ -1,278 +0,0 @@ -From b3b45ed9385341e72edfc1bae08819026d841d46 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 8 Mar 2022 12:08:00 +0100 -Subject: [PATCH] shared/specifier: provide proper error messages when - specifiers fail to read files - -ENOENT is easily confused with the file that we're working on not being -present, e.g. when the file contains %o or something else that requires -os-release to be present. Let's use -EUNATCH instead to reduce that chances of -confusion if the context of the error is lost. - -And once we have pinpointed the reason, let's provide a proper error message: - -+ build/systemctl --root=/tmp/systemctl-test.TO7Mcb enable some-some-link6@.socket -/tmp/systemctl-test.TO7Mcb/etc/systemd/system/some-some-link6@.socket: Failed to resolve alias "target@A:%A.socket": Protocol driver not attached -Failed to enable unit, cannot resolve specifiers in "target@A:%A.socket". - -(cherry picked from commit 6ec4c852c910b1aca649e87ba3143841334f01fa) - -Related: #2082131 ---- - src/shared/install.c | 31 +++++++++++++------- - src/shared/specifier.c | 27 ++++++++++++----- - src/test/test-specifier.c | 2 +- - test/test-systemctl-enable.sh | 55 ++++++++++++++++++++++++++--------- - 4 files changed, 82 insertions(+), 33 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index cbfe96b1e8..ea5bc36482 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -374,6 +374,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - verb, changes[i].path); - logged = true; - break; -+ - case -EADDRNOTAVAIL: - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is transient or generated.", - verb, changes[i].path); -@@ -401,6 +402,12 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - logged = true; - break; - -+ case -EUNATCH: -+ log_error_errno(changes[i].type_or_errno, "Failed to %s unit, cannot resolve specifiers in \"%s\".", -+ verb, changes[i].path); -+ logged = true; -+ break; -+ - default: - assert(changes[i].type_or_errno < 0); - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file \"%s\": %m", -@@ -1154,7 +1161,8 @@ static int config_parse_also( - - r = install_name_printf(info, word, info->root, &printed); - if (r < 0) -- return r; -+ return log_syntax(unit, LOG_WARNING, filename, line, r, -+ "Failed to resolve unit name in Also=\"%s\": %m", word); - - r = install_info_add(c, printed, NULL, info->root, /* auxiliary= */ true, NULL); - if (r < 0) -@@ -1201,14 +1209,13 @@ static int config_parse_default_instance( - - r = install_name_printf(i, rvalue, i->root, &printed); - if (r < 0) -- return r; -+ return log_syntax(unit, LOG_WARNING, filename, line, r, -+ "Failed to resolve instance name in DefaultInstance=\"%s\": %m", rvalue); - -- if (isempty(printed)) { -- i->default_instance = mfree(i->default_instance); -- return 0; -- } -+ if (isempty(printed)) -+ printed = mfree(printed); - -- if (!unit_instance_is_valid(printed)) -+ if (printed && !unit_instance_is_valid(printed)) - return log_syntax(unit, LOG_WARNING, filename, line, SYNTHETIC_ERRNO(EINVAL), - "Invalid DefaultInstance= value \"%s\".", printed); - -@@ -1776,8 +1783,10 @@ static int install_info_symlink_alias( - _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - - q = install_name_printf(i, *s, i->root, &dst); -- if (q < 0) -+ if (q < 0) { -+ unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -+ } - - q = unit_file_verify_alias(i, dst, &dst_updated); - if (q < 0) -@@ -1861,8 +1870,10 @@ static int install_info_symlink_wants( - _cleanup_free_ char *path = NULL, *dst = NULL; - - q = install_name_printf(i, *s, i->root, &dst); -- if (q < 0) -+ if (q < 0) { -+ unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -+ } - - if (!unit_name_is_valid(dst, valid_dst_type)) { - /* Generate a proper error here: EUCLEAN if the name is generally bad, EIDRM if the -@@ -3332,7 +3343,7 @@ int unit_file_preset_all( - - r = preset_prepare_one(scope, &plus, &minus, &lp, de->d_name, &presets, changes, n_changes); - if (r < 0 && -- !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT)) -+ !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT, -EUNATCH)) - /* Ignore generated/transient/missing/invalid units when applying preset, propagate other errors. - * Coordinate with unit_file_dump_changes() above. */ - return r; -diff --git a/src/shared/specifier.c b/src/shared/specifier.c -index c26628975c..a917378427 100644 ---- a/src/shared/specifier.c -+++ b/src/shared/specifier.c -@@ -131,7 +131,8 @@ int specifier_machine_id(char specifier, const void *data, const char *root, con - - fd = chase_symlinks_and_open("/etc/machine-id", root, CHASE_PREFIX_ROOT, O_RDONLY|O_CLOEXEC|O_NOCTTY, NULL); - if (fd < 0) -- return fd; -+ /* Translate error for missing os-release file to EUNATCH. */ -+ return fd == -ENOENT ? -EUNATCH : fd; - - r = id128_read_fd(fd, ID128_PLAIN, &id); - } else -@@ -214,31 +215,41 @@ int specifier_architecture(char specifier, const void *data, const char *root, c - - /* Note: fields in /etc/os-release might quite possibly be missing, even if everything is entirely valid - * otherwise. We'll return an empty value or NULL in that case from the functions below. But if the -- * os-release file is missing, we'll return -ENOENT. This means that something is seriously wrong with the -+ * os-release file is missing, we'll return -EUNATCH. This means that something is seriously wrong with the - * installation. */ - -+static int parse_os_release_specifier(const char *root, const char *id, char **ret) { -+ int r; -+ -+ assert(ret); -+ -+ /* Translate error for missing os-release file to EUNATCH. */ -+ r = parse_os_release(root, id, ret); -+ return r == -ENOENT ? -EUNATCH : r; -+} -+ - int specifier_os_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "ID", ret); -+ return parse_os_release_specifier(root, "ID", ret); - } - - int specifier_os_version_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "VERSION_ID", ret); -+ return parse_os_release_specifier(root, "VERSION_ID", ret); - } - - int specifier_os_build_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "BUILD_ID", ret); -+ return parse_os_release_specifier(root, "BUILD_ID", ret); - } - - int specifier_os_variant_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "VARIANT_ID", ret); -+ return parse_os_release_specifier(root, "VARIANT_ID", ret); - } - - int specifier_os_image_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "IMAGE_ID", ret); -+ return parse_os_release_specifier(root, "IMAGE_ID", ret); - } - - int specifier_os_image_version(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- return parse_os_release(root, "IMAGE_VERSION", ret); -+ return parse_os_release_specifier(root, "IMAGE_VERSION", ret); - } - - int specifier_group_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c -index 790f0252d7..a45d1bd0b9 100644 ---- a/src/test/test-specifier.c -+++ b/src/test/test-specifier.c -@@ -104,7 +104,7 @@ TEST(specifiers_missing_data_ok) { - assert_se(streq(resolved, "-----")); - - assert_se(setenv("SYSTEMD_OS_RELEASE", "/nosuchfileordirectory", 1) == 0); -- assert_se(specifier_printf("%A-%B-%M-%o-%w-%W", SIZE_MAX, specifier_table, NULL, NULL, &resolved) == -ENOENT); -+ assert_se(specifier_printf("%A-%B-%M-%o-%w-%W", SIZE_MAX, specifier_table, NULL, NULL, &resolved) == -EUNATCH); - assert_se(streq(resolved, "-----")); - - assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0); -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 769341129c..43a2c0a0fb 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -445,12 +445,45 @@ EOF - - check_alias a "$(uname -m | tr '_' '-')" - --# FIXME: when os-release is not found, we fail we a cryptic error --# Alias=target@%A.socket -+test ! -e "$root/etc/os-release" -+test ! -e "$root/usr/lib/os-release" -+ -+check_alias A '' && { echo "Expected failure" >&2; exit 1; } -+check_alias B '' && { echo "Expected failure" >&2; exit 1; } -+check_alias M '' && { echo "Expected failure" >&2; exit 1; } -+check_alias o '' && { echo "Expected failure" >&2; exit 1; } -+check_alias w '' && { echo "Expected failure" >&2; exit 1; } -+check_alias W '' && { echo "Expected failure" >&2; exit 1; } -+ -+cat >"$root/etc/os-release" <"$root/etc/os-release" <&2; exit 1; } - --# FIXME: Failed to enable: No such file or directory. --# Alias=target@%M.socket -+systemd-id128 new >"$root/etc/machine-id" -+check_alias m "$(cat "$root/etc/machine-id")" - - check_alias n 'some-some-link6@.socket' - check_alias N 'some-some-link6@' - --# FIXME: Failed to enable: No such file or directory. --# Alias=target@%o.socket -- - check_alias p 'some-some-link6' - - # FIXME: Failed to enable: Invalid slot. -@@ -509,9 +539,6 @@ check_alias v "$(uname -r)" - # FIXME: Failed to enable: Invalid slot. - # Alias=target@%V.socket - --# Alias=target@%w.socket --# Alias=target@%W.socket -- - check_alias % '%' && { echo "Expected failure because % is not legal in unit name" >&2; exit 1; } - - check_alias z 'z' && { echo "Expected failure because %z is not known" >&2; exit 1; } diff --git a/SOURCES/0170-shell-completion-systemctl-add-no-warn.patch b/SOURCES/0170-shell-completion-systemctl-add-no-warn.patch new file mode 100644 index 0000000..fc30e3e --- /dev/null +++ b/SOURCES/0170-shell-completion-systemctl-add-no-warn.patch @@ -0,0 +1,38 @@ +From 282bb5b70e6ff146ba81fea82d85d1e3f0cebc77 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 13 Dec 2022 09:05:11 +0900 +Subject: [PATCH] shell-completion: systemctl: add --no-warn + +(cherry picked from commit 93b0ec8bc533e8e8245560152c57e9c5dfb906bf) + +Related: #2141979 +--- + shell-completion/bash/systemctl.in | 2 +- + shell-completion/zsh/_systemctl.in | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in +index f935960c77..3c64467e2f 100644 +--- a/shell-completion/bash/systemctl.in ++++ b/shell-completion/bash/systemctl.in +@@ -128,7 +128,7 @@ _systemctl () { + [STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global + --help -h --no-ask-password --no-block --legend=no --no-pager --no-reload --no-wall --now + --quiet -q --system --user --version --runtime --recursive -r --firmware-setup +- --show-types --plain --failed --value --fail --dry-run --wait' ++ --show-types --plain --failed --value --fail --dry-run --wait --no-warn' + [ARG]='--host -H --kill-whom --property -p --signal -s --type -t --state --job-mode --root + --preset-mode -n --lines -o --output -M --machine --message --timestamp --check-inhibitors' + ) +diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in +index d471743030..2811582236 100644 +--- a/shell-completion/zsh/_systemctl.in ++++ b/shell-completion/zsh/_systemctl.in +@@ -480,6 +480,7 @@ _arguments -s \ + '--show-types[When showing sockets, show socket type]' \ + '--check-inhibitors[Specify if inhibitors should be checked]:mode:_systemctl_check_inhibitors' \ + {-q,--quiet}'[Suppress output]' \ ++ '--no-warn[Suppress several warnings shown by default]' \ + '--no-block[Do not wait until operation finished]' \ + '--legend=no[Do not print a legend, i.e. the column headers and the footer with hints]' \ + '--no-pager[Do not pipe output into a pager]' \ diff --git a/SOURCES/0171-core-unit-drop-doubled-empty-line.patch b/SOURCES/0171-core-unit-drop-doubled-empty-line.patch new file mode 100644 index 0000000..4247ca0 --- /dev/null +++ b/SOURCES/0171-core-unit-drop-doubled-empty-line.patch @@ -0,0 +1,24 @@ +From bc9f6f765f772e8535325c224d2023165bc53e5c Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 15 Nov 2022 12:54:11 +0900 +Subject: [PATCH] core/unit: drop doubled empty line + +(cherry picked from commit ca1999a24c88b2460240aaff8095c2db7491f77c) + +Related: #2160477 +--- + src/core/unit.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 4bb7e2d498..4cde5c4b4e 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -720,7 +720,6 @@ Unit* unit_free(Unit *u) { + if (u->on_console) + manager_unref_console(u->manager); + +- + fdset_free(u->initial_socket_bind_link_fds); + #if BPF_FRAMEWORK + bpf_link_free(u->ipv4_socket_bind_link); diff --git a/SOURCES/0171-shared-install-provide-proper-error-messages-when-in.patch b/SOURCES/0171-shared-install-provide-proper-error-messages-when-in.patch deleted file mode 100644 index 7b886a8..0000000 --- a/SOURCES/0171-shared-install-provide-proper-error-messages-when-in.patch +++ /dev/null @@ -1,142 +0,0 @@ -From 256e0d19abd531ab34ed28181ffdae5d5c0dcfed Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 9 Mar 2022 16:06:24 +0100 -Subject: [PATCH] shared/install: provide proper error messages when invalid - specifiers are used - -$ build/systemctl --root=/tmp/systemctl-test.KXY8fu enable some-some-link6@.socket -Failed to enable unit, invalid specifier in "target@C:%C.socket". - -(cherry picked from commit 19b9d5d0d14f2c9b8be8d0a026b0445168808b94) - -Related: #2082131 ---- - src/shared/install.c | 11 +++++----- - test/test-systemctl-enable.sh | 40 ++++++++++++----------------------- - 2 files changed, 20 insertions(+), 31 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index ea5bc36482..fd57488024 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -374,12 +374,16 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - verb, changes[i].path); - logged = true; - break; -- - case -EADDRNOTAVAIL: - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is transient or generated.", - verb, changes[i].path); - logged = true; - break; -+ case -EBADSLT: -+ log_error_errno(changes[i].type_or_errno, "Failed to %s unit, invalid specifier in \"%s\".", -+ verb, changes[i].path); -+ logged = true; -+ break; - case -EIDRM: - log_error_errno(changes[i].type_or_errno, "Failed to %s %s, destination unit %s is a non-template unit.", - verb, changes[i].source, changes[i].path); -@@ -396,18 +400,15 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - verb, changes[i].path); - logged = true; - break; -- - case -ENOENT: - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s does not exist.", verb, changes[i].path); - logged = true; - break; -- - case -EUNATCH: - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, cannot resolve specifiers in \"%s\".", - verb, changes[i].path); - logged = true; - break; -- - default: - assert(changes[i].type_or_errno < 0); - log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file \"%s\": %m", -@@ -3343,7 +3344,7 @@ int unit_file_preset_all( - - r = preset_prepare_one(scope, &plus, &minus, &lp, de->d_name, &presets, changes, n_changes); - if (r < 0 && -- !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT, -EUNATCH)) -+ !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EBADSLT, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT, -EUNATCH)) - /* Ignore generated/transient/missing/invalid units when applying preset, propagate other errors. - * Coordinate with unit_file_dump_changes() above. */ - return r; -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 43a2c0a0fb..da1fffe944 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -485,33 +485,31 @@ check_alias W 'right' - - check_alias b "$(systemd-id128 boot-id)" - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%C.socket --# Alias=target@%E.socket --# Alias=target@%f.socket -+# Specifiers not available for [Install] -+check_alias C '' && { echo "Expected failure" >&2; exit 1; } -+check_alias E '' && { echo "Expected failure" >&2; exit 1; } -+check_alias f '' && { echo "Expected failure" >&2; exit 1; } -+check_alias h '' && { echo "Expected failure" >&2; exit 1; } -+check_alias I '' && { echo "Expected failure" >&2; exit 1; } -+check_alias J '' && { echo "Expected failure" >&2; exit 1; } -+check_alias L '' && { echo "Expected failure" >&2; exit 1; } -+check_alias P '' && { echo "Expected failure" >&2; exit 1; } -+check_alias s '' && { echo "Expected failure" >&2; exit 1; } -+check_alias S '' && { echo "Expected failure" >&2; exit 1; } -+check_alias t '' && { echo "Expected failure" >&2; exit 1; } -+check_alias T '' && { echo "Expected failure" >&2; exit 1; } -+check_alias V '' && { echo "Expected failure" >&2; exit 1; } - - # FIXME: we use the calling user instead of root :( - check_alias g root || : - check_alias G 0 || : - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%h.socket -- - check_alias i "" - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%I.socket -- - check_alias j 'link6' - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%J.socket -- - check_alias l "$(uname -n | sed 's/\..*//')" - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%L.socket -- - test ! -e "$root/etc/machine-id" - check_alias m '' && { echo "Expected failure" >&2; exit 1; } - -@@ -523,22 +521,12 @@ check_alias N 'some-some-link6@' - - check_alias p 'some-some-link6' - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%P.socket --# Alias=target@%s.socket --# Alias=target@%S.socket --# Alias=target@%t.socket --# Alias=target@%T.socket -- - # FIXME: we use the calling user instead of root :( - check_alias u root || : - check_alias U 0 || : - - check_alias v "$(uname -r)" - --# FIXME: Failed to enable: Invalid slot. --# Alias=target@%V.socket -- - check_alias % '%' && { echo "Expected failure because % is not legal in unit name" >&2; exit 1; } - - check_alias z 'z' && { echo "Expected failure because %z is not known" >&2; exit 1; } diff --git a/SOURCES/0172-core-unit-drop-dependency-to-the-unit-being-merged.patch b/SOURCES/0172-core-unit-drop-dependency-to-the-unit-being-merged.patch new file mode 100644 index 0000000..3cba262 --- /dev/null +++ b/SOURCES/0172-core-unit-drop-dependency-to-the-unit-being-merged.patch @@ -0,0 +1,66 @@ +From 82e78c509c9eab33c1dbf2bc445f91b67b2f118f Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 16 Nov 2022 03:08:22 +0900 +Subject: [PATCH] core/unit: drop dependency to the unit being merged + +Fixes a bug in 15ed3c3a188cf7fa5a60ae508fc7a3ed048d2220. + +Fixes #24990. Also, hopefully fixes #24577. + +(cherry picked from commit c8b3b524134539846917269ddd644ee93a35623f) + +Related: #2160477 +--- + src/core/unit.c | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 4cde5c4b4e..ae9f688ad2 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1043,10 +1043,10 @@ static int unit_add_dependency_hashmap( + return unit_per_dependency_type_hashmap_update(per_type, other, origin_mask, destination_mask); + } + +-static void unit_merge_dependencies( +- Unit *u, +- Unit *other) { +- ++static void unit_merge_dependencies(Unit *u, Unit *other) { ++ Hashmap *deps; ++ void *dt; /* Actually of type UnitDependency, except that we don't bother casting it here, ++ * since the hashmaps all want it as void pointer. */ + int r; + + assert(u); +@@ -1055,12 +1055,19 @@ static void unit_merge_dependencies( + if (u == other) + return; + ++ /* First, remove dependency to other. */ ++ HASHMAP_FOREACH_KEY(deps, dt, u->dependencies) { ++ if (hashmap_remove(deps, other)) ++ unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); ++ ++ if (hashmap_isempty(deps)) ++ hashmap_free(hashmap_remove(u->dependencies, dt)); ++ } ++ + for (;;) { + _cleanup_(hashmap_freep) Hashmap *other_deps = NULL; + UnitDependencyInfo di_back; + Unit *back; +- void *dt; /* Actually of type UnitDependency, except that we don't bother casting it here, +- * since the hashmaps all want it as void pointer. */ + + /* Let's focus on one dependency type at a time, that 'other' has defined. */ + other_deps = hashmap_steal_first_key_and_value(other->dependencies, &dt); +@@ -1102,8 +1109,6 @@ static void unit_merge_dependencies( + * them per type wholesale. */ + r = hashmap_put(u->dependencies, dt, other_deps); + if (r == -EEXIST) { +- Hashmap *deps; +- + /* The target unit already has dependencies of this type, let's then merge this individually. */ + + assert_se(deps = hashmap_get(u->dependencies, dt)); diff --git a/SOURCES/0172-shared-install-move-scope-into-InstallContext.patch b/SOURCES/0172-shared-install-move-scope-into-InstallContext.patch deleted file mode 100644 index ed0c624..0000000 --- a/SOURCES/0172-shared-install-move-scope-into-InstallContext.patch +++ /dev/null @@ -1,1239 +0,0 @@ -From b6088ce6c68e3f6e50f75ca3d1d60d2dae16dbb9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 9 Mar 2022 17:51:36 +0100 -Subject: [PATCH] shared/install: move scope into InstallContext -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This makes it easier to pass it around in preparation for future changes. - -While at it, let's rename InstallContext c → ctx, and InstallInfo i → info. -'c' and 'i' are bad names for variables that are passed through multiple layers -of functions calls. It's easier to follow what is happening with a meaningful -variable names. - -(cherry picked from commit 4a84db4c0c2eef6f40da35347c95dfa6b6e3d139) - -Related: #2082131 ---- - src/shared/install.c | 386 +++++++++++++++++++++---------------------- - 1 file changed, 191 insertions(+), 195 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index fd57488024..bfdeee48bf 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -47,6 +47,7 @@ typedef enum SearchFlags { - } SearchFlags; - - typedef struct { -+ UnitFileScope scope; - OrderedHashmap *will_process; - OrderedHashmap *have_processed; - } InstallContext; -@@ -727,7 +728,7 @@ static int find_symlinks_in_directory( - DIR *dir, - const char *dir_path, - const char *root_dir, -- const UnitFileInstallInfo *i, -+ const UnitFileInstallInfo *info, - bool match_aliases, - bool ignore_same_name, - const char *config_path, -@@ -764,17 +765,17 @@ static int find_symlinks_in_directory( - free_and_replace(dest, x); - } - -- assert(unit_name_is_valid(i->name, UNIT_NAME_ANY)); -+ assert(unit_name_is_valid(info->name, UNIT_NAME_ANY)); - if (!ignore_same_name) - /* Check if the symlink itself matches what we are looking for. - * - * If ignore_same_name is specified, we are in one of the directories which - * have lower priority than the unit file, and even if a file or symlink with - * this name was found, we should ignore it. */ -- found_path = streq(de->d_name, i->name); -+ found_path = streq(de->d_name, info->name); - - /* Check if what the symlink points to matches what we are looking for */ -- found_dest = streq(basename(dest), i->name); -+ found_dest = streq(basename(dest), info->name); - - if (found_path && found_dest) { - _cleanup_free_ char *p = NULL, *t = NULL; -@@ -782,7 +783,7 @@ static int find_symlinks_in_directory( - /* Filter out same name links in the main - * config path */ - p = path_make_absolute(de->d_name, dir_path); -- t = path_make_absolute(i->name, config_path); -+ t = path_make_absolute(info->name, config_path); - - if (!p || !t) - return -ENOMEM; -@@ -797,7 +798,7 @@ static int find_symlinks_in_directory( - return 1; - - /* Check if symlink name is in the set of names used by [Install] */ -- q = is_symlink_with_known_name(i, de->d_name); -+ q = is_symlink_with_known_name(info, de->d_name); - if (q < 0) - return q; - if (q > 0) -@@ -867,7 +868,7 @@ static int find_symlinks( - static int find_symlinks_in_scope( - UnitFileScope scope, - const LookupPaths *lp, -- const UnitFileInstallInfo *i, -+ const UnitFileInstallInfo *info, - bool match_name, - UnitFileState *state) { - -@@ -878,7 +879,7 @@ static int find_symlinks_in_scope( - int r; - - assert(lp); -- assert(i); -+ assert(info); - - /* As we iterate over the list of search paths in lp->search_path, we may encounter "same name" - * symlinks. The ones which are "below" (i.e. have lower priority) than the unit file itself are -@@ -887,7 +888,7 @@ static int find_symlinks_in_scope( - STRV_FOREACH(p, lp->search_path) { - bool same_name_link = false; - -- r = find_symlinks(lp->root_dir, i, match_name, ignore_same_name, *p, &same_name_link); -+ r = find_symlinks(lp->root_dir, info, match_name, ignore_same_name, *p, &same_name_link); - if (r < 0) - return r; - if (r > 0) { -@@ -927,7 +928,7 @@ static int find_symlinks_in_scope( - - /* Check if next iteration will be "below" the unit file (either a regular file - * or a symlink), and hence should be ignored */ -- if (!ignore_same_name && path_startswith(i->path, *p)) -+ if (!ignore_same_name && path_startswith(info->path, *p)) - ignore_same_name = true; - } - -@@ -940,7 +941,7 @@ static int find_symlinks_in_scope( - * outside of runtime and configuration directory, then we consider it statically enabled. Note we do that only - * for instance, not for regular names, as those are merely aliases, while instances explicitly instantiate - * something, and hence are a much stronger concept. */ -- if (enabled_at_all && unit_name_is_valid(i->name, UNIT_NAME_INSTANCE)) { -+ if (enabled_at_all && unit_name_is_valid(info->name, UNIT_NAME_INSTANCE)) { - *state = UNIT_FILE_STATIC; - return 1; - } -@@ -960,7 +961,6 @@ static int find_symlinks_in_scope( - } - - static void install_info_free(UnitFileInstallInfo *i) { -- - if (!i) - return; - -@@ -976,21 +976,21 @@ static void install_info_free(UnitFileInstallInfo *i) { - free(i); - } - --static void install_context_done(InstallContext *c) { -- assert(c); -+static void install_context_done(InstallContext *ctx) { -+ assert(ctx); - -- c->will_process = ordered_hashmap_free_with_destructor(c->will_process, install_info_free); -- c->have_processed = ordered_hashmap_free_with_destructor(c->have_processed, install_info_free); -+ ctx->will_process = ordered_hashmap_free_with_destructor(ctx->will_process, install_info_free); -+ ctx->have_processed = ordered_hashmap_free_with_destructor(ctx->have_processed, install_info_free); - } - --static UnitFileInstallInfo *install_info_find(InstallContext *c, const char *name) { -+static UnitFileInstallInfo *install_info_find(InstallContext *ctx, const char *name) { - UnitFileInstallInfo *i; - -- i = ordered_hashmap_get(c->have_processed, name); -+ i = ordered_hashmap_get(ctx->have_processed, name); - if (i) - return i; - -- return ordered_hashmap_get(c->will_process, name); -+ return ordered_hashmap_get(ctx->will_process, name); - } - - static int install_info_may_process( -@@ -1024,7 +1024,7 @@ static int install_info_may_process( - * Returns negative on error, 0 if the unit was already known, 1 otherwise. - */ - static int install_info_add( -- InstallContext *c, -+ InstallContext *ctx, - const char *name, - const char *path, - const char *root, -@@ -1034,7 +1034,7 @@ static int install_info_add( - UnitFileInstallInfo *i = NULL; - int r; - -- assert(c); -+ assert(ctx); - - if (!name) { - /* 'name' and 'path' must not both be null. Check here 'path' using assert_se() to -@@ -1047,7 +1047,7 @@ static int install_info_add( - if (!unit_name_is_valid(name, UNIT_NAME_ANY)) - return -EINVAL; - -- i = install_info_find(c, name); -+ i = install_info_find(ctx, name); - if (i) { - i->auxiliary = i->auxiliary && auxiliary; - -@@ -1087,7 +1087,7 @@ static int install_info_add( - } - } - -- r = ordered_hashmap_ensure_put(&c->will_process, &string_hash_ops, i->name, i); -+ r = ordered_hashmap_ensure_put(&ctx->will_process, &string_hash_ops, i->name, i); - if (r < 0) - goto fail; - -@@ -1142,8 +1142,8 @@ static int config_parse_also( - void *data, - void *userdata) { - -- UnitFileInstallInfo *info = userdata; -- InstallContext *c = data; -+ UnitFileInstallInfo *info = ASSERT_PTR(userdata); -+ InstallContext *ctx = ASSERT_PTR(data); - int r; - - assert(unit); -@@ -1165,7 +1165,7 @@ static int config_parse_also( - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve unit name in Also=\"%s\": %m", word); - -- r = install_info_add(c, printed, NULL, info->root, /* auxiliary= */ true, NULL); -+ r = install_info_add(ctx, printed, NULL, info->root, /* auxiliary= */ true, NULL); - if (r < 0) - return r; - -@@ -1191,7 +1191,7 @@ static int config_parse_default_instance( - void *data, - void *userdata) { - -- UnitFileInstallInfo *i = data; -+ UnitFileInstallInfo *info = ASSERT_PTR(userdata); - _cleanup_free_ char *printed = NULL; - int r; - -@@ -1208,7 +1208,7 @@ static int config_parse_default_instance( - return log_syntax(unit, LOG_WARNING, filename, line, 0, - "DefaultInstance= only makes sense for template units, ignoring."); - -- r = install_name_printf(i, rvalue, i->root, &printed); -+ r = install_name_printf(info, rvalue, info->root, &printed); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve instance name in DefaultInstance=\"%s\": %m", rvalue); -@@ -1220,11 +1220,11 @@ static int config_parse_default_instance( - return log_syntax(unit, LOG_WARNING, filename, line, SYNTHETIC_ERRNO(EINVAL), - "Invalid DefaultInstance= value \"%s\".", printed); - -- return free_and_replace(i->default_instance, printed); -+ return free_and_replace(info->default_instance, printed); - } - - static int unit_file_load( -- InstallContext *c, -+ InstallContext *ctx, - UnitFileInstallInfo *info, - const char *path, - const char *root_dir, -@@ -1235,7 +1235,7 @@ static int unit_file_load( - { "Install", "WantedBy", config_parse_strv, 0, &info->wanted_by }, - { "Install", "RequiredBy", config_parse_strv, 0, &info->required_by }, - { "Install", "DefaultInstance", config_parse_default_instance, 0, info }, -- { "Install", "Also", config_parse_also, 0, c }, -+ { "Install", "Also", config_parse_also, 0, ctx }, - {} - }; - -@@ -1308,8 +1308,8 @@ static int unit_file_load( - if (!f) - return -errno; - -- /* c is only needed if we actually load the file (it's referenced from items[] btw, in case you wonder.) */ -- assert(c); -+ /* ctx is only needed if we actually load the file (it's referenced from items[] btw, in case you wonder.) */ -+ assert(ctx); - - r = config_parse(info->name, path, f, - "Install\0" -@@ -1341,14 +1341,14 @@ static int unit_file_load( - } - - static int unit_file_load_or_readlink( -- InstallContext *c, -+ InstallContext *ctx, - UnitFileInstallInfo *info, - const char *path, - const LookupPaths *lp, - SearchFlags flags) { - int r; - -- r = unit_file_load(c, info, path, lp->root_dir, flags); -+ r = unit_file_load(ctx, info, path, lp->root_dir, flags); - if (r != -ELOOP || (flags & SEARCH_DROPIN)) - return r; - -@@ -1371,7 +1371,7 @@ static int unit_file_load_or_readlink( - } - - static int unit_file_search( -- InstallContext *c, -+ InstallContext *ctx, - UnitFileInstallInfo *info, - const LookupPaths *lp, - SearchFlags flags) { -@@ -1391,7 +1391,7 @@ static int unit_file_search( - return 0; - - if (info->path) -- return unit_file_load_or_readlink(c, info, info->path, lp, flags); -+ return unit_file_load_or_readlink(ctx, info, info->path, lp, flags); - - assert(info->name); - -@@ -1408,7 +1408,7 @@ static int unit_file_search( - if (!path) - return -ENOMEM; - -- r = unit_file_load_or_readlink(c, info, path, lp, flags); -+ r = unit_file_load_or_readlink(ctx, info, path, lp, flags); - if (r >= 0) { - info->path = TAKE_PTR(path); - result = r; -@@ -1431,7 +1431,7 @@ static int unit_file_search( - if (!path) - return -ENOMEM; - -- r = unit_file_load_or_readlink(c, info, path, lp, flags); -+ r = unit_file_load_or_readlink(ctx, info, path, lp, flags); - if (r >= 0) { - info->path = TAKE_PTR(path); - result = r; -@@ -1487,7 +1487,7 @@ static int unit_file_search( - return log_debug_errno(r, "Failed to get list of conf files: %m"); - - STRV_FOREACH(p, files) { -- r = unit_file_load_or_readlink(c, info, *p, lp, flags | SEARCH_DROPIN); -+ r = unit_file_load_or_readlink(ctx, info, *p, lp, flags | SEARCH_DROPIN); - if (r < 0) - return log_debug_errno(r, "Failed to load conf file \"%s\": %m", *p); - } -@@ -1496,30 +1496,30 @@ static int unit_file_search( - } - - static int install_info_follow( -- InstallContext *c, -- UnitFileInstallInfo *i, -+ InstallContext *ctx, -+ UnitFileInstallInfo *info, - const LookupPaths *lp, - SearchFlags flags, - bool ignore_different_name) { - -- assert(c); -- assert(i); -+ assert(ctx); -+ assert(info); - -- if (i->type != UNIT_FILE_TYPE_SYMLINK) -+ if (info->type != UNIT_FILE_TYPE_SYMLINK) - return -EINVAL; -- if (!i->symlink_target) -+ if (!info->symlink_target) - return -EINVAL; - - /* If the basename doesn't match, the caller should add a - * complete new entry for this. */ - -- if (!ignore_different_name && !streq(basename(i->symlink_target), i->name)) -+ if (!ignore_different_name && !streq(basename(info->symlink_target), info->name)) - return -EXDEV; - -- free_and_replace(i->path, i->symlink_target); -- i->type = _UNIT_FILE_TYPE_INVALID; -+ free_and_replace(info->path, info->symlink_target); -+ info->type = _UNIT_FILE_TYPE_INVALID; - -- return unit_file_load_or_readlink(c, i, i->path, lp, flags); -+ return unit_file_load_or_readlink(ctx, info, info->path, lp, flags); - } - - /** -@@ -1527,8 +1527,7 @@ static int install_info_follow( - * target, maybe more than once. Propagate the instance name if present. - */ - static int install_info_traverse( -- UnitFileScope scope, -- InstallContext *c, -+ InstallContext *ctx, - const LookupPaths *lp, - UnitFileInstallInfo *start, - SearchFlags flags, -@@ -1540,9 +1539,9 @@ static int install_info_traverse( - - assert(lp); - assert(start); -- assert(c); -+ assert(ctx); - -- r = unit_file_search(c, start, lp, flags); -+ r = unit_file_search(ctx, start, lp, flags); - if (r < 0) - return r; - -@@ -1561,7 +1560,7 @@ static int install_info_traverse( - return -ELOOP; - } - -- r = install_info_follow(c, i, lp, flags, false); -+ r = install_info_follow(ctx, i, lp, flags, false); - if (r == -EXDEV) { - _cleanup_free_ char *buffer = NULL; - const char *bn; -@@ -1590,7 +1589,7 @@ static int install_info_traverse( - /* We filled in the instance, and the target stayed the same? If so, then let's - * honour the link as it is. */ - -- r = install_info_follow(c, i, lp, flags, true); -+ r = install_info_follow(ctx, i, lp, flags, true); - if (r < 0) - return r; - -@@ -1600,12 +1599,12 @@ static int install_info_traverse( - bn = buffer; - } - -- r = install_info_add(c, bn, NULL, lp->root_dir, /* auxiliary= */ false, &i); -+ r = install_info_add(ctx, bn, NULL, lp->root_dir, /* auxiliary= */ false, &i); - if (r < 0) - return r; - - /* Try again, with the new target we found. */ -- r = unit_file_search(c, i, lp, flags); -+ r = unit_file_search(ctx, i, lp, flags); - if (r == -ENOENT) - /* Translate error code to highlight this specific case */ - return -ENOLINK; -@@ -1626,12 +1625,12 @@ static int install_info_traverse( - * or the name (otherwise). root_dir is prepended to the path. - */ - static int install_info_add_auto( -- InstallContext *c, -+ InstallContext *ctx, - const LookupPaths *lp, - const char *name_or_path, - UnitFileInstallInfo **ret) { - -- assert(c); -+ assert(ctx); - assert(name_or_path); - - if (path_is_absolute(name_or_path)) { -@@ -1639,14 +1638,13 @@ static int install_info_add_auto( - - pp = prefix_roota(lp->root_dir, name_or_path); - -- return install_info_add(c, NULL, pp, lp->root_dir, /* auxiliary= */ false, ret); -+ return install_info_add(ctx, NULL, pp, lp->root_dir, /* auxiliary= */ false, ret); - } else -- return install_info_add(c, name_or_path, NULL, lp->root_dir, /* auxiliary= */ false, ret); -+ return install_info_add(ctx, name_or_path, NULL, lp->root_dir, /* auxiliary= */ false, ret); - } - - static int install_info_discover( -- UnitFileScope scope, -- InstallContext *c, -+ InstallContext *ctx, - const LookupPaths *lp, - const char *name, - SearchFlags flags, -@@ -1654,16 +1652,16 @@ static int install_info_discover( - UnitFileChange **changes, - size_t *n_changes) { - -- UnitFileInstallInfo *i; -+ UnitFileInstallInfo *info; - int r; - -- assert(c); -+ assert(ctx); - assert(lp); - assert(name); - -- r = install_info_add_auto(c, lp, name, &i); -+ r = install_info_add_auto(ctx, lp, name, &info); - if (r >= 0) -- r = install_info_traverse(scope, c, lp, i, flags, ret); -+ r = install_info_traverse(ctx, lp, info, flags, ret); - - if (r < 0) - unit_file_changes_add(changes, n_changes, r, name, NULL); -@@ -1671,25 +1669,24 @@ static int install_info_discover( - } - - static int install_info_discover_and_check( -- UnitFileScope scope, -- InstallContext *c, -- const LookupPaths *lp, -- const char *name, -- SearchFlags flags, -- UnitFileInstallInfo **ret, -- UnitFileChange **changes, -- size_t *n_changes) { -+ InstallContext *ctx, -+ const LookupPaths *lp, -+ const char *name, -+ SearchFlags flags, -+ UnitFileInstallInfo **ret, -+ UnitFileChange **changes, -+ size_t *n_changes) { - - int r; - -- r = install_info_discover(scope, c, lp, name, flags, ret, changes, n_changes); -+ r = install_info_discover(ctx, lp, name, flags, ret, changes, n_changes); - if (r < 0) - return r; - - return install_info_may_process(ret ? *ret : NULL, lp, changes, n_changes); - } - --int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char **ret_dst) { -+int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, char **ret_dst) { - _cleanup_free_ char *dst_updated = NULL; - int r; - -@@ -1729,13 +1726,13 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - const bool instance_propagation = type == UNIT_NAME_TEMPLATE; - - /* That's the name we want to use for verification. */ -- r = unit_symlink_name_compatible(path_alias, i->name, instance_propagation); -+ r = unit_symlink_name_compatible(path_alias, info->name, instance_propagation); - if (r < 0) - return log_error_errno(r, "Failed to verify alias validity: %m"); - if (r == 0) - return log_warning_errno(SYNTHETIC_ERRNO(EXDEV), - "Invalid unit \"%s\" symlink \"%s\".", -- i->name, dst); -+ info->name, dst); - - } else { - /* If the symlink target has an instance set and the symlink source doesn't, we "propagate -@@ -1743,9 +1740,9 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - if (unit_name_is_valid(dst, UNIT_NAME_TEMPLATE)) { - _cleanup_free_ char *inst = NULL; - -- UnitNameFlags type = unit_name_to_instance(i->name, &inst); -+ UnitNameFlags type = unit_name_to_instance(info->name, &inst); - if (type < 0) -- return log_error_errno(type, "Failed to extract instance name from \"%s\": %m", i->name); -+ return log_error_errno(type, "Failed to extract instance name from \"%s\": %m", info->name); - - if (type == UNIT_NAME_INSTANCE) { - r = unit_name_replace_instance(dst, inst, &dst_updated); -@@ -1755,10 +1752,9 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - } - } - -- r = unit_validate_alias_symlink_and_warn(dst_updated ?: dst, i->name); -+ r = unit_validate_alias_symlink_and_warn(dst_updated ?: dst, info->name); - if (r < 0) - return r; -- - } - - *ret_dst = TAKE_PTR(dst_updated); -@@ -1766,7 +1762,8 @@ int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char * - } - - static int install_info_symlink_alias( -- UnitFileInstallInfo *i, -+ UnitFileScope scope, -+ UnitFileInstallInfo *info, - const LookupPaths *lp, - const char *config_path, - bool force, -@@ -1776,20 +1773,20 @@ static int install_info_symlink_alias( - char **s; - int r = 0, q; - -- assert(i); -+ assert(info); - assert(lp); - assert(config_path); - -- STRV_FOREACH(s, i->aliases) { -+ STRV_FOREACH(s, info->aliases) { - _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - -- q = install_name_printf(i, *s, i->root, &dst); -+ q = install_name_printf(info, *s, info->root, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; - } - -- q = unit_file_verify_alias(i, dst, &dst_updated); -+ q = unit_file_verify_alias(info, dst, &dst_updated); - if (q < 0) - continue; - -@@ -1797,7 +1794,7 @@ static int install_info_symlink_alias( - if (!alias_path) - return -ENOMEM; - -- q = create_symlink(lp, i->path, alias_path, force, changes, n_changes); -+ q = create_symlink(lp, info->path, alias_path, force, changes, n_changes); - if (r == 0) - r = q; - } -@@ -1808,7 +1805,7 @@ static int install_info_symlink_alias( - static int install_info_symlink_wants( - UnitFileScope scope, - UnitFileFlags file_flags, -- UnitFileInstallInfo *i, -+ UnitFileInstallInfo *info, - const LookupPaths *lp, - const char *config_path, - char **list, -@@ -1822,18 +1819,18 @@ static int install_info_symlink_wants( - char **s; - int r = 0, q; - -- assert(i); -+ assert(info); - assert(lp); - assert(config_path); - - if (strv_isempty(list)) - return 0; - -- if (unit_name_is_valid(i->name, UNIT_NAME_PLAIN | UNIT_NAME_INSTANCE)) -+ if (unit_name_is_valid(info->name, UNIT_NAME_PLAIN | UNIT_NAME_INSTANCE)) - /* Not a template unit. Use the name directly. */ -- n = i->name; -+ n = info->name; - -- else if (i->default_instance) { -+ else if (info->default_instance) { - UnitFileInstallInfo instance = { - .type = _UNIT_FILE_TYPE_INVALID, - }; -@@ -1841,7 +1838,7 @@ static int install_info_symlink_wants( - - /* If this is a template, and we have a default instance, use it. */ - -- r = unit_name_replace_instance(i->name, i->default_instance, &buf); -+ r = unit_name_replace_instance(info->name, info->default_instance, &buf); - if (r < 0) - return r; - -@@ -1864,13 +1861,13 @@ static int install_info_symlink_wants( - * the instance from that unit. Cannot be used with non-instance units. */ - - valid_dst_type = UNIT_NAME_INSTANCE | UNIT_NAME_TEMPLATE; -- n = i->name; -+ n = info->name; - } - - STRV_FOREACH(s, list) { - _cleanup_free_ char *path = NULL, *dst = NULL; - -- q = install_name_printf(i, *s, i->root, &dst); -+ q = install_name_printf(info, *s, info->root, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -@@ -1902,19 +1899,19 @@ static int install_info_symlink_wants( - if (!path) - return -ENOMEM; - -- q = create_symlink(lp, i->path, path, true, changes, n_changes); -+ q = create_symlink(lp, info->path, path, true, changes, n_changes); - if (r == 0) - r = q; - - if (unit_file_exists(scope, lp, dst) == 0) -- unit_file_changes_add(changes, n_changes, UNIT_FILE_DESTINATION_NOT_PRESENT, dst, i->path); -+ unit_file_changes_add(changes, n_changes, UNIT_FILE_DESTINATION_NOT_PRESENT, dst, info->path); - } - - return r; - } - - static int install_info_symlink_link( -- UnitFileInstallInfo *i, -+ UnitFileInstallInfo *info, - const LookupPaths *lp, - const char *config_path, - bool force, -@@ -1924,28 +1921,28 @@ static int install_info_symlink_link( - _cleanup_free_ char *path = NULL; - int r; - -- assert(i); -+ assert(info); - assert(lp); - assert(config_path); -- assert(i->path); -+ assert(info->path); - -- r = in_search_path(lp, i->path); -+ r = in_search_path(lp, info->path); - if (r < 0) - return r; - if (r > 0) - return 0; - -- path = path_join(config_path, i->name); -+ path = path_join(config_path, info->name); - if (!path) - return -ENOMEM; - -- return create_symlink(lp, i->path, path, force, changes, n_changes); -+ return create_symlink(lp, info->path, path, force, changes, n_changes); - } - - static int install_info_apply( - UnitFileScope scope, - UnitFileFlags file_flags, -- UnitFileInstallInfo *i, -+ UnitFileInstallInfo *info, - const LookupPaths *lp, - const char *config_path, - UnitFileChange **changes, -@@ -1953,26 +1950,26 @@ static int install_info_apply( - - int r, q; - -- assert(i); -+ assert(info); - assert(lp); - assert(config_path); - -- if (i->type != UNIT_FILE_TYPE_REGULAR) -+ if (info->type != UNIT_FILE_TYPE_REGULAR) - return 0; - - bool force = file_flags & UNIT_FILE_FORCE; - -- r = install_info_symlink_alias(i, lp, config_path, force, changes, n_changes); -+ r = install_info_symlink_alias(scope, info, lp, config_path, force, changes, n_changes); - -- q = install_info_symlink_wants(scope, file_flags, i, lp, config_path, i->wanted_by, ".wants/", changes, n_changes); -+ q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->wanted_by, ".wants/", changes, n_changes); - if (r == 0) - r = q; - -- q = install_info_symlink_wants(scope, file_flags, i, lp, config_path, i->required_by, ".requires/", changes, n_changes); -+ q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->required_by, ".requires/", changes, n_changes); - if (r == 0) - r = q; - -- q = install_info_symlink_link(i, lp, config_path, force, changes, n_changes); -+ q = install_info_symlink_link(info, lp, config_path, force, changes, n_changes); - /* Do not count links to the unit file towards the "carries_install_info" count */ - if (r == 0 && q < 0) - r = q; -@@ -1981,10 +1978,9 @@ static int install_info_apply( - } - - static int install_context_apply( -- UnitFileScope scope, -- UnitFileFlags file_flags, -- InstallContext *c, -+ InstallContext *ctx, - const LookupPaths *lp, -+ UnitFileFlags file_flags, - const char *config_path, - SearchFlags flags, - UnitFileChange **changes, -@@ -1993,26 +1989,26 @@ static int install_context_apply( - UnitFileInstallInfo *i; - int r; - -- assert(c); -+ assert(ctx); - assert(lp); - assert(config_path); - -- if (ordered_hashmap_isempty(c->will_process)) -+ if (ordered_hashmap_isempty(ctx->will_process)) - return 0; - -- r = ordered_hashmap_ensure_allocated(&c->have_processed, &string_hash_ops); -+ r = ordered_hashmap_ensure_allocated(&ctx->have_processed, &string_hash_ops); - if (r < 0) - return r; - - r = 0; -- while ((i = ordered_hashmap_first(c->will_process))) { -+ while ((i = ordered_hashmap_first(ctx->will_process))) { - int q; - -- q = ordered_hashmap_move_one(c->have_processed, c->will_process, i->name); -+ q = ordered_hashmap_move_one(ctx->have_processed, ctx->will_process, i->name); - if (q < 0) - return q; - -- q = install_info_traverse(scope, c, lp, i, flags, NULL); -+ q = install_info_traverse(ctx, lp, i, flags, NULL); - if (q < 0) { - if (i->auxiliary) { - q = unit_file_changes_add(changes, n_changes, UNIT_FILE_AUXILIARY_FAILED, NULL, i->name); -@@ -2039,7 +2035,7 @@ static int install_context_apply( - if (i->type != UNIT_FILE_TYPE_REGULAR) - continue; - -- q = install_info_apply(scope, file_flags, i, lp, config_path, changes, n_changes); -+ q = install_info_apply(ctx->scope, file_flags, i, lp, config_path, changes, n_changes); - if (r >= 0) { - if (q < 0) - r = q; -@@ -2052,8 +2048,7 @@ static int install_context_apply( - } - - static int install_context_mark_for_removal( -- UnitFileScope scope, -- InstallContext *c, -+ InstallContext *ctx, - const LookupPaths *lp, - Set **remove_symlinks_to, - const char *config_path, -@@ -2063,26 +2058,26 @@ static int install_context_mark_for_removal( - UnitFileInstallInfo *i; - int r; - -- assert(c); -+ assert(ctx); - assert(lp); - assert(config_path); - - /* Marks all items for removal */ - -- if (ordered_hashmap_isempty(c->will_process)) -+ if (ordered_hashmap_isempty(ctx->will_process)) - return 0; - -- r = ordered_hashmap_ensure_allocated(&c->have_processed, &string_hash_ops); -+ r = ordered_hashmap_ensure_allocated(&ctx->have_processed, &string_hash_ops); - if (r < 0) - return r; - -- while ((i = ordered_hashmap_first(c->will_process))) { -+ while ((i = ordered_hashmap_first(ctx->will_process))) { - -- r = ordered_hashmap_move_one(c->have_processed, c->will_process, i->name); -+ r = ordered_hashmap_move_one(ctx->have_processed, ctx->will_process, i->name); - if (r < 0) - return r; - -- r = install_info_traverse(scope, c, lp, i, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); -+ r = install_info_traverse(ctx, lp, i, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); - if (r == -ENOLINK) { - log_debug_errno(r, "Name %s leads to a dangling symlink, removing name.", i->name); - unit_file_changes_add(changes, n_changes, UNIT_FILE_IS_DANGLING, i->path ?: i->name, NULL); -@@ -2521,8 +2516,8 @@ int unit_file_add_dependency( - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext c = {}; -- UnitFileInstallInfo *i, *target_info; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ UnitFileInstallInfo *info, *target_info; - const char *config_path; - char **f; - int r; -@@ -2545,7 +2540,7 @@ int unit_file_add_dependency( - if (!config_path) - return -ENXIO; - -- r = install_info_discover_and_check(scope, &c, &lp, target, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(&ctx, &lp, target, SEARCH_FOLLOW_CONFIG_SYMLINKS, - &target_info, changes, n_changes); - if (r < 0) - return r; -@@ -2555,21 +2550,21 @@ int unit_file_add_dependency( - STRV_FOREACH(f, files) { - char ***l; - -- r = install_info_discover_and_check(scope, &c, &lp, *f, SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover_and_check(&ctx, &lp, *f, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - if (r < 0) - return r; - -- assert(i->type == UNIT_FILE_TYPE_REGULAR); -+ assert(info->type == UNIT_FILE_TYPE_REGULAR); - - /* We didn't actually load anything from the unit - * file, but instead just add in our new symlink to - * create. */ - - if (dep == UNIT_WANTS) -- l = &i->wanted_by; -+ l = &info->wanted_by; - else -- l = &i->required_by; -+ l = &info->required_by; - - strv_free(*l); - *l = strv_new(target_info->name); -@@ -2577,7 +2572,7 @@ int unit_file_add_dependency( - return -ENOMEM; - } - -- return install_context_apply(scope, file_flags, &c, &lp, config_path, -+ return install_context_apply(&ctx, &lp, file_flags, config_path, - SEARCH_FOLLOW_CONFIG_SYMLINKS, changes, n_changes); - } - -@@ -2590,9 +2585,9 @@ int unit_file_enable( - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext c = {}; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; - const char *config_path; -- UnitFileInstallInfo *i; -+ UnitFileInstallInfo *info; - char **f; - int r; - -@@ -2608,12 +2603,12 @@ int unit_file_enable( - return -ENXIO; - - STRV_FOREACH(f, files) { -- r = install_info_discover_and_check(scope, &c, &lp, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover_and_check(&ctx, &lp, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - if (r < 0) - return r; - -- assert(i->type == UNIT_FILE_TYPE_REGULAR); -+ assert(info->type == UNIT_FILE_TYPE_REGULAR); - } - - /* This will return the number of symlink rules that were -@@ -2621,7 +2616,8 @@ int unit_file_enable( - is useful to determine whether the passed files had any - installation data at all. */ - -- return install_context_apply(scope, file_flags, &c, &lp, config_path, SEARCH_LOAD, changes, n_changes); -+ return install_context_apply(&ctx, &lp, file_flags, config_path, -+ SEARCH_LOAD, changes, n_changes); - } - - int unit_file_disable( -@@ -2633,7 +2629,7 @@ int unit_file_disable( - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext c = {}; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - const char *config_path; - char **i; -@@ -2654,12 +2650,12 @@ int unit_file_disable( - if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_add(&c, *i, NULL, lp.root_dir, /* auxiliary= */ false, NULL); -+ r = install_info_add(&ctx, *i, NULL, lp.root_dir, /* auxiliary= */ false, NULL); - if (r < 0) - return r; - } - -- r = install_context_mark_for_removal(scope, &c, &lp, &remove_symlinks_to, config_path, changes, n_changes); -+ r = install_context_mark_for_removal(&ctx, &lp, &remove_symlinks_to, config_path, changes, n_changes); - if (r < 0) - return r; - -@@ -2702,8 +2698,8 @@ int unit_file_set_default( - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext c = {}; -- UnitFileInstallInfo *i; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ UnitFileInstallInfo *info; - const char *new_path; - int r; - -@@ -2720,12 +2716,12 @@ int unit_file_set_default( - if (r < 0) - return r; - -- r = install_info_discover_and_check(scope, &c, &lp, name, 0, &i, changes, n_changes); -+ r = install_info_discover_and_check(&ctx, &lp, name, 0, &info, changes, n_changes); - if (r < 0) - return r; - - new_path = strjoina(lp.persistent_config, "/" SPECIAL_DEFAULT_TARGET); -- return create_symlink(&lp, i->path, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ return create_symlink(&lp, info->path, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); - } - - int unit_file_get_default( -@@ -2734,8 +2730,8 @@ int unit_file_get_default( - char **name) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext c = {}; -- UnitFileInstallInfo *i; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ UnitFileInstallInfo *info; - char *n; - int r; - -@@ -2747,15 +2743,15 @@ int unit_file_get_default( - if (r < 0) - return r; - -- r = install_info_discover(scope, &c, &lp, SPECIAL_DEFAULT_TARGET, SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, NULL, NULL); -+ r = install_info_discover(&ctx, &lp, SPECIAL_DEFAULT_TARGET, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, NULL, NULL); - if (r < 0) - return r; -- r = install_info_may_process(i, &lp, NULL, 0); -+ r = install_info_may_process(info, &lp, NULL, 0); - if (r < 0) - return r; - -- n = strdup(i->name); -+ n = strdup(info->name); - if (!n) - return -ENOMEM; - -@@ -2769,8 +2765,8 @@ int unit_file_lookup_state( - const char *name, - UnitFileState *ret) { - -- _cleanup_(install_context_done) InstallContext c = {}; -- UnitFileInstallInfo *i; -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ UnitFileInstallInfo *info; - UnitFileState state; - int r; - -@@ -2780,23 +2776,23 @@ int unit_file_lookup_state( - if (!unit_name_is_valid(name, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_discover(scope, &c, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, NULL, NULL); -+ r = install_info_discover(&ctx, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, NULL, NULL); - if (r < 0) - return log_debug_errno(r, "Failed to discover unit %s: %m", name); - -- assert(IN_SET(i->type, UNIT_FILE_TYPE_REGULAR, UNIT_FILE_TYPE_MASKED)); -- log_debug("Found unit %s at %s (%s)", name, strna(i->path), -- i->type == UNIT_FILE_TYPE_REGULAR ? "regular file" : "mask"); -+ assert(IN_SET(info->type, UNIT_FILE_TYPE_REGULAR, UNIT_FILE_TYPE_MASKED)); -+ log_debug("Found unit %s at %s (%s)", name, strna(info->path), -+ info->type == UNIT_FILE_TYPE_REGULAR ? "regular file" : "mask"); - - /* Shortcut things, if the caller just wants to know if this unit exists. */ - if (!ret) - return 0; - -- switch (i->type) { -+ switch (info->type) { - - case UNIT_FILE_TYPE_MASKED: -- r = path_is_runtime(lp, i->path, true); -+ r = path_is_runtime(lp, info->path, true); - if (r < 0) - return r; - -@@ -2805,12 +2801,12 @@ int unit_file_lookup_state( - - case UNIT_FILE_TYPE_REGULAR: - /* Check if the name we were querying is actually an alias */ -- if (!streq(name, basename(i->path)) && !unit_name_is_valid(i->name, UNIT_NAME_INSTANCE)) { -+ if (!streq(name, basename(info->path)) && !unit_name_is_valid(info->name, UNIT_NAME_INSTANCE)) { - state = UNIT_FILE_ALIAS; - break; - } - -- r = path_is_generator(lp, i->path); -+ r = path_is_generator(lp, info->path); - if (r < 0) - return r; - if (r > 0) { -@@ -2818,7 +2814,7 @@ int unit_file_lookup_state( - break; - } - -- r = path_is_transient(lp, i->path); -+ r = path_is_transient(lp, info->path); - if (r < 0) - return r; - if (r > 0) { -@@ -2829,7 +2825,7 @@ int unit_file_lookup_state( - /* Check if any of the Alias= symlinks have been created. - * We ignore other aliases, and only check those that would - * be created by systemctl enable for this unit. */ -- r = find_symlinks_in_scope(scope, lp, i, true, &state); -+ r = find_symlinks_in_scope(scope, lp, info, true, &state); - if (r < 0) - return r; - if (r > 0) -@@ -2837,15 +2833,15 @@ int unit_file_lookup_state( - - /* Check if the file is known under other names. If it is, - * it might be in use. Report that as UNIT_FILE_INDIRECT. */ -- r = find_symlinks_in_scope(scope, lp, i, false, &state); -+ r = find_symlinks_in_scope(scope, lp, info, false, &state); - if (r < 0) - return r; - if (r > 0) - state = UNIT_FILE_INDIRECT; - else { -- if (unit_file_install_info_has_rules(i)) -+ if (unit_file_install_info_has_rules(info)) - state = UNIT_FILE_DISABLED; -- else if (unit_file_install_info_has_also(i)) -+ else if (unit_file_install_info_has_also(info)) - state = UNIT_FILE_INDIRECT; - else - state = UNIT_FILE_STATIC; -@@ -2882,7 +2878,7 @@ int unit_file_get_state( - } - - int unit_file_exists(UnitFileScope scope, const LookupPaths *lp, const char *name) { -- _cleanup_(install_context_done) InstallContext c = {}; -+ _cleanup_(install_context_done) InstallContext c = { .scope = scope }; - int r; - - assert(lp); -@@ -2891,7 +2887,7 @@ int unit_file_exists(UnitFileScope scope, const LookupPaths *lp, const char *nam - if (!unit_name_is_valid(name, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_discover(scope, &c, lp, name, 0, NULL, NULL, NULL); -+ r = install_info_discover(&c, lp, name, 0, NULL, NULL, NULL); - if (r == -ENOENT) - return 0; - if (r < 0) -@@ -3150,7 +3146,6 @@ int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char - } - - static int execute_preset( -- UnitFileScope scope, - UnitFileFlags file_flags, - InstallContext *plus, - InstallContext *minus, -@@ -3171,7 +3166,7 @@ static int execute_preset( - if (mode != UNIT_FILE_PRESET_ENABLE_ONLY) { - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - -- r = install_context_mark_for_removal(scope, minus, lp, &remove_symlinks_to, config_path, changes, n_changes); -+ r = install_context_mark_for_removal(minus, lp, &remove_symlinks_to, config_path, changes, n_changes); - if (r < 0) - return r; - -@@ -3183,9 +3178,10 @@ static int execute_preset( - int q; - - /* Returns number of symlinks that where supposed to be installed. */ -- q = install_context_apply(scope, -+ q = install_context_apply(plus, lp, - file_flags | UNIT_FILE_IGNORE_AUXILIARY_FAILURE, -- plus, lp, config_path, SEARCH_LOAD, changes, n_changes); -+ config_path, -+ SEARCH_LOAD, changes, n_changes); - if (r >= 0) { - if (q < 0) - r = q; -@@ -3207,20 +3203,20 @@ static int preset_prepare_one( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(install_context_done) InstallContext tmp = {}; -+ _cleanup_(install_context_done) InstallContext tmp = { .scope = scope }; - _cleanup_strv_free_ char **instance_name_list = NULL; -- UnitFileInstallInfo *i; -+ UnitFileInstallInfo *info; - int r; - - if (install_info_find(plus, name) || install_info_find(minus, name)) - return 0; - -- r = install_info_discover(scope, &tmp, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover(&tmp, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - if (r < 0) - return r; -- if (!streq(name, i->name)) { -- log_debug("Skipping %s because it is an alias for %s.", name, i->name); -+ if (!streq(name, info->name)) { -+ log_debug("Skipping %s because it is an alias for %s.", name, info->name); - return 0; - } - -@@ -3232,21 +3228,21 @@ static int preset_prepare_one( - if (instance_name_list) { - char **s; - STRV_FOREACH(s, instance_name_list) { -- r = install_info_discover_and_check(scope, plus, lp, *s, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover_and_check(plus, lp, *s, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - if (r < 0) - return r; - } - } else { -- r = install_info_discover_and_check(scope, plus, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover_and_check(plus, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - if (r < 0) - return r; - } - - } else -- r = install_info_discover(scope, minus, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -- &i, changes, n_changes); -+ r = install_info_discover(minus, lp, name, SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ &info, changes, n_changes); - - return r; - } -@@ -3289,7 +3285,7 @@ int unit_file_preset( - return r; - } - -- return execute_preset(scope, file_flags, &plus, &minus, &lp, config_path, files, mode, changes, n_changes); -+ return execute_preset(file_flags, &plus, &minus, &lp, config_path, files, mode, changes, n_changes); - } - - int unit_file_preset_all( -@@ -3351,7 +3347,7 @@ int unit_file_preset_all( - } - } - -- return execute_preset(scope, file_flags, &plus, &minus, &lp, config_path, NULL, mode, changes, n_changes); -+ return execute_preset(file_flags, &plus, &minus, &lp, config_path, NULL, mode, changes, n_changes); - } - - static UnitFileList* unit_file_list_free_one(UnitFileList *f) { diff --git a/SOURCES/0173-core-unit-fix-logic-of-dropping-self-referencing-dep.patch b/SOURCES/0173-core-unit-fix-logic-of-dropping-self-referencing-dep.patch new file mode 100644 index 0000000..684c98c --- /dev/null +++ b/SOURCES/0173-core-unit-fix-logic-of-dropping-self-referencing-dep.patch @@ -0,0 +1,32 @@ +From 1d12983063afc64709894d80b7adcf6609aa9a43 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 15 Nov 2022 23:08:35 +0900 +Subject: [PATCH] core/unit: fix logic of dropping self-referencing + dependencies + +Fixes a bug in 15ed3c3a188cf7fa5a60ae508fc7a3ed048d2220. + +(cherry picked from commit 53e0e6ef0eea396bb432cbfc1f2f6ea1272ff1f1) + +Related: #2160477 +--- + src/core/unit.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index ae9f688ad2..dbbf818622 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1130,10 +1130,11 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + } + } else { + assert_se(r >= 0); +- TAKE_PTR(other_deps); + + if (hashmap_remove(other_deps, u)) + unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); ++ ++ TAKE_PTR(other_deps); + } + } + diff --git a/SOURCES/0173-shared-specifier-fix-u-U-g-G-when-called-as-unprivil.patch b/SOURCES/0173-shared-specifier-fix-u-U-g-G-when-called-as-unprivil.patch deleted file mode 100644 index ec381a7..0000000 --- a/SOURCES/0173-shared-specifier-fix-u-U-g-G-when-called-as-unprivil.patch +++ /dev/null @@ -1,549 +0,0 @@ -From 87df0601074b024ab591534e0e78b2d1e7013a8d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 9 Mar 2022 22:29:19 +0100 -Subject: [PATCH] shared/specifier: fix %u/%U/%g/%G when called as unprivileged - user -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We would resolve those specifiers to the calling user/group. This is mostly OK -when done in the manager, because the manager generally operates as root -in system mode, and a non-root in user mode. It would still be wrong if -called with --test though. But in systemctl, this would be generally wrong, -since we can call 'systemctl --system' as a normal user, either for testing -or even for actual operation with '--root=…'. - -When operating in --global mode, %u/%U/%g/%G should return an error. - -The information whether we're operating in system mode, user mode, or global -mode is passed as the data pointer to specifier_group_name(), specifier_user_name(), -specifier_group_id(), specifier_user_id(). We can't use userdata, because -it's already used for other things. - -(cherry picked from commit 172e9cc3ee3dcca288d04c744984a9a3b2a0d008) - -Related: #2082131 ---- - src/core/unit-printf.c | 4 +- - src/shared/install-printf.c | 9 ++- - src/shared/install-printf.h | 7 ++- - src/shared/install.c | 9 +-- - src/shared/specifier.c | 52 ++++++++++++++--- - src/shared/specifier.h | 10 ++-- - src/test/test-load-fragment.c | 101 +++++++++++++++++++--------------- - src/test/test-specifier.c | 3 +- - src/tmpfiles/tmpfiles.c | 53 +++++++++--------- - test/test-systemctl-enable.sh | 11 ++-- - test/test-systemd-tmpfiles.py | 8 +-- - 11 files changed, 163 insertions(+), 104 deletions(-) - -diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c -index 46c383b841..3086356419 100644 ---- a/src/core/unit-printf.c -+++ b/src/core/unit-printf.c -@@ -190,7 +190,7 @@ int unit_name_printf(const Unit *u, const char* format, char **ret) { - - COMMON_SYSTEM_SPECIFIERS, - -- COMMON_CREDS_SPECIFIERS, -+ COMMON_CREDS_SPECIFIERS(u->manager->unit_file_scope), - {} - }; - -@@ -256,7 +256,7 @@ int unit_full_printf_full(const Unit *u, const char *format, size_t max_length, - - COMMON_SYSTEM_SPECIFIERS, - -- COMMON_CREDS_SPECIFIERS, -+ COMMON_CREDS_SPECIFIERS(u->manager->unit_file_scope), - - COMMON_TMP_SPECIFIERS, - {} -diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c -index 6ff4198ac9..963102674b 100644 ---- a/src/shared/install-printf.c -+++ b/src/shared/install-printf.c -@@ -103,7 +103,12 @@ static int specifier_last_component(char specifier, const void *data, const char - return 0; - } - --int install_name_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret) { -+int install_name_printf( -+ UnitFileScope scope, -+ const UnitFileInstallInfo *i, -+ const char *format, -+ const char *root, -+ char **ret) { - /* This is similar to unit_name_printf() */ - - const Specifier table[] = { -@@ -115,7 +120,7 @@ int install_name_printf(const UnitFileInstallInfo *i, const char *format, const - - COMMON_SYSTEM_SPECIFIERS, - -- COMMON_CREDS_SPECIFIERS, -+ COMMON_CREDS_SPECIFIERS(scope), - {} - }; - -diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h -index 5ca9406797..d2cccdf66d 100644 ---- a/src/shared/install-printf.h -+++ b/src/shared/install-printf.h -@@ -4,4 +4,9 @@ - #include "install.h" - #include "unit-name.h" - --int install_name_printf(const UnitFileInstallInfo *i, const char *format, const char *root, char **ret); -+int install_name_printf( -+ UnitFileScope scope, -+ const UnitFileInstallInfo *i, -+ const char *format, -+ const char *root, -+ char **ret); -diff --git a/src/shared/install.c b/src/shared/install.c -index bfdeee48bf..8d82cb6b16 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1160,7 +1160,7 @@ static int config_parse_also( - if (r == 0) - break; - -- r = install_name_printf(info, word, info->root, &printed); -+ r = install_name_printf(ctx->scope, info, word, info->root, &printed); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve unit name in Also=\"%s\": %m", word); -@@ -1191,6 +1191,7 @@ static int config_parse_default_instance( - void *data, - void *userdata) { - -+ InstallContext *ctx = ASSERT_PTR(data); - UnitFileInstallInfo *info = ASSERT_PTR(userdata); - _cleanup_free_ char *printed = NULL; - int r; -@@ -1208,7 +1209,7 @@ static int config_parse_default_instance( - return log_syntax(unit, LOG_WARNING, filename, line, 0, - "DefaultInstance= only makes sense for template units, ignoring."); - -- r = install_name_printf(info, rvalue, info->root, &printed); -+ r = install_name_printf(ctx->scope, info, rvalue, info->root, &printed); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve instance name in DefaultInstance=\"%s\": %m", rvalue); -@@ -1780,7 +1781,7 @@ static int install_info_symlink_alias( - STRV_FOREACH(s, info->aliases) { - _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - -- q = install_name_printf(info, *s, info->root, &dst); -+ q = install_name_printf(scope, info, *s, info->root, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -@@ -1867,7 +1868,7 @@ static int install_info_symlink_wants( - STRV_FOREACH(s, list) { - _cleanup_free_ char *path = NULL, *dst = NULL; - -- q = install_name_printf(info, *s, info->root, &dst); -+ q = install_name_printf(scope, info, *s, info->root, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -diff --git a/src/shared/specifier.c b/src/shared/specifier.c -index a917378427..ac353a651c 100644 ---- a/src/shared/specifier.c -+++ b/src/shared/specifier.c -@@ -21,6 +21,7 @@ - #include "specifier.h" - #include "string-util.h" - #include "strv.h" -+#include "unit-file.h" - #include "user-util.h" - - /* -@@ -253,9 +254,15 @@ int specifier_os_image_version(char specifier, const void *data, const char *roo - } - - int specifier_group_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -+ UnitFileScope scope = PTR_TO_INT(data); - char *t; - -- t = gid_to_name(getgid()); -+ assert(ret); -+ -+ if (scope == UNIT_FILE_GLOBAL) -+ return -EINVAL; -+ -+ t = gid_to_name(scope == UNIT_FILE_USER ? getgid() : 0); - if (!t) - return -ENOMEM; - -@@ -264,23 +271,42 @@ int specifier_group_name(char specifier, const void *data, const char *root, con - } - - int specifier_group_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- if (asprintf(ret, UID_FMT, getgid()) < 0) -+ UnitFileScope scope = PTR_TO_INT(data); -+ gid_t gid; -+ -+ assert(ret); -+ -+ if (scope == UNIT_FILE_GLOBAL) -+ return -EINVAL; -+ -+ gid = scope == UNIT_FILE_USER ? getgid() : 0; -+ -+ if (asprintf(ret, UID_FMT, gid) < 0) - return -ENOMEM; - - return 0; - } - - int specifier_user_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -+ UnitFileScope scope = PTR_TO_INT(data); -+ uid_t uid; - char *t; - -- /* If we are UID 0 (root), this will not result in NSS, otherwise it might. This is good, as we want to be able -- * to run this in PID 1, where our user ID is 0, but where NSS lookups are not allowed. -+ assert(ret); - -- * We don't use getusername_malloc() here, because we don't want to look at $USER, to remain consistent with -- * specifer_user_id() below. -+ if (scope == UNIT_FILE_GLOBAL) -+ return -EINVAL; -+ -+ uid = scope == UNIT_FILE_USER ? getuid() : 0; -+ -+ /* If we are UID 0 (root), this will not result in NSS, otherwise it might. This is good, as we want -+ * to be able to run this in PID 1, where our user ID is 0, but where NSS lookups are not allowed. -+ -+ * We don't use getusername_malloc() here, because we don't want to look at $USER, to remain -+ * consistent with specifer_user_id() below. - */ - -- t = uid_to_name(getuid()); -+ t = uid_to_name(uid); - if (!t) - return -ENOMEM; - -@@ -289,7 +315,17 @@ int specifier_user_name(char specifier, const void *data, const char *root, cons - } - - int specifier_user_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- if (asprintf(ret, UID_FMT, getuid()) < 0) -+ UnitFileScope scope = PTR_TO_INT(data); -+ uid_t uid; -+ -+ assert(ret); -+ -+ if (scope == UNIT_FILE_GLOBAL) -+ return -EINVAL; -+ -+ uid = scope == UNIT_FILE_USER ? getuid() : 0; -+ -+ if (asprintf(ret, UID_FMT, uid) < 0) - return -ENOMEM; - - return 0; -diff --git a/src/shared/specifier.h b/src/shared/specifier.h -index c433ee2d63..3c619a6c8f 100644 ---- a/src/shared/specifier.h -+++ b/src/shared/specifier.h -@@ -80,11 +80,11 @@ int specifier_var_tmp_dir(char specifier, const void *data, const char *root, co - { 'w', specifier_os_version_id, NULL }, \ - { 'W', specifier_os_variant_id, NULL } - --#define COMMON_CREDS_SPECIFIERS \ -- { 'g', specifier_group_name, NULL }, \ -- { 'G', specifier_group_id, NULL }, \ -- { 'u', specifier_user_name, NULL }, \ -- { 'U', specifier_user_id, NULL } -+#define COMMON_CREDS_SPECIFIERS(scope) \ -+ { 'g', specifier_group_name, INT_TO_PTR(scope) }, \ -+ { 'G', specifier_group_id, INT_TO_PTR(scope) }, \ -+ { 'u', specifier_user_name, INT_TO_PTR(scope) }, \ -+ { 'U', specifier_user_id, INT_TO_PTR(scope) } - - #define COMMON_TMP_SPECIFIERS \ - { 'T', specifier_tmp_dir, NULL }, \ -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index c579be4150..9df53cec2b 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -526,59 +526,74 @@ TEST(install_printf, .sd_booted = true) { - assert_se(user = uid_to_name(getuid())); - assert_se(asprintf(&uid, UID_FMT, getuid()) >= 0); - --#define expect(src, pattern, result) \ -+#define expect(scope, src, pattern, result) \ - do { \ -- _cleanup_free_ char *t = NULL; \ -- _cleanup_free_ char \ -- *d1 = strdup(i.name), \ -- *d2 = strdup(i.path); \ -- assert_se(install_name_printf(&src, pattern, NULL, &t) >= 0 || !result); \ -+ _cleanup_free_ char *t = NULL, \ -+ *d1 = ASSERT_PTR(strdup(i.name)), \ -+ *d2 = ASSERT_PTR(strdup(i.path)); \ -+ int r = install_name_printf(scope, &src, pattern, NULL, &t); \ -+ assert_se(result ? r >= 0 : r < 0); \ - memzero(i.name, strlen(i.name)); \ - memzero(i.path, strlen(i.path)); \ -- assert_se(d1 && d2); \ - if (result) { \ - printf("%s\n", t); \ - assert_se(streq(t, result)); \ -- } else assert_se(t == NULL); \ -+ } else \ -+ assert_se(!t); \ - strcpy(i.name, d1); \ - strcpy(i.path, d2); \ - } while (false) - -- expect(i, "%n", "name.service"); -- expect(i, "%N", "name"); -- expect(i, "%p", "name"); -- expect(i, "%i", ""); -- expect(i, "%j", "name"); -- expect(i, "%g", group); -- expect(i, "%G", gid); -- expect(i, "%u", user); -- expect(i, "%U", uid); -- -- expect(i, "%m", mid); -- expect(i, "%b", bid); -- expect(i, "%H", host); -- -- expect(i2, "%g", group); -- expect(i2, "%G", gid); -- expect(i2, "%u", user); -- expect(i2, "%U", uid); -- -- expect(i3, "%n", "name@inst.service"); -- expect(i3, "%N", "name@inst"); -- expect(i3, "%p", "name"); -- expect(i3, "%g", group); -- expect(i3, "%G", gid); -- expect(i3, "%u", user); -- expect(i3, "%U", uid); -- -- expect(i3, "%m", mid); -- expect(i3, "%b", bid); -- expect(i3, "%H", host); -- -- expect(i4, "%g", group); -- expect(i4, "%G", gid); -- expect(i4, "%u", user); -- expect(i4, "%U", uid); -+ expect(UNIT_FILE_SYSTEM, i, "%n", "name.service"); -+ expect(UNIT_FILE_SYSTEM, i, "%N", "name"); -+ expect(UNIT_FILE_SYSTEM, i, "%p", "name"); -+ expect(UNIT_FILE_SYSTEM, i, "%i", ""); -+ expect(UNIT_FILE_SYSTEM, i, "%j", "name"); -+ expect(UNIT_FILE_SYSTEM, i, "%g", "root"); -+ expect(UNIT_FILE_SYSTEM, i, "%G", "0"); -+ expect(UNIT_FILE_SYSTEM, i, "%u", "root"); -+ expect(UNIT_FILE_SYSTEM, i, "%U", "0"); -+ -+ expect(UNIT_FILE_SYSTEM, i, "%m", mid); -+ expect(UNIT_FILE_SYSTEM, i, "%b", bid); -+ expect(UNIT_FILE_SYSTEM, i, "%H", host); -+ -+ expect(UNIT_FILE_SYSTEM, i2, "%g", "root"); -+ expect(UNIT_FILE_SYSTEM, i2, "%G", "0"); -+ expect(UNIT_FILE_SYSTEM, i2, "%u", "root"); -+ expect(UNIT_FILE_SYSTEM, i2, "%U", "0"); -+ -+ expect(UNIT_FILE_USER, i2, "%g", group); -+ expect(UNIT_FILE_USER, i2, "%G", gid); -+ expect(UNIT_FILE_USER, i2, "%u", user); -+ expect(UNIT_FILE_USER, i2, "%U", uid); -+ -+ /* gcc-12.0.1-0.9.fc36.x86_64 insist that streq(…, NULL) is called, -+ * even though the call is inside of a conditional where the pointer is checked. :( */ -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wnonnull" -+ expect(UNIT_FILE_GLOBAL, i2, "%g", NULL); -+ expect(UNIT_FILE_GLOBAL, i2, "%G", NULL); -+ expect(UNIT_FILE_GLOBAL, i2, "%u", NULL); -+ expect(UNIT_FILE_GLOBAL, i2, "%U", NULL); -+#pragma GCC diagnostic pop -+ -+ expect(UNIT_FILE_SYSTEM, i3, "%n", "name@inst.service"); -+ expect(UNIT_FILE_SYSTEM, i3, "%N", "name@inst"); -+ expect(UNIT_FILE_SYSTEM, i3, "%p", "name"); -+ expect(UNIT_FILE_USER, i3, "%g", group); -+ expect(UNIT_FILE_USER, i3, "%G", gid); -+ expect(UNIT_FILE_USER, i3, "%u", user); -+ expect(UNIT_FILE_USER, i3, "%U", uid); -+ -+ expect(UNIT_FILE_SYSTEM, i3, "%m", mid); -+ expect(UNIT_FILE_SYSTEM, i3, "%b", bid); -+ expect(UNIT_FILE_SYSTEM, i3, "%H", host); -+ -+ expect(UNIT_FILE_USER, i4, "%g", group); -+ expect(UNIT_FILE_USER, i4, "%G", gid); -+ expect(UNIT_FILE_USER, i4, "%u", user); -+ expect(UNIT_FILE_USER, i4, "%U", uid); - } - - static uint64_t make_cap(int cap) { -diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c -index a45d1bd0b9..dd47f0285e 100644 ---- a/src/test/test-specifier.c -+++ b/src/test/test-specifier.c -@@ -7,6 +7,7 @@ - #include "string-util.h" - #include "strv.h" - #include "tests.h" -+#include "unit-file.h" - - static void test_specifier_escape_one(const char *a, const char *b) { - _cleanup_free_ char *x = NULL; -@@ -45,7 +46,7 @@ TEST(specifier_escape_strv) { - static const Specifier specifier_table[] = { - COMMON_SYSTEM_SPECIFIERS, - -- COMMON_CREDS_SPECIFIERS, -+ COMMON_CREDS_SPECIFIERS(UNIT_FILE_USER), - { 'h', specifier_user_home, NULL }, - - COMMON_TMP_SPECIFIERS, -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index fcab51c208..aa7ff73a36 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -204,31 +204,6 @@ STATIC_DESTRUCTOR_REGISTER(arg_image, freep); - static int specifier_machine_id_safe(char specifier, const void *data, const char *root, const void *userdata, char **ret); - static int specifier_directory(char specifier, const void *data, const char *root, const void *userdata, char **ret); - --static const Specifier specifier_table[] = { -- { 'a', specifier_architecture, NULL }, -- { 'b', specifier_boot_id, NULL }, -- { 'B', specifier_os_build_id, NULL }, -- { 'H', specifier_host_name, NULL }, -- { 'l', specifier_short_host_name, NULL }, -- { 'm', specifier_machine_id_safe, NULL }, -- { 'o', specifier_os_id, NULL }, -- { 'v', specifier_kernel_release, NULL }, -- { 'w', specifier_os_version_id, NULL }, -- { 'W', specifier_os_variant_id, NULL }, -- -- { 'h', specifier_user_home, NULL }, -- -- { 'C', specifier_directory, UINT_TO_PTR(DIRECTORY_CACHE) }, -- { 'L', specifier_directory, UINT_TO_PTR(DIRECTORY_LOGS) }, -- { 'S', specifier_directory, UINT_TO_PTR(DIRECTORY_STATE) }, -- { 't', specifier_directory, UINT_TO_PTR(DIRECTORY_RUNTIME) }, -- -- COMMON_CREDS_SPECIFIERS, -- -- COMMON_TMP_SPECIFIERS, -- {} --}; -- - static int specifier_machine_id_safe(char specifier, const void *data, const char *root, const void *userdata, char **ret) { - int r; - -@@ -2743,7 +2718,7 @@ static bool should_include_path(const char *path) { - return false; - } - --static int specifier_expansion_from_arg(Item *i) { -+static int specifier_expansion_from_arg(const Specifier *specifier_table, Item *i) { - int r; - - assert(i); -@@ -2951,6 +2926,30 @@ static int parse_line( - assert(line >= 1); - assert(buffer); - -+ const Specifier specifier_table[] = { -+ { 'a', specifier_architecture, NULL }, -+ { 'b', specifier_boot_id, NULL }, -+ { 'B', specifier_os_build_id, NULL }, -+ { 'H', specifier_host_name, NULL }, -+ { 'l', specifier_short_host_name, NULL }, -+ { 'm', specifier_machine_id_safe, NULL }, -+ { 'o', specifier_os_id, NULL }, -+ { 'v', specifier_kernel_release, NULL }, -+ { 'w', specifier_os_version_id, NULL }, -+ { 'W', specifier_os_variant_id, NULL }, -+ -+ { 'h', specifier_user_home, NULL }, -+ -+ { 'C', specifier_directory, UINT_TO_PTR(DIRECTORY_CACHE) }, -+ { 'L', specifier_directory, UINT_TO_PTR(DIRECTORY_LOGS) }, -+ { 'S', specifier_directory, UINT_TO_PTR(DIRECTORY_STATE) }, -+ { 't', specifier_directory, UINT_TO_PTR(DIRECTORY_RUNTIME) }, -+ -+ COMMON_CREDS_SPECIFIERS(arg_user ? UNIT_FILE_USER : UNIT_FILE_SYSTEM), -+ COMMON_TMP_SPECIFIERS, -+ {} -+ }; -+ - r = extract_many_words( - &buffer, - NULL, -@@ -3155,7 +3154,7 @@ static int parse_line( - if (!should_include_path(i.path)) - return 0; - -- r = specifier_expansion_from_arg(&i); -+ r = specifier_expansion_from_arg(specifier_table, &i); - if (r == -ENXIO) - return log_unresolvable_specifier(fname, line); - if (r < 0) { -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index da1fffe944..8ac1342b91 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -500,9 +500,10 @@ check_alias t '' && { echo "Expected failure" >&2; exit 1; } - check_alias T '' && { echo "Expected failure" >&2; exit 1; } - check_alias V '' && { echo "Expected failure" >&2; exit 1; } - --# FIXME: we use the calling user instead of root :( --check_alias g root || : --check_alias G 0 || : -+check_alias g root -+check_alias G 0 -+check_alias u root -+check_alias U 0 - - check_alias i "" - -@@ -521,10 +522,6 @@ check_alias N 'some-some-link6@' - - check_alias p 'some-some-link6' - --# FIXME: we use the calling user instead of root :( --check_alias u root || : --check_alias U 0 || : -- - check_alias v "$(uname -r)" - - check_alias % '%' && { echo "Expected failure because % is not legal in unit name" >&2; exit 1; } -diff --git a/test/test-systemd-tmpfiles.py b/test/test-systemd-tmpfiles.py -index 3376029463..ba42b3fa37 100755 ---- a/test/test-systemd-tmpfiles.py -+++ b/test/test-systemd-tmpfiles.py -@@ -98,13 +98,13 @@ def test_valid_specifiers(*, user): - test_content('f {} - - - - %b', '{}'.format(id128.get_boot().hex), user=user) - test_content('f {} - - - - %H', '{}'.format(socket.gethostname()), user=user) - test_content('f {} - - - - %v', '{}'.format(os.uname().release), user=user) -- test_content('f {} - - - - %U', '{}'.format(os.getuid()), user=user) -- test_content('f {} - - - - %G', '{}'.format(os.getgid()), user=user) -+ test_content('f {} - - - - %U', '{}'.format(os.getuid() if user else 0), user=user) -+ test_content('f {} - - - - %G', '{}'.format(os.getgid() if user else 0), user=user) - -- puser = pwd.getpwuid(os.getuid()) -+ puser = pwd.getpwuid(os.getuid() if user else 0) - test_content('f {} - - - - %u', '{}'.format(puser.pw_name), user=user) - -- pgroup = grp.getgrgid(os.getgid()) -+ pgroup = grp.getgrgid(os.getgid() if user else 0) - test_content('f {} - - - - %g', '{}'.format(pgroup.gr_name), user=user) - - # Note that %h is the only specifier in which we look the environment, diff --git a/SOURCES/0174-core-unit-merge-two-loops-into-one.patch b/SOURCES/0174-core-unit-merge-two-loops-into-one.patch new file mode 100644 index 0000000..a8250dc --- /dev/null +++ b/SOURCES/0174-core-unit-merge-two-loops-into-one.patch @@ -0,0 +1,96 @@ +From 471e4ee0b4fa9c7e9a5ea875fbf22de77fdd25d0 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 17 Nov 2022 12:46:45 +0900 +Subject: [PATCH] core/unit: merge two loops into one + +No functional change, just refactoring. + +(cherry picked from commit 4b7918a65cc2571a2b3fc166229e1b8db463e217) + +Related: #2160477 +--- + src/core/unit.c | 47 +++++++++++++++-------------------------------- + 1 file changed, 15 insertions(+), 32 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index dbbf818622..6b49edc2de 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1047,7 +1047,6 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + Hashmap *deps; + void *dt; /* Actually of type UnitDependency, except that we don't bother casting it here, + * since the hashmaps all want it as void pointer. */ +- int r; + + assert(u); + assert(other); +@@ -1074,6 +1073,8 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + if (!other_deps) + break; /* done! */ + ++ deps = hashmap_get(u->dependencies, dt); ++ + /* Now iterate through all dependencies of this dependency type, of 'other'. We refer to the + * referenced units as 'back'. */ + HASHMAP_FOREACH_KEY(di_back.data, back, other_deps) { +@@ -1084,6 +1085,7 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + /* This is a dependency pointing back to the unit we want to merge with? + * Suppress it (but warn) */ + unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); ++ hashmap_remove(other_deps, back); + continue; + } + +@@ -1102,40 +1104,21 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + di_move.origin_mask, + di_move.destination_mask) >= 0); + } +- } + +- /* Now all references towards 'other' of the current type 'dt' are corrected to point to +- * 'u'. Lets's now move the deps of type 'dt' from 'other' to 'u'. First, let's try to move +- * them per type wholesale. */ +- r = hashmap_put(u->dependencies, dt, other_deps); +- if (r == -EEXIST) { + /* The target unit already has dependencies of this type, let's then merge this individually. */ +- +- assert_se(deps = hashmap_get(u->dependencies, dt)); +- +- for (;;) { +- UnitDependencyInfo di_move; +- +- /* Get first dep */ +- di_move.data = hashmap_steal_first_key_and_value(other_deps, (void**) &back); +- if (!di_move.data) +- break; /* done */ +- if (back == u) { +- /* Would point back to us, ignore */ +- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); +- continue; +- } +- +- assert_se(unit_per_dependency_type_hashmap_update(deps, back, di_move.origin_mask, di_move.destination_mask) >= 0); +- } +- } else { +- assert_se(r >= 0); +- +- if (hashmap_remove(other_deps, u)) +- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); +- +- TAKE_PTR(other_deps); ++ if (deps) ++ assert_se(unit_per_dependency_type_hashmap_update( ++ deps, ++ back, ++ di_back.origin_mask, ++ di_back.destination_mask) >= 0); + } ++ ++ /* Now all references towards 'other' of the current type 'dt' are corrected to point to 'u'. ++ * Lets's now move the deps of type 'dt' from 'other' to 'u'. If the unit does not have ++ * dependencies of this type, let's move them per type wholesale. */ ++ if (!deps) ++ assert_se(hashmap_put(u->dependencies, dt, TAKE_PTR(other_deps)) >= 0); + } + + other->dependencies = hashmap_free(other->dependencies); diff --git a/SOURCES/0174-shared-install-simplify-unit_file_dump_changes.patch b/SOURCES/0174-shared-install-simplify-unit_file_dump_changes.patch deleted file mode 100644 index a463fab..0000000 --- a/SOURCES/0174-shared-install-simplify-unit_file_dump_changes.patch +++ /dev/null @@ -1,118 +0,0 @@ -From cb49e80f8adf8fe81b6aa96b17a39a96850dcfa6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 09:19:37 +0100 -Subject: [PATCH] shared/install: simplify unit_file_dump_changes() - -No functional change. - -(cherry picked from commit 32450f5348c03262f3257af328b6547cbfba5859) - -Related: #2082131 ---- - src/shared/install.c | 63 +++++++++++++++++++------------------------- - 1 file changed, 27 insertions(+), 36 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 8d82cb6b16..80863b448b 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -320,7 +320,7 @@ void unit_file_changes_free(UnitFileChange *changes, size_t n_changes) { - } - - void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *changes, size_t n_changes, bool quiet) { -- bool logged = false; -+ int err = 0; - - assert(changes || n_changes == 0); - /* If verb is not specified, errors are not allowed! */ -@@ -361,64 +361,55 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - break; - case -EEXIST: - if (changes[i].source) -- log_error_errno(changes[i].type_or_errno, -- "Failed to %s unit, file \"%s\" already exists and is a symlink to \"%s\".", -- verb, changes[i].path, changes[i].source); -+ err = log_error_errno(changes[i].type_or_errno, -+ "Failed to %s unit, file \"%s\" already exists and is a symlink to \"%s\".", -+ verb, changes[i].path, changes[i].source); - else -- log_error_errno(changes[i].type_or_errno, -- "Failed to %s unit, file \"%s\" already exists.", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, -+ "Failed to %s unit, file \"%s\" already exists.", -+ verb, changes[i].path); - break; - case -ERFKILL: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is masked.", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is masked.", -+ verb, changes[i].path); - break; - case -EADDRNOTAVAIL: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is transient or generated.", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s is transient or generated.", -+ verb, changes[i].path); - break; - case -EBADSLT: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, invalid specifier in \"%s\".", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, invalid specifier in \"%s\".", -+ verb, changes[i].path); - break; - case -EIDRM: -- log_error_errno(changes[i].type_or_errno, "Failed to %s %s, destination unit %s is a non-template unit.", -- verb, changes[i].source, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s %s, destination unit %s is a non-template unit.", -+ verb, changes[i].source, changes[i].path); - break; - case -EUCLEAN: -- log_error_errno(changes[i].type_or_errno, -- "Failed to %s unit, \"%s\" is not a valid unit name.", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, -+ "Failed to %s unit, \"%s\" is not a valid unit name.", -+ verb, changes[i].path); - break; - case -ELOOP: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, refusing to operate on linked unit file %s.", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, refusing to operate on linked unit file %s.", -+ verb, changes[i].path); - break; - case -ENOENT: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s does not exist.", verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s does not exist.", -+ verb, changes[i].path); - break; - case -EUNATCH: -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, cannot resolve specifiers in \"%s\".", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, cannot resolve specifiers in \"%s\".", -+ verb, changes[i].path); - break; - default: - assert(changes[i].type_or_errno < 0); -- log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file \"%s\": %m", -- verb, changes[i].path); -- logged = true; -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, file \"%s\": %m", -+ verb, changes[i].path); - } - } - -- if (r < 0 && !logged) -+ if (r < 0 && err >= 0) - log_error_errno(r, "Failed to %s: %m.", verb); - } - diff --git a/SOURCES/0175-shared-install-propagate-errors-about-invalid-aliase.patch b/SOURCES/0175-shared-install-propagate-errors-about-invalid-aliase.patch deleted file mode 100644 index 4fa41b3..0000000 --- a/SOURCES/0175-shared-install-propagate-errors-about-invalid-aliase.patch +++ /dev/null @@ -1,325 +0,0 @@ -From 35bcb96c1ac2db777db1649026f931ce77c9c7ba Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 11:03:41 +0100 -Subject: [PATCH] shared/install: propagate errors about invalid aliases and - such too - -If an invalid arg appears in [Install] Alias=, WantedBy=, RequiredBy=, -we'd warn in the logs, but not propagate this information to the caller, -and in particular not over dbus. But if we call "systemctl enable" on a -unit, and the config if invalid, this information is quite important. - -(cherry picked from commit cbfdbffb618f1d75e668c59887a27c7a60950546) - -Related: #2082131 ---- - src/basic/unit-file.c | 44 +++++++++++++------------- - src/basic/unit-file.h | 2 +- - src/shared/install.c | 61 ++++++++++++++++++++++++++---------- - src/shared/install.h | 7 ++++- - src/test/test-install-root.c | 2 +- - src/test/test-unit-file.c | 28 ++++++++--------- - 6 files changed, 88 insertions(+), 56 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index f7a10b22c6..105dacc1b2 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -69,7 +69,7 @@ int unit_symlink_name_compatible(const char *symlink, const char *target, bool i - return 0; - } - --int unit_validate_alias_symlink_and_warn(const char *filename, const char *target) { -+int unit_validate_alias_symlink_or_warn(int log_level, const char *filename, const char *target) { - const char *src, *dst; - _cleanup_free_ char *src_instance = NULL, *dst_instance = NULL; - UnitType src_unit_type, dst_unit_type; -@@ -92,51 +92,51 @@ int unit_validate_alias_symlink_and_warn(const char *filename, const char *targe - - src_name_type = unit_name_to_instance(src, &src_instance); - if (src_name_type < 0) -- return log_notice_errno(src_name_type, -- "%s: not a valid unit name \"%s\": %m", filename, src); -+ return log_full_errno(log_level, src_name_type, -+ "%s: not a valid unit name \"%s\": %m", filename, src); - - src_unit_type = unit_name_to_type(src); - assert(src_unit_type >= 0); /* unit_name_to_instance() checked the suffix already */ - - if (!unit_type_may_alias(src_unit_type)) -- return log_notice_errno(SYNTHETIC_ERRNO(EINVAL), -- "%s: symlinks are not allowed for units of this type, rejecting.", -- filename); -+ return log_full_errno(log_level, SYNTHETIC_ERRNO(EINVAL), -+ "%s: symlinks are not allowed for units of this type, rejecting.", -+ filename); - - if (src_name_type != UNIT_NAME_PLAIN && - !unit_type_may_template(src_unit_type)) -- return log_notice_errno(SYNTHETIC_ERRNO(EINVAL), -- "%s: templates not allowed for %s units, rejecting.", -- filename, unit_type_to_string(src_unit_type)); -+ return log_full_errno(log_level, SYNTHETIC_ERRNO(EINVAL), -+ "%s: templates not allowed for %s units, rejecting.", -+ filename, unit_type_to_string(src_unit_type)); - - /* dst checks */ - - dst_name_type = unit_name_to_instance(dst, &dst_instance); - if (dst_name_type < 0) -- return log_notice_errno(dst_name_type == -EINVAL ? SYNTHETIC_ERRNO(EXDEV) : dst_name_type, -- "%s points to \"%s\" which is not a valid unit name: %m", -- filename, dst); -+ return log_full_errno(log_level, dst_name_type == -EINVAL ? SYNTHETIC_ERRNO(EXDEV) : dst_name_type, -+ "%s points to \"%s\" which is not a valid unit name: %m", -+ filename, dst); - - if (!(dst_name_type == src_name_type || - (src_name_type == UNIT_NAME_INSTANCE && dst_name_type == UNIT_NAME_TEMPLATE))) -- return log_notice_errno(SYNTHETIC_ERRNO(EXDEV), -- "%s: symlink target name type \"%s\" does not match source, rejecting.", -- filename, dst); -+ return log_full_errno(log_level, SYNTHETIC_ERRNO(EXDEV), -+ "%s: symlink target name type \"%s\" does not match source, rejecting.", -+ filename, dst); - - if (dst_name_type == UNIT_NAME_INSTANCE) { - assert(src_instance); - assert(dst_instance); - if (!streq(src_instance, dst_instance)) -- return log_notice_errno(SYNTHETIC_ERRNO(EXDEV), -- "%s: unit symlink target \"%s\" instance name doesn't match, rejecting.", -- filename, dst); -+ return log_full_errno(log_level, SYNTHETIC_ERRNO(EXDEV), -+ "%s: unit symlink target \"%s\" instance name doesn't match, rejecting.", -+ filename, dst); - } - - dst_unit_type = unit_name_to_type(dst); - if (dst_unit_type != src_unit_type) -- return log_notice_errno(SYNTHETIC_ERRNO(EXDEV), -- "%s: symlink target \"%s\" has incompatible suffix, rejecting.", -- filename, dst); -+ return log_full_errno(log_level, SYNTHETIC_ERRNO(EXDEV), -+ "%s: symlink target \"%s\" has incompatible suffix, rejecting.", -+ filename, dst); - - return 0; - } -@@ -355,7 +355,7 @@ int unit_file_resolve_symlink( - "Suspicious symlink %s/%s→%s, treating as alias.", - dir, filename, simplified); - -- r = unit_validate_alias_symlink_and_warn(filename, simplified); -+ r = unit_validate_alias_symlink_or_warn(LOG_NOTICE, filename, simplified); - if (r < 0) - return r; - -diff --git a/src/basic/unit-file.h b/src/basic/unit-file.h -index e29e878cfd..b7c03e9c2c 100644 ---- a/src/basic/unit-file.h -+++ b/src/basic/unit-file.h -@@ -41,7 +41,7 @@ bool unit_type_may_alias(UnitType type) _const_; - bool unit_type_may_template(UnitType type) _const_; - - int unit_symlink_name_compatible(const char *symlink, const char *target, bool instance_propagation); --int unit_validate_alias_symlink_and_warn(const char *filename, const char *target); -+int unit_validate_alias_symlink_or_warn(int log_level, const char *filename, const char *target); - - bool lookup_paths_timestamp_hash_same(const LookupPaths *lp, uint64_t timestamp_hash, uint64_t *ret_new); - -diff --git a/src/shared/install.c b/src/shared/install.c -index 80863b448b..6da9ba6b0c 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -394,6 +394,14 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, refusing to operate on linked unit file %s.", - verb, changes[i].path); - break; -+ case -EXDEV: -+ if (changes[i].source) -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, cannot alias %s as %s.", -+ verb, changes[i].source, changes[i].path); -+ else -+ err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, invalid unit reference \"%s\".", -+ verb, changes[i].path); -+ break; - case -ENOENT: - err = log_error_errno(changes[i].type_or_errno, "Failed to %s unit, unit %s does not exist.", - verb, changes[i].path); -@@ -1678,7 +1686,13 @@ static int install_info_discover_and_check( - return install_info_may_process(ret ? *ret : NULL, lp, changes, n_changes); - } - --int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, char **ret_dst) { -+int unit_file_verify_alias( -+ const UnitFileInstallInfo *info, -+ const char *dst, -+ char **ret_dst, -+ UnitFileChange **changes, -+ size_t *n_changes) { -+ - _cleanup_free_ char *dst_updated = NULL; - int r; - -@@ -1705,15 +1719,19 @@ int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, cha - p = endswith(dir, ".wants"); - if (!p) - p = endswith(dir, ".requires"); -- if (!p) -- return log_warning_errno(SYNTHETIC_ERRNO(EXDEV), -- "Invalid path \"%s\" in alias.", dir); -+ if (!p) { -+ unit_file_changes_add(changes, n_changes, -EXDEV, dst, NULL); -+ return log_debug_errno(SYNTHETIC_ERRNO(EXDEV), "Invalid path \"%s\" in alias.", dir); -+ } -+ - *p = '\0'; /* dir should now be a unit name */ - - UnitNameFlags type = unit_name_classify(dir); -- if (type < 0) -- return log_warning_errno(SYNTHETIC_ERRNO(EXDEV), -- "Invalid unit name component \"%s\" in alias.", dir); -+ if (type < 0) { -+ unit_file_changes_add(changes, n_changes, -EXDEV, dst, NULL); -+ return log_debug_errno(SYNTHETIC_ERRNO(EXDEV), -+ "Invalid unit name component \"%s\" in alias.", dir); -+ } - - const bool instance_propagation = type == UNIT_NAME_TEMPLATE; - -@@ -1721,10 +1739,12 @@ int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, cha - r = unit_symlink_name_compatible(path_alias, info->name, instance_propagation); - if (r < 0) - return log_error_errno(r, "Failed to verify alias validity: %m"); -- if (r == 0) -- return log_warning_errno(SYNTHETIC_ERRNO(EXDEV), -- "Invalid unit \"%s\" symlink \"%s\".", -- info->name, dst); -+ if (r == 0) { -+ unit_file_changes_add(changes, n_changes, -EXDEV, dst, info->name); -+ return log_debug_errno(SYNTHETIC_ERRNO(EXDEV), -+ "Invalid unit \"%s\" symlink \"%s\".", -+ info->name, dst); -+ } - - } else { - /* If the symlink target has an instance set and the symlink source doesn't, we "propagate -@@ -1733,8 +1753,10 @@ int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, cha - _cleanup_free_ char *inst = NULL; - - UnitNameFlags type = unit_name_to_instance(info->name, &inst); -- if (type < 0) -- return log_error_errno(type, "Failed to extract instance name from \"%s\": %m", info->name); -+ if (type < 0) { -+ unit_file_changes_add(changes, n_changes, -EUCLEAN, info->name, NULL); -+ return log_debug_errno(type, "Failed to extract instance name from \"%s\": %m", info->name); -+ } - - if (type == UNIT_NAME_INSTANCE) { - r = unit_name_replace_instance(dst, inst, &dst_updated); -@@ -1744,9 +1766,14 @@ int unit_file_verify_alias(const UnitFileInstallInfo *info, const char *dst, cha - } - } - -- r = unit_validate_alias_symlink_and_warn(dst_updated ?: dst, info->name); -- if (r < 0) -+ r = unit_validate_alias_symlink_or_warn(LOG_DEBUG, dst_updated ?: dst, info->name); -+ if (r < 0) { -+ unit_file_changes_add(changes, n_changes, -+ r == -EINVAL ? -EXDEV : r, -+ dst_updated ?: dst, -+ info->name); - return r; -+ } - } - - *ret_dst = TAKE_PTR(dst_updated); -@@ -1778,7 +1805,7 @@ static int install_info_symlink_alias( - return q; - } - -- q = unit_file_verify_alias(info, dst, &dst_updated); -+ q = unit_file_verify_alias(info, dst, &dst_updated, changes, n_changes); - if (q < 0) - continue; - -@@ -3332,7 +3359,7 @@ int unit_file_preset_all( - - r = preset_prepare_one(scope, &plus, &minus, &lp, de->d_name, &presets, changes, n_changes); - if (r < 0 && -- !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EBADSLT, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT, -EUNATCH)) -+ !IN_SET(r, -EEXIST, -ERFKILL, -EADDRNOTAVAIL, -EBADSLT, -EIDRM, -EUCLEAN, -ELOOP, -ENOENT, -EUNATCH, -EXDEV)) - /* Ignore generated/transient/missing/invalid units when applying preset, propagate other errors. - * Coordinate with unit_file_dump_changes() above. */ - return r; -diff --git a/src/shared/install.h b/src/shared/install.h -index cdc5435035..d21e2aaa45 100644 ---- a/src/shared/install.h -+++ b/src/shared/install.h -@@ -193,7 +193,12 @@ int unit_file_changes_add(UnitFileChange **changes, size_t *n_changes, int type, - void unit_file_changes_free(UnitFileChange *changes, size_t n_changes); - void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *changes, size_t n_changes, bool quiet); - --int unit_file_verify_alias(const UnitFileInstallInfo *i, const char *dst, char **ret_dst); -+int unit_file_verify_alias( -+ const UnitFileInstallInfo *info, -+ const char *dst, -+ char **ret_dst, -+ UnitFileChange **changes, -+ size_t *n_changes); - - typedef struct UnitFilePresetRule UnitFilePresetRule; - -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index f718689c3a..4f66c12655 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -1091,7 +1091,7 @@ static void verify_one( - if (i != last_info) - log_info("-- %s --", (last_info = i)->name); - -- r = unit_file_verify_alias(i, alias, &alias2); -+ r = unit_file_verify_alias(i, alias, &alias2, NULL, NULL); - log_info_errno(r, "alias %s ← %s: %d/%m (expected %d)%s%s%s", - i->name, alias, r, expected, - alias2 ? " [" : "", strempty(alias2), -diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c -index cc08a4ae4b..8ed56ad3b8 100644 ---- a/src/test/test-unit-file.c -+++ b/src/test/test-unit-file.c -@@ -8,20 +8,20 @@ - #include "unit-file.h" - - TEST(unit_validate_alias_symlink_and_warn) { -- assert_se(unit_validate_alias_symlink_and_warn("/path/a.service", "/other/b.service") == 0); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a.service", "/other/b.socket") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a.service", "/other/b.foobar") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@.service", "/other/b@.service") == 0); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@.service", "/other/b@.socket") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@XXX.service", "/other/b@YYY.service") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@XXX.service", "/other/b@YYY.socket") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@.service", "/other/b@YYY.service") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@XXX.service", "/other/b@XXX.service") == 0); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@XXX.service", "/other/b@.service") == 0); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@.service", "/other/b.service") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a.service", "/other/b@.service") == -EXDEV); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a@.slice", "/other/b.slice") == -EINVAL); -- assert_se(unit_validate_alias_symlink_and_warn("/path/a.slice", "/other/b.slice") == -EINVAL); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a.service", "/other/b.service") == 0); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a.service", "/other/b.socket") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a.service", "/other/b.foobar") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@.service", "/other/b@.service") == 0); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@.service", "/other/b@.socket") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@XXX.service", "/other/b@YYY.service") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@XXX.service", "/other/b@YYY.socket") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@.service", "/other/b@YYY.service") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@XXX.service", "/other/b@XXX.service") == 0); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@XXX.service", "/other/b@.service") == 0); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@.service", "/other/b.service") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a.service", "/other/b@.service") == -EXDEV); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a@.slice", "/other/b.slice") == -EINVAL); -+ assert_se(unit_validate_alias_symlink_or_warn(LOG_INFO, "/path/a.slice", "/other/b.slice") == -EINVAL); - } - - TEST(unit_file_build_name_map) { diff --git a/SOURCES/0175-test-add-test-case-for-sysv-generator-and-invalid-de.patch b/SOURCES/0175-test-add-test-case-for-sysv-generator-and-invalid-de.patch new file mode 100644 index 0000000..c4c0d1a --- /dev/null +++ b/SOURCES/0175-test-add-test-case-for-sysv-generator-and-invalid-de.patch @@ -0,0 +1,148 @@ +From 55e11475d421f90cc5c7290c6b5d394f952ba577 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 15 Nov 2022 21:52:10 +0900 +Subject: [PATCH] test: add test case for sysv-generator and invalid dependency + +(cherry picked from commit 5f882cc3ab32636d9242effb2cefad20d92d2ec2) + +Related: #2160477 +--- + test/units/testsuite-26.sh | 116 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 114 insertions(+), 2 deletions(-) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index 7c7a12b1ae..a8e7a5abaa 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -3,10 +3,18 @@ + set -eux + set -o pipefail + ++# shellcheck source=test/units/assert.sh ++. "$(dirname "$0")"/assert.sh ++ ++: >/failed ++ + at_exit() { + if [[ -v UNIT_NAME && -e "/usr/lib/systemd/system/$UNIT_NAME" ]]; then + rm -fv "/usr/lib/systemd/system/$UNIT_NAME" + fi ++ ++ rm -f /etc/init.d/issue-24990 ++ return 0 + } + + trap at_exit EXIT +@@ -284,6 +292,110 @@ systemctl unset-environment IMPORT_THIS IMPORT_THIS_TOO + (! systemctl show-environment | grep "^IMPORT_THIS=") + (! systemctl show-environment | grep "^IMPORT_THIS_TOO=") + +-echo OK >/testok ++# test for sysv-generator (issue #24990) ++if [[ -x /usr/lib/systemd/system-generators/systemd-sysv-generator ]]; then ++ ++ # invalid dependency ++ cat >/etc/init.d/issue-24990 <<\EOF ++#!/bin/bash ++ ++### BEGIN INIT INFO ++# Provides:test1 test2 ++# Required-Start:test1 $remote_fs $network ++# Required-Stop:test1 $remote_fs $network ++# Description:Test ++# Short-Description: Test ++### END INIT INFO ++ ++case "$1" in ++ start) ++ echo "Starting issue-24990.service" ++ sleep 1000 & ++ ;; ++ stop) ++ echo "Stopping issue-24990.service" ++ sleep 10 & ++ ;; ++ *) ++ echo "Usage: service test {start|stop|restart|status}" ++ ;; ++esac ++EOF ++ ++ chmod +x /etc/init.d/issue-24990 ++ systemctl daemon-reload ++ [[ -L /run/systemd/generator.late/test1.service ]] ++ [[ -L /run/systemd/generator.late/test2.service ]] ++ assert_eq "$(readlink -f /run/systemd/generator.late/test1.service)" "/run/systemd/generator.late/issue-24990.service" ++ assert_eq "$(readlink -f /run/systemd/generator.late/test2.service)" "/run/systemd/generator.late/issue-24990.service" ++ output=$(systemctl cat issue-24990) ++ assert_in "SourcePath=/etc/init.d/issue-24990" "$output" ++ assert_in "Description=LSB: Test" "$output" ++ assert_in "After=test1.service" "$output" ++ assert_in "After=remote-fs.target" "$output" ++ assert_in "After=network-online.target" "$output" ++ assert_in "Wants=network-online.target" "$output" ++ assert_in "ExecStart=/etc/init.d/issue-24990 start" "$output" ++ assert_in "ExecStop=/etc/init.d/issue-24990 stop" "$output" ++ systemctl status issue-24990 || : ++ systemctl show issue-24990 ++ assert_not_in "issue-24990.service" "$(systemctl show --property=After --value)" ++ assert_not_in "issue-24990.service" "$(systemctl show --property=Before --value)" ++ ++ if ! systemctl is-active network-online.target; then ++ systemctl start network-online.target ++ fi ++ ++ systemctl restart issue-24990 ++ systemctl stop issue-24990 ++ ++ # valid dependency ++ cat >/etc/init.d/issue-24990 <<\EOF ++#!/bin/bash ++ ++### BEGIN INIT INFO ++# Provides:test1 test2 ++# Required-Start:$remote_fs ++# Required-Stop:$remote_fs ++# Description:Test ++# Short-Description: Test ++### END INIT INFO ++ ++case "$1" in ++ start) ++ echo "Starting issue-24990.service" ++ sleep 1000 & ++ ;; ++ stop) ++ echo "Stopping issue-24990.service" ++ sleep 10 & ++ ;; ++ *) ++ echo "Usage: service test {start|stop|restart|status}" ++ ;; ++esac ++EOF ++ ++ chmod +x /etc/init.d/issue-24990 ++ systemctl daemon-reload ++ [[ -L /run/systemd/generator.late/test1.service ]] ++ [[ -L /run/systemd/generator.late/test2.service ]] ++ assert_eq "$(readlink -f /run/systemd/generator.late/test1.service)" "/run/systemd/generator.late/issue-24990.service" ++ assert_eq "$(readlink -f /run/systemd/generator.late/test2.service)" "/run/systemd/generator.late/issue-24990.service" ++ output=$(systemctl cat issue-24990) ++ assert_in "SourcePath=/etc/init.d/issue-24990" "$output" ++ assert_in "Description=LSB: Test" "$output" ++ assert_in "After=remote-fs.target" "$output" ++ assert_in "ExecStart=/etc/init.d/issue-24990 start" "$output" ++ assert_in "ExecStop=/etc/init.d/issue-24990 stop" "$output" ++ systemctl status issue-24990 || : ++ systemctl show issue-24990 ++ assert_not_in "issue-24990.service" "$(systemctl show --property=After --value)" ++ assert_not_in "issue-24990.service" "$(systemctl show --property=Before --value)" ++ ++ systemctl restart issue-24990 ++ systemctl stop issue-24990 ++fi + +-exit 0 ++touch /testok ++rm /failed diff --git a/SOURCES/0176-core-unit-merge-unit-names-after-merging-deps.patch b/SOURCES/0176-core-unit-merge-unit-names-after-merging-deps.patch new file mode 100644 index 0000000..75585f4 --- /dev/null +++ b/SOURCES/0176-core-unit-merge-unit-names-after-merging-deps.patch @@ -0,0 +1,45 @@ +From 48455fa876129bf33df06d2e758fb0fbda510d5b Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 16 Nov 2022 03:18:30 +0900 +Subject: [PATCH] core/unit: merge unit names after merging deps + +Before: +systemd[1]: issue-24990.service: Dependency Before=n/a dropped, merged into issue-24990.service +After: +systemd[1]: issue-24990.service: Dependency Before=test1.service dropped, merged into issue-24990.service + +(cherry picked from commit 1d0c81a05b1605a5fc3db44d5a157a1d6876eda9) + +Related: #2160477 +--- + src/core/unit.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 6b49edc2de..d1929bbf69 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1164,11 +1164,6 @@ int unit_merge(Unit *u, Unit *other) { + if (r < 0) + return r; + +- /* Merge names */ +- r = unit_merge_names(u, other); +- if (r < 0) +- return r; +- + /* Redirect all references */ + while (other->refs_by_target) + unit_ref_set(other->refs_by_target, other->refs_by_target->source, u); +@@ -1176,6 +1171,11 @@ int unit_merge(Unit *u, Unit *other) { + /* Merge dependencies */ + unit_merge_dependencies(u, other); + ++ /* Merge names. It is better to do that after merging deps, otherwise the log message contains n/a. */ ++ r = unit_merge_names(u, other); ++ if (r < 0) ++ return r; ++ + other->load_state = UNIT_MERGED; + other->merged_into = u; + diff --git a/SOURCES/0176-shared-install-return-failure-when-enablement-fails-.patch b/SOURCES/0176-shared-install-return-failure-when-enablement-fails-.patch deleted file mode 100644 index 614089b..0000000 --- a/SOURCES/0176-shared-install-return-failure-when-enablement-fails-.patch +++ /dev/null @@ -1,165 +0,0 @@ -From db20c5cec8adf865dd47672bc091092b8cea5e0e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 15:47:12 +0100 -Subject: [PATCH] shared/install: return failure when enablement fails, but - process as much as possible - -So far we'd issue a warning (before this series, just in the logs on the server -side, and before this commit, on stderr on the caller's side), but return -success. It seems that successfull return was introduced by mistake in -aa0f357fd833feecbea6c3e9be80b643e433bced (my fault :( ), which was supposed to -be a refactoring without a functional change. I think it's better to fail, -because if enablement fails, the user will most likely want to diagnose the -issue. - -Note that we still do partial enablement, as far as that is possible. So if -e.g. we have [Install] Alias=foo.service foobar, we'll create the symlink -'foo.service', but not 'foobar', since that's not a valid unit name. We'll -print info about the action taken, and about 'foobar' being invalid, and return -failure. - -(cherry picked from commit 0d11db59825a9deee0b56fdede0602ef1c37c5c5) - -Related: #2082131 ---- - src/shared/install.c | 10 +++++---- - test/test-systemctl-enable.sh | 39 ++++++++++++++++++----------------- - 2 files changed, 26 insertions(+), 23 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 6da9ba6b0c..a541d32fb7 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1802,20 +1802,22 @@ static int install_info_symlink_alias( - q = install_name_printf(scope, info, *s, info->root, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); -- return q; -+ r = r < 0 ? r : q; -+ continue; - } - - q = unit_file_verify_alias(info, dst, &dst_updated, changes, n_changes); -- if (q < 0) -+ if (q < 0) { -+ r = r < 0 ? r : q; - continue; -+ } - - alias_path = path_make_absolute(dst_updated ?: dst, config_path); - if (!alias_path) - return -ENOMEM; - - q = create_symlink(lp, info->path, alias_path, force, changes, n_changes); -- if (r == 0) -- r = q; -+ r = r < 0 ? r : q; - } - - return r; -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 8ac1342b91..32bc6e5ef7 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -56,19 +56,27 @@ test ! -e "$root/etc/systemd/system/default.target.wants/test1.service" - test ! -e "$root/etc/systemd/system/special.target.requires/test1.service" - - : -------aliases---------------------------------------------- --"$systemctl" --root="$root" enable test1 --test -h "$root/etc/systemd/system/default.target.wants/test1.service" --test -h "$root/etc/systemd/system/special.target.requires/test1.service" -- - cat >>"$root/etc/systemd/system/test1.service" <&2; exit 1; } -+test -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test -h "$root/etc/systemd/system/special.target.requires/test1.service" -+test ! -e "$root/etc/systemd/system/test1-goodalias.service" -+test -h "$root/etc/systemd/system/test1-goodalias.service" -+test ! -e "$root/etc/systemd/system/test1@badalias.service" -+test ! -e "$root/etc/systemd/system/test1-badalias.target" -+test ! -e "$root/etc/systemd/system/test1-badalias.socket" -+test -h "$root/etc/systemd/system/test1-goodalias2.service" -+ - : -------aliases in reeanble---------------------------------- --"$systemctl" --root="$root" reenable test1 -+"$systemctl" --root="$root" reenable test1 && { echo "Expected failure" >&2; exit 1; } - test -h "$root/etc/systemd/system/default.target.wants/test1.service" - test ! -e "$root/etc/systemd/system/test1-goodalias.service" - test -h "$root/etc/systemd/system/test1-goodalias.service" -@@ -328,7 +336,7 @@ Alias=link4alias.service - Alias=link4alias2.service - EOF - --"$systemctl" --root="$root" enable 'link4.service' -+"$systemctl" --root="$root" enable 'link4.service' && { echo "Expected failure" >&2; exit 1; } - test ! -h "$root/etc/systemd/system/link4.service" # this is our file - test ! -h "$root/etc/systemd/system/link4@.service" - test ! -h "$root/etc/systemd/system/link4@inst.service" -@@ -343,18 +351,20 @@ test ! -h "$root/etc/systemd/system/link4alias.service" - test ! -h "$root/etc/systemd/system/link4alias2.service" - - : -------systemctl enable on path to unit file---------------- -+cat >"$root/etc/systemd/system/link4.service" <"$root/etc/systemd/system/link5.service" <&2; exit 1; } - --# FIXME: if there's an invalid Alias=, we shouldn't preach about empty [Install] -- - # TODO: repeat the tests above for presets - - : -------SYSTEMD_OS_RELEASE relative to root------------------ diff --git a/SOURCES/0177-core-unit-fix-log-message.patch b/SOURCES/0177-core-unit-fix-log-message.patch new file mode 100644 index 0000000..ead6ae9 --- /dev/null +++ b/SOURCES/0177-core-unit-fix-log-message.patch @@ -0,0 +1,113 @@ +From 883e46f2e4255b92a338c9d4004a8b4740cdbcaf Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Tue, 15 Nov 2022 22:59:01 +0900 +Subject: [PATCH] core/unit: fix log message + +As you can see in the below, the dropped dependency Before=issue-24990.service +is not logged, but the dependency Before=test1.service which is not owned by +the units generated by the TEST-26 is logged. + +Before: +systemd[1]: issue-24990.service: Dependency After=test1.service dropped, merged into issue-24990.service +systemd[1]: issue-24990.service: Dependency Before=test1.service dropped, merged into issue-24990.service + +After: +systemd[1]: issue-24990.service: Dependency After=test1.service is dropped, as test1.service is merged into issue-24990.service. +systemd[1]: issue-24990.service: Dependency Before=issue-24990.service in test1.service is dropped, as test1.service is merged into issue-24990.service. + +(cherry picked from commit ed9911630e4bca844381d7caeb850dad9a9fa122) + +Related: #2160477 +--- + src/core/unit.c | 49 ++++++++++++++++++++++--------------------------- + 1 file changed, 22 insertions(+), 27 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index d1929bbf69..c319e99d71 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -936,29 +936,17 @@ static int unit_reserve_dependencies(Unit *u, Unit *other) { + return 0; + } + +-static void unit_maybe_warn_about_dependency( +- Unit *u, +- const char *other_id, +- UnitDependency dependency) { +- +- assert(u); +- ++static bool unit_should_warn_about_dependency(UnitDependency dependency) { + /* Only warn about some unit types */ +- if (!IN_SET(dependency, +- UNIT_CONFLICTS, +- UNIT_CONFLICTED_BY, +- UNIT_BEFORE, +- UNIT_AFTER, +- UNIT_ON_SUCCESS, +- UNIT_ON_FAILURE, +- UNIT_TRIGGERS, +- UNIT_TRIGGERED_BY)) +- return; +- +- if (streq_ptr(u->id, other_id)) +- log_unit_warning(u, "Dependency %s=%s dropped", unit_dependency_to_string(dependency), u->id); +- else +- log_unit_warning(u, "Dependency %s=%s dropped, merged into %s", unit_dependency_to_string(dependency), strna(other_id), u->id); ++ return IN_SET(dependency, ++ UNIT_CONFLICTS, ++ UNIT_CONFLICTED_BY, ++ UNIT_BEFORE, ++ UNIT_AFTER, ++ UNIT_ON_SUCCESS, ++ UNIT_ON_FAILURE, ++ UNIT_TRIGGERS, ++ UNIT_TRIGGERED_BY); + } + + static int unit_per_dependency_type_hashmap_update( +@@ -1056,8 +1044,10 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + + /* First, remove dependency to other. */ + HASHMAP_FOREACH_KEY(deps, dt, u->dependencies) { +- if (hashmap_remove(deps, other)) +- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); ++ if (hashmap_remove(deps, other) && unit_should_warn_about_dependency(UNIT_DEPENDENCY_FROM_PTR(dt))) ++ log_unit_warning(u, "Dependency %s=%s is dropped, as %s is merged into %s.", ++ unit_dependency_to_string(UNIT_DEPENDENCY_FROM_PTR(dt)), ++ other->id, other->id, u->id); + + if (hashmap_isempty(deps)) + hashmap_free(hashmap_remove(u->dependencies, dt)); +@@ -1084,7 +1074,11 @@ static void unit_merge_dependencies(Unit *u, Unit *other) { + if (back == u) { + /* This is a dependency pointing back to the unit we want to merge with? + * Suppress it (but warn) */ +- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt)); ++ if (unit_should_warn_about_dependency(UNIT_DEPENDENCY_FROM_PTR(dt))) ++ log_unit_warning(u, "Dependency %s=%s in %s is dropped, as %s is merged into %s.", ++ unit_dependency_to_string(UNIT_DEPENDENCY_FROM_PTR(dt)), ++ u->id, other->id, other->id, u->id); ++ + hashmap_remove(other_deps, back); + continue; + } +@@ -3049,7 +3043,6 @@ int unit_add_dependency( + [UNIT_IN_SLICE] = UNIT_SLICE_OF, + [UNIT_SLICE_OF] = UNIT_IN_SLICE, + }; +- Unit *original_u = u, *original_other = other; + UnitDependencyAtom a; + int r; + +@@ -3068,7 +3061,9 @@ int unit_add_dependency( + + /* We won't allow dependencies on ourselves. We will not consider them an error however. */ + if (u == other) { +- unit_maybe_warn_about_dependency(original_u, original_other->id, d); ++ if (unit_should_warn_about_dependency(d)) ++ log_unit_warning(u, "Dependency %s=%s is dropped.", ++ unit_dependency_to_string(d), u->id); + return 0; + } + diff --git a/SOURCES/0177-systemctl-fix-silent-failure-when-root-is-not-found.patch b/SOURCES/0177-systemctl-fix-silent-failure-when-root-is-not-found.patch deleted file mode 100644 index a9ce03e..0000000 --- a/SOURCES/0177-systemctl-fix-silent-failure-when-root-is-not-found.patch +++ /dev/null @@ -1,545 +0,0 @@ -From 8fa3444f3ca7add9af40ab565e045c2754e5a855 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 16:47:51 +0100 -Subject: [PATCH] systemctl: fix silent failure when --root is not found - -Some calls to lookup_path_init() were not followed by any log emission. -E.g.: -$ SYSTEMD_LOG_LEVEL=debug systemctl --root=/missing enable unit; echo $? -1 - -Let's add a helper function and use it in various places. - -$ SYSTEMD_LOG_LEVEL=debug build/systemctl --root=/missing enable unit; echo $? -Failed to initialize unit search paths for root directory /missing: No such file or directory -1 -$ SYSTEMCTL_SKIP_SYSV=1 build/systemctl --root=/missing enable unit; echo $? -Failed to initialize unit search paths for root directory /missing: No such file or directory -Failed to enable: No such file or directory. -1 - -The repeated error in the second case is not very nice, but this is a niche -case and I don't think it's worth the trouble to trying to avoid it. - -(cherry picked from commit 99aad9a2b9e2c06023a2043976fd9395332ff097) - -Related: #2082131 ---- - src/basic/env-file.c | 83 +++++++++------------------ - src/basic/path-lookup.c | 56 ++++++++++-------- - src/basic/path-lookup.h | 3 +- - src/core/manager.c | 12 ++-- - src/shared/condition.c | 3 +- - src/shared/install.c | 2 +- - src/systemctl/systemctl-edit.c | 8 +-- - src/systemctl/systemctl-enable.c | 2 +- - src/systemctl/systemctl-sysv-compat.c | 2 +- - src/sysv-generator/sysv-generator.c | 4 +- - src/test/test-fileio.c | 3 +- - src/test/test-os-util.c | 7 +-- - 12 files changed, 84 insertions(+), 101 deletions(-) - -diff --git a/src/basic/env-file.c b/src/basic/env-file.c -index 0353f3f2a0..0e272da083 100644 ---- a/src/basic/env-file.c -+++ b/src/basic/env-file.c -@@ -16,9 +16,8 @@ static int parse_env_file_internal( - FILE *f, - const char *fname, - int (*push) (const char *filename, unsigned line, -- const char *key, char *value, void *userdata, int *n_pushed), -- void *userdata, -- int *n_pushed) { -+ const char *key, char *value, void *userdata), -+ void *userdata) { - - size_t n_key = 0, n_value = 0, last_value_whitespace = SIZE_MAX, last_key_whitespace = SIZE_MAX; - _cleanup_free_ char *contents = NULL, *key = NULL, *value = NULL; -@@ -100,7 +99,7 @@ static int parse_env_file_internal( - if (last_key_whitespace != SIZE_MAX) - key[last_key_whitespace] = 0; - -- r = push(fname, line, key, value, userdata, n_pushed); -+ r = push(fname, line, key, value, userdata); - if (r < 0) - return r; - -@@ -143,7 +142,7 @@ static int parse_env_file_internal( - if (last_key_whitespace != SIZE_MAX) - key[last_key_whitespace] = 0; - -- r = push(fname, line, key, value, userdata, n_pushed); -+ r = push(fname, line, key, value, userdata); - if (r < 0) - return r; - -@@ -262,7 +261,7 @@ static int parse_env_file_internal( - if (last_key_whitespace != SIZE_MAX) - key[last_key_whitespace] = 0; - -- r = push(fname, line, key, value, userdata, n_pushed); -+ r = push(fname, line, key, value, userdata); - if (r < 0) - return r; - -@@ -300,8 +299,7 @@ static int check_utf8ness_and_warn( - static int parse_env_file_push( - const char *filename, unsigned line, - const char *key, char *value, -- void *userdata, -- int *n_pushed) { -+ void *userdata) { - - const char *k; - va_list aq, *ap = userdata; -@@ -323,9 +321,6 @@ static int parse_env_file_push( - free(*v); - *v = value; - -- if (n_pushed) -- (*n_pushed)++; -- - return 1; - } - } -@@ -341,16 +336,13 @@ int parse_env_filev( - const char *fname, - va_list ap) { - -- int r, n_pushed = 0; -+ int r; - va_list aq; - - va_copy(aq, ap); -- r = parse_env_file_internal(f, fname, parse_env_file_push, &aq, &n_pushed); -+ r = parse_env_file_internal(f, fname, parse_env_file_push, &aq); - va_end(aq); -- if (r < 0) -- return r; -- -- return n_pushed; -+ return r; - } - - int parse_env_file_sentinel( -@@ -371,8 +363,7 @@ int parse_env_file_sentinel( - static int load_env_file_push( - const char *filename, unsigned line, - const char *key, char *value, -- void *userdata, -- int *n_pushed) { -+ void *userdata) { - char ***m = userdata; - char *p; - int r; -@@ -389,34 +380,28 @@ static int load_env_file_push( - if (r < 0) - return r; - -- if (n_pushed) -- (*n_pushed)++; -- - free(value); - return 0; - } - - int load_env_file(FILE *f, const char *fname, char ***rl) { -- char **m = NULL; -+ _cleanup_strv_free_ char **m = NULL; - int r; - -- r = parse_env_file_internal(f, fname, load_env_file_push, &m, NULL); -- if (r < 0) { -- strv_free(m); -+ r = parse_env_file_internal(f, fname, load_env_file_push, &m); -+ if (r < 0) - return r; -- } - -- *rl = m; -+ *rl = TAKE_PTR(m); - return 0; - } - - static int load_env_file_push_pairs( - const char *filename, unsigned line, - const char *key, char *value, -- void *userdata, -- int *n_pushed) { -+ void *userdata) { -+ - char ***m = ASSERT_PTR(userdata); -- bool added = false; - int r; - - r = check_utf8ness_and_warn(filename, line, key, value); -@@ -427,49 +412,37 @@ static int load_env_file_push_pairs( - for (char **t = *m; t && *t; t += 2) - if (streq(t[0], key)) { - if (value) -- r = free_and_replace(t[1], value); -+ return free_and_replace(t[1], value); - else -- r = free_and_strdup(t+1, ""); -- goto finish; -+ return free_and_strdup(t+1, ""); - } - - r = strv_extend(m, key); - if (r < 0) -- return -ENOMEM; -+ return r; - - if (value) -- r = strv_push(m, value); -+ return strv_push(m, value); - else -- r = strv_extend(m, ""); -- added = true; -- finish: -- if (r < 0) -- return r; -- -- if (n_pushed && added) -- (*n_pushed)++; -- return 0; -+ return strv_extend(m, ""); - } - - int load_env_file_pairs(FILE *f, const char *fname, char ***rl) { -- char **m = NULL; -+ _cleanup_strv_free_ char **m = NULL; - int r; - -- r = parse_env_file_internal(f, fname, load_env_file_push_pairs, &m, NULL); -- if (r < 0) { -- strv_free(m); -+ r = parse_env_file_internal(f, fname, load_env_file_push_pairs, &m); -+ if (r < 0) - return r; -- } - -- *rl = m; -+ *rl = TAKE_PTR(m); - return 0; - } - - static int merge_env_file_push( - const char *filename, unsigned line, - const char *key, char *value, -- void *userdata, -- int *n_pushed) { -+ void *userdata) { - - char ***env = userdata; - char *expanded_value; -@@ -498,7 +471,7 @@ static int merge_env_file_push( - - log_debug("%s:%u: setting %s=%s", filename, line, key, value); - -- return load_env_file_push(filename, line, key, value, env, n_pushed); -+ return load_env_file_push(filename, line, key, value, env); - } - - int merge_env_file( -@@ -510,7 +483,7 @@ int merge_env_file( - * plus "extended" substitutions, unlike other exported parsing functions. - */ - -- return parse_env_file_internal(f, fname, merge_env_file_push, env, NULL); -+ return parse_env_file_internal(f, fname, merge_env_file_push, env); - } - - static void write_env_var(FILE *f, const char *v) { -diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c -index 921a30cef7..ab51955e34 100644 ---- a/src/basic/path-lookup.c -+++ b/src/basic/path-lookup.c -@@ -509,7 +509,7 @@ static int get_paths_from_environ(const char *var, char ***paths, bool *append) - } - - int lookup_paths_init( -- LookupPaths *p, -+ LookupPaths *lp, - UnitFileScope scope, - LookupPathsFlags flags, - const char *root_dir) { -@@ -527,7 +527,7 @@ int lookup_paths_init( - _cleanup_strv_free_ char **paths = NULL; - int r; - -- assert(p); -+ assert(lp); - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -@@ -717,7 +717,7 @@ int lookup_paths_init( - if (r < 0) - return -ENOMEM; - -- *p = (LookupPaths) { -+ *lp = (LookupPaths) { - .search_path = strv_uniq(TAKE_PTR(paths)), - - .persistent_config = TAKE_PTR(persistent_config), -@@ -742,41 +742,51 @@ int lookup_paths_init( - return 0; - } - --void lookup_paths_free(LookupPaths *p) { -- if (!p) -+int lookup_paths_init_or_warn(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir) { -+ int r; -+ -+ r = lookup_paths_init(lp, scope, flags, root_dir); -+ if (r < 0) -+ return log_error_errno(r, "Failed to initialize unit search paths%s%s: %m", -+ isempty(root_dir) ? "" : " for root directory ", strempty(root_dir)); -+ return r; -+} -+ -+void lookup_paths_free(LookupPaths *lp) { -+ if (!lp) - return; - -- p->search_path = strv_free(p->search_path); -+ lp->search_path = strv_free(lp->search_path); - -- p->persistent_config = mfree(p->persistent_config); -- p->runtime_config = mfree(p->runtime_config); -+ lp->persistent_config = mfree(lp->persistent_config); -+ lp->runtime_config = mfree(lp->runtime_config); - -- p->persistent_attached = mfree(p->persistent_attached); -- p->runtime_attached = mfree(p->runtime_attached); -+ lp->persistent_attached = mfree(lp->persistent_attached); -+ lp->runtime_attached = mfree(lp->runtime_attached); - -- p->generator = mfree(p->generator); -- p->generator_early = mfree(p->generator_early); -- p->generator_late = mfree(p->generator_late); -+ lp->generator = mfree(lp->generator); -+ lp->generator_early = mfree(lp->generator_early); -+ lp->generator_late = mfree(lp->generator_late); - -- p->transient = mfree(p->transient); -+ lp->transient = mfree(lp->transient); - -- p->persistent_control = mfree(p->persistent_control); -- p->runtime_control = mfree(p->runtime_control); -+ lp->persistent_control = mfree(lp->persistent_control); -+ lp->runtime_control = mfree(lp->runtime_control); - -- p->root_dir = mfree(p->root_dir); -- p->temporary_dir = mfree(p->temporary_dir); -+ lp->root_dir = mfree(lp->root_dir); -+ lp->temporary_dir = mfree(lp->temporary_dir); - } - --void lookup_paths_log(LookupPaths *p) { -- assert(p); -+void lookup_paths_log(LookupPaths *lp) { -+ assert(lp); - -- if (strv_isempty(p->search_path)) { -+ if (strv_isempty(lp->search_path)) { - log_debug("Ignoring unit files."); -- p->search_path = strv_free(p->search_path); -+ lp->search_path = strv_free(lp->search_path); - } else { - _cleanup_free_ char *t = NULL; - -- t = strv_join(p->search_path, "\n\t"); -+ t = strv_join(lp->search_path, "\n\t"); - log_debug("Looking for unit files in (higher priority first):\n\t%s", strna(t)); - } - } -diff --git a/src/basic/path-lookup.h b/src/basic/path-lookup.h -index af85dc7b4f..1f0e5ea271 100644 ---- a/src/basic/path-lookup.h -+++ b/src/basic/path-lookup.h -@@ -54,7 +54,8 @@ struct LookupPaths { - char *temporary_dir; - }; - --int lookup_paths_init(LookupPaths *p, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir); -+int lookup_paths_init(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir); -+int lookup_paths_init_or_warn(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir); - - int xdg_user_dirs(char ***ret_config_dirs, char ***ret_data_dirs); - int xdg_user_runtime_dir(char **ret, const char *suffix); -diff --git a/src/core/manager.c b/src/core/manager.c -index 12c49e7fca..22bd0866c5 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -1756,11 +1756,11 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds, const char *roo - - /* If we are running in test mode, we still want to run the generators, - * but we should not touch the real generator directories. */ -- r = lookup_paths_init(&m->lookup_paths, m->unit_file_scope, -- MANAGER_IS_TEST_RUN(m) ? LOOKUP_PATHS_TEMPORARY_GENERATED : 0, -- root); -+ r = lookup_paths_init_or_warn(&m->lookup_paths, m->unit_file_scope, -+ MANAGER_IS_TEST_RUN(m) ? LOOKUP_PATHS_TEMPORARY_GENERATED : 0, -+ root); - if (r < 0) -- return log_error_errno(r, "Failed to initialize path lookup table: %m"); -+ return r; - - dual_timestamp_get(m->timestamps + manager_timestamp_initrd_mangle(MANAGER_TIMESTAMP_GENERATORS_START)); - r = manager_run_environment_generators(m); -@@ -3302,9 +3302,9 @@ int manager_reload(Manager *m) { - m->uid_refs = hashmap_free(m->uid_refs); - m->gid_refs = hashmap_free(m->gid_refs); - -- r = lookup_paths_init(&m->lookup_paths, m->unit_file_scope, 0, NULL); -+ r = lookup_paths_init_or_warn(&m->lookup_paths, m->unit_file_scope, 0, NULL); - if (r < 0) -- log_warning_errno(r, "Failed to initialize path lookup table, ignoring: %m"); -+ return r; - - (void) manager_run_environment_generators(m); - (void) manager_run_generators(m); -diff --git a/src/shared/condition.c b/src/shared/condition.c -index 68fbbf643a..21f3714eba 100644 ---- a/src/shared/condition.c -+++ b/src/shared/condition.c -@@ -787,7 +787,8 @@ static int condition_test_needs_update(Condition *c, char **env) { - if (r < 0) { - log_debug_errno(r, "Failed to parse timestamp file '%s', using mtime: %m", p); - return true; -- } else if (r == 0) { -+ } -+ if (isempty(timestamp_str)) { - log_debug("No data in timestamp file '%s', using mtime.", p); - return true; - } -diff --git a/src/shared/install.c b/src/shared/install.c -index a541d32fb7..f1a8b7eb9b 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2615,7 +2615,7 @@ int unit_file_enable( - assert(scope >= 0); - assert(scope < _UNIT_FILE_SCOPE_MAX); - -- r = lookup_paths_init(&lp, scope, 0, root_dir); -+ r = lookup_paths_init_or_warn(&lp, scope, 0, root_dir); - if (r < 0) - return r; - -diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c -index a97aa7be4c..92abd15636 100644 ---- a/src/systemctl/systemctl-edit.c -+++ b/src/systemctl/systemctl-edit.c -@@ -38,9 +38,9 @@ int cat(int argc, char *argv[], void *userdata) { - if (arg_transport != BUS_TRANSPORT_LOCAL) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot remotely cat units."); - -- r = lookup_paths_init(&lp, arg_scope, 0, arg_root); -+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root); - if (r < 0) -- return log_error_errno(r, "Failed to determine unit paths: %m"); -+ return r; - - r = acquire_bus(BUS_MANAGER, &bus); - if (r < 0) -@@ -511,9 +511,9 @@ int edit(int argc, char *argv[], void *userdata) { - if (arg_transport != BUS_TRANSPORT_LOCAL) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot edit units remotely."); - -- r = lookup_paths_init(&lp, arg_scope, 0, arg_root); -+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root); - if (r < 0) -- return log_error_errno(r, "Failed to determine unit paths: %m"); -+ return r; - - r = mac_selinux_init(); - if (r < 0) -diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c -index dcbe2c7302..7860f3dc6c 100644 ---- a/src/systemctl/systemctl-enable.c -+++ b/src/systemctl/systemctl-enable.c -@@ -142,7 +142,7 @@ int enable_unit(int argc, char *argv[], void *userdata) { - char **name; - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - -- r = lookup_paths_init(&lp, arg_scope, 0, arg_root); -+ r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root); - if (r < 0) - return r; - -diff --git a/src/systemctl/systemctl-sysv-compat.c b/src/systemctl/systemctl-sysv-compat.c -index 017dba2034..c6e8defd1b 100644 ---- a/src/systemctl/systemctl-sysv-compat.c -+++ b/src/systemctl/systemctl-sysv-compat.c -@@ -128,7 +128,7 @@ int enable_sysv_units(const char *verb, char **args) { - "is-enabled")) - return 0; - -- r = lookup_paths_init(&paths, arg_scope, LOOKUP_PATHS_EXCLUDE_GENERATED, arg_root); -+ r = lookup_paths_init_or_warn(&paths, arg_scope, LOOKUP_PATHS_EXCLUDE_GENERATED, arg_root); - if (r < 0) - return r; - -diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c -index e9976540b5..bb74b486be 100644 ---- a/src/sysv-generator/sysv-generator.c -+++ b/src/sysv-generator/sysv-generator.c -@@ -894,9 +894,9 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) - - assert_se(arg_dest = dest_late); - -- r = lookup_paths_init(&lp, UNIT_FILE_SYSTEM, LOOKUP_PATHS_EXCLUDE_GENERATED, NULL); -+ r = lookup_paths_init_or_warn(&lp, UNIT_FILE_SYSTEM, LOOKUP_PATHS_EXCLUDE_GENERATED, NULL); - if (r < 0) -- return log_error_errno(r, "Failed to find lookup paths: %m"); -+ return r; - - all_services = hashmap_new(&string_hash_ops); - if (!all_services) -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 4f91d94709..238ae8f586 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -110,8 +110,7 @@ TEST(parse_env_file) { - "eleven", &eleven, - "twelve", &twelve, - "thirteen", &thirteen); -- -- assert_se(r >= 0); -+ assert_se(r == 0); - - log_info("one=[%s]", strna(one)); - log_info("two=[%s]", strna(two)); -diff --git a/src/test/test-os-util.c b/src/test/test-os-util.c -index d6336c53e9..2cee6470c4 100644 ---- a/src/test/test-os-util.c -+++ b/src/test/test-os-util.c -@@ -18,7 +18,7 @@ TEST(path_is_os_tree) { - TEST(parse_os_release) { - /* Let's assume that we're running in a valid system, so os-release is available */ - _cleanup_free_ char *id = NULL, *id2 = NULL, *name = NULL, *foobar = NULL; -- assert_se(parse_os_release(NULL, "ID", &id) == 1); -+ assert_se(parse_os_release(NULL, "ID", &id) == 0); - log_info("ID: %s", id); - - assert_se(setenv("SYSTEMD_OS_RELEASE", "/dev/null", 1) == 0); -@@ -31,7 +31,7 @@ TEST(parse_os_release) { - "NAME=the-name") == 0); - - assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile, 1) == 0); -- assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 2); -+ assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 0); - log_info("ID: %s NAME: %s", id, name); - assert_se(streq(id, "the-id")); - assert_se(streq(name, "the-name")); -@@ -43,8 +43,7 @@ TEST(parse_os_release) { - "NAME='the-name'") == 0); - - assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile2, 1) == 0); -- // FIXME: we return 3, which means that the return value is useless in face of repeats -- assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 3); -+ assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 0); - log_info("ID: %s NAME: %s", id, name); - assert_se(streq(id, "the-id")); - assert_se(streq(name, "the-name")); diff --git a/SOURCES/0178-shared-install-also-check-for-self-aliases-during-in.patch b/SOURCES/0178-shared-install-also-check-for-self-aliases-during-in.patch deleted file mode 100644 index f97f386..0000000 --- a/SOURCES/0178-shared-install-also-check-for-self-aliases-during-in.patch +++ /dev/null @@ -1,134 +0,0 @@ -From c892aaa100fa04f877c7bf66e3cce846a7aa834c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 20:26:59 +0100 -Subject: [PATCH] shared/install: also check for self-aliases during - installation and ignore them - -We had a check that was done in unit_file_resolve_symlink(). Let's move -the check to unit_validate_alias_symlink_or_warn(), which makes it available -to the code in install.c. - -With this, unit_file_resolve_symlink() behaves almost the same. The warning -about "suspicious symlink" is done a bit later. I think this should be OK. - -(cherry picked from commit f663e6468ff6f667a67fa1a0f9ca5c4962d4c605) - -Related: #2082131 ---- - src/basic/unit-file.c | 26 ++++++++++---------------- - src/shared/install.c | 9 +++++++++ - test/test-systemctl-enable.sh | 6 ++---- - 3 files changed, 21 insertions(+), 20 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 105dacc1b2..142ba006f8 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -82,7 +82,8 @@ int unit_validate_alias_symlink_or_warn(int log_level, const char *filename, con - * - * -EINVAL is returned if the something is wrong with the source filename or the source unit type is - * not allowed to symlink, -- * -EXDEV if the target filename is not a valid unit name or doesn't match the source. -+ * -EXDEV if the target filename is not a valid unit name or doesn't match the source, -+ * -ELOOP for an alias to self. - */ - - src = basename(filename); -@@ -111,6 +112,11 @@ int unit_validate_alias_symlink_or_warn(int log_level, const char *filename, con - - /* dst checks */ - -+ if (streq(src, dst)) -+ return log_debug_errno(SYNTHETIC_ERRNO(ELOOP), -+ "%s: unit self-alias: %s → %s, ignoring.", -+ filename, src, dst); -+ - dst_name_type = unit_name_to_instance(dst, &dst_instance); - if (dst_name_type < 0) - return log_full_errno(log_level, dst_name_type == -EINVAL ? SYNTHETIC_ERRNO(EXDEV) : dst_name_type, -@@ -348,24 +354,12 @@ int unit_file_resolve_symlink( - if (r < 0) - return r; - -- bool self_alias = streq(target_name, filename); -- -- if (is_path(tail)) -- log_full(self_alias ? LOG_DEBUG : LOG_WARNING, -- "Suspicious symlink %s/%s→%s, treating as alias.", -- dir, filename, simplified); -- - r = unit_validate_alias_symlink_or_warn(LOG_NOTICE, filename, simplified); - if (r < 0) - return r; -- -- if (self_alias && !resolve_destination_target) -- /* A self-alias that has no effect when loading, let's just ignore it. */ -- return log_debug_errno(SYNTHETIC_ERRNO(ELOOP), -- "Unit file self-alias: %s/%s → %s, ignoring.", -- dir, filename, target_name); -- -- log_debug("Unit file alias: %s/%s → %s", dir, filename, target_name); -+ if (is_path(tail)) -+ log_warning("Suspicious symlink %s/%s→%s, treating as alias.", -+ dir, filename, simplified); - - dst = resolve_destination_target ? TAKE_PTR(simplified) : TAKE_PTR(target_name); - } -diff --git a/src/shared/install.c b/src/shared/install.c -index f1a8b7eb9b..459e8a6951 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1702,6 +1702,11 @@ int unit_file_verify_alias( - * ret_dst is set in cases where "instance propagation" happens, i.e. when the instance part is - * inserted into dst. It is not normally set, even on success, so that the caller can easily - * distinguish the case where instance propagation occurred. -+ * -+ * Returns: -+ * -EXDEV when the alias doesn't match the unit, -+ * -EUCLEAN when the name is invalid, -+ * -ELOOP when the alias it to the unit itself. - */ - - const char *path_alias = strrchr(dst, '/'); -@@ -1767,6 +1772,8 @@ int unit_file_verify_alias( - } - - r = unit_validate_alias_symlink_or_warn(LOG_DEBUG, dst_updated ?: dst, info->name); -+ if (r == -ELOOP) /* -ELOOP means self-alias, which we (quietly) ignore */ -+ return r; - if (r < 0) { - unit_file_changes_add(changes, n_changes, - r == -EINVAL ? -EXDEV : r, -@@ -1807,6 +1814,8 @@ static int install_info_symlink_alias( - } - - q = unit_file_verify_alias(info, dst, &dst_updated, changes, n_changes); -+ if (q == -ELOOP) -+ continue; - if (q < 0) { - r = r < 0 ? r : q; - continue; -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 32bc6e5ef7..4117436462 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -328,8 +328,7 @@ test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" - test ! -e "$root/etc/systemd/system/link4.service" - cat >"$root/etc/systemd/system/link4.service" <"$root/etc/systemd/system/link5.service" < +Date: Thu, 12 Jan 2023 19:19:28 +0100 +Subject: [PATCH] test: explicitly create the /etc/init.d directory + +On RHEL/CentOS/Fedora this directory is provided by the chkconfig or +initscripts package, which might not be installed: + +testsuite-26.sh[1225]: + [[ -x /usr/lib/systemd/system-generators/systemd-sysv-generator ]] +testsuite-26.sh[1225]: + cat +testsuite-26.sh[2330]: /usr/lib/systemd/tests/testdata/units/testsuite-26.sh: line 299: /etc/init.d/issue-24990: No such file or directory + +Follow-up to 5f882cc3ab32636d9242effb2cefad20d92d2ec2. + +(cherry picked from commit 7fcf0fab078ed92a4f6c3c3658c0a9dfd67c9601) + +Related: #2160477 +--- + test/units/testsuite-26.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index a8e7a5abaa..37ae6069bc 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -294,7 +294,7 @@ systemctl unset-environment IMPORT_THIS IMPORT_THIS_TOO + + # test for sysv-generator (issue #24990) + if [[ -x /usr/lib/systemd/system-generators/systemd-sysv-generator ]]; then +- ++ mkdir -p /etc/init.d + # invalid dependency + cat >/etc/init.d/issue-24990 <<\EOF + #!/bin/bash diff --git a/SOURCES/0179-docs-Correct-WantedBy-regarding-template-units.patch b/SOURCES/0179-docs-Correct-WantedBy-regarding-template-units.patch deleted file mode 100644 index 6297dd8..0000000 --- a/SOURCES/0179-docs-Correct-WantedBy-regarding-template-units.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3e2830ddce4474efb403914e910de2943a2a6bd0 Mon Sep 17 00:00:00 2001 -From: Max Gautier -Date: Sun, 13 Feb 2022 15:16:05 +0100 -Subject: [PATCH] docs: Correct WantedBy= regarding template units - -(cherry picked from commit f55fe53ffce351bb55b6190cf36511c37f99d766) - -Related: #2082131 ---- - man/systemd.unit.xml | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 4ba602b5ad..2e6261c1ed 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -1922,9 +1922,9 @@ - WantedBy=foo.service in a service - bar.service is mostly equivalent to - Alias=foo.service.wants/bar.service in the -- same file. In case of template units, systemctl -- enable must be called with an instance name, and -- this instance will be added to the -+ same file. In case of template units listing non template units, -+ systemctl enable must be called with an -+ instance name, and this instance will be added to the - .wants/ or - .requires/ list of the listed unit. E.g. - WantedBy=getty.target in a service diff --git a/SOURCES/0179-test-support-a-non-default-SysV-directory.patch b/SOURCES/0179-test-support-a-non-default-SysV-directory.patch new file mode 100644 index 0000000..8c9c4a3 --- /dev/null +++ b/SOURCES/0179-test-support-a-non-default-SysV-directory.patch @@ -0,0 +1,97 @@ +From 956944405391b5bbb8a4fee9ad93e14bf908f0a9 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Fri, 13 Jan 2023 20:10:42 +0100 +Subject: [PATCH] test: support a non-default SysV directory + +Since the directory is configurable via -Dsysvinit-path= during build, +it makes the test fail on Fedora/RHEL/CentOS, where it's set to +/etc/rc.d/init.d, instead of the default /etc/init.d. Since we can't get +the value at runtime (in a reasonable manner), let's just support the +two most common paths for now. + +Follow up to 7fcf0fab078ed92a4f6c3c3658c0a9dfd67c9601. + +(cherry picked from commit fc2a0bc05e0429e468c7eaad52998292105fe7fb) + +Related: #2160477 +--- + test/units/testsuite-26.sh | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index 37ae6069bc..916a6704d7 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -294,9 +294,12 @@ systemctl unset-environment IMPORT_THIS IMPORT_THIS_TOO + + # test for sysv-generator (issue #24990) + if [[ -x /usr/lib/systemd/system-generators/systemd-sysv-generator ]]; then +- mkdir -p /etc/init.d ++ # This is configurable via -Dsysvinit-path=, but we can't get the value ++ # at runtime, so let's just support the two most common paths for now. ++ [[ -d /etc/rc.d/init.d ]] && SYSVINIT_PATH="/etc/rc.d/init.d" || SYSVINIT_PATH="/etc/init.d" ++ + # invalid dependency +- cat >/etc/init.d/issue-24990 <<\EOF ++ cat >"${SYSVINIT_PATH:?}/issue-24990" <<\EOF + #!/bin/bash + + ### BEGIN INIT INFO +@@ -322,21 +325,21 @@ case "$1" in + esac + EOF + +- chmod +x /etc/init.d/issue-24990 ++ chmod +x "$SYSVINIT_PATH/issue-24990" + systemctl daemon-reload + [[ -L /run/systemd/generator.late/test1.service ]] + [[ -L /run/systemd/generator.late/test2.service ]] + assert_eq "$(readlink -f /run/systemd/generator.late/test1.service)" "/run/systemd/generator.late/issue-24990.service" + assert_eq "$(readlink -f /run/systemd/generator.late/test2.service)" "/run/systemd/generator.late/issue-24990.service" + output=$(systemctl cat issue-24990) +- assert_in "SourcePath=/etc/init.d/issue-24990" "$output" ++ assert_in "SourcePath=$SYSVINIT_PATH/issue-24990" "$output" + assert_in "Description=LSB: Test" "$output" + assert_in "After=test1.service" "$output" + assert_in "After=remote-fs.target" "$output" + assert_in "After=network-online.target" "$output" + assert_in "Wants=network-online.target" "$output" +- assert_in "ExecStart=/etc/init.d/issue-24990 start" "$output" +- assert_in "ExecStop=/etc/init.d/issue-24990 stop" "$output" ++ assert_in "ExecStart=$SYSVINIT_PATH/issue-24990 start" "$output" ++ assert_in "ExecStop=$SYSVINIT_PATH/issue-24990 stop" "$output" + systemctl status issue-24990 || : + systemctl show issue-24990 + assert_not_in "issue-24990.service" "$(systemctl show --property=After --value)" +@@ -350,7 +353,7 @@ EOF + systemctl stop issue-24990 + + # valid dependency +- cat >/etc/init.d/issue-24990 <<\EOF ++ cat >"$SYSVINIT_PATH/issue-24990" <<\EOF + #!/bin/bash + + ### BEGIN INIT INFO +@@ -376,18 +379,18 @@ case "$1" in + esac + EOF + +- chmod +x /etc/init.d/issue-24990 ++ chmod +x "$SYSVINIT_PATH/issue-24990" + systemctl daemon-reload + [[ -L /run/systemd/generator.late/test1.service ]] + [[ -L /run/systemd/generator.late/test2.service ]] + assert_eq "$(readlink -f /run/systemd/generator.late/test1.service)" "/run/systemd/generator.late/issue-24990.service" + assert_eq "$(readlink -f /run/systemd/generator.late/test2.service)" "/run/systemd/generator.late/issue-24990.service" + output=$(systemctl cat issue-24990) +- assert_in "SourcePath=/etc/init.d/issue-24990" "$output" ++ assert_in "SourcePath=$SYSVINIT_PATH/issue-24990" "$output" + assert_in "Description=LSB: Test" "$output" + assert_in "After=remote-fs.target" "$output" +- assert_in "ExecStart=/etc/init.d/issue-24990 start" "$output" +- assert_in "ExecStop=/etc/init.d/issue-24990 stop" "$output" ++ assert_in "ExecStart=$SYSVINIT_PATH/issue-24990 start" "$output" ++ assert_in "ExecStop=$SYSVINIT_PATH/issue-24990 stop" "$output" + systemctl status issue-24990 || : + systemctl show issue-24990 + assert_not_in "issue-24990.service" "$(systemctl show --property=After --value)" diff --git a/SOURCES/0180-man-fix-invalid-description-of-template-handling-in-.patch b/SOURCES/0180-man-fix-invalid-description-of-template-handling-in-.patch deleted file mode 100644 index 2fc62e6..0000000 --- a/SOURCES/0180-man-fix-invalid-description-of-template-handling-in-.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 842c3bade0b593e5c4eabbe1c18dfab503683cc6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 10 Mar 2022 21:33:25 +0100 -Subject: [PATCH] man: fix invalid description of template handling in - WantedBy= - -We don't need to talk about Alias=. The approach of using Alias= to enable -units is still supported, but hasn't been advertised as the way to do thing -for many years. Using it as an explanation is just confusing. - -Also, the description of templated units did not take DefaultInstance= -into account. It is updated and extended. - -(cherry picked from commit 17a2679e9925c9ec3c5764d01def92c5627973e4) - -Related: #2082131 ---- - man/systemd.unit.xml | 53 +++++++++++++++++------------------ - test/test-systemctl-enable.sh | 49 ++++++++++++++++++++++++++++++++ - 2 files changed, 74 insertions(+), 28 deletions(-) - -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 2e6261c1ed..caebaecfdc 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -1906,34 +1906,31 @@ - WantedBy= - RequiredBy= - -- This option may be used more than once, or a -- space-separated list of unit names may be given. A symbolic -- link is created in the .wants/ or -- .requires/ directory of each of the -- listed units when this unit is installed by systemctl -- enable. This has the effect that a dependency of -- type Wants= or Requires= -- is added from the listed unit to the current unit. The primary -- result is that the current unit will be started when the -- listed unit is started. See the description of -- Wants= and Requires= in -- the [Unit] section for details. -- -- WantedBy=foo.service in a service -- bar.service is mostly equivalent to -- Alias=foo.service.wants/bar.service in the -- same file. In case of template units listing non template units, -- systemctl enable must be called with an -- instance name, and this instance will be added to the -- .wants/ or -- .requires/ list of the listed unit. E.g. -- WantedBy=getty.target in a service -- getty@.service will result in -- systemctl enable getty@tty2.service -- creating a -- getty.target.wants/getty@tty2.service -- link to getty@.service. -- -+ This option may be used more than once, or a space-separated list of unit names may -+ be given. A symbolic link is created in the .wants/ or -+ .requires/ directory of each of the listed units when this unit is installed by -+ systemctl enable. This has the effect of a dependency of type -+ Wants= or Requires= being added from the listed unit to the -+ current unit. The primary result is that the current unit will be started when the listed unit is -+ started, see the description of Wants= and Requires= in the -+ [Unit] section for details. -+ -+ In case of template units listing non template units, the listing unit must have -+ DefaultInstance= set, or systemctl enable must be called with -+ an instance name. The instance (default or specified) will be added to the -+ .wants/ or .requires/ list of the listed unit. For example, -+ WantedBy=getty.target in a service getty@.service will result -+ in systemctl enable getty@tty2.service creating a -+ getty.target.wants/getty@tty2.service link to -+ getty@.service. This also applies to listing specific instances of templated -+ units: this specific instance will gain the dependency. A template unit may also list a template -+ unit, in which case a generic dependency will be added where each instance of the listing unit will -+ have a dependency on an instance of the listed template with the same instance value. For example, -+ WantedBy=container@.target in a service monitor@.service will -+ result in systemctl enable monitor@.service creating a -+ container@.target.wants/monitor@.service link to -+ monitor@.service, which applies to all instances of -+ container@.target. - - - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 4117436462..3aa61222a8 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -324,6 +324,31 @@ test ! -h "$root/etc/systemd/system/services.target.wants/templ1@333.service" - test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service" - test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" - -+: -------template enablement for another template------------- -+cat >"$root/etc/systemd/system/templ2@.service" <"$root/etc/systemd/system/link4.service" <&2; exit 1; } - -+: -------specifiers in WantedBy------------------------------- -+# We don't need to repeat all the tests. Let's do a basic check that specifier -+# expansion is performed. -+ -+cat >"$root/etc/systemd/system/some-some-link7.socket" < +Date: Wed, 1 Feb 2023 23:39:43 +0900 +Subject: [PATCH] udev: make get_virtfn_info() provide physical PCI device + +Fixes a bug introduced by 78463c6c4fdcb703bc0dc694c3ea77df3c5624e0. + +Fixes #25545. + +(cherry picked from commit cf74e2e16fb06b7de9e3875c6462290998fb06bd) + +Resolves: #2159448 +--- + src/udev/udev-builtin-net_id.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c +index 7504123700..d4e9dcb60d 100644 +--- a/src/udev/udev-builtin-net_id.c ++++ b/src/udev/udev-builtin-net_id.c +@@ -144,7 +144,7 @@ static int get_virtfn_info(sd_device *pcidev, sd_device **ret_physfn_pcidev, cha + if (!suffix) + return -ENOMEM; + +- *ret_physfn_pcidev = sd_device_ref(child); ++ *ret_physfn_pcidev = sd_device_ref(physfn_pcidev); + *ret_suffix = suffix; + return 0; + } diff --git a/SOURCES/0181-shared-install-drop-unnecessary-casts.patch b/SOURCES/0181-shared-install-drop-unnecessary-casts.patch deleted file mode 100644 index c9db77a..0000000 --- a/SOURCES/0181-shared-install-drop-unnecessary-casts.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 34c379b77a4bfacb675cb6e5a363317d7dcc9c95 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 2 Mar 2022 17:19:56 +0100 -Subject: [PATCH] shared/install: drop unnecessary casts - -The compiler coerces to bool for us, no need to do it explicitly. - -(cherry picked from commit d3e85c9c81b1dd55eed2a33e8c25cef38db665f9) - -Related: #2082131 ---- - src/shared/install.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 459e8a6951..f1ee3c2716 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2178,7 +2178,7 @@ int unit_file_mask( - if (!path) - return -ENOMEM; - -- q = create_symlink(&lp, "/dev/null", path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ q = create_symlink(&lp, "/dev/null", path, flags & UNIT_FILE_FORCE, changes, n_changes); - if (q < 0 && r >= 0) - r = q; - } -@@ -2199,7 +2199,6 @@ int unit_file_unmask( - _cleanup_strv_free_ char **todo = NULL; - const char *config_path; - size_t n_todo = 0; -- bool dry_run; - char **i; - int r, q; - -@@ -2214,7 +2213,7 @@ int unit_file_unmask( - if (!config_path) - return -ENXIO; - -- dry_run = !!(flags & UNIT_FILE_DRY_RUN); -+ bool dry_run = flags & UNIT_FILE_DRY_RUN; - - STRV_FOREACH(i, files) { - _cleanup_free_ char *path = NULL; -@@ -2354,7 +2353,7 @@ int unit_file_link( - if (!new_path) - return -ENOMEM; - -- q = create_symlink(&lp, *i, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes); -+ q = create_symlink(&lp, *i, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); - if (q < 0 && r >= 0) - r = q; - } -@@ -2689,7 +2688,7 @@ int unit_file_disable( - if (r < 0) - return r; - -- return remove_marked_symlinks(remove_symlinks_to, config_path, &lp, !!(flags & UNIT_FILE_DRY_RUN), changes, n_changes); -+ return remove_marked_symlinks(remove_symlinks_to, config_path, &lp, flags & UNIT_FILE_DRY_RUN, changes, n_changes); - } - - int unit_file_reenable( diff --git a/SOURCES/0181-test-make-helper_check_device_units-log-unit-name.patch b/SOURCES/0181-test-make-helper_check_device_units-log-unit-name.patch new file mode 100644 index 0000000..d91a1dc --- /dev/null +++ b/SOURCES/0181-test-make-helper_check_device_units-log-unit-name.patch @@ -0,0 +1,40 @@ +From 54c173eb34da7c94953ed3556b448da13a4dc5fa Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 1 Feb 2023 23:03:54 +0900 +Subject: [PATCH] test: make helper_check_device_units() log unit name + +(cherry picked from commit 5479d0f83a80810c475b14fbaf61872f4df6b20e) + +Related: #2138081 +--- + test/units/testsuite-64.sh | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh +index fd1ad7c041..c572671c20 100755 +--- a/test/units/testsuite-64.sh ++++ b/test/units/testsuite-64.sh +@@ -89,6 +89,8 @@ check_device_unit() {( + path="${2?}" + unit=$(systemd-escape --path --suffix=device "$path") + ++ [[ "$log_level" == 1 ]] && echo "INFO: check_device_unit($unit)" ++ + syspath=$(systemctl show --value --property SysFSPath "$unit" 2>/dev/null) + if [[ -z "$syspath" ]]; then + [[ "$log_level" == 1 ]] && echo >&2 "ERROR: $unit not found." +@@ -156,12 +158,11 @@ helper_check_device_units() {( + + local i + +- for ((i = 0; i < 20; i++)); do +- (( i == 0 )) || sleep .5 +- ++ for (( i = 0; i < 20; i++ )); do + if check_device_units 0 "$@"; then + return 0 + fi ++ sleep .5 + done + + check_device_units 1 "$@" diff --git a/SOURCES/0182-strv-make-iterator-in-STRV_FOREACH-declaread-in-the-.patch b/SOURCES/0182-strv-make-iterator-in-STRV_FOREACH-declaread-in-the-.patch deleted file mode 100644 index 7679d6c..0000000 --- a/SOURCES/0182-strv-make-iterator-in-STRV_FOREACH-declaread-in-the-.patch +++ /dev/null @@ -1,5179 +0,0 @@ -From 86eae9a1dade5ba15990196b1459e1394bf0a632 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 16 Mar 2022 22:32:23 +0900 -Subject: [PATCH] strv: make iterator in STRV_FOREACH() declaread in the loop - -This also avoids multiple evaluations in STRV_FOREACH_BACKWARDS() - -(cherry picked from commit de010b0b2e50cf0b3837ce350b116bc92605f67a) - -Related: #2082131 ---- - src/activate/activate.c | 3 -- - src/analyze/analyze-condition.c | 2 -- - src/analyze/analyze-elf.c | 1 - - src/analyze/analyze-security.c | 7 +--- - src/analyze/analyze-verify.c | 3 -- - src/analyze/analyze.c | 27 ++------------ - src/ask-password/ask-password.c | 1 - - src/basic/conf-files.c | 9 ++--- - src/basic/env-file.c | 1 - - src/basic/env-util.c | 19 +++------- - src/basic/escape.c | 1 - - src/basic/fileio.c | 2 -- - src/basic/hashmap.c | 1 - - src/basic/ordered-set.c | 1 - - src/basic/os-util.c | 1 - - src/basic/path-lookup.c | 1 - - src/basic/path-util.c | 20 ++++------- - src/basic/process-util.c | 1 - - src/basic/strv.c | 28 ++------------- - src/basic/strv.h | 35 ++++++++++++------- - src/basic/unit-file.c | 8 ++--- - src/binfmt/binfmt.c | 1 - - src/boot/bless-boot.c | 2 -- - src/boot/bootctl.c | 2 -- - src/busctl/busctl.c | 5 +-- - src/cgls/cgls.c | 1 - - src/core/bpf-firewall.c | 2 -- - src/core/cgroup.c | 1 - - src/core/dbus-cgroup.c | 2 -- - src/core/dbus-execute.c | 26 +++----------- - src/core/dbus-manager.c | 1 - - src/core/dbus-socket.c | 4 +-- - src/core/dbus-unit.c | 5 +-- - src/core/device.c | 16 +++------ - src/core/execute.c | 16 +++------ - src/core/load-dropin.c | 2 -- - src/core/load-fragment.c | 1 - - src/core/main.c | 1 - - src/core/manager.c | 1 - - src/core/namespace.c | 6 ---- - src/core/service.c | 2 -- - src/core/socket.c | 4 --- - src/core/transaction.c | 3 +- - src/core/unit-serialize.c | 2 +- - src/core/unit.c | 6 ---- - src/coredump/coredumpctl.c | 1 - - src/creds/creds.c | 1 - - src/cryptenroll/cryptenroll.c | 1 - - src/cryptsetup/cryptsetup-keyfile.c | 1 - - src/cryptsetup/cryptsetup.c | 4 +-- - src/debug-generator/debug-generator.c | 2 -- - src/delta/delta.c | 2 -- - src/dissect/dissect.c | 3 -- - .../environment-d-generator.c | 1 - - src/escape/escape.c | 1 - - src/fstab-generator/fstab-generator.c | 3 -- - src/home/homectl.c | 11 ++---- - src/home/homed-manager-bus.c | 1 - - src/home/homed-manager.c | 1 - - src/home/homed-varlink.c | 6 +--- - src/home/homework-cifs.c | 1 - - src/home/homework-fscrypt.c | 3 -- - src/home/homework-luks.c | 3 -- - src/home/homework-pkcs11.c | 1 - - src/home/homework.c | 13 ++----- - src/home/user-record-pwquality.c | 3 +- - src/home/user-record-util.c | 3 -- - src/id128/id128.c | 1 - - src/journal-remote/journal-remote-main.c | 1 - - src/journal-remote/microhttpd-util.c | 5 ++- - src/journal/journalctl.c | 5 +-- - src/libsystemd-network/dhcp-option.c | 1 - - src/libsystemd-network/dhcp6-option.c | 2 -- - src/libsystemd-network/sd-dhcp-client.c | 1 - - src/libsystemd-network/sd-dhcp6-client.c | 2 -- - src/libsystemd-network/sd-radv.c | 1 - - src/libsystemd/sd-bus/bus-dump.c | 4 --- - src/libsystemd/sd-bus/bus-match.c | 6 ---- - src/libsystemd/sd-bus/bus-message.c | 1 - - src/libsystemd/sd-bus/bus-objects.c | 4 +-- - src/libsystemd/sd-bus/test-bus-address.c | 1 - - src/libsystemd/sd-device/device-private.c | 1 - - src/libsystemd/sd-journal/catalog.c | 2 -- - src/libsystemd/sd-journal/sd-journal.c | 1 - - src/libsystemd/sd-netlink/netlink-message.c | 1 - - src/libsystemd/sd-path/sd-path.c | 2 +- - src/locale/localectl.c | 2 -- - src/locale/localed.c | 1 - - src/login/loginctl.c | 2 -- - src/login/logind-dbus.c | 1 - - src/login/pam_systemd.c | 1 - - src/modules-load/modules-load.c | 1 - - src/network/generator/network-generator.c | 1 - - src/network/netdev/netdev.c | 1 - - src/network/networkctl.c | 1 - - src/network/networkd-dhcp-server.c | 2 -- - src/network/networkd-json.c | 3 +- - src/network/networkd-link-bus.c | 2 -- - src/network/networkd-link.c | 3 -- - src/network/networkd-ndisc.c | 1 - - src/network/networkd-network.c | 1 - - src/nspawn/nspawn-bind-user.c | 1 - - src/nspawn/nspawn-mount.c | 4 --- - src/nspawn/nspawn-network.c | 5 --- - src/nspawn/nspawn-oci.c | 1 - - src/nspawn/nspawn-seccomp.c | 1 - - src/nspawn/nspawn.c | 1 - - src/nss-systemd/userdb-glue.c | 2 +- - src/partition/repart.c | 3 -- - src/portable/portable.c | 7 ---- - src/portable/portablectl.c | 2 -- - src/resolve/resolvectl.c | 9 +---- - src/resolve/resolved-dns-trust-anchor.c | 1 - - src/resolve/resolved-dnssd.c | 1 - - src/resolve/resolved-etc-hosts.c | 3 -- - src/resolve/resolved-link-bus.c | 1 - - src/resolve/resolved-link.c | 2 -- - src/run-generator/run-generator.c | 1 - - src/shared/acl-util.c | 1 - - src/shared/bootspec.c | 4 --- - src/shared/bus-polkit.c | 1 - - src/shared/bus-unit-util.c | 3 -- - src/shared/bus-util.c | 2 -- - src/shared/cgroup-setup.c | 1 - - src/shared/condition.c | 1 - - src/shared/conf-parser.c | 1 - - src/shared/discover-image.c | 6 +--- - src/shared/dissect-image.c | 1 - - src/shared/dropin.c | 1 - - src/shared/exec-util.c | 4 +-- - src/shared/format-table.c | 1 - - src/shared/hwdb-util.c | 3 +- - src/shared/install.c | 28 +++------------ - src/shared/libcrypt-util.c | 1 - - src/shared/libfido2-util.c | 3 -- - src/shared/mount-setup.c | 3 -- - src/shared/mount-util.c | 1 - - src/shared/net-condition.c | 4 --- - src/shared/nscd-flush.c | 1 - - src/shared/pkcs11-util.c | 2 +- - src/shared/pretty-print.c | 4 +-- - src/shared/seccomp-util.c | 1 - - src/shared/serialize.c | 1 - - src/shared/tests.c | 1 - - src/shared/user-record-show.c | 13 ++----- - src/sleep/sleep.c | 2 -- - src/sysctl/sysctl.c | 4 --- - src/sysext/sysext.c | 6 ---- - src/systemctl/systemctl-cancel-job.c | 1 - - src/systemctl/systemctl-clean-or-freeze.c | 1 - - src/systemctl/systemctl-edit.c | 6 +--- - src/systemctl/systemctl-enable.c | 3 -- - src/systemctl/systemctl-is-active.c | 1 - - src/systemctl/systemctl-is-enabled.c | 1 - - src/systemctl/systemctl-kill.c | 2 +- - src/systemctl/systemctl-list-dependencies.c | 3 +- - src/systemctl/systemctl-list-machines.c | 1 - - src/systemctl/systemctl-list-units.c | 1 - - src/systemctl/systemctl-logind.c | 2 -- - src/systemctl/systemctl-reset-failed.c | 1 - - src/systemctl/systemctl-set-environment.c | 3 -- - src/systemctl/systemctl-set-property.c | 1 - - src/systemctl/systemctl-show.c | 7 ---- - src/systemctl/systemctl-start-unit.c | 6 +--- - src/systemctl/systemctl-util.c | 7 +--- - src/sysusers/sysusers.c | 6 ---- - src/sysv-generator/sysv-generator.c | 3 -- - src/test/test-bpf-foreign-programs.c | 2 -- - src/test/test-bpf-lsm.c | 1 - - src/test/test-copy.c | 1 - - src/test/test-env-util.c | 1 - - src/test/test-exec-util.c | 4 +-- - src/test/test-execute.c | 2 -- - src/test/test-fileio.c | 5 --- - src/test/test-fs-util.c | 1 - - src/test/test-kbd-util.c | 1 - - src/test/test-locale-util.c | 2 -- - src/test/test-nss-hosts.c | 5 --- - src/test/test-nss-users.c | 2 -- - src/test/test-path-lookup.c | 3 +- - src/test/test-path-util.c | 1 - - src/test/test-path.c | 1 - - src/test/test-sd-path.c | 1 - - src/test/test-socket-bind.c | 3 +- - src/test/test-string-util.c | 1 - - src/test/test-strv.c | 5 --- - src/test/test-sysctl-util.c | 1 - - src/test/test-time-util.c | 1 - - src/test/test-unit-file.c | 1 - - src/timedate/timedated.c | 1 - - src/timesync/timesyncd-manager.c | 1 - - src/tmpfiles/tmpfiles.c | 14 ++------ - .../tty-ask-password-agent.c | 5 +-- - src/udev/net/link-config.c | 2 -- - src/udev/udev-event.c | 1 - - src/udev/udev-rules.c | 4 +-- - src/udev/udevadm-info.c | 1 - - src/userdb/userdbctl.c | 24 ++++--------- - .../xdg-autostart-condition.c | 1 - - .../xdg-autostart-generator.c | 1 - - 200 files changed, 110 insertions(+), 611 deletions(-) - -diff --git a/src/activate/activate.c b/src/activate/activate.c -index b625d97f2e..8ee7a3ec60 100644 ---- a/src/activate/activate.c -+++ b/src/activate/activate.c -@@ -49,7 +49,6 @@ static int add_epoll(int epoll_fd, int fd) { - } - - static int open_sockets(int *epoll_fd, bool accept) { -- char **address; - int n, fd, r, count = 0; - - n = sd_listen_fds(true); -@@ -124,7 +123,6 @@ static int open_sockets(int *epoll_fd, bool accept) { - - static int exec_process(const char *name, char **argv, int start_fd, size_t n_fds) { - _cleanup_strv_free_ char **envp = NULL; -- char **s; - int r; - - if (arg_inetd && n_fds != 1) -@@ -389,7 +387,6 @@ static int parse_argv(int argc, char *argv[]) { - - case ARG_FDNAME: { - _cleanup_strv_free_ char **names = NULL; -- char **s; - - names = strv_split(optarg, ":"); - if (!names) -diff --git a/src/analyze/analyze-condition.c b/src/analyze/analyze-condition.c -index f57bb27b9a..a7ad085f46 100644 ---- a/src/analyze/analyze-condition.c -+++ b/src/analyze/analyze-condition.c -@@ -113,8 +113,6 @@ int verify_conditions(char **lines, UnitFileScope scope, const char *unit, const - if (r < 0) - return r; - } else { -- char **line; -- - r = unit_new_for_name(m, sizeof(Service), "test.service", &u); - if (r < 0) - return log_error_errno(r, "Failed to create test.service: %m"); -diff --git a/src/analyze/analyze-elf.c b/src/analyze/analyze-elf.c -index 741cd20f99..a0aa97da69 100644 ---- a/src/analyze/analyze-elf.c -+++ b/src/analyze/analyze-elf.c -@@ -11,7 +11,6 @@ - #include "strv.h" - - int analyze_elf(char **filenames, JsonFormatFlags json_flags) { -- char **filename; - int r; - - STRV_FOREACH(filename, filenames) { -diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c -index 2691dc2c86..d8ccbf8c54 100644 ---- a/src/analyze/analyze-security.c -+++ b/src/analyze/analyze-security.c -@@ -2663,7 +2663,6 @@ static int offline_security_checks(char **filenames, - _cleanup_free_ char *var = NULL; - int r, k; - size_t count = 0; -- char **filename; - - if (strv_isempty(filenames)) - return 0; -@@ -2786,7 +2785,6 @@ int analyze_security(sd_bus *bus, - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - _cleanup_strv_free_ char **list = NULL; - size_t n = 0; -- char **i; - - r = sd_bus_call_method( - bus, -@@ -2838,9 +2836,7 @@ int analyze_security(sd_bus *bus, - ret = r; - } - -- } else { -- char **i; -- -+ } else - STRV_FOREACH(i, units) { - _cleanup_free_ char *mangled = NULL, *instance = NULL; - const char *name; -@@ -2872,7 +2868,6 @@ int analyze_security(sd_bus *bus, - if (r < 0 && ret >= 0) - ret = r; - } -- } - - if (overview_table) { - if (!FLAGS_SET(flags, ANALYZE_SECURITY_SHORT)) { -diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c -index 943a1f27de..39eb5cf93b 100644 ---- a/src/analyze/analyze-verify.c -+++ b/src/analyze/analyze-verify.c -@@ -75,7 +75,6 @@ int verify_prepare_filename(const char *filename, char **ret) { - - int verify_generate_path(char **var, char **filenames) { - const char *old; -- char **filename; - - _cleanup_strv_free_ char **ans = NULL; - int r; -@@ -184,7 +183,6 @@ static int verify_executables(Unit *u, const char *root) { - } - - static int verify_documentation(Unit *u, bool check_man) { -- char **p; - int r = 0, k; - - STRV_FOREACH(p, u->documentation) { -@@ -258,7 +256,6 @@ int verify_units(char **filenames, UnitFileScope scope, bool check_man, bool run - Unit *units[strv_length(filenames)]; - _cleanup_free_ char *var = NULL; - int r, k, i, count = 0; -- char **filename; - - if (strv_isempty(filenames)) - return 0; -diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c -index a1908ff442..846acf31d3 100644 ---- a/src/analyze/analyze.c -+++ b/src/analyze/analyze.c -@@ -239,7 +239,6 @@ static int compare_unit_start(const UnitTimes *a, const UnitTimes *b) { - - static int process_aliases(char *argv[], char *tempdir, char ***ret) { - _cleanup_strv_free_ char **filenames = NULL; -- char **filename; - int r; - - assert(argv); -@@ -961,7 +960,6 @@ static bool times_in_range(const UnitTimes *times, const BootTimes *boot) { - - static int list_dependencies_one(sd_bus *bus, const char *name, unsigned level, char ***units, unsigned branches) { - _cleanup_strv_free_ char **deps = NULL; -- char **c; - int r; - usec_t service_longest = 0; - int to_print = 0; -@@ -1111,7 +1109,6 @@ static int analyze_critical_chain(int argc, char *argv[], void *userdata) { - "The time the unit took to start is printed after the \"+\" character.\n"); - - if (argc > 1) { -- char **name; - STRV_FOREACH(name, strv_skip(argv, 1)) - list_dependencies(bus, *name); - } else -@@ -1207,7 +1204,6 @@ static int graph_one_property( - char *to_patterns[]) { - - _cleanup_strv_free_ char **units = NULL; -- char **unit; - int r; - bool match_patterns; - -@@ -1273,7 +1269,6 @@ static int graph_one(sd_bus *bus, const UnitInfo *u, char *patterns[], char *fro - - static int expand_patterns(sd_bus *bus, char **patterns, char ***ret) { - _cleanup_strv_free_ char **expanded_patterns = NULL; -- char **pattern; - int r; - - STRV_FOREACH(pattern, patterns) { -@@ -1427,7 +1422,7 @@ static int dump(int argc, char *argv[], void *userdata) { - } - - static int cat_config(int argc, char *argv[], void *userdata) { -- char **arg, **list; -+ char **list; - int r; - - pager_open(arg_pager_flags); -@@ -1476,7 +1471,6 @@ static int verb_log_control(int argc, char *argv[], void *userdata) { - } - - static bool strv_fnmatch_strv_or_empty(char* const* patterns, char **strv, int flags) { -- char **s; - STRV_FOREACH(s, strv) - if (strv_fnmatch_or_empty(patterns, *s, flags)) - return true; -@@ -1524,7 +1518,6 @@ static int do_unit_files(int argc, char *argv[], void *userdata) { - static int dump_unit_paths(int argc, char *argv[], void *userdata) { - _cleanup_(lookup_paths_free) LookupPaths paths = {}; - int r; -- char **p; - - r = lookup_paths_init(&paths, arg_scope, 0, NULL); - if (r < 0) -@@ -1737,7 +1730,6 @@ static int dump_syscall_filters(int argc, char *argv[], void *userdata) { - - if (!set_isempty(known)) { - _cleanup_free_ char **l = NULL; -- char **syscall; - - printf("\n" - "# %sUngrouped System Calls%s (known but not included in any of the groups except @known):\n", -@@ -1760,7 +1752,6 @@ static int dump_syscall_filters(int argc, char *argv[], void *userdata) { - log_notice_errno(k, "# Not showing unlisted system calls, couldn't retrieve kernel system call list: %m"); - } else if (!set_isempty(kernel)) { - _cleanup_free_ char **l = NULL; -- char **syscall; - - printf("\n" - "# %sUnlisted System Calls%s (supported by the local kernel, but not included in any of the groups listed above):\n", -@@ -1775,9 +1766,7 @@ static int dump_syscall_filters(int argc, char *argv[], void *userdata) { - STRV_FOREACH(syscall, l) - printf("# %s\n", *syscall); - } -- } else { -- char **name; -- -+ } else - STRV_FOREACH(name, strv_skip(argv, 1)) { - const SyscallFilterSet *set; - -@@ -1796,7 +1785,6 @@ static int dump_syscall_filters(int argc, char *argv[], void *userdata) { - dump_syscall_filter(set); - first = false; - } -- } - - return 0; - } -@@ -1944,7 +1932,6 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) { - - if (!set_isempty(known)) { - _cleanup_free_ char **l = NULL; -- char **filesystem; - - printf("\n" - "# %sUngrouped filesystems%s (known but not included in any of the groups except @known):\n", -@@ -1987,7 +1974,6 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) { - log_notice_errno(k, "# Not showing unlisted filesystems, couldn't retrieve kernel filesystem list: %m"); - } else if (!set_isempty(kernel)) { - _cleanup_free_ char **l = NULL; -- char **filesystem; - - printf("\n" - "# %sUnlisted filesystems%s (available to the local kernel, but not included in any of the groups listed above):\n", -@@ -2002,9 +1988,7 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) { - STRV_FOREACH(filesystem, l) - printf("# %s\n", *filesystem); - } -- } else { -- char **name; -- -+ } else - STRV_FOREACH(name, strv_skip(argv, 1)) { - const FilesystemSet *set; - -@@ -2023,7 +2007,6 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) { - dump_filesystem_set(set); - first = false; - } -- } - - return 0; - } -@@ -2041,8 +2024,6 @@ static void parsing_hint(const char *p, bool calendar, bool timestamp, bool time - } - - static int dump_timespan(int argc, char *argv[], void *userdata) { -- char **input_timespan; -- - STRV_FOREACH(input_timespan, strv_skip(argv, 1)) { - _cleanup_(table_unrefp) Table *table = NULL; - usec_t output_usecs; -@@ -2180,7 +2161,6 @@ static int test_timestamp_one(const char *p) { - - static int test_timestamp(int argc, char *argv[], void *userdata) { - int ret = 0, r; -- char **p; - - STRV_FOREACH(p, strv_skip(argv, 1)) { - r = test_timestamp_one(*p); -@@ -2312,7 +2292,6 @@ static int test_calendar_one(usec_t n, const char *p) { - - static int test_calendar(int argc, char *argv[], void *userdata) { - int ret = 0, r; -- char **p; - usec_t n; - - if (arg_base_time != USEC_INFINITY) -diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c -index a100679af2..093533182f 100644 ---- a/src/ask-password/ask-password.c -+++ b/src/ask-password/ask-password.c -@@ -223,7 +223,6 @@ static int parse_argv(int argc, char *argv[]) { - static int run(int argc, char *argv[]) { - _cleanup_strv_free_erase_ char **l = NULL; - usec_t timeout; -- char **p; - int r; - - log_show_color(true); -diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c -index 287428b561..82c6dc5677 100644 ---- a/src/basic/conf-files.c -+++ b/src/basic/conf-files.c -@@ -145,7 +145,7 @@ static int conf_files_list_strv_internal( - - _cleanup_hashmap_free_ Hashmap *fh = NULL; - _cleanup_set_free_free_ Set *masked = NULL; -- char **files, **p; -+ char **files; - int r; - - assert(ret); -@@ -202,11 +202,8 @@ int conf_files_insert(char ***strv, const char *root, char **dirs, const char *p - int c; - - c = base_cmp((char* const*) *strv + i, (char* const*) &path); -- if (c == 0) { -- char **dir; -- -+ if (c == 0) - /* Oh, there already is an entry with a matching name (the last component). */ -- - STRV_FOREACH(dir, dirs) { - _cleanup_free_ char *rdir = NULL; - char *p1, *p2; -@@ -233,7 +230,7 @@ int conf_files_insert(char ***strv, const char *root, char **dirs, const char *p - } - } - -- } else if (c > 0) -+ else if (c > 0) - /* Following files have lower priority, let's go insert our - * new entry. */ - break; -diff --git a/src/basic/env-file.c b/src/basic/env-file.c -index 0e272da083..b46a679e06 100644 ---- a/src/basic/env-file.c -+++ b/src/basic/env-file.c -@@ -520,7 +520,6 @@ static void write_env_var(FILE *f, const char *v) { - int write_env_file(const char *fname, char **l) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *p = NULL; -- char **i; - int r; - - assert(fname); -diff --git a/src/basic/env-util.c b/src/basic/env-util.c -index 885967e7f3..455f5d76f5 100644 ---- a/src/basic/env-util.c -+++ b/src/basic/env-util.c -@@ -96,8 +96,6 @@ bool env_assignment_is_valid(const char *e) { - } - - bool strv_env_is_valid(char **e) { -- char **p, **q; -- - STRV_FOREACH(p, e) { - size_t k; - -@@ -115,8 +113,6 @@ bool strv_env_is_valid(char **e) { - } - - bool strv_env_name_is_valid(char **l) { -- char **p; -- - STRV_FOREACH(p, l) { - if (!env_name_is_valid(*p)) - return false; -@@ -129,8 +125,6 @@ bool strv_env_name_is_valid(char **l) { - } - - bool strv_env_name_or_assignment_is_valid(char **l) { -- char **p; -- - STRV_FOREACH(p, l) { - if (!env_assignment_is_valid(*p) && !env_name_is_valid(*p)) - return false; -@@ -272,7 +266,7 @@ static bool env_entry_has_name(const char *entry, const char *name) { - - char **strv_env_delete(char **x, size_t n_lists, ...) { - size_t n, i = 0; -- char **k, **r; -+ char **r; - va_list ap; - - /* Deletes every entry from x that is mentioned in the other -@@ -287,7 +281,7 @@ char **strv_env_delete(char **x, size_t n_lists, ...) { - STRV_FOREACH(k, x) { - va_start(ap, n_lists); - for (size_t v = 0; v < n_lists; v++) { -- char **l, **j; -+ char **l; - - l = va_arg(ap, char**); - STRV_FOREACH(j, l) -@@ -379,7 +373,6 @@ char **strv_env_unset_many(char **l, ...) { - - int strv_env_replace_consume(char ***l, char *p) { - const char *t, *name; -- char **f; - int r; - - assert(p); -@@ -467,8 +460,6 @@ int strv_env_assign(char ***l, const char *key, const char *value) { - } - - char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) { -- char **i; -- - assert(name); - - if (k <= 0) -@@ -496,7 +487,7 @@ char *strv_env_get(char **l, const char *name) { - } - - char *strv_env_pairs_get(char **l, const char *name) { -- char **key, **value, *result = NULL; -+ char *result = NULL; - - assert(name); - -@@ -508,7 +499,6 @@ char *strv_env_pairs_get(char **l, const char *name) { - } - - char **strv_env_clean_with_callback(char **e, void (*invalid_callback)(const char *p, void *userdata), void *userdata) { -- char **p, **q; - int k = 0; - - STRV_FOREACH(p, e) { -@@ -702,7 +692,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { - } - - char **replace_env_argv(char **argv, char **env) { -- char **ret, **i; -+ char **ret; - size_t k = 0, l = 0; - - l = strv_length(argv); -@@ -832,7 +822,6 @@ int setenv_systemd_exec_pid(bool update_only) { - int getenv_path_list(const char *name, char ***ret_paths) { - _cleanup_strv_free_ char **l = NULL; - const char *e; -- char **p; - int r; - - assert(name); -diff --git a/src/basic/escape.c b/src/basic/escape.c -index ce57fcc762..1cb7ced545 100644 ---- a/src/basic/escape.c -+++ b/src/basic/escape.c -@@ -549,7 +549,6 @@ char* quote_command_line(char **argv, ShellEscapeFlags flags) { - - assert(argv); - -- char **a; - STRV_FOREACH(a, argv) { - _cleanup_free_ char *t = NULL; - -diff --git a/src/basic/fileio.c b/src/basic/fileio.c -index 8d92da327e..d9b988d117 100644 ---- a/src/basic/fileio.c -+++ b/src/basic/fileio.c -@@ -1042,8 +1042,6 @@ static int search_and_fopen_internal( - FILE **ret, - char **ret_path) { - -- char **i; -- - assert(path); - assert(mode); - assert(ret); -diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c -index b51d70bc87..bd7a6b0d6e 100644 ---- a/src/basic/hashmap.c -+++ b/src/basic/hashmap.c -@@ -1864,7 +1864,6 @@ int _set_put_strdup_full(Set **s, const struct hash_ops *hash_ops, const char *p - - int _set_put_strdupv_full(Set **s, const struct hash_ops *hash_ops, char **l HASHMAP_DEBUG_PARAMS) { - int n = 0, r; -- char **i; - - assert(s); - -diff --git a/src/basic/ordered-set.c b/src/basic/ordered-set.c -index 0a76f04561..b4c2588395 100644 ---- a/src/basic/ordered-set.c -+++ b/src/basic/ordered-set.c -@@ -58,7 +58,6 @@ int _ordered_set_put_strdup(OrderedSet **s, const char *p HASHMAP_DEBUG_PARAMS) - - int _ordered_set_put_strdupv(OrderedSet **s, char **l HASHMAP_DEBUG_PARAMS) { - int n = 0, r; -- char **i; - - STRV_FOREACH(i, l) { - r = _ordered_set_put_strdup(s, *i HASHMAP_DEBUG_PASS_ARGS); -diff --git a/src/basic/os-util.c b/src/basic/os-util.c -index 38b2179e48..acfff24319 100644 ---- a/src/basic/os-util.c -+++ b/src/basic/os-util.c -@@ -277,7 +277,6 @@ int load_os_release_pairs(const char *root, char ***ret) { - - int load_os_release_pairs_with_prefix(const char *root, const char *prefix, char ***ret) { - _cleanup_strv_free_ char **os_release_pairs = NULL, **os_release_pairs_prefixed = NULL; -- char **p, **q; - int r; - - r = load_os_release_pairs(root, &os_release_pairs); -diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c -index ab51955e34..b699756658 100644 ---- a/src/basic/path-lookup.c -+++ b/src/basic/path-lookup.c -@@ -463,7 +463,6 @@ static int patch_root_prefix(char **p, const char *root_dir) { - } - - static int patch_root_prefix_strv(char **l, const char *root_dir) { -- char **i; - int r; - - if (!root_dir) -diff --git a/src/basic/path-util.c b/src/basic/path-util.c -index 4c952d863c..76af40aaf2 100644 ---- a/src/basic/path-util.c -+++ b/src/basic/path-util.c -@@ -202,9 +202,9 @@ int path_make_relative(const char *from, const char *to, char **ret) { - } - - char* path_startswith_strv(const char *p, char **set) { -- char **s, *t; -- - STRV_FOREACH(s, set) { -+ char *t; -+ - t = path_startswith(p, *s); - if (t) - return t; -@@ -214,7 +214,6 @@ char* path_startswith_strv(const char *p, char **set) { - } - - int path_strv_make_absolute_cwd(char **l) { -- char **s; - int r; - - /* Goes through every item in the string list and makes it -@@ -236,7 +235,6 @@ int path_strv_make_absolute_cwd(char **l) { - } - - char **path_strv_resolve(char **l, const char *root) { -- char **s; - unsigned k = 0; - bool enomem = false; - int r; -@@ -700,12 +698,12 @@ int find_executable_full(const char *name, const char *root, char **exec_search_ - p = DEFAULT_PATH; - - if (exec_search_path) { -- char **element; -- - STRV_FOREACH(element, exec_search_path) { - _cleanup_free_ char *full_path = NULL; -+ - if (!path_is_absolute(*element)) - continue; -+ - full_path = path_join(*element, name); - if (!full_path) - return -ENOMEM; -@@ -754,7 +752,6 @@ int find_executable_full(const char *name, const char *root, char **exec_search_ - - bool paths_check_timestamp(const char* const* paths, usec_t *timestamp, bool update) { - bool changed = false, originally_unset; -- const char* const* i; - - assert(timestamp); - -@@ -1339,7 +1336,7 @@ int systemd_installation_has_version(const char *root, unsigned minimal_version) - - _cleanup_strv_free_ char **names = NULL; - _cleanup_free_ char *path = NULL; -- char *c, **name; -+ char *c; - - path = path_join(root, pattern); - if (!path) -@@ -1411,8 +1408,6 @@ bool empty_or_root(const char *path) { - } - - bool path_strv_contains(char **l, const char *path) { -- char **i; -- - STRV_FOREACH(i, l) - if (path_equal(*i, path)) - return true; -@@ -1421,10 +1416,9 @@ bool path_strv_contains(char **l, const char *path) { - } - - bool prefixed_path_strv_contains(char **l, const char *path) { -- char **i, *j; -- - STRV_FOREACH(i, l) { -- j = *i; -+ const char *j = *i; -+ - if (*j == '-') - j++; - if (*j == '+') -diff --git a/src/basic/process-util.c b/src/basic/process-util.c -index c971852158..c09d7d0321 100644 ---- a/src/basic/process-util.c -+++ b/src/basic/process-util.c -@@ -214,7 +214,6 @@ int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags - assert(!(flags & PROCESS_CMDLINE_USE_LOCALE)); - - _cleanup_strv_free_ char **args = NULL; -- char **p; - - args = strv_parse_nulstr(t, k); - if (!args) -diff --git a/src/basic/strv.c b/src/basic/strv.c -index 2ba5a94839..d195606fff 100644 ---- a/src/basic/strv.c -+++ b/src/basic/strv.c -@@ -17,8 +17,6 @@ - #include "strv.h" - - char* strv_find(char * const *l, const char *name) { -- char * const *i; -- - assert(name); - - STRV_FOREACH(i, l) -@@ -29,8 +27,6 @@ char* strv_find(char * const *l, const char *name) { - } - - char* strv_find_case(char * const *l, const char *name) { -- char * const *i; -- - assert(name); - - STRV_FOREACH(i, l) -@@ -41,8 +37,6 @@ char* strv_find_case(char * const *l, const char *name) { - } - - char* strv_find_prefix(char * const *l, const char *name) { -- char * const *i; -- - assert(name); - - STRV_FOREACH(i, l) -@@ -53,14 +47,14 @@ char* strv_find_prefix(char * const *l, const char *name) { - } - - char* strv_find_startswith(char * const *l, const char *name) { -- char * const *i, *e; -- - assert(name); - - /* Like strv_find_prefix, but actually returns only the - * suffix, not the whole item */ - - STRV_FOREACH(i, l) { -+ char *e; -+ - e = startswith(*i, name); - if (e) - return e; -@@ -80,8 +74,6 @@ char** strv_free(char **l) { - } - - char** strv_free_erase(char **l) { -- char **i; -- - STRV_FOREACH(i, l) - erase_and_freep(i); - -@@ -171,8 +163,8 @@ char** strv_new_internal(const char *x, ...) { - } - - int strv_extend_strv(char ***a, char * const *b, bool filter_duplicates) { -- char * const *s, **t; - size_t p, q, i = 0; -+ char **t; - - assert(a); - -@@ -217,7 +209,6 @@ rollback: - } - - int strv_extend_strv_concat(char ***a, char * const *b, const char *suffix) { -- char * const *s; - int r; - - STRV_FOREACH(s, b) { -@@ -367,7 +358,6 @@ int strv_split_colon_pairs(char ***t, const char *s) { - } - - char* strv_join_full(char * const *l, const char *separator, const char *prefix, bool unescape_separators) { -- char * const *s; - char *r, *e; - size_t n, k, m; - -@@ -595,8 +585,6 @@ int strv_extend_front(char ***l, const char *value) { - } - - char** strv_uniq(char **l) { -- char **i; -- - /* Drops duplicate entries. The first identical string will be - * kept, the others dropped */ - -@@ -607,8 +595,6 @@ char** strv_uniq(char **l) { - } - - bool strv_is_uniq(char * const *l) { -- char * const *i; -- - STRV_FOREACH(i, l) - if (strv_find(i+1, *i)) - return false; -@@ -717,7 +703,6 @@ int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) { - */ - - _cleanup_free_ char *m = NULL; -- char * const *i; - size_t n = 0; - - assert(ret); -@@ -754,8 +739,6 @@ int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) { - } - - bool strv_overlap(char * const *a, char * const *b) { -- char * const *i; -- - STRV_FOREACH(i, a) - if (strv_contains(b, *i)) - return true; -@@ -795,8 +778,6 @@ int strv_compare(char * const *a, char * const *b) { - } - - void strv_print(char * const *l) { -- char * const *s; -- - STRV_FOREACH(s, l) - puts(*s); - } -@@ -830,8 +811,6 @@ char** strv_reverse(char **l) { - } - - char** strv_shell_escape(char **l, const char *bad) { -- char **s; -- - /* Escapes every character in every string in l that is in bad, - * edits in-place, does not roll-back on error. */ - -@@ -914,7 +893,6 @@ rollback: - - int fputstrv(FILE *f, char * const *l, const char *separator, bool *space) { - bool b = false; -- char * const *s; - int r; - - /* Like fputs(), but for strv, and with a less stupid argument order */ -diff --git a/src/basic/strv.h b/src/basic/strv.h -index 27d4450468..3acf0a48f3 100644 ---- a/src/basic/strv.h -+++ b/src/basic/strv.h -@@ -122,19 +122,30 @@ static inline int strv_from_nulstr(char ***a, const char *nulstr) { - - bool strv_overlap(char * const *a, char * const *b) _pure_; - -+#define _STRV_FOREACH(s, l, i) \ -+ for (typeof(*(l)) *s, *i = (l); (s = i) && *i; i++) -+ - #define STRV_FOREACH(s, l) \ -- for ((s) = (l); (s) && *(s); (s)++) -+ _STRV_FOREACH(s, l, UNIQ_T(i, UNIQ)) -+ -+#define _STRV_FOREACH_BACKWARDS(s, l, h, i) \ -+ for (typeof(*(l)) *s, *h = (l), *i = ({ \ -+ size_t _len = strv_length(h); \ -+ _len > 0 ? h + _len - 1 : NULL; \ -+ }); \ -+ i && (s = i) >= h; \ -+ i--) -+ -+#define STRV_FOREACH_BACKWARDS(s, l) \ -+ _STRV_FOREACH_BACKWARDS(s, l, UNIQ_T(h, UNIQ), UNIQ_T(i, UNIQ)) - --#define STRV_FOREACH_BACKWARDS(s, l) \ -- for (s = ({ \ -- typeof(l) _l = l; \ -- _l ? _l + strv_length(_l) - 1U : NULL; \ -- }); \ -- (l) && ((s) >= (l)); \ -- (s)--) -+#define _STRV_FOREACH_PAIR(x, y, l, i) \ -+ for (typeof(*l) *x, *y, *i = (l); \ -+ i && *(x = i) && *(y = i + 1); \ -+ i += 2) - --#define STRV_FOREACH_PAIR(x, y, l) \ -- for ((x) = (l), (y) = (x) ? (x+1) : NULL; (x) && *(x) && *(y); (x) += 2, (y) = (x + 1)) -+#define STRV_FOREACH_PAIR(x, y, l) \ -+ _STRV_FOREACH_PAIR(x, y, l, UNIQ_T(i, UNIQ)) - - char** strv_sort(char **l); - void strv_print(char * const *l); -@@ -185,7 +196,7 @@ void strv_print(char * const *l); - #define STARTSWITH_SET(p, ...) \ - ({ \ - const char *_p = (p); \ -- char *_found = NULL, **_i; \ -+ char *_found = NULL; \ - STRV_FOREACH(_i, STRV_MAKE(__VA_ARGS__)) { \ - _found = startswith(_p, *_i); \ - if (_found) \ -@@ -197,7 +208,7 @@ void strv_print(char * const *l); - #define ENDSWITH_SET(p, ...) \ - ({ \ - const char *_p = (p); \ -- char *_found = NULL, **_i; \ -+ char *_found = NULL; \ - STRV_FOREACH(_i, STRV_MAKE(__VA_ARGS__)) { \ - _found = endswith(_p, *_i); \ - if (_found) \ -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 142ba006f8..6cf66b45cf 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -215,8 +215,7 @@ bool lookup_paths_timestamp_hash_same(const LookupPaths *lp, uint64_t timestamp_ - - siphash24_init(&state, HASH_KEY.bytes); - -- char **dir; -- STRV_FOREACH(dir, (char**) lp->search_path) { -+ STRV_FOREACH(dir, lp->search_path) { - struct stat st; - - if (lookup_paths_mtime_exclude(lp, *dir)) -@@ -388,7 +387,6 @@ int unit_file_build_name_map( - _cleanup_hashmap_free_ Hashmap *ids = NULL, *names = NULL; - _cleanup_set_free_free_ Set *paths = NULL; - uint64_t timestamp_hash; -- char **dir; - int r; - - /* Before doing anything, check if the timestamp hash that was passed is still valid. -@@ -406,7 +404,7 @@ int unit_file_build_name_map( - return log_oom(); - } - -- STRV_FOREACH(dir, (char**) lp->search_path) { -+ STRV_FOREACH(dir, lp->search_path) { - _cleanup_closedir_ DIR *d = NULL; - - d = opendir(*dir); -@@ -614,7 +612,7 @@ static int add_names( - Set **names, - const char *name) { - -- char **aliases, **alias; -+ char **aliases; - int r; - - assert(name_type == UNIT_NAME_PLAIN || instance); -diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c -index 18231c2618..817ee387ff 100644 ---- a/src/binfmt/binfmt.c -+++ b/src/binfmt/binfmt.c -@@ -213,7 +213,6 @@ static int run(int argc, char *argv[]) { - } - else { - _cleanup_strv_free_ char **files = NULL; -- char **f; - - r = conf_files_list_strv(&files, ".conf", NULL, 0, (const char**) CONF_PATHS_STRV("binfmt.d")); - if (r < 0) -diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c -index 9e4b0d1f72..49009cb1eb 100644 ---- a/src/boot/bless-boot.c -+++ b/src/boot/bless-boot.c -@@ -320,7 +320,6 @@ static const char *skip_slash(const char *path) { - static int verb_status(int argc, char *argv[], void *userdata) { - _cleanup_free_ char *path = NULL, *prefix = NULL, *suffix = NULL, *good = NULL, *bad = NULL; - uint64_t left, done; -- char **p; - int r; - - r = acquire_boot_count_path(&path, &prefix, &left, &done, &suffix); -@@ -397,7 +396,6 @@ static int verb_set(int argc, char *argv[], void *userdata) { - _cleanup_free_ char *path = NULL, *prefix = NULL, *suffix = NULL, *good = NULL, *bad = NULL, *parent = NULL; - const char *target, *source1, *source2; - uint64_t done; -- char **p; - int r; - - r = acquire_boot_count_path(&path, &prefix, NULL, &done, &suffix); -diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c -index 9427a0e4ce..c1adae4962 100644 ---- a/src/boot/bootctl.c -+++ b/src/boot/bootctl.c -@@ -440,7 +440,6 @@ static int boot_entry_show(const BootEntry *e, bool show_as_default) { - if (e->kernel) - boot_entry_file_list("linux", e->root, e->kernel, &status); - -- char **s; - STRV_FOREACH(s, e->initrd) - boot_entry_file_list(s == e->initrd ? "initrd" : NULL, - e->root, -@@ -669,7 +668,6 @@ static const char *const dollar_boot_subdirs[] = { - }; - - static int create_subdirs(const char *root, const char * const *subdirs) { -- const char *const *i; - int r; - - STRV_FOREACH(i, subdirs) { -diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c -index c0c9b23ae9..fd646784b9 100644 ---- a/src/busctl/busctl.c -+++ b/src/busctl/busctl.c -@@ -141,7 +141,7 @@ static int list_bus_names(int argc, char **argv, void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_hashmap_free_ Hashmap *names = NULL; - _cleanup_(table_unrefp) Table *table = NULL; -- char **i, *k; -+ char *k; - void *v; - int r; - -@@ -502,7 +502,6 @@ static int tree_one(sd_bus *bus, const char *service) { - - static int tree(int argc, char **argv, void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; -- char **i; - int r; - - /* Do superficial verification of arguments before even opening the bus */ -@@ -1206,7 +1205,6 @@ static int monitor(int argc, char **argv, int (*dump)(sd_bus_message *m, FILE *f - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(sd_bus_message_unrefp) sd_bus_message *message = NULL; - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- char **i; - uint32_t flags = 0; - const char *unique_name; - bool is_monitor = false; -@@ -2115,7 +2113,6 @@ static int emit_signal(int argc, char **argv, void *userdata) { - static int get_property(int argc, char **argv, void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- char **i; - int r; - - r = acquire_bus(false, &bus); -diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c -index 775bd84ad2..8e8f97b3ce 100644 ---- a/src/cgls/cgls.c -+++ b/src/cgls/cgls.c -@@ -201,7 +201,6 @@ static int run(int argc, char *argv[]) { - if (arg_names) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_free_ char *root = NULL; -- char **name; - - STRV_FOREACH(name, arg_names) { - int q; -diff --git a/src/core/bpf-firewall.c b/src/core/bpf-firewall.c -index 3c1c02e444..c149c0afff 100644 ---- a/src/core/bpf-firewall.c -+++ b/src/core/bpf-firewall.c -@@ -596,8 +596,6 @@ int bpf_firewall_compile(Unit *u) { - } - - static int load_bpf_progs_from_fs_to_set(Unit *u, char **filter_paths, Set **set) { -- char **bpf_fs_path; -- - set_clear(*set); - - STRV_FOREACH(bpf_fs_path, filter_paths) { -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index f58de95a49..17ec70567c 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -430,7 +430,6 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) { - CGroupContext *c; - CGroupSocketBindItem *bi; - struct in_addr_prefix *iaai; -- char **path; - - char cda[FORMAT_CGROUP_DIFF_MAX]; - char cdb[FORMAT_CGROUP_DIFF_MAX]; -diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c -index f0d8759e85..bd76ce7117 100644 ---- a/src/core/dbus-cgroup.c -+++ b/src/core/dbus-cgroup.c -@@ -640,7 +640,6 @@ static int bus_cgroup_set_transient_property( - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *buf = NULL; - _cleanup_fclose_ FILE *f = NULL; -- char **entry; - size_t size = 0; - - if (n == 0) -@@ -2050,7 +2049,6 @@ int bus_cgroup_set_property( - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *joined = NULL; -- char **s; - - if (strv_isempty(l)) { - c->restrict_network_interfaces_is_allow_list = false; -diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c -index 5c499e5d06..2d49f86366 100644 ---- a/src/core/dbus-execute.c -+++ b/src/core/dbus-execute.c -@@ -74,7 +74,6 @@ static int property_get_environment_files( - sd_bus_error *error) { - - ExecContext *c = userdata; -- char **j; - int r; - - assert(bus); -@@ -1143,15 +1142,12 @@ static int bus_property_get_exec_dir_symlink( - if (r < 0) - return r; - -- for (size_t i = 0; i < d->n_items; i++) { -- char **dst; -- -+ for (size_t i = 0; i < d->n_items; i++) - STRV_FOREACH(dst, d->items[i].symlinks) { - r = sd_bus_message_append(reply, "(sst)", d->items[i].path, *dst, 0 /* flags, unused for now */); - if (r < 0) - return r; - } -- } - - return sd_bus_message_close_container(reply); - } -@@ -2021,7 +2017,6 @@ int bus_exec_context_set_transient_property( - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *joined = NULL; - FilesystemParseFlags invert_flag = allow_list ? 0 : FILESYSTEM_PARSE_INVERT; -- char **s; - - if (strv_isempty(l)) { - c->restrict_filesystems_allow_list = false; -@@ -2067,7 +2062,6 @@ int bus_exec_context_set_transient_property( - - if (streq(name, "SupplementaryGroups")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) -@@ -2432,7 +2426,6 @@ int bus_exec_context_set_transient_property( - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *joined = NULL; - SeccompParseFlags invert_flag = allow_list ? 0 : SECCOMP_PARSE_INVERT; -- char **s; - - if (strv_isempty(l)) { - c->syscall_allow_list = false; -@@ -2517,7 +2510,6 @@ int bus_exec_context_set_transient_property( - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *joined = NULL; - SeccompParseFlags invert_flag = allow_list ? 0 : SECCOMP_PARSE_INVERT; -- char **s; - - if (strv_isempty(l)) { - c->syscall_log_allow_list = false; -@@ -2569,9 +2561,7 @@ int bus_exec_context_set_transient_property( - - if (strv_isempty(l)) - c->syscall_archs = set_free(c->syscall_archs); -- else { -- char **s; -- -+ else - STRV_FOREACH(s, l) { - uint32_t a; - -@@ -2584,8 +2574,6 @@ int bus_exec_context_set_transient_property( - return r; - } - -- } -- - joined = strv_join(l, " "); - if (!joined) - return -ENOMEM; -@@ -2617,7 +2605,6 @@ int bus_exec_context_set_transient_property( - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - _cleanup_free_ char *joined = NULL; -- char **s; - - if (strv_isempty(l)) { - c->address_families_allow_list = allow_list; -@@ -3146,7 +3133,6 @@ int bus_exec_context_set_transient_property( - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **l = NULL; - size_t size = 0; -- char **i; - - r = sd_bus_message_enter_container(message, 'a', "(sb)"); - if (r < 0) -@@ -3264,7 +3250,6 @@ int bus_exec_context_set_transient_property( - "ReadWritePaths", "ReadOnlyPaths", "InaccessiblePaths", "ExecPaths", "NoExecPaths")) { - _cleanup_strv_free_ char **l = NULL; - char ***dirs; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) -@@ -3316,16 +3301,15 @@ int bus_exec_context_set_transient_property( - - } else if (streq(name, "ExecSearchPath")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) - return r; - -- STRV_FOREACH(p, l) { -+ STRV_FOREACH(p, l) - if (!path_is_absolute(*p) || !path_is_normalized(*p) || strchr(*p, ':')) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid %s", name); -- } -+ - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - if (strv_isempty(l)) { - c->exec_search_path = strv_free(c->exec_search_path); -@@ -3346,7 +3330,6 @@ int bus_exec_context_set_transient_property( - - } else if (STR_IN_SET(name, "RuntimeDirectory", "StateDirectory", "CacheDirectory", "LogsDirectory", "ConfigurationDirectory")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) -@@ -3375,7 +3358,6 @@ int bus_exec_context_set_transient_property( - unit_write_settingf(u, flags, name, "%s=", name); - } else { - _cleanup_free_ char *joined = NULL; -- char **source; - - STRV_FOREACH(source, l) { - r = exec_directory_add(&d->items, &d->n_items, *source, NULL); -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 1a3098ceb1..0e3590d1c9 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -817,7 +817,6 @@ static int method_list_units_by_names(sd_bus_message *message, void *userdata, s - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - Manager *m = userdata; - int r; -- char **unit; - _cleanup_strv_free_ char **units = NULL; - - assert(message); -diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c -index a3b1e0442f..989c3f74db 100644 ---- a/src/core/dbus-socket.c -+++ b/src/core/dbus-socket.c -@@ -326,16 +326,14 @@ static int bus_socket_set_transient_property( - - if (streq(name, "Symlinks")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) - return r; - -- STRV_FOREACH(p, l) { -+ STRV_FOREACH(p, l) - if (!path_is_absolute(*p)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Symlink path is not absolute: %s", *p); -- } - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - if (strv_isempty(l)) { -diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c -index 1128c42ad9..c1cf6dfb6f 100644 ---- a/src/core/dbus-unit.c -+++ b/src/core/dbus-unit.c -@@ -2245,16 +2245,14 @@ static int bus_unit_set_transient_property( - - if (streq(name, "Documentation")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) - return r; - -- STRV_FOREACH(p, l) { -+ STRV_FOREACH(p, l) - if (!documentation_url_is_valid(*p)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid URL in %s: %s", name, *p); -- } - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - if (strv_isempty(l)) { -@@ -2310,7 +2308,6 @@ static int bus_unit_set_transient_property( - - } else if (streq(name, "RequiresMountsFor")) { - _cleanup_strv_free_ char **l = NULL; -- char **p; - - r = sd_bus_message_read_strv(message, &l); - if (r < 0) -diff --git a/src/core/device.c b/src/core/device.c -index 43f49573b9..d2c5febd3f 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -307,13 +307,9 @@ static void device_dump(Unit *u, FILE *f, const char *prefix) { - prefix, strna(d->sysfs), - prefix, strna(s)); - -- if (!strv_isempty(d->wants_property)) { -- char **i; -- -- STRV_FOREACH(i, d->wants_property) -- fprintf(f, "%sudev SYSTEMD_WANTS: %s\n", -- prefix, *i); -- } -+ STRV_FOREACH(i, d->wants_property) -+ fprintf(f, "%sudev SYSTEMD_WANTS: %s\n", -+ prefix, *i); - } - - _pure_ static UnitActiveState device_active_state(Unit *u) { -@@ -419,9 +415,7 @@ static int device_add_udev_wants(Unit *u, sd_device *dev) { - k = NULL; - } - -- if (d->state != DEVICE_DEAD) { -- char **i; -- -+ if (d->state != DEVICE_DEAD) - /* So here's a special hack, to compensate for the fact that the udev database's reload cycles are not - * synchronized with our own reload cycles: when we detect that the SYSTEMD_WANTS property of a device - * changes while the device unit is already up, let's manually trigger any new units listed in it not -@@ -431,7 +425,6 @@ static int device_add_udev_wants(Unit *u, sd_device *dev) { - * - * We do this only if the device has been up already when we parse this, as otherwise the usual - * dependency logic that is run from the dead → plugged transition will trigger these deps. */ -- - STRV_FOREACH(i, added) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - -@@ -442,7 +435,6 @@ static int device_add_udev_wants(Unit *u, sd_device *dev) { - if (r < 0) - log_unit_warning_errno(u, r, "Failed to enqueue SYSTEMD_WANTS= job, ignoring: %s", bus_error_message(&error, r)); - } -- } - - return strv_free_and_replace(d->wants_property, added); - } -diff --git a/src/core/execute.c b/src/core/execute.c -index 3cafd0f17d..306e563e4f 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -994,7 +994,6 @@ static int get_fixed_group(const ExecContext *c, const char **group, gid_t *gid) - static int get_supplementary_groups(const ExecContext *c, const char *user, - const char *group, gid_t gid, - gid_t **supplementary_gids, int *ngids) { -- char **i; - int r, k = 0; - int ngroups_max; - bool keep_groups = false; -@@ -1185,7 +1184,7 @@ static int setup_pam( - pam_handle_t *handle = NULL; - sigset_t old_ss; - int pam_code = PAM_SUCCESS, r; -- char **nv, **e = NULL; -+ char **e = NULL; - bool close_session = false; - pid_t pam_pid = 0, parent_pid; - int flags = 0; -@@ -2010,7 +2009,6 @@ static int build_environment( - static int build_pass_environment(const ExecContext *c, char ***ret) { - _cleanup_strv_free_ char **pass_env = NULL; - size_t n_env = 0; -- char **i; - - STRV_FOREACH(i, c->pass_environment) { - _cleanup_free_ char *x = NULL; -@@ -2283,7 +2281,6 @@ static bool exec_directory_is_private(const ExecContext *context, ExecDirectoryT - - static int create_many_symlinks(const char *root, const char *source, char **symlinks) { - _cleanup_free_ char *src_abs = NULL; -- char **dst; - int r; - - assert(source); -@@ -3221,7 +3218,6 @@ static int compile_symlinks( - for (ExecDirectoryType dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) { - for (size_t i = 0; i < context->directories[dt].n_items; i++) { - _cleanup_free_ char *private_path = NULL, *path = NULL; -- char **symlink; - - STRV_FOREACH(symlink, context->directories[dt].items[i].symlinks) { - _cleanup_free_ char *src_abs = NULL, *dst_abs = NULL; -@@ -5190,7 +5186,6 @@ int exec_context_destroy_runtime_directory(const ExecContext *c, const char *run - * service next. */ - (void) rm_rf(p, REMOVE_ROOT); - -- char **symlink; - STRV_FOREACH(symlink, c->directories[EXEC_DIRECTORY_RUNTIME].items[i].symlinks) { - _cleanup_free_ char *symlink_abs = NULL; - -@@ -5364,7 +5359,6 @@ static int exec_context_named_iofds( - - static int exec_context_load_environment(const Unit *unit, const ExecContext *c, char ***ret) { - _cleanup_strv_free_ char **v = NULL; -- char **i; - int r; - - assert(c); -@@ -5471,8 +5465,6 @@ bool exec_context_may_touch_console(const ExecContext *ec) { - } - - static void strv_fprintf(FILE *f, char **l) { -- char **g; -- - assert(f); - - STRV_FOREACH(g, l) -@@ -5492,7 +5484,6 @@ static void strv_dump(FILE* f, const char *prefix, const char *name, char **strv - } - - void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { -- char **e, **d; - int r; - - assert(c); -@@ -5924,9 +5915,11 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { - } - - #if HAVE_LIBBPF -- if (exec_context_restrict_filesystems_set(c)) -+ if (exec_context_restrict_filesystems_set(c)) { -+ char **e; - SET_FOREACH(e, c->restrict_filesystems) - fprintf(f, "%sRestrictFileSystems: %s\n", prefix, *e); -+ } - #endif - - if (c->network_namespace_path) -@@ -6117,7 +6110,6 @@ int exec_context_get_clean_directories( - return r; - } - -- char **symlink; - STRV_FOREACH(symlink, c->directories[t].items[i].symlinks) { - j = path_join(prefix[t], *symlink); - if (!j) -diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c -index 080a63bc7e..53d2a3daa1 100644 ---- a/src/core/load-dropin.c -+++ b/src/core/load-dropin.c -@@ -13,7 +13,6 @@ - - static int process_deps(Unit *u, UnitDependency dependency, const char *dir_suffix) { - _cleanup_strv_free_ char **paths = NULL; -- char **p; - int r; - - r = unit_file_find_dropin_paths(NULL, -@@ -85,7 +84,6 @@ static int process_deps(Unit *u, UnitDependency dependency, const char *dir_suff - - int unit_load_dropin(Unit *u) { - _cleanup_strv_free_ char **l = NULL; -- char **f; - int r; - - assert(u); -diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c -index 461e073269..0acc350389 100644 ---- a/src/core/load-fragment.c -+++ b/src/core/load-fragment.c -@@ -1634,7 +1634,6 @@ int config_parse_root_image_options( - - _cleanup_(mount_options_free_allp) MountOptions *options = NULL; - _cleanup_strv_free_ char **l = NULL; -- char **first = NULL, **second = NULL; - ExecContext *c = data; - const Unit *u = userdata; - int r; -diff --git a/src/core/main.c b/src/core/main.c -index cb3131c12a..4bad2e84a0 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -2409,7 +2409,6 @@ static void fallback_rlimit_memlock(const struct rlimit *saved_rlimit_memlock) { - } - - static void setenv_manager_environment(void) { -- char **p; - int r; - - STRV_FOREACH(p, arg_manager_environment) { -diff --git a/src/core/manager.c b/src/core/manager.c -index 22bd0866c5..60846a66e6 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -3582,7 +3582,6 @@ void manager_check_finished(Manager *m) { - } - - static bool generator_path_any(const char* const* paths) { -- char **path; - bool found = false; - - /* Optimize by skipping the whole process by not creating output directories -diff --git a/src/core/namespace.c b/src/core/namespace.c -index c549dcc96b..4bd63f6227 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -313,8 +313,6 @@ static void mount_entry_done(MountEntry *p) { - } - - static int append_access_mounts(MountEntry **p, char **strv, MountMode mode, bool forcibly_require_prefix) { -- char **i; -- - assert(p); - - /* Adds a list of user-supplied READWRITE/READWRITE_IMPLICIT/READONLY/INACCESSIBLE entries */ -@@ -349,8 +347,6 @@ static int append_access_mounts(MountEntry **p, char **strv, MountMode mode, boo - } - - static int append_empty_dir_mounts(MountEntry **p, char **strv) { -- char **i; -- - assert(p); - - /* Adds tmpfs mounts to provide readable but empty directories. This is primarily used to implement the -@@ -417,7 +413,6 @@ static int append_extension_images( - size_t n) { - - _cleanup_strv_free_ char **overlays = NULL; -- char **hierarchy; - int r; - - assert(p); -@@ -1590,7 +1585,6 @@ static void normalize_mounts(const char *root_directory, MountEntry *mounts, siz - } - - static int create_symlinks_from_tuples(const char *root, char **strv_symlinks) { -- char **src, **dst; - int r; - - STRV_FOREACH_PAIR(src, dst, strv_symlinks) { -diff --git a/src/core/service.c b/src/core/service.c -index 49579f7998..5d9464d588 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -2592,7 +2592,6 @@ static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command - ServiceExecCommand id; - size_t length = 0; - unsigned idx; -- char **arg; - - assert(s); - assert(f); -@@ -4028,7 +4027,6 @@ static void service_notify_message( - Service *s = SERVICE(u); - bool notify_dbus = false; - const char *e; -- char * const *i; - int r; - - assert(u); -diff --git a/src/core/socket.c b/src/core/socket.c -index 8a5c7fdd0a..8da9f14db6 100644 ---- a/src/core/socket.c -+++ b/src/core/socket.c -@@ -781,8 +781,6 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { - fprintf(f, "%sSocketProtocol: %s\n", prefix, str); - - if (!strv_isempty(s->symlinks)) { -- char **q; -- - fprintf(f, "%sSymlinks:", prefix); - STRV_FOREACH(q, s->symlinks) - fprintf(f, " %s", *q); -@@ -924,7 +922,6 @@ static int instance_from_socket(int fd, unsigned nr, char **instance) { - - static void socket_close_fds(Socket *s) { - SocketPort *p; -- char **i; - - assert(s); - -@@ -1271,7 +1268,6 @@ static int mq_address_create( - - static int socket_symlink(Socket *s) { - const char *p; -- char **i; - int r; - - assert(s); -diff --git a/src/core/transaction.c b/src/core/transaction.c -index ebe5f1910d..32badaaef1 100644 ---- a/src/core/transaction.c -+++ b/src/core/transaction.c -@@ -329,7 +329,7 @@ _pure_ static bool unit_matters_to_anchor(Unit *u, Job *j) { - } - - static char* merge_unit_ids(const char* unit_log_field, char **pairs) { -- char **unit_id, **job_type, *ans = NULL; -+ char *ans = NULL; - size_t size = 0, next; - - STRV_FOREACH_PAIR(unit_id, job_type, pairs) { -@@ -366,7 +366,6 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi - if (j->generation == generation) { - Job *k, *delete = NULL; - _cleanup_free_ char **array = NULL, *unit_ids = NULL; -- char **unit_id, **job_type; - - /* If the marker is NULL we have been here already and decided the job was loop-free from - * here. Hence shortcut things and return right-away. */ -diff --git a/src/core/unit-serialize.c b/src/core/unit-serialize.c -index 7d2e6bc130..65ed110ce6 100644 ---- a/src/core/unit-serialize.c -+++ b/src/core/unit-serialize.c -@@ -623,7 +623,7 @@ static void print_unit_dependency_mask(FILE *f, const char *kind, UnitDependency - } - - void unit_dump(Unit *u, FILE *f, const char *prefix) { -- char *t, **j; -+ char *t; - const char *prefix2; - Unit *following; - _cleanup_set_free_ Set *following_set = NULL; -diff --git a/src/core/unit.c b/src/core/unit.c -index 3d30f3807c..6eaa553255 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -568,8 +568,6 @@ static void unit_clear_dependencies(Unit *u) { - } - - static void unit_remove_transient(Unit *u) { -- char **i; -- - assert(u); - - if (!u->transient) -@@ -3594,7 +3592,6 @@ int unit_add_blockdev_dependency(Unit *u, const char *what, UnitDependencyMask m - - int unit_coldplug(Unit *u) { - int r = 0, q; -- char **i; - - assert(u); - -@@ -3667,7 +3664,6 @@ static bool fragment_mtime_newer(const char *path, usec_t mtime, bool path_maske - - bool unit_need_daemon_reload(Unit *u) { - _cleanup_strv_free_ char **t = NULL; -- char **path; - - assert(u); - -@@ -4251,7 +4247,6 @@ char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf) { - char* unit_concat_strv(char **l, UnitWriteFlags flags) { - _cleanup_free_ char *result = NULL; - size_t n = 0; -- char **i; - - /* Takes a list of strings, escapes them, and concatenates them. This may be used to format command lines in a - * way suitable for ExecStart= stanzas */ -@@ -5052,7 +5047,6 @@ int unit_fork_and_watch_rm_rf(Unit *u, char **paths, pid_t *ret_pid) { - return r; - if (r == 0) { - int ret = EXIT_SUCCESS; -- char **i; - - STRV_FOREACH(i, paths) { - r = rm_rf(*i, REMOVE_ROOT|REMOVE_PHYSICAL|REMOVE_MISSING_OK); -diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c -index 2904de3728..7235544285 100644 ---- a/src/coredump/coredumpctl.c -+++ b/src/coredump/coredumpctl.c -@@ -91,7 +91,6 @@ static int add_match(sd_journal *j, const char *match) { - } - - static int add_matches(sd_journal *j, char **matches) { -- char **match; - int r; - - r = sd_journal_add_match(j, "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR, 0); -diff --git a/src/creds/creds.c b/src/creds/creds.c -index 3d2841c07d..2fd314ff37 100644 ---- a/src/creds/creds.c -+++ b/src/creds/creds.c -@@ -311,7 +311,6 @@ static int write_blob(FILE *f, const void *data, size_t size) { - static int verb_cat(int argc, char **argv, void *userdata) { - _cleanup_(closedirp) DIR *d = NULL; - int r, ret = 0; -- char **cn; - - r = open_credential_directory(&d); - if (r == -ENXIO) -diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c -index c9bc9a2489..7f397f197f 100644 ---- a/src/cryptenroll/cryptenroll.c -+++ b/src/cryptenroll/cryptenroll.c -@@ -482,7 +482,6 @@ static int prepare_luks( - - for (;;) { - _cleanup_strv_free_erase_ char **passwords = NULL; -- char **p; - - if (--i == 0) - return log_error_errno(SYNTHETIC_ERRNO(ENOKEY), -diff --git a/src/cryptsetup/cryptsetup-keyfile.c b/src/cryptsetup/cryptsetup-keyfile.c -index 924555d262..1867e9012c 100644 ---- a/src/cryptsetup/cryptsetup-keyfile.c -+++ b/src/cryptsetup/cryptsetup-keyfile.c -@@ -12,7 +12,6 @@ int find_key_file( - void **ret_key, - size_t *ret_key_size) { - -- char **i; - int r; - - assert(key_file); -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index 250a8314f6..dddd976dc8 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -562,7 +562,7 @@ static int get_password( - - _cleanup_free_ char *friendly = NULL, *text = NULL, *disk_path = NULL; - _cleanup_strv_free_erase_ char **passwords = NULL; -- char **p, *id; -+ char *id; - int r = 0; - AskPasswordFlags flags = arg_ask_password_flags | ASK_PASSWORD_PUSH_CACHE; - -@@ -851,7 +851,6 @@ static int attach_luks2_by_fido2( - #if HAVE_LIBCRYPTSETUP_PLUGINS - AskPasswordFlags flags = ASK_PASSWORD_PUSH_CACHE | ASK_PASSWORD_ACCEPT_CACHED; - _cleanup_strv_free_erase_ char **pins = NULL; -- char **p; - int r; - - r = crypt_activate_by_token_pin(cd, name, "systemd-fido2", CRYPT_ANY_TOKEN, NULL, 0, usrptr, activation_flags); -@@ -1523,7 +1522,6 @@ static int attach_luks_or_plain_or_bitlk_by_passphrase( - uint32_t flags, - bool pass_volume_key) { - -- char **p; - int r; - - assert(cd); -diff --git a/src/debug-generator/debug-generator.c b/src/debug-generator/debug-generator.c -index a724ae510d..e2e1df5715 100644 ---- a/src/debug-generator/debug-generator.c -+++ b/src/debug-generator/debug-generator.c -@@ -89,7 +89,6 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat - } - - static int generate_mask_symlinks(void) { -- char **u; - int r = 0; - - if (strv_isempty(arg_mask)) -@@ -112,7 +111,6 @@ static int generate_mask_symlinks(void) { - } - - static int generate_wants_symlinks(void) { -- char **u; - int r = 0; - - if (strv_isempty(arg_wants)) -diff --git a/src/delta/delta.c b/src/delta/delta.c -index 3f1b206e6c..eafe1c05c4 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -195,7 +195,6 @@ static int enumerate_dir_d( - _cleanup_free_ char *unit = NULL; - _cleanup_free_ char *path = NULL; - _cleanup_strv_free_ char **list = NULL; -- char **file; - char *c; - int r; - -@@ -292,7 +291,6 @@ static int enumerate_dir( - _cleanup_closedir_ DIR *d = NULL; - _cleanup_strv_free_ char **files = NULL, **dirs = NULL; - size_t n_files = 0, n_dirs = 0; -- char **t; - int r; - - assert(top); -diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c -index a9632a3f16..1d78dc5085 100644 ---- a/src/dissect/dissect.c -+++ b/src/dissect/dissect.c -@@ -354,7 +354,6 @@ static int parse_argv(int argc, char *argv[]) { - - static int strv_pair_to_json(char **l, JsonVariant **ret) { - _cleanup_strv_free_ char **jl = NULL; -- char **a, **b; - - STRV_FOREACH_PAIR(a, b, l) { - char *j; -@@ -371,8 +370,6 @@ static int strv_pair_to_json(char **l, JsonVariant **ret) { - } - - static void strv_pair_print(char **l, const char *prefix) { -- char **p, **q; -- - assert(prefix); - - STRV_FOREACH_PAIR(p, q, l) { -diff --git a/src/environment-d-generator/environment-d-generator.c b/src/environment-d-generator/environment-d-generator.c -index 1171fdc290..39c46c7c2b 100644 ---- a/src/environment-d-generator/environment-d-generator.c -+++ b/src/environment-d-generator/environment-d-generator.c -@@ -41,7 +41,6 @@ static int environment_dirs(char ***ret) { - - static int load_and_print(void) { - _cleanup_strv_free_ char **dirs = NULL, **files = NULL, **env = NULL; -- char **i; - int r; - - r = environment_dirs(&dirs); -diff --git a/src/escape/escape.c b/src/escape/escape.c -index 676b7dce54..0ad77f3f94 100644 ---- a/src/escape/escape.c -+++ b/src/escape/escape.c -@@ -155,7 +155,6 @@ static int parse_argv(int argc, char *argv[]) { - } - - static int run(int argc, char *argv[]) { -- char **i; - int r; - - log_setup(); -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 9b32383a76..355f2b8668 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -237,7 +237,6 @@ static int write_dependency( - - _cleanup_strv_free_ char **names = NULL, **units = NULL; - _cleanup_free_ char *res = NULL; -- char **s; - int r; - - assert(f); -@@ -518,8 +517,6 @@ static int add_mount( - if (r < 0) - return r; - } else { -- char **s; -- - STRV_FOREACH(s, wanted_by) { - r = generator_add_symlink(dest, *s, "wants", name); - if (r < 0) -diff --git a/src/home/homectl.c b/src/home/homectl.c -index ac7b00889d..4aeaaf6b9a 100644 ---- a/src/home/homectl.c -+++ b/src/home/homectl.c -@@ -554,7 +554,6 @@ static int acquire_passed_secrets(const char *user_name, UserRecord **ret) { - static int activate_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r, ret = 0; -- char **i; - - r = acquire_bus(&bus); - if (r < 0) -@@ -603,7 +602,6 @@ static int activate_home(int argc, char *argv[], void *userdata) { - static int deactivate_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r, ret = 0; -- char **i; - - r = acquire_bus(&bus); - if (r < 0) -@@ -690,7 +688,7 @@ static int inspect_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(strv_freep) char **mangled_list = NULL; - int r, ret = 0; -- char **items, **i; -+ char **items; - - pager_open(arg_pager_flags); - -@@ -774,7 +772,7 @@ static int authenticate_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(strv_freep) char **mangled_list = NULL; - int r, ret = 0; -- char **i, **items; -+ char **items; - - items = mangle_user_list(strv_skip(argv, 1), &mangled_list); - if (!items) -@@ -1084,7 +1082,6 @@ static int add_disposition(JsonVariant **v) { - static int acquire_new_home_record(UserRecord **ret) { - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; - _cleanup_(user_record_unrefp) UserRecord *hr = NULL; -- char **i; - int r; - - assert(ret); -@@ -1375,7 +1372,6 @@ static int create_home(int argc, char *argv[], void *userdata) { - static int remove_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r, ret = 0; -- char **i; - - r = acquire_bus(&bus); - if (r < 0) -@@ -1413,7 +1409,6 @@ static int acquire_updated_home_record( - - _cleanup_(json_variant_unrefp) JsonVariant *json = NULL; - _cleanup_(user_record_unrefp) UserRecord *hr = NULL; -- char **i; - int r; - - assert(ret); -@@ -1863,7 +1858,6 @@ static int resize_home(int argc, char *argv[], void *userdata) { - static int lock_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r, ret = 0; -- char **i; - - r = acquire_bus(&bus); - if (r < 0) -@@ -1895,7 +1889,6 @@ static int lock_home(int argc, char *argv[], void *userdata) { - static int unlock_home(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - int r, ret = 0; -- char **i; - - r = acquire_bus(&bus); - if (r < 0) -diff --git a/src/home/homed-manager-bus.c b/src/home/homed-manager-bus.c -index 47eb287aa9..ba5ca42ed3 100644 ---- a/src/home/homed-manager-bus.c -+++ b/src/home/homed-manager-bus.c -@@ -39,7 +39,6 @@ static int property_get_auto_login( - HASHMAP_FOREACH(h, m->homes_by_name) { - _cleanup_(strv_freep) char **seats = NULL; - _cleanup_free_ char *home_path = NULL; -- char **s; - - r = home_auto_login(h, &seats); - if (r < 0) { -diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c -index a02248a6de..f04b87e366 100644 ---- a/src/home/homed-manager.c -+++ b/src/home/homed-manager.c -@@ -1553,7 +1553,6 @@ static int manager_load_public_key_one(Manager *m, const char *path) { - - static int manager_load_public_keys(Manager *m) { - _cleanup_strv_free_ char **files = NULL; -- char **i; - int r; - - assert(m); -diff --git a/src/home/homed-varlink.c b/src/home/homed-varlink.c -index 96a6ea754e..3dd5a14802 100644 ---- a/src/home/homed-varlink.c -+++ b/src/home/homed-varlink.c -@@ -282,7 +282,6 @@ int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, VarlinkMet - - if (p.user_name) { - const char *last = NULL; -- char **i; - - h = hashmap_get(m->homes_by_name, p.user_name); - if (!h) -@@ -335,9 +334,7 @@ int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, VarlinkMet - } else { - const char *last_user_name = NULL, *last_group_name = NULL; - -- HASHMAP_FOREACH(h, m->homes_by_name) { -- char **j; -- -+ HASHMAP_FOREACH(h, m->homes_by_name) - STRV_FOREACH(j, h->record->member_of) { - - if (last_user_name) { -@@ -353,7 +350,6 @@ int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, VarlinkMet - last_user_name = h->user_name; - last_group_name = *j; - } -- } - - if (last_user_name) { - assert(last_group_name); -diff --git a/src/home/homework-cifs.c b/src/home/homework-cifs.c -index ed06d1f221..6d499f76b2 100644 ---- a/src/home/homework-cifs.c -+++ b/src/home/homework-cifs.c -@@ -20,7 +20,6 @@ int home_setup_cifs( - HomeSetup *setup) { - - _cleanup_free_ char *chost = NULL, *cservice = NULL, *cdir = NULL, *chost_and_service = NULL, *j = NULL; -- char **pw; - int r; - - assert(h); -diff --git a/src/home/homework-fscrypt.c b/src/home/homework-fscrypt.c -index f9fef73f75..afa706a1bf 100644 ---- a/src/home/homework-fscrypt.c -+++ b/src/home/homework-fscrypt.c -@@ -197,7 +197,6 @@ static int fscrypt_slot_try_many( - const uint8_t match_key_descriptor[static FS_KEY_DESCRIPTOR_SIZE], - void **ret_decrypted, size_t *ret_decrypted_size) { - -- char **i; - int r; - - STRV_FOREACH(i, passwords) { -@@ -499,7 +498,6 @@ int home_create_fscrypt( - _cleanup_free_ char *d = NULL; - uint32_t nr = 0; - const char *ip; -- char **i; - int r; - - assert(h); -@@ -649,7 +647,6 @@ int home_passwd_fscrypt( - size_t volume_key_size = 0; - uint32_t slot = 0; - const char *xa; -- char **p; - int r; - - assert(h); -diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c -index 8063206358..f8f4afb253 100644 ---- a/src/home/homework-luks.c -+++ b/src/home/homework-luks.c -@@ -303,7 +303,6 @@ static int luks_try_passwords( - size_t *volume_key_size, - key_serial_t *ret_key_serial) { - -- char **pp; - int r; - - assert(h); -@@ -1721,7 +1720,6 @@ static int luks_format( - _cleanup_free_ char *text = NULL; - size_t volume_key_size; - int slot = 0, r; -- char **pp; - - assert(node); - assert(dm_name); -@@ -3664,7 +3662,6 @@ static int luks_try_resume( - const char *dm_name, - char **password) { - -- char **pp; - int r; - - assert(cd); -diff --git a/src/home/homework-pkcs11.c b/src/home/homework-pkcs11.c -index 15402b1002..7868fb6064 100644 ---- a/src/home/homework-pkcs11.c -+++ b/src/home/homework-pkcs11.c -@@ -20,7 +20,6 @@ int pkcs11_callback( - CK_TOKEN_INFO updated_token_info; - size_t decrypted_key_size; - CK_OBJECT_HANDLE object; -- char **i; - CK_RV rv; - int r; - -diff --git a/src/home/homework.c b/src/home/homework.c -index 9fdc74b775..0014a7f598 100644 ---- a/src/home/homework.c -+++ b/src/home/homework.c -@@ -97,9 +97,7 @@ int user_record_authenticate( - log_info("None of the supplied plaintext passwords unlock the user record's hashed recovery keys."); - - /* Second, test cached PKCS#11 passwords */ -- for (size_t n = 0; n < h->n_pkcs11_encrypted_key; n++) { -- char **pp; -- -+ for (size_t n = 0; n < h->n_pkcs11_encrypted_key; n++) - STRV_FOREACH(pp, cache->pkcs11_passwords) { - r = test_password_one(h->pkcs11_encrypted_key[n].hashed_password, *pp); - if (r < 0) -@@ -109,12 +107,9 @@ int user_record_authenticate( - return 1; - } - } -- } - - /* Third, test cached FIDO2 passwords */ -- for (size_t n = 0; n < h->n_fido2_hmac_salt; n++) { -- char **pp; -- -+ for (size_t n = 0; n < h->n_fido2_hmac_salt; n++) - /* See if any of the previously calculated passwords work */ - STRV_FOREACH(pp, cache->fido2_passwords) { - r = test_password_one(h->fido2_hmac_salt[n].hashed_password, *pp); -@@ -125,7 +120,6 @@ int user_record_authenticate( - return 1; - } - } -- } - - /* Fourth, let's see if any of the PKCS#11 security tokens are plugged in and help us */ - for (size_t n = 0; n < h->n_pkcs11_encrypted_key; n++) { -@@ -1096,7 +1090,6 @@ static int user_record_compile_effective_passwords( - - _cleanup_(strv_free_erasep) char **effective = NULL; - size_t n; -- char **i; - int r; - - assert(h); -@@ -1116,7 +1109,6 @@ static int user_record_compile_effective_passwords( - - STRV_FOREACH(i, h->hashed_password) { - bool found = false; -- char **j; - - log_debug("Looking for plaintext password for: %s", *i); - -@@ -1144,7 +1136,6 @@ static int user_record_compile_effective_passwords( - - for (n = 0; n < h->n_recovery_key; n++) { - bool found = false; -- char **j; - - log_debug("Looking for plaintext recovery key for: %s", h->recovery_key[n].hashed_password); - -diff --git a/src/home/user-record-pwquality.c b/src/home/user-record-pwquality.c -index 23c3357836..609e620511 100644 ---- a/src/home/user-record-pwquality.c -+++ b/src/home/user-record-pwquality.c -@@ -17,7 +17,7 @@ int user_record_quality_check_password( - sd_bus_error *error) { - - _cleanup_(sym_pwquality_free_settingsp) pwquality_settings_t *pwq = NULL; -- char buf[PWQ_MAX_ERROR_MESSAGE_LEN], **pp; -+ char buf[PWQ_MAX_ERROR_MESSAGE_LEN]; - void *auxerror; - int r; - -@@ -37,7 +37,6 @@ int user_record_quality_check_password( - /* Iterate through all new passwords */ - STRV_FOREACH(pp, secret->password) { - bool called = false; -- char **old; - - r = test_password_many(hr->hashed_password, *pp); - if (r < 0) -diff --git a/src/home/user-record-util.c b/src/home/user-record-util.c -index f4578783f3..1ae3e82bce 100644 ---- a/src/home/user-record-util.c -+++ b/src/home/user-record-util.c -@@ -563,7 +563,6 @@ int user_record_test_image_path_and_warn(UserRecord *h) { - } - - int user_record_test_password(UserRecord *h, UserRecord *secret) { -- char **i; - int r; - - assert(h); -@@ -585,7 +584,6 @@ int user_record_test_password(UserRecord *h, UserRecord *secret) { - } - - int user_record_test_recovery_key(UserRecord *h, UserRecord *secret) { -- char **i; - int r; - - assert(h); -@@ -779,7 +777,6 @@ int user_record_update_last_changed(UserRecord *h, bool with_password) { - int user_record_make_hashed_password(UserRecord *h, char **secret, bool extend) { - _cleanup_(json_variant_unrefp) JsonVariant *priv = NULL; - _cleanup_strv_free_ char **np = NULL; -- char **i; - int r; - - assert(h); -diff --git a/src/id128/id128.c b/src/id128/id128.c -index 484a72677d..6f4d65103c 100644 ---- a/src/id128/id128.c -+++ b/src/id128/id128.c -@@ -102,7 +102,6 @@ static int show_one(Table **table, const char *name, sd_id128_t uuid, bool first - - static int verb_show(int argc, char **argv, void *userdata) { - _cleanup_(table_unrefp) Table *table = NULL; -- char **p; - int r; - - argv = strv_skip(argv, 1); -diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c -index 6ab91263b1..13ca22ef26 100644 ---- a/src/journal-remote/journal-remote-main.c -+++ b/src/journal-remote/journal-remote-main.c -@@ -594,7 +594,6 @@ static int create_remoteserver( - const char* trust) { - - int r, n, fd; -- char **file; - - r = journal_remote_server_init(s, arg_output, arg_split_mode, arg_compress, arg_seal); - if (r < 0) -diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c -index e6a8254491..a8119bd687 100644 ---- a/src/journal-remote/microhttpd-util.c -+++ b/src/journal-remote/microhttpd-util.c -@@ -151,18 +151,17 @@ static int log_enable_gnutls_category(const char *cat) { - } - - int setup_gnutls_logger(char **categories) { -- char **cat; - int r; - - gnutls_global_set_log_function(log_func_gnutls); - -- if (categories) { -+ if (categories) - STRV_FOREACH(cat, categories) { - r = log_enable_gnutls_category(*cat); - if (r < 0) - return r; - } -- } else -+ else - log_reset_gnutls_level(); - - return 0; -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index 3c4a7c0a7a..6353c77c91 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -1139,7 +1139,6 @@ static int parse_argv(int argc, char *argv[]) { - } - - static int add_matches(sd_journal *j, char **args) { -- char **i; - bool have_term = false; - - assert(j); -@@ -1562,7 +1561,7 @@ static int get_possible_units( - return r; - - SD_JOURNAL_FOREACH_UNIQUE(j, data, size) { -- char **pattern, *eq; -+ char *eq; - size_t prefix; - _cleanup_free_ char *u = NULL; - -@@ -1615,7 +1614,6 @@ static int get_possible_units( - static int add_units(sd_journal *j) { - _cleanup_strv_free_ char **patterns = NULL; - int r, count = 0; -- char **i; - - assert(j); - -@@ -1760,7 +1758,6 @@ static int add_facilities(sd_journal *j) { - - static int add_syslog_identifier(sd_journal *j) { - int r; -- char **i; - - assert(j); - -diff --git a/src/libsystemd-network/dhcp-option.c b/src/libsystemd-network/dhcp-option.c -index ebe8eecc9d..efb676e60b 100644 ---- a/src/libsystemd-network/dhcp-option.c -+++ b/src/libsystemd-network/dhcp-option.c -@@ -58,7 +58,6 @@ static int option_append(uint8_t options[], size_t size, size_t *offset, - - case SD_DHCP_OPTION_USER_CLASS: { - size_t total = 0; -- char **s; - - if (strv_isempty((char **) optval)) - return -EINVAL; -diff --git a/src/libsystemd-network/dhcp6-option.c b/src/libsystemd-network/dhcp6-option.c -index 28fe036a40..8b2ecfc44b 100644 ---- a/src/libsystemd-network/dhcp6-option.c -+++ b/src/libsystemd-network/dhcp6-option.c -@@ -468,7 +468,6 @@ int dhcp6_option_append_fqdn(uint8_t **buf, size_t *buflen, const char *fqdn) { - int dhcp6_option_append_user_class(uint8_t **buf, size_t *buflen, char * const *user_class) { - _cleanup_free_ uint8_t *p = NULL; - size_t total = 0, offset = 0; -- char * const *s; - - assert(buf); - assert(*buf); -@@ -501,7 +500,6 @@ int dhcp6_option_append_vendor_class(uint8_t **buf, size_t *buflen, char * const - _cleanup_free_ uint8_t *p = NULL; - uint32_t enterprise_identifier; - size_t total, offset; -- char * const *s; - - assert(buf); - assert(*buf); -diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c -index c33be947b7..1c34893de6 100644 ---- a/src/libsystemd-network/sd-dhcp-client.c -+++ b/src/libsystemd-network/sd-dhcp-client.c -@@ -612,7 +612,6 @@ int sd_dhcp_client_set_user_class( - sd_dhcp_client *client, - char * const *user_class) { - -- char * const *p; - char **s = NULL; - - assert_return(client, -EINVAL); -diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c -index 706904c720..122c878a66 100644 ---- a/src/libsystemd-network/sd-dhcp6-client.c -+++ b/src/libsystemd-network/sd-dhcp6-client.c -@@ -510,7 +510,6 @@ int sd_dhcp6_client_set_request_mud_url(sd_dhcp6_client *client, const char *mud - } - - int sd_dhcp6_client_set_request_user_class(sd_dhcp6_client *client, char * const *user_class) { -- char * const *p; - char **s; - - assert_return(client, -EINVAL); -@@ -532,7 +531,6 @@ int sd_dhcp6_client_set_request_user_class(sd_dhcp6_client *client, char * const - } - - int sd_dhcp6_client_set_request_vendor_class(sd_dhcp6_client *client, char * const *vendor_class) { -- char * const *p; - char **s; - - assert_return(client, -EINVAL); -diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c -index e332f6a2ab..26f782208e 100644 ---- a/src/libsystemd-network/sd-radv.c -+++ b/src/libsystemd-network/sd-radv.c -@@ -800,7 +800,6 @@ int sd_radv_set_dnssl(sd_radv *ra, uint32_t lifetime, - char **search_list) { - _cleanup_free_ struct sd_radv_opt_dns *opt_dnssl = NULL; - size_t len = 0; -- char **s; - uint8_t *p; - - assert_return(ra, -EINVAL); -diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c -index 0a4b3cbf68..42790ee3b4 100644 ---- a/src/libsystemd/sd-bus/bus-dump.c -+++ b/src/libsystemd/sd-bus/bus-dump.c -@@ -412,8 +412,6 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f, bool terse) { - - r = sd_bus_creds_get_cmdline(c, &cmdline); - if (r >= 0) { -- char **i; -- - fprintf(f, "%sCommandLine=%s", prefix, color); - STRV_FOREACH(i, cmdline) { - if (i != cmdline) -@@ -478,8 +476,6 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f, bool terse) { - fprintf(f, "%sUniqueName=%s%s%s", prefix, color, c->unique_name, suffix); - - if (sd_bus_creds_get_well_known_names(c, &well_known) >= 0) { -- char **i; -- - fprintf(f, "%sWellKnownNames=%s", prefix, color); - STRV_FOREACH(i, well_known) { - if (i != well_known) -diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c -index 12a50845db..d4da60717e 100644 ---- a/src/libsystemd/sd-bus/bus-match.c -+++ b/src/libsystemd/sd-bus/bus-match.c -@@ -139,8 +139,6 @@ static bool value_node_test( - return true; - - if (m->creds.mask & SD_BUS_CREDS_WELL_KNOWN_NAMES) { -- char **i; -- - /* on kdbus we have the well known names list - * in the credentials, let's make use of that - * for an accurate match */ -@@ -174,8 +172,6 @@ static bool value_node_test( - return false; - - case BUS_MATCH_ARG_HAS ... BUS_MATCH_ARG_HAS_LAST: { -- char **i; -- - STRV_FOREACH(i, value_strv) - if (streq_ptr(node->value.str, *i)) - return true; -@@ -386,8 +382,6 @@ int bus_match_run( - if (test_str) - found = hashmap_get(node->compare.children, test_str); - else if (test_strv) { -- char **i; -- - STRV_FOREACH(i, test_strv) { - found = hashmap_get(node->compare.children, *i); - if (found) { -diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c -index 96529b422b..b77372c3a0 100644 ---- a/src/libsystemd/sd-bus/bus-message.c -+++ b/src/libsystemd/sd-bus/bus-message.c -@@ -2815,7 +2815,6 @@ _public_ int sd_bus_message_append_string_memfd( - } - - _public_ int sd_bus_message_append_strv(sd_bus_message *m, char **l) { -- char **i; - int r; - - assert_return(m, -EINVAL); -diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c -index 40158a7326..35546afebc 100644 ---- a/src/libsystemd/sd-bus/bus-objects.c -+++ b/src/libsystemd/sd-bus/bus-objects.c -@@ -109,7 +109,7 @@ static int add_enumerated_to_set( - assert(s); - - LIST_FOREACH(enumerators, c, first) { -- char **children = NULL, **k; -+ char **children = NULL; - sd_bus_slot *slot; - - if (bus->nodes_modified) -@@ -2072,7 +2072,6 @@ static int emit_properties_changed_on_interface( - struct vtable_member key = {}; - struct node_vtable *c; - struct node *n; -- char **property; - void *u = NULL; - int r; - -@@ -2854,7 +2853,6 @@ static int interfaces_added_append_one( - _public_ int sd_bus_emit_interfaces_added_strv(sd_bus *bus, const char *path, char **interfaces) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; - struct node *object_manager; -- char **i; - int r; - - assert_return(bus, -EINVAL); -diff --git a/src/libsystemd/sd-bus/test-bus-address.c b/src/libsystemd/sd-bus/test-bus-address.c -index 59421094c5..6de9f7cd57 100644 ---- a/src/libsystemd/sd-bus/test-bus-address.c -+++ b/src/libsystemd/sd-bus/test-bus-address.c -@@ -27,7 +27,6 @@ static void test_bus_set_address_system_remote(char **args) { - - assert_se(sd_bus_new(&b) >= 0); - if (!strv_isempty(args)) { -- char **a; - STRV_FOREACH(a, args) - test_one_address(b, *a, 0, NULL); - return; -diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c -index 37eda23a5f..d3898ba959 100644 ---- a/src/libsystemd/sd-device/device-private.c -+++ b/src/libsystemd/sd-device/device-private.c -@@ -429,7 +429,6 @@ static int device_verify(sd_device *device) { - - int device_new_from_strv(sd_device **ret, char **strv) { - _cleanup_(sd_device_unrefp) sd_device *device = NULL; -- char **key; - const char *major = NULL, *minor = NULL; - int r; - -diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c -index 4a2ba02ad0..d9ba9d11d3 100644 ---- a/src/libsystemd/sd-journal/catalog.c -+++ b/src/libsystemd/sd-journal/catalog.c -@@ -442,7 +442,6 @@ error: - - int catalog_update(const char* database, const char* root, const char* const* dirs) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - _cleanup_(strbuf_freep) struct strbuf *sb = NULL; - _cleanup_ordered_hashmap_free_free_free_ OrderedHashmap *h = NULL; - _cleanup_free_ CatalogItem *items = NULL; -@@ -709,7 +708,6 @@ int catalog_list(FILE *f, const char *database, bool oneline) { - } - - int catalog_list_items(FILE *f, const char *database, bool oneline, char **items) { -- char **item; - int r = 0; - - STRV_FOREACH(item, items) { -diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c -index 7a6cc4aca3..ecd755c705 100644 ---- a/src/libsystemd/sd-journal/sd-journal.c -+++ b/src/libsystemd/sd-journal/sd-journal.c -@@ -2029,7 +2029,6 @@ _public_ int sd_journal_open_directory(sd_journal **ret, const char *path, int f - - _public_ int sd_journal_open_files(sd_journal **ret, const char **paths, int flags) { - _cleanup_(sd_journal_closep) sd_journal *j = NULL; -- const char **path; - int r; - - assert_return(ret, -EINVAL); -diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c -index 182c74ed3d..469076ae23 100644 ---- a/src/libsystemd/sd-netlink/netlink-message.c -+++ b/src/libsystemd/sd-netlink/netlink-message.c -@@ -258,7 +258,6 @@ int sd_netlink_message_append_string(sd_netlink_message *m, unsigned short type, - - int sd_netlink_message_append_strv(sd_netlink_message *m, unsigned short type, char * const *data) { - size_t length, size; -- char * const *p; - int r; - - assert_return(m, -EINVAL); -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c -index ff1e0d5f8e..8d9cfbc0af 100644 ---- a/src/libsystemd/sd-path/sd-path.c -+++ b/src/libsystemd/sd-path/sd-path.c -@@ -669,7 +669,7 @@ _public_ int sd_path_lookup_strv(uint64_t type, const char *suffix, char ***path - if (!n) - return -ENOMEM; - -- char **i, **j = n; -+ char **j = n; - STRV_FOREACH(i, l) { - *j = path_join(*i, suffix); - if (!*j) -diff --git a/src/locale/localectl.c b/src/locale/localectl.c -index b5624209dc..661d54c27d 100644 ---- a/src/locale/localectl.c -+++ b/src/locale/localectl.c -@@ -98,8 +98,6 @@ static void print_status_info(StatusInfo *i) { - if (strv_isempty(i->locale)) - puts(" System Locale: n/a"); - else { -- char **j; -- - printf(" System Locale: %s\n", i->locale[0]); - STRV_FOREACH(j, i->locale + 1) - printf(" %s\n", *j); -diff --git a/src/locale/localed.c b/src/locale/localed.c -index f3e6ef2db1..89bf9c6fba 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -346,7 +346,6 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er - Context *c = userdata; - bool modified = false; - int interactive, r; -- char **i; - bool use_localegen; - - assert(m); -diff --git a/src/login/loginctl.c b/src/login/loginctl.c -index 3e1916725d..4198f13f00 100644 ---- a/src/login/loginctl.c -+++ b/src/login/loginctl.c -@@ -601,7 +601,6 @@ static int print_user_status_info(sd_bus *bus, const char *path, bool *new_line) - printf("\t State: %s\n", i.state); - - if (!strv_isempty(i.sessions)) { -- char **l; - printf("\tSessions:"); - - STRV_FOREACH(l, i.sessions) -@@ -662,7 +661,6 @@ static int print_seat_status_info(sd_bus *bus, const char *path, bool *new_line) - printf("%s\n", strna(i.id)); - - if (!strv_isempty(i.sessions)) { -- char **l; - printf("\tSessions:"); - - STRV_FOREACH(l, i.sessions) { -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index c05c0d02cc..31a41bd271 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -3947,7 +3947,6 @@ int manager_start_scope( - char **job) { - - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL; -- char **i; - int r; - - assert(manager); -diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c -index 5bd7efc3e8..2047dc1817 100644 ---- a/src/login/pam_systemd.c -+++ b/src/login/pam_systemd.c -@@ -533,7 +533,6 @@ static int pam_putenv_and_log(pam_handle_t *handle, const char *e, bool debug) { - } - - static int apply_user_record_settings(pam_handle_t *handle, UserRecord *ur, bool debug) { -- char **i; - int r; - - assert(handle); -diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c -index eda847cb4a..9e20d59389 100644 ---- a/src/modules-load/modules-load.c -+++ b/src/modules-load/modules-load.c -@@ -194,7 +194,6 @@ static int run(int argc, char *argv[]) { - - } else { - _cleanup_strv_free_ char **files = NULL; -- char **fn, **i; - - STRV_FOREACH(i, arg_proc_cmdline_modules) { - k = module_load_and_warn(ctx, *i, true); -diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c -index c081ec673c..7d7f35253b 100644 ---- a/src/network/generator/network-generator.c -+++ b/src/network/generator/network-generator.c -@@ -1132,7 +1132,6 @@ void network_dump(Network *network, FILE *f) { - Address *address; - Route *route; - const char *dhcp; -- char **dns; - - assert(network); - assert(f); -diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c -index 8e7fe11c18..7b15c281e3 100644 ---- a/src/network/netdev/netdev.c -+++ b/src/network/netdev/netdev.c -@@ -866,7 +866,6 @@ int netdev_load_one(Manager *manager, const char *filename) { - - int netdev_load(Manager *manager, bool reload) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - assert(manager); -diff --git a/src/network/networkctl.c b/src/network/networkctl.c -index c35f851bdb..3eb63efa9c 100644 ---- a/src/network/networkctl.c -+++ b/src/network/networkctl.c -@@ -525,7 +525,6 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns, b - if (!strv_fnmatch_full(patterns, str, 0, &pos) && - !strv_fnmatch_full(patterns, name, 0, &pos)) { - bool match = false; -- char **p; - - STRV_FOREACH(p, altnames) - if (strv_fnmatch_full(patterns, *p, 0, &pos)) { -diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c -index 9acfd17d49..41c8122b5a 100644 ---- a/src/network/networkd-dhcp-server.c -+++ b/src/network/networkd-dhcp-server.c -@@ -206,8 +206,6 @@ static int link_push_uplink_to_dhcp_server( - break; - - case SD_DHCP_LEASE_NTP: { -- char **i; -- - /* For NTP things are similar, but for NTP hostnames can be configured too, which we cannot - * propagate via DHCP. Hence let's only propagate those which are IP addresses. */ - -diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c -index fb1f50063e..dc9823c375 100644 ---- a/src/network/networkd-json.c -+++ b/src/network/networkd-json.c -@@ -699,7 +699,6 @@ static int server_build_json_one_string(const char *str, NetworkConfigSource s, - static int ntp_build_json(Link *link, JsonVariant **ret) { - JsonVariant **elements = NULL; - size_t n = 0; -- char **p; - int r; - - assert(link); -@@ -878,7 +877,7 @@ static int domains_build_json(Link *link, bool is_route, JsonVariant **ret) { - JsonVariant **elements = NULL; - DHCPUseDomains use_domains; - union in_addr_union s; -- char **p, **domains; -+ char **domains; - const char *domain; - size_t n = 0; - int r; -diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c -index 765733b38c..4173eaa15f 100644 ---- a/src/network/networkd-link-bus.c -+++ b/src/network/networkd-link-bus.c -@@ -81,7 +81,6 @@ int bus_link_method_set_ntp_servers(sd_bus_message *message, void *userdata, sd_ - _cleanup_strv_free_ char **ntp = NULL; - Link *l = userdata; - int r; -- char **i; - - assert(message); - assert(l); -@@ -484,7 +483,6 @@ int bus_link_method_set_dnssec_negative_trust_anchors(sd_bus_message *message, v - _cleanup_strv_free_ char **ntas = NULL; - Link *l = userdata; - int r; -- char **i; - - assert(message); - assert(l); -diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c -index 7bc391d68d..f409d1f33a 100644 ---- a/src/network/networkd-link.c -+++ b/src/network/networkd-link.c -@@ -998,8 +998,6 @@ static void link_drop_requests(Link *link) { - } - - static Link *link_drop(Link *link) { -- char **n; -- - if (!link) - return NULL; - -@@ -2280,7 +2278,6 @@ static int link_update_mtu(Link *link, sd_netlink_message *message) { - - static int link_update_alternative_names(Link *link, sd_netlink_message *message) { - _cleanup_strv_free_ char **altnames = NULL; -- char **n; - int r; - - assert(link); -diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c -index f616f2c9bc..3be078b179 100644 ---- a/src/network/networkd-ndisc.c -+++ b/src/network/networkd-ndisc.c -@@ -786,7 +786,6 @@ static int ndisc_router_process_dnssl(Link *link, sd_ndisc_router *rt) { - struct in6_addr router; - uint32_t lifetime_sec; - bool updated = false; -- char **j; - int r; - - assert(link); -diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c -index 873ad2e703..03f09d730f 100644 ---- a/src/network/networkd-network.c -+++ b/src/network/networkd-network.c -@@ -573,7 +573,6 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi - - int network_load(Manager *manager, OrderedHashmap **networks) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - assert(manager); -diff --git a/src/nspawn/nspawn-bind-user.c b/src/nspawn/nspawn-bind-user.c -index d3113c303e..c9386e91f7 100644 ---- a/src/nspawn/nspawn-bind-user.c -+++ b/src/nspawn/nspawn-bind-user.c -@@ -203,7 +203,6 @@ int bind_user_prepare( - - _cleanup_(bind_user_context_freep) BindUserContext *c = NULL; - uid_t current_uid = MAP_UID_START; -- char **n; - int r; - - assert(custom_mounts); -diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c -index 678fde3669..4379bd9b37 100644 ---- a/src/nspawn/nspawn-mount.c -+++ b/src/nspawn/nspawn-mount.c -@@ -166,8 +166,6 @@ int custom_mount_prepare_all(const char *dest, CustomMount *l, size_t n) { - } - - if (m->type == CUSTOM_MOUNT_OVERLAY) { -- char **j; -- - STRV_FOREACH(j, m->lower) { - char *s; - -@@ -319,8 +317,6 @@ int overlay_mount_parse(CustomMount **l, size_t *n, const char *s, bool read_onl - if (!destination) - return -ENOMEM; - } else { -- char **i; -- - /* If more than two parameters are specified, the last one is the destination, the second to last one - * the "upper", and all before that the "lower" directories. */ - -diff --git a/src/nspawn/nspawn-network.c b/src/nspawn/nspawn-network.c -index 023b1e7e1a..fab4eb9609 100644 ---- a/src/nspawn/nspawn-network.c -+++ b/src/nspawn/nspawn-network.c -@@ -288,7 +288,6 @@ int setup_veth_extra( - - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - uint64_t idx = 0; -- char **a, **b; - int r; - - assert(machine_name); -@@ -495,7 +494,6 @@ int test_network_interface_initialized(const char *name) { - - int move_network_interfaces(int netns_fd, char **ifaces) { - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; -- char **i; - int r; - - if (strv_isempty(ifaces)) -@@ -532,7 +530,6 @@ int move_network_interfaces(int netns_fd, char **ifaces) { - int setup_macvlan(const char *machine_name, pid_t pid, char **ifaces) { - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; - unsigned idx = 0; -- char **i; - int r; - - if (strv_isempty(ifaces)) -@@ -619,7 +616,6 @@ int setup_macvlan(const char *machine_name, pid_t pid, char **ifaces) { - - int setup_ipvlan(const char *machine_name, pid_t pid, char **ifaces) { - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; -- char **i; - int r; - - if (strv_isempty(ifaces)) -@@ -728,7 +724,6 @@ int veth_extra_parse(char ***l, const char *p) { - - int remove_veth_links(const char *primary, char **pairs) { - _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL; -- char **a, **b; - int r; - - /* In some cases the kernel might pin the veth links between host and container even after the namespace -diff --git a/src/nspawn/nspawn-oci.c b/src/nspawn/nspawn-oci.c -index 9e59d6a814..afdac67427 100644 ---- a/src/nspawn/nspawn-oci.c -+++ b/src/nspawn/nspawn-oci.c -@@ -1892,7 +1892,6 @@ static int oci_seccomp_syscalls(const char *name, JsonVariant *v, JsonDispatchFl - struct syscall_rule rule = { - .action = UINT32_MAX, - }; -- char **i; - - r = json_dispatch(e, table, oci_unexpected, flags, &rule); - if (r < 0) -diff --git a/src/nspawn/nspawn-seccomp.c b/src/nspawn/nspawn-seccomp.c -index c94512ef30..77f4c2ac88 100644 ---- a/src/nspawn/nspawn-seccomp.c -+++ b/src/nspawn/nspawn-seccomp.c -@@ -140,7 +140,6 @@ static int add_syscall_filters( - }; - - _cleanup_strv_free_ char **added = NULL; -- char **p; - int r; - - for (size_t i = 0; i < ELEMENTSOF(allow_list); i++) { -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 1333a8702a..dd1cdb74b7 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -3149,7 +3149,6 @@ static int patch_sysctl(void) { - }; - - unsigned long flags; -- char **k, **v; - int r; - - flags = effective_clone_ns_flags(); -diff --git a/src/nss-systemd/userdb-glue.c b/src/nss-systemd/userdb-glue.c -index 002e6925f9..c69667d660 100644 ---- a/src/nss-systemd/userdb-glue.c -+++ b/src/nss-systemd/userdb-glue.c -@@ -217,7 +217,7 @@ int nss_pack_group_record( - char *buffer, - size_t buflen) { - -- char **array = NULL, *p, **m; -+ char **array = NULL, *p; - size_t required, n = 0, i = 0; - - assert(g); -diff --git a/src/partition/repart.c b/src/partition/repart.c -index 509cf69b5d..2f70796e58 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -1404,7 +1404,6 @@ static int context_read_definitions( - - _cleanup_strv_free_ char **files = NULL; - Partition *last = NULL; -- char **f; - int r; - - assert(context); -@@ -2832,7 +2831,6 @@ static int context_copy_blocks(Context *context) { - } - - static int do_copy_files(Partition *p, const char *fs) { -- char **source, **target; - int r; - - assert(p); -@@ -2929,7 +2927,6 @@ static int do_copy_files(Partition *p, const char *fs) { - } - - static int do_make_directories(Partition *p, const char *fs) { -- char **d; - int r; - - assert(p); -diff --git a/src/portable/portable.c b/src/portable/portable.c -index bdc10da36f..5be7ea854d 100644 ---- a/src/portable/portable.c -+++ b/src/portable/portable.c -@@ -58,7 +58,6 @@ static bool prefix_match(const char *unit, const char *prefix) { - - static bool unit_match(const char *unit, char **matches) { - const char *dot; -- char **i; - - dot = strrchr(unit, '.'); - if (!dot) -@@ -182,7 +181,6 @@ static int extract_now( - _cleanup_close_ int os_release_fd = -1; - _cleanup_free_ char *os_release_path = NULL; - const char *os_release_id; -- char **i; - int r; - - /* Extracts the metadata from a directory tree 'where'. Extracts two kinds of information: the /etc/os-release -@@ -527,8 +525,6 @@ static int extract_image_and_extensions( - return r; - - if (!strv_isempty(extension_image_paths)) { -- char **p; -- - extension_images = ordered_hashmap_new(&image_hash_ops); - if (!extension_images) - return -ENOMEM; -@@ -1224,8 +1220,6 @@ static int install_image_and_extensions_symlinks( - } - - static bool prefix_matches_compatible(char **matches, char **valid_prefixes) { -- char **m; -- - /* Checks if all 'matches' are included in the list of 'valid_prefixes' */ - - STRV_FOREACH(m, matches) -@@ -1342,7 +1336,6 @@ int portable_attach( - - static bool marker_matches_images(const char *marker, const char *name_or_path, char **extension_image_paths) { - _cleanup_strv_free_ char **root_and_extensions = NULL; -- char **image_name_or_path; - const char *a; - int r; - -diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c -index 60feac6f5d..f4c57e14ae 100644 ---- a/src/portable/portablectl.c -+++ b/src/portable/portablectl.c -@@ -90,7 +90,6 @@ static int determine_image(const char *image, bool permit_non_existing, char **r - } - - static int attach_extensions_to_message(sd_bus_message *m, char **extensions) { -- char **p; - int r; - - assert(m); -@@ -1067,7 +1066,6 @@ static int dump_profiles(void) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_strv_free_ char **l = NULL; -- char **i; - int r; - - r = acquire_bus(&bus); -diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c -index 5b3ceeff36..96a505f5e1 100644 ---- a/src/resolve/resolvectl.c -+++ b/src/resolve/resolvectl.c -@@ -705,7 +705,6 @@ invalid: - - static int verb_query(int argc, char **argv, void *userdata) { - sd_bus *bus = userdata; -- char **p; - int q, r = 0; - - if (arg_type != 0) -@@ -975,7 +974,6 @@ static int resolve_openpgp(sd_bus *bus, const char *address) { - - static int verb_openpgp(int argc, char **argv, void *userdata) { - sd_bus *bus = userdata; -- char **p; - int q, r = 0; - - STRV_FOREACH(p, argv + 1) { -@@ -1025,7 +1023,7 @@ static bool service_family_is_valid(const char *s) { - - static int verb_tlsa(int argc, char **argv, void *userdata) { - sd_bus *bus = userdata; -- char **p, **args = argv + 1; -+ char **args = argv + 1; - const char *family = "tcp"; - int q, r = 0; - -@@ -1389,7 +1387,6 @@ static int status_print_strv_ifindex(int ifindex, const char *ifname, char **p) - printf("%s%nGlobal%n%s:", ansi_highlight(), &pos1, &pos2, ansi_normal()); - - size_t cols = columns(), position = pos2 - pos1 + 2; -- char **i; - - STRV_FOREACH(i, p) { - size_t our_len = utf8_console_width(*i); /* This returns -1 on invalid utf-8 (which shouldn't happen). -@@ -2025,7 +2022,6 @@ static int verb_status(int argc, char **argv, void *userdata) { - int r = 0; - - if (argc > 1) { -- char **ifname; - bool empty_line = false; - - STRV_FOREACH(ifname, argv + 1) { -@@ -2049,7 +2045,6 @@ static int verb_status(int argc, char **argv, void *userdata) { - - static int call_dns(sd_bus *bus, char **dns, const BusLocator *locator, sd_bus_error *error, bool extended) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL; -- char **p; - int r; - - r = bus_message_new_method_call(bus, &req, locator, extended ? "SetLinkDNSEx" : "SetLinkDNS"); -@@ -2157,7 +2152,6 @@ static int verb_dns(int argc, char **argv, void *userdata) { - - static int call_domain(sd_bus *bus, char **domain, const BusLocator *locator, sd_bus_error *error) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL; -- char **p; - int r; - - r = bus_message_new_method_call(bus, &req, locator, "SetLinkDomains"); -@@ -2454,7 +2448,6 @@ static int call_nta(sd_bus *bus, char **nta, const BusLocator *locator, sd_bus_ - static int verb_nta(int argc, char **argv, void *userdata) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - sd_bus *bus = userdata; -- char **p; - int r; - bool clear; - -diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c -index b036aa402c..4a6c06d13d 100644 ---- a/src/resolve/resolved-dns-trust-anchor.c -+++ b/src/resolve/resolved-dns-trust-anchor.c -@@ -409,7 +409,6 @@ static int dns_trust_anchor_load_files( - int (*loader)(DnsTrustAnchor *d, const char *path, unsigned n, const char *line)) { - - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - assert(d); -diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c -index ab2773e4e4..a05bd20199 100644 ---- a/src/resolve/resolved-dnssd.c -+++ b/src/resolve/resolved-dnssd.c -@@ -186,7 +186,6 @@ int dnssd_render_instance_name(DnssdService *s, char **ret_name) { - - int dnssd_load(Manager *manager) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - assert(manager); -diff --git a/src/resolve/resolved-etc-hosts.c b/src/resolve/resolved-etc-hosts.c -index 9af3a27bb1..c33bbbeb79 100644 ---- a/src/resolve/resolved-etc-hosts.c -+++ b/src/resolve/resolved-etc-hosts.c -@@ -189,7 +189,6 @@ static void strip_localhost(EtcHosts *hosts) { - - for (size_t j = 0; j < ELEMENTSOF(local_in_addrs); j++) { - bool all_localhost, in_order; -- char **i; - - item = hashmap_get(hosts->by_address, local_in_addrs + j); - if (!item) -@@ -389,8 +388,6 @@ int manager_etc_hosts_lookup(Manager *m, DnsQuestion* q, DnsAnswer **answer) { - } - - if (found_ptr) { -- char **n; -- - r = dns_answer_reserve(answer, strv_length(item->names)); - if (r < 0) - return r; -diff --git a/src/resolve/resolved-link-bus.c b/src/resolve/resolved-link-bus.c -index 8d533d7ecf..97f6eb70ca 100644 ---- a/src/resolve/resolved-link-bus.c -+++ b/src/resolve/resolved-link-bus.c -@@ -706,7 +706,6 @@ int bus_link_method_set_dnssec_negative_trust_anchors(sd_bus_message *message, v - _cleanup_free_ char *j = NULL; - Link *l = userdata; - int r; -- char **i; - - assert(message); - assert(l); -diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c -index 6c910498a2..e6b46aed8e 100644 ---- a/src/resolve/resolved-link.c -+++ b/src/resolve/resolved-link.c -@@ -282,7 +282,6 @@ static int link_update_dns_server_one(Link *l, const char *str) { - - static int link_update_dns_servers(Link *l) { - _cleanup_strv_free_ char **nameservers = NULL; -- char **nameserver; - int r; - - assert(l); -@@ -511,7 +510,6 @@ static int link_update_search_domain_one(Link *l, const char *name, bool route_o - - static int link_update_search_domains(Link *l) { - _cleanup_strv_free_ char **sdomains = NULL, **rdomains = NULL; -- char **i; - int r, q; - - assert(l); -diff --git a/src/run-generator/run-generator.c b/src/run-generator/run-generator.c -index 1cf14e71fc..fb62209704 100644 ---- a/src/run-generator/run-generator.c -+++ b/src/run-generator/run-generator.c -@@ -55,7 +55,6 @@ static int parse(const char *key, const char *value, void *data) { - static int generate(void) { - _cleanup_fclose_ FILE *f = NULL; - const char *p; -- char **c; - int r; - - if (strv_isempty(arg_commands) && !arg_success_action) -diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c -index 3f286a888b..2bdc529b80 100644 ---- a/src/shared/acl-util.c -+++ b/src/shared/acl-util.c -@@ -212,7 +212,6 @@ int acl_search_groups(const char *path, char ***ret_groups) { - int parse_acl(const char *text, acl_t *acl_access, acl_t *acl_default, bool want_mask) { - _cleanup_free_ char **a = NULL, **d = NULL; /* strings are not freed */ - _cleanup_strv_free_ char **split = NULL; -- char **entry; - int r = -EINVAL; - _cleanup_(acl_freep) acl_t a_acl = NULL, d_acl = NULL; - -diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c -index a17375eb4c..4c39ce2f0e 100644 ---- a/src/shared/bootspec.c -+++ b/src/shared/bootspec.c -@@ -256,7 +256,6 @@ static int boot_entries_find( - size_t *n_entries) { - - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - assert(root); -@@ -771,8 +770,6 @@ int boot_entries_augment_from_loader( - "auto-reboot-to-firmware-setup", "Reboot Into Firmware Interface", - }; - -- char **i; -- - assert(config); - - /* Let's add the entries discovered by the boot loader to the end of our list, unless they are -@@ -780,7 +777,6 @@ int boot_entries_augment_from_loader( - - STRV_FOREACH(i, found_by_loader) { - _cleanup_free_ char *c = NULL, *t = NULL, *p = NULL; -- char **a, **b; - - if (boot_config_has_entry(config, *i)) - continue; -diff --git a/src/shared/bus-polkit.c b/src/shared/bus-polkit.c -index bbe04bea37..4d733a8173 100644 ---- a/src/shared/bus-polkit.c -+++ b/src/shared/bus-polkit.c -@@ -36,7 +36,6 @@ static int bus_message_append_strv_key_value( - sd_bus_message *m, - const char **l) { - -- const char **k, **v; - int r; - - assert(m); -diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c -index ef134bcee4..c211fe34d5 100644 ---- a/src/shared/bus-unit-util.c -+++ b/src/shared/bus-unit-util.c -@@ -1674,7 +1674,6 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con - - if (streq(field, "RootImageOptions")) { - _cleanup_strv_free_ char **l = NULL; -- char **first = NULL, **second = NULL; - const char *p = eq; - - r = sd_bus_message_open_container(m, SD_BUS_TYPE_STRUCT, "sv"); -@@ -2023,7 +2022,6 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con - if (r < 0) - return bus_log_create_error(r); - -- char **source, **destination; - STRV_FOREACH_PAIR(source, destination, symlinks) { - r = sd_bus_message_append(m, "(sst)", *source, *destination, 0); - if (r < 0) -@@ -2647,7 +2645,6 @@ int bus_append_unit_property_assignment(sd_bus_message *m, UnitType t, const cha - } - - int bus_append_unit_property_assignment_many(sd_bus_message *m, UnitType t, char **l) { -- char **i; - int r; - - assert(m); -diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c -index 4a2b7684bc..a907b67a70 100644 ---- a/src/shared/bus-util.c -+++ b/src/shared/bus-util.c -@@ -490,7 +490,6 @@ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_send - - int bus_track_add_name_many(sd_bus_track *t, char **l) { - int r = 0; -- char **i; - - assert(t); - -@@ -562,7 +561,6 @@ int bus_open_system_watch_bind_with_description(sd_bus **ret, const char *descri - - int bus_reply_pair_array(sd_bus_message *m, char **l) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; -- char **k, **v; - int r; - - assert(m); -diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c -index 8bda66ca36..3532d55286 100644 ---- a/src/shared/cgroup-setup.c -+++ b/src/shared/cgroup-setup.c -@@ -22,7 +22,6 @@ - static int cg_any_controller_used_for_v1(void) { - _cleanup_free_ char *buf = NULL; - _cleanup_strv_free_ char **lines = NULL; -- char **line; - int r; - - r = read_full_virtual_file("/proc/cgroups", &buf, NULL); -diff --git a/src/shared/condition.c b/src/shared/condition.c -index 21f3714eba..d0f2ebfc23 100644 ---- a/src/shared/condition.c -+++ b/src/shared/condition.c -@@ -830,7 +830,6 @@ static int condition_test_first_boot(Condition *c, char **env) { - - static int condition_test_environment(Condition *c, char **env) { - bool equal; -- char **i; - - assert(c); - assert(c->parameter); -diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c -index 1e1967d7ea..d19041207c 100644 ---- a/src/shared/conf-parser.c -+++ b/src/shared/conf-parser.c -@@ -474,7 +474,6 @@ static int config_parse_many_files( - - _cleanup_hashmap_free_ Hashmap *stats_by_path = NULL; - struct stat st; -- char **fn; - int r; - - if (ret_stats_by_path) { -diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c -index 1d432328e7..3f1644ea85 100644 ---- a/src/shared/discover-image.c -+++ b/src/shared/discover-image.c -@@ -632,7 +632,6 @@ int image_remove(Image *i) { - _cleanup_(release_lock_file) LockFile global_lock = LOCK_FILE_INIT, local_lock = LOCK_FILE_INIT; - _cleanup_strv_free_ char **settings = NULL; - _cleanup_free_ char *roothash = NULL; -- char **j; - int r; - - assert(i); -@@ -695,10 +694,9 @@ int image_remove(Image *i) { - return -EOPNOTSUPP; - } - -- STRV_FOREACH(j, settings) { -+ STRV_FOREACH(j, settings) - if (unlink(*j) < 0 && errno != ENOENT) - log_debug_errno(errno, "Failed to unlink %s, ignoring: %m", *j); -- } - - if (unlink(roothash) < 0 && errno != ENOENT) - log_debug_errno(errno, "Failed to unlink %s, ignoring: %m", roothash); -@@ -724,7 +722,6 @@ int image_rename(Image *i, const char *new_name) { - _cleanup_free_ char *new_path = NULL, *nn = NULL, *roothash = NULL; - _cleanup_strv_free_ char **settings = NULL; - unsigned file_attr = 0; -- char **j; - int r; - - assert(i); -@@ -845,7 +842,6 @@ int image_clone(Image *i, const char *new_name, bool read_only) { - _cleanup_strv_free_ char **settings = NULL; - _cleanup_free_ char *roothash = NULL; - const char *new_path; -- char **j; - int r; - - assert(i); -diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c -index b38f16c37a..79438c69d2 100644 ---- a/src/shared/dissect-image.c -+++ b/src/shared/dissect-image.c -@@ -2208,7 +2208,6 @@ static int validate_signature_userspace(const VeritySettings *verity) { - _cleanup_(BIO_freep) BIO *bio = NULL; /* 'bio' must be freed first, 's' second, hence keep this order - * of declaration in place, please */ - const unsigned char *d; -- char **i; - int r; - - assert(verity); -diff --git a/src/shared/dropin.c b/src/shared/dropin.c -index eb016eb114..375a3ca600 100644 ---- a/src/shared/dropin.c -+++ b/src/shared/dropin.c -@@ -232,7 +232,6 @@ int unit_file_find_dropin_paths( - - _cleanup_strv_free_ char **dirs = NULL; - const char *n; -- char **p; - int r; - - assert(ret); -diff --git a/src/shared/exec-util.c b/src/shared/exec-util.c -index b93de9c922..918f997e5a 100644 ---- a/src/shared/exec-util.c -+++ b/src/shared/exec-util.c -@@ -91,7 +91,6 @@ static int do_execute( - - _cleanup_hashmap_free_free_ Hashmap *pids = NULL; - _cleanup_strv_free_ char **paths = NULL; -- char **path, **e; - int r; - bool parallel_execution; - -@@ -254,7 +253,7 @@ int execute_directories( - } - - static int gather_environment_generate(int fd, void *arg) { -- char ***env = arg, **x, **y; -+ char ***env = arg; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **new = NULL; - int r; -@@ -369,7 +368,6 @@ static int gather_environment_consume(int fd, void *arg) { - - int exec_command_flags_from_strv(char **ex_opts, ExecCommandFlags *flags) { - ExecCommandFlags ex_flag, ret_flags = 0; -- char **opt; - - assert(flags); - -diff --git a/src/shared/format-table.c b/src/shared/format-table.c -index b95680b365..b756c5286b 100644 ---- a/src/shared/format-table.c -+++ b/src/shared/format-table.c -@@ -1364,7 +1364,6 @@ static char* format_strv_width(char **strv, size_t column_width) { - return NULL; - - size_t position = 0; -- char **p; - STRV_FOREACH(p, strv) { - size_t our_len = utf8_console_width(*p); /* This returns -1 on invalid utf-8 (which shouldn't happen). - * If that happens, we'll just print one item per line. */ -diff --git a/src/shared/hwdb-util.c b/src/shared/hwdb-util.c -index fe4785f3e5..f98d03f766 100644 ---- a/src/shared/hwdb-util.c -+++ b/src/shared/hwdb-util.c -@@ -434,7 +434,7 @@ static int trie_store(struct trie *trie, const char *filename, bool compat) { - - static int insert_data(struct trie *trie, char **match_list, char *line, const char *filename, - uint16_t file_priority, uint32_t line_number, bool compat) { -- char *value, **entry; -+ char *value; - - assert(line[0] == ' '); - -@@ -583,7 +583,6 @@ int hwdb_update(const char *root, const char *hwdb_bin_dir, bool strict, bool co - _cleanup_free_ char *hwdb_bin = NULL; - _cleanup_(trie_freep) struct trie *trie = NULL; - _cleanup_strv_free_ char **files = NULL; -- char **f; - uint16_t file_priority = 1; - int r = 0, err; - -diff --git a/src/shared/install.c b/src/shared/install.c -index f1ee3c2716..785ef55dbd 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -874,7 +874,6 @@ static int find_symlinks_in_scope( - bool same_name_link_runtime = false, same_name_link_config = false; - bool enabled_in_runtime = false, enabled_at_all = false; - bool ignore_same_name = false; -- char **p; - int r; - - assert(lp); -@@ -1381,7 +1380,6 @@ static int unit_file_search( - _cleanup_free_ char *template = NULL; - bool found_unit = false; - int r, result; -- char **p; - - assert(info); - assert(lp); -@@ -1796,7 +1794,6 @@ static int install_info_symlink_alias( - UnitFileChange **changes, - size_t *n_changes) { - -- char **s; - int r = 0, q; - - assert(info); -@@ -1846,7 +1843,6 @@ static int install_info_symlink_wants( - _cleanup_free_ char *buf = NULL; - UnitNameFlags valid_dst_type = UNIT_NAME_ANY; - const char *n; -- char **s; - int r = 0, q; - - assert(info); -@@ -2150,7 +2146,6 @@ int unit_file_mask( - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - const char *config_path; -- char **i; - int r; - - assert(scope >= 0); -@@ -2199,7 +2194,6 @@ int unit_file_unmask( - _cleanup_strv_free_ char **todo = NULL; - const char *config_path; - size_t n_todo = 0; -- char **i; - int r, q; - - assert(scope >= 0); -@@ -2291,7 +2285,6 @@ int unit_file_link( - _cleanup_strv_free_ char **todo = NULL; - const char *config_path; - size_t n_todo = 0; -- char **i; - int r, q; - - assert(scope >= 0); -@@ -2391,7 +2384,6 @@ int unit_file_revert( - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_strv_free_ char **todo = NULL; - size_t n_todo = 0; -- char **i; - int r, q; - - /* Puts a unit file back into vendor state. This means: -@@ -2411,7 +2403,6 @@ int unit_file_revert( - - STRV_FOREACH(i, files) { - bool has_vendor = false; -- char **p; - - if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) - return -EINVAL; -@@ -2495,7 +2486,6 @@ int unit_file_revert( - STRV_FOREACH(i, todo) { - _cleanup_strv_free_ char **fs = NULL; - const char *rp; -- char **j; - - (void) get_files_in_directory(*i, &fs); - -@@ -2548,7 +2538,6 @@ int unit_file_add_dependency( - _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; - UnitFileInstallInfo *info, *target_info; - const char *config_path; -- char **f; - int r; - - assert(scope >= 0); -@@ -2617,7 +2606,6 @@ int unit_file_enable( - _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; - const char *config_path; - UnitFileInstallInfo *info; -- char **f; - int r; - - assert(scope >= 0); -@@ -2661,7 +2649,6 @@ int unit_file_disable( - _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; - _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - const char *config_path; -- char **i; - int r; - - assert(scope >= 0); -@@ -2979,7 +2966,6 @@ static int presets_find_config(UnitFileScope scope, const char *root_dir, char * - static int read_presets(UnitFileScope scope, const char *root_dir, UnitFilePresets *presets) { - _cleanup_(unit_file_presets_freep) UnitFilePresets ps = {}; - _cleanup_strv_free_ char **files = NULL; -- char **p; - int r; - - assert(scope >= 0); -@@ -3097,7 +3083,6 @@ static int pattern_match_multiple_instances( - if (unit_name_is_valid(unit_name, UNIT_NAME_TEMPLATE)) { - _cleanup_strv_free_ char **out_strv = NULL; - -- char **iter; - STRV_FOREACH(iter, rule.instances) { - _cleanup_free_ char *name = NULL; - -@@ -3144,11 +3129,10 @@ static int query_presets(const char *name, const UnitFilePresets *presets, char - log_debug("Preset files don't specify rule for %s. Enabling.", name); - return 1; - case PRESET_ENABLE: -- if (instance_name_list && *instance_name_list) { -- char **s; -+ if (instance_name_list && *instance_name_list) - STRV_FOREACH(s, *instance_name_list) - log_debug("Preset files say enable %s.", *s); -- } else -+ else - log_debug("Preset files say enable %s.", name); - return 1; - case PRESET_DISABLE: -@@ -3254,15 +3238,14 @@ static int preset_prepare_one( - return r; - - if (r > 0) { -- if (instance_name_list) { -- char **s; -+ if (instance_name_list) - STRV_FOREACH(s, instance_name_list) { - r = install_info_discover_and_check(plus, lp, *s, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &info, changes, n_changes); - if (r < 0) - return r; - } -- } else { -+ else { - r = install_info_discover_and_check(plus, lp, name, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &info, changes, n_changes); - if (r < 0) -@@ -3289,7 +3272,6 @@ int unit_file_preset( - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(unit_file_presets_freep) UnitFilePresets presets = {}; - const char *config_path; -- char **i; - int r; - - assert(scope >= 0); -@@ -3329,7 +3311,6 @@ int unit_file_preset_all( - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(unit_file_presets_freep) UnitFilePresets presets = {}; - const char *config_path = NULL; -- char **i; - int r; - - assert(scope >= 0); -@@ -3401,7 +3382,6 @@ int unit_file_get_list( - char **patterns) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- char **dirname; - int r; - - assert(scope >= 0); -diff --git a/src/shared/libcrypt-util.c b/src/shared/libcrypt-util.c -index 5b315413aa..0d72032f53 100644 ---- a/src/shared/libcrypt-util.c -+++ b/src/shared/libcrypt-util.c -@@ -197,7 +197,6 @@ int test_password_one(const char *hashed_password, const char *password) { - } - - int test_password_many(char **hashed_password, const char *password) { -- char **hpw; - int r; - - STRV_FOREACH(hpw, hashed_password) { -diff --git a/src/shared/libfido2-util.c b/src/shared/libfido2-util.c -index 87b88f04d6..8c9fa88e32 100644 ---- a/src/shared/libfido2-util.c -+++ b/src/shared/libfido2-util.c -@@ -313,8 +313,6 @@ static int fido2_use_hmac_hash_specific_token( - bool retry_with_up = false, retry_with_pin = false; - - if (FLAGS_SET(required, FIDO2ENROLL_PIN)) { -- char **i; -- - /* OK, we need a pin, try with all pins in turn */ - if (strv_isempty(pins)) - r = FIDO_ERR_PIN_REQUIRED; -@@ -683,7 +681,6 @@ int fido2_generate_hmac_hash( - - for (;;) { - _cleanup_(strv_free_erasep) char **pin = NULL; -- char **i; - - r = ask_password_auto("Please enter security token PIN:", askpw_icon_name, NULL, "fido2-pin", "fido2-pin", USEC_INFINITY, 0, &pin); - if (r < 0) -diff --git a/src/shared/mount-setup.c b/src/shared/mount-setup.c -index 7eadff3ace..975c027f47 100644 ---- a/src/shared/mount-setup.c -+++ b/src/shared/mount-setup.c -@@ -244,8 +244,6 @@ static const char *join_with(const char *controller) { - NULL - }; - -- const char *const *x, *const *y; -- - assert(controller); - - /* This will lookup which controller to mount another controller with. Input is a controller name, and output -@@ -433,7 +431,6 @@ static int relabel_cgroup_filesystems(void) { - - static int relabel_extra(void) { - _cleanup_strv_free_ char **files = NULL; -- char **file; - int r, c = 0; - - /* Support for relabelling additional files or directories after loading the policy. For this, code in the -diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c -index c75c02f5be..12c7044f04 100644 ---- a/src/shared/mount-util.c -+++ b/src/shared/mount-util.c -@@ -274,7 +274,6 @@ int bind_remount_recursive_with_mountinfo( - * we shall operate on. */ - if (!path_equal(path, prefix)) { - bool deny_listed = false; -- char **i; - - STRV_FOREACH(i, deny_list) { - if (path_equal(*i, prefix)) -diff --git a/src/shared/net-condition.c b/src/shared/net-condition.c -index 006676d973..2bb4c0b509 100644 ---- a/src/shared/net-condition.c -+++ b/src/shared/net-condition.c -@@ -46,7 +46,6 @@ bool net_match_is_empty(const NetMatch *match) { - } - - static bool net_condition_test_strv(char * const *patterns, const char *string) { -- char * const *p; - bool match = false, has_positive_rule = false; - - if (strv_isempty(patterns)) -@@ -77,7 +76,6 @@ static bool net_condition_test_ifname(char * const *patterns, const char *ifname - if (net_condition_test_strv(patterns, ifname)) - return true; - -- char * const *p; - STRV_FOREACH(p, alternative_names) - if (net_condition_test_strv(patterns, *p)) - return true; -@@ -86,8 +84,6 @@ static bool net_condition_test_ifname(char * const *patterns, const char *ifname - } - - static int net_condition_test_property(char * const *match_property, sd_device *device) { -- char * const *p; -- - if (strv_isempty(match_property)) - return true; - -diff --git a/src/shared/nscd-flush.c b/src/shared/nscd-flush.c -index 0655030633..95dfe24b22 100644 ---- a/src/shared/nscd-flush.c -+++ b/src/shared/nscd-flush.c -@@ -132,7 +132,6 @@ static int nscd_flush_cache_one(const char *database, usec_t end) { - int nscd_flush_cache(char **databases) { - usec_t end; - int r = 0; -- char **i; - - /* Tries to invalidate the specified database in nscd. We do this carefully, with a 5s timeout, so that we - * don't block indefinitely on another service. */ -diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c -index 67ea44515a..4f9ec1fbd6 100644 ---- a/src/shared/pkcs11-util.c -+++ b/src/shared/pkcs11-util.c -@@ -275,7 +275,7 @@ int pkcs11_token_login( - - for (unsigned tries = 0; tries < 3; tries++) { - _cleanup_strv_free_erase_ char **passwords = NULL; -- char **i, *e; -+ char *e; - - e = getenv("PIN"); - if (e) { -diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c -index 26daec3450..98619c25d4 100644 ---- a/src/shared/pretty-print.c -+++ b/src/shared/pretty-print.c -@@ -168,7 +168,6 @@ static int cat_file(const char *filename, bool newline) { - } - - int cat_files(const char *file, char **dropins, CatFlags flags) { -- char **path; - int r; - - if (file) { -@@ -284,10 +283,9 @@ static int guess_type(const char **name, char ***prefixes, bool *is_collection, - int conf_files_cat(const char *root, const char *name) { - _cleanup_strv_free_ char **dirs = NULL, **files = NULL; - _cleanup_free_ char *path = NULL; -- char **prefix, **prefixes = NULL; /* explicit initialization to appease gcc */ -+ char **prefixes = NULL; /* explicit initialization to appease gcc */ - bool is_collection; - const char *extension; -- char **t; - int r; - - r = guess_type(&name, &prefixes, &is_collection, &extension); -diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c -index 32bd8aa73b..e597a156cf 100644 ---- a/src/shared/seccomp-util.c -+++ b/src/shared/seccomp-util.c -@@ -1837,7 +1837,6 @@ int seccomp_restrict_archs(Set *archs) { - - int parse_syscall_archs(char **l, Set **ret_archs) { - _cleanup_set_free_ Set *archs = NULL; -- char **s; - int r; - - assert(l); -diff --git a/src/shared/serialize.c b/src/shared/serialize.c -index 47996b9ead..cd48286355 100644 ---- a/src/shared/serialize.c -+++ b/src/shared/serialize.c -@@ -117,7 +117,6 @@ int serialize_dual_timestamp(FILE *f, const char *name, const dual_timestamp *t) - - int serialize_strv(FILE *f, const char *key, char **l) { - int ret = 0, r; -- char **i; - - /* Returns the first error, or positive if anything was serialized, 0 otherwise. */ - -diff --git a/src/shared/tests.c b/src/shared/tests.c -index 307f796fe2..70fbbb45a5 100644 ---- a/src/shared/tests.c -+++ b/src/shared/tests.c -@@ -51,7 +51,6 @@ static void load_testdata_env(void) { - _cleanup_free_ char *s = NULL; - _cleanup_free_ char *envpath = NULL; - _cleanup_strv_free_ char **pairs = NULL; -- char **k, **v; - - if (called) - return; -diff --git a/src/shared/user-record-show.c b/src/shared/user-record-show.c -index 7c2751f3a7..95895a8e45 100644 ---- a/src/shared/user-record-show.c -+++ b/src/shared/user-record-show.c -@@ -143,7 +143,6 @@ void user_record_show(UserRecord *hr, bool show_full_group_info) { - break; - } - bool has_valid_passwords = false; -- char **p; - STRV_FOREACH(p, hr->hashed_password) - if (!hashed_password_is_locked_or_invalid(*p)) { - has_valid_passwords = true; -@@ -240,15 +239,12 @@ void user_record_show(UserRecord *hr, bool show_full_group_info) { - if (hr->preferred_language) - printf(" Language: %s\n", hr->preferred_language); - -- if (!strv_isempty(hr->environment)) { -- char **i; -- -+ if (!strv_isempty(hr->environment)) - STRV_FOREACH(i, hr->environment) { - printf(i == hr->environment ? - " Environment: %s\n" : - " %s\n", *i); - } -- } - - if (hr->locked >= 0) - printf(" Locked: %s\n", yes_no(hr->locked)); -@@ -478,14 +474,11 @@ void user_record_show(UserRecord *hr, bool show_full_group_info) { - if (!strv_isempty(hr->ssh_authorized_keys)) - printf("SSH Pub. Key: %zu\n", strv_length(hr->ssh_authorized_keys)); - -- if (!strv_isempty(hr->pkcs11_token_uri)) { -- char **i; -- -+ if (!strv_isempty(hr->pkcs11_token_uri)) - STRV_FOREACH(i, hr->pkcs11_token_uri) - printf(i == hr->pkcs11_token_uri ? - "PKCS11 Token: %s\n" : - " %s\n", *i); -- } - - if (hr->n_fido2_hmac_credential > 0) - printf(" FIDO2 Token: %zu\n", hr->n_fido2_hmac_credential); -@@ -558,7 +551,6 @@ void group_record_show(GroupRecord *gr, bool show_full_user_info) { - } - } else { - const char *prefix = " Members:"; -- char **i; - - STRV_FOREACH(i, gr->members) { - printf("%s %s\n", prefix, *i); -@@ -568,7 +560,6 @@ void group_record_show(GroupRecord *gr, bool show_full_user_info) { - - if (!strv_isempty(gr->administrators)) { - const char *prefix = " Admins:"; -- char **i; - - STRV_FOREACH(i, gr->administrators) { - printf("%s %s\n", prefix, *i); -diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c -index 7064f3a905..f108529bbd 100644 ---- a/src/sleep/sleep.c -+++ b/src/sleep/sleep.c -@@ -85,7 +85,6 @@ static int write_hibernate_location_info(const HibernateLocation *hibernate_loca - - static int write_mode(char **modes) { - int r = 0; -- char **mode; - - STRV_FOREACH(mode, modes) { - int k; -@@ -103,7 +102,6 @@ static int write_mode(char **modes) { - } - - static int write_state(FILE **f, char **states) { -- char **state; - int r = 0; - - assert(f); -diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c -index 408ac3b8be..24c8baab03 100644 ---- a/src/sysctl/sysctl.c -+++ b/src/sysctl/sysctl.c -@@ -51,8 +51,6 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Option*, option_free); - DEFINE_HASH_OPS_WITH_VALUE_DESTRUCTOR(option_hash_ops, char, string_hash_func, string_compare_func, Option, option_free); - - static bool test_prefix(const char *p) { -- char **i; -- - if (strv_isempty(arg_prefixes)) - return true; - -@@ -131,7 +129,6 @@ static int apply_all(OrderedHashmap *sysctl_options) { - if (string_is_glob(option->key)) { - _cleanup_strv_free_ char **paths = NULL; - _cleanup_free_ char *pattern = NULL; -- char **s; - - pattern = path_join("/proc/sys", option->key); - if (!pattern) -@@ -403,7 +400,6 @@ static int run(int argc, char *argv[]) { - } - } else { - _cleanup_strv_free_ char **files = NULL; -- char **f; - - r = conf_files_list_strv(&files, ".conf", NULL, 0, (const char**) CONF_PATHS_STRV("sysctl.d")); - if (r < 0) -diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c -index 5abf1bb418..6a2dc16ab9 100644 ---- a/src/sysext/sysext.c -+++ b/src/sysext/sysext.c -@@ -123,7 +123,6 @@ static int unmerge_hierarchy(const char *p) { - - static int unmerge(void) { - int r, ret = 0; -- char **p; - - STRV_FOREACH(p, arg_hierarchies) { - _cleanup_free_ char *resolved = NULL; -@@ -160,7 +159,6 @@ static int verb_unmerge(int argc, char **argv, void *userdata) { - static int verb_status(int argc, char **argv, void *userdata) { - _cleanup_(table_unrefp) Table *t = NULL; - int r, ret = 0; -- char **p; - - t = table_new("hierarchy", "extensions", "since"); - if (!t) -@@ -244,7 +242,6 @@ static int mount_overlayfs( - - _cleanup_free_ char *options = NULL; - bool separator = false; -- char **l; - int r; - - assert(where); -@@ -284,7 +281,6 @@ static int merge_hierarchy( - _cleanup_free_ char *resolved_hierarchy = NULL, *f = NULL, *buf = NULL; - _cleanup_strv_free_ char **layers = NULL; - struct stat st; -- char **p; - int r; - - assert(hierarchy); -@@ -452,7 +448,6 @@ static int merge_subprocess(Hashmap *images, const char *workspace) { - size_t n_extensions = 0; - unsigned n_ignored = 0; - Image *img; -- char **h; - int r; - - /* Mark the whole of /run as MS_SLAVE, so that we can mount stuff below it that doesn't show up on -@@ -759,7 +754,6 @@ static int image_discover_and_read_metadata(Hashmap **ret_images) { - - static int verb_merge(int argc, char **argv, void *userdata) { - _cleanup_(hashmap_freep) Hashmap *images = NULL; -- char **p; - int r; - - if (!have_effective_cap(CAP_SYS_ADMIN)) -diff --git a/src/systemctl/systemctl-cancel-job.c b/src/systemctl/systemctl-cancel-job.c -index 4c5203c1f9..647e70767e 100644 ---- a/src/systemctl/systemctl-cancel-job.c -+++ b/src/systemctl/systemctl-cancel-job.c -@@ -10,7 +10,6 @@ - - int cancel_job(int argc, char *argv[], void *userdata) { - sd_bus *bus; -- char **name; - int r; - - if (argc <= 1) /* Shortcut to trivial_method() if no argument is given */ -diff --git a/src/systemctl/systemctl-clean-or-freeze.c b/src/systemctl/systemctl-clean-or-freeze.c -index fb4d643517..dc44110c72 100644 ---- a/src/systemctl/systemctl-clean-or-freeze.c -+++ b/src/systemctl/systemctl-clean-or-freeze.c -@@ -11,7 +11,6 @@ int clean_or_freeze_unit(int argc, char *argv[], void *userdata) { - _cleanup_(bus_wait_for_units_freep) BusWaitForUnits *w = NULL; - _cleanup_strv_free_ char **names = NULL; - int r, ret = EXIT_SUCCESS; -- char **name; - const char *method; - sd_bus *bus; - -diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c -index 92abd15636..328168e4bb 100644 ---- a/src/systemctl/systemctl-edit.c -+++ b/src/systemctl/systemctl-edit.c -@@ -26,7 +26,6 @@ int cat(int argc, char *argv[], void *userdata) { - _cleanup_(hashmap_freep) Hashmap *cached_name_map = NULL, *cached_id_map = NULL; - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_strv_free_ char **names = NULL; -- char **name; - sd_bus *bus; - bool first = true; - int r, rc = 0; -@@ -145,7 +144,6 @@ static int create_edit_temp_file(const char *new_path, const char *original_path - } else if (original_unit_paths) { - _cleanup_free_ char *new_contents = NULL; - _cleanup_fclose_ FILE *f = NULL; -- char **path; - - r = mac_selinux_create_file_prepare(new_path, S_IFREG); - if (r < 0) -@@ -318,7 +316,7 @@ static int run_editor(char **paths) { - if (r < 0) - return r; - if (r == 0) { -- char **editor_args = NULL, **tmp_path, **original_path; -+ char **editor_args = NULL; - size_t n_editor_args = 0, i = 1, argc; - const char **args, *editor; - -@@ -379,7 +377,6 @@ static int run_editor(char **paths) { - static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { - _cleanup_(hashmap_freep) Hashmap *cached_name_map = NULL, *cached_id_map = NULL; - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- char **name; - int r; - - assert(names); -@@ -501,7 +498,6 @@ int edit(int argc, char *argv[], void *userdata) { - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_strv_free_ char **names = NULL; - _cleanup_strv_free_ char **paths = NULL; -- char **original, **tmp; - sd_bus *bus; - int r; - -diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c -index 7860f3dc6c..6266363f00 100644 ---- a/src/systemctl/systemctl-enable.c -+++ b/src/systemctl/systemctl-enable.c -@@ -12,7 +12,6 @@ - #include "systemctl.h" - - static int normalize_filenames(char **names) { -- char **u; - int r; - - STRV_FOREACH(u, names) -@@ -40,7 +39,6 @@ static int normalize_filenames(char **names) { - } - - static int normalize_names(char **names, bool warn_if_path) { -- char **u; - bool was_path = false; - - STRV_FOREACH(u, names) { -@@ -139,7 +137,6 @@ int enable_unit(int argc, char *argv[], void *userdata) { - sd_bus *bus; - - if (STR_IN_SET(verb, "mask", "unmask")) { -- char **name; - _cleanup_(lookup_paths_free) LookupPaths lp = {}; - - r = lookup_paths_init_or_warn(&lp, arg_scope, 0, arg_root); -diff --git a/src/systemctl/systemctl-is-active.c b/src/systemctl/systemctl-is-active.c -index d83736e94a..e7c8431ac6 100644 ---- a/src/systemctl/systemctl-is-active.c -+++ b/src/systemctl/systemctl-is-active.c -@@ -13,7 +13,6 @@ static int check_unit_generic(int code, const UnitActiveState good_states[], int - _cleanup_strv_free_ char **names = NULL; - UnitActiveState active_state; - sd_bus *bus; -- char **name; - int r; - bool found = false; - -diff --git a/src/systemctl/systemctl-is-enabled.c b/src/systemctl/systemctl-is-enabled.c -index e33dffaf29..eaf25217a8 100644 ---- a/src/systemctl/systemctl-is-enabled.c -+++ b/src/systemctl/systemctl-is-enabled.c -@@ -59,7 +59,6 @@ static int show_installation_targets(sd_bus *bus, const char *name) { - int unit_is_enabled(int argc, char *argv[], void *userdata) { - _cleanup_strv_free_ char **names = NULL; - bool enabled; -- char **name; - int r; - - r = mangle_names("to check", strv_skip(argv, 1), &names); -diff --git a/src/systemctl/systemctl-kill.c b/src/systemctl/systemctl-kill.c -index 489e754752..94489423e8 100644 ---- a/src/systemctl/systemctl-kill.c -+++ b/src/systemctl/systemctl-kill.c -@@ -8,7 +8,7 @@ - - int kill_unit(int argc, char *argv[], void *userdata) { - _cleanup_strv_free_ char **names = NULL; -- char *kill_who = NULL, **name; -+ char *kill_who = NULL; - sd_bus *bus; - int r, q; - -diff --git a/src/systemctl/systemctl-list-dependencies.c b/src/systemctl/systemctl-list-dependencies.c -index a536240a9f..4d58869416 100644 ---- a/src/systemctl/systemctl-list-dependencies.c -+++ b/src/systemctl/systemctl-list-dependencies.c -@@ -63,7 +63,6 @@ static int list_dependencies_one( - unsigned branches) { - - _cleanup_strv_free_ char **deps = NULL; -- char **c; - int r; - - assert(bus); -@@ -138,7 +137,7 @@ static int list_dependencies_one( - - int list_dependencies(int argc, char *argv[], void *userdata) { - _cleanup_strv_free_ char **units = NULL, **done = NULL; -- char **u, **patterns; -+ char **patterns; - sd_bus *bus; - int r; - -diff --git a/src/systemctl/systemctl-list-machines.c b/src/systemctl/systemctl-list-machines.c -index b4eb0bd4b6..6d0acc4d50 100644 ---- a/src/systemctl/systemctl-list-machines.c -+++ b/src/systemctl/systemctl-list-machines.c -@@ -93,7 +93,6 @@ static int get_machine_list( - struct machine_info *machine_infos = NULL; - _cleanup_strv_free_ char **m = NULL; - _cleanup_free_ char *hn = NULL; -- char **i; - int c = 0, r; - - hn = gethostname_malloc(); -diff --git a/src/systemctl/systemctl-list-units.c b/src/systemctl/systemctl-list-units.c -index 0c405fb7e8..35037d29ba 100644 ---- a/src/systemctl/systemctl-list-units.c -+++ b/src/systemctl/systemctl-list-units.c -@@ -49,7 +49,6 @@ static int get_unit_list_recursive( - - if (arg_recursive) { - _cleanup_strv_free_ char **machines = NULL; -- char **i; - - r = sd_get_machine_names(&machines); - if (r < 0) -diff --git a/src/systemctl/systemctl-logind.c b/src/systemctl/systemctl-logind.c -index 114641cdc7..843f6141ab 100644 ---- a/src/systemctl/systemctl-logind.c -+++ b/src/systemctl/systemctl-logind.c -@@ -112,7 +112,6 @@ int logind_check_inhibitors(enum action a) { - uint32_t uid, pid; - sd_bus *bus; - unsigned c = 0; -- char **s; - int r; - - if (arg_check_inhibitors == 0 || arg_force > 0) -@@ -412,7 +411,6 @@ int help_boot_loader_entry(void) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_strv_free_ char **l = NULL; - sd_bus *bus; -- char **i; - int r; - - r = acquire_bus(BUS_FULL, &bus); -diff --git a/src/systemctl/systemctl-reset-failed.c b/src/systemctl/systemctl-reset-failed.c -index eee7586465..0b7e01429f 100644 ---- a/src/systemctl/systemctl-reset-failed.c -+++ b/src/systemctl/systemctl-reset-failed.c -@@ -10,7 +10,6 @@ - int reset_failed(int argc, char *argv[], void *userdata) { - _cleanup_strv_free_ char **names = NULL; - sd_bus *bus; -- char **name; - int r, q; - - if (argc <= 1) /* Shortcut to trivial_method() if no argument is given */ -diff --git a/src/systemctl/systemctl-set-environment.c b/src/systemctl/systemctl-set-environment.c -index aab0fe5fd0..8c529181da 100644 ---- a/src/systemctl/systemctl-set-environment.c -+++ b/src/systemctl/systemctl-set-environment.c -@@ -172,7 +172,6 @@ int import_environment(int argc, char *argv[], void *userdata) { - - strv_env_clean_with_callback(copy, invalid_callback, NULL); - -- char **e; - STRV_FOREACH(e, copy) - if (string_has_cc(*e, NULL)) - log_notice("Environment variable $%.*s contains control characters, importing anyway.", -@@ -181,8 +180,6 @@ int import_environment(int argc, char *argv[], void *userdata) { - r = sd_bus_message_append_strv(m, copy); - - } else { -- char **a, **b; -- - r = sd_bus_message_open_container(m, 'a', "s"); - if (r < 0) - return bus_log_create_error(r); -diff --git a/src/systemctl/systemctl-set-property.c b/src/systemctl/systemctl-set-property.c -index 5739bac070..4407c2354d 100644 ---- a/src/systemctl/systemctl-set-property.c -+++ b/src/systemctl/systemctl-set-property.c -@@ -46,7 +46,6 @@ static int set_property_one(sd_bus *bus, const char *name, char **properties) { - int set_property(int argc, char *argv[], void *userdata) { - sd_bus *bus; - _cleanup_strv_free_ char **names = NULL; -- char **name; - int r, k; - - r = acquire_bus(BUS_MANAGER, &bus); -diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c -index 7a6655da74..ee96dac457 100644 ---- a/src/systemctl/systemctl-show.c -+++ b/src/systemctl/systemctl-show.c -@@ -308,7 +308,6 @@ static void print_status_info( - ExecStatusInfo *p; - usec_t timestamp; - const char *path; -- char **t, **t2; - int r; - - assert(i); -@@ -367,7 +366,6 @@ static void print_status_info( - if (!strv_isempty(i->dropin_paths)) { - _cleanup_free_ char *dir = NULL; - bool last = false; -- char ** dropin; - - STRV_FOREACH(dropin, i->dropin_paths) { - _cleanup_free_ char *dropin_formatted = NULL; -@@ -774,8 +772,6 @@ static void print_status_info( - } - - static void show_unit_help(UnitStatusInfo *i) { -- char **p; -- - assert(i); - - if (!i->documentation) { -@@ -1078,7 +1074,6 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m - - if (FLAGS_SET(flags, BUS_PRINT_PROPERTY_SHOW_EMPTY) || allow_list || !strv_isempty(l)) { - bool first = true; -- char **i; - - if (!FLAGS_SET(flags, BUS_PRINT_PROPERTY_ONLY_VALUE)) { - fputs(name, stdout); -@@ -1970,7 +1965,6 @@ static int show_one( - .io_read_bytes = UINT64_MAX, - .io_write_bytes = UINT64_MAX, - }; -- char **pp; - int r; - - assert(path); -@@ -2194,7 +2188,6 @@ int show(int argc, char *argv[], void *userdata) { - ret = show_all(bus, &new_line, &ellipsized); - } else { - _cleanup_free_ char **patterns = NULL; -- char **name; - - STRV_FOREACH(name, strv_skip(argv, 1)) { - _cleanup_free_ char *path = NULL, *unit = NULL; -diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c -index 274b278d2d..b45495d51d 100644 ---- a/src/systemctl/systemctl-start-unit.c -+++ b/src/systemctl/systemctl-start-unit.c -@@ -199,16 +199,13 @@ static int enqueue_marked_jobs( - if (r < 0) - return bus_log_parse_error(r); - -- if (w) { -- char **path; -- -+ if (w) - STRV_FOREACH(path, paths) { - log_debug("Adding %s to the set", *path); - r = bus_wait_for_jobs_add(w, *path); - if (r < 0) - return log_error_errno(r, "Failed to watch job %s: %m", *path); - } -- } - - return 0; - } -@@ -269,7 +266,6 @@ int start_unit(int argc, char *argv[], void *userdata) { - _cleanup_strv_free_ char **names = NULL; - int r, ret = EXIT_SUCCESS; - sd_bus *bus; -- char **name; - - if (arg_wait && !STR_IN_SET(argv[0], "start", "restart")) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), -diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c -index ae02af280e..db40154943 100644 ---- a/src/systemctl/systemctl-util.c -+++ b/src/systemctl/systemctl-util.c -@@ -234,7 +234,6 @@ int get_unit_list( - - int expand_unit_names(sd_bus *bus, char **names, const char* suffix, char ***ret, bool *ret_expanded) { - _cleanup_strv_free_ char **mangled = NULL, **globs = NULL; -- char **name; - int r; - - assert(bus); -@@ -294,7 +293,6 @@ int check_triggering_units(sd_bus *bus, const char *unit) { - _cleanup_strv_free_ char **triggered_by = NULL; - bool print_warning_label = true; - UnitActiveState active_state; -- char **i; - int r; - - r = unit_name_mangle(unit, 0, &n); -@@ -386,8 +384,6 @@ void warn_unit_file_changed(const char *unit) { - } - - int unit_file_find_path(LookupPaths *lp, const char *unit_name, char **ret_unit_path) { -- char **p; -- - assert(lp); - assert(unit_name); - -@@ -666,7 +662,6 @@ int unit_exists(LookupPaths *lp, const char *unit) { - - int append_unit_dependencies(sd_bus *bus, char **names, char ***ret) { - _cleanup_strv_free_ char **with_deps = NULL; -- char **name; - - assert(bus); - assert(ret); -@@ -860,7 +855,7 @@ UnitFileFlags unit_file_flags_from_args(void) { - - int mangle_names(const char *operation, char **original_names, char ***ret_mangled_names) { - _cleanup_strv_free_ char **l = NULL; -- char **i, **name; -+ char **i; - int r; - - assert(ret_mangled_names); -diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c -index 07a65a2ebc..6a2ca1afbb 100644 ---- a/src/sysusers/sysusers.c -+++ b/src/sysusers/sysusers.c -@@ -312,7 +312,6 @@ static int putgrent_with_members(const struct group *gr, FILE *group) { - if (a) { - _cleanup_strv_free_ char **l = NULL; - bool added = false; -- char **i; - - l = strv_copy(gr->gr_mem); - if (!l) -@@ -357,7 +356,6 @@ static int putsgent_with_members(const struct sgrp *sg, FILE *gshadow) { - if (a) { - _cleanup_strv_free_ char **l = NULL; - bool added = false; -- char **i; - - l = strv_copy(sg->sg_mem); - if (!l) -@@ -1406,8 +1404,6 @@ static int add_implicit(void) { - - /* Implicitly create additional users and groups, if they were listed in "m" lines */ - ORDERED_HASHMAP_FOREACH_KEY(l, g, members) { -- char **m; -- - STRV_FOREACH(m, l) - if (!ordered_hashmap_get(users, *m)) { - _cleanup_(item_freep) Item *j = NULL; -@@ -1977,7 +1973,6 @@ static int parse_argv(int argc, char *argv[]) { - } - - static int parse_arguments(char **args) { -- char **arg; - unsigned pos = 1; - int r; - -@@ -1999,7 +1994,6 @@ static int parse_arguments(char **args) { - static int read_config_files(char **args) { - _cleanup_strv_free_ char **files = NULL; - _cleanup_free_ char *p = NULL; -- char **f; - int r; - - r = conf_files_list_with_replacement(arg_root, CONF_PATHS_STRV("sysusers.d"), arg_replace, &files, &p); -diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c -index bb74b486be..428509f4ce 100644 ---- a/src/sysv-generator/sysv-generator.c -+++ b/src/sysv-generator/sysv-generator.c -@@ -103,7 +103,6 @@ static int generate_unit_file(SysvStub *s) { - _cleanup_free_ char *path_escaped = NULL; - _cleanup_fclose_ FILE *f = NULL; - const char *unit; -- char **p; - int r; - - assert(s); -@@ -707,7 +706,6 @@ static int acquire_search_path(const char *def, const char *envvar, char ***ret) - - static int enumerate_sysv(const LookupPaths *lp, Hashmap *all_services) { - _cleanup_strv_free_ char **sysvinit_path = NULL; -- char **path; - int r; - - assert(lp); -@@ -791,7 +789,6 @@ static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_servic - Set *runlevel_services[ELEMENTSOF(rcnd_table)] = {}; - _cleanup_strv_free_ char **sysvrcnd_path = NULL; - SysvStub *service; -- char **p; - int r; - - assert(lp); -diff --git a/src/test/test-bpf-foreign-programs.c b/src/test/test-bpf-foreign-programs.c -index 1765dc7a9b..56933c87bf 100644 ---- a/src/test/test-bpf-foreign-programs.c -+++ b/src/test/test-bpf-foreign-programs.c -@@ -133,8 +133,6 @@ static int bpf_foreign_test_to_string(enum bpf_attach_type attach_type, const ch - } - - static char **unlink_paths_and_free(char **paths) { -- char **i; -- - STRV_FOREACH(i, paths) - (void) unlink(*i); - -diff --git a/src/test/test-bpf-lsm.c b/src/test/test-bpf-lsm.c -index 258c2e575e..4a3b327a3f 100644 ---- a/src/test/test-bpf-lsm.c -+++ b/src/test/test-bpf-lsm.c -@@ -16,7 +16,6 @@ static int test_restrict_filesystems(Manager *m, const char *unit_name, const ch - _cleanup_free_ char *exec_start = NULL; - _cleanup_(unit_freep) Unit *u = NULL; - ExecContext *ec = NULL; -- char **allow_filesystem; - int cld_code, r; - - assert_se(u = unit_new(m, sizeof(Service))); -diff --git a/src/test/test-copy.c b/src/test/test-copy.c -index c7ed054207..01c6638dcf 100644 ---- a/src/test/test-copy.c -+++ b/src/test/test-copy.c -@@ -83,7 +83,6 @@ TEST(copy_tree) { - char **hardlinks = STRV_MAKE("hlink", "file", - "hlink2", "dir1/file"); - const char *unixsockp; -- char **p, **ll; - struct stat st; - int xattr_worked = -1; /* xattr support is optional in temporary directories, hence use it if we can, - * but don't fail if we can't */ -diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c -index 19523aa0d9..4d5f39b5b7 100644 ---- a/src/test/test-env-util.c -+++ b/src/test/test-env-util.c -@@ -412,7 +412,6 @@ TEST(unsetenv_erase) { - r = safe_fork("(sd-unsetenverase)", FORK_DEATHSIG|FORK_LOG|FORK_WAIT, NULL); - if (r == 0) { - _cleanup_strv_free_ char **l = NULL; -- char **e; - - /* child */ - -diff --git a/src/test/test-exec-util.c b/src/test/test-exec-util.c -index 47a82eb969..d6ee16b1fe 100644 ---- a/src/test/test-exec-util.c -+++ b/src/test/test-exec-util.c -@@ -217,7 +217,7 @@ static int gather_stdout_one(int fd, void *arg) { - return 0; - } - static int gather_stdout_two(int fd, void *arg) { -- char ***s = arg, **t; -+ char ***s = arg; - - STRV_FOREACH(t, *s) - assert_se(write(fd, *t, strlen(*t)) == (ssize_t) strlen(*t)); -@@ -287,7 +287,7 @@ TEST(stdout_gathering) { - } - - TEST(environment_gathering) { -- char template[] = "/tmp/test-exec-util.XXXXXXX", **p; -+ char template[] = "/tmp/test-exec-util.XXXXXXX"; - const char *dirs[] = {template, NULL}; - const char *name, *name2, *name3, *old; - int r; -diff --git a/src/test/test-execute.c b/src/test/test-execute.c -index 0760df6603..3b4b02184c 100644 ---- a/src/test/test-execute.c -+++ b/src/test/test-execute.c -@@ -606,7 +606,6 @@ static int find_libraries(const char *exec, char ***ret) { - _cleanup_strv_free_ char **v = NULL; - assert_se(strv_split_newlines_full(&v, result, 0) >= 0); - -- char **q; - STRV_FOREACH(q, v) { - _cleanup_free_ char *word = NULL; - const char *p = *q; -@@ -674,7 +673,6 @@ static void test_exec_mount_apivfs(Manager *m) { - assert_se(strextend(&data, "BindReadOnlyPaths=", fullpath_touch, "\n")); - assert_se(strextend(&data, "BindReadOnlyPaths=", fullpath_test, "\n")); - -- char **p; - STRV_FOREACH(p, libraries) - assert_se(strextend(&data, "BindReadOnlyPaths=", *p, "\n")); - -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 238ae8f586..3e98d94019 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -35,7 +35,6 @@ TEST(parse_env_file) { - *six = NULL, *seven = NULL, *eight = NULL, *nine = NULL, *ten = NULL, - *eleven = NULL, *twelve = NULL, *thirteen = NULL; - _cleanup_strv_free_ char **a = NULL, **b = NULL; -- char **i; - unsigned k; - int r; - -@@ -171,7 +170,6 @@ TEST(parse_multiline_env_file) { - p[] = "/tmp/test-fileio-out-XXXXXX"; - FILE *f; - _cleanup_strv_free_ char **a = NULL, **b = NULL; -- char **i; - int r; - - assert_se(fmkostemp_safe(t, "w", &f) == 0); -@@ -221,7 +219,6 @@ TEST(merge_env_file) { - _cleanup_(unlink_tempfilep) char t[] = "/tmp/test-fileio-XXXXXX"; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **a = NULL; -- char **i; - int r; - - assert_se(fmkostemp_safe(t, "w", &f) == 0); -@@ -285,7 +282,6 @@ TEST(merge_env_file_invalid) { - _cleanup_(unlink_tempfilep) char t[] = "/tmp/test-fileio-XXXXXX"; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **a = NULL; -- char **i; - int r; - - assert_se(fmkostemp_safe(t, "w", &f) == 0); -@@ -486,7 +482,6 @@ TEST(load_env_file_pairs) { - int fd, r; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_strv_free_ char **l = NULL; -- char **k, **v; - - fd = mkostemp_safe(fn); - assert_se(fd >= 0); -diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c -index f53a3ebf59..67b6996907 100644 ---- a/src/test/test-fs-util.c -+++ b/src/test/test-fs-util.c -@@ -692,7 +692,6 @@ TEST(rename_noreplace) { - - _cleanup_(rm_rf_physical_and_freep) char *z = NULL; - const char *j = NULL; -- char **a, **b; - - if (arg_test_dir) - j = strjoina(arg_test_dir, "/testXXXXXX"); -diff --git a/src/test/test-kbd-util.c b/src/test/test-kbd-util.c -index f15cff4794..0a166c6e1f 100644 ---- a/src/test/test-kbd-util.c -+++ b/src/test/test-kbd-util.c -@@ -7,7 +7,6 @@ - - int main(int argc, char *argv[]) { - _cleanup_strv_free_ char **maps = NULL; -- char **m; - int r; - - log_show_color(true); -diff --git a/src/test/test-locale-util.c b/src/test/test-locale-util.c -index 55f86f7c2f..3243e3c567 100644 ---- a/src/test/test-locale-util.c -+++ b/src/test/test-locale-util.c -@@ -10,7 +10,6 @@ - - TEST(get_locales) { - _cleanup_strv_free_ char **locales = NULL; -- char **p; - int r; - - r = get_locales(&locales); -@@ -58,7 +57,6 @@ TEST(locale_is_installed) { - - TEST(keymaps) { - _cleanup_strv_free_ char **kmaps = NULL; -- char **p; - int r; - - assert_se(!keymap_is_valid("")); -diff --git a/src/test/test-nss-hosts.c b/src/test/test-nss-hosts.c -index eac2c74f4c..70dbb30ed4 100644 ---- a/src/test/test-nss-hosts.c -+++ b/src/test/test-nss-hosts.c -@@ -67,8 +67,6 @@ static int print_gaih_addrtuples(const struct gaih_addrtuple *tuples) { - } - - static void print_struct_hostent(struct hostent *host, const char *canon) { -- char **s; -- - log_info(" \"%s\"", host->h_name); - STRV_FOREACH(s, host->h_aliases) - log_info(" alias \"%s\"", *s); -@@ -376,7 +374,6 @@ static int test_one_module(const char *dir, - if (!handle) - return -EINVAL; - -- char **name; - STRV_FOREACH(name, names) - test_byname(handle, module, *name); - -@@ -424,7 +421,6 @@ static int parse_argv(int argc, char **argv, - assert_se(modules); - - if (argc > 2) { -- char **name; - int family; - union in_addr_union address; - -@@ -463,7 +459,6 @@ static int run(int argc, char **argv) { - _cleanup_strv_free_ char **modules = NULL, **names = NULL; - _cleanup_free_ struct local_address *addresses = NULL; - int n_addresses = 0; -- char **module; - int r; - - test_setup_logging(LOG_INFO); -diff --git a/src/test/test-nss-users.c b/src/test/test-nss-users.c -index c415c0ca3b..70c5f25e08 100644 ---- a/src/test/test-nss-users.c -+++ b/src/test/test-nss-users.c -@@ -170,7 +170,6 @@ static int test_one_module(const char *dir, - if (!handle) - return -EINVAL; - -- char **name; - STRV_FOREACH(name, names) - test_byname(handle, module, *name); - -@@ -235,7 +234,6 @@ static int parse_argv(int argc, char **argv, - static int run(int argc, char **argv) { - _cleanup_free_ char *dir = NULL; - _cleanup_strv_free_ char **modules = NULL, **names = NULL; -- char **module; - int r; - - test_setup_logging(LOG_INFO); -diff --git a/src/test/test-path-lookup.c b/src/test/test-path-lookup.c -index a19a33c64b..2c30260f7b 100644 ---- a/src/test/test-path-lookup.c -+++ b/src/test/test-path-lookup.c -@@ -43,7 +43,7 @@ TEST(paths) { - - TEST(user_and_global_paths) { - _cleanup_(lookup_paths_free) LookupPaths lp_global = {}, lp_user = {}; -- char **u, **g, **p; -+ char **u, **g; - unsigned k = 0; - - assert_se(unsetenv("SYSTEMD_UNIT_PATH") == 0); -@@ -81,7 +81,6 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { - _cleanup_strv_free_ char **env_gp_with_env = NULL; - char *systemd_generator_path = NULL; - char *systemd_env_generator_path = NULL; -- char **dir; - - assert_se(mkdtemp(template)); - -diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c -index b9c4ef4126..d40febef5f 100644 ---- a/src/test/test-path-util.c -+++ b/src/test/test-path-util.c -@@ -481,7 +481,6 @@ TEST(path_strv_resolve) { - char tmp_dir[] = "/tmp/test-path-util-XXXXXX"; - _cleanup_strv_free_ char **search_dirs = NULL; - _cleanup_strv_free_ char **absolute_dirs = NULL; -- char **d; - - assert_se(mkdtemp(tmp_dir) != NULL); - -diff --git a/src/test/test-path.c b/src/test/test-path.c -index 529487d1ad..2690dc0aa4 100644 ---- a/src/test/test-path.c -+++ b/src/test/test-path.c -@@ -24,7 +24,6 @@ typedef void (*test_function_t)(Manager *m); - static int setup_test(Manager **m) { - char **tests_path = STRV_MAKE("exists", "existsglobFOOBAR", "changed", "modified", "unit", - "directorynotempty", "makedirectory"); -- char **test_path; - Manager *tmp = NULL; - int r; - -diff --git a/src/test/test-sd-path.c b/src/test/test-sd-path.c -index 10a8a4a63f..4f23e3bb69 100644 ---- a/src/test/test-sd-path.c -+++ b/src/test/test-sd-path.c -@@ -32,7 +32,6 @@ TEST(sd_path_lookup) { - TEST(sd_path_lookup_strv) { - for (uint64_t i = 0; i < _SD_PATH_MAX; i++) { - _cleanup_strv_free_ char **t = NULL, **s = NULL; -- char **item; - int r; - - r = sd_path_lookup_strv(i, NULL, &t); -diff --git a/src/test/test-socket-bind.c b/src/test/test-socket-bind.c -index ecad86baeb..c5c5477f69 100644 ---- a/src/test/test-socket-bind.c -+++ b/src/test/test-socket-bind.c -@@ -13,7 +13,7 @@ - #include "virt.h" - - static int find_netcat_executable(char **ret_path) { -- char **candidates = STRV_MAKE("ncat", "nc", "netcat"), **c; -+ char **candidates = STRV_MAKE("ncat", "nc", "netcat"); - int r = 0; - - STRV_FOREACH(c, candidates) { -@@ -36,7 +36,6 @@ static int test_socket_bind( - _cleanup_(unit_freep) Unit *u = NULL; - CGroupSocketBindItem *bi; - CGroupContext *cc = NULL; -- char **rule; - int cld_code, r; - - assert_se(u = unit_new(m, sizeof(Service))); -diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c -index 071b391361..93b674baab 100644 ---- a/src/test/test-string-util.c -+++ b/src/test/test-string-util.c -@@ -865,7 +865,6 @@ TEST(strverscmp_improved) { - "124", - NULL, - }; -- const char * const *p, * const *q; - - STRV_FOREACH(p, versions) - STRV_FOREACH(q, p + 1) -diff --git a/src/test/test-strv.c b/src/test/test-strv.c -index 0ece342521..e6aa2e793e 100644 ---- a/src/test/test-strv.c -+++ b/src/test/test-strv.c -@@ -204,7 +204,6 @@ static void test_strv_unquote_one(const char *quoted, char **list) { - _cleanup_strv_free_ char **s; - _cleanup_free_ char *j; - unsigned i = 0; -- char **t; - int r; - - log_info("/* %s */", __func__); -@@ -446,7 +445,6 @@ TEST(strv_split_colon_pairs) { - - TEST(strv_split_newlines) { - unsigned i = 0; -- char **s; - _cleanup_strv_free_ char **l = NULL; - const char str[] = "one\ntwo\nthree"; - -@@ -619,7 +617,6 @@ TEST(strv_extendf) { - TEST(strv_foreach) { - _cleanup_strv_free_ char **a; - unsigned i = 0; -- char **check; - - a = strv_new("one", "two", "three"); - assert_se(a); -@@ -631,7 +628,6 @@ TEST(strv_foreach) { - TEST(strv_foreach_backwards) { - _cleanup_strv_free_ char **a; - unsigned i = 2; -- char **check; - - a = strv_new("one", "two", "three"); - -@@ -649,7 +645,6 @@ TEST(strv_foreach_backwards) { - - TEST(strv_foreach_pair) { - _cleanup_strv_free_ char **a = NULL; -- char **x, **y; - - a = strv_new("pair_one", "pair_one", - "pair_two", "pair_two", -diff --git a/src/test/test-sysctl-util.c b/src/test/test-sysctl-util.c -index 8bd3c26152..02180dc4be 100644 ---- a/src/test/test-sysctl-util.c -+++ b/src/test/test-sysctl-util.c -@@ -27,7 +27,6 @@ static const char* const cases[] = { - }; - - TEST(sysctl_normalize) { -- const char **s, **expected; - STRV_FOREACH_PAIR(s, expected, (const char**) cases) { - _cleanup_free_ char *t; - -diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c -index 799d271a44..15f4a0c169 100644 ---- a/src/test/test-time-util.c -+++ b/src/test/test-time-util.c -@@ -258,7 +258,6 @@ TEST(timezone_is_valid) { - TEST(get_timezones) { - _cleanup_strv_free_ char **zones = NULL; - int r; -- char **zone; - - r = get_timezones(&zones); - assert_se(r == 0); -diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c -index 8ed56ad3b8..261bd7412f 100644 ---- a/src/test/test-unit-file.c -+++ b/src/test/test-unit-file.c -@@ -55,7 +55,6 @@ TEST(unit_file_build_name_map) { - if (r == 0) - log_debug("Cache rebuild skipped based on mtime."); - -- char **id; - STRV_FOREACH(id, ids) { - const char *fragment, *name; - _cleanup_set_free_free_ Set *names = NULL; -diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c -index 66b454269d..874ff773e1 100644 ---- a/src/timedate/timedated.c -+++ b/src/timedate/timedated.c -@@ -190,7 +190,6 @@ static int context_parse_ntp_services_from_environment(Context *c) { - - static int context_parse_ntp_services_from_disk(Context *c) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - r = conf_files_list_strv(&files, ".list", NULL, CONF_FILES_FILTER_MASKED, UNIT_LIST_DIRS); -diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c -index 918da195d8..67f9a33993 100644 ---- a/src/timesync/timesyncd-manager.c -+++ b/src/timesync/timesyncd-manager.c -@@ -961,7 +961,6 @@ Manager* manager_free(Manager *m) { - static int manager_network_read_link_servers(Manager *m) { - _cleanup_strv_free_ char **ntp = NULL; - ServerName *n, *nx; -- char **i; - bool changed = false; - int r; - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index aa7ff73a36..17b9c6ab9a 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -1019,8 +1019,6 @@ static int parse_xattrs_from_arg(Item *i) { - } - - static int fd_set_xattrs(Item *i, int fd, const char *path, const struct stat *st) { -- char **name, **value; -- - assert(i); - assert(fd >= 0); - assert(path); -@@ -1939,7 +1937,6 @@ static int glob_item(Item *i, action_t action) { - .gl_opendir = (void *(*)(const char *)) opendir_nomod, - }; - int r = 0, k; -- char **fn; - - k = safe_glob(i->path, GLOB_NOSORT|GLOB_BRACE, &g); - if (k < 0 && k != -ENOENT) -@@ -1959,7 +1956,6 @@ static int glob_item_recursively(Item *i, fdaction_t action) { - .gl_opendir = (void *(*)(const char *)) opendir_nomod, - }; - int r = 0, k; -- char **fn; - - k = safe_glob(i->path, GLOB_NOSORT|GLOB_BRACE, &g); - if (k < 0 && k != -ENOENT) -@@ -2695,8 +2691,6 @@ static bool item_compatible(Item *a, Item *b) { - } - - static bool should_include_path(const char *path) { -- char **prefix; -- - STRV_FOREACH(prefix, arg_exclude_prefixes) - if (path_startswith(path, *prefix)) { - log_debug("Entry \"%s\" matches exclude prefix \"%s\", skipping.", -@@ -2746,8 +2740,7 @@ static int specifier_expansion_from_arg(const Specifier *specifier_table, Item * - return free_and_replace(i->argument, resolved); - } - case SET_XATTR: -- case RECURSIVE_SET_XATTR: { -- char **xattr; -+ case RECURSIVE_SET_XATTR: - STRV_FOREACH(xattr, i->xattrs) { - _cleanup_free_ char *resolved = NULL; - -@@ -2758,7 +2751,7 @@ static int specifier_expansion_from_arg(const Specifier *specifier_table, Item * - free_and_replace(*xattr, resolved); - } - return 0; -- } -+ - default: - return 0; - } -@@ -3611,7 +3604,6 @@ static int read_config_file(char **config_dirs, const char *fn, bool ignore_enoe - } - - static int parse_arguments(char **config_dirs, char **args, bool *invalid_config) { -- char **arg; - int r; - - STRV_FOREACH(arg, args) { -@@ -3626,7 +3618,6 @@ static int parse_arguments(char **config_dirs, char **args, bool *invalid_config - static int read_config_files(char **config_dirs, char **args, bool *invalid_config) { - _cleanup_strv_free_ char **files = NULL; - _cleanup_free_ char *p = NULL; -- char **f; - int r; - - r = conf_files_list_with_replacement(arg_root, config_dirs, arg_replace, &files, &p); -@@ -3733,7 +3724,6 @@ static int run(int argc, char *argv[]) { - - if (DEBUG_LOGGING) { - _cleanup_free_ char *t = NULL; -- char **i; - - STRV_FOREACH(i, config_dirs) { - _cleanup_free_ char *j = NULL; -diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c -index 54a03af082..15a1faedce 100644 ---- a/src/tty-ask-password-agent/tty-ask-password-agent.c -+++ b/src/tty-ask-password-agent/tty-ask-password-agent.c -@@ -59,7 +59,7 @@ static int send_passwords(const char *socket_name, char **passwords) { - union sockaddr_union sa; - socklen_t sa_len; - size_t packet_length = 1; -- char **p, *d; -+ char *d; - ssize_t n; - int r; - -@@ -554,8 +554,6 @@ static int ask_on_this_console(const char *tty, pid_t *ret_pid, char **arguments - if (r < 0) - return r; - if (r == 0) { -- char **i; -- - assert_se(prctl(PR_SET_PDEATHSIG, SIGHUP) >= 0); - - STRV_FOREACH(i, arguments) { -@@ -635,7 +633,6 @@ static int ask_on_consoles(char *argv[]) { - _cleanup_set_free_ Set *pids = NULL; - _cleanup_strv_free_ char **consoles = NULL, **arguments = NULL; - siginfo_t status = {}; -- char **tty; - pid_t pid; - int r; - -diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c -index 05f0f2e0a6..1ac89496c9 100644 ---- a/src/udev/net/link-config.c -+++ b/src/udev/net/link-config.c -@@ -315,7 +315,6 @@ static int device_unsigned_attribute(sd_device *device, const char *attr, unsign - - int link_config_load(LinkConfigContext *ctx) { - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - link_configs_free(ctx); -@@ -816,7 +815,6 @@ static int link_apply_alternative_names(Link *link, sd_netlink **rtnl) { - if (r < 0) - log_link_debug_errno(link, r, "Failed to get alternative names, ignoring: %m"); - -- char **p; - STRV_FOREACH(p, current_altnames) - strv_remove(altnames, *p); - -diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c -index a60e4f294c..e3065ee923 100644 ---- a/src/udev/udev-event.c -+++ b/src/udev/udev-event.c -@@ -573,7 +573,6 @@ static int on_spawn_io(sd_event_source *s, int fd, uint32_t revents, void *userd - /* Log output only if we watch stderr. */ - if (l > 0 && spawn->fd_stderr >= 0) { - _cleanup_strv_free_ char **v = NULL; -- char **q; - - r = strv_split_newlines_full(&v, p, EXTRACT_RETAIN_ESCAPE); - if (r < 0) -diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c -index 243a792662..29b6ae3961 100644 ---- a/src/udev/udev-rules.c -+++ b/src/udev/udev-rules.c -@@ -1348,7 +1348,6 @@ UdevRules* udev_rules_new(ResolveNameTiming resolve_name_timing) { - int udev_rules_load(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing) { - _cleanup_(udev_rules_freep) UdevRules *rules = NULL; - _cleanup_strv_free_ char **files = NULL; -- char **f; - int r; - - rules = udev_rules_new(resolve_name_timing); -@@ -1823,7 +1822,7 @@ static int udev_rule_apply_token_to_event( - } - case TK_M_IMPORT_PROGRAM: { - _cleanup_strv_free_ char **lines = NULL; -- char buf[UDEV_PATH_SIZE], result[UDEV_LINE_SIZE], **line; -+ char buf[UDEV_PATH_SIZE], result[UDEV_LINE_SIZE]; - - (void) udev_event_apply_format(event, token->value, buf, sizeof(buf), false); - log_rule_debug(dev, rules, "Importing properties from results of '%s'", buf); -@@ -2422,7 +2421,6 @@ static int apply_static_dev_perms(const char *devnode, uid_t uid, gid_t gid, mod - char device_node[UDEV_PATH_SIZE], tags_dir[UDEV_PATH_SIZE], tag_symlink[UDEV_PATH_SIZE]; - _cleanup_free_ char *unescaped_filename = NULL; - struct stat stats; -- char **t; - int r; - - assert(devnode); -diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c -index 740434bb41..b985961c62 100644 ---- a/src/udev/udevadm-info.c -+++ b/src/udev/udevadm-info.c -@@ -522,7 +522,6 @@ int info_main(int argc, char *argv[], void *userdata) { - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "-x/--export or -P/--export-prefix cannot be used with --value"); - -- char **p; - STRV_FOREACH(p, devices) { - _cleanup_(sd_device_unrefp) sd_device *device = NULL; - -diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c -index c2acd85742..85aa6c752c 100644 ---- a/src/userdb/userdbctl.c -+++ b/src/userdb/userdbctl.c -@@ -119,9 +119,7 @@ static int display_user(int argc, char *argv[], void *userdata) { - (void) table_set_display(table, (size_t) 0, (size_t) 1, (size_t) 2, (size_t) 3, (size_t) 4, (size_t) 5, (size_t) 6); - } - -- if (argc > 1) { -- char **i; -- -+ if (argc > 1) - STRV_FOREACH(i, argv + 1) { - _cleanup_(user_record_unrefp) UserRecord *ur = NULL; - uid_t uid; -@@ -151,7 +149,7 @@ static int display_user(int argc, char *argv[], void *userdata) { - draw_separator = true; - } - } -- } else { -+ else { - _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL; - - r = userdb_all(arg_userdb_flags, &iterator); -@@ -283,9 +281,7 @@ static int display_group(int argc, char *argv[], void *userdata) { - (void) table_set_display(table, (size_t) 0, (size_t) 1, (size_t) 2, (size_t) 3); - } - -- if (argc > 1) { -- char **i; -- -+ if (argc > 1) - STRV_FOREACH(i, argv + 1) { - _cleanup_(group_record_unrefp) GroupRecord *gr = NULL; - gid_t gid; -@@ -315,8 +311,7 @@ static int display_group(int argc, char *argv[], void *userdata) { - draw_separator = true; - } - } -- -- } else { -+ else { - _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL; - - r = groupdb_all(arg_userdb_flags, &iterator); -@@ -435,9 +430,7 @@ static int display_memberships(int argc, char *argv[], void *userdata) { - (void) table_set_sort(table, (size_t) 0, (size_t) 1); - } - -- if (argc > 1) { -- char **i; -- -+ if (argc > 1) - STRV_FOREACH(i, argv + 1) { - _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL; - -@@ -468,7 +461,7 @@ static int display_memberships(int argc, char *argv[], void *userdata) { - return r; - } - } -- } else { -+ else { - _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL; - - r = membershipdb_all(arg_userdb_flags, &iterator); -@@ -630,12 +623,9 @@ static int ssh_authorized_keys(int argc, char *argv[], void *userdata) { - else { - if (strv_isempty(ur->ssh_authorized_keys)) - log_debug("User record for %s has no public SSH keys.", argv[1]); -- else { -- char **i; -- -+ else - STRV_FOREACH(i, ur->ssh_authorized_keys) - printf("%s\n", *i); -- } - - if (ur->incomplete) { - fflush(stdout); -diff --git a/src/xdg-autostart-generator/xdg-autostart-condition.c b/src/xdg-autostart-generator/xdg-autostart-condition.c -index c4485cf625..9ceea61547 100644 ---- a/src/xdg-autostart-generator/xdg-autostart-condition.c -+++ b/src/xdg-autostart-generator/xdg-autostart-condition.c -@@ -13,7 +13,6 @@ - static int run(int argc, char *argv[]) { - _cleanup_strv_free_ char **only_show_in = NULL, **not_show_in = NULL, **desktops = NULL; - const char *xdg_current_desktop; -- char **d; - - if (argc != 3) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), -diff --git a/src/xdg-autostart-generator/xdg-autostart-generator.c b/src/xdg-autostart-generator/xdg-autostart-generator.c -index c5c6b54fdc..39ab81c1f2 100644 ---- a/src/xdg-autostart-generator/xdg-autostart-generator.c -+++ b/src/xdg-autostart-generator/xdg-autostart-generator.c -@@ -24,7 +24,6 @@ static int enumerate_xdg_autostart(Hashmap *all_services) { - _cleanup_strv_free_ char **config_dirs = NULL; - _unused_ _cleanup_strv_free_ char **data_dirs = NULL; - _cleanup_free_ char *user_config_autostart_dir = NULL; -- char **path; - int r; - - r = xdg_user_config_dir(&user_config_autostart_dir, "/autostart"); diff --git a/SOURCES/0182-test-add-a-testcase-for-lvextend.patch b/SOURCES/0182-test-add-a-testcase-for-lvextend.patch new file mode 100644 index 0000000..a92d0e9 --- /dev/null +++ b/SOURCES/0182-test-add-a-testcase-for-lvextend.patch @@ -0,0 +1,45 @@ +From 0894f502ad5a89a98a0a88ee739c0c5f516338c2 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Wed, 1 Feb 2023 21:25:40 +0900 +Subject: [PATCH] test: add a testcase for lvextend + +For RHBZ#2158628 (https://bugzilla.redhat.com/show_bug.cgi?id=2158628) + +(cherry picked from commit d60e3482613d26e559fc4dc5a56b8edaa765a318) + +Related: #2138081 +--- + test/units/testsuite-64.sh | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh +index c572671c20..4017f61f59 100755 +--- a/test/units/testsuite-64.sh ++++ b/test/units/testsuite-64.sh +@@ -425,6 +425,26 @@ testcase_lvm_basic() { + helper_check_device_symlinks "/dev/disk" "/dev/$vgroup" + helper_check_device_units + ++ # Mount mypart1 through by-label devlink ++ mkdir -p /tmp/mypart1-mount-point ++ mount /dev/disk/by-label/mylvpart1 /tmp/mypart1-mount-point ++ timeout 30 bash -c "while ! systemctl -q is-active /tmp/mypart1-mount-point; do sleep .2; done" ++ # Extend the partition and check if the device and mount units are still active. ++ # See https://bugzilla.redhat.com/show_bug.cgi?id=2158628 ++ # Note, the test below may be unstable with LVM2 without the following patch: ++ # https://github.com/lvmteam/lvm2/pull/105 ++ # But, to reproduce the issue, udevd must start to process the first 'change' uevent ++ # earlier than extending the volume has been finished, and in most case, the extension ++ # is hopefully fast. ++ lvm lvextend -y --size 8M "/dev/$vgroup/mypart1" ++ udevadm wait --settle --timeout="$timeout" "/dev/disk/by-label/mylvpart1" ++ timeout 30 bash -c "while ! systemctl -q is-active '/dev/$vgroup/mypart1'; do sleep .2; done" ++ timeout 30 bash -c "while ! systemctl -q is-active /tmp/mypart1-mount-point; do sleep .2; done" ++ # Umount the partition, otherwise the underlying device unit will stay in ++ # the inactive state and not be collected, and helper_check_device_units() will fail. ++ systemctl show /tmp/mypart1-mount-point ++ umount /tmp/mypart1-mount-point ++ + # Rename partitions (see issue #24518) + lvm lvrename "/dev/$vgroup/mypart1" renamed1 + lvm lvrename "/dev/$vgroup/mypart2" renamed2 diff --git a/SOURCES/0183-core-ExecContext-restrict_filesystems-is-set-of-stri.patch b/SOURCES/0183-core-ExecContext-restrict_filesystems-is-set-of-stri.patch deleted file mode 100644 index a36deb0..0000000 --- a/SOURCES/0183-core-ExecContext-restrict_filesystems-is-set-of-stri.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 607c82526a5085885f4af96f1979572c72c300a4 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Thu, 17 Mar 2022 03:42:41 +0900 -Subject: [PATCH] core: ExecContext::restrict_filesystems is set of string - -(cherry picked from commit 8fe84dc8de60ae8995e53e4d47b44c61626c0526) - -Related: #2082131 ---- - src/core/execute.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/core/execute.c b/src/core/execute.c -index 306e563e4f..34b0478ead 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -5916,9 +5916,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { - - #if HAVE_LIBBPF - if (exec_context_restrict_filesystems_set(c)) { -- char **e; -- SET_FOREACH(e, c->restrict_filesystems) -- fprintf(f, "%sRestrictFileSystems: %s\n", prefix, *e); -+ char *fs; -+ SET_FOREACH(fs, c->restrict_filesystems) -+ fprintf(f, "%sRestrictFileSystems: %s\n", prefix, fs); - } - #endif - diff --git a/SOURCES/0183-pid1-fix-segv-triggered-by-status-query-26279.patch b/SOURCES/0183-pid1-fix-segv-triggered-by-status-query-26279.patch new file mode 100644 index 0000000..3396665 --- /dev/null +++ b/SOURCES/0183-pid1-fix-segv-triggered-by-status-query-26279.patch @@ -0,0 +1,36 @@ +From ba575dced76ed7420c8eaa77942e31b134927524 Mon Sep 17 00:00:00 2001 +From: Robin Humble +Date: Wed, 1 Feb 2023 23:36:48 +1100 +Subject: [PATCH] pid1: fix segv triggered by status query (#26279) + +If any query makes it to the end of install_info_follow() then I think symlink_target is set to NULL. +If that is followed by -EXDEV from unit_file_load_or_readlink(), then that causes basename(NULL) +which segfaults pid 1. + +This is triggered by eg. "systemctl status crond" in RHEL9 if + +/etc/systemd/system/crond.service + -> /ram/etc/systemd/system/crond.service + -> /usr/lib/systemd/system/.crond.service.blah.blah + -> /usr/lib/systemd/system/crond.service + +(cherry picked from commit 19cfda9fc3c60de21a362ebb56bcb9f4a9855e85) + +Related: #2138081 +--- + src/shared/install.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/install.c b/src/shared/install.c +index 4b610b20a5..a760726628 100644 +--- a/src/shared/install.c ++++ b/src/shared/install.c +@@ -1653,7 +1653,7 @@ static int install_info_traverse( + r = install_info_follow(ctx, i, lp, flags, + /* If linked, don't look at the target name */ + /* ignore_different_name= */ i->install_mode == INSTALL_MODE_LINKED); +- if (r == -EXDEV) { ++ if (r == -EXDEV && i->symlink_target) { + _cleanup_free_ char *buffer = NULL; + const char *bn; + diff --git a/SOURCES/0184-install-when-linking-a-file-create-the-link-first-or.patch b/SOURCES/0184-install-when-linking-a-file-create-the-link-first-or.patch deleted file mode 100644 index 6b88602..0000000 --- a/SOURCES/0184-install-when-linking-a-file-create-the-link-first-or.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 9b655d805e78a314a24b8493c6c116a4d943beb9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 11 Mar 2022 14:27:46 +0100 -Subject: [PATCH] install: when linking a file, create the link first or abort - -We'd create aliases and other symlinks first, and only then try to create -the main link. Since that can fail, let's do things in opposite order, and -abort immediately if we can't link the file itself. - -(cherry picked from commit 20d68b3aec62110351bdc695fd1a55adcf3a6ee5) - -Related: #2082131 ---- - src/shared/install.c | 12 +++++++----- - test/test-systemctl-enable.sh | 9 +++------ - 2 files changed, 10 insertions(+), 11 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 785ef55dbd..fadd2be248 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1985,6 +1985,13 @@ static int install_info_apply( - - bool force = file_flags & UNIT_FILE_FORCE; - -+ r = install_info_symlink_link(info, lp, config_path, force, changes, n_changes); -+ /* Do not count links to the unit file towards the "carries_install_info" count */ -+ if (r < 0) -+ /* If linking of the file failed, do not try to create other symlinks, -+ * because they might would pointing to a non-existent or wrong unit. */ -+ return r; -+ - r = install_info_symlink_alias(scope, info, lp, config_path, force, changes, n_changes); - - q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->wanted_by, ".wants/", changes, n_changes); -@@ -1995,11 +2002,6 @@ static int install_info_apply( - if (r == 0) - r = q; - -- q = install_info_symlink_link(info, lp, config_path, force, changes, n_changes); -- /* Do not count links to the unit file towards the "carries_install_info" count */ -- if (r == 0 && q < 0) -- r = q; -- - return r; - } - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 3aa61222a8..c1fb9626ab 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -173,12 +173,9 @@ islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" - - : -------enable already linked different path----------------- --# FIXME --# "$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } --# test -h "$root/etc/systemd/system/link1.path" --# readlink "$root/etc/systemd/system/link1.path" --# test -h "$root/etc/systemd/system/paths.target.wants/link1.path" --# readlink "$root/etc/systemd/system/paths.target.wants/link1.path" -+"$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" - - : -------enable bad suffix------------------------------------ - cp "$root/link1.path" "$root/subdir/link1.suffix" diff --git a/SOURCES/0184-test-create-config-under-run.patch b/SOURCES/0184-test-create-config-under-run.patch new file mode 100644 index 0000000..863068f --- /dev/null +++ b/SOURCES/0184-test-create-config-under-run.patch @@ -0,0 +1,31 @@ +From e99dcd2e9e9547d84c0bfc1dc4c68f1fe2f56f62 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 10 Nov 2022 15:51:30 +0900 +Subject: [PATCH] test: create config under /run + +(cherry picked from commit e4b3f0dfe91ae0b95f30594c7671be39c0a599b1) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 04a8b6e9cc..53ceced641 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -79,11 +79,13 @@ DNSSEC=allow-downgrade + DNS=10.0.0.1 + EOF + ++mkdir -p /run/systemd/resolved.conf.d + { ++ echo "[Resolve]" + echo "FallbackDNS=" + echo "DNSSEC=allow-downgrade" + echo "DNSOverTLS=opportunistic" +-} >>/etc/systemd/resolved.conf ++} >/run/systemd/resolved.conf.d/test.conf + ln -svf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf + # Override the default NTA list, which turns off DNSSEC validation for (among + # others) the test. domain diff --git a/SOURCES/0185-shared-install-split-unit_file_-disable-enable-so-_r.patch b/SOURCES/0185-shared-install-split-unit_file_-disable-enable-so-_r.patch deleted file mode 100644 index 5b7ca2b..0000000 --- a/SOURCES/0185-shared-install-split-unit_file_-disable-enable-so-_r.patch +++ /dev/null @@ -1,199 +0,0 @@ -From caaea62c2c32e6aedb24288d5f51e6c35187e14c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 14 Mar 2022 12:09:31 +0100 -Subject: [PATCH] shared/install: split unit_file_{disable,enable}() so - _reenable doesn't do setup twice - -It was pretty ugly that we were creating LookupPaths twice. - -(cherry picked from commit ec7eaff3c2abf3048f3fba98bfbe08a0c7c898b0) - -Related: #2082131 ---- - src/shared/install.c | 105 +++++++++++++++++++++++++++++-------------- - 1 file changed, 72 insertions(+), 33 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index fadd2be248..1018e4fbf3 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2596,33 +2596,21 @@ int unit_file_add_dependency( - SEARCH_FOLLOW_CONFIG_SYMLINKS, changes, n_changes); - } - --int unit_file_enable( -+static int do_unit_file_enable( -+ const LookupPaths *lp, - UnitFileScope scope, -- UnitFileFlags file_flags, -- const char *root_dir, -+ UnitFileFlags flags, -+ const char *config_path, - char **files, - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_(lookup_paths_free) LookupPaths lp = {}; - _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -- const char *config_path; - UnitFileInstallInfo *info; - int r; - -- assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -- -- r = lookup_paths_init_or_warn(&lp, scope, 0, root_dir); -- if (r < 0) -- return r; -- -- config_path = config_path_from_flags(&lp, file_flags); -- if (!config_path) -- return -ENXIO; -- - STRV_FOREACH(f, files) { -- r = install_info_discover_and_check(&ctx, &lp, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, -+ r = install_info_discover_and_check(&ctx, lp, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, - &info, changes, n_changes); - if (r < 0) - return r; -@@ -2635,11 +2623,11 @@ int unit_file_enable( - is useful to determine whether the passed files had any - installation data at all. */ - -- return install_context_apply(&ctx, &lp, file_flags, config_path, -+ return install_context_apply(&ctx, lp, flags, config_path, - SEARCH_LOAD, changes, n_changes); - } - --int unit_file_disable( -+int unit_file_enable( - UnitFileScope scope, - UnitFileFlags flags, - const char *root_dir, -@@ -2648,9 +2636,6 @@ int unit_file_disable( - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -- _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; -- const char *config_path; - int r; - - assert(scope >= 0); -@@ -2660,27 +2645,44 @@ int unit_file_disable( - if (r < 0) - return r; - -- config_path = config_path_from_flags(&lp, flags); -+ const char *config_path = config_path_from_flags(&lp, flags); - if (!config_path) - return -ENXIO; - -+ return do_unit_file_enable(&lp, scope, flags, config_path, files, changes, n_changes); -+} -+ -+static int do_unit_file_disable( -+ const LookupPaths *lp, -+ UnitFileScope scope, -+ UnitFileFlags flags, -+ const char *config_path, -+ char **files, -+ UnitFileChange **changes, -+ size_t *n_changes) { -+ -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; -+ int r; -+ - STRV_FOREACH(i, files) { - if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) - return -EINVAL; - -- r = install_info_add(&ctx, *i, NULL, lp.root_dir, /* auxiliary= */ false, NULL); -+ r = install_info_add(&ctx, *i, NULL, lp->root_dir, /* auxiliary= */ false, NULL); - if (r < 0) - return r; - } - -- r = install_context_mark_for_removal(&ctx, &lp, &remove_symlinks_to, config_path, changes, n_changes); -+ r = install_context_mark_for_removal(&ctx, lp, &remove_symlinks_to, config_path, changes, n_changes); - if (r < 0) - return r; - -- return remove_marked_symlinks(remove_symlinks_to, config_path, &lp, flags & UNIT_FILE_DRY_RUN, changes, n_changes); -+ return remove_marked_symlinks(remove_symlinks_to, config_path, lp, flags & UNIT_FILE_DRY_RUN, changes, n_changes); - } - --int unit_file_reenable( -+ -+int unit_file_disable( - UnitFileScope scope, - UnitFileFlags flags, - const char *root_dir, -@@ -2688,23 +2690,60 @@ int unit_file_reenable( - UnitFileChange **changes, - size_t *n_changes) { - -- char **n; -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - int r; -+ -+ assert(scope >= 0); -+ assert(scope < _UNIT_FILE_SCOPE_MAX); -+ -+ r = lookup_paths_init(&lp, scope, 0, root_dir); -+ if (r < 0) -+ return r; -+ -+ const char *config_path = config_path_from_flags(&lp, flags); -+ if (!config_path) -+ return -ENXIO; -+ -+ return do_unit_file_disable(&lp, scope, flags, config_path, files, changes, n_changes); -+} -+ -+int unit_file_reenable( -+ UnitFileScope scope, -+ UnitFileFlags flags, -+ const char *root_dir, -+ char **files, -+ UnitFileChange **changes, -+ size_t *n_changes) { -+ -+ _cleanup_(lookup_paths_free) LookupPaths lp = {}; - size_t l, i; -+ char **names; -+ int r; -+ -+ assert(scope >= 0); -+ assert(scope < _UNIT_FILE_SCOPE_MAX); -+ -+ r = lookup_paths_init(&lp, scope, 0, root_dir); -+ if (r < 0) -+ return r; -+ -+ const char *config_path = config_path_from_flags(&lp, flags); -+ if (!config_path) -+ return -ENXIO; - - /* First, we invoke the disable command with only the basename... */ - l = strv_length(files); -- n = newa(char*, l+1); -+ names = newa(char*, l+1); - for (i = 0; i < l; i++) -- n[i] = basename(files[i]); -- n[i] = NULL; -+ names[i] = basename(files[i]); -+ names[i] = NULL; - -- r = unit_file_disable(scope, flags, root_dir, n, changes, n_changes); -+ r = do_unit_file_disable(&lp, scope, flags, config_path, names, changes, n_changes); - if (r < 0) - return r; - - /* But the enable command with the full name */ -- return unit_file_enable(scope, flags, root_dir, files, changes, n_changes); -+ return do_unit_file_enable(&lp, scope, flags, config_path, files, changes, n_changes); - } - - int unit_file_set_default( diff --git a/SOURCES/0185-test-add-tests-for-mDNS-and-LLMNR-settings.patch b/SOURCES/0185-test-add-tests-for-mDNS-and-LLMNR-settings.patch new file mode 100644 index 0000000..7540f88 --- /dev/null +++ b/SOURCES/0185-test-add-tests-for-mDNS-and-LLMNR-settings.patch @@ -0,0 +1,96 @@ +From 0845d4d0f5a37493d3da68624aba1a576382e961 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 10 Nov 2022 15:52:57 +0900 +Subject: [PATCH] test: add tests for mDNS and LLMNR settings + +(cherry picked from commit b77899af0d75ea59c35ba454d869fa759fe7b3a1) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 73 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 73 insertions(+) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 53ceced641..1a656fcdc1 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -55,6 +55,79 @@ echo nameserver 10.0.3.1 10.0.3.2 | "$RESOLVCONF" -a hoge.inet.ipsec.192.168.35 + echo nameserver 10.0.3.3 10.0.3.4 | "$RESOLVCONF" -a hoge.foo.dhcp + assert_in '10.0.3.1 10.0.3.2' "$(resolvectl dns hoge)" + assert_in '10.0.3.3 10.0.3.4' "$(resolvectl dns hoge.foo)" ++ ++# Tests for mDNS and LLMNR settings ++mkdir -p /run/systemd/resolved.conf.d ++{ ++ echo "[Resolve]" ++ echo "MulticastDNS=yes" ++ echo "LLMNR=yes" ++} >/run/systemd/resolved.conf.d/mdns-llmnr.conf ++systemctl restart systemd-resolved.service ++systemctl service-log-level systemd-resolved.service debug ++# make sure networkd is not running. ++systemctl stop systemd-networkd.service ++# defaults to yes (both the global and per-link settings are yes) ++assert_in 'yes' "$(resolvectl mdns hoge)" ++assert_in 'yes' "$(resolvectl llmnr hoge)" ++# set per-link setting ++resolvectl mdns hoge yes ++resolvectl llmnr hoge yes ++assert_in 'yes' "$(resolvectl mdns hoge)" ++assert_in 'yes' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge resolve ++resolvectl llmnr hoge resolve ++assert_in 'resolve' "$(resolvectl mdns hoge)" ++assert_in 'resolve' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge no ++resolvectl llmnr hoge no ++assert_in 'no' "$(resolvectl mdns hoge)" ++assert_in 'no' "$(resolvectl llmnr hoge)" ++# downgrade global setting to resolve ++{ ++ echo "[Resolve]" ++ echo "MulticastDNS=resolve" ++ echo "LLMNR=resolve" ++} >/run/systemd/resolved.conf.d/mdns-llmnr.conf ++systemctl restart systemd-resolved.service ++systemctl service-log-level systemd-resolved.service debug ++# set per-link setting ++resolvectl mdns hoge yes ++resolvectl llmnr hoge yes ++assert_in 'resolve' "$(resolvectl mdns hoge)" ++assert_in 'resolve' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge resolve ++resolvectl llmnr hoge resolve ++assert_in 'resolve' "$(resolvectl mdns hoge)" ++assert_in 'resolve' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge no ++resolvectl llmnr hoge no ++assert_in 'no' "$(resolvectl mdns hoge)" ++assert_in 'no' "$(resolvectl llmnr hoge)" ++# downgrade global setting to no ++{ ++ echo "[Resolve]" ++ echo "MulticastDNS=no" ++ echo "LLMNR=no" ++} >/run/systemd/resolved.conf.d/mdns-llmnr.conf ++systemctl restart systemd-resolved.service ++systemctl service-log-level systemd-resolved.service debug ++# set per-link setting ++resolvectl mdns hoge yes ++resolvectl llmnr hoge yes ++assert_in 'no' "$(resolvectl mdns hoge)" ++assert_in 'no' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge resolve ++resolvectl llmnr hoge resolve ++assert_in 'no' "$(resolvectl mdns hoge)" ++assert_in 'no' "$(resolvectl llmnr hoge)" ++resolvectl mdns hoge no ++resolvectl llmnr hoge no ++assert_in 'no' "$(resolvectl mdns hoge)" ++assert_in 'no' "$(resolvectl llmnr hoge)" ++ ++# Cleanup ++rm -f /run/systemd/resolved.conf.d/mdns-llmnr.conf + ip link del hoge + ip link del hoge.foo + diff --git a/SOURCES/0186-resolved-introduce-the-_localdnsstub-and-_localdnspr.patch b/SOURCES/0186-resolved-introduce-the-_localdnsstub-and-_localdnspr.patch new file mode 100644 index 0000000..a1b2d5e --- /dev/null +++ b/SOURCES/0186-resolved-introduce-the-_localdnsstub-and-_localdnspr.patch @@ -0,0 +1,278 @@ +From 677b20b6738ee287d1b882815b3bcca67754e003 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 25 Nov 2022 12:15:56 +0100 +Subject: [PATCH] resolved: introduce the _localdnsstub and _localdnsproxy + special hostnames for 127.0.0.54 + 127.0.0.53 + +Let's give these special IP addresses names. After all name resolution +is our job here. + +Fixes: #23623 +(cherry picked from commit 17f244e8f9de008ea1c6e0880bdc924b95a66e2b) + +Related: #2138081 +--- + man/resolvectl.xml | 11 +-- + man/systemd-resolved.service.xml | 6 ++ + src/basic/hostname-util.h | 8 ++ + src/resolve/resolvectl.c | 6 +- + src/resolve/resolved-dns-scope.c | 7 +- + src/resolve/resolved-dns-synthesize.c | 110 +++++++++++++++++++++++++- + test/units/testsuite-75.sh | 11 +++ + 7 files changed, 147 insertions(+), 12 deletions(-) + +diff --git a/man/resolvectl.xml b/man/resolvectl.xml +index 2cb855c360..c966ca67bd 100644 +--- a/man/resolvectl.xml ++++ b/man/resolvectl.xml +@@ -323,11 +323,12 @@ + + Takes a boolean parameter; used in conjunction with query. If true + (the default), select domains are resolved on the local system, among them +- localhost, _gateway and _outbound, or +- entries from /etc/hosts. If false these domains are not resolved locally, and +- either fail (in case of localhost, _gateway or +- _outbound and suchlike) or go to the network via regular DNS/mDNS/LLMNR lookups +- (in case of /etc/hosts entries). ++ localhost, _gateway, _outbound, ++ _localdnsstub and _localdnsproxy or entries from ++ /etc/hosts. If false these domains are not resolved locally, and either fail (in ++ case of localhost, _gateway or _outbound and ++ suchlike) or go to the network via regular DNS/mDNS/LLMNR lookups (in case of ++ /etc/hosts entries). + + + +diff --git a/man/systemd-resolved.service.xml b/man/systemd-resolved.service.xml +index 7f30fa6536..c006c03b53 100644 +--- a/man/systemd-resolved.service.xml ++++ b/man/systemd-resolved.service.xml +@@ -118,6 +118,12 @@ + local default gateway configured. This assigns a stable hostname to the local outbound IP addresses, + useful for referencing them independently of the current network configuration state. + ++ The hostname _localdnsstub is resolved to the IP address 127.0.0.53, ++ i.e. the address the local DNS stub (see above) is listening on. ++ ++ The hostname _localdnsproxy is resolved to the IP address 127.0.0.54, ++ i.e. the address the local DNS proxy (see above) is listening on. ++ + The mappings defined in /etc/hosts are resolved to their + configured addresses and back, but they will not affect lookups for non-address types (like MX). + Support for /etc/hosts may be disabled with ReadEtcHosts=no, +diff --git a/src/basic/hostname-util.h b/src/basic/hostname-util.h +index a00b852395..bcac3d9fb0 100644 +--- a/src/basic/hostname-util.h ++++ b/src/basic/hostname-util.h +@@ -60,4 +60,12 @@ static inline bool is_outbound_hostname(const char *hostname) { + return STRCASE_IN_SET(hostname, "_outbound", "_outbound."); + } + ++static inline bool is_dns_stub_hostname(const char *hostname) { ++ return STRCASE_IN_SET(hostname, "_localdnsstub", "_localdnsstub."); ++} ++ ++static inline bool is_dns_proxy_stub_hostname(const char *hostname) { ++ return STRCASE_IN_SET(hostname, "_localdnsproxy", "_localdnsproxy."); ++} ++ + int get_pretty_hostname(char **ret); +diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c +index b07761a495..2a7347ca27 100644 +--- a/src/resolve/resolvectl.c ++++ b/src/resolve/resolvectl.c +@@ -478,7 +478,11 @@ static bool single_label_nonsynthetic(const char *name) { + if (!dns_name_is_single_label(name)) + return false; + +- if (is_localhost(name) || is_gateway_hostname(name)) ++ if (is_localhost(name) || ++ is_gateway_hostname(name) || ++ is_outbound_hostname(name) || ++ is_dns_stub_hostname(name) || ++ is_dns_proxy_stub_hostname(name)) + return false; + + r = resolve_system_hostname(NULL, &first_label); +diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c +index 4f744499aa..607109ee0f 100644 +--- a/src/resolve/resolved-dns-scope.c ++++ b/src/resolve/resolved-dns-scope.c +@@ -635,8 +635,11 @@ DnsScopeMatch dns_scope_good_domain( + if (dns_name_dont_resolve(domain)) + return DNS_SCOPE_NO; + +- /* Never go to network for the _gateway or _outbound domain — they're something special, synthesized locally. */ +- if (is_gateway_hostname(domain) || is_outbound_hostname(domain)) ++ /* Never go to network for the _gateway, _outbound, _localdnsstub, _localdnsproxy domain — they're something special, synthesized locally. */ ++ if (is_gateway_hostname(domain) || ++ is_outbound_hostname(domain) || ++ is_dns_stub_hostname(domain) || ++ is_dns_proxy_stub_hostname(domain)) + return DNS_SCOPE_NO; + + switch (s->protocol) { +diff --git a/src/resolve/resolved-dns-synthesize.c b/src/resolve/resolved-dns-synthesize.c +index b3442ad906..fa8b4a5760 100644 +--- a/src/resolve/resolved-dns-synthesize.c ++++ b/src/resolve/resolved-dns-synthesize.c +@@ -356,7 +356,90 @@ static int synthesize_gateway_rr( + return 1; /* > 0 means: we have some gateway */ + } + +-static int synthesize_gateway_ptr(Manager *m, int af, const union in_addr_union *address, int ifindex, DnsAnswer **answer) { ++static int synthesize_dns_stub_rr( ++ Manager *m, ++ const DnsResourceKey *key, ++ in_addr_t addr, ++ DnsAnswer **answer) { ++ ++ _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL; ++ int r; ++ ++ assert(m); ++ assert(key); ++ assert(answer); ++ ++ if (!IN_SET(key->type, DNS_TYPE_A, DNS_TYPE_ANY)) ++ return 1; /* we still consider ourselves the owner of this name */ ++ ++ r = dns_answer_reserve(answer, 1); ++ if (r < 0) ++ return r; ++ ++ rr = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_A, dns_resource_key_name(key)); ++ if (!rr) ++ return -ENOMEM; ++ ++ rr->a.in_addr.s_addr = htobe32(addr); ++ ++ r = dns_answer_add(*answer, rr, LOOPBACK_IFINDEX, DNS_ANSWER_AUTHENTICATED, NULL); ++ if (r < 0) ++ return r; ++ ++ return 1; ++} ++ ++static int synthesize_dns_stub_ptr( ++ Manager *m, ++ int af, ++ const union in_addr_union *address, ++ DnsAnswer **answer) { ++ ++ int r; ++ ++ assert(m); ++ assert(address); ++ assert(answer); ++ ++ if (af != AF_INET) ++ return 0; ++ ++ if (address->in.s_addr == htobe32(INADDR_DNS_STUB)) { ++ ++ r = dns_answer_reserve(answer, 1); ++ if (r < 0) ++ return r; ++ ++ r = answer_add_ptr(answer, "53.0.0.127.in-addr.arpa", "_localdnsstub", LOOPBACK_IFINDEX, DNS_ANSWER_AUTHENTICATED); ++ if (r < 0) ++ return r; ++ ++ return 1; ++ } ++ ++ if (address->in.s_addr == htobe32(INADDR_DNS_PROXY_STUB)) { ++ ++ r = dns_answer_reserve(answer, 1); ++ if (r < 0) ++ return r; ++ ++ r = answer_add_ptr(answer, "54.0.0.127.in-addr.arpa", "_localdnsproxy", LOOPBACK_IFINDEX, DNS_ANSWER_AUTHENTICATED); ++ if (r < 0) ++ return r; ++ ++ return 1; ++ } ++ ++ return 0; ++} ++ ++static int synthesize_gateway_ptr( ++ Manager *m, ++ int af, ++ const union in_addr_union *address, ++ int ifindex, ++ DnsAnswer **answer) { ++ + _cleanup_free_ struct local_address *addresses = NULL; + int n; + +@@ -437,7 +520,22 @@ int dns_synthesize_answer( + continue; + } + +- } else if ((dns_name_endswith(name, "127.in-addr.arpa") > 0 && dns_name_equal(name, "2.0.0.127.in-addr.arpa") == 0) || ++ } else if (is_dns_stub_hostname(name)) { ++ ++ r = synthesize_dns_stub_rr(m, key, INADDR_DNS_STUB, &answer); ++ if (r < 0) ++ return log_error_errno(r, "Failed to synthesize local DNS stub RRs: %m"); ++ ++ } else if (is_dns_proxy_stub_hostname(name)) { ++ ++ r = synthesize_dns_stub_rr(m, key, INADDR_DNS_PROXY_STUB, &answer); ++ if (r < 0) ++ return log_error_errno(r, "Failed to synthesize local DNS stub RRs: %m"); ++ ++ } else if ((dns_name_endswith(name, "127.in-addr.arpa") > 0 && ++ dns_name_equal(name, "2.0.0.127.in-addr.arpa") == 0 && ++ dns_name_equal(name, "53.0.0.127.in-addr.arpa") == 0 && ++ dns_name_equal(name, "54.0.0.127.in-addr.arpa") == 0) || + dns_name_equal(name, "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa") > 0) { + + r = synthesize_localhost_ptr(m, key, ifindex, &answer); +@@ -445,7 +543,7 @@ int dns_synthesize_answer( + return log_error_errno(r, "Failed to synthesize localhost PTR RRs: %m"); + + } else if (dns_name_address(name, &af, &address) > 0) { +- int v, w; ++ int v, w, u; + + if (getenv_bool("SYSTEMD_RESOLVED_SYNTHESIZE_HOSTNAME") == 0) + continue; +@@ -458,7 +556,11 @@ int dns_synthesize_answer( + if (w < 0) + return log_error_errno(w, "Failed to synthesize gateway hostname PTR RR: %m"); + +- if (v == 0 && w == 0) /* This IP address is neither a local one nor a gateway */ ++ u = synthesize_dns_stub_ptr(m, af, &address, &answer); ++ if (u < 0) ++ return log_error_errno(u, "Failed to synthesize local stub hostname PTR PR: %m"); ++ ++ if (v == 0 && w == 0 && u == 0) /* This IP address is neither a local one, nor a gateway, nor a stub address */ + continue; + + /* Note that we never synthesize reverse PTR for _outbound, since those are local +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 1a656fcdc1..0c68e0636f 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -56,6 +56,17 @@ echo nameserver 10.0.3.3 10.0.3.4 | "$RESOLVCONF" -a hoge.foo.dhcp + assert_in '10.0.3.1 10.0.3.2' "$(resolvectl dns hoge)" + assert_in '10.0.3.3 10.0.3.4' "$(resolvectl dns hoge.foo)" + ++# Tests for _localdnsstub and _localdnsproxy ++assert_in '127.0.0.53' "$(resolvectl query _localdnsstub)" ++assert_in '_localdnsstub' "$(resolvectl query 127.0.0.53)" ++assert_in '127.0.0.54' "$(resolvectl query _localdnsproxy)" ++assert_in '_localdnsproxy' "$(resolvectl query 127.0.0.54)" ++ ++assert_in '127.0.0.53' "$(dig @127.0.0.53 _localdnsstub)" ++assert_in '_localdnsstub' "$(dig @127.0.0.53 -x 127.0.0.53)" ++assert_in '127.0.0.54' "$(dig @127.0.0.53 _localdnsproxy)" ++assert_in '_localdnsproxy' "$(dig @127.0.0.53 -x 127.0.0.54)" ++ + # Tests for mDNS and LLMNR settings + mkdir -p /run/systemd/resolved.conf.d + { diff --git a/SOURCES/0186-shared-install-fix-reenable-on-linked-unit-files.patch b/SOURCES/0186-shared-install-fix-reenable-on-linked-unit-files.patch deleted file mode 100644 index d5bdcb5..0000000 --- a/SOURCES/0186-shared-install-fix-reenable-on-linked-unit-files.patch +++ /dev/null @@ -1,146 +0,0 @@ -From f88f7c68264f9cfef78f4a4e2f68e45de8f1f055 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 15 Mar 2022 09:44:39 +0100 -Subject: [PATCH] shared/install: fix reenable on linked unit files - -(cherry picked from commit 29a7c59abbe594422f1ed7602263420745339a3e) - -Related: #2082131 ---- - src/shared/install.c | 73 ++++++++++++++++++++++++++++++----- - src/shared/install.h | 2 +- - test/test-systemctl-enable.sh | 8 ++-- - 3 files changed, 68 insertions(+), 15 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 1018e4fbf3..bf11e5bdce 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2707,17 +2707,74 @@ int unit_file_disable( - return do_unit_file_disable(&lp, scope, flags, config_path, files, changes, n_changes); - } - -+static int normalize_linked_files( -+ UnitFileScope scope, -+ const LookupPaths *lp, -+ char **names_or_paths, -+ char ***ret_names, -+ char ***ret_files) { -+ -+ /* This is similar to normalize_filenames()/normalize_names() in src/systemctl/, -+ * but operates on real unit names. For each argument we we look up the actual path -+ * where the unit is found. This way linked units can be reenabled successfully. */ -+ -+ _cleanup_free_ char **files = NULL, **names = NULL; -+ int r; -+ -+ STRV_FOREACH(a, names_or_paths) { -+ _cleanup_(install_context_done) InstallContext ctx = { .scope = scope }; -+ UnitFileInstallInfo *i = NULL; -+ _cleanup_free_ char *n = NULL; -+ -+ r = path_extract_filename(*a, &n); -+ if (r < 0) -+ return r; -+ if (r == O_DIRECTORY) -+ return log_debug_errno(SYNTHETIC_ERRNO(EISDIR), -+ "Unexpected path to a directory \"%s\", refusing.", *a); -+ -+ if (!is_path(*a)) { -+ r = install_info_discover(&ctx, lp, n, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, &i, NULL, NULL); -+ if (r < 0) -+ log_debug_errno(r, "Failed to discover unit \"%s\", operating on name: %m", n); -+ } -+ -+ r = strv_consume(&names, TAKE_PTR(n)); -+ if (r < 0) -+ return r; -+ -+ const char *p = NULL; -+ if (i && i->path) -+ /* Use startswith here, because we know that paths are normalized, and -+ * path_startswith() would give us a relative path, but we need an absolute path -+ * relative to i->root. -+ * -+ * In other words: /var/tmp/instroot.1234/etc/systemd/system/frobnicator.service -+ * is replaced by /etc/systemd/system/frobnicator.service, which is "absolute" -+ * in a sense, but only makes sense "relative" to /var/tmp/instroot.1234/. -+ */ -+ p = startswith(i->path, i->root); -+ -+ r = strv_extend(&files, p ?: *a); -+ if (r < 0) -+ return r; -+ } -+ -+ *ret_names = TAKE_PTR(names); -+ *ret_files = TAKE_PTR(files); -+ return 0; -+} -+ - int unit_file_reenable( - UnitFileScope scope, - UnitFileFlags flags, - const char *root_dir, -- char **files, -+ char **names_or_paths, - UnitFileChange **changes, - size_t *n_changes) { - - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- size_t l, i; -- char **names; -+ _cleanup_strv_free_ char **names = NULL, **files = NULL; - int r; - - assert(scope >= 0); -@@ -2731,13 +2788,11 @@ int unit_file_reenable( - if (!config_path) - return -ENXIO; - -- /* First, we invoke the disable command with only the basename... */ -- l = strv_length(files); -- names = newa(char*, l+1); -- for (i = 0; i < l; i++) -- names[i] = basename(files[i]); -- names[i] = NULL; -+ r = normalize_linked_files(scope, &lp, names_or_paths, &names, &files); -+ if (r < 0) -+ return r; - -+ /* First, we invoke the disable command with only the basename... */ - r = do_unit_file_disable(&lp, scope, flags, config_path, names, changes, n_changes); - if (r < 0) - return r; -diff --git a/src/shared/install.h b/src/shared/install.h -index d21e2aaa45..dba6987406 100644 ---- a/src/shared/install.h -+++ b/src/shared/install.h -@@ -111,7 +111,7 @@ int unit_file_reenable( - UnitFileScope scope, - UnitFileFlags flags, - const char *root_dir, -- char **files, -+ char **names_or_paths, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_preset( -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index c1fb9626ab..0ed08a9da3 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -206,11 +206,9 @@ test ! -h "$root/etc/systemd/system/paths.target.wants/link1.path" - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" - --# FIXME --# "$systemctl" --root="$root" reenable 'link1.path' --# islink "$root/etc/systemd/system/link1.path" "/link1.path" --# islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -- -+"$systemctl" --root="$root" reenable 'link1.path' -+islink "$root/etc/systemd/system/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" - - : -------manual link------------------------------------------ - cat >"$root/link3.suffix" < -Date: Tue, 15 Mar 2022 10:13:18 +0100 -Subject: [PATCH] test-systemctl-enable: extend the test for repeated - WantedBy/RequiredBy - -I was considering deduplicating the list of target units in -WantedBy/RequiredBy. But to do this meaningfully, we'd need to do alias -expansion first, i.e. after the initial parsing is done. This seems to be -more trouble than it would be worth. - -Instead, I added tests that we're doing the right thing and creating symlinks -as expected. For duplicate links, we create the link, and on the second time we -see that the link is already there, so the output is correct. - -(cherry picked from commit 0c003e8305188f25429938c7c4d09c0a5dfc961b) - -Related: #2082131 ---- - test/test-systemctl-enable.sh | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 0ed08a9da3..0a0123b9d7 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -285,39 +285,53 @@ test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service" - test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" - - : -------template enablement w/ default instance-------------- --cat >>"$root/etc/systemd/system/templ1@.service" <"$root/etc/systemd/system/templ1@.service" <"$root/etc/systemd/system/templ2@.service" < +Date: Wed, 7 Dec 2022 20:44:07 +0100 +Subject: [PATCH] test: wait for the monitoring service to become active +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Otherwise we might start querying resolved too early, causing the +monitoring service to miss stuff: + +``` +[ 1103.149474] testsuite-75.sh[35]: + systemd-run -u resmontest.service -p Type=notify resolvectl monitor +[ 1103.353803] testsuite-75.sh[423]: Running as unit: resmontest.service +[ 1103.353989] testsuite-75.sh[35]: + knotc zone-begin test. +[ 1103.354160] testsuite-75.sh[425]: OK +... +[ 1103.355298] testsuite-75.sh[35]: + knotc reload +[ 1103.355363] testsuite-75.sh[438]: Reloaded +[ 1103.355536] testsuite-75.sh[35]: + : '--- nss-resolve/nss-myhostname tests' +[ 1103.355536] testsuite-75.sh[35]: + run getent -s resolve hosts ns1.unsigned.test +[ 1103.356127] testsuite-75.sh[443]: + getent -s resolve hosts ns1.unsigned.test +[ 1103.356505] testsuite-75.sh[444]: + tee /tmp/tmp.bXg5Uj5Jkk +[ 1103.359591] resolvectl[424]: → Q: ns1.unsigned.test IN AAAA +[ 1103.359591] resolvectl[424]: ← S: success +[ 1103.359850] testsuite-75.sh[444]: 10.0.0.1 ns1.unsigned.test +[ 1103.359939] resolvectl[424]: → Q: ns1.unsigned.test IN A +[ 1103.359939] resolvectl[424]: ← S: success +[ 1103.359939] resolvectl[424]: ← A: ns1.unsigned.test IN A 10.0.0.1 +[ 1103.360149] testsuite-75.sh[35]: + grep -qE '^10\.0\.0\.1\s+ns1\.unsigned\.test' /tmp/tmp.bXg5Uj5Jkk +[ 1103.362119] systemd[1]: Starting resmontest.service... +[ 1103.362633] systemd[1]: Started resmontest.service. +[ 1103.363263] testsuite-75.sh[35]: + monitor_check_rr 'ns1.unsigned.test IN A 10.0.0.1' +[ 1103.363263] testsuite-75.sh[35]: + local 'match=ns1.unsigned.test IN A 10.0.0.1' +[ 1103.363377] testsuite-75.sh[35]: + set +o pipefail +[ 1103.363836] testsuite-75.sh[458]: + journalctl -u resmontest.service -f --full +[ 1103.364042] testsuite-75.sh[459]: + grep -m1 'ns1.unsigned.test IN A 10.0.0.1' +... +Trying to halt container. Send SIGTERM again to trigger immediate termination. +Container TEST-75 terminated by signal KILL. +``` + +(cherry picked from commit 5dd34c2604567320707625bc009cf01c3769605f) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 0c68e0636f..d2062c7b05 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -212,6 +212,11 @@ resolvectl log-level debug + + # Start monitoring queries + systemd-run -u resmontest.service -p Type=notify resolvectl monitor ++# Wait for the monitoring service to become active ++for _ in {0..9}; do ++ [[ "$(systemctl show -P ActiveState resmontest.service)" == "active" ]] && break ++ sleep .5 ++done + + # We need to manually propagate the DS records of onlinesign.test. to the parent + # zone, since they're generated online diff --git a/SOURCES/0188-shared-install-when-we-fail-to-chase-a-symlink-show-.patch b/SOURCES/0188-shared-install-when-we-fail-to-chase-a-symlink-show-.patch deleted file mode 100644 index f7fc1b0..0000000 --- a/SOURCES/0188-shared-install-when-we-fail-to-chase-a-symlink-show-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 144887f20bb2dc9f46060091db03d4f517f1d518 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 2 Mar 2022 16:53:54 +0100 -Subject: [PATCH] shared/install: when we fail to chase a symlink, show some - logs - -When chase_symlinks() fails, we'd get the generic error: - - Failed to disable: Permission denied. - -Let's at least add the failure to changes list, so the user gets -a slightly better message. Ideally, we'd say where exactly the permission -failure occured, but chase_symlinks() is a library level function and I don't -think we should add logging there. The output looks like this now: - - Failed to resolve symlink "/tmp/systemctl-test.1r7Roj/etc/systemd/system/link5alias2.service": Permission denied - Failed to resolve symlink "/tmp/systemctl-test.1r7Roj/etc/systemd/system/link5alias.service": Permission denied - Failed to disable unit, file /tmp/systemctl-test.1r7Roj/etc/systemd/system/link5alias2.service: Permission denied. - Failed to disable unit, file /tmp/systemctl-test.1r7Roj/etc/systemd/system/link5alias.service: Permission denied. - -(cherry picked from commit 212a24f0bbe4c54183d3b0ad9579a995007e29a8) - -Related: #2082131 ---- - src/shared/install.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/shared/install.c b/src/shared/install.c -index bf11e5bdce..ce045d02be 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -616,6 +616,9 @@ static int remove_marked_symlinks_fd( - if (q == -ENOENT) - continue; - if (q < 0) { -+ log_debug_errno(q, "Failed to resolve symlink \"%s\": %m", p); -+ unit_file_changes_add(changes, n_changes, q, p, NULL); -+ - if (r == 0) - r = q; - continue; diff --git a/SOURCES/0188-test-suppress-echo-in-monitor_check_rr.patch b/SOURCES/0188-test-suppress-echo-in-monitor_check_rr.patch new file mode 100644 index 0000000..15ec829 --- /dev/null +++ b/SOURCES/0188-test-suppress-echo-in-monitor_check_rr.patch @@ -0,0 +1,38 @@ +From b6f459c221004de9753569e2ec5ee5f887fc8b51 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 15 Dec 2022 15:28:56 +0900 +Subject: [PATCH] test: suppress echo in monitor_check_rr() + +(cherry picked from commit ef09861a0b0aa7c6a948f4e008e2fea312bc68d6) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index d2062c7b05..d0c7133412 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -16,17 +16,17 @@ run() { + "$@" |& tee "$RUN_OUT" + } + +-monitor_check_rr() { ++monitor_check_rr() ( ++ set +x ++ set +o pipefail + local match="${1:?}" + + # Wait until the first mention of the specified log message is + # displayed. We turn off pipefail for this, since we don't care about the + # lhs of this pipe expression, we only care about the rhs' result to be + # clean +- set +o pipefail + journalctl -u resmontest.service -f --full | grep -m1 "$match" +- set -o pipefail +-} ++) + + # Test for resolvectl, resolvconf + systemctl unmask systemd-resolved.service diff --git a/SOURCES/0189-Revert-test-wait-for-the-monitoring-service-to-becom.patch b/SOURCES/0189-Revert-test-wait-for-the-monitoring-service-to-becom.patch new file mode 100644 index 0000000..d0c9303 --- /dev/null +++ b/SOURCES/0189-Revert-test-wait-for-the-monitoring-service-to-becom.patch @@ -0,0 +1,34 @@ +From 058fab8aaad9fc6ececc647e369bf447a8327a4a Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 15 Dec 2022 16:28:52 +0900 +Subject: [PATCH] Revert "test: wait for the monitoring service to become + active" + +This reverts commit 5dd34c2604567320707625bc009cf01c3769605f. + +`resolvectl monitor` sends notify event, and systemd-run wait for the +service being in active state. Hence, the loop is not necessary. + +(cherry picked from commit 133708b8790ab79e35ade63506c16e4d1e79a025) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index d0c7133412..844dbaebcc 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -212,11 +212,6 @@ resolvectl log-level debug + + # Start monitoring queries + systemd-run -u resmontest.service -p Type=notify resolvectl monitor +-# Wait for the monitoring service to become active +-for _ in {0..9}; do +- [[ "$(systemctl show -P ActiveState resmontest.service)" == "active" ]] && break +- sleep .5 +-done + + # We need to manually propagate the DS records of onlinesign.test. to the parent + # zone, since they're generated online diff --git a/SOURCES/0189-shared-install-do-not-try-to-resolve-symlinks-outsid.patch b/SOURCES/0189-shared-install-do-not-try-to-resolve-symlinks-outsid.patch deleted file mode 100644 index 1dee0c7..0000000 --- a/SOURCES/0189-shared-install-do-not-try-to-resolve-symlinks-outsid.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 64fa6f059ae0b491fdb52c7375d59774ff9c237a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 15 Mar 2022 16:35:47 +0100 -Subject: [PATCH] shared/install: do not try to resolve symlinks outside of - root directory -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -I linked a file as root, so I had a symlink /root/test.service ← /etc/systemd/system/test.service. -To my surpise, when running test-systemctl-enable, it failed with a cryptic EACCES. -The previous commit made the logs a bit better. Strace shows that we -were trying to follow the symlink without taking --root into account. - -It seems that this bug was introduced in 66a19d85a533b15ed32f4066ec880b5a8c06babd: -before it, we'd do readlink_malloc(), which returned a path relative to root. But -we only used that path for checking if the path is in remove_symlinks_to set, which -contains relative paths. So if the path was relative, we'd get a false-negative -answer, but we didn't go outside of the root. (We need to canonicalize the symlink -to get a consistent answer.) But after 66a19 we use chase_symlinks(), without taking -root into account which is completely bogus. - -(cherry picked from commit 40276314afc4fb5c35c6b3da3e6185af6ed3886b) - -Related: #2082131 ---- - src/shared/install.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index ce045d02be..ad0238ab50 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -612,7 +612,7 @@ static int remove_marked_symlinks_fd( - return -ENOMEM; - path_simplify(p); - -- q = chase_symlinks(p, NULL, CHASE_NONEXISTENT, &dest, NULL); -+ q = chase_symlinks(p, lp->root_dir, CHASE_NONEXISTENT, &dest, NULL); - if (q == -ENOENT) - continue; - if (q < 0) { diff --git a/SOURCES/0190-test-show-and-check-almost-all-journal-entries-since.patch b/SOURCES/0190-test-show-and-check-almost-all-journal-entries-since.patch new file mode 100644 index 0000000..48e73b9 --- /dev/null +++ b/SOURCES/0190-test-show-and-check-almost-all-journal-entries-since.patch @@ -0,0 +1,113 @@ +From 3e7bcbb274618a0d3cea9027db4e6abb1207f27d Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 16 Dec 2022 01:11:39 +0900 +Subject: [PATCH] test: show and check almost all journal entries since the + relevant command being invoked +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For some reasons, journal timestamps from other sources sometimes +inconsistent. For example, +``` +$ journalctl --file system.journal -o short-monotonic -u resmontest.service +[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN AAAA +[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success +[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN A +[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success +[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← A: ns1.unsigned.test IN A 10.0.0.1 +[ 1112.171961] ns1.unsigned.test systemd[1]: resmontest.service: Failed to load configuration: No such file or directory +[ 1112.172223] ns1.unsigned.test systemd[1]: resmontest.service: Trying to enqueue job resmontest.service/start/fail +[ 1112.179866] ns1.unsigned.test systemd[1]: resmontest.service: Installed new job resmontest.service/start as 312 +[ 1112.179894] ns1.unsigned.test systemd[1]: resmontest.service: Enqueued job resmontest.service/start as 312 +[ 1112.180389] ns1.unsigned.test systemd[1]: resmontest.service: Will spawn child (service_enter_start): /usr/bin/resolvectl +[ 1112.180418] ns1.unsigned.test systemd[1]: resmontest.service: Passing 0 fds to service +[ 1112.180447] ns1.unsigned.test systemd[1]: resmontest.service: About to execute /usr/bin/resolvectl monitor +[ 1112.180477] ns1.unsigned.test systemd[1]: resmontest.service: Forked /usr/bin/resolvectl as 419 +[ 1112.180619] ns1.unsigned.test systemd[1]: resmontest.service: Changed dead -> start +[ 1112.180651] ns1.unsigned.test systemd[1]: Starting resmontest.service... +[ 1112.180799] ns1.unsigned.test systemd[419]: resmontest.service: Kernel keyring access prohibited, ignoring. +[ 1112.180895] ns1.unsigned.test systemd[419]: resmontest.service: Executing: /usr/bin/resolvectl monitor +[ 1112.181383] ns1.unsigned.test systemd[1]: resmontest.service: Got notification message from PID 419 (READY=1) +[ 1112.181413] ns1.unsigned.test systemd[1]: resmontest.service: Changed start -> running +[ 1112.181441] ns1.unsigned.test systemd[1]: resmontest.service: Job 312 resmontest.service/start finished, result=done +[ 1112.181469] ns1.unsigned.test systemd[1]: Started resmontest.service. +``` +In such case, `journalctl -f` may not show the entries what we are interested in. + +Fixes #25749. (At least, workarond for the issue.) + +(cherry picked from commit ad48ff12bd0f7b19dc6bfa33c96221fd9c22e89c) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 844dbaebcc..852caac605 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -19,13 +19,14 @@ run() { + monitor_check_rr() ( + set +x + set +o pipefail +- local match="${1:?}" ++ local since="${1:?}" ++ local match="${2:?}" + + # Wait until the first mention of the specified log message is + # displayed. We turn off pipefail for this, since we don't care about the + # lhs of this pipe expression, we only care about the rhs' result to be + # clean +- journalctl -u resmontest.service -f --full | grep -m1 "$match" ++ journalctl -u resmontest.service --since "$since" -f --full | grep -m1 "$match" + ) + + # Test for resolvectl, resolvconf +@@ -232,9 +233,10 @@ knotc reload + + : "--- nss-resolve/nss-myhostname tests" + # Sanity check ++TIMESTAMP=$(date '+%F %T') + run getent -s resolve hosts ns1.unsigned.test + grep -qE "^10\.0\.0\.1\s+ns1\.unsigned\.test" "$RUN_OUT" +-monitor_check_rr "ns1.unsigned.test IN A 10.0.0.1" ++monitor_check_rr "$TIMESTAMP" "ns1.unsigned.test IN A 10.0.0.1" + + # Issue: https://github.com/systemd/systemd/issues/18812 + # PR: https://github.com/systemd/systemd/pull/18896 +@@ -324,15 +326,16 @@ run delv dupe.signed.test + grep -qF "; fully validated" "$RUN_OUT" + + # Test resolution of CNAME chains ++TIMESTAMP=$(date '+%F %T') + run resolvectl query -t A cname-chain.signed.test + grep -qF "follow14.final.signed.test IN A 10.0.0.14" "$RUN_OUT" + grep -qF "authenticated: yes" "$RUN_OUT" + +-monitor_check_rr "follow10.so.close.signed.test IN CNAME follow11.yet.so.far.signed.test" +-monitor_check_rr "follow11.yet.so.far.signed.test IN CNAME follow12.getting.hot.signed.test" +-monitor_check_rr "follow12.getting.hot.signed.test IN CNAME follow13.almost.final.signed.test" +-monitor_check_rr "follow13.almost.final.signed.test IN CNAME follow14.final.signed.test" +-monitor_check_rr "follow14.final.signed.test IN A 10.0.0.14" ++monitor_check_rr "$TIMESTAMP" "follow10.so.close.signed.test IN CNAME follow11.yet.so.far.signed.test" ++monitor_check_rr "$TIMESTAMP" "follow11.yet.so.far.signed.test IN CNAME follow12.getting.hot.signed.test" ++monitor_check_rr "$TIMESTAMP" "follow12.getting.hot.signed.test IN CNAME follow13.almost.final.signed.test" ++monitor_check_rr "$TIMESTAMP" "follow13.almost.final.signed.test IN CNAME follow14.final.signed.test" ++monitor_check_rr "$TIMESTAMP" "follow14.final.signed.test IN A 10.0.0.14" + + # Non-existing RR + CNAME chain + run dig +dnssec AAAA cname-chain.signed.test +@@ -370,9 +373,10 @@ grep -qF 'this.should.be.authenticated.wild.onlinesign.test IN TXT "this is an o + grep -qF "authenticated: yes" "$RUN_OUT" + + # Resolve via dbus method ++TIMESTAMP=$(date '+%F %T') + run busctl call org.freedesktop.resolve1 /org/freedesktop/resolve1 org.freedesktop.resolve1.Manager ResolveHostname 'isit' 0 secondsub.onlinesign.test 0 0 + grep -qF '10 0 0 134 "secondsub.onlinesign.test"' "$RUN_OUT" +-monitor_check_rr "secondsub.onlinesign.test IN A 10.0.0.134" ++monitor_check_rr "$TIMESTAMP" "secondsub.onlinesign.test IN A 10.0.0.134" + + : "--- ZONE: untrusted.test (DNSSEC without propagated DS records) ---" + run dig +short untrusted.test diff --git a/SOURCES/0190-test-systemctl-enable-enhance-the-test-for-unit-file.patch b/SOURCES/0190-test-systemctl-enable-enhance-the-test-for-unit-file.patch deleted file mode 100644 index a74db25..0000000 --- a/SOURCES/0190-test-systemctl-enable-enhance-the-test-for-unit-file.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 2a11a51491d3113f8d198c7d30ead8b555e60a61 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 15 Mar 2022 17:45:34 +0100 -Subject: [PATCH] test-systemctl-enable: enhance the test for unit file linking - -Current behaviour is wrong, but it cannot be shown in this test, because we -don't have a running systemd instance here. - -(cherry picked from commit 85516075a24fd2f1316575570d7d5f5a37f43dbd) - -Related: #2082131 ---- - test/test-systemctl-enable.sh | 39 ++++++++++++++++++++++++++++++++--- - 1 file changed, 36 insertions(+), 3 deletions(-) - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 0a0123b9d7..220ebfdab7 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -401,7 +401,7 @@ test ! -h "$root/etc/systemd/system/link4.service" - test ! -h "$root/etc/systemd/system/link4alias.service" - test ! -h "$root/etc/systemd/system/link4alias2.service" - --: -------issue 661: link and enable on unit file-------------- -+: -------issue 661: enable on unit file-------------- - test ! -e "$root/etc/systemd/system/link5.service" - cat >"$root/etc/systemd/system/link5.service" <"$root/link5copy.service" <"$root/etc/systemd/system/link5@.path" < -Date: Wed, 16 Mar 2022 09:28:46 +0100 -Subject: [PATCH] shared/install: skip unnecessary chasing of symlinks in - disable - -We use the symlink source name and destination names to decide whether to remove -the symlink. But if the source name is enough to decide to remove the symlink, -we'd still look up the destination for no good reason. This is a slow operation, -let's skip it. - -(cherry picked from commit 7a6c73dabf6451d6ef22d0cdfbb1749a77450d5b) - -Related: #2082131 ---- - src/shared/install.c | 43 +++++++++++++++++++++++++------------------ - 1 file changed, 25 insertions(+), 18 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index ad0238ab50..08a9892260 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -599,8 +599,7 @@ static int remove_marked_symlinks_fd( - r = q; - - } else if (de->d_type == DT_LNK) { -- _cleanup_free_ char *p = NULL, *dest = NULL; -- const char *rp; -+ _cleanup_free_ char *p = NULL; - bool found; - int q; - -@@ -612,24 +611,32 @@ static int remove_marked_symlinks_fd( - return -ENOMEM; - path_simplify(p); - -- q = chase_symlinks(p, lp->root_dir, CHASE_NONEXISTENT, &dest, NULL); -- if (q == -ENOENT) -- continue; -- if (q < 0) { -- log_debug_errno(q, "Failed to resolve symlink \"%s\": %m", p); -- unit_file_changes_add(changes, n_changes, q, p, NULL); -+ /* We remove all links pointing to a file or path that is marked, as well as all -+ * files sharing the same name as a file that is marked. Do path chasing only if -+ * we don't already know that we want to remove the symlink. */ -+ found = set_contains(remove_symlinks_to, de->d_name); - -- if (r == 0) -- r = q; -- continue; -- } -+ if (!found) { -+ _cleanup_free_ char *dest = NULL; -+ -+ -+ q = chase_symlinks(p, lp->root_dir, CHASE_NONEXISTENT, &dest, NULL); -+ if (q == -ENOENT) -+ continue; -+ if (q < 0) { -+ log_debug_errno(q, "Failed to resolve symlink \"%s\": %m", p); -+ unit_file_changes_add(changes, n_changes, q, p, NULL); - -- /* We remove all links pointing to a file or path that is marked, as well as all files sharing -- * the same name as a file that is marked. */ -+ if (r == 0) -+ r = q; -+ continue; -+ } -+ -+ found = set_contains(remove_symlinks_to, dest) || -+ set_contains(remove_symlinks_to, basename(dest)); -+ -+ } - -- found = set_contains(remove_symlinks_to, dest) || -- set_contains(remove_symlinks_to, basename(dest)) || -- set_contains(remove_symlinks_to, de->d_name); - - if (!found) - continue; -@@ -650,7 +657,7 @@ static int remove_marked_symlinks_fd( - /* Now, remember the full path (but with the root prefix removed) of - * the symlink we just removed, and remove any symlinks to it, too. */ - -- rp = skip_root(lp->root_dir, p); -+ const char *rp = skip_root(lp->root_dir, p); - q = mark_symlink_for_removal(&remove_symlinks_to, rp ?: p); - if (q < 0) - return q; diff --git a/SOURCES/0191-test-cover-IPv6-in-the-resolved-test-suite.patch b/SOURCES/0191-test-cover-IPv6-in-the-resolved-test-suite.patch new file mode 100644 index 0000000..c14e688 --- /dev/null +++ b/SOURCES/0191-test-cover-IPv6-in-the-resolved-test-suite.patch @@ -0,0 +1,449 @@ +From 6aa57233e5981473efb4fdc4351d8f407b0b5384 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Fri, 8 Jul 2022 13:36:03 +0200 +Subject: [PATCH] test: cover IPv6 in the resolved test suite + +(cherry picked from commit 5c9111fe779b44745256279052786e9cc499e57a) + +Related: #2138081 +--- + test/knot-data/knot.conf | 3 + + test/knot-data/zones/onlinesign.test.zone | 15 ++- + test/knot-data/zones/root.zone | 8 +- + test/knot-data/zones/signed.test.zone | 23 ++-- + test/knot-data/zones/test.zone | 12 +- + test/knot-data/zones/unsigned.test.zone | 12 +- + test/knot-data/zones/untrusted.test.zone | 11 +- + test/units/testsuite-75.sh | 135 ++++++++++++++++++---- + 8 files changed, 169 insertions(+), 50 deletions(-) + +diff --git a/test/knot-data/knot.conf b/test/knot-data/knot.conf +index e3de69d0f4..6ea0cca3db 100644 +--- a/test/knot-data/knot.conf ++++ b/test/knot-data/knot.conf +@@ -4,6 +4,7 @@ server: + rundir: "/run/knot" + user: knot:knot + listen: 10.0.0.1@53 ++ listen: fd00:dead:beef:cafe::1@53 + + log: + - target: syslog +@@ -15,11 +16,13 @@ database: + acl: + - id: update_acl + address: 10.0.0.0/24 ++ address: fd00:dead:beef:cafe::/64 + action: update + + remote: + - id: parent_zone_server + address: 10.0.0.1@53 ++ address: fd00:dead:beef:cafe::1@53 + + submission: + - id: parent_zone_sbm +diff --git a/test/knot-data/zones/onlinesign.test.zone b/test/knot-data/zones/onlinesign.test.zone +index c12c6b3396..c8662fa3ed 100644 +--- a/test/knot-data/zones/onlinesign.test.zone ++++ b/test/knot-data/zones/onlinesign.test.zone +@@ -11,12 +11,17 @@ $ORIGIN onlinesign.test. + ) + + ; NS info +- NS ns1.unsigned.test. ++ NS ns1.unsigned.test. + +- TXT "hello from onlinesign" ++ TXT "hello from onlinesign" + +-*.wild TXT "this is an onlinesign wildcard" ++*.wild TXT "this is an onlinesign wildcard" + + ; No A/AAAA record for the $ORIGIN +-sub A 10.0.0.133 +-secondsub A 10.0.0.134 ++sub A 10.0.0.133 ++secondsub A 10.0.0.134 ++ ++dual A 10.0.0.135 ++dual AAAA fd00:dead:beef:cafe::135 ++ ++ipv6 AAAA fd00:dead:beef:cafe::136 +diff --git a/test/knot-data/zones/root.zone b/test/knot-data/zones/root.zone +index 72439fdc55..f601e8676d 100644 +--- a/test/knot-data/zones/root.zone ++++ b/test/knot-data/zones/root.zone +@@ -8,7 +8,9 @@ $TTL 300 + 1D ; minimum TTL + ) + +-. NS ns1.unsigned.test +-ns1.unsigned.test A 10.0.0.1 ++. NS ns1.unsigned.test ++; NS glue records ++ns1.unsigned.test A 10.0.0.1 ++ns1.unsigned.test AAAA fd00:dead:beef:cafe::1 + +-test NS ns1.unsigned.test ++test NS ns1.unsigned.test +diff --git a/test/knot-data/zones/signed.test.zone b/test/knot-data/zones/signed.test.zone +index 38d8e2aa13..fa6706205a 100644 +--- a/test/knot-data/zones/signed.test.zone ++++ b/test/knot-data/zones/signed.test.zone +@@ -11,18 +11,27 @@ $ORIGIN signed.test. + ) + + ; NS info +- NS ns1.unsigned.test. ++ NS ns1.unsigned.test. + +-*.wild TXT "this is a wildcard" ++*.wild TXT "this is a wildcard" + +-@ MX 10 mail.signed.test. ++@ MX 10 mail.signed.test. + +- A 10.0.0.10 +-mail A 10.0.0.11 ++ A 10.0.0.10 ++mail A 10.0.0.11 ++mail AAAA fd00:dead:beef:cafe::11 + + ; https://github.com/systemd/systemd/issues/22002 +-dupe A 10.0.0.12 +-dupe A 10.0.0.13 ++dupe A 10.0.0.12 ++dupe A 10.0.0.13 ++dupe-ipv6 AAAA fd00:dead:beef:cafe::12 ++dupe-ipv6 AAAA fd00:dead:beef:cafe::13 ++dupe-mixed A 10.0.0.15 ++dupe-mixed A 10.0.0.16 ++dupe-mixed A 10.0.0.17 ++dupe-mixed AAAA fd00:dead:beef:cafe::15 ++dupe-mixed AAAA fd00:dead:beef:cafe::16 ++dupe-mixed AAAA fd00:dead:beef:cafe::17 + + ; CNAME_REDIRECTS_MAX is 16, so let's test something close to that + cname-chain CNAME follow1.signed.test. +diff --git a/test/knot-data/zones/test.zone b/test/knot-data/zones/test.zone +index 6cc2633082..ba5fcebc2d 100644 +--- a/test/knot-data/zones/test.zone ++++ b/test/knot-data/zones/test.zone +@@ -11,9 +11,11 @@ $ORIGIN test. + ) + + ; NS info +-@ NS ns1.unsigned +-ns1.signed A 10.0.0.1 ++@ NS ns1.unsigned ++; NS glue records ++ns1.unsigned A 10.0.0.1 ++ns1.unsigned AAAA fd00:dead:beef:cafe::1 + +-onlinesign NS ns1.unsigned +-signed NS ns1.unsigned +-unsigned NS ns1.unsigned ++onlinesign NS ns1.unsigned ++signed NS ns1.unsigned ++unsigned NS ns1.unsigned +diff --git a/test/knot-data/zones/unsigned.test.zone b/test/knot-data/zones/unsigned.test.zone +index 87d9437e2c..c5445d7672 100644 +--- a/test/knot-data/zones/unsigned.test.zone ++++ b/test/knot-data/zones/unsigned.test.zone +@@ -11,10 +11,12 @@ $ORIGIN unsigned.test. + ) + + ; NS info +-@ NS ns1.unsigned.test. +-ns1 A 10.0.0.1 ++@ NS ns1 ++ns1 A 10.0.0.1 ++ns1 AAAA fd00:dead:beef:cafe::1 + +-@ MX 15 mail.unsigned.test. ++@ MX 15 mail.unsigned.test. + +- A 10.0.0.101 +-mail A 10.0.0.111 ++ A 10.0.0.101 ++ AAAA fd00:dead:beef:cafe::101 ++mail A 10.0.0.111 +diff --git a/test/knot-data/zones/untrusted.test.zone b/test/knot-data/zones/untrusted.test.zone +index 6d29bd77fe..cf0dec5296 100644 +--- a/test/knot-data/zones/untrusted.test.zone ++++ b/test/knot-data/zones/untrusted.test.zone +@@ -11,11 +11,12 @@ $ORIGIN untrusted.test. + ) + + ; NS info +-@ NS ns1.unsigned.test. ++@ NS ns1.unsigned.test. + +-*.wild TXT "this is an untrusted wildcard" ++*.wild TXT "this is an untrusted wildcard" + +-@ MX 10 mail.untrusted.test. ++@ MX 10 mail.untrusted.test. + +- A 10.0.0.121 +-mail A 10.0.0.121 ++ A 10.0.0.121 ++ AAAA fd00:dead:beef:cafe::121 ++mail A 10.0.0.122 +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 852caac605..76b8f5b3c7 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -2,6 +2,12 @@ + # SPDX-License-Identifier: LGPL-2.1-or-later + # vi: ts=4 sw=4 tw=0 et: + ++# TODO: ++# - IPv6-only stack ++# - mDNS ++# - LLMNR ++# - DoT/DoH ++ + set -eux + set -o pipefail + +@@ -16,6 +22,15 @@ run() { + "$@" |& tee "$RUN_OUT" + } + ++disable_ipv6() { ++ sysctl -w net.ipv6.conf.all.disable_ipv6=1 ++} ++ ++enable_ipv6() { ++ sysctl -w net.ipv6.conf.all.disable_ipv6=0 ++ networkctl reconfigure dns0 ++} ++ + monitor_check_rr() ( + set +x + set +o pipefail +@@ -146,7 +161,10 @@ ip link del hoge.foo + ### SETUP ### + # Configure network + hostnamectl hostname ns1.unsigned.test +-echo "10.0.0.1 ns1.unsigned.test" >>/etc/hosts ++{ ++ echo "10.0.0.1 ns1.unsigned.test" ++ echo "fd00:dead:beef:cafe::1 ns1.unsigned.test" ++} >>/etc/hosts + + mkdir -p /etc/systemd/network + cat >/etc/systemd/network/dns0.netdev < -Date: Wed, 16 Mar 2022 09:51:24 +0100 -Subject: [PATCH] =?UTF-8?q?shared/install:=20also=20remove=20symlinks=20li?= - =?UTF-8?q?ke=20.wants/foo@one.service=20=E2=86=92=20../foo@one.service?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -So far 'systemctl enable' would create absolute links to the target template -name. And we would remove such symlinks just fine. But the user may create -symlinks manually in a different form. In particular, symlinks for instanced -units *must* have the instance in the source name, and then it is natural to -also include it in the target name (.wants/foo@one.service → ../foo@one.service -rather than .wants/foo@one.service → ../foo@.service). We would choke on such -links, or not remove them at all. A test is added: - -before: - -+ build-rawhide/systemctl --root=/tmp/systemctl-test.001xda disable templ1@.service -Removed "/tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@seven.service". -Removed "/tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@six.service". -Removed "/tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@five.service". -Removed "/tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@four.service". -Removed "/tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@three.service". -Failed to disable unit, refusing to operate on linked unit file /tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@two.service. -Failed to disable unit, refusing to operate on linked unit file /tmp/systemctl-test.001xda/etc/systemd/system/services.target.wants/templ1@two.service. - -after: - -+ build-rawhide/systemctl --root=/tmp/systemctl-test.QVP0ev disable templ1@.service -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@seven.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@six.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@five.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@four.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@three.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@two.service". -Removed "/tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@one.service". -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@one.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@two.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@three.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@four.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@five.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@six.service -+ test '!' -h /tmp/systemctl-test.QVP0ev/etc/systemd/system/services.target.wants/templ1@seven.service - -(cherry picked from commit 9f61c9f79e0f77044b71ef2ba5edde20e15c6ad2) - -Related: #2082131 ---- - src/shared/install.c | 16 +++++++++++++--- - test/test-systemctl-enable.sh | 20 ++++++++++++++++++++ - 2 files changed, 33 insertions(+), 3 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 08a9892260..43955519ae 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -612,13 +612,23 @@ static int remove_marked_symlinks_fd( - path_simplify(p); - - /* We remove all links pointing to a file or path that is marked, as well as all -- * files sharing the same name as a file that is marked. Do path chasing only if -- * we don't already know that we want to remove the symlink. */ -+ * files sharing the same name as a file that is marked, and files sharing the same -+ * name after the instance has been removed. Do path chasing only if we don't already -+ * know that we want to remove the symlink. */ - found = set_contains(remove_symlinks_to, de->d_name); - - if (!found) { -- _cleanup_free_ char *dest = NULL; -+ _cleanup_free_ char *template = NULL; -+ -+ q = unit_name_template(de->d_name, &template); -+ if (q < 0 && q != -EINVAL) -+ return q; -+ if (q >= 0) -+ found = set_contains(remove_symlinks_to, template); -+ } - -+ if (!found) { -+ _cleanup_free_ char *dest = NULL; - - q = chase_symlinks(p, lp->root_dir, CHASE_NONEXISTENT, &dest, NULL); - if (q == -ENOENT) -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 220ebfdab7..4462fb386e 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -333,6 +333,26 @@ test ! -h "$root/etc/systemd/system/other@templ1.target.requires/templ1@one.serv - test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" - test ! -h "$root/etc/systemd/system/other@templ1.target.requires/templ1@two.service" - -+: -------removal of relative enablement symlinks-------------- -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" -+ln -s '../templ1@one.service' "$root/etc/systemd/system/services.target.wants/templ1@one.service" -+ln -s 'templ1@two.service' "$root/etc/systemd/system/services.target.wants/templ1@two.service" -+ln -s '../templ1@.service' "$root/etc/systemd/system/services.target.wants/templ1@three.service" -+ln -s 'templ1@.service' "$root/etc/systemd/system/services.target.wants/templ1@four.service" -+ln -s '/usr/lib/systemd/system/templ1@.service' "$root/etc/systemd/system/services.target.wants/templ1@five.service" -+ln -s '/etc/systemd/system/templ1@.service' "$root/etc/systemd/system/services.target.wants/templ1@six.service" -+ln -s '/run/system/templ1@.service' "$root/etc/systemd/system/services.target.wants/templ1@seven.service" -+ -+# this should remove all links -+"$systemctl" --root="$root" disable 'templ1@.service' -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@three.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@four.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@five.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@six.service" -+test ! -h "$root/etc/systemd/system/services.target.wants/templ1@seven.service" -+ - : -------template enablement for another template------------- - cat >"$root/etc/systemd/system/templ2@.service" < +Date: Fri, 8 Jul 2022 18:12:47 +0200 +Subject: [PATCH] test: add a couple of SRV records to check service resolution + +(cherry picked from commit 3095bd2ccaf55f7c20567b990844dc2d9b451376) + +Related: #2138081 +--- + test/knot-data/zones/signed.test.zone | 8 ++++++++ + test/knot-data/zones/untrusted.test.zone | 4 ++++ + test/units/testsuite-75.sh | 17 +++++++++++++++++ + 3 files changed, 29 insertions(+) + +diff --git a/test/knot-data/zones/signed.test.zone b/test/knot-data/zones/signed.test.zone +index fa6706205a..6ddeb0048e 100644 +--- a/test/knot-data/zones/signed.test.zone ++++ b/test/knot-data/zones/signed.test.zone +@@ -49,3 +49,11 @@ follow11.yet.so.far CNAME follow12.getting.hot.signed.test. + follow12.getting.hot CNAME follow13.almost.final.signed.test. + follow13.almost.final CNAME follow14.final.signed.test. + follow14.final A 10.0.0.14 ++ ++myservice A 10.0.0.20 ++myservice AAAA fd00:dead:beef:cafe::17 ++_mysvc._tcp SRV 10 5 1234 myservice ++ ++_invalidsvc._udp SRV 5 5 1111 invalidservice ++ ++_untrustedsvc._udp SRV 5 5 1111 myservice.untrusted.test. +diff --git a/test/knot-data/zones/untrusted.test.zone b/test/knot-data/zones/untrusted.test.zone +index cf0dec5296..a0dca62ca8 100644 +--- a/test/knot-data/zones/untrusted.test.zone ++++ b/test/knot-data/zones/untrusted.test.zone +@@ -20,3 +20,7 @@ $ORIGIN untrusted.test. + A 10.0.0.121 + AAAA fd00:dead:beef:cafe::121 + mail A 10.0.0.122 ++ ++myservice A 10.0.0.123 ++ AAAA fd00:dead:beef:cafe::123 ++_mysvc._tcp SRV 10 5 1234 myservice +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 76b8f5b3c7..66cc6c9d66 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -367,6 +367,19 @@ grep -qF "status: NXDOMAIN" "$RUN_OUT" + run resolvectl query -t TXT this.should.be.authenticated.wild.signed.test + grep -qF 'this.should.be.authenticated.wild.signed.test IN TXT "this is a wildcard"' "$RUN_OUT" + grep -qF "authenticated: yes" "$RUN_OUT" ++# Check SRV support ++run resolvectl service _mysvc._tcp signed.test ++grep -qF "myservice.signed.test:1234" "$RUN_OUT" ++grep -qF "10.0.0.20" "$RUN_OUT" ++grep -qF "fd00:dead:beef:cafe::17" "$RUN_OUT" ++grep -qF "authenticated: yes" "$RUN_OUT" ++(! run resolvectl service _invalidsvc._udp signed.test) ++grep -qE "invalidservice\.signed\.test' not found" "$RUN_OUT" ++run resolvectl service _untrustedsvc._udp signed.test ++grep -qF "myservice.untrusted.test:1111" "$RUN_OUT" ++grep -qF "10.0.0.123" "$RUN_OUT" ++grep -qF "fd00:dead:beef:cafe::123" "$RUN_OUT" ++grep -qF "authenticated: yes" "$RUN_OUT" + + # DNSSEC validation with multiple records of the same type for the same name + # Issue: https://github.com/systemd/systemd/issues/22002 +@@ -479,6 +492,10 @@ grep -qF "untrusted.test:" "$RUN_OUT" + grep -qF "10.0.0.121" "$RUN_OUT" + grep -qF "fd00:dead:beef:cafe::121" "$RUN_OUT" + grep -qF "authenticated: no" "$RUN_OUT" ++run resolvectl service _mysvc._tcp untrusted.test ++grep -qF "myservice.untrusted.test:1234" "$RUN_OUT" ++grep -qF "10.0.0.123" "$RUN_OUT" ++grep -qF "fd00:dead:beef:cafe::123" "$RUN_OUT" + + # Issue: https://github.com/systemd/systemd/issues/19472 + # 1) Query for a non-existing RR should return NOERROR + NSEC (?), not NXDOMAIN diff --git a/SOURCES/0193-shared-install-create-relative-symlinks-for-enableme.patch b/SOURCES/0193-shared-install-create-relative-symlinks-for-enableme.patch deleted file mode 100644 index b704e6f..0000000 --- a/SOURCES/0193-shared-install-create-relative-symlinks-for-enableme.patch +++ /dev/null @@ -1,633 +0,0 @@ -From a7e70c5699a663cf14e9358648698667bd320db7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 16 Mar 2022 10:17:32 +0100 -Subject: [PATCH] shared/install: create relative symlinks for enablement and - aliasing -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This is a fairly noticable change, but I think it needs to be done. -So far we'd create an absolute symlink to the target unit file: - .wants/foo.service → /usr/lib/systemd/system/foo.service -or - alias.service → /etc/systemd/system/aliased.service. - -This works reasonably well, except in one case: where the unit file -is linked. When we look at a file link, the name of the physical file -isn't used, and we only take the account the symlink source name. -(In fact, the destination filename may not even be a well-formed unit name, -so we couldn't use it, even if we wanted to.) But this means that if -a file is linked, and specifies aliases, we'd create absolute links for -those aliases, and systemd would consider each "alias" to be a separate -unit. This isn't checked by the tests here, because we don't have a running -systemd instance, but it is easy enough to check manually. - -The most reasonable way to fix this is to create relative links to the -unit file: - .wants/foo.service → ../foo.service - alias.service → aliased.service. - -I opted to use no prefix for aliases, both normal and 'default.target', -and to add "../" for .wants/ and .requires/. Note that the link that is -created doesn't necessarily point to the file. E.g. if we're enabling -a file under /usr/lib/systemd/system, and create a symlink in /etc/systemd/system, -it'll still be "../foo.service", not "../../usr/lib/systemd/system/foo.service". -For our unit loading logic this doesn't matter, and figuring out a path -that actually leads somewhere would be more work. Since the user is allowed -to move the unit file, or add a new unit file in a different location, and -we don't actually follow the symlink, I think it's OK to create a dangling -symlink. The prefix of "../" is useful to give a hint that the link points -to files that are conceptually "one level up" in the directory hierarchy. - -With the relative symlinks, systemd knows that those are aliases. - -The tests are adjusted to use the new forms. There were a few tests that -weren't really testing something useful: 'test -e x' fails if 'x' is a -a dangling symlink. Absolute links in the chroot would be dangling, even -though the target existed in the expected path, but become non-dangling -when made relative and the test fails. - -This should be described in NEWS, but I'm not adding that here, because -it'd likely result in conflicts. - -(cherry picked from commit d6c9411072901556176ac130f2ce71a33107aa93) - -Related: #2082131 ---- - src/shared/install.c | 14 ++-- - src/test/test-install-root.c | 65 +++++++++-------- - test/test-systemctl-enable.sh | 128 ++++++++++++++++------------------ - 3 files changed, 105 insertions(+), 102 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 43955519ae..1a2b0ccf24 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1842,7 +1842,7 @@ static int install_info_symlink_alias( - if (!alias_path) - return -ENOMEM; - -- q = create_symlink(lp, info->path, alias_path, force, changes, n_changes); -+ q = create_symlink(lp, info->name, alias_path, force, changes, n_changes); - r = r < 0 ? r : q; - } - -@@ -1911,7 +1911,7 @@ static int install_info_symlink_wants( - } - - STRV_FOREACH(s, list) { -- _cleanup_free_ char *path = NULL, *dst = NULL; -+ _cleanup_free_ char *dst = NULL; - - q = install_name_printf(scope, info, *s, info->root, &dst); - if (q < 0) { -@@ -1941,11 +1941,15 @@ static int install_info_symlink_wants( - continue; - } - -- path = strjoin(config_path, "/", dst, suffix, n); -+ _cleanup_free_ char *path = strjoin(config_path, "/", dst, suffix, n); - if (!path) - return -ENOMEM; - -- q = create_symlink(lp, info->path, path, true, changes, n_changes); -+ _cleanup_free_ char *target = strjoin("../", info->name); -+ if (!target) -+ return -ENOMEM; -+ -+ q = create_symlink(lp, target, path, true, changes, n_changes); - if (r == 0) - r = q; - -@@ -2853,7 +2857,7 @@ int unit_file_set_default( - return r; - - new_path = strjoina(lp.persistent_config, "/" SPECIAL_DEFAULT_TARGET); -- return create_symlink(&lp, info->path, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); -+ return create_symlink(&lp, info->name, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); - } - - int unit_file_get_default( -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index 4f66c12655..dca695d124 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -88,7 +88,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service")); -+ assert_se(streq(changes[0].source, "../a.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -128,7 +128,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("d.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service")); -+ assert_se(streq(changes[0].source, "../a.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -147,7 +147,7 @@ TEST(basic_mask_and_enable) { - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/a.service")); -+ assert_se(streq(changes[1].source, "../a.service")); - assert_se(streq(changes[1].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; -@@ -186,7 +186,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("f.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/f.service")); -+ assert_se(streq(changes[0].source, "../f.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/x.target.wants/f.service"); - assert_se(streq(changes[0].path, p)); - assert_se(changes[1].type_or_errno == UNIT_FILE_DESTINATION_NOT_PRESENT); -@@ -280,7 +280,8 @@ TEST(linked_units) { - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked.service"); - for (i = 0 ; i < n_changes; i++) { - assert_se(changes[i].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[i].source, "/opt/linked.service")); -+ assert_se(STR_IN_SET(changes[i].source, -+ "../linked.service", "/opt/linked.service")); - - if (p && streq(changes[i].path, p)) - p = NULL; -@@ -322,7 +323,8 @@ TEST(linked_units) { - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked2.service"); - for (i = 0 ; i < n_changes; i++) { - assert_se(changes[i].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[i].source, "/opt/linked2.service")); -+ assert_se(STR_IN_SET(changes[i].source, -+ "../linked2.service", "/opt/linked2.service")); - - if (p && streq(changes[i].path, p)) - p = NULL; -@@ -340,7 +342,7 @@ TEST(linked_units) { - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(startswith(changes[0].path, root)); - assert_se(endswith(changes[0].path, "linked3.service")); -- assert_se(streq(changes[0].source, "/opt/linked3.service")); -+ assert_se(streq(changes[0].source, "../linked3.service")); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - } -@@ -371,7 +373,7 @@ TEST(default) { - assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, 0, root, "test-default.target", &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/test-default-real.target")); -+ assert_se(streq(changes[0].source, "test-default-real.target")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR "/" SPECIAL_DEFAULT_TARGET); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -401,7 +403,7 @@ TEST(add_dependency) { - assert_se(unit_file_add_dependency(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/real-add-dependency-test-service.service")); -+ assert_se(streq(changes[0].source, "../real-add-dependency-test-service.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/real-add-dependency-test-target.target.wants/real-add-dependency-test-service.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -442,7 +444,7 @@ TEST(template_enable) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); -+ assert_se(streq(changes[0].source, "../template@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@def.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -473,13 +475,14 @@ TEST(template_enable) { - - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); -+ assert_se(streq(changes[0].source, "../template@foo.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@foo.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -+ assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0); -+ assert_se(state == UNIT_FILE_INDIRECT); - assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -@@ -506,7 +509,7 @@ TEST(template_enable) { - - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template-symlink@quux.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); -+ assert_se(streq(changes[0].source, "../template@quux.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@quux.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -552,7 +555,7 @@ TEST(indirect) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/indirectb.service")); -+ assert_se(streq(changes[0].source, "../indirectb.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/indirectb.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -604,7 +607,7 @@ TEST(preset_and_list) { - assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/preset-yes.service")); -+ assert_se(streq(changes[0].source, "../preset-yes.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/preset-yes.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -641,7 +644,7 @@ TEST(preset_and_list) { - for (i = 0; i < n_changes; i++) { - - if (changes[i].type_or_errno == UNIT_FILE_SYMLINK) { -- assert_se(streq(changes[i].source, "/usr/lib/systemd/system/preset-yes.service")); -+ assert_se(streq(changes[i].source, "../preset-yes.service")); - assert_se(streq(changes[i].path, p)); - } else - assert_se(changes[i].type_or_errno == UNIT_FILE_UNLINK); -@@ -757,7 +760,7 @@ TEST(preset_order) { - assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/prefix-1.service")); -+ assert_se(streq(changes[0].source, "../prefix-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/prefix-1.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -866,8 +869,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-1.service")); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-1.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-1.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-1.service"); -@@ -880,8 +883,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, SYSTEM_CONFIG_UNIT_DIR"/with-dropin-2.service")); -- assert_se(streq(changes[1].source, SYSTEM_CONFIG_UNIT_DIR"/with-dropin-2.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-2.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-2.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-2.service"); -@@ -894,8 +897,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-3.service")); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-3.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-3.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-3.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-3.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-3.service"); -@@ -908,8 +911,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-4a.service")); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-4b.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-4a.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-4b.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-4a.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-4b.service"); -@@ -975,8 +978,8 @@ TEST(with_dropin_template) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-1@.service")); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-1@.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-1@instance-1.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-1@instance-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-1@instance-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-1@instance-1.service"); -@@ -988,8 +991,8 @@ TEST(with_dropin_template) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-2@.service")); -- assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-2@.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-2@instance-1.service")); -+ assert_se(streq(changes[1].source, "../with-dropin-2@instance-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2@instance-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-2@instance-1.service"); -@@ -1000,7 +1003,7 @@ TEST(with_dropin_template) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-2.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-2@.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-2@instance-2.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2@instance-2.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -1009,7 +1012,7 @@ TEST(with_dropin_template) { - assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3@.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-3@.service")); -+ assert_se(streq(changes[0].source, "../with-dropin-3@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-3@instance-2.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 4462fb386e..9463433c5b 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -68,27 +68,27 @@ EOF - "$systemctl" --root="$root" enable test1 && { echo "Expected failure" >&2; exit 1; } - test -h "$root/etc/systemd/system/default.target.wants/test1.service" - test -h "$root/etc/systemd/system/special.target.requires/test1.service" --test ! -e "$root/etc/systemd/system/test1-goodalias.service" -+test -e "$root/etc/systemd/system/test1-goodalias.service" - test -h "$root/etc/systemd/system/test1-goodalias.service" --test ! -e "$root/etc/systemd/system/test1@badalias.service" --test ! -e "$root/etc/systemd/system/test1-badalias.target" --test ! -e "$root/etc/systemd/system/test1-badalias.socket" -+test ! -h "$root/etc/systemd/system/test1@badalias.service" -+test ! -h "$root/etc/systemd/system/test1-badalias.target" -+test ! -h "$root/etc/systemd/system/test1-badalias.socket" -+test -e "$root/etc/systemd/system/test1-goodalias2.service" - test -h "$root/etc/systemd/system/test1-goodalias2.service" - - : -------aliases in reeanble---------------------------------- - "$systemctl" --root="$root" reenable test1 && { echo "Expected failure" >&2; exit 1; } --test -h "$root/etc/systemd/system/default.target.wants/test1.service" --test ! -e "$root/etc/systemd/system/test1-goodalias.service" --test -h "$root/etc/systemd/system/test1-goodalias.service" -+islink "$root/etc/systemd/system/default.target.wants/test1.service" "../test1.service" -+islink "$root/etc/systemd/system/test1-goodalias.service" "test1.service" - --test ! -e "$root/etc/systemd/system/test1@badalias.service" --test ! -e "$root/etc/systemd/system/test1-badalias.target" --test ! -e "$root/etc/systemd/system/test1-badalias.socket" -+test ! -h "$root/etc/systemd/system/test1@badalias.service" -+test ! -h "$root/etc/systemd/system/test1-badalias.target" -+test ! -h "$root/etc/systemd/system/test1-badalias.socket" - - "$systemctl" --root="$root" disable test1 --test ! -e "$root/etc/systemd/system/default.target.wants/test1.service" --test ! -e "$root/etc/systemd/system/special.target.requires/test1.service" --test ! -e "$root/etc/systemd/system/test1-goodalias.service" -+test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" -+test ! -h "$root/etc/systemd/system/test1-goodalias.service" - - : -------also units------------------------------------------- - cat >"$root/etc/systemd/system/test2.socket" <&2; exit 1; } - islink "$root/etc/systemd/system/link1.path" "/link1.path" --islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - - : -------enable bad suffix------------------------------------ - cp "$root/link1.path" "$root/subdir/link1.suffix" -@@ -204,11 +204,11 @@ test ! -h "$root/etc/systemd/system/paths.target.wants/link1.path" - - "$systemctl" --root="$root" enable 'link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" --islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - - "$systemctl" --root="$root" reenable 'link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" --islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" -+islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - - : -------manual link------------------------------------------ - cat >"$root/link3.suffix" <"$root/etc/systemd/system/templ1@.service" < +Date: Fri, 8 Jul 2022 20:23:13 +0200 +Subject: [PATCH] test: add a test for the OPENPGPKEY RR + +(cherry picked from commit 05bb428952d0a91c53398e8b20801af9fb7530f1) + +Related: #2138081 +--- + test/knot-data/zones/signed.test.zone | 14 ++++++++++++++ + test/units/testsuite-75.sh | 6 ++++++ + 2 files changed, 20 insertions(+) + +diff --git a/test/knot-data/zones/signed.test.zone b/test/knot-data/zones/signed.test.zone +index 6ddeb0048e..a2baac4284 100644 +--- a/test/knot-data/zones/signed.test.zone ++++ b/test/knot-data/zones/signed.test.zone +@@ -57,3 +57,17 @@ _mysvc._tcp SRV 10 5 1234 myservice + _invalidsvc._udp SRV 5 5 1111 invalidservice + + _untrustedsvc._udp SRV 5 5 1111 myservice.untrusted.test. ++ ++; OPENPGPKEY RR for mr.smith@signed.test ++; The hash was generated using `echo -ne mr.smith | sha256sum | head -c56` ++; and exported via `gpg --export mr.smith | base64` ++5a786cdc59c161cdafd818143705026636962198c66ed4c5b3da321e._openpgpkey OPENPGPKEY ( ++ mDMEYshhzhYJKwYBBAHaRw8BAQdAuU2RxKaycSdaR5YZ/q+/yoHeil/1WNRDVbpjPSd6QBa0GW1y ++ LnNtaXRoQHNpZ25lZC50ZXN0LnpvbmWImQQTFggAQRYhBIOXLJwlwowvXQVeJ3d9yvMKUDBWBQJi ++ yGHOAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEHd9yvMKUDBWo6MA/2oC ++ zdnzMlK9gM5bNCFfPyagJfFfv7fW1l7WXTve6FJtAP0faW24ahE1okjmrsTUwqZHvDThysW5zTSt ++ j49S3JQDA7g4BGLIYc4SCisGAQQBl1UBBQEBB0CuNcTAt5AUE3seFN/Gm2euC+8dgtztyzoO/78K ++ ictFLAMBCAeIeAQYFggAIBYhBIOXLJwlwowvXQVeJ3d9yvMKUDBWBQJiyGHOAhsMAAoJEHd9yvMK ++ UDBWtxkA/jlbUgHpSoTKFNNTeXYbTz9jnoupe9eT4O3tU55ofwO7AQCa5ntSIuzDJ1E2iy7oOLOZ ++ m2ocNqpC7SULHhSKYfUWDg== ++) +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index 66cc6c9d66..d36cab2923 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -380,6 +380,12 @@ grep -qF "myservice.untrusted.test:1111" "$RUN_OUT" + grep -qF "10.0.0.123" "$RUN_OUT" + grep -qF "fd00:dead:beef:cafe::123" "$RUN_OUT" + grep -qF "authenticated: yes" "$RUN_OUT" ++# Check OPENPGPKEY support ++run delv -t OPENPGPKEY 5a786cdc59c161cdafd818143705026636962198c66ed4c5b3da321e._openpgpkey.signed.test ++grep -qF "; fully validated" "$RUN_OUT" ++run resolvectl openpgp mr.smith@signed.test ++grep -qF "5a786cdc59c161cdafd818143705026636962198c66ed4c5b3da321e._openpgpkey.signed.test" "$RUN_OUT" ++grep -qF "authenticated: yes" "$RUN_OUT" + + # DNSSEC validation with multiple records of the same type for the same name + # Issue: https://github.com/systemd/systemd/issues/22002 diff --git a/SOURCES/0194-shared-install-when-looking-for-symlinks-in-.wants-..patch b/SOURCES/0194-shared-install-when-looking-for-symlinks-in-.wants-..patch deleted file mode 100644 index 54f955e..0000000 --- a/SOURCES/0194-shared-install-when-looking-for-symlinks-in-.wants-..patch +++ /dev/null @@ -1,177 +0,0 @@ -From 43f62843fbc5e5d085874393c24cf52ebb6658eb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 16 Mar 2022 17:37:58 +0100 -Subject: [PATCH] shared/install: when looking for symlinks in - .wants/.requires, ignore symlink target -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We'd say that file is enabled indirectly if we had a symlink like: - foo@.service ← bar.target.wants/foo@one.service -but not when we had - foo@one.service ← bar.target.wants/foo@one.service - -The effect of both link types is the same. In fact we don't care -about the symlink target. (We'll warn if it is mismatched, but we honour -it anyway.) - -So let's use the original match logic only for aliases. -For .wants/.requires we instead look for a matching source name, -or a source name that matches after stripping of instance. - -(cherry picked from commit 466f6979c90aaee62c33723392cc49c6638a3f46) - -Related: #2082131 ---- - src/shared/install.c | 93 ++++++++++++++++++++++++++++---------------- - 1 file changed, 60 insertions(+), 33 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 1a2b0ccf24..a864039f44 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -748,7 +748,8 @@ static int find_symlinks_in_directory( - const char *dir_path, - const char *root_dir, - const UnitFileInstallInfo *info, -- bool match_aliases, -+ bool ignore_destination, -+ bool match_name, - bool ignore_same_name, - const char *config_path, - bool *same_name_link) { -@@ -756,51 +757,67 @@ static int find_symlinks_in_directory( - int r = 0; - - FOREACH_DIRENT(de, dir, return -errno) { -- _cleanup_free_ char *dest = NULL; -- bool found_path = false, found_dest, b = false; -+ bool found_path = false, found_dest = false, b = false; - int q; - - if (de->d_type != DT_LNK) - continue; - -- /* Acquire symlink destination */ -- q = readlinkat_malloc(dirfd(dir), de->d_name, &dest); -- if (q == -ENOENT) -- continue; -- if (q < 0) { -- if (r == 0) -- r = q; -- continue; -- } -+ if (!ignore_destination) { -+ _cleanup_free_ char *dest = NULL; -+ -+ /* Acquire symlink destination */ -+ q = readlinkat_malloc(dirfd(dir), de->d_name, &dest); -+ if (q == -ENOENT) -+ continue; -+ if (q < 0) { -+ if (r == 0) -+ r = q; -+ continue; -+ } - -- /* Make absolute */ -- if (!path_is_absolute(dest)) { -- char *x; -+ /* Make absolute */ -+ if (!path_is_absolute(dest)) { -+ char *x; - -- x = path_join(dir_path, dest); -- if (!x) -- return -ENOMEM; -+ x = path_join(dir_path, dest); -+ if (!x) -+ return -ENOMEM; - -- free_and_replace(dest, x); -+ free_and_replace(dest, x); -+ } -+ -+ /* Check if what the symlink points to matches what we are looking for */ -+ found_dest = streq(basename(dest), info->name); - } - - assert(unit_name_is_valid(info->name, UNIT_NAME_ANY)); -- if (!ignore_same_name) -- /* Check if the symlink itself matches what we are looking for. -- * -- * If ignore_same_name is specified, we are in one of the directories which -- * have lower priority than the unit file, and even if a file or symlink with -- * this name was found, we should ignore it. */ -- found_path = streq(de->d_name, info->name); - -- /* Check if what the symlink points to matches what we are looking for */ -- found_dest = streq(basename(dest), info->name); -+ /* Check if the symlink itself matches what we are looking for. -+ * -+ * If ignore_destination is specified, we only look at the source name. -+ * -+ * If ignore_same_name is specified, we are in one of the directories which -+ * have lower priority than the unit file, and even if a file or symlink with -+ * this name was found, we should ignore it. */ -+ -+ if (ignore_destination || !ignore_same_name) -+ found_path = streq(de->d_name, info->name); -+ -+ if (!found_path && ignore_destination) { -+ _cleanup_free_ char *template = NULL; -+ -+ q = unit_name_template(de->d_name, &template); -+ if (q < 0 && q != -EINVAL) -+ return q; -+ if (q >= 0) -+ found_dest = streq(template, info->name); -+ } - - if (found_path && found_dest) { - _cleanup_free_ char *p = NULL, *t = NULL; - -- /* Filter out same name links in the main -- * config path */ -+ /* Filter out same name links in the main config path */ - p = path_make_absolute(de->d_name, dir_path); - t = path_make_absolute(info->name, config_path); - -@@ -813,7 +830,7 @@ static int find_symlinks_in_directory( - if (b) - *same_name_link = true; - else if (found_path || found_dest) { -- if (!match_aliases) -+ if (!match_name) - return 1; - - /* Check if symlink name is in the set of names used by [Install] */ -@@ -872,7 +889,12 @@ static int find_symlinks( - continue; - } - -- r = find_symlinks_in_directory(d, path, root_dir, i, match_name, ignore_same_name, config_path, same_name_link); -+ r = find_symlinks_in_directory(d, path, root_dir, i, -+ /* ignore_destination= */ true, -+ /* match_name= */ match_name, -+ /* ignore_same_name= */ ignore_same_name, -+ config_path, -+ same_name_link); - if (r > 0) - return 1; - else if (r < 0) -@@ -881,7 +903,12 @@ static int find_symlinks( - - /* We didn't find any suitable symlinks in .wants or .requires directories, let's look for linked unit files in this directory. */ - rewinddir(config_dir); -- return find_symlinks_in_directory(config_dir, config_path, root_dir, i, match_name, ignore_same_name, config_path, same_name_link); -+ return find_symlinks_in_directory(config_dir, config_path, root_dir, i, -+ /* ignore_destination= */ false, -+ /* match_name= */ match_name, -+ /* ignore_same_name= */ ignore_same_name, -+ config_path, -+ same_name_link); - } - - static int find_symlinks_in_scope( diff --git a/SOURCES/0194-test-don-t-hang-indefinitely-on-no-match.patch b/SOURCES/0194-test-don-t-hang-indefinitely-on-no-match.patch new file mode 100644 index 0000000..3d67f31 --- /dev/null +++ b/SOURCES/0194-test-don-t-hang-indefinitely-on-no-match.patch @@ -0,0 +1,25 @@ +From 3da691ba7ed23db37930dff5452fe3c3dcd9a963 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Fri, 27 Jan 2023 14:29:42 +0100 +Subject: [PATCH] test: don't hang indefinitely on no match + +(cherry picked from commit 270e9dcdb8c7f0f3c8b56803d0ef7bbf867b9fd1) + +Related: #2138081 +--- + test/units/testsuite-75.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh +index d36cab2923..ddd86d09bb 100755 +--- a/test/units/testsuite-75.sh ++++ b/test/units/testsuite-75.sh +@@ -41,7 +41,7 @@ monitor_check_rr() ( + # displayed. We turn off pipefail for this, since we don't care about the + # lhs of this pipe expression, we only care about the rhs' result to be + # clean +- journalctl -u resmontest.service --since "$since" -f --full | grep -m1 "$match" ++ timeout -v 30s journalctl -u resmontest.service --since "$since" -f --full | grep -m1 "$match" + ) + + # Test for resolvectl, resolvconf diff --git a/SOURCES/0195-shared-install-stop-passing-duplicate-root-argument-.patch b/SOURCES/0195-shared-install-stop-passing-duplicate-root-argument-.patch deleted file mode 100644 index 29bd4e3..0000000 --- a/SOURCES/0195-shared-install-stop-passing-duplicate-root-argument-.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 0d19f19be9a93642f10b4c039aafd9e62f35e8fc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 17 Mar 2022 10:16:30 +0100 -Subject: [PATCH] shared/install: stop passing duplicate root argument to - install_name_printf() - -All callers were just passing info + info->root, we can simplify this. - -(cherry picked from commit 38e8a6c7fdffd3389cb3596139b1309579193946) - -Related: #2082131 ---- - src/shared/install-printf.c | 7 +++---- - src/shared/install-printf.h | 3 +-- - src/shared/install.c | 8 ++++---- - src/test/test-load-fragment.c | 2 +- - 4 files changed, 9 insertions(+), 11 deletions(-) - -diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c -index 963102674b..7aad1b7443 100644 ---- a/src/shared/install-printf.c -+++ b/src/shared/install-printf.c -@@ -105,9 +105,8 @@ static int specifier_last_component(char specifier, const void *data, const char - - int install_name_printf( - UnitFileScope scope, -- const UnitFileInstallInfo *i, -+ const UnitFileInstallInfo *info, - const char *format, -- const char *root, - char **ret) { - /* This is similar to unit_name_printf() */ - -@@ -124,9 +123,9 @@ int install_name_printf( - {} - }; - -- assert(i); -+ assert(info); - assert(format); - assert(ret); - -- return specifier_printf(format, UNIT_NAME_MAX, table, root, i, ret); -+ return specifier_printf(format, UNIT_NAME_MAX, table, info->root, info, ret); - } -diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h -index d2cccdf66d..60d3a9fc55 100644 ---- a/src/shared/install-printf.h -+++ b/src/shared/install-printf.h -@@ -6,7 +6,6 @@ - - int install_name_printf( - UnitFileScope scope, -- const UnitFileInstallInfo *i, -+ const UnitFileInstallInfo *info, - const char *format, -- const char *root, - char **ret); -diff --git a/src/shared/install.c b/src/shared/install.c -index a864039f44..f911d527df 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1205,7 +1205,7 @@ static int config_parse_also( - if (r == 0) - break; - -- r = install_name_printf(ctx->scope, info, word, info->root, &printed); -+ r = install_name_printf(ctx->scope, info, word, &printed); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve unit name in Also=\"%s\": %m", word); -@@ -1254,7 +1254,7 @@ static int config_parse_default_instance( - return log_syntax(unit, LOG_WARNING, filename, line, 0, - "DefaultInstance= only makes sense for template units, ignoring."); - -- r = install_name_printf(ctx->scope, info, rvalue, info->root, &printed); -+ r = install_name_printf(ctx->scope, info, rvalue, &printed); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "Failed to resolve instance name in DefaultInstance=\"%s\": %m", rvalue); -@@ -1850,7 +1850,7 @@ static int install_info_symlink_alias( - STRV_FOREACH(s, info->aliases) { - _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - -- q = install_name_printf(scope, info, *s, info->root, &dst); -+ q = install_name_printf(scope, info, *s, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - r = r < 0 ? r : q; -@@ -1940,7 +1940,7 @@ static int install_info_symlink_wants( - STRV_FOREACH(s, list) { - _cleanup_free_ char *dst = NULL; - -- q = install_name_printf(scope, info, *s, info->root, &dst); -+ q = install_name_printf(scope, info, *s, &dst); - if (q < 0) { - unit_file_changes_add(changes, n_changes, q, *s, NULL); - return q; -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index 9df53cec2b..a87c654f4e 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -531,7 +531,7 @@ TEST(install_printf, .sd_booted = true) { - _cleanup_free_ char *t = NULL, \ - *d1 = ASSERT_PTR(strdup(i.name)), \ - *d2 = ASSERT_PTR(strdup(i.path)); \ -- int r = install_name_printf(scope, &src, pattern, NULL, &t); \ -+ int r = install_name_printf(scope, &src, pattern, &t); \ - assert_se(result ? r >= 0 : r < 0); \ - memzero(i.name, strlen(i.name)); \ - memzero(i.path, strlen(i.path)); \ diff --git a/SOURCES/0195-test-ndisc-fix-memleak-and-fd-leak.patch b/SOURCES/0195-test-ndisc-fix-memleak-and-fd-leak.patch new file mode 100644 index 0000000..fd2c6e5 --- /dev/null +++ b/SOURCES/0195-test-ndisc-fix-memleak-and-fd-leak.patch @@ -0,0 +1,139 @@ +From 1d93f12c7068dedf9393f8d4d86335e1f40537c3 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 20 Jan 2023 14:37:12 +0900 +Subject: [PATCH] test-ndisc: fix memleak and fd leak + +Fixes issues reported at #22576. + +(cherry picked from commit 86d82cb8885afaac374225b945b2efc2a013cb7e) + +Related: #2138081 +--- + src/libsystemd-network/test-ndisc-ra.c | 20 ++++++-------------- + src/libsystemd-network/test-ndisc-rs.c | 21 ++++++++------------- + 2 files changed, 14 insertions(+), 27 deletions(-) + +diff --git a/src/libsystemd-network/test-ndisc-ra.c b/src/libsystemd-network/test-ndisc-ra.c +index 001df4d473..bd8c0fd426 100644 +--- a/src/libsystemd-network/test-ndisc-ra.c ++++ b/src/libsystemd-network/test-ndisc-ra.c +@@ -53,7 +53,6 @@ static uint8_t advertisement[] = { + + static bool test_stopped; + static int test_fd[2]; +-static sd_event_source *recv_router_advertisement; + static struct { + struct in6_addr address; + unsigned char prefixlen; +@@ -281,9 +280,9 @@ static int radv_recv(sd_event_source *s, int fd, uint32_t revents, void *userdat + } + + TEST(ra) { +- sd_event *e; +- sd_radv *ra; +- unsigned i; ++ _cleanup_(sd_event_unrefp) sd_event *e = NULL; ++ _cleanup_(sd_event_source_unrefp) sd_event_source *recv_router_advertisement = NULL; ++ _cleanup_(sd_radv_unrefp) sd_radv *ra = NULL; + + assert_se(socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC | SOCK_NONBLOCK, 0, test_fd) >= 0); + +@@ -303,7 +302,7 @@ TEST(ra) { + assert_se(sd_radv_set_rdnss(ra, 60, &test_rdnss, 1) >= 0); + assert_se(sd_radv_set_dnssl(ra, 60, (char **)test_dnssl) >= 0); + +- for (i = 0; i < ELEMENTSOF(prefix); i++) { ++ for (unsigned i = 0; i < ELEMENTSOF(prefix); i++) { + sd_radv_prefix *p; + + printf("Test prefix %u\n", i); +@@ -324,8 +323,8 @@ TEST(ra) { + assert_se(!p); + } + +- assert_se(sd_event_add_io(e, &recv_router_advertisement, test_fd[0], +- EPOLLIN, radv_recv, ra) >= 0); ++ assert_se(sd_event_add_io(e, &recv_router_advertisement, test_fd[0], EPOLLIN, radv_recv, ra) >= 0); ++ assert_se(sd_event_source_set_io_fd_own(recv_router_advertisement, true) >= 0); + + assert_se(sd_event_add_time_relative(e, NULL, CLOCK_BOOTTIME, + 2 * USEC_PER_SEC, 0, +@@ -334,13 +333,6 @@ TEST(ra) { + assert_se(sd_radv_start(ra) >= 0); + + assert_se(sd_event_loop(e) >= 0); +- +- ra = sd_radv_unref(ra); +- assert_se(!ra); +- +- close(test_fd[0]); +- +- sd_event_unref(e); + } + + DEFINE_TEST_MAIN(LOG_DEBUG); +diff --git a/src/libsystemd-network/test-ndisc-rs.c b/src/libsystemd-network/test-ndisc-rs.c +index 3c679f60b5..e501b64377 100644 +--- a/src/libsystemd-network/test-ndisc-rs.c ++++ b/src/libsystemd-network/test-ndisc-rs.c +@@ -10,6 +10,7 @@ + #include "sd-ndisc.h" + + #include "alloc-util.h" ++#include "fd-util.h" + #include "hexdecoct.h" + #include "icmp6-util.h" + #include "socket-util.h" +@@ -255,8 +256,8 @@ static void test_callback(sd_ndisc *nd, sd_ndisc_event_t event, sd_ndisc_router + } + + TEST(rs) { +- sd_event *e; +- sd_ndisc *nd; ++ _cleanup_(sd_event_unrefp) sd_event *e = NULL; ++ _cleanup_(sd_ndisc_unrefp) sd_ndisc *nd = NULL; + + send_ra_function = send_ra; + +@@ -279,17 +280,13 @@ TEST(rs) { + assert_se(sd_ndisc_start(nd) >= 0); + assert_se(sd_ndisc_start(nd) >= 0); + assert_se(sd_ndisc_stop(nd) >= 0); ++ test_fd[1] = safe_close(test_fd[1]); + + assert_se(sd_ndisc_start(nd) >= 0); + + assert_se(sd_event_loop(e) >= 0); + +- nd = sd_ndisc_unref(nd); +- assert_se(!nd); +- +- close(test_fd[1]); +- +- sd_event_unref(e); ++ test_fd[1] = safe_close(test_fd[1]); + } + + static int test_timeout_value(uint8_t flags) { +@@ -342,8 +339,8 @@ static int test_timeout_value(uint8_t flags) { + } + + TEST(timeout) { +- sd_event *e; +- sd_ndisc *nd; ++ _cleanup_(sd_event_unrefp) sd_event *e = NULL; ++ _cleanup_(sd_ndisc_unrefp) sd_ndisc *nd = NULL; + + send_ra_function = test_timeout_value; + +@@ -367,9 +364,7 @@ TEST(timeout) { + + assert_se(sd_event_loop(e) >= 0); + +- nd = sd_ndisc_unref(nd); +- +- sd_event_unref(e); ++ test_fd[1] = safe_close(test_fd[1]); + } + + DEFINE_TEST_MAIN(LOG_DEBUG); diff --git a/SOURCES/0196-basic-unit-file-reverse-negative-conditional.patch b/SOURCES/0196-basic-unit-file-reverse-negative-conditional.patch deleted file mode 100644 index 633fcd4..0000000 --- a/SOURCES/0196-basic-unit-file-reverse-negative-conditional.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 4ac4cc6e4b17dea8f071e260cd8d3eae68ba883d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 17 Mar 2022 11:46:03 +0100 -Subject: [PATCH] basic/unit-file: reverse negative conditional - -Having the reverse condition first makes changes that I want to do -later awkward, so reverse it as a separate step first. - -(cherry picked from commit bd177c62158df97785af0d360c4fc9c266311d88) - -Related: #2082131 ---- - src/basic/unit-file.c | 32 ++++++++++++++++---------------- - 1 file changed, 16 insertions(+), 16 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 6cf66b45cf..2474648ceb 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -326,27 +326,16 @@ int unit_file_resolve_symlink( - - assert(path_is_absolute(simplified)); - -- /* Check if the symlink goes outside of our search path. -- * If yes, it's a linked unit file or mask, and we don't care about the target name -+ /* Check if the symlink remain inside of of our search path. -+ * If yes, it is an alias. Verify that it is valid. -+ * -+ * If no, then this is a linked unit file or mask, and we don't care about the target name - * when loading units, and we return the link *source* (resolve_destination_target == false); - * When this is called for installation purposes, we want the final destination, - * so we return the *target*. -- * -- * Otherwise, let's verify that it's a good alias. - */ - const char *tail = path_startswith_strv(simplified, search_path); -- if (!tail) { -- log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified); -- -- if (resolve_destination_target) -- dst = TAKE_PTR(simplified); -- else { -- dst = path_join(dir, filename); -- if (!dst) -- return log_oom(); -- } -- -- } else { -+ if (tail) { /* An alias */ - _cleanup_free_ char *target_name = NULL; - - r = path_extract_filename(simplified, &target_name); -@@ -361,6 +350,17 @@ int unit_file_resolve_symlink( - dir, filename, simplified); - - dst = resolve_destination_target ? TAKE_PTR(simplified) : TAKE_PTR(target_name); -+ -+ } else { -+ log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified); -+ -+ if (resolve_destination_target) -+ dst = TAKE_PTR(simplified); -+ else { -+ dst = path_join(dir, filename); -+ if (!dst) -+ return log_oom(); -+ } - } - - *ret_destination = TAKE_PTR(dst); diff --git a/SOURCES/0196-test-unit-name-fix-fd-leak.patch b/SOURCES/0196-test-unit-name-fix-fd-leak.patch new file mode 100644 index 0000000..272bfaa --- /dev/null +++ b/SOURCES/0196-test-unit-name-fix-fd-leak.patch @@ -0,0 +1,33 @@ +From a1ab44a859080aebd79355f58e57739ce4225e97 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 20 Jan 2023 14:54:44 +0900 +Subject: [PATCH] test-unit-name: fix fd leak + +Fixes an issue reported at https://github.com/systemd/systemd/issues/22576#issuecomment-1396774385. + +(cherry picked from commit 36f73b6c67afd9c826e612b751ea8f9249da7985) + +Related: #2138081 +--- + src/test/test-unit-name.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c +index 43fdb15d1c..eec4831b4e 100644 +--- a/src/test/test-unit-name.c ++++ b/src/test/test-unit-name.c +@@ -241,11 +241,13 @@ TEST_RET(unit_printf, .sd_booted = true) { + *user, *group, *uid, *gid, *home, *shell, + *tmp_dir, *var_tmp_dir; + _cleanup_(manager_freep) Manager *m = NULL; ++ _cleanup_close_ int fd = -EBADF; + Unit *u; + int r; + + _cleanup_(unlink_tempfilep) char filename[] = "/tmp/test-unit_printf.XXXXXX"; +- assert_se(mkostemp_safe(filename) >= 0); ++ fd = mkostemp_safe(filename); ++ assert_se(fd >= 0); + + /* Using the specifier functions is admittedly a bit circular, but we don't want to reimplement the + * logic a second time. We're at least testing that the hookup works. */ diff --git a/SOURCES/0197-shared-install-split-UNIT_FILE_SYMLINK-into-two-stat.patch b/SOURCES/0197-shared-install-split-UNIT_FILE_SYMLINK-into-two-stat.patch deleted file mode 100644 index f5b972c..0000000 --- a/SOURCES/0197-shared-install-split-UNIT_FILE_SYMLINK-into-two-stat.patch +++ /dev/null @@ -1,109 +0,0 @@ -From e2d699c92944c6251f9de161c9e3ae93d915c4e0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 17 Mar 2022 15:50:16 +0100 -Subject: [PATCH] shared/install: split UNIT_FILE_SYMLINK into two states - -The two states are distinguished, but are treated everywhere identically, -so there is no difference in behaviour except for slighlty different log -output. - -(cherry picked from commit 48ed75adabef3427767038fa155e55b3b0d48f35) - -Related: #2082131 ---- - src/basic/unit-file.c | 6 ++++-- - src/shared/install.c | 14 +++++++++----- - src/shared/install.h | 3 ++- - 3 files changed, 15 insertions(+), 8 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 2474648ceb..7c1ae515e1 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -282,7 +282,9 @@ int unit_file_resolve_symlink( - * - * If resolve_destination_target is true, an absolute path will be returned. - * If not, an absolute path is returned for linked unit files, and a relative -- * path otherwise. */ -+ * path otherwise. -+ * -+ * Returns an error, false if this is an alias, true if it's a linked unit file. */ - - assert(filename); - assert(ret_destination); -@@ -364,7 +366,7 @@ int unit_file_resolve_symlink( - } - - *ret_destination = TAKE_PTR(dst); -- return 0; -+ return !tail; /* true if linked unit file */ - } - - int unit_file_build_name_map( -diff --git a/src/shared/install.c b/src/shared/install.c -index f911d527df..b33f7d4bc1 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -93,8 +93,9 @@ void unit_file_presets_freep(UnitFilePresets *p) { - - static const char *const unit_file_type_table[_UNIT_FILE_TYPE_MAX] = { - [UNIT_FILE_TYPE_REGULAR] = "regular", -- [UNIT_FILE_TYPE_SYMLINK] = "symlink", -- [UNIT_FILE_TYPE_MASKED] = "masked", -+ [UNIT_FILE_TYPE_LINKED] = "linked", -+ [UNIT_FILE_TYPE_ALIAS] = "alias", -+ [UNIT_FILE_TYPE_MASKED] = "masked", - }; - - DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(unit_file_type, UnitFileType); -@@ -1404,14 +1405,17 @@ static int unit_file_load_or_readlink( - true, &info->symlink_target); - if (r < 0) - return r; -+ bool outside_search_path = r > 0; - - r = null_or_empty_path_with_root(info->symlink_target, lp->root_dir); - if (r < 0 && r != -ENOENT) - return log_debug_errno(r, "Failed to stat %s: %m", info->symlink_target); - if (r > 0) - info->type = UNIT_FILE_TYPE_MASKED; -+ else if (outside_search_path) -+ info->type = UNIT_FILE_TYPE_LINKED; - else -- info->type = UNIT_FILE_TYPE_SYMLINK; -+ info->type = UNIT_FILE_TYPE_ALIAS; - - return 0; - } -@@ -1550,7 +1554,7 @@ static int install_info_follow( - assert(ctx); - assert(info); - -- if (info->type != UNIT_FILE_TYPE_SYMLINK) -+ if (!IN_SET(info->type, UNIT_FILE_TYPE_ALIAS, UNIT_FILE_TYPE_LINKED)) - return -EINVAL; - if (!info->symlink_target) - return -EINVAL; -@@ -1591,7 +1595,7 @@ static int install_info_traverse( - return r; - - i = start; -- while (i->type == UNIT_FILE_TYPE_SYMLINK) { -+ while (IN_SET(i->type, UNIT_FILE_TYPE_ALIAS, UNIT_FILE_TYPE_LINKED)) { - /* Follow the symlink */ - - if (++k > UNIT_FILE_FOLLOW_SYMLINK_MAX) -diff --git a/src/shared/install.h b/src/shared/install.h -index dba6987406..95427537f2 100644 ---- a/src/shared/install.h -+++ b/src/shared/install.h -@@ -70,7 +70,8 @@ struct UnitFileList { - - enum UnitFileType { - UNIT_FILE_TYPE_REGULAR, -- UNIT_FILE_TYPE_SYMLINK, -+ UNIT_FILE_TYPE_LINKED, -+ UNIT_FILE_TYPE_ALIAS, - UNIT_FILE_TYPE_MASKED, - _UNIT_FILE_TYPE_MAX, - _UNIT_FILE_TYPE_INVALID = -EINVAL, diff --git a/SOURCES/0197-test-bump-D-Bus-service-start-timeout-if-we-run-with.patch b/SOURCES/0197-test-bump-D-Bus-service-start-timeout-if-we-run-with.patch new file mode 100644 index 0000000..ba9252a --- /dev/null +++ b/SOURCES/0197-test-bump-D-Bus-service-start-timeout-if-we-run-with.patch @@ -0,0 +1,57 @@ +From f2a1b51350d535cbb6ed3a3d11071651e54f5c3c Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 17 Jan 2023 18:04:30 +0100 +Subject: [PATCH] test: bump D-Bus service start timeout if we run without + accel + +The default (25s) doesn't seem to be enough in some cases (especially +in VMs without acceleration), causing spurious timeouts: + +[ 174.297658] dbus-daemon[647]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.0' (uid=0 pid=645 comm="hostnamectl " label="kernel") +[ 184.202313] systemd[1]: systemd-update-utmp-runlevel.service: Consumed 1.253s CPU time. +[ 197.335422] systemd[1]: Started dbus.service. +[ 199.211468] testsuite-71.sh[639]: + assert_in 'Static hostname: H' '' +[ 199.347192] dbus-daemon[647]: [system] Failed to activate service 'org.freedesktop.hostname1': timed out (service_start_timeout=25000ms) +[ 199.394879] testsuite-71.sh[657]: + set +ex +[ 199.438918] testsuite-71.sh[657]: FAIL: 'Static hostname: H' not found in: +[ 200.966006] systemd-logind[631]: Watching system buttons on /dev/input/event0 (Power Button) +[ 201.008178] systemd-logind[631]: Watching system buttons on /dev/input/event1 (AT Translated Set 2 keyboard) +[ 201.034106] systemd-logind[631]: New seat seat0. +[ 201.238267] sh[658]: + systemctl poweroff --no-block +[ 201.329890] systemd[1]: Starting systemd-hostnamed.service... +[ 202.156622] systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully. +[ 204.818913] hostnamectl[645]: Failed to query system properties: Connection timed out +[ 205.195583] systemd[1]: testsuite-71.service: Main process exited, code=exited, status=1/FAILURE +[ 205.227237] systemd[1]: testsuite-71.service: Failed with result 'exit-code'. +[ 205.712780] systemd[1]: Failed to start testsuite-71.service. + +(cherry picked from commit c78d18215b3e5b0f0896ddb1d0d72c666b5e830b) + +Related: #2138081 +--- + test/test-functions | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/test/test-functions b/test/test-functions +index 94e11a686a..6e4ea80d89 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -1909,6 +1909,18 @@ install_dbus() { + + + EOF ++ ++ # If we run without KVM, bump the service start timeout ++ if ! get_bool "$QEMU_KVM"; then ++ cat >"$initdir/etc/dbus-1/system.d/service.timeout.conf" < ++ ++ ++ 60000 ++ ++EOF ++ fi + } + + install_user_dbus() { diff --git a/SOURCES/0198-shared-install-fix-handling-of-a-linked-unit-file.patch b/SOURCES/0198-shared-install-fix-handling-of-a-linked-unit-file.patch deleted file mode 100644 index b22a45a..0000000 --- a/SOURCES/0198-shared-install-fix-handling-of-a-linked-unit-file.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 13c099caa9ae0389423c403152952c3c548fd146 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 17 Mar 2022 16:02:10 +0100 -Subject: [PATCH] shared/install: fix handling of a linked unit file - -When we have a symlink that goes outside of our search path, we should just -ignore the target file name. But we were verifying it, and rejecting in -the case where a symlink was created manually. - -(cherry picked from commit 48eadb9d9b66f302cda09cdf6d35fead31aaa968) - -Related: #2082131 ---- - src/shared/install.c | 4 +++- - test/test-systemctl-enable.sh | 12 ++++++++---- - 2 files changed, 11 insertions(+), 5 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index b33f7d4bc1..d6951b805d 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1609,7 +1609,9 @@ static int install_info_traverse( - return -ELOOP; - } - -- r = install_info_follow(ctx, i, lp, flags, false); -+ r = install_info_follow(ctx, i, lp, flags, -+ /* If linked, don't look at the target name */ -+ /* ignore_different_name= */ i->type == UNIT_FILE_TYPE_LINKED); - if (r == -EXDEV) { - _cleanup_free_ char *buffer = NULL; - const char *bn; -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 9463433c5b..45f3513de3 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -216,12 +216,16 @@ cat >"$root/link3.suffix" < +Date: Mon, 23 Jan 2023 18:40:38 +0100 +Subject: [PATCH] test: bump the client-side timeout in sd-bus as well + +Since c78d18215b D-Bus services now have 60s to start, but the client +side (sd-bus) still waits only for 25s before giving up: + +``` +[ 226.196380] testsuite-71.sh[556]: + assert_in 'Static hostname: H' '' +[ 226.332965] testsuite-71.sh[576]: + set +ex +[ 226.332965] testsuite-71.sh[576]: FAIL: 'Static hostname: H' not found in: +[ 228.910782] sh[577]: + systemctl poweroff --no-block +[ 232.255584] hostnamectl[565]: Failed to query system properties: Connection timed out +[ 236.827514] systemd[1]: end.service: Consumed 2.131s CPU time. +[ 237.476969] dbus-daemon[566]: [system] Successfully activated service 'org.freedesktop.hostname1' +[ 237.516308] systemd[1]: system-modprobe.slice: Consumed 1.533s CPU time. +[ 237.794635] systemd[1]: testsuite-71.service: Main process exited, code=exited, status=1/FAILURE +[ 237.818469] systemd[1]: testsuite-71.service: Failed with result 'exit-code'. +[ 237.931415] systemd[1]: Failed to start testsuite-71.service. +[ 238.000833] systemd[1]: testsuite-71.service: Consumed 5.651s CPU time. +[ 238.181030] systemd[1]: Reached target testsuite.target. +``` + +Let's override the timeout in sd-bus as well to mitigate this. + +Follow-up to c78d18215b3e5b0f0896ddb1d0d72c666b5e830b. + +(cherry picked from commit e0cbb739113b9e2fbb67b27099430c351f03315c) + +Related: #2138081 +--- + test/test-functions | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/test/test-functions b/test/test-functions +index 6e4ea80d89..1608644cbb 100644 +--- a/test/test-functions ++++ b/test/test-functions +@@ -1920,6 +1920,9 @@ EOF + 60000 + + EOF ++ # Bump the client-side timeout in sd-bus as well ++ mkdir -p "$initdir/etc/systemd/system.conf.d" ++ echo -e '[Manager]\nDefaultEnvironment=SYSTEMD_BUS_TIMEOUT=60' >"$initdir/etc/systemd/system.conf.d/bus-timeout.conf" + fi + } + diff --git a/SOURCES/0199-test-bump-the-container-spawn-timeout-to-60s.patch b/SOURCES/0199-test-bump-the-container-spawn-timeout-to-60s.patch new file mode 100644 index 0000000..7ee431e --- /dev/null +++ b/SOURCES/0199-test-bump-the-container-spawn-timeout-to-60s.patch @@ -0,0 +1,28 @@ +From 5b859cca580ee9c050486024ebd8cfdb34049008 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 23 Jan 2023 19:13:49 +0100 +Subject: [PATCH] test: bump the container spawn timeout to 60s + +As 30s might be not enough on busy systems (and we already bumped the +reboot timeout from 30s to 60s for this reason). + +(cherry picked from commit d932022ddfe021b1c49ffaf4d7dfe4093656f0c5) + +Related: #2138081 +--- + test/test-shutdown.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/test-shutdown.py b/test/test-shutdown.py +index e181f976be..13e18ecbaa 100755 +--- a/test/test-shutdown.py ++++ b/test/test-shutdown.py +@@ -17,7 +17,7 @@ def run(args): + logger.info("spawning test") + console = pexpect.spawn(args.command, args.arg, env={ + "TERM": "linux", +- }, encoding='utf-8', timeout=30) ++ }, encoding='utf-8', timeout=60) + + if args.verbose: + console.logfile = sys.stdout diff --git a/SOURCES/0199-test-systemctl-enable-make-shellcheck-happy.patch b/SOURCES/0199-test-systemctl-enable-make-shellcheck-happy.patch deleted file mode 100644 index b97796b..0000000 --- a/SOURCES/0199-test-systemctl-enable-make-shellcheck-happy.patch +++ /dev/null @@ -1,318 +0,0 @@ -From 71a8029607b54259f28ac1fc0627c7f1e6db586a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 24 Mar 2022 11:52:35 +0100 -Subject: [PATCH] test-systemctl-enable: make shellcheck happy - -Quoting is not necessary in many places, but I think it's nicer -to use it consistently. - -(cherry picked from commit 84fdced62c740a3b07656e84747dd721ad6a30c5) - -Related: #2082131 ---- - test/test-systemctl-enable.sh | 76 +++++++++++++++++------------------ - 1 file changed, 38 insertions(+), 38 deletions(-) - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 45f3513de3..3b30f090a5 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -19,10 +19,10 @@ islink() { - test "$(readlink "$1")" = "$2" || return 2 - } - --: ------enablement nonexistent-------------------------------- -+: '------enable nonexistent------------------------------------' - "$systemctl" --root="$root" enable test1.service && { echo "Expected failure" >&2; exit 1; } - --: ------basic enablement-------------------------------------- -+: '------basic enablement--------------------------------------' - mkdir -p "$root/etc/systemd/system" - cat >"$root/etc/systemd/system/test1.service" <>"$root/etc/systemd/system/test1.service" <&2; exit 1; } - islink "$root/etc/systemd/system/default.target.wants/test1.service" "../test1.service" - islink "$root/etc/systemd/system/test1-goodalias.service" "test1.service" -@@ -90,7 +90,7 @@ test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" - test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" - test ! -h "$root/etc/systemd/system/test1-goodalias.service" - --: -------also units------------------------------------------- -+: '-------also units-------------------------------------------' - cat >"$root/etc/systemd/system/test2.socket" <&2; exit 1; } -@@ -130,65 +130,65 @@ EOF - "$systemctl" --root="$root" link '/link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" - --: -------link already linked same path------------------------ -+: '-------link already linked same path------------------------' - SYSTEMD_LOG_LEVEL=debug "$systemctl" --root="$root" link '/link1.path' # this passes - islink "$root/etc/systemd/system/link1.path" "/link1.path" - --: -------link already linked different path------------------- -+: '-------link already linked different path-------------------' - mkdir "$root/subdir" - cp "$root/link1.path" "$root/subdir/" - "$systemctl" --root="$root" link '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } - islink "$root/etc/systemd/system/link1.path" "/link1.path" - --: -------link bad suffix-------------------------------------- -+: '-------link bad suffix--------------------------------------' - cp "$root/link1.path" "$root/subdir/link1.suffix" - "$systemctl" --root="$root" link '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } - test ! -e "$root/etc/systemd/system/link1.suffix" - --: -------unlink by unit name---------------------------------- -+: '-------unlink by unit name----------------------------------' - "$systemctl" --root="$root" disable 'link1.path' - test ! -e "$root/etc/systemd/system/link1.path" - --: -------unlink by path--------------------------------------- -+: '-------unlink by path---------------------------------------' - "$systemctl" --root="$root" link '/link1.path' - test -h "$root/etc/systemd/system/link1.path" - "$systemctl" --root="$root" disable '/link1.path' - test ! -e "$root/etc/systemd/system/link1.path" - --: -------unlink by wrong path--------------------------------- -+: '-------unlink by wrong path---------------------------------' - "$systemctl" --root="$root" link '/link1.path' - test -h "$root/etc/systemd/system/link1.path" - "$systemctl" --root="$root" disable '/subdir/link1.path' # we only care about the name - test ! -e "$root/etc/systemd/system/link1.path" - - --: -------link and enable-------------------------------------- -+: '-------link and enable--------------------------------------' - "$systemctl" --root="$root" enable '/link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - --: -------enable already linked same path---------------------- -+: '-------enable already linked same path----------------------' - "$systemctl" --root="$root" enable '/link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - --: -------enable already linked different path----------------- -+: '-------enable already linked different path-----------------' - "$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - --: -------enable bad suffix------------------------------------ -+: '-------enable bad suffix------------------------------------' - cp "$root/link1.path" "$root/subdir/link1.suffix" - "$systemctl" --root="$root" enable '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } - test ! -e "$root/etc/systemd/system/link1.suffix" - test ! -e "$root/etc/systemd/system/paths.target.wants/link1.suffix" - --: -------disable by unit name--------------------------------- -+: '-------disable by unit name---------------------------------' - "$systemctl" --root="$root" disable 'link1.path' - test ! -e "$root/etc/systemd/system/link1.path" - test ! -e "$root/etc/systemd/system/paths.target.wants/link1.path" - --: -------disable by path-------------------------------------- -+: '-------disable by path--------------------------------------' - "$systemctl" --root="$root" enable '/link1.path' - test -h "$root/etc/systemd/system/link1.path" - test -h "$root/etc/systemd/system/paths.target.wants/link1.path" -@@ -197,7 +197,7 @@ test ! -e "$root/etc/systemd/system/link1.path" - test ! -e "$root/etc/systemd/system/paths.target.wants/link1.path" - - --: -------link then enable------------------------------------- -+: '-------link and enable-------------------------------------' - "$systemctl" --root="$root" link '/link1.path' - islink "$root/etc/systemd/system/link1.path" "/link1.path" - test ! -h "$root/etc/systemd/system/paths.target.wants/link1.path" -@@ -210,7 +210,7 @@ islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - --: -------manual link------------------------------------------ -+: '-------manual link------------------------------------------' - cat >"$root/link3.suffix" <&2; exit 1; } - "$systemctl" --root="$root" enable '/etc/systemd/system/masked.service' && { echo "Expected failure" >&2; exit 1; } - --: -------enable on masked alias------------------------------- -+: '-------enable on masked alias-------------------------------' - test -h "$root/etc/systemd/system/masked.service" - ln -s "masked.service" "$root/etc/systemd/system/masked-alias.service" - "$systemctl" --root="$root" enable 'masked-alias.service' && { echo "Expected failure" >&2; exit 1; } - "$systemctl" --root="$root" enable '/etc/systemd/system/masked-alias.service' && { echo "Expected failure" >&2; exit 1; } - --: -------issue 22000: link in subdirectory-------------------- -+: '-------issue 22000: link in subdirectory--------------------' - mkdir -p "$root/etc/systemd/system/myown.d" - cat >"$root/etc/systemd/system/link5-also.service" <"$root/etc/systemd/system/templ1@.service" <"$root/etc/systemd/system/templ1@.service" <"$root/etc/systemd/system/templ2@.service" <"$root/etc/systemd/system/link4.service" <"$root/etc/systemd/system/link4.service" <"$root/etc/systemd/system/link5.service" <"$root/link5copy.service" <"$root/etc/systemd/system/link5@.path" <"$root/etc/systemd/system/multilink.mount" <"$root/etc/systemd/system/some-some-link6@.socket" <&2; exit 1; } - --: -------specifiers in WantedBy------------------------------- -+: '-------specifiers in WantedBy-------------------------------' - # We don't need to repeat all the tests. Let's do a basic check that specifier - # expansion is performed. - -@@ -642,7 +642,7 @@ test ! -h "$root/etc/systemd/system/another-target2@.target.requires/some-some-l - - # TODO: repeat the tests above for presets - --: -------SYSTEMD_OS_RELEASE relative to root------------------ -+: '-------SYSTEMD_OS_RELEASE relative to root-------------------' - # check that os-release overwriting works as expected with root - test -e "$root/etc/os-release" - diff --git a/SOURCES/0200-network-fix-memleak.patch b/SOURCES/0200-network-fix-memleak.patch new file mode 100644 index 0000000..7fbbc98 --- /dev/null +++ b/SOURCES/0200-network-fix-memleak.patch @@ -0,0 +1,55 @@ +From 44d34632660f8456b7ca09510ed1b469541fac65 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 16 Jan 2023 22:07:06 +0900 +Subject: [PATCH] network: fix memleak + +Fixes a bug introduced by af2aea8bb64b0dc42ecbe5549216eb567681a803. + +Fixes #25883 and #25891. + +(cherry picked from commit 303dfa73b389e8f6dc58954e867c21724c1446f7) + +Related: #2138081 +--- + src/network/networkd-address.c | 6 +++++- + src/network/networkd-route.c | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c +index 259cd312c9..4f8f95cba6 100644 +--- a/src/network/networkd-address.c ++++ b/src/network/networkd-address.c +@@ -1189,9 +1189,13 @@ int link_request_address( + + (void) address_get(link, address, &existing); + +- if (address->lifetime_valid_usec == 0) ++ if (address->lifetime_valid_usec == 0) { ++ if (consume_object) ++ address_free(address); ++ + /* The requested address is outdated. Let's remove it. */ + return address_remove_and_drop(existing); ++ } + + if (!existing) { + _cleanup_(address_freep) Address *tmp = NULL; +diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c +index d1f3bab092..5214a8ad2c 100644 +--- a/src/network/networkd-route.c ++++ b/src/network/networkd-route.c +@@ -1437,9 +1437,13 @@ int link_request_route( + + (void) route_get(link->manager, link, route, &existing); + +- if (route->lifetime_usec == 0) ++ if (route->lifetime_usec == 0) { ++ if (consume_object) ++ route_free(route); ++ + /* The requested route is outdated. Let's remove it. */ + return route_remove_and_drop(existing); ++ } + + if (!existing) { + _cleanup_(route_freep) Route *tmp = NULL; diff --git a/SOURCES/0200-shared-install-when-creating-symlinks-accept-differe.patch b/SOURCES/0200-shared-install-when-creating-symlinks-accept-differe.patch deleted file mode 100644 index ced8871..0000000 --- a/SOURCES/0200-shared-install-when-creating-symlinks-accept-differe.patch +++ /dev/null @@ -1,176 +0,0 @@ -From 56bc8e8eef5fcbfcf72dd1b3caa56b9186e1011d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 25 Mar 2022 15:43:27 +0100 -Subject: [PATCH] shared/install: when creating symlinks, accept different but - equivalent symlinks -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We would only accept "identical" links, but having e.g. a symlink -/usr/lib/systemd/system/foo-alias.service → /usr/lib/systemd/system/foo.service -when we're trying to create /usr/lib/systemd/system/foo-alias.service → -./foo.service is OK. This fixes an issue found in ubuntuautopkg package -installation, where we'd fail when enabling systemd-resolved.service, because -the existing alias was absolute, and (with the recent patches) we were trying -to create a relative one. - -A test is added. -(For .wants/.requires symlinks we were already doing OK. A test is also -added, to verify.) - -(cherry picked from commit 3fc53351dc8f37355f5a4ee8f922d3e13a5182c2) - -Related: #2082131 ---- - src/shared/install.c | 59 ++++++++++++++++++++++++++--------- - test/test-systemctl-enable.sh | 39 +++++++++++++++++++++-- - 2 files changed, 81 insertions(+), 17 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index d6951b805d..22b16ad453 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -423,21 +423,54 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - } - - /** -- * Checks if two paths or symlinks from wd are the same, when root is the root of the filesystem. -- * wc should be the full path in the host file system. -+ * Checks if two symlink targets (starting from src) are equivalent as far as the unit enablement logic is -+ * concerned. If the target is in the unit search path, then anything with the same name is equivalent. -+ * If outside the unit search path, paths must be identical. - */ --static bool chroot_symlinks_same(const char *root, const char *wd, const char *a, const char *b) { -- assert(path_is_absolute(wd)); -+static int chroot_unit_symlinks_equivalent( -+ const LookupPaths *lp, -+ const char *src, -+ const char *target_a, -+ const char *target_b) { -+ -+ assert(lp); -+ assert(src); -+ assert(target_a); -+ assert(target_b); - - /* This will give incorrect results if the paths are relative and go outside - * of the chroot. False negatives are possible. */ - -- if (!root) -- root = "/"; -+ const char *root = lp->root_dir ?: "/"; -+ _cleanup_free_ char *dirname = NULL; -+ int r; -+ -+ if (!path_is_absolute(target_a) || !path_is_absolute(target_b)) { -+ r = path_extract_directory(src, &dirname); -+ if (r < 0) -+ return r; -+ } - -- a = strjoina(path_is_absolute(a) ? root : wd, "/", a); -- b = strjoina(path_is_absolute(b) ? root : wd, "/", b); -- return path_equal_or_files_same(a, b, 0); -+ _cleanup_free_ char *a = path_join(path_is_absolute(target_a) ? root : dirname, target_a); -+ _cleanup_free_ char *b = path_join(path_is_absolute(target_b) ? root : dirname, target_b); -+ if (!a || !b) -+ return log_oom(); -+ -+ r = path_equal_or_files_same(a, b, 0); -+ if (r != 0) -+ return r; -+ -+ _cleanup_free_ char *a_name = NULL, *b_name = NULL; -+ r = path_extract_filename(a, &a_name); -+ if (r < 0) -+ return r; -+ r = path_extract_filename(b, &b_name); -+ if (r < 0) -+ return r; -+ -+ return streq(a_name, b_name) && -+ path_startswith_strv(a, lp->search_path) && -+ path_startswith_strv(b, lp->search_path); - } - - static int create_symlink( -@@ -448,7 +481,7 @@ static int create_symlink( - UnitFileChange **changes, - size_t *n_changes) { - -- _cleanup_free_ char *dest = NULL, *dirname = NULL; -+ _cleanup_free_ char *dest = NULL; - const char *rp; - int r; - -@@ -489,11 +522,7 @@ static int create_symlink( - return r; - } - -- dirname = dirname_malloc(new_path); -- if (!dirname) -- return -ENOMEM; -- -- if (chroot_symlinks_same(lp->root_dir, dirname, dest, old_path)) { -+ if (chroot_unit_symlinks_equivalent(lp, new_path, dest, old_path)) { - log_debug("Symlink %s → %s already exists", new_path, dest); - return 1; - } -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 3b30f090a5..0f66af309a 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -39,8 +39,29 @@ test -h "$root/etc/systemd/system/default.target.wants/test1.service" - test -h "$root/etc/systemd/system/special.target.requires/test1.service" - - "$systemctl" --root="$root" disable test1.service --test ! -e "$root/etc/systemd/system/default.target.wants/test1.service" --test ! -e "$root/etc/systemd/system/special.target.requires/test1.service" -+test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" -+ -+: '------enable when link already exists-----------------------' -+# We don't read the symlink target, so it's OK for the symlink to point -+# to something else. We should just silently accept this. -+ -+mkdir -p "$root/etc/systemd/system/default.target.wants" -+mkdir -p "$root/etc/systemd/system/special.target.requires" -+ln -s /usr/lib/systemd/system/test1.service "$root/etc/systemd/system/default.target.wants/test1.service" -+ln -s /usr/lib/systemd/system/test1.service "$root/etc/systemd/system/special.target.requires/test1.service" -+ -+"$systemctl" --root="$root" enable test1.service -+test -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test -h "$root/etc/systemd/system/special.target.requires/test1.service" -+ -+"$systemctl" --root="$root" reenable test1.service -+test -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test -h "$root/etc/systemd/system/special.target.requires/test1.service" -+ -+"$systemctl" --root="$root" disable test1.service -+test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" - - : '------suffix guessing---------------------------------------' - "$systemctl" --root="$root" enable test1 -@@ -90,6 +111,20 @@ test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" - test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" - test ! -h "$root/etc/systemd/system/test1-goodalias.service" - -+: '-------aliases when link already exists---------------------' -+cat >"$root/etc/systemd/system/test1a.service" <"$root/etc/systemd/system/test2.socket" < +Date: Fri, 13 Jan 2023 14:12:31 +0900 +Subject: [PATCH] busctl: fix introspecting DBus properties + +Follow-up for f2f7785d7a47ffa48ac929648794e1288509ddd8. + +Fixes #26033. + +(cherry picked from commit 2cbb171d20a07ec0a25296f167b0385de102d74e) + +Related: #2138081 +--- + src/busctl/busctl.c | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c +index f57a5d605d..cc2d0e3458 100644 +--- a/src/busctl/busctl.c ++++ b/src/busctl/busctl.c +@@ -1022,10 +1022,11 @@ static int introspect(int argc, char **argv, void *userdata) { + + for (;;) { + Member *z; +- _cleanup_free_ char *buf = NULL; ++ _cleanup_free_ char *buf = NULL, *signature = NULL; + _cleanup_fclose_ FILE *mf = NULL; + size_t sz = 0; +- const char *name; ++ const char *name, *contents; ++ char type; + + r = sd_bus_message_enter_container(reply, 'e', "sv"); + if (r < 0) +@@ -1042,6 +1043,21 @@ static int introspect(int argc, char **argv, void *userdata) { + if (r < 0) + return bus_log_parse_error(r); + ++ r = sd_bus_message_peek_type(reply, &type, &contents); ++ if (r <= 0) ++ return bus_log_parse_error(r == 0 ? EINVAL : r); ++ ++ if (type == SD_BUS_TYPE_STRUCT_BEGIN) ++ signature = strjoin(CHAR_TO_STR(SD_BUS_TYPE_STRUCT_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_END)); ++ else if (type == SD_BUS_TYPE_DICT_ENTRY_BEGIN) ++ signature = strjoin(CHAR_TO_STR(SD_BUS_TYPE_DICT_ENTRY_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_DICT_ENTRY_END)); ++ else if (contents) ++ signature = strjoin(CHAR_TO_STR(type), contents); ++ else ++ signature = strdup(CHAR_TO_STR(type)); ++ if (!signature) ++ return log_oom(); ++ + mf = open_memstream_unlocked(&buf, &sz); + if (!mf) + return log_oom(); +@@ -1055,6 +1071,7 @@ static int introspect(int argc, char **argv, void *userdata) { + z = set_get(members, &((Member) { + .type = "property", + .interface = m->interface, ++ .signature = signature, + .name = (char*) name })); + if (z) + free_and_replace(z->value, buf); diff --git a/SOURCES/0201-test-systemctl-enable-use-magic-syntax-to-allow-inve.patch b/SOURCES/0201-test-systemctl-enable-use-magic-syntax-to-allow-inve.patch deleted file mode 100644 index 5703da0..0000000 --- a/SOURCES/0201-test-systemctl-enable-use-magic-syntax-to-allow-inve.patch +++ /dev/null @@ -1,216 +0,0 @@ -From 3c469acda5f5d62d56a16f075475c3b4f1da75e1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 25 Mar 2022 15:56:16 +0100 -Subject: [PATCH] test-systemctl-enable: use magic syntax to allow inverted - tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Inspired by 7910ec3bcde2ee0086b3e49f8aaa2a9f13f58d97. -'! true' passes, because it's a conditional expression. -But '( ! true )' fails, because '( … )' creates a subshell, i.e. a separate -program, and '! true' becomes the return value of that program, and the whole -thing apparently is not a conditional expression for the outer shell. - -This is shorter, so let's just do this. - -(cherry picked from commit d6c51c485abe0026a5da654fca5d6c1457c4587d) - -Related: #2082131 ---- - test/test-systemctl-enable.sh | 76 ++++++++++++++++++----------------- - 1 file changed, 39 insertions(+), 37 deletions(-) - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 0f66af309a..ecb433380e 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -20,7 +20,7 @@ islink() { - } - - : '------enable nonexistent------------------------------------' --"$systemctl" --root="$root" enable test1.service && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable test1.service ) - - : '------basic enablement--------------------------------------' - mkdir -p "$root/etc/systemd/system" -@@ -86,7 +86,7 @@ Alias=test1-badalias.socket - Alias=test1-goodalias2.service - EOF - --"$systemctl" --root="$root" enable test1 && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable test1 ) - test -h "$root/etc/systemd/system/default.target.wants/test1.service" - test -h "$root/etc/systemd/system/special.target.requires/test1.service" - test -e "$root/etc/systemd/system/test1-goodalias.service" -@@ -98,7 +98,7 @@ test -e "$root/etc/systemd/system/test1-goodalias2.service" - test -h "$root/etc/systemd/system/test1-goodalias2.service" - - : '-------aliases in reeanble----------------------------------' --"$systemctl" --root="$root" reenable test1 && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" reenable test1 ) - islink "$root/etc/systemd/system/default.target.wants/test1.service" "../test1.service" - islink "$root/etc/systemd/system/test1-goodalias.service" "test1.service" - -@@ -154,7 +154,7 @@ test ! -e "$root/etc/systemd/system/sockets.target.wants/test2.socket" - : '-------link-------------------------------------------------' - # File doesn't exist yet - test ! -e "$root/link1.path" --"$systemctl" --root="$root" link '/link1.path' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" link '/link1.path' ) - test ! -e "$root/etc/systemd/system/link1.path" - - cat >"$root/link1.path" <&2; exit 1; } -+( ! "$systemctl" --root="$root" link '/subdir/link1.path' ) - islink "$root/etc/systemd/system/link1.path" "/link1.path" - - : '-------link bad suffix--------------------------------------' - cp "$root/link1.path" "$root/subdir/link1.suffix" --"$systemctl" --root="$root" link '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" link '/subdir/link1.suffix' ) - test ! -e "$root/etc/systemd/system/link1.suffix" - - : '-------unlink by unit name----------------------------------' -@@ -208,13 +208,13 @@ islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - - : '-------enable already linked different path-----------------' --"$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable '/subdir/link1.path' ) - islink "$root/etc/systemd/system/link1.path" "/link1.path" - islink "$root/etc/systemd/system/paths.target.wants/link1.path" "../link1.path" - - : '-------enable bad suffix------------------------------------' - cp "$root/link1.path" "$root/subdir/link1.suffix" --"$systemctl" --root="$root" enable '/subdir/link1.suffix' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable '/subdir/link1.suffix' ) - test ! -e "$root/etc/systemd/system/link1.suffix" - test ! -e "$root/etc/systemd/system/paths.target.wants/link1.suffix" - -@@ -264,14 +264,14 @@ test ! -h "$root/etc/systemd/system/services.target.wants/link3.service" - - : '-------enable on masked-------------------------------------' - ln -s "/dev/null" "$root/etc/systemd/system/masked.service" --"$systemctl" --root="$root" enable 'masked.service' && { echo "Expected failure" >&2; exit 1; } --"$systemctl" --root="$root" enable '/etc/systemd/system/masked.service' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable 'masked.service' ) -+( ! "$systemctl" --root="$root" enable '/etc/systemd/system/masked.service' ) - - : '-------enable on masked alias-------------------------------' - test -h "$root/etc/systemd/system/masked.service" - ln -s "masked.service" "$root/etc/systemd/system/masked-alias.service" --"$systemctl" --root="$root" enable 'masked-alias.service' && { echo "Expected failure" >&2; exit 1; } --"$systemctl" --root="$root" enable '/etc/systemd/system/masked-alias.service' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable 'masked-alias.service' ) -+( ! "$systemctl" --root="$root" enable '/etc/systemd/system/masked-alias.service' ) - - : '-------issue 22000: link in subdirectory--------------------' - mkdir -p "$root/etc/systemd/system/myown.d" -@@ -286,7 +286,7 @@ WantedBy=services.target - Also=link5-also.service - EOF - --"$systemctl" --root="$root" enable 'link5.service' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable 'link5.service' ) - test ! -h "$root/etc/systemd/system/services.target.wants/link5.service" - test ! -h "$root/etc/systemd/system/services.target.wants/link5-also.service" - -@@ -301,7 +301,7 @@ WantedBy=services.target - EOF - - # No instance here — this can't succeed. --"$systemctl" --root="$root" enable 'templ1@.service' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable 'templ1@.service' ) - test ! -h "$root/etc/systemd/system/services.target.wants/templ1@.service" - - "$systemctl" --root="$root" enable 'templ1@one.service' -@@ -428,7 +428,7 @@ Alias=link4alias.service - Alias=link4alias2.service - EOF - --"$systemctl" --root="$root" enable 'link4.service' && { echo "Expected failure" >&2; exit 1; } -+( ! "$systemctl" --root="$root" enable 'link4.service' ) - test ! -h "$root/etc/systemd/system/link4.service" # this is our file - test ! -h "$root/etc/systemd/system/link4@.service" - test ! -h "$root/etc/systemd/system/link4@inst.service" -@@ -571,12 +571,12 @@ check_alias a "$(uname -m | tr '_' '-')" - test ! -e "$root/etc/os-release" - test ! -e "$root/usr/lib/os-release" - --check_alias A '' && { echo "Expected failure" >&2; exit 1; } --check_alias B '' && { echo "Expected failure" >&2; exit 1; } --check_alias M '' && { echo "Expected failure" >&2; exit 1; } --check_alias o '' && { echo "Expected failure" >&2; exit 1; } --check_alias w '' && { echo "Expected failure" >&2; exit 1; } --check_alias W '' && { echo "Expected failure" >&2; exit 1; } -+( ! check_alias A '' ) -+( ! check_alias B '' ) -+( ! check_alias M '' ) -+( ! check_alias o '' ) -+( ! check_alias w '' ) -+( ! check_alias W '' ) - - cat >"$root/etc/os-release" <&2; exit 1; } --check_alias E '' && { echo "Expected failure" >&2; exit 1; } --check_alias f '' && { echo "Expected failure" >&2; exit 1; } --check_alias h '' && { echo "Expected failure" >&2; exit 1; } --check_alias I '' && { echo "Expected failure" >&2; exit 1; } --check_alias J '' && { echo "Expected failure" >&2; exit 1; } --check_alias L '' && { echo "Expected failure" >&2; exit 1; } --check_alias P '' && { echo "Expected failure" >&2; exit 1; } --check_alias s '' && { echo "Expected failure" >&2; exit 1; } --check_alias S '' && { echo "Expected failure" >&2; exit 1; } --check_alias t '' && { echo "Expected failure" >&2; exit 1; } --check_alias T '' && { echo "Expected failure" >&2; exit 1; } --check_alias V '' && { echo "Expected failure" >&2; exit 1; } -+( ! check_alias C '' ) -+( ! check_alias E '' ) -+( ! check_alias f '' ) -+( ! check_alias h '' ) -+( ! check_alias I '' ) -+( ! check_alias J '' ) -+( ! check_alias L '' ) -+( ! check_alias P '' ) -+( ! check_alias s '' ) -+( ! check_alias S '' ) -+( ! check_alias t '' ) -+( ! check_alias T '' ) -+( ! check_alias V '' ) - - check_alias g root - check_alias G 0 -@@ -635,7 +635,7 @@ check_alias j 'link6' - check_alias l "$(uname -n | sed 's/\..*//')" - - test ! -e "$root/etc/machine-id" --check_alias m '' && { echo "Expected failure" >&2; exit 1; } -+( ! check_alias m '' ) - - systemd-id128 new >"$root/etc/machine-id" - check_alias m "$(cat "$root/etc/machine-id")" -@@ -647,9 +647,11 @@ check_alias p 'some-some-link6' - - check_alias v "$(uname -r)" - --check_alias % '%' && { echo "Expected failure because % is not legal in unit name" >&2; exit 1; } -+# % is not legal in unit name -+( ! check_alias % '%' ) - --check_alias z 'z' && { echo "Expected failure because %z is not known" >&2; exit 1; } -+# %z is not defined -+( ! check_alias z 'z' ) - - : '-------specifiers in WantedBy-------------------------------' - # We don't need to repeat all the tests. Let's do a basic check that specifier diff --git a/SOURCES/0202-busctl-simplify-peeking-the-type.patch b/SOURCES/0202-busctl-simplify-peeking-the-type.patch new file mode 100644 index 0000000..6c0cc51 --- /dev/null +++ b/SOURCES/0202-busctl-simplify-peeking-the-type.patch @@ -0,0 +1,82 @@ +From ae1806eea8c688c6561b5f7dcbaa6f682233b73e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 16 Jan 2023 14:16:14 +0100 +Subject: [PATCH] busctl: simplify peeking the type + +let's peek the type before we enter the variant, not after, so that we +can reuse it as-is, instead having to recombine it later. + +Follow-up for: #26049 + +(cherry picked from commit ec56edf55c26ed2c65cf8e86b81ab0b516c94dd9) + +Related: #2138081 +--- + src/busctl/busctl.c | 30 ++++++++++-------------------- + 1 file changed, 10 insertions(+), 20 deletions(-) + +diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c +index cc2d0e3458..901b0e15f6 100644 +--- a/src/busctl/busctl.c ++++ b/src/busctl/busctl.c +@@ -1021,17 +1021,16 @@ static int introspect(int argc, char **argv, void *userdata) { + return bus_log_parse_error(r); + + for (;;) { +- Member *z; +- _cleanup_free_ char *buf = NULL, *signature = NULL; + _cleanup_fclose_ FILE *mf = NULL; +- size_t sz = 0; ++ _cleanup_free_ char *buf = NULL; + const char *name, *contents; ++ size_t sz = 0; ++ Member *z; + char type; + + r = sd_bus_message_enter_container(reply, 'e', "sv"); + if (r < 0) + return bus_log_parse_error(r); +- + if (r == 0) + break; + +@@ -1039,24 +1038,15 @@ static int introspect(int argc, char **argv, void *userdata) { + if (r < 0) + return bus_log_parse_error(r); + +- r = sd_bus_message_enter_container(reply, 'v', NULL); ++ r = sd_bus_message_peek_type(reply, &type, &contents); + if (r < 0) + return bus_log_parse_error(r); ++ if (type != 'v') ++ return bus_log_parse_error(EINVAL); + +- r = sd_bus_message_peek_type(reply, &type, &contents); +- if (r <= 0) +- return bus_log_parse_error(r == 0 ? EINVAL : r); +- +- if (type == SD_BUS_TYPE_STRUCT_BEGIN) +- signature = strjoin(CHAR_TO_STR(SD_BUS_TYPE_STRUCT_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_END)); +- else if (type == SD_BUS_TYPE_DICT_ENTRY_BEGIN) +- signature = strjoin(CHAR_TO_STR(SD_BUS_TYPE_DICT_ENTRY_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_DICT_ENTRY_END)); +- else if (contents) +- signature = strjoin(CHAR_TO_STR(type), contents); +- else +- signature = strdup(CHAR_TO_STR(type)); +- if (!signature) +- return log_oom(); ++ r = sd_bus_message_enter_container(reply, 'v', contents); ++ if (r < 0) ++ return bus_log_parse_error(r); + + mf = open_memstream_unlocked(&buf, &sz); + if (!mf) +@@ -1071,7 +1061,7 @@ static int introspect(int argc, char **argv, void *userdata) { + z = set_get(members, &((Member) { + .type = "property", + .interface = m->interface, +- .signature = signature, ++ .signature = (char*) contents, + .name = (char*) name })); + if (z) + free_and_replace(z->value, buf); diff --git a/SOURCES/0202-test-systemctl-enable-also-use-freshly-built-systemd.patch b/SOURCES/0202-test-systemctl-enable-also-use-freshly-built-systemd.patch deleted file mode 100644 index 369d9d3..0000000 --- a/SOURCES/0202-test-systemctl-enable-also-use-freshly-built-systemd.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 90fb011c43410958e5bda6f470137522f536adb4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 28 Mar 2022 20:03:37 +0200 -Subject: [PATCH] test-systemctl-enable: also use freshly-built systemd-id128 - -Tests were failing on centos7 because systemd-id128 is not in path. - -(cherry picked from commit 2a2d002fb0913fe931b4ac903ca425a725aa79c0) - -Related: #2082131 ---- - meson.build | 21 ++++++++++++--------- - test/test-systemctl-enable.sh | 5 +++-- - 2 files changed, 15 insertions(+), 11 deletions(-) - -diff --git a/meson.build b/meson.build -index 005af872cf..4fc3e64e54 100644 ---- a/meson.build -+++ b/meson.build -@@ -2371,7 +2371,7 @@ public_programs += executable( - install_rpath : rootlibexecdir, - install : true) - --exe = executable( -+systemctl = executable( - 'systemctl', - systemctl_sources, - include_directories : includes, -@@ -2385,13 +2385,7 @@ exe = executable( - install_rpath : rootlibexecdir, - install : true, - install_dir : rootbindir) --public_programs += exe --if want_tests != 'false' -- test('test-systemctl-enable', -- test_systemctl_enable_sh, -- # https://github.com/mesonbuild/meson/issues/2681 -- args : exe.full_path()) --endif -+public_programs += systemctl - - if conf.get('ENABLE_PORTABLED') == 1 - dbus_programs += executable( -@@ -3188,13 +3182,22 @@ executable( - install : true, - install_dir : rootlibexecdir) - --public_programs += executable( -+systemd_id128 = executable( - 'systemd-id128', - 'src/id128/id128.c', - include_directories : includes, - link_with : [libshared], - install_rpath : rootlibexecdir, - install : true) -+public_programs += systemd_id128 -+ -+if want_tests != 'false' -+ test('test-systemctl-enable', -+ test_systemctl_enable_sh, -+ # https://github.com/mesonbuild/meson/issues/2681 -+ args : [systemctl.full_path(), -+ systemd_id128.full_path()]) -+endif - - public_programs += executable( - 'systemd-path', -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index ecb433380e..8eb2828e35 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -6,6 +6,7 @@ set -ex - export SYSTEMD_IGNORE_CHROOT=1 - - systemctl=${1:-systemctl} -+systemd_id128=${2:-systemd-id128} - - unset root - cleanup() { -@@ -606,7 +607,7 @@ check_alias o 'the-id' - check_alias w '39a' - check_alias W 'right' - --check_alias b "$(systemd-id128 boot-id)" -+check_alias b "$("$systemd_id128" boot-id)" - - # Specifiers not available for [Install] - ( ! check_alias C '' ) -@@ -637,7 +638,7 @@ check_alias l "$(uname -n | sed 's/\..*//')" - test ! -e "$root/etc/machine-id" - ( ! check_alias m '' ) - --systemd-id128 new >"$root/etc/machine-id" -+"$systemd_id128" new >"$root/etc/machine-id" - check_alias m "$(cat "$root/etc/machine-id")" - - check_alias n 'some-some-link6@.socket' diff --git a/SOURCES/0203-resolve-drop-redundant-call-of-socket_ipv6_is_suppor.patch b/SOURCES/0203-resolve-drop-redundant-call-of-socket_ipv6_is_suppor.patch new file mode 100644 index 0000000..f5b41ed --- /dev/null +++ b/SOURCES/0203-resolve-drop-redundant-call-of-socket_ipv6_is_suppor.patch @@ -0,0 +1,29 @@ +From fb589eae3231c6d968b116774097c90a64755f19 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 4 Nov 2022 12:53:07 +0900 +Subject: [PATCH] resolve: drop redundant call of socket_ipv6_is_supported() + +As link_relevant() is called with AF_INET6, which returns true only when +the link has at least one relevant IPv6 address. + +(cherry picked from commit f6e4aa7b0370c8b39739e9d5dda780932489507a) + +Related: #2138081 +--- + src/resolve/resolved-link.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c +index 9ab55eb82e..409d725686 100644 +--- a/src/resolve/resolved-link.c ++++ b/src/resolve/resolved-link.c +@@ -152,8 +152,7 @@ void link_allocate_scopes(Link *l) { + + if (link_relevant(l, AF_INET6, true) && + l->llmnr_support != RESOLVE_SUPPORT_NO && +- l->manager->llmnr_support != RESOLVE_SUPPORT_NO && +- socket_ipv6_is_supported()) { ++ l->manager->llmnr_support != RESOLVE_SUPPORT_NO) { + if (!l->llmnr_ipv6_scope) { + r = dns_scope_new(l->manager, &l->llmnr_ipv6_scope, l, DNS_PROTOCOL_LLMNR, AF_INET6); + if (r < 0) diff --git a/SOURCES/0203-test-systemctl-enable-disable-the-test-for-a-for-now.patch b/SOURCES/0203-test-systemctl-enable-disable-the-test-for-a-for-now.patch deleted file mode 100644 index 8c95ce6..0000000 --- a/SOURCES/0203-test-systemctl-enable-disable-the-test-for-a-for-now.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 9b0a2632fd060e0c7b13eabb5ad87f623237eef9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 28 Mar 2022 20:20:09 +0200 -Subject: [PATCH] test-systemctl-enable: disable the test for %a for now - -(cherry picked from commit 5c29de29b43829ba09967b05ae2f136356c8c0d2) - -Related: #2082131 ---- - test/test-systemctl-enable.sh | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index 8eb2828e35..ac1bcc1cc7 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -567,7 +567,9 @@ EOF - islink "$root/etc/systemd/system/target@$1:$2.socket" "some-some-link6@.socket" || return 2 - } - --check_alias a "$(uname -m | tr '_' '-')" -+# TODO: our architecture names are different than what uname -m returns. -+# Add something like 'systemd-detect-virt --print-architecture' and use it here. -+check_alias a "$(uname -m | tr '_' '-')" || : - - test ! -e "$root/etc/os-release" - test ! -e "$root/usr/lib/os-release" diff --git a/SOURCES/0204-Rename-UnitFileScope-to-LookupScope.patch b/SOURCES/0204-Rename-UnitFileScope-to-LookupScope.patch deleted file mode 100644 index 5088923..0000000 --- a/SOURCES/0204-Rename-UnitFileScope-to-LookupScope.patch +++ /dev/null @@ -1,3454 +0,0 @@ -From c499122cb7ba5fe2f76760844cbc2e34cc3a5626 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 29 Mar 2022 15:55:59 +0200 -Subject: [PATCH] Rename UnitFileScope to LookupScope - -As suggested in -https://github.com/systemd/systemd/pull/22649/commits/8b3ad3983f5440eef812b34e5ed862ca59fdf7f7#r837345892 - -The define is generalized and moved to path-lookup.h, where it seems to fit -better. This allows a recursive include to be removed and in general makes -things simpler. - -(cherry picked from commit b380b6438361e39ad5076bfa58d2021621a957af) - -Related: #2082131 ---- - src/analyze/analyze-condition.c | 2 +- - src/analyze/analyze-condition.h | 2 +- - src/analyze/analyze-security.c | 4 +- - src/analyze/analyze-security.h | 2 +- - src/analyze/analyze-verify.c | 2 +- - src/analyze/analyze-verify.h | 2 +- - src/analyze/analyze.c | 24 +- - src/basic/path-lookup.c | 64 ++-- - src/basic/path-lookup.h | 21 +- - src/basic/unit-file.h | 11 +- - src/core/dbus-manager.c | 8 +- - src/core/fuzz-unit-file.c | 2 +- - src/core/main.c | 2 +- - src/core/manager.c | 6 +- - src/core/manager.h | 8 +- - src/libsystemd/sd-path/sd-path.c | 8 +- - src/portable/portable.c | 14 +- - src/shared/install-printf.c | 2 +- - src/shared/install-printf.h | 2 +- - src/shared/install.c | 92 ++--- - src/shared/install.h | 35 +- - src/shared/specifier.c | 26 +- - src/systemctl/systemctl-edit.c | 6 +- - src/systemctl/systemctl-is-enabled.c | 2 +- - src/systemctl/systemctl-show.c | 2 +- - src/systemctl/systemctl-start-special.c | 4 +- - src/systemctl/systemctl-start-unit.c | 6 +- - src/systemctl/systemctl-sysv-compat.c | 2 +- - src/systemctl/systemctl-util.c | 10 +- - src/systemctl/systemctl.c | 12 +- - src/systemctl/systemctl.h | 2 +- - src/sysv-generator/sysv-generator.c | 4 +- - src/test/test-bpf-firewall.c | 2 +- - src/test/test-bpf-foreign-programs.c | 2 +- - src/test/test-bpf-lsm.c | 2 +- - src/test/test-cgroup-mask.c | 2 +- - src/test/test-cgroup-unit-default.c | 2 +- - src/test/test-engine.c | 2 +- - src/test/test-execute.c | 10 +- - src/test/test-install-root.c | 448 ++++++++++++------------ - src/test/test-install.c | 72 ++-- - src/test/test-load-fragment.c | 96 ++--- - src/test/test-path-lookup.c | 30 +- - src/test/test-path.c | 2 +- - src/test/test-sched-prio.c | 2 +- - src/test/test-socket-bind.c | 2 +- - src/test/test-specifier.c | 2 +- - src/test/test-unit-file.c | 2 +- - src/test/test-unit-name.c | 2 +- - src/test/test-unit-serialize.c | 2 +- - src/test/test-watch-pid.c | 2 +- - src/tmpfiles/tmpfiles.c | 2 +- - 52 files changed, 536 insertions(+), 539 deletions(-) - -diff --git a/src/analyze/analyze-condition.c b/src/analyze/analyze-condition.c -index a7ad085f46..248fe01448 100644 ---- a/src/analyze/analyze-condition.c -+++ b/src/analyze/analyze-condition.c -@@ -73,7 +73,7 @@ static int log_helper(void *userdata, int level, int error, const char *file, in - return r; - } - --int verify_conditions(char **lines, UnitFileScope scope, const char *unit, const char *root) { -+int verify_conditions(char **lines, LookupScope scope, const char *unit, const char *root) { - _cleanup_(manager_freep) Manager *m = NULL; - Unit *u; - int r, q = 1; -diff --git a/src/analyze/analyze-condition.h b/src/analyze/analyze-condition.h -index 9ebd205b6d..04bd853c4f 100644 ---- a/src/analyze/analyze-condition.h -+++ b/src/analyze/analyze-condition.h -@@ -3,4 +3,4 @@ - - #include "install.h" - --int verify_conditions(char **lines, UnitFileScope scope, const char *unit, const char *root); -+int verify_conditions(char **lines, LookupScope scope, const char *unit, const char *root); -diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c -index d8ccbf8c54..e112922cbf 100644 ---- a/src/analyze/analyze-security.c -+++ b/src/analyze/analyze-security.c -@@ -2643,7 +2643,7 @@ static int offline_security_check(Unit *u, - - static int offline_security_checks(char **filenames, - JsonVariant *policy, -- UnitFileScope scope, -+ LookupScope scope, - bool check_man, - bool run_generators, - unsigned threshold, -@@ -2755,7 +2755,7 @@ static int offline_security_checks(char **filenames, - int analyze_security(sd_bus *bus, - char **units, - JsonVariant *policy, -- UnitFileScope scope, -+ LookupScope scope, - bool check_man, - bool run_generators, - bool offline, -diff --git a/src/analyze/analyze-security.h b/src/analyze/analyze-security.h -index 07483248ee..99bc1fabe4 100644 ---- a/src/analyze/analyze-security.h -+++ b/src/analyze/analyze-security.h -@@ -18,7 +18,7 @@ typedef enum AnalyzeSecurityFlags { - int analyze_security(sd_bus *bus, - char **units, - JsonVariant *policy, -- UnitFileScope scope, -+ LookupScope scope, - bool check_man, - bool run_generators, - bool offline, -diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c -index 39eb5cf93b..6680b9768d 100644 ---- a/src/analyze/analyze-verify.c -+++ b/src/analyze/analyze-verify.c -@@ -243,7 +243,7 @@ static void set_destroy_ignore_pointer_max(Set** s) { - set_free_free(*s); - } - --int verify_units(char **filenames, UnitFileScope scope, bool check_man, bool run_generators, RecursiveErrors recursive_errors, const char *root) { -+int verify_units(char **filenames, LookupScope scope, bool check_man, bool run_generators, RecursiveErrors recursive_errors, const char *root) { - const ManagerTestRunFlags flags = - MANAGER_TEST_RUN_MINIMAL | - MANAGER_TEST_RUN_ENV_GENERATORS | -diff --git a/src/analyze/analyze-verify.h b/src/analyze/analyze-verify.h -index 47b78a8158..385d635e33 100644 ---- a/src/analyze/analyze-verify.h -+++ b/src/analyze/analyze-verify.h -@@ -17,7 +17,7 @@ typedef enum RecursiveErrors { - int verify_generate_path(char **var, char **filenames); - int verify_prepare_filename(const char *filename, char **ret); - int verify_executable(Unit *u, const ExecCommand *exec, const char *root); --int verify_units(char **filenames, UnitFileScope scope, bool check_man, bool run_generators, RecursiveErrors recursive_errors, const char *root); -+int verify_units(char **filenames, LookupScope scope, bool check_man, bool run_generators, RecursiveErrors recursive_errors, const char *root); - - const char* recursive_errors_to_string(RecursiveErrors i) _const_; - RecursiveErrors recursive_errors_from_string(const char *s) _pure_; -diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c -index 846acf31d3..7520134880 100644 ---- a/src/analyze/analyze.c -+++ b/src/analyze/analyze.c -@@ -92,7 +92,7 @@ static usec_t arg_fuzz = 0; - static PagerFlags arg_pager_flags = 0; - static BusTransport arg_transport = BUS_TRANSPORT_LOCAL; - static const char *arg_host = NULL; --static UnitFileScope arg_scope = UNIT_FILE_SYSTEM; -+static LookupScope arg_scope = LOOKUP_SCOPE_SYSTEM; - static RecursiveErrors arg_recursive_errors = RECURSIVE_ERRORS_YES; - static bool arg_man = true; - static bool arg_generators = false; -@@ -171,7 +171,7 @@ typedef struct HostInfo { - } HostInfo; - - static int acquire_bus(sd_bus **bus, bool *use_full_bus) { -- bool user = arg_scope != UNIT_FILE_SYSTEM; -+ bool user = arg_scope != LOOKUP_SCOPE_SYSTEM; - int r; - - if (use_full_bus && *use_full_bus) { -@@ -349,9 +349,9 @@ static int acquire_boot_times(sd_bus *bus, BootTimes **bt) { - "Please try again later.\n" - "Hint: Use 'systemctl%s list-jobs' to see active jobs", - times.finish_time, -- arg_scope == UNIT_FILE_SYSTEM ? "" : " --user"); -+ arg_scope == LOOKUP_SCOPE_SYSTEM ? "" : " --user"); - -- if (arg_scope == UNIT_FILE_SYSTEM && times.security_start_time > 0) { -+ if (arg_scope == LOOKUP_SCOPE_SYSTEM && times.security_start_time > 0) { - /* security_start_time is set when systemd is not running under container environment. */ - if (times.initrd_time > 0) - times.kernel_done_time = times.initrd_time; -@@ -506,7 +506,7 @@ static int acquire_host_info(sd_bus *bus, HostInfo **hi) { - if (!host) - return log_oom(); - -- if (arg_scope != UNIT_FILE_SYSTEM) { -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) { - r = bus_connect_transport(arg_transport, arg_host, false, &system_bus); - if (r < 0) { - log_debug_errno(r, "Failed to connect to system bus, ignoring: %m"); -@@ -684,7 +684,7 @@ static int analyze_plot(int argc, char *argv[], void *userdata) { - _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; - _cleanup_(unit_times_free_arrayp) UnitTimes *times = NULL; - _cleanup_free_ char *pretty_times = NULL; -- bool use_full_bus = arg_scope == UNIT_FILE_SYSTEM; -+ bool use_full_bus = arg_scope == LOOKUP_SCOPE_SYSTEM; - BootTimes *boot; - UnitTimes *u; - int n, m = 1, y = 0, r; -@@ -702,7 +702,7 @@ static int analyze_plot(int argc, char *argv[], void *userdata) { - if (n < 0) - return n; - -- if (use_full_bus || arg_scope != UNIT_FILE_SYSTEM) { -+ if (use_full_bus || arg_scope != LOOKUP_SCOPE_SYSTEM) { - n = acquire_host_info(bus, &host); - if (n < 0) - return n; -@@ -2607,15 +2607,15 @@ static int parse_argv(int argc, char *argv[]) { - break; - - case ARG_SYSTEM: -- arg_scope = UNIT_FILE_SYSTEM; -+ arg_scope = LOOKUP_SCOPE_SYSTEM; - break; - - case ARG_USER: -- arg_scope = UNIT_FILE_USER; -+ arg_scope = LOOKUP_SCOPE_USER; - break; - - case ARG_GLOBAL: -- arg_scope = UNIT_FILE_GLOBAL; -+ arg_scope = LOOKUP_SCOPE_GLOBAL; - break; - - case ARG_ORDER: -@@ -2756,12 +2756,12 @@ static int parse_argv(int argc, char *argv[]) { - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Option --threshold= is only supported for security right now."); - -- if (arg_scope == UNIT_FILE_GLOBAL && -+ if (arg_scope == LOOKUP_SCOPE_GLOBAL && - !STR_IN_SET(argv[optind] ?: "time", "dot", "unit-paths", "verify")) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Option --global only makes sense with verbs dot, unit-paths, verify."); - -- if (streq_ptr(argv[optind], "cat-config") && arg_scope == UNIT_FILE_USER) -+ if (streq_ptr(argv[optind], "cat-config") && arg_scope == LOOKUP_SCOPE_USER) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Option --user is not supported for cat-config right now."); - -diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c -index b699756658..1f4331a8bf 100644 ---- a/src/basic/path-lookup.c -+++ b/src/basic/path-lookup.c -@@ -232,7 +232,7 @@ bool path_is_user_config_dir(const char *path) { - } - - static int acquire_generator_dirs( -- UnitFileScope scope, -+ LookupScope scope, - const char *tempdir, - char **generator, - char **generator_early, -@@ -244,17 +244,17 @@ static int acquire_generator_dirs( - assert(generator); - assert(generator_early); - assert(generator_late); -- assert(IN_SET(scope, UNIT_FILE_SYSTEM, UNIT_FILE_USER, UNIT_FILE_GLOBAL)); -+ assert(IN_SET(scope, LOOKUP_SCOPE_SYSTEM, LOOKUP_SCOPE_USER, LOOKUP_SCOPE_GLOBAL)); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EOPNOTSUPP; - - if (tempdir) - prefix = tempdir; -- else if (scope == UNIT_FILE_SYSTEM) -+ else if (scope == LOOKUP_SCOPE_SYSTEM) - prefix = "/run/systemd"; - else { -- /* UNIT_FILE_USER */ -+ /* LOOKUP_SCOPE_USER */ - const char *e; - - e = getenv("XDG_RUNTIME_DIR"); -@@ -288,21 +288,21 @@ static int acquire_generator_dirs( - } - - static int acquire_transient_dir( -- UnitFileScope scope, -+ LookupScope scope, - const char *tempdir, - char **ret) { - - char *transient; - - assert(ret); -- assert(IN_SET(scope, UNIT_FILE_SYSTEM, UNIT_FILE_USER, UNIT_FILE_GLOBAL)); -+ assert(IN_SET(scope, LOOKUP_SCOPE_SYSTEM, LOOKUP_SCOPE_USER, LOOKUP_SCOPE_GLOBAL)); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EOPNOTSUPP; - - if (tempdir) - transient = path_join(tempdir, "transient"); -- else if (scope == UNIT_FILE_SYSTEM) -+ else if (scope == LOOKUP_SCOPE_SYSTEM) - transient = strdup("/run/systemd/transient"); - else - return xdg_user_runtime_dir(ret, "/systemd/transient"); -@@ -313,7 +313,7 @@ static int acquire_transient_dir( - return 0; - } - --static int acquire_config_dirs(UnitFileScope scope, char **persistent, char **runtime) { -+static int acquire_config_dirs(LookupScope scope, char **persistent, char **runtime) { - _cleanup_free_ char *a = NULL, *b = NULL; - int r; - -@@ -322,17 +322,17 @@ static int acquire_config_dirs(UnitFileScope scope, char **persistent, char **ru - - switch (scope) { - -- case UNIT_FILE_SYSTEM: -+ case LOOKUP_SCOPE_SYSTEM: - a = strdup(SYSTEM_CONFIG_UNIT_DIR); - b = strdup("/run/systemd/system"); - break; - -- case UNIT_FILE_GLOBAL: -+ case LOOKUP_SCOPE_GLOBAL: - a = strdup(USER_CONFIG_UNIT_DIR); - b = strdup("/run/systemd/user"); - break; - -- case UNIT_FILE_USER: -+ case LOOKUP_SCOPE_USER: - r = xdg_user_config_dir(&a, "/systemd/user"); - if (r < 0 && r != -ENXIO) - return r; -@@ -364,7 +364,7 @@ static int acquire_config_dirs(UnitFileScope scope, char **persistent, char **ru - return 0; - } - --static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **runtime) { -+static int acquire_control_dirs(LookupScope scope, char **persistent, char **runtime) { - _cleanup_free_ char *a = NULL; - int r; - -@@ -373,7 +373,7 @@ static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **r - - switch (scope) { - -- case UNIT_FILE_SYSTEM: { -+ case LOOKUP_SCOPE_SYSTEM: { - _cleanup_free_ char *b = NULL; - - a = strdup("/etc/systemd/system.control"); -@@ -389,7 +389,7 @@ static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **r - break; - } - -- case UNIT_FILE_USER: -+ case LOOKUP_SCOPE_USER: - r = xdg_user_config_dir(&a, "/systemd/user.control"); - if (r < 0 && r != -ENXIO) - return r; -@@ -406,7 +406,7 @@ static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **r - - break; - -- case UNIT_FILE_GLOBAL: -+ case LOOKUP_SCOPE_GLOBAL: - return -EOPNOTSUPP; - - default: -@@ -419,7 +419,7 @@ static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **r - } - - static int acquire_attached_dirs( -- UnitFileScope scope, -+ LookupScope scope, - char **ret_persistent, - char **ret_runtime) { - -@@ -429,7 +429,7 @@ static int acquire_attached_dirs( - assert(ret_runtime); - - /* Portable services are not available to regular users for now. */ -- if (scope != UNIT_FILE_SYSTEM) -+ if (scope != LOOKUP_SCOPE_SYSTEM) - return -EOPNOTSUPP; - - a = strdup("/etc/systemd/system.attached"); -@@ -509,7 +509,7 @@ static int get_paths_from_environ(const char *var, char ***paths, bool *append) - - int lookup_paths_init( - LookupPaths *lp, -- UnitFileScope scope, -+ LookupScope scope, - LookupPathsFlags flags, - const char *root_dir) { - -@@ -528,14 +528,14 @@ int lookup_paths_init( - - assert(lp); - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - #if HAVE_SPLIT_USR - flags |= LOOKUP_PATHS_SPLIT_USR; - #endif - - if (!empty_or_root(root_dir)) { -- if (scope == UNIT_FILE_USER) -+ if (scope == LOOKUP_SCOPE_USER) - return -EINVAL; - - r = is_dir(root_dir, true); -@@ -560,8 +560,8 @@ int lookup_paths_init( - if (r < 0) - return r; - -- if (scope == UNIT_FILE_USER) { -- r = acquire_config_dirs(UNIT_FILE_GLOBAL, &global_persistent_config, &global_runtime_config); -+ if (scope == LOOKUP_SCOPE_USER) { -+ r = acquire_config_dirs(LOOKUP_SCOPE_GLOBAL, &global_persistent_config, &global_runtime_config); - if (r < 0) - return r; - } -@@ -606,7 +606,7 @@ int lookup_paths_init( - - switch (scope) { - -- case UNIT_FILE_SYSTEM: -+ case LOOKUP_SCOPE_SYSTEM: - add = strv_new( - /* If you modify this you also want to modify - * systemdsystemunitpath= in systemd.pc.in! */ -@@ -629,7 +629,7 @@ int lookup_paths_init( - STRV_IFNOTNULL(generator_late)); - break; - -- case UNIT_FILE_GLOBAL: -+ case LOOKUP_SCOPE_GLOBAL: - add = strv_new( - /* If you modify this you also want to modify - * systemduserunitpath= in systemd.pc.in, and -@@ -652,7 +652,7 @@ int lookup_paths_init( - STRV_IFNOTNULL(generator_late)); - break; - -- case UNIT_FILE_USER: -+ case LOOKUP_SCOPE_USER: - add = user_dirs(persistent_config, runtime_config, - global_persistent_config, global_runtime_config, - generator, generator_early, generator_late, -@@ -741,7 +741,7 @@ int lookup_paths_init( - return 0; - } - --int lookup_paths_init_or_warn(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir) { -+int lookup_paths_init_or_warn(LookupPaths *lp, LookupScope scope, LookupPathsFlags flags, const char *root_dir) { - int r; - - r = lookup_paths_init(lp, scope, flags, root_dir); -@@ -790,7 +790,7 @@ void lookup_paths_log(LookupPaths *lp) { - } - } - --char **generator_binary_paths(UnitFileScope scope) { -+char **generator_binary_paths(LookupScope scope) { - bool append = false; /* Add items from SYSTEMD_GENERATOR_PATH before normal directories */ - _cleanup_strv_free_ char **paths = NULL; - int r; -@@ -805,15 +805,15 @@ char **generator_binary_paths(UnitFileScope scope) { - - switch (scope) { - -- case UNIT_FILE_SYSTEM: -+ case LOOKUP_SCOPE_SYSTEM: - add = strv_new("/run/systemd/system-generators", - "/etc/systemd/system-generators", - "/usr/local/lib/systemd/system-generators", - SYSTEM_GENERATOR_DIR); - break; - -- case UNIT_FILE_GLOBAL: -- case UNIT_FILE_USER: -+ case LOOKUP_SCOPE_GLOBAL: -+ case LOOKUP_SCOPE_USER: - add = strv_new("/run/systemd/user-generators", - "/etc/systemd/user-generators", - "/usr/local/lib/systemd/user-generators", -diff --git a/src/basic/path-lookup.h b/src/basic/path-lookup.h -index 1f0e5ea271..aed72defe7 100644 ---- a/src/basic/path-lookup.h -+++ b/src/basic/path-lookup.h -@@ -3,10 +3,7 @@ - - #include - --typedef struct LookupPaths LookupPaths; -- - #include "def.h" --#include "unit-file.h" - #include "macro.h" - - typedef enum LookupPathsFlags { -@@ -15,7 +12,15 @@ typedef enum LookupPathsFlags { - LOOKUP_PATHS_SPLIT_USR = 1 << 2, - } LookupPathsFlags; - --struct LookupPaths { -+typedef enum LookupScope { -+ LOOKUP_SCOPE_SYSTEM, -+ LOOKUP_SCOPE_GLOBAL, -+ LOOKUP_SCOPE_USER, -+ _LOOKUP_SCOPE_MAX, -+ _LOOKUP_SCOPE_INVALID = -EINVAL, -+} LookupScope; -+ -+typedef struct LookupPaths { - /* Where we look for unit files. This includes the individual special paths below, but also any vendor - * supplied, static unit file paths. */ - char **search_path; -@@ -52,10 +57,10 @@ struct LookupPaths { - - /* A temporary directory when running in test mode, to be nuked */ - char *temporary_dir; --}; -+} LookupPaths; - --int lookup_paths_init(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir); --int lookup_paths_init_or_warn(LookupPaths *lp, UnitFileScope scope, LookupPathsFlags flags, const char *root_dir); -+int lookup_paths_init(LookupPaths *lp, LookupScope scope, LookupPathsFlags flags, const char *root_dir); -+int lookup_paths_init_or_warn(LookupPaths *lp, LookupScope scope, LookupPathsFlags flags, const char *root_dir); - - int xdg_user_dirs(char ***ret_config_dirs, char ***ret_data_dirs); - int xdg_user_runtime_dir(char **ret, const char *suffix); -@@ -68,7 +73,7 @@ bool path_is_user_config_dir(const char *path); - void lookup_paths_log(LookupPaths *p); - void lookup_paths_free(LookupPaths *p); - --char **generator_binary_paths(UnitFileScope scope); -+char **generator_binary_paths(LookupScope scope); - char **env_generator_binary_paths(bool is_system); - - #define NETWORK_DIRS ((const char* const*) CONF_PATHS_STRV("systemd/network")) -diff --git a/src/basic/unit-file.h b/src/basic/unit-file.h -index b7c03e9c2c..1c43861f00 100644 ---- a/src/basic/unit-file.h -+++ b/src/basic/unit-file.h -@@ -4,12 +4,11 @@ - #include - - #include "hashmap.h" -+#include "path-lookup.h" - #include "time-util.h" - #include "unit-name.h" - - typedef enum UnitFileState UnitFileState; --typedef enum UnitFileScope UnitFileScope; --typedef struct LookupPaths LookupPaths; - - enum UnitFileState { - UNIT_FILE_ENABLED, -@@ -29,14 +28,6 @@ enum UnitFileState { - _UNIT_FILE_STATE_INVALID = -EINVAL, - }; - --enum UnitFileScope { -- UNIT_FILE_SYSTEM, -- UNIT_FILE_GLOBAL, -- UNIT_FILE_USER, -- _UNIT_FILE_SCOPE_MAX, -- _UNIT_FILE_SCOPE_INVALID = -EINVAL, --}; -- - bool unit_type_may_alias(UnitType type) _const_; - bool unit_type_may_template(UnitType type) _const_; - -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 0e3590d1c9..efba6331b9 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -2215,7 +2215,7 @@ fail: - static int method_enable_unit_files_generic( - sd_bus_message *message, - Manager *m, -- int (*call)(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, size_t *n_changes), -+ int (*call)(LookupScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, size_t *n_changes), - bool carries_install_info, - sd_bus_error *error) { - -@@ -2279,7 +2279,7 @@ static int method_link_unit_files(sd_bus_message *message, void *userdata, sd_bu - return method_enable_unit_files_generic(message, userdata, unit_file_link, false, error); - } - --static int unit_file_preset_without_mode(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char **files, UnitFileChange **changes, size_t *n_changes) { -+static int unit_file_preset_without_mode(LookupScope scope, UnitFileFlags flags, const char *root_dir, char **files, UnitFileChange **changes, size_t *n_changes) { - return unit_file_preset(scope, flags, root_dir, files, UNIT_FILE_PRESET_FULL, changes, n_changes); - } - -@@ -2339,7 +2339,7 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use - static int method_disable_unit_files_generic( - sd_bus_message *message, - Manager *m, -- int (*call)(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, size_t *n_changes), -+ int (*call)(LookupScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, size_t *n_changes), - sd_bus_error *error) { - - _cleanup_strv_free_ char **l = NULL; -@@ -2565,7 +2565,7 @@ static int method_get_unit_file_links(sd_bus_message *message, void *userdata, s - flags = UNIT_FILE_DRY_RUN | - (runtime ? UNIT_FILE_RUNTIME : 0); - -- r = unit_file_disable(UNIT_FILE_SYSTEM, flags, NULL, p, &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, flags, NULL, p, &changes, &n_changes); - if (r < 0) - return log_error_errno(r, "Failed to get file links for %s: %m", name); - -diff --git a/src/core/fuzz-unit-file.c b/src/core/fuzz-unit-file.c -index 780dd3988d..c12e874e2d 100644 ---- a/src/core/fuzz-unit-file.c -+++ b/src/core/fuzz-unit-file.c -@@ -62,7 +62,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - if (!getenv("SYSTEMD_LOG_LEVEL")) - log_set_max_level(LOG_CRIT); - -- assert_se(manager_new(UNIT_FILE_SYSTEM, MANAGER_TEST_RUN_MINIMAL, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_SYSTEM, MANAGER_TEST_RUN_MINIMAL, &m) >= 0); - - name = strjoina("a.", unit_type_to_string(t)); - assert_se(unit_new_for_name(m, unit_vtable[t]->object_size, name, &u) >= 0); -diff --git a/src/core/main.c b/src/core/main.c -index 4bad2e84a0..667e972364 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -2970,7 +2970,7 @@ int main(int argc, char *argv[]) { - if (r < 0) - goto finish; - -- r = manager_new(arg_system ? UNIT_FILE_SYSTEM : UNIT_FILE_USER, -+ r = manager_new(arg_system ? LOOKUP_SCOPE_SYSTEM : LOOKUP_SCOPE_USER, - arg_action == ACTION_TEST ? MANAGER_TEST_FULL : 0, - &m); - if (r < 0) { -diff --git a/src/core/manager.c b/src/core/manager.c -index 60846a66e6..c01128adb4 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -781,13 +781,13 @@ static int manager_setup_sigchld_event_source(Manager *m) { - return 0; - } - --int manager_new(UnitFileScope scope, ManagerTestRunFlags test_run_flags, Manager **_m) { -+int manager_new(LookupScope scope, ManagerTestRunFlags test_run_flags, Manager **_m) { - _cleanup_(manager_freep) Manager *m = NULL; - const char *e; - int r; - - assert(_m); -- assert(IN_SET(scope, UNIT_FILE_SYSTEM, UNIT_FILE_USER)); -+ assert(IN_SET(scope, LOOKUP_SCOPE_SYSTEM, LOOKUP_SCOPE_USER)); - - m = new(Manager, 1); - if (!m) -@@ -1705,7 +1705,7 @@ static void manager_preset_all(Manager *m) { - return; - - /* If this is the first boot, and we are in the host system, then preset everything */ -- r = unit_file_preset_all(UNIT_FILE_SYSTEM, 0, NULL, UNIT_FILE_PRESET_ENABLE_ONLY, NULL, 0); -+ r = unit_file_preset_all(LOOKUP_SCOPE_SYSTEM, 0, NULL, UNIT_FILE_PRESET_ENABLE_ONLY, NULL, 0); - if (r < 0) - log_full_errno(r == -EEXIST ? LOG_NOTICE : LOG_WARNING, r, - "Failed to populate /etc with preset unit settings, ignoring: %m"); -diff --git a/src/core/manager.h b/src/core/manager.h -index e445e4d751..281d2a2138 100644 ---- a/src/core/manager.h -+++ b/src/core/manager.h -@@ -235,7 +235,7 @@ struct Manager { - int user_lookup_fds[2]; - sd_event_source *user_lookup_event_source; - -- UnitFileScope unit_file_scope; -+ LookupScope unit_file_scope; - LookupPaths lookup_paths; - Hashmap *unit_id_map; - Hashmap *unit_name_map; -@@ -461,8 +461,8 @@ static inline usec_t manager_default_timeout_abort_usec(Manager *m) { - return m->default_timeout_abort_set ? m->default_timeout_abort_usec : m->default_timeout_stop_usec; - } - --#define MANAGER_IS_SYSTEM(m) ((m)->unit_file_scope == UNIT_FILE_SYSTEM) --#define MANAGER_IS_USER(m) ((m)->unit_file_scope != UNIT_FILE_SYSTEM) -+#define MANAGER_IS_SYSTEM(m) ((m)->unit_file_scope == LOOKUP_SCOPE_SYSTEM) -+#define MANAGER_IS_USER(m) ((m)->unit_file_scope != LOOKUP_SCOPE_SYSTEM) - - #define MANAGER_IS_RELOADING(m) ((m)->n_reloading > 0) - -@@ -473,7 +473,7 @@ static inline usec_t manager_default_timeout_abort_usec(Manager *m) { - - #define MANAGER_IS_TEST_RUN(m) ((m)->test_run_flags != 0) - --int manager_new(UnitFileScope scope, ManagerTestRunFlags test_run_flags, Manager **m); -+int manager_new(LookupScope scope, ManagerTestRunFlags test_run_flags, Manager **m); - Manager* manager_free(Manager *m); - DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free); - -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c -index 8d9cfbc0af..385cfd3006 100644 ---- a/src/libsystemd/sd-path/sd-path.c -+++ b/src/libsystemd/sd-path/sd-path.c -@@ -601,8 +601,8 @@ static int get_search(uint64_t type, char ***list) { - case SD_PATH_SYSTEMD_SEARCH_SYSTEM_UNIT: - case SD_PATH_SYSTEMD_SEARCH_USER_UNIT: { - _cleanup_(lookup_paths_free) LookupPaths lp = {}; -- const UnitFileScope scope = type == SD_PATH_SYSTEMD_SEARCH_SYSTEM_UNIT ? -- UNIT_FILE_SYSTEM : UNIT_FILE_USER; -+ const LookupScope scope = type == SD_PATH_SYSTEMD_SEARCH_SYSTEM_UNIT ? -+ LOOKUP_SCOPE_SYSTEM : LOOKUP_SCOPE_USER; - - r = lookup_paths_init(&lp, scope, 0, NULL); - if (r < 0) -@@ -615,8 +615,8 @@ static int get_search(uint64_t type, char ***list) { - case SD_PATH_SYSTEMD_SEARCH_SYSTEM_GENERATOR: - case SD_PATH_SYSTEMD_SEARCH_USER_GENERATOR: { - char **t; -- const UnitFileScope scope = type == SD_PATH_SYSTEMD_SEARCH_SYSTEM_GENERATOR ? -- UNIT_FILE_SYSTEM : UNIT_FILE_USER; -+ const LookupScope scope = type == SD_PATH_SYSTEMD_SEARCH_SYSTEM_GENERATOR ? -+ LOOKUP_SCOPE_SYSTEM : LOOKUP_SCOPE_USER; - - t = generator_binary_paths(scope); - if (!t) -diff --git a/src/portable/portable.c b/src/portable/portable.c -index 5be7ea854d..4c75dc0e0c 100644 ---- a/src/portable/portable.c -+++ b/src/portable/portable.c -@@ -231,7 +231,7 @@ static int extract_now( - /* Then, send unit file data to the parent (or/and add it to the hashmap). For that we use our usual unit - * discovery logic. Note that we force looking inside of /lib/systemd/system/ for units too, as we mightbe - * compiled for a split-usr system but the image might be a legacy-usr one. */ -- r = lookup_paths_init(&paths, UNIT_FILE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, where); -+ r = lookup_paths_init(&paths, LOOKUP_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, where); - if (r < 0) - return log_debug_errno(r, "Failed to acquire lookup paths: %m"); - -@@ -1302,12 +1302,12 @@ int portable_attach( - strempty(extensions_joined)); - } - -- r = lookup_paths_init(&paths, UNIT_FILE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); -+ r = lookup_paths_init(&paths, LOOKUP_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); - if (r < 0) - return r; - - HASHMAP_FOREACH(item, unit_files) { -- r = unit_file_exists(UNIT_FILE_SYSTEM, &paths, item->name); -+ r = unit_file_exists(LOOKUP_SCOPE_SYSTEM, &paths, item->name); - if (r < 0) - return sd_bus_error_set_errnof(error, r, "Failed to determine whether unit '%s' exists on the host: %m", item->name); - if (!FLAGS_SET(flags, PORTABLE_REATTACH) && r > 0) -@@ -1489,7 +1489,7 @@ int portable_detach( - - assert(name_or_path); - -- r = lookup_paths_init(&paths, UNIT_FILE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); -+ r = lookup_paths_init(&paths, LOOKUP_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); - if (r < 0) - return r; - -@@ -1523,7 +1523,7 @@ int portable_detach( - if (r == 0) - continue; - -- r = unit_file_lookup_state(UNIT_FILE_SYSTEM, &paths, de->d_name, &state); -+ r = unit_file_lookup_state(LOOKUP_SCOPE_SYSTEM, &paths, de->d_name, &state); - if (r < 0) - return log_debug_errno(r, "Failed to determine unit file state of '%s': %m", de->d_name); - if (!IN_SET(state, UNIT_FILE_STATIC, UNIT_FILE_DISABLED, UNIT_FILE_LINKED, UNIT_FILE_RUNTIME, UNIT_FILE_LINKED_RUNTIME)) -@@ -1657,7 +1657,7 @@ static int portable_get_state_internal( - assert(name_or_path); - assert(ret); - -- r = lookup_paths_init(&paths, UNIT_FILE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); -+ r = lookup_paths_init(&paths, LOOKUP_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL); - if (r < 0) - return r; - -@@ -1693,7 +1693,7 @@ static int portable_get_state_internal( - if (r == 0) - continue; - -- r = unit_file_lookup_state(UNIT_FILE_SYSTEM, &paths, de->d_name, &state); -+ r = unit_file_lookup_state(LOOKUP_SCOPE_SYSTEM, &paths, de->d_name, &state); - if (r < 0) - return log_debug_errno(r, "Failed to determine unit file state of '%s': %m", de->d_name); - if (!IN_SET(state, UNIT_FILE_STATIC, UNIT_FILE_DISABLED, UNIT_FILE_LINKED, UNIT_FILE_LINKED_RUNTIME)) -diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c -index 7aad1b7443..fdb8e021ac 100644 ---- a/src/shared/install-printf.c -+++ b/src/shared/install-printf.c -@@ -104,7 +104,7 @@ static int specifier_last_component(char specifier, const void *data, const char - } - - int install_name_printf( -- UnitFileScope scope, -+ LookupScope scope, - const UnitFileInstallInfo *info, - const char *format, - char **ret) { -diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h -index 60d3a9fc55..6a9ab24e15 100644 ---- a/src/shared/install-printf.h -+++ b/src/shared/install-printf.h -@@ -5,7 +5,7 @@ - #include "unit-name.h" - - int install_name_printf( -- UnitFileScope scope, -+ LookupScope scope, - const UnitFileInstallInfo *info, - const char *format, - char **ret); -diff --git a/src/shared/install.c b/src/shared/install.c -index 22b16ad453..fa7bbdd93a 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -47,7 +47,7 @@ typedef enum SearchFlags { - } SearchFlags; - - typedef struct { -- UnitFileScope scope; -+ LookupScope scope; - OrderedHashmap *will_process; - OrderedHashmap *have_processed; - } InstallContext; -@@ -942,7 +942,7 @@ static int find_symlinks( - } - - static int find_symlinks_in_scope( -- UnitFileScope scope, -+ LookupScope scope, - const LookupPaths *lp, - const UnitFileInstallInfo *info, - bool match_name, -@@ -976,7 +976,7 @@ static int find_symlinks_in_scope( - } - - /* look for global enablement of user units */ -- if (scope == UNIT_FILE_USER && path_is_user_config_dir(*p)) { -+ if (scope == LOOKUP_SCOPE_USER && path_is_user_config_dir(*p)) { - *state = UNIT_FILE_ENABLED; - return 1; - } -@@ -1868,7 +1868,7 @@ int unit_file_verify_alias( - } - - static int install_info_symlink_alias( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileInstallInfo *info, - const LookupPaths *lp, - const char *config_path, -@@ -1912,7 +1912,7 @@ static int install_info_symlink_alias( - } - - static int install_info_symlink_wants( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags file_flags, - UnitFileInstallInfo *info, - const LookupPaths *lp, -@@ -2052,7 +2052,7 @@ static int install_info_symlink_link( - } - - static int install_info_apply( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags file_flags, - UnitFileInstallInfo *info, - const LookupPaths *lp, -@@ -2225,7 +2225,7 @@ static int install_context_mark_for_removal( - } - - int unit_file_mask( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -2237,7 +2237,7 @@ int unit_file_mask( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2270,7 +2270,7 @@ int unit_file_mask( - } - - int unit_file_unmask( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -2285,7 +2285,7 @@ int unit_file_unmask( - int r, q; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2362,7 +2362,7 @@ int unit_file_unmask( - } - - int unit_file_link( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -2376,7 +2376,7 @@ int unit_file_link( - int r, q; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2462,7 +2462,7 @@ static int path_shall_revert(const LookupPaths *lp, const char *path) { - } - - int unit_file_revert( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - char **files, - UnitFileChange **changes, -@@ -2613,7 +2613,7 @@ int unit_file_revert( - } - - int unit_file_add_dependency( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags file_flags, - const char *root_dir, - char **files, -@@ -2629,7 +2629,7 @@ int unit_file_add_dependency( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(target); - - if (!IN_SET(dep, UNIT_WANTS, UNIT_REQUIRES)) -@@ -2684,7 +2684,7 @@ int unit_file_add_dependency( - - static int do_unit_file_enable( - const LookupPaths *lp, -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *config_path, - char **files, -@@ -2714,7 +2714,7 @@ static int do_unit_file_enable( - } - - int unit_file_enable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -2725,7 +2725,7 @@ int unit_file_enable( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2740,7 +2740,7 @@ int unit_file_enable( - - static int do_unit_file_disable( - const LookupPaths *lp, -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *config_path, - char **files, -@@ -2769,7 +2769,7 @@ static int do_unit_file_disable( - - - int unit_file_disable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -2780,7 +2780,7 @@ int unit_file_disable( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2794,7 +2794,7 @@ int unit_file_disable( - } - - static int normalize_linked_files( -- UnitFileScope scope, -+ LookupScope scope, - const LookupPaths *lp, - char **names_or_paths, - char ***ret_names, -@@ -2852,7 +2852,7 @@ static int normalize_linked_files( - } - - int unit_file_reenable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **names_or_paths, -@@ -2864,7 +2864,7 @@ int unit_file_reenable( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); - if (r < 0) -@@ -2888,7 +2888,7 @@ int unit_file_reenable( - } - - int unit_file_set_default( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - const char *name, -@@ -2902,7 +2902,7 @@ int unit_file_set_default( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(name); - - if (unit_name_to_type(name) != UNIT_TARGET) /* this also validates the name */ -@@ -2923,7 +2923,7 @@ int unit_file_set_default( - } - - int unit_file_get_default( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - char **name) { - -@@ -2934,7 +2934,7 @@ int unit_file_get_default( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(name); - - r = lookup_paths_init(&lp, scope, 0, root_dir); -@@ -2958,7 +2958,7 @@ int unit_file_get_default( - } - - int unit_file_lookup_state( -- UnitFileScope scope, -+ LookupScope scope, - const LookupPaths *lp, - const char *name, - UnitFileState *ret) { -@@ -3056,7 +3056,7 @@ int unit_file_lookup_state( - } - - int unit_file_get_state( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - const char *name, - UnitFileState *ret) { -@@ -3065,7 +3065,7 @@ int unit_file_get_state( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(name); - - r = lookup_paths_init(&lp, scope, 0, root_dir); -@@ -3075,7 +3075,7 @@ int unit_file_get_state( - return unit_file_lookup_state(scope, &lp, name, ret); - } - --int unit_file_exists(UnitFileScope scope, const LookupPaths *lp, const char *name) { -+int unit_file_exists(LookupScope scope, const LookupPaths *lp, const char *name) { - _cleanup_(install_context_done) InstallContext c = { .scope = scope }; - int r; - -@@ -3127,17 +3127,17 @@ static int split_pattern_into_name_and_instances(const char *pattern, char **out - return 0; - } - --static int presets_find_config(UnitFileScope scope, const char *root_dir, char ***files) { -+static int presets_find_config(LookupScope scope, const char *root_dir, char ***files) { - static const char* const system_dirs[] = {CONF_PATHS("systemd/system-preset"), NULL}; - static const char* const user_dirs[] = {CONF_PATHS_USR("systemd/user-preset"), NULL}; - const char* const* dirs; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - -- if (scope == UNIT_FILE_SYSTEM) -+ if (scope == LOOKUP_SCOPE_SYSTEM) - dirs = system_dirs; -- else if (IN_SET(scope, UNIT_FILE_GLOBAL, UNIT_FILE_USER)) -+ else if (IN_SET(scope, LOOKUP_SCOPE_GLOBAL, LOOKUP_SCOPE_USER)) - dirs = user_dirs; - else - assert_not_reached(); -@@ -3145,13 +3145,13 @@ static int presets_find_config(UnitFileScope scope, const char *root_dir, char * - return conf_files_list_strv(files, ".preset", root_dir, 0, dirs); - } - --static int read_presets(UnitFileScope scope, const char *root_dir, UnitFilePresets *presets) { -+static int read_presets(LookupScope scope, const char *root_dir, UnitFilePresets *presets) { - _cleanup_(unit_file_presets_freep) UnitFilePresets ps = {}; - _cleanup_strv_free_ char **files = NULL; - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(presets); - - r = presets_find_config(scope, root_dir, &files); -@@ -3325,7 +3325,7 @@ static int query_presets(const char *name, const UnitFilePresets *presets, char - } - } - --int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name, UnitFilePresets *cached) { -+int unit_file_query_preset(LookupScope scope, const char *root_dir, const char *name, UnitFilePresets *cached) { - _cleanup_(unit_file_presets_freep) UnitFilePresets tmp = {}; - int r; - -@@ -3389,7 +3389,7 @@ static int execute_preset( - } - - static int preset_prepare_one( -- UnitFileScope scope, -+ LookupScope scope, - InstallContext *plus, - InstallContext *minus, - LookupPaths *lp, -@@ -3442,7 +3442,7 @@ static int preset_prepare_one( - } - - int unit_file_preset( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags file_flags, - const char *root_dir, - char **files, -@@ -3457,7 +3457,7 @@ int unit_file_preset( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(mode < _UNIT_FILE_PRESET_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); -@@ -3482,7 +3482,7 @@ int unit_file_preset( - } - - int unit_file_preset_all( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags file_flags, - const char *root_dir, - UnitFilePresetMode mode, -@@ -3496,7 +3496,7 @@ int unit_file_preset_all( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(mode < _UNIT_FILE_PRESET_MAX); - - r = lookup_paths_init(&lp, scope, 0, root_dir); -@@ -3557,7 +3557,7 @@ Hashmap* unit_file_list_free(Hashmap *h) { - DEFINE_TRIVIAL_CLEANUP_FUNC(UnitFileList*, unit_file_list_free_one); - - int unit_file_get_list( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - Hashmap *h, - char **states, -@@ -3567,7 +3567,7 @@ int unit_file_get_list( - int r; - - assert(scope >= 0); -- assert(scope < _UNIT_FILE_SCOPE_MAX); -+ assert(scope < _LOOKUP_SCOPE_MAX); - assert(h); - - r = lookup_paths_init(&lp, scope, 0, root_dir); -diff --git a/src/shared/install.h b/src/shared/install.h -index 95427537f2..2ba7e8aea0 100644 ---- a/src/shared/install.h -+++ b/src/shared/install.h -@@ -15,6 +15,7 @@ typedef struct UnitFileInstallInfo UnitFileInstallInfo; - #include "macro.h" - #include "path-lookup.h" - #include "strv.h" -+#include "unit-file.h" - #include "unit-name.h" - - enum UnitFilePresetMode { -@@ -95,28 +96,28 @@ struct UnitFileInstallInfo { - }; - - int unit_file_enable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_disable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_reenable( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **names_or_paths, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_preset( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -124,52 +125,52 @@ int unit_file_preset( - UnitFileChange **changes, - size_t *n_changes); - int unit_file_preset_all( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - UnitFilePresetMode mode, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_mask( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_unmask( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_link( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_revert( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - char **files, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_set_default( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - const char *file, - UnitFileChange **changes, - size_t *n_changes); - int unit_file_get_default( -- UnitFileScope scope, -+ LookupScope scope, - const char *root_dir, - char **name); - int unit_file_add_dependency( -- UnitFileScope scope, -+ LookupScope scope, - UnitFileFlags flags, - const char *root_dir, - char **files, -@@ -179,15 +180,15 @@ int unit_file_add_dependency( - size_t *n_changes); - - int unit_file_lookup_state( -- UnitFileScope scope, -+ LookupScope scope, - const LookupPaths *paths, - const char *name, - UnitFileState *ret); - --int unit_file_get_state(UnitFileScope scope, const char *root_dir, const char *filename, UnitFileState *ret); --int unit_file_exists(UnitFileScope scope, const LookupPaths *paths, const char *name); -+int unit_file_get_state(LookupScope scope, const char *root_dir, const char *filename, UnitFileState *ret); -+int unit_file_exists(LookupScope scope, const LookupPaths *paths, const char *name); - --int unit_file_get_list(UnitFileScope scope, const char *root_dir, Hashmap *h, char **states, char **patterns); -+int unit_file_get_list(LookupScope scope, const char *root_dir, Hashmap *h, char **states, char **patterns); - Hashmap* unit_file_list_free(Hashmap *h); - - int unit_file_changes_add(UnitFileChange **changes, size_t *n_changes, int type, const char *path, const char *source); -@@ -210,7 +211,7 @@ typedef struct { - } UnitFilePresets; - - void unit_file_presets_freep(UnitFilePresets *p); --int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name, UnitFilePresets *cached); -+int unit_file_query_preset(LookupScope scope, const char *root_dir, const char *name, UnitFilePresets *cached); - - const char *unit_file_state_to_string(UnitFileState s) _const_; - UnitFileState unit_file_state_from_string(const char *s) _pure_; -diff --git a/src/shared/specifier.c b/src/shared/specifier.c -index ac353a651c..cfa60abc7b 100644 ---- a/src/shared/specifier.c -+++ b/src/shared/specifier.c -@@ -18,10 +18,10 @@ - #include "id128-util.h" - #include "macro.h" - #include "os-util.h" -+#include "path-lookup.h" - #include "specifier.h" - #include "string-util.h" - #include "strv.h" --#include "unit-file.h" - #include "user-util.h" - - /* -@@ -254,15 +254,15 @@ int specifier_os_image_version(char specifier, const void *data, const char *roo - } - - int specifier_group_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- UnitFileScope scope = PTR_TO_INT(data); -+ LookupScope scope = PTR_TO_INT(data); - char *t; - - assert(ret); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EINVAL; - -- t = gid_to_name(scope == UNIT_FILE_USER ? getgid() : 0); -+ t = gid_to_name(scope == LOOKUP_SCOPE_USER ? getgid() : 0); - if (!t) - return -ENOMEM; - -@@ -271,15 +271,15 @@ int specifier_group_name(char specifier, const void *data, const char *root, con - } - - int specifier_group_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- UnitFileScope scope = PTR_TO_INT(data); -+ LookupScope scope = PTR_TO_INT(data); - gid_t gid; - - assert(ret); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EINVAL; - -- gid = scope == UNIT_FILE_USER ? getgid() : 0; -+ gid = scope == LOOKUP_SCOPE_USER ? getgid() : 0; - - if (asprintf(ret, UID_FMT, gid) < 0) - return -ENOMEM; -@@ -288,16 +288,16 @@ int specifier_group_id(char specifier, const void *data, const char *root, const - } - - int specifier_user_name(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- UnitFileScope scope = PTR_TO_INT(data); -+ LookupScope scope = PTR_TO_INT(data); - uid_t uid; - char *t; - - assert(ret); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EINVAL; - -- uid = scope == UNIT_FILE_USER ? getuid() : 0; -+ uid = scope == LOOKUP_SCOPE_USER ? getuid() : 0; - - /* If we are UID 0 (root), this will not result in NSS, otherwise it might. This is good, as we want - * to be able to run this in PID 1, where our user ID is 0, but where NSS lookups are not allowed. -@@ -315,15 +315,15 @@ int specifier_user_name(char specifier, const void *data, const char *root, cons - } - - int specifier_user_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) { -- UnitFileScope scope = PTR_TO_INT(data); -+ LookupScope scope = PTR_TO_INT(data); - uid_t uid; - - assert(ret); - -- if (scope == UNIT_FILE_GLOBAL) -+ if (scope == LOOKUP_SCOPE_GLOBAL) - return -EINVAL; - -- uid = scope == UNIT_FILE_USER ? getuid() : 0; -+ uid = scope == LOOKUP_SCOPE_USER ? getuid() : 0; - - if (asprintf(ret, UID_FMT, uid) < 0) - return -ENOMEM; -diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c -index 328168e4bb..1d9e8dc5d2 100644 ---- a/src/systemctl/systemctl-edit.c -+++ b/src/systemctl/systemctl-edit.c -@@ -99,7 +99,7 @@ int cat(int argc, char *argv[], void *userdata) { - ansi_highlight_red(), - ansi_highlight_red(), - ansi_highlight_red(), -- arg_scope == UNIT_FILE_SYSTEM ? "" : " --user", -+ arg_scope == LOOKUP_SCOPE_SYSTEM ? "" : " --user", - ansi_normal()); - - r = cat_files(fragment_path, dropin_paths, 0); -@@ -406,8 +406,8 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { - if (!path) { - if (!arg_force) { - log_info("Run 'systemctl edit%s --force --full %s' to create a new unit.", -- arg_scope == UNIT_FILE_GLOBAL ? " --global" : -- arg_scope == UNIT_FILE_USER ? " --user" : "", -+ arg_scope == LOOKUP_SCOPE_GLOBAL ? " --global" : -+ arg_scope == LOOKUP_SCOPE_USER ? " --user" : "", - *name); - return -ENOENT; - } -diff --git a/src/systemctl/systemctl-is-enabled.c b/src/systemctl/systemctl-is-enabled.c -index eaf25217a8..db8f9e8cc4 100644 ---- a/src/systemctl/systemctl-is-enabled.c -+++ b/src/systemctl/systemctl-is-enabled.c -@@ -18,7 +18,7 @@ static int show_installation_targets_client_side(const char *name) { - flags = UNIT_FILE_DRY_RUN | - (arg_runtime ? UNIT_FILE_RUNTIME : 0); - -- r = unit_file_disable(UNIT_FILE_SYSTEM, flags, NULL, p, &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, flags, NULL, p, &changes, &n_changes); - if (r < 0) - return log_error_errno(r, "Failed to get file links for %s: %m", name); - -diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c -index ee96dac457..d472e1759d 100644 ---- a/src/systemctl/systemctl-show.c -+++ b/src/systemctl/systemctl-show.c -@@ -764,7 +764,7 @@ static void print_status_info( - getuid(), - get_output_flags() | OUTPUT_BEGIN_NEWLINE, - SD_JOURNAL_LOCAL_ONLY, -- arg_scope == UNIT_FILE_SYSTEM, -+ arg_scope == LOOKUP_SCOPE_SYSTEM, - ellipsized); - - if (i->need_daemon_reload) -diff --git a/src/systemctl/systemctl-start-special.c b/src/systemctl/systemctl-start-special.c -index 6ece700a9b..9c88e7910c 100644 ---- a/src/systemctl/systemctl-start-special.c -+++ b/src/systemctl/systemctl-start-special.c -@@ -242,10 +242,10 @@ int start_special(int argc, char *argv[], void *userdata) { - int start_system_special(int argc, char *argv[], void *userdata) { - /* Like start_special above, but raises an error when running in user mode */ - -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Bad action for %s mode.", -- arg_scope == UNIT_FILE_GLOBAL ? "--global" : "--user"); -+ arg_scope == LOOKUP_SCOPE_GLOBAL ? "--global" : "--user"); - - return start_special(argc, argv, userdata); - } -diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c -index b45495d51d..88b2b7a53d 100644 ---- a/src/systemctl/systemctl-start-unit.c -+++ b/src/systemctl/systemctl-start-unit.c -@@ -168,8 +168,8 @@ fail: - BUS_ERROR_UNIT_MASKED, - BUS_ERROR_JOB_TYPE_NOT_APPLICABLE)) - log_error("See %s logs and 'systemctl%s status%s %s' for details.", -- arg_scope == UNIT_FILE_SYSTEM ? "system" : "user", -- arg_scope == UNIT_FILE_SYSTEM ? "" : " --user", -+ arg_scope == LOOKUP_SCOPE_SYSTEM ? "system" : "user", -+ arg_scope == LOOKUP_SCOPE_SYSTEM ? "" : " --user", - name[0] == '-' ? " --" : "", - name); - -@@ -242,7 +242,7 @@ static const char** make_extra_args(const char *extra_args[static 4]) { - - assert(extra_args); - -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - extra_args[n++] = "--user"; - - if (arg_transport == BUS_TRANSPORT_REMOTE) { -diff --git a/src/systemctl/systemctl-sysv-compat.c b/src/systemctl/systemctl-sysv-compat.c -index c6e8defd1b..f6889993ed 100644 ---- a/src/systemctl/systemctl-sysv-compat.c -+++ b/src/systemctl/systemctl-sysv-compat.c -@@ -116,7 +116,7 @@ int enable_sysv_units(const char *verb, char **args) { - - /* Processes all SysV units, and reshuffles the array so that afterwards only the native units remain */ - -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - return 0; - - if (getenv_bool("SYSTEMCTL_SKIP_SYSV") > 0) -diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c -index db40154943..c39e0b7d5d 100644 ---- a/src/systemctl/systemctl-util.c -+++ b/src/systemctl/systemctl-util.c -@@ -46,7 +46,7 @@ int acquire_bus(BusFocus focus, sd_bus **ret) { - if (!buses[focus]) { - bool user; - -- user = arg_scope != UNIT_FILE_SYSTEM; -+ user = arg_scope != LOOKUP_SCOPE_SYSTEM; - - if (focus == BUS_MANAGER) - r = bus_connect_transport_systemd(arg_transport, arg_host, user, &buses[focus]); -@@ -73,7 +73,7 @@ void ask_password_agent_open_maybe(void) { - if (arg_dry_run) - return; - -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - return; - - ask_password_agent_open_if_enabled(arg_transport, arg_ask_password); -@@ -82,7 +82,7 @@ void ask_password_agent_open_maybe(void) { - void polkit_agent_open_maybe(void) { - /* Open the polkit agent as a child process if necessary */ - -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - return; - - polkit_agent_open_if_enabled(arg_transport, arg_ask_password); -@@ -380,7 +380,7 @@ void warn_unit_file_changed(const char *unit) { - ansi_highlight_red(), - ansi_normal(), - unit, -- arg_scope == UNIT_FILE_SYSTEM ? "" : " --user"); -+ arg_scope == LOOKUP_SCOPE_SYSTEM ? "" : " --user"); - } - - int unit_file_find_path(LookupPaths *lp, const char *unit_name, char **ret_unit_path) { -@@ -814,7 +814,7 @@ bool install_client_side(void) { - if (!isempty(arg_root)) - return true; - -- if (arg_scope == UNIT_FILE_GLOBAL) -+ if (arg_scope == LOOKUP_SCOPE_GLOBAL) - return true; - - /* Unsupported environment variable, mostly for debugging purposes */ -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 0489796a75..094cceebd6 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -66,7 +66,7 @@ char **arg_properties = NULL; - bool arg_all = false; - enum dependency arg_dependency = DEPENDENCY_FORWARD; - const char *_arg_job_mode = NULL; --UnitFileScope arg_scope = UNIT_FILE_SYSTEM; -+LookupScope arg_scope = LOOKUP_SCOPE_SYSTEM; - bool arg_wait = false; - bool arg_no_block = false; - int arg_legend = -1; /* -1: true, unless --quiet is passed, 1: true */ -@@ -616,15 +616,15 @@ static int systemctl_parse_argv(int argc, char *argv[]) { - break; - - case ARG_USER: -- arg_scope = UNIT_FILE_USER; -+ arg_scope = LOOKUP_SCOPE_USER; - break; - - case ARG_SYSTEM: -- arg_scope = UNIT_FILE_SYSTEM; -+ arg_scope = LOOKUP_SCOPE_SYSTEM; - break; - - case ARG_GLOBAL: -- arg_scope = UNIT_FILE_GLOBAL; -+ arg_scope = LOOKUP_SCOPE_GLOBAL; - break; - - case ARG_WAIT: -@@ -924,10 +924,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { - - /* If we are in --user mode, there's no point in talking to PolicyKit or the infra to query system - * passwords */ -- if (arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_scope != LOOKUP_SCOPE_SYSTEM) - arg_ask_password = false; - -- if (arg_transport == BUS_TRANSPORT_REMOTE && arg_scope != UNIT_FILE_SYSTEM) -+ if (arg_transport == BUS_TRANSPORT_REMOTE && arg_scope != LOOKUP_SCOPE_SYSTEM) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Cannot access user instance remotely."); - -diff --git a/src/systemctl/systemctl.h b/src/systemctl/systemctl.h -index d6b9d7495c..7507398c4a 100644 ---- a/src/systemctl/systemctl.h -+++ b/src/systemctl/systemctl.h -@@ -51,7 +51,7 @@ extern char **arg_properties; - extern bool arg_all; - extern enum dependency arg_dependency; - extern const char *_arg_job_mode; --extern UnitFileScope arg_scope; -+extern LookupScope arg_scope; - extern bool arg_wait; - extern bool arg_no_block; - extern int arg_legend; -diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c -index 428509f4ce..14ae873dc0 100644 ---- a/src/sysv-generator/sysv-generator.c -+++ b/src/sysv-generator/sysv-generator.c -@@ -747,7 +747,7 @@ static int enumerate_sysv(const LookupPaths *lp, Hashmap *all_services) { - if (hashmap_contains(all_services, name)) - continue; - -- r = unit_file_exists(UNIT_FILE_SYSTEM, lp, name); -+ r = unit_file_exists(LOOKUP_SCOPE_SYSTEM, lp, name); - if (r < 0 && !IN_SET(r, -ELOOP, -ERFKILL, -EADDRNOTAVAIL)) { - log_debug_errno(r, "Failed to detect whether %s exists, skipping: %m", name); - continue; -@@ -891,7 +891,7 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) - - assert_se(arg_dest = dest_late); - -- r = lookup_paths_init_or_warn(&lp, UNIT_FILE_SYSTEM, LOOKUP_PATHS_EXCLUDE_GENERATED, NULL); -+ r = lookup_paths_init_or_warn(&lp, LOOKUP_SCOPE_SYSTEM, LOOKUP_PATHS_EXCLUDE_GENERATED, NULL); - if (r < 0) - return r; - -diff --git a/src/test/test-bpf-firewall.c b/src/test/test-bpf-firewall.c -index 2e19db600e..cebd7d8a8b 100644 ---- a/src/test/test-bpf-firewall.c -+++ b/src/test/test-bpf-firewall.c -@@ -97,7 +97,7 @@ int main(int argc, char *argv[]) { - - /* The simple tests succeeded. Now let's try full unit-based use-case. */ - -- assert_se(manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); - assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); - - assert_se(u = unit_new(m, sizeof(Service))); -diff --git a/src/test/test-bpf-foreign-programs.c b/src/test/test-bpf-foreign-programs.c -index 56933c87bf..45b685d219 100644 ---- a/src/test/test-bpf-foreign-programs.c -+++ b/src/test/test-bpf-foreign-programs.c -@@ -301,7 +301,7 @@ int main(int argc, char *argv[]) { - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- assert_se(manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); - assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); - - assert_se(test_bpf_cgroup_programs(m, -diff --git a/src/test/test-bpf-lsm.c b/src/test/test-bpf-lsm.c -index 4a3b327a3f..812f7e99fb 100644 ---- a/src/test/test-bpf-lsm.c -+++ b/src/test/test-bpf-lsm.c -@@ -92,7 +92,7 @@ int main(int argc, char *argv[]) { - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- assert_se(manager_new(UNIT_FILE_SYSTEM, MANAGER_TEST_RUN_BASIC, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_SYSTEM, MANAGER_TEST_RUN_BASIC, &m) >= 0); - assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); - - /* We need to enable access to the filesystem where the binary is so we -diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c -index 6058f32b0e..57483f72c2 100644 ---- a/src/test/test-cgroup-mask.c -+++ b/src/test/test-cgroup-mask.c -@@ -42,7 +42,7 @@ TEST_RET(cgroup_mask, .sd_booted = true) { - assert_se(get_testdata_dir("units", &unit_dir) >= 0); - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m); - if (IN_SET(r, -EPERM, -EACCES)) { - log_error_errno(r, "manager_new: %m"); - return log_tests_skipped("cannot create manager"); -diff --git a/src/test/test-cgroup-unit-default.c b/src/test/test-cgroup-unit-default.c -index 4c8de1e382..94201a3ccc 100644 ---- a/src/test/test-cgroup-unit-default.c -+++ b/src/test/test-cgroup-unit-default.c -@@ -26,7 +26,7 @@ TEST_RET(default_memory_low, .sd_booted = true) { - assert_se(get_testdata_dir("units", &unit_dir) >= 0); - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m); - if (IN_SET(r, -EPERM, -EACCES)) { - log_error_errno(r, "manager_new: %m"); - return log_tests_skipped("cannot create manager"); -diff --git a/src/test/test-engine.c b/src/test/test-engine.c -index 673c665612..70f727d91c 100644 ---- a/src/test/test-engine.c -+++ b/src/test/test-engine.c -@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) { - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m); - if (manager_errno_skip_test(r)) - return log_tests_skipped_errno(r, "manager_new"); - assert_se(r >= 0); -diff --git a/src/test/test-execute.c b/src/test/test-execute.c -index 3b4b02184c..3505e81a43 100644 ---- a/src/test/test-execute.c -+++ b/src/test/test-execute.c -@@ -1116,7 +1116,7 @@ typedef struct test_entry { - - #define entry(x) {x, #x} - --static int run_tests(UnitFileScope scope, const test_entry tests[], char **patterns) { -+static int run_tests(LookupScope scope, const test_entry tests[], char **patterns) { - _cleanup_(manager_freep) Manager *m = NULL; - int r; - -@@ -1238,11 +1238,11 @@ int main(int argc, char *argv[]) { - assert_se(unsetenv("VAR2") == 0); - assert_se(unsetenv("VAR3") == 0); - -- r = run_tests(UNIT_FILE_USER, user_tests, argv + 1); -+ r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1); - if (r != 0) - return r; - -- r = run_tests(UNIT_FILE_SYSTEM, system_tests, argv + 1); -+ r = run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1); - if (r != 0) - return r; - -@@ -1264,11 +1264,11 @@ int main(int argc, char *argv[]) { - - can_unshare = false; - -- r = run_tests(UNIT_FILE_USER, user_tests, argv + 1); -+ r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1); - if (r != 0) - return r; - -- return run_tests(UNIT_FILE_SYSTEM, system_tests, argv + 1); -+ return run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1); - #else - return 0; - #endif -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index dca695d124..a36536b85b 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -23,41 +23,41 @@ TEST(basic_mask_and_enable) { - UnitFileChange *changes = NULL; - size_t n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "e.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "f.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "e.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "f.service", NULL) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/a.service"); - assert_se(write_string_file(p, - "[Install]\n" - "WantedBy=multi-user.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/b.service"); - assert_se(symlink("a.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - p = strjoina(root, "/usr/lib/systemd/system/c.service"); - assert_se(symlink("/usr/lib/systemd/system/a.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - p = strjoina(root, "/usr/lib/systemd/system/d.service"); - assert_se(symlink("c.service", p) >= 0); - - /* This one is interesting, as d follows a relative, then an absolute symlink */ -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - -- assert_se(unit_file_mask(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_mask(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "/dev/null")); -@@ -67,17 +67,17 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_MASKED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_MASKED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_MASKED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_MASKED); - - /* Enabling a masked unit should fail! */ -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == -ERFKILL); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == -ERFKILL); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_unmask(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_unmask(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/a.service"); -@@ -85,7 +85,7 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../a.service")); -@@ -94,18 +94,18 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - /* Enabling it again should succeed but be a NOP */ -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 0); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); -@@ -113,19 +113,19 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - /* Disabling a disabled unit must succeed but be a NOP */ -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 0); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - - /* Let's enable this indirectly via a symlink */ -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("d.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("d.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../a.service")); -@@ -134,14 +134,14 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - /* Let's try to reenable */ - -- assert_se(unit_file_reenable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("b.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_reenable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("b.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); -@@ -152,24 +152,24 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "b.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "c.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - - /* Test masking with relative symlinks */ - - p = strjoina(root, "/usr/lib/systemd/system/e.service"); - assert_se(symlink("../../../../../../dev/null", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "e.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "e.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "e.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "e.service", &state) >= 0 && state == UNIT_FILE_MASKED); - - assert_se(unlink(p) == 0); - assert_se(symlink("/usr/../dev/null", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "e.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "e.service", &state) >= 0 && state == UNIT_FILE_MASKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "e.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "e.service", &state) >= 0 && state == UNIT_FILE_MASKED); - - assert_se(unlink(p) == 0); - -@@ -180,10 +180,10 @@ TEST(basic_mask_and_enable) { - "[Install]\n" - "WantedBy=x.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "f.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "f.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "f.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "f.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("f.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("f.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../f.service")); -@@ -196,7 +196,7 @@ TEST(basic_mask_and_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "f.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "f.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - } - - TEST(linked_units) { -@@ -236,9 +236,9 @@ TEST(linked_units) { - "[Install]\n" - "WantedBy=multi-user.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked2.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked3.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked2.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked3.service", NULL) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/linked2.service"); - assert_se(symlink("/opt/linked2.service", p) >= 0); -@@ -246,12 +246,12 @@ TEST(linked_units) { - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked3.service"); - assert_se(symlink("/opt/linked3.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked3.service", &state) >= 0 && state == UNIT_FILE_LINKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked3.service", &state) >= 0 && state == UNIT_FILE_LINKED); - - /* First, let's link the unit into the search path */ -- assert_se(unit_file_link(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_link(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "/opt/linked.service")); -@@ -260,10 +260,10 @@ TEST(linked_units) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_LINKED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_LINKED); - - /* Let's unlink it from the search path again */ -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked.service"); -@@ -271,10 +271,10 @@ TEST(linked_units) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", NULL) == -ENOENT); - - /* Now, let's not just link it, but also enable it */ -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 2); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/linked.service"); - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked.service"); -@@ -294,10 +294,10 @@ TEST(linked_units) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - - /* And let's unlink it again */ -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 2); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/linked.service"); - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked.service"); -@@ -315,9 +315,9 @@ TEST(linked_units) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "linked.service", NULL) == -ENOENT); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked2.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("linked2.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 2); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/linked2.service"); - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked2.service"); -@@ -337,7 +337,7 @@ TEST(linked_units) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked3.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("linked3.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(startswith(changes[0].path, root)); -@@ -359,18 +359,18 @@ TEST(default) { - p = strjoina(root, "/usr/lib/systemd/system/test-default.target"); - assert_se(symlink("test-default-real.target", p) >= 0); - -- assert_se(unit_file_get_default(UNIT_FILE_SYSTEM, root, &def) == -ENOENT); -+ assert_se(unit_file_get_default(LOOKUP_SCOPE_SYSTEM, root, &def) == -ENOENT); - -- assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, 0, root, "idontexist.target", &changes, &n_changes) == -ENOENT); -+ assert_se(unit_file_set_default(LOOKUP_SCOPE_SYSTEM, 0, root, "idontexist.target", &changes, &n_changes) == -ENOENT); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == -ENOENT); - assert_se(streq_ptr(changes[0].path, "idontexist.target")); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_default(UNIT_FILE_SYSTEM, root, &def) == -ENOENT); -+ assert_se(unit_file_get_default(LOOKUP_SCOPE_SYSTEM, root, &def) == -ENOENT); - -- assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, 0, root, "test-default.target", &changes, &n_changes) >= 0); -+ assert_se(unit_file_set_default(LOOKUP_SCOPE_SYSTEM, 0, root, "test-default.target", &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "test-default-real.target")); -@@ -379,7 +379,7 @@ TEST(default) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_default(UNIT_FILE_SYSTEM, root, &def) >= 0); -+ assert_se(unit_file_get_default(LOOKUP_SCOPE_SYSTEM, root, &def) >= 0); - assert_se(streq_ptr(def, "test-default-real.target")); - } - -@@ -400,7 +400,7 @@ TEST(add_dependency) { - p = strjoina(root, "/usr/lib/systemd/system/add-dependency-test-service.service"); - assert_se(symlink("real-add-dependency-test-service.service", p) >= 0); - -- assert_se(unit_file_add_dependency(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, &changes, &n_changes) >= 0); -+ assert_se(unit_file_add_dependency(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../real-add-dependency-test-service.service")); -@@ -418,10 +418,10 @@ TEST(template_enable) { - - log_info("== %s ==", __func__); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/template@.service"); - assert_se(write_string_file(p, -@@ -432,16 +432,16 @@ TEST(template_enable) { - p = strjoina(root, "/usr/lib/systemd/system/template-symlink@.service"); - assert_se(symlink("template@.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - log_info("== %s with template@.service enabled ==", __func__); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../template@.service")); -@@ -450,30 +450,30 @@ TEST(template_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - log_info("== %s with template@foo.service enabled ==", __func__); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../template@foo.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@foo.service"); -@@ -481,33 +481,33 @@ TEST(template_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0); - assert_se(state == UNIT_FILE_INDIRECT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@quux.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@quux.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@quux.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@quux.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - log_info("== %s with template-symlink@quux.service enabled ==", __func__); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template-symlink@quux.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template-symlink@quux.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../template@quux.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@quux.service"); -@@ -515,14 +515,14 @@ TEST(template_enable) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template@quux.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@quux.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@quux.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@quux.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - } - - TEST(indirect) { -@@ -531,9 +531,9 @@ TEST(indirect) { - UnitFileState state; - const char *p; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirecta.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectb.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectc.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirecta.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectb.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectc.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/indirecta.service"); - assert_se(write_string_file(p, -@@ -548,11 +548,11 @@ TEST(indirect) { - p = strjoina(root, "/usr/lib/systemd/system/indirectc.service"); - assert_se(symlink("indirecta.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirecta.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirecta.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../indirectb.service")); -@@ -561,11 +561,11 @@ TEST(indirect) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirecta.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_ALIAS); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirecta.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_ALIAS); - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/indirectb.service"); -@@ -583,8 +583,8 @@ TEST(preset_and_list) { - UnitFileList *fl; - Hashmap *h; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/preset-yes.service"); - assert_se(write_string_file(p, -@@ -601,10 +601,10 @@ TEST(preset_and_list) { - "enable *-yes.*\n" - "disable *\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../preset-yes.service")); -@@ -613,10 +613,10 @@ TEST(preset_and_list) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/preset-yes.service"); -@@ -624,18 +624,18 @@ TEST(preset_and_list) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-no.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("preset-no.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 0); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset_all(UNIT_FILE_SYSTEM, 0, root, UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset_all(LOOKUP_SCOPE_SYSTEM, 0, root, UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - - assert_se(n_changes > 0); - -@@ -653,17 +653,17 @@ TEST(preset_and_list) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - assert_se(h = hashmap_new(&string_hash_ops)); -- assert_se(unit_file_get_list(UNIT_FILE_SYSTEM, root, h, NULL, NULL) >= 0); -+ assert_se(unit_file_get_list(LOOKUP_SCOPE_SYSTEM, root, h, NULL, NULL) >= 0); - - p = strjoina(root, "/usr/lib/systemd/system/preset-yes.service"); - q = strjoina(root, "/usr/lib/systemd/system/preset-no.service"); - - HASHMAP_FOREACH(fl, h) { -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, basename(fl->path), &state) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, basename(fl->path), &state) >= 0); - assert_se(fl->state == state); - - if (streq(fl->path, p)) { -@@ -687,17 +687,17 @@ TEST(revert) { - UnitFileChange *changes = NULL; - size_t n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "xx.service", NULL) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "yy.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "xx.service", NULL) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "yy.service", NULL) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/xx.service"); - assert_se(write_string_file(p, "# Empty\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "xx.service", NULL) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "xx.service", &state) >= 0 && state == UNIT_FILE_STATIC); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "xx.service", NULL) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "xx.service", &state) >= 0 && state == UNIT_FILE_STATIC); - - /* Initially there's nothing to revert */ -- assert_se(unit_file_revert(UNIT_FILE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_revert(LOOKUP_SCOPE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 0); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; -@@ -706,7 +706,7 @@ TEST(revert) { - assert_se(write_string_file(p, "# Empty override\n", WRITE_STRING_FILE_CREATE) >= 0); - - /* Revert the override file */ -- assert_se(unit_file_revert(UNIT_FILE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_revert(LOOKUP_SCOPE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - assert_se(streq(changes[0].path, p)); -@@ -717,7 +717,7 @@ TEST(revert) { - assert_se(write_string_file(p, "# Empty dropin\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - - /* Revert the dropin file */ -- assert_se(unit_file_revert(UNIT_FILE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_revert(LOOKUP_SCOPE_SYSTEM, root, STRV_MAKE("xx.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - assert_se(streq(changes[0].path, p)); -@@ -735,8 +735,8 @@ TEST(preset_order) { - const char *p; - UnitFileState state; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-1.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-2.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/prefix-1.service"); - assert_se(write_string_file(p, -@@ -754,10 +754,10 @@ TEST(preset_order) { - "disable prefix-*.service\n" - "enable prefix-2.service\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../prefix-1.service")); -@@ -766,36 +766,36 @@ TEST(preset_order) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("prefix-2.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("prefix-2.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - } - - TEST(static_instance) { - UnitFileState state; - const char *p; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@foo.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@foo.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/static-instance@.service"); - assert_se(write_string_file(p, - "[Install]\n" - "WantedBy=multi-user.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/static-instance@foo.service"); - assert_se(symlink("static-instance@.service", p) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "static-instance@foo.service", &state) >= 0 && state == UNIT_FILE_STATIC); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "static-instance@foo.service", &state) >= 0 && state == UNIT_FILE_STATIC); - } - - TEST(with_dropin) { -@@ -804,11 +804,11 @@ TEST(with_dropin) { - UnitFileChange *changes = NULL; - size_t n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4a.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4b.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4a.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4b.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-1.service"); - assert_se(write_string_file(p, -@@ -820,7 +820,7 @@ TEST(with_dropin) { - "[Install]\n" - "WantedBy=graphical.target\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/with-dropin-2.service"); - assert_se(write_string_file(p, -@@ -832,7 +832,7 @@ TEST(with_dropin) { - "[Install]\n" - "WantedBy=graphical.target\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-3.service"); - assert_se(write_string_file(p, -@@ -844,7 +844,7 @@ TEST(with_dropin) { - "[Install]\n" - "WantedBy=graphical.target\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-4a.service"); - assert_se(write_string_file(p, -@@ -856,16 +856,16 @@ TEST(with_dropin) { - "[Install]\n" - "Also=with-dropin-4b.service\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4a.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-4b.service"); - assert_se(write_string_file(p, - "[Install]\n" - "WantedBy=multi-user.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4b.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4b.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-1.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-1.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -878,8 +878,8 @@ TEST(with_dropin) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2.service"), &changes, &n_changes) == 1); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -892,8 +892,8 @@ TEST(with_dropin) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3.service"), &changes, &n_changes) == 1); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -906,8 +906,8 @@ TEST(with_dropin) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-4a.service"), &changes, &n_changes) == 2); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-4a.service"), &changes, &n_changes) == 2); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -920,11 +920,11 @@ TEST(with_dropin) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-4b.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4a.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-4b.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - } - - TEST(with_dropin_template) { -@@ -933,9 +933,9 @@ TEST(with_dropin_template) { - UnitFileChange *changes = NULL; - size_t n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1@.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2@.service", &state) == -ENOENT); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3@.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1@.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2@.service", &state) == -ENOENT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3@.service", &state) == -ENOENT); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-1@.service"); - assert_se(write_string_file(p, -@@ -947,7 +947,7 @@ TEST(with_dropin_template) { - "[Install]\n" - "WantedBy=graphical.target\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-2@.service"); - assert_se(write_string_file(p, -@@ -959,7 +959,7 @@ TEST(with_dropin_template) { - "[Install]\n" - "WantedBy=graphical.target\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system/with-dropin-3@.service"); - assert_se(write_string_file(p, -@@ -972,9 +972,9 @@ TEST(with_dropin_template) { - "[Install]\n" - "DefaultInstance=instance-2\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-1@instance-1.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-1@instance-1.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -987,7 +987,7 @@ TEST(with_dropin_template) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-1.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-1.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -@@ -1000,7 +1000,7 @@ TEST(with_dropin_template) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-2.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-2.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../with-dropin-2@instance-2.service")); -@@ -1009,7 +1009,7 @@ TEST(with_dropin_template) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3@.service"), &changes, &n_changes) == 1); -+ assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3@.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(streq(changes[0].source, "../with-dropin-3@.service")); -@@ -1018,11 +1018,11 @@ TEST(with_dropin_template) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-1@instance-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2@instance-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-2@instance-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3@instance-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "with-dropin-3@instance-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-1@instance-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2@instance-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-2@instance-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3@instance-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "with-dropin-3@instance-2.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - } - - TEST(preset_multiple_instances) { -@@ -1038,7 +1038,7 @@ TEST(preset_multiple_instances) { - "DefaultInstance=def\n" - "WantedBy=multi-user.target\n", WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - p = strjoina(root, "/usr/lib/systemd/system-preset/test.preset"); - assert_se(write_string_file(p, -@@ -1046,11 +1046,11 @@ TEST(preset_multiple_instances) { - "enable emptylist@.service\n" /* This line ensures the old functionality for templated unit still works */ - "disable *\n" , WRITE_STRING_FILE_CREATE) >= 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - - /* Preset a single instantiated unit specified in the list */ -- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("foo@bar0.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("foo@bar0.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/foo@bar0.service"); -@@ -1058,7 +1058,7 @@ TEST(preset_multiple_instances) { - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("foo@bar0.service"), &changes, &n_changes) >= 0); -+ assert_se(unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("foo@bar0.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_UNLINK); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/foo@bar0.service"); -@@ -1067,17 +1067,17 @@ TEST(preset_multiple_instances) { - changes = NULL; n_changes = 0; - - /* Check for preset-all case, only instances on the list should be enabled, not including the default instance */ -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bar1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bartest.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bar1.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bartest.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - -- assert_se(unit_file_preset_all(UNIT_FILE_SYSTEM, 0, root, UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); -+ assert_se(unit_file_preset_all(LOOKUP_SCOPE_SYSTEM, 0, root, UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes > 0); - -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bar1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -- assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "foo@bartest.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bar0.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bar1.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "foo@bartest.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - - unit_file_changes_free(changes, n_changes); - } -diff --git a/src/test/test-install.c b/src/test/test-install.c -index 7a0beb2d24..6c5a036465 100644 ---- a/src/test/test-install.c -+++ b/src/test/test-install.c -@@ -32,13 +32,13 @@ int main(int argc, char* argv[]) { - test_setup_logging(LOG_DEBUG); - - h = hashmap_new(&string_hash_ops); -- r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL); -+ r = unit_file_get_list(LOOKUP_SCOPE_SYSTEM, NULL, h, NULL, NULL); - assert_se(r == 0); - - HASHMAP_FOREACH(p, h) { - UnitFileState s = _UNIT_FILE_STATE_INVALID; - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(p->path), &s); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(p->path), &s); - - assert_se((r < 0 && p->state == UNIT_FILE_BAD) || - (p->state == s)); -@@ -52,18 +52,18 @@ int main(int argc, char* argv[]) { - - log_info("/*** enable **/"); - -- r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - log_info("/*** enable2 **/"); - -- r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_ENABLED); - -@@ -71,13 +71,13 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_DISABLED); - -@@ -85,16 +85,16 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_mask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - log_info("/*** mask2 ***/"); -- r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_mask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_MASKED); - -@@ -102,16 +102,16 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_unmask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - log_info("/*** unmask2 ***/"); -- r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_unmask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_DISABLED); - -@@ -119,13 +119,13 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_mask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_MASKED); - -@@ -133,16 +133,16 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - log_info("/*** disable2 ***/"); -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_MASKED); - -@@ -150,13 +150,13 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); -+ r = unit_file_unmask(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, files[0], &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_DISABLED); - -@@ -164,13 +164,13 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); -+ r = unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_ENABLED); - -@@ -178,26 +178,26 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r < 0); - - log_info("/*** link files2 ***/"); - changes = NULL; - n_changes = 0; - -- r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); -+ r = unit_file_link(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_LINKED); - -@@ -205,26 +205,26 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r < 0); - - log_info("/*** link files2 ***/"); - changes = NULL; - n_changes = 0; - -- r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); -+ r = unit_file_link(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_LINKED); - -@@ -232,13 +232,13 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_reenable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); -+ r = unit_file_reenable(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_ENABLED); - -@@ -246,25 +246,25 @@ int main(int argc, char* argv[]) { - changes = NULL; - n_changes = 0; - -- r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); -+ r = unit_file_disable(LOOKUP_SCOPE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files2[0]), &state); - assert_se(r < 0); - log_info("/*** preset files ***/"); - changes = NULL; - n_changes = 0; - -- r = unit_file_preset(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes); -+ r = unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes); - assert_se(r >= 0); - - dump_changes(changes, n_changes); - unit_file_changes_free(changes, n_changes); - -- r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files[0]), &state); -+ r = unit_file_get_state(LOOKUP_SCOPE_SYSTEM, NULL, basename(files[0]), &state); - assert_se(r >= 0); - assert_se(state == UNIT_FILE_ENABLED); - -diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c -index a87c654f4e..46ba108266 100644 ---- a/src/test/test-load-fragment.c -+++ b/src/test/test-load-fragment.c -@@ -43,7 +43,7 @@ TEST_RET(unit_file_get_set) { - h = hashmap_new(&string_hash_ops); - assert_se(h); - -- r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL); -+ r = unit_file_get_list(LOOKUP_SCOPE_SYSTEM, NULL, h, NULL, NULL); - if (IN_SET(r, -EPERM, -EACCES)) - return log_tests_skipped_errno(r, "unit_file_get_list"); - -@@ -102,7 +102,7 @@ TEST(config_parse_exec) { - _cleanup_(manager_freep) Manager *m = NULL; - _cleanup_(unit_freep) Unit *u = NULL; - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) { - log_notice_errno(r, "Skipping test: manager_new: %m"); - return; -@@ -461,7 +461,7 @@ TEST(config_parse_log_extra_fields) { - _cleanup_(unit_freep) Unit *u = NULL; - ExecContext c = {}; - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) { - log_notice_errno(r, "Skipping test: manager_new: %m"); - return; -@@ -544,56 +544,56 @@ TEST(install_printf, .sd_booted = true) { - strcpy(i.path, d2); \ - } while (false) - -- expect(UNIT_FILE_SYSTEM, i, "%n", "name.service"); -- expect(UNIT_FILE_SYSTEM, i, "%N", "name"); -- expect(UNIT_FILE_SYSTEM, i, "%p", "name"); -- expect(UNIT_FILE_SYSTEM, i, "%i", ""); -- expect(UNIT_FILE_SYSTEM, i, "%j", "name"); -- expect(UNIT_FILE_SYSTEM, i, "%g", "root"); -- expect(UNIT_FILE_SYSTEM, i, "%G", "0"); -- expect(UNIT_FILE_SYSTEM, i, "%u", "root"); -- expect(UNIT_FILE_SYSTEM, i, "%U", "0"); -- -- expect(UNIT_FILE_SYSTEM, i, "%m", mid); -- expect(UNIT_FILE_SYSTEM, i, "%b", bid); -- expect(UNIT_FILE_SYSTEM, i, "%H", host); -- -- expect(UNIT_FILE_SYSTEM, i2, "%g", "root"); -- expect(UNIT_FILE_SYSTEM, i2, "%G", "0"); -- expect(UNIT_FILE_SYSTEM, i2, "%u", "root"); -- expect(UNIT_FILE_SYSTEM, i2, "%U", "0"); -- -- expect(UNIT_FILE_USER, i2, "%g", group); -- expect(UNIT_FILE_USER, i2, "%G", gid); -- expect(UNIT_FILE_USER, i2, "%u", user); -- expect(UNIT_FILE_USER, i2, "%U", uid); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%n", "name.service"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%N", "name"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%p", "name"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%i", ""); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%j", "name"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%g", "root"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%G", "0"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%u", "root"); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%U", "0"); -+ -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%m", mid); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%b", bid); -+ expect(LOOKUP_SCOPE_SYSTEM, i, "%H", host); -+ -+ expect(LOOKUP_SCOPE_SYSTEM, i2, "%g", "root"); -+ expect(LOOKUP_SCOPE_SYSTEM, i2, "%G", "0"); -+ expect(LOOKUP_SCOPE_SYSTEM, i2, "%u", "root"); -+ expect(LOOKUP_SCOPE_SYSTEM, i2, "%U", "0"); -+ -+ expect(LOOKUP_SCOPE_USER, i2, "%g", group); -+ expect(LOOKUP_SCOPE_USER, i2, "%G", gid); -+ expect(LOOKUP_SCOPE_USER, i2, "%u", user); -+ expect(LOOKUP_SCOPE_USER, i2, "%U", uid); - - /* gcc-12.0.1-0.9.fc36.x86_64 insist that streq(…, NULL) is called, - * even though the call is inside of a conditional where the pointer is checked. :( */ - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wnonnull" -- expect(UNIT_FILE_GLOBAL, i2, "%g", NULL); -- expect(UNIT_FILE_GLOBAL, i2, "%G", NULL); -- expect(UNIT_FILE_GLOBAL, i2, "%u", NULL); -- expect(UNIT_FILE_GLOBAL, i2, "%U", NULL); -+ expect(LOOKUP_SCOPE_GLOBAL, i2, "%g", NULL); -+ expect(LOOKUP_SCOPE_GLOBAL, i2, "%G", NULL); -+ expect(LOOKUP_SCOPE_GLOBAL, i2, "%u", NULL); -+ expect(LOOKUP_SCOPE_GLOBAL, i2, "%U", NULL); - #pragma GCC diagnostic pop - -- expect(UNIT_FILE_SYSTEM, i3, "%n", "name@inst.service"); -- expect(UNIT_FILE_SYSTEM, i3, "%N", "name@inst"); -- expect(UNIT_FILE_SYSTEM, i3, "%p", "name"); -- expect(UNIT_FILE_USER, i3, "%g", group); -- expect(UNIT_FILE_USER, i3, "%G", gid); -- expect(UNIT_FILE_USER, i3, "%u", user); -- expect(UNIT_FILE_USER, i3, "%U", uid); -- -- expect(UNIT_FILE_SYSTEM, i3, "%m", mid); -- expect(UNIT_FILE_SYSTEM, i3, "%b", bid); -- expect(UNIT_FILE_SYSTEM, i3, "%H", host); -- -- expect(UNIT_FILE_USER, i4, "%g", group); -- expect(UNIT_FILE_USER, i4, "%G", gid); -- expect(UNIT_FILE_USER, i4, "%u", user); -- expect(UNIT_FILE_USER, i4, "%U", uid); -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%n", "name@inst.service"); -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%N", "name@inst"); -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%p", "name"); -+ expect(LOOKUP_SCOPE_USER, i3, "%g", group); -+ expect(LOOKUP_SCOPE_USER, i3, "%G", gid); -+ expect(LOOKUP_SCOPE_USER, i3, "%u", user); -+ expect(LOOKUP_SCOPE_USER, i3, "%U", uid); -+ -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%m", mid); -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%b", bid); -+ expect(LOOKUP_SCOPE_SYSTEM, i3, "%H", host); -+ -+ expect(LOOKUP_SCOPE_USER, i4, "%g", group); -+ expect(LOOKUP_SCOPE_USER, i4, "%G", gid); -+ expect(LOOKUP_SCOPE_USER, i4, "%u", user); -+ expect(LOOKUP_SCOPE_USER, i4, "%U", uid); - } - - static uint64_t make_cap(int cap) { -@@ -822,7 +822,7 @@ TEST(config_parse_unit_env_file) { - _cleanup_strv_free_ char **files = NULL; - int r; - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) { - log_notice_errno(r, "Skipping test: manager_new: %m"); - return; -@@ -955,7 +955,7 @@ TEST(unit_is_recursive_template_dependency) { - Unit *u; - int r; - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) { - log_notice_errno(r, "Skipping test: manager_new: %m"); - return; -diff --git a/src/test/test-path-lookup.c b/src/test/test-path-lookup.c -index 2c30260f7b..8d25e5f7b7 100644 ---- a/src/test/test-path-lookup.c -+++ b/src/test/test-path-lookup.c -@@ -10,7 +10,7 @@ - #include "strv.h" - #include "tests.h" - --static void test_paths_one(UnitFileScope scope) { -+static void test_paths_one(LookupScope scope) { - char template[] = "/tmp/test-path-lookup.XXXXXXX"; - - _cleanup_(lookup_paths_free) LookupPaths lp_without_env = {}; -@@ -36,9 +36,9 @@ static void test_paths_one(UnitFileScope scope) { - } - - TEST(paths) { -- test_paths_one(UNIT_FILE_SYSTEM); -- test_paths_one(UNIT_FILE_USER); -- test_paths_one(UNIT_FILE_GLOBAL); -+ test_paths_one(LOOKUP_SCOPE_SYSTEM); -+ test_paths_one(LOOKUP_SCOPE_USER); -+ test_paths_one(LOOKUP_SCOPE_GLOBAL); - } - - TEST(user_and_global_paths) { -@@ -50,8 +50,8 @@ TEST(user_and_global_paths) { - assert_se(unsetenv("XDG_DATA_DIRS") == 0); - assert_se(unsetenv("XDG_CONFIG_DIRS") == 0); - -- assert_se(lookup_paths_init(&lp_global, UNIT_FILE_GLOBAL, 0, NULL) == 0); -- assert_se(lookup_paths_init(&lp_user, UNIT_FILE_USER, 0, NULL) == 0); -+ assert_se(lookup_paths_init(&lp_global, LOOKUP_SCOPE_GLOBAL, 0, NULL) == 0); -+ assert_se(lookup_paths_init(&lp_user, LOOKUP_SCOPE_USER, 0, NULL) == 0); - g = lp_global.search_path; - u = lp_user.search_path; - -@@ -72,7 +72,7 @@ TEST(user_and_global_paths) { - log_info("+ %s", *p); - } - --static void test_generator_binary_paths_one(UnitFileScope scope) { -+static void test_generator_binary_paths_one(LookupScope scope) { - char template[] = "/tmp/test-path-lookup.XXXXXXX"; - - _cleanup_strv_free_ char **gp_without_env = NULL; -@@ -88,13 +88,13 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { - assert_se(unsetenv("SYSTEMD_ENVIRONMENT_GENERATOR_PATH") == 0); - - gp_without_env = generator_binary_paths(scope); -- env_gp_without_env = env_generator_binary_paths(scope == UNIT_FILE_SYSTEM ? true : false); -+ env_gp_without_env = env_generator_binary_paths(scope == LOOKUP_SCOPE_SYSTEM ? true : false); - -- log_info("Generators dirs (%s):", scope == UNIT_FILE_SYSTEM ? "system" : "user"); -+ log_info("Generators dirs (%s):", scope == LOOKUP_SCOPE_SYSTEM ? "system" : "user"); - STRV_FOREACH(dir, gp_without_env) - log_info(" %s", *dir); - -- log_info("Environment generators dirs (%s):", scope == UNIT_FILE_SYSTEM ? "system" : "user"); -+ log_info("Environment generators dirs (%s):", scope == LOOKUP_SCOPE_SYSTEM ? "system" : "user"); - STRV_FOREACH(dir, env_gp_without_env) - log_info(" %s", *dir); - -@@ -107,13 +107,13 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { - assert_se(setenv("SYSTEMD_ENVIRONMENT_GENERATOR_PATH", systemd_env_generator_path, 1) == 0); - - gp_with_env = generator_binary_paths(scope); -- env_gp_with_env = env_generator_binary_paths(scope == UNIT_FILE_SYSTEM ? true : false); -+ env_gp_with_env = env_generator_binary_paths(scope == LOOKUP_SCOPE_SYSTEM ? true : false); - -- log_info("Generators dirs (%s):", scope == UNIT_FILE_SYSTEM ? "system" : "user"); -+ log_info("Generators dirs (%s):", scope == LOOKUP_SCOPE_SYSTEM ? "system" : "user"); - STRV_FOREACH(dir, gp_with_env) - log_info(" %s", *dir); - -- log_info("Environment generators dirs (%s):", scope == UNIT_FILE_SYSTEM ? "system" : "user"); -+ log_info("Environment generators dirs (%s):", scope == LOOKUP_SCOPE_SYSTEM ? "system" : "user"); - STRV_FOREACH(dir, env_gp_with_env) - log_info(" %s", *dir); - -@@ -122,8 +122,8 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { - } - - TEST(generator_binary_paths) { -- test_generator_binary_paths_one(UNIT_FILE_SYSTEM); -- test_generator_binary_paths_one(UNIT_FILE_USER); -+ test_generator_binary_paths_one(LOOKUP_SCOPE_SYSTEM); -+ test_generator_binary_paths_one(LOOKUP_SCOPE_USER); - } - - DEFINE_TEST_MAIN(LOG_DEBUG); -diff --git a/src/test/test-path.c b/src/test/test-path.c -index 2690dc0aa4..7fb1f7363c 100644 ---- a/src/test/test-path.c -+++ b/src/test/test-path.c -@@ -33,7 +33,7 @@ static int setup_test(Manager **m) { - if (r == -ENOMEDIUM) - return log_tests_skipped("cgroupfs not available"); - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &tmp); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &tmp); - if (manager_errno_skip_test(r)) - return log_tests_skipped_errno(r, "manager_new"); - assert_se(r >= 0); -diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c -index 35f7be491a..721c4b61a1 100644 ---- a/src/test/test-sched-prio.c -+++ b/src/test/test-sched-prio.c -@@ -30,7 +30,7 @@ int main(int argc, char *argv[]) { - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m); - if (manager_errno_skip_test(r)) - return log_tests_skipped_errno(r, "manager_new"); - assert_se(r >= 0); -diff --git a/src/test/test-socket-bind.c b/src/test/test-socket-bind.c -index c5c5477f69..b5f8eb9357 100644 ---- a/src/test/test-socket-bind.c -+++ b/src/test/test-socket-bind.c -@@ -136,7 +136,7 @@ int main(int argc, char *argv[]) { - assert_se(set_unit_path(unit_dir) >= 0); - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- assert_se(manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); - assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); - - assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "2000", STRV_MAKE("2000"), STRV_MAKE("any")) >= 0); -diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c -index dd47f0285e..71fb06963c 100644 ---- a/src/test/test-specifier.c -+++ b/src/test/test-specifier.c -@@ -46,7 +46,7 @@ TEST(specifier_escape_strv) { - static const Specifier specifier_table[] = { - COMMON_SYSTEM_SPECIFIERS, - -- COMMON_CREDS_SPECIFIERS(UNIT_FILE_USER), -+ COMMON_CREDS_SPECIFIERS(LOOKUP_SCOPE_USER), - { 'h', specifier_user_home, NULL }, - - COMMON_TMP_SPECIFIERS, -diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c -index 261bd7412f..dffa2822e6 100644 ---- a/src/test/test-unit-file.c -+++ b/src/test/test-unit-file.c -@@ -35,7 +35,7 @@ TEST(unit_file_build_name_map) { - - ids = strv_skip(saved_argv, 1); - -- assert_se(lookup_paths_init(&lp, UNIT_FILE_SYSTEM, 0, NULL) >= 0); -+ assert_se(lookup_paths_init(&lp, LOOKUP_SCOPE_SYSTEM, 0, NULL) >= 0); - - assert_se(unit_file_build_name_map(&lp, &mtime, &unit_ids, &unit_names, NULL) == 1); - -diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c -index b6137333aa..90539f108f 100644 ---- a/src/test/test-unit-name.c -+++ b/src/test/test-unit-name.c -@@ -248,7 +248,7 @@ TEST_RET(unit_printf, .sd_booted = true) { - assert_se(get_home_dir(&home) >= 0); - assert_se(get_shell(&shell) >= 0); - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) - return log_tests_skipped_errno(r, "manager_new"); - assert_se(r == 0); -diff --git a/src/test/test-unit-serialize.c b/src/test/test-unit-serialize.c -index 3ef15f3b1e..f84435f480 100644 ---- a/src/test/test-unit-serialize.c -+++ b/src/test/test-unit-serialize.c -@@ -31,7 +31,7 @@ TEST(deserialize_exec_command) { - _cleanup_(manager_freep) Manager *m = NULL; - int r; - -- r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m); -+ r = manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_MINIMAL, &m); - if (manager_errno_skip_test(r)) { - log_notice_errno(r, "Skipping test: manager_new: %m"); - return; -diff --git a/src/test/test-watch-pid.c b/src/test/test-watch-pid.c -index 885ed802d4..8c355c1d5f 100644 ---- a/src/test/test-watch-pid.c -+++ b/src/test/test-watch-pid.c -@@ -26,7 +26,7 @@ int main(int argc, char *argv[]) { - - assert_se(runtime_dir = setup_fake_runtime_dir()); - -- assert_se(manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); -+ assert_se(manager_new(LOOKUP_SCOPE_USER, MANAGER_TEST_RUN_BASIC, &m) >= 0); - assert_se(manager_startup(m, NULL, NULL, NULL) >= 0); - - assert_se(a = unit_new(m, sizeof(Service))); -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 17b9c6ab9a..023207bc60 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -2938,7 +2938,7 @@ static int parse_line( - { 'S', specifier_directory, UINT_TO_PTR(DIRECTORY_STATE) }, - { 't', specifier_directory, UINT_TO_PTR(DIRECTORY_RUNTIME) }, - -- COMMON_CREDS_SPECIFIERS(arg_user ? UNIT_FILE_USER : UNIT_FILE_SYSTEM), -+ COMMON_CREDS_SPECIFIERS(arg_user ? LOOKUP_SCOPE_USER : LOOKUP_SCOPE_SYSTEM), - COMMON_TMP_SPECIFIERS, - {} - }; diff --git a/SOURCES/0204-resolve-introduce-link_get_llmnr_support-and-link_ge.patch b/SOURCES/0204-resolve-introduce-link_get_llmnr_support-and-link_ge.patch new file mode 100644 index 0000000..e9838bf --- /dev/null +++ b/SOURCES/0204-resolve-introduce-link_get_llmnr_support-and-link_ge.patch @@ -0,0 +1,181 @@ +From d34f971ad09e43f583ff570e26c87e6cdc83d69d Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 4 Nov 2022 12:53:07 +0900 +Subject: [PATCH] resolve: introduce link_get_llmnr_support() and + link_get_mdns_support() + +(cherry picked from commit bce459e3275249574f2142236275b2c33a9f88e3) + +Related: #2138081 +--- + src/resolve/resolved-link.c | 49 ++++++++++++++++++++++--------------- + src/resolve/resolved-link.h | 3 +++ + src/shared/resolve-util.h | 3 ++- + 3 files changed, 34 insertions(+), 21 deletions(-) + +diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c +index 409d725686..86112f3a3b 100644 +--- a/src/resolve/resolved-link.c ++++ b/src/resolve/resolved-link.c +@@ -140,8 +140,7 @@ void link_allocate_scopes(Link *l) { + l->unicast_scope = dns_scope_free(l->unicast_scope); + + if (link_relevant(l, AF_INET, true) && +- l->llmnr_support != RESOLVE_SUPPORT_NO && +- l->manager->llmnr_support != RESOLVE_SUPPORT_NO) { ++ link_get_llmnr_support(l) != RESOLVE_SUPPORT_NO) { + if (!l->llmnr_ipv4_scope) { + r = dns_scope_new(l->manager, &l->llmnr_ipv4_scope, l, DNS_PROTOCOL_LLMNR, AF_INET); + if (r < 0) +@@ -151,8 +150,7 @@ void link_allocate_scopes(Link *l) { + l->llmnr_ipv4_scope = dns_scope_free(l->llmnr_ipv4_scope); + + if (link_relevant(l, AF_INET6, true) && +- l->llmnr_support != RESOLVE_SUPPORT_NO && +- l->manager->llmnr_support != RESOLVE_SUPPORT_NO) { ++ link_get_llmnr_support(l) != RESOLVE_SUPPORT_NO) { + if (!l->llmnr_ipv6_scope) { + r = dns_scope_new(l->manager, &l->llmnr_ipv6_scope, l, DNS_PROTOCOL_LLMNR, AF_INET6); + if (r < 0) +@@ -162,8 +160,7 @@ void link_allocate_scopes(Link *l) { + l->llmnr_ipv6_scope = dns_scope_free(l->llmnr_ipv6_scope); + + if (link_relevant(l, AF_INET, true) && +- l->mdns_support != RESOLVE_SUPPORT_NO && +- l->manager->mdns_support != RESOLVE_SUPPORT_NO) { ++ link_get_mdns_support(l) != RESOLVE_SUPPORT_NO) { + if (!l->mdns_ipv4_scope) { + r = dns_scope_new(l->manager, &l->mdns_ipv4_scope, l, DNS_PROTOCOL_MDNS, AF_INET); + if (r < 0) +@@ -173,8 +170,7 @@ void link_allocate_scopes(Link *l) { + l->mdns_ipv4_scope = dns_scope_free(l->mdns_ipv4_scope); + + if (link_relevant(l, AF_INET6, true) && +- l->mdns_support != RESOLVE_SUPPORT_NO && +- l->manager->mdns_support != RESOLVE_SUPPORT_NO) { ++ link_get_mdns_support(l) != RESOLVE_SUPPORT_NO) { + if (!l->mdns_ipv6_scope) { + r = dns_scope_new(l->manager, &l->mdns_ipv6_scope, l, DNS_PROTOCOL_MDNS, AF_INET6); + if (r < 0) +@@ -191,8 +187,7 @@ void link_add_rrs(Link *l, bool force_remove) { + link_address_add_rrs(a, force_remove); + + if (!force_remove && +- l->mdns_support == RESOLVE_SUPPORT_YES && +- l->manager->mdns_support == RESOLVE_SUPPORT_YES) { ++ link_get_mdns_support(l) == RESOLVE_SUPPORT_YES) { + + if (l->mdns_ipv4_scope) { + r = dns_scope_add_dnssd_services(l->mdns_ipv4_scope); +@@ -651,13 +646,13 @@ int link_update(Link *l) { + if (r < 0) + return r; + +- if (l->llmnr_support != RESOLVE_SUPPORT_NO) { ++ if (link_get_llmnr_support(l) != RESOLVE_SUPPORT_NO) { + r = manager_llmnr_start(l->manager); + if (r < 0) + return r; + } + +- if (l->mdns_support != RESOLVE_SUPPORT_NO) { ++ if (link_get_mdns_support(l) != RESOLVE_SUPPORT_NO) { + r = manager_mdns_start(l->manager); + if (r < 0) + return r; +@@ -802,6 +797,24 @@ bool link_dnssec_supported(Link *l) { + return true; + } + ++ResolveSupport link_get_llmnr_support(Link *link) { ++ assert(link); ++ assert(link->manager); ++ ++ /* This provides the effective LLMNR support level for the link, instead of the 'internal' per-link setting. */ ++ ++ return MIN(link->llmnr_support, link->manager->llmnr_support); ++} ++ ++ResolveSupport link_get_mdns_support(Link *link) { ++ assert(link); ++ assert(link->manager); ++ ++ /* This provides the effective mDNS support level for the link, instead of the 'internal' per-link setting. */ ++ ++ return MIN(link->mdns_support, link->manager->mdns_support); ++} ++ + int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr_union *in_addr) { + LinkAddress *a; + +@@ -885,8 +898,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { + if (!force_remove && + link_address_relevant(a, true) && + a->link->llmnr_ipv4_scope && +- a->link->llmnr_support == RESOLVE_SUPPORT_YES && +- a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) { ++ link_get_llmnr_support(a->link) == RESOLVE_SUPPORT_YES) { + + if (!a->link->manager->llmnr_host_ipv4_key) { + a->link->manager->llmnr_host_ipv4_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, a->link->manager->llmnr_hostname); +@@ -939,8 +951,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { + if (!force_remove && + link_address_relevant(a, true) && + a->link->mdns_ipv4_scope && +- a->link->mdns_support == RESOLVE_SUPPORT_YES && +- a->link->manager->mdns_support == RESOLVE_SUPPORT_YES) { ++ link_get_mdns_support(a->link) == RESOLVE_SUPPORT_YES) { + if (!a->link->manager->mdns_host_ipv4_key) { + a->link->manager->mdns_host_ipv4_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, a->link->manager->mdns_hostname); + if (!a->link->manager->mdns_host_ipv4_key) { +@@ -995,8 +1006,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { + if (!force_remove && + link_address_relevant(a, true) && + a->link->llmnr_ipv6_scope && +- a->link->llmnr_support == RESOLVE_SUPPORT_YES && +- a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) { ++ link_get_llmnr_support(a->link) == RESOLVE_SUPPORT_YES) { + + if (!a->link->manager->llmnr_host_ipv6_key) { + a->link->manager->llmnr_host_ipv6_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_AAAA, a->link->manager->llmnr_hostname); +@@ -1049,8 +1059,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { + if (!force_remove && + link_address_relevant(a, true) && + a->link->mdns_ipv6_scope && +- a->link->mdns_support == RESOLVE_SUPPORT_YES && +- a->link->manager->mdns_support == RESOLVE_SUPPORT_YES) { ++ link_get_mdns_support(a->link) == RESOLVE_SUPPORT_YES) { + + if (!a->link->manager->mdns_host_ipv6_key) { + a->link->manager->mdns_host_ipv6_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_AAAA, a->link->manager->mdns_hostname); +diff --git a/src/resolve/resolved-link.h b/src/resolve/resolved-link.h +index b5299e0b5b..d2043a1000 100644 +--- a/src/resolve/resolved-link.h ++++ b/src/resolve/resolved-link.h +@@ -104,6 +104,9 @@ bool link_dnssec_supported(Link *l); + + DnsOverTlsMode link_get_dns_over_tls_mode(Link *l); + ++ResolveSupport link_get_llmnr_support(Link *link); ++ResolveSupport link_get_mdns_support(Link *link); ++ + int link_save_user(Link *l); + int link_load_user(Link *l); + void link_remove_user(Link *l); +diff --git a/src/shared/resolve-util.h b/src/shared/resolve-util.h +index d9ab387301..e58173d864 100644 +--- a/src/shared/resolve-util.h ++++ b/src/shared/resolve-util.h +@@ -25,10 +25,11 @@ typedef enum ResolveSupport ResolveSupport; + typedef enum DnssecMode DnssecMode; + typedef enum DnsOverTlsMode DnsOverTlsMode; + ++/* Do not change the order, see link_get_llmnr_support() or link_get_mdns_support(). */ + enum ResolveSupport { + RESOLVE_SUPPORT_NO, +- RESOLVE_SUPPORT_YES, + RESOLVE_SUPPORT_RESOLVE, ++ RESOLVE_SUPPORT_YES, + _RESOLVE_SUPPORT_MAX, + _RESOLVE_SUPPORT_INVALID = -EINVAL, + }; diff --git a/SOURCES/0205-core-handle-lookup-paths-being-symlinks.patch b/SOURCES/0205-core-handle-lookup-paths-being-symlinks.patch deleted file mode 100644 index 295b41d..0000000 --- a/SOURCES/0205-core-handle-lookup-paths-being-symlinks.patch +++ /dev/null @@ -1,89 +0,0 @@ -From dc017e5c51e61ddd96d2a94f35223ac7788c8454 Mon Sep 17 00:00:00 2001 -From: Andreas Rammhold -Date: Wed, 18 Aug 2021 19:10:08 +0200 -Subject: [PATCH] core: handle lookup paths being symlinks -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -With a recent change paths leaving the statically known lookup paths would be -treated differently then those that remained within those. That was done -(AFAIK) to consistently handle alias names. Unfortunately that means that on -some distributions, especially those where /etc/ consists mostly of symlinks, -would trigger that new detection for every single unit in /etc/systemd/system. -The reason for that is that the units directory itself is already a symlink. - -Rebased-by: Zbigniew Jędrzejewski-Szmek -(cherry picked from commit 66c38cd0536c50769eba6abccf383bbaceb268ca) - -Resolves: #2082131 ---- - src/basic/unit-file.c | 41 ++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 40 insertions(+), 1 deletion(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 7c1ae515e1..83c29bb25f 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -388,6 +388,7 @@ int unit_file_build_name_map( - - _cleanup_hashmap_free_ Hashmap *ids = NULL, *names = NULL; - _cleanup_set_free_free_ Set *paths = NULL; -+ _cleanup_strv_free_ char **expanded_search_path = NULL; - uint64_t timestamp_hash; - int r; - -@@ -406,6 +407,44 @@ int unit_file_build_name_map( - return log_oom(); - } - -+ /* Go over all our search paths, chase their symlinks and store the result in the -+ * expanded_search_path list. -+ * -+ * This is important for cases where any of the unit directories itself are symlinks into other -+ * directories and would therefore cause all of the unit files to be recognized as linked units. -+ * -+ * This is important for distributions such as NixOS where most paths in /etc/ are symlinks to some -+ * other location on the filesystem (e.g. into /nix/store/). -+ * -+ * Search paths are ordered by priority (highest first), and we need to maintain this order. -+ * If a resolved path is already in the list, we don't need to include. -+ * -+ * Note that we build a list that contains both the original paths and the resolved symlinks: -+ * we need the latter for the case where the directory is symlinked, as described above, and -+ * the former for the case where some unit file alias is a dangling symlink that points to one -+ * of the "original" directories (and can't be followed). -+ */ -+ STRV_FOREACH(dir, lp->search_path) { -+ _cleanup_free_ char *resolved_dir = NULL; -+ -+ r = strv_extend(&expanded_search_path, *dir); -+ if (r < 0) -+ return log_oom(); -+ -+ r = chase_symlinks(*dir, NULL, 0, &resolved_dir, NULL); -+ if (r < 0) { -+ if (r != -ENOENT) -+ log_warning_errno(r, "Failed to resolve symlink %s, ignoring: %m", *dir); -+ continue; -+ } -+ -+ if (strv_contains(expanded_search_path, resolved_dir)) -+ continue; -+ -+ if (strv_consume(&expanded_search_path, TAKE_PTR(resolved_dir)) < 0) -+ return log_oom(); -+ } -+ - STRV_FOREACH(dir, lp->search_path) { - _cleanup_closedir_ DIR *d = NULL; - -@@ -504,7 +543,7 @@ int unit_file_build_name_map( - /* We don't explicitly check for alias loops here. unit_ids_map_get() which - * limits the number of hops should be used to access the map. */ - -- r = unit_file_resolve_symlink(lp->root_dir, lp->search_path, -+ r = unit_file_resolve_symlink(lp->root_dir, expanded_search_path, - *dir, dirfd(d), de->d_name, - /* resolve_destination_target= */ false, - &dst); diff --git a/SOURCES/0205-resolve-provide-effective-supporting-levels-of-mDNS-.patch b/SOURCES/0205-resolve-provide-effective-supporting-levels-of-mDNS-.patch new file mode 100644 index 0000000..52ed54f --- /dev/null +++ b/SOURCES/0205-resolve-provide-effective-supporting-levels-of-mDNS-.patch @@ -0,0 +1,42 @@ +From f04078d864c969c7694a2cd131ca9eff75c15ce8 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 4 Nov 2022 12:53:07 +0900 +Subject: [PATCH] resolve: provide effective supporting levels of mDNS and + LLMNR + +The per-link settings are ignored if the feature is disabled by the global setting. +Let's announce the effective level, to make not users confused. + +Closes #24863. + +(cherry picked from commit dc167037c4e7407bf597a65224c736874abeca11) + +Related: #2138081 +--- + src/resolve/resolved-link-bus.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/resolve/resolved-link-bus.c b/src/resolve/resolved-link-bus.c +index a817b1b453..1f7d092112 100644 +--- a/src/resolve/resolved-link-bus.c ++++ b/src/resolve/resolved-link-bus.c +@@ -22,6 +22,8 @@ + + static BUS_DEFINE_PROPERTY_GET(property_get_dnssec_supported, "b", Link, link_dnssec_supported); + static BUS_DEFINE_PROPERTY_GET2(property_get_dnssec_mode, "s", Link, link_get_dnssec_mode, dnssec_mode_to_string); ++static BUS_DEFINE_PROPERTY_GET2(property_get_llmnr_support, "s", Link, link_get_llmnr_support, resolve_support_to_string); ++static BUS_DEFINE_PROPERTY_GET2(property_get_mdns_support, "s", Link, link_get_mdns_support, resolve_support_to_string); + + static int property_get_dns_over_tls_mode( + sd_bus *bus, +@@ -864,8 +866,8 @@ static const sd_bus_vtable link_vtable[] = { + SD_BUS_PROPERTY("CurrentDNSServerEx", "(iayqs)", property_get_current_dns_server_ex, offsetof(Link, current_dns_server), 0), + SD_BUS_PROPERTY("Domains", "a(sb)", property_get_domains, 0, 0), + SD_BUS_PROPERTY("DefaultRoute", "b", property_get_default_route, 0, 0), +- SD_BUS_PROPERTY("LLMNR", "s", bus_property_get_resolve_support, offsetof(Link, llmnr_support), 0), +- SD_BUS_PROPERTY("MulticastDNS", "s", bus_property_get_resolve_support, offsetof(Link, mdns_support), 0), ++ SD_BUS_PROPERTY("LLMNR", "s", property_get_llmnr_support, 0, 0), ++ SD_BUS_PROPERTY("MulticastDNS", "s", property_get_mdns_support, 0, 0), + SD_BUS_PROPERTY("DNSOverTLS", "s", property_get_dns_over_tls_mode, 0, 0), + SD_BUS_PROPERTY("DNSSEC", "s", property_get_dnssec_mode, 0, 0), + SD_BUS_PROPERTY("DNSSECNegativeTrustAnchors", "as", property_get_ntas, 0, 0), diff --git a/SOURCES/0206-resolvectl-warn-if-the-global-mDNS-or-LLMNR-support-.patch b/SOURCES/0206-resolvectl-warn-if-the-global-mDNS-or-LLMNR-support-.patch new file mode 100644 index 0000000..e7e7aff --- /dev/null +++ b/SOURCES/0206-resolvectl-warn-if-the-global-mDNS-or-LLMNR-support-.patch @@ -0,0 +1,89 @@ +From 4b911f2d385feb8153dacaf923108fc6d00fa149 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 4 Nov 2022 13:11:55 +0900 +Subject: [PATCH] resolvectl: warn if the global mDNS or LLMNR support level is + lower than the requested one + +(cherry picked from commit c38a03df4af78721f45947ffa2013554d81954a4) + +Related: #2138081 +--- + src/resolve/resolvectl.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c +index 2a7347ca27..c52773508f 100644 +--- a/src/resolve/resolvectl.c ++++ b/src/resolve/resolvectl.c +@@ -32,6 +32,7 @@ + #include "pretty-print.h" + #include "process-util.h" + #include "resolvconf-compat.h" ++#include "resolve-util.h" + #include "resolvectl.h" + #include "resolved-def.h" + #include "resolved-dns-packet.h" +@@ -2280,6 +2281,8 @@ static int verb_default_route(int argc, char **argv, void *userdata) { + + static int verb_llmnr(int argc, char **argv, void *userdata) { + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; ++ _cleanup_free_ char *global_llmnr_support_str = NULL; ++ ResolveSupport global_llmnr_support, llmnr_support; + sd_bus *bus = ASSERT_PTR(userdata); + int r; + +@@ -2295,6 +2298,22 @@ static int verb_llmnr(int argc, char **argv, void *userdata) { + if (argc < 3) + return status_ifindex(bus, arg_ifindex, NULL, STATUS_LLMNR, NULL); + ++ llmnr_support = resolve_support_from_string(argv[2]); ++ if (llmnr_support < 0) ++ return log_error_errno(llmnr_support, "Invalid LLMNR setting: %s", argv[2]); ++ ++ r = bus_get_property_string(bus, bus_resolve_mgr, "LLMNR", &error, &global_llmnr_support_str); ++ if (r < 0) ++ return log_error_errno(r, "Failed to get the global LLMNR support state: %s", bus_error_message(&error, r)); ++ ++ global_llmnr_support = resolve_support_from_string(global_llmnr_support_str); ++ if (global_llmnr_support < 0) ++ return log_error_errno(global_llmnr_support, "Received invalid global LLMNR setting: %s", global_llmnr_support_str); ++ ++ if (global_llmnr_support < llmnr_support) ++ log_warning("Setting LLMNR support level \"%s\" for \"%s\", but the global support level is \"%s\".", ++ argv[2], arg_ifname, global_llmnr_support_str); ++ + r = bus_call_method(bus, bus_resolve_mgr, "SetLinkLLMNR", &error, NULL, "is", arg_ifindex, argv[2]); + if (r < 0 && sd_bus_error_has_name(&error, BUS_ERROR_LINK_BUSY)) { + sd_bus_error_free(&error); +@@ -2314,6 +2333,8 @@ static int verb_llmnr(int argc, char **argv, void *userdata) { + + static int verb_mdns(int argc, char **argv, void *userdata) { + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; ++ _cleanup_free_ char *global_mdns_support_str = NULL; ++ ResolveSupport global_mdns_support, mdns_support; + sd_bus *bus = ASSERT_PTR(userdata); + int r; + +@@ -2329,6 +2350,22 @@ static int verb_mdns(int argc, char **argv, void *userdata) { + if (argc < 3) + return status_ifindex(bus, arg_ifindex, NULL, STATUS_MDNS, NULL); + ++ mdns_support = resolve_support_from_string(argv[2]); ++ if (mdns_support < 0) ++ return log_error_errno(mdns_support, "Invalid mDNS setting: %s", argv[2]); ++ ++ r = bus_get_property_string(bus, bus_resolve_mgr, "MulticastDNS", &error, &global_mdns_support_str); ++ if (r < 0) ++ return log_error_errno(r, "Failed to get the global mDNS support state: %s", bus_error_message(&error, r)); ++ ++ global_mdns_support = resolve_support_from_string(global_mdns_support_str); ++ if (global_mdns_support < 0) ++ return log_error_errno(global_mdns_support, "Received invalid global mDNS setting: %s", global_mdns_support_str); ++ ++ if (global_mdns_support < mdns_support) ++ log_warning("Setting mDNS support level \"%s\" for \"%s\", but the global support level is \"%s\".", ++ argv[2], arg_ifname, global_mdns_support_str); ++ + r = bus_call_method(bus, bus_resolve_mgr, "SetLinkMulticastDNS", &error, NULL, "is", arg_ifindex, argv[2]); + if (r < 0 && sd_bus_error_has_name(&error, BUS_ERROR_LINK_BUSY)) { + sd_bus_error_free(&error); diff --git a/SOURCES/0206-shared-install-use-correct-cleanup-function.patch b/SOURCES/0206-shared-install-use-correct-cleanup-function.patch deleted file mode 100644 index 5a0e3e3..0000000 --- a/SOURCES/0206-shared-install-use-correct-cleanup-function.patch +++ /dev/null @@ -1,27 +0,0 @@ -From dc7ddca892c329ef24b7e9098134f5cae50e09a0 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 3 May 2022 01:09:21 +0900 -Subject: [PATCH] shared/install: use correct cleanup function - -Fixes #23250. - -(cherry picked from commit 0b6bf4b674a63e9951dcffbd0b95de7377038690) - -Related: #2082131 ---- - src/shared/install.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index fa7bbdd93a..96d64d32bb 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2804,7 +2804,7 @@ static int normalize_linked_files( - * but operates on real unit names. For each argument we we look up the actual path - * where the unit is found. This way linked units can be reenabled successfully. */ - -- _cleanup_free_ char **files = NULL, **names = NULL; -+ _cleanup_strv_free_ char **files = NULL, **names = NULL; - int r; - - STRV_FOREACH(a, names_or_paths) { diff --git a/SOURCES/0207-resolve-enable-per-link-mDNS-setting-by-default.patch b/SOURCES/0207-resolve-enable-per-link-mDNS-setting-by-default.patch new file mode 100644 index 0000000..7daa0e6 --- /dev/null +++ b/SOURCES/0207-resolve-enable-per-link-mDNS-setting-by-default.patch @@ -0,0 +1,71 @@ +From 11132a6c20b64eb14a3386ff480086b5bae72146 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Fri, 4 Nov 2022 12:06:21 +0900 +Subject: [PATCH] resolve: enable per-link mDNS setting by default + +Otherwise, if the link is not managed by systemd-networkd, mDNS cannot +be enabled without calling `resolvectl` explicitly. + +Fixes #25252. + +(cherry picked from commit e31540196b8fb136a8f197c7a26d851bd0b93329) + +Related: #2138081 +--- + src/resolve/resolved-link-bus.c | 2 +- + src/resolve/resolved-link.c | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/resolve/resolved-link-bus.c b/src/resolve/resolved-link-bus.c +index 1f7d092112..9b6d14f20c 100644 +--- a/src/resolve/resolved-link-bus.c ++++ b/src/resolve/resolved-link-bus.c +@@ -562,7 +562,7 @@ int bus_link_method_set_mdns(sd_bus_message *message, void *userdata, sd_bus_err + return r; + + if (isempty(mdns)) +- mode = RESOLVE_SUPPORT_NO; ++ mode = RESOLVE_SUPPORT_YES; + else { + mode = resolve_support_from_string(mdns); + if (mode < 0) +diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c +index 86112f3a3b..d41f6f3e54 100644 +--- a/src/resolve/resolved-link.c ++++ b/src/resolve/resolved-link.c +@@ -37,7 +37,7 @@ int link_new(Manager *m, Link **ret, int ifindex) { + .ifindex = ifindex, + .default_route = -1, + .llmnr_support = RESOLVE_SUPPORT_YES, +- .mdns_support = RESOLVE_SUPPORT_NO, ++ .mdns_support = RESOLVE_SUPPORT_YES, + .dnssec_mode = _DNSSEC_MODE_INVALID, + .dns_over_tls_mode = _DNS_OVER_TLS_MODE_INVALID, + .operstate = IF_OPER_UNKNOWN, +@@ -64,7 +64,7 @@ void link_flush_settings(Link *l) { + + l->default_route = -1; + l->llmnr_support = RESOLVE_SUPPORT_YES; +- l->mdns_support = RESOLVE_SUPPORT_NO; ++ l->mdns_support = RESOLVE_SUPPORT_YES; + l->dnssec_mode = _DNSSEC_MODE_INVALID; + l->dns_over_tls_mode = _DNS_OVER_TLS_MODE_INVALID; + +@@ -354,7 +354,7 @@ static int link_update_mdns_support(Link *l) { + + assert(l); + +- l->mdns_support = RESOLVE_SUPPORT_NO; ++ l->mdns_support = RESOLVE_SUPPORT_YES; + + r = sd_network_link_get_mdns(l->ifindex, &b); + if (r == -ENODATA) +@@ -1156,7 +1156,7 @@ static bool link_needs_save(Link *l) { + return false; + + if (l->llmnr_support != RESOLVE_SUPPORT_YES || +- l->mdns_support != RESOLVE_SUPPORT_NO || ++ l->mdns_support != RESOLVE_SUPPORT_YES || + l->dnssec_mode != _DNSSEC_MODE_INVALID || + l->dns_over_tls_mode != _DNS_OVER_TLS_MODE_INVALID) + return true; diff --git a/SOURCES/0207-udev-net_id-avoid-slot-based-names-only-for-single-f.patch b/SOURCES/0207-udev-net_id-avoid-slot-based-names-only-for-single-f.patch deleted file mode 100644 index 1714906..0000000 --- a/SOURCES/0207-udev-net_id-avoid-slot-based-names-only-for-single-f.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 07a2159c8dc575745c967499b068209e8926ea79 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 23 Mar 2022 17:34:12 +0100 -Subject: [PATCH] udev/net_id: avoid slot based names only for single function - devices - -If we have two or more devices that share the same slot but they are -also multifunction then it is OK to use the slot information even if it -is the same for all of them. Name conflict will be avoided because we -will append function number and form names like, ens1f1, ens1f2... - -(cherry picked from commit 66425daf2c68793adf24a48a26d58add8662e83f) - -Resolves: #2073003 ---- - man/systemd.net-naming-scheme.xml | 7 ++++++- - src/shared/netif-naming-scheme.h | 31 ++++++++++++++++--------------- - src/udev/udev-builtin-net_id.c | 11 +++++++++-- - 3 files changed, 31 insertions(+), 18 deletions(-) - -diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml -index 942ef572ff..73d08b681d 100644 ---- a/man/systemd.net-naming-scheme.xml -+++ b/man/systemd.net-naming-scheme.xml -@@ -406,7 +406,12 @@ - - rhel-9.0 - -- Same as naming scheme v250. -+ Since version v247 we no longer set -+ ID_NET_NAME_SLOT if we detect that a PCI device associated with a slot is a PCI -+ bridge as that would create naming conflict when there are more child devices on that bridge. Now, -+ this is relaxed and we will use slot information to generate the name based on it but only if -+ the PCI device has multiple functions. This is safe because distinct function number is a part of -+ the device name for multifunction devices. - - - -diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h -index f765db6ef2..5c86cb4545 100644 ---- a/src/shared/netif-naming-scheme.h -+++ b/src/shared/netif-naming-scheme.h -@@ -22,20 +22,21 @@ - * OS versions, but not fully stabilize them. */ - typedef enum NamingSchemeFlags { - /* First, the individual features */ -- NAMING_SR_IOV_V = 1 << 0, /* Use "v" suffix for SR-IOV, see 609948c7043a */ -- NAMING_NPAR_ARI = 1 << 1, /* Use NPAR "ARI", see 6bc04997b6ea */ -- NAMING_INFINIBAND = 1 << 2, /* Use "ib" prefix for infiniband, see 938d30aa98df */ -- NAMING_ZERO_ACPI_INDEX = 1 << 3, /* Use zero acpi_index field, see d81186ef4f6a */ -- NAMING_ALLOW_RERENAMES = 1 << 4, /* Allow re-renaming of devices, see #9006 */ -- NAMING_STABLE_VIRTUAL_MACS = 1 << 5, /* Use device name to generate MAC, see 6d3646406560 */ -- NAMING_NETDEVSIM = 1 << 6, /* Generate names for netdevsim devices, see eaa9d507d855 */ -- NAMING_LABEL_NOPREFIX = 1 << 7, /* Don't prepend ID_NET_LABEL_ONBOARD with interface type prefix */ -- NAMING_NSPAWN_LONG_HASH = 1 << 8, /* Shorten nspawn interfaces by including 24bit hash, instead of simple truncation */ -- NAMING_BRIDGE_NO_SLOT = 1 << 9, /* Don't use PCI hotplug slot information if the corresponding device is a PCI bridge */ -- NAMING_SLOT_FUNCTION_ID = 1 << 10, /* Use function_id if present to identify PCI hotplug slots */ -- NAMING_16BIT_INDEX = 1 << 11, /* Allow full 16-bit for the onboard index */ -- NAMING_REPLACE_STRICTLY = 1 << 12, /* Use udev_replace_ifname() for NAME= rule */ -- NAMING_XEN_VIF = 1 << 13, /* GEnerate names for Xen netfront devices */ -+ NAMING_SR_IOV_V = 1 << 0, /* Use "v" suffix for SR-IOV, see 609948c7043a */ -+ NAMING_NPAR_ARI = 1 << 1, /* Use NPAR "ARI", see 6bc04997b6ea */ -+ NAMING_INFINIBAND = 1 << 2, /* Use "ib" prefix for infiniband, see 938d30aa98df */ -+ NAMING_ZERO_ACPI_INDEX = 1 << 3, /* Use zero acpi_index field, see d81186ef4f6a */ -+ NAMING_ALLOW_RERENAMES = 1 << 4, /* Allow re-renaming of devices, see #9006 */ -+ NAMING_STABLE_VIRTUAL_MACS = 1 << 5, /* Use device name to generate MAC, see 6d3646406560 */ -+ NAMING_NETDEVSIM = 1 << 6, /* Generate names for netdevsim devices, see eaa9d507d855 */ -+ NAMING_LABEL_NOPREFIX = 1 << 7, /* Don't prepend ID_NET_LABEL_ONBOARD with interface type prefix */ -+ NAMING_NSPAWN_LONG_HASH = 1 << 8, /* Shorten nspawn interfaces by including 24bit hash, instead of simple truncation */ -+ NAMING_BRIDGE_NO_SLOT = 1 << 9, /* Don't use PCI hotplug slot information if the corresponding device is a PCI bridge */ -+ NAMING_SLOT_FUNCTION_ID = 1 << 10, /* Use function_id if present to identify PCI hotplug slots */ -+ NAMING_16BIT_INDEX = 1 << 11, /* Allow full 16-bit for the onboard index */ -+ NAMING_REPLACE_STRICTLY = 1 << 12, /* Use udev_replace_ifname() for NAME= rule */ -+ NAMING_XEN_VIF = 1 << 13, /* Generate names for Xen netfront devices */ -+ NAMING_BRIDGE_MULTIFUNCTION_SLOT = 1 << 14, /* Use PCI hotplug slot information associated with bridge, but only if PCI device is multifunction */ - - /* And now the masks that combine the features above */ - NAMING_V238 = 0, -@@ -47,7 +48,7 @@ typedef enum NamingSchemeFlags { - NAMING_V247 = NAMING_V245 | NAMING_BRIDGE_NO_SLOT, - NAMING_V249 = NAMING_V247 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX | NAMING_REPLACE_STRICTLY, - NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF, -- NAMING_RHEL_9_0 = NAMING_V250, -+ NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, - - EXTRA_NET_NAMING_SCHEMES - -diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c -index 65e003eb15..673ed7a7ca 100644 ---- a/src/udev/udev-builtin-net_id.c -+++ b/src/udev/udev-builtin-net_id.c -@@ -451,8 +451,15 @@ static int dev_pci_slot(sd_device *dev, const LinkInfo *info, NetNames *names) { - * devices that will try to claim the same index and that would create name - * collision. */ - if (naming_scheme_has(NAMING_BRIDGE_NO_SLOT) && is_pci_bridge(hotplug_slot_dev)) { -- log_device_debug(dev, "Not using slot information because the PCI device is a bridge."); -- return 0; -+ if (naming_scheme_has(NAMING_BRIDGE_MULTIFUNCTION_SLOT) && !is_pci_multifunction(names->pcidev)) { -+ log_device_debug(dev, "Not using slot information because the PCI device associated with the hotplug slot is a bridge and the PCI device has single function."); -+ return 0; -+ } -+ -+ if (!naming_scheme_has(NAMING_BRIDGE_MULTIFUNCTION_SLOT)) { -+ log_device_debug(dev, "Not using slot information because the PCI device is a bridge."); -+ return 0; -+ } - } - - break; diff --git a/SOURCES/0208-nss-myhostname-fix-inverted-condition-in.patch b/SOURCES/0208-nss-myhostname-fix-inverted-condition-in.patch new file mode 100644 index 0000000..9f6b7f1 --- /dev/null +++ b/SOURCES/0208-nss-myhostname-fix-inverted-condition-in.patch @@ -0,0 +1,27 @@ +From 0858da8425a71641fe32222bc91c060856dcb217 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 9 Feb 2023 05:55:42 +0900 +Subject: [PATCH] nss-myhostname: fix inverted condition in + +Fixes a bug introduced by db50d326a46beca3cc24b6354b6e1b3591902d45. + +(cherry picked from commit a3b993ca3fb6fc0b837745c1ae82aca684951842) + +Resolves: #2167468 +--- + src/nss-myhostname/nss-myhostname.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c +index 120e76be45..93db9d16e7 100644 +--- a/src/nss-myhostname/nss-myhostname.c ++++ b/src/nss-myhostname/nss-myhostname.c +@@ -460,7 +460,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( + } else { + assert(af == AF_INET6); + +- if (socket_ipv6_is_enabled()) ++ if (!socket_ipv6_is_enabled()) + goto not_found; + + if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) { diff --git a/SOURCES/0208-test-import-logind-test-from-debian-ubuntu-test-suit.patch b/SOURCES/0208-test-import-logind-test-from-debian-ubuntu-test-suit.patch deleted file mode 100644 index b406c4a..0000000 --- a/SOURCES/0208-test-import-logind-test-from-debian-ubuntu-test-suit.patch +++ /dev/null @@ -1,489 +0,0 @@ -From 40806a5f552c8d223d1d7ff1878dcf57e4d817c5 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 1 Jun 2022 08:56:08 +0900 -Subject: [PATCH] test: import logind test from debian/ubuntu test suite - -(cherry picked from commit 9c94ab0f6ff22da4278a6e9a93ddc480607c55ac) - -Related: #2087652 ---- - test/TEST-35-LOGIN/Makefile | 1 + - test/TEST-35-LOGIN/test.sh | 10 + - test/test-functions | 8 + - test/units/testsuite-35.service | 10 + - test/units/testsuite-35.sh | 379 ++++++++++++++++++++++++++++++++ - 5 files changed, 408 insertions(+) - create mode 120000 test/TEST-35-LOGIN/Makefile - create mode 100755 test/TEST-35-LOGIN/test.sh - create mode 100644 test/units/testsuite-35.service - create mode 100755 test/units/testsuite-35.sh - -diff --git a/test/TEST-35-LOGIN/Makefile b/test/TEST-35-LOGIN/Makefile -new file mode 120000 -index 0000000000..e9f93b1104 ---- /dev/null -+++ b/test/TEST-35-LOGIN/Makefile -@@ -0,0 +1 @@ -+../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-35-LOGIN/test.sh b/test/TEST-35-LOGIN/test.sh -new file mode 100755 -index 0000000000..9762410fa3 ---- /dev/null -+++ b/test/TEST-35-LOGIN/test.sh -@@ -0,0 +1,10 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="LOGIN" -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+do_test "$@" -diff --git a/test/test-functions b/test/test-functions -index 98efd047d7..d71e2a3328 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -165,10 +165,12 @@ BASICTOOLS=( - mv - nc - nproc -+ pkill - readlink - rev - rm - rmdir -+ rmmod - sed - seq - setfattr -@@ -193,6 +195,8 @@ BASICTOOLS=( - umount - uname - unshare -+ useradd -+ userdel - wc - xargs - xzcat -@@ -921,6 +925,8 @@ install_modules() { - instmods vfat - instmods nls_ascii =nls - instmods dummy -+ # for TEST-35-LOGIN -+ instmods scsi_debug uinput - - if get_bool "$LOOKS_LIKE_SUSE"; then - instmods ext4 -@@ -1702,6 +1708,8 @@ install_basic_tools() { - image_install -o sushell - # in Debian ldconfig is just a shell script wrapper around ldconfig.real - image_install -o ldconfig.real -+ # for TEST-35-LOGIN -+ image_install -o evemu-device evemu-event - } - - install_debug_tools() { -diff --git a/test/units/testsuite-35.service b/test/units/testsuite-35.service -new file mode 100644 -index 0000000000..556a57a384 ---- /dev/null -+++ b/test/units/testsuite-35.service -@@ -0,0 +1,10 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=TEST-35-LOGIN -+ -+[Service] -+ExecStartPre=rm -f /failed /testok -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -+StandardOutput=journal+console -+StandardError=journal+console -+Type=oneshot -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -new file mode 100755 -index 0000000000..0a7198c3fe ---- /dev/null -+++ b/test/units/testsuite-35.sh -@@ -0,0 +1,379 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -eux -+set -o pipefail -+ -+test_enable_debug() { -+ mkdir -p /run/systemd/system/systemd-logind.service.d -+ cat >/run/systemd/system/systemd-logind.service.d/debug.conf </run/systemd/logind.conf.d/kill-user-processes.conf <&2 -+ exit 1 -+ fi -+ -+ cat >/run/systemd/logind.conf.d/kill-user-processes.conf <&2 -+ exit 1 -+ fi -+ -+ rm -rf /run/systemd/logind.conf.d -+} -+ -+test_started() { -+ systemctl restart systemd-logind.service -+ -+ # should start at boot, not with D-BUS activation -+ LOGINDPID=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ -+ # loginctl should succeed -+ loginctl --no-pager -+} -+ -+# args: -+wait_suspend() { -+ timeout="$1" -+ while [[ $timeout -gt 0 && ! -e /run/suspend.flag ]]; do -+ sleep 1 -+ timeout=$((timeout - 1)) -+ done -+ if [[ ! -e /run/suspend.flag ]]; then -+ echo "closing lid did not cause suspend" >&2 -+ exit 1 -+ fi -+ rm /run/suspend.flag -+} -+ -+test_suspend_tear_down() { -+ set +e -+ -+ kill "$KILL_PID" -+} -+ -+test_suspend_on_lid() { -+ if systemd-detect-virt --quiet --container; then -+ echo "Skipping suspend test in container" -+ return -+ fi -+ if ! grep -s -q mem /sys/power/state; then -+ echo "suspend not supported on this testbed, skipping" -+ return -+ fi -+ if ! command -v evemu-device &>/dev/null; then -+ echo "command evemu-device not found, skipping" -+ return -+ fi -+ if ! command -v evemu-event &>/dev/null; then -+ echo "command evemu-event not found, skipping" -+ return -+ fi -+ -+ KILL_PID= -+ trap test_suspend_tear_down EXIT -+ -+ # create fake suspend -+ mkdir -p /run/systemd/system/systemd-suspend.service.d -+ cat >/run/systemd/system/systemd-suspend.service.d/override.conf </run/udev/rules.d/70-logindtest-lid.rules </run/lidswitch.evemu <&2 -+ exit 1 -+ fi -+ INPUT_NAME=${INPUT_NAME%/device/name} -+ LID_DEV=/dev/${INPUT_NAME#/sys/class/} -+ udevadm info --wait-for-initialization=10s "$LID_DEV" -+ udevadm settle -+ -+ # close lid -+ evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 1 -+ # need to wait for 30s suspend inhibition after boot -+ wait_suspend 31 -+ # open lid again -+ evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 0 -+ -+ # waiting for 30s inhibition time between suspends -+ sleep 30 -+ -+ # now closing lid should cause instant suspend -+ evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 1 -+ wait_suspend 2 -+ evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 0 -+ -+ P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ if [[ "$P" != "$LOGINDPID" ]]; then -+ echo "logind crashed" >&2 -+ exit 1 -+ fi -+ -+ test_suspend_tear_down -+ trap - EXIT -+} -+ -+test_shutdown() { -+ # scheduled shutdown with wall message -+ shutdown 2>&1 -+ sleep 5 -+ shutdown -c || : -+ # logind should still be running -+ P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ if [[ "$P" != "$LOGINDPID" ]]; then -+ echo "logind crashed" >&2 -+ exit 1 -+ fi -+ -+ # scheduled shutdown without wall message -+ shutdown --no-wall 2>&1 -+ sleep 5 -+ shutdown -c --no-wall || true -+ P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ if [[ "$P" != "$LOGINDPID" ]]; then -+ echo "logind crashed" >&2 -+ exit 1 -+ fi -+} -+ -+test_session_tear_down() { -+ set +e -+ -+ rm -f /run/udev/rules.d/70-logindtest-scsi_debug-user.rules -+ udevadm control --reload -+ -+ systemctl stop getty@tty2.service -+ rm -rf /run/systemd/system/getty@tty2.service.d -+ systemctl daemon-reload -+ -+ pkill -u logind-test-user -+ userdel logind-test-user -+ -+ rmmod scsi_debug -+} -+ -+check_session() { -+ loginctl -+ if [[ $(loginctl --no-legend | grep -c "logind-test-user") != 1 ]]; then -+ echo "no session or multile sessions for logind-test-user." >&2 -+ return 1 -+ fi -+ -+ SEAT=$(loginctl --no-legend | grep 'logind-test-user *seat' | awk '{ print $4 }') -+ if [[ -z "$SEAT" ]]; then -+ echo "no seat found for user logind-test-user" >&2 -+ return 1 -+ fi -+ -+ SESSION=$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }') -+ if [[ -z "$SESSION" ]]; then -+ echo "no session found for user logind-test-user" >&2 -+ return 1 -+ fi -+ -+ loginctl session-status "$SESSION" -+ loginctl session-status "$SESSION" | grep -q "Unit: session-${SESSION}\.scope" -+ LEADER_PID=$(loginctl session-status "$SESSION" | grep "Leader:" | awk '{ print $2 }') -+ if [[ -z "$LEADER_PID" ]]; then -+ echo "cannot found leader process for session $SESSION" >&2 -+ return 1 -+ fi -+ -+ # cgroup v1: "1:name=systemd:/user.slice/..."; unified hierarchy: "0::/user.slice" -+ if ! grep -q -E '(name=systemd|^0:):.*session.*scope' /proc/"$LEADER_PID"/cgroup; then -+ echo "FAIL: process $LEADER_PID is not in the session cgroup" >&2 -+ cat /proc/self/cgroup -+ return 1 -+ fi -+} -+ -+test_session() { -+ if systemd-detect-virt --quiet --container; then -+ echo " * Skipping ACL tests in container" -+ return -+ fi -+ -+ trap test_session_tear_down EXIT -+ -+ # add user -+ useradd -s /bin/bash logind-test-user -+ -+ # login with the test user to start a session -+ mkdir -p /run/systemd/system/getty@tty2.service.d -+ cat >/run/systemd/system/getty@tty2.service.d/override.conf <&2 -+ exit 1 -+ fi -+ -+ # we use scsi_debug to create new devices which we can put ACLs on -+ # tell udev about the tagging, so that logind can pick it up -+ mkdir -p /run/udev/rules.d -+ cat >/run/udev/rules.d/70-logindtest-scsi_debug-user.rules </dev/null); then -+ break -+ fi -+ done -+ if [[ ! -b "$dev" ]]; then -+ echo "cannot find suitable scsi block device" >&2 -+ exit 1 -+ fi -+ udevadm settle -+ udevadm info "$dev" -+ -+ # trigger logind and activate session -+ loginctl activate "$SESSION" -+ -+ # check ACL -+ sleep 1 -+ if ! getfacl -p "$dev" | grep -q "user:logind-test-user:rw-"; then -+ echo "$dev has no ACL for user logind-test-user" >&2 -+ getfacl -p "$dev" >&2 -+ exit 1 -+ fi -+ -+ # hotplug: new device appears while logind is running -+ rmmod scsi_debug -+ modprobe scsi_debug -+ for ((i=0;i<30;i++)); do -+ if (( i != 0)); then sleep 1; fi -+ if dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null); then -+ break -+ fi -+ done -+ if [[ ! -b "$dev" ]]; then -+ echo "cannot find suitable scsi block device" >&2 -+ exit 1 -+ fi -+ udevadm settle -+ -+ # check ACL -+ sleep 1 -+ if ! getfacl -p "$dev" | grep -q "user:logind-test-user:rw-"; then -+ echo "$dev has no ACL for user logind-test-user" >&2 -+ getfacl -p "$dev" >&2 -+ exit 1 -+ fi -+ -+ test_session_tear_down -+ trap - EXIT -+} -+ -+: >/failed -+ -+test_enable_debug -+test_properties -+test_started -+test_suspend_on_lid -+test_shutdown -+test_session -+ -+touch /testok -+rm /failed diff --git a/SOURCES/0209-nss-myhostname-do-not-return-empty-result-with-NSS_S.patch b/SOURCES/0209-nss-myhostname-do-not-return-empty-result-with-NSS_S.patch new file mode 100644 index 0000000..69576e1 --- /dev/null +++ b/SOURCES/0209-nss-myhostname-do-not-return-empty-result-with-NSS_S.patch @@ -0,0 +1,34 @@ +From 86bbeff62982404dc76e79d3dad8a8c59308d017 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 9 Feb 2023 06:07:13 +0900 +Subject: [PATCH] nss-myhostname: do not return empty result with + NSS_STATUS_SUCCESS + +Fixes a bug introduced by db50d326a46beca3cc24b6354b6e1b3591902d45. + +Fixes RHBZ#2167468 (https://bugzilla.redhat.com/show_bug.cgi?id=2167468). + +(cherry picked from commit 1c3762937e9184c9abbc8d5541b4228841ccc24f) + +Resolves: #2167468 +--- + src/nss-myhostname/nss-myhostname.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c +index 93db9d16e7..d574e98a71 100644 +--- a/src/nss-myhostname/nss-myhostname.c ++++ b/src/nss-myhostname/nss-myhostname.c +@@ -345,9 +345,10 @@ enum nss_status _nss_myhostname_gethostbyname3_r( + return NSS_STATUS_UNAVAIL; + } + ++ if (af == AF_INET6 && !socket_ipv6_is_enabled()) ++ goto not_found; ++ + if (is_localhost(name)) { +- if (af == AF_INET6 && !socket_ipv6_is_enabled()) +- goto not_found; + + canonical = "localhost"; + local_address_ipv4 = htobe32(INADDR_LOOPBACK); diff --git a/SOURCES/0209-test-drop-redundant-IMAGE_NAME.patch b/SOURCES/0209-test-drop-redundant-IMAGE_NAME.patch deleted file mode 100644 index 0e46999..0000000 --- a/SOURCES/0209-test-drop-redundant-IMAGE_NAME.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 41f1f6e87bd9bed458e5391587f1e1b671d383bd Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 10 Jun 2022 12:31:10 +0900 -Subject: [PATCH] test: drop redundant IMAGE_NAME= - -If it is not specified, then "default" will be used. - -(cherry picked from commit 3d52219390fa2d87938d99ec3bf71e10e101ded6) - -Related: #2087652 ---- - test/TEST-03-JOBS/test.sh | 1 - - test/TEST-17-UDEV/test.sh | 1 - - test/TEST-64-UDEV-STORAGE/test.sh | 1 - - 3 files changed, 3 deletions(-) - -diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh -index f827f90865..6a8d3a8a11 100755 ---- a/test/TEST-03-JOBS/test.sh -+++ b/test/TEST-03-JOBS/test.sh -@@ -4,7 +4,6 @@ set -e - - TEST_DESCRIPTION="Job-related tests" - TEST_NO_QEMU=1 --IMAGE_NAME="default" - - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" -diff --git a/test/TEST-17-UDEV/test.sh b/test/TEST-17-UDEV/test.sh -index 079ecfd629..9d91eee204 100755 ---- a/test/TEST-17-UDEV/test.sh -+++ b/test/TEST-17-UDEV/test.sh -@@ -3,7 +3,6 @@ - set -e - - TEST_DESCRIPTION="UDEV" --IMAGE_NAME="default" - TEST_NO_NSPAWN=1 - - # shellcheck source=test/test-functions -diff --git a/test/TEST-64-UDEV-STORAGE/test.sh b/test/TEST-64-UDEV-STORAGE/test.sh -index c360c8b661..2a5b5b2dd3 100755 ---- a/test/TEST-64-UDEV-STORAGE/test.sh -+++ b/test/TEST-64-UDEV-STORAGE/test.sh -@@ -9,7 +9,6 @@ - set -e - - TEST_DESCRIPTION="systemd-udev storage tests" --IMAGE_NAME="default" - TEST_NO_NSPAWN=1 - # Save only journals of failing test cases by default (to conserve space) - TEST_SAVE_JOURNAL="${TEST_SAVE_JOURNAL:-fail}" diff --git a/SOURCES/0210-sleep-rename-hibernate_delay_sec-_usec.patch b/SOURCES/0210-sleep-rename-hibernate_delay_sec-_usec.patch new file mode 100644 index 0000000..c5cff39 --- /dev/null +++ b/SOURCES/0210-sleep-rename-hibernate_delay_sec-_usec.patch @@ -0,0 +1,64 @@ +From 51a4778726edd7dfad18e7354bda1d77730c8dd8 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sun, 13 Nov 2022 23:59:49 +0900 +Subject: [PATCH] sleep: rename hibernate_delay_sec -> _usec + +(cherry picked from commit 3d23df005e06b3616049686be82deff55788d3c4) + +Related: #2151612 +--- + src/shared/sleep-config.c | 6 +++--- + src/shared/sleep-config.h | 2 +- + src/sleep/sleep.c | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index efc066c4f2..359d293fd0 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -82,7 +82,7 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) { + { "Sleep", "HybridSleepMode", config_parse_strv, 0, sc->modes + SLEEP_HYBRID_SLEEP }, + { "Sleep", "HybridSleepState", config_parse_strv, 0, sc->states + SLEEP_HYBRID_SLEEP }, + +- { "Sleep", "HibernateDelaySec", config_parse_sec, 0, &sc->hibernate_delay_sec }, ++ { "Sleep", "HibernateDelaySec", config_parse_sec, 0, &sc->hibernate_delay_usec }, + {} + }; + +@@ -113,8 +113,8 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) { + sc->modes[SLEEP_HYBRID_SLEEP] = strv_new("suspend", "platform", "shutdown"); + if (!sc->states[SLEEP_HYBRID_SLEEP]) + sc->states[SLEEP_HYBRID_SLEEP] = strv_new("disk"); +- if (sc->hibernate_delay_sec == 0) +- sc->hibernate_delay_sec = 2 * USEC_PER_HOUR; ++ if (sc->hibernate_delay_usec == 0) ++ sc->hibernate_delay_usec = 2 * USEC_PER_HOUR; + + /* ensure values set for all required fields */ + if (!sc->states[SLEEP_SUSPEND] || !sc->modes[SLEEP_HIBERNATE] +diff --git a/src/shared/sleep-config.h b/src/shared/sleep-config.h +index 6645c3e596..226fab4b9f 100644 +--- a/src/shared/sleep-config.h ++++ b/src/shared/sleep-config.h +@@ -19,7 +19,7 @@ typedef struct SleepConfig { + bool allow[_SLEEP_OPERATION_MAX]; + char **modes[_SLEEP_OPERATION_MAX]; + char **states[_SLEEP_OPERATION_MAX]; +- usec_t hibernate_delay_sec; ++ usec_t hibernate_delay_usec; + } SleepConfig; + + SleepConfig* free_sleep_config(SleepConfig *sc); +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 3461d3e45f..7679f2e3be 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -275,7 +275,7 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + while (battery_is_low() == 0) { + _cleanup_close_ int tfd = -1; + struct itimerspec ts = {}; +- usec_t suspend_interval = sleep_config->hibernate_delay_sec, before_timestamp = 0, after_timestamp = 0, total_suspend_interval; ++ usec_t suspend_interval = sleep_config->hibernate_delay_usec, before_timestamp = 0, after_timestamp = 0, total_suspend_interval; + bool woken_by_timer; + + tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC); diff --git a/SOURCES/0210-test-import-timedated-test-from-debian-ubuntu-test-s.patch b/SOURCES/0210-test-import-timedated-test-from-debian-ubuntu-test-s.patch deleted file mode 100644 index 5e6fad5..0000000 --- a/SOURCES/0210-test-import-timedated-test-from-debian-ubuntu-test-s.patch +++ /dev/null @@ -1,363 +0,0 @@ -From 014a660c937c1c5ebfc05667466a16b44e446c60 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 10 Jun 2022 13:55:54 +0900 -Subject: [PATCH] test: import timedated test from debian/ubuntu test suite - -(cherry picked from commit 759ed0a2533da8840dea315d07f92e6bb0272cdd) - -Related: #2087652 ---- - test/TEST-45-TIMEDATE/Makefile | 1 + - test/TEST-45-TIMEDATE/test.sh | 10 ++ - test/units/assert.sh | 44 ++++++ - test/units/testsuite-45.service | 10 ++ - test/units/testsuite-45.sh | 246 ++++++++++++++++++++++++++++++++ - 5 files changed, 311 insertions(+) - create mode 120000 test/TEST-45-TIMEDATE/Makefile - create mode 100755 test/TEST-45-TIMEDATE/test.sh - create mode 100644 test/units/assert.sh - create mode 100644 test/units/testsuite-45.service - create mode 100755 test/units/testsuite-45.sh - -diff --git a/test/TEST-45-TIMEDATE/Makefile b/test/TEST-45-TIMEDATE/Makefile -new file mode 120000 -index 0000000000..e9f93b1104 ---- /dev/null -+++ b/test/TEST-45-TIMEDATE/Makefile -@@ -0,0 +1 @@ -+../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-45-TIMEDATE/test.sh b/test/TEST-45-TIMEDATE/test.sh -new file mode 100755 -index 0000000000..27edf4a3b9 ---- /dev/null -+++ b/test/TEST-45-TIMEDATE/test.sh -@@ -0,0 +1,10 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="test timedated" -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+do_test "$@" -diff --git a/test/units/assert.sh b/test/units/assert.sh -new file mode 100644 -index 0000000000..db67dad268 ---- /dev/null -+++ b/test/units/assert.sh -@@ -0,0 +1,44 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+# utility functions for shell tests -+ -+assert_true() { -+ local rc -+ -+ set +e -+ "$@" -+ rc=$? -+ set -e -+ if [[ "$rc" != "0" ]]; then -+ echo "FAIL: command '$*' failed with exit code $rc" >&2 -+ exit 1 -+ fi -+} -+ -+ -+assert_eq() { -+ if [[ "$1" != "$2" ]]; then -+ echo "FAIL: expected: '$2' actual: '$1'" >&2 -+ exit 1 -+ fi -+} -+ -+assert_in() { -+ if ! echo "$2" | grep -q "$1"; then -+ echo "FAIL: '$1' not found in:" >&2 -+ echo "$2" >&2 -+ exit 1 -+ fi -+} -+ -+assert_rc() { -+ local exp=$1 -+ local rc -+ shift -+ set +e -+ "$@" -+ rc=$? -+ set -e -+ assert_eq "$rc" "$exp" -+} -diff --git a/test/units/testsuite-45.service b/test/units/testsuite-45.service -new file mode 100644 -index 0000000000..79c0a6f117 ---- /dev/null -+++ b/test/units/testsuite-45.service -@@ -0,0 +1,10 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=TEST-45-TIMEDATE -+ -+[Service] -+ExecStartPre=rm -f /failed /testok -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -+StandardOutput=journal+console -+StandardError=journal+console -+Type=oneshot -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -new file mode 100755 -index 0000000000..ac7860dccd ---- /dev/null -+++ b/test/units/testsuite-45.sh -@@ -0,0 +1,246 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+set -eux -+set -o pipefail -+ -+# shellcheck source=test/units/assert.sh -+. "$(dirname "$0")"/assert.sh -+ -+test_timezone() { -+ local ORIG_TZ= -+ -+ if [[ -L /etc/localtime ]]; then -+ ORIG_TZ=$(readlink /etc/localtime | sed 's#^.*zoneinfo/##') -+ echo "original tz: $ORIG_TZ" -+ fi -+ -+ echo 'timedatectl works' -+ assert_in "Local time:" "$(timedatectl --no-pager)" -+ -+ echo 'change timezone' -+ assert_eq "$(timedatectl --no-pager set-timezone Europe/Kiev 2>&1)" "" -+ assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "Europe/Kiev" -+ assert_in "Time.*zone: Europe/Kiev (EEST, +" "$(timedatectl --no-pager)" -+ -+ if [[ -n "$ORIG_TZ" ]]; then -+ echo 'reset timezone to original' -+ assert_eq "$(timedatectl --no-pager set-timezone "$ORIG_TZ" 2>&1)" "" -+ assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "$ORIG_TZ" -+ fi -+} -+ -+restore_adjtime() { -+ if [[ -e /etc/adjtime.bak ]]; then -+ mv /etc/adjtime.bak /etc/adjtime -+ else -+ rm /etc/adjtime -+ fi -+} -+ -+check_adjtime_not_exist() { -+ if [[ -e /etc/adjtime ]]; then -+ echo "/etc/adjtime unexpectedly exists." >&2 -+ exit 1 -+ fi -+} -+ -+test_adjtime() { -+ # test setting UTC vs. LOCAL in /etc/adjtime -+ if [[ -e /etc/adjtime ]]; then -+ mv /etc/adjtime /etc/adjtime.bak -+ fi -+ -+ trap restore_adjtime EXIT -+ -+ echo 'no adjtime file' -+ rm -f /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ -+ echo 'UTC set in adjtime file' -+ printf '0.0 0 0\n0\nUTC\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+UTC" -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'non-zero values in adjtime file' -+ printf '0.1 123 0\n0\nLOCAL\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ assert_eq "$(cat /etc/adjtime)" "0.1 123 0 -+0 -+UTC" -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.1 123 0 -+0 -+LOCAL" -+ -+ echo 'fourth line adjtime file' -+ printf '0.0 0 0\n0\nLOCAL\nsomethingelse\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+UTC -+somethingelse" -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL -+somethingelse" -+ -+ echo 'no final newline in adjtime file' -+ printf '0.0 0 0\n0\nUTC' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0\n0\nUTC' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'only one line in adjtime file' -+ printf '0.0 0 0\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0\n' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'only one line in adjtime file, no final newline' -+ printf '0.0 0 0' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'only two lines in adjtime file' -+ printf '0.0 0 0\n0\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0\n0\n' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'only two lines in adjtime file, no final newline' -+ printf '0.0 0 0\n0' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0\n0' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ echo 'unknown value in 3rd line of adjtime file' -+ printf '0.0 0 0\n0\nFOO\n' > /etc/adjtime -+ timedatectl set-local-rtc 0 -+ check_adjtime_not_exist -+ printf '0.0 0 0\n0\nFOO\n' > /etc/adjtime -+ timedatectl set-local-rtc 1 -+ assert_eq "$(cat /etc/adjtime)" "0.0 0 0 -+0 -+LOCAL" -+ -+ restore_adjtime -+ trap - EXIT -+} -+ -+assert_ntp() { -+ assert_eq "$(busctl get-property org.freedesktop.timedate1 /org/freedesktop/timedate1 org.freedesktop.timedate1 NTP)" "b $1" -+} -+ -+start_mon() { -+ busctl monitor --match="type='signal',sender=org.freedesktop.timedate1,member='PropertiesChanged',path=/org/freedesktop/timedate1" >"$mon" & -+ MONPID=$! -+} -+ -+wait_mon() { -+ for ((i=0;i<10;i++)); do -+ if (( i != 0 )); then sleep 1; fi -+ if grep -q "$1" "$mon"; then break; fi -+ done -+ assert_in "$2" "$(cat "$mon")" -+ kill "$MONPID" -+ wait "$MONPID" 2>/dev/null || true -+} -+ -+test_ntp() { -+ # timesyncd has ConditionVirtualization=!container by default; drop/mock that for testing -+ if systemd-detect-virt --container --quiet; then -+ systemctl disable --quiet --now systemd-timesyncd -+ mkdir -p /run/systemd/system/systemd-timesyncd.service.d -+ cat >/run/systemd/system/systemd-timesyncd.service.d/container.conf </failed -+ -+test_timezone -+test_adjtime -+test_ntp -+ -+touch /testok -+rm /failed diff --git a/SOURCES/0211-sleep-fetch_batteries_capacity_by_name-does-not-retu.patch b/SOURCES/0211-sleep-fetch_batteries_capacity_by_name-does-not-retu.patch new file mode 100644 index 0000000..04a2efa --- /dev/null +++ b/SOURCES/0211-sleep-fetch_batteries_capacity_by_name-does-not-retu.patch @@ -0,0 +1,80 @@ +From d46e3dedada3d57db518ae3f9f857fd26050a4dd Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 08:31:09 +0900 +Subject: [PATCH] sleep: fetch_batteries_capacity_by_name() does not return + -ENOENT + +(cherry picked from commit d812e104c7c62648747d3ffe37db33dde319d15c) + +Related: #2151612 +--- + src/sleep/sleep.c | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 7679f2e3be..11a2ba507d 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -275,21 +275,16 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + while (battery_is_low() == 0) { + _cleanup_close_ int tfd = -1; + struct itimerspec ts = {}; +- usec_t suspend_interval = sleep_config->hibernate_delay_usec, before_timestamp = 0, after_timestamp = 0, total_suspend_interval; ++ usec_t suspend_interval = sleep_config->hibernate_delay_usec, total_suspend_interval; + bool woken_by_timer; + + tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC); + if (tfd < 0) + return log_error_errno(errno, "Error creating timerfd: %m"); + +- /* Store current battery capacity and current time before suspension */ ++ /* Store current battery capacity before suspension */ + r = fetch_batteries_capacity_by_name(&last_capacity); +- if (r >= 0) +- before_timestamp = now(CLOCK_BOOTTIME); +- else if (r == -ENOENT) +- /* In case of no battery, system suspend interval will be set to HibernateDelaySec=. */ +- log_debug_errno(r, "Suspend Interval value set to %s: %m", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC)); +- else ++ if (r < 0) + return log_error_errno(r, "Error fetching battery capacity percentage: %m"); + + r = get_total_suspend_interval(last_capacity, &total_suspend_interval); +@@ -298,6 +293,8 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + else + suspend_interval = total_suspend_interval; + ++ usec_t before_timestamp = now(CLOCK_BOOTTIME); ++ + log_debug("Set timerfd wake alarm for %s", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC)); + /* Wake alarm for system with or without battery to hibernate or estimate discharge rate whichever is applicable */ + timespec_store(&ts.it_value, suspend_interval); +@@ -316,18 +313,22 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + woken_by_timer = FLAGS_SET(r, POLLIN); + + r = fetch_batteries_capacity_by_name(¤t_capacity); +- if (r < 0) { ++ if (r < 0 || hashmap_isempty(current_capacity)) { + /* In case of no battery or error while getting charge level, no need to measure +- * discharge rate. Instead system should wakeup if it is manual wakeup or +- * hibernate if this is a timer wakeup. */ +- log_debug_errno(r, "Battery capacity percentage unavailable, cannot estimate discharge rate: %m"); ++ * discharge rate. Instead the system should wake up if it is manual wakeup or ++ * hibernate if this is a timer wakeup. */ ++ if (r < 0) ++ log_debug_errno(r, "Battery capacity percentage unavailable, cannot estimate discharge rate: %m"); ++ else ++ log_debug("No battery found."); + if (!woken_by_timer) + return 0; + break; + } + +- after_timestamp = now(CLOCK_BOOTTIME); +- log_debug("Attempting to estimate battery discharge rate after wakeup from %s sleep", FORMAT_TIMESPAN(after_timestamp - before_timestamp, USEC_PER_HOUR)); ++ usec_t after_timestamp = now(CLOCK_BOOTTIME); ++ log_debug("Attempting to estimate battery discharge rate after wakeup from %s sleep", ++ FORMAT_TIMESPAN(after_timestamp - before_timestamp, USEC_PER_HOUR)); + + if (after_timestamp != before_timestamp) { + r = estimate_battery_discharge_rate_per_hour(last_capacity, current_capacity, before_timestamp, after_timestamp); diff --git a/SOURCES/0211-test-introduce-assert_not_in-helper-function.patch b/SOURCES/0211-test-introduce-assert_not_in-helper-function.patch deleted file mode 100644 index e712fb8..0000000 --- a/SOURCES/0211-test-introduce-assert_not_in-helper-function.patch +++ /dev/null @@ -1,107 +0,0 @@ -From e7b657694adbd03403f2ebbe089a6d5baa58d7d5 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:00:00 +0900 -Subject: [PATCH] test: introduce assert_not_in() helper function - -This also silence assertions, and replace grep with bash's regular -expression match. - -(cherry picked from commit d170b47535e2acc8abd1af85ff8685107fdd490f) - -Related: #2087652 ---- - test/units/assert.sh | 48 ++++++++++++++++++++++++-------------- - test/units/testsuite-45.sh | 2 +- - 2 files changed, 32 insertions(+), 18 deletions(-) - -diff --git a/test/units/assert.sh b/test/units/assert.sh -index db67dad268..66357ab688 100644 ---- a/test/units/assert.sh -+++ b/test/units/assert.sh -@@ -3,42 +3,56 @@ - - # utility functions for shell tests - --assert_true() { -+assert_true() {( - local rc - -- set +e -+ set +ex -+ - "$@" - rc=$? -- set -e -- if [[ "$rc" != "0" ]]; then -+ if [[ $rc -ne 0 ]]; then - echo "FAIL: command '$*' failed with exit code $rc" >&2 - exit 1 - fi --} -+)} -+ - -+assert_eq() {( -+ set +ex - --assert_eq() { -- if [[ "$1" != "$2" ]]; then -+ if [[ "${1?}" != "${2?}" ]]; then - echo "FAIL: expected: '$2' actual: '$1'" >&2 - exit 1 - fi --} -+)} -+ -+assert_in() {( -+ set +ex - --assert_in() { -- if ! echo "$2" | grep -q "$1"; then -+ if ! [[ "${2?}" =~ ${1?} ]]; then - echo "FAIL: '$1' not found in:" >&2 - echo "$2" >&2 - exit 1 - fi --} -+)} -+ -+assert_not_in() {( -+ set +ex -+ -+ if [[ "${2?}" =~ ${1?} ]]; then -+ echo "FAIL: '$1' found in:" >&2 -+ echo "$2" >&2 -+ exit 1 -+ fi -+)} -+ -+assert_rc() {( -+ local rc exp="${1?}" -+ -+ set +ex - --assert_rc() { -- local exp=$1 -- local rc - shift -- set +e - "$@" - rc=$? -- set -e - assert_eq "$rc" "$exp" --} -+)} -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index ac7860dccd..d0d1ef2eb4 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -21,7 +21,7 @@ test_timezone() { - echo 'change timezone' - assert_eq "$(timedatectl --no-pager set-timezone Europe/Kiev 2>&1)" "" - assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "Europe/Kiev" -- assert_in "Time.*zone: Europe/Kiev (EEST, +" "$(timedatectl --no-pager)" -+ assert_in "Time zone: Europe/Kiev \(EEST, \+0[0-9]00\)" "$(timedatectl)" - - if [[ -n "$ORIG_TZ" ]]; then - echo 'reset timezone to original' diff --git a/SOURCES/0212-sleep-drop-unnecessary-temporal-vaiable-and-initiali.patch b/SOURCES/0212-sleep-drop-unnecessary-temporal-vaiable-and-initiali.patch new file mode 100644 index 0000000..915e98b --- /dev/null +++ b/SOURCES/0212-sleep-drop-unnecessary-temporal-vaiable-and-initiali.patch @@ -0,0 +1,42 @@ +From 176ceed28620a9358c5528a039b74211187bcf13 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 00:09:34 +0900 +Subject: [PATCH] sleep: drop unnecessary temporal vaiable and initialization + +(cherry picked from commit 2ed56afeb3c26596dbe44858559c92307778ff82) + +Related: #2151612 +--- + src/sleep/sleep.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 11a2ba507d..039b123dcc 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -275,7 +275,7 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + while (battery_is_low() == 0) { + _cleanup_close_ int tfd = -1; + struct itimerspec ts = {}; +- usec_t suspend_interval = sleep_config->hibernate_delay_usec, total_suspend_interval; ++ usec_t suspend_interval; + bool woken_by_timer; + + tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC); +@@ -287,11 +287,12 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + if (r < 0) + return log_error_errno(r, "Error fetching battery capacity percentage: %m"); + +- r = get_total_suspend_interval(last_capacity, &total_suspend_interval); +- if (r < 0) ++ r = get_total_suspend_interval(last_capacity, &suspend_interval); ++ if (r < 0) { + log_debug_errno(r, "Failed to estimate suspend interval using previous discharge rate, ignoring: %m"); +- else +- suspend_interval = total_suspend_interval; ++ /* In case of no battery or any errors, system suspend interval will be set to HibernateDelaySec=. */ ++ suspend_interval = sleep_config->hibernate_delay_usec; ++ } + + usec_t before_timestamp = now(CLOCK_BOOTTIME); + diff --git a/SOURCES/0212-test-drop-unnecessary-no-pager-option.patch b/SOURCES/0212-test-drop-unnecessary-no-pager-option.patch deleted file mode 100644 index fc75c97..0000000 --- a/SOURCES/0212-test-drop-unnecessary-no-pager-option.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 740dd8e0a0c503980894968006a43fa05039e299 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:01:00 +0900 -Subject: [PATCH] test: drop unnecessary --no-pager option - -(cherry picked from commit 8ed2103306fa6b3dcaf8d810e65e8957553ef752) - -Related: #2087652 ---- - test/units/testsuite-45.sh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index d0d1ef2eb4..2069d2437f 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -25,7 +25,7 @@ test_timezone() { - - if [[ -n "$ORIG_TZ" ]]; then - echo 'reset timezone to original' -- assert_eq "$(timedatectl --no-pager set-timezone "$ORIG_TZ" 2>&1)" "" -+ assert_eq "$(timedatectl set-timezone "$ORIG_TZ" 2>&1)" "" - assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "$ORIG_TZ" - fi - } -@@ -206,11 +206,11 @@ EOF - timedatectl set-ntp false - for ((i=0;i<10;i++)); do - if (( i != 0 )); then sleep 1; fi -- if [[ "$(systemctl --no-pager show systemd-timesyncd --property ActiveState)" == "ActiveState=inactive" ]]; then -+ if [[ "$(systemctl show systemd-timesyncd --property ActiveState)" == "ActiveState=inactive" ]]; then - break; - fi - done -- assert_eq "$(systemctl --no-pager show systemd-timesyncd --property ActiveState)" "ActiveState=inactive" -+ assert_eq "$(systemctl show systemd-timesyncd --property ActiveState)" "ActiveState=inactive" - assert_ntp "false" - assert_rc 3 systemctl is-active --quiet systemd-timesyncd - -@@ -221,11 +221,11 @@ EOF - assert_ntp "true" - for ((i=0;i<10;i++)); do - if (( i != 0 )); then sleep 1; fi -- if [[ "$(systemctl --no-pager show systemd-timesyncd --property ActiveState)" == "ActiveState=active" ]]; then -+ if [[ "$(systemctl show systemd-timesyncd --property ActiveState)" == "ActiveState=active" ]]; then - break; - fi - done -- assert_eq "$(systemctl --no-pager show systemd-timesyncd --property ActiveState)" "ActiveState=active" -+ assert_eq "$(systemctl show systemd-timesyncd --property ActiveState)" "ActiveState=active" - assert_rc 0 systemctl is-active --quiet systemd-timesyncd - - echo 're-disable NTP' diff --git a/SOURCES/0213-sleep-introduce-SuspendEstimationSec.patch b/SOURCES/0213-sleep-introduce-SuspendEstimationSec.patch new file mode 100644 index 0000000..2535f35 --- /dev/null +++ b/SOURCES/0213-sleep-introduce-SuspendEstimationSec.patch @@ -0,0 +1,270 @@ +From db8a187c67e4829e39fe28e25003816b64db80db Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 02:08:05 +0900 +Subject: [PATCH] sleep: introduce SuspendEstimationSec= + +Before v252, HibernateDelaySec= specifies the maximum timespan that the +system in suspend state, and the system hibernate after the timespan. + +However, after 96d662fa4c8cab24da57523c5e49e6ef3967fc13, the setting is +repurposed as the default interval to measure battery charge level and +estimate the battery discharging late. And if the system has enough +battery capacity, then the system will stay in suspend state and not +hibernate even if the time passed. See issue #25269. + +To keep the backward compatibility, let's introduce another setting +SuspendEstimationSec= for controlling the interval to measure +battery charge level, and make HibernateDelaySec= work as of v251. + +This also drops implementation details from the man page. + +Fixes #25269. + +(cherry picked from commit 4f58b656d92b09a953b7cffcfd1ee6d5136a57ed) + +Resolves: #2151612 +--- + man/systemd-sleep.conf.xml | 58 ++++++++++++++++++++------------------ + src/shared/sleep-config.c | 11 ++++++-- + src/shared/sleep-config.h | 3 ++ + src/sleep/sleep.c | 48 ++++++++++++++++++++++--------- + src/sleep/sleep.conf | 3 +- + 5 files changed, 77 insertions(+), 46 deletions(-) + +diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml +index be04f2cdf1..79ebef1fef 100644 +--- a/man/systemd-sleep.conf.xml ++++ b/man/systemd-sleep.conf.xml +@@ -77,29 +77,16 @@ + + suspend-then-hibernate + +- A low power state where initially user.slice unit is freezed. +- If the hardware supports low-battery alarms (ACPI _BTP), then the system is +- first suspended (the state is stored in RAM) and then hibernates if the system +- is woken up by the hardware via ACPI low-battery signal. Unit user.slice is +- thawed when system returns from hibernation. If the hardware does not support +- low-battery alarms (ACPI _BTP), then the system is suspended based on battery's +- current percentage capacity. If the current battery capacity is higher than 5%, the +- system suspends for interval calculated using battery discharge rate per hour or +- HibernateDelaySec= +- if former is not available. +- Battery discharge rate per hour is stored in a file which is created after +- initial suspend-resume cycle. The value is calculated using battery decreasing +- charge level over a timespan for which system was suspended. For each battery +- connected to the system, there is a unique entry. After RTC alarm wakeup from +- suspend, battery discharge rate per hour is again estimated. If the current battery +- charge level is equal to or less than 5%, the system will be hibernated (the state +- is then stored on disk) else the system goes back to suspend for the interval +- calculated using battery discharge rate per hour. +- In case of manual wakeup, if the battery was discharged while the system was +- suspended, the battery discharge rate is estimated and stored on the filesystem. +- In case the system is woken up by the hardware via the ACPI low-battery signal, +- then it hibernates. +- ++ ++ A low power state where the system is initially suspended (the state is stored in ++ RAM). If the system supports low-battery alarms (ACPI _BTP), then the system will be woken up by ++ the ACPI low-battery signal and hibernated (the state is then stored on disk). Also, if not ++ interrupted within the timespan specified by HibernateDelaySec= or the estimated ++ timespan until the system battery charge level goes down to 5%, then the system will be woken up by the ++ RTC alarm and hibernated. The estimated timespan is calculated from the change of the battery ++ capacity level after the time specified by SuspendEstimationSec= or when ++ the system is woken up from the suspend. ++ + + + +@@ -189,13 +176,28 @@ + uses the value of SuspendState= when suspending and the value of HibernateState= when hibernating. + + ++ + + HibernateDelaySec= +- The amount of time the system spends in suspend mode +- before the RTC alarm wakes the system, before the battery discharge rate +- can be estimated and used instead to calculate the suspension interval. +- systemd-suspend-then-hibernate.service8. Defaults +- to 2h. ++ ++ ++ The amount of time the system spends in suspend mode before the system is ++ automatically put into hibernate mode. Only used by ++ systemd-suspend-then-hibernate.service8. ++ If the system has a battery, then defaults to the estimated timespan until the system battery charge level goes down to 5%. ++ If the system has no battery, then defaults to 2h. ++ ++ ++ ++ ++ SuspendEstimationSec= ++ ++ ++ The RTC alarm will wake the system after the specified timespan to measure the system battery ++ capacity level and estimate battery discharging rate, which is used for estimating timespan until the system battery charge ++ level goes down to 5%. Only used by ++ systemd-suspend-then-hibernate.service8. ++ Defaults to 2h. + + + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 359d293fd0..74653effa2 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -65,10 +65,14 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) { + int allow_suspend = -1, allow_hibernate = -1, + allow_s2h = -1, allow_hybrid_sleep = -1; + +- sc = new0(SleepConfig, 1); ++ sc = new(SleepConfig, 1); + if (!sc) + return log_oom(); + ++ *sc = (SleepConfig) { ++ .hibernate_delay_usec = USEC_INFINITY, ++ }; ++ + const ConfigTableItem items[] = { + { "Sleep", "AllowSuspend", config_parse_tristate, 0, &allow_suspend }, + { "Sleep", "AllowHibernation", config_parse_tristate, 0, &allow_hibernate }, +@@ -83,6 +87,7 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) { + { "Sleep", "HybridSleepState", config_parse_strv, 0, sc->states + SLEEP_HYBRID_SLEEP }, + + { "Sleep", "HibernateDelaySec", config_parse_sec, 0, &sc->hibernate_delay_usec }, ++ { "Sleep", "SuspendEstimationSec", config_parse_sec, 0, &sc->suspend_estimation_usec }, + {} + }; + +@@ -113,8 +118,8 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) { + sc->modes[SLEEP_HYBRID_SLEEP] = strv_new("suspend", "platform", "shutdown"); + if (!sc->states[SLEEP_HYBRID_SLEEP]) + sc->states[SLEEP_HYBRID_SLEEP] = strv_new("disk"); +- if (sc->hibernate_delay_usec == 0) +- sc->hibernate_delay_usec = 2 * USEC_PER_HOUR; ++ if (sc->suspend_estimation_usec == 0) ++ sc->suspend_estimation_usec = DEFAULT_SUSPEND_ESTIMATION_USEC; + + /* ensure values set for all required fields */ + if (!sc->states[SLEEP_SUSPEND] || !sc->modes[SLEEP_HIBERNATE] +diff --git a/src/shared/sleep-config.h b/src/shared/sleep-config.h +index 226fab4b9f..480e90c95b 100644 +--- a/src/shared/sleep-config.h ++++ b/src/shared/sleep-config.h +@@ -6,6 +6,8 @@ + #include "hashmap.h" + #include "time-util.h" + ++#define DEFAULT_SUSPEND_ESTIMATION_USEC (1 * USEC_PER_HOUR) ++ + typedef enum SleepOperation { + SLEEP_SUSPEND, + SLEEP_HIBERNATE, +@@ -20,6 +22,7 @@ typedef struct SleepConfig { + char **modes[_SLEEP_OPERATION_MAX]; + char **states[_SLEEP_OPERATION_MAX]; + usec_t hibernate_delay_usec; ++ usec_t suspend_estimation_usec; + } SleepConfig; + + SleepConfig* free_sleep_config(SleepConfig *sc); +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 039b123dcc..0bbea9e856 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -268,10 +268,13 @@ static int execute( + + static int custom_timer_suspend(const SleepConfig *sleep_config) { + _cleanup_hashmap_free_ Hashmap *last_capacity = NULL, *current_capacity = NULL; ++ usec_t hibernate_timestamp; + int r; + + assert(sleep_config); + ++ hibernate_timestamp = usec_add(now(CLOCK_BOOTTIME), sleep_config->hibernate_delay_usec); ++ + while (battery_is_low() == 0) { + _cleanup_close_ int tfd = -1; + struct itimerspec ts = {}; +@@ -287,14 +290,25 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) { + if (r < 0) + return log_error_errno(r, "Error fetching battery capacity percentage: %m"); + +- r = get_total_suspend_interval(last_capacity, &suspend_interval); +- if (r < 0) { +- log_debug_errno(r, "Failed to estimate suspend interval using previous discharge rate, ignoring: %m"); +- /* In case of no battery or any errors, system suspend interval will be set to HibernateDelaySec=. */ +- suspend_interval = sleep_config->hibernate_delay_usec; ++ if (hashmap_isempty(last_capacity)) ++ /* In case of no battery, system suspend interval will be set to HibernateDelaySec= or 2 hours. */ ++ suspend_interval = timestamp_is_set(hibernate_timestamp) ? sleep_config->hibernate_delay_usec : DEFAULT_SUSPEND_ESTIMATION_USEC; ++ else { ++ r = get_total_suspend_interval(last_capacity, &suspend_interval); ++ if (r < 0) { ++ log_debug_errno(r, "Failed to estimate suspend interval using previous discharge rate, ignoring: %m"); ++ /* In case of any errors, especially when we do not know the battery ++ * discharging rate, system suspend interval will be set to ++ * SuspendEstimationSec=. */ ++ suspend_interval = sleep_config->suspend_estimation_usec; ++ } + } + ++ /* Do not suspend more than HibernateDelaySec= */ + usec_t before_timestamp = now(CLOCK_BOOTTIME); ++ suspend_interval = MIN(suspend_interval, usec_sub_unsigned(hibernate_timestamp, before_timestamp)); ++ if (suspend_interval <= 0) ++ break; /* system should hibernate */ + + log_debug("Set timerfd wake alarm for %s", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC)); + /* Wake alarm for system with or without battery to hibernate or estimate discharge rate whichever is applicable */ +@@ -377,7 +391,7 @@ static int freeze_thaw_user_slice(const char **method) { + + static int execute_s2h(const SleepConfig *sleep_config) { + _unused_ _cleanup_(freeze_thaw_user_slice) const char *auto_method_thaw = NULL; +- int r, k; ++ int r; + + assert(sleep_config); + +@@ -387,15 +401,21 @@ static int execute_s2h(const SleepConfig *sleep_config) { + else + auto_method_thaw = "ThawUnit"; /* from now on we want automatic thawing */; + +- r = check_wakeup_type(); +- if (r < 0) +- log_debug_errno(r, "Failed to check hardware wakeup type, ignoring: %m"); +- +- k = battery_trip_point_alarm_exists(); +- if (k < 0) +- log_debug_errno(k, "Failed to check whether acpi_btp support is enabled or not, ignoring: %m"); ++ /* Only check if we have automated battery alarms if HibernateDelaySec= is not set, as in that case ++ * we'll busy poll for the configured interval instead */ ++ if (!timestamp_is_set(sleep_config->hibernate_delay_usec)) { ++ r = check_wakeup_type(); ++ if (r < 0) ++ log_debug_errno(r, "Failed to check hardware wakeup type, ignoring: %m"); ++ else { ++ r = battery_trip_point_alarm_exists(); ++ if (r < 0) ++ log_debug_errno(r, "Failed to check whether acpi_btp support is enabled or not, ignoring: %m"); ++ } ++ } else ++ r = 0; /* Force fallback path */ + +- if (r >= 0 && k > 0) { ++ if (r > 0) { /* If we have both wakeup alarms and battery trip point support, use them */ + log_debug("Attempting to suspend..."); + r = execute(sleep_config, SLEEP_SUSPEND, NULL); + if (r < 0) +diff --git a/src/sleep/sleep.conf b/src/sleep/sleep.conf +index a3d31140d8..4c8e8b9680 100644 +--- a/src/sleep/sleep.conf ++++ b/src/sleep/sleep.conf +@@ -23,4 +23,5 @@ + #HibernateState=disk + #HybridSleepMode=suspend platform shutdown + #HybridSleepState=disk +-#HibernateDelaySec=120min ++#HibernateDelaySec= ++#SuspendEstimationSec=60min diff --git a/SOURCES/0213-test-support-debian-ubuntu-specific-timezone-config-.patch b/SOURCES/0213-test-support-debian-ubuntu-specific-timezone-config-.patch deleted file mode 100644 index a82f54a..0000000 --- a/SOURCES/0213-test-support-debian-ubuntu-specific-timezone-config-.patch +++ /dev/null @@ -1,64 +0,0 @@ -From ce027f67d29066f188891c94447e50c12168a693 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:02:00 +0900 -Subject: [PATCH] test: support debian/ubuntu specific timezone config file - -(cherry picked from commit aab61a8c990a54703ae70ca951d0502860010267) - -Related: #2087652 ---- - test/units/testsuite-45.sh | 24 ++++++++++++++++++++++++ - 1 file changed, 24 insertions(+) - -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index 2069d2437f..d0f9dd9461 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -7,9 +7,24 @@ set -o pipefail - # shellcheck source=test/units/assert.sh - . "$(dirname "$0")"/assert.sh - -+restore_timezone() { -+ if [[ -f /tmp/timezone.bak ]]; then -+ mv /tmp/timezone.bak /etc/timezone -+ else -+ rm -f /etc/timezone -+ fi -+} -+ - test_timezone() { - local ORIG_TZ= - -+ # Debian/Ubuntu specific file -+ if [[ -f /etc/timezone ]]; then -+ mv /etc/timezone /tmp/timezone.bak -+ fi -+ -+ trap restore_timezone EXIT -+ - if [[ -L /etc/localtime ]]; then - ORIG_TZ=$(readlink /etc/localtime | sed 's#^.*zoneinfo/##') - echo "original tz: $ORIG_TZ" -@@ -21,13 +36,22 @@ test_timezone() { - echo 'change timezone' - assert_eq "$(timedatectl --no-pager set-timezone Europe/Kiev 2>&1)" "" - assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "Europe/Kiev" -+ if [[ -f /etc/timezone ]]; then -+ assert_eq "$(cat /etc/timezone)" "Europe/Kiev" -+ fi - assert_in "Time zone: Europe/Kiev \(EEST, \+0[0-9]00\)" "$(timedatectl)" - - if [[ -n "$ORIG_TZ" ]]; then - echo 'reset timezone to original' - assert_eq "$(timedatectl set-timezone "$ORIG_TZ" 2>&1)" "" - assert_eq "$(readlink /etc/localtime | sed 's#^.*zoneinfo/##')" "$ORIG_TZ" -+ if [[ -f /etc/timezone ]]; then -+ assert_eq "$(cat /etc/timezone)" "$ORIG_TZ" -+ fi - fi -+ -+ restore_timezone -+ trap - EXIT - } - - restore_adjtime() { diff --git a/SOURCES/0214-sleep-coding-style-fixlets.patch b/SOURCES/0214-sleep-coding-style-fixlets.patch new file mode 100644 index 0000000..d2e12f1 --- /dev/null +++ b/SOURCES/0214-sleep-coding-style-fixlets.patch @@ -0,0 +1,28 @@ +From 583e9f1af5642643f11bc1cab26989a4f1dff776 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 02:44:13 +0900 +Subject: [PATCH] sleep: coding style fixlets + +(cherry picked from commit 3c3f46013ed53aba1aad5b51844434713fa5a0e9) + +Related: #2151612 +--- + src/sleep/sleep.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 0bbea9e856..bfd8ef3670 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -430,9 +430,9 @@ static int execute_s2h(const SleepConfig *sleep_config) { + return 0; + } else { + r = custom_timer_suspend(sleep_config); +- if(r < 0) ++ if (r < 0) + return log_debug_errno(r, "Suspend cycle with manual battery discharge rate estimation failed: %m"); +- if(r == 0) ++ if (r == 0) + /* manual wakeup */ + return 0; + } diff --git a/SOURCES/0214-test-import-hostnamed-tests-from-debian-ubuntu-test-.patch b/SOURCES/0214-test-import-hostnamed-tests-from-debian-ubuntu-test-.patch deleted file mode 100644 index 86206a1..0000000 --- a/SOURCES/0214-test-import-hostnamed-tests-from-debian-ubuntu-test-.patch +++ /dev/null @@ -1,117 +0,0 @@ -From b9724ced388bef0a53be49c4ce45db2c8352f186 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:03:00 +0900 -Subject: [PATCH] test: import hostnamed tests from debian/ubuntu test suite - -(cherry picked from commit 39f4546199d6394014cf79b76b9ff22d3c149c54) - -Related: #2087652 ---- - test/TEST-71-HOSTNAME/Makefile | 1 + - test/TEST-71-HOSTNAME/test.sh | 10 +++++++ - test/units/testsuite-71.service | 10 +++++++ - test/units/testsuite-71.sh | 52 +++++++++++++++++++++++++++++++++ - 4 files changed, 73 insertions(+) - create mode 120000 test/TEST-71-HOSTNAME/Makefile - create mode 100755 test/TEST-71-HOSTNAME/test.sh - create mode 100644 test/units/testsuite-71.service - create mode 100755 test/units/testsuite-71.sh - -diff --git a/test/TEST-71-HOSTNAME/Makefile b/test/TEST-71-HOSTNAME/Makefile -new file mode 120000 -index 0000000000..e9f93b1104 ---- /dev/null -+++ b/test/TEST-71-HOSTNAME/Makefile -@@ -0,0 +1 @@ -+../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-71-HOSTNAME/test.sh b/test/TEST-71-HOSTNAME/test.sh -new file mode 100755 -index 0000000000..7b3d2d12d4 ---- /dev/null -+++ b/test/TEST-71-HOSTNAME/test.sh -@@ -0,0 +1,10 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="test hostnamed" -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+do_test "$@" -diff --git a/test/units/testsuite-71.service b/test/units/testsuite-71.service -new file mode 100644 -index 0000000000..019e8bff24 ---- /dev/null -+++ b/test/units/testsuite-71.service -@@ -0,0 +1,10 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=TEST-71-HOSTNAME -+ -+[Service] -+ExecStartPre=rm -f /failed /testok -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -+StandardOutput=journal+console -+StandardError=journal+console -+Type=oneshot -diff --git a/test/units/testsuite-71.sh b/test/units/testsuite-71.sh -new file mode 100755 -index 0000000000..34fcaad961 ---- /dev/null -+++ b/test/units/testsuite-71.sh -@@ -0,0 +1,52 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+set -eux -+set -o pipefail -+ -+# shellcheck source=test/units/assert.sh -+. "$(dirname "$0")"/assert.sh -+ -+restore_hostname() { -+ if [[ -e /tmp/hostname.bak ]]; then -+ mv /tmp/hostname.bak /etc/hostname -+ else -+ rm -f /etc/hostname -+ fi -+} -+ -+test_hostname() { -+ local orig= -+ -+ if [[ -f /etc/hostname ]]; then -+ cp /etc/hostname /tmp/hostname.bak -+ orig=$(cat /etc/hostname) -+ fi -+ -+ trap restore_hostname RETURN -+ -+ # should activate daemon and work -+ if [[ -n "$orig" ]]; then -+ assert_in "Static hostname: $orig" "$(hostnamectl)" -+ fi -+ assert_in "Kernel: $(uname -s) $(uname -r)" "$(hostnamectl)" -+ -+ # change hostname -+ assert_rc 0 hostnamectl set-hostname testhost -+ assert_eq "$(cat /etc/hostname)" "testhost" -+ assert_in "Static hostname: testhost" "$(hostnamectl)" -+ -+ if [[ -n "$orig" ]]; then -+ # reset to original -+ assert_rc 0 hostnamectl set-hostname "$orig" -+ assert_eq "$(cat /etc/hostname)" "$orig" -+ assert_in "Static hostname: $orig" "$(hostnamectl)" -+ fi -+} -+ -+: >/failed -+ -+test_hostname -+ -+touch /testok -+rm /failed diff --git a/SOURCES/0215-locale-util-fix-memleak-on-failure.patch b/SOURCES/0215-locale-util-fix-memleak-on-failure.patch deleted file mode 100644 index 13a03f5..0000000 --- a/SOURCES/0215-locale-util-fix-memleak-on-failure.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 97c96647418ffbadf3d964d76a5f54a9c54535c1 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:04:00 +0900 -Subject: [PATCH] locale-util: fix memleak on failure - -(cherry picked from commit 065058e63b566e21af737150ecd12bff57b97124) - -Related: #2087652 ---- - src/basic/locale-util.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c -index 7f1a2f15f7..abbebc7666 100644 ---- a/src/basic/locale-util.c -+++ b/src/basic/locale-util.c -@@ -156,7 +156,7 @@ static int add_locales_from_archive(Set *locales) { - return r; - } - --static int add_locales_from_libdir (Set *locales) { -+static int add_locales_from_libdir(Set *locales) { - _cleanup_closedir_ DIR *dir = NULL; - int r; - -@@ -183,7 +183,7 @@ static int add_locales_from_libdir (Set *locales) { - } - - int get_locales(char ***ret) { -- _cleanup_set_free_ Set *locales = NULL; -+ _cleanup_set_free_free_ Set *locales = NULL; - _cleanup_strv_free_ char **l = NULL; - int r; - -@@ -203,6 +203,9 @@ int get_locales(char ***ret) { - if (!l) - return -ENOMEM; - -+ /* Now, all elements are owned by strv 'l'. Hence, do not call set_free_free(). */ -+ locales = set_free(locales); -+ - r = getenv_bool("SYSTEMD_LIST_NON_UTF8_LOCALES"); - if (r == -ENXIO || r == 0) { - char **a, **b; diff --git a/SOURCES/0215-sleep-simplify-code-a-bit.patch b/SOURCES/0215-sleep-simplify-code-a-bit.patch new file mode 100644 index 0000000..78c4a09 --- /dev/null +++ b/SOURCES/0215-sleep-simplify-code-a-bit.patch @@ -0,0 +1,66 @@ +From d46e822fad4b5d43d5e53e21c7de3168bb547ded Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 02:46:53 +0900 +Subject: [PATCH] sleep: simplify code a bit + +- use device_get_sysattr_int(), +- drop redundant log message. + +(cherry picked from commit 3d9ca76f368b7b198be3471dd28ed32b35114ace) + +Related: #2151612 +--- + src/shared/sleep-config.c | 20 +++++--------------- + 1 file changed, 5 insertions(+), 15 deletions(-) + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 74653effa2..25c3bd2925 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -22,6 +22,7 @@ + #include "btrfs-util.h" + #include "conf-parser.h" + #include "def.h" ++#include "device-private.h" + #include "device-util.h" + #include "devnum-util.h" + #include "env-util.h" +@@ -170,18 +171,13 @@ static int get_capacity_by_name(Hashmap *capacities_by_name, const char *name) { + + /* Battery percentage capacity fetched from capacity file and if in range 0-100 then returned */ + static int read_battery_capacity_percentage(sd_device *dev) { +- const char *power_supply_capacity; + int battery_capacity, r; + + assert(dev); + +- r = sd_device_get_property_value(dev, "POWER_SUPPLY_CAPACITY", &power_supply_capacity); ++ r = device_get_sysattr_int(dev, "capacity", &battery_capacity); + if (r < 0) +- return log_device_debug_errno(dev, r, "Failed to read battery capacity: %m"); +- +- r = safe_atoi(power_supply_capacity, &battery_capacity); +- if (r < 0) +- return log_device_debug_errno(dev, r, "Failed to parse battery capacity: %m"); ++ return log_device_debug_errno(dev, r, "Failed to read/parse POWER_SUPPLY_CAPACITY: %m"); + + if (battery_capacity < 0 || battery_capacity > 100) + return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ERANGE), "Invalid battery capacity"); +@@ -203,15 +199,9 @@ int battery_is_low(void) { + if (r < 0) + return log_debug_errno(r, "Failed to initialize battery enumerator: %m"); + +- FOREACH_DEVICE(e, dev) { +- r = read_battery_capacity_percentage(dev); +- if (r < 0) { +- log_device_debug_errno(dev, r, "Failed to get battery capacity, ignoring: %m"); +- continue; +- } +- if (r > BATTERY_LOW_CAPACITY_LEVEL) ++ FOREACH_DEVICE(e, dev) ++ if (read_battery_capacity_percentage(dev) > BATTERY_LOW_CAPACITY_LEVEL) + return false; +- } + + return true; + } diff --git a/SOURCES/0216-locale-util-check-if-enumerated-locales-are-valid.patch b/SOURCES/0216-locale-util-check-if-enumerated-locales-are-valid.patch deleted file mode 100644 index 039d97c..0000000 --- a/SOURCES/0216-locale-util-check-if-enumerated-locales-are-valid.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c10efc8164dcdf8596315ce98f60405f8c2e17c0 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:05:00 +0900 -Subject: [PATCH] locale-util: check if enumerated locales are valid - -(cherry picked from commit a2f7937747f12634d93049f645cdae88f89ff233) - -Related: #2087652 ---- - src/basic/locale-util.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c -index abbebc7666..bd36cdd1cd 100644 ---- a/src/basic/locale-util.c -+++ b/src/basic/locale-util.c -@@ -199,6 +199,15 @@ int get_locales(char ***ret) { - if (r < 0) - return r; - -+ char *locale; -+ SET_FOREACH(locale, locales) { -+ r = locale_is_installed(locale); -+ if (r < 0) -+ return r; -+ if (r == 0) -+ free(set_remove(locales, locale)); -+ } -+ - l = set_get_strv(locales); - if (!l) - return -ENOMEM; diff --git a/SOURCES/0216-sleep-fix-indentation.patch b/SOURCES/0216-sleep-fix-indentation.patch new file mode 100644 index 0000000..5d63167 --- /dev/null +++ b/SOURCES/0216-sleep-fix-indentation.patch @@ -0,0 +1,33 @@ +From 57eb0c1c4903901717b4a81dd674aabb2c0ab2b3 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 02:52:55 +0900 +Subject: [PATCH] sleep: fix indentation + +(cherry picked from commit 3332cfe1764e3c15d9af2ef68097d0f698fddb3d) + +Related: #2151612 +--- + src/shared/sleep-config.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 25c3bd2925..4c08e97c8a 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -388,11 +388,11 @@ static int put_battery_discharge_rate(int estimated_battery_discharge_rate, uint + estimated_battery_discharge_rate); + + r = write_string_filef( +- DISCHARGE_RATE_FILEPATH, +- WRITE_STRING_FILE_CREATE | WRITE_STRING_FILE_MKDIR_0755 | (trunc ? WRITE_STRING_FILE_TRUNCATE : 0), +- "%"PRIu64" %d", +- system_hash_id, +- estimated_battery_discharge_rate); ++ DISCHARGE_RATE_FILEPATH, ++ WRITE_STRING_FILE_CREATE | WRITE_STRING_FILE_MKDIR_0755 | (trunc ? WRITE_STRING_FILE_TRUNCATE : 0), ++ "%"PRIu64" %d", ++ system_hash_id, ++ estimated_battery_discharge_rate); + if (r < 0) + return log_debug_errno(r, "Failed to update %s: %m", DISCHARGE_RATE_FILEPATH); + diff --git a/SOURCES/0217-locale-util-align-locale-entries.patch b/SOURCES/0217-locale-util-align-locale-entries.patch deleted file mode 100644 index 4e167dd..0000000 --- a/SOURCES/0217-locale-util-align-locale-entries.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 1fb9fa1c16f46ce830324173dd0920eddf13c9d6 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:06:00 +0900 -Subject: [PATCH] locale-util: align locale entries - -(cherry picked from commit d2e96a4f87f814f3d5c8be986a4d4f616bfd67f4) - -Related: #2087652 ---- - src/basic/locale-util.c | 26 +++++++++++++------------- - 1 file changed, 13 insertions(+), 13 deletions(-) - -diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c -index bd36cdd1cd..8098369db5 100644 ---- a/src/basic/locale-util.c -+++ b/src/basic/locale-util.c -@@ -336,19 +336,19 @@ void locale_variables_free(char *l[_VARIABLE_LC_MAX]) { - } - - static const char * const locale_variable_table[_VARIABLE_LC_MAX] = { -- [VARIABLE_LANG] = "LANG", -- [VARIABLE_LANGUAGE] = "LANGUAGE", -- [VARIABLE_LC_CTYPE] = "LC_CTYPE", -- [VARIABLE_LC_NUMERIC] = "LC_NUMERIC", -- [VARIABLE_LC_TIME] = "LC_TIME", -- [VARIABLE_LC_COLLATE] = "LC_COLLATE", -- [VARIABLE_LC_MONETARY] = "LC_MONETARY", -- [VARIABLE_LC_MESSAGES] = "LC_MESSAGES", -- [VARIABLE_LC_PAPER] = "LC_PAPER", -- [VARIABLE_LC_NAME] = "LC_NAME", -- [VARIABLE_LC_ADDRESS] = "LC_ADDRESS", -- [VARIABLE_LC_TELEPHONE] = "LC_TELEPHONE", -- [VARIABLE_LC_MEASUREMENT] = "LC_MEASUREMENT", -+ [VARIABLE_LANG] = "LANG", -+ [VARIABLE_LANGUAGE] = "LANGUAGE", -+ [VARIABLE_LC_CTYPE] = "LC_CTYPE", -+ [VARIABLE_LC_NUMERIC] = "LC_NUMERIC", -+ [VARIABLE_LC_TIME] = "LC_TIME", -+ [VARIABLE_LC_COLLATE] = "LC_COLLATE", -+ [VARIABLE_LC_MONETARY] = "LC_MONETARY", -+ [VARIABLE_LC_MESSAGES] = "LC_MESSAGES", -+ [VARIABLE_LC_PAPER] = "LC_PAPER", -+ [VARIABLE_LC_NAME] = "LC_NAME", -+ [VARIABLE_LC_ADDRESS] = "LC_ADDRESS", -+ [VARIABLE_LC_TELEPHONE] = "LC_TELEPHONE", -+ [VARIABLE_LC_MEASUREMENT] = "LC_MEASUREMENT", - [VARIABLE_LC_IDENTIFICATION] = "LC_IDENTIFICATION" - }; - diff --git a/SOURCES/0217-sleep-enumerate-only-existing-and-non-device-batteri.patch b/SOURCES/0217-sleep-enumerate-only-existing-and-non-device-batteri.patch new file mode 100644 index 0000000..f8352ae --- /dev/null +++ b/SOURCES/0217-sleep-enumerate-only-existing-and-non-device-batteri.patch @@ -0,0 +1,50 @@ +From 49d626105a5739bf7fa725f578d02b8873c282c7 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 14 Nov 2022 02:54:50 +0900 +Subject: [PATCH] sleep: enumerate only existing and non-device batteries + +The enumerator is now mostly consistent with on_ac_power() in +udev-util.c. + +(cherry picked from commit fe8e0f8e7989fe5cead5ad0e225dc0888ff10140) + +Related: #2151612 +--- + src/shared/sleep-config.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 4c08e97c8a..2d55e7c860 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -143,16 +143,27 @@ static int battery_enumerator_new(sd_device_enumerator **ret) { + if (r < 0) + return r; + +- r = sd_device_enumerator_add_match_subsystem(e, "power_supply", /* match= */ true); ++ r = sd_device_enumerator_add_match_subsystem(e, "power_supply", /* match = */ true); + if (r < 0) + return r; + +- r = sd_device_enumerator_add_match_property(e, "POWER_SUPPLY_TYPE", "Battery"); ++ r = sd_device_enumerator_allow_uninitialized(e); + if (r < 0) + return r; + +- *ret = TAKE_PTR(e); ++ r = sd_device_enumerator_add_match_sysattr(e, "type", "Battery", /* match = */ true); ++ if (r < 0) ++ return r; ++ ++ r = sd_device_enumerator_add_match_sysattr(e, "present", "1", /* match = */ true); ++ if (r < 0) ++ return r; + ++ r = sd_device_enumerator_add_match_sysattr(e, "scope", "Device", /* match = */ false); ++ if (r < 0) ++ return r; ++ ++ *ret = TAKE_PTR(e); + return 0; + } + diff --git a/SOURCES/0218-core-inline-an-iterator-variable.patch b/SOURCES/0218-core-inline-an-iterator-variable.patch deleted file mode 100644 index ec4a4cd..0000000 --- a/SOURCES/0218-core-inline-an-iterator-variable.patch +++ /dev/null @@ -1,33 +0,0 @@ -From bc5efb385f238fc7b9cbf552c61269fd680e2c94 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 7 Apr 2022 11:22:08 +0200 -Subject: [PATCH] core: inline an iterator variable - -(cherry picked from commit 32adc3a7cab85ce543d6895d644a52c6965a274c) - -Related: #2087652 ---- - src/core/locale-setup.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c -index 59ddb9c487..716febbefa 100644 ---- a/src/core/locale-setup.c -+++ b/src/core/locale-setup.c -@@ -16,7 +16,6 @@ - int locale_setup(char ***environment) { - _cleanup_(locale_variables_freep) char *variables[_VARIABLE_LC_MAX] = {}; - _cleanup_strv_free_ char **add = NULL; -- LocaleVariable i; - int r; - - r = proc_cmdline_get_key_many(PROC_CMDLINE_STRIP_RD_PREFIX, -@@ -58,7 +57,7 @@ int locale_setup(char ***environment) { - log_warning_errno(r, "Failed to read /etc/locale.conf: %m"); - } - -- for (i = 0; i < _VARIABLE_LC_MAX; i++) { -+ for (LocaleVariable i = 0; i < _VARIABLE_LC_MAX; i++) { - char *s; - - if (!variables[i]) diff --git a/SOURCES/0218-core-when-isolating-to-a-unit-also-keep-units-runnin.patch b/SOURCES/0218-core-when-isolating-to-a-unit-also-keep-units-runnin.patch new file mode 100644 index 0000000..64a052e --- /dev/null +++ b/SOURCES/0218-core-when-isolating-to-a-unit-also-keep-units-runnin.patch @@ -0,0 +1,78 @@ +From 9be28013e62ae471151fdc1f181e21cbd1e72dbd Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 10 Feb 2023 13:38:08 +0100 +Subject: [PATCH] core: when isolating to a unit, also keep units running that + are triggered by units we keep running + +Inspired by: #26364 + +(this might even "fix" #26364, but without debug logs it's hard to make +such claims) + +Fixes: #23055 +(cherry picked from commit 32d6707dd1692d41e12f5469dfdcbc10f14d6619) + +Resolves: #1952378 +--- + src/core/transaction.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +diff --git a/src/core/transaction.c b/src/core/transaction.c +index bafbb80b47..8ec853d58d 100644 +--- a/src/core/transaction.c ++++ b/src/core/transaction.c +@@ -1092,6 +1092,20 @@ fail: + return r; + } + ++static bool shall_stop_on_isolate(Transaction *tr, Unit *u) { ++ assert(tr); ++ assert(u); ++ ++ if (u->ignore_on_isolate) ++ return false; ++ ++ /* Is there already something listed for this? */ ++ if (hashmap_get(tr->jobs, u)) ++ return false; ++ ++ return true; ++} ++ + int transaction_add_isolate_jobs(Transaction *tr, Manager *m) { + Unit *u; + char *k; +@@ -1101,20 +1115,27 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) { + assert(m); + + HASHMAP_FOREACH_KEY(u, k, m->units) { ++ Unit *o; + +- /* ignore aliases */ ++ /* Ignore aliases */ + if (u->id != k) + continue; + +- if (u->ignore_on_isolate) ++ /* No need to stop inactive units */ ++ if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job) + continue; + +- /* No need to stop inactive jobs */ +- if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job) ++ if (!shall_stop_on_isolate(tr, u)) + continue; + +- /* Is there already something listed for this? */ +- if (hashmap_get(tr->jobs, u)) ++ /* Keep units that are triggered by units we want to keep around. */ ++ bool keep = false; ++ UNIT_FOREACH_DEPENDENCY(o, u, UNIT_ATOM_TRIGGERED_BY) ++ if (!shall_stop_on_isolate(tr, o)) { ++ keep = true; ++ break; ++ } ++ if (keep) + continue; + + r = transaction_add_job_and_dependencies(tr, JOB_STOP, u, tr->anchor_job, true, false, false, false, NULL); diff --git a/SOURCES/0219-locale-setup-merge-locale-handling-in-PID1-and-local.patch b/SOURCES/0219-locale-setup-merge-locale-handling-in-PID1-and-local.patch deleted file mode 100644 index b303053..0000000 --- a/SOURCES/0219-locale-setup-merge-locale-handling-in-PID1-and-local.patch +++ /dev/null @@ -1,884 +0,0 @@ -From cdcbd56d4eacba3b3ee4d8b0c38d6509a307a2b7 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:07:00 +0900 -Subject: [PATCH] locale-setup: merge locale handling in PID1 and localed - -Related: #2087652 ---- - src/basic/locale-util.c | 11 ++ - src/basic/locale-util.h | 1 + - src/core/locale-setup.c | 95 -------------- - src/core/locale-setup.h | 4 - - src/core/meson.build | 2 - - src/locale/keymap-util.c | 102 +-------------- - src/locale/keymap-util.h | 7 +- - src/locale/localectl.c | 47 +++---- - src/locale/localed.c | 87 +++---------- - src/shared/locale-setup.c | 256 ++++++++++++++++++++++++++++++++++++++ - src/shared/locale-setup.h | 28 +++++ - src/shared/meson.build | 2 + - 12 files changed, 333 insertions(+), 309 deletions(-) - delete mode 100644 src/core/locale-setup.c - delete mode 100644 src/core/locale-setup.h - create mode 100644 src/shared/locale-setup.c - create mode 100644 src/shared/locale-setup.h - -diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c -index 8098369db5..21f0982bb5 100644 ---- a/src/basic/locale-util.c -+++ b/src/basic/locale-util.c -@@ -335,6 +335,17 @@ void locale_variables_free(char *l[_VARIABLE_LC_MAX]) { - l[i] = mfree(l[i]); - } - -+void locale_variables_simplify(char *l[_VARIABLE_LC_MAX]) { -+ assert(l); -+ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) { -+ if (p == VARIABLE_LANG) -+ continue; -+ if (isempty(l[p]) || streq_ptr(l[VARIABLE_LANG], l[p])) -+ l[p] = mfree(l[p]); -+ } -+} -+ - static const char * const locale_variable_table[_VARIABLE_LC_MAX] = { - [VARIABLE_LANG] = "LANG", - [VARIABLE_LANGUAGE] = "LANGUAGE", -diff --git a/src/basic/locale-util.h b/src/basic/locale-util.h -index bab927146b..8990cb6a75 100644 ---- a/src/basic/locale-util.h -+++ b/src/basic/locale-util.h -@@ -53,3 +53,4 @@ void locale_variables_free(char* l[_VARIABLE_LC_MAX]); - static inline void locale_variables_freep(char*(*l)[_VARIABLE_LC_MAX]) { - locale_variables_free(*l); - } -+void locale_variables_simplify(char *l[_VARIABLE_LC_MAX]); -diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c -deleted file mode 100644 -index 716febbefa..0000000000 ---- a/src/core/locale-setup.c -+++ /dev/null -@@ -1,95 +0,0 @@ --/* SPDX-License-Identifier: LGPL-2.1-or-later */ -- --#include --#include -- --#include "env-file.h" --#include "env-util.h" --#include "locale-setup.h" --#include "locale-util.h" --#include "proc-cmdline.h" --#include "string-util.h" --#include "strv.h" --#include "util.h" --#include "virt.h" -- --int locale_setup(char ***environment) { -- _cleanup_(locale_variables_freep) char *variables[_VARIABLE_LC_MAX] = {}; -- _cleanup_strv_free_ char **add = NULL; -- int r; -- -- r = proc_cmdline_get_key_many(PROC_CMDLINE_STRIP_RD_PREFIX, -- "locale.LANG", &variables[VARIABLE_LANG], -- "locale.LANGUAGE", &variables[VARIABLE_LANGUAGE], -- "locale.LC_CTYPE", &variables[VARIABLE_LC_CTYPE], -- "locale.LC_NUMERIC", &variables[VARIABLE_LC_NUMERIC], -- "locale.LC_TIME", &variables[VARIABLE_LC_TIME], -- "locale.LC_COLLATE", &variables[VARIABLE_LC_COLLATE], -- "locale.LC_MONETARY", &variables[VARIABLE_LC_MONETARY], -- "locale.LC_MESSAGES", &variables[VARIABLE_LC_MESSAGES], -- "locale.LC_PAPER", &variables[VARIABLE_LC_PAPER], -- "locale.LC_NAME", &variables[VARIABLE_LC_NAME], -- "locale.LC_ADDRESS", &variables[VARIABLE_LC_ADDRESS], -- "locale.LC_TELEPHONE", &variables[VARIABLE_LC_TELEPHONE], -- "locale.LC_MEASUREMENT", &variables[VARIABLE_LC_MEASUREMENT], -- "locale.LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION]); -- if (r < 0 && r != -ENOENT) -- log_warning_errno(r, "Failed to read /proc/cmdline: %m"); -- -- /* Hmm, nothing set on the kernel cmd line? Then let's try /etc/locale.conf */ -- if (r <= 0) { -- r = parse_env_file(NULL, "/etc/locale.conf", -- "LANG", &variables[VARIABLE_LANG], -- "LANGUAGE", &variables[VARIABLE_LANGUAGE], -- "LC_CTYPE", &variables[VARIABLE_LC_CTYPE], -- "LC_NUMERIC", &variables[VARIABLE_LC_NUMERIC], -- "LC_TIME", &variables[VARIABLE_LC_TIME], -- "LC_COLLATE", &variables[VARIABLE_LC_COLLATE], -- "LC_MONETARY", &variables[VARIABLE_LC_MONETARY], -- "LC_MESSAGES", &variables[VARIABLE_LC_MESSAGES], -- "LC_PAPER", &variables[VARIABLE_LC_PAPER], -- "LC_NAME", &variables[VARIABLE_LC_NAME], -- "LC_ADDRESS", &variables[VARIABLE_LC_ADDRESS], -- "LC_TELEPHONE", &variables[VARIABLE_LC_TELEPHONE], -- "LC_MEASUREMENT", &variables[VARIABLE_LC_MEASUREMENT], -- "LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION]); -- if (r < 0 && r != -ENOENT) -- log_warning_errno(r, "Failed to read /etc/locale.conf: %m"); -- } -- -- for (LocaleVariable i = 0; i < _VARIABLE_LC_MAX; i++) { -- char *s; -- -- if (!variables[i]) -- continue; -- -- s = strjoin(locale_variable_to_string(i), "=", variables[i]); -- if (!s) -- return -ENOMEM; -- -- if (strv_consume(&add, s) < 0) -- return -ENOMEM; -- } -- -- if (strv_isempty(add)) { -- /* If no locale is configured then default to compile-time default. */ -- -- add = strv_new("LANG=" SYSTEMD_DEFAULT_LOCALE); -- if (!add) -- return -ENOMEM; -- } -- -- if (strv_isempty(*environment)) -- strv_free_and_replace(*environment, add); -- else { -- char **merged; -- -- merged = strv_env_merge(*environment, add); -- if (!merged) -- return -ENOMEM; -- -- strv_free_and_replace(*environment, merged); -- } -- -- return 0; --} -diff --git a/src/core/locale-setup.h b/src/core/locale-setup.h -deleted file mode 100644 -index d554ad3060..0000000000 ---- a/src/core/locale-setup.h -+++ /dev/null -@@ -1,4 +0,0 @@ --/* SPDX-License-Identifier: LGPL-2.1-or-later */ --#pragma once -- --int locale_setup(char ***environment); -diff --git a/src/core/meson.build b/src/core/meson.build -index 97ac431763..7704478d43 100644 ---- a/src/core/meson.build -+++ b/src/core/meson.build -@@ -83,8 +83,6 @@ libcore_sources = ''' - load-dropin.h - load-fragment.c - load-fragment.h -- locale-setup.c -- locale-setup.h - manager-dump.c - manager-dump.h - manager-serialize.c -diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c -index 10d2ed7aec..a3af396ebe 100644 ---- a/src/locale/keymap-util.c -+++ b/src/locale/keymap-util.c -@@ -65,13 +65,8 @@ static void context_free_vconsole(Context *c) { - c->vc_keymap_toggle = mfree(c->vc_keymap_toggle); - } - --static void context_free_locale(Context *c) { -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -- c->locale[p] = mfree(c->locale[p]); --} -- - void context_clear(Context *c) { -- context_free_locale(c); -+ locale_context_clear(&c->locale_context); - context_free_x11(c); - context_free_vconsole(c); - -@@ -82,15 +77,8 @@ void context_clear(Context *c) { - bus_verify_polkit_async_registry_free(c->polkit_registry); - }; - --void locale_simplify(char *locale[_VARIABLE_LC_MAX]) { -- for (LocaleVariable p = VARIABLE_LANG+1; p < _VARIABLE_LC_MAX; p++) -- if (isempty(locale[p]) || streq_ptr(locale[VARIABLE_LANG], locale[p])) -- locale[p] = mfree(locale[p]); --} -- - int locale_read_data(Context *c, sd_bus_message *m) { -- struct stat st; -- int r; -+ assert(c); - - /* Do not try to re-read the file within single bus operation. */ - if (m) { -@@ -101,57 +89,7 @@ int locale_read_data(Context *c, sd_bus_message *m) { - c->locale_cache = sd_bus_message_ref(m); - } - -- r = stat("/etc/locale.conf", &st); -- if (r < 0 && errno != ENOENT) -- return -errno; -- -- if (r >= 0) { -- usec_t t; -- -- /* If mtime is not changed, then we do not need to re-read the file. */ -- t = timespec_load(&st.st_mtim); -- if (c->locale_mtime != USEC_INFINITY && t == c->locale_mtime) -- return 0; -- -- c->locale_mtime = t; -- context_free_locale(c); -- -- r = parse_env_file(NULL, "/etc/locale.conf", -- "LANG", &c->locale[VARIABLE_LANG], -- "LANGUAGE", &c->locale[VARIABLE_LANGUAGE], -- "LC_CTYPE", &c->locale[VARIABLE_LC_CTYPE], -- "LC_NUMERIC", &c->locale[VARIABLE_LC_NUMERIC], -- "LC_TIME", &c->locale[VARIABLE_LC_TIME], -- "LC_COLLATE", &c->locale[VARIABLE_LC_COLLATE], -- "LC_MONETARY", &c->locale[VARIABLE_LC_MONETARY], -- "LC_MESSAGES", &c->locale[VARIABLE_LC_MESSAGES], -- "LC_PAPER", &c->locale[VARIABLE_LC_PAPER], -- "LC_NAME", &c->locale[VARIABLE_LC_NAME], -- "LC_ADDRESS", &c->locale[VARIABLE_LC_ADDRESS], -- "LC_TELEPHONE", &c->locale[VARIABLE_LC_TELEPHONE], -- "LC_MEASUREMENT", &c->locale[VARIABLE_LC_MEASUREMENT], -- "LC_IDENTIFICATION", &c->locale[VARIABLE_LC_IDENTIFICATION]); -- if (r < 0) -- return r; -- } else { -- c->locale_mtime = USEC_INFINITY; -- context_free_locale(c); -- -- /* Fill in what we got passed from systemd. */ -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) { -- const char *name; -- -- name = locale_variable_to_string(p); -- assert(name); -- -- r = free_and_strdup(&c->locale[p], empty_to_null(getenv(name))); -- if (r < 0) -- return r; -- } -- } -- -- locale_simplify(c->locale); -- return 0; -+ return locale_context_load(&c->locale_context, LOCALE_LOAD_LOCALE_CONF | LOCALE_LOAD_ENVIRONMENT | LOCALE_LOAD_SIMPLIFY); - } - - int vconsole_read_data(Context *c, sd_bus_message *m) { -@@ -285,40 +223,6 @@ int x11_read_data(Context *c, sd_bus_message *m) { - return 0; - } - --int locale_write_data(Context *c, char ***settings) { -- _cleanup_strv_free_ char **l = NULL; -- struct stat st; -- int r; -- -- /* Set values will be returned as strv in *settings on success. */ -- -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -- if (!isempty(c->locale[p])) { -- r = strv_env_assign(&l, locale_variable_to_string(p), c->locale[p]); -- if (r < 0) -- return r; -- } -- -- if (strv_isempty(l)) { -- if (unlink("/etc/locale.conf") < 0) -- return errno == ENOENT ? 0 : -errno; -- -- c->locale_mtime = USEC_INFINITY; -- return 0; -- } -- -- r = write_env_file_label("/etc/locale.conf", l); -- if (r < 0) -- return r; -- -- *settings = TAKE_PTR(l); -- -- if (stat("/etc/locale.conf", &st) >= 0) -- c->locale_mtime = timespec_load(&st.st_mtim); -- -- return 0; --} -- - int vconsole_write_data(Context *c) { - _cleanup_strv_free_ char **l = NULL; - struct stat st; -diff --git a/src/locale/keymap-util.h b/src/locale/keymap-util.h -index c087dbcbbe..5470d1bb9b 100644 ---- a/src/locale/keymap-util.h -+++ b/src/locale/keymap-util.h -@@ -4,13 +4,12 @@ - #include "sd-bus.h" - - #include "hashmap.h" --#include "locale-util.h" -+#include "locale-setup.h" - #include "time-util.h" - - typedef struct Context { - sd_bus_message *locale_cache; -- usec_t locale_mtime; -- char *locale[_VARIABLE_LC_MAX]; -+ LocaleContext locale_context; - - sd_bus_message *x11_cache; - usec_t x11_mtime; -@@ -40,8 +39,6 @@ int vconsole_convert_to_x11(Context *c); - int vconsole_write_data(Context *c); - int x11_convert_to_vconsole(Context *c); - int x11_write_data(Context *c); --void locale_simplify(char *locale[_VARIABLE_LC_MAX]); --int locale_write_data(Context *c, char ***settings); - - bool locale_gen_check_available(void); - int locale_gen_enable_locale(const char *locale); -diff --git a/src/locale/localectl.c b/src/locale/localectl.c -index 661d54c27d..6bfb564f97 100644 ---- a/src/locale/localectl.c -+++ b/src/locale/localectl.c -@@ -12,7 +12,7 @@ - #include "fd-util.h" - #include "fileio.h" - #include "kbd-util.h" --#include "locale-util.h" -+#include "locale-setup.h" - #include "main-func.h" - #include "memory-util.h" - #include "pager.h" -@@ -52,44 +52,25 @@ static void status_info_clear(StatusInfo *info) { - } - - static void print_overridden_variables(void) { -- _cleanup_(locale_variables_freep) char *variables[_VARIABLE_LC_MAX] = {}; -- bool print_warning = true; -+ _cleanup_(locale_context_clear) LocaleContext c = { .mtime = USEC_INFINITY }; -+ _cleanup_strv_free_ char **env = NULL; - int r; - - if (arg_transport != BUS_TRANSPORT_LOCAL) - return; - -- r = proc_cmdline_get_key_many( -- PROC_CMDLINE_STRIP_RD_PREFIX, -- "locale.LANG", &variables[VARIABLE_LANG], -- "locale.LANGUAGE", &variables[VARIABLE_LANGUAGE], -- "locale.LC_CTYPE", &variables[VARIABLE_LC_CTYPE], -- "locale.LC_NUMERIC", &variables[VARIABLE_LC_NUMERIC], -- "locale.LC_TIME", &variables[VARIABLE_LC_TIME], -- "locale.LC_COLLATE", &variables[VARIABLE_LC_COLLATE], -- "locale.LC_MONETARY", &variables[VARIABLE_LC_MONETARY], -- "locale.LC_MESSAGES", &variables[VARIABLE_LC_MESSAGES], -- "locale.LC_PAPER", &variables[VARIABLE_LC_PAPER], -- "locale.LC_NAME", &variables[VARIABLE_LC_NAME], -- "locale.LC_ADDRESS", &variables[VARIABLE_LC_ADDRESS], -- "locale.LC_TELEPHONE", &variables[VARIABLE_LC_TELEPHONE], -- "locale.LC_MEASUREMENT", &variables[VARIABLE_LC_MEASUREMENT], -- "locale.LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION]); -- if (r < 0 && r != -ENOENT) { -- log_warning_errno(r, "Failed to read /proc/cmdline: %m"); -- return; -- } -- -- for (LocaleVariable j = 0; j < _VARIABLE_LC_MAX; j++) -- if (variables[j]) { -- if (print_warning) { -- log_warning("Warning: Settings on kernel command line override system locale settings in /etc/locale.conf.\n" -- " Command Line: %s=%s", locale_variable_to_string(j), variables[j]); -+ (void) locale_context_load(&c, LOCALE_LOAD_PROC_CMDLINE); - -- print_warning = false; -- } else -- log_warning(" %s=%s", locale_variable_to_string(j), variables[j]); -- } -+ r = locale_context_build_env(&c, &env, NULL); -+ if (r < 0) -+ return (void) log_warning_errno(r, "Failed to build locale settings from kernel command line, ignoring: %m"); -+ -+ STRV_FOREACH(p, env) -+ if (p == env) -+ log_warning("Warning: Settings on kernel command line override system locale settings in /etc/locale.conf.\n" -+ " Command Line: %s", *p); -+ else -+ log_warning(" %s", *p); - } - - static void print_status_info(StatusInfo *i) { -diff --git a/src/locale/localed.c b/src/locale/localed.c -index 89bf9c6fba..9718c5b95f 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -21,7 +21,6 @@ - #include "dlfcn-util.h" - #include "kbd-util.h" - #include "keymap-util.h" --#include "locale-util.h" - #include "macro.h" - #include "main-func.h" - #include "missing_capability.h" -@@ -33,44 +32,13 @@ - #include "strv.h" - #include "user-util.h" - --static int locale_update_system_manager(Context *c, sd_bus *bus) { -- _cleanup_free_ char **l_unset = NULL; -- _cleanup_strv_free_ char **l_set = NULL; -+static int locale_update_system_manager(sd_bus *bus, char **l_set, char **l_unset) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -- size_t c_set = 0, c_unset = 0; - int r; - - assert(bus); - -- l_unset = new0(char*, _VARIABLE_LC_MAX); -- if (!l_unset) -- return log_oom(); -- -- l_set = new0(char*, _VARIABLE_LC_MAX); -- if (!l_set) -- return log_oom(); -- -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) { -- const char *name; -- -- name = locale_variable_to_string(p); -- assert(name); -- -- if (isempty(c->locale[p])) -- l_unset[c_set++] = (char*) name; -- else { -- char *s; -- -- s = strjoin(name, "=", c->locale[p]); -- if (!s) -- return log_oom(); -- -- l_set[c_unset++] = s; -- } -- } -- -- assert(c_set + c_unset == _VARIABLE_LC_MAX); - r = sd_bus_message_new_method_call(bus, &m, - "org.freedesktop.systemd1", - "/org/freedesktop/systemd1", -@@ -188,21 +156,9 @@ static int property_get_locale( - if (!l) - return -ENOMEM; - -- for (LocaleVariable p = 0, q = 0; p < _VARIABLE_LC_MAX; p++) { -- char *t; -- const char *name; -- -- name = locale_variable_to_string(p); -- assert(name); -- -- if (isempty(c->locale[p])) -- continue; -- -- if (asprintf(&t, "%s=%s", name, c->locale[p]) < 0) -- return -ENOMEM; -- -- l[q++] = t; -- } -+ r = locale_context_build_env(&c->locale_context, &l, NULL); -+ if (r < 0) -+ return r; - - return sd_bus_message_append_strv(reply, l); - } -@@ -342,9 +298,8 @@ static int locale_gen_process_locale(char *new_locale[static _VARIABLE_LC_MAX], - - static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *error) { - _cleanup_(locale_variables_freep) char *new_locale[_VARIABLE_LC_MAX] = {}; -- _cleanup_strv_free_ char **settings = NULL, **l = NULL; -+ _cleanup_strv_free_ char **l = NULL, **l_set = NULL, **l_unset = NULL; - Context *c = userdata; -- bool modified = false; - int interactive, r; - bool use_localegen; - -@@ -402,22 +357,13 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er - } - - /* Merge with the current settings */ -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -- if (!isempty(c->locale[p]) && isempty(new_locale[p])) { -- new_locale[p] = strdup(c->locale[p]); -- if (!new_locale[p]) -- return -ENOMEM; -- } -- -- locale_simplify(new_locale); -+ r = locale_context_merge(&c->locale_context, new_locale); -+ if (r < 0) -+ return r; - -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -- if (!streq_ptr(c->locale[p], new_locale[p])) { -- modified = true; -- break; -- } -+ locale_variables_simplify(new_locale); - -- if (!modified) { -+ if (locale_context_equal(&c->locale_context, new_locale)) { - log_debug("Locale settings were not modified."); - return sd_bus_reply_method_return(m, NULL); - } -@@ -443,22 +389,21 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er - return r; - } - -- for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -- free_and_replace(c->locale[p], new_locale[p]); -+ locale_context_take(&c->locale_context, new_locale); - - /* Write locale configuration */ -- r = locale_write_data(c, &settings); -+ r = locale_context_save(&c->locale_context, &l_set, &l_unset); - if (r < 0) { - log_error_errno(r, "Failed to set locale: %m"); - return sd_bus_error_set_errnof(error, r, "Failed to set locale: %m"); - } - -- (void) locale_update_system_manager(c, sd_bus_message_get_bus(m)); -+ (void) locale_update_system_manager(sd_bus_message_get_bus(m), l_set, l_unset); - -- if (settings) { -+ if (!strv_isempty(l_set)) { - _cleanup_free_ char *line = NULL; - -- line = strv_join(settings, ", "); -+ line = strv_join(l_set, ", "); - log_info("Changed locale to %s.", strnull(line)); - } else - log_info("Changed locale to unset."); -@@ -827,7 +772,7 @@ static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) { - - static int run(int argc, char *argv[]) { - _cleanup_(context_clear) Context context = { -- .locale_mtime = USEC_INFINITY, -+ .locale_context.mtime = USEC_INFINITY, - .vc_mtime = USEC_INFINITY, - .x11_mtime = USEC_INFINITY, - }; -diff --git a/src/shared/locale-setup.c b/src/shared/locale-setup.c -new file mode 100644 -index 0000000000..b8c6647e7c ---- /dev/null -+++ b/src/shared/locale-setup.c -@@ -0,0 +1,256 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+#include -+#include -+ -+#include "env-file-label.h" -+#include "env-file.h" -+#include "env-util.h" -+#include "locale-setup.h" -+#include "proc-cmdline.h" -+#include "strv.h" -+ -+void locale_context_clear(LocaleContext *c) { -+ assert(c); -+ -+ c->mtime = USEC_INFINITY; -+ -+ for (LocaleVariable i = 0; i < _VARIABLE_LC_MAX; i++) -+ c->locale[i] = mfree(c->locale[i]); -+} -+ -+int locale_context_load(LocaleContext *c, LocaleLoadFlag flag) { -+ int r; -+ -+ assert(c); -+ -+ if (FLAGS_SET(flag, LOCALE_LOAD_PROC_CMDLINE)) { -+ locale_context_clear(c); -+ -+ r = proc_cmdline_get_key_many(PROC_CMDLINE_STRIP_RD_PREFIX, -+ "locale.LANG", &c->locale[VARIABLE_LANG], -+ "locale.LANGUAGE", &c->locale[VARIABLE_LANGUAGE], -+ "locale.LC_CTYPE", &c->locale[VARIABLE_LC_CTYPE], -+ "locale.LC_NUMERIC", &c->locale[VARIABLE_LC_NUMERIC], -+ "locale.LC_TIME", &c->locale[VARIABLE_LC_TIME], -+ "locale.LC_COLLATE", &c->locale[VARIABLE_LC_COLLATE], -+ "locale.LC_MONETARY", &c->locale[VARIABLE_LC_MONETARY], -+ "locale.LC_MESSAGES", &c->locale[VARIABLE_LC_MESSAGES], -+ "locale.LC_PAPER", &c->locale[VARIABLE_LC_PAPER], -+ "locale.LC_NAME", &c->locale[VARIABLE_LC_NAME], -+ "locale.LC_ADDRESS", &c->locale[VARIABLE_LC_ADDRESS], -+ "locale.LC_TELEPHONE", &c->locale[VARIABLE_LC_TELEPHONE], -+ "locale.LC_MEASUREMENT", &c->locale[VARIABLE_LC_MEASUREMENT], -+ "locale.LC_IDENTIFICATION", &c->locale[VARIABLE_LC_IDENTIFICATION]); -+ if (r < 0 && r != -ENOENT) -+ log_debug_errno(r, "Failed to read /proc/cmdline, ignoring: %m"); -+ if (r > 0) -+ goto finalize; -+ } -+ -+ if (FLAGS_SET(flag, LOCALE_LOAD_LOCALE_CONF)) { -+ struct stat st; -+ usec_t t; -+ -+ r = stat("/etc/locale.conf", &st); -+ if (r < 0 && errno != ENOENT) -+ return log_debug_errno(errno, "Failed to stat /etc/locale.conf: %m"); -+ -+ if (r >= 0) { -+ /* If mtime is not changed, then we do not need to re-read the file. */ -+ t = timespec_load(&st.st_mtim); -+ if (c->mtime != USEC_INFINITY && t == c->mtime) -+ return 0; -+ -+ locale_context_clear(c); -+ c->mtime = t; -+ -+ r = parse_env_file(NULL, "/etc/locale.conf", -+ "LANG", &c->locale[VARIABLE_LANG], -+ "LANGUAGE", &c->locale[VARIABLE_LANGUAGE], -+ "LC_CTYPE", &c->locale[VARIABLE_LC_CTYPE], -+ "LC_NUMERIC", &c->locale[VARIABLE_LC_NUMERIC], -+ "LC_TIME", &c->locale[VARIABLE_LC_TIME], -+ "LC_COLLATE", &c->locale[VARIABLE_LC_COLLATE], -+ "LC_MONETARY", &c->locale[VARIABLE_LC_MONETARY], -+ "LC_MESSAGES", &c->locale[VARIABLE_LC_MESSAGES], -+ "LC_PAPER", &c->locale[VARIABLE_LC_PAPER], -+ "LC_NAME", &c->locale[VARIABLE_LC_NAME], -+ "LC_ADDRESS", &c->locale[VARIABLE_LC_ADDRESS], -+ "LC_TELEPHONE", &c->locale[VARIABLE_LC_TELEPHONE], -+ "LC_MEASUREMENT", &c->locale[VARIABLE_LC_MEASUREMENT], -+ "LC_IDENTIFICATION", &c->locale[VARIABLE_LC_IDENTIFICATION]); -+ if (r < 0) -+ return log_debug_errno(r, "Failed to read /etc/locale.conf: %m"); -+ -+ goto finalize; -+ } -+ } -+ -+ if (FLAGS_SET(flag, LOCALE_LOAD_ENVIRONMENT)) { -+ locale_context_clear(c); -+ -+ /* Fill in what we got passed from systemd. */ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) { -+ const char *name = ASSERT_PTR(locale_variable_to_string(p)); -+ -+ r = free_and_strdup(&c->locale[p], empty_to_null(getenv(name))); -+ if (r < 0) -+ return log_oom_debug(); -+ } -+ -+ goto finalize; -+ } -+ -+ /* Nothing loaded. */ -+ locale_context_clear(c); -+ return 0; -+ -+finalize: -+ if (FLAGS_SET(flag, LOCALE_LOAD_SIMPLIFY)) -+ locale_variables_simplify(c->locale); -+ -+ return 0; -+} -+ -+int locale_context_build_env(const LocaleContext *c, char ***ret_set, char ***ret_unset) { -+ _cleanup_strv_free_ char **set = NULL, **unset = NULL; -+ int r; -+ -+ assert(c); -+ -+ if (!ret_set && !ret_unset) -+ return 0; -+ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) { -+ const char *name = ASSERT_PTR(locale_variable_to_string(p)); -+ -+ if (isempty(c->locale[p])) { -+ if (!ret_unset) -+ continue; -+ r = strv_extend(&unset, name); -+ } else { -+ if (!ret_set) -+ continue; -+ r = strv_env_assign(&set, name, c->locale[p]); -+ } -+ if (r < 0) -+ return r; -+ } -+ -+ if (ret_set) -+ *ret_set = TAKE_PTR(set); -+ if (ret_unset) -+ *ret_unset = TAKE_PTR(unset); -+ return 0; -+} -+ -+int locale_context_save(LocaleContext *c, char ***ret_set, char ***ret_unset) { -+ _cleanup_strv_free_ char **set = NULL, **unset = NULL; -+ struct stat st; -+ int r; -+ -+ assert(c); -+ -+ /* Set values will be returned as strv in *ret on success. */ -+ -+ r = locale_context_build_env(c, &set, ret_unset ? &unset : NULL); -+ if (r < 0) -+ return r; -+ -+ if (strv_isempty(set)) { -+ if (unlink("/etc/locale.conf") < 0) -+ return errno == ENOENT ? 0 : -errno; -+ -+ c->mtime = USEC_INFINITY; -+ if (ret_set) -+ *ret_set = NULL; -+ if (ret_unset) -+ *ret_unset = NULL; -+ return 0; -+ } -+ -+ r = write_env_file_label("/etc/locale.conf", set); -+ if (r < 0) -+ return r; -+ -+ if (stat("/etc/locale.conf", &st) >= 0) -+ c->mtime = timespec_load(&st.st_mtim); -+ -+ if (ret_set) -+ *ret_set = TAKE_PTR(set); -+ if (ret_unset) -+ *ret_unset = TAKE_PTR(unset); -+ return 0; -+} -+ -+int locale_context_merge(const LocaleContext *c, char *l[_VARIABLE_LC_MAX]) { -+ assert(c); -+ assert(l); -+ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -+ if (!isempty(c->locale[p]) && isempty(l[p])) { -+ l[p] = strdup(c->locale[p]); -+ if (!l[p]) -+ return -ENOMEM; -+ } -+ -+ return 0; -+} -+ -+void locale_context_take(LocaleContext *c, char *l[_VARIABLE_LC_MAX]) { -+ assert(c); -+ assert(l); -+ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -+ free_and_replace(c->locale[p], l[p]); -+} -+ -+bool locale_context_equal(const LocaleContext *c, char *l[_VARIABLE_LC_MAX]) { -+ assert(c); -+ assert(l); -+ -+ for (LocaleVariable p = 0; p < _VARIABLE_LC_MAX; p++) -+ if (!streq_ptr(c->locale[p], l[p])) -+ return false; -+ -+ return true; -+} -+ -+int locale_setup(char ***environment) { -+ _cleanup_(locale_context_clear) LocaleContext c = { .mtime = USEC_INFINITY }; -+ _cleanup_strv_free_ char **add = NULL; -+ int r; -+ -+ assert(environment); -+ -+ r = locale_context_load(&c, LOCALE_LOAD_PROC_CMDLINE | LOCALE_LOAD_LOCALE_CONF); -+ if (r < 0) -+ return r; -+ -+ r = locale_context_build_env(&c, &add, NULL); -+ if (r < 0) -+ return r; -+ -+ if (strv_isempty(add)) { -+ /* If no locale is configured then default to compile-time default. */ -+ -+ add = strv_new("LANG=" SYSTEMD_DEFAULT_LOCALE); -+ if (!add) -+ return -ENOMEM; -+ } -+ -+ if (strv_isempty(*environment)) -+ strv_free_and_replace(*environment, add); -+ else { -+ char **merged; -+ -+ merged = strv_env_merge(*environment, add); -+ if (!merged) -+ return -ENOMEM; -+ -+ strv_free_and_replace(*environment, merged); -+ } -+ -+ return 0; -+} -diff --git a/src/shared/locale-setup.h b/src/shared/locale-setup.h -new file mode 100644 -index 0000000000..ec3fc8c364 ---- /dev/null -+++ b/src/shared/locale-setup.h -@@ -0,0 +1,28 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+#pragma once -+ -+#include "locale-util.h" -+#include "time-util.h" -+ -+typedef struct LocaleContext { -+ usec_t mtime; -+ char *locale[_VARIABLE_LC_MAX]; -+} LocaleContext; -+ -+typedef enum LocaleLoadFlag { -+ LOCALE_LOAD_PROC_CMDLINE = 1 << 0, -+ LOCALE_LOAD_LOCALE_CONF = 1 << 1, -+ LOCALE_LOAD_ENVIRONMENT = 1 << 2, -+ LOCALE_LOAD_SIMPLIFY = 1 << 3, -+} LocaleLoadFlag; -+ -+void locale_context_clear(LocaleContext *c); -+int locale_context_load(LocaleContext *c, LocaleLoadFlag flag); -+int locale_context_build_env(const LocaleContext *c, char ***ret_set, char ***ret_unset); -+int locale_context_save(LocaleContext *c, char ***ret_set, char ***ret_unset); -+ -+int locale_context_merge(const LocaleContext *c, char *l[_VARIABLE_LC_MAX]); -+void locale_context_take(LocaleContext *c, char *l[_VARIABLE_LC_MAX]); -+bool locale_context_equal(const LocaleContext *c, char *l[_VARIABLE_LC_MAX]); -+ -+int locale_setup(char ***environment); -diff --git a/src/shared/meson.build b/src/shared/meson.build -index 006310a917..62365682cf 100644 ---- a/src/shared/meson.build -+++ b/src/shared/meson.build -@@ -195,6 +195,8 @@ shared_sources = files(''' - linux/ethtool.h - local-addresses.c - local-addresses.h -+ locale-setup.c -+ locale-setup.h - lockfile-util.c - lockfile-util.h - log-link.h diff --git a/SOURCES/0219-udev-net_id-introduce-naming-scheme-for-RHEL-9.2.patch b/SOURCES/0219-udev-net_id-introduce-naming-scheme-for-RHEL-9.2.patch new file mode 100644 index 0000000..ee77a68 --- /dev/null +++ b/SOURCES/0219-udev-net_id-introduce-naming-scheme-for-RHEL-9.2.patch @@ -0,0 +1,55 @@ +From edbd954a140b097e3fc4c9246bda88a43692122b Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Thu, 16 Feb 2023 16:08:57 +0100 +Subject: [PATCH] udev/net_id: introduce naming scheme for RHEL-9.2 + +RHEL-only + +Resolves: #2170500 +--- + man/systemd.net-naming-scheme.xml | 6 ++++++ + src/shared/netif-naming-scheme.c | 1 + + src/shared/netif-naming-scheme.h | 1 + + 3 files changed, 8 insertions(+) + +diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml +index ca8ba7010e..0886369c9b 100644 +--- a/man/systemd.net-naming-scheme.xml ++++ b/man/systemd.net-naming-scheme.xml +@@ -466,6 +466,12 @@ + Same as naming scheme rhel-9.0. + + ++ ++ rhel-9.2 ++ ++ Same as naming scheme rhel-9.0. ++ ++ + + + Note that latest may be used to denote the latest scheme known (to this +diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c +index a20b990f2e..d846c794a8 100644 +--- a/src/shared/netif-naming-scheme.c ++++ b/src/shared/netif-naming-scheme.c +@@ -27,6 +27,7 @@ static const NamingScheme naming_schemes[] = { + { "v252", NAMING_V252 }, + { "rhel-9.0", NAMING_RHEL_9_0 }, + { "rhel-9.1", NAMING_RHEL_9_1 }, ++ { "rhel-9.2", NAMING_RHEL_9_2 }, + /* … add more schemes here, as the logic to name devices is updated … */ + + EXTRA_NET_NAMING_MAP +diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h +index d70c19ade3..3e35c5e2fa 100644 +--- a/src/shared/netif-naming-scheme.h ++++ b/src/shared/netif-naming-scheme.h +@@ -53,6 +53,7 @@ typedef enum NamingSchemeFlags { + NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES, + NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, + NAMING_RHEL_9_1 = NAMING_RHEL_9_0, ++ NAMING_RHEL_9_2 = NAMING_RHEL_9_0, + + EXTRA_NET_NAMING_SCHEMES + diff --git a/SOURCES/0220-journalctl-actually-run-the-static-destructors.patch b/SOURCES/0220-journalctl-actually-run-the-static-destructors.patch new file mode 100644 index 0000000..f41e481 --- /dev/null +++ b/SOURCES/0220-journalctl-actually-run-the-static-destructors.patch @@ -0,0 +1,68 @@ +From f0f59e43e9d1c5a6f9f7e03f07850ee40bac0ab3 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Wed, 15 Feb 2023 18:08:35 +0100 +Subject: [PATCH] journalctl: actually run the static destructors + +In journalctl we don't run the static destructors defined via +the STATIC_DESTRUCTOR_REGISTER() macro, since it requires a corresponding +static_destruct() call. In most cases this is handled by +the DEFINE_(TEST_)?MAIN*() macros, but journalctl defines its own main +function, so let's handle that as well. + +$ valgrind --suppressions=valgrind.supp --show-leak-kinds=all --leak-check=full build/journalctl --no-pager -u system.slice -n 10 >/dev/null +==2778093== Memcheck, a memory error detector +==2778093== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. +==2778093== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info +==2778093== Command: build/journalctl --no-pager -u system.slice -n 10 +==2778093== +==2778093== +==2778093== HEAP SUMMARY: +==2778093== in use at exit: 8,221 bytes in 4 blocks +==2778093== total heap usage: 458 allocs, 454 frees, 255,182 bytes allocated +==2778093== +==2778093== 13 bytes in 1 blocks are still reachable in loss record 1 of 4 +==2778093== at 0x484586F: malloc (vg_replace_malloc.c:381) +==2778093== by 0x4DA256D: strdup (strdup.c:42) +==2778093== by 0x4ADB747: strv_extend_with_size (strv.c:544) +==2778093== by 0x405386: strv_extend (strv.h:45) +==2778093== by 0x40816F: parse_argv (journalctl.c:933) +==2778093== by 0x40EAB5: main (journalctl.c:2111) +==2778093== +==2778093== 16 bytes in 1 blocks are still reachable in loss record 2 of 4 +==2778093== at 0x484578A: malloc (vg_replace_malloc.c:380) +==2778093== by 0x484A70B: realloc (vg_replace_malloc.c:1437) +==2778093== by 0x4ADB2A3: strv_push_with_size (strv.c:423) +==2778093== by 0x4ADB620: strv_consume_with_size (strv.c:496) +==2778093== by 0x4ADB770: strv_extend_with_size (strv.c:548) +==2778093== by 0x405386: strv_extend (strv.h:45) +==2778093== by 0x40816F: parse_argv (journalctl.c:933) +==2778093== by 0x40EAB5: main (journalctl.c:2111) +==2778093== +==2778093== LEAK SUMMARY: +==2778093== definitely lost: 0 bytes in 0 blocks +==2778093== indirectly lost: 0 bytes in 0 blocks +==2778093== possibly lost: 0 bytes in 0 blocks +==2778093== still reachable: 29 bytes in 2 blocks +==2778093== suppressed: 8,192 bytes in 2 blocks +==2778093== +==2778093== For lists of detected and suppressed errors, rerun with: -s +==2778093== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) + +(cherry picked from commit 9259d71d505ba1771ba5e3caa522da50bdc58bed) + +Related: #2122500 +--- + src/journal/journalctl.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c +index 11de07fcfa..e9faa24cae 100644 +--- a/src/journal/journalctl.c ++++ b/src/journal/journalctl.c +@@ -2746,5 +2746,6 @@ finish: + * in scripts and such */ + r = -ENOENT; + ++ static_destruct(); + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + } diff --git a/SOURCES/0220-locale-rename-keymap-util.-ch-localed-util.-ch.patch b/SOURCES/0220-locale-rename-keymap-util.-ch-localed-util.-ch.patch deleted file mode 100644 index 10a8057..0000000 --- a/SOURCES/0220-locale-rename-keymap-util.-ch-localed-util.-ch.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 8cfe7b6243660a5f1b43fe7217a678317284c430 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:08:00 +0900 -Subject: [PATCH] locale: rename keymap-util.[ch] -> localed-util.[ch] - -As the file contains not only keymap related functions. - -(cherry picked from commit 3e5203b3eb2b06ef346eef13d64430542bbfb5c4) - -Related: #2087652 ---- - src/locale/{keymap-util.c => localed-util.c} | 3 +-- - src/locale/{keymap-util.h => localed-util.h} | 0 - src/locale/localed.c | 2 +- - src/locale/meson.build | 10 +++++----- - src/locale/{test-keymap-util.c => test-localed-util.c} | 2 +- - 5 files changed, 8 insertions(+), 9 deletions(-) - rename src/locale/{keymap-util.c => localed-util.c} (99%) - rename src/locale/{keymap-util.h => localed-util.h} (100%) - rename src/locale/{test-keymap-util.c => test-localed-util.c} (99%) - -diff --git a/src/locale/keymap-util.c b/src/locale/localed-util.c -similarity index 99% -rename from src/locale/keymap-util.c -rename to src/locale/localed-util.c -index a3af396ebe..f4f8e5d168 100644 ---- a/src/locale/keymap-util.c -+++ b/src/locale/localed-util.c -@@ -15,8 +15,7 @@ - #include "fileio.h" - #include "fs-util.h" - #include "kbd-util.h" --#include "keymap-util.h" --#include "locale-util.h" -+#include "localed-util.h" - #include "macro.h" - #include "mkdir-label.h" - #include "nulstr-util.h" -diff --git a/src/locale/keymap-util.h b/src/locale/localed-util.h -similarity index 100% -rename from src/locale/keymap-util.h -rename to src/locale/localed-util.h -diff --git a/src/locale/localed.c b/src/locale/localed.c -index 9718c5b95f..2c324efb14 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -20,7 +20,7 @@ - #include "def.h" - #include "dlfcn-util.h" - #include "kbd-util.h" --#include "keymap-util.h" -+#include "localed-util.h" - #include "macro.h" - #include "main-func.h" - #include "missing_capability.h" -diff --git a/src/locale/meson.build b/src/locale/meson.build -index 0ccf71583d..2d8c48cf3a 100644 ---- a/src/locale/meson.build -+++ b/src/locale/meson.build -@@ -1,9 +1,9 @@ - # SPDX-License-Identifier: LGPL-2.1-or-later - - systemd_localed_sources = files(''' -+ localed-util.c -+ localed-util.h - localed.c -- keymap-util.c -- keymap-util.h - '''.split()) - - localectl_sources = files('localectl.c') -@@ -30,7 +30,7 @@ if conf.get('ENABLE_LOCALED') == 1 - endif - - tests += [ -- [files('test-keymap-util.c', -- 'keymap-util.c', -- 'keymap-util.h')], -+ [files('test-localed-util.c', -+ 'localed-util.c', -+ 'localed-util.h')], - ] -diff --git a/src/locale/test-keymap-util.c b/src/locale/test-localed-util.c -similarity index 99% -rename from src/locale/test-keymap-util.c -rename to src/locale/test-localed-util.c -index f726e8e524..f658d271dc 100644 ---- a/src/locale/test-keymap-util.c -+++ b/src/locale/test-localed-util.c -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" --#include "keymap-util.h" -+#include "localed-util.h" - #include "log.h" - #include "string-util.h" - #include "tests.h" diff --git a/SOURCES/0221-efi-drop-executable-stack-bit-from-.elf-file.patch b/SOURCES/0221-efi-drop-executable-stack-bit-from-.elf-file.patch new file mode 100644 index 0000000..fa2fa7c --- /dev/null +++ b/SOURCES/0221-efi-drop-executable-stack-bit-from-.elf-file.patch @@ -0,0 +1,51 @@ +From cc318cd6ccfe9833ab9c1cde4041ac5dd9f97a3b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 21 Feb 2023 09:16:29 +0100 +Subject: [PATCH] efi: drop executable-stack bit from .elf file +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +An rpminspect test in Fedora/RHEL is flagging our stub files as having an +executable stack. The check is correct: + +$ readelf --wide --program-headers build/src/boot/efi/linuxx64.elf.stub | rg -i stack + GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RWE 0x10 + +It seems to be just an omission in the linker script… None of the objects that +are linked into the stub are marked as requiring an executable stack: + +$ readelf --wide --sections build/src/boot/efi/*.c.o \ + /usr/lib/gnuefi/x64/libgnuefi.a \ + /usr/lib/gnuefi/x64/libefi.a \ + /usr/lib/gcc/x86_64-redhat-linux/12/libgcc.a \ + | rg '.note.GNU-stack.*X' +(nothing) + +On aarch64 we end up with a nonexecutable stack, but on ia32 and x64 we get one, +so this might be just a matter of defaults in the linker. It doesn't matter +greatly, but let's mark the stack as non-executable to avoid the warning. + +Note: '-Wl,-z' is not needed, things work with just '-z'. + +RHEL-only +for now, as the patch is not yet in upstream +https://github.com/systemd/systemd/pull/26511 + +Related: #2140646 +--- + src/boot/efi/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build +index 0de43993a4..00f3361d66 100644 +--- a/src/boot/efi/meson.build ++++ b/src/boot/efi/meson.build +@@ -266,6 +266,7 @@ efi_ldflags = [ + '-Wl,--warn-common', + '-Wl,-Bsymbolic', + '-z', 'nocombreloc', ++ '-z', 'noexecstack', + efi_crt0, + ] + diff --git a/SOURCES/0221-test-add-one-more-path-to-search-keymaps.patch b/SOURCES/0221-test-add-one-more-path-to-search-keymaps.patch deleted file mode 100644 index a0d36d0..0000000 --- a/SOURCES/0221-test-add-one-more-path-to-search-keymaps.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 380a3b2b2d38f08ac84d3ac521b205960059d99c Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:10:00 +0900 -Subject: [PATCH] test: add one more path to search keymaps - -Now it also supports split-usr. - -(cherry picked from commit 569c6fd1b7c7946fa853d558fcbb23e4a45f957f) - -Related: #2087652 ---- - test/test-functions | 59 ++++++++++++++++++++++++++++++--------------- - 1 file changed, 40 insertions(+), 19 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index d71e2a3328..01fc90fbf5 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1844,26 +1844,47 @@ install_pam() { - - # shellcheck disable=SC2120 - install_keymaps() { -- dinfo "Install keymaps" -- # The first three paths may be deprecated. -- # It seems now the last two paths are used by many distributions. -- for i in \ -- /usr/lib/kbd/keymaps/include/* \ -- /usr/lib/kbd/keymaps/i386/include/* \ -- /usr/lib/kbd/keymaps/i386/qwerty/us.* \ -- /usr/lib/kbd/keymaps/legacy/include/* \ -- /usr/lib/kbd/keymaps/legacy/i386/qwerty/us.*; do -- [[ -f "$i" ]] || continue -- inst "$i" -- done -+ local i p -+ local -a prefix=( -+ "/usr" -+ ) - -- # When it takes any argument, then install more keymaps. -- if [[ $# -gt 1 ]]; then -- for i in \ -- /usr/lib/kbd/keymaps/i386/*/* \ -- /usr/lib/kbd/keymaps/legacy/i386/*/*; do -- [[ -f "$i" ]] || continue -- inst "$i" -+ dinfo "Install console keymaps" -+ -+ if command -v meson >/dev/null \ -+ && [[ "$(meson configure "${BUILD_DIR:?}" | grep 'split-usr' | awk '{ print $2 }')" == "true" ]] \ -+ || [[ ! -L /lib ]]; then -+ prefix+=( -+ "" -+ ) -+ fi -+ -+ if (( $# == 0 )); then -+ for p in "${prefix[@]}"; do -+ # The first three paths may be deprecated. -+ # It seems now the last three paths are used by many distributions. -+ for i in \ -+ "$p"/lib/kbd/keymaps/include/* \ -+ "$p"/lib/kbd/keymaps/i386/include/* \ -+ "$p"/lib/kbd/keymaps/i386/qwerty/us.* \ -+ "$p"/lib/kbd/keymaps/legacy/include/* \ -+ "$p"/lib/kbd/keymaps/legacy/i386/qwerty/us.* \ -+ "$p"/lib/kbd/keymaps/xkb/us*; do -+ [[ -f "$i" ]] || continue -+ inst "$i" -+ done -+ done -+ else -+ # When it takes any argument, then install more keymaps. -+ for p in "${prefix[@]}"; do -+ for i in \ -+ "$p"/lib/kbd/keymaps/include/* \ -+ "$p"/lib/kbd/keymaps/i386/*/* \ -+ "$p"/lib/kbd/keymaps/legacy/i386/*/* \ -+ "$p"/lib/kbd/keymaps/xkb/*; do -+ [[ -f "$i" ]] || continue -+ inst "$i" -+ done - done - fi - } diff --git a/SOURCES/0222-install-fail-early-if-specifier-expansion-failed.patch b/SOURCES/0222-install-fail-early-if-specifier-expansion-failed.patch new file mode 100644 index 0000000..4ce214f --- /dev/null +++ b/SOURCES/0222-install-fail-early-if-specifier-expansion-failed.patch @@ -0,0 +1,40 @@ +From b9fb1769f8b6de65abf1f57a85b0d0a22f84c754 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 21 Feb 2023 14:10:33 +0100 +Subject: [PATCH] install: fail early if specifier expansion failed + +Before: + +systemd[1]: Assertion 'path' failed at src/shared/install.c:288, function install_changes_add(). Aborting. +systemd[1]: Caught from our own process. +systemd[1]: Caught , dumped core as pid 2525. +systemd[1]: Freezing execution + +After: + +Failed to enable unit: Invalid specifier in user-%J.service + +Fixes #26467. + +Follow-up for: f5a0162 + +(cherry picked from commit f8979e869812988835f6951fb73a68e30a4c608c) + +Related: #2138081 +--- + src/shared/install.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/shared/install.c b/src/shared/install.c +index a760726628..8d4aa5ab2c 100644 +--- a/src/shared/install.c ++++ b/src/shared/install.c +@@ -1982,6 +1982,8 @@ static int install_info_symlink_wants( + install_changes_add(changes, n_changes, q, *s, NULL); + if (r >= 0) + r = q; ++ ++ continue; + } + + if (!unit_name_is_valid(dst, valid_dst_type)) { diff --git a/SOURCES/0222-test-introduce-inst_recursive-helper-function.patch b/SOURCES/0222-test-introduce-inst_recursive-helper-function.patch deleted file mode 100644 index 54cd4fb..0000000 --- a/SOURCES/0222-test-introduce-inst_recursive-helper-function.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a8e7b3e863bc34f4b6aa0a61be1706dcc65392bc Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:11:00 +0900 -Subject: [PATCH] test: introduce inst_recursive() helper function - -(cherry picked from commit da0465dc95388afc15598357452afef85035c639) - -Related: #2087652 ---- - test/test-functions | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/test/test-functions b/test/test-functions -index 01fc90fbf5..4a6436a74b 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2555,6 +2555,20 @@ inst_any() { - return 1 - } - -+inst_recursive() { -+ local p item -+ -+ for p in "$@"; do -+ while read -r item; do -+ if [[ -d "$item" ]]; then -+ inst_dir "$item" -+ elif [[ -f "$item" ]]; then -+ inst_simple "$item" -+ fi -+ done < <(find "$p" 2>/dev/null) -+ done -+} -+ - # image_install [-o ] [ ... ] - # Install to the test image - # -o optionally install the and don't fail, if it is not there diff --git a/SOURCES/0223-hmac-sha256-move-size-define-to-sha256.h.patch b/SOURCES/0223-hmac-sha256-move-size-define-to-sha256.h.patch deleted file mode 100644 index 5bfe290..0000000 --- a/SOURCES/0223-hmac-sha256-move-size-define-to-sha256.h.patch +++ /dev/null @@ -1,39 +0,0 @@ -From f7b73ede98fe971ba28def1af4f3e4ab1fc20c6c Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Sat, 12 Mar 2022 00:51:21 +0100 -Subject: [PATCH] hmac/sha256: move size define to sha256.h - -(cherry picked from commit e560cf4f71bf237019d982603af3d6be86394788) - -Related: #2087652 ---- - src/basic/hmac.h | 2 +- - src/fundamental/sha256.h | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/basic/hmac.h b/src/basic/hmac.h -index a5682c439f..e58c1838a3 100644 ---- a/src/basic/hmac.h -+++ b/src/basic/hmac.h -@@ -4,7 +4,7 @@ - #include - #include - --#define SHA256_DIGEST_SIZE 32 -+#include "sha256.h" - - /* Unoptimized implementation based on FIPS 198. 'res' has to be allocated by - * the caller. Prefer external OpenSSL functions, and use this only when -diff --git a/src/fundamental/sha256.h b/src/fundamental/sha256.h -index abc4167628..e53197f2ef 100644 ---- a/src/fundamental/sha256.h -+++ b/src/fundamental/sha256.h -@@ -8,6 +8,8 @@ - - #include "types-fundamental.h" - -+#define SHA256_DIGEST_SIZE 32 -+ - struct sha256_ctx { - uint32_t H[8]; - diff --git a/SOURCES/0223-test-add-coverage-for-26467.patch b/SOURCES/0223-test-add-coverage-for-26467.patch new file mode 100644 index 0000000..fad76ea --- /dev/null +++ b/SOURCES/0223-test-add-coverage-for-26467.patch @@ -0,0 +1,34 @@ +From 4dbbdc956cb49804f9b451081eb7c442a689b1f1 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 21 Feb 2023 19:15:13 +0100 +Subject: [PATCH] test: add coverage for #26467 + +(cherry picked from commit 4190124b3ca005830d893303bbc563baaf9984ed) + +Related: #2138081 +--- + test/units/testsuite-26.sh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/test/units/testsuite-26.sh b/test/units/testsuite-26.sh +index 916a6704d7..debee91dde 100755 +--- a/test/units/testsuite-26.sh ++++ b/test/units/testsuite-26.sh +@@ -400,5 +400,17 @@ EOF + systemctl stop issue-24990 + fi + ++# %J in WantedBy= causes ABRT (#26467) ++cat >/run/systemd/system/test-WantedBy.service < +Date: Wed, 22 Feb 2023 16:43:42 +0100 +Subject: [PATCH] test: add coverage for #24177 + +Original issue: https://bugzilla.redhat.com/show_bug.cgi?id=1985288 + +(cherry picked from commit 6299b6e5e6df32516fcaba9a93d966bad9043748) + +Related: #1985288 +--- + test/units/testsuite-64.sh | 38 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 37 insertions(+), 1 deletion(-) + +diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh +index 4017f61f59..201a673d06 100755 +--- a/test/units/testsuite-64.sh ++++ b/test/units/testsuite-64.sh +@@ -417,7 +417,7 @@ testcase_lvm_basic() { + lvm vgs + lvm vgchange -ay "$vgroup" + lvm lvcreate -y -L 4M "$vgroup" -n mypart1 +- lvm lvcreate -y -L 8M "$vgroup" -n mypart2 ++ lvm lvcreate -y -L 32M "$vgroup" -n mypart2 + lvm lvs + udevadm wait --settle --timeout="$timeout" "/dev/$vgroup/mypart1" "/dev/$vgroup/mypart2" + mkfs.ext4 -L mylvpart1 "/dev/$vgroup/mypart1" +@@ -461,6 +461,42 @@ testcase_lvm_basic() { + helper_check_device_symlinks "/dev/disk" "/dev/$vgroup" + helper_check_device_units + ++ # Do not "unready" suspended encrypted devices w/o superblock info ++ # See: ++ # - https://github.com/systemd/systemd/pull/24177 ++ # - https://bugzilla.redhat.com/show_bug.cgi?id=1985288 ++ dd if=/dev/urandom of=/etc/lvm_keyfile bs=64 count=1 iflag=fullblock ++ chmod 0600 /etc/lvm_keyfile ++ # Intentionally use weaker cipher-related settings, since we don't care ++ # about security here as it's a throwaway LUKS partition ++ cryptsetup luksFormat -q --use-urandom --pbkdf pbkdf2 --pbkdf-force-iterations 1000 \ ++ "/dev/$vgroup/mypart2" /etc/lvm_keyfile ++ # Mount the LUKS partition & create a filesystem on it ++ mkdir -p /tmp/lvmluksmnt ++ cryptsetup open --key-file=/etc/lvm_keyfile "/dev/$vgroup/mypart2" "lvmluksmap" ++ udevadm wait --settle --timeout="$timeout" "/dev/mapper/lvmluksmap" ++ mkfs.ext4 -L lvmluksfs "/dev/mapper/lvmluksmap" ++ udevadm wait --settle --timeout="$timeout" "/dev/disk/by-label/lvmluksfs" ++ # Make systemd "interested" in the mount by adding it to /etc/fstab ++ echo "/dev/disk/by-label/lvmluksfs /tmp/lvmluksmnt ext4 defaults 0 2" >>/etc/fstab ++ systemctl daemon-reload ++ mount "/tmp/lvmluksmnt" ++ mountpoint "/tmp/lvmluksmnt" ++ # Temporarily suspend the LUKS device and trigger udev - basically what `cryptsetup resize` ++ # does but in a more deterministic way suitable for a test/reproducer ++ for _ in {0..5}; do ++ dmsetup suspend "/dev/mapper/lvmluksmap" ++ udevadm trigger -v --settle "/dev/mapper/lvmluksmap" ++ dmsetup resume "/dev/mapper/lvmluksmap" ++ # The mount should survive this sequence of events ++ mountpoint "/tmp/lvmluksmnt" ++ done ++ # Cleanup ++ umount "/tmp/lvmluksmnt" ++ cryptsetup close "/dev/mapper/lvmluksmap" ++ sed -i "/lvmluksfs/d" "/etc/fstab" ++ systemctl daemon-reload ++ + # Disable the VG and check symlinks... + lvm vgchange -an "$vgroup" + udevadm wait --settle --timeout="$timeout" --removed "/dev/$vgroup" "/dev/disk/by-label/mylvpart1" diff --git a/SOURCES/0224-tpm2-support-policies-with-PIN.patch b/SOURCES/0224-tpm2-support-policies-with-PIN.patch deleted file mode 100644 index 9f56c08..0000000 --- a/SOURCES/0224-tpm2-support-policies-with-PIN.patch +++ /dev/null @@ -1,322 +0,0 @@ -From 98997b288819f4dac7b2ca19c199d71e733bfa92 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Wed, 16 Feb 2022 22:13:42 +0100 -Subject: [PATCH] tpm2: support policies with PIN - -Modify TPM2 authentication policy to optionally include an authValue, i.e. -a password/PIN. We use the "PIN" terminology since it's used by other -systems such as Windows, even though the PIN is not necessarily numeric. - -The pin is hashed via SHA256 to allow for arbitrary length PINs. - -v2: fix tpm2_seal in sd-repart -v3: applied review feedback -(cherry picked from commit 2f5a892aa0d70aa4f1f10c8dba495ad52bc02bc3) - -Related: #2087652 ---- - src/cryptenroll/cryptenroll-tpm2.c | 4 +- - src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c | 2 +- - src/cryptsetup/cryptsetup-tpm2.c | 2 +- - src/partition/repart.c | 2 +- - src/shared/creds-util.c | 2 + - src/shared/tpm2-util.c | 76 ++++++++++++++++++- - src/shared/tpm2-util.h | 8 +- - 7 files changed, 85 insertions(+), 11 deletions(-) - -diff --git a/src/cryptenroll/cryptenroll-tpm2.c b/src/cryptenroll/cryptenroll-tpm2.c -index 801014af11..f5f6b87d0f 100644 ---- a/src/cryptenroll/cryptenroll-tpm2.c -+++ b/src/cryptenroll/cryptenroll-tpm2.c -@@ -80,7 +80,7 @@ int enroll_tpm2(struct crypt_device *cd, - - assert_se(node = crypt_get_device_name(cd)); - -- r = tpm2_seal(device, pcr_mask, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); -+ r = tpm2_seal(device, pcr_mask, NULL, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); - if (r < 0) - return r; - -@@ -97,7 +97,7 @@ int enroll_tpm2(struct crypt_device *cd, - - /* Quick verification that everything is in order, we are not in a hurry after all. */ - log_debug("Unsealing for verification..."); -- r = tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, &secret2, &secret2_size); -+ r = tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, NULL, &secret2, &secret2_size); - if (r < 0) - return r; - -diff --git a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -index 3d39dfa884..de189c7bed 100644 ---- a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -+++ b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -@@ -41,7 +41,7 @@ int acquire_luks2_key( - pcr_mask, pcr_bank, - primary_alg, - key_data, key_data_size, -- policy_hash, policy_hash_size, -+ policy_hash, policy_hash_size, NULL, - ret_decrypted_key, ret_decrypted_key_size); - } - -diff --git a/src/cryptsetup/cryptsetup-tpm2.c b/src/cryptsetup/cryptsetup-tpm2.c -index cb139518a7..05d76a684d 100644 ---- a/src/cryptsetup/cryptsetup-tpm2.c -+++ b/src/cryptsetup/cryptsetup-tpm2.c -@@ -64,7 +64,7 @@ int acquire_tpm2_key( - blob = loaded_blob; - } - -- return tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, policy_hash, policy_hash_size, ret_decrypted_key, ret_decrypted_key_size); -+ return tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, policy_hash, policy_hash_size, NULL, ret_decrypted_key, ret_decrypted_key_size); - } - - int find_tpm2_auto_data( -diff --git a/src/partition/repart.c b/src/partition/repart.c -index 2f70796e58..adfec0b9f3 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -2655,7 +2655,7 @@ static int partition_encrypt( - uint16_t pcr_bank, primary_alg; - int keyslot; - -- r = tpm2_seal(arg_tpm2_device, arg_tpm2_pcr_mask, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); -+ r = tpm2_seal(arg_tpm2_device, arg_tpm2_pcr_mask, NULL, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); - if (r < 0) - return log_error_errno(r, "Failed to seal to TPM2: %m"); - -diff --git a/src/shared/creds-util.c b/src/shared/creds-util.c -index 4d0681bc10..c4dcc396ac 100644 ---- a/src/shared/creds-util.c -+++ b/src/shared/creds-util.c -@@ -534,6 +534,7 @@ int encrypt_credential_and_warn( - - r = tpm2_seal(tpm2_device, - tpm2_pcr_mask, -+ NULL, - &tpm2_key, - &tpm2_key_size, - &tpm2_blob, -@@ -803,6 +804,7 @@ int decrypt_credential_and_warn( - le32toh(t->blob_size), - t->policy_hash_and_blob + le32toh(t->blob_size), - le32toh(t->policy_hash_size), -+ NULL, - &tpm2_key, - &tpm2_key_size); - if (r < 0) -diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c -index 70a2929432..aca7b69ab5 100644 ---- a/src/shared/tpm2-util.c -+++ b/src/shared/tpm2-util.c -@@ -14,6 +14,7 @@ - #include "hexdecoct.h" - #include "memory-util.h" - #include "random-util.h" -+#include "sha256.h" - #include "time-util.h" - - static void *libtss2_esys_dl = NULL; -@@ -30,10 +31,12 @@ TSS2_RC (*sym_Esys_GetRandom)(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_ - TSS2_RC (*sym_Esys_Initialize)(ESYS_CONTEXT **esys_context, TSS2_TCTI_CONTEXT *tcti, TSS2_ABI_VERSION *abiVersion) = NULL; - TSS2_RC (*sym_Esys_Load)(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic, ESYS_TR *objectHandle) = NULL; - TSS2_RC (*sym_Esys_PCR_Read)(ESYS_CONTEXT *esysContext, ESYS_TR shandle1,ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues); -+TSS2_RC (*sym_Esys_PolicyAuthValue)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3) = NULL; - TSS2_RC (*sym_Esys_PolicyGetDigest)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_DIGEST **policyDigest) = NULL; - TSS2_RC (*sym_Esys_PolicyPCR)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs) = NULL; - TSS2_RC (*sym_Esys_StartAuthSession)(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash, ESYS_TR *sessionHandle) = NULL; - TSS2_RC (*sym_Esys_Startup)(ESYS_CONTEXT *esysContext, TPM2_SU startupType) = NULL; -+TSS2_RC (*sym_Esys_TR_SetAuth)(ESYS_CONTEXT *esysContext, ESYS_TR handle, TPM2B_AUTH const *authValue) = NULL; - TSS2_RC (*sym_Esys_Unseal)(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_SENSITIVE_DATA **outData) = NULL; - - const char* (*sym_Tss2_RC_Decode)(TSS2_RC rc) = NULL; -@@ -58,10 +61,12 @@ int dlopen_tpm2(void) { - DLSYM_ARG(Esys_Initialize), - DLSYM_ARG(Esys_Load), - DLSYM_ARG(Esys_PCR_Read), -+ DLSYM_ARG(Esys_PolicyAuthValue), - DLSYM_ARG(Esys_PolicyGetDigest), - DLSYM_ARG(Esys_PolicyPCR), - DLSYM_ARG(Esys_StartAuthSession), - DLSYM_ARG(Esys_Startup), -+ DLSYM_ARG(Esys_TR_SetAuth), - DLSYM_ARG(Esys_Unseal)); - if (r < 0) - return r; -@@ -594,6 +599,7 @@ static int tpm2_make_pcr_session( - ESYS_CONTEXT *c, - uint32_t pcr_mask, - uint16_t pcr_bank, /* If UINT16_MAX, pick best bank automatically, otherwise specify bank explicitly. */ -+ bool use_pin, - ESYS_TR *ret_session, - TPM2B_DIGEST **ret_policy_digest, - TPMI_ALG_HASH *ret_pcr_bank) { -@@ -669,6 +675,21 @@ static int tpm2_make_pcr_session( - goto finish; - } - -+ if (use_pin) { -+ rc = sym_Esys_PolicyAuthValue( -+ c, -+ session, -+ ESYS_TR_NONE, -+ ESYS_TR_NONE, -+ ESYS_TR_NONE); -+ if (rc != TSS2_RC_SUCCESS) { -+ r = log_error_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), -+ "Failed to add authValue policy to TPM: %s", -+ sym_Tss2_RC_Decode(rc)); -+ goto finish; -+ } -+ } -+ - if (DEBUG_LOGGING || ret_policy_digest) { - log_debug("Acquiring policy digest."); - -@@ -717,9 +738,22 @@ finish: - return r; - } - -+static void hash_pin(const char *pin, size_t len, uint8_t ret_digest[static SHA256_DIGEST_SIZE]) { -+ struct sha256_ctx hash; -+ -+ assert(pin); -+ -+ sha256_init_ctx(&hash); -+ sha256_process_bytes(pin, len, &hash); -+ sha256_finish_ctx(&hash, ret_digest); -+ -+ explicit_bzero_safe(&hash, sizeof(hash)); -+} -+ - int tpm2_seal( - const char *device, - uint32_t pcr_mask, -+ const char *pin, - void **ret_secret, - size_t *ret_secret_size, - void **ret_blob, -@@ -782,7 +816,8 @@ int tpm2_seal( - if (r < 0) - return r; - -- r = tpm2_make_pcr_session(c.esys_context, pcr_mask, UINT16_MAX, NULL, &policy_digest, &pcr_bank); -+ r = tpm2_make_pcr_session(c.esys_context, pcr_mask, UINT16_MAX, !!pin, NULL, &policy_digest, -+ &pcr_bank); - if (r < 0) - goto finish; - -@@ -813,6 +848,10 @@ int tpm2_seal( - .size = sizeof(hmac_sensitive.sensitive), - .sensitive.data.size = 32, - }; -+ if (pin) { -+ hash_pin(pin, strlen(pin), hmac_sensitive.sensitive.userAuth.buffer); -+ hmac_sensitive.sensitive.userAuth.size = SHA256_DIGEST_SIZE; -+ } - assert(sizeof(hmac_sensitive.sensitive.data.buffer) >= hmac_sensitive.sensitive.data.size); - - (void) tpm2_credit_random(c.esys_context); -@@ -910,6 +949,7 @@ int tpm2_seal( - r = 0; - - finish: -+ explicit_bzero_safe(&hmac_sensitive, sizeof(hmac_sensitive)); - primary = flush_context_verbose(c.esys_context, primary); - return r; - } -@@ -923,6 +963,7 @@ int tpm2_unseal( - size_t blob_size, - const void *known_policy_hash, - size_t known_policy_hash_size, -+ const char *pin, - void **ret_secret, - size_t *ret_secret_size) { - -@@ -978,7 +1019,7 @@ int tpm2_unseal( - if (r < 0) - return r; - -- r = tpm2_make_pcr_session(c.esys_context, pcr_mask, pcr_bank, &session, &policy_digest, NULL); -+ r = tpm2_make_pcr_session(c.esys_context, pcr_mask, pcr_bank, !!pin, &session, &policy_digest, NULL); - if (r < 0) - goto finish; - -@@ -1005,11 +1046,38 @@ int tpm2_unseal( - &public, - &hmac_key); - if (rc != TSS2_RC_SUCCESS) { -- r = log_error_errno(SYNTHETIC_ERRNO(ENOTRECOVERABLE), -- "Failed to load HMAC key in TPM: %s", sym_Tss2_RC_Decode(rc)); -+ /* If we're in dictionary attack lockout mode, we should see a lockout error here, which we -+ * need to translate for the caller. */ -+ if (rc == TPM2_RC_LOCKOUT) -+ r = log_error_errno( -+ SYNTHETIC_ERRNO(ENOLCK), -+ "TPM2 device is in dictionary attack lockout mode."); -+ else -+ r = log_error_errno( -+ SYNTHETIC_ERRNO(ENOTRECOVERABLE), -+ "Failed to load HMAC key in TPM: %s", -+ sym_Tss2_RC_Decode(rc)); - goto finish; - } - -+ if (pin) { -+ TPM2B_AUTH auth = { -+ .size = SHA256_DIGEST_SIZE -+ }; -+ -+ hash_pin(pin, strlen(pin), auth.buffer); -+ -+ rc = sym_Esys_TR_SetAuth(c.esys_context, hmac_key, &auth); -+ explicit_bzero_safe(&auth, sizeof(auth)); -+ if (rc != TSS2_RC_SUCCESS) { -+ r = log_error_errno( -+ SYNTHETIC_ERRNO(ENOTRECOVERABLE), -+ "Failed to load PIN in TPM: %s", -+ sym_Tss2_RC_Decode(rc)); -+ goto finish; -+ } -+ } -+ - log_debug("Unsealing HMAC key."); - - rc = sym_Esys_Unseal( -diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h -index cb57a847e2..784e9fd11e 100644 ---- a/src/shared/tpm2-util.h -+++ b/src/shared/tpm2-util.h -@@ -1,6 +1,8 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - #pragma once - -+#include -+ - #include "json.h" - #include "macro.h" - -@@ -20,10 +22,12 @@ extern TSS2_RC (*sym_Esys_GetRandom)(ESYS_CONTEXT *esysContext, ESYS_TR shandle1 - extern TSS2_RC (*sym_Esys_Initialize)(ESYS_CONTEXT **esys_context, TSS2_TCTI_CONTEXT *tcti, TSS2_ABI_VERSION *abiVersion); - extern TSS2_RC (*sym_Esys_Load)(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic, ESYS_TR *objectHandle); - extern TSS2_RC (*sym_Esys_PCR_Read)(ESYS_CONTEXT *esysContext, ESYS_TR shandle1,ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues); -+extern TSS2_RC (*sym_Esys_PolicyAuthValue)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3); - extern TSS2_RC (*sym_Esys_PolicyGetDigest)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_DIGEST **policyDigest); - extern TSS2_RC (*sym_Esys_PolicyPCR)(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs); - extern TSS2_RC (*sym_Esys_StartAuthSession)(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash, ESYS_TR *sessionHandle); - extern TSS2_RC (*sym_Esys_Startup)(ESYS_CONTEXT *esysContext, TPM2_SU startupType); -+extern TSS2_RC (*sym_Esys_TR_SetAuth)(ESYS_CONTEXT *esysContext, ESYS_TR handle, TPM2B_AUTH const *authValue); - extern TSS2_RC (*sym_Esys_Unseal)(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_SENSITIVE_DATA **outData); - - extern const char* (*sym_Tss2_RC_Decode)(TSS2_RC rc); -@@ -35,8 +39,8 @@ extern TSS2_RC (*sym_Tss2_MU_TPM2B_PUBLIC_Unmarshal)(uint8_t const buffer[], siz - - int dlopen_tpm2(void); - --int tpm2_seal(const char *device, uint32_t pcr_mask, void **ret_secret, size_t *ret_secret_size, void **ret_blob, size_t *ret_blob_size, void **ret_pcr_hash, size_t *ret_pcr_hash_size, uint16_t *ret_pcr_bank, uint16_t *ret_primary_alg); --int tpm2_unseal(const char *device, uint32_t pcr_mask, uint16_t pcr_bank, uint16_t primary_alg, const void *blob, size_t blob_size, const void *pcr_hash, size_t pcr_hash_size, void **ret_secret, size_t *ret_secret_size); -+int tpm2_seal(const char *device, uint32_t pcr_mask, const char *pin, void **ret_secret, size_t *ret_secret_size, void **ret_blob, size_t *ret_blob_size, void **ret_pcr_hash, size_t *ret_pcr_hash_size, uint16_t *ret_pcr_bank, uint16_t *ret_primary_alg); -+int tpm2_unseal(const char *device, uint32_t pcr_mask, uint16_t pcr_bank, uint16_t primary_alg, const void *blob, size_t blob_size, const void *pcr_hash, size_t pcr_hash_size, const char *pin, void **ret_secret, size_t *ret_secret_size); - - #endif - diff --git a/SOURCES/0225-cryptenroll-add-support-for-TPM2-pin.patch b/SOURCES/0225-cryptenroll-add-support-for-TPM2-pin.patch deleted file mode 100644 index 4115ec9..0000000 --- a/SOURCES/0225-cryptenroll-add-support-for-TPM2-pin.patch +++ /dev/null @@ -1,296 +0,0 @@ -From 9aecba3db5d381dd915e90931c63513141988d92 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Fri, 18 Feb 2022 11:51:25 +0100 -Subject: [PATCH] cryptenroll: add support for TPM2 pin - -Add support for PIN enrollment with TPM2. A new "tpm2-pin" field is -introduced into metadata to signal that the policy needs to include a -PIN. - -v2: fix tpm2_make_luks2_json in sd-repart -(cherry picked from commit 6c7a1681052c37ef354a000355c4c0d676113a1a) - -Related: #2087652 ---- - src/cryptenroll/cryptenroll-tpm2.c | 85 ++++++++++++++++++++++++++++-- - src/cryptenroll/cryptenroll-tpm2.h | 4 +- - src/cryptenroll/cryptenroll.c | 15 +++++- - src/partition/repart.c | 2 +- - src/shared/tpm2-util.c | 5 +- - src/shared/tpm2-util.h | 6 ++- - 6 files changed, 107 insertions(+), 10 deletions(-) - -diff --git a/src/cryptenroll/cryptenroll-tpm2.c b/src/cryptenroll/cryptenroll-tpm2.c -index f5f6b87d0f..e8c64dd753 100644 ---- a/src/cryptenroll/cryptenroll-tpm2.c -+++ b/src/cryptenroll/cryptenroll-tpm2.c -@@ -1,7 +1,9 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" -+#include "ask-password-api.h" - #include "cryptenroll-tpm2.h" -+#include "env-util.h" - #include "hexdecoct.h" - #include "json.h" - #include "memory-util.h" -@@ -58,11 +60,78 @@ static int search_policy_hash( - return -ENOENT; /* Not found */ - } - -+static int get_pin(char **ret_pin_str, TPM2Flags *ret_flags) { -+ _cleanup_free_ char *pin_str = NULL; -+ int r; -+ TPM2Flags flags = 0; -+ -+ assert(ret_pin_str); -+ assert(ret_flags); -+ -+ r = getenv_steal_erase("NEWPIN", &pin_str); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (r > 0) -+ flags |= TPM2_FLAGS_USE_PIN; -+ else { -+ for (size_t i = 5;; i--) { -+ _cleanup_strv_free_erase_ char **pin = NULL, **pin2 = NULL; -+ -+ if (i <= 0) -+ return log_error_errno( -+ SYNTHETIC_ERRNO(ENOKEY), "Too many attempts, giving up."); -+ -+ pin = strv_free_erase(pin); -+ r = ask_password_auto( -+ "Please enter TPM2 PIN:", -+ "drive-harddisk", -+ NULL, -+ "tpm2-pin", -+ "cryptenroll.tpm2-pin", -+ USEC_INFINITY, -+ 0, -+ &pin); -+ if (r < 0) -+ return log_error_errno(r, "Failed to ask for user pin: %m"); -+ assert(strv_length(pin) == 1); -+ -+ r = ask_password_auto( -+ "Please enter TPM2 PIN (repeat):", -+ "drive-harddisk", -+ NULL, -+ "tpm2-pin", -+ "cryptenroll.tpm2-pin", -+ USEC_INFINITY, -+ 0, -+ &pin2); -+ if (r < 0) -+ return log_error_errno(r, "Failed to ask for user pin: %m"); -+ assert(strv_length(pin) == 1); -+ -+ if (strv_equal(pin, pin2)) { -+ pin_str = strdup(*pin); -+ if (!pin_str) -+ return log_oom(); -+ flags |= TPM2_FLAGS_USE_PIN; -+ break; -+ } -+ -+ log_error("PINs didn't match, please try again!"); -+ } -+ } -+ -+ *ret_flags = flags; -+ *ret_pin_str = TAKE_PTR(pin_str); -+ -+ return 0; -+} -+ - int enroll_tpm2(struct crypt_device *cd, - const void *volume_key, - size_t volume_key_size, - const char *device, -- uint32_t pcr_mask) { -+ uint32_t pcr_mask, -+ bool use_pin) { - - _cleanup_(erase_and_freep) void *secret = NULL, *secret2 = NULL; - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; -@@ -71,7 +140,9 @@ int enroll_tpm2(struct crypt_device *cd, - _cleanup_free_ void *blob = NULL, *hash = NULL; - uint16_t pcr_bank, primary_alg; - const char *node; -+ _cleanup_(erase_and_freep) char *pin_str = NULL; - int r, keyslot; -+ TPM2Flags flags = 0; - - assert(cd); - assert(volume_key); -@@ -80,7 +151,13 @@ int enroll_tpm2(struct crypt_device *cd, - - assert_se(node = crypt_get_device_name(cd)); - -- r = tpm2_seal(device, pcr_mask, NULL, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); -+ if (use_pin) { -+ r = get_pin(&pin_str, &flags); -+ if (r < 0) -+ return r; -+ } -+ -+ r = tpm2_seal(device, pcr_mask, pin_str, &secret, &secret_size, &blob, &blob_size, &hash, &hash_size, &pcr_bank, &primary_alg); - if (r < 0) - return r; - -@@ -97,7 +174,7 @@ int enroll_tpm2(struct crypt_device *cd, - - /* Quick verification that everything is in order, we are not in a hurry after all. */ - log_debug("Unsealing for verification..."); -- r = tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, NULL, &secret2, &secret2_size); -+ r = tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, pin_str, &secret2, &secret2_size); - if (r < 0) - return r; - -@@ -123,7 +200,7 @@ int enroll_tpm2(struct crypt_device *cd, - if (keyslot < 0) - return log_error_errno(keyslot, "Failed to add new TPM2 key to %s: %m", node); - -- r = tpm2_make_luks2_json(keyslot, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, &v); -+ r = tpm2_make_luks2_json(keyslot, pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, flags, &v); - if (r < 0) - return log_error_errno(r, "Failed to prepare TPM2 JSON token object: %m"); - -diff --git a/src/cryptenroll/cryptenroll-tpm2.h b/src/cryptenroll/cryptenroll-tpm2.h -index d5dd1b0003..742f49b8d5 100644 ---- a/src/cryptenroll/cryptenroll-tpm2.h -+++ b/src/cryptenroll/cryptenroll-tpm2.h -@@ -7,9 +7,9 @@ - #include "log.h" - - #if HAVE_TPM2 --int enroll_tpm2(struct crypt_device *cd, const void *volume_key, size_t volume_key_size, const char *device, uint32_t pcr_mask); -+int enroll_tpm2(struct crypt_device *cd, const void *volume_key, size_t volume_key_size, const char *device, uint32_t pcr_mask, bool use_pin); - #else --static inline int enroll_tpm2(struct crypt_device *cd, const void *volume_key, size_t volume_key_size, const char *device, uint32_t pcr_mask) { -+static inline int enroll_tpm2(struct crypt_device *cd, const void *volume_key, size_t volume_key_size, const char *device, uint32_t pcr_mask, bool use_pin) { - return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), - "TPM2 key enrollment not supported."); - } -diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c -index 7f397f197f..ed19f3f8f4 100644 ---- a/src/cryptenroll/cryptenroll.c -+++ b/src/cryptenroll/cryptenroll.c -@@ -32,6 +32,7 @@ static char *arg_pkcs11_token_uri = NULL; - static char *arg_fido2_device = NULL; - static char *arg_tpm2_device = NULL; - static uint32_t arg_tpm2_pcr_mask = UINT32_MAX; -+static bool arg_tpm2_pin = false; - static char *arg_node = NULL; - static int *arg_wipe_slots = NULL; - static size_t arg_n_wipe_slots = 0; -@@ -100,6 +101,8 @@ static int help(void) { - " Enroll a TPM2 device\n" - " --tpm2-pcrs=PCR1+PCR2+PCR3+…\n" - " Specify TPM2 PCRs to seal against\n" -+ " --tpm2-with-pin=BOOL\n" -+ " Whether to require entering a PIN to unlock the volume\n" - " --wipe-slot=SLOT1,SLOT2,…\n" - " Wipe specified slots\n" - "\nSee the %s for details.\n", -@@ -121,6 +124,7 @@ static int parse_argv(int argc, char *argv[]) { - ARG_FIDO2_DEVICE, - ARG_TPM2_DEVICE, - ARG_TPM2_PCRS, -+ ARG_TPM2_PIN, - ARG_WIPE_SLOT, - ARG_FIDO2_WITH_PIN, - ARG_FIDO2_WITH_UP, -@@ -139,6 +143,7 @@ static int parse_argv(int argc, char *argv[]) { - { "fido2-with-user-verification", required_argument, NULL, ARG_FIDO2_WITH_UV }, - { "tpm2-device", required_argument, NULL, ARG_TPM2_DEVICE }, - { "tpm2-pcrs", required_argument, NULL, ARG_TPM2_PCRS }, -+ { "tpm2-with-pin", required_argument, NULL, ARG_TPM2_PIN }, - { "wipe-slot", required_argument, NULL, ARG_WIPE_SLOT }, - {} - }; -@@ -301,6 +306,14 @@ static int parse_argv(int argc, char *argv[]) { - break; - } - -+ case ARG_TPM2_PIN: { -+ r = parse_boolean_argument("--tpm2-with-pin=", optarg, &arg_tpm2_pin); -+ if (r < 0) -+ return r; -+ -+ break; -+ } -+ - case ARG_WIPE_SLOT: { - const char *p = optarg; - -@@ -563,7 +576,7 @@ static int run(int argc, char *argv[]) { - break; - - case ENROLL_TPM2: -- slot = enroll_tpm2(cd, vk, vks, arg_tpm2_device, arg_tpm2_pcr_mask); -+ slot = enroll_tpm2(cd, vk, vks, arg_tpm2_device, arg_tpm2_pcr_mask, arg_tpm2_pin); - break; - - case _ENROLL_TYPE_INVALID: -diff --git a/src/partition/repart.c b/src/partition/repart.c -index adfec0b9f3..67e379be55 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -2677,7 +2677,7 @@ static int partition_encrypt( - if (keyslot < 0) - return log_error_errno(keyslot, "Failed to add new TPM2 key to %s: %m", node); - -- r = tpm2_make_luks2_json(keyslot, arg_tpm2_pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, &v); -+ r = tpm2_make_luks2_json(keyslot, arg_tpm2_pcr_mask, pcr_bank, primary_alg, blob, blob_size, hash, hash_size, 0, &v); - if (r < 0) - return log_error_errno(r, "Failed to prepare TPM2 JSON token object: %m"); - -diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c -index aca7b69ab5..44fe899acd 100644 ---- a/src/shared/tpm2-util.c -+++ b/src/shared/tpm2-util.c -@@ -1291,6 +1291,7 @@ int tpm2_make_luks2_json( - size_t blob_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, - JsonVariant **ret) { - - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL, *a = NULL; -@@ -1331,7 +1332,9 @@ int tpm2_make_luks2_json( - JSON_BUILD_PAIR("tpm2-pcrs", JSON_BUILD_VARIANT(a)), - JSON_BUILD_PAIR_CONDITION(!!tpm2_pcr_bank_to_string(pcr_bank), "tpm2-pcr-bank", JSON_BUILD_STRING(tpm2_pcr_bank_to_string(pcr_bank))), - JSON_BUILD_PAIR_CONDITION(!!tpm2_primary_alg_to_string(primary_alg), "tpm2-primary-alg", JSON_BUILD_STRING(tpm2_primary_alg_to_string(primary_alg))), -- JSON_BUILD_PAIR("tpm2-policy-hash", JSON_BUILD_HEX(policy_hash, policy_hash_size)))); -+ JSON_BUILD_PAIR("tpm2-policy-hash", JSON_BUILD_HEX(policy_hash, policy_hash_size)), -+ JSON_BUILD_PAIR("tpm2-pin", JSON_BUILD_BOOLEAN(flags & TPM2_FLAGS_USE_PIN))) -+ ); - if (r < 0) - return r; - -diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h -index 784e9fd11e..5a9bcf8c24 100644 ---- a/src/shared/tpm2-util.h -+++ b/src/shared/tpm2-util.h -@@ -6,6 +6,10 @@ - #include "json.h" - #include "macro.h" - -+typedef enum TPM2Flags { -+ TPM2_FLAGS_USE_PIN = 1 << 0, -+} TPM2Flags; -+ - #if HAVE_TPM2 - - #include -@@ -49,7 +53,7 @@ int tpm2_find_device_auto(int log_level, char **ret); - - int tpm2_parse_pcrs(const char *s, uint32_t *ret); - --int tpm2_make_luks2_json(int keyslot, uint32_t pcr_mask, uint16_t pcr_bank, uint16_t primary_alg, const void *blob, size_t blob_size, const void *policy_hash, size_t policy_hash_size, JsonVariant **ret); -+int tpm2_make_luks2_json(int keyslot, uint32_t pcr_mask, uint16_t pcr_bank, uint16_t primary_alg, const void *blob, size_t blob_size, const void *policy_hash, size_t policy_hash_size, TPM2Flags flags, JsonVariant **ret); - - #define TPM2_PCRS_MAX 24 - diff --git a/SOURCES/0225-logind-session-make-stopping-of-idle-session-visible.patch b/SOURCES/0225-logind-session-make-stopping-of-idle-session-visible.patch new file mode 100644 index 0000000..4cba77f --- /dev/null +++ b/SOURCES/0225-logind-session-make-stopping-of-idle-session-visible.patch @@ -0,0 +1,26 @@ +From 0687c94b36c59b77f0e64137aadd2094f77cb9c3 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 21 Feb 2023 10:41:47 +0100 +Subject: [PATCH] logind-session: make stopping of idle session visible to + admins + +(cherry picked from commit 6269ffe7ee8a659df7336a2582054ecd9eecf4b1) + +Resolves: #2172401 +--- + src/login/logind-session.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/logind-session.c b/src/login/logind-session.c +index 5bd4abc474..709a585013 100644 +--- a/src/login/logind-session.c ++++ b/src/login/logind-session.c +@@ -711,7 +711,7 @@ static int session_dispatch_stop_on_idle(sd_event_source *source, uint64_t t, vo + + idle = session_get_idle_hint(s, &ts); + if (idle) { +- log_debug("Session \"%s\" of user \"%s\" is idle, stopping.", s->id, s->user->user_record->user_name); ++ log_info("Session \"%s\" of user \"%s\" is idle, stopping.", s->id, s->user->user_record->user_name); + + return session_stop(s, /* force */ true); + } diff --git a/SOURCES/0226-cryptsetup-add-support-for-TPM2-pin.patch b/SOURCES/0226-cryptsetup-add-support-for-TPM2-pin.patch deleted file mode 100644 index 94a7c3c..0000000 --- a/SOURCES/0226-cryptsetup-add-support-for-TPM2-pin.patch +++ /dev/null @@ -1,292 +0,0 @@ -From 2418e9c1409ba04ddff516a83d83b2daa3417832 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Fri, 18 Feb 2022 11:56:02 +0100 -Subject: [PATCH] cryptsetup: add support for TPM2 pin - -Extend cryptsetup for TPM2 pin entry, similar to FIDO2. - -(cherry picked from commit bea344a1a426e615ba87b66b6d3ff4b265c57a95) - -Related: #2087652 ---- - src/cryptsetup/cryptsetup-tpm2.c | 108 ++++++++++++++++++++++++++++++- - src/cryptsetup/cryptsetup-tpm2.h | 16 ++++- - src/cryptsetup/cryptsetup.c | 16 ++++- - 3 files changed, 135 insertions(+), 5 deletions(-) - -diff --git a/src/cryptsetup/cryptsetup-tpm2.c b/src/cryptsetup/cryptsetup-tpm2.c -index 05d76a684d..b84d64def8 100644 ---- a/src/cryptsetup/cryptsetup-tpm2.c -+++ b/src/cryptsetup/cryptsetup-tpm2.c -@@ -1,7 +1,9 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" -+#include "ask-password-api.h" - #include "cryptsetup-tpm2.h" -+#include "env-util.h" - #include "fileio.h" - #include "hexdecoct.h" - #include "json.h" -@@ -9,6 +11,47 @@ - #include "random-util.h" - #include "tpm2-util.h" - -+static int get_pin(usec_t until, AskPasswordFlags ask_password_flags, bool headless, char **ret_pin_str) { -+ _cleanup_free_ char *pin_str = NULL; -+ _cleanup_strv_free_erase_ char **pin = NULL; -+ int r; -+ -+ assert(ret_pin_str); -+ -+ r = getenv_steal_erase("PIN", &pin_str); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (!r) { -+ if (headless) -+ return log_error_errno( -+ SYNTHETIC_ERRNO(ENOPKG), -+ "PIN querying disabled via 'headless' option. " -+ "Use the '$PIN' environment variable."); -+ -+ pin = strv_free_erase(pin); -+ r = ask_password_auto( -+ "Please enter TPM2 PIN:", -+ "drive-harddisk", -+ NULL, -+ "tpm2-pin", -+ "cryptsetup.tpm2-pin", -+ until, -+ ask_password_flags, -+ &pin); -+ if (r < 0) -+ return log_error_errno(r, "Failed to ask for user pin: %m"); -+ assert(strv_length(pin) == 1); -+ -+ pin_str = strdup(pin[0]); -+ if (!pin_str) -+ return log_oom(); -+ } -+ -+ *ret_pin_str = TAKE_PTR(pin_str); -+ -+ return r; -+} -+ - int acquire_tpm2_key( - const char *volume_name, - const char *device, -@@ -22,6 +65,10 @@ int acquire_tpm2_key( - size_t key_data_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, -+ usec_t until, -+ bool headless, -+ AskPasswordFlags ask_password_flags, - void **ret_decrypted_key, - size_t *ret_decrypted_key_size) { - -@@ -64,7 +111,51 @@ int acquire_tpm2_key( - blob = loaded_blob; - } - -- return tpm2_unseal(device, pcr_mask, pcr_bank, primary_alg, blob, blob_size, policy_hash, policy_hash_size, NULL, ret_decrypted_key, ret_decrypted_key_size); -+ if (!(flags & TPM2_FLAGS_USE_PIN)) -+ return tpm2_unseal( -+ device, -+ pcr_mask, -+ pcr_bank, -+ primary_alg, -+ blob, -+ blob_size, -+ policy_hash, -+ policy_hash_size, -+ NULL, -+ ret_decrypted_key, -+ ret_decrypted_key_size); -+ -+ for (int i = 5;; i--) { -+ _cleanup_(erase_and_freep) char *pin_str = NULL; -+ -+ if (i <= 0) -+ return -EACCES; -+ -+ r = get_pin(until, ask_password_flags, headless, &pin_str); -+ if (r < 0) -+ return r; -+ -+ r = tpm2_unseal( -+ device, -+ pcr_mask, -+ pcr_bank, -+ primary_alg, -+ blob, -+ blob_size, -+ policy_hash, -+ policy_hash_size, -+ pin_str, -+ ret_decrypted_key, -+ ret_decrypted_key_size); -+ /* We get this error in case there is an authentication policy mismatch. This should -+ * not happen, but this avoids confusing behavior, just in case. */ -+ if (IN_SET(r, -EPERM, -ENOLCK)) -+ return r; -+ if (r < 0) -+ continue; -+ -+ return r; -+ } - } - - int find_tpm2_auto_data( -@@ -79,11 +170,13 @@ int find_tpm2_auto_data( - void **ret_policy_hash, - size_t *ret_policy_hash_size, - int *ret_keyslot, -- int *ret_token) { -+ int *ret_token, -+ TPM2Flags *ret_flags) { - - _cleanup_free_ void *blob = NULL, *policy_hash = NULL; - size_t blob_size = 0, policy_hash_size = 0; - int r, keyslot = -1, token = -1; -+ TPM2Flags flags = 0; - uint32_t pcr_mask = 0; - uint16_t pcr_bank = UINT16_MAX; /* default: pick automatically */ - uint16_t primary_alg = TPM2_ALG_ECC; /* ECC was the only supported algorithm in systemd < 250, use that as implied default, for compatibility */ -@@ -196,6 +289,16 @@ int find_tpm2_auto_data( - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Invalid base64 data in 'tpm2-policy-hash' field."); - -+ w = json_variant_by_key(v, "tpm2-pin"); -+ if (w) { -+ if (!json_variant_is_boolean(w)) -+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), -+ "TPM2 PIN policy is not a boolean."); -+ -+ if (json_variant_boolean(w)) -+ flags |= TPM2_FLAGS_USE_PIN; -+ } -+ - break; - } - -@@ -215,6 +318,7 @@ int find_tpm2_auto_data( - *ret_token = token; - *ret_pcr_bank = pcr_bank; - *ret_primary_alg = primary_alg; -+ *ret_flags = flags; - - return 0; - } -diff --git a/src/cryptsetup/cryptsetup-tpm2.h b/src/cryptsetup/cryptsetup-tpm2.h -index bd04620462..ab16d0a18f 100644 ---- a/src/cryptsetup/cryptsetup-tpm2.h -+++ b/src/cryptsetup/cryptsetup-tpm2.h -@@ -3,9 +3,11 @@ - - #include - -+#include "ask-password-api.h" - #include "cryptsetup-util.h" - #include "log.h" - #include "time-util.h" -+#include "tpm2-util.h" - - #if HAVE_TPM2 - -@@ -22,6 +24,10 @@ int acquire_tpm2_key( - size_t key_data_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, -+ usec_t until, -+ bool headless, -+ AskPasswordFlags ask_password_flags, - void **ret_decrypted_key, - size_t *ret_decrypted_key_size); - -@@ -37,7 +43,8 @@ int find_tpm2_auto_data( - void **ret_policy_hash, - size_t *ret_policy_hash_size, - int *ret_keyslot, -- int *ret_token); -+ int *ret_token, -+ TPM2Flags *ret_flags); - - #else - -@@ -54,6 +61,10 @@ static inline int acquire_tpm2_key( - size_t key_data_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, -+ usec_t until, -+ bool headless, -+ AskPasswordFlags ask_password_flags, - void **ret_decrypted_key, - size_t *ret_decrypted_key_size) { - -@@ -73,7 +84,8 @@ static inline int find_tpm2_auto_data( - void **ret_policy_hash, - size_t *ret_policy_hash_size, - int *ret_keyslot, -- int *ret_token) { -+ int *ret_token, -+ TPM2Flags *ret_flags) { - - return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), - "TPM2 support not available."); -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index dddd976dc8..ede0f7ed0b 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -1301,9 +1301,15 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2( - key_file, arg_keyfile_size, arg_keyfile_offset, - key_data, key_data_size, - NULL, 0, /* we don't know the policy hash */ -+ 0, /* PIN is currently unhandled in this case */ -+ until, -+ arg_headless, -+ arg_ask_password_flags, - &decrypted_key, &decrypted_key_size); - if (r >= 0) - break; -+ if (IN_SET(r, -EACCES, -ENOLCK)) -+ return log_error_errno(SYNTHETIC_ERRNO(EAGAIN), "TPM2 PIN unlock failed, falling back to traditional unlocking."); - if (ERRNO_IS_NOT_SUPPORTED(r)) /* TPM2 support not compiled in? */ - return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN), "TPM2 support not available, falling back to traditional unlocking."); - if (r != -EAGAIN) /* EAGAIN means: no tpm2 chip found */ -@@ -1335,6 +1341,7 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2( - for (;;) { - uint32_t pcr_mask; - uint16_t pcr_bank, primary_alg; -+ TPM2Flags tpm2_flags; - - r = find_tpm2_auto_data( - cd, -@@ -1346,7 +1353,8 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2( - &blob, &blob_size, - &policy_hash, &policy_hash_size, - &keyslot, -- &token); -+ &token, -+ &tpm2_flags); - if (r == -ENXIO) - /* No further TPM2 tokens found in the LUKS2 header. */ - return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN), -@@ -1369,7 +1377,13 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2( - NULL, 0, 0, /* no key file */ - blob, blob_size, - policy_hash, policy_hash_size, -+ tpm2_flags, -+ until, -+ arg_headless, -+ arg_ask_password_flags, - &decrypted_key, &decrypted_key_size); -+ if (IN_SET(r, -EACCES, -ENOLCK)) -+ return log_error_errno(SYNTHETIC_ERRNO(EAGAIN), "TPM2 PIN unlock failed, falling back to traditional unlocking."); - if (r != -EPERM) - break; - diff --git a/SOURCES/0226-journal-file-Fix-return-value-in-bump_entry_array.patch b/SOURCES/0226-journal-file-Fix-return-value-in-bump_entry_array.patch new file mode 100644 index 0000000..d91b005 --- /dev/null +++ b/SOURCES/0226-journal-file-Fix-return-value-in-bump_entry_array.patch @@ -0,0 +1,26 @@ +From acf4f21936ad6153ba53f2d798967e57473be8bc Mon Sep 17 00:00:00 2001 +From: Daan De Meyer +Date: Thu, 23 Feb 2023 15:40:38 +0100 +Subject: [PATCH] journal-file: Fix return value in bump_entry_array() + +(cherry picked from commit 0399902440fbaea5b163254f70be57dbedb7131e) + +Resolves: #2173682 +--- + src/libsystemd/sd-journal/journal-file.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c +index c1ec6bb1d8..c489436a1e 100644 +--- a/src/libsystemd/sd-journal/journal-file.c ++++ b/src/libsystemd/sd-journal/journal-file.c +@@ -2410,7 +2410,8 @@ static int bump_entry_array( + + if (direction == DIRECTION_DOWN) { + assert(o); +- return le64toh(o->entry_array.next_entry_array_offset); ++ *ret = le64toh(o->entry_array.next_entry_array_offset); ++ return 0; + } + + /* Entry array chains are a singly linked list, so to find the previous array in the chain, we have diff --git a/SOURCES/0227-Revert-user-delegate-cpu-controller-assign-weights-t.patch b/SOURCES/0227-Revert-user-delegate-cpu-controller-assign-weights-t.patch new file mode 100644 index 0000000..adb705c --- /dev/null +++ b/SOURCES/0227-Revert-user-delegate-cpu-controller-assign-weights-t.patch @@ -0,0 +1,76 @@ +From a540b3e604d921200ee35f859770c9fbed6b669a Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Fri, 3 Mar 2023 10:58:37 +0100 +Subject: [PATCH] Revert "user: delegate cpu controller, assign weights to user + slices" + +This reverts commit b8df7f8629cb310beac982a4779b27eabe5362c6. + +Resolves: #2173996 +--- + TODO | 2 -- + units/user/app.slice | 3 --- + units/user/background.slice | 3 --- + units/user/session.slice | 3 --- + units/user@.service.in | 2 +- + 5 files changed, 1 insertion(+), 12 deletions(-) + +diff --git a/TODO b/TODO +index 560ec4bca4..66c008bff3 100644 +--- a/TODO ++++ b/TODO +@@ -1662,8 +1662,6 @@ Features: + - when reloading configuration, apply new cgroup configuration + - when recursively showing the cgroup hierarchy, optionally also show + the hierarchies of child processes +-- add settings for cgroup.max.descendants and cgroup.max.depth, +- maybe use them for user@.service + + * transient units: + - add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt +diff --git a/units/user/app.slice b/units/user/app.slice +index eac50645a4..0c73135e17 100644 +--- a/units/user/app.slice ++++ b/units/user/app.slice +@@ -10,6 +10,3 @@ + [Unit] + Description=User Application Slice + Documentation=man:systemd.special(7) +- +-[Slice] +-CPUWeight=100 +diff --git a/units/user/background.slice b/units/user/background.slice +index a9767753b3..8f2a0949bd 100644 +--- a/units/user/background.slice ++++ b/units/user/background.slice +@@ -10,6 +10,3 @@ + [Unit] + Description=User Background Tasks Slice + Documentation=man:systemd.special(7) +- +-[Slice] +-CPUWeight=30 +diff --git a/units/user/session.slice b/units/user/session.slice +index aa12b7d03c..3d99d51bc5 100644 +--- a/units/user/session.slice ++++ b/units/user/session.slice +@@ -10,6 +10,3 @@ + [Unit] + Description=User Core Session Slice + Documentation=man:systemd.special(7) +- +-[Slice] +-CPUWeight=100 +diff --git a/units/user@.service.in b/units/user@.service.in +index 1660de0326..efbd5dfbc8 100644 +--- a/units/user@.service.in ++++ b/units/user@.service.in +@@ -21,7 +21,7 @@ Type=notify + ExecStart={{ROOTLIBEXECDIR}}/systemd --user + Slice=user-%i.slice + KillMode=mixed +-Delegate=pids memory cpu ++Delegate=pids memory + TasksMax=infinity + TimeoutStopSec=120s + KeyringMode=inherit diff --git a/SOURCES/0227-cryptsetup-add-libcryptsetup-TPM2-PIN-support.patch b/SOURCES/0227-cryptsetup-add-libcryptsetup-TPM2-PIN-support.patch deleted file mode 100644 index 4ac80fe..0000000 --- a/SOURCES/0227-cryptsetup-add-libcryptsetup-TPM2-PIN-support.patch +++ /dev/null @@ -1,218 +0,0 @@ -From 1b7d251ab836ba703913eda149f05bd03559c483 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Fri, 18 Feb 2022 12:00:12 +0100 -Subject: [PATCH] cryptsetup: add libcryptsetup TPM2 PIN support - -This is unfinished: we don't have any way to actually query for PINs -interactively this way. It is similar to FIDO2 and PKCS#11 in this -regard. - -Nonetheless, this code is capable of validating and dumping tokens, so -it is already useful as-is. - -(cherry picked from commit 1f895adac287b5f1b6b854caa586093616ccc172) - -Related: #2087652 ---- - .../cryptsetup-token-systemd-tpm2.c | 18 +++++++++-- - src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c | 32 +++++++++++++++++-- - src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h | 6 +++- - 3 files changed, 51 insertions(+), 5 deletions(-) - -diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c -index e2d28a5dda..23df974999 100644 ---- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c -+++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c -@@ -6,8 +6,10 @@ - #include "cryptsetup-token.h" - #include "cryptsetup-token-util.h" - #include "hexdecoct.h" -+#include "json.h" - #include "luks2-tpm2.h" - #include "memory-util.h" -+#include "strv.h" - #include "tpm2-util.h" - #include "version.h" - -@@ -78,7 +80,8 @@ _public_ int cryptsetup_token_open( - if (usrptr) - params = *(systemd_tpm2_plugin_params *)usrptr; - -- r = parse_luks2_tpm2_data(json, params.search_pcr_mask, &pcr_mask, &pcr_bank, &primary_alg, &base64_blob, &hex_policy_hash); -+ TPM2Flags flags = 0; -+ r = parse_luks2_tpm2_data(json, params.search_pcr_mask, &pcr_mask, &pcr_bank, &primary_alg, &base64_blob, &hex_policy_hash, &flags); - if (r < 0) - return log_debug_open_error(cd, r); - -@@ -101,6 +104,7 @@ _public_ int cryptsetup_token_open( - blob_size, - policy_hash, - policy_hash_size, -+ flags, - &decrypted_key, - &decrypted_key_size); - if (r < 0) -@@ -135,6 +139,7 @@ _public_ void cryptsetup_token_dump( - const char *json /* validated 'systemd-tpm2' token if cryptsetup_token_validate is defined */) { - - int r; -+ TPM2Flags flags = 0; - uint32_t pcr_mask; - uint16_t pcr_bank, primary_alg; - size_t decoded_blob_size; -@@ -144,7 +149,7 @@ _public_ void cryptsetup_token_dump( - - assert(json); - -- r = parse_luks2_tpm2_data(json, UINT32_MAX, &pcr_mask, &pcr_bank, &primary_alg, &base64_blob, &hex_policy_hash); -+ r = parse_luks2_tpm2_data(json, UINT32_MAX, &pcr_mask, &pcr_bank, &primary_alg, &base64_blob, &hex_policy_hash, &flags); - if (r < 0) - return (void) crypt_log_debug_errno(cd, r, "Failed to parse " TOKEN_NAME " metadata: %m."); - -@@ -171,6 +176,7 @@ _public_ void cryptsetup_token_dump( - crypt_log(cd, "\ttpm2-primary-alg: %s\n", strna(tpm2_primary_alg_to_string(primary_alg))); - crypt_log(cd, "\ttpm2-blob: %s\n", blob_str); - crypt_log(cd, "\ttpm2-policy-hash:" CRYPT_DUMP_LINE_SEP "%s\n", policy_hash_str); -+ crypt_log(cd, "\ttpm2-pin: %s\n", true_false(flags & TPM2_FLAGS_USE_PIN)); - } - - /* -@@ -268,5 +274,13 @@ _public_ int cryptsetup_token_validate( - if (r < 0) - return crypt_log_debug_errno(cd, r, "Invalid base64 data in 'tpm2-policy-hash' field: %m"); - -+ w = json_variant_by_key(v, "tpm2-pin"); -+ if (w) { -+ if (!json_variant_is_boolean(w)) { -+ crypt_log_debug(cd, "TPM2 PIN policy is not a boolean."); -+ return 1; -+ } -+ } -+ - return 0; - } -diff --git a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -index de189c7bed..0d6e4bc0f8 100644 ---- a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -+++ b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c -@@ -1,11 +1,15 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - - #include "alloc-util.h" -+#include "ask-password-api.h" -+#include "env-util.h" - #include "hexdecoct.h" - #include "json.h" -+#include "log.h" - #include "luks2-tpm2.h" - #include "parse-util.h" - #include "random-util.h" -+#include "strv.h" - #include "tpm2-util.h" - - int acquire_luks2_key( -@@ -17,10 +21,12 @@ int acquire_luks2_key( - size_t key_data_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, - void **ret_decrypted_key, - size_t *ret_decrypted_key_size) { - - _cleanup_free_ char *auto_device = NULL; -+ _cleanup_(erase_and_freep) char *pin_str = NULL; - int r; - - assert(ret_decrypted_key); -@@ -36,12 +42,22 @@ int acquire_luks2_key( - device = auto_device; - } - -+ r = getenv_steal_erase("PIN", &pin_str); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (!r) { -+ /* PIN entry is not supported by plugin, let it fallback, possibly to sd-cryptsetup's -+ * internal handling. */ -+ if (flags & TPM2_FLAGS_USE_PIN) -+ return -EOPNOTSUPP; -+ } -+ - return tpm2_unseal( - device, - pcr_mask, pcr_bank, - primary_alg, - key_data, key_data_size, -- policy_hash, policy_hash_size, NULL, -+ policy_hash, policy_hash_size, pin_str, - ret_decrypted_key, ret_decrypted_key_size); - } - -@@ -53,7 +69,8 @@ int parse_luks2_tpm2_data( - uint16_t *ret_pcr_bank, - uint16_t *ret_primary_alg, - char **ret_base64_blob, -- char **ret_hex_policy_hash) { -+ char **ret_hex_policy_hash, -+ TPM2Flags *ret_flags) { - - int r; - JsonVariant *w, *e; -@@ -61,6 +78,7 @@ int parse_luks2_tpm2_data( - uint16_t pcr_bank = UINT16_MAX, primary_alg = TPM2_ALG_ECC; - _cleanup_free_ char *base64_blob = NULL, *hex_policy_hash = NULL; - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; -+ TPM2Flags flags = 0; - - assert(json); - assert(ret_pcr_mask); -@@ -138,11 +156,21 @@ int parse_luks2_tpm2_data( - if (!hex_policy_hash) - return -ENOMEM; - -+ w = json_variant_by_key(v, "tpm2-pin"); -+ if (w) { -+ if (!json_variant_is_boolean(w)) -+ return -EINVAL; -+ -+ if (json_variant_boolean(w)) -+ flags |= TPM2_FLAGS_USE_PIN; -+ } -+ - *ret_pcr_mask = pcr_mask; - *ret_pcr_bank = pcr_bank; - *ret_primary_alg = primary_alg; - *ret_base64_blob = TAKE_PTR(base64_blob); - *ret_hex_policy_hash = TAKE_PTR(hex_policy_hash); -+ *ret_flags = flags; - - return 0; - } -diff --git a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h -index 0c93ea82cc..34c93216ee 100644 ---- a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h -+++ b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.h -@@ -2,6 +2,8 @@ - - #pragma once - -+#include "tpm2-util.h" -+ - struct crypt_device; - - int acquire_luks2_key( -@@ -13,6 +15,7 @@ int acquire_luks2_key( - size_t key_data_size, - const void *policy_hash, - size_t policy_hash_size, -+ TPM2Flags flags, - void **ret_decrypted_key, - size_t *ret_decrypted_key_size); - -@@ -23,4 +26,5 @@ int parse_luks2_tpm2_data( - uint16_t *ret_pcr_bank, - uint16_t *ret_primary_alg, - char **ret_base64_blob, -- char **ret_hex_policy_hash); -+ char **ret_hex_policy_hash, -+ TPM2Flags *ret_flags); diff --git a/SOURCES/0228-cryptenroll-add-TPM2-PIN-documentation.patch b/SOURCES/0228-cryptenroll-add-TPM2-PIN-documentation.patch deleted file mode 100644 index 6490007..0000000 --- a/SOURCES/0228-cryptenroll-add-TPM2-PIN-documentation.patch +++ /dev/null @@ -1,41 +0,0 @@ -From ae4da9f80eb84469b0fbb3e02bfe95751d4513dd Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Fri, 18 Feb 2022 12:51:00 +0100 -Subject: [PATCH] cryptenroll: add TPM2 PIN documentation - -(cherry picked from commit caeb5604f9fd8e7aa43c7a1c853f8a7597240b17) - -Related: #2087652 ---- - man/systemd-cryptenroll.xml | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/man/systemd-cryptenroll.xml b/man/systemd-cryptenroll.xml -index d5fdb54cdd..58a4626768 100644 ---- a/man/systemd-cryptenroll.xml -+++ b/man/systemd-cryptenroll.xml -@@ -299,6 +299,24 @@ - signatures likely will validate against pre-existing certificates. - - -+ -+ BOOL -+ -+ When enrolling a TPM2 device, controls whether to require the user to enter a PIN -+ when unlocking the volume in addition to PCR binding, based on TPM2 policy authentication. Defaults -+ to no. Despite being called PIN, any character can be used, not just numbers. -+ -+ -+ Note that incorrect PIN entry when unlocking increments the -+ TPM dictionary attack lockout mechanism, and may lock out users for a prolonged time, depending on -+ its configuration. The lockout mechanism is a global property of the TPM, -+ systemd-cryptenroll does not control or configure the lockout mechanism. You may -+ use tpm2-tss tools to inspect or configure the dictionary attack lockout, with -+ tpm2_getcap1 and -+ tpm2_dictionarylockout1 -+ commands, respectively. -+ -+ - - SLOT - diff --git a/SOURCES/0228-systemd-Support-OOMPolicy-in-scope-units.patch b/SOURCES/0228-systemd-Support-OOMPolicy-in-scope-units.patch new file mode 100644 index 0000000..3eb8eb0 --- /dev/null +++ b/SOURCES/0228-systemd-Support-OOMPolicy-in-scope-units.patch @@ -0,0 +1,172 @@ +From 9603354ef8d1e0456718703920e41e6fadad95a8 Mon Sep 17 00:00:00 2001 +From: Mark Laws +Date: Mon, 14 Nov 2022 21:48:09 +0900 +Subject: [PATCH] systemd: Support OOMPolicy in scope units + +Closes #25376. + +(cherry picked from commit 5fa098357e0ea9f05b00ed5b04a36ef9f64037db) + +Resolves: #2175619 +--- + man/org.freedesktop.systemd1.xml | 6 ++++++ + src/core/dbus-scope.c | 6 ++++++ + src/core/scope.c | 19 ++++++++++++++++--- + src/core/scope.h | 2 ++ + src/shared/bus-unit-util.c | 3 +++ + 5 files changed, 33 insertions(+), 3 deletions(-) + +diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml +index c2f70870c7..40510c43eb 100644 +--- a/man/org.freedesktop.systemd1.xml ++++ b/man/org.freedesktop.systemd1.xml +@@ -10150,6 +10150,8 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope { + readonly t RuntimeMaxUSec = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t RuntimeRandomizedExtraUSec = ...; ++ @org.freedesktop.DBus.Property.EmitsChangedSignal("const") ++ readonly s OOMPolicy = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly s Slice = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") +@@ -10324,6 +10326,8 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope { + + + ++ ++ + + + +@@ -10506,6 +10510,8 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope { + + + ++ ++ + + + +diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c +index 7d2ceb0765..7b07bb8bb9 100644 +--- a/src/core/dbus-scope.c ++++ b/src/core/dbus-scope.c +@@ -5,6 +5,7 @@ + #include "bus-get-properties.h" + #include "dbus-cgroup.h" + #include "dbus-kill.h" ++#include "dbus-manager.h" + #include "dbus-scope.h" + #include "dbus-unit.h" + #include "dbus-util.h" +@@ -39,6 +40,7 @@ int bus_scope_method_abandon(sd_bus_message *message, void *userdata, sd_bus_err + } + + static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, scope_result, ScopeResult); ++static BUS_DEFINE_SET_TRANSIENT_PARSE(oom_policy, OOMPolicy, oom_policy_from_string); + + const sd_bus_vtable bus_scope_vtable[] = { + SD_BUS_VTABLE_START(0), +@@ -47,6 +49,7 @@ const sd_bus_vtable bus_scope_vtable[] = { + SD_BUS_PROPERTY("Result", "s", property_get_result, offsetof(Scope, result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), + SD_BUS_PROPERTY("RuntimeMaxUSec", "t", bus_property_get_usec, offsetof(Scope, runtime_max_usec), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("RuntimeRandomizedExtraUSec", "t", bus_property_get_usec, offsetof(Scope, runtime_rand_extra_usec), SD_BUS_VTABLE_PROPERTY_CONST), ++ SD_BUS_PROPERTY("OOMPolicy", "s", bus_property_get_oom_policy, offsetof(Scope, oom_policy), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_SIGNAL("RequestStop", NULL, 0), + SD_BUS_METHOD("Abandon", NULL, NULL, bus_scope_method_abandon, SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_VTABLE_END +@@ -77,6 +80,9 @@ static int bus_scope_set_transient_property( + if (streq(name, "RuntimeRandomizedExtraUSec")) + return bus_set_transient_usec(u, name, &s->runtime_rand_extra_usec, message, flags, error); + ++ if (streq(name, "OOMPolicy")) ++ return bus_set_transient_oom_policy(u, name, &s->oom_policy, message, flags, error); ++ + if (streq(name, "PIDs")) { + _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL; + unsigned n = 0; +diff --git a/src/core/scope.c b/src/core/scope.c +index 54a6cc63e4..e2fc4cc995 100644 +--- a/src/core/scope.c ++++ b/src/core/scope.c +@@ -43,6 +43,7 @@ static void scope_init(Unit *u) { + s->timeout_stop_usec = u->manager->default_timeout_stop_usec; + u->ignore_on_isolate = true; + s->user = s->group = NULL; ++ s->oom_policy = _OOM_POLICY_INVALID; + } + + static void scope_done(Unit *u) { +@@ -194,6 +195,11 @@ static int scope_add_extras(Scope *s) { + if (r < 0) + return r; + ++ if (s->oom_policy < 0) ++ s->oom_policy = s->cgroup_context.delegate ? OOM_CONTINUE : UNIT(s)->manager->default_oom_policy; ++ ++ s->cgroup_context.memory_oom_group = s->oom_policy == OOM_KILL; ++ + return scope_add_default_dependencies(s); + } + +@@ -286,11 +292,13 @@ static void scope_dump(Unit *u, FILE *f, const char *prefix) { + "%sScope State: %s\n" + "%sResult: %s\n" + "%sRuntimeMaxSec: %s\n" +- "%sRuntimeRandomizedExtraSec: %s\n", ++ "%sRuntimeRandomizedExtraSec: %s\n" ++ "%sOOMPolicy: %s\n", + prefix, scope_state_to_string(s->state), + prefix, scope_result_to_string(s->result), + prefix, FORMAT_TIMESPAN(s->runtime_max_usec, USEC_PER_SEC), +- prefix, FORMAT_TIMESPAN(s->runtime_rand_extra_usec, USEC_PER_SEC)); ++ prefix, FORMAT_TIMESPAN(s->runtime_rand_extra_usec, USEC_PER_SEC), ++ prefix, oom_policy_to_string(s->oom_policy)); + + cgroup_context_dump(UNIT(s), f, prefix); + kill_context_dump(&s->kill_context, f, prefix); +@@ -635,11 +643,16 @@ static void scope_notify_cgroup_oom_event(Unit *u, bool managed_oom) { + else + log_unit_debug(u, "Process of control group was killed by the OOM killer."); + +- /* This will probably need to be modified when scope units get an oom-policy */ ++ if (s->oom_policy == OOM_CONTINUE) ++ return; ++ + switch (s->state) { + + case SCOPE_START_CHOWN: + case SCOPE_RUNNING: ++ scope_enter_signal(s, SCOPE_STOP_SIGTERM, SCOPE_FAILURE_OOM_KILL); ++ break; ++ + case SCOPE_STOP_SIGTERM: + scope_enter_signal(s, SCOPE_STOP_SIGKILL, SCOPE_FAILURE_OOM_KILL); + break; +diff --git a/src/core/scope.h b/src/core/scope.h +index 6a228f1177..c9574a32c2 100644 +--- a/src/core/scope.h ++++ b/src/core/scope.h +@@ -38,6 +38,8 @@ struct Scope { + + char *user; + char *group; ++ ++ OOMPolicy oom_policy; + }; + + extern const UnitVTable scope_vtable; +diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c +index b850a28e85..922011eccd 100644 +--- a/src/shared/bus-unit-util.c ++++ b/src/shared/bus-unit-util.c +@@ -2142,6 +2142,9 @@ static int bus_append_scope_property(sd_bus_message *m, const char *field, const + if (STR_IN_SET(field, "User", "Group")) + return bus_append_string(m, field, eq); + ++ if (streq(field, "OOMPolicy")) ++ return bus_append_string(m, field, eq); ++ + return 0; + } + diff --git a/SOURCES/0229-cryptsetup-add-manual-TPM2-PIN-configuration.patch b/SOURCES/0229-cryptsetup-add-manual-TPM2-PIN-configuration.patch deleted file mode 100644 index 536fbc8..0000000 --- a/SOURCES/0229-cryptsetup-add-manual-TPM2-PIN-configuration.patch +++ /dev/null @@ -1,74 +0,0 @@ -From d3615420322bf3c9666fe5580317ed0aec20fe62 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Fri, 18 Feb 2022 21:13:41 +0100 -Subject: [PATCH] cryptsetup: add manual TPM2 PIN configuration - -Handle the case where TPM2 metadata is not available and explicitly -provided in crypttab. This adds a new "tpm2-pin" option to crypttab -options for this purpose. - -(cherry picked from commit 4005d41ef0d007021deb0536800fc782ff670420) - -Related: #2087652 ---- - man/crypttab.xml | 8 ++++++++ - src/cryptsetup/cryptsetup.c | 13 ++++++++++++- - 2 files changed, 20 insertions(+), 1 deletion(-) - -diff --git a/man/crypttab.xml b/man/crypttab.xml -index ac5c6ef666..22411166a8 100644 ---- a/man/crypttab.xml -+++ b/man/crypttab.xml -@@ -677,6 +677,14 @@ - of the current PCR state. - - -+ -+ -+ -+ Takes a boolean argument, defaults to false. Controls whether -+ TPM2 volume unlocking is bound to a PIN in addition to PCRs. Similarly, this option is only useful -+ when TPM2 enrollment metadata is not available. -+ -+ - - - -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index ede0f7ed0b..fc1f37730f 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -82,6 +82,7 @@ static char *arg_fido2_rp_id = NULL; - static char *arg_tpm2_device = NULL; - static bool arg_tpm2_device_auto = false; - static uint32_t arg_tpm2_pcr_mask = UINT32_MAX; -+static bool arg_tpm2_pin = false; - static bool arg_headless = false; - static usec_t arg_token_timeout_usec = 30*USEC_PER_SEC; - -@@ -387,6 +388,16 @@ static int parse_one_option(const char *option) { - arg_tpm2_pcr_mask |= mask; - } - -+ } else if ((val = startswith(option, "tpm2-pin="))) { -+ -+ r = parse_boolean(val); -+ if (r < 0) { -+ log_error_errno(r, "Failed to parse %s, ignoring: %m", option); -+ return 0; -+ } -+ -+ arg_tpm2_pin = r; -+ - } else if ((val = startswith(option, "try-empty-password="))) { - - r = parse_boolean(val); -@@ -1301,7 +1312,7 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2( - key_file, arg_keyfile_size, arg_keyfile_offset, - key_data, key_data_size, - NULL, 0, /* we don't know the policy hash */ -- 0, /* PIN is currently unhandled in this case */ -+ arg_tpm2_pin, - until, - arg_headless, - arg_ask_password_flags, diff --git a/SOURCES/0229-systemd-Default-to-OOMPolicy-continue-for-login-sess.patch b/SOURCES/0229-systemd-Default-to-OOMPolicy-continue-for-login-sess.patch new file mode 100644 index 0000000..7353229 --- /dev/null +++ b/SOURCES/0229-systemd-Default-to-OOMPolicy-continue-for-login-sess.patch @@ -0,0 +1,33 @@ +From df85e937594d551c91a1efd5ba73d56399304f19 Mon Sep 17 00:00:00 2001 +From: Mark Laws +Date: Thu, 24 Nov 2022 14:56:29 +0900 +Subject: [PATCH] systemd: Default to OOMPolicy=continue for login session + scopes + +If the kernel OOM kills a process under a login session scope, we don't want to +kill the user's other processes for no good reason. + +(cherry picked from commit 98b6c94b577205d31b019286c2a84cc9af244ea0) + +Resolves: #2175619 +--- + src/login/logind-dbus.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c +index 86a5decf3f..2ab26b9c6d 100644 +--- a/src/login/logind-dbus.c ++++ b/src/login/logind-dbus.c +@@ -3970,6 +3970,12 @@ int manager_start_scope( + if (r < 0) + return r; + ++ /* For login session scopes, if a process is OOM killed by the kernel, *don't* terminate the rest of ++ the scope */ ++ r = sd_bus_message_append(m, "(sv)", "OOMPolicy", "s", "continue"); ++ if (r < 0) ++ return r; ++ + /* disable TasksMax= for the session scope, rely on the slice setting for it */ + r = sd_bus_message_append(m, "(sv)", "TasksMax", "t", UINT64_MAX); + if (r < 0) diff --git a/SOURCES/0230-cryptenroll-add-tests-for-TPM2-unlocking.patch b/SOURCES/0230-cryptenroll-add-tests-for-TPM2-unlocking.patch deleted file mode 100644 index 9e73f69..0000000 --- a/SOURCES/0230-cryptenroll-add-tests-for-TPM2-unlocking.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 6a31abd9fdfe9b08c169b315dd3bc18abbe200b0 Mon Sep 17 00:00:00 2001 -From: Grigori Goronzy -Date: Thu, 24 Feb 2022 01:28:29 +0100 -Subject: [PATCH] cryptenroll: add tests for TPM2 unlocking - -Add tests for enrolling and unlocking. Various cases are tested: - -- Default PCR 7 policy w/o PIN, good and bad cases (wrong PCR) -- PCR 7 + PIN policy, good and bad cases (wrong PCR, wrong PIN) -- Non-default PCR 0+7 policy w/o PIN, good and bad cases (wrong PCR 0) - -v2: rename test, fix tss2 library installation, fix CI failures -v3: fix ppc64, load module -(cherry picked from commit fd8b9248206734b655de503f8bb16c2d154934ed)Q - -Related: #2087652 ---- - test/TEST-70-TPM2/Makefile | 6 +++++ - test/TEST-70-TPM2/test.sh | 40 +++++++++++++++++++++++++++ - test/test-functions | 2 +- - test/units/testsuite-70.service | 7 +++++ - test/units/testsuite-70.sh | 48 +++++++++++++++++++++++++++++++++ - 5 files changed, 102 insertions(+), 1 deletion(-) - create mode 100644 test/TEST-70-TPM2/Makefile - create mode 100755 test/TEST-70-TPM2/test.sh - create mode 100644 test/units/testsuite-70.service - create mode 100755 test/units/testsuite-70.sh - -diff --git a/test/TEST-70-TPM2/Makefile b/test/TEST-70-TPM2/Makefile -new file mode 100644 -index 0000000000..9f65d4ca4f ---- /dev/null -+++ b/test/TEST-70-TPM2/Makefile -@@ -0,0 +1,6 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+all setup run clean clean-again: -+ @TEST_BASE_DIR=../ ./test.sh --$@ -+ -+.PHONY: all setup run clean clean-again -diff --git a/test/TEST-70-TPM2/test.sh b/test/TEST-70-TPM2/test.sh -new file mode 100755 -index 0000000000..d716614bcf ---- /dev/null -+++ b/test/TEST-70-TPM2/test.sh -@@ -0,0 +1,40 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="cryptenroll/cryptsetup with TPM2 devices" -+IMAGE_NAME="tpm2" -+TEST_NO_NSPAWN=1 -+TEST_REQUIRE_INSTALL_TESTS=0 -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+command -v swtpm >/dev/null 2>&1 || exit 0 -+command -v tpm2_pcrextend >/dev/null 2>&1 || exit 0 -+ -+test_append_files() { -+ ( -+ local workspace="${1:?}" -+ -+ instmods tpm tpm_tis tpm_ibmvtpm -+ install_dmevent -+ generate_module_dependencies -+ inst_binary tpm2_pcrextend -+ ) -+} -+ -+machine="$(uname -m)" -+tpmdevice="tpm-tis" -+if [ "$machine" = "ppc64le" ]; then -+ # tpm-spapr support was introduced in qemu 5.0.0. Skip test for old qemu versions. -+ qemu_min_version "5.0.0" || exit 0 -+ tpmdevice="tpm-spapr" -+fi -+ -+tpmstate=$(mktemp -d) -+swtpm socket --tpm2 --tpmstate dir="$tpmstate" --ctrl type=unixio,path="$tpmstate/sock" & -+trap 'kill %%; rm -rf $tpmstate' SIGINT EXIT -+QEMU_OPTIONS="-chardev socket,id=chrtpm,path=$tpmstate/sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device $tpmdevice,tpmdev=tpm0" -+ -+do_test "$@" -diff --git a/test/test-functions b/test/test-functions -index 4a6436a74b..050fefaf1b 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1198,7 +1198,7 @@ install_missing_libraries() { - local lib path - # A number of dependencies is now optional via dlopen, so the install - # script will not pick them up, since it looks at linkage. -- for lib in libcryptsetup libidn libidn2 pwquality libqrencode tss2-esys tss2-rc tss2-mu libfido2 libbpf libelf libdw; do -+ for lib in libcryptsetup libidn libidn2 pwquality libqrencode tss2-esys tss2-rc tss2-mu tss2-tcti-device libfido2 libbpf libelf libdw; do - ddebug "Searching for $lib via pkg-config" - if pkg-config --exists "$lib"; then - path="$(pkg-config --variable=libdir "$lib")" -diff --git a/test/units/testsuite-70.service b/test/units/testsuite-70.service -new file mode 100644 -index 0000000000..c13c2d51a3 ---- /dev/null -+++ b/test/units/testsuite-70.service -@@ -0,0 +1,7 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=TEST-70-TPM2 -+ -+[Service] -+Type=oneshot -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -diff --git a/test/units/testsuite-70.sh b/test/units/testsuite-70.sh -new file mode 100755 -index 0000000000..f395ef4e5e ---- /dev/null -+++ b/test/units/testsuite-70.sh -@@ -0,0 +1,48 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -ex -+ -+export SYSTEMD_LOG_LEVEL=debug -+ -+ -+# Prepare fresh disk image -+img="/var/tmp/test.img" -+dd if=/dev/zero of=$img bs=1024k count=20 status=none -+echo -n passphrase >/tmp/passphrase -+cryptsetup luksFormat -q --use-urandom $img /tmp/passphrase -+ -+# Enroll unlock with default PCR policy -+env PASSWORD=passphrase systemd-cryptenroll --tpm2-device=auto $img -+/usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 -+/usr/lib/systemd/systemd-cryptsetup detach test-volume -+ -+# Check with wrong PCR -+tpm2_pcrextend 7:sha256=0000000000000000000000000000000000000000000000000000000000000000 -+/usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 && { echo 'unexpected success'; exit 1; } -+ -+# Enroll unlock with PCR+PIN policy -+systemd-cryptenroll --wipe-slot=tpm2 $img -+env PASSWORD=passphrase NEWPIN=123456 systemd-cryptenroll --tpm2-device=auto --tpm2-with-pin=true $img -+env PIN=123456 /usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 -+/usr/lib/systemd/systemd-cryptsetup detach test-volume -+ -+# Check failure with wrong PIN -+env PIN=123457 /usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 && { echo 'unexpected success'; exit 1; } -+ -+# Check failure with wrong PCR (and correct PIN) -+tpm2_pcrextend 7:sha256=0000000000000000000000000000000000000000000000000000000000000000 -+env PIN=123456 /usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 && { echo 'unexpected success'; exit 1; } -+ -+# Enroll unlock with PCR 0+7 -+systemd-cryptenroll --wipe-slot=tpm2 $img -+env PASSWORD=passphrase systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 $img -+/usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 -+/usr/lib/systemd/systemd-cryptsetup detach test-volume -+ -+# Check with wrong PCR 0 -+tpm2_pcrextend 0:sha256=0000000000000000000000000000000000000000000000000000000000000000 -+/usr/lib/systemd/systemd-cryptsetup attach test-volume $img - tpm2-device=auto,headless=1 && exit 1 -+ -+echo OK >/testok -+ -+exit 0 diff --git a/SOURCES/0230-man-rework-description-of-OOMPolicy-a-bit.patch b/SOURCES/0230-man-rework-description-of-OOMPolicy-a-bit.patch new file mode 100644 index 0000000..14690c4 --- /dev/null +++ b/SOURCES/0230-man-rework-description-of-OOMPolicy-a-bit.patch @@ -0,0 +1,48 @@ +From b2d0c171a9ef84fb8ab8d8a428a8f51db37f58ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 13 Dec 2022 15:25:55 +0100 +Subject: [PATCH] man: rework description of OOMPolicy= a bit + +One had to read to the very end of the long description to notice that +the setting is actually primarily intended for oomd. So let's mention oomd +right at the beginning. + +(cherry picked from commit 100d37d4f3111a97f51e37b51eea9243cb037b61) + +Resolves: #2175619 +--- + man/systemd.service.xml | 19 ++++++++++--------- + 1 file changed, 10 insertions(+), 9 deletions(-) + +diff --git a/man/systemd.service.xml b/man/systemd.service.xml +index 8d8dd77689..cae520ceab 100644 +--- a/man/systemd.service.xml ++++ b/man/systemd.service.xml +@@ -1123,17 +1123,18 @@ + + OOMPolicy= + +- Configure the out-of-memory (OOM) kernel killer policy. Note that the userspace OOM ++ Configure the out-of-memory (OOM) killing policy for the kernel and the userspace OOM + killer +- systemd-oomd.service8 +- is a more flexible solution that aims to prevent out-of-memory situations for the userspace, not just +- the kernel. +- +- On Linux, when memory becomes scarce to the point that the kernel has trouble allocating memory +- for itself, it might decide to kill a running process in order to free up memory and reduce memory +- pressure. This setting takes one of continue, stop or ++ systemd-oomd.service8. ++ On Linux, when memory becomes scarce to the point that the kernel has trouble allocating memory for ++ itself, it might decide to kill a running process in order to free up memory and reduce memory ++ pressure. Note that systemd-oomd.service is a more flexible solution that aims ++ to prevent out-of-memory situations for the userspace too, not just the kernel, by attempting to ++ terminate services earlier, before the kernel would have to act. ++ ++ This setting takes one of continue, stop or + kill. If set to continue and a process of the service is +- killed by the kernel's OOM killer this is logged but the service continues running. If set to ++ killed by the OOM killer, this is logged but the service continues running. If set to + stop the event is logged but the service is terminated cleanly by the service + manager. If set to kill and one of the service's processes is killed by the OOM + killer the kernel is instructed to kill all remaining processes of the service too, by setting the diff --git a/SOURCES/0231-core-man-add-missing-integration-of-OOMPolicy-in-sco.patch b/SOURCES/0231-core-man-add-missing-integration-of-OOMPolicy-in-sco.patch new file mode 100644 index 0000000..1ea0d0b --- /dev/null +++ b/SOURCES/0231-core-man-add-missing-integration-of-OOMPolicy-in-sco.patch @@ -0,0 +1,93 @@ +From 6013f45b86f39a502d9e92b96adee402a32de062 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 13 Dec 2022 15:26:58 +0100 +Subject: [PATCH] core,man: add missing integration of OOMPolicy= in scopes + +Fixup for 5fa098357e0ea9f05b00ed5b04a36ef9f64037db. + +(cherry picked from commit d5a1657d5a78e9a101fa91e60921bed54ec162b8) + +Resolves: #2175619 +--- + man/systemd.scope.xml | 2 ++ + man/systemd.service.xml | 22 ++++++++++------------ + src/core/load-fragment-gperf.gperf.in | 1 + + 3 files changed, 13 insertions(+), 12 deletions(-) + +diff --git a/man/systemd.scope.xml b/man/systemd.scope.xml +index 17d2700069..95969bf097 100644 +--- a/man/systemd.scope.xml ++++ b/man/systemd.scope.xml +@@ -105,6 +105,8 @@ + of scope units are the following: + + ++ ++ + + RuntimeMaxSec= + +diff --git a/man/systemd.service.xml b/man/systemd.service.xml +index cae520ceab..1c9e59f722 100644 +--- a/man/systemd.service.xml ++++ b/man/systemd.service.xml +@@ -1120,7 +1120,7 @@ + above. + + +- ++ + OOMPolicy= + + Configure the out-of-memory (OOM) killing policy for the kernel and the userspace OOM +@@ -1133,18 +1133,17 @@ + terminate services earlier, before the kernel would have to act. + + This setting takes one of continue, stop or +- kill. If set to continue and a process of the service is +- killed by the OOM killer, this is logged but the service continues running. If set to +- stop the event is logged but the service is terminated cleanly by the service +- manager. If set to kill and one of the service's processes is killed by the OOM +- killer the kernel is instructed to kill all remaining processes of the service too, by setting the ++ kill. If set to continue and a process in the unit is ++ killed by the OOM killer, this is logged but the unit continues running. If set to ++ stop the event is logged but the unit is terminated cleanly by the service ++ manager. If set to kill and one of the unit's processes is killed by the OOM ++ killer the kernel is instructed to kill all remaining processes of the unit too, by setting the + memory.oom.group attribute to 1; also see kernel documentation. +- ++ url="https://docs.kernel.org/admin-guide/cgroup-v2.html">kernel documentation. + + Defaults to the setting DefaultOOMPolicy= in + systemd-system.conf5 +- is set to, except for services where Delegate= is turned on, where it defaults to ++ is set to, except for units where Delegate= is turned on, where it defaults to + continue. + + Use the OOMScoreAdjust= setting to configure whether processes of the unit +@@ -1154,10 +1153,9 @@ + details. + + This setting also applies to systemd-oomd. Similarly to the kernel OOM +- kills, this setting determines the state of the service after systemd-oomd kills a +- cgroup associated with the service. ++ kills, this setting determines the state of the unit after systemd-oomd kills a ++ cgroup associated with it. + +- + + + Check +diff --git a/src/core/load-fragment-gperf.gperf.in b/src/core/load-fragment-gperf.gperf.in +index 7675b7bb2e..81a5971339 100644 +--- a/src/core/load-fragment-gperf.gperf.in ++++ b/src/core/load-fragment-gperf.gperf.in +@@ -555,6 +555,7 @@ Path.TriggerLimitBurst, config_parse_unsigned, + Scope.RuntimeMaxSec, config_parse_sec, 0, offsetof(Scope, runtime_max_usec) + Scope.RuntimeRandomizedExtraSec, config_parse_sec, 0, offsetof(Scope, runtime_rand_extra_usec) + Scope.TimeoutStopSec, config_parse_sec, 0, offsetof(Scope, timeout_stop_usec) ++Scope.OOMPolicy, config_parse_oom_policy, 0, offsetof(Scope, oom_policy) + {# The [Install] section is ignored here #} + Install.Alias, NULL, 0, 0 + Install.WantedBy, NULL, 0, 0 diff --git a/SOURCES/0231-env-util-replace-unsetenv_erase-by-new-getenv_steal_.patch b/SOURCES/0231-env-util-replace-unsetenv_erase-by-new-getenv_steal_.patch deleted file mode 100644 index d748e40..0000000 --- a/SOURCES/0231-env-util-replace-unsetenv_erase-by-new-getenv_steal_.patch +++ /dev/null @@ -1,434 +0,0 @@ -From 75e45d84d9391e29d49f6ec05272c3fb9a92bbd8 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Sat, 19 Feb 2022 00:08:39 +0100 -Subject: [PATCH] env-util: replace unsetenv_erase() by new - getenv_steal_erase() helper - -The new helper combines a bunch of steps every invocation of -unsetenv_erase() did so far: getenv() + strdup() + unsetenv_erase(). -Let's unify this into one helper that is harder to use incorrectly. It's -in inspired by TAKE_PTR() in a way: get the env var out and invalidate -where it was before. - -(cherry picked from commit e99ca1474145f7fad38bb0255d344f4ad7717ef5) - -Related: #2087652 ---- - src/basic/env-util.c | 27 ++++++++++--- - src/basic/env-util.h | 2 + - src/cryptenroll/cryptenroll-password.c | 15 ++----- - src/cryptenroll/cryptenroll.c | 20 ++++------ - src/cryptsetup/cryptsetup-fido2.c | 12 +++--- - src/cryptsetup/cryptsetup.c | 15 ++++--- - src/home/homectl.c | 55 ++++++++++++-------------- - src/shared/pkcs11-util.c | 11 +++--- - src/test/test-env-util.c | 16 +++++--- - 9 files changed, 89 insertions(+), 84 deletions(-) - -diff --git a/src/basic/env-util.c b/src/basic/env-util.c -index 455f5d76f5..b60c9f9fdc 100644 ---- a/src/basic/env-util.c -+++ b/src/basic/env-util.c -@@ -857,19 +857,36 @@ int getenv_path_list(const char *name, char ***ret_paths) { - return 1; - } - --int unsetenv_erase(const char *name) { -- char *p; -+int getenv_steal_erase(const char *name, char **ret) { -+ _cleanup_(erase_and_freep) char *a = NULL; -+ char *e; - - assert(name); - -- p = getenv(name); -- if (!p) -+ /* Reads an environment variable, makes a copy of it, erases its memory in the environment block and removes -+ * it from there. Usecase: reading passwords from the env block (which is a bad idea, but useful for -+ * testing, and given that people are likely going to misuse this, be thorough) */ -+ -+ e = getenv(name); -+ if (!e) { -+ if (ret) -+ *ret = NULL; - return 0; -+ } - -- string_erase(p); -+ if (ret) { -+ a = strdup(e); -+ if (!a) -+ return -ENOMEM; -+ } -+ -+ string_erase(e); - - if (unsetenv(name) < 0) - return -errno; - -+ if (ret) -+ *ret = TAKE_PTR(a); -+ - return 1; - } -diff --git a/src/basic/env-util.h b/src/basic/env-util.h -index 38bfc8a3f2..e4084af9a5 100644 ---- a/src/basic/env-util.h -+++ b/src/basic/env-util.h -@@ -70,3 +70,5 @@ int setenv_systemd_exec_pid(bool update_only); - int getenv_path_list(const char *name, char ***ret_paths); - - int unsetenv_erase(const char *name); -+ -+int getenv_steal_erase(const char *name, char **ret); -diff --git a/src/cryptenroll/cryptenroll-password.c b/src/cryptenroll/cryptenroll-password.c -index 1775912d8e..9b7c8b5400 100644 ---- a/src/cryptenroll/cryptenroll-password.c -+++ b/src/cryptenroll/cryptenroll-password.c -@@ -17,20 +17,13 @@ int enroll_password( - _cleanup_free_ char *error = NULL; - const char *node; - int r, keyslot; -- char *e; - - assert_se(node = crypt_get_device_name(cd)); - -- e = getenv("NEWPASSWORD"); -- if (e) { -- -- new_password = strdup(e); -- if (!new_password) -- return log_oom(); -- -- assert_se(unsetenv_erase("NEWPASSWORD") >= 0); -- -- } else { -+ r = getenv_steal_erase("NEWPASSWORD", &new_password); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r == 0) { - _cleanup_free_ char *disk_path = NULL; - unsigned i = 5; - const char *id; -diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c -index ed19f3f8f4..2e11ffe291 100644 ---- a/src/cryptenroll/cryptenroll.c -+++ b/src/cryptenroll/cryptenroll.c -@@ -422,8 +422,8 @@ static int prepare_luks( - size_t *ret_volume_key_size) { - - _cleanup_(crypt_freep) struct crypt_device *cd = NULL; -+ _cleanup_(erase_and_freep) char *envpw = NULL; - _cleanup_(erase_and_freep) void *vk = NULL; -- char *e = NULL; - size_t vks; - int r; - -@@ -458,23 +458,17 @@ static int prepare_luks( - if (!vk) - return log_oom(); - -- e = getenv("PASSWORD"); -- if (e) { -- _cleanup_(erase_and_freep) char *password = NULL; -- -- password = strdup(e); -- if (!password) -- return log_oom(); -- -- assert_se(unsetenv_erase("PASSWORD") >= 0); -- -+ r = getenv_steal_erase("PASSWORD", &envpw); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r > 0) { - r = crypt_volume_key_get( - cd, - CRYPT_ANY_SLOT, - vk, - &vks, -- password, -- strlen(password)); -+ envpw, -+ strlen(envpw)); - if (r < 0) - return log_error_errno(r, "Password from environment variable $PASSWORD did not work."); - } else { -diff --git a/src/cryptsetup/cryptsetup-fido2.c b/src/cryptsetup/cryptsetup-fido2.c -index 35d5dbe007..74053b8ce3 100644 ---- a/src/cryptsetup/cryptsetup-fido2.c -+++ b/src/cryptsetup/cryptsetup-fido2.c -@@ -30,12 +30,12 @@ int acquire_fido2_key( - size_t *ret_decrypted_key_size, - AskPasswordFlags ask_password_flags) { - -+ _cleanup_(erase_and_freep) char *envpw = NULL; - _cleanup_strv_free_erase_ char **pins = NULL; - _cleanup_free_ void *loaded_salt = NULL; - bool device_exists = false; - const char *salt; - size_t salt_size; -- char *e; - int r; - - ask_password_flags |= ASK_PASSWORD_PUSH_CACHE | ASK_PASSWORD_ACCEPT_CACHED; -@@ -66,13 +66,13 @@ int acquire_fido2_key( - salt = loaded_salt; - } - -- e = getenv("PIN"); -- if (e) { -- pins = strv_new(e); -+ r = getenv_steal_erase("PIN", &envpw); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r > 0) { -+ pins = strv_new(envpw); - if (!pins) - return log_oom(); -- -- assert_se(unsetenv_erase("PIN") >= 0); - } - - for (;;) { -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index fc1f37730f..692e1d137b 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -829,20 +829,19 @@ static bool libcryptsetup_plugins_support(void) { - - #if HAVE_LIBCRYPTSETUP_PLUGINS - static int acquire_pins_from_env_variable(char ***ret_pins) { -- char *e; -+ _cleanup_(erase_and_freep) char *envpin = NULL; - _cleanup_strv_free_erase_ char **pins = NULL; -+ int r; - - assert(ret_pins); - -- e = getenv("PIN"); -- if (e) { -- pins = strv_new(e); -+ r = getenv_steal_erase("PIN", &envpin); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (r > 0) { -+ pins = strv_new(envpin); - if (!pins) - return log_oom(); -- -- string_erase(e); -- if (unsetenv("PIN") < 0) -- return log_error_errno(errno, "Failed to unset $PIN: %m"); - } - - *ret_pins = TAKE_PTR(pins); -diff --git a/src/home/homectl.c b/src/home/homectl.c -index 4aeaaf6b9a..f0d1dac6ab 100644 ---- a/src/home/homectl.c -+++ b/src/home/homectl.c -@@ -201,24 +201,25 @@ static int acquire_existing_password( - AskPasswordFlags flags) { - - _cleanup_(strv_free_erasep) char **password = NULL; -+ _cleanup_(erase_and_freep) char *envpw = NULL; - _cleanup_free_ char *question = NULL; -- char *e; - int r; - - assert(user_name); - assert(hr); - -- e = getenv("PASSWORD"); -- if (e) { -+ r = getenv_steal_erase("PASSWORD", &envpw); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r > 0) { - /* People really shouldn't use environment variables for passing passwords. We support this - * only for testing purposes, and do not document the behaviour, so that people won't - * actually use this outside of testing. */ - -- r = user_record_set_password(hr, STRV_MAKE(e), true); -+ r = user_record_set_password(hr, STRV_MAKE(envpw), true); - if (r < 0) - return log_error_errno(r, "Failed to store password: %m"); - -- assert_se(unsetenv_erase("PASSWORD") >= 0); - return 1; - } - -@@ -261,24 +262,25 @@ static int acquire_recovery_key( - AskPasswordFlags flags) { - - _cleanup_(strv_free_erasep) char **recovery_key = NULL; -+ _cleanup_(erase_and_freep) char *envpw = NULL; - _cleanup_free_ char *question = NULL; -- char *e; - int r; - - assert(user_name); - assert(hr); - -- e = getenv("RECOVERY_KEY"); -- if (e) { -+ r = getenv_steal_erase("PASSWORD", &envpw); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r > 0) { - /* People really shouldn't use environment variables for passing secrets. We support this - * only for testing purposes, and do not document the behaviour, so that people won't - * actually use this outside of testing. */ - -- r = user_record_set_password(hr, STRV_MAKE(e), true); /* recovery keys are stored in the record exactly like regular passwords! */ -+ r = user_record_set_password(hr, STRV_MAKE(envpw), true); /* recovery keys are stored in the record exactly like regular passwords! */ - if (r < 0) - return log_error_errno(r, "Failed to store recovery key: %m"); - -- assert_se(unsetenv_erase("RECOVERY_KEY") >= 0); - return 1; - } - -@@ -318,20 +320,21 @@ static int acquire_token_pin( - AskPasswordFlags flags) { - - _cleanup_(strv_free_erasep) char **pin = NULL; -+ _cleanup_(erase_and_freep) char *envpin = NULL; - _cleanup_free_ char *question = NULL; -- char *e; - int r; - - assert(user_name); - assert(hr); - -- e = getenv("PIN"); -- if (e) { -- r = user_record_set_token_pin(hr, STRV_MAKE(e), false); -+ r = getenv_steal_erase("PIN", &envpin); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (r > 0) { -+ r = user_record_set_token_pin(hr, STRV_MAKE(envpin), false); - if (r < 0) - return log_error_errno(r, "Failed to store token PIN: %m"); - -- assert_se(unsetenv_erase("PIN") >= 0); - return 1; - } - -@@ -1147,33 +1150,25 @@ static int acquire_new_password( - bool suggest, - char **ret) { - -+ _cleanup_(erase_and_freep) char *envpw = NULL; - unsigned i = 5; -- char *e; - int r; - - assert(user_name); - assert(hr); - -- e = getenv("NEWPASSWORD"); -- if (e) { -- _cleanup_(erase_and_freep) char *copy = NULL; -- -+ r = getenv_steal_erase("NEWPASSWORD", &envpw); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire password from environment: %m"); -+ if (r > 0) { - /* As above, this is not for use, just for testing */ - -- if (ret) { -- copy = strdup(e); -- if (!copy) -- return log_oom(); -- } -- -- r = user_record_set_password(hr, STRV_MAKE(e), /* prepend = */ true); -+ r = user_record_set_password(hr, STRV_MAKE(envpw), /* prepend = */ true); - if (r < 0) - return log_error_errno(r, "Failed to store password: %m"); - -- assert_se(unsetenv_erase("NEWPASSWORD") >= 0); -- - if (ret) -- *ret = TAKE_PTR(copy); -+ *ret = TAKE_PTR(envpw); - - return 0; - } -diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c -index 4f9ec1fbd6..80feeb1fae 100644 ---- a/src/shared/pkcs11-util.c -+++ b/src/shared/pkcs11-util.c -@@ -275,15 +275,16 @@ int pkcs11_token_login( - - for (unsigned tries = 0; tries < 3; tries++) { - _cleanup_strv_free_erase_ char **passwords = NULL; -- char *e; -+ _cleanup_(erase_and_freep) char *envpin = NULL; - -- e = getenv("PIN"); -- if (e) { -- passwords = strv_new(e); -+ r = getenv_steal_erase("PIN", &envpin); -+ if (r < 0) -+ return log_error_errno(r, "Failed to acquire PIN from environment: %m"); -+ if (r > 0) { -+ passwords = strv_new(envpin); - if (!passwords) - return log_oom(); - -- assert_se(unsetenv_erase("PIN") >= 0); - } else if (headless) - return log_error_errno(SYNTHETIC_ERRNO(ENOPKG), "PIN querying disabled via 'headless' option. Use the 'PIN' environment variable."); - else { -diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c -index 4d5f39b5b7..cc37d96327 100644 ---- a/src/test/test-env-util.c -+++ b/src/test/test-env-util.c -@@ -406,16 +406,16 @@ TEST(setenv_systemd_exec_pid) { - assert_se(set_unset_env("SYSTEMD_EXEC_PID", saved, 1) >= 0); - } - --TEST(unsetenv_erase) { -+TEST(getenv_steal_erase) { - int r; - -- r = safe_fork("(sd-unsetenverase)", FORK_DEATHSIG|FORK_LOG|FORK_WAIT, NULL); -+ r = safe_fork("(sd-getenvstealerase)", FORK_DEATHSIG|FORK_LOG|FORK_WAIT, NULL); - if (r == 0) { - _cleanup_strv_free_ char **l = NULL; - - /* child */ - -- assert_se(unsetenv_erase("thisenvvardefinitelywontexist") == 0); -+ assert_se(getenv_steal_erase("thisenvvardefinitelywontexist", NULL) == 0); - - l = strv_new("FOO=BAR", "QUUX=PIFF", "ONE=TWO", "A=B"); - assert_se(strv_length(l) == 4); -@@ -423,7 +423,7 @@ TEST(unsetenv_erase) { - environ = l; - - STRV_FOREACH(e, environ) { -- _cleanup_free_ char *n = NULL; -+ _cleanup_free_ char *n = NULL, *copy1 = NULL, *copy2 = NULL; - char *eq; - - eq = strchr(*e, '='); -@@ -433,9 +433,13 @@ TEST(unsetenv_erase) { - n = strndup(*e, eq - *e); - assert_se(n); - -- assert_se(streq_ptr(getenv(n), eq + 1)); -+ copy1 = strdup(eq + 1); -+ assert_se(copy1); -+ -+ assert_se(streq_ptr(getenv(n), copy1)); - assert_se(getenv(n) == eq + 1); -- assert_se(unsetenv_erase(n) > 0); -+ assert_se(getenv_steal_erase(n, ©2) > 0); -+ assert_se(streq_ptr(copy1, copy2)); - assert_se(isempty(eq + 1)); - assert_se(!getenv(n)); - } diff --git a/SOURCES/0232-meson-Store-fuzz-tests-in-structured-way.patch b/SOURCES/0232-meson-Store-fuzz-tests-in-structured-way.patch new file mode 100644 index 0000000..f82313c --- /dev/null +++ b/SOURCES/0232-meson-Store-fuzz-tests-in-structured-way.patch @@ -0,0 +1,161 @@ +From c37de74b2eeefcbcd3f6d7f218e33cda3c3b5397 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Koutn=C3=BD?= +Date: Thu, 6 Oct 2022 19:06:08 +0200 +Subject: [PATCH] meson: Store fuzz tests in structured way + +Put fuzzer tests into dictionary that maps `fuzzer->list of inputs` +instead of the flat list. +This is just refactoring with no intentional . + +(cherry picked from commit 7db5761ddaa53eba197b5abc485e3290f47c661f) + +Related: #2175619 +--- + meson.build | 69 ++++++++++++++++++------------------------- + test/fuzz/meson.build | 22 ++++++++++---- + 2 files changed, 45 insertions(+), 46 deletions(-) + +diff --git a/meson.build b/meson.build +index 35704947e3..dc7388cfe3 100644 +--- a/meson.build ++++ b/meson.build +@@ -4013,19 +4013,14 @@ foreach tuple : fuzzers + build_by_default : fuzzer_build) + fuzzer_exes += exe + +- if want_tests != 'false' ++ if want_tests != 'false' and name in fuzz_regression_tests + # Run the fuzz regression tests without any sanitizers enabled. + # Additional invocations with sanitizers may be added below. +- foreach p : fuzz_regression_tests +- b = p.split('/')[-2] +- c = p.split('/')[-1] +- +- if b == name +- test('@0@_@1@'.format(b, c), +- exe, +- suite : 'fuzzers', +- args : [project_source_root / p]) +- endif ++ foreach fuzz_in : fuzz_regression_tests[name] ++ test('@0@_@1@'.format(name, fuzz_in), ++ exe, ++ suite : 'fuzzers', ++ args : [project_source_root / fuzz_testsdir / name / fuzz_in]) + endforeach + endif + endforeach +@@ -4128,45 +4123,39 @@ endif + ############################################################ + + # Enable tests for all supported sanitizers +-foreach tuple : sanitizers ++foreach tuple : fuzz_sanitizers + sanitizer = tuple[0] + build = tuple[1] + + if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer)) +- prev = '' +- foreach p : fuzz_regression_tests +- b = p.split('/')[-2] +- c = p.split('/')[-1] +- +- name = '@0@:@1@'.format(b, sanitizer) +- +- if name != prev +- if want_tests == 'false' +- message('Not compiling @0@ because tests is set to false'.format(name)) +- elif fuzz_tests +- exe = custom_target( +- name, +- output : name, +- depends : build, +- command : [ln, '-fs', +- build.full_path() / b, +- '@OUTPUT@'], +- build_by_default : true) +- else +- message('Not compiling @0@ because fuzz-tests is set to false'.format(name)) +- endif ++ foreach fuzzer, fuzz_ins : fuzz_regression_tests ++ name = '@0@:@1@'.format(fuzzer, sanitizer) ++ if want_tests == 'false' ++ message('Not compiling @0@ because tests is set to false'.format(name)) ++ continue + endif +- prev = name +- +- if fuzz_tests +- test('@0@_@1@_@2@'.format(b, c, sanitizer), ++ if not fuzz_tests ++ message('Not compiling @0@ because fuzz-tests is set to false'.format(name)) ++ continue ++ endif ++ exe = custom_target( ++ name, ++ output : name, ++ depends : build, ++ command : [ln, '-fs', ++ build.full_path() / fuzzer, ++ '@OUTPUT@'], ++ build_by_default : true) ++ ++ foreach fuzz_in : fuzz_ins ++ test('@0@_@1@_@2@'.format(fuzzer, fuzz_in, sanitizer), + env, + suite : 'fuzz+san', + env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'], + timeout : 60, + args : [exe.full_path(), +- project_source_root / p]) +- endif ++ project_source_root / fuzz_testsdir / fuzzer / fuzz_in]) ++ endforeach + endforeach + endif + endforeach +diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build +index 80362d4154..82738fd1b7 100644 +--- a/test/fuzz/meson.build ++++ b/test/fuzz/meson.build +@@ -16,24 +16,34 @@ sanitize_address_undefined = custom_target( + ' '.join(cc.cmd_array()), + cxx_cmd]) + +-sanitizers = [['address,undefined', sanitize_address_undefined]] ++fuzz_sanitizers = [['address,undefined', sanitize_address_undefined]] ++fuzz_testsdir = 'test/fuzz' + + if git.found() and fs.exists(project_source_root / '.git') + out = run_command(env, '-u', 'GIT_WORK_TREE', + git, '--git-dir=@0@/.git'.format(project_source_root), +- 'ls-files', ':/test/fuzz/*/*', ++ 'ls-files', ':/@0@/*/*'.format(fuzz_testsdir), + check: true) + else +- out = run_command(sh, '-c', 'cd "@0@"; echo test/fuzz/*/*'.format(project_source_root), check: true) ++ out = run_command(sh, '-c', 'cd "@0@"; echo @1@/*/*'.format(project_source_root, fuzz_testsdir), check: true) + endif + +-fuzz_regression_tests = [] ++fuzz_regression_tests = {} + foreach p : out.stdout().split() + # Remove the last entry which is ''. + # + # Also, backslashes get mangled, so skip test. See + # https://github.com/mesonbuild/meson/issues/1564. +- if not p.contains('\\') +- fuzz_regression_tests += p ++ if p.contains('\\') ++ continue + endif ++ fuzzer = p.split('/')[-2] ++ fuzz_in = p.split('/')[-1] ++ if fuzzer not in fuzz_regression_tests ++ fuzz_regression_tests += {fuzzer: []} ++ endif ++ # Meson parser provision for: fuzz_regression_tests[fuzzer] += [fuzz_in] ++ l = fuzz_regression_tests[fuzzer] ++ l += [fuzz_in] ++ fuzz_regression_tests += {fuzzer: l} + endforeach diff --git a/SOURCES/0232-test-install-libxkbcommon-and-x11-keymaps.patch b/SOURCES/0232-test-install-libxkbcommon-and-x11-keymaps.patch deleted file mode 100644 index c6dea04..0000000 --- a/SOURCES/0232-test-install-libxkbcommon-and-x11-keymaps.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 6bf4cd485735ecff5c0ccfb6b36bf1b2f310997a Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:12:00 +0900 -Subject: [PATCH] test: install libxkbcommon and x11 keymaps - -(cherry picked from commit 1136175c7fd4898c6fdc59c1f729386cf994265c) - -Related: #2087652 ---- - test/test-functions | 19 ++++++++++++++++++- - 1 file changed, 18 insertions(+), 1 deletion(-) - -diff --git a/test/test-functions b/test/test-functions -index 050fefaf1b..644c3a8613 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -685,6 +685,7 @@ setup_basic_environment() { - install_dbus - install_fonts - install_keymaps -+ install_x11_keymaps - install_terminfo - install_execs - install_fs_tools -@@ -1198,7 +1199,7 @@ install_missing_libraries() { - local lib path - # A number of dependencies is now optional via dlopen, so the install - # script will not pick them up, since it looks at linkage. -- for lib in libcryptsetup libidn libidn2 pwquality libqrencode tss2-esys tss2-rc tss2-mu tss2-tcti-device libfido2 libbpf libelf libdw; do -+ for lib in libcryptsetup libidn libidn2 pwquality libqrencode tss2-esys tss2-rc tss2-mu tss2-tcti-device libfido2 libbpf libelf libdw xkbcommon; do - ddebug "Searching for $lib via pkg-config" - if pkg-config --exists "$lib"; then - path="$(pkg-config --variable=libdir "$lib")" -@@ -1214,6 +1215,10 @@ install_missing_libraries() { - # (eg: libcryptsetup), so just ignore them - inst_libs "${path}/${lib}.so" || true - inst_library "${path}/${lib}.so" || true -+ -+ if [[ "$lib" == "libxkbcommon" ]]; then -+ install_x11_keymaps full -+ fi - else - ddebug "$lib.pc not found, skipping" - continue -@@ -1889,6 +1894,18 @@ install_keymaps() { - fi - } - -+install_x11_keymaps() { -+ dinfo "Install x11 keymaps" -+ -+ if (( $# == 0 )); then -+ # Install only keymap list. -+ inst /usr/share/X11/xkb/rules/base.lst -+ else -+ # When it takes any argument, then install all keymaps. -+ inst_recursive /usr/share/X11/xkb -+ fi -+} -+ - install_zoneinfo() { - dinfo "Install time zones" - inst_any /usr/share/zoneinfo/Asia/Seoul diff --git a/SOURCES/0233-meson-Generate-fuzzer-inputs-with-directives.patch b/SOURCES/0233-meson-Generate-fuzzer-inputs-with-directives.patch new file mode 100644 index 0000000..b0915b5 --- /dev/null +++ b/SOURCES/0233-meson-Generate-fuzzer-inputs-with-directives.patch @@ -0,0 +1,2560 @@ +From d8468261b4f42c4252db283a9fcb2aef5abc39fd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Koutn=C3=BD?= +Date: Thu, 6 Oct 2022 16:48:01 +0200 +Subject: [PATCH] meson: Generate fuzzer inputs with directives + +The lists of directives for fuzzer tests are maintained manually in the +repo. There is a tools/check-directives.sh script that runs during test +phase and reports stale directive lists. +Let's rework the script into a generator so that these directive files +are created on-the-flight and needn't be updated whenever a unit file +directives change. The scripts is rewritten in Python to get rid of gawk +dependency and each generated file is a separate meson target so that +incremental builds refresh what is just necessary (and parallelize +(negligible)). + +Note: test/fuzz/fuzz-unit-file/directives-all.slice is kept since there +is not automated way to generate it (it is not covered by the check +script neither). + +(cherry picked from commit 7e343b530e68c55f868a4a8261824ca543319a52) + +Related: #2175619 +--- + meson.build | 31 +- + test/fuzz/fuzz-link-parser/directives.link | 97 --- + .../fuzz/fuzz-netdev-parser/directives.netdev | 258 -------- + test/fuzz/fuzz-network-parser/directives | 595 ------------------ + test/fuzz/fuzz-unit-file/directives.automount | 6 - + test/fuzz/fuzz-unit-file/directives.mount | 216 ------- + test/fuzz/fuzz-unit-file/directives.path | 12 - + test/fuzz/fuzz-unit-file/directives.scope | 68 -- + test/fuzz/fuzz-unit-file/directives.service | 370 ----------- + test/fuzz/fuzz-unit-file/directives.slice | 58 -- + test/fuzz/fuzz-unit-file/directives.socket | 266 -------- + test/fuzz/fuzz-unit-file/directives.swap | 210 ------- + test/fuzz/fuzz-unit-file/directives.timer | 17 - + test/fuzz/generate-directives.py | 26 + + test/fuzz/meson.build | 50 +- + tools/check-directives.sh | 72 --- + 16 files changed, 87 insertions(+), 2265 deletions(-) + delete mode 100644 test/fuzz/fuzz-link-parser/directives.link + delete mode 100644 test/fuzz/fuzz-netdev-parser/directives.netdev + delete mode 100644 test/fuzz/fuzz-network-parser/directives + delete mode 100644 test/fuzz/fuzz-unit-file/directives.automount + delete mode 100644 test/fuzz/fuzz-unit-file/directives.mount + delete mode 100644 test/fuzz/fuzz-unit-file/directives.path + delete mode 100644 test/fuzz/fuzz-unit-file/directives.scope + delete mode 100644 test/fuzz/fuzz-unit-file/directives.service + delete mode 100644 test/fuzz/fuzz-unit-file/directives.slice + delete mode 100644 test/fuzz/fuzz-unit-file/directives.socket + delete mode 100644 test/fuzz/fuzz-unit-file/directives.swap + delete mode 100644 test/fuzz/fuzz-unit-file/directives.timer + create mode 100644 test/fuzz/generate-directives.py + delete mode 100755 tools/check-directives.sh + +diff --git a/meson.build b/meson.build +index dc7388cfe3..5b2e7ca172 100644 +--- a/meson.build ++++ b/meson.build +@@ -3997,6 +3997,7 @@ foreach tuple : fuzzers + else + sources += 'src/fuzz/fuzz-main.c' + endif ++ sources += fuzz_generated_directives + + # FIXME: Use fs.stem() with meson >= 0.54.0 + name = '@0@'.format(sources[0]).split('/')[-1].split('.')[0] +@@ -4016,11 +4017,14 @@ foreach tuple : fuzzers + if want_tests != 'false' and name in fuzz_regression_tests + # Run the fuzz regression tests without any sanitizers enabled. + # Additional invocations with sanitizers may be added below. +- foreach fuzz_in : fuzz_regression_tests[name] ++ foreach tuple : fuzz_regression_tests[name] ++ fuzz_dir = tuple[0] ++ fuzz_in = tuple[1] + test('@0@_@1@'.format(name, fuzz_in), + exe, + suite : 'fuzzers', +- args : [project_source_root / fuzz_testsdir / name / fuzz_in]) ++ args : [fuzz_dir != '' ? project_source_root / fuzz_dir / name / fuzz_in ++ : fuzz_generated_in_dir / '@0@_@1@'.format(name, fuzz_in)]) + endforeach + endif + endforeach +@@ -4109,19 +4113,6 @@ foreach exec : public_programs + endif + endforeach + +-############################################################ +- +-check_directives_sh = find_program('tools/check-directives.sh') +- +-if want_tests != 'false' +- test('check-directives', +- check_directives_sh, +- suite : 'dist-check', +- args : [project_source_root, project_build_root]) +-endif +- +-############################################################ +- + # Enable tests for all supported sanitizers + foreach tuple : fuzz_sanitizers + sanitizer = tuple[0] +@@ -4141,20 +4132,24 @@ foreach tuple : fuzz_sanitizers + exe = custom_target( + name, + output : name, +- depends : build, ++ depends : [build] + fuzz_generated_directives, + command : [ln, '-fs', + build.full_path() / fuzzer, + '@OUTPUT@'], + build_by_default : true) + +- foreach fuzz_in : fuzz_ins ++ foreach tuple : fuzz_ins ++ fuzz_dir = tuple[0] ++ fuzz_in = tuple[1] ++ + test('@0@_@1@_@2@'.format(fuzzer, fuzz_in, sanitizer), + env, + suite : 'fuzz+san', + env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'], + timeout : 60, + args : [exe.full_path(), +- project_source_root / fuzz_testsdir / fuzzer / fuzz_in]) ++ fuzz_dir != '' ? project_source_root / fuzz_dir / fuzzer / fuzz_in ++ : fuzz_generated_in_dir / '@0@_@1@'.format(fuzzer, fuzz_in)]) + endforeach + endforeach + endif +diff --git a/test/fuzz/fuzz-link-parser/directives.link b/test/fuzz/fuzz-link-parser/directives.link +deleted file mode 100644 +index a1c797a297..0000000000 +--- a/test/fuzz/fuzz-link-parser/directives.link ++++ /dev/null +@@ -1,97 +0,0 @@ +-[Match] +-Architecture= +-Credential= +-Driver= +-Firmware= +-Host= +-KernelCommandLine= +-KernelVersion= +-Kind= +-MACAddress= +-OriginalName= +-Path= +-PermanentMACAddress= +-Property= +-Type= +-Virtualization= +-[Link] +-Description= +-MACAddressPolicy= +-MACAddress= +-NamePolicy= +-Name= +-AlternativeNamesPolicy= +-AlternativeName= +-Alias= +-TransmitQueues= +-ReceiveQueues= +-TransmitQueueLength= +-MTUBytes= +-BitsPerSecond= +-Duplex= +-AutoNegotiation= +-WakeOnLan= +-WakeOnLanPassword= +-Port= +-ReceiveChecksumOffload= +-TransmitChecksumOffload= +-GenericSegmentationOffload= +-TCPSegmentationOffload= +-TCP6SegmentationOffload= +-UDPSegmentationOffload= +-GenericReceiveOffload= +-GenericReceiveOffloadHardware= +-LargeReceiveOffload= +-ReceiveVLANCTAGHardwareAcceleration= +-TransmitVLANCTAGHardwareAcceleration= +-ReceiveVLANCTAGFilter= +-TransmitVLANSTAGHardwareAcceleration= +-NTupleFilter= +-RxChannels= +-TxChannels= +-OtherChannels= +-CombinedChannels= +-Advertise= +-RxBufferSize= +-RxMiniBufferSize= +-RxJumboBufferSize= +-TxBufferSize= +-RxFlowControl= +-TxFlowControl= +-AutoNegotiationFlowControl= +-GenericSegmentOffloadMaxBytes= +-GenericSegmentOffloadMaxSegments= +-RxCoalesceSec= +-RxMaxCoalescedFrames= +-RxCoalesceIrqSec= +-RxMaxCoalescedIrqFrames= +-TxCoalesceSec= +-TxMaxCoalescedFrames= +-TxCoalesceIrqSec= +-TxMaxCoalescedIrqFrames= +-StatisticsBlockCoalesceSec= +-UseAdaptiveRxCoalesce= +-UseAdaptiveTxCoalesce= +-CoalescePacketRateLow= +-RxCoalesceLowSec= +-RxMaxCoalescedLowFrames= +-TxCoalesceLowSec= +-TxMaxCoalescedLowFrames= +-CoalescePacketRateHigh= +-RxCoalesceHighSec= +-RxMaxCoalescedHighFrames= +-TxCoalesceHighSec= +-TxMaxCoalescedHighFrames= +-CoalescePacketRateSampleIntervalSec= +-MDI= +-SR-IOVVirtualFunctions= +-[SR-IOV] +-VirtualFunction= +-MACSpoofCheck= +-VLANId= +-VLANProtocol= +-QualityOfService= +-QueryReceiveSideScaling= +-Trust= +-LinkState= +-MACAddress= +diff --git a/test/fuzz/fuzz-netdev-parser/directives.netdev b/test/fuzz/fuzz-netdev-parser/directives.netdev +deleted file mode 100644 +index 309941f58d..0000000000 +--- a/test/fuzz/fuzz-netdev-parser/directives.netdev ++++ /dev/null +@@ -1,258 +0,0 @@ +-[VLAN] +-MVRP= +-LooseBinding= +-ReorderHeader= +-Id= +-GVRP= +-Protocol= +-EgressQOSMaps= +-IngressQOSMaps= +-[MACVLAN] +-Mode= +-SourceMACAddress= +-BroadcastMulticastQueueLength= +-[WireGuard] +-ListenPort= +-PrivateKey= +-PrivateKeyFile= +-FwMark= +-FirewallMark= +-RouteTable= +-RouteMetric= +-[MACVTAP] +-Mode= +-SourceMACAddress= +-[Match] +-Architecture= +-Credential= +-Firmware= +-Host= +-KernelCommandLine= +-KernelVersion= +-Virtualization= +-[GENEVE] +-DestinationPort= +-TTL= +-UDP6ZeroCheckSumTx= +-TOS= +-Id= +-UDPChecksum= +-UDP6ZeroChecksumTx= +-FlowLabel= +-UDP6ZeroChecksumRx= +-Remote= +-UDP6ZeroCheckSumRx= +-IPDoNotFragment= +-[Bridge] +-ForwardDelaySec= +-HelloTimeSec= +-MaxAgeSec= +-STP= +-MulticastSnooping= +-DefaultPVID= +-MulticastQuerier= +-AgeingTimeSec= +-Priority= +-GroupForwardMask= +-VLANFiltering= +-VLANProtocol= +-MulticastIGMPVersion= +-[VRF] +-TableId= +-Table= +-[Peer] +-MACAddress= +-Name= +-[WireGuardPeer] +-Endpoint= +-PresharedKey= +-PresharedKeyFile= +-PersistentKeepalive= +-PublicKey= +-AllowedIPs= +-RouteTable= +-RouteMetric= +-[Tunnel] +-FooOverUDP= +-IPv6FlowLabel= +-Remote= +-AllowLocalRemote= +-Local= +-TOS= +-Independent= +-AssignToLoopback= +-Key= +-InputKey= +-Encapsulation= +-Mode= +-OutputKey= +-DiscoverPathMTU= +-FOUDestinationPort= +-CopyDSCP= +-EncapsulationLimit= +-TTL= +-FOUSourcePort= +-IPv6RapidDeploymentPrefix= +-ERSPANVersion= +-ERSPANIndex= +-ERSPANDirection= +-ERSPANHardwareId= +-SerializeTunneledPackets= +-ISATAP= +-External= +-[VXLAN] +-UDP6ZeroChecksumRx= +-ARPProxy= +-FlowLabel= +-Local= +-RemoteChecksumTx= +-RouteShortCircuit= +-Remote= +-L3MissNotification= +-Group= +-FDBAgeingSec= +-MacLearning= +-Id= +-VNI= +-RemoteChecksumRx= +-TOS= +-L2MissNotification= +-UDP6ZeroChecksumTx= +-UDP6ZeroCheckSumRx= +-UDPCheckSum= +-GroupPolicyExtension= +-GenericProtocolExtension= +-MaximumFDBEntries= +-TTL= +-DestinationPort= +-ReduceARPProxy= +-PortRange= +-UDPChecksum= +-UDP6ZeroCheckSumTx= +-IPDoNotFragment= +-Independent= +-[VXCAN] +-Peer= +-[Bond] +-LearnPacketIntervalSec= +-TransmitHashPolicy= +-MIIMonitorSec= +-PacketsPerSlave= +-DownDelaySec= +-PrimaryReselectPolicy= +-ResendIGMP= +-ARPAllTargets= +-AdActorSystemPriority= +-UpDelaySec= +-AdSelect= +-AdActorSystem= +-AdUserPortKey= +-FailOverMACPolicy= +-ARPValidate= +-Mode= +-GratuitousARP= +-ARPIPTargets= +-MinLinks= +-LACPTransmitRate= +-ARPIntervalSec= +-AllSlavesActive= +-DynamicTransmitLoadBalancing= +-[FooOverUDP] +-Protocol= +-Port= +-PeerPort= +-Encapsulation= +-Local= +-Peer= +-[Tap] +-MultiQueue= +-OneQueue= +-User= +-Group= +-PacketInfo= +-VNetHeader= +-KeepCarrier= +-[IPVLAN] +-Mode= +-Flags= +-[IPVTAP] +-Mode= +-Flags= +-[Tun] +-OneQueue= +-MultiQueue= +-PacketInfo= +-VNetHeader= +-Group= +-User= +-KeepCarrier= +-[NetDev] +-Kind= +-MACAddress= +-MTUBytes= +-Description= +-Name= +-[L2TP] +-TunnelId= +-PeerTunnelId= +-UDPSourcePort= +-UDPDestinationPort= +-Local= +-Remote= +-EncapsulationType= +-UDPCheckSum= +-UDP6CheckSumRx= +-UDP6CheckSumTx= +-[L2TPSession] +-SessionId= +-PeerSessionId= +-Layer2SpecificHeader= +-Name= +-[MACsec] +-Port= +-Encrypt= +-[MACsecReceiveAssociation] +-Port= +-MACAddress= +-PacketNumber= +-KeyId= +-Key= +-KeyFile= +-Activate= +-UseForEncoding= +-[MACsecReceiveChannel] +-Port= +-MACAddress= +-[MACsecTransmitAssociation] +-PacketNumber= +-KeyId= +-Key= +-KeyFile= +-Activate= +-[Xfrm] +-Independent= +-InterfaceId= +-[BareUDP] +-DestinationPort= +-EtherType= +-[BatmanAdvanced] +-GatewayMode= +-Aggregation= +-BridgeLoopAvoidance= +-DistributedArpTable= +-Fragmentation= +-HopPenalty= +-OriginatorIntervalSec= +-GatewayBandwithDown= +-GatewayBandwithUp= +-GatewayBandwidthDown= +-GatewayBandwidthUp= +-RoutingAlgorithm= +-[IPoIB] +-PartitionKey= +-Mode= +-IgnoreUserspaceMulticastGroups= +-[WLAN] +-PhysicalDevice= +-Type= +-WDS= +diff --git a/test/fuzz/fuzz-network-parser/directives b/test/fuzz/fuzz-network-parser/directives +deleted file mode 100644 +index 171322ef20..0000000000 +--- a/test/fuzz/fuzz-network-parser/directives ++++ /dev/null +@@ -1,595 +0,0 @@ +-[Bridge] +-Cost= +-UseBPDU= +-HairPin= +-Isolated= +-UnicastFlood= +-FastLeave= +-Priority= +-AllowPortToBeRoot= +-MulticastToUnicast= +-MulticastFlood= +-NeighborSuppression= +-Learning= +-ProxyARP= +-ProxyARPWiFi= +-MulticastRouter= +-[Match] +-Architecture= +-BSSID= +-Credential= +-Driver= +-Firmware= +-Host= +-KernelCommandLine= +-KernelVersion= +-Kind= +-MACAddress= +-Name= +-Path= +-PermanentMACAddress= +-Property= +-SSID= +-Type= +-Virtualization= +-WLANInterfaceType= +-[Link] +-ActivationPolicy= +-RequiredForOnline= +-RequiredFamilyForOnline= +-ARP= +-AllMulticast= +-Unmanaged= +-MTUBytes= +-Multicast= +-MACAddress= +-Group= +-Promiscuous= +-[SR-IOV] +-VirtualFunction= +-MACSpoofCheck= +-VLANId= +-VLANProtocol= +-QualityOfService= +-QueryReceiveSideScaling= +-Trust= +-LinkState= +-MACAddress= +-[BridgeFDB] +-VLANId= +-MACAddress= +-Destination= +-VNI= +-AssociatedWith= +-OutgoingInterface= +-[BridgeMDB] +-MulticastGroupAddress= +-VLANId= +-[DHCP] +-UseDomains= +-UseRoutes= +-IAID= +-UserClass= +-UseNTP= +-RapidCommit= +-ForceDHCPv6PDOtherInformation= +-UseMTU= +-UseDomainName= +-RouteMetric= +-SendHostname= +-Anonymize= +-VendorClassIdentifier= +-Hostname= +-DUIDType= +-UseHostname= +-UseDNS= +-CriticalConnection= +-DUIDRawData= +-RequestBroadcast= +-ClientIdentifier= +-ListenPort= +-UseTimezone= +-RouteTable= +-[DHCPv4] +-UseDNS= +-RoutesToDNS= +-UseDomains= +-UseRoutes= +-UseGateway= +-IAID= +-UserClass= +-UseNTP= +-RoutesToNTP= +-UseSIP= +-UseMTU= +-UseDomainName= +-RouteMetric= +-SendHostname= +-Anonymize= +-VendorClassIdentifier= +-Hostname= +-DUIDType= +-UseHostname= +-Label= +-CriticalConnection= +-DUIDRawData= +-RequestBroadcast= +-ClientIdentifier= +-ListenPort= +-UseTimezone= +-RouteTable= +-DenyList= +-BlackList= +-AllowList= +-RequestOptions= +-SendRelease= +-MaxAttempts= +-IPServiceType= +-SendOption= +-SendVendorOption= +-SendDecline= +-MUDURL= +-RouteMTUBytes= +-FallbackLeaseLifetimeSec= +-Use6RD= +-NetLabel= +-[DHCPv6] +-UseAddress= +-UseDelegatedPrefix= +-UseNTP= +-UseDNS= +-UseHostname= +-UseDomains= +-RapidCommit= +-ForceDHCPv6PDOtherInformation= +-PrefixDelegationHint= +-WithoutRA= +-MUDURL= +-SendOption= +-RequestOptions= +-UserClass= +-VendorClass= +-SendVendorOption= +-RouteMetric= +-IAID= +-DUIDType= +-DUIDRawData= +-NetLabel= +-[DHCPv6PrefixDelegation] +-SubnetId= +-Announce= +-Assign= +-ManageTemporaryAddress= +-Token= +-RouteMetric= +-NetLabel= +-[DHCPPrefixDelegation] +-UplinkInterface= +-SubnetId= +-Announce= +-Assign= +-ManageTemporaryAddress= +-Token= +-RouteMetric= +-NetLabel= +-[Route] +-Destination= +-Protocol= +-Table= +-Gateway= +-InitialAdvertisedReceiveWindow= +-GatewayOnLink= +-GatewayOnlink= +-Type= +-InitialCongestionWindow= +-IPv6Preference= +-PreferredSource= +-Scope= +-MTUBytes= +-QuickAck= +-FastOpenNoCookie= +-Source= +-Metric= +-TTLPropagate= +-MultiPathRoute= +-TCPAdvertisedMaximumSegmentSize= +-TCPCongestionControlAlgorithm= +-NextHop= +-[Network] +-KeepMaster= +-IPv6DuplicateAddressDetection= +-IPMasquerade= +-ProxyARP= +-PrimarySlave= +-IPv4LLRoute= +-DefaultRouteOnDevice= +-Address= +-IPv6ProxyNDPAddress= +-IPv6AcceptRA= +-IPv6AcceptRouterAdvertisements= +-IPv4AcceptLocal= +-IPv4RouteLocalnet= +-DNSSECNegativeTrustAnchors= +-MACVTAP= +-IPv6PrivacyExtensions= +-MACVLAN= +-MulticastDNS= +-LLDP= +-Tunnel= +-Gateway= +-IPv4LL= +-IPVLAN= +-IPVTAP= +-EmitLLDP= +-IPv6MTUBytes= +-IPv4ProxyARP= +-Bridge= +-DNSOverTLS= +-Bond= +-IPv6ProxyNDP= +-DNS= +-DNSDefaultRoute= +-ActiveSlave= +-LLMNR= +-DNSSEC= +-IPv6HopLimit= +-IPForward= +-IPv6Token= +-Xfrm= +-Description= +-VXLAN= +-L2TP= +-MACsec= +-LinkLocalAddressing= +-IPv4LLStartAddress= +-IPv6LinkLocalAddressGenerationMode= +-IPv6StableSecretAddress= +-ConfigureWithoutCarrier= +-NTP= +-DHCP= +-Domains= +-IPv6SendRA= +-IPv6PrefixDelegation= +-VLAN= +-DHCPServer= +-BindCarrier= +-VRF= +-IgnoreCarrierLoss= +-KeepConfiguration= +-DHCPv6PrefixDelegation= +-DHCPPrefixDelegation= +-BatmanAdvanced= +-IPoIB= +-[IPv6Prefix] +-Prefix= +-OnLink= +-PreferredLifetimeSec= +-AddressAutoconfiguration= +-ValidLifetimeSec= +-Assign= +-Token= +-RouteMetric= +-[IPv6RoutePrefix] +-Route= +-LifetimeSec= +-[BridgeVLAN] +-EgressUntagged= +-VLAN= +-PVID= +-[LLDP] +-MUDURL= +-[CAN] +-SamplePoint= +-BitRate= +-TimeQuantaNSec= +-PropagationSegment= +-PhaseBufferSegment1= +-PhaseBufferSegment2= +-SyncJumpWidth= +-DataSamplePoint= +-DataBitRate= +-DataTimeQuantaNSec= +-DataPropagationSegment= +-DataPhaseBufferSegment1= +-DataPhaseBufferSegment2= +-DataSyncJumpWidth= +-FDMode= +-FDNonISO= +-RestartSec= +-TripleSampling= +-BusErrorReporting= +-Termination= +-ListenOnly= +-Loopback= +-OneShot= +-PresumeACK= +-ClassicDataLengthCode= +-[IPoIB] +-Mode= +-IgnoreUserspaceMulticastGroups= +-[Address] +-DuplicateAddressDetection= +-AutoJoin= +-PreferredLifetime= +-Address= +-Scope= +-HomeAddress= +-PrefixRoute= +-AddPrefixRoute= +-ManageTemporaryAddress= +-Broadcast= +-Peer= +-Label= +-RouteMetric= +-[RoutingPolicyRule] +-Table= +-IncomingInterface= +-To= +-OutgoingInterface= +-From= +-TypeOfService= +-Priority= +-FirewallMark= +-SourcePort= +-DestinationPort= +-IPProtocol= +-InvertRule= +-Family= +-SuppressPrefixLength= +-SuppressInterfaceGroup= +-User= +-Type= +-[IPv6SendRA] +-RouterPreference= +-DNSLifetimeSec= +-DNS= +-RouterLifetimeSec= +-Domains= +-EmitDNS= +-EmitDomains= +-Managed= +-OtherInformation= +-UplinkInterface= +-NetLabel= +-[IPv6PrefixDelegation] +-RouterPreference= +-DNSLifetimeSec= +-DNS= +-RouterLifetimeSec= +-Domains= +-EmitDNS= +-EmitDomains= +-Managed= +-OtherInformation= +-[Neighbor] +-Address= +-LinkLayerAddress= +-MACAddress= +-[IPv6AddressLabel] +-Label= +-Prefix= +-[IPv6AcceptRA] +-UseDomains= +-UseMTU= +-RouteTable= +-RouteMetric= +-UseDNS= +-DHCPv6Client= +-UseGateway= +-UseRoutePrefix= +-UseAutonomousPrefix= +-UseOnLinkPrefix= +-RouterAllowList= +-RouterDenyList= +-PrefixAllowList= +-PrefixDenyList= +-RouteAllowList= +-RouteDenyList= +-DenyList= +-BlackList= +-Token= +-[DHCPServer] +-EmitNTP= +-PoolSize= +-PoolOffset= +-Timezone= +-EmitDNS= +-NTP= +-EmitSIP= +-SIP= +-EmitPOP3= +-POP3= +-EmitSMTP= +-SMTP= +-EmitLPR= +-LPR= +-EmitRouter= +-Router= +-MaxLeaseTimeSec= +-DefaultLeaseTimeSec= +-EmitTimezone= +-DNS= +-SendOption= +-SendVendorOption= +-BindToInterface= +-RelayTarget= +-RelayAgentCircuitId= +-RelayAgentRemoteId= +-ServerAddress= +-UplinkInterface= +-BootServerAddress= +-BootServerName= +-BootFilename= +-[DHCPServerStaticLease] +-MACAddress= +-Address= +-[NextHop] +-Id= +-Gateway= +-Family= +-OnLink= +-Blackhole= +-Group= +-[QDisc] +-Parent= +-Handle= +-[NetworkEmulator] +-Parent= +-Handle= +-DelaySec= +-DelayJitterSec= +-LossRate= +-DuplicateRate= +-PacketLimit= +-[TokenBucketFilter] +-Parent= +-Handle= +-Rate= +-BurstBytes= +-Burst= +-LimitBytes= +-LimitSize= +-MTUBytes= +-MPUBytes= +-PeakRate= +-LatencySec= +-[StochasticFairnessQueueing] +-Parent= +-Handle= +-PerturbPeriodSec= +-[FairQueueingControlledDelay] +-Parent= +-Handle= +-PacketLimit= +-MemoryLimitBytes= +-MemoryLimit= +-Flows= +-QuantumBytes= +-Quantum= +-TargetSec= +-IntervalSec= +-CEThresholdSec= +-ECN= +-[FairQueueing] +-Parent= +-Handle= +-PacketLimit= +-FlowLimit= +-QuantumBytes= +-Quantum= +-InitialQuantumBytes= +-InitialQuantum= +-MaximumRate= +-Buckets= +-OrphanMask= +-Pacing= +-CEThresholdSec= +-[ControlledDelay] +-Parent= +-Handle= +-PacketLimit= +-TargetSec= +-IntervalSec= +-CEThresholdSec= +-ECN= +-[CAKE] +-Parent= +-Handle= +-Bandwidth= +-AutoRateIngress= +-OverheadBytes= +-MPUBytes= +-CompensationMode= +-UseRawPacketSize= +-FlowIsolationMode= +-NAT= +-PriorityQueueingPreset= +-FirewallMark= +-Wash= +-SplitGSO= +-[TrafficControlQueueingDiscipline] +-Parent= +-NetworkEmulatorDelaySec= +-NetworkEmulatorDelayJitterSec= +-NetworkEmulatorLossRate= +-NetworkEmulatorDuplicateRate= +-NetworkEmulatorPacketLimit= +-[TrivialLinkEqualizer] +-Parent= +-Handle= +-Id= +-[HierarchyTokenBucket] +-Parent= +-Handle= +-DefaultClass= +-RateToQuantum= +-[HierarchyTokenBucketClass] +-Parent= +-ClassId= +-Priority= +-QuantumBytes= +-MTUBytes= +-OverheadBytes= +-Rate= +-CeilRate= +-BufferBytes= +-CeilBufferBytes= +-[BFIFO] +-Parent= +-Handle= +-LimitBytes= +-[PFIFO] +-Parent= +-Handle= +-PacketLimit= +-[PFIFOHeadDrop] +-Parent= +-Handle= +-PacketLimit= +-[PFIFOFast] +-Parent= +-Handle= +-[GenericRandomEarlyDetection] +-Parent= +-Handle= +-VirtualQueues= +-DefaultVirtualQueue= +-GenericRIO= +-[StochasticFairBlue] +-Parent= +-Handle= +-PacketLimit= +-[PIE] +-Parent= +-Handle= +-PacketLimit= +-[QuickFairQueueing] +-Parent= +-Handle= +-[QuickFairQueueingClass] +-Parent= +-ClassId= +-Weight= +-MaxPacketBytes= +-[DeficitRoundRobinScheduler] +-Parent= +-Handle= +-[DeficitRoundRobinSchedulerClass] +-Parent= +-ClassId= +-QuantumBytes= +-[EnhancedTransmissionSelection] +-Parent= +-Handle= +-Bands= +-StrictBands= +-QuantumBytes= +-PriorityMap= +-[HeavyHitterFilter] +-Parent= +-Handle= +-PacketLimit= +-[FlowQueuePIE] +-Parent= +-Handle= +-PacketLimit= +diff --git a/test/fuzz/fuzz-unit-file/directives.automount b/test/fuzz/fuzz-unit-file/directives.automount +deleted file mode 100644 +index fd0ce64a2e..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.automount ++++ /dev/null +@@ -1,6 +0,0 @@ +-automount +-[Automount] +-DirectoryMode= +-TimeoutIdleSec= +-Where= +-ExtraOptions= +diff --git a/test/fuzz/fuzz-unit-file/directives.mount b/test/fuzz/fuzz-unit-file/directives.mount +deleted file mode 100644 +index 0a44328e5c..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.mount ++++ /dev/null +@@ -1,216 +0,0 @@ +-mount +-[Mount] +-AllowedCPUs= +-AllowedMemoryNodes= +-AmbientCapabilities= +-AppArmorProfile= +-BPFProgram= +-ExecSearchPath= +-BindPaths= +-BindReadOnlyPaths= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-CPUAccounting= +-CPUAffinity= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUSchedulingPolicy= +-CPUSchedulingPriority= +-CPUSchedulingResetOnFork= +-CPUShares= +-CPUWeight= +-CacheDirectory= +-CacheDirectoryMode= +-Capabilities= +-CapabilityBoundingSet= +-ConfigurationDirectory= +-ConfigurationDirectoryMode= +-CoredumpFilter= +-DefaultMemoryLow= +-DefaultMemoryMin= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DirectoryMode= +-DisableControllers= +-DynamicUser= +-Environment= +-EnvironmentFile= +-ExecPaths= +-ExtensionDirectories= +-ExtensionImages= +-FinalKillSignal= +-ForceUnmount= +-Group= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOSchedulingClass= +-IOSchedulingPriority= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPCNamespacePath= +-IPEgressFilterPath= +-IPIngressFilterPath= +-IgnoreSIGPIPE= +-InaccessibleDirectories= +-InaccessiblePaths= +-KeyringMode= +-KillMode= +-KillSignal= +-LazyUnmount= +-LimitAS= +-LimitCORE= +-LimitCPU= +-LimitDATA= +-LimitFSIZE= +-LimitLOCKS= +-LimitMEMLOCK= +-LimitMSGQUEUE= +-LimitNICE= +-LimitNOFILE= +-LimitNPROC= +-LimitRSS= +-LimitRTPRIO= +-LimitRTTIME= +-LimitSIGPENDING= +-LimitSTACK= +-LoadCredential= +-LoadCredentialEncrypted= +-LockPersonality= +-LogExtraFields= +-LogLevelMax= +-LogNamespace= +-LogRateLimitBurst= +-LogRateLimitIntervalSec= +-LogsDirectory= +-LogsDirectoryMode= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-MemoryAccounting= +-MemoryDenyWriteExecute= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-MountAPIVFS= +-MountFlags= +-MountImages= +-NUMAMask= +-NUMAPolicy= +-NetClass= +-NetworkNamespacePath= +-Nice= +-NoExecPaths= +-NoNewPrivileges= +-OOMScoreAdjust= +-Options= +-PAMName= +-PassEnvironment= +-Personality= +-PrivateDevices= +-PrivateIPC= +-PrivateMounts= +-PrivateNetwork= +-PrivateTmp= +-PrivateUsers= +-ProcSubset= +-ProtectClock= +-ProtectControlGroups= +-ProtectHome= +-ProtectHostname= +-ProtectKernelLogs= +-ProtectKernelModules= +-ProtectKernelTunables= +-ProtectProc= +-ProtectSystem= +-ReadOnlyDirectories= +-ReadOnlyPaths= +-ReadWriteDirectories= +-ReadWriteOnly= +-ReadWritePaths= +-RemoveIPC= +-RestartKillSignal= +-RestrictAddressFamilies= +-RestrictFileSystems= +-RestrictNamespaces= +-RestrictNetworkInterfaces= +-RestrictRealtime= +-RestrictSUIDSGID= +-RootDirectory= +-RootHash= +-RootHashSignature= +-RootImage= +-RootImageOptions= +-RootVerity= +-RuntimeDirectory= +-RuntimeDirectoryMode= +-RuntimeDirectoryPreserve= +-SELinuxContext= +-SecureBits= +-SendSIGHUP= +-SendSIGKILL= +-SetCredential= +-SetCredentialEncrypted= +-Slice= +-SloppyOptions= +-SmackProcessLabel= +-SocketBindAllow= +-SocketBindDeny= +-StandardError= +-StandardInput= +-StandardInputData= +-StandardInputText= +-StandardOutput= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-StateDirectory= +-StateDirectoryMode= +-SupplementaryGroups= +-SyslogFacility= +-SyslogIdentifier= +-SyslogLevel= +-SyslogLevelPrefix= +-SystemCallArchitectures= +-SystemCallErrorNumber= +-SystemCallFilter= +-SystemCallLog= +-TTYPath= +-TTYReset= +-TTYVHangup= +-TTYVTDisallocate= +-TTYRows= +-TTYColumns= +-TasksAccounting= +-TasksMax= +-TemporaryFileSystem= +-TimeoutCleanSec= +-TimeoutSec= +-TimerSlackNSec= +-Type= +-UMask= +-UnsetEnvironment= +-User= +-UtmpIdentifier= +-UtmpMode= +-WatchdogSignal= +-What= +-Where= +-WorkingDirectory= +diff --git a/test/fuzz/fuzz-unit-file/directives.path b/test/fuzz/fuzz-unit-file/directives.path +deleted file mode 100644 +index 3c4df76b23..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.path ++++ /dev/null +@@ -1,12 +0,0 @@ +-path +-[Path] +-DirectoryMode= +-DirectoryNotEmpty= +-MakeDirectory= +-PathChanged= +-PathExists= +-PathExistsGlob= +-PathModified= +-TriggerLimitBurst= +-TriggerLimitIntervalSec= +-Unit= +diff --git a/test/fuzz/fuzz-unit-file/directives.scope b/test/fuzz/fuzz-unit-file/directives.scope +deleted file mode 100644 +index 4552d0b403..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.scope ++++ /dev/null +@@ -1,68 +0,0 @@ +-scope +-[Scope] +-AllowedCPUs= +-AllowedMemoryNodes= +-BPFProgram= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-CPUAccounting= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUShares= +-CPUWeight= +-DefaultMemoryLow= +-DefaultMemoryMin= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DisableControllers= +-FinalKillSignal= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPEgressFilterPath= +-IPIngressFilterPath= +-KillMode= +-KillSignal= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-MemoryAccounting= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-NetClass= +-RestartKillSignal= +-RestrictNetworkInterfaces= +-RuntimeMaxSec= +-RuntimeRandomizedExtraSec= +-SendSIGHUP= +-SendSIGKILL= +-Slice= +-SocketBindAllow= +-SocketBindDeny= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-TasksAccounting= +-TasksMax= +-TimeoutStopSec= +-WatchdogSignal= +diff --git a/test/fuzz/fuzz-unit-file/directives.service b/test/fuzz/fuzz-unit-file/directives.service +deleted file mode 100644 +index 056edb9f17..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.service ++++ /dev/null +@@ -1,370 +0,0 @@ +-service +-[Unit] +-After= +-AllowIsolate= +-AssertACPower= +-AssertArchitecture= +-AssertCPUFeature= +-AssertCPUPressure= +-AssertCPUs= +-AssertCapability= +-AssertControlGroupController= +-AssertCredential= +-AssertDirectoryNotEmpty= +-AssertEnvironment= +-AssertFileIsExecutable= +-AssertFileNotEmpty= +-AssertFirstBoot= +-AssertGroup= +-AssertHost= +-AssertIOPressure= +-AssertKernelCommandLine= +-AssertKernelVersion= +-AssertMemory= +-AssertMemoryPressure= +-AssertNeedsUpdate= +-AssertOSRelease= +-AssertPathExists= +-AssertPathExistsGlob= +-AssertPathIsDirectory= +-AssertPathIsEncrypted= +-AssertPathIsMountPoint= +-AssertPathIsReadWrite= +-AssertPathIsSymbolicLink= +-AssertSecurity= +-AssertUser= +-AssertVirtualization= +-BPFProgram= +-Before= +-ExecSearchPath= +-BindTo= +-BindsTo= +-CollectMode= +-ConditionACPower= +-ConditionArchitecture= +-ConditionCPUFeature= +-ConditionCPUPressure= +-ConditionCPUs= +-ConditionFirmware= +-ConditionCapability= +-ConditionControlGroupController= +-ConditionCredential= +-ConditionDirectoryNotEmpty= +-ConditionEnvironment= +-ConditionFileIsExecutable= +-ConditionFileNotEmpty= +-ConditionFirstBoot= +-ConditionGroup= +-ConditionHost= +-ConditionIOPressure= +-ConditionKernelCommandLine= +-ConditionKernelVersion= +-ConditionMemory= +-ConditionMemoryPressure= +-ConditionNeedsUpdate= +-ConditionOSRelease= +-ConditionPathExists= +-ConditionPathExistsGlob= +-ConditionPathIsDirectory= +-ConditionPathIsEncrypted= +-ConditionPathIsMountPoint= +-ConditionPathIsReadWrite= +-ConditionPathIsSymbolicLink= +-ConditionSecurity= +-ConditionUser= +-ConditionVirtualization= +-Conflicts= +-DefaultDependencies= +-Description= +-Documentation= +-FailureAction= +-FailureActionExitStatus= +-IgnoreOnIsolate= +-IgnoreOnSnapshot= +-JobRunningTimeoutSec= +-JobTimeoutAction= +-JobTimeoutRebootArgument= +-JobTimeoutSec= +-JoinsNamespaceOf= +-OnFailure= +-OnFailureIsolate= +-OnFailureJobMode= +-OnSuccess= +-OnSuccessJobMode= +-PartOf= +-PropagateReloadFrom= +-PropagateReloadTo= +-PropagatesReloadTo= +-PropagatesStopTo= +-RebootArgument= +-RefuseManualStart= +-RefuseManualStop= +-ReloadPropagatedFrom= +-Requires= +-RequiresMountsFor= +-RequiresOverridable= +-Requisite= +-RequisiteOverridable= +-SocketBindAllow= +-SocketBindDeny= +-SourcePath= +-StartLimitAction= +-StartLimitBurst= +-StartLimitInterval= +-StartLimitIntervalSec= +-StopWhenUnneeded= +-StopPropagatedFrom= +-SuccessAction= +-SuccessActionExitStatus= +-Upholds= +-Wants= +-[Install] +-Alias= +-Also= +-DefaultInstance= +-RequiredBy= +-WantedBy= +-[Service] +-AllowedCPUs= +-AllowedMemoryNodes= +-AmbientCapabilities= +-AppArmorProfile= +-BindPaths= +-BindReadOnlyPaths= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-BusName= +-BusPolicy= +-CPUAccounting= +-CPUAffinity= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUSchedulingPolicy= +-CPUSchedulingPriority= +-CPUSchedulingResetOnFork= +-CPUShares= +-CPUWeight= +-CacheDirectory= +-CacheDirectoryMode= +-Capabilities= +-CapabilityBoundingSet= +-ConfigurationDirectory= +-ConfigurationDirectoryMode= +-CoredumpFilter= +-DefaultMemoryLow= +-DefaultMemoryMin= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DisableControllers= +-DynamicUser= +-Environment= +-EnvironmentFile= +-ExecCondition= +-ExecPaths= +-ExecReload= +-ExecStart= +-ExecStartPost= +-ExecStartPre= +-ExecStop= +-ExecStopPost= +-ExitType= +-ExtensionDirectories= +-ExtensionImages= +-FailureAction= +-FileDescriptorStoreMax= +-FinalKillSignal= +-Group= +-GuessMainPID= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOSchedulingClass= +-IOSchedulingPriority= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPCNamespacePath= +-IPEgressFilterPath= +-IPIngressFilterPath= +-IgnoreSIGPIPE= +-InaccessibleDirectories= +-InaccessiblePaths= +-KeyringMode= +-KillMode= +-KillSignal= +-LimitAS= +-LimitCORE= +-LimitCPU= +-LimitDATA= +-LimitFSIZE= +-LimitLOCKS= +-LimitMEMLOCK= +-LimitMSGQUEUE= +-LimitNICE= +-LimitNOFILE= +-LimitNPROC= +-LimitRSS= +-LimitRTPRIO= +-LimitRTTIME= +-LimitSIGPENDING= +-LimitSTACK= +-LoadCredential= +-LoadCredentialEncrypted= +-LockPersonality= +-LogExtraFields= +-LogLevelMax= +-LogNamespace= +-LogRateLimitBurst= +-LogRateLimitIntervalSec= +-LogsDirectory= +-LogsDirectoryMode= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-MemoryAccounting= +-MemoryDenyWriteExecute= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-MountAPIVFS= +-MountFlags= +-MountImages= +-NUMAMask= +-NUMAPolicy= +-NetClass= +-NetworkNamespacePath= +-Nice= +-NoExecPaths= +-NoNewPrivileges= +-NonBlocking= +-NotifyAccess= +-OOMPolicy= +-OOMScoreAdjust= +-PAMName= +-PIDFile= +-PassEnvironment= +-PermissionsStartOnly= +-Personality= +-PrivateDevices= +-PrivateIPC= +-PrivateMounts= +-PrivateNetwork= +-PrivateTmp= +-PrivateUsers= +-ProcSubset= +-ProtectClock= +-ProtectControlGroups= +-ProtectHome= +-ProtectHostname= +-ProtectKernelLogs= +-ProtectKernelModules= +-ProtectKernelTunables= +-ProtectProc= +-ProtectSystem= +-ReadOnlyDirectories= +-ReadOnlyPaths= +-ReadWriteDirectories= +-ReadWritePaths= +-RebootArgument= +-RemainAfterExit= +-RemoveIPC= +-Restart= +-RestartForceExitStatus= +-RestartKillSignal= +-RestartPreventExitStatus= +-RestartSec= +-RestrictAddressFamilies= +-RestrictFileSystems= +-RestrictNamespaces= +-RestrictNetworkInterfaces= +-RestrictRealtime= +-RestrictSUIDSGID= +-RootDirectory= +-RootDirectoryStartOnly= +-RootHash= +-RootHashSignature= +-RootImage= +-RootImageOptions= +-RootVerity= +-RuntimeDirectory= +-RuntimeDirectoryMode= +-RuntimeDirectoryPreserve= +-RuntimeMaxSec= +-RuntimeRandomizedExtraSec= +-SELinuxContext= +-SecureBits= +-SendSIGHUP= +-SendSIGKILL= +-SetCredential= +-SetCredentialEncrypted= +-Slice= +-SmackProcessLabel= +-Sockets= +-StandardError= +-StandardInput= +-StandardInputData= +-StandardInputText= +-StandardOutput= +-StartLimitAction= +-StartLimitBurst= +-StartLimitInterval= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-StateDirectory= +-StateDirectoryMode= +-SuccessExitStatus= +-SupplementaryGroups= +-SysVStartPriority= +-SyslogFacility= +-SyslogIdentifier= +-SyslogLevel= +-SyslogLevelPrefix= +-SystemCallArchitectures= +-SystemCallErrorNumber= +-SystemCallFilter= +-SystemCallLog= +-TTYPath= +-TTYReset= +-TTYVHangup= +-TTYVTDisallocate= +-TTYRows= +-TTYColumns= +-TasksAccounting= +-TasksMax= +-TemporaryFileSystem= +-TimeoutAbortSec= +-TimeoutCleanSec= +-TimeoutSec= +-TimeoutStartFailureMode= +-TimeoutStartSec= +-TimeoutStopFailureMode= +-TimeoutStopSec= +-TimerSlackNSec= +-Type= +-UMask= +-USBFunctionDescriptors= +-USBFunctionStrings= +-UnsetEnvironment= +-User= +-UtmpIdentifier= +-UtmpMode= +-WatchdogSec= +-WatchdogSignal= +-WorkingDirectory= +diff --git a/test/fuzz/fuzz-unit-file/directives.slice b/test/fuzz/fuzz-unit-file/directives.slice +deleted file mode 100644 +index ab77070c5e..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.slice ++++ /dev/null +@@ -1,58 +0,0 @@ +-slice +-[Slice] +-AllowedCPUs= +-AllowedMemoryNodes= +-BPFProgram= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-CPUAccounting= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUShares= +-CPUWeight= +-DefaultMemoryLow= +-DefaultMemoryMin= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DisableControllers= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPEgressFilterPath= +-IPIngressFilterPath= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-MemoryAccounting= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-NetClass= +-RestrictNetworkInterfaces= +-Slice= +-SocketBindAllow= +-SocketBindDeny= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-TasksAccounting= +-TasksMax= +diff --git a/test/fuzz/fuzz-unit-file/directives.socket b/test/fuzz/fuzz-unit-file/directives.socket +deleted file mode 100644 +index 90358fc11a..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.socket ++++ /dev/null +@@ -1,266 +0,0 @@ +-socket +-[Socket] +-Accept= +-AllowedCPUs= +-AllowedMemoryNodes= +-AmbientCapabilities= +-AppArmorProfile= +-BPFProgram= +-Backlog= +-ExecSearchPath= +-BindIPv6Only= +-BindPaths= +-BindReadOnlyPaths= +-BindToDevice= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-Broadcast= +-CPUAccounting= +-CPUAffinity= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUSchedulingPolicy= +-CPUSchedulingPriority= +-CPUSchedulingResetOnFork= +-CPUShares= +-CPUWeight= +-CacheDirectory= +-CacheDirectoryMode= +-Capabilities= +-CapabilityBoundingSet= +-ConfigurationDirectory= +-ConfigurationDirectoryMode= +-CoredumpFilter= +-DefaultMemoryLow= +-DefaultMemoryMin= +-DeferAcceptSec= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DirectoryMode= +-DisableControllers= +-DynamicUser= +-Environment= +-EnvironmentFile= +-ExecPaths= +-ExecStartPost= +-ExecStartPre= +-ExecStopPost= +-ExecStopPre= +-ExtensionDirectories= +-ExtensionImages= +-FileDescriptorName= +-FinalKillSignal= +-FlushPending= +-FreeBind= +-Group= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOSchedulingClass= +-IOSchedulingPriority= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPCNamespacePath= +-IPEgressFilterPath= +-IPIngressFilterPath= +-IPTOS= +-IPTTL= +-IgnoreSIGPIPE= +-InaccessibleDirectories= +-InaccessiblePaths= +-KeepAlive= +-KeepAliveIntervalSec= +-KeepAliveProbes= +-KeepAliveTimeSec= +-KeyringMode= +-KillMode= +-KillSignal= +-LimitAS= +-LimitCORE= +-LimitCPU= +-LimitDATA= +-LimitFSIZE= +-LimitLOCKS= +-LimitMEMLOCK= +-LimitMSGQUEUE= +-LimitNICE= +-LimitNOFILE= +-LimitNPROC= +-LimitRSS= +-LimitRTPRIO= +-LimitRTTIME= +-LimitSIGPENDING= +-LimitSTACK= +-ListenDatagram= +-ListenFIFO= +-ListenMessageQueue= +-ListenNetlink= +-ListenSequentialPacket= +-ListenSpecial= +-ListenStream= +-ListenUSBFunction= +-LoadCredential= +-LoadCredentialEncrypted= +-LockPersonality= +-LogExtraFields= +-LogLevelMax= +-LogNamespace= +-LogRateLimitBurst= +-LogRateLimitIntervalSec= +-LogsDirectory= +-LogsDirectoryMode= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-Mark= +-MaxConnections= +-MaxConnectionsPerSource= +-MemoryAccounting= +-MemoryDenyWriteExecute= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-MessageQueueMaxMessages= +-MessageQueueMessageSize= +-MountAPIVFS= +-MountFlags= +-MountImages= +-NUMAMask= +-NUMAPolicy= +-NetClass= +-NetworkNamespacePath= +-Nice= +-NoDelay= +-NoExecPaths= +-NoNewPrivileges= +-OOMScoreAdjust= +-PAMName= +-PassCredentials= +-PassEnvironment= +-PassPacketInfo= +-PassSecurity= +-Personality= +-PipeSize= +-Priority= +-PrivateDevices= +-PrivateIPC= +-PrivateMounts= +-PrivateNetwork= +-PrivateTmp= +-PrivateUsers= +-ProcSubset= +-ProtectClock= +-ProtectControlGroups= +-ProtectHome= +-ProtectHostname= +-ProtectKernelLogs= +-ProtectKernelModules= +-ProtectKernelTunables= +-ProtectProc= +-ProtectSystem= +-ReadOnlyDirectories= +-ReadOnlyPaths= +-ReadWriteDirectories= +-ReadWritePaths= +-ReceiveBuffer= +-RemoveIPC= +-RemoveOnStop= +-RestartKillSignal= +-RestrictAddressFamilies= +-RestrictFileSystems= +-RestrictNamespaces= +-RestrictNetworkInterfaces= +-RestrictRealtime= +-RestrictSUIDSGID= +-ReusePort= +-RootDirectory= +-RootHash= +-RootHashSignature= +-RootImage= +-RootImageOptions= +-RootVerity= +-RuntimeDirectory= +-RuntimeDirectoryMode= +-RuntimeDirectoryPreserve= +-SELinuxContext= +-SELinuxContextFromNet= +-SecureBits= +-SendBuffer= +-SendSIGHUP= +-SendSIGKILL= +-Service= +-SetCredential= +-SetCredentialEncrypted= +-Slice= +-SmackLabel= +-SmackLabelIPIn= +-SmackLabelIPOut= +-SmackProcessLabel= +-SocketBindAllow= +-SocketBindDeny= +-SocketGroup= +-SocketMode= +-SocketProtocol= +-SocketUser= +-StandardError= +-StandardInput= +-StandardInputData= +-StandardInputText= +-StandardOutput= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-StateDirectory= +-StateDirectoryMode= +-SupplementaryGroups= +-Symlinks= +-SyslogFacility= +-SyslogIdentifier= +-SyslogLevel= +-SyslogLevelPrefix= +-SystemCallArchitectures= +-SystemCallErrorNumber= +-SystemCallFilter= +-SystemCallLog= +-TCPCongestion= +-TTYPath= +-TTYReset= +-TTYVHangup= +-TTYVTDisallocate= +-TTYRows= +-TTYColumns= +-TasksAccounting= +-TasksMax= +-TemporaryFileSystem= +-TimeoutCleanSec= +-TimeoutSec= +-TimerSlackNSec= +-Timestamping= +-Transparent= +-TriggerLimitBurst= +-TriggerLimitIntervalSec= +-UMask= +-UnsetEnvironment= +-User= +-UtmpIdentifier= +-UtmpMode= +-WatchdogSignal= +-WorkingDirectory= +-Writable= +diff --git a/test/fuzz/fuzz-unit-file/directives.swap b/test/fuzz/fuzz-unit-file/directives.swap +deleted file mode 100644 +index 5d057fa630..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.swap ++++ /dev/null +@@ -1,210 +0,0 @@ +-swap +-[Swap] +-AllowedCPUs= +-AllowedMemoryNodes= +-AmbientCapabilities= +-AppArmorProfile= +-BPFProgram= +-ExecSearchPath= +-BindPaths= +-BindReadOnlyPaths= +-BlockIOAccounting= +-BlockIODeviceWeight= +-BlockIOReadBandwidth= +-BlockIOWeight= +-BlockIOWriteBandwidth= +-CPUAccounting= +-CPUAffinity= +-CPUQuota= +-CPUQuotaPeriodSec= +-CPUSchedulingPolicy= +-CPUSchedulingPriority= +-CPUSchedulingResetOnFork= +-CPUShares= +-CPUWeight= +-CacheDirectory= +-CacheDirectoryMode= +-Capabilities= +-CapabilityBoundingSet= +-ConfigurationDirectory= +-ConfigurationDirectoryMode= +-CoredumpFilter= +-DefaultMemoryLow= +-DefaultMemoryMin= +-Delegate= +-DeviceAllow= +-DevicePolicy= +-DisableControllers= +-DynamicUser= +-Environment= +-EnvironmentFile= +-ExecPaths= +-ExtensionDirectories= +-ExtensionImages= +-FinalKillSignal= +-Group= +-IOAccounting= +-IODeviceLatencyTargetSec= +-IODeviceWeight= +-IOReadBandwidthMax= +-IOReadIOPSMax= +-IOSchedulingClass= +-IOSchedulingPriority= +-IOWeight= +-IOWriteBandwidthMax= +-IOWriteIOPSMax= +-IPAccounting= +-IPAddressAllow= +-IPAddressDeny= +-IPCNamespacePath= +-IPEgressFilterPath= +-IPIngressFilterPath= +-IgnoreSIGPIPE= +-InaccessibleDirectories= +-InaccessiblePaths= +-KeyringMode= +-KillMode= +-KillSignal= +-LimitAS= +-LimitCORE= +-LimitCPU= +-LimitDATA= +-LimitFSIZE= +-LimitLOCKS= +-LimitMEMLOCK= +-LimitMSGQUEUE= +-LimitNICE= +-LimitNOFILE= +-LimitNPROC= +-LimitRSS= +-LimitRTPRIO= +-LimitRTTIME= +-LimitSIGPENDING= +-LimitSTACK= +-LoadCredential= +-LoadCredentialEncrypted= +-LockPersonality= +-LogExtraFields= +-LogLevelMax= +-LogNamespace= +-LogRateLimitBurst= +-LogRateLimitIntervalSec= +-LogsDirectory= +-LogsDirectoryMode= +-ManagedOOMMemoryPressure= +-ManagedOOMMemoryPressureLimit= +-ManagedOOMPreference= +-ManagedOOMSwap= +-MemoryAccounting= +-MemoryDenyWriteExecute= +-MemoryHigh= +-MemoryLimit= +-MemoryLow= +-MemoryMax= +-MemoryMin= +-MemorySwapMax= +-MountAPIVFS= +-MountFlags= +-MountImages= +-NUMAMask= +-NUMAPolicy= +-NetClass= +-NetworkNamespacePath= +-Nice= +-NoExecPaths= +-NoNewPrivileges= +-OOMScoreAdjust= +-Options= +-PAMName= +-PassEnvironment= +-Personality= +-Priority= +-PrivateDevices= +-PrivateIPC= +-PrivateMounts= +-PrivateNetwork= +-PrivateTmp= +-PrivateUsers= +-ProcSubset= +-ProtectClock= +-ProtectControlGroups= +-ProtectHome= +-ProtectHostname= +-ProtectKernelLogs= +-ProtectKernelModules= +-ProtectKernelTunables= +-ProtectProc= +-ProtectSystem= +-ReadOnlyDirectories= +-ReadOnlyPaths= +-ReadWriteDirectories= +-ReadWritePaths= +-RemoveIPC= +-RestartKillSignal= +-RestrictAddressFamilies= +-RestrictFileSystems= +-RestrictNamespaces= +-RestrictNetworkInterfaces= +-RestrictRealtime= +-RestrictSUIDSGID= +-RootDirectory= +-RootHash= +-RootHashSignature= +-RootImage= +-RootImageOptions= +-RootVerity= +-RuntimeDirectory= +-RuntimeDirectoryMode= +-RuntimeDirectoryPreserve= +-SELinuxContext= +-SecureBits= +-SendSIGHUP= +-SendSIGKILL= +-SetCredential= +-SetCredentialEncrypted= +-Slice= +-SmackProcessLabel= +-SocketBindAllow= +-SocketBindDeny= +-StandardError= +-StandardInput= +-StandardInputData= +-StandardInputText= +-StandardOutput= +-StartupAllowedCPUs= +-StartupAllowedMemoryNodes= +-StartupBlockIOWeight= +-StartupCPUShares= +-StartupCPUWeight= +-StartupIOWeight= +-StateDirectory= +-StateDirectoryMode= +-SupplementaryGroups= +-SyslogFacility= +-SyslogIdentifier= +-SyslogLevel= +-SyslogLevelPrefix= +-SystemCallArchitectures= +-SystemCallErrorNumber= +-SystemCallFilter= +-SystemCallLog= +-TTYPath= +-TTYReset= +-TTYVHangup= +-TTYVTDisallocate= +-TTYRows= +-TTYColumns= +-TasksAccounting= +-TasksMax= +-TemporaryFileSystem= +-TimeoutCleanSec= +-TimeoutSec= +-TimerSlackNSec= +-UMask= +-UnsetEnvironment= +-User= +-UtmpIdentifier= +-UtmpMode= +-WatchdogSignal= +-What= +-WorkingDirectory= +diff --git a/test/fuzz/fuzz-unit-file/directives.timer b/test/fuzz/fuzz-unit-file/directives.timer +deleted file mode 100644 +index 40075cf3e7..0000000000 +--- a/test/fuzz/fuzz-unit-file/directives.timer ++++ /dev/null +@@ -1,17 +0,0 @@ +-timer +-[Timer] +-AccuracySec= +-FixedRandomDelay= +-OnActiveSec= +-OnBootSec= +-OnCalendar= +-OnClockChange= +-OnStartupSec= +-OnTimezoneChange= +-OnUnitActiveSec= +-OnUnitInactiveSec= +-Persistent= +-RandomizedDelaySec= +-RemainAfterElapse= +-Unit= +-WakeSystem= +diff --git a/test/fuzz/generate-directives.py b/test/fuzz/generate-directives.py +new file mode 100644 +index 0000000000..d05108962f +--- /dev/null ++++ b/test/fuzz/generate-directives.py +@@ -0,0 +1,26 @@ ++#!/usr/bin/env python3 ++# SPDX-License-Identifier: LGPL-2.1-or-later ++ ++import sys ++import collections, re ++ ++d = collections.defaultdict(list) ++for line in open(sys.argv[1]): ++ m = re.match(r'^([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+),', line) ++ if m: ++ d[m.group(1)] += [m.group(2)] ++ ++sec_rx = sys.argv[2] if len(sys.argv) > 2 else '.' ++sec_rx = re.compile(sec_rx) ++unit_type = sys.argv[3] if len(sys.argv) > 3 else None ++ ++if unit_type: ++ print(unit_type) ++ ++for section, items in d.items(): ++ if not sec_rx.match(section): ++ continue ++ print(f'[{section}]') ++ for item in items: ++ print(f'{item}=') ++ print() +diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build +index 82738fd1b7..f7f0a6111c 100644 +--- a/test/fuzz/meson.build ++++ b/test/fuzz/meson.build +@@ -1,5 +1,36 @@ + # SPDX-License-Identifier: LGPL-2.1-or-later + ++generate_directives_py = find_program('generate-directives.py') ++fuzz_generated_in_dir = meson.current_build_dir() ++ ++fuzz_generated_directives = [] ++ ++directives = [['fuzz-network-parser_directives', 'src/network/networkd-network-gperf.gperf'], ++ ['fuzz-netdev-parser_directives.netdev', 'src/network/netdev/netdev-gperf.gperf'], ++ ['fuzz-link-parser_directives.link', 'src/udev/net/link-config-gperf.gperf'], ++ ] ++ ++foreach tuple : directives ++ fuzz_generated_directives += custom_target( ++ tuple[0], ++ output: tuple[0], ++ command: [generate_directives_py, files(project_source_root / tuple[1])], ++ capture: true) ++endforeach ++ ++foreach section : ['Automount', 'Mount', 'Path', 'Scope', 'Service', 'Slice', 'Socket', 'Swap', 'Timer'] ++ unit_type = section.to_lower() ++ sec_rx = section == 'Service' ? '(Service|Unit|Install)' : section ++ fuzz_generated_directives += custom_target( ++ 'fuzz-unit-file_directives.@0@'.format(unit_type), ++ output: 'fuzz-unit-file_directives.@0@'.format(unit_type), ++ command: [generate_directives_py, load_fragment_gperf_gperf, sec_rx, unit_type], ++ capture: true) ++endforeach ++ ++ ++############################################################ ++ + sanitize_address_undefined = custom_target( + 'sanitize-address-undefined-fuzzers', + output : 'sanitize-address-undefined-fuzzers', +@@ -28,7 +59,22 @@ else + out = run_command(sh, '-c', 'cd "@0@"; echo @1@/*/*'.format(project_source_root, fuzz_testsdir), check: true) + endif + +-fuzz_regression_tests = {} ++# Fuzz inputs that we generate (see above fuzz_generated_directives) ++fuzz_regression_tests = { ++ 'fuzz-link-parser': [['', 'directives.link']], ++ 'fuzz-netdev-parser': [['', 'directives.netdev']], ++ 'fuzz-network-parser': [['', 'directives']], ++ 'fuzz-unit-file': [['', 'directives.automount'], ++ ['', 'directives.mount'], ++ ['', 'directives.path'], ++ ['', 'directives.scope'], ++ ['', 'directives.service'], ++ ['', 'directives.slice'], ++ ['', 'directives.socket'], ++ ['', 'directives.swap'], ++ ['', 'directives.timer']]} ++ ++# Add crafted fuzz inputs we have in the repo + foreach p : out.stdout().split() + # Remove the last entry which is ''. + # +@@ -44,6 +90,6 @@ foreach p : out.stdout().split() + endif + # Meson parser provision for: fuzz_regression_tests[fuzzer] += [fuzz_in] + l = fuzz_regression_tests[fuzzer] +- l += [fuzz_in] ++ l += [[fuzz_testsdir, fuzz_in]] + fuzz_regression_tests += {fuzzer: l} + endforeach +diff --git a/tools/check-directives.sh b/tools/check-directives.sh +deleted file mode 100755 +index 767833285b..0000000000 +--- a/tools/check-directives.sh ++++ /dev/null +@@ -1,72 +0,0 @@ +-#!/usr/bin/env bash +-# SPDX-License-Identifier: LGPL-2.1-or-later +-set -eu +-set -o pipefail +- +-SOURCE_ROOT="${1:?}" +-BUILD_ROOT="${2:?}" +- +-command -v gawk &>/dev/null || exit 77 +- +-function generate_directives() { +- gawk -v sec_rx="${2:-""}" -v unit_type="${3:-""}" ' +- match($0, /^([^ \t\.]+)\.([^ \t\.,]+)/, m) { +- # res[section][directive] = 1 +- res[m[1]][m[2]] = 1; +- } +- END { +- if (unit_type) +- print unit_type +- +- for (section in res) { +- if (sec_rx && section !~ sec_rx) +- continue +- +- print "[" section "]"; +- for (directive in res[section]) { +- print directive "="; +- } +- } +- } +- ' "$1" +-} +- +-ret=0 +-if ! diff \ +- <(generate_directives "$SOURCE_ROOT"/src/network/networkd-network-gperf.gperf | sort) \ +- <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-network-parser/directives); then +- echo "Looks like test/fuzz/fuzz-network-parser/directives hasn't been updated" +- ret=1 +-fi +- +-if ! diff \ +- <(generate_directives "$SOURCE_ROOT"/src/network/netdev/netdev-gperf.gperf | sort) \ +- <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-netdev-parser/directives.netdev); then +- echo "Looks like test/fuzz/fuzz-netdev-parser/directives.netdev hasn't been updated" +- ret=1 +-fi +- +-if ! diff \ +- <(generate_directives "$SOURCE_ROOT"/src/udev/net/link-config-gperf.gperf | sort) \ +- <(sort "$SOURCE_ROOT"/test/fuzz/fuzz-link-parser/directives.link) ; then +- echo "Looks like test/fuzz/fuzz-link-parser/directives.link hasn't been updated" +- ret=1 +-fi +- +-for section in Automount Mount Path Scope Slice Socket Swap Timer; do +- if ! diff \ +- <(generate_directives "$BUILD_ROOT"/src/core/load-fragment-gperf.gperf "$section" "${section,,}" | sort) \ +- <(sort "$SOURCE_ROOT/test/fuzz/fuzz-unit-file/directives.${section,,}") ; then +- echo "Looks like test/fuzz/fuzz-unit-file/directives.${section,,} hasn't been updated" +- ret=1 +- fi +-done +- +-if ! diff \ +- <(generate_directives "$BUILD_ROOT"/src/core/load-fragment-gperf.gperf "(Service|Unit|Install)" "service" | sort) \ +- <(sort "$SOURCE_ROOT/test/fuzz/fuzz-unit-file/directives.service") ; then +- echo "Looks like test/fuzz/fuzz-unit-file/directives.service hasn't been updated" +- ret=1 +-fi +- +-exit $ret diff --git a/SOURCES/0233-test-install-C.UTF-8-and-English-locales.patch b/SOURCES/0233-test-install-C.UTF-8-and-English-locales.patch deleted file mode 100644 index c9c6064..0000000 --- a/SOURCES/0233-test-install-C.UTF-8-and-English-locales.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 9e35f5e32eeacdeeb0d2b520320b08daafc11c72 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:13:00 +0900 -Subject: [PATCH] test: install C.UTF-8 and English locales - -(cherry picked from commit 4ce68ea9b3707fde8c4be20e164fc2a41197fdda) - -Related: #2087652 ---- - test/test-functions | 24 ++++++++++++++++++++++++ - 1 file changed, 24 insertions(+) - -diff --git a/test/test-functions b/test/test-functions -index 644c3a8613..cab3e3c015 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -684,6 +684,7 @@ setup_basic_environment() { - install_pam - install_dbus - install_fonts -+ install_locales - install_keymaps - install_x11_keymaps - install_terminfo -@@ -1847,6 +1848,29 @@ install_pam() { - done - } - -+install_locales() { -+ # install only C.UTF-8 and English locales -+ dinfo "Install locales" -+ -+ if command -v meson >/dev/null \ -+ && (meson configure "${BUILD_DIR:?}" | grep 'localegen-path */') \ -+ || get_bool "$LOOKS_LIKE_DEBIAN"; then -+ # locale-gen support -+ image_install -o locale-gen localedef -+ inst /etc/locale.gen || : -+ inst /usr/share/i18n/SUPPORTED || : -+ inst_recursive /usr/share/i18n/charmaps -+ inst_recursive /usr/share/i18n/locales -+ inst_recursive /usr/share/locale/en -+ inst_recursive /usr/share/locale/en_* -+ fi -+ -+ inst_recursive /usr/lib/locale/C.utf8 -+ inst_recursive /usr/lib/locale/C.UTF-8 -+ inst_recursive /usr/lib/locale/en_*.utf8 -+ inst_recursive /usr/lib/locale/en_*.UTF-8 -+} -+ - # shellcheck disable=SC2120 - install_keymaps() { - local i p diff --git a/SOURCES/0234-oss-fuzz-include-generated-corpora-in-the-final-zip-.patch b/SOURCES/0234-oss-fuzz-include-generated-corpora-in-the-final-zip-.patch new file mode 100644 index 0000000..3feb115 --- /dev/null +++ b/SOURCES/0234-oss-fuzz-include-generated-corpora-in-the-final-zip-.patch @@ -0,0 +1,35 @@ +From 3892f0c14a5cb99399d54d9b6fde9c0a09fd1b89 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Sat, 7 Jan 2023 10:27:05 +0100 +Subject: [PATCH] oss-fuzz: include generated corpora in the final zip file + +Since the files with generated directives are now automatically +generated during build, they're now under the respective build directory +which the current oss-fuzz CI script didn't account for. + +Follow-up to: #24958 +Fixes: #25859 + +(cherry picked from commit bef8d18b3f9776fdb28fc9a4820f9ce9418422f9) + +Related: #2175619 +--- + tools/oss-fuzz.sh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tools/oss-fuzz.sh b/tools/oss-fuzz.sh +index 793411ed84..7e9312b833 100755 +--- a/tools/oss-fuzz.sh ++++ b/tools/oss-fuzz.sh +@@ -97,7 +97,10 @@ rm -rf "$hosts" + # The seed corpus is a separate flat archive for each fuzzer, + # with a fixed name ${fuzzer}_seed_corpus.zip. + for d in test/fuzz/fuzz-*; do +- zip -jqr "$OUT/$(basename "$d")_seed_corpus.zip" "$d" ++ fuzzer="$(basename "$d")" ++ # Include the build-generated corpora if any as well ++ readarray -t generated < <(find "$build/test/fuzz" -maxdepth 1 -name "${fuzzer}*" -type f) ++ zip -jqr "$OUT/${fuzzer}_seed_corpus.zip" "$d" "${generated[@]}" + done + + # get fuzz-dns-packet corpus diff --git a/SOURCES/0234-test-import-localed-tests-from-debian-ubuntu-test-su.patch b/SOURCES/0234-test-import-localed-tests-from-debian-ubuntu-test-su.patch deleted file mode 100644 index a74682a..0000000 --- a/SOURCES/0234-test-import-localed-tests-from-debian-ubuntu-test-su.patch +++ /dev/null @@ -1,456 +0,0 @@ -From 85e06430f03fe3078d5443d80ce53721fa88b285 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 09:14:00 +0900 -Subject: [PATCH] test: import localed tests from debian/ubuntu test suite - -(cherry picked from commit 47ba157cc083dcc5e5d7dcbdc1e27db0d6dced3e) - -Related: #2087652 ---- - test/TEST-73-LOCALE/Makefile | 1 + - test/TEST-73-LOCALE/test.sh | 10 + - test/units/testsuite-73.service | 10 + - test/units/testsuite-73.sh | 391 ++++++++++++++++++++++++++++++++ - 4 files changed, 412 insertions(+) - create mode 120000 test/TEST-73-LOCALE/Makefile - create mode 100755 test/TEST-73-LOCALE/test.sh - create mode 100644 test/units/testsuite-73.service - create mode 100755 test/units/testsuite-73.sh - -diff --git a/test/TEST-73-LOCALE/Makefile b/test/TEST-73-LOCALE/Makefile -new file mode 120000 -index 0000000000..e9f93b1104 ---- /dev/null -+++ b/test/TEST-73-LOCALE/Makefile -@@ -0,0 +1 @@ -+../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-73-LOCALE/test.sh b/test/TEST-73-LOCALE/test.sh -new file mode 100755 -index 0000000000..a33ddaba86 ---- /dev/null -+++ b/test/TEST-73-LOCALE/test.sh -@@ -0,0 +1,10 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+set -e -+ -+TEST_DESCRIPTION="test localed" -+ -+# shellcheck source=test/test-functions -+. "${TEST_BASE_DIR:?}/test-functions" -+ -+do_test "$@" -diff --git a/test/units/testsuite-73.service b/test/units/testsuite-73.service -new file mode 100644 -index 0000000000..bee8c4215d ---- /dev/null -+++ b/test/units/testsuite-73.service -@@ -0,0 +1,10 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+[Unit] -+Description=TEST-73-LOCALE -+ -+[Service] -+ExecStartPre=rm -f /failed /testok -+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -+StandardOutput=journal+console -+StandardError=journal+console -+Type=oneshot -diff --git a/test/units/testsuite-73.sh b/test/units/testsuite-73.sh -new file mode 100755 -index 0000000000..d96e9f4151 ---- /dev/null -+++ b/test/units/testsuite-73.sh -@@ -0,0 +1,391 @@ -+#!/usr/bin/env bash -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+set -eux -+set -o pipefail -+ -+# shellcheck source=test/units/assert.sh -+. "$(dirname "$0")"/assert.sh -+ -+enable_debug() { -+ mkdir -p /run/systemd/system/systemd-localed.service.d -+ cat >>/run/systemd/system/systemd-localed.service.d/override.conf <>/run/systemd/system/systemd-vconsole-setup.service.d/override.conf </dev/null 2>&1 && -+ ! localectl list-locales | grep -F "en_US.UTF-8"; then -+ # ensure at least one utf8 locale exist -+ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -+ locale-gen en_US.UTF-8 -+ fi -+ -+ # create invalid locale -+ mkdir -p /usr/lib/locale/xx_XX.UTF-8 -+ assert_not_in "xx_XX.UTF-8" "$(localectl list-locales)" -+ -+ if [[ -z "$(localectl list-locales)" ]]; then -+ echo "No locale installed, skipping test." -+ return -+ fi -+ -+ # warn when kernel command line has locale settings -+ output=$(SYSTEMD_PROC_CMDLINE="locale.LANG=C.UTF-8 locale.LC_CTYPE=ja_JP.UTF-8" localectl 2>&1) -+ assert_in "Warning:" "$output" -+ assert_in "Command Line: LANG=C.UTF-8" "$output" -+ assert_in "LC_CTYPE=ja_JP.UTF-8" "$output" -+ assert_in "System Locale:" "$output" -+ -+ # change locale -+ for i in $(localectl list-locales); do -+ assert_rc 0 localectl set-locale "LANG=C" "LC_CTYPE=$i" -+ if [[ -f /etc/default/locale ]]; then -+ assert_eq "$(cat /etc/default/locale)" "LANG=C -+LC_CTYPE=$i" -+ else -+ assert_eq "$(cat /etc/locale.conf)" "LANG=C -+LC_CTYPE=$i" -+ fi -+ output=$(localectl) -+ assert_in "System Locale: LANG=C" "$output" -+ assert_in "LC_CTYPE=$i" "$output" -+ output=$(systemctl show-environment) -+ assert_in "LANG=C" "$output" -+ assert_in "LC_CTYPE=$i" "$output" -+ -+ assert_rc 0 localectl set-locale "$i" -+ if [[ -f /etc/default/locale ]]; then -+ # Debian/Ubuntu patch is buggy, and LC_CTYPE= still exists. -+ assert_eq "$(cat /etc/default/locale)" "LANG=$i -+LC_CTYPE=$i" -+ else -+ assert_eq "$(cat /etc/locale.conf)" "LANG=$i" -+ fi -+ output=$(localectl) -+ assert_in "System Locale: LANG=$i" "$output" -+ assert_not_in "LC_CTYPE=" "$output" -+ output=$(systemctl show-environment) -+ assert_in "LANG=$i" "$output" -+ assert_not_in "LC_CTYPE=" "$output" -+ done -+ -+ # test if localed auto-runs locale-gen -+ if command -v locale-gen >/dev/null 2>&1 && -+ ! localectl list-locales | grep -F "de_DE.UTF-8"; then -+ -+ # clear previous locale -+ systemctl stop systemd-localed.service -+ rm -f /etc/locale.conf /etc/default/locale -+ -+ # change locale -+ assert_rc 0 localectl set-locale de_DE.UTF-8 -+ if [[ -f /etc/default/locale ]]; then -+ assert_eq "$(cat /etc/default/locale)" "LANG=de_DE.UTF-8" -+ else -+ assert_eq "$(cat /etc/locale.conf)" "LANG=de_DE.UTF-8" -+ fi -+ assert_in "System Locale: LANG=de_DE.UTF-8" "$(localectl)" -+ assert_in "LANG=de_DE.UTF-8" "$(systemctl show-environment)" -+ -+ # ensure tested locale exists and works now -+ assert_in "de_DE.UTF-8" "$(localectl list-locales)" -+ fi -+} -+ -+backup_keymap() { -+ if [[ -f /etc/vconsole.conf ]]; then -+ cp /etc/vconsole.conf /tmp/vconsole.conf.bak -+ fi -+ -+ if [[ -f /etc/X11/xorg.conf.d/00-keyboard.conf ]]; then -+ cp /etc/X11/xorg.conf.d/00-keyboard.conf /tmp/00-keyboard.conf.bak -+ fi -+ -+ # Debian/Ubuntu specific file -+ if [[ -f /etc/default/keyboard ]]; then -+ cp /etc/default/keyboard /tmp/default-keyboard.bak -+ fi -+ -+ mkdir -p /etc/default -+} -+ -+restore_keymap() { -+ if [[ -f /tmp/vconsole.conf.bak ]]; then -+ mv /tmp/vconsole.conf.bak /etc/vconsole.conf -+ else -+ rm -f /etc/vconsole.conf -+ fi -+ -+ if [[ -f /tmp/00-keyboard.conf.bak ]]; then -+ mv /tmp/00-keyboard.conf.bak /etc/X11/xorg.conf.d/00-keyboard.conf -+ else -+ rm -f /etc/X11/xorg.conf.d/00-keyboard.conf -+ fi -+ -+ if [[ -f /tmp/default-keyboard.bak ]]; then -+ mv /tmp/default-keyboard.bak /etc/default/keyboard -+ else -+ rm -f /etc/default/keyboard -+ rmdir --ignore-fail-on-non-empty /etc/default -+ fi -+} -+ -+wait_vconsole_setup() { -+ local i ss -+ for ((i = 0; i < 20; i++)); do -+ if (( i != 0 )); then sleep .5; fi -+ ss="$(systemctl --property SubState --value show systemd-vconsole-setup.service)" -+ if [[ "$ss" == "exited" || "$ss" == "dead" || "$ss" == "condition" ]]; then -+ return 0 -+ elif [[ "$ss" == "failed" ]]; then -+ echo "WARNING: systemd-vconsole-setup.service failed, ignoring." >&2 -+ systemctl reset-failed systemd-vconsole-setup.service -+ return 0 -+ fi -+ done -+ -+ systemctl status systemd-vconsole-setup.service -+ return 1 -+} -+ -+test_vc_keymap() { -+ local i output -+ -+ if [[ -z "$(localectl list-keymaps)" ]]; then -+ echo "No vconsole keymap installed, skipping test." -+ return -+ fi -+ -+ backup_keymap -+ trap restore_keymap RETURN -+ -+ # should activate daemon and work -+ assert_in "VC Keymap:" "$(localectl)" -+ -+ for i in $(localectl list-keymaps); do -+ # clear previous conversion from VC -> X11 keymap -+ systemctl stop systemd-localed.service -+ wait_vconsole_setup -+ rm -f /etc/X11/xorg.conf.d/00-keyboard.conf /etc/default/keyboard -+ -+ # set VC keymap -+ assert_rc 0 localectl set-keymap "$i" -+ output=$(localectl) -+ -+ # check VC keymap -+ assert_in "KEYMAP=$i" "$(cat /etc/vconsole.conf)" -+ assert_in "VC Keymap: $i" "$output" -+ -+ # check VC -> X11 keymap conversion -+ if [[ "$i" == "us" ]]; then -+ assert_in "X11 Layout: us" "$output" -+ assert_in "X11 Model: pc105\+inet" "$output" -+ assert_not_in "X11 Variant:" "$output" -+ assert_in "X11 Options: terminate:ctrl_alt_bksp" "$output" -+ elif [[ "$i" == "us-acentos" ]]; then -+ assert_in "X11 Layout: us" "$output" -+ assert_in 'X11 Model: pc105$' "$output" -+ assert_in "X11 Variant: intl" "$output" -+ assert_in "X11 Options: terminate:ctrl_alt_bksp" "$output" -+ elif [[ "$i" =~ ^us-.* ]]; then -+ assert_in "X11 Layout: n/a" "$output" -+ assert_not_in "X11 Model:" "$output" -+ assert_not_in "X11 Variant:" "$output" -+ assert_not_in "X11 Options:" "$output" -+ fi -+ done -+ -+ # gets along without config file -+ systemctl stop systemd-localed.service -+ wait_vconsole_setup -+ rm -f /etc/vconsole.conf -+ assert_in "VC Keymap: n/a" "$(localectl)" -+} -+ -+test_x11_keymap() { -+ local output -+ -+ if [[ -z "$(localectl list-x11-keymap-layouts)" ]]; then -+ echo "No x11 keymap installed, skipping test." -+ return -+ fi -+ -+ backup_keymap -+ trap restore_keymap RETURN -+ -+ # should activate daemon and work -+ assert_in "X11 Layout:" "$(localectl)" -+ -+ # set x11 keymap (layout, model, variant, options) -+ assert_rc 0 localectl set-x11-keymap us pc105+inet intl terminate:ctrl_alt_bksp -+ -+ if [[ -f /etc/default/keyboard ]]; then -+ assert_eq "$(cat /etc/default/keyboard)" "XKBLAYOUT=us -+XKBMODEL=pc105+inet -+XKBVARIANT=intl -+XKBOPTIONS=terminate:ctrl_alt_bksp" -+ else -+ output=$(cat /etc/X11/xorg.conf.d/00-keyboard.conf) -+ assert_in 'Option "XkbLayout" "us"' "$output" -+ assert_in 'Option "XkbModel" "pc105\+inet"' "$output" -+ assert_in 'Option "XkbVariant" "intl"' "$output" -+ assert_in 'Option "XkbOptions" "terminate:ctrl_alt_bksp"' "$output" -+ fi -+ -+ output=$(localectl) -+ assert_in "X11 Layout: us" "$output" -+ assert_in "X11 Model: pc105\+inet" "$output" -+ assert_in "X11 Variant: intl" "$output" -+ assert_in "X11 Options: terminate:ctrl_alt_bksp" "$output" -+ -+ # Debian/Ubuntu patch is buggy, unspecified settings are not cleared -+ rm -f /etc/default/keyboard -+ -+ # set x11 keymap (layout, model, variant) -+ assert_rc 0 localectl set-x11-keymap us pc105+inet intl -+ -+ if [[ -f /etc/default/keyboard ]]; then -+ assert_eq "$(cat /etc/default/keyboard)" "XKBLAYOUT=us -+XKBMODEL=pc105+inet -+XKBVARIANT=intl" -+ else -+ output=$(cat /etc/X11/xorg.conf.d/00-keyboard.conf) -+ assert_in 'Option "XkbLayout" "us"' "$output" -+ assert_in 'Option "XkbModel" "pc105\+inet"' "$output" -+ assert_in 'Option "XkbVariant" "intl"' "$output" -+ assert_not_in 'Option "XkbOptions"' "$output" -+ fi -+ -+ output=$(localectl) -+ assert_in "X11 Layout: us" "$output" -+ assert_in "X11 Model: pc105\+inet" "$output" -+ assert_in "X11 Variant: intl" "$output" -+ assert_not_in "X11 Options:" "$output" -+ -+ # Debian/Ubuntu patch is buggy, unspecified settings are not cleared -+ rm -f /etc/default/keyboard -+ -+ # set x11 keymap (layout, model) -+ assert_rc 0 localectl set-x11-keymap us pc105+inet -+ -+ if [[ -f /etc/default/keyboard ]]; then -+ assert_eq "$(cat /etc/default/keyboard)" "XKBLAYOUT=us -+XKBMODEL=pc105+inet" -+ else -+ output=$(cat /etc/X11/xorg.conf.d/00-keyboard.conf) -+ assert_in 'Option "XkbLayout" "us"' "$output" -+ assert_in 'Option "XkbModel" "pc105\+inet"' "$output" -+ assert_not_in 'Option "XkbVariant"' "$output" -+ assert_not_in 'Option "XkbOptions"' "$output" -+ fi -+ -+ output=$(localectl) -+ assert_in "X11 Layout: us" "$output" -+ assert_in "X11 Model: pc105\+inet" "$output" -+ assert_not_in "X11 Variant:" "$output" -+ assert_not_in "X11 Options:" "$output" -+ -+ # Debian/Ubuntu patch is buggy, unspecified settings are not cleared -+ rm -f /etc/default/keyboard -+ -+ # set x11 keymap (layout) -+ assert_rc 0 localectl set-x11-keymap us -+ -+ if [[ -f /etc/default/keyboard ]]; then -+ assert_eq "$(cat /etc/default/keyboard)" "XKBLAYOUT=us" -+ else -+ output=$(cat /etc/X11/xorg.conf.d/00-keyboard.conf) -+ assert_in 'Option "XkbLayout" "us"' "$output" -+ assert_not_in 'Option "XkbModel"' "$output" -+ assert_not_in 'Option "XkbVariant"' "$output" -+ assert_not_in 'Option "XkbOptions"' "$output" -+ fi -+ -+ output=$(localectl) -+ assert_in "X11 Layout: us" "$output" -+ assert_not_in "X11 Model:" "$output" -+ assert_not_in "X11 Variant:" "$output" -+ assert_not_in "X11 Options:" "$output" -+ -+ # gets along without config file -+ systemctl stop systemd-localed.service -+ rm -f /etc/X11/xorg.conf.d/00-keyboard.conf /etc/default/keyboard -+ output=$(localectl) -+ assert_in "X11 Layout: n/a" "$output" -+ assert_not_in "X11 Model:" "$output" -+ assert_not_in "X11 Variant:" "$output" -+ assert_not_in "X11 Options:" "$output" -+} -+ -+: >/failed -+ -+enable_debug -+test_locale -+test_vc_keymap -+test_x11_keymap -+ -+touch /testok -+rm /failed diff --git a/SOURCES/0235-unit-In-cgroupv1-gracefully-terminate-delegated-scop.patch b/SOURCES/0235-unit-In-cgroupv1-gracefully-terminate-delegated-scop.patch new file mode 100644 index 0000000..1a2f0f8 --- /dev/null +++ b/SOURCES/0235-unit-In-cgroupv1-gracefully-terminate-delegated-scop.patch @@ -0,0 +1,38 @@ +From 6b22e9c84c00989ea58b1d9df75f2c20eaa2c274 Mon Sep 17 00:00:00 2001 +From: Jan Macku +Date: Fri, 17 Mar 2023 14:00:15 +0100 +Subject: [PATCH] unit: In cgroupv1, gracefully terminate delegated scopes + again + +Instantly killing delegated scopes is just not viable for our +needs in OCP 4.13 in cgroupv1 mode. We will accept the possibility +of timeouts instead. + +Co-authored-by: Colin Walters + +rhel-only + +Resolves: #2179165 +--- + src/core/unit.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index c319e99d71..0d1a590a3f 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -4616,8 +4616,13 @@ int unit_kill_context( + * however should not exist in non-delegated units. On the unified hierarchy that's different, + * there we get proper events. Hence rely on them. */ + ++ /* (RHEL9): we patch out a check for delegation here that exists upstream ++ * and accept a possible delayed shutdown due to races in favor of ++ * not just insta-killing the processes. ++ */ ++ + if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) > 0 || +- (detect_container() == 0 && !unit_cgroup_delegate(u))) ++ (detect_container() == 0)) + wait_for_exit = true; + + if (send_sighup) { diff --git a/SOURCES/0235-unit-check-for-mount-rate-limiting-before-checking-a.patch b/SOURCES/0235-unit-check-for-mount-rate-limiting-before-checking-a.patch deleted file mode 100644 index bf74518..0000000 --- a/SOURCES/0235-unit-check-for-mount-rate-limiting-before-checking-a.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 7131b76b1ef9382396cdc9dc1a23999d94bb79f8 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Mon, 30 May 2022 11:55:41 +0200 -Subject: [PATCH] unit: check for mount rate limiting before checking active - state - -Having this check as part of mount_can_start() is too late because -UNIT(u)->can_start() virtual method is called after checking the active -state of unit in unit_start(). - -We need to hold off running mount start jobs when /p/s/mountinfo monitor -is rate limited even when given mount unit is already active. - -Fixes #20329 - -(cherry picked from commit b161bc394b2cc8b271dda9208e310cc2af0cc29d) - -Related: #2087652 ---- - src/core/mount.c | 3 --- - src/core/unit.c | 4 ++++ - 2 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/core/mount.c b/src/core/mount.c -index d63884e47e..8011389bcc 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -2169,9 +2169,6 @@ static int mount_can_start(Unit *u) { - - assert(m); - -- if (sd_event_source_is_ratelimited(u->manager->mount_event_source)) -- return -EAGAIN; -- - r = unit_test_start_limit(u); - if (r < 0) { - mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT); -diff --git a/src/core/unit.c b/src/core/unit.c -index 6eaa553255..569f712e85 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1848,6 +1848,10 @@ int unit_start(Unit *u) { - - assert(u); - -+ /* Let's hold off running start jobs for mount units when /proc/self/mountinfo monitor is rate limited. */ -+ if (u->type == UNIT_MOUNT && sd_event_source_is_ratelimited(u->manager->mount_event_source)) -+ return -EAGAIN; -+ - /* If this is already started, then this will succeed. Note that this will even succeed if this unit - * is not startable by the user. This is relied on to detect when we need to wait for units and when - * waiting is finished. */ diff --git a/SOURCES/0236-tests-make-sure-we-delay-running-mount-start-jobs-wh.patch b/SOURCES/0236-tests-make-sure-we-delay-running-mount-start-jobs-wh.patch deleted file mode 100644 index 034bd39..0000000 --- a/SOURCES/0236-tests-make-sure-we-delay-running-mount-start-jobs-wh.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 94f643c328cd2d3c7376219573e0bc5dedea10d8 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Mon, 30 May 2022 14:50:05 +0200 -Subject: [PATCH] tests: make sure we delay running mount start jobs when - /p/s/mountinfo is rate limited - -(cherry picked from commit 9e15be6c8d55abd800bf33f9776dd0e307ed37bc) - -Related: #2087652 ---- - test/units/testsuite-60.sh | 53 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 53 insertions(+) - -diff --git a/test/units/testsuite-60.sh b/test/units/testsuite-60.sh -index 239d7b0d4c..8cb3f466b6 100755 ---- a/test/units/testsuite-60.sh -+++ b/test/units/testsuite-60.sh -@@ -3,6 +3,56 @@ - set -eux - set -o pipefail - -+test_issue_20329() { -+ local tmpdir unit -+ tmpdir="$(mktemp -d)" -+ unit=$(systemd-escape --suffix mount --path "$tmpdir") -+ -+ # Set up test mount unit -+ cat > /run/systemd/system/"$unit" <&2 "Test mount \"$unit\" unit isn't mounted" -+ return 1 -+ } -+ mountpoint -q "$tmpdir" -+ -+ trap 'systemctl stop $unit' RETURN -+ -+ # Trigger the mount ratelimiting -+ cd "$(mktemp -d)" -+ mkdir foo -+ for ((i=0;i<50;++i)); do -+ mount --bind foo foo -+ umount foo -+ done -+ -+ # Unmount the test mount and start it immediately again via systemd -+ umount "$tmpdir" -+ systemctl start "$unit" -+ -+ # Make sure it is seen as mounted by systemd and it actually is mounted -+ [[ "$(systemctl show --property SubState --value "$unit")" = "mounted" ]] || { -+ echo >&2 "Test mount \"$unit\" unit isn't in \"mounted\" state" -+ return 1 -+ } -+ -+ mountpoint -q "$tmpdir" || { -+ echo >&2 "Test mount \"$unit\" is in \"mounted\" state, actually is not mounted" -+ return 1 -+ } -+} -+ - systemd-analyze log-level debug - systemd-analyze log-target journal - -@@ -87,6 +137,9 @@ if systemctl list-units -t mount tmp-meow* | grep -q tmp-meow; then - exit 42 - fi - -+# test that handling of mount start jobs is delayed when /proc/self/mouninfo monitor is rate limited -+test_issue_20329 -+ - systemd-analyze log-level info - - echo OK >/testok diff --git a/SOURCES/0237-test-insert-space-in-for-loop.patch b/SOURCES/0237-test-insert-space-in-for-loop.patch deleted file mode 100644 index 6f5aaac..0000000 --- a/SOURCES/0237-test-insert-space-in-for-loop.patch +++ /dev/null @@ -1,139 +0,0 @@ -From a480327b20deb75d5595878f2924490ef3aa4064 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 21:05:10 +0900 -Subject: [PATCH] test: insert space in for loop - -(cherry picked from commit 2f34ee33291c92fd46308213689540cb76fb8e2b) - -Related: #2087652 ---- - test/units/testsuite-17.06.sh | 6 +++--- - test/units/testsuite-35.sh | 8 ++++---- - test/units/testsuite-45.sh | 6 +++--- - test/units/testsuite-46.sh | 2 +- - test/units/testsuite-60.sh | 2 +- - 5 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/test/units/testsuite-17.06.sh b/test/units/testsuite-17.06.sh -index f2a0442dc3..224063f6a6 100755 ---- a/test/units/testsuite-17.06.sh -+++ b/test/units/testsuite-17.06.sh -@@ -18,18 +18,18 @@ function check_validity() { - function check() { - local i j - -- for ((i=0;i<2;i++)); do -+ for ((i = 0; i < 2; i++)); do - systemctl restart systemd-udevd.service - udevadm control --ping - udevadm settle - check_validity - -- for ((j=0;j<2;j++)); do -+ for ((j = 0; j < 2; j++)); do - udevadm trigger -w --action add --subsystem-match=block - check_validity - done - -- for ((j=0;j<2;j++)); do -+ for ((j = 0; j < 2; j++)); do - udevadm trigger -w --action change --subsystem-match=block - check_validity - done -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 0a7198c3fe..e369cf8701 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -149,7 +149,7 @@ EOF - evemu-device /run/lidswitch.evemu & - KILL_PID="$!" - -- for ((i=0;i<20;i++)); do -+ for ((i = 0; i < 20; i++)); do - if (( i != 0 )); then sleep .5; fi - - INPUT_NAME=$(grep -l '^Fake Lid Switch' /sys/class/input/*/device/name || :) -@@ -287,7 +287,7 @@ EOF - - # check session - ret=1 -- for ((i=0;i<30;i++)); do -+ for ((i = 0; i < 30; i++)); do - if (( i != 0)); then sleep 1; fi - if check_session; then - ret=0 -@@ -315,7 +315,7 @@ EOF - # coldplug: logind started with existing device - systemctl stop systemd-logind.service - modprobe scsi_debug -- for ((i=0;i<30;i++)); do -+ for ((i = 0; i < 30; i++)); do - if (( i != 0)); then sleep 1; fi - if dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null); then - break -@@ -342,7 +342,7 @@ EOF - # hotplug: new device appears while logind is running - rmmod scsi_debug - modprobe scsi_debug -- for ((i=0;i<30;i++)); do -+ for ((i = 0; i < 30; i++)); do - if (( i != 0)); then sleep 1; fi - if dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null); then - break -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index d0f9dd9461..fd8a99076b 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -197,7 +197,7 @@ start_mon() { - } - - wait_mon() { -- for ((i=0;i<10;i++)); do -+ for ((i = 0; i < 10; i++)); do - if (( i != 0 )); then sleep 1; fi - if grep -q "$1" "$mon"; then break; fi - done -@@ -228,7 +228,7 @@ EOF - - echo 'disable NTP' - timedatectl set-ntp false -- for ((i=0;i<10;i++)); do -+ for ((i = 0; i < 10; i++)); do - if (( i != 0 )); then sleep 1; fi - if [[ "$(systemctl show systemd-timesyncd --property ActiveState)" == "ActiveState=inactive" ]]; then - break; -@@ -243,7 +243,7 @@ EOF - timedatectl set-ntp true - wait_mon "NTP" "BOOLEAN true" - assert_ntp "true" -- for ((i=0;i<10;i++)); do -+ for ((i = 0; i < 10; i++)); do - if (( i != 0 )); then sleep 1; fi - if [[ "$(systemctl show systemd-timesyncd --property ActiveState)" == "ActiveState=active" ]]; then - break; -diff --git a/test/units/testsuite-46.sh b/test/units/testsuite-46.sh -index 61ee921151..3724a3b5f6 100755 ---- a/test/units/testsuite-46.sh -+++ b/test/units/testsuite-46.sh -@@ -27,7 +27,7 @@ inspect() { - } - - wait_for_state() { -- for ((i=0;i<10;i++)) ; do -+ for ((i = 0; i < 10; i++)) ; do - homectl inspect "$1" | grep -qF "State: $2" && break - sleep .5 - done -diff --git a/test/units/testsuite-60.sh b/test/units/testsuite-60.sh -index 8cb3f466b6..3a097816ca 100755 ---- a/test/units/testsuite-60.sh -+++ b/test/units/testsuite-60.sh -@@ -32,7 +32,7 @@ EOF - # Trigger the mount ratelimiting - cd "$(mktemp -d)" - mkdir foo -- for ((i=0;i<50;++i)); do -+ for ((i = 0; i < 50; i++)); do - mount --bind foo foo - umount foo - done diff --git a/SOURCES/0238-test-move-do-at-the-end-of-line.patch b/SOURCES/0238-test-move-do-at-the-end-of-line.patch deleted file mode 100644 index 5b42606..0000000 --- a/SOURCES/0238-test-move-do-at-the-end-of-line.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 9adf5125e39e15b2868a22fc481c4ce027de4f55 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 21:06:06 +0900 -Subject: [PATCH] test: move "do" at the end of line - -(cherry picked from commit 4627fb80bf54f5824570d3b94df9286971f028ac) - -Related: #2087652 ---- - test/test-functions | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index cab3e3c015..1b10112329 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2250,8 +2250,7 @@ convert_abs_rel() { - __abssize=${#__absolute[@]} - __cursize=${#__current[@]} - -- while [[ "${__absolute[__level]}" == "${__current[__level]}" ]] -- do -+ while [[ "${__absolute[__level]}" == "${__current[__level]}" ]]; do - (( __level++ )) - if (( __level > __abssize || __level > __cursize )) - then -@@ -2259,8 +2258,7 @@ convert_abs_rel() { - fi - done - -- for ((__i = __level; __i < __cursize-1; __i++)) -- do -+ for ((__i = __level; __i < __cursize-1; __i++)); do - if ((__i > __level)) - then - __newpath=$__newpath"/" -@@ -2268,8 +2266,7 @@ convert_abs_rel() { - __newpath=$__newpath".." - done - -- for ((__i = __level; __i < __abssize; __i++)) -- do -+ for ((__i = __level; __i < __abssize; __i++)); do - if [[ -n $__newpath ]] - then - __newpath=$__newpath"/" diff --git a/SOURCES/0239-test-use-trap-RETURN.patch b/SOURCES/0239-test-use-trap-RETURN.patch deleted file mode 100644 index e5ce153..0000000 --- a/SOURCES/0239-test-use-trap-RETURN.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 60bc6c654dfbcbfeac0120143dd9869ceeb1a56e Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 14 Jun 2022 21:08:04 +0900 -Subject: [PATCH] test: use trap RETURN - -(cherry picked from commit 6243063824838e027754cc2737bb975472d62de2) - -Related: #2087652 ---- - test/units/testsuite-35.sh | 10 ++-------- - test/units/testsuite-45.sh | 10 ++-------- - 2 files changed, 4 insertions(+), 16 deletions(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index e369cf8701..05d2a6c4c3 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -91,7 +91,7 @@ test_suspend_on_lid() { - fi - - KILL_PID= -- trap test_suspend_tear_down EXIT -+ trap test_suspend_tear_down RETURN - - # create fake suspend - mkdir -p /run/systemd/system/systemd-suspend.service.d -@@ -184,9 +184,6 @@ EOF - echo "logind crashed" >&2 - exit 1 - fi -- -- test_suspend_tear_down -- trap - EXIT - } - - test_shutdown() { -@@ -269,7 +266,7 @@ test_session() { - return - fi - -- trap test_session_tear_down EXIT -+ trap test_session_tear_down RETURN - - # add user - useradd -s /bin/bash logind-test-user -@@ -361,9 +358,6 @@ EOF - getfacl -p "$dev" >&2 - exit 1 - fi -- -- test_session_tear_down -- trap - EXIT - } - - : >/failed -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index fd8a99076b..322d8086e7 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -23,7 +23,7 @@ test_timezone() { - mv /etc/timezone /tmp/timezone.bak - fi - -- trap restore_timezone EXIT -+ trap restore_timezone RETURN - - if [[ -L /etc/localtime ]]; then - ORIG_TZ=$(readlink /etc/localtime | sed 's#^.*zoneinfo/##') -@@ -49,9 +49,6 @@ test_timezone() { - assert_eq "$(cat /etc/timezone)" "$ORIG_TZ" - fi - fi -- -- restore_timezone -- trap - EXIT - } - - restore_adjtime() { -@@ -75,7 +72,7 @@ test_adjtime() { - mv /etc/adjtime /etc/adjtime.bak - fi - -- trap restore_adjtime EXIT -+ trap restore_adjtime RETURN - - echo 'no adjtime file' - rm -f /etc/adjtime -@@ -182,9 +179,6 @@ LOCAL" - assert_eq "$(cat /etc/adjtime)" "0.0 0 0 - 0 - LOCAL" -- -- restore_adjtime -- trap - EXIT - } - - assert_ntp() { diff --git a/SOURCES/0240-test-ignore-the-error-about-our-own-libraries-missin.patch b/SOURCES/0240-test-ignore-the-error-about-our-own-libraries-missin.patch deleted file mode 100644 index 9653e95..0000000 --- a/SOURCES/0240-test-ignore-the-error-about-our-own-libraries-missin.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 07d0debc02fb8a9f51ff06a03ceb2302e4982166 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 15 Dec 2021 09:14:44 +0100 -Subject: [PATCH] test: ignore the error about our own libraries missing during - image creation - -19:50:59 F: Missing a shared library required by /var/tmp/systemd-test.NIPT2q/root/lib/systemd/libsystemd-core-250.so. -19:50:59 F: Run "ldd /var/tmp/systemd-test.NIPT2q/root/lib/systemd/libsystemd-core-250.so" to find out what it is. -19:50:59 F: libsystemd-shared-250.so => not found -19:50:59 F: Cannot create a test image. -(cherry picked from commit ff254eea8feb55bbea9ec5d731e3dc9299b80b9e) - -Related: #2087652 ---- - test/test-functions | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 1b10112329..a0ad8b2fb1 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2021,11 +2021,9 @@ inst_libs() { - - while read -r line; do - [[ "$line" = 'not a dynamic executable' ]] && break -- # Skip a harmless error when running the tests on a system with a significantly -- # older systemd version (ldd tries to resolve the unprefixed RPATH for libsystemd.so.0, -- # which is in this case older than the already installed libsystemd.so.0 in $initdir). -- # The issue is triggered by installing test dependencies in install_missing_libraries(). -- [[ "$line" =~ libsystemd.so.*:\ version\ .*\ not\ found ]] && continue -+ # Ignore errors about our own stuff missing. This is most likely caused -+ # by ldd attempting to use the unprefixed RPATH. -+ [[ "$line" =~ libsystemd.*\ not\ found ]] && continue - - if [[ "$line" =~ $so_regex ]]; then - file="${BASH_REMATCH[1]}" -@@ -2413,7 +2411,7 @@ inst_binary() { - # In certain cases we might attempt to install a binary which is already - # present in the test image, yet it's missing from the host system. - # In such cases, let's check if the binary indeed exists in the image -- # before doing any other chcecks. If it does, immediately return with -+ # before doing any other checks. If it does, immediately return with - # success. - if [[ $# -eq 1 ]]; then - for path in "" bin sbin usr/bin usr/sbin; do -@@ -2432,6 +2430,10 @@ inst_binary() { - while read -r line; do - [[ "$line" = 'not a dynamic executable' ]] && break - -+ # Ignore errors about our own stuff missing. This is most likely caused -+ # by ldd attempting to use the unprefixed RPATH. -+ [[ "$line" =~ libsystemd.*\ not\ found ]] && continue -+ - if [[ "$line" =~ $so_regex ]]; then - file="${BASH_REMATCH[1]}" - [[ -e "${initdir}/$file" ]] && continue diff --git a/SOURCES/0241-test-wrap-binaries-using-systemd-DSOs-when-running-w.patch b/SOURCES/0241-test-wrap-binaries-using-systemd-DSOs-when-running-w.patch deleted file mode 100644 index f5b7fb4..0000000 --- a/SOURCES/0241-test-wrap-binaries-using-systemd-DSOs-when-running-w.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 75037db319f9eb240d73186eee457f62d4b16c7d Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 14 Jun 2022 22:54:39 +0200 -Subject: [PATCH] test: wrap binaries using systemd DSOs when running w/ ASan - -Let's detect & wrap binaries which are linked against systemd DSOs and -we're running under ASan, since otherwise running such binaries ends -with: - -``` -==633==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD. -``` - -(cherry picked from commit 3917534d620c2b358a196431b9e2593218ba1ac9) - -Related: #2087652 ---- - test/test-functions | 40 +++++++++++++++++++++++++++++++++++++++- - 1 file changed, 39 insertions(+), 1 deletion(-) - -diff --git a/test/test-functions b/test/test-functions -index a0ad8b2fb1..34aeac339f 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2426,6 +2426,9 @@ inst_binary() { - - local file line - local so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)' -+ # DSOs provided by systemd -+ local systemd_so_regex='/(libudev|libsystemd.*|.+[\-_]systemd([\-_].+)?|libnss_(mymachines|myhostname|resolve)).so' -+ local wrap_binary=0 - # I love bash! - while read -r line; do - [[ "$line" = 'not a dynamic executable' ]] && break -@@ -2434,6 +2437,12 @@ inst_binary() { - # by ldd attempting to use the unprefixed RPATH. - [[ "$line" =~ libsystemd.*\ not\ found ]] && continue - -+ # We're built with ASan and the target binary loads one of the systemd's -+ # DSOs, so we need to tweak the environment before executing the binary -+ if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$line" =~ $systemd_so_regex ]]; then -+ wrap_binary=1 -+ fi -+ - if [[ "$line" =~ $so_regex ]]; then - file="${BASH_REMATCH[1]}" - [[ -e "${initdir}/$file" ]] && continue -@@ -2449,7 +2458,36 @@ inst_binary() { - exit 1 - fi - done < <(LC_ALL=C ldd "$bin" 2>/dev/null) -- inst_simple "$bin" "$target" -+ -+ # Same as above, but we need to wrap certain libraries unconditionally -+ # -+ # login - dlopen()s (not only) systemd's PAM modules -+ # tar - called by machinectl in TEST-25 -+ if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$bin" =~ /(login|tar)$ ]]; then -+ wrap_binary=1 -+ fi -+ -+ if get_bool "$wrap_binary"; then -+ dinfo "Creating ASan-compatible wrapper for binary '$target'" -+ # Install the target binary with a ".orig" suffix -+ inst_simple "$bin" "${target}.orig" -+ # Create a simple shell wrapper in place of the target binary, which -+ # sets necessary ASan-related env variables and then exec()s the -+ # suffixed target binary -+ cat >"$initdir/$target" < -Date: Mon, 6 Jun 2022 14:45:11 +0200 -Subject: [PATCH] test: set $ASAN_RT_PATH along with $LD_PRELOAD to the ASan - runtime DSO - -Since we unset $LD_PRELOAD in the testsuite-* units (due to another -issue), let's store the path to the ASan DSO in another env variable, so -we can easily access it in the testsuite scripts when needed. - -(cherry picked from commit 3ea18a2e36a5b8ac60c76e407f9dd38800455725) - -Related: #2087652 ---- - test/test-functions | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/test-functions b/test/test-functions -index 34aeac339f..a9ff561083 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -820,7 +820,7 @@ mount -o remount,rw / - - # A lot of services (most notably dbus) won't start without preloading libasan - # See https://github.com/systemd/systemd/issues/5004 --DEFAULT_ENVIRONMENT="\$DEFAULT_ENVIRONMENT LD_PRELOAD=$ASAN_RT_PATH" -+DEFAULT_ENVIRONMENT="\$DEFAULT_ENVIRONMENT LD_PRELOAD=$ASAN_RT_PATH ASAN_RT_PATH=$ASAN_RT_PATH" - - if [[ "$ASAN_COMPILER" == "clang" ]]; then - # Let's add the ASan DSO's path to the dynamic linker's cache. This is pretty diff --git a/SOURCES/0243-test-drop-all-LD_PRELOAD-related-ASan-workarounds.patch b/SOURCES/0243-test-drop-all-LD_PRELOAD-related-ASan-workarounds.patch deleted file mode 100644 index 138ae6b..0000000 --- a/SOURCES/0243-test-drop-all-LD_PRELOAD-related-ASan-workarounds.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 137a22e0192941fa275b70665af7a0d54f6ad614 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 15 Jun 2022 12:32:51 +0200 -Subject: [PATCH] test: drop all LD_PRELOAD-related ASan workarounds - -since they shouldn't be necessary anymore, as we tweak the "problematic" -binaries on per-binary basis. - -(cherry picked from commit fa65ba6baac8c9241cf30802bb5fd3698d1f3189) - -Related: #2087652 ---- - test/test-functions | 54 +-------------------------------------------- - 1 file changed, 1 insertion(+), 53 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index a9ff561083..f55e64493d 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -593,10 +593,6 @@ install_verity_minimal() { - # missing $LD_PRELOAD libraries. - inst_libs "$ASAN_RT_PATH" - inst_library "$ASAN_RT_PATH" -- # Create a dummy LSan suppression file otherwise gcc's ASan -- # complains as it doesn't exist in the minimal image -- # (i.e. when running TEST-29 or TEST-50 under sanitizers) -- touch "$initdir/systemd-lsan.supp" - fi - cp "$os_release" "$initdir/usr/lib/os-release" - ln -s ../usr/lib/os-release "$initdir/etc/os-release" -@@ -792,20 +788,6 @@ if [[ ! -e "$ASAN_RT_PATH" ]]; then - exit 1 - fi - --# Suppress certain leaks reported by LSan (either in external tools or bogus --# ones) --# Docs: # https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer#suppressions --# --# - fsck is called by systemd-homed and is reporting a leak we're not interested --# in --# - libLLVM is a "side effect" caused by the previous fsck leak --cat >/systemd-lsan.supp </etc/systemd/system/systemd-journal-flush.service.d/timeout.conf - --# D-Bus has troubles during system shutdown causing it to fail. Although it's --# harmless, it causes unnecessary noise in the logs, so let's disable LSan's --# at_exit check just for the dbus.service --mkdir -p /etc/systemd/system/dbus.service.d --printf "[Service]\nEnvironment=ASAN_OPTIONS=leak_check_at_exit=false\n" >/etc/systemd/system/dbus.service.d/disable-lsan.conf -- --# Some utilities run via IMPORT/RUN/PROGRAM udev directives fail because --# they're uninstrumented (like dmsetup). Let's add a simple rule which sets --# LD_PRELOAD to the ASan RT library to fix this. --mkdir -p /etc/udev/rules.d --cat >/etc/udev/rules.d/00-set-LD_PRELOAD.rules <"\$_dropin_dir/unset_ld_preload.conf" --} -- --unset_ld_preload systemd-remount-fs --unset_ld_preload testsuite- -- - export ASAN_OPTIONS=\$DEFAULT_ASAN_OPTIONS:log_path=/systemd.asan.log UBSAN_OPTIONS=\$DEFAULT_UBSAN_OPTIONS - exec "$ROOTLIBDIR/systemd" "\$@" - EOF diff --git a/SOURCES/0244-test-don-t-wrap-binaries-built-with-ASan.patch b/SOURCES/0244-test-don-t-wrap-binaries-built-with-ASan.patch deleted file mode 100644 index b7ef69f..0000000 --- a/SOURCES/0244-test-don-t-wrap-binaries-built-with-ASan.patch +++ /dev/null @@ -1,57 +0,0 @@ -From e5ecc772a0bb0813cdcf0a24f48ba3278da6e276 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 15 Jun 2022 19:43:11 +0200 -Subject: [PATCH] test: don't wrap binaries built with ASan - -since they should handle loading other instrumented libraries without -issues. - -(cherry picked from commit b727d7e02d6c88476ae9e46211e1f9c24720d5c3) - -Related: #2087652 ---- - test/test-functions | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index f55e64493d..57d4df3e7e 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -228,6 +228,8 @@ DEBUGTOOLS=( - ) - - is_built_with_asan() { -+ local _bin="${1:?}" -+ - if ! type -P objdump >/dev/null; then - ddebug "Failed to find objdump. Assuming systemd hasn't been built with ASAN." - return 1 -@@ -235,7 +237,7 @@ is_built_with_asan() { - - # Borrowed from https://github.com/google/oss-fuzz/blob/cd9acd02f9d3f6e80011cc1e9549be526ce5f270/infra/base-images/base-runner/bad_build_check#L182 - local _asan_calls -- _asan_calls="$(objdump -dC "$SYSTEMD_JOURNALD" | grep -E "(callq?|brasl?|bl)\s.+__asan" -c)" -+ _asan_calls="$(objdump -dC "$_bin" | grep -E "(callq?|brasl?|bl)\s.+__asan" -c)" - if ((_asan_calls < 1000)); then - return 1 - else -@@ -251,7 +253,7 @@ is_built_with_coverage() { - meson configure "${BUILD_DIR:?}" | grep 'b_coverage' | awk '{ print $2 }' | grep -q 'true' - } - --IS_BUILT_WITH_ASAN=$(is_built_with_asan && echo yes || echo no) -+IS_BUILT_WITH_ASAN=$(is_built_with_asan "$SYSTEMD_JOURNALD" && echo yes || echo no) - IS_BUILT_WITH_COVERAGE=$(is_built_with_coverage && echo yes || echo no) - - if get_bool "$IS_BUILT_WITH_ASAN"; then -@@ -2415,7 +2417,9 @@ inst_binary() { - wrap_binary=1 - fi - -- if get_bool "$wrap_binary"; then -+ # If the target binary is built with ASan support, we don't need to wrap -+ # it, as it should handle everything by itself -+ if get_bool "$wrap_binary" && ! is_built_with_asan "$bin"; then - dinfo "Creating ASan-compatible wrapper for binary '$target'" - # Install the target binary with a ".orig" suffix - inst_simple "$bin" "${target}.orig" diff --git a/SOURCES/0245-test-send-stdout-stderr-of-testsuite-units-to-journa.patch b/SOURCES/0245-test-send-stdout-stderr-of-testsuite-units-to-journa.patch deleted file mode 100644 index 250eb9b..0000000 --- a/SOURCES/0245-test-send-stdout-stderr-of-testsuite-units-to-journa.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 4dd51db0381048f15973dc0046fe5fdec1f40aa8 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 16 Jun 2022 22:16:53 +0200 -Subject: [PATCH] test: send stdout/stderr of testsuite units to journal & - console - -to make debugging in CIs slightly easier. - -(cherry picked from commit ba7abf79a5a2df2a93332fc32e8e3c268c74abc7) - -Related: #2087652 ---- - test/test-functions | 12 ++++++++++++ - test/units/testsuite-22.service | 2 -- - test/units/testsuite-35.service | 2 -- - test/units/testsuite-45.service | 2 -- - test/units/testsuite-64.service | 2 -- - test/units/testsuite-71.service | 2 -- - test/units/testsuite-73.service | 2 -- - 7 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 57d4df3e7e..77d4a0afff 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2867,6 +2867,18 @@ test_setup() { - mask_supporting_services - fi - -+ # Send stdout/stderr of testsuite-*.service units to both journal and -+ # console to make debugging in CIs easier -+ # Note: we can't use a dropin for `testsuite-.service`, since that also -+ # overrides 'sub-units' of some tests that already use a specific -+ # value for Standard(Output|Error)= -+ # (e.g. test/units/testsuite-66-deviceisolation.service) -+ if ! get_bool "$INTERACTIVE_DEBUG"; then -+ local dropin_dir="${initdir:?}/etc/systemd/system/testsuite-${TESTID:?}.service.d" -+ mkdir -p "$dropin_dir" -+ printf '[Service]\nStandardOutput=journal+console\nStandardError=journal+console' >"$dropin_dir/99-stdout.conf" -+ fi -+ - if get_bool "$hook_defined"; then - test_append_files "${initdir:?}" - fi -diff --git a/test/units/testsuite-22.service b/test/units/testsuite-22.service -index b9ecc4c5d6..a5ed660c62 100644 ---- a/test/units/testsuite-22.service -+++ b/test/units/testsuite-22.service -@@ -9,5 +9,3 @@ Wants=getty-pre.target - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh - Type=oneshot --StandardOutput=tty --StandardError=tty -diff --git a/test/units/testsuite-35.service b/test/units/testsuite-35.service -index 556a57a384..0599f6104e 100644 ---- a/test/units/testsuite-35.service -+++ b/test/units/testsuite-35.service -@@ -5,6 +5,4 @@ Description=TEST-35-LOGIN - [Service] - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh --StandardOutput=journal+console --StandardError=journal+console - Type=oneshot -diff --git a/test/units/testsuite-45.service b/test/units/testsuite-45.service -index 79c0a6f117..b16ce9933f 100644 ---- a/test/units/testsuite-45.service -+++ b/test/units/testsuite-45.service -@@ -5,6 +5,4 @@ Description=TEST-45-TIMEDATE - [Service] - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh --StandardOutput=journal+console --StandardError=journal+console - Type=oneshot -diff --git a/test/units/testsuite-64.service b/test/units/testsuite-64.service -index 10b61e7e53..f75a3d7aad 100644 ---- a/test/units/testsuite-64.service -+++ b/test/units/testsuite-64.service -@@ -6,5 +6,3 @@ Description=TEST-64-UDEV - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh - Type=oneshot --StandardOutput=journal+console --StandardError=journal+console -diff --git a/test/units/testsuite-71.service b/test/units/testsuite-71.service -index 019e8bff24..1718629c05 100644 ---- a/test/units/testsuite-71.service -+++ b/test/units/testsuite-71.service -@@ -5,6 +5,4 @@ Description=TEST-71-HOSTNAME - [Service] - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh --StandardOutput=journal+console --StandardError=journal+console - Type=oneshot -diff --git a/test/units/testsuite-73.service b/test/units/testsuite-73.service -index bee8c4215d..3ebd24da18 100644 ---- a/test/units/testsuite-73.service -+++ b/test/units/testsuite-73.service -@@ -5,6 +5,4 @@ Description=TEST-73-LOCALE - [Service] - ExecStartPre=rm -f /failed /testok - ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh --StandardOutput=journal+console --StandardError=journal+console - Type=oneshot diff --git a/SOURCES/0246-test-make-the-busy-loop-in-TEST-02-less-verbose.patch b/SOURCES/0246-test-make-the-busy-loop-in-TEST-02-less-verbose.patch deleted file mode 100644 index c9fb57b..0000000 --- a/SOURCES/0246-test-make-the-busy-loop-in-TEST-02-less-verbose.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 1e684870a7f893fcd9138c0ca6bde0fcf3bf752a Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 17 Jun 2022 14:44:49 +0200 -Subject: [PATCH] test: make the busy loop in TEST-02 less verbose - -as it unnecessarily clogs the logs. - -(cherry picked from commit 582547cbd38a02289451c1cea36a32f446b66677) - -Related: #2087652 ---- - test/units/testsuite-02.sh | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/test/units/testsuite-02.sh b/test/units/testsuite-02.sh -index af6e007825..54927a6377 100755 ---- a/test/units/testsuite-02.sh -+++ b/test/units/testsuite-02.sh -@@ -49,6 +49,7 @@ function report_result() { - systemd-cat cat "/$name.log" - } - -+set +x - # Associative array for running tasks, where running[test-path]=PID - declare -A running=() - for task in "${TEST_LIST[@]}"; do -@@ -72,6 +73,7 @@ for task in "${TEST_LIST[@]}"; do - done - - if [[ -x $task ]]; then -+ echo "Executing test '$task'" - log_file="/${task##*/}.log" - $task &>"$log_file" & - running[$task]=$! -@@ -80,11 +82,14 @@ done - - # Wait for remaining running tasks - for key in "${!running[@]}"; do -+ echo "Waiting for test '$key' to finish" - wait ${running[$key]} && ec=0 || ec=$? - report_result "$key" $ec - unset running["$key"] - done - -+set -x -+ - # Test logs are sometimes lost, as the system shuts down immediately after - journalctl --sync - diff --git a/SOURCES/0247-test-always-wrap-useradd-userdel-when-running-w-ASan.patch b/SOURCES/0247-test-always-wrap-useradd-userdel-when-running-w-ASan.patch deleted file mode 100644 index e30e1b5..0000000 --- a/SOURCES/0247-test-always-wrap-useradd-userdel-when-running-w-ASan.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d9055b5394aff8a8ec9c75c7cf4fc43f0617e6dd Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 17 Jun 2022 14:47:10 +0200 -Subject: [PATCH] test: always wrap useradd/userdel when running w/ ASan - -since they dlopen() PAM modules, including systemd ones. - -(cherry picked from commit 94850fb956458703e0c6e0bee7f482aa41a47e9e) - -Related: #2087652 ---- - test/test-functions | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 77d4a0afff..b5fcf07818 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2411,9 +2411,9 @@ inst_binary() { - - # Same as above, but we need to wrap certain libraries unconditionally - # -- # login - dlopen()s (not only) systemd's PAM modules -+ # login, useradd, userdel - dlopen()s (not only) systemd's PAM modules - # tar - called by machinectl in TEST-25 -- if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$bin" =~ /(login|tar)$ ]]; then -+ if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$bin" =~ /(login|tar|useradd|userdel)$ ]]; then - wrap_binary=1 - fi - diff --git a/SOURCES/0248-test-don-t-flush-debug-logs-to-the-console.patch b/SOURCES/0248-test-don-t-flush-debug-logs-to-the-console.patch deleted file mode 100644 index ce6295c..0000000 --- a/SOURCES/0248-test-don-t-flush-debug-logs-to-the-console.patch +++ /dev/null @@ -1,239 +0,0 @@ -From da2408f522a4ea65b30fb86619dd3f11e1308ac4 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 17 Jun 2022 15:06:59 +0200 -Subject: [PATCH] test: don't flush debug logs to the console - -Let's keep the debug logs in the journal, while logging only -testsute-*.sh stdout/stderr to the console (ba7abf7). This should make -the test output log a bit more readable and potentially the tests itself -a bit faster by avoiding console oversaturation. - -Also, it should significantly reduce the size of artifacts kept by CIs. - -(cherry picked from commit c84d1c9822bd181c37a5bd26b607edd67096839f) - -Related: #2087652 ---- - test/units/testsuite-20.sh | 1 - - test/units/testsuite-23.sh | 1 - - test/units/testsuite-27.sh | 1 - - test/units/testsuite-30.sh | 1 - - test/units/testsuite-32.sh | 1 - - test/units/testsuite-34.sh | 1 - - test/units/testsuite-38.sh | 1 - - test/units/testsuite-39.sh | 1 - - test/units/testsuite-40.sh | 1 - - test/units/testsuite-41.sh | 1 - - test/units/testsuite-46.sh | 1 - - test/units/testsuite-47.sh | 1 - - test/units/testsuite-52.sh | 1 - - test/units/testsuite-55.sh | 1 - - test/units/testsuite-59.sh | 1 - - test/units/testsuite-62.sh | 1 - - test/units/testsuite-66.sh | 1 - - 17 files changed, 17 deletions(-) - -diff --git a/test/units/testsuite-20.sh b/test/units/testsuite-20.sh -index fc87c18c4c..338769aacc 100755 ---- a/test/units/testsuite-20.sh -+++ b/test/units/testsuite-20.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - test "$(systemctl show -P MainPID testsuite-20.service)" -eq $$ - -diff --git a/test/units/testsuite-23.sh b/test/units/testsuite-23.sh -index 46e45c8780..e8f99ff60d 100755 ---- a/test/units/testsuite-23.sh -+++ b/test/units/testsuite-23.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - # Create a binary for which execve() will fail - touch /tmp/brokenbinary -diff --git a/test/units/testsuite-27.sh b/test/units/testsuite-27.sh -index 3b2f925153..c0701f35c3 100755 ---- a/test/units/testsuite-27.sh -+++ b/test/units/testsuite-27.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - systemd-run --wait --unit=test27-one \ - -p StandardOutput=file:/tmp/stdout \ -diff --git a/test/units/testsuite-30.sh b/test/units/testsuite-30.sh -index 51b9bdd093..57f46669f9 100755 ---- a/test/units/testsuite-30.sh -+++ b/test/units/testsuite-30.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - systemctl disable --now systemd-timesyncd.service - -diff --git a/test/units/testsuite-32.sh b/test/units/testsuite-32.sh -index 20ab67f6f1..5c289d0abf 100755 ---- a/test/units/testsuite-32.sh -+++ b/test/units/testsuite-32.sh -@@ -11,7 +11,6 @@ set -o pipefail - - if test -f /sys/fs/cgroup/system.slice/testsuite-32.service/memory.oom.group; then - systemd-analyze log-level debug -- systemd-analyze log-target console - - # Run a service that is guaranteed to be the first candidate for OOM killing - systemd-run --unit=oomtest.service \ -diff --git a/test/units/testsuite-34.sh b/test/units/testsuite-34.sh -index 57a7b950a0..e6171beaa6 100755 ---- a/test/units/testsuite-34.sh -+++ b/test/units/testsuite-34.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - function test_directory() { - local directory="$1" -diff --git a/test/units/testsuite-38.sh b/test/units/testsuite-38.sh -index f2f61b961f..438990d1c5 100755 ---- a/test/units/testsuite-38.sh -+++ b/test/units/testsuite-38.sh -@@ -5,7 +5,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - unit=testsuite-38-sleep.service - -diff --git a/test/units/testsuite-39.sh b/test/units/testsuite-39.sh -index 03abf391f1..5b77bbbaf1 100755 ---- a/test/units/testsuite-39.sh -+++ b/test/units/testsuite-39.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - export SYSTEMD_PAGER= - SERVICE_PATH="$(mktemp /etc/systemd/system/execreloadXXX.service)" -diff --git a/test/units/testsuite-40.sh b/test/units/testsuite-40.sh -index dd54fa174c..cec1fd3a7a 100755 ---- a/test/units/testsuite-40.sh -+++ b/test/units/testsuite-40.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - declare -A property - -diff --git a/test/units/testsuite-41.sh b/test/units/testsuite-41.sh -index 3b41db03f5..13bc684c2d 100755 ---- a/test/units/testsuite-41.sh -+++ b/test/units/testsuite-41.sh -@@ -7,7 +7,6 @@ set -o pipefail - MAX_SECS=60 - - systemd-analyze log-level debug --systemd-analyze log-target console - - # test one: Restart=on-failure should restart the service - systemd-run --unit=one -p Type=oneshot -p Restart=on-failure /bin/bash -c "exit 1" \ -diff --git a/test/units/testsuite-46.sh b/test/units/testsuite-46.sh -index 3724a3b5f6..658613abb6 100755 ---- a/test/units/testsuite-46.sh -+++ b/test/units/testsuite-46.sh -@@ -34,7 +34,6 @@ wait_for_state() { - } - - systemd-analyze log-level debug --systemd-analyze log-target console - systemctl service-log-level systemd-homed debug - - # Create a tmpfs to use as backing store for the home dir. That way we can enforce a size limit nicely. -diff --git a/test/units/testsuite-47.sh b/test/units/testsuite-47.sh -index ff10602df7..529e9617a5 100755 ---- a/test/units/testsuite-47.sh -+++ b/test/units/testsuite-47.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - systemctl start testsuite-47-repro - sleep 4 -diff --git a/test/units/testsuite-52.sh b/test/units/testsuite-52.sh -index 8a76ff6ed6..d78fdd53ba 100755 ---- a/test/units/testsuite-52.sh -+++ b/test/units/testsuite-52.sh -@@ -4,7 +4,6 @@ set -ex - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - systemctl enable test-honor-first-shutdown.service - systemctl start test-honor-first-shutdown.service -diff --git a/test/units/testsuite-55.sh b/test/units/testsuite-55.sh -index 379ea9e569..74dd285460 100755 ---- a/test/units/testsuite-55.sh -+++ b/test/units/testsuite-55.sh -@@ -4,7 +4,6 @@ set -eux - set -o pipefail - - systemd-analyze log-level debug --systemd-analyze log-target console - - # Loose checks to ensure the environment has the necessary features for systemd-oomd - [[ -e /proc/pressure ]] || echo "no PSI" >>/skipped -diff --git a/test/units/testsuite-59.sh b/test/units/testsuite-59.sh -index 143e44ec63..83db053107 100755 ---- a/test/units/testsuite-59.sh -+++ b/test/units/testsuite-59.sh -@@ -28,7 +28,6 @@ wait_on_state_or_fail () { - } - - systemd-analyze log-level debug --systemd-analyze log-target console - - - cat >/run/systemd/system/testservice-fail-59.service < -Date: Fri, 17 Jun 2022 15:28:17 +0200 -Subject: [PATCH] test: fix a couple of issues found by shellcheck - -(cherry picked from commit 72f0e89c0da3584d5d0a0124d791b02f0f04e769) - -Related: #2087652 ---- - test/units/testsuite-02.sh | 4 ++-- - test/units/testsuite-38.sh | 8 ++++---- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/test/units/testsuite-02.sh b/test/units/testsuite-02.sh -index 54927a6377..8ebcc575ee 100755 ---- a/test/units/testsuite-02.sh -+++ b/test/units/testsuite-02.sh -@@ -61,7 +61,7 @@ for task in "${TEST_LIST[@]}"; do - # Task has finished, report its result and drop it from the queue - wait "${running[$key]}" && ec=0 || ec=$? - report_result "$key" $ec -- unset running["$key"] -+ unset "running[$key]" - # Break from inner for loop and outer while loop to skip - # the sleep below when we find a free slot in the queue - break 2 -@@ -85,7 +85,7 @@ for key in "${!running[@]}"; do - echo "Waiting for test '$key' to finish" - wait ${running[$key]} && ec=0 || ec=$? - report_result "$key" $ec -- unset running["$key"] -+ unset "running[$key]" - done - - set -x -diff --git a/test/units/testsuite-38.sh b/test/units/testsuite-38.sh -index 438990d1c5..c5f9bcc22c 100755 ---- a/test/units/testsuite-38.sh -+++ b/test/units/testsuite-38.sh -@@ -17,7 +17,7 @@ dbus_freeze() { - local name object_path suffix - - suffix="${1##*.}" -- name="${1%.$suffix}" -+ name="${1%".$suffix"}" - object_path="/org/freedesktop/systemd1/unit/${name//-/_2d}_2e${suffix}" - - busctl call \ -@@ -31,7 +31,7 @@ dbus_thaw() { - local name object_path suffix - - suffix="${1##*.}" -- name="${1%.$suffix}" -+ name="${1%".$suffix"}" - object_path="/org/freedesktop/systemd1/unit/${name//-/_2d}_2e${suffix}" - - busctl call \ -@@ -65,7 +65,7 @@ dbus_can_freeze() { - local name object_path suffix - - suffix="${1##*.}" -- name="${1%.$suffix}" -+ name="${1%".$suffix"}" - object_path="/org/freedesktop/systemd1/unit/${name//-/_2d}_2e${suffix}" - - busctl get-property \ -@@ -79,7 +79,7 @@ check_freezer_state() { - local name object_path suffix - - suffix="${1##*.}" -- name="${1%.$suffix}" -+ name="${1%".$suffix"}" - object_path="/org/freedesktop/systemd1/unit/${name//-/_2d}_2e${suffix}" - - for _ in {0..10}; do diff --git a/SOURCES/0250-test-pass-the-initdir-to-check_result_-qemu-nspawn-h.patch b/SOURCES/0250-test-pass-the-initdir-to-check_result_-qemu-nspawn-h.patch deleted file mode 100644 index ae0c9b8..0000000 --- a/SOURCES/0250-test-pass-the-initdir-to-check_result_-qemu-nspawn-h.patch +++ /dev/null @@ -1,45 +0,0 @@ -From e235b10483fb5b33f20ff0611ac5ed707d35d850 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 18 Feb 2022 14:10:15 +0100 -Subject: [PATCH] test: pass the initdir to check_result_{qemu,nspawn} hooks - -(cherry picked from commit 4b9a0c3aebdcf000f8d7ee569cb8a1806d07c397) - -Related: #2087652 ---- - test/test-functions | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index b5fcf07818..93ab32b68d 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1438,7 +1438,7 @@ check_result_nspawn() { - - # Run additional test-specific checks if defined by check_result_nspawn_hook() - if declare -F check_result_nspawn_hook >/dev/null; then -- if ! check_result_nspawn_hook; then -+ if ! check_result_nspawn_hook "${workspace}"; then - derror "check_result_nspawn_hook() returned with EC > 0" - ret=4 - fi -@@ -1457,16 +1457,16 @@ check_result_qemu() { - check_result_common "${initdir:?}" - ret=$? - -- _umount_dir "${initdir:?}" -- - # Run additional test-specific checks if defined by check_result_qemu_hook() - if declare -F check_result_qemu_hook >/dev/null; then -- if ! check_result_qemu_hook; then -+ if ! check_result_qemu_hook "${initdir:?}"; then - derror "check_result_qemu_hook() returned with EC > 0" - ret=4 - fi - fi - -+ _umount_dir "${initdir:?}" -+ - return $ret - } - diff --git a/SOURCES/0251-test-run-the-custom-check-hooks-before-common-checks.patch b/SOURCES/0251-test-run-the-custom-check-hooks-before-common-checks.patch deleted file mode 100644 index 840a55e..0000000 --- a/SOURCES/0251-test-run-the-custom-check-hooks-before-common-checks.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 895cc5ef78f91ed542d8be6a057033b7992ad91e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 17 Jun 2022 17:28:13 +0200 -Subject: [PATCH] test: run the custom check hooks before common checks - -since we delete the guest journals as part of the save_journal() step in -check_result_common(), making journal inaccessible from the custom check -hooks. - -(cherry picked from commit 35d2d2e61c7695b87a4ee3dc54d065f4de95f260) - -Related: #2087652 ---- - test/test-functions | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 93ab32b68d..1306dcf260 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1433,10 +1433,7 @@ check_result_nspawn() { - local workspace="${1:?}" - local ret - -- check_result_common "${workspace}" -- ret=$? -- -- # Run additional test-specific checks if defined by check_result_nspawn_hook() -+ # Run a test-specific checks if defined by check_result_nspawn_hook() - if declare -F check_result_nspawn_hook >/dev/null; then - if ! check_result_nspawn_hook "${workspace}"; then - derror "check_result_nspawn_hook() returned with EC > 0" -@@ -1444,6 +1441,9 @@ check_result_nspawn() { - fi - fi - -+ check_result_common "${workspace}" -+ ret=$? -+ - _umount_dir "${initdir:?}" - - return $ret -@@ -1454,10 +1454,7 @@ check_result_qemu() { - local ret - mount_initdir - -- check_result_common "${initdir:?}" -- ret=$? -- -- # Run additional test-specific checks if defined by check_result_qemu_hook() -+ # Run a test-specific checks if defined by check_result_qemu_hook() - if declare -F check_result_qemu_hook >/dev/null; then - if ! check_result_qemu_hook "${initdir:?}"; then - derror "check_result_qemu_hook() returned with EC > 0" -@@ -1465,6 +1462,9 @@ check_result_qemu() { - fi - fi - -+ check_result_common "${initdir:?}" -+ ret=$? -+ - _umount_dir "${initdir:?}" - - return $ret diff --git a/SOURCES/0252-test-check-journal-directly-instead-of-capturing-con.patch b/SOURCES/0252-test-check-journal-directly-instead-of-capturing-con.patch deleted file mode 100644 index 6c294d9..0000000 --- a/SOURCES/0252-test-check-journal-directly-instead-of-capturing-con.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 37b398e2a3d6cd225a3121843540a033f4415b80 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Fri, 17 Jun 2022 17:29:22 +0200 -Subject: [PATCH] test: check journal directly instead of capturing console - output - -(cherry picked from commit 8cda7b91ff267fc21325d4886980e243389a7566) - -Related: #2087652 ---- - test/TEST-52-HONORFIRSTSHUTDOWN/test.sh | 13 ++++--------- - 1 file changed, 4 insertions(+), 9 deletions(-) - -diff --git a/test/TEST-52-HONORFIRSTSHUTDOWN/test.sh b/test/TEST-52-HONORFIRSTSHUTDOWN/test.sh -index 936e801c51..6a1ec9ca29 100755 ---- a/test/TEST-52-HONORFIRSTSHUTDOWN/test.sh -+++ b/test/TEST-52-HONORFIRSTSHUTDOWN/test.sh -@@ -14,15 +14,10 @@ TEST_NO_QEMU=1 - # could turn into a reboot if the test fails. - NSPAWN_TIMEOUT=60 - --# Remove this file if it exists. This is used along with --# the make target "finish". Since concrete confirmation is --# only found from the console during the poweroff. --rm -f /tmp/honorfirstshutdown.log >/dev/null -- - check_result_nspawn_hook() { -- grep -q "Shutdown is already active. Skipping emergency action request" /tmp/honorfirstshutdown.log -+ local workspace="${1:?}" -+ -+ "${JOURNALCTL:?}" -D "${workspace:?}/var/log/journal" --grep "Shutdown is already active. Skipping emergency action request" --no-pager - } - --# Note: don't use a pipe in the following expression, as it breaks the trap --# handlers we have defined in test/test-functions. --do_test "$@" > >(tee /tmp/honorfirstshutdown.log) -+do_test "$@" diff --git a/SOURCES/0253-test-use-saved-process-PID-instead-of.patch b/SOURCES/0253-test-use-saved-process-PID-instead-of.patch deleted file mode 100644 index 533ce85..0000000 --- a/SOURCES/0253-test-use-saved-process-PID-instead-of.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c81dea716e04419f8f7b83346015ae8f834ec30c Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Mon, 20 Jun 2022 12:27:39 +0200 -Subject: [PATCH] test: use saved process PID instead of %% - -As the `%%` specifier might fail if the current job (i.e. the last -background job) already finished: - -``` -[ 61.692196] testsuite-04.sh[656]: ++ systemd-id128 new -[ 61.705407] testsuite-04.sh[263]: + ID=912cb8f8ef304153a123f772bb0fe9e0 -[ 61.706318] testsuite-04.sh[657]: + systemd-cat -t 912cb8f8ef304153a123f772bb0fe9e0 bash -c 'echo parent; (echo child) & wait' -[ 61.720940] testsuite-04.sh[263]: + PID=657 -[ 61.721126] testsuite-04.sh[263]: + wait %% -[ 61.723014] testsuite-04.sh[263]: /usr/lib/systemd/tests/testdata/units/testsuite-04.sh: line 96: wait: %%: no such job -``` - -(cherry picked from commit 08970485003c25ce2c4adfaeea2d58558d311d42) - -Related: #2087652 ---- - test/units/testsuite-04.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/units/testsuite-04.sh b/test/units/testsuite-04.sh -index 7521a6d2e5..b5468cbea4 100755 ---- a/test/units/testsuite-04.sh -+++ b/test/units/testsuite-04.sh -@@ -93,7 +93,7 @@ cmp /expected /output - ID=$(systemd-id128 new) - systemd-cat -t "$ID" bash -c 'echo parent; (echo child) & wait' & - PID=$! --wait %% -+wait $PID - journalctl --sync - # We can drop this grep when https://github.com/systemd/systemd/issues/13937 - # has a fix. diff --git a/SOURCES/0254-test-account-for-ADDR_NO_RANDOMIZE-if-it-s-set.patch b/SOURCES/0254-test-account-for-ADDR_NO_RANDOMIZE-if-it-s-set.patch deleted file mode 100644 index 3a735a4..0000000 --- a/SOURCES/0254-test-account-for-ADDR_NO_RANDOMIZE-if-it-s-set.patch +++ /dev/null @@ -1,58 +0,0 @@ -From f55e25db1b2f69cd5d19508bda34c52f5f92e800 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 9 Jun 2022 11:34:09 +0200 -Subject: [PATCH] test: account for ADDR_NO_RANDOMIZE if it's set - -On ppc64le sanitizers disable ASLR (i.e. by setting ADDR_NO_RANDOMIZE), -which opinionated_personality() doesn't return. Let's tweak the current -personality ourselves in such cases. - -See: https://github.com/llvm/llvm-project/commit/78f7a6eaa601bfdd6ae70ffd3da2254c21ff77f9 - -Resolves: #23666 -(cherry picked from commit 894dad2975c61f59e71561cab21d6f85e8523b57) - -Related: #2087652 ---- - src/test/test-seccomp.c | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) - -diff --git a/src/test/test-seccomp.c b/src/test/test-seccomp.c -index 7ccfeadbb8..1f96ba4f80 100644 ---- a/src/test/test-seccomp.c -+++ b/src/test/test-seccomp.c -@@ -934,8 +934,15 @@ TEST(lock_personality) { - } - - assert_se(opinionated_personality(¤t) >= 0); -+ /* On ppc64le sanitizers disable ASLR (i.e. by setting ADDR_NO_RANDOMIZE), -+ * which opinionated_personality() doesn't return. Let's tweak the current -+ * personality ourselves in such cases. -+ * See: https://github.com/llvm/llvm-project/commit/78f7a6eaa601bfdd6ae70ffd3da2254c21ff77f9 -+ */ -+ if (FLAGS_SET(safe_personality(PERSONALITY_INVALID), ADDR_NO_RANDOMIZE)) -+ current |= ADDR_NO_RANDOMIZE; - -- log_info("current personality=%lu", current); -+ log_info("current personality=0x%lX", current); - - pid = fork(); - assert_se(pid >= 0); -@@ -945,13 +952,14 @@ TEST(lock_personality) { - - assert_se((unsigned long) safe_personality(current) == current); - -- /* Note, we also test that safe_personality() works correctly, by checkig whether errno is properly -+ /* Note, we also test that safe_personality() works correctly, by checking whether errno is properly - * set, in addition to the return value */ - errno = 0; -- assert_se(safe_personality(PER_LINUX | ADDR_NO_RANDOMIZE) == -EPERM); -+ assert_se(safe_personality(PER_LINUX | MMAP_PAGE_ZERO) == -EPERM); - assert_se(errno == EPERM); - -- assert_se(safe_personality(PER_LINUX | MMAP_PAGE_ZERO) == -EPERM); -+ if (!FLAGS_SET(current, ADDR_NO_RANDOMIZE)) -+ assert_se(safe_personality(PER_LINUX | ADDR_NO_RANDOMIZE) == -EPERM); - assert_se(safe_personality(PER_LINUX | ADDR_COMPAT_LAYOUT) == -EPERM); - assert_se(safe_personality(PER_LINUX | READ_IMPLIES_EXEC) == -EPERM); - assert_se(safe_personality(PER_LINUX_32BIT) == -EPERM); diff --git a/SOURCES/0255-fuzz-bcd-silence-warning-about-always-true-compariso.patch b/SOURCES/0255-fuzz-bcd-silence-warning-about-always-true-compariso.patch deleted file mode 100644 index 13aeca4..0000000 --- a/SOURCES/0255-fuzz-bcd-silence-warning-about-always-true-compariso.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e161d3a1297408415842731be73af765fbdc5c3b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 4 Jan 2022 09:31:25 +0100 -Subject: [PATCH] fuzz-bcd: silence warning about always-true comparison - -Occurs with gcc-11.2.1-7.fc35.x86_64. - -(cherry picked from commit 5377ad4ea44e771b5eb436d381ea9f3506488295) - -Related: #2087652 ---- - src/boot/efi/fuzz-bcd.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/boot/efi/fuzz-bcd.c b/src/boot/efi/fuzz-bcd.c -index e5ed6638a4..3df55a5c36 100644 ---- a/src/boot/efi/fuzz-bcd.c -+++ b/src/boot/efi/fuzz-bcd.c -@@ -21,6 +21,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - assert_se(p); - - char16_t *title = get_bcd_title(p, size); -- assert_se(!title || char16_strlen(title) >= 0); -+ if (title) -+ (void) char16_strlen(title); - return 0; - } diff --git a/SOURCES/0256-test-disable-test_ntp-on-RHEL.patch b/SOURCES/0256-test-disable-test_ntp-on-RHEL.patch deleted file mode 100644 index 1290369..0000000 --- a/SOURCES/0256-test-disable-test_ntp-on-RHEL.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 9c9187a252300f5f453d995ac50edf88c5e0c855 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 22 Jun 2022 15:29:02 +0200 -Subject: [PATCH] test: disable test_ntp on RHEL - -since we don't ship systemd-timesyncd. - -rhel-only - -Related: #2087652 ---- - test/units/testsuite-45.sh | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index 322d8086e7..75e07bc09a 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -258,7 +258,6 @@ EOF - - test_timezone - test_adjtime --test_ntp - - touch /testok - rm /failed diff --git a/SOURCES/0257-core-do-not-filter-out-systemd.unit-and-run-level-sp.patch b/SOURCES/0257-core-do-not-filter-out-systemd.unit-and-run-level-sp.patch deleted file mode 100644 index e5c6950..0000000 --- a/SOURCES/0257-core-do-not-filter-out-systemd.unit-and-run-level-sp.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b6d5a57b8181cc2565e2231fc9baf95fc9cc481e Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sat, 2 Jul 2022 04:18:41 +0900 -Subject: [PATCH] core: do not filter out systemd.unit= and run-level specifier - from kernel command line - -Fixes a bug introduced by 846f1da465beda990c1c01346311393f485df467. - -The commit 846f1da465beda990c1c01346311393f485df467 made systemd.unit= -filtered out from the command line. That causes debug-generator does not -work as expected on daemon-reexecute, and we cannot call `systemctl -daemon-reexecute` in our test suite running on nspawn. - -Fixes issue reported in https://github.com/systemd/systemd/pull/23851#issuecomment-1170992052. - -(cherry picked from commit bffde9b5869fffc09e7824d2ac0aeb82a31a134b) - -Related: #2087652 ---- - src/core/main.c | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/src/core/main.c b/src/core/main.c -index 667e972364..03efaa03be 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -1812,13 +1812,6 @@ static void filter_args( - continue; - } - -- if (startswith(src[i], -- in_initrd() ? "rd.systemd.unit=" : "systemd.unit=")) -- continue; -- -- if (runlevel_to_target(src[i])) -- continue; -- - /* Seems we have a good old option. Let's pass it over to the new instance. */ - dst[(*dst_index)++] = src[i]; - } diff --git a/SOURCES/0258-test-add-a-simple-test-for-daemon-reexec.patch b/SOURCES/0258-test-add-a-simple-test-for-daemon-reexec.patch deleted file mode 100644 index 2d3c08d..0000000 --- a/SOURCES/0258-test-add-a-simple-test-for-daemon-reexec.patch +++ /dev/null @@ -1,27 +0,0 @@ -From a1b8ff570b5ed95697f4748cfe3bbe154802c37e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sat, 2 Jul 2022 05:21:52 +0900 -Subject: [PATCH] test: add a simple test for daemon-reexec - -(cherry picked from commit d1b1bbfbfa1cb7d225250fc08089d1de17eaef7c) - -Related: #2087652 ---- - test/units/testsuite-03.sh | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/test/units/testsuite-03.sh b/test/units/testsuite-03.sh -index 070e978cda..7c5a3b8f19 100755 ---- a/test/units/testsuite-03.sh -+++ b/test/units/testsuite-03.sh -@@ -3,6 +3,10 @@ - set -eux - set -o pipefail - -+# Simple test for that daemon-reexec works in container. -+# See: https://github.com/systemd/systemd/pull/23883 -+systemctl daemon-reexec -+ - # Test merging of a --job-mode=ignore-dependencies job into a previously - # installed job. - diff --git a/SOURCES/0259-test-install-usr-libexec-vi-as-well.patch b/SOURCES/0259-test-install-usr-libexec-vi-as-well.patch deleted file mode 100644 index f9560a2..0000000 --- a/SOURCES/0259-test-install-usr-libexec-vi-as-well.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e6dfbe67f94d60b889f3031ebb644ed262d7fe35 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sat, 16 Apr 2022 14:43:17 +0200 -Subject: [PATCH] test: install /usr/libexec/vi as well - -since `/bin/vi` (at least on Fedora) is a shell wrapper which runs -either `/bin/vim` or `/usr/libexec/vi` based on availability. - -(cherry picked from commit 8afe2f53b25ca99bc5bd1ec0c5dff7e183712577) - -Related: #2087652 ---- - test/test-functions | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/test/test-functions b/test/test-functions -index 1306dcf260..9e171cba30 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -225,6 +225,7 @@ DEBUGTOOLS=( - stty - tty - vi -+ /usr/libexec/vi - ) - - is_built_with_asan() { diff --git a/SOURCES/0260-test-resize-the-terminal-automagically-with-INTERACT.patch b/SOURCES/0260-test-resize-the-terminal-automagically-with-INTERACT.patch deleted file mode 100644 index 72dbd31..0000000 --- a/SOURCES/0260-test-resize-the-terminal-automagically-with-INTERACT.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 70ff2f68c1cf9bdfe79ab4719ee0a051bbcb22eb Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Sun, 17 Apr 2022 19:49:17 +0200 -Subject: [PATCH] test: resize the terminal automagically with - INTERACTIVE_DEBUG=yes - -(cherry picked from commit 17082e8ac1b5335465876d100774893ba735fca4) - -Related: #2087652 ---- - test/test-functions | 12 +++++------- - 1 file changed, 5 insertions(+), 7 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 9e171cba30..42ad16050c 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1678,14 +1678,12 @@ install_debug_tools() { - local getty_override="${initdir:?}/etc/systemd/system/serial-getty@.service.d" - mkdir -p "$getty_override" - echo -e "[Service]\nEnvironment=TERM=linux" >"$getty_override/default-TERM.conf" -+ echo 'export TERM=linux' >>"$initdir/etc/profile" - -- cat >"$initdir/etc/motd" </dev/null; then -+ image_install resize -+ echo "resize" >>"$initdir/etc/profile" -+ fi - fi - } - diff --git a/SOURCES/0261-test-create-an-ASan-wrapper-for-getent-and-su.patch b/SOURCES/0261-test-create-an-ASan-wrapper-for-getent-and-su.patch deleted file mode 100644 index 12f3b92..0000000 --- a/SOURCES/0261-test-create-an-ASan-wrapper-for-getent-and-su.patch +++ /dev/null @@ -1,31 +0,0 @@ -From ab5ddf261e2a8c840c0224b5c8ef5932465e4eb8 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 7 Jul 2022 14:12:38 +0200 -Subject: [PATCH] test: create an ASan wrapper for `getent` and `su` - -since they "suffer" from the same issue as `login` and other binaries -that load PAM stuff - -(cherry picked from commit fdb70dd9222219307ca53662e789fc9304ca3616) - -Related: #2087652 ---- - test/test-functions | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index 42ad16050c..8523cf2d21 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -2410,9 +2410,9 @@ inst_binary() { - - # Same as above, but we need to wrap certain libraries unconditionally - # -- # login, useradd, userdel - dlopen()s (not only) systemd's PAM modules -+ # getent, login, su, useradd, userdel - dlopen()s (not only) systemd's PAM modules - # tar - called by machinectl in TEST-25 -- if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$bin" =~ /(login|tar|useradd|userdel)$ ]]; then -+ if get_bool "$IS_BUILT_WITH_ASAN" && [[ "$bin" =~ /(getent|login|su|tar|useradd|userdel)$ ]]; then - wrap_binary=1 - fi - diff --git a/SOURCES/0262-test-mark-partition-bootable.patch b/SOURCES/0262-test-mark-partition-bootable.patch deleted file mode 100644 index fd719a2..0000000 --- a/SOURCES/0262-test-mark-partition-bootable.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f039730a8e2d0a6c8ea7539ffb1a54c8951f3622 Mon Sep 17 00:00:00 2001 -From: Ludwig Nussel -Date: Mon, 27 Dec 2021 10:34:52 +0100 -Subject: [PATCH] test: mark partition bootable - -Make test suite partition bootable so nspawn can use the image directly. -Useful for local testing. - -https://systemd.io/DISCOVERABLE_PARTITIONS/ -(cherry picked from commit b13a8b5b377f60cacad98fa8a989e992e8724c0e) - -Related: #2087652 ---- - test/test-functions | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/test-functions b/test/test-functions -index 8523cf2d21..b596ce1382 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1219,7 +1219,7 @@ create_empty_image() { - LOOPDEV=$(losetup --show -P -f "$IMAGE_PUBLIC") - [ -b "$LOOPDEV" ] || return 1 - sfdisk "$LOOPDEV" < -Date: Thu, 7 Jul 2022 14:13:32 +0200 -Subject: [PATCH] test: bump the data partition size if we don't strip binaries - -so we can run TEST-24 under sanitizers as well. - -Also, when at it, use the 'named-fields' sfdisk format to make the code -a bit more descriptive without needing a manual. - -(cherry picked from commit 98b27937cb02dac98d8a9f0c48ba677b45df0831) - -Related: #2087652 ---- - test/test-functions | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -diff --git a/test/test-functions b/test/test-functions -index b596ce1382..b0f3b28def 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1194,33 +1194,38 @@ create_empty_image() { - exit 1 - fi - -- local size=500 -+ # Partition sizes are in MiBs -+ local root_size=500 -+ local data_size=50 - if ! get_bool "$NO_BUILD"; then - if meson configure "${BUILD_DIR:?}" | grep 'static-lib\|standalone-binaries' | awk '{ print $2 }' | grep -q 'true'; then -- size=$((size+=200)) -+ root_size=$((root_size+=200)) - fi - if meson configure "${BUILD_DIR:?}" | grep 'link-.*-shared' | awk '{ print $2 }' | grep -q 'false'; then -- size=$((size+=200)) -+ root_size=$((root_size+=200)) - fi - if get_bool "$IS_BUILT_WITH_COVERAGE"; then -- size=$((size+=250)) -+ root_size=$((root_size+=250)) - fi - fi - if ! get_bool "$STRIP_BINARIES"; then -- size=$((4 * size)) -+ root_size=$((4 * root_size)) -+ data_size=$((2 * data_size)) - fi - -- echo "Setting up ${IMAGE_PUBLIC:?} (${size} MB)" -+ echo "Setting up ${IMAGE_PUBLIC:?} (${root_size} MB)" - rm -f "${IMAGE_PRIVATE:?}" "$IMAGE_PUBLIC" - - # Create the blank file to use as a root filesystem -- truncate -s "${size}M" "$IMAGE_PUBLIC" -+ truncate -s "${root_size}M" "$IMAGE_PUBLIC" - - LOOPDEV=$(losetup --show -P -f "$IMAGE_PUBLIC") - [ -b "$LOOPDEV" ] || return 1 -+ # Create two partitions - a root one and a data one (utilized by some tests) - sfdisk "$LOOPDEV" < -Date: Thu, 7 Jul 2022 17:16:31 +0200 -Subject: [PATCH] test: use PBKDF2 with capped iterations instead of Argon2 - -to reduce the amount of resources the test needs (similarly to TEST-24 -where we do the same thing). - -(cherry picked from commit 8fec14a7d397f52b93024bf3417de8f77b0d85e6) - -Related: #2087652 ---- - test/units/testsuite-70.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/units/testsuite-70.sh b/test/units/testsuite-70.sh -index f395ef4e5e..09f78a0226 100755 ---- a/test/units/testsuite-70.sh -+++ b/test/units/testsuite-70.sh -@@ -9,7 +9,7 @@ export SYSTEMD_LOG_LEVEL=debug - img="/var/tmp/test.img" - dd if=/dev/zero of=$img bs=1024k count=20 status=none - echo -n passphrase >/tmp/passphrase --cryptsetup luksFormat -q --use-urandom $img /tmp/passphrase -+cryptsetup luksFormat -q --pbkdf pbkdf2 --pbkdf-force-iterations 1000 --use-urandom $img /tmp/passphrase - - # Enroll unlock with default PCR policy - env PASSWORD=passphrase systemd-cryptenroll --tpm2-device=auto $img diff --git a/SOURCES/0265-locale-drop-unnecessary-allocation.patch b/SOURCES/0265-locale-drop-unnecessary-allocation.patch deleted file mode 100644 index f123b35..0000000 --- a/SOURCES/0265-locale-drop-unnecessary-allocation.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b93eca3f277547c7e45c6840f2a582b20319a93a Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sat, 18 Jun 2022 11:06:46 +0900 -Subject: [PATCH] locale: drop unnecessary allocation - -Fixes a bug introduced by 3d36b5d7e7b191fca7c5c65dbab94d99cf5f0230. - -Fixes #23777. - -(cherry picked from commit e83cfbf97247e391e9fc19a7abb2712c77f3b4c0) - -Related: #2087652 ---- - src/locale/localed.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/src/locale/localed.c b/src/locale/localed.c -index 2c324efb14..791b5e60dd 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -152,10 +152,6 @@ static int property_get_locale( - if (r < 0) - return r; - -- l = new0(char*, _VARIABLE_LC_MAX+1); -- if (!l) -- return -ENOMEM; -- - r = locale_context_build_env(&c->locale_context, &l, NULL); - if (r < 0) - return r; diff --git a/SOURCES/0266-Revert-shared-install-create-relative-symlinks-for-e.patch b/SOURCES/0266-Revert-shared-install-create-relative-symlinks-for-e.patch deleted file mode 100644 index f8cf7cd..0000000 --- a/SOURCES/0266-Revert-shared-install-create-relative-symlinks-for-e.patch +++ /dev/null @@ -1,604 +0,0 @@ -From 7cff4a47721c2cc07648e7a84a6dee2c5e930412 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 12 Apr 2022 22:01:10 +0200 -Subject: [PATCH] Revert "shared/install: create relative symlinks for - enablement and aliasing" - -This reverts commit d6c9411072901556176ac130f2ce71a33107aa93. - -I still think this is something that needs to be done, but we're hitting some -unexplained failures, e.g. https://github.com/systemd/systemd/issues/22920. -So let's revert this for now, so -rc2 can be released, with a plan to return -to this after a release. - -Closes #22920. - -(cherry picked from commit 9aa3d6b41eadff6634bb3cf800064724171a7aad) - -Resolves: #2118668 ---- - src/shared/install.c | 14 ++-- - src/test/test-install-root.c | 65 ++++++++--------- - test/test-systemctl-enable.sh | 130 ++++++++++++++++++---------------- - 3 files changed, 103 insertions(+), 106 deletions(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index 96d64d32bb..eb5c3d5f91 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -1904,7 +1904,7 @@ static int install_info_symlink_alias( - if (!alias_path) - return -ENOMEM; - -- q = create_symlink(lp, info->name, alias_path, force, changes, n_changes); -+ q = create_symlink(lp, info->path, alias_path, force, changes, n_changes); - r = r < 0 ? r : q; - } - -@@ -1973,7 +1973,7 @@ static int install_info_symlink_wants( - } - - STRV_FOREACH(s, list) { -- _cleanup_free_ char *dst = NULL; -+ _cleanup_free_ char *path = NULL, *dst = NULL; - - q = install_name_printf(scope, info, *s, &dst); - if (q < 0) { -@@ -2003,15 +2003,11 @@ static int install_info_symlink_wants( - continue; - } - -- _cleanup_free_ char *path = strjoin(config_path, "/", dst, suffix, n); -+ path = strjoin(config_path, "/", dst, suffix, n); - if (!path) - return -ENOMEM; - -- _cleanup_free_ char *target = strjoin("../", info->name); -- if (!target) -- return -ENOMEM; -- -- q = create_symlink(lp, target, path, true, changes, n_changes); -+ q = create_symlink(lp, info->path, path, true, changes, n_changes); - if (r == 0) - r = q; - -@@ -2919,7 +2915,7 @@ int unit_file_set_default( - return r; - - new_path = strjoina(lp.persistent_config, "/" SPECIAL_DEFAULT_TARGET); -- return create_symlink(&lp, info->name, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); -+ return create_symlink(&lp, info->path, new_path, flags & UNIT_FILE_FORCE, changes, n_changes); - } - - int unit_file_get_default( -diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c -index a36536b85b..c2980ccbbd 100644 ---- a/src/test/test-install-root.c -+++ b/src/test/test-install-root.c -@@ -88,7 +88,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../a.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -128,7 +128,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("d.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../a.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -147,7 +147,7 @@ TEST(basic_mask_and_enable) { - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/a.service"); - assert_se(streq(changes[0].path, p)); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[1].source, "../a.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/a.service")); - assert_se(streq(changes[1].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; -@@ -186,7 +186,7 @@ TEST(basic_mask_and_enable) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("f.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../f.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/f.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/x.target.wants/f.service"); - assert_se(streq(changes[0].path, p)); - assert_se(changes[1].type_or_errno == UNIT_FILE_DESTINATION_NOT_PRESENT); -@@ -280,8 +280,7 @@ TEST(linked_units) { - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked.service"); - for (i = 0 ; i < n_changes; i++) { - assert_se(changes[i].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(STR_IN_SET(changes[i].source, -- "../linked.service", "/opt/linked.service")); -+ assert_se(streq(changes[i].source, "/opt/linked.service")); - - if (p && streq(changes[i].path, p)) - p = NULL; -@@ -323,8 +322,7 @@ TEST(linked_units) { - q = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/linked2.service"); - for (i = 0 ; i < n_changes; i++) { - assert_se(changes[i].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(STR_IN_SET(changes[i].source, -- "../linked2.service", "/opt/linked2.service")); -+ assert_se(streq(changes[i].source, "/opt/linked2.service")); - - if (p && streq(changes[i].path, p)) - p = NULL; -@@ -342,7 +340,7 @@ TEST(linked_units) { - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(startswith(changes[0].path, root)); - assert_se(endswith(changes[0].path, "linked3.service")); -- assert_se(streq(changes[0].source, "../linked3.service")); -+ assert_se(streq(changes[0].source, "/opt/linked3.service")); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - } -@@ -373,7 +371,7 @@ TEST(default) { - assert_se(unit_file_set_default(LOOKUP_SCOPE_SYSTEM, 0, root, "test-default.target", &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "test-default-real.target")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/test-default-real.target")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR "/" SPECIAL_DEFAULT_TARGET); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -403,7 +401,7 @@ TEST(add_dependency) { - assert_se(unit_file_add_dependency(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../real-add-dependency-test-service.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/real-add-dependency-test-service.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/real-add-dependency-test-target.target.wants/real-add-dependency-test-service.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -444,7 +442,7 @@ TEST(template_enable) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../template@.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@def.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -475,14 +473,13 @@ TEST(template_enable) { - - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../template@foo.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@foo.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); - changes = NULL; n_changes = 0; - -- assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0); -- assert_se(state == UNIT_FILE_INDIRECT); -+ assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@.service", &state) >= 0 && state == UNIT_FILE_INDIRECT); - assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED); - assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); - assert_se(unit_file_get_state(LOOKUP_SCOPE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED); -@@ -509,7 +506,7 @@ TEST(template_enable) { - - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("template-symlink@quux.service"), &changes, &n_changes) >= 0); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../template@quux.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/template@quux.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -555,7 +552,7 @@ TEST(indirect) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../indirectb.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/indirectb.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/indirectb.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -607,7 +604,7 @@ TEST(preset_and_list) { - assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../preset-yes.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/preset-yes.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/preset-yes.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -644,7 +641,7 @@ TEST(preset_and_list) { - for (i = 0; i < n_changes; i++) { - - if (changes[i].type_or_errno == UNIT_FILE_SYMLINK) { -- assert_se(streq(changes[i].source, "../preset-yes.service")); -+ assert_se(streq(changes[i].source, "/usr/lib/systemd/system/preset-yes.service")); - assert_se(streq(changes[i].path, p)); - } else - assert_se(changes[i].type_or_errno == UNIT_FILE_UNLINK); -@@ -760,7 +757,7 @@ TEST(preset_order) { - assert_se(unit_file_preset(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../prefix-1.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/prefix-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/prefix-1.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -869,8 +866,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-1.service")); -- assert_se(streq(changes[1].source, "../with-dropin-1.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-1.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-1.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-1.service"); -@@ -883,8 +880,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-2.service")); -- assert_se(streq(changes[1].source, "../with-dropin-2.service")); -+ assert_se(streq(changes[0].source, SYSTEM_CONFIG_UNIT_DIR"/with-dropin-2.service")); -+ assert_se(streq(changes[1].source, SYSTEM_CONFIG_UNIT_DIR"/with-dropin-2.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-2.service"); -@@ -897,8 +894,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-3.service")); -- assert_se(streq(changes[1].source, "../with-dropin-3.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-3.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-3.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-3.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-3.service"); -@@ -911,8 +908,8 @@ TEST(with_dropin) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-4a.service")); -- assert_se(streq(changes[1].source, "../with-dropin-4b.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-4a.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-4b.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-4a.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-4b.service"); -@@ -978,8 +975,8 @@ TEST(with_dropin_template) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-1@instance-1.service")); -- assert_se(streq(changes[1].source, "../with-dropin-1@instance-1.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-1@.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-1@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-1@instance-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-1@instance-1.service"); -@@ -991,8 +988,8 @@ TEST(with_dropin_template) { - assert_se(n_changes == 2); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); - assert_se(changes[1].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-2@instance-1.service")); -- assert_se(streq(changes[1].source, "../with-dropin-2@instance-1.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-2@.service")); -+ assert_se(streq(changes[1].source, "/usr/lib/systemd/system/with-dropin-2@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2@instance-1.service"); - assert_se(streq(changes[0].path, p)); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/graphical.target.wants/with-dropin-2@instance-1.service"); -@@ -1003,7 +1000,7 @@ TEST(with_dropin_template) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-2@instance-2.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-2@instance-2.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-2@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-2@instance-2.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -@@ -1012,7 +1009,7 @@ TEST(with_dropin_template) { - assert_se(unit_file_enable(LOOKUP_SCOPE_SYSTEM, 0, root, STRV_MAKE("with-dropin-3@.service"), &changes, &n_changes) == 1); - assert_se(n_changes == 1); - assert_se(changes[0].type_or_errno == UNIT_FILE_SYMLINK); -- assert_se(streq(changes[0].source, "../with-dropin-3@.service")); -+ assert_se(streq(changes[0].source, "/usr/lib/systemd/system/with-dropin-3@.service")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_DIR"/multi-user.target.wants/with-dropin-3@instance-2.service"); - assert_se(streq(changes[0].path, p)); - unit_file_changes_free(changes, n_changes); -diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh -index ac1bcc1cc7..0f9f220571 100644 ---- a/test/test-systemctl-enable.sh -+++ b/test/test-systemctl-enable.sh -@@ -90,27 +90,27 @@ EOF - ( ! "$systemctl" --root="$root" enable test1 ) - test -h "$root/etc/systemd/system/default.target.wants/test1.service" - test -h "$root/etc/systemd/system/special.target.requires/test1.service" --test -e "$root/etc/systemd/system/test1-goodalias.service" -+test ! -e "$root/etc/systemd/system/test1-goodalias.service" - test -h "$root/etc/systemd/system/test1-goodalias.service" --test ! -h "$root/etc/systemd/system/test1@badalias.service" --test ! -h "$root/etc/systemd/system/test1-badalias.target" --test ! -h "$root/etc/systemd/system/test1-badalias.socket" --test -e "$root/etc/systemd/system/test1-goodalias2.service" -+test ! -e "$root/etc/systemd/system/test1@badalias.service" -+test ! -e "$root/etc/systemd/system/test1-badalias.target" -+test ! -e "$root/etc/systemd/system/test1-badalias.socket" - test -h "$root/etc/systemd/system/test1-goodalias2.service" - - : '-------aliases in reeanble----------------------------------' - ( ! "$systemctl" --root="$root" reenable test1 ) --islink "$root/etc/systemd/system/default.target.wants/test1.service" "../test1.service" --islink "$root/etc/systemd/system/test1-goodalias.service" "test1.service" -+test -h "$root/etc/systemd/system/default.target.wants/test1.service" -+test ! -e "$root/etc/systemd/system/test1-goodalias.service" -+test -h "$root/etc/systemd/system/test1-goodalias.service" - --test ! -h "$root/etc/systemd/system/test1@badalias.service" --test ! -h "$root/etc/systemd/system/test1-badalias.target" --test ! -h "$root/etc/systemd/system/test1-badalias.socket" -+test ! -e "$root/etc/systemd/system/test1@badalias.service" -+test ! -e "$root/etc/systemd/system/test1-badalias.target" -+test ! -e "$root/etc/systemd/system/test1-badalias.socket" - - "$systemctl" --root="$root" disable test1 --test ! -h "$root/etc/systemd/system/default.target.wants/test1.service" --test ! -h "$root/etc/systemd/system/special.target.requires/test1.service" --test ! -h "$root/etc/systemd/system/test1-goodalias.service" -+test ! -e "$root/etc/systemd/system/default.target.wants/test1.service" -+test ! -e "$root/etc/systemd/system/special.target.requires/test1.service" -+test ! -e "$root/etc/systemd/system/test1-goodalias.service" - - : '-------aliases when link already exists---------------------' - cat >"$root/etc/systemd/system/test1a.service" <"$root/link3.suffix" <"$root/etc/systemd/system/templ1@.service" < -Date: Wed, 16 Feb 2022 14:53:34 +0100 -Subject: [PATCH] glyph-util: add new glyphs for up/down arrows - -(cherry picked from commit fc03e80c6b19521ecf4f3af06865b2054e685f9a) - -Related: #2118297 ---- - src/analyze/analyze-security.c | 2 +- - src/basic/chase-symlinks.c | 2 +- - src/basic/glyph-util.c | 10 ++++++++-- - src/basic/glyph-util.h | 5 ++++- - src/delta/delta.c | 20 ++++++++++---------- - src/partition/repart.c | 4 ++-- - src/portable/portable.c | 6 +++--- - src/portable/portablectl.c | 4 ++-- - src/shared/cgroup-show.c | 2 +- - src/shared/install.c | 2 +- - src/test/test-locale-util.c | 5 ++++- - 11 files changed, 37 insertions(+), 25 deletions(-) - -diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c -index e112922cbf..522d443f8a 100644 ---- a/src/analyze/analyze-security.c -+++ b/src/analyze/analyze-security.c -@@ -1902,7 +1902,7 @@ static int assess(const SecurityInfo *info, - name = info->id; - - printf("\n%s %sOverall exposure level for %s%s: %s%" PRIu64 ".%" PRIu64 " %s%s %s\n", -- special_glyph(SPECIAL_GLYPH_ARROW), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - ansi_highlight(), - name, - ansi_normal(), -diff --git a/src/basic/chase-symlinks.c b/src/basic/chase-symlinks.c -index 344e7e1bb7..61f8b3351b 100644 ---- a/src/basic/chase-symlinks.c -+++ b/src/basic/chase-symlinks.c -@@ -41,7 +41,7 @@ static int log_unsafe_transition(int a, int b, const char *path, unsigned flags) - - return log_warning_errno(SYNTHETIC_ERRNO(ENOLINK), - "Detected unsafe path transition %s (owned by %s) %s %s (owned by %s) during canonicalization of %s.", -- strna(n1), strna(user_a), special_glyph(SPECIAL_GLYPH_ARROW), strna(n2), strna(user_b), path); -+ strna(n1), strna(user_a), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), strna(n2), strna(user_b), path); - } - - static int log_autofs_mount_point(int fd, const char *path, unsigned flags) { -diff --git a/src/basic/glyph-util.c b/src/basic/glyph-util.c -index 8810738fc3..4583b7412c 100644 ---- a/src/basic/glyph-util.c -+++ b/src/basic/glyph-util.c -@@ -39,6 +39,7 @@ const char *special_glyph(SpecialGlyph code) { - [SPECIAL_GLYPH_TREE_BRANCH] = "|-", - [SPECIAL_GLYPH_TREE_RIGHT] = "`-", - [SPECIAL_GLYPH_TREE_SPACE] = " ", -+ [SPECIAL_GLYPH_TREE_TOP] = ",-", - [SPECIAL_GLYPH_TRIANGULAR_BULLET] = ">", - [SPECIAL_GLYPH_BLACK_CIRCLE] = "*", - [SPECIAL_GLYPH_WHITE_CIRCLE] = "*", -@@ -51,7 +52,9 @@ const char *special_glyph(SpecialGlyph code) { - [SPECIAL_GLYPH_LIGHT_SHADE] = "-", - [SPECIAL_GLYPH_DARK_SHADE] = "X", - [SPECIAL_GLYPH_SIGMA] = "S", -- [SPECIAL_GLYPH_ARROW] = "->", -+ [SPECIAL_GLYPH_ARROW_RIGHT] = "->", -+ [SPECIAL_GLYPH_ARROW_UP] = "^", -+ [SPECIAL_GLYPH_ARROW_DOWN] = "v", - [SPECIAL_GLYPH_ELLIPSIS] = "...", - [SPECIAL_GLYPH_EXTERNAL_LINK] = "[LNK]", - [SPECIAL_GLYPH_ECSTATIC_SMILEY] = ":-]", -@@ -75,6 +78,7 @@ const char *special_glyph(SpecialGlyph code) { - [SPECIAL_GLYPH_TREE_BRANCH] = "\342\224\234\342\224\200", /* ├─ */ - [SPECIAL_GLYPH_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */ - [SPECIAL_GLYPH_TREE_SPACE] = " ", /* */ -+ [SPECIAL_GLYPH_TREE_TOP] = "\u250C\342\224\200", /* ┌─ */ - - /* Single glyphs in both cases */ - [SPECIAL_GLYPH_TRIANGULAR_BULLET] = "\342\200\243", /* ‣ */ -@@ -89,9 +93,11 @@ const char *special_glyph(SpecialGlyph code) { - [SPECIAL_GLYPH_LIGHT_SHADE] = "\342\226\221", /* ░ */ - [SPECIAL_GLYPH_DARK_SHADE] = "\342\226\223", /* ▒ */ - [SPECIAL_GLYPH_SIGMA] = "\316\243", /* Σ */ -+ [SPECIAL_GLYPH_ARROW_UP] = "\u2191", /* ↑ (actually called: UPWARDS ARROW) */ -+ [SPECIAL_GLYPH_ARROW_DOWN] = "\u2193", /* ↓ (actually called: DOWNWARDS ARROW) */ - - /* Single glyph in Unicode, two in ASCII */ -- [SPECIAL_GLYPH_ARROW] = "\342\206\222", /* → (actually called: RIGHTWARDS ARROW) */ -+ [SPECIAL_GLYPH_ARROW_RIGHT] = "\342\206\222", /* → (actually called: RIGHTWARDS ARROW) */ - - /* Single glyph in Unicode, three in ASCII */ - [SPECIAL_GLYPH_ELLIPSIS] = "\342\200\246", /* … (actually called: HORIZONTAL ELLIPSIS) */ -diff --git a/src/basic/glyph-util.h b/src/basic/glyph-util.h -index ddee210041..7e0a73842a 100644 ---- a/src/basic/glyph-util.h -+++ b/src/basic/glyph-util.h -@@ -11,6 +11,7 @@ typedef enum SpecialGlyph { - SPECIAL_GLYPH_TREE_BRANCH, - SPECIAL_GLYPH_TREE_RIGHT, - SPECIAL_GLYPH_TREE_SPACE, -+ SPECIAL_GLYPH_TREE_TOP, - SPECIAL_GLYPH_TRIANGULAR_BULLET, - SPECIAL_GLYPH_BLACK_CIRCLE, - SPECIAL_GLYPH_WHITE_CIRCLE, -@@ -20,7 +21,9 @@ typedef enum SpecialGlyph { - SPECIAL_GLYPH_MU, - SPECIAL_GLYPH_CHECK_MARK, - SPECIAL_GLYPH_CROSS_MARK, -- SPECIAL_GLYPH_ARROW, -+ SPECIAL_GLYPH_ARROW_RIGHT, -+ SPECIAL_GLYPH_ARROW_UP, -+ SPECIAL_GLYPH_ARROW_DOWN, - SPECIAL_GLYPH_ELLIPSIS, - SPECIAL_GLYPH_LIGHT_SHADE, - SPECIAL_GLYPH_DARK_SHADE, -diff --git a/src/delta/delta.c b/src/delta/delta.c -index eafe1c05c4..aa5a546bce 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -91,7 +91,7 @@ static int notify_override_masked(const char *top, const char *bottom) { - - printf("%s%s%s %s %s %s\n", - ansi_highlight_red(), "[MASKED]", ansi_normal(), -- top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); -+ top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); - return 1; - } - -@@ -101,7 +101,7 @@ static int notify_override_equivalent(const char *top, const char *bottom) { - - printf("%s%s%s %s %s %s\n", - ansi_highlight_green(), "[EQUIVALENT]", ansi_normal(), -- top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); -+ top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); - return 1; - } - -@@ -111,7 +111,7 @@ static int notify_override_redirected(const char *top, const char *bottom) { - - printf("%s%s%s %s %s %s\n", - ansi_highlight(), "[REDIRECTED]", ansi_normal(), -- top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); -+ top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); - return 1; - } - -@@ -121,7 +121,7 @@ static int notify_override_overridden(const char *top, const char *bottom) { - - printf("%s%s%s %s %s %s\n", - ansi_highlight(), "[OVERRIDDEN]", ansi_normal(), -- top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); -+ top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); - return 1; - } - -@@ -131,7 +131,7 @@ static int notify_override_extended(const char *top, const char *bottom) { - - printf("%s%s%s %s %s %s\n", - ansi_highlight(), "[EXTENDED]", ansi_normal(), -- top, special_glyph(SPECIAL_GLYPH_ARROW), bottom); -+ top, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), bottom); - return 1; - } - -@@ -235,7 +235,7 @@ static int enumerate_dir_d( - return -ENOMEM; - d = p + strlen(toppath) + 1; - -- log_debug("Adding at top: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW), p); -+ log_debug("Adding at top: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - k = ordered_hashmap_put(top, d, p); - if (k >= 0) { - p = strdup(p); -@@ -247,7 +247,7 @@ static int enumerate_dir_d( - return k; - } - -- log_debug("Adding at bottom: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW), p); -+ log_debug("Adding at bottom: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - free(ordered_hashmap_remove(bottom, d)); - k = ordered_hashmap_put(bottom, d, p); - if (k < 0) { -@@ -271,7 +271,7 @@ static int enumerate_dir_d( - return -ENOMEM; - - log_debug("Adding to drops: %s %s %s %s %s", -- unit, special_glyph(SPECIAL_GLYPH_ARROW), basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); -+ unit, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - k = ordered_hashmap_put(h, basename(p), p); - if (k < 0) { - free(p); -@@ -347,7 +347,7 @@ static int enumerate_dir( - if (!p) - return -ENOMEM; - -- log_debug("Adding at top: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); -+ log_debug("Adding at top: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - r = ordered_hashmap_put(top, basename(p), p); - if (r >= 0) { - p = strdup(p); -@@ -356,7 +356,7 @@ static int enumerate_dir( - } else if (r != -EEXIST) - return r; - -- log_debug("Adding at bottom: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW), p); -+ log_debug("Adding at bottom: %s %s %s", basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - free(ordered_hashmap_remove(bottom, basename(p))); - r = ordered_hashmap_put(bottom, basename(p), p); - if (r < 0) -diff --git a/src/partition/repart.c b/src/partition/repart.c -index 67e379be55..9f95713130 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -1968,9 +1968,9 @@ static int format_size_change(uint64_t from, uint64_t to, char **ret) { - if (from == to || to == UINT64_MAX) - t = strdup(FORMAT_BYTES(from)); - else -- t = strjoin(FORMAT_BYTES(from), " ", special_glyph(SPECIAL_GLYPH_ARROW), " ", FORMAT_BYTES(to)); -+ t = strjoin(FORMAT_BYTES(from), " ", special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), " ", FORMAT_BYTES(to)); - } else if (to != UINT64_MAX) -- t = strjoin(special_glyph(SPECIAL_GLYPH_ARROW), " ", FORMAT_BYTES(to)); -+ t = strjoin(special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), " ", FORMAT_BYTES(to)); - else { - *ret = NULL; - return 0; -diff --git a/src/portable/portable.c b/src/portable/portable.c -index 4c75dc0e0c..c1e253061f 100644 ---- a/src/portable/portable.c -+++ b/src/portable/portable.c -@@ -1011,14 +1011,14 @@ static int install_profile_dropin( - - r = copy_file_atomic(from, dropin, 0644, 0, 0, COPY_REFLINK); - if (r < 0) -- return log_debug_errno(r, "Failed to copy %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW), dropin); -+ return log_debug_errno(r, "Failed to copy %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dropin); - - (void) portable_changes_add(changes, n_changes, PORTABLE_COPY, dropin, from); - - } else { - - if (symlink(from, dropin) < 0) -- return log_debug_errno(errno, "Failed to link %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW), dropin); -+ return log_debug_errno(errno, "Failed to link %s %s %s: %m", from, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dropin); - - (void) portable_changes_add(changes, n_changes, PORTABLE_SYMLINK, dropin, from); - } -@@ -1188,7 +1188,7 @@ static int install_image_symlink( - (void) mkdir_parents(sl, 0755); - - if (symlink(image_path, sl) < 0) -- return log_debug_errno(errno, "Failed to link %s %s %s: %m", image_path, special_glyph(SPECIAL_GLYPH_ARROW), sl); -+ return log_debug_errno(errno, "Failed to link %s %s %s: %m", image_path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), sl); - - (void) portable_changes_add(changes, n_changes, PORTABLE_SYMLINK, sl, image_path); - return 0; -diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c -index f4c57e14ae..585568acc1 100644 ---- a/src/portable/portablectl.c -+++ b/src/portable/portablectl.c -@@ -433,12 +433,12 @@ static int print_changes(sd_bus_message *m) { - break; - - if (streq(type, "symlink")) -- log_info("Created symlink %s %s %s.", path, special_glyph(SPECIAL_GLYPH_ARROW), source); -+ log_info("Created symlink %s %s %s.", path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), source); - else if (streq(type, "copy")) { - if (isempty(source)) - log_info("Copied %s.", path); - else -- log_info("Copied %s %s %s.", source, special_glyph(SPECIAL_GLYPH_ARROW), path); -+ log_info("Copied %s %s %s.", source, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), path); - } else if (streq(type, "unlink")) - log_info("Removed %s.", path); - else if (streq(type, "write")) -diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c -index 48dd4d8001..f18420c1b6 100644 ---- a/src/shared/cgroup-show.c -+++ b/src/shared/cgroup-show.c -@@ -228,7 +228,7 @@ static int show_cgroup_name( - printf("%s%s%s %s%s%s: %s\n", - prefix, - glyph == SPECIAL_GLYPH_TREE_BRANCH ? special_glyph(SPECIAL_GLYPH_TREE_VERTICAL) : " ", -- special_glyph(SPECIAL_GLYPH_ARROW), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - ansi_blue(), x, ansi_normal(), - y); - } -diff --git a/src/shared/install.c b/src/shared/install.c -index eb5c3d5f91..4c7d0d6cad 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -335,7 +335,7 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang - if (!quiet) - log_info("Created symlink %s %s %s.", - changes[i].path, -- special_glyph(SPECIAL_GLYPH_ARROW), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - changes[i].source); - break; - case UNIT_FILE_UNLINK: -diff --git a/src/test/test-locale-util.c b/src/test/test-locale-util.c -index 3243e3c567..6ec3f7f00b 100644 ---- a/src/test/test-locale-util.c -+++ b/src/test/test-locale-util.c -@@ -91,13 +91,16 @@ TEST(dump_special_glyphs) { - dump_glyph(SPECIAL_GLYPH_TREE_BRANCH); - dump_glyph(SPECIAL_GLYPH_TREE_RIGHT); - dump_glyph(SPECIAL_GLYPH_TREE_SPACE); -+ dump_glyph(SPECIAL_GLYPH_TREE_TOP); - dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET); - dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE); - dump_glyph(SPECIAL_GLYPH_WHITE_CIRCLE); - dump_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN); - dump_glyph(SPECIAL_GLYPH_CIRCLE_ARROW); - dump_glyph(SPECIAL_GLYPH_BULLET); -- dump_glyph(SPECIAL_GLYPH_ARROW); -+ dump_glyph(SPECIAL_GLYPH_ARROW_RIGHT); -+ dump_glyph(SPECIAL_GLYPH_ARROW_UP); -+ dump_glyph(SPECIAL_GLYPH_ARROW_DOWN); - dump_glyph(SPECIAL_GLYPH_ELLIPSIS); - dump_glyph(SPECIAL_GLYPH_MU); - dump_glyph(SPECIAL_GLYPH_CHECK_MARK); diff --git a/SOURCES/0268-tree-wide-allow-ASCII-fallback-for-in-logs.patch b/SOURCES/0268-tree-wide-allow-ASCII-fallback-for-in-logs.patch deleted file mode 100644 index 51a9383..0000000 --- a/SOURCES/0268-tree-wide-allow-ASCII-fallback-for-in-logs.patch +++ /dev/null @@ -1,677 +0,0 @@ -From 73cbf82d726a7b50c9b7dec9a0a0c285b0de9993 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Fri, 24 Jun 2022 09:13:42 +0200 -Subject: [PATCH] =?UTF-8?q?tree-wide:=20allow=20ASCII=20fallback=20for=20?= - =?UTF-8?q?=E2=86=92=20in=20logs?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -(cherry picked from commit e2341b6bc325932b3f9f10874956952cbdbd6361) - -Resolves: #2118297 ---- - src/basic/unit-file.c | 13 +++++----- - src/core/dbus-service.c | 3 ++- - src/core/manager-serialize.c | 6 +++-- - src/core/namespace.c | 7 +++-- - src/core/socket.c | 3 ++- - src/home/homed-home.c | 4 ++- - src/home/homed-manager.c | 7 +++-- - src/home/homework-luks.c | 6 ++++- - src/home/homework-mount.c | 4 ++- - src/libsystemd/sd-bus/sd-bus.c | 4 ++- - src/network/networkd-link.c | 15 +++++++---- - src/partition/repart.c | 7 ++--- - src/resolve/resolved-dns-query.c | 11 ++++++-- - src/resolve/resolved-dns-transaction.c | 14 +++++----- - src/run-generator/run-generator.c | 4 ++- - src/shared/devnode-acl.c | 5 ++-- - src/shared/dns-domain.c | 8 +++--- - src/shared/install.c | 3 ++- - src/shared/mount-util.c | 5 ++-- - src/shared/varlink.c | 4 ++- - src/udev/udev-builtin-net_id.c | 36 +++++++++++++++----------- - 21 files changed, 110 insertions(+), 59 deletions(-) - -diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c -index 83c29bb25f..2f5ec5b702 100644 ---- a/src/basic/unit-file.c -+++ b/src/basic/unit-file.c -@@ -348,13 +348,13 @@ int unit_file_resolve_symlink( - if (r < 0) - return r; - if (is_path(tail)) -- log_warning("Suspicious symlink %s/%s→%s, treating as alias.", -- dir, filename, simplified); -+ log_warning("Suspicious symlink %s/%s %s %s, treating as alias.", -+ dir, filename, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), simplified); - - dst = resolve_destination_target ? TAKE_PTR(simplified) : TAKE_PTR(target_name); - - } else { -- log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified); -+ log_debug("Linked unit file: %s/%s %s %s", dir, filename, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), simplified); - - if (resolve_destination_target) - dst = TAKE_PTR(simplified); -@@ -569,8 +569,8 @@ int unit_file_build_name_map( - - r = hashmap_ensure_put(&ids, &string_hash_ops_free_free, key, dst); - if (r < 0) -- return log_warning_errno(r, "Failed to add entry to hashmap (%s→%s): %m", -- de->d_name, dst); -+ return log_warning_errno(r, "Failed to add entry to hashmap (%s%s%s): %m", -+ de->d_name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dst); - key = dst = NULL; - } - } -@@ -612,7 +612,8 @@ int unit_file_build_name_map( - - r = string_strv_hashmap_put(&names, dst, src); - if (r < 0) -- return log_warning_errno(r, "Failed to add entry to hashmap (%s→%s): %m", dst, src); -+ return log_warning_errno(r, "Failed to add entry to hashmap (%s%s%s): %m", -+ dst, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), src); - } - - if (cache_timestamp_hash) -diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c -index e90fe4f596..3f7c161b0e 100644 ---- a/src/core/dbus-service.c -+++ b/src/core/dbus-service.c -@@ -493,7 +493,8 @@ static int bus_service_set_transient_property( - return log_oom(); - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) -- log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z); -+ log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s %s %s; please update client accordingly.", -+ n, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), z); - - free_and_replace(n, z); - } -diff --git a/src/core/manager-serialize.c b/src/core/manager-serialize.c -index 60a35f48f3..007af3ee1f 100644 ---- a/src/core/manager-serialize.c -+++ b/src/core/manager-serialize.c -@@ -307,9 +307,11 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { - - r = fd_get_path(fd, &fn); - if (r < 0) -- log_debug_errno(r, "Received serialized fd %i → %m", fd); -+ log_debug_errno(r, "Received serialized fd %i %s %m", -+ fd, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT)); - else -- log_debug("Received serialized fd %i → %s", fd, strna(fn)); -+ log_debug("Received serialized fd %i %s %s", -+ fd, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), strna(fn)); - } - } - } -diff --git a/src/core/namespace.c b/src/core/namespace.c -index 4bd63f6227..3bf6524935 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -17,6 +17,7 @@ - #include "extension-release.h" - #include "fd-util.h" - #include "format-util.h" -+#include "glyph-util.h" - #include "label.h" - #include "list.h" - #include "loop-util.h" -@@ -1210,7 +1211,8 @@ static int follow_symlink( - "Symlink loop on '%s'.", - mount_entry_path(m)); - -- log_debug("Followed mount entry path symlink %s → %s.", mount_entry_path(m), target); -+ log_debug("Followed mount entry path symlink %s %s %s.", -+ mount_entry_path(m), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), target); - - mount_entry_consume_prefix(m, TAKE_PTR(target)); - -@@ -1308,7 +1310,8 @@ static int apply_one_mount( - if (r < 0) - return log_debug_errno(r, "Failed to follow symlinks on %s: %m", mount_entry_source(m)); - -- log_debug("Followed source symlinks %s → %s.", mount_entry_source(m), chased); -+ log_debug("Followed source symlinks %s %s %s.", -+ mount_entry_source(m), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), chased); - - free_and_replace(m->source_malloc, chased); - -diff --git a/src/core/socket.c b/src/core/socket.c -index 8da9f14db6..cdb1e75e7a 100644 ---- a/src/core/socket.c -+++ b/src/core/socket.c -@@ -1291,7 +1291,8 @@ static int socket_symlink(Socket *s) { - } - - if (r < 0) -- log_unit_warning_errno(UNIT(s), r, "Failed to create symlink %s → %s, ignoring: %m", p, *i); -+ log_unit_warning_errno(UNIT(s), r, "Failed to create symlink %s %s %s, ignoring: %m", -+ p, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), *i); - } - - return 0; -diff --git a/src/home/homed-home.c b/src/home/homed-home.c -index 1340cf30d3..c78918ab1a 100644 ---- a/src/home/homed-home.c -+++ b/src/home/homed-home.c -@@ -19,6 +19,7 @@ - #include "fileio.h" - #include "filesystems.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "home-util.h" - #include "homed-home-bus.h" - #include "homed-home.h" -@@ -479,8 +480,9 @@ static void home_set_state(Home *h, HomeState state) { - new_state = home_get_state(h); /* Query the new state, since the 'state' variable might be set to -1, - * in which case we synthesize an high-level state on demand */ - -- log_info("%s: changing state %s → %s", h->user_name, -+ log_info("%s: changing state %s %s %s", h->user_name, - home_state_to_string(old_state), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - home_state_to_string(new_state)); - - home_update_pin_fd(h, new_state); -diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c -index f04b87e366..f70c9f95e4 100644 ---- a/src/home/homed-manager.c -+++ b/src/home/homed-manager.c -@@ -23,6 +23,7 @@ - #include "fileio.h" - #include "format-util.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "gpt.h" - #include "home-util.h" - #include "homed-conf.h" -@@ -1939,8 +1940,10 @@ static int manager_rebalance_calculate(Manager *m) { - (m->rebalance_state == REBALANCE_GROWING && h->rebalance_goal < h->rebalance_size)) - h->rebalance_pending = false; - else { -- log_debug("Rebalancing home directory '%s' %s → %s.", h->user_name, -- FORMAT_BYTES(h->rebalance_size), FORMAT_BYTES(h->rebalance_goal)); -+ log_debug("Rebalancing home directory '%s' %s %s %s.", h->user_name, -+ FORMAT_BYTES(h->rebalance_size), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), -+ FORMAT_BYTES(h->rebalance_goal)); - h->rebalance_pending = true; - } - -diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c -index f8f4afb253..f5653b4e14 100644 ---- a/src/home/homework-luks.c -+++ b/src/home/homework-luks.c -@@ -28,6 +28,7 @@ - #include "filesystems.h" - #include "fs-util.h" - #include "fsck-util.h" -+#include "glyph-util.h" - #include "home-util.h" - #include "homework-luks.h" - #include "homework-mount.h" -@@ -3312,12 +3313,15 @@ int home_resize_luks( - if (resize_type == CAN_RESIZE_OFFLINE && FLAGS_SET(flags, HOME_SETUP_ALREADY_ACTIVATED)) - return log_error_errno(SYNTHETIC_ERRNO(ETXTBSY), "File systems of this type can only be resized offline, but is currently online."); - -- log_info("Ready to resize image size %s → %s, partition size %s → %s, file system size %s → %s.", -+ log_info("Ready to resize image size %s %s %s, partition size %s %s %s, file system size %s %s %s.", - FORMAT_BYTES(old_image_size), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - FORMAT_BYTES(new_image_size), - FORMAT_BYTES(setup->partition_size), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - FORMAT_BYTES(new_partition_size), - FORMAT_BYTES(old_fs_size), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - FORMAT_BYTES(new_fs_size)); - - r = prepare_resize_partition( -diff --git a/src/home/homework-mount.c b/src/home/homework-mount.c -index 0b028dad37..6dc665e323 100644 ---- a/src/home/homework-mount.c -+++ b/src/home/homework-mount.c -@@ -7,6 +7,7 @@ - #include "alloc-util.h" - #include "fd-util.h" - #include "format-util.h" -+#include "glyph-util.h" - #include "home-util.h" - #include "homework-mount.h" - #include "homework.h" -@@ -283,7 +284,8 @@ int home_shift_uid(int dir_fd, const char *target, uid_t stored_uid, uid_t expos - if (r < 0) - return log_error_errno(errno, "Failed to apply UID/GID map: %m"); - -- log_debug("Applied uidmap mount to %s. Mapping is " UID_FMT " → " UID_FMT ".", strna(target), stored_uid, exposed_uid); -+ log_debug("Applied uidmap mount to %s. Mapping is " UID_FMT " %s " UID_FMT ".", -+ strna(target), stored_uid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), exposed_uid); - - if (ret_mount_fd) - *ret_mount_fd = TAKE_FD(mount_fd); -diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c -index 9e1d29cc1d..d117199cf9 100644 ---- a/src/libsystemd/sd-bus/sd-bus.c -+++ b/src/libsystemd/sd-bus/sd-bus.c -@@ -30,6 +30,7 @@ - #include "def.h" - #include "errno-util.h" - #include "fd-util.h" -+#include "glyph-util.h" - #include "hexdecoct.h" - #include "hostname-util.h" - #include "io-util.h" -@@ -521,7 +522,8 @@ void bus_set_state(sd_bus *bus, enum bus_state state) { - if (state == bus->state) - return; - -- log_debug("Bus %s: changing state %s → %s", strna(bus->description), table[bus->state], table[state]); -+ log_debug("Bus %s: changing state %s %s %s", strna(bus->description), -+ table[bus->state], special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), table[state]); - bus->state = state; - } - -diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c -index f409d1f33a..15c188cb6d 100644 ---- a/src/network/networkd-link.c -+++ b/src/network/networkd-link.c -@@ -26,6 +26,7 @@ - #include "fileio.h" - #include "format-util.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "ipvlan.h" - #include "missing_network.h" - #include "netlink-util.h" -@@ -2122,7 +2123,8 @@ static int link_update_master(Link *link, sd_netlink_message *message) { - else if (master_ifindex == 0) - log_link_debug(link, "Leaved from master interface: %i", link->master_ifindex); - else -- log_link_debug(link, "Master interface is changed: %i → %i", link->master_ifindex, master_ifindex); -+ log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex, -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex); - - link_drop_from_master(link); - -@@ -2158,8 +2160,10 @@ static int link_update_hardware_address(Link *link, sd_netlink_message *message) - if (link->hw_addr.length == 0) - log_link_debug(link, "Saved hardware address: %s", HW_ADDR_TO_STR(&addr)); - else { -- log_link_debug(link, "Hardware address is changed: %s → %s", -- HW_ADDR_TO_STR(&link->hw_addr), HW_ADDR_TO_STR(&addr)); -+ log_link_debug(link, "Hardware address is changed: %s %s %s", -+ HW_ADDR_TO_STR(&link->hw_addr), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), -+ HW_ADDR_TO_STR(&addr)); - - if (hashmap_get(link->manager->links_by_hw_addr, &link->hw_addr) == link) - hashmap_remove(link->manager->links_by_hw_addr, &link->hw_addr); -@@ -2256,8 +2260,9 @@ static int link_update_mtu(Link *link, sd_netlink_message *message) { - return 0; - - if (link->mtu != 0) -- log_link_debug(link, "MTU is changed: %"PRIu32" → %"PRIu32" (min: %"PRIu32", max: %"PRIu32")", -- link->mtu, mtu, link->min_mtu, link->max_mtu); -+ log_link_debug(link, "MTU is changed: %"PRIu32" %s %"PRIu32" (min: %"PRIu32", max: %"PRIu32")", -+ link->mtu, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), mtu, -+ link->min_mtu, link->max_mtu); - - link->mtu = mtu; - -diff --git a/src/partition/repart.c b/src/partition/repart.c -index 9f95713130..d41411caeb 100644 ---- a/src/partition/repart.c -+++ b/src/partition/repart.c -@@ -1096,7 +1096,8 @@ static int config_parse_size4096( - *sz = parsed; - - if (*sz != parsed) -- log_syntax(unit, LOG_NOTICE, filename, line, r, "Rounded %s= size %" PRIu64 " → %" PRIu64 ", a multiple of 4096.", lvalue, parsed, *sz); -+ log_syntax(unit, LOG_NOTICE, filename, line, r, "Rounded %s= size %" PRIu64 " %s %" PRIu64 ", a multiple of 4096.", -+ lvalue, parsed, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), *sz); - - return 0; - } -@@ -4295,8 +4296,8 @@ static int parse_argv(int argc, char *argv[]) { - return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Specified image size too large, refusing."); - - if (rounded != parsed) -- log_warning("Specified size is not a multiple of 4096, rounding up automatically. (%" PRIu64 " → %" PRIu64 ")", -- parsed, rounded); -+ log_warning("Specified size is not a multiple of 4096, rounding up automatically. (%" PRIu64 " %s %" PRIu64 ")", -+ parsed, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), rounded); - - arg_size = rounded; - arg_size_auto = false; -diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c -index 3b5e456db2..ddb66c4659 100644 ---- a/src/resolve/resolved-dns-query.c -+++ b/src/resolve/resolved-dns-query.c -@@ -3,6 +3,7 @@ - #include "alloc-util.h" - #include "dns-domain.h" - #include "dns-type.h" -+#include "glyph-util.h" - #include "hostname-util.h" - #include "local-addresses.h" - #include "resolved-dns-query.h" -@@ -1016,7 +1017,10 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname) - if (r < 0) - return r; - if (r > 0) -- log_debug("Following CNAME/DNAME %s → %s.", dns_question_first_name(q->question_idna), dns_question_first_name(nq_idna)); -+ log_debug("Following CNAME/DNAME %s %s %s.", -+ dns_question_first_name(q->question_idna), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), -+ dns_question_first_name(nq_idna)); - - k = dns_question_is_equal(q->question_idna, q->question_utf8); - if (k < 0) -@@ -1030,7 +1034,10 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname) - if (k < 0) - return k; - if (k > 0) -- log_debug("Following UTF8 CNAME/DNAME %s → %s.", dns_question_first_name(q->question_utf8), dns_question_first_name(nq_utf8)); -+ log_debug("Following UTF8 CNAME/DNAME %s %s %s.", -+ dns_question_first_name(q->question_utf8), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), -+ dns_question_first_name(nq_utf8)); - } - - if (r == 0 && k == 0) /* No actual cname happened? */ -diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c -index 0cf9912712..1ae8103a14 100644 ---- a/src/resolve/resolved-dns-transaction.c -+++ b/src/resolve/resolved-dns-transaction.c -@@ -8,6 +8,7 @@ - #include "errno-list.h" - #include "errno-util.h" - #include "fd-util.h" -+#include "glyph-util.h" - #include "random-util.h" - #include "resolved-dns-cache.h" - #include "resolved-dns-transaction.h" -@@ -2591,21 +2592,22 @@ int dns_transaction_request_dnssec_keys(DnsTransaction *t) { - r = dns_name_parent(&name); - if (r > 0) { - type = DNS_TYPE_SOA; -- log_debug("Requesting parent SOA (→ %s) to validate transaction %" PRIu16 " (%s, unsigned empty DS response).", -- name, t->id, dns_resource_key_name(dns_transaction_key(t))); -+ log_debug("Requesting parent SOA (%s %s) to validate transaction %" PRIu16 " (%s, unsigned empty DS response).", -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id, -+ dns_resource_key_name(dns_transaction_key(t))); - } else - name = NULL; - - } else if (IN_SET(dns_transaction_key(t)->type, DNS_TYPE_SOA, DNS_TYPE_NS)) { - - type = DNS_TYPE_DS; -- log_debug("Requesting DS (→ %s) to validate transaction %" PRIu16 " (%s, unsigned empty SOA/NS response).", -- name, t->id, name); -+ log_debug("Requesting DS (%s %s) to validate transaction %" PRIu16 " (%s, unsigned empty SOA/NS response).", -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id, name); - - } else { - type = DNS_TYPE_SOA; -- log_debug("Requesting SOA (→ %s) to validate transaction %" PRIu16 " (%s, unsigned empty non-SOA/NS/DS response).", -- name, t->id, name); -+ log_debug("Requesting SOA (%s %s) to validate transaction %" PRIu16 " (%s, unsigned empty non-SOA/NS/DS response).", -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id, name); - } - - if (name) { -diff --git a/src/run-generator/run-generator.c b/src/run-generator/run-generator.c -index fb62209704..e3fb7f24fe 100644 ---- a/src/run-generator/run-generator.c -+++ b/src/run-generator/run-generator.c -@@ -7,6 +7,7 @@ - #include "fd-util.h" - #include "fileio.h" - #include "generator.h" -+#include "glyph-util.h" - #include "mkdir.h" - #include "proc-cmdline.h" - #include "special.h" -@@ -116,7 +117,8 @@ static int generate(void) { - /* And now redirect default.target to our new target */ - p = strjoina(arg_dest, "/" SPECIAL_DEFAULT_TARGET); - if (symlink("kernel-command-line.target", p) < 0) -- return log_error_errno(errno, "Failed to link unit file kernel-command-line.target → %s: %m", p); -+ return log_error_errno(errno, "Failed to link unit file kernel-command-line.target %s %s: %m", -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - - return 0; - } -diff --git a/src/shared/devnode-acl.c b/src/shared/devnode-acl.c -index 89ff566832..21d8130e0d 100644 ---- a/src/shared/devnode-acl.c -+++ b/src/shared/devnode-acl.c -@@ -12,6 +12,7 @@ - #include "escape.h" - #include "fd-util.h" - #include "format-util.h" -+#include "glyph-util.h" - #include "set.h" - #include "string-util.h" - #include "util.h" -@@ -242,8 +243,8 @@ int devnode_acl_all(const char *seat, - SET_FOREACH(n, nodes) { - int k; - -- log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT"→"UID_FMT"%s%s)", -- n, seat, old_uid, new_uid, -+ log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT"%s"UID_FMT"%s%s)", -+ n, seat, old_uid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), new_uid, - del ? " del" : "", add ? " add" : ""); - - k = devnode_acl(n, flush, del, old_uid, add, new_uid); -diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c -index f54b187a1b..49ce9cfa10 100644 ---- a/src/shared/dns-domain.c -+++ b/src/shared/dns-domain.c -@@ -7,6 +7,7 @@ - - #include "alloc-util.h" - #include "dns-domain.h" -+#include "glyph-util.h" - #include "hashmap.h" - #include "hexdecoct.h" - #include "hostname-util.h" -@@ -1300,7 +1301,7 @@ int dns_name_apply_idna(const char *name, char **ret) { - r = sym_idn2_lookup_u8((uint8_t*) name, (uint8_t**) &t, - IDN2_NFC_INPUT | IDN2_TRANSITIONAL); - -- log_debug("idn2_lookup_u8: %s → %s", name, t); -+ log_debug("idn2_lookup_u8: %s %s %s", name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), t); - if (r == IDN2_OK) { - if (!startswith(name, "xn--")) { - _cleanup_free_ char *s = NULL; -@@ -1314,8 +1315,9 @@ int dns_name_apply_idna(const char *name, char **ret) { - } - - if (!streq_ptr(name, s)) { -- log_debug("idn2 roundtrip failed: \"%s\" → \"%s\" → \"%s\", ignoring.", -- name, t, s); -+ log_debug("idn2 roundtrip failed: \"%s\" %s \"%s\" %s \"%s\", ignoring.", -+ name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), t, -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), s); - *ret = NULL; - return 0; - } -diff --git a/src/shared/install.c b/src/shared/install.c -index 4c7d0d6cad..d3661521a9 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -523,7 +523,8 @@ static int create_symlink( - } - - if (chroot_unit_symlinks_equivalent(lp, new_path, dest, old_path)) { -- log_debug("Symlink %s → %s already exists", new_path, dest); -+ log_debug("Symlink %s %s %s already exists", -+ new_path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dest); - return 1; - } - -diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c -index 12c7044f04..e0c8cff14a 100644 ---- a/src/shared/mount-util.c -+++ b/src/shared/mount-util.c -@@ -17,6 +17,7 @@ - #include "fd-util.h" - #include "fileio.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "hashmap.h" - #include "label.h" - #include "libmount-util.h" -@@ -672,8 +673,8 @@ int mount_verbose_full( - log_debug("Bind-mounting %s on %s (%s \"%s\")...", - what, where, strnull(fl), strempty(o)); - else if (f & MS_MOVE) -- log_debug("Moving mount %s → %s (%s \"%s\")...", -- what, where, strnull(fl), strempty(o)); -+ log_debug("Moving mount %s %s %s (%s \"%s\")...", -+ what, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), where, strnull(fl), strempty(o)); - else - log_debug("Mounting %s (%s) on %s (%s \"%s\")...", - strna(what), strna(type), where, strnull(fl), strempty(o)); -diff --git a/src/shared/varlink.c b/src/shared/varlink.c -index e0038dfd28..f18301d3c4 100644 ---- a/src/shared/varlink.c -+++ b/src/shared/varlink.c -@@ -6,6 +6,7 @@ - #include "alloc-util.h" - #include "errno-util.h" - #include "fd-util.h" -+#include "glyph-util.h" - #include "hashmap.h" - #include "io-util.h" - #include "list.h" -@@ -236,8 +237,9 @@ static void varlink_set_state(Varlink *v, VarlinkState state) { - varlink_log(v, "Setting state %s", - varlink_state_to_string(state)); - else -- varlink_log(v, "Changing state %s → %s", -+ varlink_log(v, "Changing state %s %s %s", - varlink_state_to_string(v->state), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), - varlink_state_to_string(state)); - - v->state = state; -diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c -index 673ed7a7ca..1ca7983cfe 100644 ---- a/src/udev/udev-builtin-net_id.c -+++ b/src/udev/udev-builtin-net_id.c -@@ -28,6 +28,7 @@ - #include "dirent-util.h" - #include "fd-util.h" - #include "fileio.h" -+#include "glyph-util.h" - #include "netif-naming-scheme.h" - #include "parse-util.h" - #include "proc-cmdline.h" -@@ -215,9 +216,9 @@ static int dev_pci_onboard(sd_device *dev, const LinkInfo *info, NetNames *names - l = strpcpyf(&s, l, "d%lu", dev_port); - if (l == 0) - names->pci_onboard[0] = '\0'; -- log_device_debug(dev, "Onboard index identifier: index=%lu phys_port=%s dev_port=%lu → %s", -+ log_device_debug(dev, "Onboard index identifier: index=%lu phys_port=%s dev_port=%lu %s %s", - idx, strempty(info->phys_port_name), dev_port, -- empty_to_na(names->pci_slot)); -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_slot)); - - if (sd_device_get_sysattr_value(names->pcidev, "label", &names->pci_onboard_label) >= 0) - log_device_debug(dev, "Onboard label from PCI device: %s", names->pci_onboard_label); -@@ -393,9 +394,9 @@ static int dev_pci_slot(sd_device *dev, const LinkInfo *info, NetNames *names) { - if (l == 0) - names->pci_path[0] = '\0'; - -- log_device_debug(dev, "PCI path identifier: domain=%u bus=%u slot=%u func=%u phys_port=%s dev_port=%lu → %s", -+ log_device_debug(dev, "PCI path identifier: domain=%u bus=%u slot=%u func=%u phys_port=%s dev_port=%lu %s %s", - domain, bus, slot, func, strempty(info->phys_port_name), dev_port, -- empty_to_na(names->pci_path)); -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_path)); - - /* ACPI _SUN — slot user number */ - r = sd_device_new_from_subsystem_sysname(&pci, "subsystem", "pci"); -@@ -487,9 +488,9 @@ static int dev_pci_slot(sd_device *dev, const LinkInfo *info, NetNames *names) { - if (l == 0) - names->pci_slot[0] = '\0'; - -- log_device_debug(dev, "Slot identifier: domain=%u slot=%"PRIu32" func=%u phys_port=%s dev_port=%lu → %s", -+ log_device_debug(dev, "Slot identifier: domain=%u slot=%"PRIu32" func=%u phys_port=%s dev_port=%lu %s %s", - domain, hotplug_slot, func, strempty(info->phys_port_name), dev_port, -- empty_to_na(names->pci_slot)); -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_slot)); - } - - return 0; -@@ -529,7 +530,8 @@ static int names_vio(sd_device *dev, NetNames *names) { - - xsprintf(names->vio_slot, "v%u", slotid); - names->type = NET_VIO; -- log_device_debug(dev, "Vio slot identifier: slotid=%u → %s", slotid, names->vio_slot); -+ log_device_debug(dev, "Vio slot identifier: slotid=%u %s %s", -+ slotid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->vio_slot); - return 0; - } - -@@ -596,8 +598,8 @@ static int names_platform(sd_device *dev, NetNames *names, bool test) { - - xsprintf(names->platform_path, "a%s%xi%u", vendor, model, instance); - names->type = NET_PLATFORM; -- log_device_debug(dev, "Platform identifier: vendor=%s model=%u instance=%u → %s", -- vendor, model, instance, names->platform_path); -+ log_device_debug(dev, "Platform identifier: vendor=%s model=%u instance=%u %s %s", -+ vendor, model, instance, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->platform_path); - return 0; - } - -@@ -718,8 +720,9 @@ static int names_usb(sd_device *dev, NetNames *names) { - if (l == 0) - return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ENAMETOOLONG), - "Generated USB name would be too long."); -- log_device_debug(dev, "USB name identifier: ports=%.*s config=%s interface=%s → %s", -- (int) strlen(ports), sysname + (ports - name), config, interf, names->usb_ports); -+ log_device_debug(dev, "USB name identifier: ports=%.*s config=%s interface=%s %s %s", -+ (int) strlen(ports), sysname + (ports - name), config, interf, -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->usb_ports); - names->type = NET_USB; - return 0; - } -@@ -752,7 +755,8 @@ static int names_bcma(sd_device *dev, NetNames *names) { - xsprintf(names->bcma_core, "b%u", core); - - names->type = NET_BCMA; -- log_device_debug(dev, "BCMA core identifier: core=%u → \"%s\"", core, names->bcma_core); -+ log_device_debug(dev, "BCMA core identifier: core=%u %s \"%s\"", -+ core, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->bcma_core); - return 0; - } - -@@ -813,7 +817,8 @@ static int names_ccw(sd_device *dev, NetNames *names) { - return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ENAMETOOLONG), - "Generated CCW name would be too long."); - names->type = NET_CCW; -- log_device_debug(dev, "CCW identifier: ccw_busid=%s → \"%s\"", bus_id, names->ccw_busid); -+ log_device_debug(dev, "CCW identifier: ccw_busid=%s %s \"%s\"", -+ bus_id, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->ccw_busid); - return 0; - } - -@@ -1027,8 +1032,9 @@ static int builtin_net_id(sd_device *dev, sd_netlink **rtnl, int argc, char *arg - - xsprintf(str, "%sx%s", prefix, HW_ADDR_TO_STR_FULL(&info.hw_addr, HW_ADDR_TO_STRING_NO_COLON)); - udev_builtin_add_property(dev, test, "ID_NET_NAME_MAC", str); -- log_device_debug(dev, "MAC address identifier: hw_addr=%s → %s", -- HW_ADDR_TO_STR(&info.hw_addr), str + strlen(prefix)); -+ log_device_debug(dev, "MAC address identifier: hw_addr=%s %s %s", -+ HW_ADDR_TO_STR(&info.hw_addr), -+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), str + strlen(prefix)); - - ieee_oui(dev, &info, test); - } diff --git a/SOURCES/0269-tree-wide-allow-ASCII-fallback-for-in-logs.patch b/SOURCES/0269-tree-wide-allow-ASCII-fallback-for-in-logs.patch deleted file mode 100644 index a4c9a1e..0000000 --- a/SOURCES/0269-tree-wide-allow-ASCII-fallback-for-in-logs.patch +++ /dev/null @@ -1,387 +0,0 @@ -From 72fb11cd3191e7546ff0bae802f5bd6e5e815647 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Fri, 24 Jun 2022 09:59:44 +0200 -Subject: [PATCH] =?UTF-8?q?tree-wide:=20allow=20ASCII=20fallback=20for=20?= - =?UTF-8?q?=E2=80=A6=20in=20logs?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -(cherry picked from commit 28e5e1e97f47067bce190ea6b3404907d63e4320) - -Related: #2118297 ---- - src/basic/os-util.c | 6 +++-- - src/binfmt/binfmt.c | 2 +- - src/boot/bootctl.c | 2 +- - src/core/dbus-manager.c | 2 +- - src/core/manager.c | 4 ++-- - .../environment-d-generator.c | 3 ++- - src/home/homectl.c | 12 ++++++---- - src/libsystemd/sd-event/sd-event.c | 4 +++- - src/nss-resolve/nss-resolve.c | 5 ++++- - src/resolve/resolved-varlink.c | 5 ++++- - src/shared/user-record.c | 22 ++++++++++++++----- - src/sysusers/sysusers.c | 12 +++++----- - src/tmpfiles/tmpfiles.c | 6 ++--- - 13 files changed, 56 insertions(+), 29 deletions(-) - -diff --git a/src/basic/os-util.c b/src/basic/os-util.c -index acfff24319..880fb7e6bb 100644 ---- a/src/basic/os-util.c -+++ b/src/basic/os-util.c -@@ -8,6 +8,7 @@ - #include "fd-util.h" - #include "fileio.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "macro.h" - #include "os-util.h" - #include "parse-util.h" -@@ -146,8 +147,9 @@ int open_extension_release(const char *root, const char *extension, char **ret_p - if (k != 0) - continue; - -- log_debug("%s/%s: 'user.extension-release.strict' attribute is false…", -- extension_release_dir_path, de->d_name); -+ log_debug("%s/%s: 'user.extension-release.strict' attribute is false%s", -+ extension_release_dir_path, de->d_name, -+ special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - /* We already found what we were looking for, but there's another candidate? - * We treat this as an error, as we want to enforce that there are no ambiguities -diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c -index 817ee387ff..71cb56aa4a 100644 ---- a/src/binfmt/binfmt.c -+++ b/src/binfmt/binfmt.c -@@ -83,7 +83,7 @@ static int apply_file(const char *filename, bool ignore_enoent) { - return log_error_errno(r, "Failed to open file '%s': %m", filename); - } - -- log_debug("Applying %s…", pp); -+ log_debug("Applying %s%s", pp, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - for (unsigned line = 1;; line++) { - _cleanup_free_ char *text = NULL; - char *p; -diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c -index c1adae4962..292907eb4a 100644 ---- a/src/boot/bootctl.c -+++ b/src/boot/bootctl.c -@@ -1404,7 +1404,7 @@ static int are_we_installed(void) { - if (!p) - return log_oom(); - -- log_debug("Checking whether %s contains any files…", p); -+ log_debug("Checking whether %s contains any files%s", p, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - r = dir_is_empty(p); - if (r < 0 && r != -ENOENT) - return log_error_errno(r, "Failed to check whether %s contains any files: %m", p); -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index efba6331b9..0ce2d73857 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -1886,7 +1886,7 @@ static int method_enqueue_marked_jobs(sd_bus_message *message, void *userdata, s - if (r == 0) - return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ - -- log_info("Queuing reload/restart jobs for marked units…"); -+ log_info("Queuing reload/restart jobs for marked units%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - r = sd_bus_message_new_method_return(message, &reply); -diff --git a/src/core/manager.c b/src/core/manager.c -index c01128adb4..5b7f5f55aa 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -1593,7 +1593,7 @@ static void manager_coldplug(Manager *m) { - - assert(m); - -- log_debug("Invoking unit coldplug() handlers…"); -+ log_debug("Invoking unit coldplug() handlers%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - /* Let's place the units back into their deserialized state */ - HASHMAP_FOREACH_KEY(u, k, m->units) { -@@ -1614,7 +1614,7 @@ static void manager_catchup(Manager *m) { - - assert(m); - -- log_debug("Invoking unit catchup() handlers…"); -+ log_debug("Invoking unit catchup() handlers%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - /* Let's catch up on any state changes that happened while we were reloading/reexecing */ - HASHMAP_FOREACH_KEY(u, k, m->units) { -diff --git a/src/environment-d-generator/environment-d-generator.c b/src/environment-d-generator/environment-d-generator.c -index 39c46c7c2b..12aafbc7d9 100644 ---- a/src/environment-d-generator/environment-d-generator.c -+++ b/src/environment-d-generator/environment-d-generator.c -@@ -6,6 +6,7 @@ - #include "def.h" - #include "env-file.h" - #include "escape.h" -+#include "glyph-util.h" - #include "log.h" - #include "path-lookup.h" - #include "strv.h" -@@ -55,7 +56,7 @@ static int load_and_print(void) { - * that in case of failure, a partial update is better than none. */ - - STRV_FOREACH(i, files) { -- log_debug("Reading %s…", *i); -+ log_debug("Reading %s%s", *i, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - r = merge_env_file(&env, NULL, *i); - if (r == -ENOMEM) -diff --git a/src/home/homectl.c b/src/home/homectl.c -index f0d1dac6ab..23bf17f5cf 100644 ---- a/src/home/homectl.c -+++ b/src/home/homectl.c -@@ -1683,9 +1683,13 @@ static int passwd_home(int argc, char *argv[], void *userdata) { - int r; - - if (arg_pkcs11_token_uri) -- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "To change the PKCS#11 security token use 'homectl update --pkcs11-token-uri=…'."); -+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), -+ "To change the PKCS#11 security token use 'homectl update --pkcs11-token-uri=%s'.", -+ special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - if (arg_fido2_device) -- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "To change the FIDO2 security token use 'homectl update --fido2-device=…'."); -+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), -+ "To change the FIDO2 security token use 'homectl update --fido2-device=%s'.", -+ special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - if (identity_properties_specified()) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "The 'passwd' verb does not permit changing other record properties at the same time."); - -@@ -3600,8 +3604,8 @@ static int parse_argv(int argc, char *argv[]) { - return log_error_errno(r, "Failed to parse --rebalance-weight= argument: %s", optarg); - - if (u < REBALANCE_WEIGHT_MIN || u > REBALANCE_WEIGHT_MAX) -- return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Rebalancing weight out of valid range %" PRIu64 "…%" PRIu64 ": %s", -- REBALANCE_WEIGHT_MIN, REBALANCE_WEIGHT_MAX, optarg); -+ return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Rebalancing weight out of valid range %" PRIu64 "%s%" PRIu64 ": %s", -+ REBALANCE_WEIGHT_MIN, special_glyph(SPECIAL_GLYPH_ELLIPSIS), REBALANCE_WEIGHT_MAX, optarg); - } - - /* Drop from per machine stuff and everywhere */ -diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c -index dd257eadfe..b491033ca7 100644 ---- a/src/libsystemd/sd-event/sd-event.c -+++ b/src/libsystemd/sd-event/sd-event.c -@@ -13,6 +13,7 @@ - #include "event-source.h" - #include "fd-util.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "hashmap.h" - #include "list.h" - #include "macro.h" -@@ -405,7 +406,8 @@ _public_ int sd_event_new(sd_event** ret) { - e->epoll_fd = fd_move_above_stdio(e->epoll_fd); - - if (secure_getenv("SD_EVENT_PROFILE_DELAYS")) { -- log_debug("Event loop profiling enabled. Logarithmic histogram of event loop iterations in the range 2^0 … 2^63 us will be logged every 5s."); -+ log_debug("Event loop profiling enabled. Logarithmic histogram of event loop iterations in the range 2^0 %s 2^63 us will be logged every 5s.", -+ special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - e->profile_delays = true; - } - -diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c -index e857d42db6..9ed2945a1e 100644 ---- a/src/nss-resolve/nss-resolve.c -+++ b/src/nss-resolve/nss-resolve.c -@@ -10,6 +10,7 @@ - - #include "env-util.h" - #include "errno-util.h" -+#include "glyph-util.h" - #include "in-addr-util.h" - #include "macro.h" - #include "nss-util.h" -@@ -180,7 +181,9 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis - - b = json_variant_integer(i); - if (b < 0 || b > 0xff) -- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is out of range 0…255.", k, strna(name)); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), -+ "Element %zu of JSON field '%s' is out of range 0%s255.", -+ k, strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - buf.bytes[k++] = (uint8_t) b; - } -diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c -index cc684608a6..a00dfee5dd 100644 ---- a/src/resolve/resolved-varlink.c -+++ b/src/resolve/resolved-varlink.c -@@ -1,5 +1,6 @@ - /* SPDX-License-Identifier: LGPL-2.1-or-later */ - -+#include "glyph-util.h" - #include "in-addr-util.h" - #include "resolved-dns-synthesize.h" - #include "resolved-varlink.h" -@@ -371,7 +372,9 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis - - b = json_variant_integer(i); - if (b < 0 || b > 0xff) -- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is out of range 0…255.", k, strna(name)); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), -+ "Element %zu of JSON field '%s' is out of range 0%s255.", -+ k, strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - buf.bytes[k++] = (uint8_t) b; - } -diff --git a/src/shared/user-record.c b/src/shared/user-record.c -index 5b406d1f42..eae0915fc7 100644 ---- a/src/shared/user-record.c -+++ b/src/shared/user-record.c -@@ -6,6 +6,7 @@ - #include "dns-domain.h" - #include "env-util.h" - #include "fs-util.h" -+#include "glyph-util.h" - #include "hexdecoct.h" - #include "hostname-util.h" - #include "memory-util.h" -@@ -467,7 +468,9 @@ static int json_dispatch_umask(const char *name, JsonVariant *variant, JsonDispa - - k = json_variant_unsigned(variant); - if (k > 0777) -- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' outside of valid range 0…0777.", strna(name)); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), -+ "JSON field '%s' outside of valid range 0%s0777.", -+ strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - *m = (mode_t) k; - return 0; -@@ -487,7 +490,9 @@ static int json_dispatch_access_mode(const char *name, JsonVariant *variant, Jso - - k = json_variant_unsigned(variant); - if (k > 07777) -- return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' outside of valid range 0…07777.", strna(name)); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), -+ "JSON field '%s' outside of valid range 0%s07777.", -+ strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - *m = (mode_t) k; - return 0; -@@ -578,7 +583,9 @@ static int json_dispatch_tasks_or_memory_max(const char *name, JsonVariant *vari - - k = json_variant_unsigned(variant); - if (k <= 0 || k >= UINT64_MAX) -- return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' is not in valid range %" PRIu64 "…%" PRIu64 ".", strna(name), (uint64_t) 1, UINT64_MAX-1); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), -+ "JSON field '%s' is not in valid range %" PRIu64 "%s%" PRIu64 ".", -+ strna(name), (uint64_t) 1, special_glyph(SPECIAL_GLYPH_ELLIPSIS), UINT64_MAX-1); - - *limit = k; - return 0; -@@ -597,7 +604,10 @@ static int json_dispatch_weight(const char *name, JsonVariant *variant, JsonDisp - - k = json_variant_unsigned(variant); - if (k <= CGROUP_WEIGHT_MIN || k >= CGROUP_WEIGHT_MAX) -- return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' is not in valid range %" PRIu64 "…%" PRIu64 ".", strna(name), (uint64_t) CGROUP_WEIGHT_MIN, (uint64_t) CGROUP_WEIGHT_MAX); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), -+ "JSON field '%s' is not in valid range %" PRIu64 "%s%" PRIu64 ".", -+ strna(name), (uint64_t) CGROUP_WEIGHT_MIN, -+ special_glyph(SPECIAL_GLYPH_ELLIPSIS), (uint64_t) CGROUP_WEIGHT_MAX); - - *weight = k; - return 0; -@@ -1010,7 +1020,9 @@ static int dispatch_rebalance_weight(const char *name, JsonVariant *variant, Jso - else if (u == 0) - *rebalance_weight = REBALANCE_WEIGHT_OFF; - else -- return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "Rebalance weight is out of valid range %" PRIu64 "…%" PRIu64 ".", REBALANCE_WEIGHT_MIN, REBALANCE_WEIGHT_MAX); -+ return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), -+ "Rebalance weight is out of valid range %" PRIu64 "%s%" PRIu64 ".", -+ REBALANCE_WEIGHT_MIN, special_glyph(SPECIAL_GLYPH_ELLIPSIS), REBALANCE_WEIGHT_MAX); - - return 0; - } -diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c -index 6a2ca1afbb..05e2591b6a 100644 ---- a/src/sysusers/sysusers.c -+++ b/src/sysusers/sysusers.c -@@ -405,7 +405,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char - return 0; - - if (arg_dry_run) { -- log_info("Would write /etc/passwd…"); -+ log_info("Would write /etc/passwd%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - return 0; - } - -@@ -529,7 +529,7 @@ static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char - return 0; - - if (arg_dry_run) { -- log_info("Would write /etc/shadow…"); -+ log_info("Would write /etc/shadow%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - return 0; - } - -@@ -667,7 +667,7 @@ static int write_temporary_group(const char *group_path, FILE **tmpfile, char ** - return 0; - - if (arg_dry_run) { -- log_info("Would write /etc/group…"); -+ log_info("Would write /etc/group%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - return 0; - } - -@@ -773,7 +773,7 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch - return 0; - - if (arg_dry_run) { -- log_info("Would write /etc/gshadow…"); -+ log_info("Would write /etc/gshadow%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - return 0; - } - -@@ -2002,13 +2002,13 @@ static int read_config_files(char **args) { - - STRV_FOREACH(f, files) - if (p && path_equal(*f, p)) { -- log_debug("Parsing arguments at position \"%s\"…", *f); -+ log_debug("Parsing arguments at position \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - r = parse_arguments(args); - if (r < 0) - return r; - } else { -- log_debug("Reading config file \"%s\"…", *f); -+ log_debug("Reading config file \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - /* Just warn, ignore result otherwise */ - (void) read_config_file(*f, true); -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 023207bc60..c6019ae2c8 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -3509,7 +3509,7 @@ static int read_config_file(char **config_dirs, const char *fn, bool ignore_enoe - assert(fn); - - if (streq(fn, "-")) { -- log_debug("Reading config from stdin…"); -+ log_debug("Reading config from stdin%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - fn = ""; - f = stdin; - } else { -@@ -3523,7 +3523,7 @@ static int read_config_file(char **config_dirs, const char *fn, bool ignore_enoe - return log_error_errno(r, "Failed to open '%s': %m", fn); - } - -- log_debug("Reading config file \"%s\"…", pp); -+ log_debug("Reading config file \"%s\"%s", pp, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - fn = pp; - f = _f; - } -@@ -3626,7 +3626,7 @@ static int read_config_files(char **config_dirs, char **args, bool *invalid_conf - - STRV_FOREACH(f, files) - if (p && path_equal(*f, p)) { -- log_debug("Parsing arguments at position \"%s\"…", *f); -+ log_debug("Parsing arguments at position \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS)); - - r = parse_arguments(config_dirs, args, invalid_config); - if (r < 0) diff --git a/SOURCES/0270-core-allow-to-set-default-timeout-for-devices.patch b/SOURCES/0270-core-allow-to-set-default-timeout-for-devices.patch deleted file mode 100644 index 0c61285..0000000 --- a/SOURCES/0270-core-allow-to-set-default-timeout-for-devices.patch +++ /dev/null @@ -1,115 +0,0 @@ -From fa06a45fa2dc0b7d15dc1394e679a9043fa2fee4 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sat, 16 Jul 2022 09:49:12 +0200 -Subject: [PATCH] core: allow to set default timeout for devices - -Fixes: #19879 -(cherry picked from commit a0fe19f9f791c05af236265954b1d73e8fcf5468) - -Resolves: #2116681 ---- - src/core/dbus-manager.c | 1 + - src/core/device.c | 2 +- - src/core/main.c | 4 ++++ - src/core/manager.c | 1 + - src/core/manager.h | 1 + - src/core/system.conf.in | 1 + - 6 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 0ce2d73857..9d47d9c8a7 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -2706,6 +2706,7 @@ const sd_bus_vtable bus_manager_vtable[] = { - SD_BUS_PROPERTY("DefaultTimeoutStartUSec", "t", bus_property_get_usec, offsetof(Manager, default_timeout_start_usec), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("DefaultTimeoutStopUSec", "t", bus_property_get_usec, offsetof(Manager, default_timeout_stop_usec), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("DefaultTimeoutAbortUSec", "t", property_get_default_timeout_abort_usec, 0, 0), -+ SD_BUS_PROPERTY("DefaultDeviceTimeoutUSec", "t", bus_property_get_usec, offsetof(Manager, default_device_timeout_usec), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("DefaultRestartUSec", "t", bus_property_get_usec, offsetof(Manager, default_restart_usec), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("DefaultStartLimitIntervalUSec", "t", bus_property_get_usec, offsetof(Manager, default_start_limit_interval), SD_BUS_VTABLE_PROPERTY_CONST), - /* The following two items are obsolete alias */ -diff --git a/src/core/device.c b/src/core/device.c -index d2c5febd3f..cb6021cbd8 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -101,7 +101,7 @@ static void device_init(Unit *u) { - * indefinitely for plugged in devices, something which cannot - * happen for the other units since their operations time out - * anyway. */ -- u->job_running_timeout = u->manager->default_timeout_start_usec; -+ u->job_running_timeout = u->manager->default_device_timeout_usec; - - u->ignore_on_isolate = true; - -diff --git a/src/core/main.c b/src/core/main.c -index 03efaa03be..7dedc5163b 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -132,6 +132,7 @@ static usec_t arg_default_restart_usec; - static usec_t arg_default_timeout_start_usec; - static usec_t arg_default_timeout_stop_usec; - static usec_t arg_default_timeout_abort_usec; -+static usec_t arg_default_device_timeout_usec; - static bool arg_default_timeout_abort_set; - static usec_t arg_default_start_limit_interval; - static unsigned arg_default_start_limit_burst; -@@ -725,6 +726,7 @@ static int parse_config_file(void) { - { "Manager", "DefaultTimeoutStartSec", config_parse_sec, 0, &arg_default_timeout_start_usec }, - { "Manager", "DefaultTimeoutStopSec", config_parse_sec, 0, &arg_default_timeout_stop_usec }, - { "Manager", "DefaultTimeoutAbortSec", config_parse_default_timeout_abort, 0, NULL }, -+ { "Manager", "DefaultDeviceTimeoutSec", config_parse_sec, 0, &arg_default_device_timeout_usec }, - { "Manager", "DefaultRestartSec", config_parse_sec, 0, &arg_default_restart_usec }, - { "Manager", "DefaultStartLimitInterval", config_parse_sec, 0, &arg_default_start_limit_interval }, /* obsolete alias */ - { "Manager", "DefaultStartLimitIntervalSec", config_parse_sec, 0, &arg_default_start_limit_interval }, -@@ -809,6 +811,7 @@ static void set_manager_defaults(Manager *m) { - m->default_timeout_stop_usec = arg_default_timeout_stop_usec; - m->default_timeout_abort_usec = arg_default_timeout_abort_usec; - m->default_timeout_abort_set = arg_default_timeout_abort_set; -+ m->default_device_timeout_usec = arg_default_device_timeout_usec; - m->default_restart_usec = arg_default_restart_usec; - m->default_start_limit_interval = arg_default_start_limit_interval; - m->default_start_limit_burst = arg_default_start_limit_burst; -@@ -2437,6 +2440,7 @@ static void reset_arguments(void) { - arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC; - arg_default_timeout_abort_usec = DEFAULT_TIMEOUT_USEC; - arg_default_timeout_abort_set = false; -+ arg_default_device_timeout_usec = DEFAULT_TIMEOUT_USEC; - arg_default_start_limit_interval = DEFAULT_START_LIMIT_INTERVAL; - arg_default_start_limit_burst = DEFAULT_START_LIMIT_BURST; - arg_runtime_watchdog = 0; -diff --git a/src/core/manager.c b/src/core/manager.c -index 5b7f5f55aa..8057bafe61 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -806,6 +806,7 @@ int manager_new(LookupScope scope, ManagerTestRunFlags test_run_flags, Manager * - .default_timeout_start_usec = DEFAULT_TIMEOUT_USEC, - .default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC, - .default_restart_usec = DEFAULT_RESTART_USEC, -+ .default_device_timeout_usec = DEFAULT_TIMEOUT_USEC, - - .original_log_level = -1, - .original_log_target = _LOG_TARGET_INVALID, -diff --git a/src/core/manager.h b/src/core/manager.h -index 281d2a2138..e7a15e6b25 100644 ---- a/src/core/manager.h -+++ b/src/core/manager.h -@@ -354,6 +354,7 @@ struct Manager { - ExecOutput default_std_output, default_std_error; - - usec_t default_restart_usec, default_timeout_start_usec, default_timeout_stop_usec; -+ usec_t default_device_timeout_usec; - usec_t default_timeout_abort_usec; - bool default_timeout_abort_set; - -diff --git a/src/core/system.conf.in b/src/core/system.conf.in -index 5913b5b0e4..7a150a482f 100644 ---- a/src/core/system.conf.in -+++ b/src/core/system.conf.in -@@ -44,6 +44,7 @@ - #DefaultTimeoutStartSec=90s - #DefaultTimeoutStopSec=90s - #DefaultTimeoutAbortSec= -+#DefaultDeviceTimeoutSec=90s - #DefaultRestartSec=100ms - #DefaultStartLimitIntervalSec=10s - #DefaultStartLimitBurst=5 diff --git a/SOURCES/0271-man-document-DefaultDeviceTimeoutSec.patch b/SOURCES/0271-man-document-DefaultDeviceTimeoutSec.patch deleted file mode 100644 index 924ec78..0000000 --- a/SOURCES/0271-man-document-DefaultDeviceTimeoutSec.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 873e5040948fb317de39ad40316d16fdc9d17ffe Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sat, 16 Jul 2022 10:16:41 +0200 -Subject: [PATCH] man: document DefaultDeviceTimeoutSec= - -(cherry picked from commit 9e69bd4801588c12811c611a1c68b54cecbe1718) - -Related: #2116681 ---- - man/systemd-system.conf.xml | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml -index b8e2b65625..bad790944d 100644 ---- a/man/systemd-system.conf.xml -+++ b/man/systemd-system.conf.xml -@@ -326,6 +326,17 @@ - 100ms. - - -+ -+ DefaultDeviceTimeoutSec= -+ -+ Configures the default timeout for waiting for devices. It can be changed per -+ device via the x-systemd.device-timeout= option in /etc/fstab -+ and /etc/crypttab (see -+ systemd.mount5, -+ crypttab5). -+ Defaults to 90s. -+ -+ - - DefaultStartLimitIntervalSec= - DefaultStartLimitBurst= diff --git a/SOURCES/0272-man-update-dbus-docs.patch b/SOURCES/0272-man-update-dbus-docs.patch deleted file mode 100644 index 707f3d8..0000000 --- a/SOURCES/0272-man-update-dbus-docs.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3b5feb647f86c6db779806551093202b1ab020f2 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sat, 16 Jul 2022 12:36:06 +0200 -Subject: [PATCH] man: update dbus docs - -(cherry picked from commit 141332ab55203adddadbf59ff7792a7e3438092c) - -Related: #2116681 ---- - man/org.freedesktop.systemd1.xml | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml -index e1abb7f389..6be60c865c 100644 ---- a/man/org.freedesktop.systemd1.xml -+++ b/man/org.freedesktop.systemd1.xml -@@ -425,6 +425,8 @@ node /org/freedesktop/systemd1 { - @org.freedesktop.DBus.Property.EmitsChangedSignal("false") - readonly t DefaultTimeoutAbortUSec = ...; - @org.freedesktop.DBus.Property.EmitsChangedSignal("const") -+ readonly t DefaultDeviceTimeoutUSec = ...; -+ @org.freedesktop.DBus.Property.EmitsChangedSignal("const") - readonly t DefaultRestartUSec = ...; - @org.freedesktop.DBus.Property.EmitsChangedSignal("const") - readonly t DefaultStartLimitIntervalUSec = ...; -@@ -669,6 +671,8 @@ node /org/freedesktop/systemd1 { - - - -+ -+ - - - -@@ -1073,6 +1077,8 @@ node /org/freedesktop/systemd1 { - - - -+ -+ - - - diff --git a/SOURCES/0273-hwdb-60-keyboard-Fix-volume-button-mapping-on-Asus-T.patch b/SOURCES/0273-hwdb-60-keyboard-Fix-volume-button-mapping-on-Asus-T.patch deleted file mode 100644 index b83b8eb..0000000 --- a/SOURCES/0273-hwdb-60-keyboard-Fix-volume-button-mapping-on-Asus-T.patch +++ /dev/null @@ -1,47 +0,0 @@ -From c064473f6993a04ad126770a3218da623316c543 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Sat, 25 Dec 2021 11:19:03 +0100 -Subject: [PATCH] hwdb: 60-keyboard: Fix volume-button mapping on Asus TF103C - -The Asus TF103C misses the home button in its PNP0C40 GPIO resources -causing the button mappings for the volume buttons to be off by one, -leading to the volume-up button sending home button presses and the -volume-down button sending volume-up button presses. - -Add a 60-keyboard hwdb entry to correct the mappings. Note this is -split over 2 input devices because the soc_button_array driver -creates separate input devices for power + home and vol up/down. -This is done because power/home act as wakeup buttons where as -the volume buttons do not. - -This means that after this fixup the home -> volume-up button -still acts as a wakeup button, there is nothing which can be done -about this without adding a kludge to the kernel which is not -worth the trouble (IMHO). - -(cherry picked from commit 04b457d8ef9c93be3b2048c6f545cdbcf1b893a1) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index b614a22c8c..3d6e56983b 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -231,6 +231,14 @@ evdev:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:* - evdev:input:b0003v0B05p1869* - KEYBOARD_KEY_ff31007c=f20 # Remap micmute to f20 - -+# Asus TF103C misses the home button in its PNP0C40 GPIO resources -+# causing the volume-button mappings to be off by one, correct this -+evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:*:svnASUSTeKCOMPUTERINC.:pnTF103C*:* -+ KEYBOARD_KEY_1=volumeup -+ -+evdev:name:gpio-keys:phys:gpio-keys/input0:ev:100003:dmi:*:svnASUSTeKCOMPUTERINC.:pnTF103C*:* -+ KEYBOARD_KEY_0=volumedown -+ - ########################################################### - # BenQ - ########################################################### diff --git a/SOURCES/0274-hwdb-CH-Pro-Pedals-not-classified-correctly-due-to-n.patch b/SOURCES/0274-hwdb-CH-Pro-Pedals-not-classified-correctly-due-to-n.patch deleted file mode 100644 index 1cfbc99..0000000 --- a/SOURCES/0274-hwdb-CH-Pro-Pedals-not-classified-correctly-due-to-n.patch +++ /dev/null @@ -1,28 +0,0 @@ -From c81a00694952469b1a3afa7c0345a5f2390c8024 Mon Sep 17 00:00:00 2001 -From: Tyson Whitehead -Date: Wed, 19 Jan 2022 22:38:21 -0500 -Subject: [PATCH] hwdb: CH Pro Pedals not classified correctly due to no - buttons - -(cherry picked from commit 230ed4c4bad8b3c1d9d746a80e6f78dc71d1c87f) - -Related: #2087778 ---- - hwdb.d/60-input-id.hwdb | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-input-id.hwdb b/hwdb.d/60-input-id.hwdb -index c4101cc2a5..f7b61fb980 100644 ---- a/hwdb.d/60-input-id.hwdb -+++ b/hwdb.d/60-input-id.hwdb -@@ -70,4 +70,9 @@ id-input:modalias:input:b0005v046DpB00De0700* - - # Logitech MX Keys - id-input:modalias:input:b0003v046Dp408Ae0111* -- ID_INPUT_MOUSE=0 -+ ID_INPUT_MOUSE=0 -+ -+# CH Products Pro Pedals -+id-input:modalias:input:b0003v068Ep00F2e0100* -+ ID_INPUT_ACCELEROMETER=0 -+ ID_INPUT_JOYSTICK=1 diff --git a/SOURCES/0275-hwdb-Add-accel-orientation-quirk-for-the-GPD-Pocket-.patch b/SOURCES/0275-hwdb-Add-accel-orientation-quirk-for-the-GPD-Pocket-.patch deleted file mode 100644 index 52181a6..0000000 --- a/SOURCES/0275-hwdb-Add-accel-orientation-quirk-for-the-GPD-Pocket-.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d7ca24d57b5e6587238da4d5002c221af31e9735 Mon Sep 17 00:00:00 2001 -From: Thomas Batten -Date: Thu, 20 Jan 2022 19:24:00 +1030 -Subject: [PATCH] hwdb: Add accel orientation quirk for the GPD Pocket 3 - -(cherry picked from commit 5888fa9b16c33e48d702313d80c9cb0253aec920) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index ab7b1adacd..c4ee7e0c7b 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -426,6 +426,10 @@ sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd03/20/201 - sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/25/2017:*svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:* - ACCEL_LOCATION=base - -+# GPD Pocket 3 -+sensor:modalias:acpi:MXC6655*:dmi:*:svnGPD:pnG1621-02:* -+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 -+ - ######################################### - # Hometech - ######################################## diff --git a/SOURCES/0276-hostname-Allow-overriding-the-chassis-type-from-hwdb.patch b/SOURCES/0276-hostname-Allow-overriding-the-chassis-type-from-hwdb.patch deleted file mode 100644 index 9acf684..0000000 --- a/SOURCES/0276-hostname-Allow-overriding-the-chassis-type-from-hwdb.patch +++ /dev/null @@ -1,41 +0,0 @@ -From ea54689eebe58d1bbb908762731f179e50ac1c9a Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Fri, 21 Jan 2022 18:56:42 +0100 -Subject: [PATCH] hostname: Allow overriding the chassis type from hwdb - -Closes: #7390 -(cherry picked from commit 4b35eb2579b226785f0d94129a7652450f9723fd) - -Related: #2087778 ---- - src/hostname/hostnamed.c | 12 +++++++----- - 1 file changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c -index b20a93ad81..559326b9f5 100644 ---- a/src/hostname/hostnamed.c -+++ b/src/hostname/hostnamed.c -@@ -725,16 +725,18 @@ static int property_get_chassis( - sd_bus_error *error) { - - Context *c = userdata; -- const char *name; -+ _cleanup_free_ char *dmi_chassis = NULL; -+ const char *name = NULL; - - context_read_machine_info(c); - -- if (isempty(c->data[PROP_CHASSIS])) -- name = fallback_chassis(); -- else -+ if (isempty(c->data[PROP_CHASSIS])) { -+ if (get_dmi_data("ID_CHASSIS", NULL, &dmi_chassis) <= 0) -+ name = fallback_chassis(); -+ } else - name = c->data[PROP_CHASSIS]; - -- return sd_bus_message_append(reply, "s", name); -+ return sd_bus_message_append(reply, "s", name ?: dmi_chassis); - } - - static int property_get_uname_field( diff --git a/SOURCES/0277-hwdb-Add-Microsoft-Surface-Pro-1-chassis-quirk.patch b/SOURCES/0277-hwdb-Add-Microsoft-Surface-Pro-1-chassis-quirk.patch deleted file mode 100644 index 081faf0..0000000 --- a/SOURCES/0277-hwdb-Add-Microsoft-Surface-Pro-1-chassis-quirk.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 1514432a3837d7feaf70e34fbfafc8137e539ea8 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Fri, 21 Jan 2022 18:57:21 +0100 -Subject: [PATCH] hwdb: Add Microsoft Surface Pro 1 chassis quirk - -See https://github.com/systemd/systemd/issues/7390#issuecomment-345546127 - -(cherry picked from commit bdf182debe715ff7876c610b0f93540437cb8b43) - -Related: #2087778 ---- - hwdb.d/20-dmi-id.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/20-dmi-id.hwdb b/hwdb.d/20-dmi-id.hwdb -index a614473bd9..c7bf6cfab1 100644 ---- a/hwdb.d/20-dmi-id.hwdb -+++ b/hwdb.d/20-dmi-id.hwdb -@@ -4,3 +4,7 @@ - dmi:bvnLENOVO* - ID_SYSFS_ATTRIBUTE_MODEL=product_version - ID_VENDOR_FROM_DATABASE=Lenovo -+ -+# Microsoft Surface 1's chassis type -+dmi:bvnMicrosoft Corporation*:pvrSurface with Windows 8 Pro* -+ ID_CHASSIS=tablet diff --git a/SOURCES/0278-hwdb-treat-logitech-craft-keyboard-as-a-keyboard.patch b/SOURCES/0278-hwdb-treat-logitech-craft-keyboard-as-a-keyboard.patch deleted file mode 100644 index ce01cef..0000000 --- a/SOURCES/0278-hwdb-treat-logitech-craft-keyboard-as-a-keyboard.patch +++ /dev/null @@ -1,27 +0,0 @@ -From cf56e7ae888a0d5a1384b5a22398aa3e32c65b73 Mon Sep 17 00:00:00 2001 -From: Seth Falco -Date: Thu, 27 Jan 2022 21:08:30 +0000 -Subject: [PATCH] hwdb: treat logitech craft keyboard as a keyboard - -(cherry picked from commit 7f74f7a916b8c2bd6e82b873334731427ba8cb80) - -Related: #2087778 ---- - hwdb.d/60-input-id.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-input-id.hwdb b/hwdb.d/60-input-id.hwdb -index f7b61fb980..2d5681dea6 100644 ---- a/hwdb.d/60-input-id.hwdb -+++ b/hwdb.d/60-input-id.hwdb -@@ -72,6 +72,10 @@ id-input:modalias:input:b0005v046DpB00De0700* - id-input:modalias:input:b0003v046Dp408Ae0111* - ID_INPUT_MOUSE=0 - -+# Logitech Craft Keyboard -+id-input:modalias:input:b0003v046Dp4066e0111* -+ ID_INPUT_MOUSE=0 -+ - # CH Products Pro Pedals - id-input:modalias:input:b0003v068Ep00F2e0100* - ID_INPUT_ACCELEROMETER=0 diff --git a/SOURCES/0279-test-frequency-in-mouse-DPI-is-optional.patch b/SOURCES/0279-test-frequency-in-mouse-DPI-is-optional.patch deleted file mode 100644 index 2dea017..0000000 --- a/SOURCES/0279-test-frequency-in-mouse-DPI-is-optional.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3821f3570e28a6f169bf539086882b34a6a7beb8 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 28 Jan 2022 11:08:43 +0900 -Subject: [PATCH] test: frequency in mouse DPI is optional - -Prompted by #22278. - -(cherry picked from commit e912326e05cf753ddb703be0666336ee3386d6e0) - -Related: #2087778 ---- - hwdb.d/parse_hwdb.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py -index 0268bf9580..aef0331ace 100755 ---- a/hwdb.d/parse_hwdb.py -+++ b/hwdb.d/parse_hwdb.py -@@ -121,7 +121,7 @@ def hwdb_grammar(): - def property_grammar(): - ParserElement.setDefaultWhitespaceChars(' ') - -- dpi_setting = Group(Optional('*')('DEFAULT') + INTEGER('DPI') + Suppress('@') + INTEGER('HZ'))('SETTINGS*') -+ dpi_setting = Group(Optional('*')('DEFAULT') + INTEGER('DPI') + Optional(Suppress('@') + INTEGER('HZ')))('SETTINGS*') - mount_matrix_row = SIGNED_REAL + ',' + SIGNED_REAL + ',' + SIGNED_REAL - mount_matrix = Group(mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX') - xkb_setting = Optional(Word(alphanums + '+-/@._')) diff --git a/SOURCES/0280-hwdb-add-two-Elecom-trackballs.patch b/SOURCES/0280-hwdb-add-two-Elecom-trackballs.patch deleted file mode 100644 index 62cef91..0000000 --- a/SOURCES/0280-hwdb-add-two-Elecom-trackballs.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 7baf39a2264d38ee6c684c28fee5da879b87a2c5 Mon Sep 17 00:00:00 2001 -From: Ryan Hendrickson -Date: Thu, 27 Jan 2022 18:06:14 -0500 -Subject: [PATCH] hwdb: add two Elecom trackballs - -(cherry picked from commit a663f5eef59a05ba64e313d2451000d8df754bcf) - -Related: #2087778 ---- - hwdb.d/70-mouse.hwdb | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/hwdb.d/70-mouse.hwdb b/hwdb.d/70-mouse.hwdb -index 6302312456..66e74f667c 100644 ---- a/hwdb.d/70-mouse.hwdb -+++ b/hwdb.d/70-mouse.hwdb -@@ -198,6 +198,17 @@ mouse:usb:v0461p4d46:name:USB Optical Mouse:* - mouse:usb:v056ep010d:name:ELECOM TrackBall Mouse HUGE TrackBall:* - MOUSE_DPI=500@125 *1000@125 1500@125 - -+# Elecom DEFT Pro TrackBall (M-DPT1MR) -+mouse:usb:v056ep0131:name:ELECOM TrackBall Mouse DEFT Pro TrackBall Mouse:* -+ MOUSE_DPI=*500 1000 1500 -+ MOUSE_WHEEL_CLICK_ANGLE=10 -+ -+# Elecom Relacon (M-RT1DR) -+mouse:usb:v056ep0155:name:ELECOM ELECOM Relacon:* -+ ID_INPUT_TRACKBALL=1 -+ MOUSE_DPI=*500 1000 1500 -+ MOUSE_WHEEL_CLICK_ANGLE=30 -+ - ########################################## - # Fujitsu Siemens - ########################################## diff --git a/SOURCES/0281-hwdb-add-new-database-file-for-PDA-devices.patch b/SOURCES/0281-hwdb-add-new-database-file-for-PDA-devices.patch deleted file mode 100644 index 31b933f..0000000 --- a/SOURCES/0281-hwdb-add-new-database-file-for-PDA-devices.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 125cb47adf05421d00e25aee4a143ef2c473aeb9 Mon Sep 17 00:00:00 2001 -From: Davide Cavalca -Date: Sun, 30 Jan 2022 09:28:52 -0800 -Subject: [PATCH] hwdb: add new database file for PDA devices - -Add a new database for handhelds (PDAs, calculators, etc.) that should be -accessible the seat owner. - -The database is initially populated with Texas Instruments calculators -and linking cables, which removes the need to installing dedicated udev -rules for them. - -(cherry picked from commit 7d75376e1f0a83dba76d3a08edbb50923e02e3d3) - -Related: #2087778 ---- - hwdb.d/70-pda.hwdb | 39 +++++++++++++++++++++++++++++++++++++++ - hwdb.d/meson.build | 1 + - hwdb.d/parse_hwdb.py | 1 + - 3 files changed, 41 insertions(+) - create mode 100644 hwdb.d/70-pda.hwdb - -diff --git a/hwdb.d/70-pda.hwdb b/hwdb.d/70-pda.hwdb -new file mode 100644 -index 0000000000..e122acca6f ---- /dev/null -+++ b/hwdb.d/70-pda.hwdb -@@ -0,0 +1,39 @@ -+# This file is part of systemd. -+# -+# Database for handhelds (PDAs, calculators, etc.) that should be accessible -+# the seat owner. -+# -+# Permitted keys: -+# Specify if a device is a signal analyzer -+# ID_PDA=1|0 -+ -+########################################################### -+# Texas Instruments -+########################################################### -+# SilverLink -+usb:v0451pE001* -+ ID_PDA=1 -+ -+# TI-84 Plus DirectLink -+usb:v0451pE003* -+ ID_PDA=1 -+ -+# TI-89 Titanium DirectLink -+usb:v0451pE004* -+ ID_PDA=1 -+ -+# TI-84 Plus Silver Edition DirectLink -+usb:v0451pE008* -+ ID_PDA=1 -+ -+# TI-Nspire DirectLink -+usb:v0451pE012* -+ ID_PDA=1 -+ -+# TI-Nspire Lab Cradle -+usb:v0451pE01C* -+ ID_PDA=1 -+ -+# TI-Nspire CX II DirectLink -+usb:v0451pE022* -+ ID_PDA=1 -diff --git a/hwdb.d/meson.build b/hwdb.d/meson.build -index 8ff044131c..fc72ebb2bd 100644 ---- a/hwdb.d/meson.build -+++ b/hwdb.d/meson.build -@@ -31,6 +31,7 @@ hwdb_files_test = files(''' - 70-cameras.hwdb - 70-joystick.hwdb - 70-mouse.hwdb -+ 70-pda.hwdb - 70-pointingstick.hwdb - 70-touchpad.hwdb - 80-ieee1394-unit-function.hwdb -diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py -index aef0331ace..194a71ac08 100755 ---- a/hwdb.d/parse_hwdb.py -+++ b/hwdb.d/parse_hwdb.py -@@ -136,6 +136,7 @@ def property_grammar(): - ('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER), - ('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))), - ('ID_PERSIST', Or((Literal('0'), Literal('1')))), -+ ('ID_PDA', Or((Literal('0'), Literal('1')))), - ('ID_INPUT', Or((Literal('0'), Literal('1')))), - ('ID_INPUT_ACCELEROMETER', Or((Literal('0'), Literal('1')))), - ('ID_INPUT_JOYSTICK', Or((Literal('0'), Literal('1')))), diff --git a/SOURCES/0282-hwdb-add-support-for-Surface-Laptop-2-3-22303.patch b/SOURCES/0282-hwdb-add-support-for-Surface-Laptop-2-3-22303.patch deleted file mode 100644 index a5f1eef..0000000 --- a/SOURCES/0282-hwdb-add-support-for-Surface-Laptop-2-3-22303.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5d3c35c19083053128ec2c48e6393c2a9803d57e Mon Sep 17 00:00:00 2001 -From: Dorian Clay -Date: Sun, 30 Jan 2022 11:50:09 -0800 -Subject: [PATCH] hwdb: add support for Surface Laptop 2 & 3 (#22303) - -(cherry picked from commit 156d01b9ca4cb6d7b3877a3db7d20ed600dc40c0) - -Related: #2087778 ---- - hwdb.d/60-evdev.hwdb | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb -index f896dde357..9fcb4a3ddf 100644 ---- a/hwdb.d/60-evdev.hwdb -+++ b/hwdb.d/60-evdev.hwdb -@@ -591,6 +591,24 @@ evdev:name:MSFT0001:02 04F3:304B Touchpad:dmi:*svnLENOVO:*pvrLenovoLegionY9000X2 - EVDEV_ABS_35=::31 - EVDEV_ABS_36=::30 - -+######################################### -+# Microsoft -+######################################### -+ -+# Surface Laptop 2 (13") -+evdev:name:Microsoft Surface 045E:0933 Touchpad:dmi:*svnMicrosoftCorporation:*pnSurfaceLaptop2** -+ EVDEV_ABS_00=::38 -+ EVDEV_ABS_01=::38 -+ EVDEV_ABS_35=::38 -+ EVDEV_ABS_36=::38 -+ -+# Surface Laptop 3 (15") -+evdev:name:Microsoft Surface 045E:09AF Touchpad:dmi:*svnMicrosoftCorporation:*pnSurfaceLaptop3** -+ EVDEV_ABS_00=::39 -+ EVDEV_ABS_01=::37 -+ EVDEV_ABS_35=::39 -+ EVDEV_ABS_36=::37 -+ - ######################################### - # NEWYES - ######################################### diff --git a/SOURCES/0283-hwdb-add-HP-calculators.patch b/SOURCES/0283-hwdb-add-HP-calculators.patch deleted file mode 100644 index fdbee4d..0000000 --- a/SOURCES/0283-hwdb-add-HP-calculators.patch +++ /dev/null @@ -1,38 +0,0 @@ -From e193ca5f8828301fe569e28938f10fce3af5fcd3 Mon Sep 17 00:00:00 2001 -From: Davide Cavalca -Date: Thu, 3 Feb 2022 08:35:35 -0800 -Subject: [PATCH] hwdb: add HP calculators - -(cherry picked from commit 2b560c6e545346e9791962e37361ca044fca036e) - -Related: #2087778 ---- - hwdb.d/70-pda.hwdb | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/70-pda.hwdb b/hwdb.d/70-pda.hwdb -index e122acca6f..3fdb4efcdd 100644 ---- a/hwdb.d/70-pda.hwdb -+++ b/hwdb.d/70-pda.hwdb -@@ -4,9 +4,20 @@ - # the seat owner. - # - # Permitted keys: --# Specify if a device is a signal analyzer -+# Specify if a device is a handheld - # ID_PDA=1|0 - -+########################################################### -+# HP Inc. -+########################################################### -+# HP x9G+ Calculator -+usb:v03F0p0121* -+ ID_PDA=1 -+ -+# HP Prime -+usb:v03F0p1541* -+ ID_PDA=1 -+ - ########################################################### - # Texas Instruments - ########################################################### diff --git a/SOURCES/0284-hwbd-60-sensor.hwdb-Add-Pipo-W2Pro.patch b/SOURCES/0284-hwbd-60-sensor.hwdb-Add-Pipo-W2Pro.patch deleted file mode 100644 index eaf8dcd..0000000 --- a/SOURCES/0284-hwbd-60-sensor.hwdb-Add-Pipo-W2Pro.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 6b2ea92e5d8c4888b33a2d9f21b830933132d513 Mon Sep 17 00:00:00 2001 -From: Matt Walton -Date: Fri, 4 Feb 2022 11:47:08 -0600 -Subject: [PATCH] hwbd: 60-sensor.hwdb: Add Pipo W2Pro - -Add accelerometer matrix for Pipo W2Pro tablet. Y-axis was backwards (normal <--> bottom-up). - -(cherry picked from commit ec82f867eea000921fa0f93a9adf1f8fd7bfe2c5) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index c4ee7e0c7b..ea278913bc 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -751,6 +751,10 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnPEAQ:pnPEAQPMMC1010MD99187:* - sensor:modalias:acpi:KIOX000A*:dmi:*:svnPIPO:pnW2S:* - ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - -+# Pipo W2Pro -+sensor:modalias:acpi:KIOX0008*:dmi:*svnPIPO:pnW2pro:* -+ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 -+ - # Pipo W4 - sensor:modalias:acpi:SMO8500*:dmi:*:bvrV8L_WIN32_CHIPHD_*_DX:*:rvnAMICorporation:rnAptioCRB:* - ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 diff --git a/SOURCES/0285-hwdb-60-keyboard-Support-the-buttons-on-CZC-P10T-tab.patch b/SOURCES/0285-hwdb-60-keyboard-Support-the-buttons-on-CZC-P10T-tab.patch deleted file mode 100644 index 4563435..0000000 --- a/SOURCES/0285-hwdb-60-keyboard-Support-the-buttons-on-CZC-P10T-tab.patch +++ /dev/null @@ -1,51 +0,0 @@ -From e8de40fbfab79cc86729e13b924251c1af8567ba Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Sun, 22 Jul 2018 00:25:51 +0200 -Subject: [PATCH] hwdb: 60-keyboard: Support the buttons on CZC P10T tablet - -The machine has tree buttons connected to an EC that acts as a regular -AT-compatible keyboard controller. It can be either in "Windows 7" or -"Android" mode. It boots up with the earlier, but the Android build on -the tablet switches it on bootup (Windows presumably leaves it as-is). - -The "Windows 7" mode, the behavior is very inconvenient: the Home button -emits multiple key presses that presumably do something in Windws 7 while -the second button toggles the RF Kill Switch in addition to producing a -scancode (it's labeled "Back" on Android version of the tablet). - -The "Android" mode just sends the good ol' scan codes and this patch -handles them. On mainline Linux, the "x86-android-tablets" driver makes -sure we're in the correct mode. - -(cherry picked from commit f2f11dfbb7f30d279ab3c9b3c84de5496407112d) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 3d6e56983b..66561eac35 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -1891,6 +1891,20 @@ evdev:input:b0003v1038p0310* - KEYBOARD_KEY_7002f=f11 - KEYBOARD_KEY_70046=f6 - -+########################################################### -+# CZC -+########################################################### -+ -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCZC:pnODEON*TPC-10:* -+ KEYBOARD_KEY_01=leftmeta # Home button held for 2s -+ KEYBOARD_KEY_db=prog1 # Home button -+ KEYBOARD_KEY_dd=rfkill # Second button labeled Wi-Fi -+ -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnViewSonic:pnVPAD10:* -+ KEYBOARD_KEY_01=leftmeta # Home button held for 2s -+ KEYBOARD_KEY_db=prog1 # Home button -+ KEYBOARD_KEY_dd=back # Second button labeled Back -+ - ########################################################### - # Other - ########################################################### diff --git a/SOURCES/0286-hwdb-add-CST-Laser-Trackball-22583.patch b/SOURCES/0286-hwdb-add-CST-Laser-Trackball-22583.patch deleted file mode 100644 index e65ccd6..0000000 --- a/SOURCES/0286-hwdb-add-CST-Laser-Trackball-22583.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 67137663f67afa6c7ba9ef29f9b9c2e9288bb0bd Mon Sep 17 00:00:00 2001 -From: prumian <100143890+prumian@users.noreply.github.com> -Date: Tue, 22 Feb 2022 07:47:39 +0100 -Subject: [PATCH] hwdb: add CST Laser Trackball (#22583) - -Set the default to 800DPI as this is what user manual suggests. - -(cherry picked from commit d9ab110ddc453cac40a0b36cee5e5dc272e7aec7) - -Related: #2087778 ---- - hwdb.d/70-mouse.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/70-mouse.hwdb b/hwdb.d/70-mouse.hwdb -index 66e74f667c..723d145e34 100644 ---- a/hwdb.d/70-mouse.hwdb -+++ b/hwdb.d/70-mouse.hwdb -@@ -166,6 +166,14 @@ mouse:bluetooth:v05acp030d:name:*:* - mouse:usb:v04f2p0963:name:Chicony 2.4G Multimedia Wireless Kit:* - MOUSE_DPI=1000@142 - -+########################################## -+# CST -+########################################## -+ -+# CST Laser Trackball -+mouse:usb:v5332p1400:name:Clearly Superior Technologies. CST Laser Trackball:* -+ MOUSE_DPI=400@1000 *800@1000 1600@1000 -+ - ########################################## - # Dell - ########################################## diff --git a/SOURCES/0287-hwdb-Force-release-calculator-key-on-all-HP-OMEN-lap.patch b/SOURCES/0287-hwdb-Force-release-calculator-key-on-all-HP-OMEN-lap.patch deleted file mode 100644 index 1ffad30..0000000 --- a/SOURCES/0287-hwdb-Force-release-calculator-key-on-all-HP-OMEN-lap.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 1730fc33578270d9ee83aec116d014333aacb67f Mon Sep 17 00:00:00 2001 -From: Lan Tian -Date: Tue, 22 Feb 2022 01:43:32 -0600 -Subject: [PATCH] hwdb: Force release calculator key on all HP OMEN laptops - -(cherry picked from commit 70920214b6a1c1825a2724793497e6be2ba3c0fc) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 66561eac35..2606d0b66c 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -719,8 +719,8 @@ evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:*:svnHewlett-Packard:pnHPStr - evdev:name:gpio-keys:phys:gpio-keys/input0:ev:23:dmi:*:svnHewlett-Packard:pnHPStream7Tablet:* - KEYBOARD_KEY_0=unknown - --# HP Omen 15 --evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnOMENLaptop15*:pvr* -+# HP Omen -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnOMEN*:pvr* - KEYBOARD_KEY_a1=!calc - - ########################################################## diff --git a/SOURCES/0288-Add-support-for-NEC-VersaPro-VG-S.patch b/SOURCES/0288-Add-support-for-NEC-VersaPro-VG-S.patch deleted file mode 100644 index c5ee0ad..0000000 --- a/SOURCES/0288-Add-support-for-NEC-VersaPro-VG-S.patch +++ /dev/null @@ -1,36 +0,0 @@ -From ce32478594b4afc26c91ed63eb17c65ca988158c Mon Sep 17 00:00:00 2001 -From: 4piu <16668056+4piu@users.noreply.github.com> -Date: Mon, 7 Mar 2022 16:38:08 +0800 -Subject: [PATCH] Add support for NEC VersaPro VG-S - -The brightness control key (Fn+F7 Fn+F8) and touchpad toggle key (Fn + Space) do not work on the NEC VersaPro VG-S laptop. Add the keycode to fix the problem. - -(cherry picked from commit 19a04e807129e7790a0f2950cf67d79fe0df85cb) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 2606d0b66c..73b26089ab 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -1345,6 +1345,17 @@ evdev:name:MSI Laptop hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnM[iI][cC][rR][oO]-S[tT][a - KEYBOARD_KEY_0213=f22 - KEYBOARD_KEY_0214=f23 - -+########################################## -+# NEC -+########################################## -+ -+# VersaPro VG-S -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnNEC:pnPC-VK22TGSGS:pvr* -+ KEYBOARD_KEY_a8=f21 # Fn+Space touchpad toggle -+ KEYBOARD_KEY_67=brightnessdown # Fn+F7 brightness down -+ KEYBOARD_KEY_65=brightnessup # Fn+F8 brightness up -+ KEYBOARD_KEY_71=battery # Fn+F4 ECO -+ - ########################################################### - # Olimex - ########################################################### diff --git a/SOURCES/0289-Fix-mic-mute-on-Acer-TravelMate-B311-31-22677.patch b/SOURCES/0289-Fix-mic-mute-on-Acer-TravelMate-B311-31-22677.patch deleted file mode 100644 index 7419d46..0000000 --- a/SOURCES/0289-Fix-mic-mute-on-Acer-TravelMate-B311-31-22677.patch +++ /dev/null @@ -1,29 +0,0 @@ -From ecf8c93eb9f181822c277746c729ab1545079c7d Mon Sep 17 00:00:00 2001 -From: tawefogo <101180464+tawefogo@users.noreply.github.com> -Date: Tue, 8 Mar 2022 15:10:51 +0100 -Subject: [PATCH] Fix mic mute on Acer TravelMate B311-31 (#22677) - -(cherry picked from commit 6c5f368646c5de893d5cf05eb9a4a3892bc8228d) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 73b26089ab..780ed6183e 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -164,6 +164,12 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnPredator*PH*315-52:* - KEYBOARD_KEY_ef=kbdillumup # Fn+F10 - KEYBOARD_KEY_f0=kbdillumdown # Fn+F9 - -+# Travelmate B311-31, B311R-31, B311RN-31 -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMateB311-31*:pvr* -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMateB311R-31*:pvr* -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMateB311RN-31*:pvr* -+ KEYBOARD_KEY_8a=f20 # Microphone mute -+ - # Travelmate C300 - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:* - KEYBOARD_KEY_67=f24 # FIXME: rotate screen diff --git a/SOURCES/0290-Add-AV-production-controllers-to-hwdb-and-add-uacces.patch b/SOURCES/0290-Add-AV-production-controllers-to-hwdb-and-add-uacces.patch deleted file mode 100644 index 3093d6b..0000000 --- a/SOURCES/0290-Add-AV-production-controllers-to-hwdb-and-add-uacces.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 41d06ed98ecbe4f65cfffc3877fbe4c87fadc6b4 Mon Sep 17 00:00:00 2001 -From: Be -Date: Fri, 27 Aug 2021 22:30:50 -0500 -Subject: [PATCH] Add AV production controllers to hwdb and add uaccess - -This adds support for AV production controller devices, such -as DJ tables, music-oriented key pads, and others. - -The USB vendor and product IDs come from Mixxx, Ctlra, and -Ardour. - -Fixes #20533 - -Co-developed-by: Georges Basile Stavracas Neto -(cherry picked from commit f2c36c0e2445fa95ba109017d4b768b2fd825c43) - -Related: #2087778 ---- - hwdb.d/70-av-production.hwdb | 123 ++++++++++++++++++++++++++++++++++ - hwdb.d/meson.build | 1 + - hwdb.d/parse_hwdb.py | 1 + - src/login/70-uaccess.rules.in | 9 +++ - 4 files changed, 134 insertions(+) - create mode 100644 hwdb.d/70-av-production.hwdb - -diff --git a/hwdb.d/70-av-production.hwdb b/hwdb.d/70-av-production.hwdb -new file mode 100644 -index 0000000000..17ac1b4fb6 ---- /dev/null -+++ b/hwdb.d/70-av-production.hwdb -@@ -0,0 +1,123 @@ -+# This file is part of systemd. -+# -+# Database for AV production controllers that should be accessible to the seat owner. -+# -+# This covers DJ tables, and music-oriented key pads -+# -+# To add local entries, copy this file to -+# /etc/udev/hwdb.d/ -+# and add your rules there. To load the new rules execute (as root): -+# systemd-hwdb update -+# udevadm trigger -+ -+################ -+# Ableton -+################ -+# Push 2 -+usb:v2982p1967* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+################ -+# Eks -+################ -+# Otus -+usb:v1157p0300* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+############################# -+# Hercules (Guillemot Corp) -+############################# -+# DJ Console MP3e2 -+usb:v06F8pB105* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# DJ Console MP3 LE / Glow -+usb:v06F8pB120* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# DJ Console Mk2 -+usb:v06F8pB100* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# DJ Console Mk4 -+usb:v06F8pB107* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+##################### -+# Native Instruments -+##################### -+ -+# Maschine 2 -+usb:v17CCp1140* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Maschine 2 Mikro -+usb:v17CCp1110* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Maschine 2 Studio -+usb:v17CCp1300* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Maschine Jam -+usb:v17CCp1500* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Maschine 3 -+usb:v17CCp1600* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol D2 -+usb:v17CCp1400* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol F1 -+usb:v17CCp1120* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S2 Mk2 -+usb:v17CCp1320* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S2 Mk3 -+usb:v17CCp1710* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S3 -+usb:v17CCp1900* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S4 Mk2 -+usb:v17CCp1310* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S4 Mk3 -+usb:v17CCp1720* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S5 -+usb:v17CCp1420* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol S8 -+usb:v17CCp1370* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol X1 Mk2 -+usb:v17CCp1220* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol Z1 -+usb:v17CCp1210* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Traktor Kontrol Z2 -+usb:v17CCp1130* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+#################### -+# Pioneer -+#################### -+# CDJ 2000 NXS 2 -+usb:v2B73p0005* -+ ID_AV_PRODUCTION_CONTROLLER=1 -diff --git a/hwdb.d/meson.build b/hwdb.d/meson.build -index fc72ebb2bd..8f6a8a4486 100644 ---- a/hwdb.d/meson.build -+++ b/hwdb.d/meson.build -@@ -28,6 +28,7 @@ hwdb_files_test = files(''' - 60-seat.hwdb - 60-sensor.hwdb - 70-analyzers.hwdb -+ 70-av-production.hwdb - 70-cameras.hwdb - 70-joystick.hwdb - 70-mouse.hwdb -diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py -index 194a71ac08..93179b675c 100755 ---- a/hwdb.d/parse_hwdb.py -+++ b/hwdb.d/parse_hwdb.py -@@ -135,6 +135,7 @@ def property_grammar(): - ('MOUSE_WHEEL_CLICK_COUNT', INTEGER), - ('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER), - ('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))), -+ ('ID_AV_PRODUCTION_CONTROLLER', Or((Literal('0'), Literal('1')))), - ('ID_PERSIST', Or((Literal('0'), Literal('1')))), - ('ID_PDA', Or((Literal('0'), Literal('1')))), - ('ID_INPUT', Or((Literal('0'), Literal('1')))), -diff --git a/src/login/70-uaccess.rules.in b/src/login/70-uaccess.rules.in -index 052194b6c9..a3301be1bc 100644 ---- a/src/login/70-uaccess.rules.in -+++ b/src/login/70-uaccess.rules.in -@@ -87,4 +87,13 @@ ENV{ID_SIGNAL_ANALYZER}=="?*", ENV{DEVTYPE}=="usb_device", TAG+="uaccess" - # rfkill / radio killswitches - KERNEL=="rfkill", SUBSYSTEM=="misc", TAG+="uaccess" - -+# AV production controllers -+# Most of these devices use HID for the knobs, faders, buttons, encoders, and jog wheels. -+SUBSYSTEM=="hidraw", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" -+ -+# Some devices use vendor defined protocols on USB Bulk endpoints for controllers. -+# Other devices transfer graphics to screens on the device through USB Bulk endpoints. -+# This also allows accessing HID devices with the libusb backend of hidapi. -+SUBSYSTEM=="usb", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" -+ - LABEL="uaccess_end" diff --git a/SOURCES/0291-hwdb-Add-AV-production-access-to-Elgado-Stream-Deck-.patch b/SOURCES/0291-hwdb-Add-AV-production-access-to-Elgado-Stream-Deck-.patch deleted file mode 100644 index 691a613..0000000 --- a/SOURCES/0291-hwdb-Add-AV-production-access-to-Elgado-Stream-Deck-.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 3467ee329568bf6a1b37de9c37ba914adf436291 Mon Sep 17 00:00:00 2001 -From: Georges Basile Stavracas Neto -Date: Mon, 14 Mar 2022 10:50:45 -0300 -Subject: [PATCH] hwdb: Add AV production access to Elgado Stream Deck devices - -The Stream Deck products from Elgato are simple key pads -intended to be used as macro pads. They're popular within -the streaming community. - -This commit adds all 5 Stream Deck variants available to -the AV production file. - -See https://www.elgato.com/en/stream-deck - -(cherry picked from commit e982320b44486b26c4d39f7c81012f6a0e2aaf77) - -Related: #2087778 ---- - hwdb.d/70-av-production.hwdb | 26 +++++++++++++++++++++++++- - 1 file changed, 25 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/70-av-production.hwdb b/hwdb.d/70-av-production.hwdb -index 17ac1b4fb6..a13d6981eb 100644 ---- a/hwdb.d/70-av-production.hwdb -+++ b/hwdb.d/70-av-production.hwdb -@@ -2,7 +2,8 @@ - # - # Database for AV production controllers that should be accessible to the seat owner. - # --# This covers DJ tables, and music-oriented key pads -+# This covers DJ tables, music-oriented key pads, and streaming-oriented key pads -+# such as Elgato Stream Deck - # - # To add local entries, copy this file to - # /etc/udev/hwdb.d/ -@@ -24,6 +25,29 @@ usb:v2982p1967* - usb:v1157p0300* - ID_AV_PRODUCTION_CONTROLLER=1 - -+################ -+# Elgato -+################ -+# Stream Deck Original (gen 1) -+usb:v0FD9p0060* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Stream Deck Mini -+usb:v0FD9p0063* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Stream Deck XL -+usb:v0FD9p006C* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Stream Deck Original (gen 2) -+usb:v0FD9p006D* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ -+# Stream Deck MK.2 -+usb:v0FD9p0080* -+ ID_AV_PRODUCTION_CONTROLLER=1 -+ - ############################# - # Hercules (Guillemot Corp) - ############################# diff --git a/SOURCES/0292-Add-HP-Elitebook-2760p-support-22766.patch b/SOURCES/0292-Add-HP-Elitebook-2760p-support-22766.patch deleted file mode 100644 index a0bfbbb..0000000 --- a/SOURCES/0292-Add-HP-Elitebook-2760p-support-22766.patch +++ /dev/null @@ -1,35 +0,0 @@ -From aaca6dc45b898607afea3bf3d50ba7120458b054 Mon Sep 17 00:00:00 2001 -From: AlexCatze -Date: Fri, 18 Mar 2022 14:45:43 +0200 -Subject: [PATCH] Add HP Elitebook 2760p support (#22766) - -(cherry picked from commit 1a34f913a6cfa22abfb6b3f69e2ba20112e19d87) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 780ed6183e..eeadd1a059 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -602,6 +602,18 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*G60*Notebook*PC:* - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2570p*:* - KEYBOARD_KEY_f8=wlan # Wireless HW switch button - -+# Elitebook 2760p -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2760p*:* -+ KEYBOARD_KEY_89=battery # Fn+F8 -+ KEYBOARD_KEY_f8=unknown # rfkill is also reported by HP Wireless hotkeys -+ KEYBOARD_KEY_86=volumeup -+ KEYBOARD_KEY_87=volumedown -+ KEYBOARD_KEY_92=brightnessdown -+ KEYBOARD_KEY_97=brightnessup -+ KEYBOARD_KEY_d8=!f23 # touchpad off -+ KEYBOARD_KEY_d9=!f22 # touchpad on -+ KEYBOARD_KEY_b3=unknown # FIXME: Auto brightness -+ - # TX2 - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][xX]2*:* - KEYBOARD_KEY_c2=media diff --git a/SOURCES/0293-hwdb-Add-mic-mute-key-mapping-for-HP-Elite-x360.patch b/SOURCES/0293-hwdb-Add-mic-mute-key-mapping-for-HP-Elite-x360.patch deleted file mode 100644 index 4646e72..0000000 --- a/SOURCES/0293-hwdb-Add-mic-mute-key-mapping-for-HP-Elite-x360.patch +++ /dev/null @@ -1,30 +0,0 @@ -From bfb6b8e75721c0d56d3a9ea8561f50f0f820b8a3 Mon Sep 17 00:00:00 2001 -From: Andy Chi -Date: Tue, 29 Mar 2022 15:36:13 +0800 -Subject: [PATCH] hwdb: Add mic mute key mapping for HP Elite x360 - -On the new Elite x360 2 in 1 HP laptops, the microphone mute hotkey is "Fn+F8" and -the scancode for this hotkey is 0x81, but this scancode was mapped to -fn_esc in the HP generic keymap section. To fix this problem, we add -a machine specific keymap section to add the correct keymap rule. - -(cherry picked from commit f09f6dc2c8f59b2b58159cc413b605a547c8646e) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index eeadd1a059..c196a1fd64 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -651,6 +651,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPLicrice:* - # HP EliteBook - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPEliteBook*:* - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook*:* -+# HP Elite x360 -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPElite*x360*:* - # HP Elite Dragonfly - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonfly*:* - # HP ProBook 440 G2 diff --git a/SOURCES/0294-hwdb-fix-parser-to-work-with-newer-pyparsing.patch b/SOURCES/0294-hwdb-fix-parser-to-work-with-newer-pyparsing.patch deleted file mode 100644 index 77c475b..0000000 --- a/SOURCES/0294-hwdb-fix-parser-to-work-with-newer-pyparsing.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 72d3b0c995403293f65ee9a47043ebd2fdafc1cd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 29 Mar 2022 12:17:51 +0200 -Subject: [PATCH] hwdb: fix parser to work with newer pyparsing - -The handling of whitespace in pyparsing is a bother. There's some -global state, and per-element state, and it's hard to get a handle on -things. With python3-pyparsing-2.4.7-10.fc36.noarch the grammar would -not match. After handling of tabs was fixed to not accept duplicate tabs, -the grammar passes. - -It seems that the entry for usb:v8087p8087* -was generated incorrectly because we treated the interface line -(with two TABs) as a device line (with one TAB). - -(cherry picked from commit f73d6895872cb9caffc523e1eddc53c9b98cfdec) - -Related: #2087778 ---- - hwdb.d/20-usb-vendor-model.hwdb | 3 --- - hwdb.d/ids_parser.py | 10 ++++++++-- - 2 files changed, 8 insertions(+), 5 deletions(-) - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index f40a3947c7..9f457d9f65 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -69815,9 +69815,6 @@ usb:v8087p8008* - usb:v8087p800A* - ID_MODEL_FROM_DATABASE=Hub - --usb:v8087p8087* -- ID_MODEL_FROM_DATABASE=07da Centrino Advanced-N 6235 -- - usb:v80EE* - ID_VENDOR_FROM_DATABASE=VirtualBox - -diff --git a/hwdb.d/ids_parser.py b/hwdb.d/ids_parser.py -index 0ce79cd97e..811c12559b 100755 ---- a/hwdb.d/ids_parser.py -+++ b/hwdb.d/ids_parser.py -@@ -6,7 +6,7 @@ import sys - from pyparsing import (Word, White, Literal, Regex, - LineEnd, SkipTo, - ZeroOrMore, OneOrMore, Combine, Optional, Suppress, -- Group, -+ Group, ParserElement, - stringEnd, pythonStyleComment) - - EOL = LineEnd().suppress() -@@ -20,6 +20,8 @@ COMMENTLINE = pythonStyleComment + EOL - EMPTYLINE = LineEnd() - text_eol = lambda name: Regex(r'[^\n]+')(name) + EOL - -+ParserElement.set_default_whitespace_chars(' \n') -+ - def klass_grammar(): - klass_line = Literal('C ').suppress() + NUM2('klass') + text_eol('text') - subclass_line = TAB + NUM2('subclass') + text_eol('text') -@@ -35,8 +37,12 @@ def klass_grammar(): - def usb_ids_grammar(): - vendor_line = NUM4('vendor') + text_eol('text') - device_line = TAB + NUM4('device') + text_eol('text') -+ interface_line = TAB + TAB + NUM4('interface') + NUM4('interface2') + text_eol('text') -+ device = (device_line + -+ ZeroOrMore(Group(interface_line) -+ ^ COMMENTLINE.suppress())) - vendor = (vendor_line('VENDOR') + -- ZeroOrMore(Group(device_line)('VENDOR_DEV*') ^ COMMENTLINE.suppress())) -+ ZeroOrMore(Group(device)('VENDOR_DEV*') ^ COMMENTLINE.suppress())) - - klass = klass_grammar() - diff --git a/SOURCES/0295-hwdb-update-for-v251.patch b/SOURCES/0295-hwdb-update-for-v251.patch deleted file mode 100644 index 0dd6528..0000000 --- a/SOURCES/0295-hwdb-update-for-v251.patch +++ /dev/null @@ -1,16379 +0,0 @@ -From dec0bd75d3163e45086825bb28b99fce94b8c8d3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 9 Dec 2021 11:05:15 +0100 -Subject: [PATCH] hwdb: update for v251 - -As usual, there are mostly additions of new entries, and some spelling -correction and company renames, no big removals. - -(cherry picked from commit c53e6f641eb763e9cb7762c106d8ce000591000e) - -Related: #2087778 ---- - hwdb.d/20-OUI.hwdb | 2415 ++++++++++++++++++- - hwdb.d/20-acpi-vendor.hwdb | 18 + - hwdb.d/20-acpi-vendor.hwdb.patch | 98 +- - hwdb.d/20-pci-classes.hwdb | 2 +- - hwdb.d/20-pci-vendor-model.hwdb | 724 +++++- - hwdb.d/20-usb-vendor-model.hwdb | 94 +- - hwdb.d/acpi_id_registry.html | 3 + - hwdb.d/ma-large.txt | 3713 +++++++++++++++++++++++++++--- - hwdb.d/ma-medium.txt | 998 +++++++- - hwdb.d/ma-small.txt | 966 +++++++- - hwdb.d/pci.ids | 300 ++- - hwdb.d/pnp_id_registry.html | 3 + - hwdb.d/usb.ids | 51 +- - 13 files changed, 8782 insertions(+), 603 deletions(-) - -diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb -index a97406d45d..4b8f83cc99 100644 ---- a/hwdb.d/20-OUI.hwdb -+++ b/hwdb.d/20-OUI.hwdb -@@ -573,7 +573,7 @@ OUI:0000BC* - ID_OUI_FROM_DATABASE=Rockwell Automation - - OUI:0000BD* -- ID_OUI_FROM_DATABASE=Mitsubishi Cable Industries, Ltd. / Ryosei Systems -+ ID_OUI_FROM_DATABASE=RYOSEI, Ltd. - - OUI:0000BE* - ID_OUI_FROM_DATABASE=THE NTI GROUP -@@ -10413,7 +10413,7 @@ OUI:000DA8* - ID_OUI_FROM_DATABASE=Teletronics Technology Corporation - - OUI:000DA9* -- ID_OUI_FROM_DATABASE=T.E.A.M. S.L. -+ ID_OUI_FROM_DATABASE=INGETEAM - - OUI:000DAA* - ID_OUI_FROM_DATABASE=S.A.Tehnology co.,Ltd. -@@ -11922,7 +11922,7 @@ OUI:000F9F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - - OUI:000FA0* -- ID_OUI_FROM_DATABASE=CANON KOREA BUSINESS SOLUTIONS INC. -+ ID_OUI_FROM_DATABASE=Canon Korea Inc. - - OUI:000FA1* - ID_OUI_FROM_DATABASE=Gigabit Systems Inc. -@@ -14187,7 +14187,7 @@ OUI:001292* - ID_OUI_FROM_DATABASE=Griffin Technology - - OUI:001293* -- ID_OUI_FROM_DATABASE=ABB Power Protection (CH) -+ ID_OUI_FROM_DATABASE=ABB Switzerland Ltd. - - OUI:001294* - ID_OUI_FROM_DATABASE=SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC -@@ -14961,7 +14961,7 @@ OUI:001394* - ID_OUI_FROM_DATABASE=Infohand Co.,Ltd - - OUI:001395* -- ID_OUI_FROM_DATABASE=congatec AG -+ ID_OUI_FROM_DATABASE=congatec GmbH - - OUI:001396* - ID_OUI_FROM_DATABASE=Acbel Polytech Inc. -@@ -15054,7 +15054,7 @@ OUI:0013B3* - ID_OUI_FROM_DATABASE=Ecom Communications Technology Co., Ltd. - - OUI:0013B4* -- ID_OUI_FROM_DATABASE=Appear TV -+ ID_OUI_FROM_DATABASE=Appear AS - - OUI:0013B5* - ID_OUI_FROM_DATABASE=Wavesat -@@ -17307,7 +17307,7 @@ OUI:0016A2* - ID_OUI_FROM_DATABASE=CentraLite Systems, Inc. - - OUI:0016A3* -- ID_OUI_FROM_DATABASE=Ingeteam Transmission&Distribution, S.A. -+ ID_OUI_FROM_DATABASE=INGETEAM - - OUI:0016A4* - ID_OUI_FROM_DATABASE=Ezurio Ltd -@@ -29529,7 +29529,7 @@ OUI:0025C9* - ID_OUI_FROM_DATABASE=SHENZHEN HUAPU DIGITAL CO., LTD - - OUI:0025CA* -- ID_OUI_FROM_DATABASE=LS Research, LLC -+ ID_OUI_FROM_DATABASE=Laird Connectivity - - OUI:0025CB* - ID_OUI_FROM_DATABASE=Reiner SCT -@@ -29700,7 +29700,7 @@ OUI:002603* - ID_OUI_FROM_DATABASE=Shenzhen Wistar Technology Co., Ltd - - OUI:002604* -- ID_OUI_FROM_DATABASE=Audio Processing Technology Ltd -+ ID_OUI_FROM_DATABASE=WorldCast Systems - - OUI:002605* - ID_OUI_FROM_DATABASE=CC Systems AB -@@ -35768,6 +35768,9 @@ OUI:009569* - OUI:0097FF* - ID_OUI_FROM_DATABASE=Heimann Sensor GmbH - -+OUI:00991D* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:009ACD* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -36563,6 +36566,9 @@ OUI:00A0FF* - OUI:00A1DE* - ID_OUI_FROM_DATABASE=ShenZhen ShiHua Technology CO.,LTD - -+OUI:00A265* -+ ID_OUI_FROM_DATABASE=M2Motive Technology Inc. -+ - OUI:00A289* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -36593,6 +36599,9 @@ OUI:00A45F* - OUI:00A509* - ID_OUI_FROM_DATABASE=WigWag Inc. - -+OUI:00A554* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:00A5BF* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -37694,6 +37703,9 @@ OUI:00CB00* - OUI:00CB51* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:00CB7A* -+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. -+ - OUI:00CBB4* - ID_OUI_FROM_DATABASE=SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD - -@@ -38507,6 +38519,9 @@ OUI:00D318* - OUI:00D38D* - ID_OUI_FROM_DATABASE=Hotel Technology Next Generation - -+OUI:00D49E* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:00D632* - ID_OUI_FROM_DATABASE=GE Energy - -@@ -39401,6 +39416,9 @@ OUI:00E421* - OUI:00E5E4* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD - -+OUI:00E5F1* -+ ID_OUI_FROM_DATABASE=BUFFALO.INC -+ - OUI:00E666* - ID_OUI_FROM_DATABASE=ARIMA Communications Corp. - -@@ -39728,6 +39746,9 @@ OUI:0425C5* - OUI:0425E0* - ID_OUI_FROM_DATABASE=Taicang T&W Electronics - -+OUI:0425F0* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:042605* - ID_OUI_FROM_DATABASE=GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH - -@@ -39932,6 +39953,9 @@ OUI:046273* - OUI:0462D7* - ID_OUI_FROM_DATABASE=ALSTOM HYDRO FRANCE - -+OUI:0463D0* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:0463E0* - ID_OUI_FROM_DATABASE=Nome Oy - -@@ -39944,6 +39968,9 @@ OUI:046785* - OUI:046865* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:04698F* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:0469F8* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -40061,6 +40088,9 @@ OUI:047AAE* - OUI:047BCB* - ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd. - -+OUI:047C16* -+ ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD. -+ - OUI:047D50* - ID_OUI_FROM_DATABASE=Shenzhen Kang Ying Technology Co.Ltd. - -@@ -40151,6 +40181,9 @@ OUI:0498F3* - OUI:0499B9* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:0499BB* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:0499E6* - ID_OUI_FROM_DATABASE=Shenzhen Yoostar Technology Co., Ltd - -@@ -40226,9 +40259,15 @@ OUI:04B466* - OUI:04B648* - ID_OUI_FROM_DATABASE=ZENNER - -+OUI:04B6BE* -+ ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD -+ - OUI:04B86A* - ID_OUI_FROM_DATABASE=BSkyB Ltd - -+OUI:04B97D* -+ ID_OUI_FROM_DATABASE=AiVIS Co., Itd. -+ - OUI:04B9E3* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -40241,12 +40280,18 @@ OUI:04BA36* - OUI:04BA8D* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:04BAD6* -+ ID_OUI_FROM_DATABASE=D-Link Corporation -+ - OUI:04BBF9* - ID_OUI_FROM_DATABASE=Pavilion Data Systems Inc - - OUI:04BC87* - ID_OUI_FROM_DATABASE=Shenzhen JustLink Technology Co., LTD - -+OUI:04BC9F* -+ ID_OUI_FROM_DATABASE=Calix Inc. -+ - OUI:04BD70* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -40517,6 +40562,9 @@ OUI:04E229* - OUI:04E2F8* - ID_OUI_FROM_DATABASE=AEP Ticketing solutions srl - -+OUI:04E31A* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:04E451* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -40547,6 +40595,9 @@ OUI:04E77E* - OUI:04E795* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:04E892* -+ ID_OUI_FROM_DATABASE=SHENNAN CIRCUITS CO.,LTD -+ - OUI:04E9E5* - ID_OUI_FROM_DATABASE=PJRC.COM, LLC - -@@ -41274,7 +41325,7 @@ OUI:0826AE9* - ID_OUI_FROM_DATABASE=Annapurna labs - - OUI:0826AEA* -- ID_OUI_FROM_DATABASE=Flextronics International Kft. -+ ID_OUI_FROM_DATABASE=Flextronics International Kft - - OUI:0826AEB* - ID_OUI_FROM_DATABASE=F-Plus Mobile LLC -@@ -41318,6 +41369,9 @@ OUI:082FE9* - OUI:08306B* - ID_OUI_FROM_DATABASE=Palo Alto Networks - -+OUI:0830CE* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:08318B* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -41432,6 +41486,9 @@ OUI:084FA9* - OUI:084FF9* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:085104* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:085114* - ID_OUI_FROM_DATABASE=QINGDAO TOPSCOMM COMMUNICATION CO., LTD - -@@ -41891,6 +41948,9 @@ OUI:08E4DF* - OUI:08E5DA* - ID_OUI_FROM_DATABASE=NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD. - -+OUI:08E63B* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:08E672* - ID_OUI_FROM_DATABASE=JEBSEE ELECTRONICS CO.,LTD. - -@@ -41921,6 +41981,9 @@ OUI:08EB74* - OUI:08EBED* - ID_OUI_FROM_DATABASE=World Elite Technology Co.,LTD - -+OUI:08EBF6* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:08ECA9* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -42521,12 +42584,18 @@ OUI:0C771A* - OUI:0C7A15* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:0C7BC8* -+ ID_OUI_FROM_DATABASE=Cisco Meraki -+ - OUI:0C7C28* - ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG - - OUI:0C7D7C* - ID_OUI_FROM_DATABASE=Kexiang Information Technology Co, Ltd. - -+OUI:0C7FB2* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:0C8063* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -42575,6 +42644,54 @@ OUI:0C8525* - OUI:0C8610* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:0C86290* -+ ID_OUI_FROM_DATABASE=Shanghai Prophet Electronic Technology Co.,Ltd -+ -+OUI:0C86291* -+ ID_OUI_FROM_DATABASE=Beijing Qinmu Data Technology Co., Ltd. -+ -+OUI:0C86292* -+ ID_OUI_FROM_DATABASE=BADA SYSTEM co., Ltd -+ -+OUI:0C86293* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:0C86294* -+ ID_OUI_FROM_DATABASE=Ag Express Electronics -+ -+OUI:0C86295* -+ ID_OUI_FROM_DATABASE=Shenzhen protostellar technology Co., Ltd -+ -+OUI:0C86296* -+ ID_OUI_FROM_DATABASE=C&A Marketing, INC. -+ -+OUI:0C86297* -+ ID_OUI_FROM_DATABASE=HagerEnergy GmbH -+ -+OUI:0C86298* -+ ID_OUI_FROM_DATABASE=MyGregor Ltd -+ -+OUI:0C86299* -+ ID_OUI_FROM_DATABASE=HONGKONG SAINT TECH INDUSTRIAL LIMITED -+ -+OUI:0C8629A* -+ ID_OUI_FROM_DATABASE=Nipron Co.,Ltd -+ -+OUI:0C8629B* -+ ID_OUI_FROM_DATABASE=Akribis Systems -+ -+OUI:0C8629C* -+ ID_OUI_FROM_DATABASE=SHENZHEN YINGMU TECHNOLOGY.,LTD -+ -+OUI:0C8629D* -+ ID_OUI_FROM_DATABASE=BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD -+ -+OUI:0C8629E* -+ ID_OUI_FROM_DATABASE=FX TECHNOLOGY LIMITED -+ -+OUI:0C86C7* -+ ID_OUI_FROM_DATABASE=Jabil Circuit (Guangzhou) Limited -+ - OUI:0C8910* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -42584,6 +42701,9 @@ OUI:0C8A87* - OUI:0C8B7D* - ID_OUI_FROM_DATABASE=Vizio, Inc - -+OUI:0C8B95* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:0C8BD3* - ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED - -@@ -42647,6 +42767,9 @@ OUI:0C96CD* - OUI:0C96E6* - ID_OUI_FROM_DATABASE=Cloud Network Technology (Samoa) Limited - -+OUI:0C975F* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:0C9838* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -42695,6 +42818,9 @@ OUI:0CAAEE* - OUI:0CAC05* - ID_OUI_FROM_DATABASE=Unitend Technologies Inc. - -+OUI:0CAC8A* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:0CAE7D* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -43127,6 +43253,9 @@ OUI:100645* - OUI:1006ED* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:10071D* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:1007230* - ID_OUI_FROM_DATABASE=RippleTek Tech Ltd - -@@ -43274,6 +43403,9 @@ OUI:101F74* - OUI:102279* - ID_OUI_FROM_DATABASE=ZeroDesktop, Inc. - -+OUI:102407* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:102779* - ID_OUI_FROM_DATABASE=Sadel S.p.A. - -@@ -43436,6 +43568,9 @@ OUI:104A7D* - OUI:104B46* - ID_OUI_FROM_DATABASE=Mitsubishi Electric Corporation - -+OUI:104D15* -+ ID_OUI_FROM_DATABASE=Viaanix Inc -+ - OUI:104D77* - ID_OUI_FROM_DATABASE=Innovative Computer Engineering - -@@ -43466,6 +43601,12 @@ OUI:10521C* - OUI:105403* - ID_OUI_FROM_DATABASE=INTARSO GmbH - -+OUI:1054D20* -+ ID_OUI_FROM_DATABASE=GIPS Technology Co., Ltd. -+ -+OUI:1054D21* -+ ID_OUI_FROM_DATABASE=Jiangxi Ofilm&Jvneng IoT Tech Co., Ltd. -+ - OUI:1054D22* - ID_OUI_FROM_DATABASE=ComNav Technology Ltd. - -@@ -43475,6 +43616,12 @@ OUI:1054D23* - OUI:1054D24* - ID_OUI_FROM_DATABASE=Raylogic Control Systems Private Limited - -+OUI:1054D25* -+ ID_OUI_FROM_DATABASE=Sybersense -+ -+OUI:1054D26* -+ ID_OUI_FROM_DATABASE=Lanao Communication Technology Limited -+ - OUI:1054D27* - ID_OUI_FROM_DATABASE=SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD - -@@ -43484,6 +43631,9 @@ OUI:1054D28* - OUI:1054D29* - ID_OUI_FROM_DATABASE=Bamboo Dynamics Corporation., Ltd. - -+OUI:1054D2A* -+ ID_OUI_FROM_DATABASE=Embion B.V. -+ - OUI:1054D2B* - ID_OUI_FROM_DATABASE=Shenzhen Dinstech Technology Co.,Ltd. - -@@ -43493,6 +43643,9 @@ OUI:1054D2C* - OUI:1054D2D* - ID_OUI_FROM_DATABASE=Sun wealth technology corporation limited - -+OUI:1054D2E* -+ ID_OUI_FROM_DATABASE=COSMO AIOT TECHNOLOGY CO LTD -+ - OUI:1055E4* - ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd - -@@ -43553,6 +43706,9 @@ OUI:1062E5* - OUI:1062EB* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:10634B* -+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+ - OUI:1063C8* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -43589,6 +43745,9 @@ OUI:1070FD* - OUI:107100* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:1071B3* -+ ID_OUI_FROM_DATABASE=Zyxel Communications Corporation -+ - OUI:1071F9* - ID_OUI_FROM_DATABASE=Cloud Telecomputers, LLC - -@@ -43706,6 +43865,9 @@ OUI:1094BB* - OUI:10954B* - ID_OUI_FROM_DATABASE=Megabyte Ltd. - -+OUI:10961A* -+ ID_OUI_FROM_DATABASE=CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. -+ - OUI:109693* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -43757,6 +43919,9 @@ OUI:10A4DA* - OUI:10A51D* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:10A562* -+ ID_OUI_FROM_DATABASE=Iton Technology Corp. -+ - OUI:10A5D0* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. - -@@ -43784,6 +43949,9 @@ OUI:10B1DF* - OUI:10B1F8* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:10B232* -+ ID_OUI_FROM_DATABASE=Qingdao Intelligent&Precise Electronics Co.,Ltd. -+ - OUI:10B26B* - ID_OUI_FROM_DATABASE=base Co.,Ltd. - -@@ -43940,6 +44108,9 @@ OUI:10D7B0* - OUI:10DA43* - ID_OUI_FROM_DATABASE=NETGEAR - -+OUI:10DA49* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:10DC4A* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -@@ -44003,6 +44174,9 @@ OUI:10DF8B* - OUI:10DFFC* - ID_OUI_FROM_DATABASE=Siemens AG - -+OUI:10E177* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:10E2D5* - ID_OUI_FROM_DATABASE=Qi Hardware Inc. - -@@ -44051,6 +44225,9 @@ OUI:10EED9* - OUI:10F005* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:10F068* -+ ID_OUI_FROM_DATABASE=Ruckus Wireless -+ - OUI:10F163* - ID_OUI_FROM_DATABASE=TNK CO.,LTD - -@@ -44069,6 +44246,9 @@ OUI:10F49A* - OUI:10F605* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:10F60A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:10F681* - ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. - -@@ -44165,6 +44345,9 @@ OUI:141114* - OUI:14115D* - ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd - -+OUI:14130B* -+ ID_OUI_FROM_DATABASE=Garmin International -+ - OUI:141330* - ID_OUI_FROM_DATABASE=Anakreon UK LLP - -@@ -44318,6 +44501,9 @@ OUI:142C78* - OUI:142D27* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:142D4D* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:142D8B* - ID_OUI_FROM_DATABASE=Incipio Technologies, Inc - -@@ -44405,6 +44591,9 @@ OUI:144319* - OUI:14444A* - ID_OUI_FROM_DATABASE=Apollo Seiko Ltd. - -+OUI:14448F* -+ ID_OUI_FROM_DATABASE=Edgecore Networks Corporation -+ - OUI:144658* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -44546,6 +44735,9 @@ OUI:145A83* - OUI:145AFC* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -+OUI:145BB9* -+ ID_OUI_FROM_DATABASE=ConMet -+ - OUI:145BD1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -44603,6 +44795,9 @@ OUI:147373* - OUI:147411* - ID_OUI_FROM_DATABASE=RIM - -+OUI:14755B* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:147590* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -44693,6 +44888,9 @@ OUI:14942F* - OUI:149448* - ID_OUI_FROM_DATABASE=BLU CASTLE S.A. - -+OUI:14946C* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:1495CE* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -44717,6 +44915,9 @@ OUI:149B2F* - OUI:149BD7* - ID_OUI_FROM_DATABASE=MULI MUWAI FURNITURE QIDONG CO., LTD - -+OUI:149BF3* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:149D09* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -45023,12 +45224,18 @@ OUI:14EFCF* - OUI:14F0C5* - ID_OUI_FROM_DATABASE=Xtremio Ltd. - -+OUI:14F287* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:14F28E* - ID_OUI_FROM_DATABASE=ShenYang ZhongKe-Allwin Technology Co.LTD - - OUI:14F42A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:14F592* -+ ID_OUI_FROM_DATABASE=Shenzhen SDG DONZHI Technology Co., Ltd -+ - OUI:14F65A* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -45242,6 +45449,9 @@ OUI:18339D* - OUI:183451* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:1834AF* -+ ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. -+ - OUI:1835D1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -45278,6 +45488,9 @@ OUI:183A48* - OUI:183BD2* - ID_OUI_FROM_DATABASE=BYD Precision Manufacture Company Ltd. - -+OUI:183C98* -+ ID_OUI_FROM_DATABASE=Shenzhen Hengyi Technology Co., LTD -+ - OUI:183CB7* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -45518,6 +45731,9 @@ OUI:1866DA* - OUI:1866E3* - ID_OUI_FROM_DATABASE=Veros Systems, Inc. - -+OUI:1866F0* -+ ID_OUI_FROM_DATABASE=Jupiter Systems -+ - OUI:18673F* - ID_OUI_FROM_DATABASE=Hanover Displays Limited - -@@ -45536,6 +45752,9 @@ OUI:186882* - OUI:1868CB* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -+OUI:1869D4* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:1869D8* - ID_OUI_FROM_DATABASE=Tuya Smart Inc. - -@@ -45806,6 +46025,51 @@ OUI:18A3E8* - OUI:18A4A9* - ID_OUI_FROM_DATABASE=Vanu Inc. - -+OUI:18A59C0* -+ ID_OUI_FROM_DATABASE=Omwave -+ -+OUI:18A59C1* -+ ID_OUI_FROM_DATABASE=Cuman -+ -+OUI:18A59C2* -+ ID_OUI_FROM_DATABASE=Actiontec Electronics Inc. -+ -+OUI:18A59C3* -+ ID_OUI_FROM_DATABASE=Beijing QS Medical Technology Co., Ltd. -+ -+OUI:18A59C4* -+ ID_OUI_FROM_DATABASE=IT-1 -+ -+OUI:18A59C5* -+ ID_OUI_FROM_DATABASE=Thermia AB -+ -+OUI:18A59C6* -+ ID_OUI_FROM_DATABASE=INTEGRAL PLUS -+ -+OUI:18A59C7* -+ ID_OUI_FROM_DATABASE=ePower Network Solution Co., Ltd. -+ -+OUI:18A59C8* -+ ID_OUI_FROM_DATABASE=Residence Control Ltd -+ -+OUI:18A59C9* -+ ID_OUI_FROM_DATABASE=estun automation co.,ltd -+ -+OUI:18A59CA* -+ ID_OUI_FROM_DATABASE=Erba Lachema s.r.o. -+ -+OUI:18A59CB* -+ ID_OUI_FROM_DATABASE=CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFORMATICA LTDA -+ -+OUI:18A59CC* -+ ID_OUI_FROM_DATABASE=BlueEyes Technology -+ -+OUI:18A59CD* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:18A59CE* -+ ID_OUI_FROM_DATABASE=BMC Messsysteme GmbH -+ - OUI:18A6F7* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -45860,6 +46124,9 @@ OUI:18AF9F* - OUI:18B169* - ID_OUI_FROM_DATABASE=Sonicwall - -+OUI:18B185* -+ ID_OUI_FROM_DATABASE=Qiao Information Technology (Zhengzhou) Co., Ltd. -+ - OUI:18B209* - ID_OUI_FROM_DATABASE=Torrey Pines Logic, Inc - -@@ -45890,12 +46157,18 @@ OUI:18B905* - OUI:18B96E* - ID_OUI_FROM_DATABASE=Dongguan Liesheng Electronic Co., Ltd. - -+OUI:18BB1C* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:18BB26* - ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED - - OUI:18BB41* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:18BC57* -+ ID_OUI_FROM_DATABASE=ADVA Optical Networking Ltd. -+ - OUI:18BC5A* - ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd. - -@@ -45911,6 +46184,9 @@ OUI:18BF1C* - OUI:18BFB3* - ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd., Memory Division - -+OUI:18C007* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:18C04D* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -@@ -46169,6 +46445,9 @@ OUI:18FC26* - OUI:18FC9F* - ID_OUI_FROM_DATABASE=Changhe Electronics Co., Ltd. - -+OUI:18FD74* -+ ID_OUI_FROM_DATABASE=Routerboard.com -+ - OUI:18FDCB0* - ID_OUI_FROM_DATABASE=Shenzhen Rui jiali Electronic Technology Co. Ltd. - -@@ -46244,6 +46523,9 @@ OUI:1C08C1* - OUI:1C0B52* - ID_OUI_FROM_DATABASE=EPICOM S.A - -+OUI:1C0D7D* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:1C0FAF* - ID_OUI_FROM_DATABASE=Lucid Vision Labs - -@@ -46514,6 +46796,9 @@ OUI:1C45C2* - OUI:1C472F* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:1C47F6* -+ ID_OUI_FROM_DATABASE=Zhidao Network Technology(Shenzhen) Co.,Ltd -+ - OUI:1C4840* - ID_OUI_FROM_DATABASE=IMS Messsysteme GmbH - -@@ -46580,6 +46865,51 @@ OUI:1C57D8* - OUI:1C57DC* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:1C59740* -+ ID_OUI_FROM_DATABASE=Shenzhen Hanshine Technology Co.Ltd. -+ -+OUI:1C59741* -+ ID_OUI_FROM_DATABASE=Logical Infrastructure PTY LTD -+ -+OUI:1C59742* -+ ID_OUI_FROM_DATABASE=Chongqing Taishan Cable Co., Ltd -+ -+OUI:1C59743* -+ ID_OUI_FROM_DATABASE=Jiangsu Welm Technology Co.,Ltd -+ -+OUI:1C59744* -+ ID_OUI_FROM_DATABASE=Syntax technology(tianjin)Co.,LTD -+ -+OUI:1C59745* -+ ID_OUI_FROM_DATABASE=Shenzhen Shi Fang Communication Technology Co., Ltd -+ -+OUI:1C59746* -+ ID_OUI_FROM_DATABASE=Square Inc. -+ -+OUI:1C59747* -+ ID_OUI_FROM_DATABASE=Lynxi Technologies Co.,Ltd. -+ -+OUI:1C59748* -+ ID_OUI_FROM_DATABASE=Topway Global Technology Limited -+ -+OUI:1C59749* -+ ID_OUI_FROM_DATABASE=Shanghai Laisi Information Technology Co.,Ltd -+ -+OUI:1C5974A* -+ ID_OUI_FROM_DATABASE=Council Rock -+ -+OUI:1C5974B* -+ ID_OUI_FROM_DATABASE=Beijing Flintec Electronic Technology Co.,Ltd. -+ -+OUI:1C5974C* -+ ID_OUI_FROM_DATABASE=King-On Technology Ltd. -+ -+OUI:1C5974D* -+ ID_OUI_FROM_DATABASE=Shenzhen Geshem Technology Co Ltd -+ -+OUI:1C5974E* -+ ID_OUI_FROM_DATABASE=Globe Tracker ApS -+ - OUI:1C599B* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -46619,6 +46949,9 @@ OUI:1C60D2* - OUI:1C60DE* - ID_OUI_FROM_DATABASE=MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. - -+OUI:1C61B4* -+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited -+ - OUI:1C62B8* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -46700,6 +47033,9 @@ OUI:1C7508* - OUI:1C76CA* - ID_OUI_FROM_DATABASE=Terasic Technologies Inc. - -+OUI:1C76F2* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:1C77F6* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -@@ -47168,6 +47504,9 @@ OUI:1CA0EFE* - OUI:1CA2B1* - ID_OUI_FROM_DATABASE=ruwido austria gmbh - -+OUI:1CA410* -+ ID_OUI_FROM_DATABASE=Amlogic, Inc. -+ - OUI:1CA532* - ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT - -@@ -47249,6 +47588,9 @@ OUI:1CAECB* - OUI:1CAF05* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:1CAF4A* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:1CAFF7* - ID_OUI_FROM_DATABASE=D-Link International - -@@ -47288,6 +47630,9 @@ OUI:1CBA8C* - OUI:1CBBA8* - ID_OUI_FROM_DATABASE=OJSC Ufimskiy Zavod Promsvyaz - -+OUI:1CBCEC* -+ ID_OUI_FROM_DATABASE=silex technology, Inc. -+ - OUI:1CBD0E* - ID_OUI_FROM_DATABASE=Amplified Engineering Pty Ltd - -@@ -47618,6 +47963,9 @@ OUI:200505* - OUI:2005E8* - ID_OUI_FROM_DATABASE=OOO InProMedia - -+OUI:200889* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:2008ED* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -47669,6 +48017,9 @@ OUI:200A0DE* - OUI:200A5E* - ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing Co., Ltd. - -+OUI:200B16* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:200BC7* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -47978,6 +48329,9 @@ OUI:206432* - OUI:2064CB* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -+OUI:2064DE* -+ ID_OUI_FROM_DATABASE=Sunitec Enterprise Co.,Ltd -+ - OUI:20658E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -48158,9 +48512,15 @@ OUI:208984* - OUI:208986* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:20898A* -+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd -+ - OUI:208B37* - ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd - -+OUI:208BD1* -+ ID_OUI_FROM_DATABASE=NXP Semiconductor (Tianjin) LTD. -+ - OUI:208C47* - ID_OUI_FROM_DATABASE=Tenstorrent Inc - -@@ -48545,6 +48905,9 @@ OUI:20F85E* - OUI:20FABB* - ID_OUI_FROM_DATABASE=Cambridge Executive Limited - -+OUI:20FADB* -+ ID_OUI_FROM_DATABASE=Huahao Kunpeng Technology (chengDu) Co.,Ltd. -+ - OUI:20FDF1* - ID_OUI_FROM_DATABASE=3COM EUROPE LTD - -@@ -48584,6 +48947,9 @@ OUI:2405F5* - OUI:2406AA* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -+OUI:2406F2* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:24085D* - ID_OUI_FROM_DATABASE=Continental Aftermarket & Services GmbH - -@@ -48626,6 +48992,9 @@ OUI:240D6C* - OUI:240DC2* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -+OUI:240F5E* -+ ID_OUI_FROM_DATABASE=Shenzhen z-router Technology Co., Ltd -+ - OUI:240F9B* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -@@ -48704,6 +49073,9 @@ OUI:24169D* - OUI:24181D* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -+OUI:2418C0* -+ ID_OUI_FROM_DATABASE=E. Wehrle GmbH -+ - OUI:2418C6* - ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED - -@@ -48737,6 +49109,9 @@ OUI:241F2C* - OUI:241FA0* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:241FBD* -+ ID_OUI_FROM_DATABASE=Extreme Networks, Inc. -+ - OUI:2420C7* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -@@ -48755,12 +49130,18 @@ OUI:242642* - OUI:2426BA* - ID_OUI_FROM_DATABASE=Shenzhen Toptel Technology Co., Ltd. - -+OUI:2426D6* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:2428FD* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - - OUI:2429FE* - ID_OUI_FROM_DATABASE=KYOCERA Corporation - -+OUI:242CFE* -+ ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd. -+ - OUI:242E02* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -49046,6 +49427,9 @@ OUI:2469A5* - OUI:246AAB* - ID_OUI_FROM_DATABASE=IT-IS International - -+OUI:246C60* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:246C8A* - ID_OUI_FROM_DATABASE=YUKAI Engineering - -@@ -49070,6 +49454,9 @@ OUI:247260* - OUI:2474F7* - ID_OUI_FROM_DATABASE=GoPro - -+OUI:24753A* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:247625* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -49346,6 +49733,9 @@ OUI:24CE33* - OUI:24CF21* - ID_OUI_FROM_DATABASE=Shenzhen State Micro Technology Co., Ltd - -+OUI:24CF24* -+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd -+ - OUI:24D0DF* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -49445,6 +49835,9 @@ OUI:24EA40* - OUI:24EB65* - ID_OUI_FROM_DATABASE=SAET I.S. S.r.l. - -+OUI:24EBED* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:24EC51* - ID_OUI_FROM_DATABASE=ADF Technologies Sdn Bhd - -@@ -49580,6 +49973,9 @@ OUI:2811A8* - OUI:2811EC* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:281293* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:281471* - ID_OUI_FROM_DATABASE=Lantis co., LTD. - -@@ -49856,6 +50252,12 @@ OUI:283B96* - OUI:283CE4* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:283DC2* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ -+OUI:283E0C* -+ ID_OUI_FROM_DATABASE=Preferred Robotics, Inc. -+ - OUI:283E76* - ID_OUI_FROM_DATABASE=Common Networks - -@@ -49976,6 +50378,9 @@ OUI:286AB8* - OUI:286ABA* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:286B35* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:286C07* - ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD - -@@ -49988,6 +50393,9 @@ OUI:286DCD* - OUI:286ED4* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:286F40* -+ ID_OUI_FROM_DATABASE=Tonly Technology Co. Ltd -+ - OUI:286F7F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -50000,6 +50408,9 @@ OUI:2872C5* - OUI:2872F0* - ID_OUI_FROM_DATABASE=ATHENA - -+OUI:2874F5* -+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG -+ - OUI:2875D8* - ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD - -@@ -50039,6 +50450,9 @@ OUI:288088* - OUI:2880A2* - ID_OUI_FROM_DATABASE=Novatel Wireless Solutions, Inc. - -+OUI:28827C* -+ ID_OUI_FROM_DATABASE=Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+ - OUI:288335* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -50135,6 +50549,12 @@ OUI:28A241* - OUI:28A24B* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:28A331* -+ ID_OUI_FROM_DATABASE=Sierra Wireless -+ -+OUI:28A53F* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:28A574* - ID_OUI_FROM_DATABASE=Miller Electric Mfg. Co. - -@@ -50255,6 +50675,9 @@ OUI:28BD89* - OUI:28BE03* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -+OUI:28BE43* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:28BE9B* - ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. - -@@ -50330,6 +50753,9 @@ OUI:28CD4C* - OUI:28CD9C* - ID_OUI_FROM_DATABASE=Shenzhen Dynamax Software Development Co.,Ltd. - -+OUI:28CDC1* -+ ID_OUI_FROM_DATABASE=Raspberry Pi Trading Ltd -+ - OUI:28CDC4* - ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD. - -@@ -50537,9 +50963,15 @@ OUI:28F537D* - OUI:28F537E* - ID_OUI_FROM_DATABASE=Performance Motion Devices - -+OUI:28F5D1* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:28F606* - ID_OUI_FROM_DATABASE=Syes srl - -+OUI:28F7D6* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:28FA19* - ID_OUI_FROM_DATABASE=Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd - -@@ -50660,6 +51092,9 @@ OUI:2C073C* - OUI:2C0786* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:2C07F6* -+ ID_OUI_FROM_DATABASE=SKG Health Technologies Co., Ltd. -+ - OUI:2C081C* - ID_OUI_FROM_DATABASE=OVH - -@@ -50990,6 +51425,9 @@ OUI:2C3AE8* - OUI:2C3AFD* - ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH - -+OUI:2C3B70* -+ ID_OUI_FROM_DATABASE=AzureWave Technology Inc. -+ - OUI:2C3BFD* - ID_OUI_FROM_DATABASE=Netstor Technology Co., Ltd. - -@@ -51129,7 +51567,7 @@ OUI:2C54CF* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - - OUI:2C553C* -- ID_OUI_FROM_DATABASE=Gainspeed, Inc. -+ ID_OUI_FROM_DATABASE=Vecima Networks Inc. - - OUI:2C557C* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd -@@ -51188,6 +51626,9 @@ OUI:2C5FF3* - OUI:2C600C* - ID_OUI_FROM_DATABASE=Quanta Computer Inc. - -+OUI:2C60CD* -+ ID_OUI_FROM_DATABASE=NR ELECTRIC CO., LTD -+ - OUI:2C6104* - ID_OUI_FROM_DATABASE=SHENZHEN FENGLIAN TECHNOLOGY CO., LTD. - -@@ -51335,6 +51776,9 @@ OUI:2C8065* - OUI:2C8158* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:2C8217* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:2C86D2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -51386,6 +51830,9 @@ OUI:2C9AA4* - OUI:2C9D1E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:2C9D65* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:2C9E5F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -51428,6 +51875,9 @@ OUI:2CA59C* - OUI:2CA780* - ID_OUI_FROM_DATABASE=True Technologies Inc. - -+OUI:2CA79E* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:2CA835* - ID_OUI_FROM_DATABASE=RIM - -@@ -51629,6 +52079,9 @@ OUI:2CD974* - OUI:2CDB07* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:2CDC78* -+ ID_OUI_FROM_DATABASE=Descartes Systems (USA) LLC -+ - OUI:2CDCAD* - ID_OUI_FROM_DATABASE=Wistron Neweb Corporation - -@@ -51713,6 +52166,9 @@ OUI:2CF89B* - OUI:2CFAA2* - ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise - -+OUI:2CFC8B* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:2CFCE4* - ID_OUI_FROM_DATABASE=CTEK Sweden AB - -@@ -51740,6 +52196,9 @@ OUI:2CFFEE* - OUI:3003C8* - ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - -+OUI:30045C* -+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. -+ - OUI:30053F* - ID_OUI_FROM_DATABASE=JTI Co.,Ltd. - -@@ -51980,6 +52439,9 @@ OUI:302952* - OUI:3029BE* - ID_OUI_FROM_DATABASE=Shanghai MRDcom Co.,Ltd - -+OUI:302BDC* -+ ID_OUI_FROM_DATABASE=Top-Unum Electronics Co., LTD -+ - OUI:302DE8* - ID_OUI_FROM_DATABASE=JDA, LLC (JDA Systems) - -@@ -52040,9 +52502,15 @@ OUI:303ABA* - OUI:303D08* - ID_OUI_FROM_DATABASE=GLINTT TES S.A. - -+OUI:303EA7* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:303EAD* - ID_OUI_FROM_DATABASE=Sonavox Canada Inc - -+OUI:303F5D* -+ ID_OUI_FROM_DATABASE=PT HAN SUNG ELECTORONICS INDONESIA -+ - OUI:303F7B* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd - -@@ -52061,6 +52529,51 @@ OUI:304240* - OUI:3042A1* - ID_OUI_FROM_DATABASE=ilumisys Inc. DBA Toggled - -+OUI:3043D70* -+ ID_OUI_FROM_DATABASE=SYMES SA -+ -+OUI:3043D71* -+ ID_OUI_FROM_DATABASE=Shenzhen juduoping Technology Co.,Ltd -+ -+OUI:3043D72* -+ ID_OUI_FROM_DATABASE=Apollo Infoways Private Limited -+ -+OUI:3043D73* -+ ID_OUI_FROM_DATABASE=Luxshare Electronic Technology (Kunshan) LTD -+ -+OUI:3043D74* -+ ID_OUI_FROM_DATABASE=FIBERME COMMUNICATIONS LLC -+ -+OUI:3043D75* -+ ID_OUI_FROM_DATABASE=Shenzhen Mees Hi-Tech Co., Ltd -+ -+OUI:3043D76* -+ ID_OUI_FROM_DATABASE=Sprocomm Technologies Co., Ltd.Guangming Branch -+ -+OUI:3043D77* -+ ID_OUI_FROM_DATABASE=DIGICITI Technology Co.,Ltd -+ -+OUI:3043D78* -+ ID_OUI_FROM_DATABASE=Kesu (Shanghai) Electronic Technology Co., Ltd -+ -+OUI:3043D79* -+ ID_OUI_FROM_DATABASE=PK Solutions LLC -+ -+OUI:3043D7A* -+ ID_OUI_FROM_DATABASE=Bodhi -+ -+OUI:3043D7B* -+ ID_OUI_FROM_DATABASE=Motec GmbH -+ -+OUI:3043D7C* -+ ID_OUI_FROM_DATABASE=Xiaoniu network technology (Shanghai) Co., Ltd. -+ -+OUI:3043D7D* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:3043D7E* -+ ID_OUI_FROM_DATABASE=Guangdong Hongqin Telecom Technology Co. Ltd. -+ - OUI:304449* - ID_OUI_FROM_DATABASE=PLATH GmbH - -@@ -52301,6 +52814,9 @@ OUI:307CB2* - OUI:307ECB* - ID_OUI_FROM_DATABASE=SFR - -+OUI:307F10* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:30809B* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -@@ -52334,6 +52850,9 @@ OUI:308841* - OUI:308944* - ID_OUI_FROM_DATABASE=DEVA Broadcast Ltd. - -+OUI:30894A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:308976* - ID_OUI_FROM_DATABASE=DALIAN LAMBA TECHNOLOGY CO.,LTD - -@@ -52388,6 +52907,9 @@ OUI:3095E3* - OUI:309610* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:30963B* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:3096FB* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -52511,6 +53033,9 @@ OUI:30B930* - OUI:30B9B0* - ID_OUI_FROM_DATABASE=Intracom Asia Co., Ltd - -+OUI:30BB7D* -+ ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd -+ - OUI:30BE3B* - ID_OUI_FROM_DATABASE=Mitsubishi Electric Corporation - -@@ -52541,6 +53066,9 @@ OUI:30C82A* - OUI:30C9AB* - ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - -+OUI:30CB36* -+ ID_OUI_FROM_DATABASE=Belden Singapore Pte. Ltd. -+ - OUI:30CBC7* - ID_OUI_FROM_DATABASE=Cambium Networks Limited - -@@ -52599,7 +53127,7 @@ OUI:30DF8D* - ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT - - OUI:30E090* -- ID_OUI_FROM_DATABASE=Linctronix Ltd, -+ ID_OUI_FROM_DATABASE=Genevisio Ltd. - - OUI:30E171* - ID_OUI_FROM_DATABASE=Hewlett Packard -@@ -52625,6 +53153,9 @@ OUI:30E4DB* - OUI:30E7BC* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -+OUI:30E8E4* -+ ID_OUI_FROM_DATABASE=Qorvo International Pte. Ltd. -+ - OUI:30E98E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -52919,6 +53450,9 @@ OUI:34243E* - OUI:34255D* - ID_OUI_FROM_DATABASE=Shenzhen Loadcom Technology Co.,Ltd - -+OUI:3425BE* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:342606* - ID_OUI_FROM_DATABASE=CarePredict, Inc. - -@@ -53162,6 +53696,9 @@ OUI:345D10* - OUI:345D9E* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:345DA8* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:3460F9* - ID_OUI_FROM_DATABASE=TP-Link Corporation Limited - -@@ -53351,6 +53888,9 @@ OUI:348F27* - OUI:34916F* - ID_OUI_FROM_DATABASE=UserGate Ltd. - -+OUI:3492C2* -+ ID_OUI_FROM_DATABASE=Square Route Co., Ltd. -+ - OUI:349342* - ID_OUI_FROM_DATABASE=TTE Corporation - -@@ -53456,6 +53996,12 @@ OUI:34AB37* - OUI:34AB95* - ID_OUI_FROM_DATABASE=Espressif Inc. - -+OUI:34AC11* -+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -+ -+OUI:34AD61* -+ ID_OUI_FROM_DATABASE=CELESTICA INC. -+ - OUI:34ADE4* - ID_OUI_FROM_DATABASE=Shanghai Chint Power Systems Co., Ltd. - -@@ -53513,6 +54059,9 @@ OUI:34BB26* - OUI:34BCA6* - ID_OUI_FROM_DATABASE=Beijing Ding Qing Technology, Ltd. - -+OUI:34BD20* -+ ID_OUI_FROM_DATABASE=Hangzhou Hikrobot Technology Co., Ltd. -+ - OUI:34BDC8* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -53585,6 +54134,9 @@ OUI:34CE69* - OUI:34CE94* - ID_OUI_FROM_DATABASE=Parsec (Pty) Ltd - -+OUI:34CF6C* -+ ID_OUI_FROM_DATABASE=Hangzhou Taili wireless communication equipment Co.,Ltd -+ - OUI:34CFF6* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -53675,6 +54227,9 @@ OUI:34DB9C* - OUI:34DBFD* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:34DD04* -+ ID_OUI_FROM_DATABASE=Minut AB -+ - OUI:34DD7E* - ID_OUI_FROM_DATABASE=Umeox Innovations Co.,Ltd - -@@ -53789,6 +54344,9 @@ OUI:34ED0B* - OUI:34ED1B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:34EE2A* -+ ID_OUI_FROM_DATABASE=ConMet -+ - OUI:34EF44* - ID_OUI_FROM_DATABASE=2Wire Inc - -@@ -53936,6 +54494,9 @@ OUI:3810D5* - OUI:3810F0* - ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company - -+OUI:38127B* -+ ID_OUI_FROM_DATABASE=Crenet Labs Co., Ltd. -+ - OUI:381428* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -53984,6 +54545,51 @@ OUI:381DD9* - OUI:381EC7* - ID_OUI_FROM_DATABASE=Chipsea Technologies(Shenzhen) Corp. - -+OUI:381F260* -+ ID_OUI_FROM_DATABASE=JAESUNG INFORMATION & COMMUNICATION CO.LTD -+ -+OUI:381F261* -+ ID_OUI_FROM_DATABASE=SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ -+OUI:381F262* -+ ID_OUI_FROM_DATABASE=Synamedia -+ -+OUI:381F263* -+ ID_OUI_FROM_DATABASE=Bosch Automotive Electronics India Pvt. Ltd. -+ -+OUI:381F264* -+ ID_OUI_FROM_DATABASE=Airmaster A/S -+ -+OUI:381F265* -+ ID_OUI_FROM_DATABASE=Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+ -+OUI:381F266* -+ ID_OUI_FROM_DATABASE=NOITAC sp. z o.o. sp.k. -+ -+OUI:381F267* -+ ID_OUI_FROM_DATABASE=RCE systems s.r.o. -+ -+OUI:381F268* -+ ID_OUI_FROM_DATABASE=Avon Protection -+ -+OUI:381F269* -+ ID_OUI_FROM_DATABASE=SMS Evoko Group AB -+ -+OUI:381F26A* -+ ID_OUI_FROM_DATABASE=Sercomm Corporation. -+ -+OUI:381F26B* -+ ID_OUI_FROM_DATABASE=Deutronic Elektronik GmbH -+ -+OUI:381F26C* -+ ID_OUI_FROM_DATABASE=Jade Bird Fire Co., Ltd. -+ -+OUI:381F26D* -+ ID_OUI_FROM_DATABASE=HWACHANG CORPORATION -+ -+OUI:381F26E* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ - OUI:381F8D* - ID_OUI_FROM_DATABASE=Tuya Smart Inc. - -@@ -54257,6 +54863,9 @@ OUI:386893* - OUI:3868A4* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD - -+OUI:3868BE* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:3868DD* - ID_OUI_FROM_DATABASE=INVENTEC CORPORATION - -@@ -54407,12 +55016,18 @@ OUI:388E7A* - OUI:388EE7* - ID_OUI_FROM_DATABASE=Fanhattan LLC - -+OUI:388F30* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:389052* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:3890A5* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:3891B7* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:3891D5* - ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited - -@@ -54542,6 +55157,9 @@ OUI:38A9EA* - OUI:38AA3C* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD. - -+OUI:38AB41* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:38AC3D* - ID_OUI_FROM_DATABASE=Nephos Inc - -@@ -54962,6 +55580,9 @@ OUI:38FB14* - OUI:38FC98* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:38FDF5* -+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd. -+ - OUI:38FDF8* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -55202,6 +55823,9 @@ OUI:3C25D7* - OUI:3C26D5* - ID_OUI_FROM_DATABASE=Sotera Wireless - -+OUI:3C26E4* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:3C2763* - ID_OUI_FROM_DATABASE=SLE quality engineering GmbH & Co. KG - -@@ -55379,6 +56003,9 @@ OUI:3C438E* - OUI:3C457A* - ID_OUI_FROM_DATABASE=BSkyB Ltd - -+OUI:3C4645* -+ ID_OUI_FROM_DATABASE=Shanghai Infinity Wireless Technologies Co.,Ltd. -+ - OUI:3C46D8* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -55493,6 +56120,9 @@ OUI:3C678C* - OUI:3C6816* - ID_OUI_FROM_DATABASE=VXi Corporation - -+OUI:3C69D1* -+ ID_OUI_FROM_DATABASE=ADC Automotive Distance Control System GmbH -+ - OUI:3C6A2C0* - ID_OUI_FROM_DATABASE=Rio Lago Technologies LLC - -@@ -55613,6 +56243,9 @@ OUI:3C80AA* - OUI:3C81D8* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:3C82C0* -+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. -+ - OUI:3C831E* - ID_OUI_FROM_DATABASE=CKD Corporation - -@@ -55898,6 +56531,9 @@ OUI:3CCD5D* - OUI:3CCD93* - ID_OUI_FROM_DATABASE=LG ELECTRONICS INC - -+OUI:3CCE0D* -+ ID_OUI_FROM_DATABASE=Shenzhen juduoping Technology Co.,Ltd -+ - OUI:3CCE15* - ID_OUI_FROM_DATABASE=Mercedes-Benz USA, LLC - -@@ -56237,6 +56873,9 @@ OUI:401C83* - OUI:401D59* - ID_OUI_FROM_DATABASE=Biometric Associates, LP - -+OUI:402230* -+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. -+ - OUI:4022ED* - ID_OUI_FROM_DATABASE=Digital Projection Ltd - -@@ -56339,9 +56978,15 @@ OUI:40331A* - OUI:40336C* - ID_OUI_FROM_DATABASE=Godrej & Boyce Mfg. co. ltd - -+OUI:4035E6* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:4037AD* - ID_OUI_FROM_DATABASE=Macro Image Technology, Inc. - -+OUI:403B7B* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:403CFC* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -56372,6 +57017,9 @@ OUI:404101* - OUI:404229* - ID_OUI_FROM_DATABASE=Layer3TV, Inc - -+OUI:404244* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:4044FD* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -@@ -56654,6 +57302,9 @@ OUI:408C4C* - OUI:408D5C* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -+OUI:408EDF* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:408F9D* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -56798,6 +57449,9 @@ OUI:40AC8D* - OUI:40ACBF* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -+OUI:40B02F* -+ ID_OUI_FROM_DATABASE=Miele & Cie. KG -+ - OUI:40B034* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -56963,6 +57617,9 @@ OUI:40D63C* - OUI:40D855* - ID_OUI_FROM_DATABASE=IEEE Registration Authority - -+OUI:40D95A* -+ ID_OUI_FROM_DATABASE=AMPAK Technology,Inc. -+ - OUI:40DC9D* - ID_OUI_FROM_DATABASE=HAJEN - -@@ -57341,6 +57998,9 @@ OUI:4427F3* - OUI:4428A3* - ID_OUI_FROM_DATABASE=Jiangsu fulian Communication Technology Co., Ltd. - -+OUI:44291E* -+ ID_OUI_FROM_DATABASE=AltoBeam (China) Inc. -+ - OUI:442938* - ID_OUI_FROM_DATABASE=NietZsche enterprise Co.Ltd. - -@@ -57362,6 +58022,9 @@ OUI:443192* - OUI:44322A* - ID_OUI_FROM_DATABASE=Avaya Inc - -+OUI:4432C2* -+ ID_OUI_FROM_DATABASE=GOAL Co., Ltd. -+ - OUI:4432C8* - ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. - -@@ -57405,7 +58068,7 @@ OUI:443C88* - ID_OUI_FROM_DATABASE=FICOSA MAROC INTERNATIONAL - - OUI:443C9C* -- ID_OUI_FROM_DATABASE=Pintsch Tiefenbach GmbH -+ ID_OUI_FROM_DATABASE=Pintsch GmbH - - OUI:443D21* - ID_OUI_FROM_DATABASE=Nuvolt -@@ -57584,6 +58247,9 @@ OUI:446D57* - OUI:446D6C* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:446D7F* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:446EE5* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -57701,6 +58367,9 @@ OUI:4487DB* - OUI:4487FC* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. - -+OUI:448816* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:4488CB* - ID_OUI_FROM_DATABASE=Camco Technologies NV - -@@ -57905,6 +58574,9 @@ OUI:44B433* - OUI:44B462* - ID_OUI_FROM_DATABASE=Flextronics Tech.(Ind) Pvt Ltd - -+OUI:44B4B2* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:44B6BE* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -58349,6 +59021,9 @@ OUI:4826E8* - OUI:482759* - ID_OUI_FROM_DATABASE=Levven Electronics Ltd. - -+OUI:4827C5* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:4827EA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -58439,6 +59114,9 @@ OUI:4844F7* - OUI:484520* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:48468D* -+ ID_OUI_FROM_DATABASE=Zepcam B.V. -+ - OUI:4846C1* - ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED - -@@ -58514,6 +59192,9 @@ OUI:48555F* - OUI:485702* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:4857D2* -+ ID_OUI_FROM_DATABASE=Broadcom Limited -+ - OUI:4857DD* - ID_OUI_FROM_DATABASE=Facebook Inc - -@@ -58778,6 +59459,9 @@ OUI:489A42* - OUI:489BD5* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:489BE0* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:489BE2* - ID_OUI_FROM_DATABASE=SCI Innovations Ltd - -@@ -58862,6 +59546,9 @@ OUI:48B25D* - OUI:48B423* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -+OUI:48B4C3* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:48B5A7* - ID_OUI_FROM_DATABASE=Glory Horse Industries Ltd. - -@@ -58937,6 +59624,9 @@ OUI:48CAC6* - OUI:48CB6E* - ID_OUI_FROM_DATABASE=Cello Electronics (UK) Ltd - -+OUI:48CDD3* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:48D0CF* - ID_OUI_FROM_DATABASE=Universal Electronics, Inc. - -@@ -58994,6 +59684,9 @@ OUI:48DB50* - OUI:48DC2D* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:48DC9D* -+ ID_OUI_FROM_DATABASE=Grandprint(Beijing) Technology Co., LTD. -+ - OUI:48DCFB* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -59153,6 +59846,9 @@ OUI:4C09B4* - OUI:4C09D4* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -+OUI:4C09FA* -+ ID_OUI_FROM_DATABASE=FRONTIER SMART TECHNOLOGIES LTD -+ - OUI:4C0A3D* - ID_OUI_FROM_DATABASE=ADNACOM INC. - -@@ -59267,6 +59963,12 @@ OUI:4C2C80* - OUI:4C2C83* - ID_OUI_FROM_DATABASE=Zhejiang KaNong Network Technology Co.,Ltd. - -+OUI:4C2E5E* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ -+OUI:4C2EB4* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:4C2EFE* - ID_OUI_FROM_DATABASE=Shenzhen Comnect Technology Co.,LTD - -@@ -59420,6 +60122,9 @@ OUI:4C5262* - OUI:4C52EC* - ID_OUI_FROM_DATABASE=SOLARWATT GmbH - -+OUI:4C5369* -+ ID_OUI_FROM_DATABASE=YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+ - OUI:4C53FD* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -59561,6 +60266,9 @@ OUI:4C7274* - OUI:4C72B9* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - -+OUI:4C734F* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:4C7367* - ID_OUI_FROM_DATABASE=Genius Bytes Software Solutions GmbH - -@@ -59774,6 +60482,12 @@ OUI:4C962D* - OUI:4C98EF* - ID_OUI_FROM_DATABASE=Zeo - -+OUI:4C9D22* -+ ID_OUI_FROM_DATABASE=ACES Co.,Ltd -+ -+OUI:4C9E6C* -+ ID_OUI_FROM_DATABASE=BROADEX TECHNOLOGIES CO.LTD -+ - OUI:4C9E80* - ID_OUI_FROM_DATABASE=KYOKKO ELECTRIC Co., Ltd. - -@@ -60020,6 +60734,9 @@ OUI:4CD08A* - OUI:4CD0CB* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:4CD0DD* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:4CD1A1* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -60380,6 +61097,9 @@ OUI:502690* - OUI:5027C7* - ID_OUI_FROM_DATABASE=TECHNART Co.,Ltd - -+OUI:50284A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:502873* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -60455,6 +61175,9 @@ OUI:5033F0* - OUI:50382F* - ID_OUI_FROM_DATABASE=ASE Group Chung-Li - -+OUI:50392F* -+ ID_OUI_FROM_DATABASE=INGRAM MICRO SERVICES -+ - OUI:503955* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -60503,6 +61226,9 @@ OUI:50411C* - OUI:5041B9* - ID_OUI_FROM_DATABASE=I-O DATA DEVICE,INC. - -+OUI:504289* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:504348* - ID_OUI_FROM_DATABASE=ThingsMatrix Inc. - -@@ -60713,6 +61439,9 @@ OUI:5067F0* - OUI:50680A* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:5068AC* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:506A03* - ID_OUI_FROM_DATABASE=NETGEAR - -@@ -60908,6 +61637,9 @@ OUI:509F3B* - OUI:50A009* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:50A015* -+ ID_OUI_FROM_DATABASE=Shenzhen Yipingfang Network Technology Co., Ltd. -+ - OUI:50A0300* - ID_OUI_FROM_DATABASE=Gopod Group Limited - -@@ -61091,6 +61823,9 @@ OUI:50C006* - OUI:50C0F0* - ID_OUI_FROM_DATABASE=Artek Microelectronics Co.,Ltd. - -+OUI:50C1F0* -+ ID_OUI_FROM_DATABASE=NXP Semiconductor (Tianjin) LTD. -+ - OUI:50C271* - ID_OUI_FROM_DATABASE=SECURETECH INC - -@@ -61184,6 +61919,9 @@ OUI:50DAD6* - OUI:50DB3F* - ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT - -+OUI:50DCD0* -+ ID_OUI_FROM_DATABASE=Observint Technologies, Inc. -+ - OUI:50DCE7* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -61265,6 +62003,9 @@ OUI:50E24E* - OUI:50E549* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -+OUI:50E636* -+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH -+ - OUI:50E666* - ID_OUI_FROM_DATABASE=Shenzhen Techtion Electronics Co., Ltd. - -@@ -61368,7 +62109,7 @@ OUI:50FF990* - ID_OUI_FROM_DATABASE=Simicon - - OUI:50FF991* -- ID_OUI_FROM_DATABASE=Coyote Sytem -+ ID_OUI_FROM_DATABASE=COYOTE SYSTEM - - OUI:50FF992* - ID_OUI_FROM_DATABASE=SHENZHEN KINGVT ELECTRONICS CO.,LTD -@@ -61571,6 +62312,9 @@ OUI:542BDE* - OUI:542CEA* - ID_OUI_FROM_DATABASE=PROTECTRON - -+OUI:542F04* -+ ID_OUI_FROM_DATABASE=Shanghai Longcheer Technology Co., Ltd. -+ - OUI:542F89* - ID_OUI_FROM_DATABASE=Euclid Laboratories, Inc. - -@@ -61622,6 +62366,9 @@ OUI:5440AD* - OUI:544249* - ID_OUI_FROM_DATABASE=Sony Corporation - -+OUI:5443B2* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:544408* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -61790,6 +62537,9 @@ OUI:54778A* - OUI:54781A* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:5478C9* -+ ID_OUI_FROM_DATABASE=AMPAK Technology,Inc. -+ - OUI:547975* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -62036,6 +62786,9 @@ OUI:54A6DB* - OUI:54A703* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -+OUI:54A9C8* -+ ID_OUI_FROM_DATABASE=Home Control Singapore Pte Ltd -+ - OUI:54A9D4* - ID_OUI_FROM_DATABASE=Minibar Systems - -@@ -62198,6 +62951,9 @@ OUI:54E061* - OUI:54E140* - ID_OUI_FROM_DATABASE=INGENICO - -+OUI:54E15B* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:54E1AD* - ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd - -@@ -62309,6 +63065,9 @@ OUI:54FF82* - OUI:54FFCF* - ID_OUI_FROM_DATABASE=Mopria Alliance - -+OUI:580032* -+ ID_OUI_FROM_DATABASE=Genexis B.V. -+ - OUI:5800BB* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -62351,6 +63110,9 @@ OUI:58108C* - OUI:5810B7* - ID_OUI_FROM_DATABASE=Infinix mobility limited - -+OUI:581122* -+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -+ - OUI:581243* - ID_OUI_FROM_DATABASE=AcSiP Technology Corp. - -@@ -62375,6 +63137,9 @@ OUI:581CBD* - OUI:581D91* - ID_OUI_FROM_DATABASE=Advanced Mobile Telecom co.,ltd. - -+OUI:581DD8* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:581F28* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -62615,6 +63380,9 @@ OUI:58528A* - OUI:5853C0* - ID_OUI_FROM_DATABASE=Beijing Guang Runtong Technology Development Company co.,Ltd - -+OUI:585595* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5855CA* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -62693,6 +63461,9 @@ OUI:587521* - OUI:587675* - ID_OUI_FROM_DATABASE=Beijing ECHO Technologies Co.,Ltd - -+OUI:5876AC* -+ ID_OUI_FROM_DATABASE=SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ - OUI:5876C5* - ID_OUI_FROM_DATABASE=DIGI I'S LTD - -@@ -62750,6 +63521,9 @@ OUI:588694* - OUI:58874C* - ID_OUI_FROM_DATABASE=LITE-ON CLEAN ENERGY TECHNOLOGY CORP. - -+OUI:58879F* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:5887E2* - ID_OUI_FROM_DATABASE=Shenzhen Coship Electronics Co., Ltd. - -@@ -62981,6 +63755,9 @@ OUI:58C17A* - OUI:58C232* - ID_OUI_FROM_DATABASE=NEC Corporation - -+OUI:58C356* -+ ID_OUI_FROM_DATABASE=EM Microelectronic -+ - OUI:58C38B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -63272,6 +64049,9 @@ OUI:5C0272* - OUI:5C0339* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:5C045A* -+ ID_OUI_FROM_DATABASE=Company NA Stage & Light -+ - OUI:5C076F* - ID_OUI_FROM_DATABASE=Thought Creator - -@@ -63338,6 +64118,9 @@ OUI:5C18B5* - OUI:5C1A6F* - ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd. - -+OUI:5C1BF4* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5C1CB9* - ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. - -@@ -63359,6 +64142,9 @@ OUI:5C2443* - OUI:5C2479* - ID_OUI_FROM_DATABASE=Baltech AG - -+OUI:5C24E2* -+ ID_OUI_FROM_DATABASE=Suzhou Denbom Electronic S&T Co., Ltd -+ - OUI:5C254C* - ID_OUI_FROM_DATABASE=Avire Global Pte Ltd - -@@ -63488,6 +64274,9 @@ OUI:5C521E* - OUI:5C5230* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:5C53C3* -+ ID_OUI_FROM_DATABASE=Ubee Interactive Co., Limited -+ - OUI:5C546D* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -63722,6 +64511,9 @@ OUI:5C89D4* - OUI:5C8A38* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:5C8C30* -+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics -+ - OUI:5C8D2D* - ID_OUI_FROM_DATABASE=Shanghai Wellpay Information Technology Co., Ltd - -@@ -63800,6 +64592,9 @@ OUI:5CA48A* - OUI:5CA4A4* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -+OUI:5CA4F4* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:5CA5BC* - ID_OUI_FROM_DATABASE=eero inc. - -@@ -63905,6 +64700,9 @@ OUI:5CC307* - OUI:5CC336* - ID_OUI_FROM_DATABASE=ittim - -+OUI:5CC563* -+ ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED -+ - OUI:5CC5D4* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -63923,6 +64721,9 @@ OUI:5CC8E3* - OUI:5CC999* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -+OUI:5CC9C0* -+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd. -+ - OUI:5CC9D3* - ID_OUI_FROM_DATABASE=PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA - -@@ -64061,6 +64862,9 @@ OUI:5CE8B7* - OUI:5CE8EB* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:5CE91E* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5CEA1D* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -64073,6 +64877,9 @@ OUI:5CEB68* - OUI:5CED8C* - ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise - -+OUI:5CEDF4* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:5CEE79* - ID_OUI_FROM_DATABASE=Global Digitech Co LTD - -@@ -64172,6 +64979,9 @@ OUI:5CF9F0* - OUI:5CF9FD* - ID_OUI_FROM_DATABASE=Taicang T&W Electronics - -+OUI:5CFA25* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:5CFAFB* - ID_OUI_FROM_DATABASE=Acubit - -@@ -64316,6 +65126,9 @@ OUI:601803* - OUI:60182E* - ID_OUI_FROM_DATABASE=ShenZhen Protruly Electronic Ltd co. - -+OUI:60183A* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:601888* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -64346,6 +65159,9 @@ OUI:601D9D* - OUI:601E02* - ID_OUI_FROM_DATABASE=EltexAlatau - -+OUI:601E98* -+ ID_OUI_FROM_DATABASE=Axevast Technology -+ - OUI:602101* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -@@ -64529,6 +65345,9 @@ OUI:605718* - OUI:60577D* - ID_OUI_FROM_DATABASE=eero inc. - -+OUI:605B30* -+ ID_OUI_FROM_DATABASE=Dell Inc. -+ - OUI:605BB4* - ID_OUI_FROM_DATABASE=AzureWave Technology Inc. - -@@ -64628,6 +65447,9 @@ OUI:607771* - OUI:6077E2* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:607D09* -+ ID_OUI_FROM_DATABASE=Luxshare Precision Industry Co., Ltd -+ - OUI:607DDD* - ID_OUI_FROM_DATABASE=Shenzhen Shichuangyi Electronics Co.,Ltd - -@@ -64724,6 +65546,9 @@ OUI:6092F5* - OUI:609316* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:6095BD* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:6095CE0* - ID_OUI_FROM_DATABASE=Siema Applications - -@@ -64907,6 +65732,9 @@ OUI:60BC4C* - OUI:60BD91* - ID_OUI_FROM_DATABASE=Move Innovation - -+OUI:60BEB4* -+ ID_OUI_FROM_DATABASE=S-Bluetech co., limited -+ - OUI:60BEB5* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -@@ -65111,6 +65939,9 @@ OUI:60E85B* - OUI:60E956* - ID_OUI_FROM_DATABASE=Ayla Networks, Inc - -+OUI:60E9AA* -+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ - OUI:60EB5A* - ID_OUI_FROM_DATABASE=Asterfusion Data Technologies Co.,Ltd - -@@ -65273,6 +66104,9 @@ OUI:640F28* - OUI:641084* - ID_OUI_FROM_DATABASE=HEXIUM Technical Development Co., Ltd. - -+OUI:6411A4* -+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -+ - OUI:641225* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -65423,6 +66257,9 @@ OUI:643139E* - OUI:643150* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:643172* -+ ID_OUI_FROM_DATABASE=ZHEJIANG HISING TECHNOLOGY CO.,LTD -+ - OUI:64317E* - ID_OUI_FROM_DATABASE=Dexin Corporation - -@@ -65513,6 +66350,9 @@ OUI:6444D5* - OUI:6447E0* - ID_OUI_FROM_DATABASE=Feitian Technologies Co., Ltd - -+OUI:64497D* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:644BC3* - ID_OUI_FROM_DATABASE=Shanghai WOASiS Telecommunications Ltd., Co. - -@@ -65594,6 +66434,9 @@ OUI:645D92* - OUI:645DD7* - ID_OUI_FROM_DATABASE=Shenzhen Lifesense Medical Electronics Co., Ltd. - -+OUI:645DF4* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:645E10* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -65822,6 +66665,9 @@ OUI:649714* - OUI:649829* - ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. - -+OUI:64989E* -+ ID_OUI_FROM_DATABASE=TRINNOV AUDIO -+ - OUI:64995D* - ID_OUI_FROM_DATABASE=LGE - -@@ -65972,6 +66818,9 @@ OUI:64BE63* - OUI:64BF6B* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:64C269* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:64C2DE* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - -@@ -65987,6 +66836,9 @@ OUI:64C3D6* - OUI:64C403* - ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. - -+OUI:64C582* -+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -+ - OUI:64C5AA* - ID_OUI_FROM_DATABASE=South African Broadcasting Corporation - -@@ -66263,6 +67115,9 @@ OUI:64FB92* - OUI:64FC8C* - ID_OUI_FROM_DATABASE=Zonar Systems - -+OUI:64FD96* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:64FF0A* - ID_OUI_FROM_DATABASE=Wistron Neweb Corporation - -@@ -66317,6 +67172,9 @@ OUI:681605* - OUI:681729* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:6818D9* -+ ID_OUI_FROM_DATABASE=Hill AFB - CAPRE Group -+ - OUI:68193F* - ID_OUI_FROM_DATABASE=Digital Airways - -@@ -66479,6 +67337,9 @@ OUI:684B88* - OUI:684CA8* - ID_OUI_FROM_DATABASE=Shenzhen Herotel Tech. Co., Ltd. - -+OUI:684E05* -+ ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED -+ - OUI:684F64* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -66533,6 +67394,9 @@ OUI:685B36* - OUI:685D43* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:685E1C* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:685E6B* - ID_OUI_FROM_DATABASE=PowerRay Co., Ltd. - -@@ -66848,6 +67712,9 @@ OUI:68A47D* - OUI:68A682* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd - -+OUI:68A7B4* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:68A828* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -66896,6 +67763,12 @@ OUI:68B43A* - OUI:68B599* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:68B691* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ -+OUI:68B6B3* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:68B6FC* - ID_OUI_FROM_DATABASE=Hitron Technologies. Inc - -@@ -67016,6 +67889,9 @@ OUI:68E41F* - OUI:68E478* - ID_OUI_FROM_DATABASE=Qingdao Haier Technology Co.,Ltd - -+OUI:68E74A* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:68E7C2* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -67121,6 +67997,9 @@ OUI:6C05D5* - OUI:6C06D6* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:6C0831* -+ ID_OUI_FROM_DATABASE=ANALOG SYSTEMS -+ - OUI:6C090A* - ID_OUI_FROM_DATABASE=GEMATICA SRL - -@@ -67151,6 +68030,9 @@ OUI:6C0EE6* - OUI:6C0F0B* - ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. - -+OUI:6C0F61* -+ ID_OUI_FROM_DATABASE=Hypervolt Ltd -+ - OUI:6C0F6A* - ID_OUI_FROM_DATABASE=JDC Tech Co., Ltd. - -@@ -67172,6 +68054,51 @@ OUI:6C146E* - OUI:6C14F7* - ID_OUI_FROM_DATABASE=Erhardt+Leimer GmbH - -+OUI:6C15240* -+ ID_OUI_FROM_DATABASE=DEFA AS -+ -+OUI:6C15241* -+ ID_OUI_FROM_DATABASE=Telsonic AG -+ -+OUI:6C15242* -+ ID_OUI_FROM_DATABASE=Linkplay -+ -+OUI:6C15243* -+ ID_OUI_FROM_DATABASE=Forcite Helmet Systems Pty Ltd -+ -+OUI:6C15244* -+ ID_OUI_FROM_DATABASE=Magicyo Technology CO., LTD. -+ -+OUI:6C15245* -+ ID_OUI_FROM_DATABASE=Shenzhen Electron Technology Co., LTD. -+ -+OUI:6C15246* -+ ID_OUI_FROM_DATABASE=Kunshan Abram Software Technology Co.,Ltd. -+ -+OUI:6C15247* -+ ID_OUI_FROM_DATABASE=Motium Pty Ltd -+ -+OUI:6C15248* -+ ID_OUI_FROM_DATABASE=ShenZhen Chainway Information Technology Co., Ltd. -+ -+OUI:6C15249* -+ ID_OUI_FROM_DATABASE=D-HOME SMAART -+ -+OUI:6C1524A* -+ ID_OUI_FROM_DATABASE=STERIS -+ -+OUI:6C1524B* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:6C1524C* -+ ID_OUI_FROM_DATABASE=CORAL-TAIYI -+ -+OUI:6C1524D* -+ ID_OUI_FROM_DATABASE=SYMLINK CORPORATION -+ -+OUI:6C1524E* -+ ID_OUI_FROM_DATABASE=AEC s.r.l. -+ - OUI:6C15F9* - ID_OUI_FROM_DATABASE=Nautronix Limited - -@@ -67226,6 +68153,9 @@ OUI:6C23B9* - OUI:6C23CB* - ID_OUI_FROM_DATABASE=Wattty Corporation - -+OUI:6C2408* -+ ID_OUI_FROM_DATABASE=LCFC(Hefei) Electronics Technology Co., Ltd -+ - OUI:6C2483* - ID_OUI_FROM_DATABASE=Microsoft Mobile Oy - -@@ -67508,6 +68438,9 @@ OUI:6C639C* - OUI:6C641A* - ID_OUI_FROM_DATABASE=Penguin Computing - -+OUI:6C67EF* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:6C6A77* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -67610,6 +68543,51 @@ OUI:6C9106* - OUI:6C92BF* - ID_OUI_FROM_DATABASE=Inspur Electronic Information Industry Co.,Ltd. - -+OUI:6C93080* -+ ID_OUI_FROM_DATABASE=Braums -+ -+OUI:6C93081* -+ ID_OUI_FROM_DATABASE=WATERFORD CONSULTANTS LLC -+ -+OUI:6C93082* -+ ID_OUI_FROM_DATABASE=ZHEJIANG XIAN DA Environmental Technology Co., Ltd -+ -+OUI:6C93083* -+ ID_OUI_FROM_DATABASE=LightnTec GmbH -+ -+OUI:6C93084* -+ ID_OUI_FROM_DATABASE=Estelar s.r.o -+ -+OUI:6C93085* -+ ID_OUI_FROM_DATABASE=Shenzhen C & D Electronics Co., Ltd. -+ -+OUI:6C93086* -+ ID_OUI_FROM_DATABASE=Uconfree technology(shenzhen)limited -+ -+OUI:6C93087* -+ ID_OUI_FROM_DATABASE=Liberty AV Solutions -+ -+OUI:6C93088* -+ ID_OUI_FROM_DATABASE=Hangzhou Risco System Co.,Ltd -+ -+OUI:6C93089* -+ ID_OUI_FROM_DATABASE=Shenzhen DOOGEE Hengtong Technology CO., LTD -+ -+OUI:6C9308A* -+ ID_OUI_FROM_DATABASE=Shenzhen TOPWAY Technology Co.,LTD -+ -+OUI:6C9308B* -+ ID_OUI_FROM_DATABASE=Shenzhen EZpro Sound & Light Technology Co., Ltd. -+ -+OUI:6C9308C* -+ ID_OUI_FROM_DATABASE=Shenzhen haichangxing Technology Co., Ltd. -+ -+OUI:6C9308D* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:6C9308E* -+ ID_OUI_FROM_DATABASE=ANDDORO LLC -+ - OUI:6C9354* - ID_OUI_FROM_DATABASE=Yaojin Technology (Shenzhen) Co., LTD. - -@@ -67628,6 +68606,9 @@ OUI:6C9522* - OUI:6C96CF* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:6C976D* -+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -+ - OUI:6C98EB* - ID_OUI_FROM_DATABASE=Riverbed Technology, Inc. - -@@ -67637,6 +68618,9 @@ OUI:6C9961* - OUI:6C9989* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:6C999D* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:6C9AC9* - ID_OUI_FROM_DATABASE=Valentine Research, Inc. - -@@ -67661,6 +68645,9 @@ OUI:6CA0B4* - OUI:6CA100* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:6CA401* -+ ID_OUI_FROM_DATABASE=essensys plc -+ - OUI:6CA4D1* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -@@ -67727,6 +68714,9 @@ OUI:6CADF8* - OUI:6CAE8B* - ID_OUI_FROM_DATABASE=IBM Corporation - -+OUI:6CAEE3* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:6CAEF6* - ID_OUI_FROM_DATABASE=eero inc. - -@@ -67739,12 +68729,18 @@ OUI:6CB0CE* - OUI:6CB0FD* - ID_OUI_FROM_DATABASE=Shenzhen Xinghai Iot Technology Co.,Ltd - -+OUI:6CB158* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:6CB227* - ID_OUI_FROM_DATABASE=Sony Video & Sound Products Inc. - - OUI:6CB2AE* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:6CB2FD* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:6CB311* - ID_OUI_FROM_DATABASE=Shenzhen Lianrui Electronics Co.,Ltd - -@@ -68222,6 +69218,9 @@ OUI:70305D* - OUI:70305E* - ID_OUI_FROM_DATABASE=Nanjing Zhongke Menglian Information Technology Co.,LTD - -+OUI:70317F* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:703187* - ID_OUI_FROM_DATABASE=ACX GmbH - -@@ -68345,6 +69344,51 @@ OUI:704FB8* - OUI:7050AF* - ID_OUI_FROM_DATABASE=BSkyB Ltd - -+OUI:7050E70* -+ ID_OUI_FROM_DATABASE=Shenzhen C & D Electronics Co., Ltd. -+ -+OUI:7050E71* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:7050E72* -+ ID_OUI_FROM_DATABASE=Electronic's Time SRL -+ -+OUI:7050E73* -+ ID_OUI_FROM_DATABASE=Skychers Creations ShenZhen Limited -+ -+OUI:7050E74* -+ ID_OUI_FROM_DATABASE=Quantumdoor Technologies, Inc. -+ -+OUI:7050E75* -+ ID_OUI_FROM_DATABASE=Wall Box Chargers, S.L. -+ -+OUI:7050E76* -+ ID_OUI_FROM_DATABASE=Nippon Pulse America, Inc. -+ -+OUI:7050E77* -+ ID_OUI_FROM_DATABASE=Yoctopuce -+ -+OUI:7050E78* -+ ID_OUI_FROM_DATABASE=Shenzhen Dangs Science and Technology CO.,Ltd. -+ -+OUI:7050E79* -+ ID_OUI_FROM_DATABASE=Elastics.cloud -+ -+OUI:7050E7A* -+ ID_OUI_FROM_DATABASE=Guangzhou Tianhe High Tech Industrial Development Zone Zhongsheng Electrical Limited Company -+ -+OUI:7050E7B* -+ ID_OUI_FROM_DATABASE=Beijing Shannoncyber Technology Co.,Ltd -+ -+OUI:7050E7C* -+ ID_OUI_FROM_DATABASE=shenzhen newbridge communication equipment CO.,LTD -+ -+OUI:7050E7D* -+ ID_OUI_FROM_DATABASE=Eta Compute Inc. -+ -+OUI:7050E7E* -+ ID_OUI_FROM_DATABASE=KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD) -+ - OUI:7052C5* - ID_OUI_FROM_DATABASE=Avaya Inc - -@@ -68447,6 +69491,9 @@ OUI:7065A3* - OUI:70661B* - ID_OUI_FROM_DATABASE=Sonova AG - -+OUI:70662A* -+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc. -+ - OUI:706655* - ID_OUI_FROM_DATABASE=AzureWave Technology Inc. - -@@ -68531,6 +69578,9 @@ OUI:70708B* - OUI:7070AA* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -+OUI:7070FC* -+ ID_OUI_FROM_DATABASE=GOLD&WATER INDUSTRIAL LIMITED -+ - OUI:7071B3* - ID_OUI_FROM_DATABASE=Brain Corporation - -@@ -68618,6 +69668,9 @@ OUI:708540* - OUI:7085C2* - ID_OUI_FROM_DATABASE=ASRock Incorporation - -+OUI:7085C4* -+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD -+ - OUI:7085C6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -68765,6 +69818,9 @@ OUI:70A56A* - OUI:70A66A* - ID_OUI_FROM_DATABASE=Prox Dynamics AS - -+OUI:70A6BD* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:70A6CC* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -68780,9 +69836,15 @@ OUI:70A8D3* - OUI:70A8E3* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:70A983* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:70AAB2* - ID_OUI_FROM_DATABASE=BlackBerry RTS - -+OUI:70AC08* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:70ACD7* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd - -@@ -79665,7 +80727,7 @@ OUI:70B3D5E2E* - ID_OUI_FROM_DATABASE=Merz s.r.o. - - OUI:70B3D5E2F* -- ID_OUI_FROM_DATABASE=Flextronics International Kft. -+ ID_OUI_FROM_DATABASE=Flextronics International Kft - - OUI:70B3D5E30* - ID_OUI_FROM_DATABASE=QUISS AG -@@ -79875,7 +80937,7 @@ OUI:70B3D5E74* - ID_OUI_FROM_DATABASE=Exfrontier Co., Ltd. - - OUI:70B3D5E75* -- ID_OUI_FROM_DATABASE=Nke -+ ID_OUI_FROM_DATABASE=Watteco - - OUI:70B3D5E76* - ID_OUI_FROM_DATABASE=Dorsett Technologies Inc -@@ -81161,6 +82223,9 @@ OUI:70D5E7* - OUI:70D6B6* - ID_OUI_FROM_DATABASE=Metrum Technologies - -+OUI:70D823* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:70D880* - ID_OUI_FROM_DATABASE=Upos System sp. z o.o. - -@@ -81365,6 +82430,9 @@ OUI:74042B* - OUI:7404F0* - ID_OUI_FROM_DATABASE=Mobiwire Mobiles (NingBo) Co., LTD - -+OUI:7404F1* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:7405A5* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -81677,6 +82745,9 @@ OUI:74547D* - OUI:745612* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:74563C* -+ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. -+ - OUI:745798* - ID_OUI_FROM_DATABASE=TRUMPF Laser GmbH + Co. KG - -@@ -81764,6 +82835,9 @@ OUI:745F90* - OUI:745FAE* - ID_OUI_FROM_DATABASE=TSL PPL - -+OUI:74604C* -+ ID_OUI_FROM_DATABASE=RØDE -+ - OUI:7460FA* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -81788,6 +82862,9 @@ OUI:746630* - OUI:7467F7* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:74694A* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:746A3A* - ID_OUI_FROM_DATABASE=Aperi Corporation - -@@ -81812,6 +82889,9 @@ OUI:746F19* - OUI:746F3D* - ID_OUI_FROM_DATABASE=Contec GmbH - -+OUI:746F88* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:746FF7* - ID_OUI_FROM_DATABASE=Wistron Neweb Corporation - -@@ -81821,6 +82901,9 @@ OUI:747069* - OUI:7470FD* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:74718B* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:74721E* - ID_OUI_FROM_DATABASE=Edison Labs Inc. - -@@ -81845,6 +82928,9 @@ OUI:747548* - OUI:74765B* - ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. - -+OUI:74767D* -+ ID_OUI_FROM_DATABASE=shenzhen kexint technology co.,ltd -+ - OUI:747818* - ID_OUI_FROM_DATABASE=Jurumani Solutions - -@@ -81881,6 +82967,9 @@ OUI:7483C2* - OUI:7483EF* - ID_OUI_FROM_DATABASE=Arista Networks - -+OUI:748469* -+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd -+ - OUI:7484E1* - ID_OUI_FROM_DATABASE=Dongguan Haoyuan Electronics Co.,Ltd - -@@ -81974,6 +83063,9 @@ OUI:7495EC* - OUI:749637* - ID_OUI_FROM_DATABASE=Todaair Electronic Co., Ltd - -+OUI:749779* -+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ - OUI:749781* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -82073,6 +83165,9 @@ OUI:74B587* - OUI:74B6B6* - ID_OUI_FROM_DATABASE=eero inc. - -+OUI:74B725* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:74B7B3* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd - -@@ -82163,6 +83258,9 @@ OUI:74D285* - OUI:74D435* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -+OUI:74D4DD* -+ ID_OUI_FROM_DATABASE=Quanta Computer Inc. -+ - OUI:74D637* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -82187,6 +83285,9 @@ OUI:74D83E* - OUI:74D850* - ID_OUI_FROM_DATABASE=Evrisko Systems - -+OUI:74D9EB* -+ ID_OUI_FROM_DATABASE=Petabit Scale, Inc. -+ - OUI:74DA38* - ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. - -@@ -82202,6 +83303,9 @@ OUI:74DAEA* - OUI:74DBD1* - ID_OUI_FROM_DATABASE=Ebay Inc - -+OUI:74DDCB* -+ ID_OUI_FROM_DATABASE=China Leadshine Technology Co.,Ltd -+ - OUI:74DE2B* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -82463,6 +83567,9 @@ OUI:7802B7* - OUI:7802F8* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:78034F* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:780473* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -82565,6 +83672,9 @@ OUI:781305E* - OUI:7813E0* - ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD - -+OUI:78152D* -+ ID_OUI_FROM_DATABASE=UNION CHIP TECHNOLOGY LIMITED -+ - OUI:781735* - ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd. - -@@ -82607,6 +83717,9 @@ OUI:782079* - OUI:7820A5* - ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd - -+OUI:7820BD* -+ ID_OUI_FROM_DATABASE=Polysense (Beijing) Technologies Co. Ltd -+ - OUI:782184* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -82682,6 +83795,9 @@ OUI:78321B* - OUI:78324F* - ID_OUI_FROM_DATABASE=Millennium Group, Inc. - -+OUI:783486* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:7835A0* - ID_OUI_FROM_DATABASE=Zurn Industries LLC - -@@ -82835,6 +83951,9 @@ OUI:78595E* - OUI:785968* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:785B64* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:785C28* - ID_OUI_FROM_DATABASE=Prime Motion Inc. - -@@ -82919,6 +84038,9 @@ OUI:78653B* - OUI:786559* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:78669D* -+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD -+ - OUI:7866AE* - ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc. - -@@ -82952,6 +84074,9 @@ OUI:786DEB* - OUI:787052* - ID_OUI_FROM_DATABASE=Welotec GmbH - -+OUI:787104* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:78719C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -83090,6 +84215,9 @@ OUI:788E33* - OUI:7890A2* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:7891DE* -+ ID_OUI_FROM_DATABASE=Guangdong ACIGA Science&Technology Co.,Ltd -+ - OUI:7891E9* - ID_OUI_FROM_DATABASE=Raisecom Technology CO.,LTD - -@@ -83222,6 +84350,9 @@ OUI:78ACC0* - OUI:78AE0C* - ID_OUI_FROM_DATABASE=Far South Networks - -+OUI:78AF08* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:78AF58* - ID_OUI_FROM_DATABASE=GIMASI SA - -@@ -83469,7 +84600,7 @@ OUI:78D4F10* - ID_OUI_FROM_DATABASE=Burisch Elektronik Bauteile GmbH - - OUI:78D4F11* -- ID_OUI_FROM_DATABASE=Cartender -+ ID_OUI_FROM_DATABASE=Silla Industries - - OUI:78D4F12* - ID_OUI_FROM_DATABASE=Lyngsoe Systems -@@ -84137,6 +85268,9 @@ OUI:7C696B* - OUI:7C69F6* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:7C6A60* -+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -+ - OUI:7C6AB3* - ID_OUI_FROM_DATABASE=IBC TECHNOLOGIES INC. - -@@ -84216,7 +85350,7 @@ OUI:7C70BC9* - ID_OUI_FROM_DATABASE=dogtra - - OUI:7C70BCA* -- ID_OUI_FROM_DATABASE=Ametek VIS -+ ID_OUI_FROM_DATABASE=Motec GmbH - - OUI:7C70BCB* - ID_OUI_FROM_DATABASE=Tohan Engineering Corporation -@@ -84809,6 +85943,9 @@ OUI:7CDFA1* - OUI:7CE044* - ID_OUI_FROM_DATABASE=NEON Inc - -+OUI:7CE152* -+ ID_OUI_FROM_DATABASE=THE GOODYEAR TIRE & RUBBER COMPANY -+ - OUI:7CE1FF* - ID_OUI_FROM_DATABASE=Computer Performance, Inc. DBA Digital Loggers, Inc. - -@@ -84845,12 +85982,18 @@ OUI:7CEC79* - OUI:7CEC9B* - ID_OUI_FROM_DATABASE=Fuzhou Teraway Information Technology Co.,Ltd - -+OUI:7CECB1* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:7CED8D* - ID_OUI_FROM_DATABASE=Microsoft - - OUI:7CEF18* - ID_OUI_FROM_DATABASE=Creative Product Design Pty. Ltd. - -+OUI:7CEF40* -+ ID_OUI_FROM_DATABASE=Nextorage Corporation -+ - OUI:7CEF61* - ID_OUI_FROM_DATABASE=STR Elektronik Josef Schlechtinger GmbH - -@@ -84947,6 +86090,27 @@ OUI:80029C* - OUI:8002DF* - ID_OUI_FROM_DATABASE=ORA Inc. - -+OUI:8002F40* -+ ID_OUI_FROM_DATABASE=BK Networks Co,. Ltd. -+ -+OUI:8002F41* -+ ID_OUI_FROM_DATABASE=Sichuan lookout environment protection technology co.,Ltd -+ -+OUI:8002F43* -+ ID_OUI_FROM_DATABASE=Shenzhen Suanzi Technology Co., Ltd -+ -+OUI:8002F45* -+ ID_OUI_FROM_DATABASE=Sichuan Fanyi Technology Co. Ltd. -+ -+OUI:8002F49* -+ ID_OUI_FROM_DATABASE=XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+ -+OUI:8002F4A* -+ ID_OUI_FROM_DATABASE=PassiveLogic -+ -+OUI:8002F4C* -+ ID_OUI_FROM_DATABASE=Wuhan Glory Road Intelligent Technology Co., Ltd. -+ - OUI:800384* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -@@ -85172,6 +86336,9 @@ OUI:803B9A* - OUI:803BF6* - ID_OUI_FROM_DATABASE=LOOK EASY INTERNATIONAL LIMITED - -+OUI:803C20* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:803E48* - ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT - -@@ -85259,6 +86426,9 @@ OUI:8059FD* - OUI:805A04* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - -+OUI:805B65* -+ ID_OUI_FROM_DATABASE=LG Innotek -+ - OUI:805E0C* - ID_OUI_FROM_DATABASE=YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD. - -@@ -85274,6 +86444,9 @@ OUI:805FC5* - OUI:806007* - ID_OUI_FROM_DATABASE=RIM - -+OUI:806036* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:8060B7* - ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - -@@ -85304,6 +86477,9 @@ OUI:8065E9* - OUI:806629* - ID_OUI_FROM_DATABASE=Prescope Technologies CO.,LTD. - -+OUI:80691A* -+ ID_OUI_FROM_DATABASE=Belkin International Inc. -+ - OUI:806933* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -85535,6 +86711,9 @@ OUI:8096CA* - OUI:80971B* - ID_OUI_FROM_DATABASE=Altenergy Power System,Inc. - -+OUI:809733* -+ ID_OUI_FROM_DATABASE=Shenzhen Elebao Technology Co., Ltd -+ - OUI:809B20* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -85644,7 +86823,7 @@ OUI:80C16E* - ID_OUI_FROM_DATABASE=Hewlett Packard - - OUI:80C3BA* -- ID_OUI_FROM_DATABASE=Sennheiser electronic GmbH & Co. KG -+ ID_OUI_FROM_DATABASE=Sennheiser Consumer Audio GmbH - - OUI:80C501* - ID_OUI_FROM_DATABASE=OctoGate IT Security Systems GmbH -@@ -86300,6 +87479,9 @@ OUI:8468C8* - OUI:846991* - ID_OUI_FROM_DATABASE=Nokia - -+OUI:846993* -+ ID_OUI_FROM_DATABASE=HP Inc. -+ - OUI:846A66* - ID_OUI_FROM_DATABASE=Sumitomo Kizai Co.,Ltd. - -@@ -86315,6 +87497,9 @@ OUI:846EB1* - OUI:846FCE* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -+OUI:8470D7* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:847127* - ID_OUI_FROM_DATABASE=Silicon Laboratories - -@@ -86408,6 +87593,9 @@ OUI:848506* - OUI:84850A* - ID_OUI_FROM_DATABASE=Hella Sonnen- und Wetterschutztechnik GmbH - -+OUI:848553* -+ ID_OUI_FROM_DATABASE=Biznes Systema Telecom, LLC -+ - OUI:8485E6* - ID_OUI_FROM_DATABASE=Guangdong Asano Technology CO.,Ltd. - -@@ -86540,6 +87728,9 @@ OUI:84930C* - OUI:8493A0* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:8493B2* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:84948C* - ID_OUI_FROM_DATABASE=Hitron Technologies. Inc - -@@ -86711,6 +87902,9 @@ OUI:84C3E8* - OUI:84C5A6* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:84C692* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:84C727* - ID_OUI_FROM_DATABASE=Gnodal Ltd - -@@ -86918,6 +88112,9 @@ OUI:84F129* - OUI:84F147* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:84F1D0* -+ ID_OUI_FROM_DATABASE=EHOOME IOT PRIVATE LIMITED -+ - OUI:84F3EB* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -86960,6 +88157,12 @@ OUI:880118* - OUI:8801F2* - ID_OUI_FROM_DATABASE=Vitec System Engineering Inc. - -+OUI:8801F9* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ -+OUI:88034C* -+ ID_OUI_FROM_DATABASE=WEIFANG GOERTEK ELECTRONICS CO.,LTD -+ - OUI:880355* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -@@ -87128,6 +88331,9 @@ OUI:883C1C* - OUI:883D24* - ID_OUI_FROM_DATABASE=Google, Inc. - -+OUI:883F0C* -+ ID_OUI_FROM_DATABASE=system a.v. co., ltd. -+ - OUI:883F4A* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -87359,6 +88565,9 @@ OUI:8866A5* - OUI:88685C* - ID_OUI_FROM_DATABASE=Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd - -+OUI:88693D* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:886AB1* - ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. - -@@ -87482,6 +88691,9 @@ OUI:888E68* - OUI:888E7F* - ID_OUI_FROM_DATABASE=ATOP CORPORATION - -+OUI:888FA4* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:889009* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -87722,6 +88934,9 @@ OUI:88BFE4* - OUI:88C08B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:88C174* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:88C227* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -87797,6 +89012,9 @@ OUI:88C9B3E* - OUI:88C9D0* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - -+OUI:88C9E8* -+ ID_OUI_FROM_DATABASE=Sony Corporation -+ - OUI:88CB87* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -87941,6 +89159,9 @@ OUI:88F031* - OUI:88F077* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:88F2BD* -+ ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd. -+ - OUI:88F488* - ID_OUI_FROM_DATABASE=cellon communications technology(shenzhen)Co.,Ltd. - -@@ -87959,6 +89180,9 @@ OUI:88F7C7* - OUI:88F872* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:88FC5D* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:88FCA6* - ID_OUI_FROM_DATABASE=devolo AG - -@@ -88079,12 +89303,18 @@ OUI:8C147DE* - OUI:8C14B4* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:8C1553* -+ ID_OUI_FROM_DATABASE=Beijing Memblaze Technology Co Ltd -+ - OUI:8C15C7* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:8C1645* - ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd - -+OUI:8C1759* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:8C17B6* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -88193,6 +89423,9 @@ OUI:8C1CDAE* - OUI:8C1D96* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:8C1E80* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:8C1ED9* - ID_OUI_FROM_DATABASE=Beijing Unigroup Tsingteng Microsystem Co., LTD. - -@@ -88202,6 +89435,24 @@ OUI:8C1F64000* - OUI:8C1F64003* - ID_OUI_FROM_DATABASE=Brighten Controls LLP - -+OUI:8C1F64017* -+ ID_OUI_FROM_DATABASE=Farmote Limited -+ -+OUI:8C1F6401A* -+ ID_OUI_FROM_DATABASE=Paragraf -+ -+OUI:8C1F6401E* -+ ID_OUI_FROM_DATABASE=SCIREQ Scientific Respiratory Equipment Inc -+ -+OUI:8C1F64045* -+ ID_OUI_FROM_DATABASE=VEILUX INC. -+ -+OUI:8C1F64059* -+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme -+ -+OUI:8C1F6405F* -+ ID_OUI_FROM_DATABASE=ESCAD AUTOMATION GmbH -+ - OUI:8C1F6406D* - ID_OUI_FROM_DATABASE=Monnit Corporation - -@@ -88223,6 +89474,9 @@ OUI:8C1F64086* - OUI:8C1F6408B* - ID_OUI_FROM_DATABASE=Shanghai Shenxu Technology Co., Ltd - -+OUI:8C1F6408F* -+ ID_OUI_FROM_DATABASE=AixControl GmbH -+ - OUI:8C1F64099* - ID_OUI_FROM_DATABASE=Pantherun Technologies Pvt Ltd - -@@ -88238,9 +89492,18 @@ OUI:8C1F640A8* - OUI:8C1F640AB* - ID_OUI_FROM_DATABASE=Norbit ODM AS - -+OUI:8C1F640AF* -+ ID_OUI_FROM_DATABASE=FORSEE POWER -+ -+OUI:8C1F640B0* -+ ID_OUI_FROM_DATABASE=Bunka Shutter Co., Ltd. -+ - OUI:8C1F640B8* - ID_OUI_FROM_DATABASE=Signatrol Ltd - -+OUI:8C1F640C0* -+ ID_OUI_FROM_DATABASE=Active Research Limited -+ - OUI:8C1F640C5* - ID_OUI_FROM_DATABASE=TechnipFMC - -@@ -88250,6 +89513,9 @@ OUI:8C1F640D6* - OUI:8C1F640E0* - ID_OUI_FROM_DATABASE=Autopharma - -+OUI:8C1F640E6* -+ ID_OUI_FROM_DATABASE=Cleanwatts Digital, S.A. -+ - OUI:8C1F640EA* - ID_OUI_FROM_DATABASE=SmartSky Networks LLC - -@@ -88268,6 +89534,9 @@ OUI:8C1F64103* - OUI:8C1F64111* - ID_OUI_FROM_DATABASE=ISAC SRL - -+OUI:8C1F64115* -+ ID_OUI_FROM_DATABASE=Neuralog LP -+ - OUI:8C1F64118* - ID_OUI_FROM_DATABASE=Automata GmbH & Co. KG - -@@ -88277,6 +89546,9 @@ OUI:8C1F6411F* - OUI:8C1F64128* - ID_OUI_FROM_DATABASE=YULISTA INTEGRATED SOLUTION - -+OUI:8C1F6412B* -+ ID_OUI_FROM_DATABASE=Beijing Tongtech Technology Co., Ltd. -+ - OUI:8C1F64135* - ID_OUI_FROM_DATABASE=Yuval Fichman - -@@ -88304,6 +89576,9 @@ OUI:8C1F64177* - OUI:8C1F64193* - ID_OUI_FROM_DATABASE=Sicon srl - -+OUI:8C1F64194* -+ ID_OUI_FROM_DATABASE=TIFLEX -+ - OUI:8C1F6419B* - ID_OUI_FROM_DATABASE=FeedFlo - -@@ -88325,6 +89600,9 @@ OUI:8C1F641BF* - OUI:8C1F641C2* - ID_OUI_FROM_DATABASE=Solid Invent Ltda. - -+OUI:8C1F641CB* -+ ID_OUI_FROM_DATABASE=SASYS e.K. -+ - OUI:8C1F641D1* - ID_OUI_FROM_DATABASE=AS Strömungstechnik GmbH - -@@ -88337,6 +89615,9 @@ OUI:8C1F641E1* - OUI:8C1F641E3* - ID_OUI_FROM_DATABASE=WBNet - -+OUI:8C1F641EF* -+ ID_OUI_FROM_DATABASE=Tantronic AG -+ - OUI:8C1F64204* - ID_OUI_FROM_DATABASE=castcore - -@@ -88352,9 +89633,15 @@ OUI:8C1F64224* - OUI:8C1F64227* - ID_OUI_FROM_DATABASE=Digilens - -+OUI:8C1F6422E* -+ ID_OUI_FROM_DATABASE=Jide Car Rastreamento e Monitoramento LTDA -+ - OUI:8C1F64242* - ID_OUI_FROM_DATABASE=GIORDANO CONTROLS SPA - -+OUI:8C1F64254* -+ ID_OUI_FROM_DATABASE=Zhuhai Yunzhou Intelligence Technology Ltd. -+ - OUI:8C1F64256* - ID_OUI_FROM_DATABASE=Landinger - -@@ -88370,9 +89657,15 @@ OUI:8C1F64264* - OUI:8C1F64270* - ID_OUI_FROM_DATABASE=Xi‘an Hangguang Satellite and Control Technology Co.,Ltd - -+OUI:8C1F64274* -+ ID_OUI_FROM_DATABASE=INVIXIUM ACCESS INC -+ - OUI:8C1F6428A* - ID_OUI_FROM_DATABASE=Arcopie - -+OUI:8C1F6428C* -+ ID_OUI_FROM_DATABASE=Sakura Seiki Co.,Ltd. -+ - OUI:8C1F64296* - ID_OUI_FROM_DATABASE=Roog zhi tong Technology(Beijing) Co.,Ltd - -@@ -88391,6 +89684,9 @@ OUI:8C1F642B6* - OUI:8C1F642C2* - ID_OUI_FROM_DATABASE=TEX COMPUTER SRL - -+OUI:8C1F642C3* -+ ID_OUI_FROM_DATABASE=TeraDiode / Panasonic -+ - OUI:8C1F642C8* - ID_OUI_FROM_DATABASE=BRS Sistemas Eletrônicos - -@@ -88403,6 +89699,9 @@ OUI:8C1F642EF* - OUI:8C1F642F5* - ID_OUI_FROM_DATABASE=Florida R&D Associates LLC - -+OUI:8C1F642FD* -+ ID_OUI_FROM_DATABASE=Enestone Corporation -+ - OUI:8C1F64304* - ID_OUI_FROM_DATABASE=Jemac Sweden AB - -@@ -88412,6 +89711,9 @@ OUI:8C1F64306* - OUI:8C1F6430A* - ID_OUI_FROM_DATABASE=XCOM Labs - -+OUI:8C1F64316* -+ ID_OUI_FROM_DATABASE=Potter Electric Signal Company -+ - OUI:8C1F6431A* - ID_OUI_FROM_DATABASE=Asiga Pty Ltd - -@@ -88421,6 +89723,9 @@ OUI:8C1F64328* - OUI:8C1F64330* - ID_OUI_FROM_DATABASE=Vision Systems Safety Tech - -+OUI:8C1F6435C* -+ ID_OUI_FROM_DATABASE=Opgal Optronic Industries ltd -+ - OUI:8C1F6435D* - ID_OUI_FROM_DATABASE=Security&Best - -@@ -88436,9 +89741,15 @@ OUI:8C1F64382* - OUI:8C1F64385* - ID_OUI_FROM_DATABASE=Multilane Inc - -+OUI:8C1F6438B* -+ ID_OUI_FROM_DATABASE=Borrell USA Corp -+ - OUI:8C1F6438D* - ID_OUI_FROM_DATABASE=Wilson Electronics - -+OUI:8C1F6438E* -+ ID_OUI_FROM_DATABASE=Wartsila Voyage Limited -+ - OUI:8C1F64391* - ID_OUI_FROM_DATABASE=CPC (UK) - -@@ -88454,6 +89765,9 @@ OUI:8C1F643A4* - OUI:8C1F643AD* - ID_OUI_FROM_DATABASE=TowerIQ - -+OUI:8C1F643B2* -+ ID_OUI_FROM_DATABASE=Real Digital -+ - OUI:8C1F643B5* - ID_OUI_FROM_DATABASE=SVMS - -@@ -88463,18 +89777,30 @@ OUI:8C1F643C4* - OUI:8C1F643C6* - ID_OUI_FROM_DATABASE=Wavestream Corp - -+OUI:8C1F643D1* -+ ID_OUI_FROM_DATABASE=EMIT GmbH -+ - OUI:8C1F643E0* - ID_OUI_FROM_DATABASE=YPP Corporation - - OUI:8C1F643E8* - ID_OUI_FROM_DATABASE=Ruichuangte - -+OUI:8C1F643F4* -+ ID_OUI_FROM_DATABASE=ACTELSER S.L. -+ - OUI:8C1F643FE* - ID_OUI_FROM_DATABASE=Plum sp. z.o.o. - - OUI:8C1F643FF* - ID_OUI_FROM_DATABASE=UISEE(SHANGHAI) AUTOMOTIVE TECHNOLOGIES LTD. - -+OUI:8C1F6440C* -+ ID_OUI_FROM_DATABASE=Sichuan Aiyijan Technology Company Ltd. -+ -+OUI:8C1F6440E* -+ ID_OUI_FROM_DATABASE=Baker Hughes EMEA -+ - OUI:8C1F64414* - ID_OUI_FROM_DATABASE=INSEVIS GmbH - -@@ -88484,6 +89810,9 @@ OUI:8C1F64417* - OUI:8C1F6441D* - ID_OUI_FROM_DATABASE=Aspen Spectra Sdn Bhd - -+OUI:8C1F64429* -+ ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS -+ - OUI:8C1F6442B* - ID_OUI_FROM_DATABASE=Gamber Johnson-LLC - -@@ -88508,12 +89837,21 @@ OUI:8C1F64466* - OUI:8C1F64472* - ID_OUI_FROM_DATABASE=Surge Networks, Inc. - -+OUI:8C1F6447A* -+ ID_OUI_FROM_DATABASE=Missing Link Electronics, Inc. -+ -+OUI:8C1F64489* -+ ID_OUI_FROM_DATABASE=HUPI -+ - OUI:8C1F64493* - ID_OUI_FROM_DATABASE=Security Products International, LLC - - OUI:8C1F64498* - ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd - -+OUI:8C1F644AC* -+ ID_OUI_FROM_DATABASE=Vekto -+ - OUI:8C1F644B0* - ID_OUI_FROM_DATABASE=U -MEI-DAH INT'L ENTERPRISE CO.,LTD. - -@@ -88529,6 +89867,9 @@ OUI:8C1F644C7* - OUI:8C1F644CD* - ID_OUI_FROM_DATABASE=Guan Show Technologe Co., Ltd. - -+OUI:8C1F644D6* -+ ID_OUI_FROM_DATABASE=Dan Smith LLC -+ - OUI:8C1F644DA* - ID_OUI_FROM_DATABASE=DTDS Technology Pte Ltd - -@@ -88538,6 +89879,12 @@ OUI:8C1F644DB* - OUI:8C1F644DD* - ID_OUI_FROM_DATABASE=Griffyn Robotech Private Limited - -+OUI:8C1F644E0* -+ ID_OUI_FROM_DATABASE=PuS GmbH und Co. KG -+ -+OUI:8C1F644E5* -+ ID_OUI_FROM_DATABASE=Renukas Castle Hard- and Software -+ - OUI:8C1F644EC* - ID_OUI_FROM_DATABASE=XOR UK Corporation Limited - -@@ -88547,6 +89894,9 @@ OUI:8C1F644F0* - OUI:8C1F644FA* - ID_OUI_FROM_DATABASE=Sanskruti - -+OUI:8C1F64504* -+ ID_OUI_FROM_DATABASE=EA Elektroautomatik GmbH & Co. KG -+ - OUI:8C1F6450A* - ID_OUI_FROM_DATABASE=BELLCO TRADING COMPANY (PVT) LTD - -@@ -88562,6 +89912,12 @@ OUI:8C1F64517* - OUI:8C1F64521* - ID_OUI_FROM_DATABASE=MP-SENSOR GmbH - -+OUI:8C1F64525* -+ ID_OUI_FROM_DATABASE=United States Technologies Inc. -+ -+OUI:8C1F6452D* -+ ID_OUI_FROM_DATABASE=Cubic ITS, Inc. dba GRIDSMART Technologies -+ - OUI:8C1F64534* - ID_OUI_FROM_DATABASE=SURYA ELECTRONICS - -@@ -88574,6 +89930,9 @@ OUI:8C1F64536* - OUI:8C1F6453A* - ID_OUI_FROM_DATABASE=TPVision Europe B.V - -+OUI:8C1F6453B* -+ ID_OUI_FROM_DATABASE=REFU Storage System GmbH -+ - OUI:8C1F6453D* - ID_OUI_FROM_DATABASE=NEXCONTECH - -@@ -88589,6 +89948,15 @@ OUI:8C1F64549* - OUI:8C1F6454C* - ID_OUI_FROM_DATABASE=Gemini Electronics B.V. - -+OUI:8C1F6454F* -+ ID_OUI_FROM_DATABASE=Toolplanet Co., Ltd. -+ -+OUI:8C1F64552* -+ ID_OUI_FROM_DATABASE=Proterra, Inc -+ -+OUI:8C1F64557* -+ ID_OUI_FROM_DATABASE=In-lite Design BV -+ - OUI:8C1F6455E* - ID_OUI_FROM_DATABASE=HANATEKSYSTEM - -@@ -88607,9 +89975,18 @@ OUI:8C1F6457A* - OUI:8C1F6457B* - ID_OUI_FROM_DATABASE=Potter Electric Signal Company - -+OUI:8C1F64581* -+ ID_OUI_FROM_DATABASE=SpectraDynamics, Inc. -+ -+OUI:8C1F6459F* -+ ID_OUI_FROM_DATABASE=Delta Computers LLC. -+ - OUI:8C1F645AE* - ID_OUI_FROM_DATABASE=Suzhou Motorcomm Electronic Technology Co., Ltd - -+OUI:8C1F645B3* -+ ID_OUI_FROM_DATABASE=eumig industrie-TV GmbH. -+ - OUI:8C1F645BC* - ID_OUI_FROM_DATABASE=HEITEC AG - -@@ -88640,6 +90017,12 @@ OUI:8C1F64619* - OUI:8C1F6461F* - ID_OUI_FROM_DATABASE=Lightworks GmbH - -+OUI:8C1F64622* -+ ID_OUI_FROM_DATABASE=Logical Product -+ -+OUI:8C1F64634* -+ ID_OUI_FROM_DATABASE=AML -+ - OUI:8C1F64638* - ID_OUI_FROM_DATABASE=THUNDER DATA TAIWAN CO., LTD. - -@@ -88664,15 +90047,27 @@ OUI:8C1F64656* - OUI:8C1F6465F* - ID_OUI_FROM_DATABASE=Astrometric Instruments, Inc. - -+OUI:8C1F64660* -+ ID_OUI_FROM_DATABASE=LLC NTPC -+ - OUI:8C1F64663* - ID_OUI_FROM_DATABASE=mal-tech Technological Solutions Ltd/CRISP - - OUI:8C1F6466C* - ID_OUI_FROM_DATABASE=LINEAGE POWER PVT LTD., - -+OUI:8C1F64672* -+ ID_OUI_FROM_DATABASE=Farmobile LLC -+ - OUI:8C1F64675* - ID_OUI_FROM_DATABASE=Transit Solutions, LLC. - -+OUI:8C1F6467A* -+ ID_OUI_FROM_DATABASE=MG s.r.l. -+ -+OUI:8C1F64697* -+ ID_OUI_FROM_DATABASE=Sontay Ltd. -+ - OUI:8C1F6469E* - ID_OUI_FROM_DATABASE=AT-Automation Technology GmbH - -@@ -88709,9 +90104,18 @@ OUI:8C1F646EA* - OUI:8C1F646F4* - ID_OUI_FROM_DATABASE=Elsist Srl - -+OUI:8C1F646F9* -+ ID_OUI_FROM_DATABASE=ANDDORO LLC -+ - OUI:8C1F646FC* - ID_OUI_FROM_DATABASE=HM Systems A/S - -+OUI:8C1F64702* -+ ID_OUI_FROM_DATABASE=AIDirections -+ -+OUI:8C1F64703* -+ ID_OUI_FROM_DATABASE=Calnex Solutions plc -+ - OUI:8C1F64707* - ID_OUI_FROM_DATABASE=OAS AG - -@@ -88724,6 +90128,9 @@ OUI:8C1F6470E* - OUI:8C1F64712* - ID_OUI_FROM_DATABASE=Nexion Data Systems P/L - -+OUI:8C1F64721* -+ ID_OUI_FROM_DATABASE=M/S MILIND RAMACHANDRA RAJWADE -+ - OUI:8C1F64726* - ID_OUI_FROM_DATABASE=DAVE SRL - -@@ -88733,6 +90140,9 @@ OUI:8C1F6472A* - OUI:8C1F6472C* - ID_OUI_FROM_DATABASE=Antai technology Co.,Ltd - -+OUI:8C1F6473C* -+ ID_OUI_FROM_DATABASE=REO AG -+ - OUI:8C1F6473D* - ID_OUI_FROM_DATABASE=NewAgeMicro - -@@ -88745,12 +90155,18 @@ OUI:8C1F64747* - OUI:8C1F6475F* - ID_OUI_FROM_DATABASE=ASTRACOM Co. Ltd - -+OUI:8C1F64765* -+ ID_OUI_FROM_DATABASE=Micro Electroninc Products -+ - OUI:8C1F64768* - ID_OUI_FROM_DATABASE=mapna group - - OUI:8C1F64774* - ID_OUI_FROM_DATABASE=navXperience GmbH - -+OUI:8C1F64775* -+ ID_OUI_FROM_DATABASE=Becton Dickinson -+ - OUI:8C1F6477C* - ID_OUI_FROM_DATABASE=Orange Tree Technologies Ltd - -@@ -88778,6 +90194,15 @@ OUI:8C1F647A1* - OUI:8C1F647A6* - ID_OUI_FROM_DATABASE=OTMetric - -+OUI:8C1F647A7* -+ ID_OUI_FROM_DATABASE=Timegate Instruments Ltd. -+ -+OUI:8C1F647AA* -+ ID_OUI_FROM_DATABASE=XSENSOR Technology Corp. -+ -+OUI:8C1F647B7* -+ ID_OUI_FROM_DATABASE=Weidmann Tecnologia Electrica de Mexico -+ - OUI:8C1F647B8* - ID_OUI_FROM_DATABASE=TimeMachines Inc. - -@@ -88790,12 +90215,18 @@ OUI:8C1F647C8* - OUI:8C1F647D2* - ID_OUI_FROM_DATABASE=Enlaps - -+OUI:8C1F647D3* -+ ID_OUI_FROM_DATABASE=Suntech Engineering -+ - OUI:8C1F647D6* - ID_OUI_FROM_DATABASE=Algodue Elettronica Srl - - OUI:8C1F647DD* - ID_OUI_FROM_DATABASE=TAKASAKI KYODO COMPUTING CENTER Co.,LTD. - -+OUI:8C1F647DE* -+ ID_OUI_FROM_DATABASE=SOCNOC AI Inc -+ - OUI:8C1F647EC* - ID_OUI_FROM_DATABASE=Methods2Business B.V. - -@@ -88805,12 +90236,18 @@ OUI:8C1F647F1* - OUI:8C1F64801* - ID_OUI_FROM_DATABASE=Zhejiang Laolan Information Technology Co., Ltd - -+OUI:8C1F64807* -+ ID_OUI_FROM_DATABASE=GIORDANO CONTROLS SPA -+ - OUI:8C1F6481A* - ID_OUI_FROM_DATABASE=Gemini Electronics B.V. - - OUI:8C1F64820* - ID_OUI_FROM_DATABASE=TIAMA - -+OUI:8C1F64837* -+ ID_OUI_FROM_DATABASE=Rumble, Inc -+ - OUI:8C1F6483A* - ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG - -@@ -88820,9 +90257,15 @@ OUI:8C1F6483C* - OUI:8C1F64848* - ID_OUI_FROM_DATABASE=Jena-Optronik GmbH - -+OUI:8C1F6484C* -+ ID_OUI_FROM_DATABASE=AvMap srlu -+ - OUI:8C1F6484E* - ID_OUI_FROM_DATABASE=West Pharmaceutical Services, Inc. - -+OUI:8C1F64855* -+ ID_OUI_FROM_DATABASE=e.kundenservice Netz GmbH -+ - OUI:8C1F64856* - ID_OUI_FROM_DATABASE=Garten Automation - -@@ -88832,12 +90275,18 @@ OUI:8C1F6485B* - OUI:8C1F64878* - ID_OUI_FROM_DATABASE=Green Access Ltd - -+OUI:8C1F64883* -+ ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH -+ - OUI:8C1F6488D* - ID_OUI_FROM_DATABASE=Pantherun Technologies Pvt Ltd - - OUI:8C1F64892* - ID_OUI_FROM_DATABASE=MDI Industrial - -+OUI:8C1F6489E* -+ ID_OUI_FROM_DATABASE=Cinetix Srl -+ - OUI:8C1F648A4* - ID_OUI_FROM_DATABASE=Genesis Technologies AG - -@@ -88865,27 +90314,42 @@ OUI:8C1F648C2* - OUI:8C1F648C4* - ID_OUI_FROM_DATABASE=Hermes Network Inc - -+OUI:8C1F648CF* -+ ID_OUI_FROM_DATABASE=Diffraction Limited -+ - OUI:8C1F648D1* - ID_OUI_FROM_DATABASE=Orlaco Products B.V. - - OUI:8C1F648D4* - ID_OUI_FROM_DATABASE=Recab Sweden AB - -+OUI:8C1F648D9* -+ ID_OUI_FROM_DATABASE=Pietro Fiorentini Spa -+ - OUI:8C1F648E2* - ID_OUI_FROM_DATABASE=ALPHA Corporation - -+OUI:8C1F648E9* -+ ID_OUI_FROM_DATABASE=Vesperix Corporation -+ - OUI:8C1F648EE* - ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS - - OUI:8C1F64903* - ID_OUI_FROM_DATABASE=Portrait Displays, Inc. - -+OUI:8C1F64905* -+ ID_OUI_FROM_DATABASE=Qualitrol LLC -+ - OUI:8C1F64909* - ID_OUI_FROM_DATABASE=MATELEX - - OUI:8C1F6490E* - ID_OUI_FROM_DATABASE=Xacti Corporation - -+OUI:8C1F64911* -+ ID_OUI_FROM_DATABASE=EOLANE -+ - OUI:8C1F64918* - ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS - -@@ -88898,15 +90362,30 @@ OUI:8C1F6492A* - OUI:8C1F6492D* - ID_OUI_FROM_DATABASE=IVOR Intelligent Electrical Appliance Co., Ltd - -+OUI:8C1F64939* -+ ID_OUI_FROM_DATABASE=SPIT Technology, Inc -+ -+OUI:8C1F64943* -+ ID_OUI_FROM_DATABASE=Autark GmbH -+ - OUI:8C1F64947* - ID_OUI_FROM_DATABASE=LLC TC Vympel - -+OUI:8C1F6494E* -+ ID_OUI_FROM_DATABASE=Monnit Corporation -+ - OUI:8C1F64956* - ID_OUI_FROM_DATABASE=Paulmann Licht GmbH - -+OUI:8C1F64958* -+ ID_OUI_FROM_DATABASE=Sanchar Telesystems limited -+ - OUI:8C1F6495A* - ID_OUI_FROM_DATABASE=Shenzhen Longyun Lighting Electric Appliances Co., Ltd - -+OUI:8C1F64967* -+ ID_OUI_FROM_DATABASE=DAVE SRL -+ - OUI:8C1F64971* - ID_OUI_FROM_DATABASE=INFRASAFE/ ADVANTOR SYSTEMS - -@@ -88925,6 +90404,12 @@ OUI:8C1F64998* - OUI:8C1F649A6* - ID_OUI_FROM_DATABASE=INSTITUTO DE GESTÃO, REDES TECNOLÓGICAS E NERGIAS - -+OUI:8C1F649BA* -+ ID_OUI_FROM_DATABASE=WINTUS SYSTEM -+ -+OUI:8C1F649BD* -+ ID_OUI_FROM_DATABASE=ATM SOLUTIONS -+ - OUI:8C1F649C1* - ID_OUI_FROM_DATABASE=RealWear - -@@ -88937,6 +90422,9 @@ OUI:8C1F649CE* - OUI:8C1F649CF* - ID_OUI_FROM_DATABASE=ASAP Electronics GmbH - -+OUI:8C1F649D4* -+ ID_OUI_FROM_DATABASE=Wolfspyre Labs -+ - OUI:8C1F649D8* - ID_OUI_FROM_DATABASE=Integer.pl S.A. - -@@ -88946,6 +90434,9 @@ OUI:8C1F649F0* - OUI:8C1F649F2* - ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme - -+OUI:8C1F649FA* -+ ID_OUI_FROM_DATABASE=METRONA-Union GmbH -+ - OUI:8C1F649FD* - ID_OUI_FROM_DATABASE=Vishay Nobel AB - -@@ -88958,6 +90449,9 @@ OUI:8C1F64A01* - OUI:8C1F64A07* - ID_OUI_FROM_DATABASE=GJD Manufacturing - -+OUI:8C1F64A1B* -+ ID_OUI_FROM_DATABASE=Zilica Limited -+ - OUI:8C1F64A29* - ID_OUI_FROM_DATABASE=Ringtail Security - -@@ -88970,8 +90464,14 @@ OUI:8C1F64A32* - OUI:8C1F64A38* - ID_OUI_FROM_DATABASE=NuGrid Power - -+OUI:8C1F64A42* -+ ID_OUI_FROM_DATABASE=Rodgers Instruments US LLC -+ -+OUI:8C1F64A44* -+ ID_OUI_FROM_DATABASE=Rapidev Pvt Ltd -+ - OUI:8C1F64A4C* -- ID_OUI_FROM_DATABASE=Flextronics International Kft. -+ ID_OUI_FROM_DATABASE=Flextronics International Kft - - OUI:8C1F64A4E* - ID_OUI_FROM_DATABASE=Syscom Instruments SA -@@ -88982,12 +90482,27 @@ OUI:8C1F64A57* - OUI:8C1F64A5C* - ID_OUI_FROM_DATABASE=Prosys - -+OUI:8C1F64A5D* -+ ID_OUI_FROM_DATABASE=Shenzhen zhushida Technology lnformation Co.,Ltd -+ -+OUI:8C1F64A6A* -+ ID_OUI_FROM_DATABASE=Sphere Com Services Pvt Ltd -+ -+OUI:8C1F64A6D* -+ ID_OUI_FROM_DATABASE=CyberneX Co., Ltd -+ - OUI:8C1F64A76* - ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH - -+OUI:8C1F64A84* -+ ID_OUI_FROM_DATABASE=Beijing Wenrise Technology Co., Ltd. -+ - OUI:8C1F64A94* - ID_OUI_FROM_DATABASE=Future wave ultra tech Company - -+OUI:8C1F64A97* -+ ID_OUI_FROM_DATABASE=Integer.pl S.A. -+ - OUI:8C1F64A9A* - ID_OUI_FROM_DATABASE=Signasystems Elektronik San. ve Tic. Ltd. Sti. - -@@ -88997,9 +90512,18 @@ OUI:8C1F64AA4* - OUI:8C1F64AAB* - ID_OUI_FROM_DATABASE=BlueSword Intelligent Technology Co., Ltd. - -+OUI:8C1F64AB4* -+ ID_OUI_FROM_DATABASE=Beijing Zhongchen Microelectronics Co.,Ltd -+ - OUI:8C1F64AB5* - ID_OUI_FROM_DATABASE=JUSTMORPH PTE. LTD. - -+OUI:8C1F64AC0* -+ ID_OUI_FROM_DATABASE=AIQuatro -+ -+OUI:8C1F64AC5* -+ ID_OUI_FROM_DATABASE=Forever Engineering Systems Pvt. Ltd. -+ - OUI:8C1F64ACE* - ID_OUI_FROM_DATABASE=Rayhaan Networks - -@@ -89009,6 +90533,9 @@ OUI:8C1F64AD2* - OUI:8C1F64AE1* - ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd - -+OUI:8C1F64AE8* -+ ID_OUI_FROM_DATABASE=ADETEC SAS -+ - OUI:8C1F64AED* - ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme - -@@ -89018,6 +90545,9 @@ OUI:8C1F64AEF* - OUI:8C1F64AF7* - ID_OUI_FROM_DATABASE=ard sa - -+OUI:8C1F64B01* -+ ID_OUI_FROM_DATABASE=noah -+ - OUI:8C1F64B03* - ID_OUI_FROM_DATABASE=Shenzhen Pisoftware Technology Co.,Ltd. - -@@ -89033,6 +90563,9 @@ OUI:8C1F64B22* - OUI:8C1F64B2C* - ID_OUI_FROM_DATABASE=SANMINA ISRAEL MEDICAL SYSTEMS LTD - -+OUI:8C1F64B3B* -+ ID_OUI_FROM_DATABASE=Sicon srl -+ - OUI:8C1F64B3D* - ID_OUI_FROM_DATABASE=RealD, Inc. - -@@ -89051,6 +90584,12 @@ OUI:8C1F64B64* - OUI:8C1F64B77* - ID_OUI_FROM_DATABASE=Carestream Dental LLC - -+OUI:8C1F64B7B* -+ ID_OUI_FROM_DATABASE=Gateview Technologies -+ -+OUI:8C1F64B7C* -+ ID_OUI_FROM_DATABASE=EVERNET CO,.LTD TAIWAN -+ - OUI:8C1F64B82* - ID_OUI_FROM_DATABASE=Seed Core Co., LTD. - -@@ -89060,6 +90599,9 @@ OUI:8C1F64B84* - OUI:8C1F64B8D* - ID_OUI_FROM_DATABASE=Tongye lnnovation Science and Technology (Shenzhen) Co.,Ltd - -+OUI:8C1F64B92* -+ ID_OUI_FROM_DATABASE=Neurable -+ - OUI:8C1F64B97* - ID_OUI_FROM_DATABASE=Gemini Electronics B.V. - -@@ -89072,18 +90614,33 @@ OUI:8C1F64BA3* - OUI:8C1F64BC0* - ID_OUI_FROM_DATABASE=GS Elektromedizinsiche Geräte G. Stemple GmbH - -+OUI:8C1F64BC2* -+ ID_OUI_FROM_DATABASE=Huz Electronics Ltd -+ - OUI:8C1F64BC6* - ID_OUI_FROM_DATABASE=Chengdu ZiChen Time&Frequency Technology Co.,Ltd - -+OUI:8C1F64BD3* -+ ID_OUI_FROM_DATABASE=IO Master Technology -+ -+OUI:8C1F64BD6* -+ ID_OUI_FROM_DATABASE=NOVA Products GmbH -+ - OUI:8C1F64BD7* - ID_OUI_FROM_DATABASE=Union Electronic. - - OUI:8C1F64BEE* - ID_OUI_FROM_DATABASE=Sirius LLC - -+OUI:8C1F64BF0* -+ ID_OUI_FROM_DATABASE=Newtec A/S -+ - OUI:8C1F64BF4* - ID_OUI_FROM_DATABASE=Fluid Components Intl - -+OUI:8C1F64BFB* -+ ID_OUI_FROM_DATABASE=TechArgos -+ - OUI:8C1F64C01* - ID_OUI_FROM_DATABASE=HORIBA ABX SAS - -@@ -89096,6 +90653,9 @@ OUI:8C1F64C0C* - OUI:8C1F64C1F* - ID_OUI_FROM_DATABASE=Esys Srl - -+OUI:8C1F64C24* -+ ID_OUI_FROM_DATABASE=Alifax S.r.l. -+ - OUI:8C1F64C27* - ID_OUI_FROM_DATABASE=Lift Ventures, Inc - -@@ -89105,21 +90665,39 @@ OUI:8C1F64C28* - OUI:8C1F64C2F* - ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. - -+OUI:8C1F64C38* -+ ID_OUI_FROM_DATABASE=ECO-ADAPT -+ - OUI:8C1F64C40* - ID_OUI_FROM_DATABASE=Sciospec Scientific Instruments GmbH - - OUI:8C1F64C41* - ID_OUI_FROM_DATABASE=Katronic AG & Co. KG - -+OUI:8C1F64C4C* -+ ID_OUI_FROM_DATABASE=Lumiplan Duhamel -+ - OUI:8C1F64C50* - ID_OUI_FROM_DATABASE=Spacee - - OUI:8C1F64C54* - ID_OUI_FROM_DATABASE=First Mode - -+OUI:8C1F64C68* -+ ID_OUI_FROM_DATABASE=FIBERME COMMUNICATIONS LLC -+ -+OUI:8C1F64C6B* -+ ID_OUI_FROM_DATABASE=Mediana -+ - OUI:8C1F64C7C* - ID_OUI_FROM_DATABASE=MERKLE Schweissanlagen-Technik GmbH - -+OUI:8C1F64C80* -+ ID_OUI_FROM_DATABASE=VECOS Europe B.V. -+ -+OUI:8C1F64C8F* -+ ID_OUI_FROM_DATABASE=JW Froehlich Maschinenfabrik GmbH -+ - OUI:8C1F64C97* - ID_OUI_FROM_DATABASE=Magnet-Physik Dr. Steingroever GmbH - -@@ -89135,12 +90713,18 @@ OUI:8C1F64CAD* - OUI:8C1F64CBE* - ID_OUI_FROM_DATABASE=Circa Enterprises Inc - -+OUI:8C1F64CCB* -+ ID_OUI_FROM_DATABASE=suzhou yuecrown Electronic Technology Co.,LTD -+ - OUI:8C1F64CD6* - ID_OUI_FROM_DATABASE=USM Pty Ltd - - OUI:8C1F64CD8* - ID_OUI_FROM_DATABASE=Gogo Business Aviation - -+OUI:8C1F64CD9* -+ ID_OUI_FROM_DATABASE=Fingoti Limited -+ - OUI:8C1F64CDF* - ID_OUI_FROM_DATABASE=Canway Technology GmbH - -@@ -89159,6 +90743,12 @@ OUI:8C1F64CF1* - OUI:8C1F64CF3* - ID_OUI_FROM_DATABASE=ABB S.p.A. - -+OUI:8C1F64D02* -+ ID_OUI_FROM_DATABASE=Flextronics International Kft -+ -+OUI:8C1F64D08* -+ ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. -+ - OUI:8C1F64D0E* - ID_OUI_FROM_DATABASE=Labforge Inc. - -@@ -89189,12 +90779,24 @@ OUI:8C1F64D54* - OUI:8C1F64D56* - ID_OUI_FROM_DATABASE=Wisdom Audio - -+OUI:8C1F64D69* -+ ID_OUI_FROM_DATABASE=ADiCo Corporation -+ - OUI:8C1F64D78* - ID_OUI_FROM_DATABASE=Hunan Oushi Electronic Technology Co.,Ltd - -+OUI:8C1F64D7C* -+ ID_OUI_FROM_DATABASE=QUERCUS TECHNOLOGIES, S.L. -+ - OUI:8C1F64D7E* - ID_OUI_FROM_DATABASE=Thales Belgium - -+OUI:8C1F64D92* -+ ID_OUI_FROM_DATABASE=Mitsubishi Electric India Pvt. Ltd. -+ -+OUI:8C1F64D9A* -+ ID_OUI_FROM_DATABASE=Beijing Redlink Information Technology Co., Ltd. -+ - OUI:8C1F64DAA* - ID_OUI_FROM_DATABASE=Davetech Limited - -@@ -89210,21 +90812,36 @@ OUI:8C1F64DB9* - OUI:8C1F64DBD* - ID_OUI_FROM_DATABASE=GIORDANO CONTROLS SPA - -+OUI:8C1F64DC0* -+ ID_OUI_FROM_DATABASE=Pigs Can Fly Labs LLC -+ - OUI:8C1F64DC9* - ID_OUI_FROM_DATABASE=Peter Huber Kaeltemaschinenbau AG - - OUI:8C1F64DCA* - ID_OUI_FROM_DATABASE=Porsche engineering - -+OUI:8C1F64DD5* -+ ID_OUI_FROM_DATABASE=Cardinal Scales Manufacturing Co -+ - OUI:8C1F64DE1* - ID_OUI_FROM_DATABASE=Franke Aquarotter GmbH - -+OUI:8C1F64DF8* -+ ID_OUI_FROM_DATABASE=Wittra Networks AB -+ - OUI:8C1F64E02* - ID_OUI_FROM_DATABASE=ITS Teknik A/S - -+OUI:8C1F64E0E* -+ ID_OUI_FROM_DATABASE=Nokeval Oy -+ - OUI:8C1F64E21* - ID_OUI_FROM_DATABASE=LG-LHT Aircraft Solutions GmbH - -+OUI:8C1F64E30* -+ ID_OUI_FROM_DATABASE=VMukti Solutions Private Limited -+ - OUI:8C1F64E41* - ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG - -@@ -89234,6 +90851,9 @@ OUI:8C1F64E43* - OUI:8C1F64E49* - ID_OUI_FROM_DATABASE=Samwell International Inc - -+OUI:8C1F64E4C* -+ ID_OUI_FROM_DATABASE=TTC TELEKOMUNIKACE, s.r.o. -+ - OUI:8C1F64E52* - ID_OUI_FROM_DATABASE=LcmVeloci ApS - -@@ -89243,9 +90863,15 @@ OUI:8C1F64E5C* - OUI:8C1F64E5D* - ID_OUI_FROM_DATABASE=JinYuan International Corporation - -+OUI:8C1F64E5E* -+ ID_OUI_FROM_DATABASE=BRICKMAKERS GmbH -+ - OUI:8C1F64E61* - ID_OUI_FROM_DATABASE=Stange Elektronik GmbH - -+OUI:8C1F64E64* -+ ID_OUI_FROM_DATABASE=Indefac company -+ - OUI:8C1F64E73* - ID_OUI_FROM_DATABASE=GTR Industries - -@@ -89255,6 +90881,9 @@ OUI:8C1F64E77* - OUI:8C1F64E7B* - ID_OUI_FROM_DATABASE=Dongguan Pengchen Earth Instrument CO. LT - -+OUI:8C1F64E7C* -+ ID_OUI_FROM_DATABASE=Ashinne Technology Co., Ltd -+ - OUI:8C1F64E98* - ID_OUI_FROM_DATABASE=Luxshare Electronic Technology (Kunshan) LTD - -@@ -89270,6 +90899,9 @@ OUI:8C1F64EAC* - OUI:8C1F64EB2* - ID_OUI_FROM_DATABASE=Aqua Broadcast Ltd - -+OUI:8C1F64EB5* -+ ID_OUI_FROM_DATABASE=Meiryo Denshi Corp. -+ - OUI:8C1F64EB7* - ID_OUI_FROM_DATABASE=Delta Solutions LLC - -@@ -89285,9 +90917,15 @@ OUI:8C1F64EC1* - OUI:8C1F64ED4* - ID_OUI_FROM_DATABASE=ZHEJIANG CHITIC-SAFEWAY NEW ENERGY TECHNICAL CO.,LTD. - -+OUI:8C1F64ED9* -+ ID_OUI_FROM_DATABASE=NETGEN HITECH SOLUTIONS LLP -+ - OUI:8C1F64EE8* - ID_OUI_FROM_DATABASE=Global Organ Group B.V. - -+OUI:8C1F64EEA* -+ ID_OUI_FROM_DATABASE=AMESS -+ - OUI:8C1F64EEF* - ID_OUI_FROM_DATABASE=AiUnion Co.,Ltd - -@@ -89303,18 +90941,36 @@ OUI:8C1F64F04* - OUI:8C1F64F25* - ID_OUI_FROM_DATABASE=Misaka Network, Inc. - -+OUI:8C1F64F27* -+ ID_OUI_FROM_DATABASE=Tesat-Spacecom GmbH & Co. KG -+ -+OUI:8C1F64F2C* -+ ID_OUI_FROM_DATABASE=Tunstall A/S -+ - OUI:8C1F64F31* - ID_OUI_FROM_DATABASE=International Water Treatment Maritime AS - - OUI:8C1F64F32* - ID_OUI_FROM_DATABASE=Shenzhen INVT Electric Co.,Ltd - -+OUI:8C1F64F3C* -+ ID_OUI_FROM_DATABASE=Microlynx Systems Ltd -+ - OUI:8C1F64F3F* - ID_OUI_FROM_DATABASE=Industrial Laser Machines, LLC - - OUI:8C1F64F41* - ID_OUI_FROM_DATABASE=AUTOMATIZACION Y CONECTIVIDAD SA DE CV - -+OUI:8C1F64F45* -+ ID_OUI_FROM_DATABASE=JBF -+ -+OUI:8C1F64F4E* -+ ID_OUI_FROM_DATABASE=ADAMCZEWSKI elektronische Messtechnik GmbH -+ -+OUI:8C1F64F52* -+ ID_OUI_FROM_DATABASE=AMF Medical SA -+ - OUI:8C1F64F59* - ID_OUI_FROM_DATABASE=Inovonics Inc. - -@@ -89322,7 +90978,7 @@ OUI:8C1F64F5A* - ID_OUI_FROM_DATABASE=Telco Antennas Pty Ltd - - OUI:8C1F64F5C* -- ID_OUI_FROM_DATABASE=Flextronics International Kft. -+ ID_OUI_FROM_DATABASE=Flextronics International Kft - - OUI:8C1F64F72* - ID_OUI_FROM_DATABASE=Contrader -@@ -89333,6 +90989,9 @@ OUI:8C1F64F74* - OUI:8C1F64F78* - ID_OUI_FROM_DATABASE=Ternary Research Corporation - -+OUI:8C1F64F7A* -+ ID_OUI_FROM_DATABASE=SiEngine Technology Co., Ltd. -+ - OUI:8C1F64F86* - ID_OUI_FROM_DATABASE=INFOSTECH Co., Ltd. - -@@ -89345,12 +91004,21 @@ OUI:8C1F64F96* - OUI:8C1F64F9E* - ID_OUI_FROM_DATABASE=DREAMSWELL Technology CO.,Ltd - -+OUI:8C1F64FA2* -+ ID_OUI_FROM_DATABASE=AZD Praha s.r.o., ZOZ Olomouc -+ - OUI:8C1F64FB0* - ID_OUI_FROM_DATABASE=MARIAN GmbH - - OUI:8C1F64FB1* - ID_OUI_FROM_DATABASE=ABB - -+OUI:8C1F64FB7* -+ ID_OUI_FROM_DATABASE=Grace Design/Lunatec LLC -+ -+OUI:8C1F64FBA* -+ ID_OUI_FROM_DATABASE=Onto Innovation -+ - OUI:8C1F64FBD* - ID_OUI_FROM_DATABASE=SAN-AI Electronic Industries Co.,Ltd. - -@@ -89363,12 +91031,24 @@ OUI:8C1F64FD1* - OUI:8C1F64FD3* - ID_OUI_FROM_DATABASE=SMILICS TECHNOLOGIES, S.L. - -+OUI:8C1F64FD4* -+ ID_OUI_FROM_DATABASE=EMBSYS SISTEMAS EMBARCADOS -+ - OUI:8C1F64FE0* - ID_OUI_FROM_DATABASE=Potter Electric Signal Company - - OUI:8C1F64FE3* - ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. - -+OUI:8C1F64FED* -+ ID_OUI_FROM_DATABASE=GSP Sprachtechnologie GmbH -+ -+OUI:8C1F64FF4* -+ ID_OUI_FROM_DATABASE=SMS group GmbH -+ -+OUI:8C1F64FF6* -+ ID_OUI_FROM_DATABASE=Ascon Tecnologic S.r.l. -+ - OUI:8C1F94* - ID_OUI_FROM_DATABASE=RF Surgical System Inc. - -@@ -89525,6 +91205,9 @@ OUI:8C4962* - OUI:8C497A* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:8C49B6* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:8C4AEE* - ID_OUI_FROM_DATABASE=GIGA TMS INC - -@@ -89720,6 +91403,9 @@ OUI:8C6A8D* - OUI:8C6AE4* - ID_OUI_FROM_DATABASE=Viogem Limited - -+OUI:8C6BDB* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:8C6D50* - ID_OUI_FROM_DATABASE=SHENZHEN MTC CO LTD - -@@ -89744,6 +91430,9 @@ OUI:8C736E* - OUI:8C73A0* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -+OUI:8C763F* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:8C76C1* - ID_OUI_FROM_DATABASE=Goden Tech Limited - -@@ -89903,6 +91592,9 @@ OUI:8C965F* - OUI:8C97EA* - ID_OUI_FROM_DATABASE=FREEBOX SAS - -+OUI:8C9806* -+ ID_OUI_FROM_DATABASE=SHENZHEN SEI ROBOTICS CO.,LTD -+ - OUI:8C99E6* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -@@ -90107,6 +91799,9 @@ OUI:8CC8F4D* - OUI:8CC8F4E* - ID_OUI_FROM_DATABASE=Evaporcool Solutions - -+OUI:8CCBDF* -+ ID_OUI_FROM_DATABASE=FOXCONN INTERCONNECT TECHNOLOGY -+ - OUI:8CCDA2* - ID_OUI_FROM_DATABASE=ACTP, Inc. - -@@ -90443,6 +92138,9 @@ OUI:902155* - OUI:902181* - ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd - -+OUI:90235B* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:9023B4* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -@@ -90467,6 +92165,9 @@ OUI:902BD2* - OUI:902CC7* - ID_OUI_FROM_DATABASE=C-MAX Asia Limited - -+OUI:902CFB* -+ ID_OUI_FROM_DATABASE=CanTops Co,.Ltd. -+ - OUI:902E16* - ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd - -@@ -90560,9 +92261,15 @@ OUI:904716* - OUI:90473C* - ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. - -+OUI:90486C* -+ ID_OUI_FROM_DATABASE=Ring LLC -+ - OUI:90489A* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:904992* -+ ID_OUI_FROM_DATABASE=YSTen Technology Co.,Ltd -+ - OUI:9049FA* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -90674,6 +92381,9 @@ OUI:905C44* - OUI:905D7C* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -+OUI:905E44* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:905F2E* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -@@ -90770,6 +92480,9 @@ OUI:907910* - OUI:907990* - ID_OUI_FROM_DATABASE=Benchmark Electronics Romania SRL - -+OUI:9079CF* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:907A0A* - ID_OUI_FROM_DATABASE=Gebr. Bode GmbH & Co KG - -@@ -90875,6 +92588,9 @@ OUI:909164* - OUI:9092B4* - ID_OUI_FROM_DATABASE=Diehl BGT Defence GmbH & Co. KG - -+OUI:90935A* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:90940A* - ID_OUI_FROM_DATABASE=Analog Devices, Inc - -@@ -91109,6 +92825,9 @@ OUI:90CC24* - OUI:90CCDF* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:90CD1F* -+ ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. -+ - OUI:90CDB6* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -91124,6 +92843,9 @@ OUI:90CF7D* - OUI:90D11B* - ID_OUI_FROM_DATABASE=Palomar Medical Technologies - -+OUI:90D473* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:90D74F* - ID_OUI_FROM_DATABASE=Bookeen - -@@ -91157,6 +92879,9 @@ OUI:90DD5D* - OUI:90DE80* - ID_OUI_FROM_DATABASE=Shenzhen Century Xinyang Technology Co., Ltd - -+OUI:90DF7D* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:90DFB7* - ID_OUI_FROM_DATABASE=s.m.s smart microwave sensors GmbH - -@@ -91292,6 +93017,9 @@ OUI:90F652* - OUI:90F72F* - ID_OUI_FROM_DATABASE=Phillips Machine & Welding Co., Inc. - -+OUI:90F7B2* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:90F891* - ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. - -@@ -91400,6 +93128,9 @@ OUI:9408C7* - OUI:940937* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. - -+OUI:9409C9* -+ ID_OUI_FROM_DATABASE=ALPSALPINE CO .,LTD -+ - OUI:9409D3* - ID_OUI_FROM_DATABASE=shenzhen maxtopic technology co.,ltd - -@@ -91886,6 +93617,9 @@ OUI:94AAB8* - OUI:94ABDE* - ID_OUI_FROM_DATABASE=OMX Technology - FZE - -+OUI:94ABFE* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:94ACCA* - ID_OUI_FROM_DATABASE=trivum technologies GmbH - -@@ -91982,6 +93716,9 @@ OUI:94C3E4* - OUI:94C4E9* - ID_OUI_FROM_DATABASE=PowerLayer Microsystems HongKong Limited - -+OUI:94C5A6* -+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED -+ - OUI:94C691* - ID_OUI_FROM_DATABASE=EliteGroup Computer Systems Co., LTD - -@@ -92120,6 +93857,9 @@ OUI:94D299* - OUI:94D2BC* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:94D331* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:94D417* - ID_OUI_FROM_DATABASE=GPI KOREA INC. - -@@ -92801,6 +94541,9 @@ OUI:985945* - OUI:985949* - ID_OUI_FROM_DATABASE=LUXOTTICA GROUP S.P.A. - -+OUI:98597A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:985AEB* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -93185,6 +94928,9 @@ OUI:98A5F9* - OUI:98A7B0* - ID_OUI_FROM_DATABASE=MCST ZAO - -+OUI:98A92D* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:98A942* - ID_OUI_FROM_DATABASE=Guangzhou Tozed Kangwei Intelligent Technology Co., LTD - -@@ -93308,6 +95054,9 @@ OUI:98C5DB* - OUI:98C7A4* - ID_OUI_FROM_DATABASE=Shenzhen HS Fiber Communication Equipment CO., LTD - -+OUI:98C81C* -+ ID_OUI_FROM_DATABASE=BAYTEC LIMITED -+ - OUI:98C845* - ID_OUI_FROM_DATABASE=PacketAccess - -@@ -93371,6 +95120,9 @@ OUI:98D863* - OUI:98D88C* - ID_OUI_FROM_DATABASE=Nortel Networks - -+OUI:98D93D* -+ ID_OUI_FROM_DATABASE=Demant Enterprise A/S -+ - OUI:98DA92* - ID_OUI_FROM_DATABASE=Vuzix Corporation - -@@ -93449,6 +95201,9 @@ OUI:98F083* - OUI:98F0AB* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:98F112* -+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. -+ - OUI:98F170* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. - -@@ -93689,6 +95444,9 @@ OUI:9C1E95* - OUI:9C1EA4* - ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd. - -+OUI:9C1FCA* -+ ID_OUI_FROM_DATABASE=Hangzhou AlmightyDigit Technology Co., Ltd -+ - OUI:9C1FDD* - ID_OUI_FROM_DATABASE=Accupix Inc. - -@@ -93698,6 +95456,9 @@ OUI:9C207B* - OUI:9C216A* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -+OUI:9C2183* -+ ID_OUI_FROM_DATABASE=Broadcom Limited -+ - OUI:9C220E* - ID_OUI_FROM_DATABASE=TASCAN Systems GmbH - -@@ -93852,7 +95613,7 @@ OUI:9C431ED* - ID_OUI_FROM_DATABASE=HK ELEPHONE Communication Tech Co.,Limited - - OUI:9C431EE* -- ID_OUI_FROM_DATABASE=Phoenix Audio Technologies -+ ID_OUI_FROM_DATABASE=SHURE INCORPORATED - - OUI:9C443D* - ID_OUI_FROM_DATABASE=CHENGDU XUGUANG TECHNOLOGY CO, LTD -@@ -93888,7 +95649,7 @@ OUI:9C4EBF* - ID_OUI_FROM_DATABASE=BoxCast - - OUI:9C4F5F* -- ID_OUI_FROM_DATABASE=TAP Sound System -+ ID_OUI_FROM_DATABASE=Google, Inc. - - OUI:9C4FCF* - ID_OUI_FROM_DATABASE=TCT mobile ltd -@@ -93935,6 +95696,9 @@ OUI:9C5711* - OUI:9C57AD* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:9C57BC* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:9C583C* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -94205,6 +95969,9 @@ OUI:9C93B0* - OUI:9C93E4* - ID_OUI_FROM_DATABASE=Private - -+OUI:9C9561* -+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD -+ - OUI:9C9567* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -94253,6 +96020,9 @@ OUI:9CA10A* - OUI:9CA134* - ID_OUI_FROM_DATABASE=Nike, Inc. - -+OUI:9CA2F4* -+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited -+ - OUI:9CA3A9* - ID_OUI_FROM_DATABASE=Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd - -@@ -94346,6 +96116,9 @@ OUI:9CBD9D* - OUI:9CBEE0* - ID_OUI_FROM_DATABASE=Biosoundlab Co., Ltd. - -+OUI:9CBFCD* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:9CC077* - ID_OUI_FROM_DATABASE=PrintCounts, LLC - -@@ -94439,6 +96212,9 @@ OUI:9CDF03* - OUI:9CDFB1* - ID_OUI_FROM_DATABASE=Shenzhen Crave Communication Co., LTD - -+OUI:9CE041* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:9CE063* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -94898,6 +96674,9 @@ OUI:A028ED* - OUI:A02919* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:A02942* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:A029BD* - ID_OUI_FROM_DATABASE=Team Group Inc - -@@ -95042,6 +96821,9 @@ OUI:A0423F* - OUI:A04246* - ID_OUI_FROM_DATABASE=IT Telecom Co., Ltd. - -+OUI:A042D1* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:A043B0* - ID_OUI_FROM_DATABASE=Hangzhou BroadLink Technology Co.,Ltd - -@@ -95051,6 +96833,9 @@ OUI:A043DB* - OUI:A0445C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:A04466* -+ ID_OUI_FROM_DATABASE=Intellics -+ - OUI:A047D7* - ID_OUI_FROM_DATABASE=Best IT World (India) Pvt Ltd - -@@ -95459,6 +97244,9 @@ OUI:A0B5DA* - OUI:A0B662* - ID_OUI_FROM_DATABASE=Acutvista Innovation Co., Ltd. - -+OUI:A0B765* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:A0B8F8* - ID_OUI_FROM_DATABASE=Amgen U.S.A. Inc. - -@@ -95591,6 +97379,9 @@ OUI:A0C5F2E* - OUI:A0C6EC* - ID_OUI_FROM_DATABASE=ShenZhen ANYK Technology Co.,LTD - -+OUI:A0C98B* -+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG -+ - OUI:A0C9A0* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. - -@@ -95729,6 +97520,9 @@ OUI:A0ECF9* - OUI:A0EDCD* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:A0EDFB* -+ ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. -+ - OUI:A0EF84* - ID_OUI_FROM_DATABASE=Seine Image Int'l Co., Ltd - -@@ -95840,6 +97634,9 @@ OUI:A40DBC* - OUI:A40E2B* - ID_OUI_FROM_DATABASE=Facebook Inc - -+OUI:A40F98* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:A41115* - ID_OUI_FROM_DATABASE=Robert Bosch Engineering and Business Solutions pvt. Ltd. - -@@ -95942,6 +97739,9 @@ OUI:A41B34* - OUI:A41BC0* - ID_OUI_FROM_DATABASE=Fastec Imaging Corporation - -+OUI:A41EE1* -+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics -+ - OUI:A41F72* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -96455,6 +98255,9 @@ OUI:A47E36* - OUI:A47E39* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:A47EFA* -+ ID_OUI_FROM_DATABASE=Withings -+ - OUI:A4817A* - ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD - -@@ -96497,6 +98300,9 @@ OUI:A48E0A* - OUI:A49005* - ID_OUI_FROM_DATABASE=CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD - -+OUI:A490CE* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:A491B1* - ID_OUI_FROM_DATABASE=Technicolor Delivery Technologies Belgium NV - -@@ -96734,6 +98540,9 @@ OUI:A4CEDA* - OUI:A4CF12* - ID_OUI_FROM_DATABASE=Espressif Inc. - -+OUI:A4CF99* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:A4CFD2* - ID_OUI_FROM_DATABASE=Ubee Interactive Co., Limited - -@@ -96845,6 +98654,9 @@ OUI:A4DB30* - OUI:A4DCBE* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:A4DD58* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:A4DE26* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries, Ltd - -@@ -96989,6 +98801,9 @@ OUI:A4F522* - OUI:A4F7D0* - ID_OUI_FROM_DATABASE=LAN Accessories Co., Ltd. - -+OUI:A4F933* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:A4F9E4* - ID_OUI_FROM_DATABASE=AirVine Scientific, Inc. - -@@ -97274,6 +99089,9 @@ OUI:A85081* - OUI:A8515B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:A851AB* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:A8537D* - ID_OUI_FROM_DATABASE=Mist Systems, Inc. - -@@ -97469,6 +99287,9 @@ OUI:A8776F* - OUI:A877E5* - ID_OUI_FROM_DATABASE=SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD - -+OUI:A8798D* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:A87B39* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -97625,6 +99446,9 @@ OUI:A8A159* - OUI:A8A198* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -+OUI:A8A237* -+ ID_OUI_FROM_DATABASE=Arcadyan Corporation -+ - OUI:A8A5E2* - ID_OUI_FROM_DATABASE=MSF-Vathauer Antriebstechnik GmbH & Co KG - -@@ -97644,7 +99468,10 @@ OUI:A8B088* - ID_OUI_FROM_DATABASE=eero inc. - - OUI:A8B0AE* -- ID_OUI_FROM_DATABASE=LEONI -+ ID_OUI_FROM_DATABASE=BizLink Special Cables Germany GmbH -+ -+OUI:A8B13B* -+ ID_OUI_FROM_DATABASE=HP Inc. - - OUI:A8B1D4* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc -@@ -97709,6 +99536,9 @@ OUI:A8C83A* - OUI:A8C87F* - ID_OUI_FROM_DATABASE=Roqos, Inc. - -+OUI:A8C98A* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:A8CA7B* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -97838,6 +99668,9 @@ OUI:A8F5DD* - OUI:A8F766* - ID_OUI_FROM_DATABASE=ITE Tech Inc - -+OUI:A8F7D9* -+ ID_OUI_FROM_DATABASE=Mist Systems, Inc. -+ - OUI:A8F7E0* - ID_OUI_FROM_DATABASE=PLANET Technology Corporation - -@@ -98054,12 +99887,18 @@ OUI:AC2334* - OUI:AC233F* - ID_OUI_FROM_DATABASE=Shenzhen Minew Technologies Co., Ltd. - -+OUI:AC2929* -+ ID_OUI_FROM_DATABASE=Infinix mobility limited -+ - OUI:AC293A* - ID_OUI_FROM_DATABASE=Apple, Inc. - - OUI:AC2A0C* - ID_OUI_FROM_DATABASE=CSR ZHUZHOU INSTITUTE CO.,LTD. - -+OUI:AC2AA1* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:AC2B6E* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -98201,6 +100040,9 @@ OUI:AC512C* - OUI:AC5135* - ID_OUI_FROM_DATABASE=MPI TECH - -+OUI:AC51AB* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:AC51EE* - ID_OUI_FROM_DATABASE=Cambridge Communication Systems Ltd - -@@ -98375,6 +100217,9 @@ OUI:AC6FD9* - OUI:AC710C* - ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. - -+OUI:AC712E* -+ ID_OUI_FROM_DATABASE=Fortinet, Inc. -+ - OUI:AC7236* - ID_OUI_FROM_DATABASE=Lexking Technology Co., Ltd. - -@@ -98454,7 +100299,7 @@ OUI:AC83E9* - ID_OUI_FROM_DATABASE=Beijing Zile Technology Co., Ltd - - OUI:AC83F0* -- ID_OUI_FROM_DATABASE=ImmediaTV Corporation -+ ID_OUI_FROM_DATABASE=Cobalt Digital Inc. - - OUI:AC83F3* - ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. -@@ -98501,6 +100346,9 @@ OUI:AC8D14* - OUI:AC8D34* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:AC8FA9* -+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG -+ - OUI:AC8FF8* - ID_OUI_FROM_DATABASE=Nokia - -@@ -98558,6 +100406,9 @@ OUI:ACA22C* - OUI:ACA31E* - ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company - -+OUI:ACA32F* -+ ID_OUI_FROM_DATABASE=Solidigm Technology -+ - OUI:ACA430* - ID_OUI_FROM_DATABASE=Peerless AV - -@@ -98603,6 +100454,9 @@ OUI:ACB313* - OUI:ACB3B5* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:ACB566* -+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd. -+ - OUI:ACB57D* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -98636,6 +100490,9 @@ OUI:ACBE75* - OUI:ACBEB6* - ID_OUI_FROM_DATABASE=Visualedge Technology Co., Ltd. - -+OUI:ACBF71* -+ ID_OUI_FROM_DATABASE=Bose Corporation -+ - OUI:ACC1EE* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -98651,6 +100508,9 @@ OUI:ACC33A* - OUI:ACC358* - ID_OUI_FROM_DATABASE=Continental Automotive Czech Republic s.r.o. - -+OUI:ACC4BD* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:ACC51B* - ID_OUI_FROM_DATABASE=Zhuhai Pantum Electronics Co., Ltd. - -@@ -98690,6 +100550,9 @@ OUI:ACCB51* - OUI:ACCC8E* - ID_OUI_FROM_DATABASE=Axis Communications AB - -+OUI:ACCCFC* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:ACCE8F* - ID_OUI_FROM_DATABASE=HWA YAO TECHNOLOGIES CO., LTD - -@@ -98711,6 +100574,9 @@ OUI:ACD180* - OUI:ACD1B8* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:ACD31D* -+ ID_OUI_FROM_DATABASE=Cisco Meraki -+ - OUI:ACD364* - ID_OUI_FROM_DATABASE=ABB SPA, ABB SACE DIV. - -@@ -98990,9 +100856,15 @@ OUI:B01F81E* - OUI:B01F81F* - ID_OUI_FROM_DATABASE=Private - -+OUI:B01F8C* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:B0227A* - ID_OUI_FROM_DATABASE=HP Inc. - -+OUI:B02347* -+ ID_OUI_FROM_DATABASE=Shenzhen Giant Microelectronics Company Limited -+ - OUI:B02491* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -99011,6 +100883,9 @@ OUI:B02680* - OUI:B027CF* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:B0285B* -+ ID_OUI_FROM_DATABASE=JUHUA Technology Inc. -+ - OUI:B02A1F* - ID_OUI_FROM_DATABASE=Wingtech Group (HongKong)Limited - -@@ -99056,6 +100931,9 @@ OUI:B03850* - OUI:B03893* - ID_OUI_FROM_DATABASE=Onda TLC GmbH - -+OUI:B038E2* -+ ID_OUI_FROM_DATABASE=Wanan Hongsheng Electronic Co.Ltd -+ - OUI:B03956* - ID_OUI_FROM_DATABASE=NETGEAR - -@@ -99077,6 +100955,9 @@ OUI:B03E51* - OUI:B03EB0* - ID_OUI_FROM_DATABASE=MICRODIA Ltd. - -+OUI:B03F64* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:B04089* - ID_OUI_FROM_DATABASE=Senient Systems LTD - -@@ -99128,6 +101009,9 @@ OUI:B0495F* - OUI:B04A39* - ID_OUI_FROM_DATABASE=Beijing Roborock Technology Co., Ltd. - -+OUI:B04A6A* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B04BBF* - ID_OUI_FROM_DATABASE=PT HAN SUNG ELECTORONICS INDONESIA - -@@ -99221,6 +101105,9 @@ OUI:B06A41* - OUI:B06CBF* - ID_OUI_FROM_DATABASE=3ality Digital Systems GmbH - -+OUI:B06E72* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:B06EBF* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -@@ -99407,6 +101294,9 @@ OUI:B0A454* - OUI:B0A460* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:B0A4F0* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:B0A651* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -99446,6 +101336,9 @@ OUI:B0ADAA* - OUI:B0AE25* - ID_OUI_FROM_DATABASE=Varikorea - -+OUI:B0AFF7* -+ ID_OUI_FROM_DATABASE=Shenzhen Yipingfang Network Technology Co., Ltd. -+ - OUI:B0B113* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -99725,6 +101618,9 @@ OUI:B0E2E5* - OUI:B0E39D* - ID_OUI_FROM_DATABASE=CAT SYSTEM CO.,LTD. - -+OUI:B0E45C* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B0E4D5* - ID_OUI_FROM_DATABASE=Google, Inc. - -@@ -99809,6 +101705,9 @@ OUI:B0F963* - OUI:B0FAEB* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:B0FBDD* -+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. -+ - OUI:B0FC0D* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -99947,9 +101846,15 @@ OUI:B4157E* - OUI:B41780* - ID_OUI_FROM_DATABASE=DTI Group Ltd - -+OUI:B417A8* -+ ID_OUI_FROM_DATABASE=Facebook Technologies, LLC -+ - OUI:B418D1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:B41974* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:B41A1D* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -100118,6 +102023,9 @@ OUI:B439D6* - OUI:B43A28* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:B43AE2* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:B43D08* - ID_OUI_FROM_DATABASE=GX International BV - -@@ -100277,6 +102185,9 @@ OUI:B467E9* - OUI:B46921* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:B4695F* -+ ID_OUI_FROM_DATABASE=TCT mobile ltd -+ - OUI:B46BFC* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -100295,6 +102206,9 @@ OUI:B46E08* - OUI:B46F2D* - ID_OUI_FROM_DATABASE=Wahoo Fitness - -+OUI:B47064* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B47356* - ID_OUI_FROM_DATABASE=Hangzhou Treebear Networking Co., Ltd. - -@@ -100334,6 +102248,9 @@ OUI:B47C59* - OUI:B47C9C* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -+OUI:B47D76* -+ ID_OUI_FROM_DATABASE=KNS Group LLC -+ - OUI:B47F5E* - ID_OUI_FROM_DATABASE=Foresight Manufacture (S) Pte Ltd - -@@ -100355,6 +102272,9 @@ OUI:B482C5* - OUI:B482FE* - ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - -+OUI:B48351* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:B48547* - ID_OUI_FROM_DATABASE=Amptown System Company GmbH - -@@ -100418,6 +102338,9 @@ OUI:B49EAC* - OUI:B49EE6* - ID_OUI_FROM_DATABASE=SHENZHEN TECHNOLOGY CO LTD - -+OUI:B49F4D* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:B4A25C* - ID_OUI_FROM_DATABASE=Cambium Networks Limited - -@@ -100487,6 +102410,12 @@ OUI:B4A5AC* - OUI:B4A5EF* - ID_OUI_FROM_DATABASE=Sercomm Corporation. - -+OUI:B4A678* -+ ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd. -+ -+OUI:B4A7C6* -+ ID_OUI_FROM_DATABASE=SERVERCOM (INDIA) PRIVATE LIMITED -+ - OUI:B4A828* - ID_OUI_FROM_DATABASE=Shenzhen Concox Information Technology Co., Ltd - -@@ -100922,6 +102851,9 @@ OUI:B8208E* - OUI:B820E7* - ID_OUI_FROM_DATABASE=Guangzhou Horizontal Information & Network Integration Co. Ltd - -+OUI:B8211C* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:B8224F* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD - -@@ -101024,6 +102956,9 @@ OUI:B83D4E* - OUI:B83E59* - ID_OUI_FROM_DATABASE=Roku, Inc. - -+OUI:B83FD2* -+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. -+ - OUI:B8415F* - ID_OUI_FROM_DATABASE=ASP AG - -@@ -101063,6 +102998,9 @@ OUI:B84FD5* - OUI:B85001* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:B850D8* -+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd -+ - OUI:B853AC* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -101102,6 +103040,9 @@ OUI:B85AFE* - OUI:B85D0A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:B85DC3* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:B85E7B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -101198,6 +103139,9 @@ OUI:B87C6F* - OUI:B87CF2* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:B87EE5* -+ ID_OUI_FROM_DATABASE=Intelbras -+ - OUI:B88035* - ID_OUI_FROM_DATABASE=Shenzhen Qihu Intelligent Technology Company Limited - -@@ -101348,6 +103292,9 @@ OUI:B89EA6* - OUI:B89F09* - ID_OUI_FROM_DATABASE=Wistron Neweb Corporation - -+OUI:B89FCC* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:B8A14A* - ID_OUI_FROM_DATABASE=Raisecom Technology CO.,LTD - -@@ -101405,6 +103352,9 @@ OUI:B8B2F8* - OUI:B8B3DC* - ID_OUI_FROM_DATABASE=DEREK (SHAOGUAN) LIMITED - -+OUI:B8B409* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B8B42E* - ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen - -@@ -101543,6 +103493,9 @@ OUI:B8D526* - OUI:B8D56B* - ID_OUI_FROM_DATABASE=Mirka Ltd. - -+OUI:B8D61A* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:B8D6F6* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -101675,6 +103628,9 @@ OUI:B8F009* - OUI:B8F080* - ID_OUI_FROM_DATABASE=SPS, INC. - -+OUI:B8F0B9* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:B8F12A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -102212,6 +104168,9 @@ OUI:BC6D05* - OUI:BC6E64* - ID_OUI_FROM_DATABASE=Sony Corporation - -+OUI:BC6E6D* -+ ID_OUI_FROM_DATABASE=EM Microelectronic -+ - OUI:BC6E76* - ID_OUI_FROM_DATABASE=Green Energy Options Ltd - -@@ -102533,6 +104492,12 @@ OUI:BCC61A* - OUI:BCC6DB* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:BCC746* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision IND.CO.,LTD -+ -+OUI:BCC7DA* -+ ID_OUI_FROM_DATABASE=Earda Technologies co Ltd -+ - OUI:BCC810* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -102566,6 +104531,9 @@ OUI:BCD177* - OUI:BCD1D3* - ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. - -+OUI:BCD206* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:BCD295* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -102629,6 +104597,9 @@ OUI:BCE796* - OUI:BCE92F* - ID_OUI_FROM_DATABASE=HP Inc. - -+OUI:BCE9E2* -+ ID_OUI_FROM_DATABASE=Brocade Communications Systems LLC -+ - OUI:BCEA2B* - ID_OUI_FROM_DATABASE=CityCom GmbH - -@@ -102668,6 +104639,9 @@ OUI:BCF310* - OUI:BCF45F* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:BCF4D4* -+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ - OUI:BCF5AC* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - -@@ -102686,6 +104660,9 @@ OUI:BCF9F2* - OUI:BCFAB8* - ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited - -+OUI:BCFAEB* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:BCFE8C* - ID_OUI_FROM_DATABASE=Altronic, LLC - -@@ -102713,6 +104690,9 @@ OUI:C00380* - OUI:C005C2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:C0060C* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:C006C3* - ID_OUI_FROM_DATABASE=TP-Link Corporation Limited - -@@ -102899,6 +104879,9 @@ OUI:C03DD9* - OUI:C03E0F* - ID_OUI_FROM_DATABASE=BSkyB Ltd - -+OUI:C03E50* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:C03EBA* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -103067,6 +105050,9 @@ OUI:C06C6D* - OUI:C06D1A* - ID_OUI_FROM_DATABASE=Tianjin Henxinhuifeng Technology Co.,Ltd. - -+OUI:C06DED* -+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. -+ - OUI:C07009* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -103199,6 +105185,9 @@ OUI:C08C60* - OUI:C08C71* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -+OUI:C08D51* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:C08F20* - ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd - -@@ -103298,6 +105287,9 @@ OUI:C09F05* - OUI:C09F42* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:C09F51* -+ ID_OUI_FROM_DATABASE=SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ - OUI:C09FE1* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -103346,12 +105338,18 @@ OUI:C0A66D* - OUI:C0A8F0* - ID_OUI_FROM_DATABASE=Adamson Systems Engineering - -+OUI:C0A938* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:C0AA68* - ID_OUI_FROM_DATABASE=OSASI Technos Inc. - - OUI:C0AC54* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:C0AD97* -+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED -+ - OUI:C0AEFD* - ID_OUI_FROM_DATABASE=Shenzhen HC-WLAN Technology Co.,Ltd - -@@ -103412,6 +105410,9 @@ OUI:C0BFA7* - OUI:C0BFC0* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:C0C170* -+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. -+ - OUI:C0C1C0* - ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC - -@@ -103559,12 +105560,18 @@ OUI:C0DCD7* - OUI:C0DCDA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:C0DD8A* -+ ID_OUI_FROM_DATABASE=Facebook Technologies, LLC -+ - OUI:C0DF77* - ID_OUI_FROM_DATABASE=Conrad Electronic SE - - OUI:C0E018* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:C0E01C* -+ ID_OUI_FROM_DATABASE=IoT Security Group, SL -+ - OUI:C0E1BE* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -103592,11 +105599,17 @@ OUI:C0E7BF* - OUI:C0E862* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:C0E911* -+ ID_OUI_FROM_DATABASE=Private -+ - OUI:C0EAE4* - ID_OUI_FROM_DATABASE=Sonicwall - -+OUI:C0EDE5* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:C0EE40* -- ID_OUI_FROM_DATABASE=Laird Technologies -+ ID_OUI_FROM_DATABASE=Laird Connectivity - - OUI:C0EEB5* - ID_OUI_FROM_DATABASE=Enice Network. -@@ -103925,6 +105938,9 @@ OUI:C436DA* - OUI:C43772* - ID_OUI_FROM_DATABASE=Virtuozzo International GmbH - -+OUI:C43875* -+ ID_OUI_FROM_DATABASE=Sonos, Inc. -+ - OUI:C438D3* - ID_OUI_FROM_DATABASE=TAGATEC CO.,LTD - -@@ -104402,6 +106418,51 @@ OUI:C49F4C* - OUI:C49FF3* - ID_OUI_FROM_DATABASE=Mciao Technologies, Inc. - -+OUI:C4A10E0* -+ ID_OUI_FROM_DATABASE=HYOSUNG HEAVY INDUSTRIES -+ -+OUI:C4A10E1* -+ ID_OUI_FROM_DATABASE=BARTEC PIXAVI AS -+ -+OUI:C4A10E2* -+ ID_OUI_FROM_DATABASE=Wistron InfoComn (Kunshan) Co., Ltd. -+ -+OUI:C4A10E3* -+ ID_OUI_FROM_DATABASE=Consolinno Energy GmbH -+ -+OUI:C4A10E4* -+ ID_OUI_FROM_DATABASE=Harbour Cross Technology Ltd -+ -+OUI:C4A10E5* -+ ID_OUI_FROM_DATABASE=O-NET Industrial Technologies (Shenzhen) Limited -+ -+OUI:C4A10E6* -+ ID_OUI_FROM_DATABASE=Hainan World Electronic Science and Techology Co.,Ltd -+ -+OUI:C4A10E7* -+ ID_OUI_FROM_DATABASE=Guangzhou South Satellite Navigation Instrument Co., Ltd. -+ -+OUI:C4A10E8* -+ ID_OUI_FROM_DATABASE=Ayla Networks (Shenzhen) Co., Ltd. -+ -+OUI:C4A10E9* -+ ID_OUI_FROM_DATABASE=XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -+ -+OUI:C4A10EA* -+ ID_OUI_FROM_DATABASE=Jiangsu Perceive World Technology Co.,Ltd. -+ -+OUI:C4A10EB* -+ ID_OUI_FROM_DATABASE=Clinton Electronics Corporation -+ -+OUI:C4A10EC* -+ ID_OUI_FROM_DATABASE=Focus-on -+ -+OUI:C4A10ED* -+ ID_OUI_FROM_DATABASE=Connectlab SRL -+ -+OUI:C4A10EE* -+ ID_OUI_FROM_DATABASE=Alio, Inc -+ - OUI:C4A151* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD - -@@ -104486,6 +106547,9 @@ OUI:C4BED4* - OUI:C4BF60* - ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED - -+OUI:C4C063* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:C4C0AE* - ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD. - -@@ -104570,6 +106634,12 @@ OUI:C4DD57* - OUI:C4DE7B* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:C4DEE2* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ -+OUI:C4DF39* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:C4E032* - ID_OUI_FROM_DATABASE=IEEE 1904.1 Working Group - -@@ -104789,6 +106859,9 @@ OUI:C80E95* - OUI:C81073* - ID_OUI_FROM_DATABASE=CENTURY OPTICOMM CO.,LTD - -+OUI:C8120B* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:C8138B* - ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd - -@@ -104852,6 +106925,9 @@ OUI:C82158* - OUI:C821DA* - ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd - -+OUI:C82496* -+ ID_OUI_FROM_DATABASE=Jiangsu Yinhe Electronics Co.,Ltd. -+ - OUI:C825E1* - ID_OUI_FROM_DATABASE=Lemobile Information Technology (Beijing) Co., Ltd - -@@ -105149,6 +107225,9 @@ OUI:C869CD* - OUI:C86C1E* - ID_OUI_FROM_DATABASE=Display Systems Ltd - -+OUI:C86C20* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:C86C3D* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -105344,6 +107423,9 @@ OUI:C89D18* - OUI:C89E43* - ID_OUI_FROM_DATABASE=NETGEAR - -+OUI:C89E61* -+ ID_OUI_FROM_DATABASE=Lyngsoe Systems LTd -+ - OUI:C89F1A* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -105431,6 +107513,9 @@ OUI:C8B5B7* - OUI:C8B6D3* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:C8B82F* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:C8BA94* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -@@ -105461,6 +107546,9 @@ OUI:C8BD69* - OUI:C8BE19* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:C8BE35* -+ ID_OUI_FROM_DATABASE=Extreme Networks, Inc. -+ - OUI:C8BFFE* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -105551,6 +107639,9 @@ OUI:C8D5FE* - OUI:C8D69D* - ID_OUI_FROM_DATABASE=Arab International Optronics - -+OUI:C8D6B7* -+ ID_OUI_FROM_DATABASE=Solidigm Technology -+ - OUI:C8D719* - ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC - -@@ -105617,6 +107708,9 @@ OUI:C8E7F0* - OUI:C8EAF8* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:C8EBEC* -+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd -+ - OUI:C8EE08* - ID_OUI_FROM_DATABASE=TANGTOP TECHNOLOGY CO.,LTD - -@@ -105629,6 +107723,9 @@ OUI:C8EEA6* - OUI:C8EF2E* - ID_OUI_FROM_DATABASE=Beijing Gefei Tech. Co., Ltd - -+OUI:C8F09E* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:C8F230* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -@@ -106034,6 +108131,9 @@ OUI:CC3D82* - OUI:CC3E5F* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:CC3E79* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:CC3F1D* - ID_OUI_FROM_DATABASE=HMS Industrial Networks SLU - -@@ -106067,6 +108167,9 @@ OUI:CC46D6* - OUI:CC4703* - ID_OUI_FROM_DATABASE=Intercon Systems Co., Ltd. - -+OUI:CC4792* -+ ID_OUI_FROM_DATABASE=ASIX Electronics Corporation -+ - OUI:CC47BD* - ID_OUI_FROM_DATABASE=Rhombus Systems - -@@ -106131,7 +108234,7 @@ OUI:CC4F5CD* - ID_OUI_FROM_DATABASE=Beijing Neutron Technology CO.,LTD. - - OUI:CC4F5CE* -- ID_OUI_FROM_DATABASE=Buttons (Beijing) Technology Limited -+ ID_OUI_FROM_DATABASE=Beijing Techao Weijia Technology Limited - - OUI:CC500A* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -@@ -106196,6 +108299,9 @@ OUI:CC5FBF* - OUI:CC60BB* - ID_OUI_FROM_DATABASE=Empower RF Systems - -+OUI:CC60C8* -+ ID_OUI_FROM_DATABASE=Microsoft Corporation -+ - OUI:CC61E5* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -@@ -106208,6 +108314,9 @@ OUI:CC65AD* - OUI:CC660A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:CC6618* -+ ID_OUI_FROM_DATABASE=Adtran Inc -+ - OUI:CC66B2* - ID_OUI_FROM_DATABASE=Nokia - -@@ -106307,6 +108416,9 @@ OUI:CC812A* - OUI:CC81DA* - ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd. - -+OUI:CC827F* -+ ID_OUI_FROM_DATABASE=Advantech Technology (CHINA) Co., Ltd. -+ - OUI:CC82EB* - ID_OUI_FROM_DATABASE=KYOCERA CORPORATION - -@@ -106736,9 +108848,15 @@ OUI:CCDB04* - OUI:CCDB93* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:CCDBA7* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:CCDC55* - ID_OUI_FROM_DATABASE=Dragonchip Limited - -+OUI:CCDD58* -+ ID_OUI_FROM_DATABASE=Robert Bosch GmbH -+ - OUI:CCE0C3* - ID_OUI_FROM_DATABASE=EXTEN Technologies, Inc. - -@@ -106793,6 +108911,9 @@ OUI:CCEF48* - OUI:CCF0FD* - ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co., Ltd. - -+OUI:CCF305* -+ ID_OUI_FROM_DATABASE=SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD -+ - OUI:CCF3A5* - ID_OUI_FROM_DATABASE=Chi Mei Communication Systems, Inc - -@@ -106998,7 +109119,7 @@ OUI:D01E1D* - ID_OUI_FROM_DATABASE=SaiNXT Technologies LLP - - OUI:D021AC* -- ID_OUI_FROM_DATABASE=Yo Labs LLC -+ ID_OUI_FROM_DATABASE=Yohana - - OUI:D021F9* - ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc. -@@ -107525,6 +109646,9 @@ OUI:D096FB* - OUI:D097FE* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:D0989C* -+ ID_OUI_FROM_DATABASE=ConMet -+ - OUI:D099D5* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - -@@ -107597,6 +109721,9 @@ OUI:D0A0D6* - OUI:D0A311* - ID_OUI_FROM_DATABASE=Neuberger Gebäudeautomation GmbH - -+OUI:D0A46F* -+ ID_OUI_FROM_DATABASE=China Dragon Technology Limited -+ - OUI:D0A4B1* - ID_OUI_FROM_DATABASE=Sonifex Ltd. - -@@ -107945,6 +110072,9 @@ OUI:D0FA1D* - OUI:D0FCCC* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:D0FCD0* -+ ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. -+ - OUI:D0FF50* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -108215,6 +110345,9 @@ OUI:D440F0* - OUI:D44165* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD - -+OUI:D4430E* -+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd. -+ - OUI:D443A8* - ID_OUI_FROM_DATABASE=Changzhou Haojie Electric Co., Ltd. - -@@ -108299,6 +110432,9 @@ OUI:D45763* - OUI:D45800* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -+OUI:D45A3F* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:D45AB2* - ID_OUI_FROM_DATABASE=Galleon Systems - -@@ -108677,6 +110813,9 @@ OUI:D4A148* - OUI:D4A33D* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:D4A3EB* -+ ID_OUI_FROM_DATABASE=Shenzhen iComm Semiconductor CO.,LTD -+ - OUI:D4A425* - ID_OUI_FROM_DATABASE=SMAX Technology Co., Ltd. - -@@ -108758,6 +110897,9 @@ OUI:D4BBE6* - OUI:D4BD1E* - ID_OUI_FROM_DATABASE=5VT Technologies,Taiwan LTd. - -+OUI:D4BD4F* -+ ID_OUI_FROM_DATABASE=Ruckus Wireless -+ - OUI:D4BED9* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -108845,6 +110987,9 @@ OUI:D4D7A9* - OUI:D4D7CF* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:D4D853* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:D4D898* - ID_OUI_FROM_DATABASE=Korea CNO Tech Co., Ltd - -@@ -108863,9 +111008,15 @@ OUI:D4DCCD* - OUI:D4DF57* - ID_OUI_FROM_DATABASE=Alpinion Medical Systems - -+OUI:D4E053* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:D4E08E* - ID_OUI_FROM_DATABASE=ValueHD Corporation - -+OUI:D4E22F* -+ ID_OUI_FROM_DATABASE=Roku, Inc -+ - OUI:D4E2CB* - ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. - -@@ -108920,6 +111071,9 @@ OUI:D4F057* - OUI:D4F0B4* - ID_OUI_FROM_DATABASE=Napco Security Technologies - -+OUI:D4F0EA* -+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd -+ - OUI:D4F143* - ID_OUI_FROM_DATABASE=IPROAD.,Inc - -@@ -109019,6 +111173,9 @@ OUI:D80DE3* - OUI:D80F99* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:D81068* -+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -+ - OUI:D8109F* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -109158,7 +111315,10 @@ OUI:D833B7* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - - OUI:D834EE* -- ID_OUI_FROM_DATABASE=Stem Audio -+ ID_OUI_FROM_DATABASE=SHURE INCORPORATED -+ -+OUI:D8365F* -+ ID_OUI_FROM_DATABASE=Intelbras - - OUI:D8373B* - ID_OUI_FROM_DATABASE=Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd -@@ -109409,6 +111569,9 @@ OUI:D8803C* - OUI:D88083* - ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - -+OUI:D880DC* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:D881CE* - ID_OUI_FROM_DATABASE=AHN INC. - -@@ -109463,6 +111626,9 @@ OUI:D8860BE* - OUI:D887D5* - ID_OUI_FROM_DATABASE=Leadcore Technology CO.,LTD - -+OUI:D88863* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:D888CE* - ID_OUI_FROM_DATABASE=RF Technology Pty Ltd - -@@ -109544,6 +111710,9 @@ OUI:D89B3B* - OUI:D89C67* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:D89C8E* -+ ID_OUI_FROM_DATABASE=Comcast Cable Corporation -+ - OUI:D89D67* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -109820,6 +111989,9 @@ OUI:D8E0B8* - OUI:D8E0E1* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:D8E2DF* -+ ID_OUI_FROM_DATABASE=Microsoft Corporation -+ - OUI:D8E3AE* - ID_OUI_FROM_DATABASE=CIRTEC MEDICAL SYSTEMS - -@@ -110090,6 +112262,9 @@ OUI:DC3350* - OUI:DC35F1* - ID_OUI_FROM_DATABASE=Positivo Tecnologia S.A. - -+OUI:DC360C* -+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc -+ - OUI:DC36430* - ID_OUI_FROM_DATABASE=Meier Tobler AG - -@@ -110330,6 +112505,9 @@ OUI:DC5392* - OUI:DC543D* - ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED - -+OUI:DC5475* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:DC54D7* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -110411,6 +112589,9 @@ OUI:DC7144* - OUI:DC7196* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:DC71DD* -+ ID_OUI_FROM_DATABASE=AX Technologies -+ - OUI:DC7223* - ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD - -@@ -110471,6 +112652,9 @@ OUI:DC8C37* - OUI:DC8D8A* - ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG - -+OUI:DC8E95* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:DC9020* - ID_OUI_FROM_DATABASE=RURU TEK PRIVATE LIMITED - -@@ -110501,6 +112685,9 @@ OUI:DC9914* - OUI:DC99FE* - ID_OUI_FROM_DATABASE=Armatura LLC - -+OUI:DC9A7D* -+ ID_OUI_FROM_DATABASE=HISENSE VISUAL TECHNOLOGY CO.,LTD -+ - OUI:DC9A8E* - ID_OUI_FROM_DATABASE=Nanjing Cocomm electronics co., LTD - -@@ -110567,6 +112754,9 @@ OUI:DCA8CF* - OUI:DCA904* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:DCA956* -+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ - OUI:DCA971* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -110621,6 +112811,9 @@ OUI:DCBB96* - OUI:DCBD7A* - ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited - -+OUI:DCBE49* -+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED -+ - OUI:DCBE7A* - ID_OUI_FROM_DATABASE=Zhejiang Nurotron Biotechnology Co. - -@@ -110912,6 +113105,9 @@ OUI:E00084* - OUI:E002A5* - ID_OUI_FROM_DATABASE=ABB Robotics - -+OUI:E0036B* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:E00370* - ID_OUI_FROM_DATABASE=ShenZhen Continental Wireless Technology Co., Ltd. - -@@ -111044,12 +113240,18 @@ OUI:E02636* - OUI:E0271A* - ID_OUI_FROM_DATABASE=TTC Next-generation Home Network System WG - -+OUI:E0276C* -+ ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited -+ - OUI:E02861* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:E0286D* - ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH - -+OUI:E028B1* -+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd -+ - OUI:E02967* - ID_OUI_FROM_DATABASE=HMD Global Oy - -@@ -111152,12 +113354,18 @@ OUI:E0469A* - OUI:E046E5* - ID_OUI_FROM_DATABASE=Gosuncn Technology Group Co., Ltd. - -+OUI:E046EE* -+ ID_OUI_FROM_DATABASE=NETGEAR -+ - OUI:E048AF* - ID_OUI_FROM_DATABASE=Premietech Limited - - OUI:E048D3* - ID_OUI_FROM_DATABASE=MOBIWIRE MOBILES (NINGBO) CO.,LTD - -+OUI:E048D8* -+ ID_OUI_FROM_DATABASE=Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+ - OUI:E049ED* - ID_OUI_FROM_DATABASE=Audeze LLC - -@@ -111302,12 +113510,18 @@ OUI:E06995* - OUI:E069BA* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:E06A05* -+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd -+ - OUI:E06C4E* - ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. - - OUI:E06CA6* - ID_OUI_FROM_DATABASE=Creotech Instruments S.A. - -+OUI:E06CC5* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:E06CF6* - ID_OUI_FROM_DATABASE=ESSENCORE limited - -@@ -111347,6 +113561,9 @@ OUI:E078A3* - OUI:E0795E* - ID_OUI_FROM_DATABASE=Wuxi Xiaohu Technology Co.,Ltd. - -+OUI:E0798D* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:E079C4* - ID_OUI_FROM_DATABASE=iRay Technology Company Limited - -@@ -111368,6 +113585,9 @@ OUI:E07F53* - OUI:E07F88* - ID_OUI_FROM_DATABASE=EVIDENCE Network SIA - -+OUI:E0806B* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:E08177* - ID_OUI_FROM_DATABASE=GreenBytes, Inc. - -@@ -111434,6 +113654,9 @@ OUI:E09861* - OUI:E09971* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:E09C8D* -+ ID_OUI_FROM_DATABASE=Seakeeper, Inc. -+ - OUI:E09D13* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -111716,6 +113939,9 @@ OUI:E0D4E8* - OUI:E0D55E* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -+OUI:E0D738* -+ ID_OUI_FROM_DATABASE=WireStar Networks -+ - OUI:E0D7BA* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -111833,6 +114059,9 @@ OUI:E0F5CA* - OUI:E0F62D* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:E0F678* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:E0F6B5* - ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd - -@@ -112379,6 +114608,9 @@ OUI:E48F34* - OUI:E48F65* - ID_OUI_FROM_DATABASE=Yelatma Instrument Making Enterprise, JSC - -+OUI:E4902A* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:E49069* - ID_OUI_FROM_DATABASE=Rockwell Automation - -@@ -112544,6 +114776,9 @@ OUI:E4B318* - OUI:E4B503* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:E4B633* -+ ID_OUI_FROM_DATABASE=Wuxi Stars Microsystem Technology Co., Ltd -+ - OUI:E4B97A* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -112994,6 +115229,9 @@ OUI:E839DF* - OUI:E83A12* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:E83A4B* -+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -+ - OUI:E83A97* - ID_OUI_FROM_DATABASE=Toshiba Corporation - -@@ -113042,6 +115280,9 @@ OUI:E84D74* - OUI:E84DD0* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:E84DEC* -+ ID_OUI_FROM_DATABASE=Xerox Corporation -+ - OUI:E84E06* - ID_OUI_FROM_DATABASE=EDUP INTERNATIONAL (HK) CO., LTD - -@@ -113306,6 +115547,9 @@ OUI:E88152* - OUI:E88175* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:E881AB* -+ ID_OUI_FROM_DATABASE=Beijing Sankuai Online Technology Co.,Ltd -+ - OUI:E8825B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -113468,6 +115712,9 @@ OUI:E8B2AC* - OUI:E8B2FE* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. - -+OUI:E8B3EF* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:E8B4700* - ID_OUI_FROM_DATABASE=DongGuan Ramaxel Memory Technology - -@@ -113633,6 +115880,9 @@ OUI:E8D765* - OUI:E8D819* - ID_OUI_FROM_DATABASE=AzureWave Technology Inc. - -+OUI:E8D87E* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:E8D8D1* - ID_OUI_FROM_DATABASE=HP Inc. - -@@ -113651,6 +115901,9 @@ OUI:E8DAAA* - OUI:E8DB84* - ID_OUI_FROM_DATABASE=Espressif Inc. - -+OUI:E8DC6C* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:E8DE00* - ID_OUI_FROM_DATABASE=ChongQing GuanFang Technology Co.,LTD - -@@ -113723,6 +115976,9 @@ OUI:E8EB1B* - OUI:E8EB34* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:E8EBD3* -+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. -+ - OUI:E8ECA3* - ID_OUI_FROM_DATABASE=Dongguan Liesheng Electronic Co.Ltd - -@@ -113765,6 +116021,9 @@ OUI:E8F654* - OUI:E8F724* - ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise - -+OUI:E8F791* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:E8F928* - ID_OUI_FROM_DATABASE=RFTECH SRL - -@@ -113777,6 +116036,9 @@ OUI:E8FA23* - OUI:E8FAF7* - ID_OUI_FROM_DATABASE=Guangdong Uniteddata Holding Group Co., Ltd. - -+OUI:E8FB1C* -+ ID_OUI_FROM_DATABASE=AzureWave Technology Inc. -+ - OUI:E8FBE9* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -113885,6 +116147,9 @@ OUI:EC1D8B* - OUI:EC1F72* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -+OUI:EC2125* -+ ID_OUI_FROM_DATABASE=Toshiba Corp. -+ - OUI:EC219F* - ID_OUI_FROM_DATABASE=VidaBox LLC - -@@ -113945,6 +116210,9 @@ OUI:EC2E98* - OUI:EC3091* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:EC30B3* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:EC316D* - ID_OUI_FROM_DATABASE=Hansgrohe - -@@ -114002,6 +116270,9 @@ OUI:EC4269* - OUI:EC42B4* - ID_OUI_FROM_DATABASE=ADC Corporation - -+OUI:EC42CC* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:EC42F0* - ID_OUI_FROM_DATABASE=ADL Embedded Solutions, Inc. - -@@ -114053,6 +116324,9 @@ OUI:EC52DC* - OUI:EC542E* - ID_OUI_FROM_DATABASE=Shanghai XiMei Electronic Technology Co. Ltd - -+OUI:EC551C* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:EC55F9* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -114086,9 +116360,15 @@ OUI:EC5C84* - OUI:EC5F23* - ID_OUI_FROM_DATABASE=Qinghai Kimascend Electronics Technology Co. Ltd. - -+OUI:EC6073* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:EC60E0* - ID_OUI_FROM_DATABASE=AVI-ON LABS - -+OUI:EC6260* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:EC6264* - ID_OUI_FROM_DATABASE=Global411 Internet Services, LLC - -@@ -114182,6 +116462,9 @@ OUI:EC8009* - OUI:EC8193* - ID_OUI_FROM_DATABASE=Logitech, Inc - -+OUI:EC819C* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:EC8263* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -114986,6 +117269,9 @@ OUI:F04CD5* - OUI:F04DA2* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:F04DD4* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:F04F7C* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -@@ -115076,6 +117362,9 @@ OUI:F06865* - OUI:F06BCA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:F06C5D* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:F06C73* - ID_OUI_FROM_DATABASE=Nokia - -@@ -115178,6 +117467,9 @@ OUI:F085C1* - OUI:F08620* - ID_OUI_FROM_DATABASE=Arcadyan Corporation - -+OUI:F0877F* -+ ID_OUI_FROM_DATABASE=Magnetar Technology Shenzhen Co., LTD. -+ - OUI:F08A28* - ID_OUI_FROM_DATABASE=JIANGSU HENGSION ELECTRONIC S and T CO.,LTD - -@@ -115400,6 +117692,9 @@ OUI:F0B5D1* - OUI:F0B61E* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:F0B661* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:F0B6EB* - ID_OUI_FROM_DATABASE=Poslab Technology Co., Ltd. - -@@ -115454,6 +117749,9 @@ OUI:F0C850* - OUI:F0C88C* - ID_OUI_FROM_DATABASE=LeddarTech Inc. - -+OUI:F0C8B5* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:F0C9D1* - ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd. - -@@ -115484,6 +117782,9 @@ OUI:F0D3A7* - OUI:F0D3E7* - ID_OUI_FROM_DATABASE=Sensometrix SA - -+OUI:F0D415* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:F0D4E2* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -116135,9 +118436,15 @@ OUI:F46B8C* - OUI:F46BEF* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:F46C68* -+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation -+ - OUI:F46D04* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -+OUI:F46D2F* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:F46DE2* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -116252,6 +118559,9 @@ OUI:F483E1* - OUI:F4844C* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:F4848D* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:F485C6* - ID_OUI_FROM_DATABASE=FDT Technologies - -@@ -116462,6 +118772,9 @@ OUI:F4B301* - OUI:F4B381* - ID_OUI_FROM_DATABASE=WindowMaster A/S - -+OUI:F4B3B1* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:F4B520* - ID_OUI_FROM_DATABASE=Biostar Microtech international corp. - -@@ -116558,6 +118871,9 @@ OUI:F4C7AA* - OUI:F4C7C8* - ID_OUI_FROM_DATABASE=Kelvin Inc. - -+OUI:F4C88A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:F4CA24* - ID_OUI_FROM_DATABASE=FreeBit Co., Ltd. - -@@ -116652,7 +118968,7 @@ OUI:F4E142* - ID_OUI_FROM_DATABASE=Delta Elektronika BV - - OUI:F4E204* -- ID_OUI_FROM_DATABASE=Traqueur -+ ID_OUI_FROM_DATABASE=COYOTE SYSTEM - - OUI:F4E2C6* - ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc. -@@ -117161,6 +119477,9 @@ OUI:F84DFC* - OUI:F84E17* - ID_OUI_FROM_DATABASE=Sony Corporation - -+OUI:F84E58* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:F84E73* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -117194,6 +119513,9 @@ OUI:F854AF* - OUI:F854B8* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -+OUI:F85548* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:F855CD* - ID_OUI_FROM_DATABASE=Visteon Corporation - -@@ -117227,6 +119549,9 @@ OUI:F85C4D* - OUI:F85C7D* - ID_OUI_FROM_DATABASE=Shenzhen Honesty Electronics Co.,Ltd. - -+OUI:F85E0B* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:F85E3C* - ID_OUI_FROM_DATABASE=SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD - -@@ -117569,6 +119894,9 @@ OUI:F8AA8A* - OUI:F8AB05* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:F8AB82* -+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -+ - OUI:F8ABE5* - ID_OUI_FROM_DATABASE=shenzhen worldelite electronics co., LTD - -@@ -117578,6 +119906,9 @@ OUI:F8AC65* - OUI:F8AC6D* - ID_OUI_FROM_DATABASE=Deltenna Ltd - -+OUI:F8AD24* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:F8ADCB* - ID_OUI_FROM_DATABASE=HMD Global Oy - -@@ -117662,6 +119993,9 @@ OUI:F8B797* - OUI:F8B7E2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:F8B8B4* -+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd -+ - OUI:F8B95A* - ID_OUI_FROM_DATABASE=LG Innotek - -@@ -117737,6 +120071,9 @@ OUI:F8CAB8* - OUI:F8CC6E* - ID_OUI_FROM_DATABASE=DEPO Electronics Ltd - -+OUI:F8CDC8* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:F8CE72* - ID_OUI_FROM_DATABASE=Wistron Corporation - -@@ -117815,6 +120152,9 @@ OUI:F8E43B* - OUI:F8E44E* - ID_OUI_FROM_DATABASE=MCOT INC. - -+OUI:F8E4A4* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:F8E4E3* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -117851,6 +120191,9 @@ OUI:F8E903* - OUI:F8E94E* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:F8E94F* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:F8E968* - ID_OUI_FROM_DATABASE=Egker Kft. - -@@ -117974,6 +120317,9 @@ OUI:FC0FE6* - OUI:FC0FE7* - ID_OUI_FROM_DATABASE=Microchip Technology Inc. - -+OUI:FC101A* -+ ID_OUI_FROM_DATABASE=Palo Alto Networks -+ - OUI:FC10BD* - ID_OUI_FROM_DATABASE=Control Sistematizado S.A. - -@@ -118361,6 +120707,9 @@ OUI:FC8399* - OUI:FC83C6* - ID_OUI_FROM_DATABASE=N-Radio Technologies Co., Ltd. - -+OUI:FC8417* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:FC8596* - ID_OUI_FROM_DATABASE=Axonne Inc. - -@@ -118451,6 +120800,9 @@ OUI:FC9FAE* - OUI:FC9FE1* - ID_OUI_FROM_DATABASE=CONWIN.Tech. Ltd - -+OUI:FCA05A* -+ ID_OUI_FROM_DATABASE=Oray.com co., LTD. -+ - OUI:FCA13E* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -118598,6 +120950,9 @@ OUI:FCB6D8* - OUI:FCB7F0* - ID_OUI_FROM_DATABASE=Idaho National Laboratory - -+OUI:FCB97E* -+ ID_OUI_FROM_DATABASE=GE Appliances -+ - OUI:FCBBA1* - ID_OUI_FROM_DATABASE=Shenzhen Minicreate Technology Co.,Ltd - -diff --git a/hwdb.d/20-acpi-vendor.hwdb b/hwdb.d/20-acpi-vendor.hwdb -index 87eba251c2..7fdb463e10 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb -+++ b/hwdb.d/20-acpi-vendor.hwdb -@@ -51,6 +51,9 @@ acpi:ATML*: - acpi:AUTH*: - ID_VENDOR_FROM_DATABASE=AuthenTec - -+acpi:AWDZ*: -+ ID_VENDOR_FROM_DATABASE=Shanghai Aiwei Electronic Technology Co., Ltd. -+ - acpi:BABA*: - ID_VENDOR_FROM_DATABASE=Alibaba Co., Ltd. - -@@ -219,6 +222,9 @@ acpi:MSHW*: - acpi:MXIM*: - ID_VENDOR_FROM_DATABASE=Maxim Integrated - -+acpi:NOLO*: -+ ID_VENDOR_FROM_DATABASE=NOLO VR -+ - acpi:NVDA*: - ID_VENDOR_FROM_DATABASE=Nvidia - -@@ -273,6 +279,9 @@ acpi:SECC*: - acpi:SHRP*: - ID_VENDOR_FROM_DATABASE=Sharp Corporation - -+acpi:SILC*: -+ ID_VENDOR_FROM_DATABASE=Silicom Ltd. Connectivity Solutions -+ - acpi:SNSL*: - ID_VENDOR_FROM_DATABASE=Sensel, Inc. - -@@ -912,6 +921,9 @@ acpi:ATV*: - acpi:ATX*: - ID_VENDOR_FROM_DATABASE=Athenix Corporation - -+acpi:AUD*: -+ ID_VENDOR_FROM_DATABASE=AudioControl -+ - acpi:AUG*: - ID_VENDOR_FROM_DATABASE=August Home, Inc. - -@@ -6036,6 +6048,9 @@ acpi:SBS*: - acpi:SBT*: - ID_VENDOR_FROM_DATABASE=Senseboard Technologies AB - -+acpi:SCA*: -+ ID_VENDOR_FROM_DATABASE=Schneider Consumer Group -+ - acpi:SCB*: - ID_VENDOR_FROM_DATABASE=SeeCubic B.V. - -@@ -6156,6 +6171,9 @@ acpi:SES*: - acpi:SET*: - ID_VENDOR_FROM_DATABASE=SendTek Corporation - -+acpi:SFL*: -+ ID_VENDOR_FROM_DATABASE=Shiftall Inc. -+ - acpi:SFM*: - ID_VENDOR_FROM_DATABASE=TORNADO Company - -diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch -index 38f3eee8a7..d1781e419f 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb.patch -+++ b/hwdb.d/20-acpi-vendor.hwdb.patch -@@ -1,5 +1,5 @@ ----- 20-acpi-vendor.hwdb.base 2021-12-23 19:33:43.195441335 +0900 --+++ 20-acpi-vendor.hwdb 2021-12-23 19:33:43.215441358 +0900 -+--- 20-acpi-vendor.hwdb.base 2022-03-29 12:18:39.832815359 +0200 -++++ 20-acpi-vendor.hwdb 2022-03-29 12:18:39.838815428 +0200 - @@ -3,6 +3,8 @@ - # Data imported from: - # https://uefi.org/uefi-pnp-export -@@ -19,7 +19,7 @@ - acpi:AMDI*: - ID_VENDOR_FROM_DATABASE=AMD - --@@ -325,6 +324,9 @@ -+@@ -334,6 +333,9 @@ - acpi:AAA*: - ID_VENDOR_FROM_DATABASE=Avolites Ltd - -@@ -29,7 +29,7 @@ - acpi:AAE*: - ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc. - --@@ -352,6 +354,9 @@ -+@@ -361,6 +363,9 @@ - acpi:ABO*: - ID_VENDOR_FROM_DATABASE=D-Link Systems Inc - -@@ -39,7 +39,7 @@ - acpi:ABS*: - ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc. - --@@ -397,7 +402,7 @@ -+@@ -406,7 +411,7 @@ - acpi:ACO*: - ID_VENDOR_FROM_DATABASE=Allion Computer Inc. - -@@ -48,7 +48,7 @@ - ID_VENDOR_FROM_DATABASE=Aspen Tech Inc - - acpi:ACR*: --@@ -673,6 +678,9 @@ -+@@ -682,6 +687,9 @@ - acpi:AMT*: - ID_VENDOR_FROM_DATABASE=AMT International Industry - -@@ -58,7 +58,7 @@ - acpi:AMX*: - ID_VENDOR_FROM_DATABASE=AMX LLC - --@@ -721,6 +729,9 @@ -+@@ -730,6 +738,9 @@ - acpi:AOA*: - ID_VENDOR_FROM_DATABASE=AOpen Inc. - -@@ -68,7 +68,7 @@ - acpi:AOE*: - ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc. - --@@ -730,6 +741,9 @@ -+@@ -739,6 +750,9 @@ - acpi:AOT*: - ID_VENDOR_FROM_DATABASE=Alcatel - -@@ -78,7 +78,7 @@ - acpi:APC*: - ID_VENDOR_FROM_DATABASE=American Power Conversion - --@@ -905,7 +919,7 @@ -+@@ -917,7 +931,7 @@ - ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD. - - acpi:AUO*: -@@ -87,7 +87,7 @@ - - acpi:AUR*: - ID_VENDOR_FROM_DATABASE=Aureal Semiconductor --@@ -985,6 +999,9 @@ -+@@ -997,6 +1011,9 @@ - acpi:AXE*: - ID_VENDOR_FROM_DATABASE=Axell Corporation - -@@ -97,7 +97,7 @@ - acpi:AXI*: - ID_VENDOR_FROM_DATABASE=American Magnetics - --@@ -1135,6 +1152,9 @@ -+@@ -1147,6 +1164,9 @@ - acpi:BML*: - ID_VENDOR_FROM_DATABASE=BIOMED Lab - -@@ -107,7 +107,7 @@ - acpi:BMS*: - ID_VENDOR_FROM_DATABASE=BIOMEDISYS - --@@ -1147,6 +1167,9 @@ -+@@ -1159,6 +1179,9 @@ - acpi:BNO*: - ID_VENDOR_FROM_DATABASE=Bang & Olufsen - -@@ -117,7 +117,7 @@ - acpi:BNS*: - ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems - --@@ -1390,6 +1413,9 @@ -+@@ -1402,6 +1425,9 @@ - acpi:CHA*: - ID_VENDOR_FROM_DATABASE=Chase Research PLC - -@@ -127,7 +127,7 @@ - acpi:CHD*: - ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd - --@@ -1552,6 +1578,9 @@ -+@@ -1564,6 +1590,9 @@ - acpi:COD*: - ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd. - -@@ -137,7 +137,7 @@ - acpi:COI*: - ID_VENDOR_FROM_DATABASE=Codec Inc. - --@@ -1961,7 +1990,7 @@ -+@@ -1973,7 +2002,7 @@ - ID_VENDOR_FROM_DATABASE=Dragon Information Technology - - acpi:DJE*: -@@ -146,7 +146,7 @@ - - acpi:DJP*: - ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd --@@ -2299,6 +2328,9 @@ -+@@ -2311,6 +2340,9 @@ - acpi:EIN*: - ID_VENDOR_FROM_DATABASE=Elegant Invention - -@@ -156,7 +156,7 @@ - acpi:EKA*: - ID_VENDOR_FROM_DATABASE=MagTek Inc. - --@@ -2563,6 +2595,9 @@ -+@@ -2575,6 +2607,9 @@ - acpi:FCG*: - ID_VENDOR_FROM_DATABASE=First International Computer Ltd - -@@ -166,7 +166,7 @@ - acpi:FCS*: - ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc. - --@@ -2939,7 +2974,7 @@ -+@@ -2951,7 +2986,7 @@ - ID_VENDOR_FROM_DATABASE=General Standards Corporation - - acpi:GSM*: -@@ -175,7 +175,7 @@ - - acpi:GSN*: - ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc. --@@ -3040,6 +3075,9 @@ -+@@ -3052,6 +3087,9 @@ - acpi:HEC*: - ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd. - -@@ -185,7 +185,7 @@ - acpi:HEL*: - ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd - --@@ -3172,6 +3210,9 @@ -+@@ -3184,6 +3222,9 @@ - acpi:HSD*: - ID_VENDOR_FROM_DATABASE=HannStar Display Corp - -@@ -195,7 +195,7 @@ - acpi:HSM*: - ID_VENDOR_FROM_DATABASE=AT&T Microelectronics - --@@ -3298,6 +3339,9 @@ -+@@ -3310,6 +3351,9 @@ - acpi:ICI*: - ID_VENDOR_FROM_DATABASE=Infotek Communication Inc - -@@ -205,7 +205,7 @@ - acpi:ICM*: - ID_VENDOR_FROM_DATABASE=Intracom SA - --@@ -3394,6 +3438,9 @@ -+@@ -3406,6 +3450,9 @@ - acpi:IKE*: - ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd. - -@@ -215,7 +215,7 @@ - acpi:IKS*: - ID_VENDOR_FROM_DATABASE=Ikos Systems Inc - --@@ -3439,6 +3486,9 @@ -+@@ -3451,6 +3498,9 @@ - acpi:IMT*: - ID_VENDOR_FROM_DATABASE=Inmax Technology Corporation - -@@ -225,7 +225,7 @@ - acpi:INA*: - ID_VENDOR_FROM_DATABASE=Inventec Corporation - --@@ -3955,6 +4005,9 @@ -+@@ -3967,6 +4017,9 @@ - acpi:LAN*: - ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc - -@@ -235,7 +235,7 @@ - acpi:LAS*: - ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S - --@@ -4003,6 +4056,9 @@ -+@@ -4015,6 +4068,9 @@ - acpi:LED*: - ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc - -@@ -245,7 +245,7 @@ - acpi:LEG*: - ID_VENDOR_FROM_DATABASE=Legerity, Inc - --@@ -4018,6 +4074,9 @@ -+@@ -4030,6 +4086,9 @@ - acpi:LGC*: - ID_VENDOR_FROM_DATABASE=Logic Ltd - -@@ -255,7 +255,7 @@ - acpi:LGI*: - ID_VENDOR_FROM_DATABASE=Logitech Inc - --@@ -4075,6 +4134,9 @@ -+@@ -4087,6 +4146,9 @@ - acpi:LND*: - ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd - -@@ -265,7 +265,7 @@ - acpi:LNK*: - ID_VENDOR_FROM_DATABASE=Link Tech Inc - --@@ -4109,7 +4171,7 @@ -+@@ -4121,7 +4183,7 @@ - ID_VENDOR_FROM_DATABASE=Design Technology - - acpi:LPL*: -@@ -274,7 +274,7 @@ - - acpi:LSC*: - ID_VENDOR_FROM_DATABASE=LifeSize Communications --@@ -4285,6 +4347,9 @@ -+@@ -4297,6 +4359,9 @@ - acpi:MCX*: - ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc. - -@@ -284,7 +284,7 @@ - acpi:MDA*: - ID_VENDOR_FROM_DATABASE=Media4 Inc - --@@ -4525,6 +4590,9 @@ -+@@ -4537,6 +4602,9 @@ - acpi:MOM*: - ID_VENDOR_FROM_DATABASE=Momentum Data Systems - -@@ -294,7 +294,7 @@ - acpi:MOS*: - ID_VENDOR_FROM_DATABASE=Moses Corporation - --@@ -4759,6 +4827,9 @@ -+@@ -4771,6 +4839,9 @@ - acpi:NAL*: - ID_VENDOR_FROM_DATABASE=Network Alchemy - -@@ -304,7 +304,7 @@ - acpi:NAT*: - ID_VENDOR_FROM_DATABASE=NaturalPoint Inc. - --@@ -5281,6 +5352,9 @@ -+@@ -5293,6 +5364,9 @@ - acpi:PCX*: - ID_VENDOR_FROM_DATABASE=PC Xperten - -@@ -314,7 +314,7 @@ - acpi:PDM*: - ID_VENDOR_FROM_DATABASE=Psion Dacom Plc. - --@@ -5344,9 +5418,6 @@ -+@@ -5356,9 +5430,6 @@ - acpi:PHE*: - ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH - -@@ -324,7 +324,7 @@ - acpi:PHL*: - ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company - --@@ -5437,9 +5508,6 @@ -+@@ -5449,9 +5520,6 @@ - acpi:PNL*: - ID_VENDOR_FROM_DATABASE=Panelview, Inc. - -@@ -334,7 +334,7 @@ - acpi:PNR*: - ID_VENDOR_FROM_DATABASE=Planar Systems, Inc. - --@@ -5575,15 +5643,9 @@ -+@@ -5587,15 +5655,9 @@ - acpi:PTS*: - ID_VENDOR_FROM_DATABASE=Plain Tree Systems Inc - -@@ -350,7 +350,7 @@ - acpi:PVG*: - ID_VENDOR_FROM_DATABASE=Proview Global Co., Ltd - --@@ -5899,9 +5961,6 @@ -+@@ -5911,9 +5973,6 @@ - acpi:RTI*: - ID_VENDOR_FROM_DATABASE=Rancho Tech Inc - -@@ -360,7 +360,7 @@ - acpi:RTL*: - ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd - --@@ -6070,9 +6129,6 @@ -+@@ -6085,9 +6144,6 @@ - acpi:SEE*: - ID_VENDOR_FROM_DATABASE=SeeColor Corporation - -@@ -370,7 +370,7 @@ - acpi:SEI*: - ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc - --@@ -6541,6 +6597,9 @@ -+@@ -6559,6 +6615,9 @@ - acpi:SVD*: - ID_VENDOR_FROM_DATABASE=SVD Computer - -@@ -380,7 +380,7 @@ - acpi:SVI*: - ID_VENDOR_FROM_DATABASE=Sun Microsystems - --@@ -6625,6 +6684,9 @@ -+@@ -6643,6 +6702,9 @@ - acpi:SZM*: - ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd - -@@ -390,7 +390,7 @@ - acpi:TAA*: - ID_VENDOR_FROM_DATABASE=Tandberg - --@@ -6715,6 +6777,9 @@ -+@@ -6733,6 +6795,9 @@ - acpi:TDG*: - ID_VENDOR_FROM_DATABASE=Six15 Technologies - -@@ -400,7 +400,7 @@ - acpi:TDM*: - ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc - --@@ -6757,6 +6822,9 @@ -+@@ -6775,6 +6840,9 @@ - acpi:TEV*: - ID_VENDOR_FROM_DATABASE=Televés, S.A. - -@@ -410,7 +410,7 @@ - acpi:TEZ*: - ID_VENDOR_FROM_DATABASE=Tech Source Inc. - --@@ -6880,9 +6948,6 @@ -+@@ -6898,9 +6966,6 @@ - acpi:TNC*: - ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd - -@@ -420,7 +420,7 @@ - acpi:TNM*: - ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA - --@@ -7192,14 +7257,14 @@ -+@@ -7210,14 +7275,14 @@ - acpi:UNC*: - ID_VENDOR_FROM_DATABASE=Unisys Corporation - -@@ -441,7 +441,7 @@ - - acpi:UNI*: - ID_VENDOR_FROM_DATABASE=Uniform Industry Corp. --@@ -7234,6 +7299,9 @@ -+@@ -7252,6 +7317,9 @@ - acpi:USA*: - ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG - -@@ -451,7 +451,7 @@ - acpi:USD*: - ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation - --@@ -7489,9 +7557,6 @@ -+@@ -7507,9 +7575,6 @@ - acpi:WAL*: - ID_VENDOR_FROM_DATABASE=Wave Access - -@@ -461,7 +461,7 @@ - acpi:WAV*: - ID_VENDOR_FROM_DATABASE=Wavephore - --@@ -7616,7 +7681,7 @@ -+@@ -7634,7 +7699,7 @@ - ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC - - acpi:WYS*: -@@ -470,7 +470,7 @@ - - acpi:WYT*: - ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd. --@@ -7630,9 +7695,6 @@ -+@@ -7648,9 +7713,6 @@ - acpi:XDM*: - ID_VENDOR_FROM_DATABASE=XDM Ltd. - -@@ -480,7 +480,7 @@ - acpi:XES*: - ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc. - --@@ -7663,9 +7725,6 @@ -+@@ -7681,9 +7743,6 @@ - acpi:XNT*: - ID_VENDOR_FROM_DATABASE=XN Technologies, Inc. - -@@ -490,7 +490,7 @@ - acpi:XQU*: - ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD - --@@ -7732,6 +7791,9 @@ -+@@ -7750,6 +7809,9 @@ - acpi:ZBX*: - ID_VENDOR_FROM_DATABASE=Zebax Technologies - -diff --git a/hwdb.d/20-pci-classes.hwdb b/hwdb.d/20-pci-classes.hwdb -index 3dca78b05f..52603ebadd 100644 ---- a/hwdb.d/20-pci-classes.hwdb -+++ b/hwdb.d/20-pci-classes.hwdb -@@ -612,7 +612,7 @@ pci:v*d*sv*sd*bc12sc00* - ID_PCI_SUBCLASS_FROM_DATABASE=Processing accelerators - - pci:v*d*sv*sd*bc12sc01* -- ID_PCI_SUBCLASS_FROM_DATABASE=AI Inference Accelerator -+ ID_PCI_SUBCLASS_FROM_DATABASE=SNIA Smart Data Accelerator Interface (SDXI) controller - - pci:v*d*sv*sd*bc13* - ID_PCI_CLASS_FROM_DATABASE=Non-Essential Instrumentation -diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb -index 745f5545c8..dba7d96d3e 100644 ---- a/hwdb.d/20-pci-vendor-model.hwdb -+++ b/hwdb.d/20-pci-vendor-model.hwdb -@@ -218,6 +218,15 @@ pci:v00000731d00009200* - pci:v00000731d0000920A* - ID_MODEL_FROM_DATABASE=JH920 - -+pci:v00000731d0000920Asv00000731sd0000920A* -+ ID_MODEL_FROM_DATABASE=JH920 -+ -+pci:v00000731d0000920Asv00000731sd0000920B* -+ ID_MODEL_FROM_DATABASE=JH920 (-I) -+ -+pci:v00000731d0000920Asv00000731sd0000920C* -+ ID_MODEL_FROM_DATABASE=JH920 (-M) -+ - pci:v00000731d0000920B* - ID_MODEL_FROM_DATABASE=JH920-I - -@@ -227,21 +236,42 @@ pci:v00000731d0000920C* - pci:v00000731d00009210* - ID_MODEL_FROM_DATABASE=JM9210 - -+pci:v00000731d00009210sv00000731sd00009210* -+ ID_MODEL_FROM_DATABASE=JM9210 -+ -+pci:v00000731d00009210sv00000731sd00009211* -+ ID_MODEL_FROM_DATABASE=JM9210 (-I) -+ - pci:v00000731d00009211* - ID_MODEL_FROM_DATABASE=JM9210-I - - pci:v00000731d00009230* - ID_MODEL_FROM_DATABASE=JM9230 - -+pci:v00000731d00009230sv00000731sd00009230* -+ ID_MODEL_FROM_DATABASE=JM9230 -+ -+pci:v00000731d00009230sv00000731sd00009231* -+ ID_MODEL_FROM_DATABASE=JM9230 (-I) -+ - pci:v00000731d00009231* - ID_MODEL_FROM_DATABASE=JM9231-I - - pci:v00000731d00009250* - ID_MODEL_FROM_DATABASE=JM9250 - -+pci:v00000731d00009250sv00000731sd00009250* -+ ID_MODEL_FROM_DATABASE=JM9250 -+ - pci:v00000731d0000930A* - ID_MODEL_FROM_DATABASE=JH930-I - -+pci:v00000731d0000930Asv00000731sd0000930A* -+ ID_MODEL_FROM_DATABASE=JH930-I -+ -+pci:v00000731d0000930Asv00000731sd0000930B* -+ ID_MODEL_FROM_DATABASE=JH930-I (JH930-M) -+ - pci:v00000731d0000930B* - ID_MODEL_FROM_DATABASE=JH930-M - -@@ -2297,9 +2327,15 @@ pci:v00001000d000000E6sv00001028sd0000200D* - pci:v00001000d000000E6sv00001028sd0000200E* - ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (HBA350i MX) - -+pci:v00001000d000000E6sv00001028sd00002170* -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (HBA350i MM) -+ - pci:v00001000d000000E6sv00001028sd00002175* - ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (HBA350i Adapter) - -+pci:v00001000d000000E6sv00001028sd00002197* -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (HBA350i MM LP) -+ - pci:v00001000d000000E6sv00001D49sd00000205* - ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA) - -@@ -2316,10 +2352,10 @@ pci:v00001000d000000E6sv00001D49sd00000209* - ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (ThinkSystem 440-8e SAS/SATA PCIe Gen4 12Gb HBA) - - pci:v00001000d000000E6sv00008086sd00004050* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (Storage Controller RS3P4QF160F) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (Storage Controller RS3P4QF160J) - - pci:v00001000d000000E6sv00008086sd00004070* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (Storage Controller RS3P4GF016F) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Secure SAS38xx (Storage Controller RS3P4GF016J) - - pci:v00001000d000000E7* - ID_MODEL_FROM_DATABASE=Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx -@@ -2615,6 +2651,9 @@ pci:v00001000d000010E2* - pci:v00001000d000010E2sv00001000sd00004000* - ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS39xx (MegaRAID 9560-16i) - -+pci:v00001000d000010E2sv00001000sd00004002* -+ ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS39xx (MegaRAID 9561-16i) -+ - pci:v00001000d000010E2sv00001000sd00004010* - ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS39xx (MegaRAID 9560-8i) - -@@ -2705,6 +2744,9 @@ pci:v00001000d000010E6sv00001028sd00002174* - pci:v00001000d000010E6sv00001028sd00002177* - ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS38xx (PERC H350 Adapter) - -+pci:v00001000d000010E6sv00001028sd00002199* -+ ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS38xx (PERC H350 Mini LP) -+ - pci:v00001000d000010E6sv00001D49sd00000505* - ID_MODEL_FROM_DATABASE=MegaRAID 12GSAS/PCIe Secure SAS38xx (ThinkSystem RAID 540-8i PCIe Gen4 12Gb Adapter) - -@@ -2768,6 +2810,9 @@ pci:v00001000d0000C012* - pci:v00001000d0000C012sv00001D49sd00000003* - ID_MODEL_FROM_DATABASE=PEX880xx PCIe Gen 4 Switch (ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter) - -+pci:v00001000d0000C030* -+ ID_MODEL_FROM_DATABASE=PEX890xx PCIe Gen 5 Switch -+ - pci:v00001001* - ID_VENDOR_FROM_DATABASE=Kolter Electronic - -@@ -2994,7 +3039,7 @@ pci:v00001002d0000164D* - ID_MODEL_FROM_DATABASE=Rembrandt - - pci:v00001002d00001681* -- ID_MODEL_FROM_DATABASE=Rembrandt -+ ID_MODEL_FROM_DATABASE=Rembrandt [Radeon 680M] - - pci:v00001002d00001714* - ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] -@@ -5889,13 +5934,16 @@ pci:v00001002d00006611sv00001B0Asd000090D3* - ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM] (Radeon R7 240 OEM) - - pci:v00001002d00006613* -- ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340] -+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340 / Radeon 520] - - pci:v00001002d00006613sv0000148Csd00007340* -- ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340] (Radeon R7 340) -+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340 / Radeon 520] (Radeon R7 340) - - pci:v00001002d00006613sv00001682sd00007240* -- ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340] (R7 240 2048 MB) -+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340 / Radeon 520] (R7 240 2048 MB) -+ -+pci:v00001002d00006613sv00001DCFsd00003000* -+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240/340 / Radeon 520] - - pci:v00001002d00006631* - ID_MODEL_FROM_DATABASE=Oland -@@ -10976,18 +11024,27 @@ pci:v00001002d000073A3* - pci:v00001002d000073A4* - ID_MODEL_FROM_DATABASE=Navi 21 USB - -+pci:v00001002d000073A5* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6950 XT] -+ - pci:v00001002d000073AB* - ID_MODEL_FROM_DATABASE=Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] - - pci:v00001002d000073AF* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6900 XT] - -+pci:v00001002d000073AFsv0000148Csd00002414* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6900 XT] (Navi 21 XTXH [PowerColor Red Devil RX 6900 XT Ultimate]) -+ - pci:v00001002d000073BF* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] - - pci:v00001002d000073BFsv00001002sd00000E3A* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (Radeon RX 6900 XT) - -+pci:v00001002d000073BFsv0000148Csd00002408* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (Red Devil AMD Radeon RX 6900 XT) -+ - pci:v00001002d000073BFsv00001EAEsd00006701* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black) - -@@ -10998,7 +11055,7 @@ pci:v00001002d000073C4* - ID_MODEL_FROM_DATABASE=Navi 22 USB - - pci:v00001002d000073DF* -- ID_MODEL_FROM_DATABASE=Navi 22 [Radeon RX 6700/6700 XT / 6800M] -+ ID_MODEL_FROM_DATABASE=Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] - - pci:v00001002d000073E0* - ID_MODEL_FROM_DATABASE=Navi 23 -@@ -11012,6 +11069,9 @@ pci:v00001002d000073E3* - pci:v00001002d000073E4* - ID_MODEL_FROM_DATABASE=Navi 23 USB - -+pci:v00001002d000073EF* -+ ID_MODEL_FROM_DATABASE=Navi 23 [Radeon RX 6650 XT] -+ - pci:v00001002d000073FF* - ID_MODEL_FROM_DATABASE=Navi 23 [Radeon RX 6600/6600 XT/6600M] - -@@ -11027,6 +11087,12 @@ pci:v00001002d0000740C* - pci:v00001002d0000740F* - ID_MODEL_FROM_DATABASE=Aldebaran - -+pci:v00001002d0000743F* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon RX 6400 / 6500 XT] -+ -+pci:v00001002d0000743Fsv00001DA2sd0000E457* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon RX 6400 / 6500 XT] (PULSE AMD Radeon RX 6500 XT) -+ - pci:v00001002d00007833* - ID_MODEL_FROM_DATABASE=RS350 Host Bridge - -@@ -12204,7 +12270,7 @@ pci:v00001002d0000AB20* - ID_MODEL_FROM_DATABASE=Vega 20 HDMI Audio [Radeon VII] - - pci:v00001002d0000AB28* -- ID_MODEL_FROM_DATABASE=Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT] -+ ID_MODEL_FROM_DATABASE=Navi 21/23 HDMI/DP Audio Controller - - pci:v00001002d0000AB38* - ID_MODEL_FROM_DATABASE=Navi 10 HDMI Audio -@@ -14577,28 +14643,28 @@ pci:v00001022d000015E1sv0000EA50sd0000CE19* - ID_MODEL_FROM_DATABASE=Raven USB 3.1 (mCOM10-L1900) - - pci:v00001022d000015E2* -- ID_MODEL_FROM_DATABASE=Raven/Raven2/FireFlight/Renoir Audio Processor -+ ID_MODEL_FROM_DATABASE=ACP/ACP3X/ACP6x Audio Coprocessor - - pci:v00001022d000015E2sv000017AAsd00005124* -- ID_MODEL_FROM_DATABASE=Raven/Raven2/FireFlight/Renoir Audio Processor (ThinkPad E595) -+ ID_MODEL_FROM_DATABASE=ACP/ACP3X/ACP6x Audio Coprocessor (ThinkPad E595) - - pci:v00001022d000015E2sv0000EA50sd0000CE19* -- ID_MODEL_FROM_DATABASE=Raven/Raven2/FireFlight/Renoir Audio Processor (mCOM10-L1900) -+ ID_MODEL_FROM_DATABASE=ACP/ACP3X/ACP6x Audio Coprocessor (mCOM10-L1900) - - pci:v00001022d000015E3* -- ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller -+ ID_MODEL_FROM_DATABASE=Family 17h/19h HD Audio Controller - - pci:v00001022d000015E3sv0000103Csd00008615* -- ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (Pavilion Laptop 15-cw1xxx) -+ ID_MODEL_FROM_DATABASE=Family 17h/19h HD Audio Controller (Pavilion Laptop 15-cw1xxx) - - pci:v00001022d000015E3sv00001043sd000086C7* -- ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (PRIME B450M-A Motherboard) -+ ID_MODEL_FROM_DATABASE=Family 17h/19h HD Audio Controller (PRIME B450M-A Motherboard) - - pci:v00001022d000015E3sv000017AAsd00005124* -- ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (ThinkPad E595) -+ ID_MODEL_FROM_DATABASE=Family 17h/19h HD Audio Controller (ThinkPad E595) - - pci:v00001022d000015E4* -- ID_MODEL_FROM_DATABASE=Raven/Raven2/Renoir Sensor Fusion Hub -+ ID_MODEL_FROM_DATABASE=Sensor Fusion Hub - - pci:v00001022d000015E5* - ID_MODEL_FROM_DATABASE=Raven2 USB 3.1 -@@ -15122,6 +15188,21 @@ pci:v00001022d000043C8* - pci:v00001022d000043D5* - ID_MODEL_FROM_DATABASE=400 Series Chipset USB 3.1 XHCI Controller - -+pci:v00001022d000043E9* -+ ID_MODEL_FROM_DATABASE=500 Series Chipset Switch Upstream Port -+ -+pci:v00001022d000043EB* -+ ID_MODEL_FROM_DATABASE=500 Series Chipset SATA Controller -+ -+pci:v00001022d000043EBsv00001B21sd00001062* -+ ID_MODEL_FROM_DATABASE=500 Series Chipset SATA Controller (ASM1062 Serial ATA Controller) -+ -+pci:v00001022d000043EE* -+ ID_MODEL_FROM_DATABASE=500 Series Chipset USB 3.1 XHCI Controller -+ -+pci:v00001022d000043EEsv00001B21sd00001142* -+ ID_MODEL_FROM_DATABASE=500 Series Chipset USB 3.1 XHCI Controller (ASM1042A USB 3.0 Host Controller) -+ - pci:v00001022d000057A3* - ID_MODEL_FROM_DATABASE=Matisse PCIe GPP Bridge - -@@ -34004,6 +34085,9 @@ pci:v000010DEd000010F0* - pci:v000010DEd000010F1* - ID_MODEL_FROM_DATABASE=GP106 High Definition Audio Controller - -+pci:v000010DEd000010F1sv00001043sd000085B6* -+ ID_MODEL_FROM_DATABASE=GP106 High Definition Audio Controller (DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual]) -+ - pci:v000010DEd000010F7* - ID_MODEL_FROM_DATABASE=TU102 High Definition Audio Controller - -@@ -36092,6 +36176,9 @@ pci:v000010DEd00001C02* - pci:v000010DEd00001C03* - ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 6GB] - -+pci:v000010DEd00001C03sv00001043sd000085B6* -+ ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 6GB] (DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual]) -+ - pci:v000010DEd00001C04* - ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 5GB] - -@@ -36488,6 +36575,9 @@ pci:v000010DEd00001F02* - pci:v000010DEd00001F02sv00001043sd00008673* - ID_MODEL_FROM_DATABASE=TU106 [GeForce RTX 2070] (TURBO RTX 2070) - -+pci:v000010DEd00001F03* -+ ID_MODEL_FROM_DATABASE=TU106 [GeForce RTX 2060 12GB] -+ - pci:v000010DEd00001F04* - ID_MODEL_FROM_DATABASE=TU106 - -@@ -36587,6 +36677,12 @@ pci:v000010DEd00001F9C* - pci:v000010DEd00001F9D* - ID_MODEL_FROM_DATABASE=TU117M [GeForce GTX 1650 Mobile / Max-Q] - -+pci:v000010DEd00001F9F* -+ ID_MODEL_FROM_DATABASE=TU117M [GeForce MX550] -+ -+pci:v000010DEd00001FA0* -+ ID_MODEL_FROM_DATABASE=TU117M [GeForce MX550] -+ - pci:v000010DEd00001FAE* - ID_MODEL_FROM_DATABASE=TU117GL - -@@ -36599,6 +36695,12 @@ pci:v000010DEd00001FB1* - pci:v000010DEd00001FB2* - ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T400 Mobile] - -+pci:v000010DEd00001FB6* -+ ID_MODEL_FROM_DATABASE=TU117GLM [T600 Laptop GPU] -+ -+pci:v000010DEd00001FB7* -+ ID_MODEL_FROM_DATABASE=TU117GLM [T550 Laptop GPU] -+ - pci:v000010DEd00001FB8* - ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T2000 Mobile / Max-Q] - -@@ -36611,6 +36713,9 @@ pci:v000010DEd00001FBA* - pci:v000010DEd00001FBB* - ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T500 Mobile] - -+pci:v000010DEd00001FBC* -+ ID_MODEL_FROM_DATABASE=TU117GLM [T1200 Laptop GPU] -+ - pci:v000010DEd00001FBF* - ID_MODEL_FROM_DATABASE=TU117GL - -@@ -36620,9 +36725,18 @@ pci:v000010DEd00001FD9* - pci:v000010DEd00001FDD* - ID_MODEL_FROM_DATABASE=TU117BM [GeForce GTX 1650 Mobile Refresh] - -+pci:v000010DEd00001FF0* -+ ID_MODEL_FROM_DATABASE=TU117GL [T1000 8GB] -+ -+pci:v000010DEd00001FF2* -+ ID_MODEL_FROM_DATABASE=TU117GL [T400 4GB] -+ - pci:v000010DEd00001FF9* - ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T1000 Mobile] - -+pci:v000010DEd00002082* -+ ID_MODEL_FROM_DATABASE=GA100 [CMP 170HX] -+ - pci:v000010DEd000020B0* - ID_MODEL_FROM_DATABASE=GA100 [A100 SXM4 40GB] - -@@ -36632,6 +36746,9 @@ pci:v000010DEd000020B1* - pci:v000010DEd000020B2* - ID_MODEL_FROM_DATABASE=GA100 [A100 SXM4 80GB] - -+pci:v000010DEd000020B3* -+ ID_MODEL_FROM_DATABASE=GA100 [PG506-242/243] -+ - pci:v000010DEd000020B5* - ID_MODEL_FROM_DATABASE=GA100 [A100 PCIe 80GB] - -@@ -36653,9 +36770,15 @@ pci:v000010DEd000020BF* - pci:v000010DEd000020C2* - ID_MODEL_FROM_DATABASE=GA100 [CMP 170HX] - -+pci:v000010DEd000020F0* -+ ID_MODEL_FROM_DATABASE=GA100 [A100-PG506-207] -+ - pci:v000010DEd000020F1* - ID_MODEL_FROM_DATABASE=GA100 [A100 PCIe 40GB] - -+pci:v000010DEd000020F2* -+ ID_MODEL_FROM_DATABASE=GA100 [A100-PG506-217] -+ - pci:v000010DEd00002182* - ID_MODEL_FROM_DATABASE=TU116 [GeForce GTX 1660 Ti] - -@@ -36722,6 +36845,9 @@ pci:v000010DEd00002206sv00001462sd00003892* - pci:v000010DEd00002208* - ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 Ti] - -+pci:v000010DEd0000220A* -+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 12GB] -+ - pci:v000010DEd0000220D* - ID_MODEL_FROM_DATABASE=GA102 [CMP 90HX] - -@@ -36743,6 +36869,9 @@ pci:v000010DEd00002231* - pci:v000010DEd00002232* - ID_MODEL_FROM_DATABASE=GA102GL [RTX A4500] - -+pci:v000010DEd00002233* -+ ID_MODEL_FROM_DATABASE=GA102GL [RTX A5500] -+ - pci:v000010DEd00002235* - ID_MODEL_FROM_DATABASE=GA102GL [A40] - -@@ -36752,6 +36881,9 @@ pci:v000010DEd00002236* - pci:v000010DEd00002237* - ID_MODEL_FROM_DATABASE=GA102GL [A10G] - -+pci:v000010DEd00002238* -+ ID_MODEL_FROM_DATABASE=GA102GL [A10M] -+ - pci:v000010DEd0000223F* - ID_MODEL_FROM_DATABASE=GA102GL - -@@ -36767,9 +36899,18 @@ pci:v000010DEd00002302* - pci:v000010DEd00002321* - ID_MODEL_FROM_DATABASE=GA103 - -+pci:v000010DEd00002414* -+ ID_MODEL_FROM_DATABASE=GA103 [GeForce RTX 3060 Ti] -+ - pci:v000010DEd00002420* - ID_MODEL_FROM_DATABASE=GA103M [GeForce RTX 3080 Ti Mobile] - -+pci:v000010DEd00002438* -+ ID_MODEL_FROM_DATABASE=GA103GLM [RTX A5500 Laptop GPU] -+ -+pci:v000010DEd00002460* -+ ID_MODEL_FROM_DATABASE=GA103M [GeForce RTX 3080 Ti Laptop GPU] -+ - pci:v000010DEd00002482* - ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Ti] - -@@ -36833,6 +36974,15 @@ pci:v000010DEd000024B7* - pci:v000010DEd000024B8* - ID_MODEL_FROM_DATABASE=GA104GLM [RTX A3000 Mobile] - -+pci:v000010DEd000024B9* -+ ID_MODEL_FROM_DATABASE=GA104GLM [RTX A3000 12GB Laptop GPU] -+ -+pci:v000010DEd000024BA* -+ ID_MODEL_FROM_DATABASE=GA104GLM [RTX A4500 Laptop GPU] -+ -+pci:v000010DEd000024BB* -+ ID_MODEL_FROM_DATABASE=GA104GLM [RTX A3000 Laptop GPU] -+ - pci:v000010DEd000024BF* - ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Engineering Sample] - -@@ -36842,6 +36992,12 @@ pci:v000010DEd000024DC* - pci:v000010DEd000024DD* - ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q] - -+pci:v000010DEd000024E0* -+ ID_MODEL_FROM_DATABASE=GA104M [Geforce RTX 3070 Ti Laptop GPU] -+ -+pci:v000010DEd000024FA* -+ ID_MODEL_FROM_DATABASE=GA104 [RTX A4500 Embedded GPU ] -+ - pci:v000010DEd00002501* - ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060] - -@@ -36854,6 +37010,9 @@ pci:v000010DEd00002504* - pci:v000010DEd00002505* - ID_MODEL_FROM_DATABASE=GA106 - -+pci:v000010DEd00002507* -+ ID_MODEL_FROM_DATABASE=GA106 [Geforce RTX 3050] -+ - pci:v000010DEd00002520* - ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3060 Mobile / Max-Q] - -@@ -36863,12 +37022,18 @@ pci:v000010DEd00002523* - pci:v000010DEd0000252F* - ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060 Engineering Sample] - -+pci:v000010DEd00002531* -+ ID_MODEL_FROM_DATABASE=GA106 [RTX A2000] -+ - pci:v000010DEd00002560* - ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3060 Mobile / Max-Q] - - pci:v000010DEd00002563* - ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] - -+pci:v000010DEd00002571* -+ ID_MODEL_FROM_DATABASE=GA106 [RTX A2000 12GB] -+ - pci:v000010DEd00002583* - ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050] - -@@ -36884,15 +37049,33 @@ pci:v000010DEd000025A4* - pci:v000010DEd000025A5* - ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 3050 Mobile] - -+pci:v000010DEd000025A6* -+ ID_MODEL_FROM_DATABASE=GA107M [GeForce MX570] -+ -+pci:v000010DEd000025A7* -+ ID_MODEL_FROM_DATABASE=GA107M [GeForce MX570] -+ -+pci:v000010DEd000025A9* -+ ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 2050] -+ - pci:v000010DEd000025AF* - ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050 Engineering Sample] - - pci:v000010DEd000025B5* - ID_MODEL_FROM_DATABASE=GA107GLM [RTX A4 Mobile] - -+pci:v000010DEd000025B6* -+ ID_MODEL_FROM_DATABASE=GA107GL [A2 / A16] -+ - pci:v000010DEd000025B8* - ID_MODEL_FROM_DATABASE=GA107GLM [RTX A2000 Mobile] - -+pci:v000010DEd000025B9* -+ ID_MODEL_FROM_DATABASE=GA107GLM [RTX A1000 Laptop GPU] -+ -+pci:v000010DEd000025BA* -+ ID_MODEL_FROM_DATABASE=GA107GLM [RTX A2000 8GB Laptop GPU] -+ - pci:v000010DEd000025E0* - ID_MODEL_FROM_DATABASE=GA107BM [GeForce RTX 3050 Ti Mobile] - -@@ -36902,6 +37085,12 @@ pci:v000010DEd000025E2* - pci:v000010DEd000025E5* - ID_MODEL_FROM_DATABASE=GA107BM [GeForce RTX 3050 Mobile] - -+pci:v000010DEd000025F9* -+ ID_MODEL_FROM_DATABASE=GA107 [RTX A1000 Embedded GPU ] -+ -+pci:v000010DEd000025FA* -+ ID_MODEL_FROM_DATABASE=GA107 [RTX A2000 Embedded GPU] -+ - pci:v000010DF* - ID_VENDOR_FROM_DATABASE=Emulex Corporation - -@@ -37586,6 +37775,9 @@ pci:v000010ECd0000525Asv000017AAsd0000224F* - pci:v000010ECd00005260* - ID_MODEL_FROM_DATABASE=RTS5260 PCI Express Card Reader - -+pci:v000010ECd00005261* -+ ID_MODEL_FROM_DATABASE=RTS5261 PCI Express Card Reader -+ - pci:v000010ECd00005286* - ID_MODEL_FROM_DATABASE=RTS5286 PCI Express Card Reader - -@@ -37889,6 +38081,9 @@ pci:v000010ECd00008168sv0000103Csd0000825B* - pci:v000010ECd00008168sv0000103Csd00008615* - ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Pavilion Laptop 15-cw1xxx) - -+pci:v000010ECd00008168sv0000103Csd00008882* -+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (HP ProDesk 405 G8 Desktop Mini PC) -+ - pci:v000010ECd00008168sv00001043sd000011F5* - ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Notebook motherboard (one of many models)) - -@@ -40556,6 +40751,9 @@ pci:v00001106d00009140* - pci:v00001106d00009201* - ID_MODEL_FROM_DATABASE=USB3.0 Controller - -+pci:v00001106d00009380* -+ ID_MODEL_FROM_DATABASE=Ncore Coprocessor -+ - pci:v00001106d00009530* - ID_MODEL_FROM_DATABASE=VX800/820/900 Series Secure Digital Memory Card Controller - -@@ -49715,6 +49913,9 @@ pci:v000012D8d00000508* - pci:v000012D8d00002304* - ID_MODEL_FROM_DATABASE=PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch - -+pci:v000012D8d00002308* -+ ID_MODEL_FROM_DATABASE=PI7C9X2G308GP 8-lane PCI Express 2.0 Switch with 3 PCI Express ports -+ - pci:v000012D8d00002404* - ID_MODEL_FROM_DATABASE=PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch - -@@ -51683,6 +51884,12 @@ pci:v000013A3d00000037* - pci:v000013A3d00000037sv000013A3sd00000036* - ID_MODEL_FROM_DATABASE=8204 Acceleration Processor (DX1740 Acceleration Card) - -+pci:v000013A3d00009240* -+ ID_MODEL_FROM_DATABASE=XR9240 Compression and Security Coprocessor [Panther II] -+ -+pci:v000013A3d00009240sv000013A3sd00009200* -+ ID_MODEL_FROM_DATABASE=XR9240 Compression and Security Coprocessor [Panther II] (DX2040 Compression and Security Acceleration Card [Panther II]) -+ - pci:v000013A4* - ID_VENDOR_FROM_DATABASE=Rascom Inc - -@@ -56477,9 +56684,18 @@ pci:v000014C2* - pci:v000014C3* - ID_VENDOR_FROM_DATABASE=MEDIATEK Corp. - -+pci:v000014C3d00000608* -+ ID_MODEL_FROM_DATABASE=RZ608 Wi-Fi 6E 80MHz -+ -+pci:v000014C3d00000616* -+ ID_MODEL_FROM_DATABASE=MT7922 802.11ax PCI Express Wireless Network Adapter -+ - pci:v000014C3d00007612* - ID_MODEL_FROM_DATABASE=MT7612E 802.11acbgn PCI Express Wireless Network Adapter - -+pci:v000014C3d00007615* -+ ID_MODEL_FROM_DATABASE=MT7615E 802.11ac PCI Express Wireless Network Adapter -+ - pci:v000014C3d00007630* - ID_MODEL_FROM_DATABASE=MT7630e 802.11bgn Wireless Network Adapter - -@@ -56489,6 +56705,9 @@ pci:v000014C3d00007662* - pci:v000014C3d00007915* - ID_MODEL_FROM_DATABASE=MT7915E 802.11ax PCI Express Wireless Network Adapter - -+pci:v000014C3d00007961* -+ ID_MODEL_FROM_DATABASE=MT7921 802.11ax PCI Express Wireless Network Adapter -+ - pci:v000014C4* - ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd - -@@ -57503,6 +57722,12 @@ pci:v000014E4d00001688sv00001259sd00002708* - pci:v000014E4d0000168A* - ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet - -+pci:v000014E4d0000168Asv00001014sd00000493* -+ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3)) -+ -+pci:v000014E4d0000168Asv00001014sd00000494* -+ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3)) -+ - pci:v000014E4d0000168Asv00001028sd00001F5C* - ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (BCM57800 10-Gigabit Ethernet) - -@@ -61079,6 +61304,9 @@ pci:v000015ADd000007C0* - pci:v000015ADd000007E0* - ID_MODEL_FROM_DATABASE=SATA AHCI controller - -+pci:v000015ADd000007F0* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller -+ - pci:v000015ADd00000801* - ID_MODEL_FROM_DATABASE=Virtual Machine Interface - -@@ -61178,6 +61406,12 @@ pci:v000015B3d0000021E* - pci:v000015B3d0000021F* - ID_MODEL_FROM_DATABASE=CX8 Family [ConnectX-8 Secure Flash Recovery] - -+pci:v000015B3d00000220* -+ ID_MODEL_FROM_DATABASE=BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery] -+ -+pci:v000015B3d00000221* -+ ID_MODEL_FROM_DATABASE=BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery] -+ - pci:v000015B3d0000024E* - ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode] - -@@ -61211,6 +61445,9 @@ pci:v000015B3d00000257* - pci:v000015B3d00000258* - ID_MODEL_FROM_DATABASE=Quantum-2 RMA - -+pci:v000015B3d00000259* -+ ID_MODEL_FROM_DATABASE=Abir Chiplet -+ - pci:v000015B3d00000262* - ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable] EN - -@@ -61232,6 +61469,9 @@ pci:v000015B3d00000274* - pci:v000015B3d00000275* - ID_MODEL_FROM_DATABASE=Spectrum-4C RMA - -+pci:v000015B3d00000277* -+ ID_MODEL_FROM_DATABASE=Spectrum-4TOR RMA -+ - pci:v000015B3d00000281* - ID_MODEL_FROM_DATABASE=NPS-600 Flash Recovery - -@@ -61727,6 +61967,15 @@ pci:v000015B3d0000A2DB* - pci:v000015B3d0000A2DC* - ID_MODEL_FROM_DATABASE=MT43244 BlueField-3 integrated ConnectX-7 network controller - -+pci:v000015B3d0000A2DD* -+ ID_MODEL_FROM_DATABASE=BF4 Family Crypto enabled [BlueField-4 SoC Crypto enabled] -+ -+pci:v000015B3d0000A2DE* -+ ID_MODEL_FROM_DATABASE=BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled] -+ -+pci:v000015B3d0000A2DF* -+ ID_MODEL_FROM_DATABASE=BF4 Family integrated network controller [BlueField-4 integrated network controller] -+ - pci:v000015B3d0000C2D2* - ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC management interfac - -@@ -61739,6 +61988,9 @@ pci:v000015B3d0000C2D4* - pci:v000015B3d0000C2D5* - ID_MODEL_FROM_DATABASE=MT43244 BlueField-3 SoC Management Interface - -+pci:v000015B3d0000C2D6* -+ ID_MODEL_FROM_DATABASE=BF4 Family Management Interface [BlueField-4 SoC Management Interface] -+ - pci:v000015B3d0000C738* - ID_MODEL_FROM_DATABASE=MT51136 - -@@ -62019,10 +62271,10 @@ pci:v000015CE* - ID_VENDOR_FROM_DATABASE=Genrad Inc - - pci:v000015CF* -- ID_VENDOR_FROM_DATABASE=Hilscher GmbH -+ ID_VENDOR_FROM_DATABASE=Hilscher Gesellschaft für Systemautomation mbH - - pci:v000015CFd00000000* -- ID_MODEL_FROM_DATABASE=CIFX 50E-DP(M/S) -+ ID_MODEL_FROM_DATABASE=CIFX PCI/PCIe - - pci:v000015D1* - ID_VENDOR_FROM_DATABASE=Infineon Technologies AG -@@ -64556,6 +64808,48 @@ pci:v0000177Dd0000A037* - pci:v0000177Dd0000A040* - ID_MODEL_FROM_DATABASE=THUNDERX CPT Cryptographic Accelerator - -+pci:v0000177Dd0000A059* -+ ID_MODEL_FROM_DATABASE=Octeon TX2 CGX (MAC) -+ -+pci:v0000177Dd0000A060* -+ ID_MODEL_FROM_DATABASE=Octeon 10 RPM (MAC) -+ -+pci:v0000177Dd0000A061* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 Loopback Interface (LBK) -+ -+pci:v0000177Dd0000A063* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 RVU Physical Function -+ -+pci:v0000177Dd0000A064* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 RVU Virtual Function -+ -+pci:v0000177Dd0000A065* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 RVU Admin Function -+ -+pci:v0000177Dd0000A09E* -+ ID_MODEL_FROM_DATABASE=Octeon 10 PTP controller -+ -+pci:v0000177Dd0000A0F2* -+ ID_MODEL_FROM_DATABASE=Octeon 10 CPT Cryptographic Accelerator, Physical function -+ -+pci:v0000177Dd0000A0F3* -+ ID_MODEL_FROM_DATABASE=Octeon 10 CPT Cryptographic Accelerator, Virtual function -+ -+pci:v0000177Dd0000A0F6* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 SDP Physical Function -+ -+pci:v0000177Dd0000A0F7* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 SDP Virtual Function -+ -+pci:v0000177Dd0000A0F8* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 Loopback Interface Virtual Function (LBKVF) -+ -+pci:v0000177Dd0000A0FD* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 CPT Cryptographic Accelerator, Physical function -+ -+pci:v0000177Dd0000A0FE* -+ ID_MODEL_FROM_DATABASE=Octeon Tx2 CPT Cryptographic Accelerator, Virtual function -+ - pci:v0000177Dd0000A100* - ID_MODEL_FROM_DATABASE=THUNDERX CN88XX 48 core SoC - -@@ -64871,6 +65165,12 @@ pci:v000017CBd00001000* - pci:v000017CBd00001101* - ID_MODEL_FROM_DATABASE=QCA6390 Wireless Network Adapter [AX500-DBS (2x2)] - -+pci:v000017CBd00001103* -+ ID_MODEL_FROM_DATABASE=Atheros QCNFA765 -+ -+pci:v000017CBd00001104* -+ ID_MODEL_FROM_DATABASE=QCN6024/9024/9074 Wireless Network Adapter -+ - pci:v000017CC* - ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc - -@@ -67367,6 +67667,12 @@ pci:v00001974d00000018* - pci:v00001974d00000019* - ID_MODEL_FROM_DATABASE=FlexCard PCIe3 - -+pci:v00001974d0000001A* -+ ID_MODEL_FROM_DATABASE=FlexCard PXIe Ethernet -+ -+pci:v00001974d0000001B* -+ ID_MODEL_FROM_DATABASE=FlexCard PCIe Ethernet -+ - pci:v00001976* - ID_VENDOR_FROM_DATABASE=TRENDnet - -@@ -68339,6 +68645,21 @@ pci:v00001AA8d00000009* - pci:v00001AA8d0000000A* - ID_MODEL_FROM_DATABASE=RAIDCore Controller - -+pci:v00001AA9* -+ ID_VENDOR_FROM_DATABASE=Schweitzer Engineering Laboratories -+ -+pci:v00001AA9d0000000D* -+ ID_MODEL_FROM_DATABASE=SEL-3390S8 Serial Adapter -+ -+pci:v00001AA9d0000000E* -+ ID_MODEL_FROM_DATABASE=SEL-3390E4 Ethernet Adapter -+ -+pci:v00001AA9d00000014* -+ ID_MODEL_FROM_DATABASE=SEL-3390T Time and Ethernet Adapter -+ -+pci:v00001AA9d00000018* -+ ID_MODEL_FROM_DATABASE=SEL-3390E4 Ethernet Adapter -+ - pci:v00001AAE* - ID_VENDOR_FROM_DATABASE=Global Velocity, Inc. - -@@ -68483,6 +68804,9 @@ pci:v00001AE8d00000A58* - pci:v00001AE8d00000A5A* - ID_MODEL_FROM_DATABASE=microEnable 5 AD8-CL - -+pci:v00001AE8d00000A64* -+ ID_MODEL_FROM_DATABASE=imaWorx CXP-12 Quad -+ - pci:v00001AE8d00000B52* - ID_MODEL_FROM_DATABASE=mE5 Abacus 4G Base - -@@ -68732,6 +69056,9 @@ pci:v00001B21d00001080sv00001849sd00001080* - pci:v00001B21d00001142* - ID_MODEL_FROM_DATABASE=ASM1042A USB 3.0 Host Controller - -+pci:v00001B21d00001166* -+ ID_MODEL_FROM_DATABASE=ASM1166 Serial ATA Controller -+ - pci:v00001B21d00001182* - ID_MODEL_FROM_DATABASE=ASM1182e 2-Port PCIe x1 Gen2 Packet Switch - -@@ -68744,12 +69071,18 @@ pci:v00001B21d00001184* - pci:v00001B21d00001184sv00001849sd00001184* - ID_MODEL_FROM_DATABASE=ASM1184e 4-Port PCIe x1 Gen2 Packet Switch - -+pci:v00001B21d00001187* -+ ID_MODEL_FROM_DATABASE=ASM1187e 7-Port PCIe x1 Gen2 Packet Switch -+ - pci:v00001B21d00001242* - ID_MODEL_FROM_DATABASE=ASM1142 USB 3.1 Host Controller - - pci:v00001B21d00001343* - ID_MODEL_FROM_DATABASE=ASM1143 USB 3.1 Host Controller - -+pci:v00001B21d00001812* -+ ID_MODEL_FROM_DATABASE=ASM1812 6-Port PCIe x4 Gen2 Packet Switch -+ - pci:v00001B21d00002142* - ID_MODEL_FROM_DATABASE=ASM2142 USB 3.1 Host Controller - -@@ -68966,6 +69299,12 @@ pci:v00001B4Bd00002241sv00001028sd00002112* - pci:v00001B4Bd00002241sv00001028sd00002113* - ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (BOSS-N1 Modular) - -+pci:v00001B4Bd00002241sv00001028sd00002151* -+ ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (BOSS-N1 Modular ET) -+ -+pci:v00001B4Bd00002241sv00001028sd00002196* -+ ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (ROR-N100) -+ - pci:v00001B4Bd00002241sv00001D49sd00000306* - ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit) - -@@ -68993,6 +69332,9 @@ pci:v00001B4Bd00009130* - pci:v00001B4Bd00009130sv00001043sd00008438* - ID_MODEL_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo (P8P67 Deluxe Motherboard) - -+pci:v00001B4Bd00009170* -+ ID_MODEL_FROM_DATABASE=88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller -+ - pci:v00001B4Bd00009172* - ID_MODEL_FROM_DATABASE=88SE9172 SATA 6Gb/s Controller - -@@ -69323,6 +69665,24 @@ pci:v00001BB1d00000100sv00001BB1sd00000151* - pci:v00001BB1d00000100sv00001BB1sd00000152* - ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5520 TCG) - -+pci:v00001BB1d00000100sv00001BB1sd00000153* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050H) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000154* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050H TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000155* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050M) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000156* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050M TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000157* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050M 7mm) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000158* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050M TCG 7mm) -+ - pci:v00001BB1d00000100sv00001BB1sd000001A1* - ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro XP7102) - -@@ -69332,6 +69692,9 @@ pci:v00001BB1d00005012* - pci:v00001BB1d00005016* - ID_MODEL_FROM_DATABASE=FireCuda 520 SSD - -+pci:v00001BB1d00005018* -+ ID_MODEL_FROM_DATABASE=FireCuda 530 SSD -+ - pci:v00001BB3* - ID_VENDOR_FROM_DATABASE=Bluecherry - -@@ -69779,12 +70142,54 @@ pci:v00001C5Cd00002839sv00001028sd0000214A* - pci:v00001C5Cd00002839sv00001C5Csd00000100* - ID_MODEL_FROM_DATABASE=PE8000 Series NVMe Solid State Drive - -+pci:v00001C5Cd00002849* -+ ID_MODEL_FROM_DATABASE=PE81x0 U.2/3 NVMe Solid State Drive -+ - pci:v00001C5F* - ID_VENDOR_FROM_DATABASE=Beijing Memblaze Technology Co. Ltd. - - pci:v00001C5Fd0000000D* - ID_MODEL_FROM_DATABASE=PBlaze5 520/526 - -+pci:v00001C5Fd0000000E* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B20* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B21* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G 2.5" U.2) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B30* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B31* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G 2.5" U.2) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B40* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 7680G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00000B41* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 7680G 2.5" U.2) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B20* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1600G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B21* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1600G 2.5" U.2) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B30* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3200G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B31* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3200G 2.5" U.2) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B40* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 6400G AIC) -+ -+pci:v00001C5Fd0000000Esv00001C5Fsd00004B41* -+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 6400G 2.5" U.2) -+ - pci:v00001C5Fd0000003D* - ID_MODEL_FROM_DATABASE=PBlaze5 920/926 - -@@ -69908,6 +70313,9 @@ pci:v00001CB8* - pci:v00001CC1* - ID_VENDOR_FROM_DATABASE=ADATA Technology Co., Ltd. - -+pci:v00001CC1d00005766* -+ ID_MODEL_FROM_DATABASE=ADATA XPG GAMMIXS1 1L Media -+ - pci:v00001CC1d00008201* - ID_MODEL_FROM_DATABASE=XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive - -@@ -69947,6 +70355,9 @@ pci:v00001CC4d00001203sv00001CC4sd0000A214* - pci:v00001CC4d000017AB* - ID_MODEL_FROM_DATABASE=NVMe 256G SSD device - -+pci:v00001CC4d00006303* -+ ID_MODEL_FROM_DATABASE=AM630 PCIe 4.0 x4 NVMe SSD Controller -+ - pci:v00001CC5* - ID_VENDOR_FROM_DATABASE=Embedded Intelligence, Inc. - -@@ -70523,6 +70934,9 @@ pci:v00001D6Cd0000101D* - pci:v00001D6Cd0000101E* - ID_MODEL_FROM_DATABASE=AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] - -+pci:v00001D6Cd0000101F* -+ ID_MODEL_FROM_DATABASE=AR-TK242 [2x100GbE Packet Capture Device] -+ - pci:v00001D6Cd00004200* - ID_MODEL_FROM_DATABASE=A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] - -@@ -71141,6 +71555,12 @@ pci:v00001DE5d00003000* - pci:v00001DED* - ID_VENDOR_FROM_DATABASE=Alibaba (China) Co., Ltd. - -+pci:v00001DEDd0000107F* -+ ID_MODEL_FROM_DATABASE=Elastic RDMA Adapter -+ -+pci:v00001DEDd00005007* -+ ID_MODEL_FROM_DATABASE=Elastic RDMA Adapter -+ - pci:v00001DEDd00008000* - ID_MODEL_FROM_DATABASE=M1 Root Port - -@@ -71409,7 +71829,7 @@ pci:v00001E0Fd00000007sv00001028sd00002110* - ID_MODEL_FROM_DATABASE=NVMe SSD Controller Cx6 (Dell Ent NVMe FIPS CM6 MU 6.4TB) - - pci:v00001E0Fd00000007sv00001E0Fsd00000001* -- ID_MODEL_FROM_DATABASE=NVMe SSD Controller Cx6 (Generic NVMe CM6 RI 3.84TB) -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller Cx6 (Generic NVMe CM6) - - pci:v00001E0Fd00000009* - ID_MODEL_FROM_DATABASE=NVMe SSD -@@ -71417,6 +71837,39 @@ pci:v00001E0Fd00000009* - pci:v00001E0Fd00000009sv00001E0Fsd00000001* - ID_MODEL_FROM_DATABASE=NVMe SSD (Toshiba RC500 NVMe SSD 500GB) - -+pci:v00001E0Fd00000011* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 -+ -+pci:v00001E0Fd00000011sv00001028sd00002189* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe SED CD7 RI 960GB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218A* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe CD7 RI 960GB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218B* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe SED CD7 RI 1.92TB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218C* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe CD7 RI 1.92TB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218D* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe SED CD7 RI 3.84TB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218E* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe CD7 RI 3.84TB) -+ -+pci:v00001E0Fd00000011sv00001028sd0000218F* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe SED CD7 RI 7.68TB) -+ -+pci:v00001E0Fd00000011sv00001028sd00002190* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe CD7 RI 7.68TB) -+ -+pci:v00001E0Fd00000011sv00001028sd00002191* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe SED CD7 RI 15.36TB) -+ -+pci:v00001E0Fd00000011sv00001028sd00002192* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller CD7 (DC NVMe CD7 RI 15.36TB) -+ - pci:v00001E17* - ID_VENDOR_FROM_DATABASE=Arnold & Richter Cine Technik GmbH & Co. Betriebs KG - -@@ -71490,7 +71943,7 @@ pci:v00001E39* - ID_VENDOR_FROM_DATABASE=MEDION AG - - pci:v00001E3B* -- ID_VENDOR_FROM_DATABASE=Shenzhen DAPU Microelectronics Co., Ltd -+ ID_VENDOR_FROM_DATABASE=DapuStor Corporation - - pci:v00001E3Bd00000600* - ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 -@@ -71678,6 +72131,9 @@ pci:v00001E3D* - pci:v00001E49* - ID_VENDOR_FROM_DATABASE=Yangtze Memory Technologies Co.,Ltd - -+pci:v00001E49d00000041* -+ ID_MODEL_FROM_DATABASE=ZHITAI TiPro7000 -+ - pci:v00001E49d00001013* - ID_MODEL_FROM_DATABASE=PC210 - -@@ -71726,6 +72182,15 @@ pci:v00001E59* - pci:v00001E59d00000001* - ID_MODEL_FROM_DATABASE=MinION Mk1C - -+pci:v00001E5D* -+ ID_VENDOR_FROM_DATABASE=ASR Microelectronics -+ -+pci:v00001E5Dd00007000* -+ ID_MODEL_FROM_DATABASE=AI controller A7000 -+ -+pci:v00001E5Dd00007010* -+ ID_MODEL_FROM_DATABASE=AI controller A7010 -+ - pci:v00001E60* - ID_VENDOR_FROM_DATABASE=Hailo Technologies Ltd. - -@@ -71834,6 +72299,15 @@ pci:v00001EABd0000300A* - pci:v00001EABd0000300B* - ID_MODEL_FROM_DATABASE=NVMe SSD Controller 300B - -+pci:v00001EAC* -+ ID_VENDOR_FROM_DATABASE=Quectel Wireless Solutions Co., Ltd. -+ -+pci:v00001EACd00001001* -+ ID_MODEL_FROM_DATABASE=EM120R-GL LTE Modem -+ -+pci:v00001EACd00001002* -+ ID_MODEL_FROM_DATABASE=EM160R-GL LTE Modem -+ - pci:v00001EAE* - ID_VENDOR_FROM_DATABASE=XFX Limited - -@@ -71843,6 +72317,12 @@ pci:v00001EB1* - pci:v00001EB1d00001001* - ID_MODEL_FROM_DATABASE=Video Accelerator - -+pci:v00001EB4* -+ ID_VENDOR_FROM_DATABASE=Quantum Nebula Microelectronics Technology Co.,Ltd. -+ -+pci:v00001EB4d00003401* -+ ID_MODEL_FROM_DATABASE=SSD Contoller -+ - pci:v00001EBD* - ID_VENDOR_FROM_DATABASE=EMERGETECH Company Ltd. - -@@ -71858,6 +72338,15 @@ pci:v00001ED2d00000000* - pci:v00001ED3* - ID_VENDOR_FROM_DATABASE=Yeston - -+pci:v00001ED5* -+ ID_VENDOR_FROM_DATABASE=Moore Threads Technology Co.,Ltd -+ -+pci:v00001ED5d00000100* -+ ID_MODEL_FROM_DATABASE=MTT S10 -+ -+pci:v00001ED5d00000101* -+ ID_MODEL_FROM_DATABASE=MTT S30 -+ - pci:v00001ED8* - ID_VENDOR_FROM_DATABASE=Digiteq Automotive - -@@ -71909,6 +72398,27 @@ pci:v00001F03d00005236* - pci:v00001F03d00005636* - ID_MODEL_FROM_DATABASE=IG5636-Based NVMe SSD - -+pci:v00001F2F* -+ ID_VENDOR_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co.Ltd. -+ -+pci:v00001F2Fd00001513* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller -+ -+pci:v00001F2Fd00001513sv00001F2Fsd00006113* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM660 U.2 1.6TB NVMe SSD) -+ -+pci:v00001F2Fd00001513sv00001F2Fsd00006114* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM560 U.2 1.92TB NVMe SSD) -+ -+pci:v00001F2Fd00001513sv00001F2Fsd00006115* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM660 U.2 3.2TB NVMe SSD) -+ -+pci:v00001F2Fd00001513sv00001F2Fsd00006116* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM560 U.2 3.84TB NVMe SSD) -+ -+pci:v00001F2Fd00001513sv00001F2Fsd00006118* -+ ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM560 U.2 7.68TB NVMe SSD) -+ - pci:v00001FAB* - ID_VENDOR_FROM_DATABASE=Unifabrix Ltd. - -@@ -74114,6 +74624,24 @@ pci:v00006688d00001600* - pci:v00006688d00001800* - ID_MODEL_FROM_DATABASE=CooVOX TDM BRI Module - -+pci:v00006766* -+ ID_VENDOR_FROM_DATABASE=Glenfly Tech Co., Ltd. -+ -+pci:v00006766d00003D00* -+ ID_MODEL_FROM_DATABASE=Arise-GT-10C0 -+ -+pci:v00006766d00003D02* -+ ID_MODEL_FROM_DATABASE=Arise 1020 -+ -+pci:v00006766d00003D40* -+ ID_MODEL_FROM_DATABASE=Arise-GT-10C0 High Definition Audio Controller -+ -+pci:v00006766d00003D41* -+ ID_MODEL_FROM_DATABASE=Arise 1020 High Definition Audio Controller -+ -+pci:v00006899* -+ ID_VENDOR_FROM_DATABASE=ZT Systems -+ - pci:v00006900* - ID_VENDOR_FROM_DATABASE=Red Hat, Inc. - -@@ -74147,6 +74675,15 @@ pci:v00007401d0000E100* - pci:v00007470* - ID_VENDOR_FROM_DATABASE=TP-LINK Technologies Co., Ltd. - -+pci:v00007526* -+ ID_VENDOR_FROM_DATABASE=HongQin (Beijing) Technology Co., Ltd. -+ -+pci:v00007526d00000082* -+ ID_MODEL_FROM_DATABASE=HQ SSD 1TB -+ -+pci:v00007526d00000083* -+ ID_MODEL_FROM_DATABASE=HQ SSD 2TB M.2 NVMe -+ - pci:v00007604* - ID_VENDOR_FROM_DATABASE=O.N. Electronic Co Ltd. - -@@ -76160,6 +76697,24 @@ pci:v00008086d00000B60sv00001028sd00002103* - pci:v00008086d00000B60sv00001028sd00002104* - ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe RI U.2 7.68TB (P5500)) - -+pci:v00008086d00000B60sv00001028sd0000219A* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe P5316 RI 15.36TB) -+ -+pci:v00008086d00000B60sv00001028sd0000219B* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe P5316 RI 30.72TB) -+ -+pci:v00008086d00000B60sv00001028sd0000219C* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED P5316 RI 15.36) -+ -+pci:v00008086d00000B60sv00001028sd0000219D* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED P5316 RI 30.72) -+ -+pci:v00008086d00000B60sv00001028sd0000219E* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe FIPS P5316 RI 15.36TB) -+ -+pci:v00008086d00000B60sv00001028sd0000219F* -+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe FIPS P5316 RI 30.72) -+ - pci:v00008086d00000B60sv00008086sd00008008* - ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510)) - -@@ -76484,12 +77039,33 @@ pci:v00008086d00000D9F* - pci:v00008086d00000DD2* - ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 - -+pci:v00008086d00000DD2sv00001137sd00000000* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (I710T4LG 4x1 GbE RJ45 PCIe NIC) -+ -+pci:v00008086d00000DD2sv00001137sd000002E3* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (I710T4LG 4x1 GbE RJ45 PCIe NIC) -+ -+pci:v00008086d00000DD2sv00008086sd00000000* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L) -+ - pci:v00008086d00000DD2sv00008086sd0000000D* - ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L) - - pci:v00008086d00000DD2sv00008086sd00000010* - ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L for OCP 3.0) - -+pci:v00008086d00000DD2sv00008086sd0000401A* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L) -+ -+pci:v00008086d00000DD2sv00008086sd0000401B* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L for OCP 3.0) -+ -+pci:v00008086d00000DDA* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ -+ -+pci:v00008086d00000DDAsv00001BD4sd00000076* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ -+ - pci:v00008086d00000E00* - ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 - -@@ -80507,6 +81083,9 @@ pci:v00008086d00001592sv00008086sd0000000D* - pci:v00008086d00001592sv00008086sd0000000E* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-2C-Q2) - -+pci:v00008086d00001592sv00008086sd00000010* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet 100G 2P E810-C-stg Adapter) -+ - pci:v00008086d00001593* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP - -@@ -80543,9 +81122,18 @@ pci:v00008086d00001593sv00008086sd0000000D* - pci:v00008086d00001593sv00008086sd0000000E* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet Network Adapter E810-XXV-4T) - -+pci:v00008086d00001593sv00008086sd0000000F* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet 25G 4P E810-XXV-stg Adapter) -+ -+pci:v00008086d00001593sv00008086sd00000010* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet 25G 4P E810-XXV-st Adapter) -+ - pci:v00008086d00001599* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for backplane - -+pci:v00008086d00001599sv00008086sd00000001* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for backplane (Ethernet 25G 2P E810-XXV-k Mezz) -+ - pci:v00008086d0000159A* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for QSFP - -@@ -91634,6 +92222,9 @@ pci:v00008086d00003433* - pci:v00008086d00003438* - ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Throttle Registers - -+pci:v00008086d0000347E* -+ ID_MODEL_FROM_DATABASE=Ice Lake Xeon Non-Transparent Bridge -+ - pci:v00008086d00003482* - ID_MODEL_FROM_DATABASE=Ice Lake-LP LPC Controller - -@@ -94064,12 +94655,18 @@ pci:v00008086d0000444E* - pci:v00008086d0000460D* - ID_MODEL_FROM_DATABASE=12th Gen Core Processor PCI Express x16 Controller #1 - -+pci:v00008086d0000461D* -+ ID_MODEL_FROM_DATABASE=Alder Lake Innovation Platform Framework Processor Participant -+ - pci:v00008086d0000461E* - ID_MODEL_FROM_DATABASE=Alder Lake-P Thunderbolt 4 USB Controller - - pci:v00008086d0000461F* - ID_MODEL_FROM_DATABASE=Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 - -+pci:v00008086d00004626* -+ ID_MODEL_FROM_DATABASE=Alder Lake-P Integrated Graphics Controller -+ - pci:v00008086d00004629* - ID_MODEL_FROM_DATABASE=12th Gen Core Processor Host Bridge/DRAM Registers - -@@ -94094,6 +94691,9 @@ pci:v00008086d0000464D* - pci:v00008086d0000464F* - ID_MODEL_FROM_DATABASE=12th Gen Core Processor Gaussian & Neural Accelerator - -+pci:v00008086d00004660* -+ ID_MODEL_FROM_DATABASE=12th Gen Core Processor Host Bridge/DRAM Registers -+ - pci:v00008086d0000466D* - ID_MODEL_FROM_DATABASE=Alder Lake-P Thunderbolt 4 NHI #1 - -@@ -94118,6 +94718,9 @@ pci:v00008086d000046A1* - pci:v00008086d000046A3* - ID_MODEL_FROM_DATABASE=Alder Lake-P GT1 [UHD Graphics] - -+pci:v00008086d000046A6* -+ ID_MODEL_FROM_DATABASE=Alder Lake-P Integrated Graphics Controller -+ - pci:v00008086d000046C0* - ID_MODEL_FROM_DATABASE=AlderLake-M GT1 - -@@ -94152,10 +94755,13 @@ pci:v00008086d00004C9A* - ID_MODEL_FROM_DATABASE=RocketLake-S [UHD Graphics] - - pci:v00008086d00004DA3* -- ID_MODEL_FROM_DATABASE=JaserLake SMBus -+ ID_MODEL_FROM_DATABASE=Jasper Lake SMBus - - pci:v00008086d00004DA4* -- ID_MODEL_FROM_DATABASE=JaserLake SPI (flash) Controller -+ ID_MODEL_FROM_DATABASE=Jasper Lake SPI Controller -+ -+pci:v00008086d00004DC8* -+ ID_MODEL_FROM_DATABASE=Jasper Lake HD Audio - - pci:v00008086d00004DE0* - ID_MODEL_FROM_DATABASE=Management Engine Interface -@@ -94337,12 +94943,21 @@ pci:v00008086d0000504C* - pci:v00008086d00005181* - ID_MODEL_FROM_DATABASE=Alder Lake PCH-P LPC/eSPI Controller - -+pci:v00008086d00005182* -+ ID_MODEL_FROM_DATABASE=Alder Lake PCH eSPI Controller -+ - pci:v00008086d000051A3* - ID_MODEL_FROM_DATABASE=Alder Lake PCH-P SMBus Host Controller - - pci:v00008086d000051A4* - ID_MODEL_FROM_DATABASE=Alder Lake-P PCH SPI Controller - -+pci:v00008086d000051A8* -+ ID_MODEL_FROM_DATABASE=Alder Lake PCH UART #0 -+ -+pci:v00008086d000051A9* -+ ID_MODEL_FROM_DATABASE=Alder Lake PCH UART #1 -+ - pci:v00008086d000051BF* - ID_MODEL_FROM_DATABASE=Alder Lake PCH-P PCI Express Root Port #9 - -@@ -95486,6 +96101,45 @@ pci:v00008086d00007800sv00008086sd00000000* - pci:v00008086d00007800sv00008086sd00000100* - ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Intel740 Graphics Accelerator) - -+pci:v00008086d00007A84* -+ ID_MODEL_FROM_DATABASE=Z690 Chipset LPC/eSPI Controller -+ -+pci:v00008086d00007AA3* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH SMBus Controller -+ -+pci:v00008086d00007AA4* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH SPI Controller -+ -+pci:v00008086d00007AA7* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH Shared SRAM -+ -+pci:v00008086d00007AB4* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #13 -+ -+pci:v00008086d00007ABD* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #6 -+ -+pci:v00008086d00007ACC* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH I2C Controller #0 -+ -+pci:v00008086d00007AD0* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S HD Audio Controller -+ -+pci:v00008086d00007AE0* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller -+ -+pci:v00008086d00007AE2* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH SATA Controller [AHCI Mode] -+ -+pci:v00008086d00007AE8* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH HECI Controller #1 -+ -+pci:v00008086d00007AF0* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH CNVi WiFi -+ -+pci:v00008086d00007AF0sv00008086sd00000094* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH CNVi WiFi (Wi-Fi 6 AX201 160MHz) -+ - pci:v00008086d00008002* - ID_MODEL_FROM_DATABASE=Trusted Execution Technology Registers - -@@ -96593,6 +97247,9 @@ pci:v00008086d00009B63* - pci:v00008086d00009B64* - ID_MODEL_FROM_DATABASE=10th Gen Core Processor Host Bridge/DRAM Registers - -+pci:v00008086d00009BA8* -+ ID_MODEL_FROM_DATABASE=CometLake-S GT1 [UHD Graphics 610] -+ - pci:v00008086d00009BC4* - ID_MODEL_FROM_DATABASE=CometLake-H GT2 [UHD Graphics] - -@@ -97193,6 +97850,9 @@ pci:v00008086d00009D3Dsv0000103Csd00008079* - pci:v00008086d00009D3Dsv000017AAsd00002247* - ID_MODEL_FROM_DATABASE=Sunrise Point-LP Active Management Technology - SOL (ThinkPad T570) - -+pci:v00008086d00009D3E* -+ ID_MODEL_FROM_DATABASE=iTouch Controller -+ - pci:v00008086d00009D43* - ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller - -@@ -97355,6 +98015,9 @@ pci:v00008086d00009DA8* - pci:v00008086d00009DAA* - ID_MODEL_FROM_DATABASE=Cannon Point-LP Serial IO SPI Controller - -+pci:v00008086d00009DAB* -+ ID_MODEL_FROM_DATABASE=Cannon Point-LP Serial IO SPI Controller -+ - pci:v00008086d00009DB0* - ID_MODEL_FROM_DATABASE=Cannon Point-LP PCI Express Root Port #9 - -@@ -97385,6 +98048,9 @@ pci:v00008086d00009DBE* - pci:v00008086d00009DBF* - ID_MODEL_FROM_DATABASE=Cannon Point PCI Express Root Port #8 - -+pci:v00008086d00009DC4* -+ ID_MODEL_FROM_DATABASE=Cannon Point-LP SD Host Controller -+ - pci:v00008086d00009DC5* - ID_MODEL_FROM_DATABASE=Cannon Point-LP Serial IO I2C Host Controller - -@@ -98475,7 +99141,7 @@ pci:v00008086d0000A39A* - ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port 11 - - pci:v00008086d0000A3A1* -- ID_MODEL_FROM_DATABASE=Memory controller -+ ID_MODEL_FROM_DATABASE=Cannon Lake PCH Power Management Controller - - pci:v00008086d0000A3A3* - ID_MODEL_FROM_DATABASE=Comet Lake PCH-V SMBus Host Controller -@@ -99923,6 +100589,12 @@ pci:v00009005d0000028Fsv00001BD4sd00000071* - pci:v00009005d0000028Fsv00001BD4sd00000072* - ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0800M5E16i) - -+pci:v00009005d0000028Fsv00001CC4sd00000101* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (Ramaxel FBGF-RAD PM8204) -+ -+pci:v00009005d0000028Fsv00001CC4sd00000201* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (Ramaxel FBGF-RAD PM8222) -+ - pci:v00009005d0000028Fsv00001D49sd00000220* - ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (ThinkSystem 4350-8i SAS/SATA 12Gb HBA) - -@@ -100754,6 +101426,12 @@ pci:v0000CDDDd00000200* - pci:v0000CEBA* - ID_VENDOR_FROM_DATABASE=KEBA AG - -+pci:v0000CF86* -+ ID_VENDOR_FROM_DATABASE=Spectrum-4TOR -+ -+pci:v0000CF86d00000276* -+ ID_MODEL_FROM_DATABASE=Spectrum-4TOR in Flash Recovery Mode -+ - pci:v0000D161* - ID_VENDOR_FROM_DATABASE=Digium, Inc. - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index 9f457d9f65..4bcb238815 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -8078,6 +8078,12 @@ usb:v046Dp0846* - usb:v046Dp084B* - ID_MODEL_FROM_DATABASE=ConferenceCam Connect Video - -+usb:v046Dp084C* -+ ID_MODEL_FROM_DATABASE=ConferenceCam Connect Audio -+ -+usb:v046Dp084E* -+ ID_MODEL_FROM_DATABASE=ConferenceCam Connect -+ - usb:v046Dp0850* - ID_MODEL_FROM_DATABASE=QuickCam Web - -@@ -8235,7 +8241,7 @@ usb:v046Dp08D9* - ID_MODEL_FROM_DATABASE=QuickCam IM/Connect - - usb:v046Dp08DA* -- ID_MODEL_FROM_DATABASE=QuickCam Messanger -+ ID_MODEL_FROM_DATABASE=QuickCam Messenger - - usb:v046Dp08DD* - ID_MODEL_FROM_DATABASE=QuickCam for Notebooks -@@ -8652,7 +8658,7 @@ usb:v046DpC06C* - ID_MODEL_FROM_DATABASE=Optical Mouse - - usb:v046DpC077* -- ID_MODEL_FROM_DATABASE=M105 Optical Mouse -+ ID_MODEL_FROM_DATABASE=Mouse - - usb:v046DpC07C* - ID_MODEL_FROM_DATABASE=M-R0017 [G700s Rechargeable Gaming Mouse] -@@ -8676,7 +8682,7 @@ usb:v046DpC08B* - ID_MODEL_FROM_DATABASE=G502 SE HERO Gaming Mouse - - usb:v046DpC092* -- ID_MODEL_FROM_DATABASE=G203 LIGHTSYNC Gaming Mouse -+ ID_MODEL_FROM_DATABASE=G102/G203 LIGHTSYNC Gaming Mouse - - usb:v046DpC101* - ID_MODEL_FROM_DATABASE=UltraX Media Remote -@@ -9122,6 +9128,9 @@ usb:v046DpC534* - usb:v046DpC537* - ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver - -+usb:v046DpC539* -+ ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver -+ - usb:v046DpC53A* - ID_MODEL_FROM_DATABASE=PowerPlay Wireless Charging System - -@@ -58655,6 +58664,9 @@ usb:v1A86p5523* - usb:v1A86p5584* - ID_MODEL_FROM_DATABASE=CH341 in parallel mode, usb to printer port converter - -+usb:v1A86p7522* -+ ID_MODEL_FROM_DATABASE=CH340 serial converter -+ - usb:v1A86p7523* - ID_MODEL_FROM_DATABASE=CH340 serial converter - -@@ -58665,7 +58677,7 @@ usb:v1A86p7584* - ID_MODEL_FROM_DATABASE=CH340S - - usb:v1A86pE008* -- ID_MODEL_FROM_DATABASE=HID-based serial adapater -+ ID_MODEL_FROM_DATABASE=HID-based serial adapter - - usb:v1A89* - ID_VENDOR_FROM_DATABASE=Dynalith Systems Co., Ltd. -@@ -60954,7 +60966,7 @@ usb:v1D50p6054* - ID_MODEL_FROM_DATABASE=Satlab/AAUSAT3 BlueBox - - usb:v1D50p6055* -- ID_MODEL_FROM_DATABASE=RADiuS ER900TRS-02 transciever with SMA Connector -+ ID_MODEL_FROM_DATABASE=RADiuS ER900TRS-02 transceiver with SMA Connector - - usb:v1D50p6056* - ID_MODEL_FROM_DATABASE=The Glitch -@@ -61365,16 +61377,16 @@ usb:v1D50p60EE* - ID_MODEL_FROM_DATABASE=Duet 3 motion control electronics - - usb:v1D50p60F0* -- ID_MODEL_FROM_DATABASE=UDAD-T1 data aquisition device (boot) -+ ID_MODEL_FROM_DATABASE=UDAD-T1 data acquisition device (boot) - - usb:v1D50p60F1* -- ID_MODEL_FROM_DATABASE=UDAD-T1 data aquisition device -+ ID_MODEL_FROM_DATABASE=UDAD-T1 data acquisition device - - usb:v1D50p60F2* -- ID_MODEL_FROM_DATABASE=UDAD-T2 data aquisition device (boot) -+ ID_MODEL_FROM_DATABASE=UDAD-T2 data acquisition device (boot) - - usb:v1D50p60F3* -- ID_MODEL_FROM_DATABASE=UDAD-T2 data aquisition device -+ ID_MODEL_FROM_DATABASE=UDAD-T2 data acquisition device - - usb:v1D50p60F4* - ID_MODEL_FROM_DATABASE=Uniti ARC motor controller -@@ -61421,6 +61433,9 @@ usb:v1D50p6122* - usb:v1D50p614C* - ID_MODEL_FROM_DATABASE=dwtk In-Circuit Emulator - -+usb:v1D50p614D* -+ ID_MODEL_FROM_DATABASE=Generic Display -+ - usb:v1D50p8085* - ID_MODEL_FROM_DATABASE=Box0 (box0-v5) - -@@ -61473,7 +61488,7 @@ usb:v1D57pAF03* - ID_MODEL_FROM_DATABASE=Wireless Receiver - - usb:v1D57pFA20* -- ID_MODEL_FROM_DATABASE=2.4GHz Wireless Reciever (Mini Keyboard & Mouse) -+ ID_MODEL_FROM_DATABASE=2.4GHz Wireless Receiver (Mini Keyboard & Mouse) - - usb:v1D5B* - ID_VENDOR_FROM_DATABASE=Smartronix, Inc. -@@ -62397,7 +62412,22 @@ usb:v1FBD* - ID_VENDOR_FROM_DATABASE=Delphin Technology AG - - usb:v1FBDp0001* -- ID_MODEL_FROM_DATABASE=Expert Key - Data aquisition system -+ ID_MODEL_FROM_DATABASE=Expert Key - Data acquisition system -+ -+usb:v1FBDp0004* -+ ID_MODEL_FROM_DATABASE=MetiOS Device (RNDIS) -+ -+usb:v1FBDp0005* -+ ID_MODEL_FROM_DATABASE=Loggito -+ -+usb:v1FBDp0006* -+ ID_MODEL_FROM_DATABASE=LoggitoLab 8 AI-RTD -+ -+usb:v1FBDp0007* -+ ID_MODEL_FROM_DATABASE=LoggitoLab 8 TC -+ -+usb:v1FBDp0008* -+ ID_MODEL_FROM_DATABASE=LoggitoLab 4 AI-RTD 4 TC - - usb:v1FC9* - ID_VENDOR_FROM_DATABASE=NXP Semiconductors -@@ -67871,6 +67901,30 @@ usb:v3195pF280* - usb:v3195pF281* - ID_MODEL_FROM_DATABASE=MSO-28 - -+usb:v3197* -+ ID_VENDOR_FROM_DATABASE=Katusha -+ -+usb:v3197p1001* -+ ID_MODEL_FROM_DATABASE=M151 -+ -+usb:v3197p1002* -+ ID_MODEL_FROM_DATABASE=M250 -+ -+usb:v3197p1003* -+ ID_MODEL_FROM_DATABASE=P130 -+ -+usb:v3197p1004* -+ ID_MODEL_FROM_DATABASE=M130 -+ -+usb:v3197p1101* -+ ID_MODEL_FROM_DATABASE=P247 -+ -+usb:v3197p1102* -+ ID_MODEL_FROM_DATABASE=M247 -+ -+usb:v3197p1103* -+ ID_MODEL_FROM_DATABASE=M348 -+ - usb:v31C9* - ID_VENDOR_FROM_DATABASE=BeiJing LanXum Computer Technology Co., Ltd. - -@@ -69653,9 +69707,24 @@ usb:v8086p07D3* - usb:v8086p07DC* - ID_MODEL_FROM_DATABASE=Bluetooth 4.0* Smart Ready (low energy) - -+usb:v8086p0A66* -+ ID_MODEL_FROM_DATABASE=RealSense 3D Camera (Front F200) -+ -+usb:v8086p0AA5* -+ ID_MODEL_FROM_DATABASE=RealSense SR300 -+ -+usb:v8086p0AD2* -+ ID_MODEL_FROM_DATABASE=RealSense D410 -+ -+usb:v8086p0AD3* -+ ID_MODEL_FROM_DATABASE=RealSense D415 -+ - usb:v8086p0B07* - ID_MODEL_FROM_DATABASE=RealSense D435 - -+usb:v8086p0B64* -+ ID_MODEL_FROM_DATABASE=RealSense L515 -+ - usb:v8086p0DAD* - ID_MODEL_FROM_DATABASE=Cherry MiniatureCard Keyboard - -@@ -69731,6 +69800,9 @@ usb:v8086p9500* - usb:v8086p9890* - ID_MODEL_FROM_DATABASE=82930 Test Board - -+usb:v8086pA36D* -+ ID_MODEL_FROM_DATABASE=Host Controller -+ - usb:v8086pBEEF* - ID_MODEL_FROM_DATABASE=SCM Miniature Card Reader/Writer - -diff --git a/hwdb.d/acpi_id_registry.html b/hwdb.d/acpi_id_registry.html -index 5c37d1ae66..b2a6844521 100644 ---- a/hwdb.d/acpi_id_registry.html -+++ b/hwdb.d/acpi_id_registry.html -@@ -110,6 +110,9 @@ - Purism SPCPURI06/10/2021 - Lontium Semiconductor CorporationLTSC07/21/2021 - Wacom TechnologyWACF09/21/2021 -+ Shanghai Aiwei Electronic Technology Co., Ltd.AWDZ12/31/2021 -+ Silicom Ltd. Connectivity SolutionsSILC03/28/2022 -+ NOLO VRNOLO03/28/2022 - - - -diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt -index 82cbdee336..eb99ea7fb0 100644 ---- a/hwdb.d/ma-large.txt -+++ b/hwdb.d/ma-large.txt -@@ -10088,12 +10088,6 @@ AC9A22 (base 16) NXP Semiconductors - Hefei Anhui 230088 - CN - --80-6A-B0 (hex) Shenzhen TINNO Mobile Technology Corp. --806AB0 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F.,H-3 Building,OCT Eastern lndustrial Park -- Nanshan District, Shenzhen GUANGDONG 518053 -- CN -- - 48-AD-08 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 48AD08 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -18563,12 +18557,6 @@ D4C766 (base 16) Acentic GmbH - Sungnam-Si Kyunggi-Do 463-870 - KR - --00-26-04 (hex) Audio Processing Technology Ltd --002604 (base 16) Audio Processing Technology Ltd -- Whiterock Business Park -- Belfast BT12 7FP -- GB -- - 00-26-59 (hex) Nintendo Co., Ltd. - 002659 (base 16) Nintendo Co., Ltd. - 11-1 HOKOTATE-CHO KAMITOBA, MINAMI-KU -@@ -31049,12 +31037,6 @@ D4C766 (base 16) Acentic GmbH - GOLDEN CO 80401 - US - --00-00-BD (hex) Mitsubishi Cable Industries, Ltd. / Ryosei Systems --0000BD (base 16) Mitsubishi Cable Industries, Ltd. / Ryosei Systems -- 8, NISHINO-CHO, HIGASHI-MUKOJIMA -- AMAGASAKI HYOGO 660-0856 -- JP -- - 00-00-2E (hex) SOCIETE EVIRA - 00002E (base 16) SOCIETE EVIRA - ZONE PORTUAIRE DE BREGAILLON -@@ -34475,12 +34457,6 @@ DCCD74 (base 16) Japan E.M.Solutions Co., Ltd. - Kato 673-1447 - JP - --00-12-93 (hex) ABB Power Protection (CH) --001293 (base 16) ABB Power Protection (CH) -- 1501 Roanoke Blvd. -- Salem VA 24153 -- US -- - A0-3B-01 (hex) Kyung In Electronics - A03B01 (base 16) Kyung In Electronics - #1411, Byucksan Digital Valley 2, 184, Gasan Digital2-ro, Geumcheon-gu -@@ -34619,12 +34595,6 @@ A0A3F0 (base 16) D-Link International - Shenzhen 518000 - CN - --E0-6C-4E (hex) Shenzhen TINNO Mobile Technology Corp. --E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - F0-25-8E (hex) HUAWEI TECHNOLOGIES CO.,LTD - F0258E (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -35279,12 +35249,6 @@ C87B23 (base 16) Bose Corporation - Moulineaux 92370 - FR - --30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD --308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- - 9C-1C-37 (hex) AltoBeam (China) Inc. - 9C1C37 (base 16) AltoBeam (China) Inc. - B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -@@ -37232,12 +37196,6 @@ A41752 (base 16) Hifocus Electronics India Private Limited - Chennai Tamil Nadu 600002 - IN - --2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD --2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- - 40-FE-95 (hex) New H3C Technologies Co., Ltd - 40FE95 (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District -@@ -37496,12 +37454,6 @@ AC567B (base 16) Sunnovo International Limited - Beijing Beijing 100083 - CN - --A0-B4-BF (hex) InfiNet LLC --A0B4BF (base 16) InfiNet LLC -- office 11, 24 S.Deryabinoy st. -- Yekaterinburg Sverdlovsk region 620102 -- RU -- - 9C-C1-2D (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. - 9CC12D (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. - Midea Global Innovation Center,Beijiao Town,Shunde -@@ -37526,18 +37478,36 @@ DC8084 (base 16) Apple, Inc. - Ernakulam KL 686662 - IN - --B0-5C-16 (hex) Fiberhome Telecommunication Technologies Co.,LTD --B05C16 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -+E4-DA-DF (hex) Taicang T&W Electronics -+E4DADF (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 - CN - --08-E0-21 (hex) Honor Device Co., Ltd. --08E021 (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -+7C-35-F8 (hex) Zhejiang Tmall Technology Co., Ltd. -+7C35F8 (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 -+ CN -+ -+74-26-FF (hex) zte corporation -+7426FF (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+C4-27-28 (hex) zte corporation -+C42728 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - -+C8-58-95 (hex) Motorola Mobility LLC, a Lenovo Company -+C85895 (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ - A8-53-7D (hex) Mist Systems, Inc. - A8537D (base 16) Mist Systems, Inc. - 1601 South De Anza Blvd, Suite 248 -@@ -37550,42 +37520,657 @@ A8537D (base 16) Mist Systems, Inc. - San Francisco CA 94107 - US - -+08-E0-21 (hex) Honor Device Co., Ltd. -+08E021 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+B0-5C-16 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+B05C16 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ - E8-D3-22 (hex) Cisco Systems, Inc - E8D322 (base 16) Cisco Systems, Inc - 80 West Tasman Drive - San Jose CA 94568 - US - --E4-DA-DF (hex) Taicang T&W Electronics --E4DADF (base 16) Taicang T&W Electronics -- 89# Jiang Nan RD -- Suzhou Jiangsu 215412 -+30-2B-DC (hex) Top-Unum Electronics Co., LTD -+302BDC (base 16) Top-Unum Electronics Co., LTD -+ No. 58, Ln. 137, Jianshan Rd., Yingge Dist., -+ New Taipei City 239, Taiwan 239 - CN - --7C-35-F8 (hex) Zhejiang Tmall Technology Co., Ltd. --7C35F8 (base 16) Zhejiang Tmall Technology Co., Ltd. -- No.969 Wenyi West Road, Wuchang Street, Yuhang District -- Hangzhou Zhejiang 310024 -+8C-15-53 (hex) Beijing Memblaze Technology Co Ltd -+8C1553 (base 16) Beijing Memblaze Technology Co Ltd -+ Building B2,Dongsheng Park, 66 Xixiaokou Road, Haidian -+ Beijing Beijing 100192 - CN - --74-26-FF (hex) zte corporation --7426FF (base 16) zte corporation -+D4-BD-4F (hex) Ruckus Wireless -+D4BD4F (base 16) Ruckus Wireless -+ 350 West Java Drive -+ Sunnyvale CA 94089 -+ US -+ -+5C-C9-C0 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+5CC9C0 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+6C-B1-58 (hex) TP-LINK TECHNOLOGIES CO.,LTD. -+6CB158 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -+ Shenzhen Guangdong 518057 -+ CN -+ -+E8-81-AB (hex) Beijing Sankuai Online Technology Co.,Ltd -+E881AB (base 16) Beijing Sankuai Online Technology Co.,Ltd -+ BC Building, China Electronic Science Taiji Information Technology Industry Base, Yard 7, Rongda Road, Chaoyang District -+ Beijing 100102 -+ CN -+ -+1C-47-F6 (hex) Zhidao Network Technology(Shenzhen) Co.,Ltd -+1C47F6 (base 16) Zhidao Network Technology(Shenzhen) Co.,Ltd -+ B3, 11 / F, Exiang Technology Building, No. 31, Zhongsi Road, Gaoxin, Maling Community, Yuehai Street, Nanshan District -+ Shenzhen 518000 -+ CN -+ -+A0-B4-BF (hex) InfiNet LLC -+A0B4BF (base 16) InfiNet LLC -+ Office 425, 69/75 Vavilova str. -+ Moscow\ 117335 -+ RU -+ -+E8-EB-D3 (hex) Mellanox Technologies, Inc. -+E8EBD3 (base 16) Mellanox Technologies, Inc. -+ 350 Oakmead Parkway, Suite 100 -+ Sunnyvale CA 94085 -+ US -+ -+C0-06-0C (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C0060C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+B0-A4-F0 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B0A4F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+24-75-3A (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+24753A (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+90-F7-B2 (hex) New H3C Technologies Co., Ltd -+90F7B2 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+04-E3-1A (hex) Sagemcom Broadband SAS -+04E31A (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+6C-99-9D (hex) Amazon Technologies Inc. -+6C999D (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+7C-6A-60 (hex) China Mobile Group Device Co.,Ltd. -+7C6A60 (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+68-18-D9 (hex) Hill AFB - CAPRE Group -+6818D9 (base 16) Hill AFB - CAPRE Group -+ 7278 4th Street -+ Hill AFB UT 84056 -+ US -+ -+18-BC-57 (hex) ADVA Optical Networking Ltd. -+18BC57 (base 16) ADVA Optical Networking Ltd. -+ ADVAntage House -+ York YO30 4RY -+ GB -+ -+9C-A2-F4 (hex) TP-Link Corporation Limited -+9CA2F4 (base 16) TP-Link Corporation Limited -+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -+ Tsim Sha Tsui Kowloon 999077 -+ HK -+ -+1C-61-B4 (hex) TP-Link Corporation Limited -+1C61B4 (base 16) TP-Link Corporation Limited -+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -+ Tsim Sha Tsui Kowloon 999077 -+ HK -+ -+B4-69-5F (hex) TCT mobile ltd -+B4695F (base 16) TCT mobile ltd -+ No.86 hechang 7th road, zhongkai, Hi-Tech District -+ Hui Zhou Guang Dong 516006 -+ CN -+ -+D8-E2-DF (hex) Microsoft Corporation -+D8E2DF (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ -+6C-93-08 (hex) IEEE Registration Authority -+6C9308 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+38-8F-30 (hex) Samsung Electronics Co.,Ltd -+388F30 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+24-06-F2 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+2406F2 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+84-C6-92 (hex) Texas Instruments -+84C692 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+6C-B2-FD (hex) Texas Instruments -+6CB2FD (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+6C-0F-61 (hex) Hypervolt Ltd -+6C0F61 (base 16) Hypervolt Ltd -+ 25 Churchill Place -+ London E14 5EY -+ GB -+ -+A0-44-66 (hex) Intellics -+A04466 (base 16) Intellics -+ 697, Pangyo-ro, Bundang-gu -+ Seongnam-si Gyeonggi-do 13511 -+ KR -+ -+CC-66-18 (hex) Adtran Inc -+CC6618 (base 16) Adtran Inc -+ 901 Explorer Blvd. -+ Huntsville AL 35806-2807 -+ US -+ -+C0-C1-70 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+C0C170 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+50-42-89 (hex) zte corporation -+504289 (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China - shenzhen guangdong 518057 - CN - --C4-27-28 (hex) zte corporation --C42728 (base 16) zte corporation -+30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD -+308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD -+2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+C0-6D-ED (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -+C06DED (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -+ No.555 Qianmo Road -+ Hangzhou Zhejiang 310052 -+ CN -+ -+44-6D-7F (hex) Amazon Technologies Inc. -+446D7F (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno 89507 -+ US -+ -+E0-27-6C (hex) Guangzhou Shiyuan Electronic Technology Company Limited -+E0276C (base 16) Guangzhou Shiyuan Electronic Technology Company Limited -+ No.6, 4th Yunpu Road, Yunpu industry District -+ Guangzhou Guangdong 510530 -+ CN -+ -+90-93-5A (hex) ARRIS Group, Inc. -+90935A (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+AC-8F-A9 (hex) Nokia Solutions and Networks GmbH & Co. KG -+AC8FA9 (base 16) Nokia Solutions and Networks GmbH & Co. KG -+ Werinherstrasse 91 -+ München Bavaria D-81541 -+ DE -+ -+4C-73-4F (hex) Juniper Networks -+4C734F (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+24-EB-ED (hex) HUAWEI TECHNOLOGIES CO.,LTD -+24EBED (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+AC-51-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD -+AC51AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+48-CD-D3 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+48CDD3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+F8-AD-24 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+F8AD24 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+A8-C9-8A (hex) New H3C Technologies Co., Ltd -+A8C98A (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+44-29-1E (hex) AltoBeam (China) Inc. -+44291E (base 16) AltoBeam (China) Inc. -+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -+ Beijing Beijing 100083 -+ CN -+ -+DC-8E-95 (hex) Silicon Laboratories -+DC8E95 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+7C-EF-40 (hex) Nextorage Corporation -+7CEF40 (base 16) Nextorage Corporation -+ Kawasaki-eki-mae Tower Riverk 9F, 12-1, Ekimaehoncho, Kawasaki-ku -+ Kawasaki City Kanagawa 210-0007 -+ JP -+ -+28-BE-43 (hex) vivo Mobile Communication Co., Ltd. -+28BE43 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+2C-FC-8B (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+2CFC8B (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+28-74-F5 (hex) Nokia Solutions and Networks GmbH & Co. KG -+2874F5 (base 16) Nokia Solutions and Networks GmbH & Co. KG -+ Werinherstrasse 91 -+ München Bavaria D-81541 -+ DE -+ -+B0-1F-8C (hex) Aruba, a Hewlett Packard Enterprise Company -+B01F8C (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+C0-E0-1C (hex) IoT Security Group, SL -+C0E01C (base 16) IoT Security Group, SL -+ Calle Pez Dorado, 27, local 2 -+ Torremolinos Malaga 29620 -+ ES -+ -+00-26-04 (hex) WorldCast Systems -+002604 (base 16) WorldCast Systems -+ 20 Avenue Neil Armstrong -+ Mérignac 33700 -+ FR -+ -+00-CB-7A (hex) Technicolor CH USA Inc. -+00CB7A (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+F8-AB-82 (hex) Xiaomi Communications Co Ltd -+F8AB82 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+EC-30-B3 (hex) Xiaomi Communications Co Ltd -+EC30B3 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+1C-AF-4A (hex) Samsung Electronics Co.,Ltd -+1CAF4A (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+C8-12-0B (hex) Samsung Electronics Co.,Ltd -+C8120B (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+90-2C-FB (hex) CanTops Co,.Ltd. -+902CFB (base 16) CanTops Co,.Ltd. -+ A-1002 Digital Empire, 16, Deogyong-daero 1556beon-gil -+ Yeongtong-gu Suwon-si, Gyonggi-do 1660 -+ KR -+ -+A8-A2-37 (hex) Arcadyan Corporation -+A8A237 (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW -+ -+00-00-BD (hex) RYOSEI, Ltd. -+0000BD (base 16) RYOSEI, Ltd. -+ 16-4, kitahatsushima-cho -+ Amagasaki-shi Hyogo 660-0834 -+ JP -+ -+AC-CC-FC (hex) Amazon Technologies Inc. -+ACCCFC (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+08-E6-3B (hex) zte corporation -+08E63B (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China - shenzhen guangdong 518057 - CN - --C8-58-95 (hex) Motorola Mobility LLC, a Lenovo Company --C85895 (base 16) Motorola Mobility LLC, a Lenovo Company -- 222 West Merchandise Mart Plaza -- Chicago IL 60654 -+88-C1-74 (hex) zte corporation -+88C174 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+C8-9E-61 (hex) Lyngsoe Systems LTd -+C89E61 (base 16) Lyngsoe Systems LTd -+ 101 Simona Dr., Unit 2 -+ Bolton Ontario L7E 4E8 -+ CA -+ -+9C-57-BC (hex) eero inc. -+9C57BC (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+2C-82-17 (hex) Apple, Inc. -+2C8217 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 - US - -+14-2D-4D (hex) Apple, Inc. -+142D4D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+EC-42-CC (hex) Apple, Inc. -+EC42CC (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+B8-21-1C (hex) Apple, Inc. -+B8211C (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+D4-5A-3F (hex) Juniper Networks -+D45A3F (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+E8-DC-6C (hex) Cisco Systems, Inc -+E8DC6C (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+48-B4-C3 (hex) Aruba, a Hewlett Packard Enterprise Company -+48B4C3 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+B0-3F-64 (hex) Apple, Inc. -+B03F64 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+68-A7-B4 (hex) Honor Device Co., Ltd. -+68A7B4 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+80-3C-20 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+803C20 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+A4-DD-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+A4DD58 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+E0-28-B1 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+E028B1 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ -+C0-8D-51 (hex) Amazon Technologies Inc. -+C08D51 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+44-B4-B2 (hex) Amazon Technologies Inc. -+44B4B2 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+6C-15-24 (hex) IEEE Registration Authority -+6C1524 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+78-03-4F (hex) Nokia -+78034F (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+00-12-93 (hex) ABB Switzerland Ltd. -+001293 (base 16) ABB Switzerland Ltd. -+ Via Luserte Sud 9 Quartino -+ Quartino 6572 -+ CH -+ -+C0-E9-11 (hex) Private -+C0E911 (base 16) Private -+ -+14-F5-92 (hex) Shenzhen SDG DONZHI Technology Co., Ltd -+14F592 (base 16) Shenzhen SDG DONZHI Technology Co., Ltd -+ 1001 SDG Information Technology Building, No.2 Qiongyu Road, Science park Community, Yuehai Street, Nanshan District, -+ Shenzhen GuangDong 518000 -+ CN -+ -+4C-09-FA (hex) FRONTIER SMART TECHNOLOGIES LTD -+4C09FA (base 16) FRONTIER SMART TECHNOLOGIES LTD -+ 17 Waterloo Place -+ London SW1Y 4AR -+ GB -+ -+24-2C-FE (hex) Zhejiang Tmall Technology Co., Ltd. -+242CFE (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 -+ CN -+ -+A0-42-D1 (hex) Huawei Device Co., Ltd. -+A042D1 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+2C-DC-78 (hex) Descartes Systems (USA) LLC -+2CDC78 (base 16) Descartes Systems (USA) LLC -+ 2030 Powers Ferry Road SE -+ Atlanta GA 303339 -+ US -+ -+58-87-9F (hex) Huawei Device Co., Ltd. -+58879F (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+E8-D8-7E (hex) Amazon Technologies Inc. -+E8D87E (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+9C-1F-CA (hex) Hangzhou AlmightyDigit Technology Co., Ltd -+9C1FCA (base 16) Hangzhou AlmightyDigit Technology Co., Ltd -+ Room A0041, 10 / F, building 1, Haizhi center, Cangqian street, Yuhang District -+ Hangzhou Zhejiang 310000 -+ CN -+ -+84-70-D7 (hex) eero inc. -+8470D7 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+E0-6C-4E (hex) Shenzhen TINNO Mobile Technology Corp. -+E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+58-1D-D8 (hex) Sagemcom Broadband SAS -+581DD8 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+80-6A-B0 (hex) Shenzhen TINNO Mobile Technology Corp. -+806AB0 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+F4-B3-B1 (hex) Silicon Laboratories -+F4B3B1 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+04-69-8F (hex) Juniper Networks -+04698F (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+14-9B-F3 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+149BF3 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+10-07-1D (hex) Fiberhome Telecommunication Technologies Co.,LTD -+10071D (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+10-B2-32 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+10B232 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+ No.218 Qianwangang Road -+ Qingdao Shangdong 266510 -+ CN -+ -+B8-50-D8 (hex) Beijing Xiaomi Mobile Software Co., Ltd -+B850D8 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 -+ CN -+ -+C0-9F-51 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+C09F51 (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -+ Suzhou 215021 -+ CN -+ -+80-02-F4 (hex) IEEE Registration Authority -+8002F4 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+5C-53-C3 (hex) Ubee Interactive Co., Limited -+5C53C3 (base 16) Ubee Interactive Co., Limited -+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -+ North Point 00000 -+ HK -+ - 9C-FF-C2 (hex) AVI Systems GmbH - 9CFFC2 (base 16) AVI Systems GmbH - Dr. Franz Wilhelmstraße 2A -@@ -39044,12 +39629,6 @@ BC3E07 (base 16) Hitron Technologies. Inc - Gyeonggi-do KSXX0024 - KR - --0C-EC-84 (hex) Shenzhen TINNO Mobile Technology Corp. --0CEC84 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 9C-DB-07 (hex) Thum+Mahr GmbH - 9CDB07 (base 16) Thum+Mahr GmbH - Heinrich-Hertz-Strasse 1-3 -@@ -44579,12 +45158,6 @@ E47B3F (base 16) BEIJING CO-CLOUD TECHNOLOGY LTD. - Shanghai Shanghai 201114 - CN - --00-18-48 (hex) Vecima Networks Inc. --001848 (base 16) Vecima Networks Inc. -- 150 Cardinal Place -- Saskatoon SK S7L 6H7 -- CA -- - 00-16-FB (hex) SHENZHEN MTC CO LTD - 0016FB (base 16) SHENZHEN MTC CO LTD - 5/F BenYuan Bldg,6015 ShenNan Road -@@ -46655,12 +47228,6 @@ DCC0EB (base 16) ASSA ABLOY CÔTE PICARDE - Cupertino CA 95014 - US - --A0-F8-95 (hex) Shenzhen TINNO Mobile Technology Corp. --A0F895 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F.,H-3 Building,OCT Eastern lndustrial Park. -- Nanshan District, Shenzhen GUANGDONG 518053 -- CN -- - 00-78-CD (hex) Ignition Design Labs - 0078CD (base 16) Ignition Design Labs - 1550 Technology Drive -@@ -50480,12 +51047,6 @@ B8F828 (base 16) Changshu Gaoshida Optoelectronic Technology Co. Ltd. - Glockengießerweg 2 Bielefeld 33659 - DE - --2C-55-3C (hex) Gainspeed, Inc. --2C553C (base 16) Gainspeed, Inc. -- 295 Santa Ana Court -- Sunnyvale CA 94085 -- US -- - 24-80-00 (hex) Westcontrol AS - 248000 (base 16) Westcontrol AS - Breivikvg 7 -@@ -55382,12 +55943,6 @@ D4AAFF (base 16) MICRO WORLD - Shanghai 200127 - CN - --00-25-CA (hex) LS Research, LLC --0025CA (base 16) LS Research, LLC -- W66 N220 Commerce Court -- Cedarburg WI 53012 -- US -- - 00-25-B4 (hex) Cisco Systems, Inc - 0025B4 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -55532,12 +56087,6 @@ D4AAFF (base 16) MICRO WORLD - Menlo Park CA 94025-1431 - US - --00-24-E4 (hex) Withings --0024E4 (base 16) Withings -- 37bis rue du General Leclerc -- Issy les Moulineaux 92442 -- FR -- - 00-24-DE (hex) GLOBAL Technology Inc. - 0024DE (base 16) GLOBAL Technology Inc. - No.168,Shanshan Rd., Wangchun Industrial Park, -@@ -57893,12 +58442,6 @@ D4AAFF (base 16) MICRO WORLD - Vuokatti Kainuu 88610 - FI - --00-1A-35 (hex) BARTEC GmbH --001A35 (base 16) BARTEC GmbH -- Schulstraße 30 -- Gotteszell Bavaria 94239 -- DE -- - 00-1A-37 (hex) Lear Corporation - 001A37 (base 16) Lear Corporation - Industriestrasse 48 -@@ -59633,12 +60176,6 @@ D4AAFF (base 16) MICRO WORLD - Soenderborg DK 6400 - DK - --00-13-B4 (hex) Appear TV --0013B4 (base 16) Appear TV -- P.O. Box 8 Lilleaker -- Oslo NO-0216 -- NO -- - 00-13-AE (hex) Radiance Technologies, Inc. - 0013AE (base 16) Radiance Technologies, Inc. - 350 Wynn Dr. -@@ -68321,12 +68858,6 @@ F854B8 (base 16) Amazon Technologies Inc. - York YO30 4RY - GB - --B4-39-39 (hex) Shenzhen TINNO Mobile Technology Corp. --B43939 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - A0-AB-51 (hex) WEIFANG GOERTEK ELECTRONICS CO.,LTD - A0AB51 (base 16) WEIFANG GOERTEK ELECTRONICS CO.,LTD - Gaoxin 2 Road, Free Trade Zone,Weifang,Shandong,261205,P.R.China -@@ -71657,12 +72188,6 @@ E428A4 (base 16) Prama India Private Limited - Reno NV 89507 - US - --00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC. --000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC. -- Canon BS Tower, 607 Teheran-ro -- Seoul Gangnam-gu 06173 -- KR -- - 40-8C-1F (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - 408C1F (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - NO.18 HAIBIN ROAD, -@@ -72809,12 +73334,6 @@ ECA81F (base 16) Technicolor CH USA Inc. - Lawrenceville GA 30044 - US - --90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD --90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- - C0-F8-27 (hex) Rapidmax Technology Corporation - C0F827 (base 16) Rapidmax Technology Corporation - 3F., No.531, Zhongzheng Rd. Xindian Dist. -@@ -74633,6 +75152,24 @@ D850A1 (base 16) Hunan Danuo Technology Co.,LTD - Ankara 06520 - TR - -+48-51-D0 (hex) Jiangsu Xinsheng Intelligent Technology Co., Ltd. -+4851D0 (base 16) Jiangsu Xinsheng Intelligent Technology Co., Ltd. -+ 18th Floor,Inno laser Building,18-69 Changwu Mid Road,Changzhou Science & Education Town,Wujin District,Changzhou,Jiangsu213000,China -+ Changzhou Jiangsu 213000 -+ CN -+ -+80-77-A4 (hex) TECNO MOBILE LIMITED -+8077A4 (base 16) TECNO MOBILE LIMITED -+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG -+ Hong Kong Hong Kong 999077 -+ HK -+ -+7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. -+7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -+ Shenzhen guangdong 518053 -+ CN -+ - 00-C3-0A (hex) Xiaomi Communications Co Ltd - 00C30A (base 16) Xiaomi Communications Co Ltd - #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -@@ -74663,29 +75200,713 @@ B42875 (base 16) Futecho Solutions Private Limited - San Francisco CA 94107 - US - --48-51-D0 (hex) Jiangsu Xinsheng Intelligent Technology Co., Ltd. --4851D0 (base 16) Jiangsu Xinsheng Intelligent Technology Co., Ltd. -- 18th Floor,Inno laser Building,18-69 Changwu Mid Road,Changzhou Science & Education Town,Wujin District,Changzhou,Jiangsu213000,China -- Changzhou Jiangsu 213000 -+00-A0-A2 (hex) B810 S.R.L. -+00A0A2 (base 16) B810 S.R.L. -+ Via E. Lazzaretti 2/1 -+ Reggio Emilia (RE) 42122 -+ IT -+ -+38-68-BE (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+3868BE (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 - CN - --80-77-A4 (hex) TECNO MOBILE LIMITED --8077A4 (base 16) TECNO MOBILE LIMITED -- ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG -- Hong Kong Hong Kong 999077 -+DC-9A-7D (hex) HISENSE VISUAL TECHNOLOGY CO.,LTD -+DC9A7D (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD -+ Qianwangang Road 218 -+ Qingdao Shandong 266510 -+ CN -+ -+28-A5-3F (hex) vivo Mobile Communication Co., Ltd. -+28A53F (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+8C-49-B6 (hex) vivo Mobile Communication Co., Ltd. -+8C49B6 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+84-F1-D0 (hex) EHOOME IOT PRIVATE LIMITED -+84F1D0 (base 16) EHOOME IOT PRIVATE LIMITED -+ A-13, SECTOR-83, -+ NOIDA UTTAR PRADESH 201301 -+ IN -+ -+20-8B-D1 (hex) NXP Semiconductor (Tianjin) LTD. -+208BD1 (base 16) NXP Semiconductor (Tianjin) LTD. -+ No.15 Xinghua Avenue, Xiqing Economic Development Area -+ Tianjin 300385 -+ CN -+ -+00-0F-A0 (hex) Canon Korea Inc. -+000FA0 (base 16) Canon Korea Inc. -+ 607, Teheran-ro, Gangnam-gu -+ Seoul Gangnam-gu 06173 -+ KR -+ -+30-BB-7D (hex) OnePlus Technology (Shenzhen) Co., Ltd -+30BB7D (base 16) OnePlus Technology (Shenzhen) Co., Ltd -+ 18C02, 18C03, 18C04 ,18C05,TAIRAN BUILDING, -+ Shenzhen Guangdong 518000 -+ CN -+ -+6C-67-EF (hex) HUAWEI TECHNOLOGIES CO.,LTD -+6C67EF (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+88-69-3D (hex) HUAWEI TECHNOLOGIES CO.,LTD -+88693D (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+00-99-1D (hex) HUAWEI TECHNOLOGIES CO.,LTD -+00991D (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+30-CB-36 (hex) Belden Singapore Pte. Ltd. -+30CB36 (base 16) Belden Singapore Pte. Ltd. -+ 151 Lorong Chuan #05-01 New Tech Park Singapore -+ Singapore 556741 -+ SG -+ -+B8-3F-D2 (hex) Mellanox Technologies, Inc. -+B83FD2 (base 16) Mellanox Technologies, Inc. -+ 350 Oakmead Parkway, Suite 100 -+ Sunnyvale CA 94085 -+ US -+ -+28-3E-0C (hex) Preferred Robotics, Inc. -+283E0C (base 16) Preferred Robotics, Inc. -+ Otemachi Bldg. 1-6-1 Otemachi -+ Chiyoda-ku Tokyo 100-0004 -+ JP -+ -+8C-17-59 (hex) Intel Corporate -+8C1759 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+04-BC-9F (hex) Calix Inc. -+04BC9F (base 16) Calix Inc. -+ 2777 Orchard Pkwy -+ San Jose CA 95131 -+ US -+ -+6C-A4-01 (hex) essensys plc -+6CA401 (base 16) essensys plc -+ Aldgate Tower, Leman Street -+ London E1 8FA -+ GB -+ -+34-92-C2 (hex) Square Route Co., Ltd. -+3492C2 (base 16) Square Route Co., Ltd. -+ Area-Shinagawa 13F, 1-9-36, Konan, Minato-ku -+ Tokyo Tokyo 108-0075 -+ JP -+ -+34-BD-20 (hex) Hangzhou Hikrobot Technology Co., Ltd. -+34BD20 (base 16) Hangzhou Hikrobot Technology Co., Ltd. -+ Room 304, Unit B, Building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang -+ Hangzhou 310052 -+ CN -+ -+64-C2-69 (hex) eero inc. -+64C269 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+B0-4A-6A (hex) Samsung Electronics Co.,Ltd -+B04A6A (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+A8-79-8D (hex) Samsung Electronics Co.,Ltd -+A8798D (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+5C-ED-F4 (hex) Samsung Electronics Co.,Ltd -+5CEDF4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+28-3D-C2 (hex) Samsung Electronics Co.,Ltd -+283DC2 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+BC-6E-6D (hex) EM Microelectronic -+BC6E6D (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+00-D4-9E (hex) Intel Corporate -+00D49E (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+CC-F3-05 (hex) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD -+CCF305 (base 16) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD -+ Second floor, Building A, FengHangAvenue, Hangcheng Street, Bao'an District -+ Shenzhen Guangdong 518126 -+ CN -+ -+AC-2A-A1 (hex) Cisco Systems, Inc -+AC2AA1 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+F8-E9-4F (hex) Cisco Systems, Inc -+F8E94F (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+30-89-4A (hex) Intel Corporate -+30894A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+E0-6C-C5 (hex) Huawei Device Co., Ltd. -+E06CC5 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+30-96-3B (hex) Huawei Device Co., Ltd. -+30963B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+8C-6B-DB (hex) Huawei Device Co., Ltd. -+8C6BDB (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+10-DA-49 (hex) Huawei Device Co., Ltd. -+10DA49 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+60-18-3A (hex) Huawei Device Co., Ltd. -+60183A (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+18-C0-07 (hex) Huawei Device Co., Ltd. -+18C007 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+98-59-7A (hex) Intel Corporate -+98597A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+64-49-7D (hex) Intel Corporate -+64497D (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+B8-D6-1A (hex) Espressif Inc. -+B8D61A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+00-25-CA (hex) Laird Connectivity -+0025CA (base 16) Laird Connectivity -+ W66 N220 Commerce Court -+ Cedarburg WI 53012 -+ US -+ -+90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD -+90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+74-56-3C (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. -+74563C (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. -+ Pin-Jen City, Taoyuan, Taiwan, R.O.C. -+ Pin-Jen Taoyuan 324 -+ TW -+ -+D8-9C-8E (hex) Comcast Cable Corporation -+D89C8E (base 16) Comcast Cable Corporation -+ 1800 Arch Street -+ Philadelphia PA 19103 -+ US -+ -+04-B9-7D (hex) AiVIS Co., Itd. -+04B97D (base 16) AiVIS Co., Itd. -+ 112, Dumipo-ro, Jung-gu -+ Incheon Incheon 22394 -+ KR -+ -+BC-F4-D4 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+BCF4D4 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+C4-C0-63 (hex) New H3C Technologies Co., Ltd -+C4C063 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+EC-55-1C (hex) HUAWEI TECHNOLOGIES CO.,LTD -+EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+E0-79-8D (hex) Silicon Laboratories -+E0798D (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+B4-83-51 (hex) Intel Corporate -+B48351 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+34-AD-61 (hex) CELESTICA INC. -+34AD61 (base 16) CELESTICA INC. -+ 1900-5140 Yonge Street PO Box 42 -+ Toronto Ontario M2N 6L7 -+ CA -+ -+54-43-B2 (hex) Espressif Inc. -+5443B2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+C0-DD-8A (hex) Facebook Technologies, LLC -+C0DD8A (base 16) Facebook Technologies, LLC -+ 1601 Willow Rd -+ Menlo Park CA 94025 -+ US -+ -+AC-D3-1D (hex) Cisco Meraki -+ACD31D (base 16) Cisco Meraki -+ 500 Terry A. Francois Blvd -+ San Francisco 94158 -+ US -+ -+10-96-1A (hex) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. -+10961A (base 16) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. -+ 9F,BLOCK A,GARDEN CITY DIGITAL BUILDING,NO.1079 NANHAI ROAD,NANSHAN DISTRICT -+ SHEN ZHEN GUANG DONG 518000 -+ CN -+ -+BC-E9-E2 (hex) Brocade Communications Systems LLC -+BCE9E2 (base 16) Brocade Communications Systems LLC -+ 1320 Ridder Park Dr -+ San Jose CA 95131 -+ US -+ -+00-18-48 (hex) Vecima Networks Inc. -+001848 (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ -+2C-55-3C (hex) Vecima Networks Inc. -+2C553C (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ -+AC-BF-71 (hex) Bose Corporation -+ACBF71 (base 16) Bose Corporation -+ The Mountain -+ Framingham MA 01701-9168 -+ US -+ -+18-A5-9C (hex) IEEE Registration Authority -+18A59C (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+74-84-69 (hex) Nintendo Co.,Ltd -+748469 (base 16) Nintendo Co.,Ltd -+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU -+ KYOTO KYOTO 601-8501 -+ JP -+ -+74-71-8B (hex) Apple, Inc. -+74718B (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+70-31-7F (hex) Apple, Inc. -+70317F (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+A4-CF-99 (hex) Apple, Inc. -+A4CF99 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+4C-2E-B4 (hex) Apple, Inc. -+4C2EB4 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+B4-19-74 (hex) Apple, Inc. -+B41974 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+04-E8-92 (hex) SHENNAN CIRCUITS CO.,LTD -+04E892 (base 16) SHENNAN CIRCUITS CO.,LTD -+ Gao Qiao Industrial Park East,Long Gang District, -+ Shenzhen Guangdong 518117 -+ CN -+ -+60-95-BD (hex) Apple, Inc. -+6095BD (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+00-1A-35 (hex) BARTEC GmbH -+001A35 (base 16) BARTEC GmbH -+ Max-Eyth-Straße 16 -+ Bad Mergentheim Bavaria 97980 -+ DE -+ -+8C-CB-DF (hex) FOXCONN INTERCONNECT TECHNOLOGY -+8CCBDF (base 16) FOXCONN INTERCONNECT TECHNOLOGY -+ 66-1 Zhongshan Road, Tucheng District -+ New Taipei City Taiwan 23680 -+ TW -+ -+98-F1-12 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -+98F112 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -+ No.555 Qianmo Road -+ Hangzhou Zhejiang 310052 -+ CN -+ -+84-69-93 (hex) HP Inc. -+846993 (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 -+ US -+ -+74-6F-88 (hex) zte corporation -+746F88 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+98-C8-1C (hex) BAYTEC LIMITED -+98C81C (base 16) BAYTEC LIMITED -+ 107C, 31/f, The gateway, Tower 5, Harbour City, 15 canton road, Tsim Sha Tsui, Hong Kong -+ Harbour 999077 - HK - --7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. --7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -+D0-98-9C (hex) ConMet -+D0989C (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ -+1C-A4-10 (hex) Amlogic, Inc. -+1CA410 (base 16) Amlogic, Inc. -+ 2518 Mission College Blvd, Suite 120 -+ Santa Clara CA 95054 -+ US -+ -+24-26-D6 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+2426D6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --00-A0-A2 (hex) B810 S.R.L. --00A0A2 (base 16) B810 S.R.L. -- Via E. Lazzaretti 2/1 -- Reggio Emilia (RE) 42122 -- IT -+70-A6-BD (hex) Honor Device Co., Ltd. -+70A6BD (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+EC-81-9C (hex) HUAWEI TECHNOLOGIES CO.,LTD -+EC819C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+20-0B-16 (hex) Texas Instruments -+200B16 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+88-01-F9 (hex) Texas Instruments -+8801F9 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+F8-55-48 (hex) Texas Instruments -+F85548 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+68-E7-4A (hex) Texas Instruments -+68E74A (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+4C-9E-6C (hex) BROADEX TECHNOLOGIES CO.LTD -+4C9E6C (base 16) BROADEX TECHNOLOGIES CO.LTD -+ NO.306 YATAI ROAD -+ JIAXING ZHEJIANG 314006 -+ CN -+ -+AC-A3-2F (hex) Solidigm Technology -+ACA32F (base 16) Solidigm Technology -+ 1921 Corporate Center Circle, Suite 3B -+ Longmont 80501 -+ US -+ -+AC-71-2E (hex) Fortinet, Inc. -+AC712E (base 16) Fortinet, Inc. -+ 899 Kifer Road -+ Sunnyvale 94086 -+ US -+ -+E4-B6-33 (hex) Wuxi Stars Microsystem Technology Co., Ltd -+E4B633 (base 16) Wuxi Stars Microsystem Technology Co., Ltd -+ Room 2101, Tower C, Swan Tower, Wuxi Software Park, 111 Linghu Avenue, Xinwu District -+ Wuxi 214135 -+ CN -+ -+08-51-04 (hex) Huawei Device Co., Ltd. -+085104 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+78-5B-64 (hex) Huawei Device Co., Ltd. -+785B64 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+98-D9-3D (hex) Demant Enterprise A/S -+98D93D (base 16) Demant Enterprise A/S -+ Kongebakken 9 -+ Smorum 2765 -+ DK -+ -+B4-A6-78 (hex) Zhejiang Tmall Technology Co., Ltd. -+B4A678 (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 -+ CN -+ -+AC-C4-BD (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ACC4BD (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+54-E1-5B (hex) Huawei Device Co., Ltd. -+54E15B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+54-2F-04 (hex) Shanghai Longcheer Technology Co., Ltd. -+542F04 (base 16) Shanghai Longcheer Technology Co., Ltd. -+ Bldg 1,No.401,Caobao RD,Xuhui Dist -+ Shanghai 200233 -+ CN -+ -+C4-A1-0E (hex) IEEE Registration Authority -+C4A10E (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+0C-EC-84 (hex) Shenzhen TINNO Mobile Technology Corp. -+0CEC84 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+B4-39-39 (hex) Shenzhen TINNO Mobile Technology Corp. -+B43939 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+8C-98-06 (hex) SHENZHEN SEI ROBOTICS CO.,LTD -+8C9806 (base 16) SHENZHEN SEI ROBOTICS CO.,LTD -+ the 4th floor,Productivity Building D,#5 Hi-Tech Middle 2nd Road,Shenzhen Hi-Tech Industrial Park, Nanshan District,Shenzhen,China -+ Shenzhen 518000 -+ CN -+ -+20-08-89 (hex) zte corporation -+200889 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+70-70-FC (hex) GOLD&WATER INDUSTRIAL LIMITED -+7070FC (base 16) GOLD&WATER INDUSTRIAL LIMITED -+ NO.77 Leighton Road, 17/F Leighton Centre Causeway Bay ,HongKong -+ HongKong 999077 -+ HK -+ -+88-F2-BD (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. -+88F2BD (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. -+ Midea Global Innovation Center,Beijiao Town,Shunde -+ Foshan Guangdong 528311 -+ CN -+ -+A0-F8-95 (hex) Shenzhen TINNO Mobile Technology Corp. -+A0F895 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+6C-08-31 (hex) ANALOG SYSTEMS -+6C0831 (base 16) ANALOG SYSTEMS -+ UNIT 12, 38 DLF INDUSTRIAL AREA KIRTI NAGAR NEW DELHI -+ NEW DELHI DELHI 110015 -+ IN -+ -+70-AC-08 (hex) Silicon Laboratories -+70AC08 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+2C-07-F6 (hex) SKG Health Technologies Co., Ltd. -+2C07F6 (base 16) SKG Health Technologies Co., Ltd. -+ 23A Floor,Building 3,Zhongke R&D Park,No.009,Gaoxin South 1st Road, High-tech Zone Community,Yuehai street, Nanshan District,Shenzhen City,Guangdong Province,P.R.China -+ Shenzhen 518000 -+ CN -+ -+00-24-E4 (hex) Withings -+0024E4 (base 16) Withings -+ 2 rue Maurice Hartmann -+ Issy-les-Moulineaux 92130 -+ FR -+ -+A4-7E-FA (hex) Withings -+A47EFA (base 16) Withings -+ 2 rue Maurice Hartmann -+ Issy-les-Moulineaux 92130 -+ FR -+ -+3C-26-E4 (hex) Cisco Systems, Inc -+3C26E4 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+38-91-B7 (hex) Cisco Systems, Inc -+3891B7 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+34-5D-A8 (hex) Cisco Systems, Inc -+345DA8 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+78-91-DE (hex) Guangdong ACIGA Science&Technology Co.,Ltd -+7891DE (base 16) Guangdong ACIGA Science&Technology Co.,Ltd -+ L203 Biguiyuan International Club, Beijiao Town, Shunde District -+ Fo Shan Guangdong 528312 -+ CN -+ -+E0-80-6B (hex) Xiaomi Communications Co Ltd -+E0806B (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+70-50-E7 (hex) IEEE Registration Authority -+7050E7 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+00-13-B4 (hex) Appear AS -+0013B4 (base 16) Appear AS -+ P.O. Box 8 Lilleaker -+ Oslo NO-0216 -+ NO -+ -+38-FD-F5 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+38FDF5 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+38-12-7B (hex) Crenet Labs Co., Ltd. -+38127B (base 16) Crenet Labs Co., Ltd. -+ Rm. 1, 10F., No. 181, Sec. 1, Datong Rd. -+ New Taipei City Xizhi Dist. 221451 -+ TW -+ -+B0-E4-5C (hex) Samsung Electronics Co.,Ltd -+B0E45C (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+DC-36-0C (hex) Hitron Technologies. Inc -+DC360C (base 16) Hitron Technologies. Inc -+ No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C -+ Hsin-chu Taiwan 300 -+ TW - - 84-80-94 (hex) Meter, Inc. - 848094 (base 16) Meter, Inc. -@@ -78839,12 +80060,6 @@ D843ED (base 16) Suzuken - Nagoya Aich 4610015 - JP - --BC-41-01 (hex) Shenzhen TINNO Mobile Technology Corp. --BC4101 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 04-3A-0D (hex) SM Optics S.r.l. - 043A0D (base 16) SM Optics S.r.l. - via Michelangelo Buonarroti, 1 -@@ -79847,12 +81062,6 @@ DCA904 (base 16) Apple, Inc. - Hong Kong Hong Kong 999077 - HK - --A0-4C-5B (hex) Shenzhen TINNO Mobile Technology Corp. --A04C5B (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 48-88-03 (hex) ManTechnology Inc. - 488803 (base 16) ManTechnology Inc. - 12th Fl, 308-4 Seongsoodong 2ga, Seongdonggu -@@ -80579,12 +81788,6 @@ E80945 (base 16) Integrated Device Technology (Malaysia) Sdn. Bhd. - Bayan Lepas Penang 11900 - MY - --B0-A2-E7 (hex) Shenzhen TINNO Mobile Technology Corp. --B0A2E7 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 7C-25-87 (hex) chaowifi.com - 7C2587 (base 16) chaowifi.com - No. 502 1th Building TaiHe Square -@@ -86237,12 +87440,6 @@ E83A12 (base 16) Samsung Electronics Co.,Ltd - Chicago IL 60654 - US - --30-E0-90 (hex) Linctronix Ltd, --30E090 (base 16) Linctronix Ltd, -- ​9F-1, No.66, Chongqing Rd., -- Banqiao Dist., China 22063 -- TW -- - A4-DC-BE (hex) HUAWEI TECHNOLOGIES CO.,LTD - A4DCBE (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -91655,12 +92852,6 @@ E08A7E (base 16) Exponent - Menlo Park CA 94025 - US - --A8-B0-AE (hex) LEONI --A8B0AE (base 16) LEONI -- 3945 Freedom Circle -- Santa Clara California 95054 -- US -- - E4-27-71 (hex) Smartlabs - E42771 (base 16) Smartlabs - 72, Oktyabrskaya Street -@@ -91739,12 +92930,6 @@ B4A4E3 (base 16) Cisco Systems, Inc - Tainan 70955 - TW - --AC-83-F0 (hex) ImmediaTV Corporation --AC83F0 (base 16) ImmediaTV Corporation -- 2005 De La Cruz Blvd -- Santa Clara California 95050 -- US -- - CC-6B-98 (hex) Minetec Wireless Technologies - CC6B98 (base 16) Minetec Wireless Technologies - 10 Kembla Way -@@ -97226,12 +98411,6 @@ D8D67E (base 16) GSK CNC EQUIPMENT CO.,LTD - Portland OR 97223 - US - --00-13-95 (hex) congatec AG --001395 (base 16) congatec AG -- Auwiesenstrasse 5 -- Deggendorf 94469 -- DE -- - 00-13-56 (hex) FLIR Radiation Inc - 001356 (base 16) FLIR Radiation Inc - 100 Midland Rd -@@ -98519,12 +99698,6 @@ D8D67E (base 16) GSK CNC EQUIPMENT CO.,LTD - Allendale NJ 07401 - US - --00-0D-A9 (hex) T.E.A.M. S.L. --000DA9 (base 16) T.E.A.M. S.L. -- Parque Tecnologico Edificio 108 -- ZAMUDIO Bizkaia 48170 -- ES -- - 00-0D-AB (hex) Parker Hannifin GmbH Electromechanical Division Europe - 000DAB (base 16) Parker Hannifin GmbH Electromechanical Division Europe - Robert-Bosch-Straße 22 -@@ -107270,12 +108443,6 @@ B848AA (base 16) EM Microelectronic - Marin-Epagnier Neuchatel 2074 - CH - --D8-34-EE (hex) Stem Audio --D834EE (base 16) Stem Audio -- 2552 White Road, Suite A -- Irvine CA 92614 -- US -- - F8-57-2E (hex) Core Brands, LLC - F8572E (base 16) Core Brands, LLC - 5919 Sea Otter Place -@@ -107798,12 +108965,6 @@ CCDB93 (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. --18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 54-48-E6 (hex) Beijing Xiaomi Mobile Software Co., Ltd - 5448E6 (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Xiaomi Campus, No. 33 Xi erqi Middle Road, Haidian District -@@ -109565,12 +110726,6 @@ F845C4 (base 16) Shenzhen Netforward Micro-Electronic Co., Ltd. - Beijing 100053 - CN - --9C-4F-5F (hex) TAP Sound System --9C4F5F (base 16) TAP Sound System -- 15 rue Castel -- Fontenay-sous-Bois 94120 -- FR -- - 00-08-0C (hex) VDA Group S.p.a. - 00080C (base 16) VDA Group S.p.a. - Viale Lino Zanussi 3 -@@ -112079,6 +113234,30 @@ B4B742 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - -+60-BE-B4 (hex) S-Bluetech co., limited -+60BEB4 (base 16) S-Bluetech co., limited -+ Room 202, Block A, Donghai Wang Mansion, 369 Bulonglu -+ Shenzhen Guangdong 518000 -+ CN -+ -+90-DF-7D (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+90DF7D (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+50-C1-F0 (hex) NXP Semiconductor (Tianjin) LTD. -+50C1F0 (base 16) NXP Semiconductor (Tianjin) LTD. -+ No.15 Xinghua Avenue, Xiqing Economic Development Area -+ Tianjin 300385 -+ CN -+ -+F4-84-8D (hex) TP-LINK TECHNOLOGIES CO.,LTD. -+F4848D (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -+ Shenzhen Guangdong 518057 -+ CN -+ - A8-54-A2 (hex) Heimgard Technologies AS - A854A2 (base 16) Heimgard Technologies AS - Dronning Mauds gate 15 -@@ -112097,6 +113276,570 @@ BC1D89 (base 16) Motorola Mobility LLC, a Lenovo Company - Chicago IL 60654 - US - -+B8-7E-E5 (hex) Intelbras -+B87EE5 (base 16) Intelbras -+ BR 101, km 210, S/N° -+ São José Santa Catarina 88104800 -+ BR -+ -+58-11-22 (hex) ASUSTek COMPUTER INC. -+581122 (base 16) ASUSTek COMPUTER INC. -+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -+ Taipei Taiwan 112 -+ TW -+ -+74-69-4A (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+74694A (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+78-15-2D (hex) UNION CHIP TECHNOLOGY LIMITED -+78152D (base 16) UNION CHIP TECHNOLOGY LIMITED -+ 5th Floor, Building A1, Hangcheng Jinchi Industrial Park, 8TH North Road, Hangcheng Street, Bao 'an District, Shenzhen -+ shenzhen 518000 -+ CN -+ -+94-AB-FE (hex) Nokia -+94ABFE (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+98-A9-2D (hex) New H3C Technologies Co., Ltd -+98A92D (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+00-A5-54 (hex) Intel Corporate -+00A554 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+0C-86-29 (hex) IEEE Registration Authority -+0C8629 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+50-DC-D0 (hex) Observint Technologies, Inc. -+50DCD0 (base 16) Observint Technologies, Inc. -+ 11000 N Mopac Expressway Suite 300 -+ Austin TX 78759 -+ US -+ -+D4-F0-EA (hex) Beijing Xiaomi Mobile Software Co., Ltd -+D4F0EA (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 -+ CN -+ -+58-76-AC (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+5876AC (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -+ Suzhou 215021 -+ CN -+ -+E0-03-6B (hex) Samsung Electronics Co.,Ltd -+E0036B (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+80-69-1A (hex) Belkin International Inc. -+80691A (base 16) Belkin International Inc. -+ 12045 East Waterfront Drive -+ Playa Vista 90094 -+ US -+ -+64-31-72 (hex) ZHEJIANG HISING TECHNOLOGY CO.,LTD -+643172 (base 16) ZHEJIANG HISING TECHNOLOGY CO.,LTD -+ Room 201 and 202,Building 5,328 Pingjiang Road,Yuecheng District,Shaoxing -+ Shaoxing Zhejiang 312000 -+ CN -+ -+D0-FC-D0 (hex) HUMAX Co., Ltd. -+D0FCD0 (base 16) HUMAX Co., Ltd. -+ HUMAX Village, 216, Hwangsaeul-ro, Bu -+ Seongnam-si Gyeonggi-do 463-875 -+ KR -+ -+20-FA-DB (hex) Huahao Kunpeng Technology (chengDu) Co.,Ltd. -+20FADB (base 16) Huahao Kunpeng Technology (chengDu) Co.,Ltd. -+ No.99, Hangtian Road, Section 2, East Third Ring Road,Chenghua District, Chengdu -+ Chengdu 610051 -+ CN -+ -+0C-8B-95 (hex) Espressif Inc. -+0C8B95 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+68-5E-1C (hex) Texas Instruments -+685E1C (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+38-AB-41 (hex) Texas Instruments -+38AB41 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+CC-47-92 (hex) ASIX Electronics Corporation -+CC4792 (base 16) ASIX Electronics Corporation -+ 4F, No. 8, Hsin Ann Road, Hsinchu Science Park -+ Hsinchu 30078 -+ TW -+ -+E0-46-EE (hex) NETGEAR -+E046EE (base 16) NETGEAR -+ 350 East Plumeria Drive -+ San Jose CA 95134 -+ US -+ -+9C-4F-5F (hex) Google, Inc. -+9C4F5F (base 16) Google, Inc. -+ 15 rue Castel -+ Fontenay-sous-Bois 94120 -+ FR -+ -+A0-29-42 (hex) Intel Corporate -+A02942 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+10-71-B3 (hex) Zyxel Communications Corporation -+1071B3 (base 16) Zyxel Communications Corporation -+ No. 6 Innovation Road II, Science Park -+ Hsichu Taiwan 300 -+ TW -+ -+04-63-D0 (hex) Huawei Device Co., Ltd. -+0463D0 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+F0-D4-15 (hex) Intel Corporate -+F0D415 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+18-69-D4 (hex) Samsung Electronics Co.,Ltd -+1869D4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+9C-95-61 (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+9C9561 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.75,Zhongkai High-Tech Development District,Huizhou -+ Hui Zhou Guangdong 516006 -+ CN -+ -+DC-BE-49 (hex) ITEL MOBILE LIMITED -+DCBE49 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ -+14-44-8F (hex) Edgecore Networks Corporation -+14448F (base 16) Edgecore Networks Corporation -+ 1 Creation RD 3. -+ Hsinchu 30077 -+ TW -+ -+34-25-BE (hex) Amazon Technologies Inc. -+3425BE (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+D4-A3-EB (hex) Shenzhen iComm Semiconductor CO.,LTD -+D4A3EB (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+9C-BF-CD (hex) HUAWEI TECHNOLOGIES CO.,LTD -+9CBFCD (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+B8-9F-CC (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B89FCC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+9C-E0-41 (hex) Nokia -+9CE041 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+78-34-86 (hex) Nokia -+783486 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+D4-D8-53 (hex) Intel Corporate -+D4D853 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+8C-76-3F (hex) ARRIS Group, Inc. -+8C763F (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+28-12-93 (hex) Honor Device Co., Ltd. -+281293 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+C0-A9-38 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C0A938 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C0-ED-E5 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+C0EDE5 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+10-A5-62 (hex) Iton Technology Corp. -+10A562 (base 16) Iton Technology Corp. -+ Room 1302, Block A, Building 4, Tianan Cyber Park, Huangge Road,Longgang District -+ Shenzhen Guangdong 518116 -+ CN -+ -+5C-24-E2 (hex) Suzhou Denbom Electronic S&T Co., Ltd -+5C24E2 (base 16) Suzhou Denbom Electronic S&T Co., Ltd -+ 3F,Building 2, No.415,Changyang Street -+ Suzhou Jiangsu 215000 -+ CN -+ -+64-98-9E (hex) TRINNOV AUDIO -+64989E (base 16) TRINNOV AUDIO -+ 5 rue Edmond Michelet -+ NEUILLY PLAISANCE Ile-de-France 93360 -+ FR -+ -+BC-C7-46 (hex) Hon Hai Precision IND.CO.,LTD -+BCC746 (base 16) Hon Hai Precision IND.CO.,LTD -+ No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN -+ TAIPEI TAIWAN 33859 -+ CN -+ -+30-E8-E4 (hex) Qorvo International Pte. Ltd. -+30E8E4 (base 16) Qorvo International Pte. Ltd. -+ 1 Changi Business Park Avenue 1 -+ #04-01 486058 -+ SG -+ -+00-0D-A9 (hex) INGETEAM -+000DA9 (base 16) INGETEAM -+ Parque Tecnologico de Bizkaia, Edificio 110 -+ Zamudio Bizkaia 48170 -+ ES -+ -+30-E0-90 (hex) Genevisio Ltd. -+30E090 (base 16) Genevisio Ltd. -+ 13F, No.33, Sec. 1, Minsheng Rd. -+ New Taipei City Banqiao Dist. 220871 -+ TW -+ -+64-FD-96 (hex) Sagemcom Broadband SAS -+64FD96 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+FC-B9-7E (hex) GE Appliances -+FCB97E (base 16) GE Appliances -+ 4000 Buechel Bank Road -+ Louisville KY 40225 -+ US -+ -+88-03-4C (hex) WEIFANG GOERTEK ELECTRONICS CO.,LTD -+88034C (base 16) WEIFANG GOERTEK ELECTRONICS CO.,LTD -+ Gaoxin 2 Road, Free Trade Zone,Weifang,Shandong,261205,P.R.China -+ Weifang Shandong 261205 -+ CN -+ -+48-DC-9D (hex) Grandprint(Beijing) Technology Co., LTD. -+48DC9D (base 16) Grandprint(Beijing) Technology Co., LTD. -+ Room 259, 2 / F, Building 5, 8 Dongbeiwang West Road, Haidian District, -+ Beijing 100089 -+ CN -+ -+C8-EB-EC (hex) Shenzhen YOUHUA Technology Co., Ltd -+C8EBEC (base 16) Shenzhen YOUHUA Technology Co., Ltd -+ Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -+ Shenzhen Guangdong 518055 -+ CN -+ -+04-7C-16 (hex) Micro-Star INTL CO., LTD. -+047C16 (base 16) Micro-Star INTL CO., LTD. -+ No.69, Lide St., -+ New Taipei City Taiwan 235 -+ TW -+ -+E0-D7-38 (hex) WireStar Networks -+E0D738 (base 16) WireStar Networks -+ PO Box 10966 -+ College Station TX 77842 -+ US -+ -+40-42-44 (hex) Cisco Systems, Inc -+404244 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+04-B6-BE (hex) CIG SHANGHAI CO LTD -+04B6BE (base 16) CIG SHANGHAI CO LTD -+ 5th Floor, Building 8 No 2388 Chenhang Road -+ SHANGHAI 201114 -+ CN -+ -+7C-EC-B1 (hex) Apple, Inc. -+7CECB1 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+5C-E9-1E (hex) Apple, Inc. -+5CE91E (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+A8-B0-AE (hex) BizLink Special Cables Germany GmbH -+A8B0AE (base 16) BizLink Special Cables Germany GmbH -+ Eschstrasse 1 -+ Friesoythe 26169 -+ DE -+ -+94-C5-A6 (hex) ITEL MOBILE LIMITED -+94C5A6 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ -+48-57-D2 (hex) Broadcom Limited -+4857D2 (base 16) Broadcom Limited -+ 15191 Alton Parkway -+ Irvine CA 92618 -+ US -+ -+9C-21-83 (hex) Broadcom Limited -+9C2183 (base 16) Broadcom Limited -+ 15191 Alton Parkway -+ Irvine CA 92618 -+ US -+ -+24-1F-BD (hex) Extreme Networks, Inc. -+241FBD (base 16) Extreme Networks, Inc. -+ 6480 Via Del Oro -+ San Jose CA 95119 -+ US -+ -+D8-34-EE (hex) SHURE INCORPORATED -+D834EE (base 16) SHURE INCORPORATED -+ 5800 W. TOUHY AVE. -+ NILES IL 60714 -+ US -+ -+F0-B6-61 (hex) eero inc. -+F0B661 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+04-25-F0 (hex) Nokia -+0425F0 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+1C-BC-EC (hex) silex technology, Inc. -+1CBCEC (base 16) silex technology, Inc. -+ 2-3-1 Hikaridai, Seika-cho, Souraku-gun -+ Kyoto 619-0237 -+ JP -+ -+E0-6A-05 (hex) Shenzhen YOUHUA Technology Co., Ltd -+E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd -+ Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -+ Shenzhen Guangdong 518055 -+ CN -+ -+90-CD-1F (hex) Quectel Wireless Solutions Co.,Ltd. -+90CD1F (base 16) Quectel Wireless Solutions Co.,Ltd. -+ 7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District -+ Shanghai 200233 -+ CN -+ -+90-23-5B (hex) Amazon Technologies Inc. -+90235B (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+14-13-0B (hex) Garmin International -+14130B (base 16) Garmin International -+ 1200 E. 151st St -+ Olathe KS 66062 -+ US -+ -+48-9B-E0 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+489BE0 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+5C-FA-25 (hex) Sagemcom Broadband SAS -+5CFA25 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+40-3B-7B (hex) Huawei Device Co., Ltd. -+403B7B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+08-30-CE (hex) Fiberhome Telecommunication Technologies Co.,LTD -+0830CE (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+B0-A2-E7 (hex) Shenzhen TINNO Mobile Technology Corp. -+B0A2E7 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+A0-4C-5B (hex) Shenzhen TINNO Mobile Technology Corp. -+A04C5B (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+BC-41-01 (hex) Shenzhen TINNO Mobile Technology Corp. -+BC4101 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+74-97-79 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+749779 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+F8-CD-C8 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+F8CDC8 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+B0-28-5B (hex) JUHUA Technology Inc. -+B0285B (base 16) JUHUA Technology Inc. -+ No.8,Yanbao Block,Hutian Road,Pingdi Street,Longgang District -+ Shenzhen City Guangdong Province 518117 -+ CN -+ -+18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. -+18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+34-CF-6C (hex) Hangzhou Taili wireless communication equipment Co.,Ltd -+34CF6C (base 16) Hangzhou Taili wireless communication equipment Co.,Ltd -+ Room 1901, No.258, Zhonghe Middle Road, Shangcheng District, Hangzhou -+ Hangzhou Zhejiang 310003 -+ CN -+ -+E0-F6-78 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+E0F678 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+28-F7-D6 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+28F7D6 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+C8-24-96 (hex) Jiangsu Yinhe Electronics Co.,Ltd. -+C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. -+ No.188 Nanhuan Road, TangQiao Town -+ Zhangjiagang Jiangsu 215611 -+ CN -+ -+24-18-C0 (hex) E. Wehrle GmbH -+2418C0 (base 16) E. Wehrle GmbH -+ Obertalstraße 8 -+ 78120 Furtwangen Baden-Württemberg 78120 -+ DE -+ -+14-5B-B9 (hex) ConMet -+145BB9 (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ -+AC-83-F0 (hex) Cobalt Digital Inc. -+AC83F0 (base 16) Cobalt Digital Inc. -+ 2506 Galen Drive -+ Champaign IL 61821 -+ US -+ -+40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+B8-B4-09 (hex) Samsung Electronics Co.,Ltd -+B8B409 (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+00-13-95 (hex) congatec GmbH -+001395 (base 16) congatec GmbH -+ Auwiesenstrasse 5 -+ Deggendorf 94469 -+ DE -+ -+D4-E2-2F (hex) Roku, Inc -+D4E22F (base 16) Roku, Inc -+ 1155 Coleman Ave -+ San Jose CA 95110 -+ US -+ - F8-D0-27 (hex) Seiko Epson Corporation - F8D027 (base 16) Seiko Epson Corporation - 2070 Kotobuki Koaka -@@ -114863,12 +116606,6 @@ C08135 (base 16) Ningbo Forfan technology Co., LTD - LIBERTYVILLE IL 60048 - US - --B4-C0-F5 (hex) Shenzhen TINNO Mobile Technology Corp. --B4C0F5 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 40-62-31 (hex) GIFA - 406231 (base 16) GIFA - 11th Fl., Suojia Business Building , No.7 Hangkong Road , Baoan District -@@ -118919,12 +120656,6 @@ D8E0B8 (base 16) BULAT LLC - Hsichu Taiwan 300 - TW - --C0-C9-76 (hex) Shenzhen TINNO Mobile Technology Corp. --C0C976 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 58-8B-F3 (hex) Zyxel Communications Corporation - 588BF3 (base 16) Zyxel Communications Corporation - No. 6 Innovation Road II, Science Park -@@ -121199,12 +122930,6 @@ A8CA7B (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --BC-44-34 (hex) Shenzhen TINNO Mobile Technology Corp. --BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 04-BF-6D (hex) Zyxel Communications Corporation - 04BF6D (base 16) Zyxel Communications Corporation - No. 6 Innovation Road II, Science Park -@@ -123221,12 +124946,6 @@ E855B4 (base 16) SAI Technology Inc. - Vikmanshyttan Dalarna SE-776 70 - SE - --C0-EE-40 (hex) Laird Technologies --C0EE40 (base 16) Laird Technologies -- 50 South Main St -- Akron Ohio 44308 -- US -- - F4-B8-A7 (hex) zte corporation - F4B8A7 (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -@@ -124712,12 +126431,6 @@ C098E5 (base 16) University of Michigan - Seoul 152-789 - KR - --44-3C-9C (hex) Pintsch Tiefenbach GmbH --443C9C (base 16) Pintsch Tiefenbach GmbH -- Beisenbruchstrasse 10 -- Sprockhoevel 45549 -- DE -- - 28-FC-51 (hex) The Electric Controller and Manufacturing Co., LLC - 28FC51 (base 16) The Electric Controller and Manufacturing Co., LLC - PO Box 468 -@@ -135533,12 +137246,6 @@ A07332 (base 16) Cashmaster International Limited - Hubbard OR 97032 - US - --00-0E-DD (hex) SHURE INCORPORATED --000EDD (base 16) SHURE INCORPORATED -- 5800 W. TOUHY AVE. -- NILES IL 60714 -- US -- - 00-0E-C2 (hex) Lowrance Electronics, Inc. - 000EC2 (base 16) Lowrance Electronics, Inc. - 12000 E. Skelly Drive -@@ -138539,12 +140246,6 @@ A06A00 (base 16) Verilink Corporation - Elmsford NY 10523 - US - --00-04-35 (hex) InfiNet LLC --000435 (base 16) InfiNet LLC -- Serafimy Deryabinoy str. 24 -- Yekaterinburg 620149 -- RU -- - 00-04-37 (hex) Powin Information Technology, Inc. - 000437 (base 16) Powin Information Technology, Inc. - 8F, No. 70, Zhou-Z St. -@@ -140483,12 +142184,6 @@ A06A00 (base 16) Verilink Corporation - Yokohama City 226 - JP - --00-10-43 (hex) A2 CORPORATION --001043 (base 16) A2 CORPORATION -- 6-14-11 YUTAKA-CHO -- TOKYO -- JP -- - 00-10-A5 (hex) OXFORD INSTRUMENTS - 0010A5 (base 16) OXFORD INSTRUMENTS - Halifax Road -@@ -145481,18 +147176,6 @@ C440F6 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DONG GUAN GUANG DONG 523860 - CN - --A4-7D-9F (hex) Shenzhen iComm Semiconductor CO.,LTD --A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- --84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD --84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 501A,Block B,Digital Building,Garden City,No.1079 Nanhai Road,Nanshan District -- Shenzhen 518067 -- CN -- - 00-55-B1 (hex) Shanghai Baud Data Communication Co.,Ltd. - 0055B1 (base 16) Shanghai Baud Data Communication Co.,Ltd. - NO.123 JULI RD -@@ -145613,12 +147296,6 @@ C094AD (base 16) zte corporation - shenzhen guangdong 518057 - CN - --D0-21-AC (hex) Yo Labs LLC --D021AC (base 16) Yo Labs LLC -- 3460 Hillview Ave. -- Palo Alto CA 94304 -- US -- - 34-2B-70 (hex) Arris - 342B70 (base 16) Arris - 2500 Walsh Ave. -@@ -146039,12 +147716,6 @@ A8F766 (base 16) ITE Tech Inc - Hsinchu Taiwan 30076 - TW - --14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD --14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- - 00-21-3E (hex) TomTom International BV - 00213E (base 16) TomTom International BV - Oosterdoksstraat 114 -@@ -147884,12 +149555,6 @@ FC5C45 (base 16) Ruckus Wireless - Sunnyvale CA 94089 - US - --E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD --E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen. -- Shenzhen 518067 -- CN -- - 4C-02-20 (hex) Xiaomi Communications Co Ltd - 4C0220 (base 16) Xiaomi Communications Co Ltd - #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -@@ -148139,12 +149804,6 @@ E0B72E (base 16) ShenZhen Qualmesh Technology Co.,Ltd. - Shenzhen Guangdong 518055 - CN - --80-C3-BA (hex) Sennheiser electronic GmbH & Co. KG --80C3BA (base 16) Sennheiser electronic GmbH & Co. KG -- Am Labor 1 -- Wedemark Niedersachsen 30900 -- DE -- - 04-42-1A (hex) ASUSTek COMPUTER INC. - 04421A (base 16) ASUSTek COMPUTER INC. - 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -@@ -149240,12 +150899,6 @@ F0A951 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --00-90-3F (hex) WorldCast Systems --00903F (base 16) WorldCast Systems -- 20 Avenue Neil Armstrong -- Mérignac 33700 -- FR -- - 64-D6-9A (hex) Intel Corporate - 64D69A (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -149522,6 +151175,30 @@ D83DCC (base 16) shenzhen UDD Technologies,co.,Ltd - Round Rock TX 78682 - US - -+B4-E2-65 (hex) Shenzhen SDMC Technology Co.,LTD -+B4E265 (base 16) Shenzhen SDMC Technology Co.,LTD -+ 19/F, Changhong Science & Technology Mansion, No.18, Keji South 12th Road, High-tech Industrial Park, Nanshan District -+ Shenzhen GUANGDONG 518027 -+ CN -+ -+EC-7C-5C (hex) Juniper Networks -+EC7C5C (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+00-EB-D8 (hex) MERCUSYS TECHNOLOGIES CO., LTD. -+00EBD8 (base 16) MERCUSYS TECHNOLOGIES CO., LTD. -+ 3F,Zone B,Building R1,High-Tech Industrial Village,No.023 High-Tech South 4 Road,Nanshan,Shenzhen -+ Shenzhen Guangdong 518057 -+ CN -+ -+CC-60-C8 (hex) Microsoft Corporation -+CC60C8 (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ - 6C-8D-77 (hex) Cisco Systems, Inc - 6C8D77 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -149534,11 +151211,11 @@ D83DCC (base 16) shenzhen UDD Technologies,co.,Ltd - San Jose CA 94568 - US - --B4-E2-65 (hex) Shenzhen SDMC Technology Co.,LTD --B4E265 (base 16) Shenzhen SDMC Technology Co.,LTD -- 19/F, Changhong Science & Technology Mansion, No.18, Keji South 12th Road, High-tech Industrial Park, Nanshan District -- Shenzhen GUANGDONG 518027 -- CN -+B4-17-A8 (hex) Facebook Technologies, LLC -+B417A8 (base 16) Facebook Technologies, LLC -+ 1 Hacker Way -+ Menlo Park CA 94025 -+ US - - 10-54-D2 (hex) IEEE Registration Authority - 1054D2 (base 16) IEEE Registration Authority -@@ -149546,18 +151223,738 @@ B4E265 (base 16) Shenzhen SDMC Technology Co.,LTD - Piscataway NJ 08554 - US - --EC-7C-5C (hex) Juniper Networks --EC7C5C (base 16) Juniper Networks -- 1133 Innovation Way -+00-10-43 (hex) A2 CORPORATION -+001043 (base 16) A2 CORPORATION -+ 1-7-1 Togoshi -+ Tokyo Shinagawa-ku 1420041 -+ JP -+ -+C4-DF-39 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+C4DF39 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+10-63-4B (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+10634B (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District -+ Shenzhen Guangdong 518057 -+ CN -+ -+80-97-33 (hex) Shenzhen Elebao Technology Co., Ltd -+809733 (base 16) Shenzhen Elebao Technology Co., Ltd -+ F/6, Tower A, Zhihuichuangxin Center Bldg,Qianjin Road, XixiangTown, Bao’an District -+ shenzhen GUANGDONG 518126 -+ CN -+ -+F4-6D-2F (hex) TP-LINK TECHNOLOGIES CO.,LTD. -+F46D2F (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -+ Shenzhen Guangdong 518057 -+ CN -+ -+00-A2-65 (hex) M2Motive Technology Inc. -+00A265 (base 16) M2Motive Technology Inc. -+ Room 402,No. 125 North Jiangsu Road, Changning District -+ Shanghai Shanghai 200042 -+ CN -+ -+D8-36-5F (hex) Intelbras -+D8365F (base 16) Intelbras -+ BR 101, km 210, S/N° -+ São José Santa Catarina 88104800 -+ BR -+ -+74-04-F1 (hex) Intel Corporate -+7404F1 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+00-04-35 (hex) InfiNet LLC -+000435 (base 16) InfiNet LLC -+ Office 425, 69/75 Vavilova str. -+ Moscow\ 117335 -+ RU -+ -+E8-4D-EC (hex) Xerox Corporation -+E84DEC (base 16) Xerox Corporation -+ 800 Phillips Rd -+ Webster NY 14450 -+ US -+ -+C8-B8-2F (hex) eero inc. -+C8B82F (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+54-78-C9 (hex) AMPAK Technology,Inc. -+5478C9 (base 16) AMPAK Technology,Inc. -+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -+ Hsinchu Hsinchu,Taiwan R.O.C. 30352 -+ TW -+ -+FC-10-1A (hex) Palo Alto Networks -+FC101A (base 16) Palo Alto Networks -+ 3000 Tannery Way -+ Santa Clara CA 95054 -+ US -+ -+6C-AE-E3 (hex) Nokia -+6CAEE3 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+0C-AC-8A (hex) Sagemcom Broadband SAS -+0CAC8A (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+B8-5D-C3 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B85DC3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+B4-3A-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B43AE2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+D0-A4-6F (hex) China Dragon Technology Limited -+D0A46F (base 16) China Dragon Technology Limited -+ B4 Bldg.Haoshan 1st Industry Park, -+ Shenzhen Guangdong 518104 -+ CN -+ -+F0-C8-B5 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+F0C8B5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+2C-60-CD (hex) NR ELECTRIC CO., LTD -+2C60CD (base 16) NR ELECTRIC CO., LTD -+ 69,Suyuan Avenue -+ Nanjing Jiangsu 211102 -+ CN -+ -+8C-1E-80 (hex) Cisco Systems, Inc -+8C1E80 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+A4-1E-E1 (hex) Taicang T&W Electronics -+A41EE1 (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 -+ CN -+ -+E8-FB-1C (hex) AzureWave Technology Inc. -+E8FB1C (base 16) AzureWave Technology Inc. -+ 8F., No. 94, Baozhong Rd. -+ New Taipei City Taiwan 231 -+ TW -+ -+B4-A7-C6 (hex) SERVERCOM (INDIA) PRIVATE LIMITED -+B4A7C6 (base 16) SERVERCOM (INDIA) PRIVATE LIMITED -+ E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI -+ NEW DELHI NA -+ IN -+ -+1C-76-F2 (hex) Samsung Electronics Co.,Ltd -+1C76F2 (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+80-C3-BA (hex) Sennheiser Consumer Audio GmbH -+80C3BA (base 16) Sennheiser Consumer Audio GmbH -+ Am Labor 1 -+ Wedemark Niedersachsen 30900 -+ DE -+ -+40-35-E6 (hex) Samsung Electronics Co.,Ltd -+4035E6 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+28-6B-35 (hex) Intel Corporate -+286B35 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+30-43-D7 (hex) IEEE Registration Authority -+3043D7 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+C0-EE-40 (hex) Laird Connectivity -+C0EE40 (base 16) Laird Connectivity -+ 50 South Main St -+ Akron Ohio 44308 -+ US -+ -+A4-7D-9F (hex) Shenzhen iComm Semiconductor CO.,LTD -+A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD -+84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD -+14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD -+E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+30-04-5C (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+30045C (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+90-79-CF (hex) zte corporation -+9079CF (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+88-8F-A4 (hex) Huawei Device Co., Ltd. -+888FA4 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+3C-82-C0 (hex) Technicolor CH USA Inc. -+3C82C0 (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+C4-DE-E2 (hex) Espressif Inc. -+C4DEE2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+68-B6-B3 (hex) Espressif Inc. -+68B6B3 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+FC-A0-5A (hex) Oray.com co., LTD. -+FCA05A (base 16) Oray.com co., LTD. -+ 8008Rm, building No.1 GuoDing d. Yangpu District -+ Shanghai Shanghai 200433 -+ CN -+ -+90-48-6C (hex) Ring LLC -+90486C (base 16) Ring LLC -+ 1523 26th St -+ Santa Monica CA 90404 -+ US -+ -+3C-46-45 (hex) Shanghai Infinity Wireless Technologies Co.,Ltd. -+3C4645 (base 16) Shanghai Infinity Wireless Technologies Co.,Ltd. -+ Room 522, Building A, No.1687 Changyang Road, Yangpu District, Shanghai -+ Shanghai Shanghai 200082 -+ CN -+ -+A4-F9-33 (hex) Intel Corporate -+A4F933 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+10-F6-0A (hex) Intel Corporate -+10F60A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+70-D8-23 (hex) Intel Corporate -+70D823 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+50-68-AC (hex) Huawei Device Co., Ltd. -+5068AC (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+50-39-2F (hex) INGRAM MICRO SERVICES -+50392F (base 16) INGRAM MICRO SERVICES -+ 100 CHEMIN DE BAILLOT -+ MONTAUBAN 82000 -+ FR -+ -+FC-84-17 (hex) Honor Device Co., Ltd. -+FC8417 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+2C-A7-9E (hex) HUAWEI TECHNOLOGIES CO.,LTD -+2CA79E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+0C-7F-B2 (hex) ARRIS Group, Inc. -+0C7FB2 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+AC-B5-66 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+ACB566 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+10-24-07 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+102407 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+74-D9-EB (hex) Petabit Scale, Inc. -+74D9EB (base 16) Petabit Scale, Inc. -+ 5814 Lonetree Blvd, Ste 200 -+ Rocklin CA 95765 -+ US -+ -+D0-21-AC (hex) Yohana -+D021AC (base 16) Yohana -+ 3460 Hillview Ave. -+ Palo Alto CA 94304 -+ US -+ -+38-1F-26 (hex) IEEE Registration Authority -+381F26 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+7C-E1-52 (hex) THE GOODYEAR TIRE & RUBBER COMPANY -+7CE152 (base 16) THE GOODYEAR TIRE & RUBBER COMPANY -+ 200 Innovation Way -+ Akron OH 44316 -+ US -+ -+28-CD-C1 (hex) Raspberry Pi Trading Ltd -+28CDC1 (base 16) Raspberry Pi Trading Ltd -+ Maurice Wilkes Building, Cowley Road -+ Cambridge CB4 0DS -+ GB -+ -+00-90-3F (hex) WorldCast Systems -+00903F (base 16) WorldCast Systems -+ 20 Avenue Neil Armstrong -+ Mérignac 33700 -+ FR -+ -+50-E6-36 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH -+50E636 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH -+ Alt-Moabit 95 -+ Berlin Berlin 10559 -+ DE -+ -+78-20-BD (hex) Polysense (Beijing) Technologies Co. Ltd -+7820BD (base 16) Polysense (Beijing) Technologies Co. Ltd -+ 9  Shangdi 3rd Street, D508B3/5(4)F Bldg D, Haidian Dist. -+ Beijing 100085 -+ CN -+ -+EC-21-25 (hex) Toshiba Corp. -+EC2125 (base 16) Toshiba Corp. -+ 1-1 Shibaura 1-Chome, Minato-Ku -+ Tokyo 105-8001 -+ JP -+ -+68-4E-05 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED -+684E05 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED -+ No.8, Litong Road, Liuyan Economic & Tec -+ Changsha HUNAN 410329 -+ CN -+ -+04-99-BB (hex) Apple, Inc. -+0499BB (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+F0-4D-D4 (hex) Sagemcom Broadband SAS -+F04DD4 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+00-E5-F1 (hex) BUFFALO.INC -+00E5F1 (base 16) BUFFALO.INC -+ AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku -+ Nagoya Aichi Pref. 460-8315 -+ JP -+ -+A8-51-AB (hex) Apple, Inc. -+A851AB (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+5C-1B-F4 (hex) Apple, Inc. -+5C1BF4 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+34-EE-2A (hex) ConMet -+34EE2A (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ -+78-66-9D (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+78669D (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.2, Jin-da Road, Huinan High-tech Industrial Park, Hui-ao Avenue -+ Huizhou Guangdong 516025 -+ CN -+ -+48-46-8D (hex) Zepcam B.V. -+48468D (base 16) Zepcam B.V. -+ Delftechpark, 17-19 -+ Delft 2628 XJ -+ NL -+ -+90-49-92 (hex) YSTen Technology Co.,Ltd -+904992 (base 16) YSTen Technology Co.,Ltd -+ Room 1715,17/F North Star Times Tower,Chaoyang District,Beijing. -+ Beijing 100101 -+ CN -+ -+AC-29-29 (hex) Infinix mobility limited -+AC2929 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ -+3C-CE-0D (hex) Shenzhen juduoping Technology Co.,Ltd -+3CCE0D (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ -+00-0E-DD (hex) SHURE INCORPORATED -+000EDD (base 16) SHURE INCORPORATED -+ 5800 W. TOUHY AVE. -+ NILES IL 60714 -+ US -+ -+18-FD-74 (hex) Routerboard.com -+18FD74 (base 16) Routerboard.com -+ Mikrotikls SIA -+ Riga Riga LV1009 -+ LV -+ -+40-D9-5A (hex) AMPAK Technology,Inc. -+40D95A (base 16) AMPAK Technology,Inc. -+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -+ Hsinchu Hsinchu,Taiwan R.O.C. 30352 -+ TW -+ -+4C-D0-DD (hex) HUAWEI TECHNOLOGIES CO.,LTD -+4CD0DD (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+E4-90-2A (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E4902A (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+90-5E-44 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+905E44 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+E8-3A-4B (hex) China Mobile Group Device Co.,Ltd. -+E83A4B (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+60-E9-AA (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+60E9AA (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+24-0F-5E (hex) Shenzhen z-router Technology Co., Ltd -+240F5E (base 16) Shenzhen z-router Technology Co., Ltd -+ 406,Block A,Taojindi Building ,Tenglong Road,Longhua New District, -+ Shenzhen GuangDong 518000 -+ CN -+ -+6C-97-6D (hex) Motorola Mobility LLC, a Lenovo Company -+6C976D (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+64-11-A4 (hex) Motorola Mobility LLC, a Lenovo Company -+6411A4 (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+10-F0-68 (hex) Ruckus Wireless -+10F068 (base 16) Ruckus Wireless -+ 350 West Java Drive - Sunnyvale CA 94089 - US - --00-EB-D8 (hex) MERCUSYS TECHNOLOGIES CO., LTD. --00EBD8 (base 16) MERCUSYS TECHNOLOGIES CO., LTD. -- 3F,Zone B,Building R1,High-Tech Industrial Village,No.023 High-Tech South 4 Road,Nanshan,Shenzhen -+F0-87-7F (hex) Magnetar Technology Shenzhen Co., LTD. -+F0877F (base 16) Magnetar Technology Shenzhen Co., LTD. -+ Room211, Building1, No.26 Puzai Road, Pingdi Longgang -+ Shenzhen GUANGDONG 518117 -+ CN -+ -+74-D4-DD (hex) Quanta Computer Inc. -+74D4DD (base 16) Quanta Computer Inc. -+ No. 211, Wenhua 2nd Rd., Guishan Dist. -+ Taoyuan City Taiwan 33377 -+ TW -+ -+C8-D6-B7 (hex) Solidigm Technology -+C8D6B7 (base 16) Solidigm Technology -+ 1921 Corporate Center Circle, Suite 3B -+ Longmont CO 80501 -+ US -+ -+60-5B-30 (hex) Dell Inc. -+605B30 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ -+44-3C-9C (hex) Pintsch GmbH -+443C9C (base 16) Pintsch GmbH -+ Huenxer Strasse 149 -+ Dinslaken 46537 -+ DE -+ -+D8-80-DC (hex) Huawei Device Co., Ltd. -+D880DC (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+E8-B3-EF (hex) Fiberhome Telecommunication Technologies Co.,LTD -+E8B3EF (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+B4-9F-4D (hex) Fiberhome Telecommunication Technologies Co.,LTD -+B49F4D (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+F4-6C-68 (hex) Wistron Neweb Corporation -+F46C68 (base 16) Wistron Neweb Corporation -+ No.20,Park Avenue II,Hsinchu Science Park -+ Hsin-Chu R.O.C. 308 -+ TW -+ -+84-93-B2 (hex) zte corporation -+8493B2 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+20-64-DE (hex) Sunitec Enterprise Co.,Ltd -+2064DE (base 16) Sunitec Enterprise Co.,Ltd -+ 3F.,No.98-1,Mincyuan Rd.Sindian City -+ Taipei County 231 231141 -+ CN -+ -+74-B7-25 (hex) Huawei Device Co., Ltd. -+74B725 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+40-8E-DF (hex) Huawei Device Co., Ltd. -+408EDF (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+A4-0F-98 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+A40F98 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+BC-44-34 (hex) Shenzhen TINNO Mobile Technology Corp. -+BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+70-66-2A (hex) Sony Interactive Entertainment Inc. -+70662A (base 16) Sony Interactive Entertainment Inc. -+ 1-7-1 Konan -+ Minato-ku Tokyo 108-0075 -+ JP -+ -+34-AC-11 (hex) China Mobile Group Device Co.,Ltd. -+34AC11 (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+44-32-C2 (hex) GOAL Co., Ltd. -+4432C2 (base 16) GOAL Co., Ltd. -+ 2-16-6 Mitsuyakita Yodogawa-ku -+ Osaka-shi Osaka-fu 532-0032 -+ JP -+ -+18-B1-85 (hex) Qiao Information Technology (Zhengzhou) Co., Ltd. -+18B185 (base 16) Qiao Information Technology (Zhengzhou) Co., Ltd. -+ Room 405-1, Area A, 4th Floor, Wisdom Island Building, No.6, Zhongdao East, Zhengdong New District, -+ Zhengzhou Henan 450000 -+ CN -+ -+A0-B7-65 (hex) Espressif Inc. -+A0B765 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+CC-DB-A7 (hex) Espressif Inc. -+CCDBA7 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+C8-6C-20 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+C86C20 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+C0-C9-76 (hex) Shenzhen TINNO Mobile Technology Corp. -+C0C976 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+B4-C0-F5 (hex) Shenzhen TINNO Mobile Technology Corp. -+B4C0F5 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+E8-F7-91 (hex) Xiaomi Communications Co Ltd -+E8F791 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+0C-97-5F (hex) Aruba, a Hewlett Packard Enterprise Company -+0C975F (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+DC-71-DD (hex) AX Technologies -+DC71DD (base 16) AX Technologies -+ 1400 Broadway, 18th Floor -+ New York City NY 10018 -+ US -+ -+54-A9-C8 (hex) Home Control Singapore Pte Ltd -+54A9C8 (base 16) Home Control Singapore Pte Ltd -+ 151 Lorong Chuan -+ Singapore 556741 -+ SG -+ -+30-7F-10 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+307F10 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+A4-90-CE (hex) vivo Mobile Communication Co., Ltd. -+A490CE (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+F8-B8-B4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+F8B8B4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, - Shenzhen Guangdong 518057 - CN - -+B0-FB-DD (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+B0FBDD (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+3C-69-D1 (hex) ADC Automotive Distance Control System GmbH -+3C69D1 (base 16) ADC Automotive Distance Control System GmbH -+ Peter-Dornier Strasse 10 -+ Lindau Bavaria 88131 -+ DE -+ -+E0-9C-8D (hex) Seakeeper, Inc. -+E09C8D (base 16) Seakeeper, Inc. -+ 45310 Abell House Lane Suite 350 -+ California MD 20619 -+ US -+ -+04-BA-D6 (hex) D-Link Corporation -+04BAD6 (base 16) D-Link Corporation -+ No.289, Sinhu 3rd Rd., Neihu District, -+ Taipei City 114 -+ TW -+ -+30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA -+303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA -+ JL.PALEM 1 BLOK DS-6 -+ KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 -+ ID -+ - 7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. - 7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. - NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE -@@ -151094,12 +153491,6 @@ A8F5DD (base 16) ARRIS Group, Inc. - San Diego CA 92121 - US - --44-D3-AD (hex) Shenzhen TINNO Mobile Technology Corp. --44D3AD (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 9C-82-75 (hex) Yichip Microelectronics (Hangzhou) Co.,Ltd - 9C8275 (base 16) Yichip Microelectronics (Hangzhou) Co.,Ltd - Room 401, Building 15, No.498 Guoshoujing Road, Pudong Software Park -@@ -153608,12 +155999,6 @@ F4F5DB (base 16) Xiaomi Communications Co Ltd - NO.68, Qinghe Middle Street Haidian District, Beijing 100085 - CN - --F4-E2-04 (hex) Traqueur --F4E204 (base 16) Traqueur -- 1, rue Royale -- Saint-Cloud 92210 -- FR -- - CC-22-37 (hex) IEEE Registration Authority - CC2237 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -159467,12 +161852,6 @@ ACCF85 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Cupertino CA 95014 - US - --00-73-8D (hex) Shenzhen TINNO Mobile Technology Corp. --00738D (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F.,H-3 Building,OCT Eastern lndustrial Park. NO.1 XiangShan East Road. -- GuangDong 518053 -- US -- - 34-BA-75 (hex) Everest Networks, Inc - 34BA75 (base 16) Everest Networks, Inc - 2933 Bunker Hill Ln., Suite 100 -@@ -171515,12 +173894,6 @@ EC6C9F (base 16) Chengdu Volans Technology CO.,LTD - Kennesaw Georgia 30144 - US - --00-16-A3 (hex) Ingeteam Transmission&Distribution, S.A. --0016A3 (base 16) Ingeteam Transmission&Distribution, S.A. -- C/ Usausuaga, 7 -- Basauri Bizkaia 48970 -- ES -- - 00-16-A0 (hex) Auto-Maskin - 0016A0 (base 16) Auto-Maskin - Sophie Radichs Vei 7 -@@ -182996,12 +185369,6 @@ ECC302 (base 16) HUMAX Co., Ltd. - Seongnam-si Gyeonggi-do 463-875 - KR - --98-C9-7C (hex) Shenzhen iComm Semiconductor CO.,LTD --98C97C (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 504A,Block B,Digital Building,Garden City,No.1079 Nanhai Road,Nanshan District,Shenzhen -- shenzhen Guangdong 518067 -- CN -- - 00-C3-43 (hex) E-T-A Circuit Breakers Ltd - 00C343 (base 16) E-T-A Circuit Breakers Ltd - 6 Telford Close -@@ -186803,18 +189170,6 @@ BC6193 (base 16) Xiaomi Communications Co Ltd - Beijing Haidian District 100085 - CN - --94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd --947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -- CN -- --C8-54-A4 (hex) Infinix mobility limited --C854A4 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- - EC-71-DB (hex) Reolink Innovation Limited - EC71DB (base 16) Reolink Innovation Limited - 705,7/F,FA YUEN COMMERCIAL BUILDING,75-77 FA YUEN STREET -@@ -186833,6 +189188,12 @@ F8E57E (base 16) Cisco Systems, Inc - Seoul Seocho-Gu #137-902 - KR - -+94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ - 38-5B-44 (hex) Silicon Laboratories - 385B44 (base 16) Silicon Laboratories - 400 West Cesar Chavez Street -@@ -186863,8 +189224,632 @@ CCEB18 (base 16) OOO TSS - Moscow Moscow 105187 - RU - -+6C-24-08 (hex) LCFC(Hefei) Electronics Technology Co., Ltd -+6C2408 (base 16) LCFC(Hefei) Electronics Technology Co., Ltd -+ No.3188-1,YunGu Road(Comprehensive Bonded Zone),Hefei Economic and Technological Development Area -+ HEFEI ANHUI 230601 -+ CN -+ -+EC-60-73 (hex) TP-LINK TECHNOLOGIES CO.,LTD. -+EC6073 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -+ Shenzhen Guangdong 518057 -+ CN -+ -+10-4D-15 (hex) Viaanix Inc -+104D15 (base 16) Viaanix Inc -+ 434 N Main St. -+ Wichita KS 67202 -+ US -+ -+50-A0-15 (hex) Shenzhen Yipingfang Network Technology Co., Ltd. -+50A015 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. -+ 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China -+ Shenzhen Nanshan District 518000 -+ CN -+ -+C8-54-A4 (hex) Infinix mobility limited -+C854A4 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ - A0-09-2E (hex) zte corporation - A0092E (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China - shenzhen guangdong 518057 - CN -+ -+B0-AF-F7 (hex) Shenzhen Yipingfang Network Technology Co., Ltd. -+B0AFF7 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. -+ 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China -+ Shenzhen Nanshan District 518000 -+ CN -+ -+70-85-C4 (hex) Ruijie Networks Co.,LTD -+7085C4 (base 16) Ruijie Networks Co.,LTD -+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city -+ Fuzhou Fujian 350002 -+ CN -+ -+5C-C5-63 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED -+5CC563 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED -+ No.8, Litong Road, Liuyan Economic & Tec -+ Changsha HUNAN 410329 -+ CN -+ -+74-DD-CB (hex) China Leadshine Technology Co.,Ltd -+74DDCB (base 16) China Leadshine Technology Co.,Ltd -+ 9-11, Building A3, Nanshan Ipark, No.1001 Xueyuan Avenue, Nanshan? -+ SHENZHEN 518000 -+ CN -+ -+A8-B1-3B (hex) HP Inc. -+A8B13B (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 -+ US -+ -+C4-38-75 (hex) Sonos, Inc. -+C43875 (base 16) Sonos, Inc. -+ 614 Chapala St -+ Santa Barbara 93101 -+ US -+ -+68-B6-91 (hex) Amazon Technologies Inc. -+68B691 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+DC-A9-56 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+DCA956 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+48-27-C5 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+4827C5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+BC-D2-06 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+BCD206 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ -+14-75-5B (hex) Intel Corporate -+14755B (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+F4-E2-04 (hex) COYOTE SYSTEM -+F4E204 (base 16) COYOTE SYSTEM -+ 1, rue Royale -+ Saint-Cloud 92210 -+ FR -+ -+F8-4E-58 (hex) Samsung Electronics Co.,Ltd -+F84E58 (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+B4-70-64 (hex) Samsung Electronics Co.,Ltd -+B47064 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+CC-82-7F (hex) Advantech Technology (CHINA) Co., Ltd. -+CC827F (base 16) Advantech Technology (CHINA) Co., Ltd. -+ No.666, Han-Pu Rd. Yu-Shan -+ Kun-Shan Jiang Su 215316 -+ CN -+ -+88-3F-0C (hex) system a.v. co., ltd. -+883F0C (base 16) system a.v. co., ltd. -+ 5-16-1,Aoe,KIta-Ku -+ Okayama Okayama 700-0941 -+ JP -+ -+C8-BE-35 (hex) Extreme Networks, Inc. -+C8BE35 (base 16) Extreme Networks, Inc. -+ 6480 Via Del Oro -+ San Jose CA 95119 -+ US -+ -+78-AF-08 (hex) Intel Corporate -+78AF08 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+D8-10-68 (hex) Murata Manufacturing Co., Ltd. -+D81068 (base 16) Murata Manufacturing Co., Ltd. -+ 1-10-1, Higashikotari -+ Nagaokakyo-shi Kyoto 617-8555 -+ JP -+ -+5C-04-5A (hex) Company NA Stage & Light -+5C045A (base 16) Company NA Stage & Light -+ Lambertu 9 -+ M?rupe LV-2167 -+ LV -+ -+58-C3-56 (hex) EM Microelectronic -+58C356 (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+A0-ED-FB (hex) Quectel Wireless Solutions Co.,Ltd. -+A0EDFB (base 16) Quectel Wireless Solutions Co.,Ltd. -+ 7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District -+ Shanghai 200233 -+ CN -+ -+B0-23-47 (hex) Shenzhen Giant Microelectronics Company Limited -+B02347 (base 16) Shenzhen Giant Microelectronics Company Limited -+ Room 2108, 21 Floor, Building No.1 of Chang Fu Jin Mao Tower, No.5 Shi Hua Road, Futian District -+ Shenzhen Guangdong 518000 -+ CN -+ -+CC-DD-58 (hex) Robert Bosch GmbH -+CCDD58 (base 16) Robert Bosch GmbH -+ Mittlerer Pfad 9 -+ Stuttgart 70499 -+ DE -+ -+4C-2E-5E (hex) Samsung Electronics Co.,Ltd -+4C2E5E (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+64-5D-F4 (hex) Samsung Electronics Co.,Ltd -+645DF4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+88-FC-5D (hex) Cisco Systems, Inc -+88FC5D (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+F4-C8-8A (hex) Intel Corporate -+F4C88A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+18-3C-98 (hex) Shenzhen Hengyi Technology Co., LTD -+183C98 (base 16) Shenzhen Hengyi Technology Co., LTD -+ Floor 5, Zone 1, Block B, Mingyou Purchasing Center, Baoyuan Road, Xixiang Street -+ Shenzhen Guangdong 518102 -+ CN -+ -+78-71-04 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+787104 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+64-C5-82 (hex) China Mobile Group Device Co.,Ltd. -+64C582 (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+D4-E0-53 (hex) Aruba, a Hewlett Packard Enterprise Company -+D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+5C-A4-F4 (hex) zte corporation -+5CA4F4 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+94-09-C9 (hex) ALPSALPINE CO .,LTD -+9409C9 (base 16) ALPSALPINE CO .,LTD -+ nishida 6-1 -+ kakuda-City Miyagi-Pref 981-1595 -+ JP -+ -+50-28-4A (hex) Intel Corporate -+50284A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+98-C9-7C (hex) Shenzhen iComm Semiconductor CO.,LTD -+98C97C (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+24-6C-60 (hex) Huawei Device Co., Ltd. -+246C60 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+28-A3-31 (hex) Sierra Wireless -+28A331 (base 16) Sierra Wireless -+ 13811 Wireless Way -+ Richmond BC V6V 3A4 -+ CA -+ -+18-34-AF (hex) Kaonmedia CO., LTD. -+1834AF (base 16) Kaonmedia CO., LTD. -+ 884-3, Seongnam-daero, Bundang-gu -+ Seongnam-si Gyeonggi-do 13517 -+ KR -+ -+EC-62-60 (hex) Espressif Inc. -+EC6260 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+B0-6E-72 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+B06E72 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+30-3E-A7 (hex) Intel Corporate -+303EA7 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+60-7D-09 (hex) Luxshare Precision Industry Co., Ltd -+607D09 (base 16) Luxshare Precision Industry Co., Ltd -+ 2nd floor,A building,Sanyo New Industrial Area,West Area of Maoyi, Shajing Street,Bao'an District -+ Shenzhen City Guangdong Province 518100 -+ CN -+ -+CC-3E-79 (hex) ARRIS Group, Inc. -+CC3E79 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+28-F5-D1 (hex) ARRIS Group, Inc. -+28F5D1 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+10-E1-77 (hex) ARRIS Group, Inc. -+10E177 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+28-82-7C (hex) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+28827C (base 16) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+ No.17 Longmen Road -+ Changzhou JiangSu 213164 -+ CN -+ -+90-D4-73 (hex) vivo Mobile Communication Co., Ltd. -+90D473 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+08-EB-F6 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+08EBF6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C8-F0-9E (hex) Espressif Inc. -+C8F09E (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+DC-54-75 (hex) Espressif Inc. -+DC5475 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+0C-7B-C8 (hex) Cisco Meraki -+0C7BC8 (base 16) Cisco Meraki -+ 500 Terry A. Francois Blvd -+ San Francisco 94158 -+ US -+ -+00-16-A3 (hex) INGETEAM -+0016A3 (base 16) INGETEAM -+ Parque Tecnologico de Bizkaia, Edificio 110 -+ Zamudio Bizkaia 48170 -+ ES -+ -+24-CF-24 (hex) Beijing Xiaomi Mobile Software Co., Ltd -+24CF24 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 -+ CN -+ -+1C-0D-7D (hex) Apple, Inc. -+1C0D7D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+14-F2-87 (hex) Apple, Inc. -+14F287 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+58-55-95 (hex) Apple, Inc. -+585595 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+F0-6C-5D (hex) Xiaomi Communications Co Ltd -+F06C5D (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+40-B0-2F (hex) Miele & Cie. KG -+40B02F (base 16) Miele & Cie. KG -+ Carl-Miele-Straße 29 -+ Gütersloh 33332 -+ DE -+ -+18-66-F0 (hex) Jupiter Systems -+1866F0 (base 16) Jupiter Systems -+ 31015 Huntwood Ave -+ Hayward CA 94544-7007 -+ US -+ -+74-60-4C (hex) RØDE -+74604C (base 16) RØDE -+ 107 Carnarvon St -+ Silverwater NSW 2128 -+ AU -+ -+28-6F-40 (hex) Tonly Technology Co. Ltd -+286F40 (base 16) Tonly Technology Co. Ltd -+ Section 37, Zhongkai Hi-Tech Development Zone -+ Huizhou Guangdong 516006 -+ CN -+ -+BC-C7-DA (hex) Earda Technologies co Ltd -+BCC7DA (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 -+ CN -+ -+0C-86-C7 (hex) Jabil Circuit (Guangzhou) Limited -+0C86C7 (base 16) Jabil Circuit (Guangzhou) Limited -+ Huangpu 128, JunCheng Road -+ GuangZhou Guangdong 510530 -+ CN -+ -+14-94-6C (hex) Apple, Inc. -+14946C (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+1C-59-74 (hex) IEEE Registration Authority -+1C5974 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+58-00-32 (hex) Genexis B.V. -+580032 (base 16) Genexis B.V. -+ Lodewijkstraat 1A -+ Eindhoven 5652AC -+ NL -+ -+B4-7D-76 (hex) KNS Group LLC -+B47D76 (base 16) KNS Group LLC -+ Room 4, Office IV, Floor 4 Rochdelskaya street, 15, b.15 Moscow, 123376 Russia -+ Moscow 123376 -+ RU -+ -+C0-AD-97 (hex) TECNO MOBILE LIMITED -+C0AD97 (base 16) TECNO MOBILE LIMITED -+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG -+ Hong Kong Hong Kong 999077 -+ HK -+ -+B0-38-E2 (hex) Wanan Hongsheng Electronic Co.Ltd -+B038E2 (base 16) Wanan Hongsheng Electronic Co.Ltd -+ 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province -+ Wanan China/jiangxi 343800 -+ CN -+ -+4C-53-69 (hex) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+4C5369 (base 16) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+ No.8,Gang’an 2nd Road,Jiangbei District,Chongqing,P.R.China -+ ChongQing ChongQing 400025 -+ CN -+ -+70-A9-83 (hex) Cisco Systems, Inc -+70A983 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+BC-FA-EB (hex) Cisco Systems, Inc -+BCFAEB (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+74-76-7D (hex) shenzhen kexint technology co.,ltd -+74767D (base 16) shenzhen kexint technology co.,ltd -+ 5th Floor, Building 2, Chunhu Industrial Park, Dongshen Road, Pinghu Street, Longgang District, Shenzhen City -+ shenzhen guangdong 518000 -+ CN -+ -+E0-48-D8 (hex) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+E048D8 (base 16) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+ Room 1407, Fuli yingkai building, No. 16, Huaxia Road, Tianhe District, -+ Guangzhou 510623 -+ CN -+ -+F8-E4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+84-85-53 (hex) Biznes Systema Telecom, LLC -+848553 (base 16) Biznes Systema Telecom, LLC -+ room XXII/1, fl 3, block 3, 6 Barklaya street, Moscow, 121087, Russia -+ Moscow 121087 -+ RU -+ -+D8-88-63 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+D88863 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C0-3E-50 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C03E50 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+80-60-36 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+806036 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+A0-C9-8B (hex) Nokia Solutions and Networks GmbH & Co. KG -+A0C98B (base 16) Nokia Solutions and Networks GmbH & Co. KG -+ Werinherstrasse 91 -+ München Bavaria D-81541 -+ DE -+ -+18-BB-1C (hex) Huawei Device Co., Ltd. -+18BB1C (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+4C-9D-22 (hex) ACES Co.,Ltd -+4C9D22 (base 16) ACES Co.,Ltd -+ TianGong Avenue #916, Tianfu New Area -+ ChengDu Sichuan Province 610000 -+ CN -+ -+88-C9-E8 (hex) Sony Corporation -+88C9E8 (base 16) Sony Corporation -+ Sony City Osaki 2-10-1 -+ Shinagawa-ku Tokyo 141-8610 -+ JP -+ -+B8-F0-B9 (hex) zte corporation -+B8F0B9 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+80-5B-65 (hex) LG Innotek -+805B65 (base 16) LG Innotek -+ 26, Hanamsandan 5beon-ro -+ Gwangju Gwangsan-gu 506-731 -+ KR -+ -+D4-43-0E (hex) Zhejiang Dahua Technology Co., Ltd. -+D4430E (base 16) Zhejiang Dahua Technology Co., Ltd. -+ No.1199,Waterfront Road -+ Hangzhou Zhejiang 310053 -+ CN -+ -+00-73-8D (hex) Shenzhen TINNO Mobile Technology Corp. -+00738D (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+44-D3-AD (hex) Shenzhen TINNO Mobile Technology Corp. -+44D3AD (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+F8-5E-0B (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+94-D3-31 (hex) Xiaomi Communications Co Ltd -+94D331 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+5C-8C-30 (hex) Taicang T&W Electronics -+5C8C30 (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 -+ CN -+ -+2C-9D-65 (hex) vivo Mobile Communication Co., Ltd. -+2C9D65 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+44-88-16 (hex) Cisco Systems, Inc -+448816 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+34-DD-04 (hex) Minut AB -+34DD04 (base 16) Minut AB -+ Baltzarsgatan 23 -+ Malmö 21136 -+ SE -+ -+60-1E-98 (hex) Axevast Technology -+601E98 (base 16) Axevast Technology -+ 5F., No. 20, Guanqian Road, Zhongzheng District -+ Taipei City 100007 -+ TW -+ -+A8-F7-D9 (hex) Mist Systems, Inc. -+A8F7D9 (base 16) Mist Systems, Inc. -+ 1601 South De Anza Blvd, Suite 248 -+ Cupertino CA 95014 -+ US -+ -+2C-3B-70 (hex) AzureWave Technology Inc. -+2C3B70 (base 16) AzureWave Technology Inc. -+ 8F., No. 94, Baozhong Rd. -+ New Taipei City Taiwan 231 -+ TW -diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt -index aa83fc256f..0410acdf80 100644 ---- a/hwdb.d/ma-medium.txt -+++ b/hwdb.d/ma-medium.txt -@@ -2258,12 +2258,6 @@ C00000-CFFFFF (base 16) Goetting KG - Lehrte Select Your State or Province 31275 - DE - --50-FF-99 (hex) Coyote Sytem --100000-1FFFFF (base 16) Coyote Sytem -- 24 quai Gallieni -- Suresnes 92150 -- FR -- - 50-FF-99 (hex) Shenzhen Haipengxin Electronic Co., Ltd. - D00000-DFFFFF (base 16) Shenzhen Haipengxin Electronic Co., Ltd. - Block C3,Mingzhuo Xingye Technology Park,Guangming Avenue -@@ -3719,12 +3713,6 @@ B00000-BFFFFF (base 16) Fibergate Inc. - Beijing Beijing 100037 - CN - --9C-43-1E (hex) Phoenix Audio Technologies --E00000-EFFFFF (base 16) Phoenix Audio Technologies -- 2552 White Road, Suite A -- Irvine CA 92614 -- US -- - 70-69-79 (hex) Rivian Automotive LLC - C00000-CFFFFF (base 16) Rivian Automotive LLC - 13250 N. Haggerty Road -@@ -4874,6 +4862,168 @@ C00000-CFFFFF (base 16) Shenzhen Micro&Nano Perception Computing Technology - Tokyo Minato 108-0023 - JP - -+0C-86-29 (hex) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD -+D00000-DFFFFF (base 16) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD -+ 27 Shucun West Road, Haidian District, -+ Beijing 100089 -+ CN -+ -+0C-86-29 (hex) Shenzhen protostellar technology Co., Ltd -+500000-5FFFFF (base 16) Shenzhen protostellar technology Co., Ltd -+ 4/F, #16, DaKan Yangmen industrial park, XiLi town, Nanshan district -+ ShenZhen GuangDong 518055 -+ CN -+ -+0C-86-29 (hex) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+900000-9FFFFF (base 16) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+ RM 1904A 19/F LUCKY COMMERCIAL CENTRE NO.103 DES VOEUX ROAD WEST HK -+ HONGKONG 999077 -+ CN -+ -+0C-86-29 (hex) Akribis Systems -+B00000-BFFFFF (base 16) Akribis Systems -+ Block 5012 Techplace II, #01-05 Ang Mo Kio Avenue 5 -+ Singapore Singapore 569876 -+ SG -+ -+6C-93-08 (hex) Shenzhen C & D Electronics Co., Ltd. -+500000-5FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -+ 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -+ ShenZhen GuangDong 518000 -+ CN -+ -+6C-93-08 (hex) Braums -+000000-0FFFFF (base 16) Braums -+ Unit M 10-16 South st -+ Rydalmere NSW 2116 -+ AU -+ -+50-FF-99 (hex) COYOTE SYSTEM -+100000-1FFFFF (base 16) COYOTE SYSTEM -+ 24 quai Gallieni -+ Suresnes 92150 -+ FR -+ -+30-43-D7 (hex) Apollo Infoways Private Limited -+200000-2FFFFF (base 16) Apollo Infoways Private Limited -+ G-149, Sector-63 -+ Noida Uttar Pradesh 201301 -+ IN -+ -+30-43-D7 (hex) Luxshare Electronic Technology (Kunshan) LTD -+300000-3FFFFF (base 16) Luxshare Electronic Technology (Kunshan) LTD -+ No.158,Jinchang Road,Jinxi Town,Kunshan City,Jiangsu Province,215324, China -+ Kunshan Jiangsu 215324 -+ CN -+ -+6C-93-08 (hex) WATERFORD CONSULTANTS LLC -+100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC -+ 7430 NEW TECHNOLOGY WAY, Suite 150 -+ FREDERICK 21703 -+ US -+ -+30-43-D7 (hex) DIGICITI Technology Co.,Ltd -+700000-7FFFFF (base 16) DIGICITI Technology Co.,Ltd -+ Room 3502,Building 1,Huide Building,North Station Community,Minzhi Street,Longhua District -+ Shenzhen Guangdong 518000 -+ CN -+ -+38-1F-26 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+100000-1FFFFF (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -+ Suzhou 215021 -+ CN -+ -+38-1F-26 (hex) Avon Protection -+800000-8FFFFF (base 16) Avon Protection -+ 503 8th Street -+ Cadillac MI 49601 -+ US -+ -+18-A5-9C (hex) Thermia AB -+500000-5FFFFF (base 16) Thermia AB -+ Snickaregatan 1 -+ Arvika 67134 -+ SE -+ -+38-1F-26 (hex) SMS Evoko Group AB -+900000-9FFFFF (base 16) SMS Evoko Group AB -+ Hastholmsvagen 32 -+ Nacka 13130 -+ SE -+ -+18-A5-9C (hex) CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFORMATICA LTDA -+B00000-BFFFFF (base 16) CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFORMATICA LTDA -+ AVENIDA TORQUATO TAPAJOS, 7503 TARUMA GALPAO 2 - CNPJ: 07.200.194/0003-80 -+ MANAUS AMAZONAS 69041-025 -+ BR -+ -+18-A5-9C (hex) BlueEyes Technology -+C00000-CFFFFF (base 16) BlueEyes Technology -+ 7F-3, No.200, Sec. 4, Wenxin Rd., -+ Taichung City Taiwan 40462 -+ TW -+ -+9C-43-1E (hex) SHURE INCORPORATED -+E00000-EFFFFF (base 16) SHURE INCORPORATED -+ 2552 White Road, Suite A -+ Irvine CA 92614 -+ US -+ -+1C-59-74 (hex) Globe Tracker ApS -+E00000-EFFFFF (base 16) Globe Tracker ApS -+ Strandgade 91 -+ kobenhavn State / Province* 1401 -+ DK -+ -+C4-A1-0E (hex) Connectlab SRL -+D00000-DFFFFF (base 16) Connectlab SRL -+ via donatello 30 -+ Milano Milano 20131 - Milano -+ IT -+ -+C4-A1-0E (hex) BARTEC PIXAVI AS -+100000-1FFFFF (base 16) BARTEC PIXAVI AS -+ Vestre Svanholmen 24 -+ SANDNES Rogaland 4313 -+ NO -+ -+C4-A1-0E (hex) HYOSUNG HEAVY INDUSTRIES -+000000-0FFFFF (base 16) HYOSUNG HEAVY INDUSTRIES -+ 119, Mapo-daero (Gongdeok-dong), Mapo-gu -+ Seoul 04144 -+ KR -+ -+C4-A1-0E (hex) Consolinno Energy GmbH -+300000-3FFFFF (base 16) Consolinno Energy GmbH -+ Franz-Mayer-Straße 1 -+ Regensburg Bayern 93053 -+ DE -+ -+C4-A1-0E (hex) Ayla Networks (Shenzhen) Co., Ltd. -+800000-8FFFFF (base 16) Ayla Networks (Shenzhen) Co., Ltd. -+ Room 1501, Building B, Innovation Building, No.198 Daxin Road, Majialong Community ,Nantou Street,Nanshan District, -+ Shenzhen 518000 -+ CN -+ -+70-50-E7 (hex) Shenzhen Dangs Science and Technology CO.,Ltd. -+800000-8FFFFF (base 16) Shenzhen Dangs Science and Technology CO.,Ltd. -+ 9th Floor of GDC Building, Gaoxin Middle 3rd St.,Nanshan District -+ Shenzhen GuangDong 518063 -+ CN -+ -+70-50-E7 (hex) KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD) -+E00000-EFFFFF (base 16) KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD) -+ 3F,No.4Building,Yuyao Technology Innovation Center -+ Ningbo ZheJiang Province, P.R.C. 315400 -+ CN -+ -+80-02-F4 (hex) BK Networks Co,. Ltd. -+000000-0FFFFF (base 16) BK Networks Co,. Ltd. -+ 330 Suin-ro, Gwonseon-gu -+ Suwon-si Gyeonggi-do 16371 -+ KR -+ - 4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD - 400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD - Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district -@@ -9452,23 +9602,227 @@ D00000-DFFFFF (base 16) Shenzhen Vitalitim Technology Co., Ltd - Guangzhou 511400 - CN - -+10-54-D2 (hex) Raylogic Control Systems Private Limited -+400000-4FFFFF (base 16) Raylogic Control Systems Private Limited -+ Unit 6, 3rd floor, HILIFE, PM Road, Santacruz West -+ Mumbai Maharashtra 400054 -+ IN -+ -+10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. -+900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -+ No.146, Sec. 1,Donxing Rd. -+ Zhubei City, Hsinchu County Taiwan 302058 -+ TW -+ - 10-54-D2 (hex) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD - 700000-7FFFFF (base 16) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD - Bldg.7, N.Industrial Park,No.18 Makan Rd,Xili,Nanshan, - SHENZHEN 518000 - CN - --10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. --900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -- No.146, Sec. 1,Donxing Rd. -- Zhubei City, Hsinchu County Taiwan 302058 -+0C-86-29 (hex) Shanghai Prophet Electronic Technology Co.,Ltd -+000000-0FFFFF (base 16) Shanghai Prophet Electronic Technology Co.,Ltd -+ 9th Floor, Building 3, 1535 Hongmei Road, Xuhui District, -+ Shanghai 200030 -+ CN -+ -+0C-86-29 (hex) Beijing Qinmu Data Technology Co., Ltd. -+100000-1FFFFF (base 16) Beijing Qinmu Data Technology Co., Ltd. -+ Room101,Office 701,Floor7,Building4,Courtyard1,Nongda South Road,Haidian District. -+ Beijing 100085 -+ CN -+ -+0C-86-29 (hex) C&A Marketing, INC. -+600000-6FFFFF (base 16) C&A Marketing, INC. -+ 114 Tived Lane East -+ Edison NJ 08837 -+ US -+ -+10-54-D2 (hex) Sybersense -+500000-5FFFFF (base 16) Sybersense -+ Unit 10, 16F, Hi-Tech Industrial Centre, Block A, 5-21 Pat Tin Par Street, Tsuen Wan NT, HK -+ Hong Kong 999077 -+ CN -+ -+0C-86-29 (hex) MyGregor Ltd -+800000-8FFFFF (base 16) MyGregor Ltd -+ 11A, Carnegie str. -+ Sofia 1000 -+ BG -+ -+6C-93-08 (hex) Annapurna labs -+D00000-DFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+6C-93-08 (hex) Shenzhen TOPWAY Technology Co.,LTD -+A00000-AFFFFF (base 16) Shenzhen TOPWAY Technology Co.,LTD -+ Bld.20 Zone 5, Baiwangxin Industry Park, Songbai Rd.Nanshan Dist -+ ShenZhen Guangdong 518055 -+ CN -+ -+6C-93-08 (hex) Shenzhen DOOGEE Hengtong Technology CO., LTD -+900000-9FFFFF (base 16) Shenzhen DOOGEE Hengtong Technology CO., LTD -+ B, 2/F, Building A4, Silicon Valley Power Digital Industrial Park, No. 22, Dafu Industrial Zone, Guanlan Aobei Community, Guanlan Street, Longhua New District -+ Shenzhen Guangdong 518000 -+ CN -+ -+30-43-D7 (hex) SYMES SA -+000000-0FFFFF (base 16) SYMES SA -+ 4 allée technopolis, chemin des presses -+ Cagnes sur mer PACA 06800 -+ FR -+ -+30-43-D7 (hex) Shenzhen Mees Hi-Tech Co., Ltd -+500000-5FFFFF (base 16) Shenzhen Mees Hi-Tech Co., Ltd -+ 2F & 4F,Building 3 North District,2nd Qianjin Road,Liutang Village, Xixiang,Bao'an District -+ Shenzhen Guangdong 518102 -+ CN -+ -+30-43-D7 (hex) Annapurna labs -+D00000-DFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+6C-93-08 (hex) ANDDORO LLC -+E00000-EFFFFF (base 16) ANDDORO LLC -+ 1430 Broadway NY -+ New York NY 10018 -+ US -+ -+38-1F-26 (hex) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+500000-5FFFFF (base 16) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+ Building3, No.416DdongshengAvenue, Wuzhen, Tongxiang, -+ Jiaxing 314000 -+ CN -+ -+38-1F-26 (hex) Synamedia -+200000-2FFFFF (base 16) Synamedia -+ Luipaardstraat 12 -+ Kortrijk West-Vlaanderen 8500 -+ BE -+ -+38-1F-26 (hex) Jade Bird Fire Co., Ltd. -+C00000-CFFFFF (base 16) Jade Bird Fire Co., Ltd. -+ Jade Bird Building, 207 Chengfu Road, Haidian District, Beijing, P.R.China -+ Beijing 100871 -+ CN -+ -+18-A5-9C (hex) Omwave -+000000-0FFFFF (base 16) Omwave -+ 5 rue Barbes -+ Montrouge 92120 -+ FR -+ -+18-A5-9C (hex) INTEGRAL PLUS -+600000-6FFFFF (base 16) INTEGRAL PLUS -+ ul. Khalitova, 2 -+ Kazan 420029 -+ RU -+ -+18-A5-9C (hex) estun automation co.,ltd -+900000-9FFFFF (base 16) estun automation co.,ltd -+ 1888 Jiyin Avenue,Jiangning District -+ nanjing 211100 -+ CN -+ -+1C-59-74 (hex) Shenzhen Geshem Technology Co Ltd -+D00000-DFFFFF (base 16) Shenzhen Geshem Technology Co Ltd -+ 12th Floor, Block B, Building 7, International Innovation Valley -+ Shenzhen Gunagdong 518000 -+ CN -+ -+1C-59-74 (hex) King-On Technology Ltd. -+C00000-CFFFFF (base 16) King-On Technology Ltd. -+ 13F, No.207-2, Sec#3, Beixin Rd., Xindian District. -+ New Taipei Taiwan 23146 - TW - --10-54-D2 (hex) Raylogic Control Systems Private Limited --400000-4FFFFF (base 16) Raylogic Control Systems Private Limited -- Unit 6, 3rd floor, HILIFE, PM Road, Santacruz West -- Mumbai Maharashtra 400054 -- IN -+1C-59-74 (hex) Topway Global Technology Limited -+800000-8FFFFF (base 16) Topway Global Technology Limited -+ Room 1003, 10 / F, Tower 1, Lippo Centre, 89 Queensway, Hong Kong -+ Hong Kong Hong Kong 999077 -+ HK -+ -+18-A5-9C (hex) Annapurna labs -+D00000-DFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+18-A5-9C (hex) BMC Messsysteme GmbH -+E00000-EFFFFF (base 16) BMC Messsysteme GmbH -+ Haupstr. 21 -+ Maisach 82216 -+ DE -+ -+1C-59-74 (hex) Jiangsu Welm Technology Co.,Ltd -+300000-3FFFFF (base 16) Jiangsu Welm Technology Co.,Ltd -+ No.158 Jianghai WestRoad,Haian -+ Haian Jiangsu 226100 -+ CN -+ -+1C-59-74 (hex) Logical Infrastructure PTY LTD -+100000-1FFFFF (base 16) Logical Infrastructure PTY LTD -+ unit 2, 8 Carbine way -+ Mornington Victoria 3931 -+ AU -+ -+1C-59-74 (hex) Shenzhen Shi Fang Communication Technology Co., Ltd -+500000-5FFFFF (base 16) Shenzhen Shi Fang Communication Technology Co., Ltd -+ 601-6 Mitehuapujing No.9 Jinxiu Mid Road Longtian Street Pingshan Distinct -+ Shenzhen Guangdong 518118 -+ CN -+ -+1C-59-74 (hex) Lynxi Technologies Co.,Ltd. -+700000-7FFFFF (base 16) Lynxi Technologies Co.,Ltd. -+ RM 801, 8/F, No. 67 North 4th Ring West Road -+ Beijing Beijing 100084 -+ CN -+ -+6C-15-24 (hex) D-HOME SMAART -+900000-9FFFFF (base 16) D-HOME SMAART -+ 8, rue Edouard Herriot -+ Marigny le Châtel 10350 -+ FR -+ -+6C-15-24 (hex) Forcite Helmet Systems Pty Ltd -+300000-3FFFFF (base 16) Forcite Helmet Systems Pty Ltd -+ 35-39 Bourke Road, Alexandria -+ Sydney NSW 2015 -+ AU -+ -+6C-15-24 (hex) Kunshan Abram Software Technology Co.,Ltd. -+600000-6FFFFF (base 16) Kunshan Abram Software Technology Co.,Ltd. -+ Room 704, No. 666, Changjiang South Road -+ Kunshan Jiangsu 215300 -+ CN -+ -+6C-15-24 (hex) Magicyo Technology CO., LTD. -+400000-4FFFFF (base 16) Magicyo Technology CO., LTD. -+ 7F, Tower A, YuZhou Building, No.78 North Keyuan -+ Shenzhen Nanshan District 518057 -+ CN -+ -+70-50-E7 (hex) shenzhen newbridge communication equipment CO.,LTD -+C00000-CFFFFF (base 16) shenzhen newbridge communication equipment CO.,LTD -+ 5 / F, No. 1 building, Jinli Industrial Park, No. 1, LanJin Sixth Road, Nanbu community, Longtian street, Pingshan District, Shenzhen -+ SHENZHEN GUANGDONG 518000 -+ CN -+ -+70-50-E7 (hex) Quantumdoor Technologies, Inc. -+400000-4FFFFF (base 16) Quantumdoor Technologies, Inc. -+ 1st Floor 108-1,Buiding5,East Districe,No.10 Xibeiwang East Road,haidian Districe, -+ beijing 102629 -+ CN -+ -+80-02-F4 (hex) Shenzhen Suanzi Technology Co., Ltd -+300000-3FFFFF (base 16) Shenzhen Suanzi Technology Co., Ltd -+ Room 207, Research Building, Tsinghua Information Port, No.1, Songpingshan New East Road, Nanshan District -+ Shenzhen Guangdong 518057 -+ CN - - 20-85-93 (hex) UNILUMIN GROUP CO.,LTD - 300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD -@@ -14333,18 +14687,204 @@ A00000-AFFFFF (base 16) Pavana Technologies JSC. - Vinh Phuc 35000 - VN - --10-54-D2 (hex) LUXSHARE-ICT Co., Ltd. --C00000-CFFFFF (base 16) LUXSHARE-ICT Co., Ltd. -- 1F, No. 22, Lane 35, Jihu Road, Neihu district -- Taipei City Taiwan 114754 -+10-54-D2 (hex) COSMO AIOT TECHNOLOGY CO LTD -+E00000-EFFFFF (base 16) COSMO AIOT TECHNOLOGY CO LTD -+ Haier Information Industrial Complex, No.1 HaierRoad -+ Qingdao Shandong 266101 -+ CN -+ -+10-54-D2 (hex) GIPS Technology Co., Ltd. -+000000-0FFFFF (base 16) GIPS Technology Co., Ltd. -+ Rm. 2, 6F., No. 395, Sec. 1, Linsen Rd., East Dist. -+ Tainan City TAIWAN 701024 - TW - -+10-54-D2 (hex) Embion B.V. -+A00000-AFFFFF (base 16) Embion B.V. -+ Biestraat 1b -+ Gilze Noord-Brabant 5126NH -+ NL -+ - 10-54-D2 (hex) Little Array Technology (Shenzhen) Co., Ltd. - 300000-3FFFFF (base 16) Little Array Technology (Shenzhen) Co., Ltd. - Unit 215, 2F, A1, Zhimei Industry Park, Fuhai Industrial Zone B2, Fuyong Street, Baoan District - Shenzhen Guangdong 518103 - CN - -+10-54-D2 (hex) LUXSHARE-ICT Co., Ltd. -+C00000-CFFFFF (base 16) LUXSHARE-ICT Co., Ltd. -+ 1F, No. 22, Lane 35, Jihu Road, Neihu district -+ Taipei City Taiwan 114754 -+ TW -+ -+0C-86-29 (hex) SHENZHEN YINGMU TECHNOLOGY.,LTD -+C00000-CFFFFF (base 16) SHENZHEN YINGMU TECHNOLOGY.,LTD -+ 8 / F, Zone D, building F1, TCL International E city, Shuguang community, Xili street, Nanshan District, -+ Shenzhen 518000 -+ CN -+ -+0C-86-29 (hex) Nipron Co.,Ltd -+A00000-AFFFFF (base 16) Nipron Co.,Ltd -+ 1-3-30 Nishinagasucho -+ Amagasaki-shi Hyogo-ken 660-0805 -+ JP -+ -+0C-86-29 (hex) FX TECHNOLOGY LIMITED -+E00000-EFFFFF (base 16) FX TECHNOLOGY LIMITED -+ 38a High Street, Northwood -+ Middlesex - HA6 1BN -+ GB -+ -+6C-93-08 (hex) LightnTec GmbH -+300000-3FFFFF (base 16) LightnTec GmbH -+ Haid-und-Neu-Strasse 7 -+ Karlsruhe 76131 -+ DE -+ -+30-43-D7 (hex) Sprocomm Technologies Co., Ltd.Guangming Branch -+600000-6FFFFF (base 16) Sprocomm Technologies Co., Ltd.Guangming Branch -+ Area A 3rd Floor, Area A 5rd Floor and 6th Floor, 301, building 2, 7th Industrial Park, Yulv Community,Yutang Street, Guangming District, -+ Shenzhen 518000 -+ CN -+ -+6C-93-08 (hex) Shenzhen haichangxing Technology Co., Ltd. -+C00000-CFFFFF (base 16) Shenzhen haichangxing Technology Co., Ltd. -+ Room 3102, 31 / F, Wen an Center, Wenjin Square, Luohu -+ SHENZHEN GUANGZHOU 518000 -+ CN -+ -+30-43-D7 (hex) Shenzhen juduoping Technology Co.,Ltd -+100000-1FFFFF (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ -+30-43-D7 (hex) Guangdong Hongqin Telecom Technology Co. Ltd. -+E00000-EFFFFF (base 16) Guangdong Hongqin Telecom Technology Co. Ltd. -+ 10 Keyuan Road, Songshan Lake -+ Dongguan Guangdong 523808 -+ CN -+ -+38-1F-26 (hex) Bosch Automotive Electronics India Pvt. Ltd. -+300000-3FFFFF (base 16) Bosch Automotive Electronics India Pvt. Ltd. -+ Naganathapura -+ Bengaluru Karnataka 560100 -+ IN -+ -+18-A5-9C (hex) ePower Network Solution Co., Ltd. -+700000-7FFFFF (base 16) ePower Network Solution Co., Ltd. -+ No. 2, Aly. 1, Ln. 85, Xinshu Rd., Xinzhuang Dist., -+ New Taipei City , 242063 -+ TW -+ -+18-A5-9C (hex) Erba Lachema s.r.o. -+A00000-AFFFFF (base 16) Erba Lachema s.r.o. -+ Karasek1d -+ Brno 62100 -+ CZ -+ -+1C-59-74 (hex) Shenzhen Hanshine Technology Co.Ltd. -+000000-0FFFFF (base 16) Shenzhen Hanshine Technology Co.Ltd. -+ Buiding 2 ,row 3,number 2 industrail zone,yulv community,Yutang street -+ Shenzhen Guangdong 518000 -+ CN -+ -+1C-59-74 (hex) Chongqing Taishan Cable Co., Ltd -+200000-2FFFFF (base 16) Chongqing Taishan Cable Co., Ltd -+ 17 Shiyan Avenue, Yufengshan Town, Yubei District, -+ Chongqing 400000 -+ CN -+ -+6C-15-24 (hex) Telsonic AG -+100000-1FFFFF (base 16) Telsonic AG -+ Industriestrasse 6b -+ Bronschhofen St.Gallen 9552 -+ CH -+ -+18-A5-9C (hex) Beijing QS Medical Technology Co., Ltd. -+300000-3FFFFF (base 16) Beijing QS Medical Technology Co., Ltd. -+ Building 5, No.11, Kechuang 14th Street, Economic-Technological Development Area -+ Beijing 100176 -+ CN -+ -+6C-15-24 (hex) SYMLINK CORPORATION -+D00000-DFFFFF (base 16) SYMLINK CORPORATION -+ 6F., No. 13, Lane. 35, Jihu Rd., Neihu Dist., Neihu Technology Park -+ Taipei 11492 -+ TW -+ -+C4-A1-0E (hex) Clinton Electronics Corporation -+B00000-BFFFFF (base 16) Clinton Electronics Corporation -+ 6701 Clinton Road -+ Loves Park IL 61111 -+ US -+ -+C4-A1-0E (hex) Wistron InfoComn (Kunshan) Co., Ltd. -+200000-2FFFFF (base 16) Wistron InfoComn (Kunshan) Co., Ltd. -+ No.88 Hongyan Road, Kunshan Economic & Technological Development Zone -+ Kunshan Jiangsu 215300 -+ CN -+ -+C4-A1-0E (hex) Guangzhou South Satellite Navigation Instrument Co., Ltd. -+700000-7FFFFF (base 16) Guangzhou South Satellite Navigation Instrument Co., Ltd. -+ Area A Layer 6, Area A Layer 5, Area A Layer 4, No.39, Sicheng Road, Tianhe District, -+ Guangzhou GuangDong 510663 -+ CN -+ -+6C-15-24 (hex) Motium Pty Ltd -+700000-7FFFFF (base 16) Motium Pty Ltd -+ 11/4 Brodie Hall Drive, -+ Bentley Western Australia 6102 -+ AU -+ -+6C-15-24 (hex) AEC s.r.l. -+E00000-EFFFFF (base 16) AEC s.r.l. -+ Via Zambon, 33/A -+ Creazzo Vicenza 36051 -+ IT -+ -+70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd. -+000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -+ 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -+ ShenZhen GuangDong 518000 -+ CN -+ -+70-50-E7 (hex) Beijing Shannoncyber Technology Co.,Ltd -+B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd -+ 913 9/F,building 8,yard 2,Shenggu Middle Road,Chaoyang District -+ beijing beijing 100029 -+ CN -+ -+C4-A1-0E (hex) Harbour Cross Technology Ltd -+400000-4FFFFF (base 16) Harbour Cross Technology Ltd -+ Unit 622 One Island South, 2 Heung Yip Road, Wong Chuk Hang, -+ Hong Kong China 000000 -+ HK -+ -+70-50-E7 (hex) Annapurna labs -+100000-1FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+80-02-F4 (hex) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+900000-9FFFFF (base 16) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+ SECOND FLOOR, NO. 943-4, TONGLONG 2ND ROAD, TORCH HIGH-TECH (XIANG 'AN) INDUSTRY DISTRICT,XIAMEN CITY, FUJIAN PROVINCE,CHINA -+ XIAMEN 361106 -+ CN -+ -+80-02-F4 (hex) PassiveLogic -+A00000-AFFFFF (base 16) PassiveLogic -+ 6405 S 3000 E, Suite 300 -+ Holladay UT 84121 -+ US -+ -+80-02-F4 (hex) Sichuan Fanyi Technology Co. Ltd. -+500000-5FFFFF (base 16) Sichuan Fanyi Technology Co. Ltd. -+ No. 1707, Unit 1, Building 1, 888, Middle Section of Yizhou Avenue, Gaoxin District -+ Chengdu Sichuan 650000 -+ CN -+ - 4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd. - 600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd. - 22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone -@@ -17420,12 +17960,6 @@ A00000-AFFFFF (base 16) Winsonic Electronics Co., Ltd. - Suwon-si Gyeonggi-do 443-270 - KR - --7C-70-BC (hex) Ametek VIS --A00000-AFFFFF (base 16) Ametek VIS -- 287 27 Road -- Grand Junction CO 81503 -- US -- - BC-34-00 (hex) Parlay Labs dba Highfive - C00000-CFFFFF (base 16) Parlay Labs dba Highfive - 471 Emerson St. -@@ -19067,12 +19601,6 @@ DC-36-43 (hex) Hangzhou Chingan Tech Co., Ltd. - hangzhou zhejiang 310000 - CN - --08-26-AE (hex) Flextronics International Kft. --A00000-AFFFFF (base 16) Flextronics International Kft. -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -- - 08-26-AE (hex) Wuhan Tianyu Information Industry Co., Ltd. - 000000-0FFFFF (base 16) Wuhan Tianyu Information Industry Co., Ltd. - Tianyu Building, S.&T.Park, Huazhong University of S.&T.,East Lake Development Zone -@@ -19109,12 +19637,6 @@ DC-36-43 (hex) Hefei EA Excelsior Information Security Co., Ltd. - Wijk en Aalburg 4261 LN - NL - --10-54-D2 (hex) ComNav Technology Ltd. --200000-2FFFFF (base 16) ComNav Technology Ltd. -- 3 floor Building 2,No.618 Chengliu Middle RD. Malu town, -- Shanghai 200000 -- CN -- - 10-54-D2 (hex) Shenzhen Dinstech Technology Co.,Ltd. - B00000-BFFFFF (base 16) Shenzhen Dinstech Technology Co.,Ltd. - Shenzhen Qianhai Shenzhen-Hong Kong Cooperation Zone Nanshan Street Linhai Avenue No. 59 Seaside Avenue 3rd Floor D378, Port Building, Shipping Center -@@ -19127,6 +19649,186 @@ D00000-DFFFFF (base 16) Sun wealth technology corporation limited - shenzhen Guang dong 518000 - CN - -+10-54-D2 (hex) ComNav Technology Ltd. -+200000-2FFFFF (base 16) ComNav Technology Ltd. -+ 3 floor Building 2,No.618 Chengliu Middle RD. Malu town, -+ Shanghai 200000 -+ CN -+ -+10-54-D2 (hex) Jiangxi Ofilm&Jvneng IoT Tech Co., Ltd. -+100000-1FFFFF (base 16) Jiangxi Ofilm&Jvneng IoT Tech Co., Ltd. -+ Building 2 and 3,Intelligent Technology Industrial Park,high-tech industrial Development Zone, -+ Yingtan 335000 -+ CN -+ -+0C-86-29 (hex) BADA SYSTEM co., Ltd -+200000-2FFFFF (base 16) BADA SYSTEM co., Ltd -+ Saemalro 99 Kumsuk building 501 -+ Seoul 05808 -+ KR -+ -+0C-86-29 (hex) HagerEnergy GmbH -+700000-7FFFFF (base 16) HagerEnergy GmbH -+ Karlstrasse 5 -+ Osnabrueck 49074 -+ DE -+ -+6C-93-08 (hex) Shenzhen EZpro Sound & Light Technology Co., Ltd. -+B00000-BFFFFF (base 16) Shenzhen EZpro Sound & Light Technology Co., Ltd. -+ E2?TCL International E City,1001 Zhong Shan Yuan Rd,Nanshan District -+ shenz guangdong 518055 -+ CN -+ -+30-43-D7 (hex) Xiaoniu network technology (Shanghai) Co., Ltd. -+C00000-CFFFFF (base 16) Xiaoniu network technology (Shanghai) Co., Ltd. -+ Room 706, building 3, no.20 east road, jingan district. -+ Shang hai 200040 -+ CN -+ -+6C-93-08 (hex) Estelar s.r.o -+400000-4FFFFF (base 16) Estelar s.r.o -+ Palackého 744/1 -+ Holešov ?eská republika 76901 -+ CZ -+ -+08-26-AE (hex) Flextronics International Kft -+A00000-AFFFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU -+ -+38-1F-26 (hex) HWACHANG CORPORATION -+D00000-DFFFFF (base 16) HWACHANG CORPORATION -+ 90, NONGGONGANJI-GIL -+ SOCHO-SI 24899 -+ KR -+ -+38-1F-26 (hex) Airmaster A/S -+400000-4FFFFF (base 16) Airmaster A/S -+ Industrivej 59 -+ Aars 9600 -+ DK -+ -+18-A5-9C (hex) Actiontec Electronics Inc. -+200000-2FFFFF (base 16) Actiontec Electronics Inc. -+ 2445 Augustine Dr #501 -+ Santa Clara CA 95054 -+ US -+ -+18-A5-9C (hex) IT-1 -+400000-4FFFFF (base 16) IT-1 -+ 260, Changnyong-daero -+ Yeongtong-gu, Suwon-si Gyeonggi-do 16229 -+ KR -+ -+18-A5-9C (hex) Residence Control Ltd -+800000-8FFFFF (base 16) Residence Control Ltd -+ Cvetan Vuchkov 7 -+ Sofia Sofia 1614 -+ BG -+ -+7C-70-BC (hex) Motec GmbH -+A00000-AFFFFF (base 16) Motec GmbH -+ 287 27 Road -+ Grand Junction CO 81503 -+ US -+ -+1C-59-74 (hex) Syntax technology(tianjin)Co.,LTD -+400000-4FFFFF (base 16) Syntax technology(tianjin)Co.,LTD -+ Room 510-5,Comprehensive Office Building,Carpet Industrial Park,Wuqing District -+ Tianjin Tianjin 301700 -+ CN -+ -+1C-59-74 (hex) Beijing Flintec Electronic Technology Co.,Ltd. -+B00000-BFFFFF (base 16) Beijing Flintec Electronic Technology Co.,Ltd. -+ Room 102,Building No.6,China Technology Venture Park,No.8,LaiGuangYing West Road,ChaoYang District -+ Beijing Beijing 100012 -+ CN -+ -+1C-59-74 (hex) Shanghai Laisi Information Technology Co.,Ltd -+900000-9FFFFF (base 16) Shanghai Laisi Information Technology Co.,Ltd -+ 1001,21#,No.1158 Zhongxin RD,Songjiang district Shanghai -+ shanghai 201614 -+ CN -+ -+6C-15-24 (hex) Shenzhen Electron Technology Co., LTD. -+500000-5FFFFF (base 16) Shenzhen Electron Technology Co., LTD. -+ Building 2, Yingfeng Industrial Zone, Tantou Community, Songgang Street, Bao'an District -+ Shenzhen Guangzhou 51800 -+ CN -+ -+6C-15-24 (hex) ShenZhen Chainway Information Technology Co., Ltd. -+800000-8FFFFF (base 16) ShenZhen Chainway Information Technology Co., Ltd. -+ 9F Building2, Phase2, Gaoxinqi Industrial Park , Bao'an District -+ ShenZhen GuangDong 518102 -+ CN -+ -+6C-15-24 (hex) Annapurna labs -+B00000-BFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+1C-59-74 (hex) Square Inc. -+600000-6FFFFF (base 16) Square Inc. -+ 1455 Market St. -+ San Francisco CA 94103 -+ US -+ -+6C-15-24 (hex) DEFA AS -+000000-0FFFFF (base 16) DEFA AS -+ Blingsmovegen 30 -+ Nesbyen 3540 -+ NO -+ -+6C-15-24 (hex) Linkplay -+200000-2FFFFF (base 16) Linkplay -+ 891 W. Washington Ave. -+ Sunnyvale CA 94086 -+ US -+ -+6C-15-24 (hex) CORAL-TAIYI -+C00000-CFFFFF (base 16) CORAL-TAIYI -+ 8F-3, No. 200, Gangqian Rd, Neihu District -+ Taipei City 114 -+ TW -+ -+C4-A1-0E (hex) O-NET Industrial Technologies (Shenzhen) Limited -+500000-5FFFFF (base 16) O-NET Industrial Technologies (Shenzhen) Limited -+ 501, Maile building, building 2, No. 28, Cuijing Road, Zhukeng community, Longtian street, Pingshan District -+ Shenzhen Guangdong 518118 -+ CN -+ -+70-50-E7 (hex) Nippon Pulse America, Inc. -+600000-6FFFFF (base 16) Nippon Pulse America, Inc. -+ 4 Corporate Drive -+ Radford VA 24141-5100 -+ US -+ -+C4-A1-0E (hex) Focus-on -+C00000-CFFFFF (base 16) Focus-on -+ Kerkeplaat 12 -+ Dordrecht 3313LC -+ NL -+ -+70-50-E7 (hex) Eta Compute Inc. -+D00000-DFFFFF (base 16) Eta Compute Inc. -+ 182 S. Murphy Ave -+ Sunnyvale CA 94086 -+ US -+ -+80-02-F4 (hex) Sichuan lookout environment protection technology co.,Ltd -+100000-1FFFFF (base 16) Sichuan lookout environment protection technology co.,Ltd -+ No. 1015, floor 10, unit 2, building 1, No. 1616, Nanhua Road, high tech Zone -+ Chengdu Sichuan 610052 -+ CN -+ -+80-02-F4 (hex) Wuhan Glory Road Intelligent Technology Co., Ltd. -+C00000-CFFFFF (base 16) Wuhan Glory Road Intelligent Technology Co., Ltd. -+ 18F,Magic Cube Building,Optics Valley Core Center,No.303 Optics Valley Avenue,East Lake High-tech Development Zone -+ Wuhan Hubei 430073 -+ CN -+ - 20-85-93 (hex) Great Lite International - 700000-7FFFFF (base 16) Great Lite International - 11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist., -@@ -22970,12 +23672,6 @@ CC-4F-5C (hex) Dtrovision - Fair Lawn NJ 07410 - US - --CC-4F-5C (hex) Buttons (Beijing) Technology Limited --E00000-EFFFFF (base 16) Buttons (Beijing) Technology Limited -- Room 202, Floor 2, Building No. 3, No. 9 Xiaoying Road, Chaoyang District -- Beijing 100101 -- CN -- - CC-4F-5C (hex) AZ-TECHNOLOGY SDN BHD - A00000-AFFFFF (base 16) AZ-TECHNOLOGY SDN BHD - A108 & A109 BLOCK A KELANA BUSINESS CENTRE NO: 97 JALAN SS7/2 KELANA JAYA -@@ -23180,12 +23876,6 @@ A0-02-4A (hex) Vitec Imaging Solutions Spa - Cassola Vicenza 36022 - IT - --78-D4-F1 (hex) Cartender --100000-1FFFFF (base 16) Cartender -- Via della Meccanica 2a -- Padova PD 35127 -- IT -- - 78-D4-F1 (hex) Jiangsu byzoro intelligent technology Co.,Ltd - B00000-BFFFFF (base 16) Jiangsu byzoro intelligent technology Co.,Ltd - Room 301, Building D, Yunmi City, No.19 Ningshuang Road, Yuhuatai District -@@ -23923,3 +24613,201 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - Matam Scientific Industries Center, Building 8.2 - Mail box 15123 Haifa 3508409 - IL -+ -+10-54-D2 (hex) Lanao Communication Technology Limited -+600000-6FFFFF (base 16) Lanao Communication Technology Limited -+ #B2, Zhongbaotong Creative Park Changfa West Road No.34 Bantian -+ Shenzhen 518029 -+ CN -+ -+0C-86-29 (hex) Ag Express Electronics -+400000-4FFFFF (base 16) Ag Express Electronics -+ 6280 NE 14th St -+ Des Moines IA 50313 -+ US -+ -+6C-93-08 (hex) Liberty AV Solutions -+700000-7FFFFF (base 16) Liberty AV Solutions -+ 1490 Garden of the Gods Road -+ Colorado Springs CO 80907 -+ US -+ -+6C-93-08 (hex) Uconfree technology(shenzhen)limited -+600000-6FFFFF (base 16) Uconfree technology(shenzhen)limited -+ Room 311 PuFeng commercial center PingHu street LongGang District ShenZhen China -+ SHENZHEN 518111 -+ CN -+ -+0C-86-29 (hex) Annapurna labs -+300000-3FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+6C-93-08 (hex) Hangzhou Risco System Co.,Ltd -+800000-8FFFFF (base 16) Hangzhou Risco System Co.,Ltd -+ No. 19, Naxian street, Liangzhu street, Yuhang District -+ Hangzhou City Zhejiang Province 31000 -+ CN -+ -+30-43-D7 (hex) Bodhi -+A00000-AFFFFF (base 16) Bodhi -+ 3150 W. Prospect Road, Suite 330 -+ Fort Lauderdale FL 33309 -+ US -+ -+6C-93-08 (hex) ZHEJIANG XIAN DA Environmental Technology Co., Ltd -+200000-2FFFFF (base 16) ZHEJIANG XIAN DA Environmental Technology Co., Ltd -+ Room 103,1st F,unit A,Buliding 3,No. 8,Xiyuan 1st Road,Sandun Town,Xihu District -+ HANGZHOU ZHEJIANG 310000 -+ CN -+ -+30-43-D7 (hex) Kesu (Shanghai) Electronic Technology Co., Ltd -+800000-8FFFFF (base 16) Kesu (Shanghai) Electronic Technology Co., Ltd -+ 3-36588?No. 1800, Panyuan Road, Changxing Town, Chongming District -+ Shanghai 202150 -+ CN -+ -+30-43-D7 (hex) PK Solutions LLC -+900000-9FFFFF (base 16) PK Solutions LLC -+ 10811 E Harry -+ Wichita KS 67207 -+ US -+ -+30-43-D7 (hex) FIBERME COMMUNICATIONS LLC -+400000-4FFFFF (base 16) FIBERME COMMUNICATIONS LLC -+ 1749 Old Meadow Rd. -+ McLean VA 22102 -+ US -+ -+38-1F-26 (hex) NOITAC sp. z o.o. sp.k. -+600000-6FFFFF (base 16) NOITAC sp. z o.o. sp.k. -+ Szlak 28/3 -+ Kraków 31-153 -+ PL -+ -+38-1F-26 (hex) JAESUNG INFORMATION & COMMUNICATION CO.LTD -+000000-0FFFFF (base 16) JAESUNG INFORMATION & COMMUNICATION CO.LTD -+ 41-69, POWOL SAEMALGIL, YANG YANG-EUP -+ YANG YANG GUN 25017 -+ KR -+ -+38-1F-26 (hex) Deutronic Elektronik GmbH -+B00000-BFFFFF (base 16) Deutronic Elektronik GmbH -+ Deutronicstraße 5 -+ Adlkofen Bayern 84166 -+ DE -+ -+38-1F-26 (hex) Annapurna labs -+E00000-EFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+38-1F-26 (hex) RCE systems s.r.o. -+700000-7FFFFF (base 16) RCE systems s.r.o. -+ Svatopluka Cecha 2008/1d -+ Brno CR 61200 -+ CZ -+ -+38-1F-26 (hex) Sercomm Corporation. -+A00000-AFFFFF (base 16) Sercomm Corporation. -+ 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen -+ Miao-Lih Hsuan 115 -+ TW -+ -+30-43-D7 (hex) Motec GmbH -+B00000-BFFFFF (base 16) Motec GmbH -+ 287 27 Road -+ Grand Junction CO 81503 -+ US -+ -+CC-4F-5C (hex) Beijing Techao Weijia Technology Limited -+E00000-EFFFFF (base 16) Beijing Techao Weijia Technology Limited -+ Room 202, Floor 2, Building No. 3, No. 9 Xiaoying Road, Chaoyang District -+ Beijing 100101 -+ CN -+ -+1C-59-74 (hex) Council Rock -+A00000-AFFFFF (base 16) Council Rock -+ 11 Centre Park -+ Rochester 14614 -+ US -+ -+C4-A1-0E (hex) Hainan World Electronic Science and Techology Co.,Ltd -+600000-6FFFFF (base 16) Hainan World Electronic Science and Techology Co.,Ltd -+ Room 1502,15th Floor,Building 20,NO.487 Tianlin Road,Shanghai,200233 China -+ Shanghai Shanghai 200233 -+ CN -+ -+C4-A1-0E (hex) Jiangsu Perceive World Technology Co.,Ltd. -+A00000-AFFFFF (base 16) Jiangsu Perceive World Technology Co.,Ltd. -+ 4-5F,Hengsheng Science Park 70#,Zhonghui Ave 1588#,HuiShan District,Wuxi,Jiangsu,China -+ Wu xi Jiangsu 214181 -+ CN -+ -+78-D4-F1 (hex) Silla Industries -+100000-1FFFFF (base 16) Silla Industries -+ Via della Meccanica 2a -+ Padova PD 35127 -+ IT -+ -+18-A5-9C (hex) Cuman -+100000-1FFFFF (base 16) Cuman -+ Al-Farabi 97/1 -+ Nur-Sultan 010000 -+ KZ -+ -+C4-A1-0E (hex) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -+900000-9FFFFF (base 16) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -+ No.211 Tiangu 8th Road, High-tech Zone -+ Xi 'an Shaanxi 710065 -+ CN -+ -+6C-15-24 (hex) STERIS -+A00000-AFFFFF (base 16) STERIS -+ Unit 7 & 8, Stortford Hall Industrial Park, Dunmow Road -+ Bishops Stortford herts CM23 5GZ -+ GB -+ -+C4-A1-0E (hex) Alio, Inc -+E00000-EFFFFF (base 16) Alio, Inc -+ 10901 W. 120th Ave, Suite 380 -+ Bloomfield CO 80021 -+ US -+ -+70-50-E7 (hex) Wall Box Chargers, S.L. -+500000-5FFFFF (base 16) Wall Box Chargers, S.L. -+ Paseo Castellana 95, 28 floor -+ Madrid Madrid 28046 -+ ES -+ -+70-50-E7 (hex) Guangzhou Tianhe High Tech Industrial Development Zone Zhongsheng Electrical Limited Company -+A00000-AFFFFF (base 16) Guangzhou Tianhe High Tech Industrial Development Zone Zhongsheng Electrical Limited Company -+ D01, Zone D, No. 6 (Yishun), Huangcun North Road, Tianhe District -+ Guangzhou 510660 -+ CN -+ -+70-50-E7 (hex) Electronic's Time SRL -+200000-2FFFFF (base 16) Electronic's Time SRL -+ Via Madonna Piccola 32R/Q -+ Martina Franca Taranto 74015 -+ IT -+ -+70-50-E7 (hex) Yoctopuce -+700000-7FFFFF (base 16) Yoctopuce -+ Route de Cartigny 33 -+ Cartigny 1236 -+ CH -+ -+70-50-E7 (hex) Skychers Creations ShenZhen Limited -+300000-3FFFFF (base 16) Skychers Creations ShenZhen Limited -+ Room 907A, 9/F, Block T2, FongDa City, Longjing Village, Longzhu Avenue, Nanshan District -+ Shenzhen Guangdong 518073 -+ CN -+ -+70-50-E7 (hex) Elastics.cloud -+900000-9FFFFF (base 16) Elastics.cloud -+ 1730 North First Street, 5th Floor -+ San Jose CA 95112 -+ US -diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt -index d6fd58e50a..6a21795559 100644 ---- a/hwdb.d/ma-small.txt -+++ b/hwdb.d/ma-small.txt -@@ -5687,6 +5687,12 @@ F74000-F74FFF (base 16) GE AVIC Civil Avionics Systems Company Limited - Shanghai 200241 - CN - -+8C-1F-64 (hex) Shenzhen zhushida Technology lnformation Co.,Ltd -+A5D000-A5DFFF (base 16) Shenzhen zhushida Technology lnformation Co.,Ltd -+ 1309, Block A, Innovation Building, Majialong Industrial Zone, Nantou Street, Nanshan District, -+ SHENZHEN 518000 -+ CN -+ - 8C-1F-64 (hex) EnviroNode IoT Solutions - 1AF000-1AFFFF (base 16) EnviroNode IoT Solutions - 4 Malvern Avenue -@@ -5699,6 +5705,204 @@ F74000-F74FFF (base 16) GE AVIC Civil Avionics Systems Company Limited - Weyarn Bayern 83629 - DE - -+8C-1F-64 (hex) Gateview Technologies -+B7B000-B7BFFF (base 16) Gateview Technologies -+ 104 White St #201 -+ Wake Forest 27587 -+ US -+ -+8C-1F-64 (hex) Suntech Engineering -+7D3000-7D3FFF (base 16) Suntech Engineering -+ 30, Gukgasandan-daero 34-gil, Guji-myeon, Dalseong-gun, Daegu, Republic of Korea -+ Daegu 43008 -+ KR -+ -+8C-1F-64 (hex) Ascon Tecnologic S.r.l. -+FF6000-FF6FFF (base 16) Ascon Tecnologic S.r.l. -+ via Indipendenza, 56 -+ Vigevano PV 27029 -+ IT -+ -+8C-1F-64 (hex) Delta Computers LLC. -+59F000-59FFFF (base 16) Delta Computers LLC. -+ Office 22/10, room part 22, room IV, floor 3, 41A, 3-rd Parkovaya str. -+ Moscow 105425 -+ RU -+ -+8C-1F-64 (hex) Newtec A/S -+BF0000-BF0FFF (base 16) Newtec A/S -+ Stærmosegårdsvej 18 -+ Odense SV Region Syd 5230 -+ DK -+ -+8C-1F-64 (hex) Onto Innovation -+FBA000-FBAFFF (base 16) Onto Innovation -+ 16 Jonspin rd -+ Wilmington MA 01887 -+ US -+ -+8C-1F-64 (hex) Becton Dickinson -+775000-775FFF (base 16) Becton Dickinson -+ 7 Loveton Circle -+ Sparks MD 21152 -+ US -+ -+8C-1F-64 (hex) FIBERME COMMUNICATIONS LLC -+C68000-C68FFF (base 16) FIBERME COMMUNICATIONS LLC -+ 1749 Old Meadow Rd. -+ McLean VA 22102 -+ US -+ -+8C-1F-64 (hex) TechArgos -+BFB000-BFBFFF (base 16) TechArgos -+ Nizhnyaya Krasnoselskaya Str. 35-64 -+ Moscow 105066 -+ RU -+ -+8C-1F-64 (hex) DAVE SRL -+967000-967FFF (base 16) DAVE SRL -+ VIA TALPONEDO 29/A -+ PORCIA PORDENONE 330850 -+ IT -+ -+8C-1F-64 (hex) e.kundenservice Netz GmbH -+855000-855FFF (base 16) e.kundenservice Netz GmbH -+ Steindamm 100 -+ Hamburg 20099 -+ DE -+ -+8C-1F-64 (hex) Meiryo Denshi Corp. -+EB5000-EB5FFF (base 16) Meiryo Denshi Corp. -+ 38-23 higashi maeda -+ Nishin City Aichi 470-0124 -+ JP -+ -+8C-1F-64 (hex) Baker Hughes EMEA -+40E000-40EFFF (base 16) Baker Hughes EMEA -+ Sensing House, Shannon Free Zone East -+ Shannon Co. Clare V14 V99 -+ IE -+ -+8C-1F-64 (hex) Calnex Solutions plc -+703000-703FFF (base 16) Calnex Solutions plc -+ Oracle Campus -+ Linlithgow West Lothian EH49 7LR -+ GB -+ -+8C-1F-64 (hex) LLC NTPC -+660000-660FFF (base 16) LLC NTPC -+ Kharkovsky alley 36g, office room 1 -+ Belgorod 308012 -+ RU -+ -+8C-1F-64 (hex) Renukas Castle Hard- and Software -+4E5000-4E5FFF (base 16) Renukas Castle Hard- and Software -+ Renukas Castle, 35th Ward, Kalyan Nagar, Ring Road, near Lions School -+ Gadag Karnataka 582103 -+ IN -+ -+8C-1F-64 (hex) Tesat-Spacecom GmbH & Co. KG -+F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG -+ Gerberstrasse 49 -+ Backnang 71522 -+ DE -+ -+8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme -+059000-059FFF (base 16) MB connect line GmbH Fernwartungssysteme -+ Winnettener Straße 6 -+ Dinkelsbuehl Bavaria 91550 -+ DE -+ -+8C-1F-64 (hex) JBF -+F45000-F45FFF (base 16) JBF -+ via goretta 90 -+ mappano torino 10079 -+ IT -+ -+8C-1F-64 (hex) REFU Storage System GmbH -+53B000-53BFFF (base 16) REFU Storage System GmbH -+ Marktstraße 185 -+ Pfullingen 72793 -+ DE -+ -+8C-1F-64 (hex) DEUTA-WERKE GmbH -+883000-883FFF (base 16) DEUTA-WERKE GmbH -+ Paffrather Str. 140 -+ Bergisch Gladbach North Rhine-Westphalia 51465 -+ DE -+ -+8C-1F-64 (hex) Micro Electroninc Products -+765000-765FFF (base 16) Micro Electroninc Products -+ TT Vasumweg 150 -+ Amsterdam 1033 SH -+ NL -+ -+8C-1F-64 (hex) Logical Product -+622000-622FFF (base 16) Logical Product -+ 2-25-5,matoba,minamiku -+ Fukuoka Fukuoka 811-1314 -+ JP -+ -+8C-1F-64 (hex) Dan Smith LLC -+4D6000-4D6FFF (base 16) Dan Smith LLC -+ 4638 Cameron Ridge Drive, Apt 138 -+ Indianapolis IN 46240 -+ US -+ -+8C-1F-64 (hex) INVIXIUM ACCESS INC -+274000-274FFF (base 16) INVIXIUM ACCESS INC -+ 111 Gordon Baker Road, Suite #300 -+ Toronto Ontario M2H 3R1 -+ CA -+ -+8C-1F-64 (hex) Sicon srl -+B3B000-B3BFFF (base 16) Sicon srl -+ Via Sila 1/3 -+ Isola Vicentina Vicenza 36033 -+ IT -+ -+8C-1F-64 (hex) Sanchar Telesystems limited -+958000-958FFF (base 16) Sanchar Telesystems limited -+ A-78, GROUND FLOOR, OKHLA INDUSTRIAL AREA, PHASE - II, NEW DELHI -+ New Delhi Delhi 110020 -+ IN -+ -+8C-1F-64 (hex) Tantronic AG -+1EF000-1EFFFF (base 16) Tantronic AG -+ Gewerbering 12 -+ Wohlen AG 5610 -+ CH -+ -+8C-1F-64 (hex) Tunstall A/S -+F2C000-F2CFFF (base 16) Tunstall A/S -+ Niels Bohrs vej 42 -+ Stilling Skanderborg 8660 -+ DK -+ -+8C-1F-64 (hex) Bunka Shutter Co., Ltd. -+0B0000-0B0FFF (base 16) Bunka Shutter Co., Ltd. -+ 644-1 Tenjingoe,Ooaza-Kamiishizuka -+ Oyama Tochigi 323-0063 -+ JP -+ -+8C-1F-64 (hex) Rodgers Instruments US LLC -+A42000-A42FFF (base 16) Rodgers Instruments US LLC -+ 6497 NE Croeni Avenue -+ Hillsboro 97124 -+ US -+ -+8C-1F-64 (hex) Potter Electric Signal Company -+316000-316FFF (base 16) Potter Electric Signal Company -+ 1609 Park 370 Place -+ Hazelwood MO 63042 -+ US -+ -+8C-1F-64 (hex) Diffraction Limited -+8CF000-8CFFFF (base 16) Diffraction Limited -+ 59 Grenfell Crescent, Unit B -+ Ottawa ON K2G 0G3 -+ CA -+ - 70-B3-D5 (hex) EVCO SPA - A80000-A80FFF (base 16) EVCO SPA - VIA FELTRE N. 81 -@@ -9089,12 +9293,6 @@ CF3000-CF3FFF (base 16) Mesh Motion Inc - Kocaeli Kocaeli 41470 - TR - --70-B3-D5 (hex) Nke --E75000-E75FFF (base 16) Nke -- Rue Gutenberg -- Hennebont Brittany 56700 -- FR -- - 70-B3-D5 (hex) UNISOR MULTISYSTEMS LTD - 05F000-05FFFF (base 16) UNISOR MULTISYSTEMS LTD - HAYETZIRA 6 ST -@@ -11063,12 +11261,6 @@ AD2000-AD2FFF (base 16) YUYAMA MFG Co.,Ltd - Tehran 1533655514 - IR - --8C-1F-64 (hex) Flextronics International Kft. --A4C000-A4CFFF (base 16) Flextronics International Kft. -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -- - 8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme - 9F2000-9F2FFF (base 16) MB connect line GmbH Fernwartungssysteme - Winnettener Straße 6 -@@ -11267,6 +11459,204 @@ E02000-E02FFF (base 16) ITS Teknik A/S - Vejle 7100 - DK - -+8C-1F-64 (hex) NETGEN HITECH SOLUTIONS LLP -+ED9000-ED9FFF (base 16) NETGEN HITECH SOLUTIONS LLP -+ B 301 KNOX PLAZA MALAD WEST -+ MUMBAI MAHARASHTRA 400064 -+ IN -+ -+8C-1F-64 (hex) Wolfspyre Labs -+9D4000-9D4FFF (base 16) Wolfspyre Labs -+ 5007 Highland Ct #WPL-IEEE -+ Austin TX 78731 -+ US -+ -+8C-1F-64 (hex) Vekto -+4AC000-4ACFFF (base 16) Vekto -+ Televisieweg 75 -+ Almere 1322AK -+ NL -+ -+8C-1F-64 (hex) SpectraDynamics, Inc. -+581000-581FFF (base 16) SpectraDynamics, Inc. -+ 1849 Cherry St. -+ Louisville CO 80027 -+ US -+ -+8C-1F-64 (hex) IO Master Technology -+BD3000-BD3FFF (base 16) IO Master Technology -+ 4F?1 No. 258, Lian Cheng Rd, Zhong He Dist -+ New Taipei City 235 Taipei 235 -+ TW -+ -+8C-1F-64 (hex) ESCAD AUTOMATION GmbH -+05F000-05FFFF (base 16) ESCAD AUTOMATION GmbH -+ Escadstr. 1 -+ Pfullendorf 88630 -+ DE -+ -+8C-1F-64 (hex) TIFLEX -+194000-194FFF (base 16) TIFLEX -+ 10 Avenue de la 1ère Armée Française Rhin - Danube -+ PONCIN 01450 -+ FR -+ -+8C-1F-64 (hex) Neuralog LP -+115000-115FFF (base 16) Neuralog LP -+ 4800 Sugar Grove Blvd., Ste. 200 -+ Stafford TX 77479 -+ US -+ -+8C-1F-64 (hex) Sichuan Aiyijan Technology Company Ltd. -+40C000-40CFFF (base 16) Sichuan Aiyijan Technology Company Ltd. -+ C1102 No. 65 Wuke West 1st Rd Wuhou District -+ Chengdu Sichuan 61000 -+ CN -+ -+8C-1F-64 (hex) Rapidev Pvt Ltd -+A44000-A44FFF (base 16) Rapidev Pvt Ltd -+ Office # G201-204 NSTP, NUST ISLAMABAD -+ ISLAMABAD Islamabad Capital Territory 44000 -+ PK -+ -+8C-1F-64 (hex) Opgal Optronic Industries ltd -+35C000-35CFFF (base 16) Opgal Optronic Industries ltd -+ Hanapach 11 -+ Karmiel 2165317 -+ IL -+ -+8C-1F-64 (hex) Alifax S.r.l. -+C24000-C24FFF (base 16) Alifax S.r.l. -+ VIA PETRARCA 2/1 -+ POLVERARA PD 35020 -+ IT -+ -+8C-1F-64 (hex) Flextronics International Kft -+A4C000-A4CFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU -+ -+8C-1F-64 (hex) Pietro Fiorentini Spa -+8D9000-8D9FFF (base 16) Pietro Fiorentini Spa -+ Via Armenia, 16 -+ San Vito al Tagliamento (PN) 33078 -+ IT -+ -+8C-1F-64 (hex) Flextronics International Kft -+D02000-D02FFF (base 16) Flextronics International Kft -+ 38. Zrinyi Str. -+ Zalaegerszeg Zala 8900 -+ HU -+ -+8C-1F-64 (hex) VMukti Solutions Private Limited -+E30000-E30FFF (base 16) VMukti Solutions Private Limited -+ 3-4, Shivalik Plaza, Panjrapole, Ambawadi -+ Ahmedabad Gujarat 380015 -+ IN -+ -+8C-1F-64 (hex) Autark GmbH -+943000-943FFF (base 16) Autark GmbH -+ Platz des Friedens 8 -+ Baunatal Hessen D-34225 -+ DE -+ -+8C-1F-64 (hex) ACTELSER S.L. -+3F4000-3F4FFF (base 16) ACTELSER S.L. -+ CARRER ALBERT EINSTEIN, 44 -+ TERRASSA BARCELONA 08223 -+ ES -+ -+8C-1F-64 (hex) Timegate Instruments Ltd. -+7A7000-7A7FFF (base 16) Timegate Instruments Ltd. -+ Tutkijantie 7 -+ Oulu 90540 -+ FI -+ -+8C-1F-64 (hex) GSP Sprachtechnologie GmbH -+FED000-FEDFFF (base 16) GSP Sprachtechnologie GmbH -+ Teltowkanalstraße 1 -+ Berlin 12247 -+ DE -+ -+8C-1F-64 (hex) Wartsila Voyage Limited -+38E000-38EFFF (base 16) Wartsila Voyage Limited -+ 13-18 City Quay -+ Dublin 2 D02 ED70 -+ IE -+ -+8C-1F-64 (hex) AZD Praha s.r.o., ZOZ Olomouc -+FA2000-FA2FFF (base 16) AZD Praha s.r.o., ZOZ Olomouc -+ Zeleznicni -+ Olomouc czech republic 77900 -+ CZ -+ -+8C-1F-64 (hex) Cubic ITS, Inc. dba GRIDSMART Technologies -+52D000-52DFFF (base 16) Cubic ITS, Inc. dba GRIDSMART Technologies -+ 10545 Hardin Valley Rd -+ Knoxville TN 37932 -+ US -+ -+70-B3-D5 (hex) Watteco -+E75000-E75FFF (base 16) Watteco -+ Rue Gutenberg -+ Hennebont Brittany 56700 -+ FR -+ -+8C-1F-64 (hex) Toolplanet Co., Ltd. -+54F000-54FFFF (base 16) Toolplanet Co., Ltd. -+ 43-2 Himigaike-cho -+ Gifu-shi Gifu 500-8122 -+ JP -+ -+8C-1F-64 (hex) AIDirections -+702000-702FFF (base 16) AIDirections -+ Torch Tower -+ Dubai Dubai 74249 -+ AE -+ -+8C-1F-64 (hex) Beijing Zhongchen Microelectronics Co.,Ltd -+AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd -+ Room 0309, 3rd Floor, Building 2, China Agricultural University International Pioneer Park, No. 10 Tianxiu Road, Haidian District -+ Beijing Beijing 100081 -+ CN -+ -+8C-1F-64 (hex) Weidmann Tecnologia Electrica de Mexico -+7B7000-7B7FFF (base 16) Weidmann Tecnologia Electrica de Mexico -+ Oscar Flores Tapia No. 304, Col. El Llano -+ Arteaga Coahuila 25350 -+ MX -+ -+8C-1F-64 (hex) Ashinne Technology Co., Ltd -+E7C000-E7CFFF (base 16) Ashinne Technology Co., Ltd -+ 10F-1, No.18, Lane 609, Sec.5, Chung Hsin Rd., San Chung Dist. -+ New Taipei City 241 -+ TW -+ -+8C-1F-64 (hex) Forever Engineering Systems Pvt. Ltd. -+AC5000-AC5FFF (base 16) Forever Engineering Systems Pvt. Ltd. -+ B-817, 8th floor, Advant Navis Business Park, Sector-142 -+ NOIDA Uttar Pradesh 201301 -+ IN -+ -+8C-1F-64 (hex) AMESS -+EEA000-EEAFFF (base 16) AMESS -+ C-1501, 60, Haan-ro -+ Gwangmyeong-si Gyeonggi-do 14322 -+ KR -+ -+8C-1F-64 (hex) EVERNET CO,.LTD TAIWAN -+B7C000-B7CFFF (base 16) EVERNET CO,.LTD TAIWAN -+ 12 F., No. 206-2, Sec. 2, Daxing W. Rd -+ Taoyuan Taiwan 330 -+ TW -+ -+8C-1F-64 (hex) Farmote Limited -+017000-017FFF (base 16) Farmote Limited -+ 92 Collingwood Street, Nelson -+ Nelson Nelson 7010 -+ NZ -+ - 70-B3-D5 (hex) System West dba ICS Electronics - E06000-E06FFF (base 16) System West dba ICS Electronics - 7034 Commerce Circle Suite A -@@ -16826,6 +17216,150 @@ E61000-E61FFF (base 16) Stange Elektronik GmbH - yokohama kanagawa 2220033 - JP - -+8C-1F-64 (hex) Beijing Tongtech Technology Co., Ltd. -+12B000-12BFFF (base 16) Beijing Tongtech Technology Co., Ltd. -+ Room 3017, Building 1, Hongfu Science Park, Changping District -+ Beijing Beijing 100029 -+ CN -+ -+8C-1F-64 (hex) EOLANE -+911000-911FFF (base 16) EOLANE -+ ZI DU VAL D OMBREE -+ COMBREE - 49520 -+ FR -+ -+8C-1F-64 (hex) Abbott Diagnostics Technologies AS -+429000-429FFF (base 16) Abbott Diagnostics Technologies AS -+ P. O. Box 6863 Rodeløkka -+ Oslo Oslo 0504 -+ NO -+ -+8C-1F-64 (hex) Huz Electronics Ltd -+BC2000-BC2FFF (base 16) Huz Electronics Ltd -+ 10 Avondale road -+ Cwmbran S Wales NP44 1UD -+ GB -+ -+8C-1F-64 (hex) Microlynx Systems Ltd -+F3C000-F3CFFF (base 16) Microlynx Systems Ltd -+ #107, 1925 - 18 Ave NE -+ Calgary AB T2E 7T8 -+ CA -+ -+8C-1F-64 (hex) ANDDORO LLC -+6F9000-6F9FFF (base 16) ANDDORO LLC -+ 1430 Broadway NY -+ New York NY 10018 -+ US -+ -+8C-1F-64 (hex) GIORDANO CONTROLS SPA -+807000-807FFF (base 16) GIORDANO CONTROLS SPA -+ VIA PARALLELA 2/4 -+ VILLA BARTOLOMEA IT 37049 -+ IT -+ -+8C-1F-64 (hex) VEILUX INC. -+045000-045FFF (base 16) VEILUX INC. -+ 802 GREENVIEW DR. STE 200 -+ GRAND PRAIRIE 75050 -+ US -+ -+8C-1F-64 (hex) Cleanwatts Digital, S.A. -+0E6000-0E6FFF (base 16) Cleanwatts Digital, S.A. -+ Ladeira da Paula, 6 -+ Antanhol-Coimbra 3040-574 -+ PT -+ -+8C-1F-64 (hex) FORSEE POWER -+0AF000-0AFFFF (base 16) FORSEE POWER -+ 2 chemin du ruisseau -+ ECULLY 69130 -+ FR -+ -+8C-1F-64 (hex) Sakura Seiki Co.,Ltd. -+28C000-28CFFF (base 16) Sakura Seiki Co.,Ltd. -+ 75-5, Imojiya -+ Chikuma-city Nagano Prefecture 387-0015 -+ JP -+ -+8C-1F-64 (hex) Indefac company -+E64000-E64FFF (base 16) Indefac company -+ Ka-211, Whangmool ro 190, DongDaemoon Gu -+ Seoul 02622 -+ KR -+ -+8C-1F-64 (hex) Jide Car Rastreamento e Monitoramento LTDA -+22E000-22EFFF (base 16) Jide Car Rastreamento e Monitoramento LTDA -+ Rua Arcipreste Andrade 630 -+ São Paulo São Paulo 04268020 -+ BR -+ -+8C-1F-64 (hex) Real Digital -+3B2000-3B2FFF (base 16) Real Digital -+ 655 SW James Pl -+ Pullman WA 99163 -+ US -+ -+8C-1F-64 (hex) Fingoti Limited -+CD9000-CD9FFF (base 16) Fingoti Limited -+ Barnam Ham Farm -+ Bickleigh, Plymouth Devon PL6 7AL -+ GB -+ -+8C-1F-64 (hex) Grace Design/Lunatec LLC -+FB7000-FB7FFF (base 16) Grace Design/Lunatec LLC -+ 4689 Ute Highway -+ Longmont CO 80503 -+ US -+ -+8C-1F-64 (hex) Farmobile LLC -+672000-672FFF (base 16) Farmobile LLC -+ 4001 W. 114th, Suite 300 -+ Leawood KS 66251 -+ US -+ -+8C-1F-64 (hex) Zhuhai Yunzhou Intelligence Technology Ltd. -+254000-254FFF (base 16) Zhuhai Yunzhou Intelligence Technology Ltd. -+ Room 311,312A,Floor 3,Heung Shan TechPort,No.3888 Qinglv North Road,Tangjiawan Town -+ Zhuhai Guangdong 519000 -+ CN -+ -+8C-1F-64 (hex) AIQuatro -+AC0000-AC0FFF (base 16) AIQuatro -+ 143B -+ São Paulo São Paulo 02433-070 -+ BR -+ -+8C-1F-64 (hex) Active Research Limited -+0C0000-0C0FFF (base 16) Active Research Limited -+ 21 Harwell Road -+ Poole Dorset BH17 0GE -+ GB -+ -+8C-1F-64 (hex) Beijing Redlink Information Technology Co., Ltd. -+D9A000-D9AFFF (base 16) Beijing Redlink Information Technology Co., Ltd. -+ Room 5, 2nd floor, Deshi Building, Haidian District, Beijing, China -+ Beijing 100085 -+ CN -+ -+8C-1F-64 (hex) Sphere Com Services Pvt Ltd -+A6A000-A6AFFF (base 16) Sphere Com Services Pvt Ltd -+ Sphere Com Services Pvt Ltd, F-16-22, pankaj plaza, plot-no-7, Sector - 12, Dwarka, New Delhi - 110075, New Delhi -+ New Delhi Delhi 110075 -+ IN -+ -+8C-1F-64 (hex) suzhou yuecrown Electronic Technology Co.,LTD -+CCB000-CCBFFF (base 16) suzhou yuecrown Electronic Technology Co.,LTD -+ B6,no.1599,West Chengbei Road,Gusu District -+ suzhou jiangsu 215000 -+ CN -+ -+8C-1F-64 (hex) Paragraf -+01A000-01AFFF (base 16) Paragraf -+ 7-8 West Newlands -+ Somersham Cambridgeshire PE28 3EB -+ GB -+ - 70-B3-D5 (hex) YUYAMA MFG Co.,Ltd - BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd - 3-3-1 -@@ -19259,12 +19793,6 @@ E9B000-E9BFFF (base 16) NUMATA R&D Co.,Ltd - Osaki city 989-6161 - JP - --70-B3-D5 (hex) Active Research Limited --6A0000-6A0FFF (base 16) Active Research Limited -- Unit 5, Wessex Trade Centre, Ringwood Road -- Poole Dorset BH12 3PF -- GB -- - 70-B3-D5 (hex) Scame Sistemi srl - 2F3000-2F3FFF (base 16) Scame Sistemi srl - Via Lombardia 5 -@@ -21287,12 +21815,6 @@ E73000-E73FFF (base 16) Zeus Control Systems Ltd - Nuneaton CV13 0PE - GB - --70-B3-D5 (hex) Flextronics International Kft. --E2F000-E2FFFF (base 16) Flextronics International Kft. -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -- - 70-B3-D5 (hex) Beijing Lihong Create Co., Ltd. - ED3000-ED3FFF (base 16) Beijing Lihong Create Co., Ltd. - Changping, Zhenxinglu. 46 -@@ -22328,12 +22850,6 @@ CCB000-CCBFFF (base 16) RealD, Inc. - Wakefield West Yorkshire WF1 2ED - GB - --8C-1F-64 (hex) Flextronics International Kft. --F5C000-F5CFFF (base 16) Flextronics International Kft. -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -- - 8C-1F-64 (hex) Bulwark - 6A8000-6A8FFF (base 16) Bulwark - 2/3 Sahra Grove -@@ -22484,12 +23000,174 @@ EFB000-EFBFFF (base 16) WARECUBE,INC - Suwon-si 16648 - KR - -+8C-1F-64 (hex) Missing Link Electronics, Inc. -+47A000-47AFFF (base 16) Missing Link Electronics, Inc. -+ 2880 Zanker Road, Ste 203 -+ San Jose 95134 -+ US -+ - 8C-1F-64 (hex) Gemini Electronics B.V. - 81A000-81AFFF (base 16) Gemini Electronics B.V. - Burg. van Meeuwenstraat 14 - Beek Limburg 6191 ND - NL - -+8C-1F-64 (hex) AixControl GmbH -+08F000-08FFFF (base 16) AixControl GmbH -+ Sonnenweg 15 -+ Aachen NRW 52070 -+ DE -+ -+8C-1F-64 (hex) Zilica Limited -+A1B000-A1BFFF (base 16) Zilica Limited -+ 8 Hasting Close, Bray, Bray -+ Maidenhead Bray Berks SL6 2DA -+ GB -+ -+8C-1F-64 (hex) REO AG -+73C000-73CFFF (base 16) REO AG -+ Brühlerstr. 100 -+ Solingen 42657 -+ DE -+ -+8C-1F-64 (hex) Borrell USA Corp -+38B000-38BFFF (base 16) Borrell USA Corp -+ 240 RIGGS AV -+ MERCED 95341 -+ US -+ -+8C-1F-64 (hex) NOVA Products GmbH -+BD6000-BD6FFF (base 16) NOVA Products GmbH -+ Thierschstr. 11 -+ Munich 80538 -+ DE -+ -+8C-1F-64 (hex) ECO-ADAPT -+C38000-C38FFF (base 16) ECO-ADAPT -+ 39 Rue de Chateaudun -+ Paris Ile-de-France 75009 -+ FR -+ -+8C-1F-64 (hex) Flextronics International Kft -+F5C000-F5CFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU -+ -+70-B3-D5 (hex) Flextronics International Kft -+E2F000-E2FFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU -+ -+8C-1F-64 (hex) ADETEC SAS -+AE8000-AE8FFF (base 16) ADETEC SAS -+ 8 rue de l'Angoumois -+ ARGENTEUIL 95100 -+ FR -+ -+8C-1F-64 (hex) AML -+634000-634FFF (base 16) AML -+ 2190 Regal Parkway -+ Euless TX 76040 -+ US -+ -+8C-1F-64 (hex) In-lite Design BV -+557000-557FFF (base 16) In-lite Design BV -+ Stephensonweg 18 -+ Gorinchem Zuid-Holland 4207 HB -+ NL -+ -+8C-1F-64 (hex) SMS group GmbH -+FF4000-FF4FFF (base 16) SMS group GmbH -+ Hirtenwiese 4 -+ Elkenroth Rhineland-Palantine 57578 -+ DE -+ -+8C-1F-64 (hex) CyberneX Co., Ltd -+A6D000-A6DFFF (base 16) CyberneX Co., Ltd -+ Kamata, 5-26-8, Ardel Kamata #1107 -+ O-taku Tokyo-to 1440052 -+ JP -+ -+8C-1F-64 (hex) Enestone Corporation -+2FD000-2FDFFF (base 16) Enestone Corporation -+ 3-24-5 Shin yokohama Kohoku -+ YOKOHAMA Kanagawa 222-0033 -+ JP -+ -+70-B3-D5 (hex) Active Research Limited -+6A0000-6A0FFF (base 16) Active Research Limited -+ 21 Harwell Road -+ Poole Dorset BH17 0GE -+ GB -+ -+8C-1F-64 (hex) SiEngine Technology Co., Ltd. -+F7A000-F7AFFF (base 16) SiEngine Technology Co., Ltd. -+ 6th floor,Building 23,No.1999,Yi Shan Road -+ Shanghai Shanghai 201114 -+ CN -+ -+8C-1F-64 (hex) Vesperix Corporation -+8E9000-8E9FFF (base 16) Vesperix Corporation -+ 803 West Broad St Suite 520 -+ Falls Church VA 22046 -+ US -+ -+8C-1F-64 (hex) SOCNOC AI Inc -+7DE000-7DEFFF (base 16) SOCNOC AI Inc -+ 2800 Innovation Avenue, Innovation Industrial Park? -+ Hefei Anhui 230000 -+ CN -+ -+8C-1F-64 (hex) Sontay Ltd. -+697000-697FFF (base 16) Sontay Ltd. -+ Four Elms Road -+ Edenbridge TN86AB -+ GB -+ -+8C-1F-64 (hex) Lumiplan Duhamel -+C4C000-C4CFFF (base 16) Lumiplan Duhamel -+ 2 rue de l'industrie -+ Domène Isère 38420 -+ FR -+ -+8C-1F-64 (hex) BRICKMAKERS GmbH -+E5E000-E5EFFF (base 16) BRICKMAKERS GmbH -+ Am Plan 14-16 -+ Koblenz 56068 -+ DE -+ -+8C-1F-64 (hex) AvMap srlu -+84C000-84CFFF (base 16) AvMap srlu -+ Viale Zaccagna 6 -+ Carrara 54033 -+ IT -+ -+8C-1F-64 (hex) Neurable -+B92000-B92FFF (base 16) Neurable -+ 45 Bromfield St -+ Chicago IL 60641 -+ US -+ -+8C-1F-64 (hex) ADiCo Corporation -+D69000-D69FFF (base 16) ADiCo Corporation -+ 2045-32, Takaragi-honcho -+ Utsunomiya-shi Tochigi 320-0075 -+ JP -+ -+8C-1F-64 (hex) Wittra Networks AB -+DF8000-DF8FFF (base 16) Wittra Networks AB -+ Västra Järnvägsgatan 39th floor(Convendum) -+ Stockholm Stockholm 111 64 -+ SE -+ -+8C-1F-64 (hex) METRONA-Union GmbH -+9FA000-9FAFFF (base 16) METRONA-Union GmbH -+ Aidenbachstr. 40 -+ München 81379 -+ DE -+ - 70-B3-D5 (hex) DISMUNTEL SAL - 92C000-92CFFF (base 16) DISMUNTEL SAL - Pol ind cotes -@@ -22952,12 +23630,6 @@ E1F000-E1FFFF (base 16) THETA432 - El Segundo CA 90245 - US - --70-B3-D5 (hex) Root Automation --6A2000-6A2FFF (base 16) Root Automation -- 1916 Fort Jones Rd -- Yreka CA 96097 -- US -- - 70-B3-D5 (hex) DIEHL Connectivity Solutions - 1F1000-1F1FFF (base 16) DIEHL Connectivity Solutions - Stephanstraße 49 -@@ -27934,3 +28606,225 @@ A9A000-A9AFFF (base 16) Signasystems Elektronik San. ve Tic. Ltd. Sti. - 2683 151st Place NE - Redmond WA 98052 - US -+ -+8C-1F-64 (hex) Pigs Can Fly Labs LLC -+DC0000-DC0FFF (base 16) Pigs Can Fly Labs LLC -+ 9450 SW Gemini Dr, PMB 41687 -+ Beaverton OR 97008 -+ US -+ -+8C-1F-64 (hex) EMBSYS SISTEMAS EMBARCADOS -+FD4000-FD4FFF (base 16) EMBSYS SISTEMAS EMBARCADOS -+ AV. SIGISMUNDO NUNES DE OLIVEIRA,570 CASA 324 -+ MARILIA SAO PAULO 17512752 -+ BR -+ -+8C-1F-64 (hex) Cardinal Scales Manufacturing Co -+DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co -+ 203 East Daugherty Street -+ Webb City MO 64870 -+ US -+ -+8C-1F-64 (hex) United States Technologies Inc. -+525000-525FFF (base 16) United States Technologies Inc. -+ 1701 Pollitt Drive -+ Fair Lawn NJ 07410 -+ US -+ -+8C-1F-64 (hex) Rumble, Inc -+837000-837FFF (base 16) Rumble, Inc -+ Bluebonnet Ln -+ Austin TX 78704 -+ US -+ -+8C-1F-64 (hex) EA Elektroautomatik GmbH & Co. KG -+504000-504FFF (base 16) EA Elektroautomatik GmbH & Co. KG -+ Helmholtzstraße 31-33 -+ Viersen NRW 41747 -+ DE -+ -+8C-1F-64 (hex) PuS GmbH und Co. KG -+4E0000-4E0FFF (base 16) PuS GmbH und Co. KG -+ Hainstr. 13 -+ Gera Germany 07545 -+ DE -+ -+8C-1F-64 (hex) Cinetix Srl -+89E000-89EFFF (base 16) Cinetix Srl -+ Via Armentera, 8 -+ Borgo Valsugana Trento 38051 -+ IT -+ -+8C-1F-64 (hex) ATM SOLUTIONS -+9BD000-9BDFFF (base 16) ATM SOLUTIONS -+ Office 10, Krishna Arcade, Plot 65, Sector 2A, Koparkharine -+ Navi Mumbai Maharashatra 400709 -+ IN -+ -+8C-1F-64 (hex) Mitsubishi Electric India Pvt. Ltd. -+D92000-D92FFF (base 16) Mitsubishi Electric India Pvt. Ltd. -+ EL3, J BLOCK, M.I.D.C. Bhosari -+ PUNE Maharastra 411027 -+ IN -+ -+8C-1F-64 (hex) Integer.pl S.A. -+A97000-A97FFF (base 16) Integer.pl S.A. -+ Wielicka 28 -+ Krakow 30-552 -+ PL -+ -+8C-1F-64 (hex) Monnit Corporation -+94E000-94EFFF (base 16) Monnit Corporation -+ 450 South Simmons STE 670 -+ Kaysville UT 84037 -+ US -+ -+8C-1F-64 (hex) SASYS e.K. -+1CB000-1CBFFF (base 16) SASYS e.K. -+ Spannstiftstr. 16 -+ Hagen 58119 -+ DE -+ -+8C-1F-64 (hex) ADAMCZEWSKI elektronische Messtechnik GmbH -+F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH -+ Felix-Wankel-Str. 13 -+ Zaberfeld Baden-Württemberg 74374 -+ DE -+ -+8C-1F-64 (hex) XSENSOR Technology Corp. -+7AA000-7AAFFF (base 16) XSENSOR Technology Corp. -+ 133 12 Ave SE -+ Calgary Alberta T2G 0Z9 -+ CA -+ -+8C-1F-64 (hex) MG s.r.l. -+67A000-67AFFF (base 16) MG s.r.l. -+ via Monte Bianco, 1 -+ Solbiate Olona VA 21058 -+ IT -+ -+8C-1F-64 (hex) Beijing Wenrise Technology Co., Ltd. -+A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. -+ No.10 Shangdi Road, Haidian District -+ Beijing Beijing 100085 -+ CN -+ -+8C-1F-64 (hex) AMF Medical SA -+F52000-F52FFF (base 16) AMF Medical SA -+ Chemin de la Dent-d'Oche 1 A -+ Ecublens VD Vaud 1024 -+ CH -+ -+8C-1F-64 (hex) SCIREQ Scientific Respiratory Equipment Inc -+01E000-01EFFF (base 16) SCIREQ Scientific Respiratory Equipment Inc -+ 6600 rue St. Urbain, Suite 300 -+ Montreal Quebec H2S 3G8 -+ CA -+ -+8C-1F-64 (hex) HUPI -+489000-489FFF (base 16) HUPI -+ 45 allée théodore monod -+ Bidart Sélectionnez un département / état 64210 -+ FR -+ -+8C-1F-64 (hex) Qualitrol LLC -+905000-905FFF (base 16) Qualitrol LLC -+ 1385 Fairport Rd -+ Fairport NY 14450 -+ US -+ -+8C-1F-64 (hex) WINTUS SYSTEM -+9BA000-9BAFFF (base 16) WINTUS SYSTEM -+ E1102, 7 yeonmujang 5ga gil, seongdong-gu -+ SEOUL SEOUL 04782 -+ KR -+ -+8C-1F-64 (hex) TTC TELEKOMUNIKACE, s.r.o. -+E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. -+ Trebohosticka 5 -+ Praha 10 Praha 10000 -+ CZ -+ -+70-B3-D5 (hex) Root Automation -+6A2000-6A2FFF (base 16) Root Automation -+ 112 4 H Way -+ Yreka CA 96097 -+ US -+ -+8C-1F-64 (hex) Proterra, Inc -+552000-552FFF (base 16) Proterra, Inc -+ 1 Whitlee Court -+ Greenville SC 29607 -+ US -+ -+8C-1F-64 (hex) eumig industrie-TV GmbH. -+5B3000-5B3FFF (base 16) eumig industrie-TV GmbH. -+ Gewerbeparkstrasse 9 -+ Anif Salzburg 5081 -+ AT -+ -+8C-1F-64 (hex) TeraDiode / Panasonic -+2C3000-2C3FFF (base 16) TeraDiode / Panasonic -+ 30 Upton Dr -+ Wilmington MA 01887 -+ US -+ -+8C-1F-64 (hex) QUERCUS TECHNOLOGIES, S.L. -+D7C000-D7CFFF (base 16) QUERCUS TECHNOLOGIES, S.L. -+ Av. Onze de Setembre 19 -+ Reus Tarragona 43203 -+ ES -+ -+8C-1F-64 (hex) SPIT Technology, Inc -+939000-939FFF (base 16) SPIT Technology, Inc -+ 2F, 91-1, Gyeongui-ro -+ Uijeongbu-si Gyonggi-do 11652 -+ KR -+ -+8C-1F-64 (hex) VECOS Europe B.V. -+C80000-C80FFF (base 16) VECOS Europe B.V. -+ ESP 237 -+ Eindhoven Noord-Brabant 5633 AD -+ NL -+ -+8C-1F-64 (hex) EMIT GmbH -+3D1000-3D1FFF (base 16) EMIT GmbH -+ Johannes-Mauthe-Straße 14 -+ Albstadt Baden Württemberg 72458 -+ DE -+ -+8C-1F-64 (hex) M/S MILIND RAMACHANDRA RAJWADE -+721000-721FFF (base 16) M/S MILIND RAMACHANDRA RAJWADE -+ 713, Sinhgad Road, P.cast S. No. 39, Manikbaug Industries Wadagaon Budru -+ Pune Maharashtra 411051 -+ IN -+ -+8C-1F-64 (hex) JW Froehlich Maschinenfabrik GmbH -+C8F000-C8FFFF (base 16) JW Froehlich Maschinenfabrik GmbH -+ Kohlhammerstrasse 18-24 -+ Leinfelden-Echterdingen 70771 -+ DE -+ -+8C-1F-64 (hex) Power Electronics Espana, S.L. -+D08000-D08FFF (base 16) Power Electronics Espana, S.L. -+ Poligono Industrial Carrases. Ronda del camp d Aviacio 4 -+ Lliria Valencia 46160 -+ ES -+ -+8C-1F-64 (hex) Mediana -+C6B000-C6BFFF (base 16) Mediana -+ Wonju Medical Industry Park, 1650-1 Donghwa-Ri, -+ Wonju-Si Gangwon-Do 220-801 -+ KR -+ -+8C-1F-64 (hex) noah -+B01000-B01FFF (base 16) noah -+ Augustusplatz 1-4 -+ Leipzig 04109 -+ DE -+ -+8C-1F-64 (hex) Nokeval Oy -+E0E000-E0EFFF (base 16) Nokeval Oy -+ Rounionkatu 107 -+ Nokia 37150 -+ FI -diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids -index 4c99c149f4..19832a58b3 100644 ---- a/hwdb.d/pci.ids -+++ b/hwdb.d/pci.ids -@@ -1,8 +1,8 @@ - # - # List of PCI ID's - # --# Version: 2021.12.15 --# Date: 2021-12-15 03:15:02 -+# Version: 2022.03.22 -+# Date: 2022-03-22 03:15:02 - # - # Maintained by Albert Pool, Martin Mares, and other volunteers from - # the PCI ID Project at https://pci-ids.ucw.cz/. -@@ -105,14 +105,24 @@ - 0731 7215 JM7200 - 9200 JM9200 - 920a JH920 -+ 0731 920a JH920 -+ 0731 920b JH920-I -+ 0731 920c JH920-M - 920b JH920-I - 920c JH920-M - 9210 JM9210 -+ 0731 9210 JM9210 -+ 0731 9211 JM9210-I - 9211 JM9210-I - 9230 JM9230 -+ 0731 9230 JM9230 -+ 0731 9231 JM9230-I - 9231 JM9231-I - 9250 JM9250 -+ 0731 9250 JM9250 - 930a JH930-I -+ 0731 930a JH930-I -+ 0731 930b JH930-M - 930b JH930-M - 0777 Ubiquiti Networks, Inc. - 0795 Wired Inc. -@@ -821,14 +831,16 @@ - 1028 200c HBA355i Front - 1028 200d HBA355e Adapter - 1028 200e HBA350i MX -+ 1028 2170 HBA350i MM - 1028 2175 HBA350i Adapter -+ 1028 2197 HBA350i MM LP - 1d49 0205 ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA - 1d49 0206 ThinkSystem 440-16e SAS/SATA PCIe Gen4 12Gb HBA - 1d49 0207 ThinkSystem 440-8i SAS/SATA PCIe Gen4 12Gb HBA - 1d49 0208 ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb HBA - 1d49 0209 ThinkSystem 440-8e SAS/SATA PCIe Gen4 12Gb HBA -- 8086 4050 Storage Controller RS3P4QF160F -- 8086 4070 Storage Controller RS3P4GF016F -+ 8086 4050 Storage Controller RS3P4QF160J -+ 8086 4070 Storage Controller RS3P4GF016J - 00e7 Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx - # Tampered part - 1028 200b HBA355i Adapter Tampered -@@ -932,6 +944,8 @@ - 10e2 MegaRAID 12GSAS/PCIe Secure SAS39xx - # 9560 16 internal port RAID controller - 1000 4000 MegaRAID 9560-16i -+# 9561 16 internal port RAID controller -+ 1000 4002 MegaRAID 9561-16i - # 9560 8 internal port RAID controller - 1000 4010 MegaRAID 9560-8i - # 9580 8 internal & 8 external port RAID controller -@@ -965,6 +979,7 @@ - 1028 2173 PERC H355 Front - 1028 2174 PERC H350 Mini - 1028 2177 PERC H350 Adapter -+ 1028 2199 PERC H350 Mini LP - 1d49 0505 ThinkSystem RAID 540-8i PCIe Gen4 12Gb Adapter - 1d49 0506 ThinkSystem RAID 540-16i PCIe Gen4 12Gb Adapter - 10e7 MegaRAID 12GSAS/PCIe Unsupported SAS38xx -@@ -986,6 +1001,7 @@ - c010 PEX88048 50 lane, 50 port, PCI Express Gen 4.0 ExpressFabric Platform - c012 PEX880xx PCIe Gen 4 Switch - 1d49 0003 ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter -+ c030 PEX890xx PCIe Gen 5 Switch - 1001 Kolter Electronic - 0010 PCI 1616 Measurement card with 32 digital I/O lines - 0011 OPTO-PCI Opto-Isolated digital I/O board -@@ -1062,7 +1078,7 @@ - 163f VanGogh - 164c Lucienne - 164d Rembrandt -- 1681 Rembrandt -+ 1681 Rembrandt [Radeon 680M] - 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] - 103c 168b ProBook 4535s - 3150 RV380/M24 [Mobility Radeon X600] -@@ -2032,9 +2048,10 @@ - 174b a240 Radeon R7 240 OEM - 174b d340 Radeon R7 340 OEM - 1b0a 90d3 Radeon R7 240 OEM -- 6613 Oland PRO [Radeon R7 240/340] -+ 6613 Oland PRO [Radeon R7 240/340 / Radeon 520] - 148c 7340 Radeon R7 340 - 1682 7240 R7 240 2048 MB -+ 1dcf 3000 Oland PRO [Radeon R7 240/340 / Radeon 520] - 6631 Oland - 6640 Saturn XT [FirePro M6100] - 106b 014b Tropo XT [Radeon R9 M380 Mac Edition] -@@ -3742,23 +3759,29 @@ - 73a2 Navi 21 Pro-XTA [Radeon Pro W6900X] - 73a3 Navi 21 GL-XL [Radeon PRO W6800] - 73a4 Navi 21 USB -+ 73a5 Navi 21 [Radeon RX 6950 XT] - 73ab Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] - 73af Navi 21 [Radeon RX 6900 XT] -+ 148c 2414 Navi 21 XTXH [PowerColor Red Devil RX 6900 XT Ultimate] - 73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] - 1002 0e3a Radeon RX 6900 XT -+ 148c 2408 Red Devil AMD Radeon RX 6900 XT - 1eae 6701 XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black - 73c3 Navi 22 - 73c4 Navi 22 USB -- 73df Navi 22 [Radeon RX 6700/6700 XT / 6800M] -+ 73df Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] - 73e0 Navi 23 - 73e1 Navi 23 WKS-XM [Radeon PRO W6600M] - 73e3 Navi 23 WKS-XL [Radeon PRO W6600] - 73e4 Navi 23 USB -+ 73ef Navi 23 [Radeon RX 6650 XT] - 73ff Navi 23 [Radeon RX 6600/6600 XT/6600M] - 148c 2412 PowerColor Red Devil RX 6600 XT - 7408 Aldebaran - 740c Aldebaran - 740f Aldebaran -+ 743f Navi 24 [Radeon RX 6400 / 6500 XT] -+ 1da2 e457 PULSE AMD Radeon RX 6500 XT - 7833 RS350 Host Bridge - 7834 RS350 [Radeon 9100 PRO/XT IGP] - 7835 RS350M [Mobility Radeon 9000 IGP] -@@ -4161,7 +4184,7 @@ - ab10 Lexa HDMI Audio - ab18 Vega 12 HDMI Audio - ab20 Vega 20 HDMI Audio [Radeon VII] -- ab28 Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT] -+ ab28 Navi 21/23 HDMI/DP Audio Controller - ab38 Navi 10 HDMI Audio - ac00 Theater 506 World-Wide Analog Decoder - ac01 Theater 506 World-Wide Analog Decoder -@@ -4956,14 +4979,14 @@ - 1043 876b PRIME Motherboard - 17aa 5124 ThinkPad E595 - ea50 ce19 mCOM10-L1900 -- 15e2 Raven/Raven2/FireFlight/Renoir Audio Processor -+ 15e2 ACP/ACP3X/ACP6x Audio Coprocessor - 17aa 5124 ThinkPad E595 - ea50 ce19 mCOM10-L1900 -- 15e3 Family 17h (Models 10h-1fh) HD Audio Controller -+ 15e3 Family 17h/19h HD Audio Controller - 103c 8615 Pavilion Laptop 15-cw1xxx - 1043 86c7 PRIME B450M-A Motherboard - 17aa 5124 ThinkPad E595 -- 15e4 Raven/Raven2/Renoir Sensor Fusion Hub -+ 15e4 Sensor Fusion Hub - 15e5 Raven2 USB 3.1 - ea50 ce19 mCOM10-L1900 - 15e6 Raven/Raven2/Renoir Non-Sensor Fusion Hub KMDF driver -@@ -5139,6 +5162,13 @@ - 43c7 400 Series Chipset PCIe Port - 43c8 400 Series Chipset SATA Controller - 43d5 400 Series Chipset USB 3.1 XHCI Controller -+ 43e9 500 Series Chipset Switch Upstream Port -+ 43eb 500 Series Chipset SATA Controller -+# or ASM106X Serial ATA Controller -+ 1b21 1062 ASM1062 Serial ATA Controller -+ 43ee 500 Series Chipset USB 3.1 XHCI Controller -+# maybe -+ 1b21 1142 ASM1042A USB 3.0 Host Controller - 57a3 Matisse PCIe GPP Bridge - 57a4 Matisse PCIe GPP Bridge - 57ad Matisse Switch Upstream -@@ -11492,6 +11522,7 @@ - 10ef GP102 HDMI Audio Controller - 10f0 GP104 High Definition Audio Controller - 10f1 GP106 High Definition Audio Controller -+ 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] - 10f7 TU102 High Definition Audio Controller - 10f8 TU104 HD Audio Controller - 10f9 TU106 High Definition Audio Controller -@@ -12189,6 +12220,7 @@ - 1c01 GP106 - 1c02 GP106 [GeForce GTX 1060 3GB] - 1c03 GP106 [GeForce GTX 1060 6GB] -+ 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] - 1c04 GP106 [GeForce GTX 1060 5GB] - 1c06 GP106 [GeForce GTX 1060 6GB Rev. 2] - 1c07 GP106 [P106-100] -@@ -12321,6 +12353,7 @@ - 1ef5 TU104GLM [Quadro RTX 5000 Mobile Refresh] - 1f02 TU106 [GeForce RTX 2070] - 1043 8673 TURBO RTX 2070 -+ 1f03 TU106 [GeForce RTX 2060 12GB] - 1f04 TU106 - 1f06 TU106 [GeForce RTX 2060 SUPER] - 1f07 TU106 [GeForce RTX 2070 Rev. A] -@@ -12354,21 +12387,32 @@ - 1f99 TU117M - 1f9c TU117M [GeForce MX450] - 1f9d TU117M [GeForce GTX 1650 Mobile / Max-Q] -+# via Lenovo 496.90 -+ 1f9f TU117M [GeForce MX550] -+ 1fa0 TU117M [GeForce MX550] - 1fae TU117GL - 1fb0 TU117GLM [Quadro T1000 Mobile] - 1fb1 TU117GL [T600] - 1fb2 TU117GLM [Quadro T400 Mobile] -+ 1fb6 TU117GLM [T600 Laptop GPU] -+ 1fb7 TU117GLM [T550 Laptop GPU] - 1fb8 TU117GLM [Quadro T2000 Mobile / Max-Q] - 1fb9 TU117GLM [Quadro T1000 Mobile] - 1fba TU117GLM [T600 Mobile] - 1fbb TU117GLM [Quadro T500 Mobile] -+ 1fbc TU117GLM [T1200 Laptop GPU] - 1fbf TU117GL - 1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh] - 1fdd TU117BM [GeForce GTX 1650 Mobile Refresh] -+ 1ff0 TU117GL [T1000 8GB] -+ 1ff2 TU117GL [T400 4GB] - 1ff9 TU117GLM [Quadro T1000 Mobile] -+ 2082 GA100 [CMP 170HX] - 20b0 GA100 [A100 SXM4 40GB] - 20b1 GA100 [A100 PCIe 40GB] - 20b2 GA100 [A100 SXM4 80GB] -+# 20B3 14A7 10DE PG506-242 / 20B3 14A8 10DE PG506-243 -+ 20b3 GA100 [PG506-242/243] - 20b5 GA100 [A100 PCIe 80GB] - 20b6 GA100GL [PG506-232] - 20b7 GA100GL [A30 PCIe] -@@ -12376,7 +12420,9 @@ - 20be GA100 [GRID A100A] - 20bf GA100 [GRID A100B] - 20c2 GA100 [CMP 170HX] -+ 20f0 GA100 [A100-PG506-207] - 20f1 GA100 [A100 PCIe 40GB] -+ 20f2 GA100 [A100-PG506-217] - 2182 TU116 [GeForce GTX 1660 Ti] - 2183 TU116 - 2184 TU116 [GeForce GTX 1660] -@@ -12399,6 +12445,7 @@ - 10de 146d GA102 [GeForce RTX 3080 20GB] - 1462 3892 RTX 3080 10GB GAMING X TRIO - 2208 GA102 [GeForce RTX 3080 Ti] -+ 220a GA102 [GeForce RTX 3080 12GB] - 220d GA102 [CMP 90HX] - 2216 GA102 [GeForce RTX 3080 Lite Hash Rate] - 222b GA102 [GeForce RTX 3090 Engineering Sample] -@@ -12406,15 +12453,20 @@ - 2230 GA102GL [RTX A6000] - 2231 GA102GL [RTX A5000] - 2232 GA102GL [RTX A4500] -+ 2233 GA102GL [RTX A5500] - 2235 GA102GL [A40] - 2236 GA102GL [A10] - 2237 GA102GL [A10G] -+ 2238 GA102GL [A10M] - 223f GA102GL - 228b GA104 High Definition Audio Controller - 2296 Tegra PCIe Endpoint Virtual Network - 2302 GA103 - 2321 GA103 -+ 2414 GA103 [GeForce RTX 3060 Ti] - 2420 GA103M [GeForce RTX 3080 Ti Mobile] -+ 2438 GA103GLM [RTX A5500 Laptop GPU] -+ 2460 GA103M [GeForce RTX 3080 Ti Laptop GPU] - 2482 GA104 [GeForce RTX 3070 Ti] - 2483 GA104 - 2484 GA104 [GeForce RTX 3070] -@@ -12436,29 +12488,46 @@ - 24b6 GA104GLM [RTX A5000 Mobile] - 24b7 GA104GLM [RTX A4000 Mobile] - 24b8 GA104GLM [RTX A3000 Mobile] -+ 24b9 GA104GLM [RTX A3000 12GB Laptop GPU] -+ 24ba GA104GLM [RTX A4500 Laptop GPU] -+ 24bb GA104GLM [RTX A3000 Laptop GPU] - 24bf GA104 [GeForce RTX 3070 Engineering Sample] - 24dc GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] - 24dd GA104M [GeForce RTX 3070 Mobile / Max-Q] -+ 24e0 GA104M [Geforce RTX 3070 Ti Laptop GPU] -+ 24fa GA104 [RTX A4500 Embedded GPU ] - 2501 GA106 [GeForce RTX 3060] - 2503 GA106 [GeForce RTX 3060] - 2504 GA106 [GeForce RTX 3060 Lite Hash Rate] - 2505 GA106 -+ 2507 GA106 [Geforce RTX 3050] - 2520 GA106M [GeForce RTX 3060 Mobile / Max-Q] - 2523 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] - 252f GA106 [GeForce RTX 3060 Engineering Sample] -+ 2531 GA106 [RTX A2000] - 2560 GA106M [GeForce RTX 3060 Mobile / Max-Q] - 2563 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] -+ 2571 GA106 [RTX A2000 12GB] - 2583 GA107 [GeForce RTX 3050] - 25a0 GA107M [GeForce RTX 3050 Ti Mobile] - 25a2 GA107M [GeForce RTX 3050 Mobile] - 25a4 GA107 - 25a5 GA107M [GeForce RTX 3050 Mobile] -+ 25a6 GA107M [GeForce MX570] -+ 25a7 GA107M [GeForce MX570] -+ 25a9 GA107M [GeForce RTX 2050] - 25af GA107 [GeForce RTX 3050 Engineering Sample] - 25b5 GA107GLM [RTX A4 Mobile] -+# A16 - 25B6 10DE 14A9 / A2 - 25B6 10DE 157E -+ 25b6 GA107GL [A2 / A16] - 25b8 GA107GLM [RTX A2000 Mobile] -+ 25b9 GA107GLM [RTX A1000 Laptop GPU] -+ 25ba GA107GLM [RTX A2000 8GB Laptop GPU] - 25e0 GA107BM [GeForce RTX 3050 Ti Mobile] - 25e2 GA107BM [GeForce RTX 3050 Mobile] - 25e5 GA107BM [GeForce RTX 3050 Mobile] -+ 25f9 GA107 [RTX A1000 Embedded GPU ] -+ 25fa GA107 [RTX A2000 Embedded GPU] - 10df Emulex Corporation - 0720 OneConnect NIC (Skyhawk) - 103c 1934 FlexFabric 20Gb 2-port 650M Adapter -@@ -12689,6 +12758,7 @@ - 1028 09be Latitude 7410 - 17aa 224f ThinkPad X1 Carbon 5th Gen - 5260 RTS5260 PCI Express Card Reader -+ 5261 RTS5261 PCI Express Card Reader - 5286 RTS5286 PCI Express Card Reader - 5287 RTL8411B PCI Express Card Reader - 1025 1094 Acer Aspire E5-575G -@@ -12790,6 +12860,8 @@ - 103c 2a6f Asus IPIBL-LB Motherboard - 103c 825b OMEN-17-w001nv - 103c 8615 Pavilion Laptop 15-cw1xxx -+# Rev 29, uses r8169 Driver on Linux -+ 103c 8882 HP ProDesk 405 G8 Desktop Mini PC - 1043 11f5 Notebook motherboard (one of many models) - 1043 16d5 U6V/U31J laptop - 1043 81aa P5B -@@ -13699,6 +13771,8 @@ - 9082 Standard AHCI 1.0 SATA Controller - 9140 HDMI Audio Device - 9201 USB3.0 Controller -+# Centaur CNS Coprocessor -+ 9380 Ncore Coprocessor - 9530 VX800/820/900 Series Secure Digital Memory Card Controller - 95d0 VX800/820/900 Series SDIO Host Controller - a208 PT890 PCI to PCI Bridge Controller -@@ -16795,6 +16869,7 @@ - # PI7C9X20508GP 5Port-8Lane PCI Express Switch GreenPacket Family - 0508 PI7C9X20508GP PCI Express Switch 5Port-8Lane - 2304 PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch -+ 2308 PI7C9X2G308GP 8-lane PCI Express 2.0 Switch with 3 PCI Express ports - 2404 PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch - 2608 PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch - ea50 cc10 RXi2-BP -@@ -17454,6 +17529,8 @@ - 13a3 0036 DX1730 Acceleration Card - 0037 8204 Acceleration Processor - 13a3 0036 DX1740 Acceleration Card -+ 9240 XR9240 Compression and Security Coprocessor [Panther II] -+ 13a3 9200 DX2040 Compression and Security Acceleration Card [Panther II] - 13a4 Rascom Inc - 13a5 Audio Digital Imaging Inc - 13a6 Videonics Inc -@@ -19077,11 +19154,15 @@ - 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) - 14c2 DTK Computer - 14c3 MEDIATEK Corp. -+ 0608 RZ608 Wi-Fi 6E 80MHz -+ 0616 MT7922 802.11ax PCI Express Wireless Network Adapter - 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter -+ 7615 MT7615E 802.11ac PCI Express Wireless Network Adapter - 7630 MT7630e 802.11bgn Wireless Network Adapter - # MT7612E too? - 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter - 7915 MT7915E 802.11ax PCI Express Wireless Network Adapter -+ 7961 MT7921 802.11ax PCI Express Wireless Network Adapter - 14c4 IWASAKI Information Systems Co Ltd - 14c5 Automation Products AB - 14c6 Data Race Inc -@@ -19424,6 +19505,10 @@ - 1259 2708 AT-2712 FX - # The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. - 168a NetXtreme II BCM57800 1/10 Gigabit Ethernet -+# SFP+ ports -+ 1014 0493 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) -+# RJ-45 ports -+ 1014 0494 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) - 1028 1f5c BCM57800 10-Gigabit Ethernet - 1028 1f5d BCM57800 10-Gigabit Ethernet - 1028 1f67 BCM57800 1-Gigabit Ethernet -@@ -20635,6 +20720,7 @@ - 07b0 VMXNET3 Ethernet Controller - 07c0 PVSCSI SCSI Controller - 07e0 SATA AHCI controller -+ 07f0 NVMe SSD Controller - 0801 Virtual Machine Interface - 15ad 0800 Hypervisor ROM Interface - 0820 Paravirtual RDMA controller -@@ -20668,6 +20754,8 @@ - 021d MT43244 Family [BlueField-3 Secure Flash Recovery] - 021e CX8 Family [ConnectX-8 Flash Recovery] - 021f CX8 Family [ConnectX-8 Secure Flash Recovery] -+ 0220 BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery] -+ 0221 BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery] - 024e MT53100 [Spectrum-2, Flash recovery mode] - 024f MT53100 [Spectrum-2, Secure Flash recovery mode] - 0250 Spectrum-3, Flash recovery mode -@@ -20679,6 +20767,7 @@ - 0256 Abir GearBox - 0257 Quantum-2 in Flash Recovery Mode - 0258 Quantum-2 RMA -+ 0259 Abir Chiplet - 0262 MT27710 [ConnectX-4 Lx Programmable] EN - 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN - 0264 Innova-2 Flex Burn image -@@ -20686,6 +20775,7 @@ - 0271 Spectrum-4L, RMA - 0274 Spectrum-4C, Flash recovery mode - 0275 Spectrum-4C RMA -+ 0277 Spectrum-4TOR RMA - 0281 NPS-600 Flash Recovery - 1002 MT25400 Family [ConnectX-2 Virtual Function] - 1003 MT27500 Family [ConnectX-3] -@@ -20857,10 +20947,14 @@ - a2da MT43244 BlueField-3 SoC Crypto enabled - a2db MT43244 BlueField-3 SoC Crypto disabled - a2dc MT43244 BlueField-3 integrated ConnectX-7 network controller -+ a2dd BF4 Family Crypto enabled [BlueField-4 SoC Crypto enabled] -+ a2de BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled] -+ a2df BF4 Family integrated network controller [BlueField-4 integrated network controller] - c2d2 MT416842 BlueField SoC management interfac - c2d3 MT42822 BlueField-2 SoC Management Interface - c2d4 MT43162 BlueField-3 Lx SoC Management Interface - c2d5 MT43244 BlueField-3 SoC Management Interface -+ c2d6 BF4 Family Management Interface [BlueField-4 SoC Management Interface] - # SwitchX-2, 40GbE switch - c738 MT51136 - c739 MT51136 GW -@@ -20956,8 +21050,9 @@ - 15cc Hotrail Inc - 15cd Dreamtech Co Ltd - 15ce Genrad Inc --15cf Hilscher GmbH -- 0000 CIFX 50E-DP(M/S) -+# https://www.hilscher.com/imprint/ -+15cf Hilscher Gesellschaft für Systemautomation mbH -+ 0000 CIFX PCI/PCIe - 15d1 Infineon Technologies AG - 15d2 FIC (First International Computer Inc) - 15d3 NDS Technologies Israel Ltd -@@ -21819,6 +21914,32 @@ - a036 ThunderX RAD (RAID acceleration engine) virtual function - a037 THUNDERX ZIP virtual function - a040 THUNDERX CPT Cryptographic Accelerator -+# MAC found on OcteonTx2 series of silicons -+ a059 Octeon TX2 CGX (MAC) -+# MAC found on Octeon 10 series of silicons -+ a060 Octeon 10 RPM (MAC) -+# Octeon Tx2 Loopback Interface block -+ a061 Octeon Tx2 Loopback Interface (LBK) -+# Octeon Tx2 Resource Virtualization Unit Physical Function -+ a063 Octeon Tx2 RVU Physical Function -+# Octeon Tx2 Resource Virtualization Unit Virtual Function -+ a064 Octeon Tx2 RVU Virtual Function -+# Octeon Tx2 Resource Virtualization Unit Admin Function -+ a065 Octeon Tx2 RVU Admin Function -+# PTP Timestamping unit on Octeon 10 silicon series -+ a09e Octeon 10 PTP controller -+# Cryptographic Accelerator found on Octeon 10 series of silicons -+ a0f2 Octeon 10 CPT Cryptographic Accelerator, Physical function -+ a0f3 Octeon 10 CPT Cryptographic Accelerator, Virtual function -+# Octeon Tx2 System DPI Interface (SDP) Physical Function -+ a0f6 Octeon Tx2 SDP Physical Function -+# Octeon Tx2 System DPI Interface (SDP) Virtual Function -+ a0f7 Octeon Tx2 SDP Virtual Function -+ a0f8 Octeon Tx2 Loopback Interface Virtual Function (LBKVF) -+# Cryptographic Accelerator found on OcteonTx2 series of silicons -+ a0fd Octeon Tx2 CPT Cryptographic Accelerator, Physical function -+# Cryptographic Accelerator found on OcteonTx2 series of silicons -+ a0fe Octeon Tx2 CPT Cryptographic Accelerator, Virtual function - a100 THUNDERX CN88XX 48 core SoC - a200 OCTEON TX CN81XX/CN80XX - a300 OCTEON TX CN83XX -@@ -21933,6 +22054,8 @@ - 0401 Datacenter Technologies QDF2400 PCI Express Root Port - 1000 QCS405 PCIe Root Complex - 1101 QCA6390 Wireless Network Adapter [AX500-DBS (2x2)] -+ 1103 Atheros QCNFA765 -+ 1104 QCN6024/9024/9074 Wireless Network Adapter - 17cc NetChip Technology, Inc - 2280 USB 2.0 - 17cd Cadence Design Systems, Inc. -@@ -22806,6 +22929,10 @@ - 0011 FlexCard PMC-II Ethernet - 0018 FlexCard PXIe3 - 0019 FlexCard PCIe3 -+# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) -+ 001a FlexCard PXIe Ethernet -+# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) -+ 001b FlexCard PCIe Ethernet - 1976 TRENDnet - 1977 Parsec - 197b JMicron Technology Corp. -@@ -23137,6 +23264,11 @@ - 1aa8 Ciprico, Inc. - 0009 RAIDCore Controller - 000a RAIDCore Controller -+1aa9 Schweitzer Engineering Laboratories -+ 000d SEL-3390S8 Serial Adapter -+ 000e SEL-3390E4 Ethernet Adapter -+ 0014 SEL-3390T Time and Ethernet Adapter -+ 0018 SEL-3390E4 Ethernet Adapter - 1aae Global Velocity, Inc. - 1ab4 Distributed Management Task Force, Inc. (DMTF) - 1ab6 CalDigit, Inc. -@@ -23207,6 +23339,8 @@ - 0a58 microEnable 5 VD8-CL - # CameraLink frame grabber - 0a5a microEnable 5 AD8-CL -+# CoaXpress frame grabber -+ 0a64 imaWorx CXP-12 Quad - # OEM product - 0b52 mE5 Abacus 4G Base - # OEM product -@@ -23311,12 +23445,15 @@ - 1080 ASM1083/1085 PCIe to PCI Bridge - 1849 1080 Motherboard - 1142 ASM1042A USB 3.0 Host Controller -+ 1166 ASM1166 Serial ATA Controller - 1182 ASM1182e 2-Port PCIe x1 Gen2 Packet Switch - 1b21 118f ASM1182e 2-Port PCIe x1 Gen2 Packet Switch - 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch - 1849 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch -+ 1187 ASM1187e 7-Port PCIe x1 Gen2 Packet Switch - 1242 ASM1142 USB 3.1 Host Controller - 1343 ASM1143 USB 3.1 Host Controller -+ 1812 ASM1812 6-Port PCIe x4 Gen2 Packet Switch - 2142 ASM2142 USB 3.1 Host Controller - 1462 7a72 H270 PC MATE - 2824 ASM2824 PCIe Gen3 Packet Switch -@@ -23392,6 +23529,8 @@ - 2241 88NR2241 Non-Volatile memory controller - 1028 2112 BOSS-N1 Monolithic - 1028 2113 BOSS-N1 Modular -+ 1028 2151 BOSS-N1 Modular ET -+ 1028 2196 ROR-N100 - 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit - 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit - 9120 88SE9120 SATA 6Gb/s Controller -@@ -23401,6 +23540,7 @@ - 9128 88SE9128 PCIe SATA 6 Gb/s RAID controller - 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo - 1043 8438 P8P67 Deluxe Motherboard -+ 9170 88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller - 9172 88SE9172 SATA 6Gb/s Controller - 9178 88SE9170 PCIe SATA 6Gb/s Controller - 917a 88SE9172 SATA III 6Gb/s RAID Controller -@@ -23532,9 +23672,22 @@ - 1bb1 0151 Nytro 5520 - # Kersey 2.5" TCG - 1bb1 0152 Nytro 5520 TCG -+# Nytro 5050H (Ebonhawk - High Performance) -+ 1bb1 0153 Nytro 5050H -+# Nytro 5050H TCG (Ebonhawk High Performance) -+ 1bb1 0154 Nytro 5050H TCG -+# Nytro 5050M (Ebonhawk Mainstream Performance) -+ 1bb1 0155 Nytro 5050M -+# Nytro 5050M TCG (Ebonhawk Mainstream Performance) -+ 1bb1 0156 Nytro 5050M TCG -+# Nytro 5050M (Ebonhawk Mainstream Performance) - 7mm -+ 1bb1 0157 Nytro 5050M 7mm -+# Nytro 5050M (Ebonhawk Mainstream Performance) TCG - 7mm -+ 1bb1 0158 Nytro 5050M TCG 7mm - 1bb1 01a1 Nytro XP7102 - 5012 FireCuda 510 SSD - 5016 FireCuda 520 SSD -+ 5018 FireCuda 530 SSD - 1bb3 Bluecherry - 4304 BC-04120A MPEG4 4 port video encoder / decoder - 4309 BC-08240A MPEG4 4 port video encoder / decoder -@@ -23688,8 +23841,22 @@ - 1028 2149 DC NVMe SED PE8010 RI U.2 7.68TB - 1028 214a DC NVMe PE8010 RI U.2 7.68TB - 1c5c 0100 PE8000 Series NVMe Solid State Drive -+ 2849 PE81x0 U.2/3 NVMe Solid State Drive - 1c5f Beijing Memblaze Technology Co. Ltd. - 000d PBlaze5 520/526 -+ 000e PBlaze6 6530 -+ 1c5f 0b20 NVMe SSD PBlaze6 6530 1920G AIC -+ 1c5f 0b21 NVMe SSD PBlaze6 6530 1920G 2.5" U.2 -+ 1c5f 0b30 NVMe SSD PBlaze6 6530 3840G AIC -+ 1c5f 0b31 NVMe SSD PBlaze6 6530 3840G 2.5" U.2 -+ 1c5f 0b40 NVMe SSD PBlaze6 6530 7680G AIC -+ 1c5f 0b41 NVMe SSD PBlaze6 6530 7680G 2.5" U.2 -+ 1c5f 4b20 NVMe SSD PBlaze6 6530 1600G AIC -+ 1c5f 4b21 NVMe SSD PBlaze6 6530 1600G 2.5" U.2 -+ 1c5f 4b30 NVMe SSD PBlaze6 6530 3200G AIC -+ 1c5f 4b31 NVMe SSD PBlaze6 6530 3200G 2.5" U.2 -+ 1c5f 4b40 NVMe SSD PBlaze6 6530 6400G AIC -+ 1c5f 4b41 NVMe SSD PBlaze6 6530 6400G 2.5" U.2 - 003d PBlaze5 920/926 - 003e PBlaze6 6920 - 1c5f 0a31 NVMe SSD PBlaze6 6920 3840GB 2.5" U.2 -@@ -23738,6 +23905,8 @@ - 0002 Clarett - 1cb8 Dawning Information Industry Co., Ltd. - 1cc1 ADATA Technology Co., Ltd. -+# 256GB NVMe SSD -+ 5766 ADATA XPG GAMMIXS1 1L Media - 8201 XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive - 1cc4 Union Memory (Shenzhen) - 1203 NVMe SSD Controller UHXXXa series -@@ -23751,6 +23920,7 @@ - 1cc4 a213 NVMe SSD UHXXXa series U.2 3200GB - 1cc4 a214 NVMe SSD UHXXXa series U.2 6400GB - 17ab NVMe 256G SSD device -+ 6303 AM630 PCIe 4.0 x4 NVMe SSD Controller - 1cc5 Embedded Intelligence, Inc. - 0100 CAN-PCIe-02 - 1cc7 Radian Memory Systems Inc. -@@ -23946,6 +24116,7 @@ - 101c AR-ARK-SRIOV-VF [Arkville Virtual Function] - 101d AR-ARK-NIC [Arkville ArkNIC Kernel Path Device] - 101e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] -+ 101f AR-TK242 [2x100GbE Packet Capture Device] - 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] - 1d72 Xiaomi - 1d78 DERA Storage -@@ -24157,6 +24328,9 @@ - 2000 NoLoad Hardware Development Kit - 3000 eBPF-based PCIe Accelerator - 1ded Alibaba (China) Co., Ltd. -+# A RDMA (iWarp) device provided by Alibaba Cloud used in ECS environment -+ 107f Elastic RDMA Adapter -+ 5007 Elastic RDMA Adapter - 8000 M1 Root Port - 8001 ACC-RCiEP - 8002 RCiEP VF -@@ -24264,9 +24438,20 @@ - 1028 210e Dell Ent NVMe FIPS CM6 MU 1.6TB - 1028 210f Dell Ent NVMe FIPS CM6 MU 3.2TB - 1028 2110 Dell Ent NVMe FIPS CM6 MU 6.4TB -- 1e0f 0001 Generic NVMe CM6 RI 3.84TB -+ 1e0f 0001 Generic NVMe CM6 - 0009 NVMe SSD - 1e0f 0001 Toshiba RC500 NVMe SSD 500GB -+ 0011 NVMe SSD Controller CD7 -+ 1028 2189 DC NVMe SED CD7 RI 960GB -+ 1028 218a DC NVMe CD7 RI 960GB -+ 1028 218b DC NVMe SED CD7 RI 1.92TB -+ 1028 218c DC NVMe CD7 RI 1.92TB -+ 1028 218d DC NVMe SED CD7 RI 3.84TB -+ 1028 218e DC NVMe CD7 RI 3.84TB -+ 1028 218f DC NVMe SED CD7 RI 7.68TB -+ 1028 2190 DC NVMe CD7 RI 7.68TB -+ 1028 2191 DC NVMe SED CD7 RI 15.36TB -+ 1028 2192 DC NVMe CD7 RI 15.36TB - 1e17 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG - 1e24 Squirrels Research Labs - 0101 Acorn CLE-101 -@@ -24296,7 +24481,7 @@ - 0102 Xplorer X1600 - # https://www.medion.com/ - 1e39 MEDION AG --1e3b Shenzhen DAPU Microelectronics Co., Ltd -+1e3b DapuStor Corporation - 0600 NVMe SSD Controller DPU600 - 1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100) - 1e3b 0031 Enterprise NVMe SSD U.2 7.68TB (J5100) -@@ -24359,6 +24544,7 @@ - 1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900) - 1e3d Burlywood, Inc - 1e49 Yangtze Memory Technologies Co.,Ltd -+ 0041 ZHITAI TiPro7000 - # YMTC PCIe/NVMe SSD - 1013 PC210 - 1e4b MAXIO Technology (Hangzhou) Ltd. -@@ -24377,6 +24563,9 @@ - 0000 0100 PY8800 64GB Accelerator - 1e59 Oxford Nanopore Technologies - 0001 MinION Mk1C -+1e5d ASR Microelectronics -+ 7000 AI controller A7000 -+ 7010 AI controller A7010 - 1e60 Hailo Technologies Ltd. - 2864 Hailo-8 AI Processor - 1e68 Jiangsu Xinsheng Intelligent Technology Co., Ltd -@@ -24414,14 +24603,22 @@ - 1eab Hefei DATANG Storage Technology Co.,LTD. - 300a NVMe SSD Controller 300A - 300b NVMe SSD Controller 300B -+1eac Quectel Wireless Solutions Co., Ltd. -+ 1001 EM120R-GL LTE Modem -+ 1002 EM160R-GL LTE Modem - 1eae XFX Limited - 1eb1 VeriSilicon Inc - 1001 Video Accelerator -+1eb4 Quantum Nebula Microelectronics Technology Co.,Ltd. -+ 3401 SSD Contoller - 1ebd EMERGETECH Company Ltd. - 0101 Seirios 2063 Video Codec - 1ed2 FuriosaAI, Inc. - 0000 Warboy - 1ed3 Yeston -+1ed5 Moore Threads Technology Co.,Ltd -+ 0100 MTT S10 -+ 0101 MTT S30 - 1ed8 Digiteq Automotive - 0101 FG4 PCIe Frame Grabber - 1ed9 Myrtle.ai -@@ -24439,6 +24636,13 @@ - 5220 IG5220-Based NVMe SSD - 5236 IG5236-Based NVMe SSD - 5636 IG5636-Based NVMe SSD -+1f2f China Mobile (Hangzhou) Information Technology Co.Ltd. -+ 1513 DERA MENG NVMe Controller -+ 1f2f 6113 KM660 U.2 1.6TB NVMe SSD -+ 1f2f 6114 KM560 U.2 1.92TB NVMe SSD -+ 1f2f 6115 KM660 U.2 3.2TB NVMe SSD -+ 1f2f 6116 KM560 U.2 3.84TB NVMe SSD -+ 1f2f 6118 KM560 U.2 7.68TB NVMe SSD - 1fab Unifabrix Ltd. - 0000 Nexus Alpha IVPU - # nee Tumsan Oy -@@ -25182,6 +25386,12 @@ - 1400 CooVOX TDM GSM Module - 1600 CooVOX TDM E1/T1 Module - 1800 CooVOX TDM BRI Module -+6766 Glenfly Tech Co., Ltd. -+ 3d00 Arise-GT-10C0 -+ 3d02 Arise 1020 -+ 3d40 Arise-GT-10C0 High Definition Audio Controller -+ 3d41 Arise 1020 High Definition Audio Controller -+6899 ZT Systems - # nee Qumranet - 6900 Red Hat, Inc. - 7063 pcHDTV -@@ -25194,6 +25404,9 @@ - 7401 EndRun Technologies - e100 PTP3100 PCIe PTP Slave Clock - 7470 TP-LINK Technologies Co., Ltd. -+7526 HongQin (Beijing) Technology Co., Ltd. -+ 0082 HQ SSD 1TB -+ 0083 HQ SSD 2TB M.2 NVMe - 7604 O.N. Electronic Co Ltd. - 7bde MIDAC Corporation - 7fed PowerTV -@@ -26006,6 +26219,12 @@ - 1028 2102 NVMe RI U.2 1.92TB (P5500) - 1028 2103 NVMe RI U.2 3.84TB (P5500) - 1028 2104 NVMe RI U.2 7.68TB (P5500) -+ 1028 219a NVMe P5316 RI 15.36TB -+ 1028 219b NVMe P5316 RI 30.72TB -+ 1028 219c NVMe SED P5316 RI 15.36 -+ 1028 219d NVMe SED P5316 RI 30.72 -+ 1028 219e NVMe FIPS P5316 RI 15.36TB -+ 1028 219f NVMe FIPS P5316 RI 30.72 - 8086 8008 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510) - 8086 8d08 NVMe Datacenter SSD [3DNAND] VE 2.5" U.2 (P5316) - 8086 8d1d NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316) -@@ -26114,8 +26333,15 @@ - 8086 0001 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - 0d9f Ethernet Controller (2) I225-IT - 0dd2 Ethernet Network Adapter I710 -+ 1137 0000 I710T4LG 4x1 GbE RJ45 PCIe NIC -+ 1137 02e3 I710T4LG 4x1 GbE RJ45 PCIe NIC -+ 8086 0000 Ethernet Network Adapter I710-T4L - 8086 000d Ethernet Network Adapter I710-T4L - 8086 0010 Ethernet Network Adapter I710-T4L for OCP 3.0 -+ 8086 401a Ethernet Network Adapter I710-T4L -+ 8086 401b Ethernet Network Adapter I710-T4L for OCP 3.0 -+ 0dda Ethernet Connection X722 for 10GbE SFP+ -+ 1bd4 0076 Ethernet Connection X722 for 10GbE SFP+ - 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 - 1028 04f7 Xeon E5 v2 on PowerEdge R320 server - 15d9 066b X9SRL-F -@@ -27466,6 +27692,7 @@ - 8086 000c Ethernet 100G 2P E810-C OCP - 8086 000d Ethernet Network Adapter E810-L-Q2 for OCP 3.0 - 8086 000e Ethernet Network Adapter E810-2C-Q2 -+ 8086 0010 Ethernet 100G 2P E810-C-stg Adapter - 1593 Ethernet Controller E810-C for SFP - 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC - 8086 0002 Ethernet Network Adapter E810-L-2 -@@ -27478,7 +27705,10 @@ - 8086 000c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 - 8086 000d Ethernet 25G 4P E810-XXV OCP - 8086 000e Ethernet Network Adapter E810-XXV-4T -+ 8086 000f Ethernet 25G 4P E810-XXV-stg Adapter -+ 8086 0010 Ethernet 25G 4P E810-XXV-st Adapter - 1599 Ethernet Controller E810-XXV for backplane -+ 8086 0001 Ethernet 25G 2P E810-XXV-k Mezz - 159a Ethernet Controller E810-XXV for QSFP - 159b Ethernet Controller E810-XXV for SFP - 1137 02be E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC -@@ -31187,6 +31417,7 @@ - 3432 5520/5500/X58 Chipset QuickData Technology Device - 3433 5520/5500/X58 Chipset QuickData Technology Device - 3438 7500/5520/5500/X58 I/O Hub Throttle Registers -+ 347e Ice Lake Xeon Non-Transparent Bridge - 3482 Ice Lake-LP LPC Controller - 34a3 Ice Lake-LP SMBus Controller - 34a4 Ice Lake-LP SPI Controller -@@ -31997,8 +32228,10 @@ - 8086 02a4 Wireless-AC 9462 - 444e Turbo Memory Controller - 460d 12th Gen Core Processor PCI Express x16 Controller #1 -+ 461d Alder Lake Innovation Platform Framework Processor Participant - 461e Alder Lake-P Thunderbolt 4 USB Controller - 461f Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 -+ 4626 Alder Lake-P Integrated Graphics Controller - 4629 12th Gen Core Processor Host Bridge/DRAM Registers - 462f Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 - 463d 12th Gen Core Processor PCI Express x4 Controller #2 -@@ -32007,6 +32240,7 @@ - 4641 12th Gen Core Processor Host Bridge/DRAM Registers - 464d 12th Gen Core Processor PCI Express x4 Controller #0 - 464f 12th Gen Core Processor Gaussian & Neural Accelerator -+ 4660 12th Gen Core Processor Host Bridge/DRAM Registers - 466d Alder Lake-P Thunderbolt 4 NHI #1 - 466e Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 - 467d Platform Monitoring Technology -@@ -32015,6 +32249,7 @@ - 46a0 AlderLake-P GT2 - 46a1 UHD Graphics - 46a3 Alder Lake-P GT1 [UHD Graphics] -+ 46a6 Alder Lake-P Integrated Graphics Controller - 46c0 AlderLake-M GT1 - 4905 DG1 [Iris Xe MAX Graphics] - 4906 DG1 [Iris Xe Pod] -@@ -32026,8 +32261,9 @@ - 4c8b RocketLake-S GT1 [UHD Graphics 730] - 4c90 RocketLake-S GT1 [UHD Graphics P750] - 4c9a RocketLake-S [UHD Graphics] -- 4da3 JaserLake SMBus -- 4da4 JaserLake SPI (flash) Controller -+ 4da3 Jasper Lake SMBus -+ 4da4 Jasper Lake SPI Controller -+ 4dc8 Jasper Lake HD Audio - 4de0 Management Engine Interface - 4de8 Serial IO I2C Host Controller - 4de9 Serial IO I2C Host Controller -@@ -32088,8 +32324,11 @@ - 504b EP80579 Reserved - 504c EP80579 Integrated Processor with QuickAssist TDM - 5181 Alder Lake PCH-P LPC/eSPI Controller -+ 5182 Alder Lake PCH eSPI Controller - 51a3 Alder Lake PCH-P SMBus Host Controller - 51a4 Alder Lake-P PCH SPI Controller -+ 51a8 Alder Lake PCH UART #0 -+ 51a9 Alder Lake PCH UART #1 - 51bf Alder Lake PCH-P PCI Express Root Port #9 - 51c5 Alder Lake-P Serial IO I2C Controller #0 - 51c6 Alder Lake-P Serial IO I2C Controller #1 -@@ -32471,6 +32710,20 @@ - 10b4 202f Lightspeed 740 - 8086 0000 Terminator 2x/i - 8086 0100 Intel740 Graphics Accelerator -+# Unlike other PCH components. The eSPI controller is specific to each chipset model -+ 7a84 Z690 Chipset LPC/eSPI Controller -+ 7aa3 Alder Lake-S PCH SMBus Controller -+ 7aa4 Alder Lake-S PCH SPI Controller -+ 7aa7 Alder Lake-S PCH Shared SRAM -+ 7ab4 Alder Lake-S PCH PCI Express Root Port #13 -+ 7abd Alder Lake-S PCH PCI Express Root Port #6 -+ 7acc Alder Lake-S PCH I2C Controller #0 -+ 7ad0 Alder Lake-S HD Audio Controller -+ 7ae0 Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller -+ 7ae2 Alder Lake-S PCH SATA Controller [AHCI Mode] -+ 7ae8 Alder Lake-S PCH HECI Controller #1 -+ 7af0 Alder Lake-S PCH CNVi WiFi -+ 8086 0094 Wi-Fi 6 AX201 160MHz - 8002 Trusted Execution Technology Registers - 8003 Trusted Execution Technology Registers - 8100 US15W/US15X SCH [Poulsbo] Host Bridge -@@ -32840,6 +33093,7 @@ - 1028 09be Latitude 7410 - 9b63 10th Gen Core Processor Host Bridge/DRAM Registers - 9b64 10th Gen Core Processor Host Bridge/DRAM Registers -+ 9ba8 CometLake-S GT1 [UHD Graphics 610] - 9bc4 CometLake-H GT2 [UHD Graphics] - 9bc5 CometLake-S GT2 [UHD Graphics 630] - 9bc8 CometLake-S GT2 [UHD Graphics 630] -@@ -33040,6 +33294,7 @@ - 9d3d Sunrise Point-LP Active Management Technology - SOL - 103c 8079 EliteBook 840 G3 - 17aa 2247 ThinkPad T570 -+ 9d3e iTouch Controller - 9d43 Sunrise Point-LP LPC Controller - 17aa 382a B51-80 Laptop - 9d46 LPC/eSPI Controller -@@ -33094,6 +33349,7 @@ - 9da4 Cannon Point-LP SPI Controller - 9da8 Cannon Point-LP Serial IO UART Controller #2 - 9daa Cannon Point-LP Serial IO SPI Controller -+ 9dab Cannon Point-LP Serial IO SPI Controller - 9db0 Cannon Point-LP PCI Express Root Port #9 - 9db1 Cannon Point-LP PCI Express Root Port #10 - 9db2 Cannon Point-LP PCI Express Root Port #1 -@@ -33104,6 +33360,7 @@ - 9dbc Cannon Point-LP PCI Express Root Port #5 - 9dbe Cannon Point-LP PCI Express Root Port #7 - 9dbf Cannon Point PCI Express Root Port #8 -+ 9dc4 Cannon Point-LP SD Host Controller - 9dc5 Cannon Point-LP Serial IO I2C Host Controller - 9dc8 Cannon Point-LP High Definition Audio Controller - 1028 089e Inspiron 5482 -@@ -33467,7 +33724,7 @@ - a397 Comet Lake PCI Express Root Port #08 - a398 Comet Lake PCI Express Root Port 9 - a39a Comet Lake PCI Express Root Port 11 -- a3a1 Memory controller -+ a3a1 Cannon Lake PCH Power Management Controller - a3a3 Comet Lake PCH-V SMBus Host Controller - a3af Comet Lake PCH-V USB Controller - a3b1 Comet Lake PCH-V Thermal Subsystem -@@ -33958,6 +34215,8 @@ - 1bd4 0070 RS0800M5E24i - 1bd4 0071 RS0800M5H16i - 1bd4 0072 RS0800M5E16i -+ 1cc4 0101 Ramaxel FBGF-RAD PM8204 -+ 1cc4 0201 Ramaxel FBGF-RAD PM8222 - 1d49 0220 ThinkSystem 4350-8i SAS/SATA 12Gb HBA - 1d49 0221 ThinkSystem 4350-16i SAS/SATA 12Gb HBA - 1d49 0520 ThinkSystem RAID 5350-8i PCIe 12Gb Adapter -@@ -34244,6 +34503,8 @@ cddd Tyzx, Inc. - 0101 DeepSea 1 High Speed Stereo Vision Frame Grabber - 0200 DeepSea 2 High Speed Stereo Vision Frame Grabber - ceba KEBA AG -+cf86 Spectrum-4TOR -+ 0276 Spectrum-4TOR in Flash Recovery Mode - d161 Digium, Inc. - 0120 Wildcard TE120P single-span T1/E1/J1 card - 0205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V -@@ -34728,8 +34989,7 @@ C 11 Signal processing controller - 80 Signal processing controller - C 12 Processing accelerators - 00 Processing accelerators --# For the class of PCI attached devices which perform a function of Deep Learning Neural Network inference acceleration -- 01 AI Inference Accelerator -+ 01 SNIA Smart Data Accelerator Interface (SDXI) controller - C 13 Non-Essential Instrumentation - C 40 Coprocessor - C ff Unassigned class -diff --git a/hwdb.d/pnp_id_registry.html b/hwdb.d/pnp_id_registry.html -index 9b98e18c66..a1d6f63bcd 100644 ---- a/hwdb.d/pnp_id_registry.html -+++ b/hwdb.d/pnp_id_registry.html -@@ -2499,6 +2499,9 @@ - Kopin CorporationKOP10/01/2021 - Anker Innovations LimitedAKR12/10/2021 - SAMPO CORPORATIONSPO12/10/2021 -+ Shiftall Inc.SFL12/31/2021 -+ AudioControlAUD12/31/2021 -+ Schneider Consumer GroupSCA02/08/2022 - - - -diff --git a/hwdb.d/usb.ids b/hwdb.d/usb.ids -index 1b9f9f82ba..d02e59f5e2 100644 ---- a/hwdb.d/usb.ids -+++ b/hwdb.d/usb.ids -@@ -9,8 +9,8 @@ - # The latest version can be obtained from - # http://www.linux-usb.org/usb.ids - # --# Version: 2021.10.24 --# Date: 2021-10-24 20:34:08 -+# Version: 2022.03.18 -+# Date: 2022-03-18 20:34:09 - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -2712,6 +2712,8 @@ - 0845 ConferenceCam CC3000e Camera - 0846 ConferenceCam CC3000e Speakerphone - 084b ConferenceCam Connect Video -+ 084c ConferenceCam Connect Audio -+ 084e ConferenceCam Connect - 0850 QuickCam Web - 0857 Logi Group Speakerphone - 085c C922 Pro Stream Webcam -@@ -2764,7 +2766,7 @@ - 08d7 QuickCam Communicate STX - 08d8 QuickCam for Notebook Deluxe - 08d9 QuickCam IM/Connect -- 08da QuickCam Messanger -+ 08da QuickCam Messenger - 08dd QuickCam for Notebooks - 08e0 QuickCam Express - 08e1 Labtec Webcam -@@ -2903,7 +2905,7 @@ - c06a USB Optical Mouse - c06b G700 Wireless Gaming Mouse - c06c Optical Mouse -- c077 M105 Optical Mouse -+ c077 Mouse - c07c M-R0017 [G700s Rechargeable Gaming Mouse] - c07d G502 Mouse - c07e G402 Gaming Mouse -@@ -2911,7 +2913,7 @@ - c083 G403 Prodigy Gaming Mouse - c084 G203 Gaming Mouse - c08b G502 SE HERO Gaming Mouse -- c092 G203 LIGHTSYNC Gaming Mouse -+ c092 G102/G203 LIGHTSYNC Gaming Mouse - c101 UltraX Media Remote - c110 Harmony 785/880/885 Remote - c111 Harmony 525 Remote -@@ -3060,6 +3062,7 @@ - c532 Unifying Receiver - c534 Unifying Receiver - c537 Cordless Mouse Receiver -+ c539 Cordless Mouse Receiver - c53a PowerPlay Wireless Charging System - c53d G631 Keyboard - c603 3Dconnexion Spacemouse Plus XT -@@ -19572,10 +19575,11 @@ - 5512 CH341 in EPP/MEM/I2C mode, EPP/I2C adapter - 5523 CH341 in serial mode, usb to serial port converter - 5584 CH341 in parallel mode, usb to printer port converter -+ 7522 CH340 serial converter - 7523 CH340 serial converter - 752d CH345 MIDI adapter - 7584 CH340S -- e008 HID-based serial adapater -+ e008 HID-based serial adapter - 1a89 Dynalith Systems Co., Ltd. - 1a8b SGS Taiwan Ltd. - 1a8d BandRich, Inc. -@@ -20338,7 +20342,7 @@ - 6052 APB Team Robotic Development Board - 6053 Darkgame Controller - 6054 Satlab/AAUSAT3 BlueBox -- 6055 RADiuS ER900TRS-02 transciever with SMA Connector -+ 6055 RADiuS ER900TRS-02 transceiver with SMA Connector - 6056 The Glitch - 6057 OpenPipe MIDI Shield - 6058 Novena OTG port -@@ -20475,10 +20479,10 @@ - 60ec Duet 2 WiFi or Duet 2 Ethernet 3D printer control electronics - 60ed Duet 2 Maestro 3D printer control electronics - 60ee Duet 3 motion control electronics -- 60f0 UDAD-T1 data aquisition device (boot) -- 60f1 UDAD-T1 data aquisition device -- 60f2 UDAD-T2 data aquisition device (boot) -- 60f3 UDAD-T2 data aquisition device -+ 60f0 UDAD-T1 data acquisition device (boot) -+ 60f1 UDAD-T1 data acquisition device -+ 60f2 UDAD-T2 data acquisition device (boot) -+ 60f3 UDAD-T2 data acquisition device - 60f4 Uniti ARC motor controller - 60f5 EightByEight Blinky Badge (DFU) - 60f6 EightByEight Blinky Badge -@@ -20494,6 +20498,7 @@ - 6118 Thomson MO5 keyboard - 6122 Ultimate Hacking Keyboard - 614c dwtk In-Circuit Emulator -+ 614d Generic Display - 8085 Box0 (box0-v5) - cc15 rad1o badge for CCC summer camp 2015 - 1d57 Xenta -@@ -20511,7 +20516,7 @@ - ad03 [T3] 2.4GHz and IR Air Mouse Remote Control - af01 AUVIO Universal Remote Receiver for PlayStation 3 - af03 Wireless Receiver -- fa20 2.4GHz Wireless Reciever (Mini Keyboard & Mouse) -+ fa20 2.4GHz Wireless Receiver (Mini Keyboard & Mouse) - 1d5b Smartronix, Inc. - 1d5c Fresco Logic - 2000 FL2000/FL2000DX VGA/DVI/HDMI Adapter -@@ -20819,7 +20824,12 @@ - 0001 Wi-Fi Body Scale (WBS01) - 1fba DERMALOG Identification Systems GmbH - 1fbd Delphin Technology AG -- 0001 Expert Key - Data aquisition system -+ 0001 Expert Key - Data acquisition system -+ 0004 MetiOS Device (RNDIS) -+ 0005 Loggito -+ 0006 LoggitoLab 8 AI-RTD -+ 0007 LoggitoLab 8 TC -+ 0008 LoggitoLab 4 AI-RTD 4 TC - 1fc9 NXP Semiconductors - 0003 LPC1343 - 000c LPC4330FET180 [ARM Cortex M4 + M0] (device firmware upgrade mode) -@@ -22644,6 +22654,14 @@ - f190 MSO-19 - f280 MSO-28 - f281 MSO-28 -+3197 Katusha -+ 1001 M151 -+ 1002 M250 -+ 1003 P130 -+ 1004 M130 -+ 1101 P247 -+ 1102 M247 -+ 1103 M348 - 31c9 BeiJing LanXum Computer Technology Co., Ltd. - 1001 Printer - 1301 Black and White Laser Printer -@@ -23238,7 +23256,12 @@ - 0780 CS780 Microphone Input - 07d3 BLOB boot loader firmware - 07dc Bluetooth 4.0* Smart Ready (low energy) -+ 0a66 RealSense 3D Camera (Front F200) -+ 0aa5 RealSense SR300 -+ 0ad2 RealSense D410 -+ 0ad3 RealSense D415 - 0b07 RealSense D435 -+ 0b64 RealSense L515 - 0dad Cherry MiniatureCard Keyboard - 1010 AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter - 110a Bluetooth Controller from (Ericsson P4A) -@@ -23264,6 +23287,7 @@ - 9303 8x930Hx Hub - 9500 CE 9500 DVB-T - 9890 82930 Test Board -+ a36d Host Controller - beef SCM Miniature Card Reader/Writer - c013 Wireless HID Station - dead Galileo -@@ -23278,7 +23302,6 @@ - 0032 AX210 Bluetooth - 0716 Modem Flashloader - 07da Centrino Bluetooth Wireless Transceiver -- 8087 07da Centrino Advanced-N 6235 - 07db Atom C2000 Root Hub - 07dc Bluetooth wireless interface - 07eb Oaktrail tablet diff --git a/SOURCES/0296-hwdb-update-autosuspend-entries.patch b/SOURCES/0296-hwdb-update-autosuspend-entries.patch deleted file mode 100644 index ea3feae..0000000 --- a/SOURCES/0296-hwdb-update-autosuspend-entries.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 67c40c730543daaa6ca87216afb9b777def06167 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 29 Mar 2022 12:22:21 +0200 -Subject: [PATCH] hwdb: update autosuspend entries - -(cherry picked from commit f1589efb7fe4ed71c0f73dded61d5925c06cd71e) - -Related: #2087778 ---- - hwdb.d/60-autosuspend-fingerprint-reader.hwdb | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-autosuspend-fingerprint-reader.hwdb b/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -index 91a0793747..b44e3e328b 100644 ---- a/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -+++ b/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -@@ -148,6 +148,7 @@ usb:v04F3p0C58* - # Supported by libfprint driver elanmoc - usb:v04F3p0C7D* - usb:v04F3p0C7E* -+usb:v04F3p0C82* - ID_AUTOSUSPEND=1 - ID_PERSIST=0 - -@@ -185,7 +186,6 @@ usb:v06CBp00DF* - usb:v06CBp00F9* - usb:v06CBp00FC* - usb:v06CBp00C2* --usb:v06CBp00C9* - usb:v06CBp0100* - usb:v06CBp00F0* - usb:v06CBp0103* -@@ -272,15 +272,19 @@ usb:v06CBp008A* - usb:v06CBp009A* - usb:v06CBp009B* - usb:v06CBp00A2* -+usb:v06CBp00A8* - usb:v06CBp00B7* - usb:v06CBp00BB* - usb:v06CBp00BE* - usb:v06CBp00C4* - usb:v06CBp00CB* -+usb:v06CBp00C9* - usb:v06CBp00D8* - usb:v06CBp00DA* -+usb:v06CBp00DC* - usb:v06CBp00E7* - usb:v06CBp00E9* -+usb:v06CBp00FD* - usb:v0A5Cp5801* - usb:v0A5Cp5805* - usb:v0A5Cp5834* -@@ -292,6 +296,7 @@ usb:v0A5Cp5844* - usb:v0A5Cp5845* - usb:v0BDAp5812* - usb:v10A5p0007* -+usb:v10A5p9200* - usb:v1188p9545* - usb:v138Ap0007* - usb:v138Ap003A* -@@ -309,6 +314,7 @@ usb:v1491p0088* - usb:v16D1p1027* - usb:v1C7Ap0300* - usb:v1C7Ap0575* -+usb:v1C7Ap0576* - usb:v27C6p5042* - usb:v27C6p5110* - usb:v27C6p5117* -@@ -328,7 +334,9 @@ usb:v27C6p55A2* - usb:v27C6p55A4* - usb:v27C6p55B4* - usb:v27C6p5740* -+usb:v27C6p5E0A* - usb:v2808p9338* -+usb:v298Dp2020* - usb:v298Dp2033* - usb:v3538p0930* - ID_AUTOSUSPEND=1 diff --git a/SOURCES/0297-hwdb-drop-boilerplate-about-match-patterns-being-uns.patch b/SOURCES/0297-hwdb-drop-boilerplate-about-match-patterns-being-uns.patch deleted file mode 100644 index 182a097..0000000 --- a/SOURCES/0297-hwdb-drop-boilerplate-about-match-patterns-being-uns.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 24ac19e1816ab2ec93360d346edd16e3f678bf47 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 6 Apr 2022 11:56:05 +0200 -Subject: [PATCH] hwdb: drop boilerplate about match patterns being unstable - -We've had this text since the beginning, but in fact the patterns must be -stable in order for people to create local hwdb entries. And we support that -and can't change the match patterns without being very careful. So let's just -drop the text. - -(cherry picked from commit adbe000e3df5f91572bf4a77a2acd84ff5b87320) - -Related: #2087778 ---- - hwdb.d/60-evdev.hwdb | 5 ----- - hwdb.d/60-input-id.hwdb | 5 ----- - hwdb.d/60-keyboard.hwdb | 5 ----- - hwdb.d/60-sensor.hwdb | 5 ----- - hwdb.d/70-mouse.hwdb | 5 ----- - hwdb.d/70-pointingstick.hwdb | 4 ---- - 6 files changed, 29 deletions(-) - -diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb -index 9fcb4a3ddf..c97cd13557 100644 ---- a/hwdb.d/60-evdev.hwdb -+++ b/hwdb.d/60-evdev.hwdb -@@ -3,11 +3,6 @@ - # The lookup keys are composed in: - # 60-evdev.rules - # --# Note: The format of the "evdev:" prefix match key is a contract between the --# rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily expected to be a stable --# ABI. --# - # Match string formats: - # evdev: - # evdev:name::dmi: -diff --git a/hwdb.d/60-input-id.hwdb b/hwdb.d/60-input-id.hwdb -index 2d5681dea6..802ed9a1e7 100644 ---- a/hwdb.d/60-input-id.hwdb -+++ b/hwdb.d/60-input-id.hwdb -@@ -3,11 +3,6 @@ - # The lookup keys are composed in: - # 60-input-id.rules - # --# Note: The format of the "input-id:" prefix match key is a contract between --# the rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily expected to be a stable --# ABI. --# - # Match string formats: - # id-input:modalias: - # -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index c196a1fd64..7c830fb9b1 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -13,11 +13,6 @@ - # The lookup keys are composed in: - # 60-evdev.rules - # --# Note: The format of the "evdev:" prefix match key is a contract between the --# rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily expected to be a stable --# ABI. --# - # Supported hardware matches are: - # - Generic input devices match: - # evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index ea278913bc..b54539bf53 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -3,11 +3,6 @@ - # The lookup keys are composed in: - # 60-sensor.rules - # --# Note: The format of the "sensor:" prefix match key is a contract between the --# rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily expected to be a stable --# ABI. --# - # Match string formats: - # sensor:modalias::dmi: - # -diff --git a/hwdb.d/70-mouse.hwdb b/hwdb.d/70-mouse.hwdb -index 723d145e34..4084019bde 100644 ---- a/hwdb.d/70-mouse.hwdb -+++ b/hwdb.d/70-mouse.hwdb -@@ -6,11 +6,6 @@ - # The lookup keys are composed in: - # 70-mouse.rules - # --# Note: The format of the "mouse:" prefix match key is a contract between the --# rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily expected to be a stable --# ABI. --# - # Match key format: - # mouse::vp:name:: - # -diff --git a/hwdb.d/70-pointingstick.hwdb b/hwdb.d/70-pointingstick.hwdb -index 6039119b6a..00f28c6034 100644 ---- a/hwdb.d/70-pointingstick.hwdb -+++ b/hwdb.d/70-pointingstick.hwdb -@@ -7,10 +7,6 @@ - # The lookup keys are composed in: - # 60-evdev.rules - # --# Note: The format of the "evdev:" prefix match key is a contract between the --# rules file and the hardware data, it might change in later revisions to --# support more or better matches, it is not necessarily a stable ABI. --# - # Supported hardware matches are: - # - Generic input devices match: - # evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV diff --git a/SOURCES/0298-hwdb-Update-60-keyboard.hwdb-23074.patch b/SOURCES/0298-hwdb-Update-60-keyboard.hwdb-23074.patch deleted file mode 100644 index ee2a858..0000000 --- a/SOURCES/0298-hwdb-Update-60-keyboard.hwdb-23074.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 6575ea8356de2fc9b2aeadca2a8fbe60ef8eb0cf Mon Sep 17 00:00:00 2001 -From: davijosw <82056592+davijosw@users.noreply.github.com> -Date: Mon, 18 Apr 2022 08:51:45 -0300 -Subject: [PATCH] hwdb: Update 60-keyboard.hwdb (#23074) - -Fix Fn+F1 (toggle touchpad) that wasn't working. - -Closes #23058 - -(cherry picked from commit 39cd62c30c2e6bb5ec13ebc1ecf0d37ed015b1b8) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 7c830fb9b1..adf5e9ac35 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -1931,6 +1931,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnViewSonic:pnVPAD10:* - KEYBOARD_KEY_db=prog1 # Home button - KEYBOARD_KEY_dd=back # Second button labeled Back - -+########################################################### -+# Positivo-Vaio -+########################################################### -+# Vaio FE14 -+evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE41F11*:pvr*:* -+ KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad -+ - ########################################################### - # Other - ########################################################### diff --git a/SOURCES/0299-hwdb-60-keyboard-Add-Acer-Aspire-One-AO532h-keymappi.patch b/SOURCES/0299-hwdb-60-keyboard-Add-Acer-Aspire-One-AO532h-keymappi.patch deleted file mode 100644 index ad1870f..0000000 --- a/SOURCES/0299-hwdb-60-keyboard-Add-Acer-Aspire-One-AO532h-keymappi.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e964195c2b0a68a83f265f19e76a2de285bf5768 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Mon, 18 Apr 2022 20:36:39 +0200 -Subject: [PATCH] hwdb: 60-keyboard: Add Acer Aspire One AO532h keymappings - -Add keymappings for the Acer Aspire One AO532h netbook. - -Unmap the brightnesskeys because they send duplicate key events with -the ACPI video bus key events and add a mapping for the bluetooth -on/off hotkey. - -(cherry picked from commit 5e3b8aeef30f8b46669280ecffc178fa43c8bf00) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index adf5e9ac35..2555b8d35a 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -154,6 +154,12 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:* - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*7750G:* - KEYBOARD_KEY_e0=!pageup - -+# Acer Aspire One AO532h -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO532h:* -+ KEYBOARD_KEY_84=bluetooth -+ KEYBOARD_KEY_ce=unknown # Brightness Up, also emitted by acpi-video, ignore -+ KEYBOARD_KEY_ef=unknown # Brightness Down, also emitted by acpi-video, ignore -+ - # Predator PH 315-52 - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnPredator*PH*315-52:* - KEYBOARD_KEY_ef=kbdillumup # Fn+F10 diff --git a/SOURCES/0300-hwdb-60-keyboard-Add-HP-Compaq-KBR0133.patch b/SOURCES/0300-hwdb-60-keyboard-Add-HP-Compaq-KBR0133.patch deleted file mode 100644 index c844d01..0000000 --- a/SOURCES/0300-hwdb-60-keyboard-Add-HP-Compaq-KBR0133.patch +++ /dev/null @@ -1,24 +0,0 @@ -From a5b4cee7ab052df914d482aa2d0ea52c5eed8b04 Mon Sep 17 00:00:00 2001 -From: Matthew Blythe -Date: Thu, 21 Apr 2022 00:50:13 -0600 -Subject: [PATCH] hwdb 60-keyboard Add HP/Compaq KBR0133 - -(cherry picked from commit 6ae16e01b59e4e06ecb14db55e9f34396b398014) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 2555b8d35a..e1c124d8b9 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -282,6 +282,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:* - KEYBOARD_KEY_9f=homepage - - evdev:input:b0003v049Fp0051* -+evdev:input:b0003v049Fp008D* - KEYBOARD_KEY_0c0011=presentation - KEYBOARD_KEY_0c0012=addressbook - KEYBOARD_KEY_0c0013=info diff --git a/SOURCES/0301-hwdb-add-resolutions-for-the-Vaio-FE14-touchpad-2313.patch b/SOURCES/0301-hwdb-add-resolutions-for-the-Vaio-FE14-touchpad-2313.patch deleted file mode 100644 index 652c2df..0000000 --- a/SOURCES/0301-hwdb-add-resolutions-for-the-Vaio-FE14-touchpad-2313.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 3be73821644f6626df5c8261b301caa84f4599a6 Mon Sep 17 00:00:00 2001 -From: davijosw <82056592+davijosw@users.noreply.github.com> -Date: Thu, 21 Apr 2022 22:41:37 -0300 -Subject: [PATCH] hwdb: add resolutions for the Vaio FE14 touchpad (#23136) - -(cherry picked from commit 2338b8f9c56e0b14f25e8633f6e8e636e68638c8) - -Related: #2087778 ---- - hwdb.d/60-evdev.hwdb | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb -index c97cd13557..a7fbf2ad4d 100644 ---- a/hwdb.d/60-evdev.hwdb -+++ b/hwdb.d/60-evdev.hwdb -@@ -624,6 +624,17 @@ evdev:input:b0003v258Ap001E* - EVDEV_ABS_35=::15 - EVDEV_ABS_36=::15 - -+######################################### -+# Positivo-Vaio -+######################################### -+ -+# Vaio FE14 -+evdev:name:SYNA3602:00 0911:5288 Touchpad:dmi:*svnPositivoBahia-VAIO:pnVJFE41F11* -+ EVDEV_ABS_00=::28 -+ EVDEV_ABS_01=::27 -+ EVDEV_ABS_35=::28 -+ EVDEV_ABS_36=::27 -+ - ######################################### - # Razer - ######################################### diff --git a/SOURCES/0302-hwdb-Remap-micmute-to-f20-for-ASUS-WMI-hotkeys.patch b/SOURCES/0302-hwdb-Remap-micmute-to-f20-for-ASUS-WMI-hotkeys.patch deleted file mode 100644 index 44dc98a..0000000 --- a/SOURCES/0302-hwdb-Remap-micmute-to-f20-for-ASUS-WMI-hotkeys.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 79e73005cfb020a90aaf322c1bbc7a67b1ccfd4e Mon Sep 17 00:00:00 2001 -From: Benjamin Berg -Date: Fri, 22 Apr 2022 15:59:34 +0200 -Subject: [PATCH] hwdb: Remap micmute to f20 for ASUS WMI hotkeys - -For micmute userspace handles both micmute and f20, as Xorg cannot -handle the high keycode that the micmute key has. As such, adding the -remapping means that the key will work on Xorg clients and not just when -using wayland. - -(cherry picked from commit 386885c4e6e3908c26582caddb07dead12713aa1) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index e1c124d8b9..f78bc6d9cb 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -233,6 +233,7 @@ evdev:name:Asus WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:* - evdev:name:Eee PC WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:* - evdev:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:* - KEYBOARD_KEY_6b=f21 # Touchpad Toggle -+ KEYBOARD_KEY_7c=f20 # Remap micmute to f20 - - # USB keyboard in Asus FX503VD - evdev:input:b0003v0B05p1869* diff --git a/SOURCES/0303-hwdb-Fix-rotation-for-HP-Pro-Tablet-408-G1.patch b/SOURCES/0303-hwdb-Fix-rotation-for-HP-Pro-Tablet-408-G1.patch deleted file mode 100644 index afdde98..0000000 --- a/SOURCES/0303-hwdb-Fix-rotation-for-HP-Pro-Tablet-408-G1.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 8f1b3e4da6e030ac04319a44dcdcc5e0d09d7ecd Mon Sep 17 00:00:00 2001 -From: Lance -Date: Fri, 22 Apr 2022 04:22:34 -0700 -Subject: [PATCH] hwdb: Fix rotation for HP Pro Tablet 408 G1 - -(cherry picked from commit 6dc18ca5ddd996ffbf83b42cb45f23496fe38c9d) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index b54539bf53..d6a584150c 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -453,6 +453,10 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream8Tablet:* - sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2Detachable:*:rn815D:* - ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 - -+# HP Pro Tablet 408 G1 -+sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPProTablet408:*:rn8048:* -+ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1 -+ - ######################################### - # I.T.Works - ######################################### diff --git a/SOURCES/0304-hwdb-add-keyboard-mapping-for-HP-ProBook-11G2.patch b/SOURCES/0304-hwdb-add-keyboard-mapping-for-HP-ProBook-11G2.patch deleted file mode 100644 index 0e7f517..0000000 --- a/SOURCES/0304-hwdb-add-keyboard-mapping-for-HP-ProBook-11G2.patch +++ /dev/null @@ -1,39 +0,0 @@ -From ec796ff877b7e02b7bb261558ff7f9a411548f83 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 27 Apr 2022 17:32:21 +0900 -Subject: [PATCH] hwdb: add keyboard mapping for HP ProBook 11G2 - -Closes #23108. - -(cherry picked from commit d10329a08eb06ea4348a7411092404a1d935b5a8) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index f78bc6d9cb..9b06bab54d 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -724,6 +724,11 @@ evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHP*ProBook*455*G5*:* - KEYBOARD_KEY_85=unknown # lid close; also reported via special evdev - KEYBOARD_KEY_f8=wlan # Wireless HW switch button - -+# HP ProBook 11G2 -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPProBook11G2*:pvr* -+ KEYBOARD_KEY_d8=!f23 # Fn+F2: touchpad off -+ KEYBOARD_KEY_d9=!f22 # Fn+F2: touchpad on -+ - # HP mt44 Mobile Thin Client - evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHP*mt44*Mobile*Thin*Client*:* - KEYBOARD_KEY_64=calendar # Calendar icon (Fn + F12) -@@ -1692,7 +1697,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:* - - # Galaxy Book (2021) NP750XDA-KD4SE - evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn750XDA:pvr* -- KEYBOARD_KEY_81=!esc -+ KEYBOARD_KEY_81=!esc - KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings - KEYBOARD_KEY_ae=!volumedown # Fn+F7 volume down - KEYBOARD_KEY_b0=!volumeup # Fn+F8 volume up diff --git a/SOURCES/0305-hwdb-make-sure-ninja-update-hwdb-works-on-f35.patch b/SOURCES/0305-hwdb-make-sure-ninja-update-hwdb-works-on-f35.patch deleted file mode 100644 index 6465235..0000000 --- a/SOURCES/0305-hwdb-make-sure-ninja-update-hwdb-works-on-f35.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f644073dc9ab0213afa9b44a9378166c400b398e Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 28 Apr 2022 17:41:48 +0200 -Subject: [PATCH] hwdb: make sure "ninja update-hwdb" works on f35 - -let's restore compatibility with pyparsing from fedora 35, i.e.: - -python3-pyparsing-2.4.7-9.fc35.noarch - -(cherry picked from commit 133a0003691daafaefa378f770ae01d01931787d) - -Related: #2087778 ---- - hwdb.d/ids_parser.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hwdb.d/ids_parser.py b/hwdb.d/ids_parser.py -index 811c12559b..ed2c615508 100755 ---- a/hwdb.d/ids_parser.py -+++ b/hwdb.d/ids_parser.py -@@ -20,7 +20,7 @@ COMMENTLINE = pythonStyleComment + EOL - EMPTYLINE = LineEnd() - text_eol = lambda name: Regex(r'[^\n]+')(name) + EOL - --ParserElement.set_default_whitespace_chars(' \n') -+ParserElement.setDefaultWhitespaceChars(' \n') - - def klass_grammar(): - klass_line = Literal('C ').suppress() + NUM2('klass') + text_eol('text') diff --git a/SOURCES/0306-hwbd-run-update-hwdb-for-v251-rc2.patch b/SOURCES/0306-hwbd-run-update-hwdb-for-v251-rc2.patch deleted file mode 100644 index f3e5160..0000000 --- a/SOURCES/0306-hwbd-run-update-hwdb-for-v251-rc2.patch +++ /dev/null @@ -1,8002 +0,0 @@ -From 40f014e06a4f06ad1dde387cf07dcaabdabab278 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 28 Apr 2022 17:37:34 +0200 -Subject: [PATCH] hwbd: run "update-hwdb" for v251-rc2 - -(cherry picked from commit e21f7a133f079e33e1649cea6a45a2ef0c1399bd) - -Related: #2087778 ---- - hwdb.d/20-OUI.hwdb | 947 ++++++++++++++++- - hwdb.d/20-acpi-vendor.hwdb | 4 +- - hwdb.d/20-acpi-vendor.hwdb.patch | 4 +- - hwdb.d/20-pci-vendor-model.hwdb | 240 ++++- - hwdb.d/20-usb-vendor-model.hwdb | 30 + - hwdb.d/acpi_id_registry.html | 2 +- - hwdb.d/ma-large.txt | 1685 +++++++++++++++++++++++++----- - hwdb.d/ma-medium.txt | 670 ++++++++---- - hwdb.d/ma-small.txt | 653 ++++++++---- - hwdb.d/pci.ids | 123 ++- - hwdb.d/pnp_id_registry.html | 2 +- - hwdb.d/usb.ids | 14 +- - 12 files changed, 3661 insertions(+), 713 deletions(-) - -diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb -index 4b8f83cc99..aaa3326325 100644 ---- a/hwdb.d/20-OUI.hwdb -+++ b/hwdb.d/20-OUI.hwdb -@@ -19875,7 +19875,7 @@ OUI:0019FA* - ID_OUI_FROM_DATABASE=Cable Vision Electronics CO., LTD. - - OUI:0019FB* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:0019FC* - ID_OUI_FROM_DATABASE=PT. Ufoakses Sukses Luarbiasa -@@ -31478,6 +31478,9 @@ OUI:003DE8* - OUI:003EE1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:003F10* -+ ID_OUI_FROM_DATABASE=Shenzhen GainStrong Technology Co., Ltd. -+ - OUI:004000* - ID_OUI_FROM_DATABASE=PCI COMPONENTES DA AMZONIA LTD - -@@ -32246,6 +32249,9 @@ OUI:0040FE* - OUI:0040FF* - ID_OUI_FROM_DATABASE=TELEBIT CORPORATION - -+OUI:00410E* -+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ - OUI:0041B4* - ID_OUI_FROM_DATABASE=Wuxi Zhongxing Optoelectronics Technology Co.,Ltd. - -@@ -33029,6 +33035,9 @@ OUI:005218* - OUI:0052C2* - ID_OUI_FROM_DATABASE=peiker acustic GmbH - -+OUI:0052C8* -+ ID_OUI_FROM_DATABASE=Made Studio Design Ltd. -+ - OUI:00549F* - ID_OUI_FROM_DATABASE=Avaya Inc - -@@ -36585,7 +36594,7 @@ OUI:00A2FF* - ID_OUI_FROM_DATABASE=abatec group AG - - OUI:00A388* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:00A38E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc -@@ -39750,7 +39759,7 @@ OUI:0425F0* - ID_OUI_FROM_DATABASE=Nokia - - OUI:042605* -- ID_OUI_FROM_DATABASE=GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH -+ ID_OUI_FROM_DATABASE=Bosch Building Automation GmbH - - OUI:042665* - ID_OUI_FROM_DATABASE=Apple, Inc. -@@ -39761,6 +39770,9 @@ OUI:042728* - OUI:042758* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:04292E* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:042AE2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -39878,6 +39890,9 @@ OUI:044F17* - OUI:044F4C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:044F7A* -+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -+ - OUI:044F8B* - ID_OUI_FROM_DATABASE=Adapteva, Inc. - -@@ -40107,7 +40122,7 @@ OUI:047F0E* - ID_OUI_FROM_DATABASE=Barrot Technology Limited - - OUI:04819B* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:0481AE* - ID_OUI_FROM_DATABASE=Clack Corporation -@@ -40223,6 +40238,9 @@ OUI:04A316* - OUI:04A3F3* - ID_OUI_FROM_DATABASE=Emicon - -+OUI:04A741* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:04A82A* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -40263,7 +40281,7 @@ OUI:04B6BE* - ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD - - OUI:04B86A* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:04B97D* - ID_OUI_FROM_DATABASE=AiVIS Co., Itd. -@@ -40400,6 +40418,9 @@ OUI:04C991* - OUI:04C9D9* - ID_OUI_FROM_DATABASE=Dish Technologies Corp - -+OUI:04CAED* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:04CB1D* - ID_OUI_FROM_DATABASE=Traka plc - -@@ -40523,6 +40544,9 @@ OUI:04D7A5* - OUI:04D921* - ID_OUI_FROM_DATABASE=Occuspace - -+OUI:04D9C8* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. -+ - OUI:04D9F5* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -@@ -40598,6 +40622,9 @@ OUI:04E795* - OUI:04E892* - ID_OUI_FROM_DATABASE=SHENNAN CIRCUITS CO.,LTD - -+OUI:04E8B9* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:04E9E5* - ID_OUI_FROM_DATABASE=PJRC.COM, LLC - -@@ -41747,6 +41774,9 @@ OUI:089BF1* - OUI:089C86* - ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd. - -+OUI:089DF4* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:089E01* - ID_OUI_FROM_DATABASE=Quanta Computer Inc. - -@@ -41825,6 +41855,9 @@ OUI:08B4B1* - OUI:08B4CF* - ID_OUI_FROM_DATABASE=Abicom International - -+OUI:08B61F* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:08B738* - ID_OUI_FROM_DATABASE=Lite-On Technogy Corp. - -@@ -42062,6 +42095,9 @@ OUI:08F1EA* - OUI:08F2F4* - ID_OUI_FROM_DATABASE=Net One Partners Co.,Ltd. - -+OUI:08F3FB* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:08F458* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -42596,6 +42632,51 @@ OUI:0C7D7C* - OUI:0C7FB2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:0C7FED0* -+ ID_OUI_FROM_DATABASE=Guangdong Tianshu New Energy Technology Co., Ltd -+ -+OUI:0C7FED1* -+ ID_OUI_FROM_DATABASE=Toast, Inc. -+ -+OUI:0C7FED2* -+ ID_OUI_FROM_DATABASE=Tango Networks Inc -+ -+OUI:0C7FED3* -+ ID_OUI_FROM_DATABASE=Soft dB -+ -+OUI:0C7FED4* -+ ID_OUI_FROM_DATABASE=Purple Mountain ,Inc -+ -+OUI:0C7FED5* -+ ID_OUI_FROM_DATABASE=ShenZhen TianGang Micro Technology CO.LTD -+ -+OUI:0C7FED6* -+ ID_OUI_FROM_DATABASE=Netweb Technologies India Pvt Ltd -+ -+OUI:0C7FED7* -+ ID_OUI_FROM_DATABASE=Grandway Technology (Shenzhen) Limited -+ -+OUI:0C7FED8* -+ ID_OUI_FROM_DATABASE=U-tec Group Inc. -+ -+OUI:0C7FED9* -+ ID_OUI_FROM_DATABASE=Shenzhen ORVIBO Technology Co., Ltd. -+ -+OUI:0C7FEDA* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:0C7FEDB* -+ ID_OUI_FROM_DATABASE=TelX Systems -+ -+OUI:0C7FEDC* -+ ID_OUI_FROM_DATABASE=Shenzhen MoreSense Technology Co., Ltd. -+ -+OUI:0C7FEDD* -+ ID_OUI_FROM_DATABASE=ALT Co., Ltd. -+ -+OUI:0C7FEDE* -+ ID_OUI_FROM_DATABASE=environmental systems corporation -+ - OUI:0C8063* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -42743,6 +42824,9 @@ OUI:0C9043* - OUI:0C9160* - ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD - -+OUI:0C9192* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:0C924E* - ID_OUI_FROM_DATABASE=Rice Lake Weighing Systems - -@@ -42884,6 +42968,9 @@ OUI:0CBC9F* - OUI:0CBD51* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -+OUI:0CBEF1* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:0CBF15* - ID_OUI_FROM_DATABASE=Genetec Inc. - -@@ -43155,7 +43242,7 @@ OUI:0CF893* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - - OUI:0CF9C0* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:0CFC83* - ID_OUI_FROM_DATABASE=Airoha Technology Corp., -@@ -43754,6 +43841,9 @@ OUI:1071F9* - OUI:107223* - ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO - -+OUI:1073EB* -+ ID_OUI_FROM_DATABASE=Infiniti Electro-Optics -+ - OUI:10746F* - ID_OUI_FROM_DATABASE=MOTOROLA SOLUTIONS MALAYSIA SDN. BHD. - -@@ -45614,6 +45704,9 @@ OUI:184C08* - OUI:184CAE* - ID_OUI_FROM_DATABASE=CONTINENTAL - -+OUI:184E03* -+ ID_OUI_FROM_DATABASE=HMD Global Oy -+ - OUI:184E16* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -45839,6 +45932,9 @@ OUI:1879A2* - OUI:187A3B* - ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company - -+OUI:187A3E* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:187A93* - ID_OUI_FROM_DATABASE=AMICCOM Electronics Corporation - -@@ -46091,6 +46187,9 @@ OUI:18A9A6* - OUI:18AA0F* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:18AA1E* -+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd -+ - OUI:18AA45* - ID_OUI_FROM_DATABASE=Fon Technology - -@@ -46208,6 +46307,9 @@ OUI:18C293* - OUI:18C2BF* - ID_OUI_FROM_DATABASE=BUFFALO.INC - -+OUI:18C300* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:18C451* - ID_OUI_FROM_DATABASE=Tucson Embedded Systems - -@@ -46379,6 +46481,9 @@ OUI:18E829* - OUI:18E8DD* - ID_OUI_FROM_DATABASE=MODULETEK - -+OUI:18E91D* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:18ECE7* - ID_OUI_FROM_DATABASE=BUFFALO.INC - -@@ -46526,6 +46631,9 @@ OUI:1C0B52* - OUI:1C0D7D* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:1C0ED3* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:1C0FAF* - ID_OUI_FROM_DATABASE=Lucid Vision Labs - -@@ -46793,6 +46901,9 @@ OUI:1C4593* - OUI:1C45C2* - ID_OUI_FROM_DATABASE=Huizhou City Sunsin lntelligent Technology Co.,Ltd - -+OUI:1C46D1* -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED -+ - OUI:1C472F* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -47409,7 +47520,7 @@ OUI:1C9F4E* - ID_OUI_FROM_DATABASE=COOSEA GROUP (HK) COMPANY LIMITED - - OUI:1CA0B8* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:1CA0D30* - ID_OUI_FROM_DATABASE=OOO Tekhnotronika -@@ -47867,6 +47978,9 @@ OUI:1CEEC9* - OUI:1CEEE8* - ID_OUI_FROM_DATABASE=Ilshin Elecom - -+OUI:1CEF03* -+ ID_OUI_FROM_DATABASE=Guangzhou V-SOLUTION Electronic Technology Co., Ltd. -+ - OUI:1CEFCE* - ID_OUI_FROM_DATABASE=bebro electronic GmbH - -@@ -47888,6 +48002,9 @@ OUI:1CF4CA* - OUI:1CF5E7* - ID_OUI_FROM_DATABASE=Turtle Industry Co., Ltd. - -+OUI:1CF8D0* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:1CFA68* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -47957,6 +48074,9 @@ OUI:2002AF* - OUI:20040F* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:2004F3* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:200505* - ID_OUI_FROM_DATABASE=RADMAX COMMUNICATION PRIVATE LIMITED - -@@ -48225,7 +48345,7 @@ OUI:2047DA* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - - OUI:2047ED* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:204AAA* - ID_OUI_FROM_DATABASE=Hanscan Spain S.A. -@@ -48563,6 +48683,9 @@ OUI:209BCD* - OUI:209BE6* - ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited - -+OUI:209CB4* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:209E79* - ID_OUI_FROM_DATABASE=Universal Electronics, Inc. - -@@ -49136,6 +49259,9 @@ OUI:2426D6* - OUI:2428FD* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -+OUI:242934* -+ ID_OUI_FROM_DATABASE=Google, Inc. -+ - OUI:2429FE* - ID_OUI_FROM_DATABASE=KYOCERA Corporation - -@@ -49160,6 +49286,9 @@ OUI:243154* - OUI:243184* - ID_OUI_FROM_DATABASE=SHARP Corporation - -+OUI:2432AE* -+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. -+ - OUI:24336C* - ID_OUI_FROM_DATABASE=Private - -@@ -49608,7 +49737,7 @@ OUI:24A799* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - - OUI:24A7DC* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:24A87D* - ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd. -@@ -49910,6 +50039,9 @@ OUI:24FD52* - OUI:24FD5B* - ID_OUI_FROM_DATABASE=SmartThings, Inc. - -+OUI:28011C* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:280244* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -50315,6 +50447,9 @@ OUI:2852F9* - OUI:28534E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:2853E0* -+ ID_OUI_FROM_DATABASE=Sintela Ltd -+ - OUI:285471* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -50423,6 +50558,9 @@ OUI:2876CD* - OUI:287777* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:2877B1* -+ ID_OUI_FROM_DATABASE=Tri plus grupa d.o.o. -+ - OUI:2877F1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -50663,6 +50801,9 @@ OUI:28BAB5* - OUI:28BB59* - ID_OUI_FROM_DATABASE=RNET Technologies, Inc. - -+OUI:28BC05* -+ ID_OUI_FROM_DATABASE=BLU Products Inc -+ - OUI:28BC18* - ID_OUI_FROM_DATABASE=SourcingOverseas Co. Ltd - -@@ -50691,7 +50832,7 @@ OUI:28C0DA* - ID_OUI_FROM_DATABASE=Juniper Networks - - OUI:28C13C* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:28C21F* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) -@@ -51800,6 +51941,9 @@ OUI:2C91AB* - OUI:2C922C* - ID_OUI_FROM_DATABASE=Kishu Giken Kogyou Company Ltd,. - -+OUI:2C93FB* -+ ID_OUI_FROM_DATABASE=Sercomm France Sarl -+ - OUI:2C9464* - ID_OUI_FROM_DATABASE=Cincoze Co., Ltd. - -@@ -51872,6 +52016,9 @@ OUI:2CA539* - OUI:2CA59C* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -+OUI:2CA774* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:2CA780* - ID_OUI_FROM_DATABASE=True Technologies Inc. - -@@ -52199,6 +52346,9 @@ OUI:3003C8* - OUI:30045C* - ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. - -+OUI:300505* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:30053F* - ID_OUI_FROM_DATABASE=JTI Co.,Ltd. - -@@ -52736,6 +52886,9 @@ OUI:306118* - OUI:30636B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:306371* -+ ID_OUI_FROM_DATABASE=Shenzhenshi Xinzhongxin Technology Co.Ltd -+ - OUI:3065EC* - ID_OUI_FROM_DATABASE=Wistron (ChongQing) - -@@ -53576,6 +53729,9 @@ OUI:3438AF* - OUI:3438B7* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. - -+OUI:343A20* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:343D98* - ID_OUI_FROM_DATABASE=JinQianMao Technology Co.,Ltd. - -@@ -53855,6 +54011,9 @@ OUI:3484E4* - OUI:348511* - ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd - -+OUI:348518* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:348584* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -@@ -54410,6 +54569,9 @@ OUI:34FCEF* - OUI:34FD6A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:34FE1C* -+ ID_OUI_FROM_DATABASE=CHOUNG HWA TECH CO.,LTD -+ - OUI:34FE77* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -54461,6 +54623,9 @@ OUI:3809A4* - OUI:380A0A* - ID_OUI_FROM_DATABASE=Sky-City Communication and Electronics Limited Company - -+OUI:380A4F* -+ ID_OUI_FROM_DATABASE=PRACHI ENTERPRISES -+ - OUI:380A94* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -54617,6 +54782,9 @@ OUI:3822D6* - OUI:3822E2* - ID_OUI_FROM_DATABASE=HP Inc. - -+OUI:3822F4* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:38256B* - ID_OUI_FROM_DATABASE=Microsoft Mobile Oy - -@@ -54827,6 +54995,9 @@ OUI:385B44* - OUI:385C76* - ID_OUI_FROM_DATABASE=PLANTRONICS, INC. - -+OUI:385CFB* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:385F66* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -54980,6 +55151,9 @@ OUI:388479* - OUI:388602* - ID_OUI_FROM_DATABASE=Flexoptix GmbH - -+OUI:3886F7* -+ ID_OUI_FROM_DATABASE=Google, Inc. -+ - OUI:3887D5* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -55079,6 +55253,9 @@ OUI:38A067* - OUI:38A28C* - ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. - -+OUI:38A44B* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:38A4ED* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -55092,7 +55269,7 @@ OUI:38A659* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - - OUI:38A6CE* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:38A851* - ID_OUI_FROM_DATABASE=Moog, Ing -@@ -55427,6 +55604,9 @@ OUI:38E595* - OUI:38E60A* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:38E7C0* -+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD -+ - OUI:38E7D8* - ID_OUI_FROM_DATABASE=HTC Corporation - -@@ -55467,7 +55647,7 @@ OUI:38F098* - ID_OUI_FROM_DATABASE=Vapor Stone Rail Systems - - OUI:38F0C8* -- ID_OUI_FROM_DATABASE=Mevo Inc. -+ ID_OUI_FROM_DATABASE=Logitech - - OUI:38F135* - ID_OUI_FROM_DATABASE=SensorTec-Canada -@@ -55679,6 +55859,9 @@ OUI:3C08F6* - OUI:3C096D* - ID_OUI_FROM_DATABASE=Powerhouse Dynamics - -+OUI:3C0B4F* -+ ID_OUI_FROM_DATABASE=Yandex Services AG -+ - OUI:3C0C48* - ID_OUI_FROM_DATABASE=Servergy, Inc. - -@@ -56001,7 +56184,7 @@ OUI:3C438E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - - OUI:3C457A* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:3C4645* - ID_OUI_FROM_DATABASE=Shanghai Infinity Wireless Technologies Co.,Ltd. -@@ -56033,6 +56216,9 @@ OUI:3C4DBE* - OUI:3C4E47* - ID_OUI_FROM_DATABASE=Etronic A/S - -+OUI:3C4E56* -+ ID_OUI_FROM_DATABASE=SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+ - OUI:3C510E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -56274,7 +56460,7 @@ OUI:3C8970* - ID_OUI_FROM_DATABASE=Neosfar - - OUI:3C8994* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:3C89A6* - ID_OUI_FROM_DATABASE=KAPELSE -@@ -56367,7 +56553,7 @@ OUI:3C9D56* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:3C9EC7* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:3C9F81* - ID_OUI_FROM_DATABASE=Shenzhen CATIC Bit Communications Technology Co.,Ltd -@@ -56591,6 +56777,9 @@ OUI:3CDFBD* - OUI:3CE038* - ID_OUI_FROM_DATABASE=Omnifi Inc. - -+OUI:3CE064* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:3CE072* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -56618,6 +56807,9 @@ OUI:3CE624* - OUI:3CE824* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:3CE90E* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:3CE9F7* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -56732,6 +56924,9 @@ OUI:3CFB96* - OUI:3CFDFE* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:3CFEAC* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:3CFFD8* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -56774,6 +56969,9 @@ OUI:400E67* - OUI:400E85* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -+OUI:400EF3* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:4011750* - ID_OUI_FROM_DATABASE=Lexi Devices, Inc. - -@@ -56876,6 +57074,9 @@ OUI:401D59* - OUI:402230* - ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd. - -+OUI:4022D8* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:4022ED* - ID_OUI_FROM_DATABASE=Digital Projection Ltd - -@@ -57152,6 +57353,9 @@ OUI:405D82* - OUI:405EE1* - ID_OUI_FROM_DATABASE=Shenzhen H&T Intelligent Control Co.,Ltd. - -+OUI:405EF6* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:405F7D* - ID_OUI_FROM_DATABASE=TCT mobile ltd - -@@ -57542,6 +57746,9 @@ OUI:40BF17* - OUI:40C245* - ID_OUI_FROM_DATABASE=Shenzhen Hexicom Technology Co., Ltd. - -+OUI:40C3BC* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:40C3C6* - ID_OUI_FROM_DATABASE=SnapRoute - -@@ -57638,6 +57845,9 @@ OUI:40DEAD* - OUI:40DF02* - ID_OUI_FROM_DATABASE=LINE BIZ Plus - -+OUI:40E171* -+ ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd. -+ - OUI:40E1E4* - ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG - -@@ -57815,6 +58025,9 @@ OUI:40F52E* - OUI:40F6BC* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -+OUI:40F8DF* -+ ID_OUI_FROM_DATABASE=CANON INC. -+ - OUI:40F946* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -58883,6 +59096,9 @@ OUI:48022A* - OUI:480286* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:4802AF* -+ ID_OUI_FROM_DATABASE=Telit Communication s.p.a -+ - OUI:480362* - ID_OUI_FROM_DATABASE=DESAY ELECTRONICS(HUIZHOU)CO.,LTD - -@@ -59024,6 +59240,9 @@ OUI:482759* - OUI:4827C5* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:4827E2* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:4827EA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -59321,6 +59540,9 @@ OUI:486FD2* - OUI:48701E* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:48706F* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:487119* - ID_OUI_FROM_DATABASE=SGB GROUP LTD. - -@@ -59534,6 +59756,9 @@ OUI:48AA5D* - OUI:48AD08* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:48AD9A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:48B02D* - ID_OUI_FROM_DATABASE=NVIDIA Corporation - -@@ -59981,6 +60206,9 @@ OUI:4C2FD7* - OUI:4C3089* - ID_OUI_FROM_DATABASE=Thales Transportation Systems GmbH - -+OUI:4C312D* -+ ID_OUI_FROM_DATABASE=Sichuan AI-Link Technology Co., Ltd. -+ - OUI:4C322D* - ID_OUI_FROM_DATABASE=TELEDATA NETWORKS - -@@ -60176,6 +60404,9 @@ OUI:4C617E* - OUI:4C6255* - ID_OUI_FROM_DATABASE=SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V. - -+OUI:4C627B* -+ ID_OUI_FROM_DATABASE=SmartCow AI Technologies Taiwan Ltd. -+ - OUI:4C6371* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -60261,7 +60492,7 @@ OUI:4C7167* - ID_OUI_FROM_DATABASE=PoLabs d.o.o. - - OUI:4C7274* -- ID_OUI_FROM_DATABASE=shenzhenshi xinzhongxin Technology Co.Ltd -+ ID_OUI_FROM_DATABASE=Shenzhenshi Xinzhongxin Technology Co.Ltd - - OUI:4C72B9* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION -@@ -61470,7 +61701,7 @@ OUI:506F9A* - ID_OUI_FROM_DATABASE=Wi-Fi Alliance - - OUI:507043* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:507097* - ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. -@@ -62054,6 +62285,9 @@ OUI:50F0D3* - OUI:50F14A* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:50F261* -+ ID_OUI_FROM_DATABASE=Photon Sail Technologies -+ - OUI:50F43C* - ID_OUI_FROM_DATABASE=Leeo Inc - -@@ -62324,6 +62558,9 @@ OUI:542F8A* - OUI:543131* - ID_OUI_FROM_DATABASE=Raster Vision Ltd - -+OUI:5431D4* -+ ID_OUI_FROM_DATABASE=TGW Mechanics GmbH -+ - OUI:5433CB* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -62357,6 +62594,9 @@ OUI:543B30* - OUI:543D37* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -+OUI:543D92* -+ ID_OUI_FROM_DATABASE=WIRELESS-TEK TECHNOLOGY LIMITED -+ - OUI:543E64* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -@@ -62375,6 +62615,9 @@ OUI:544408* - OUI:5444A3* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:544538* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:544617* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -63134,6 +63377,9 @@ OUI:5819F8* - OUI:581CBD* - ID_OUI_FROM_DATABASE=Affinegy - -+OUI:581CF8* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:581D91* - ID_OUI_FROM_DATABASE=Advanced Mobile Telecom co.,ltd. - -@@ -63218,6 +63464,9 @@ OUI:58278C* - OUI:582AF7* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:582B0A* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:582BDB* - ID_OUI_FROM_DATABASE=Pax AB - -@@ -63695,6 +63944,9 @@ OUI:58AEF1* - OUI:58B035* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:58B03E* -+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd -+ - OUI:58B0D4* - ID_OUI_FROM_DATABASE=ZuniData Systems Inc. - -@@ -63704,6 +63956,9 @@ OUI:58B0FE* - OUI:58B10F* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:58B38F* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:58B3FC* - ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. - -@@ -63761,6 +64016,9 @@ OUI:58C356* - OUI:58C38B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:58C57E* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:58C583* - ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED - -@@ -64322,6 +64580,9 @@ OUI:5C5EAB* - OUI:5C5F67* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:5C60BA* -+ ID_OUI_FROM_DATABASE=HP Inc. -+ - OUI:5C6199* - ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - -@@ -65789,6 +66050,9 @@ OUI:60CE86* - OUI:60CE92* - ID_OUI_FROM_DATABASE=The Refined Industry Company Limited - -+OUI:60CF69* -+ ID_OUI_FROM_DATABASE=meerecompany -+ - OUI:60D02C* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -@@ -66092,6 +66356,9 @@ OUI:640DE6* - OUI:640E36* - ID_OUI_FROM_DATABASE=TAZTAG - -+OUI:640E6A* -+ ID_OUI_FROM_DATABASE=SECO-LARM USA Inc -+ - OUI:640E94* - ID_OUI_FROM_DATABASE=Pluribus Networks, Inc. - -@@ -67355,6 +67622,9 @@ OUI:68536C* - OUI:685388* - ID_OUI_FROM_DATABASE=P&S Technology - -+OUI:68539D* -+ ID_OUI_FROM_DATABASE=EM Microelectronic -+ - OUI:68545A* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -67409,6 +67679,9 @@ OUI:686359* - OUI:68644B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:6865B7* -+ ID_OUI_FROM_DATABASE=Zhishang Chuanglian Technology Co., Ltd -+ - OUI:686725* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -67508,6 +67781,9 @@ OUI:687924* - OUI:6879ED* - ID_OUI_FROM_DATABASE=SHARP Corporation - -+OUI:687A64* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:687CC8* - ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L. - -@@ -67523,6 +67799,9 @@ OUI:687DB4* - OUI:687F74* - ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC - -+OUI:687FF0* -+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited -+ - OUI:6881E0* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -67778,6 +68057,9 @@ OUI:68B8D9* - OUI:68B983* - ID_OUI_FROM_DATABASE=b-plus GmbH - -+OUI:68B9C2* -+ ID_OUI_FROM_DATABASE=Earda Technologies co Ltd -+ - OUI:68B9D3* - ID_OUI_FROM_DATABASE=Shenzhen Trolink Technology CO, LTD - -@@ -67847,6 +68129,9 @@ OUI:68D79A* - OUI:68D925* - ID_OUI_FROM_DATABASE=ProSys Development Services - -+OUI:68D927* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:68D93C* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -67877,6 +68162,9 @@ OUI:68DDD9* - OUI:68DFDD* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:68E154* -+ ID_OUI_FROM_DATABASE=SiMa.ai -+ - OUI:68E166* - ID_OUI_FROM_DATABASE=Private - -@@ -67908,7 +68196,7 @@ OUI:68EC62* - ID_OUI_FROM_DATABASE=YODO Technology Corp. Ltd. - - OUI:68EC8A* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=IKEA of Sweden AB - - OUI:68ECC5* - ID_OUI_FROM_DATABASE=Intel Corporate -@@ -67919,6 +68207,9 @@ OUI:68ED43* - OUI:68EDA4* - ID_OUI_FROM_DATABASE=Shenzhen Seavo Technology Co.,Ltd - -+OUI:68EE88* -+ ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. -+ - OUI:68EE96* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -68207,6 +68498,9 @@ OUI:6C2F2C* - OUI:6C2F8A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:6C302A* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:6C310E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -68420,6 +68714,9 @@ OUI:6C5E7A* - OUI:6C5F1C* - ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. - -+OUI:6C60D0* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:6C60EB* - ID_OUI_FROM_DATABASE=ZHI YUAN ELECTRONICS CO., LIMITED - -@@ -68480,6 +68777,9 @@ OUI:6C71D9* - OUI:6C7220* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:6C724A* -+ ID_OUI_FROM_DATABASE=Onkyo Technology K.K. -+ - OUI:6C72E7* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -68640,7 +68940,7 @@ OUI:6C9E7C* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - - OUI:6CA0B4* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:6CA100* - ID_OUI_FROM_DATABASE=Intel Corporate -@@ -68789,6 +69089,9 @@ OUI:6CC1D2* - OUI:6CC217* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:6CC242* -+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd -+ - OUI:6CC26B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -69150,7 +69453,7 @@ OUI:701F53* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - - OUI:702084* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:702393* - ID_OUI_FROM_DATABASE=fos4X GmbH -@@ -69342,7 +69645,7 @@ OUI:704FB8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - - OUI:7050AF* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:7050E70* - ID_OUI_FROM_DATABASE=Shenzhen C & D Electronics Co., Ltd. -@@ -75372,7 +75675,7 @@ OUI:70B3D572E* - ID_OUI_FROM_DATABASE=Maharsystem - - OUI:70B3D572F* -- ID_OUI_FROM_DATABASE=AVA Technologies Inc. -+ ID_OUI_FROM_DATABASE=Ava Technologies - - OUI:70B3D5730* - ID_OUI_FROM_DATABASE=Videogenix -@@ -82460,6 +82763,9 @@ OUI:7412B3* - OUI:7412BB* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -+OUI:7413EA* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:741489* - ID_OUI_FROM_DATABASE=SRT Wireless - -@@ -82643,6 +82949,9 @@ OUI:7433A6* - OUI:743400* - ID_OUI_FROM_DATABASE=MTG Co., Ltd. - -+OUI:74342B* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:7434AE* - ID_OUI_FROM_DATABASE=this is engineering Inc. - -@@ -82655,6 +82964,9 @@ OUI:74372F* - OUI:74373B* - ID_OUI_FROM_DATABASE=UNINET Co.,Ltd. - -+OUI:74375F* -+ ID_OUI_FROM_DATABASE=SERCOMM PHILIPPINES INC -+ - OUI:743889* - ID_OUI_FROM_DATABASE=ANNAX Anzeigesysteme GmbH - -@@ -82670,6 +82982,9 @@ OUI:743A65* - OUI:743AEF* - ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. - -+OUI:743AF4* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:743C18* - ID_OUI_FROM_DATABASE=Taicang T&W Electronics - -@@ -82709,6 +83024,9 @@ OUI:744687* - OUI:7446A0* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:7446B3* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:744AA4* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -83411,6 +83729,9 @@ OUI:74E6B8* - OUI:74E6E2* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:74E798* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:74E7C6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -83826,7 +84147,7 @@ OUI:783D5B* - ID_OUI_FROM_DATABASE=TELNET Redes Inteligentes S.A. - - OUI:783E53* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:783F15* - ID_OUI_FROM_DATABASE=EasySYNC Ltd. -@@ -84419,6 +84740,9 @@ OUI:78BEBD* - OUI:78C1A7* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:78C213* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:78C2C00* - ID_OUI_FROM_DATABASE=Shenzhen ELI Technology co.,ltd - -@@ -84920,6 +85244,9 @@ OUI:7C0A50* - OUI:7C0BC6* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:7C0C92* -+ ID_OUI_FROM_DATABASE=Suzhou Mobydata Smart System Co.,Ltd. -+ - OUI:7C0CF6* - ID_OUI_FROM_DATABASE=Guangdong Huiwei High-tech Co., Ltd. - -@@ -85188,7 +85515,7 @@ OUI:7C4C58* - ID_OUI_FROM_DATABASE=Scale Computing, Inc. - - OUI:7C4CA5* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:7C4E09* - ID_OUI_FROM_DATABASE=Shenzhen Skyworth Wireless Technology Co.,Ltd -@@ -85250,6 +85577,9 @@ OUI:7C6166* - OUI:7C6193* - ID_OUI_FROM_DATABASE=HTC Corporation - -+OUI:7C6305* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:7C6456* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -85262,6 +85592,9 @@ OUI:7C66EF* - OUI:7C67A2* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:7C67AB* -+ ID_OUI_FROM_DATABASE=Roku, Inc -+ - OUI:7C696B* - ID_OUI_FROM_DATABASE=Atmosic Technologies - -@@ -85937,6 +86270,9 @@ OUI:7CDD90* - OUI:7CDDE9* - ID_OUI_FROM_DATABASE=ATOM tech Inc. - -+OUI:7CDE78* -+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd -+ - OUI:7CDFA1* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -86096,21 +86432,45 @@ OUI:8002F40* - OUI:8002F41* - ID_OUI_FROM_DATABASE=Sichuan lookout environment protection technology co.,Ltd - -+OUI:8002F42* -+ ID_OUI_FROM_DATABASE=Beijing Cybercore -+ - OUI:8002F43* - ID_OUI_FROM_DATABASE=Shenzhen Suanzi Technology Co., Ltd - -+OUI:8002F44* -+ ID_OUI_FROM_DATABASE=Infors AG -+ - OUI:8002F45* - ID_OUI_FROM_DATABASE=Sichuan Fanyi Technology Co. Ltd. - -+OUI:8002F46* -+ ID_OUI_FROM_DATABASE=Mech-Mind Robotics Technologies Ltd. -+ -+OUI:8002F47* -+ ID_OUI_FROM_DATABASE=Lazer Safe Pty Ltd -+ -+OUI:8002F48* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ - OUI:8002F49* - ID_OUI_FROM_DATABASE=XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. - - OUI:8002F4A* - ID_OUI_FROM_DATABASE=PassiveLogic - -+OUI:8002F4B* -+ ID_OUI_FROM_DATABASE=Baicells Technologies Co., Ltd -+ - OUI:8002F4C* - ID_OUI_FROM_DATABASE=Wuhan Glory Road Intelligent Technology Co., Ltd. - -+OUI:8002F4D* -+ ID_OUI_FROM_DATABASE=Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -+ -+OUI:8002F4E* -+ ID_OUI_FROM_DATABASE=Alfred Systems Inc -+ - OUI:800384* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -@@ -86210,6 +86570,9 @@ OUI:801934* - OUI:801967* - ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology Co.,Ltd - -+OUI:801970* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:8019FE* - ID_OUI_FROM_DATABASE=JianLing Technology CO., LTD - -@@ -86405,6 +86768,9 @@ OUI:8050F6* - OUI:80546A* - ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT - -+OUI:80549C* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:8054D9* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -86523,7 +86889,7 @@ OUI:80717A* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:807215* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:807264* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -@@ -86538,7 +86904,7 @@ OUI:807484* - ID_OUI_FROM_DATABASE=ALL Winner (Hong Kong) Limited - - OUI:80751F* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:807693* - ID_OUI_FROM_DATABASE=Newag SA -@@ -86604,7 +86970,7 @@ OUI:807B85B* - ID_OUI_FROM_DATABASE=Oliotalo Oy - - OUI:807B85C* -- ID_OUI_FROM_DATABASE=Ningbo Plus and Popscreens electronic Technology Co.,LTD -+ ID_OUI_FROM_DATABASE=SCALA Digital Technology(Ningbo) CO, LTD - - OUI:807B85D* - ID_OUI_FROM_DATABASE=Kaynes Technology India Pvt Ltd -@@ -86930,6 +87296,9 @@ OUI:80DA13* - OUI:80DABC* - ID_OUI_FROM_DATABASE=Megafone Limited - -+OUI:80DAC2* -+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. -+ - OUI:80DB31* - ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd. - -@@ -87098,6 +87467,9 @@ OUI:840B2D* - OUI:840B7C* - ID_OUI_FROM_DATABASE=Hitron Technologies. Inc - -+OUI:840BBB* -+ ID_OUI_FROM_DATABASE=MitraStar Technology Corp. -+ - OUI:840D8E* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -88181,6 +88553,9 @@ OUI:880907* - OUI:8809AF* - ID_OUI_FROM_DATABASE=Masimo Corporation - -+OUI:880AA3* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:880F10* - ID_OUI_FROM_DATABASE=Huami Information Technology Co.,Ltd. - -@@ -88202,6 +88577,9 @@ OUI:88123D* - OUI:88124E* - ID_OUI_FROM_DATABASE=Qualcomm Inc. - -+OUI:8812AC* -+ ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED -+ - OUI:88142B* - ID_OUI_FROM_DATABASE=Protonic Holland - -@@ -88238,6 +88616,9 @@ OUI:882012* - OUI:8821E3* - ID_OUI_FROM_DATABASE=Nebusens, S.L. - -+OUI:8822B2* -+ ID_OUI_FROM_DATABASE=Chipsea Technologies (Shenzhen) Corp. -+ - OUI:88231F* - ID_OUI_FROM_DATABASE=Fibocom Wireless Inc. - -@@ -88907,6 +89288,9 @@ OUI:88B66B* - OUI:88B6EE* - ID_OUI_FROM_DATABASE=Dish Technologies Corp - -+OUI:88B863* -+ ID_OUI_FROM_DATABASE=HISENSE VISUAL TECHNOLOGY CO.,LTD -+ - OUI:88B8D0* - ID_OUI_FROM_DATABASE=Dongguan Koppo Electronic Co.,Ltd - -@@ -89465,6 +89849,9 @@ OUI:8C1F64077* - OUI:8C1F6407E* - ID_OUI_FROM_DATABASE=FLOYD inc. - -+OUI:8C1F64080* -+ ID_OUI_FROM_DATABASE=Twinleaf LLC -+ - OUI:8C1F64085* - ID_OUI_FROM_DATABASE=SORB ENGINEERING LLC - -@@ -89492,6 +89879,9 @@ OUI:8C1F640A8* - OUI:8C1F640AB* - ID_OUI_FROM_DATABASE=Norbit ODM AS - -+OUI:8C1F640AC* -+ ID_OUI_FROM_DATABASE=Patch Technologies, Inc. -+ - OUI:8C1F640AF* - ID_OUI_FROM_DATABASE=FORSEE POWER - -@@ -89501,6 +89891,9 @@ OUI:8C1F640B0* - OUI:8C1F640B8* - ID_OUI_FROM_DATABASE=Signatrol Ltd - -+OUI:8C1F640BE* -+ ID_OUI_FROM_DATABASE=BNB -+ - OUI:8C1F640C0* - ID_OUI_FROM_DATABASE=Active Research Limited - -@@ -89579,6 +89972,9 @@ OUI:8C1F64193* - OUI:8C1F64194* - ID_OUI_FROM_DATABASE=TIFLEX - -+OUI:8C1F64197* -+ ID_OUI_FROM_DATABASE=TEKVOX, Inc -+ - OUI:8C1F6419B* - ID_OUI_FROM_DATABASE=FeedFlo - -@@ -89687,6 +90083,9 @@ OUI:8C1F642C2* - OUI:8C1F642C3* - ID_OUI_FROM_DATABASE=TeraDiode / Panasonic - -+OUI:8C1F642C5* -+ ID_OUI_FROM_DATABASE=SYSN -+ - OUI:8C1F642C8* - ID_OUI_FROM_DATABASE=BRS Sistemas Eletrônicos - -@@ -89702,6 +90101,9 @@ OUI:8C1F642F5* - OUI:8C1F642FD* - ID_OUI_FROM_DATABASE=Enestone Corporation - -+OUI:8C1F64301* -+ ID_OUI_FROM_DATABASE=Agar Corporation Inc. -+ - OUI:8C1F64304* - ID_OUI_FROM_DATABASE=Jemac Sweden AB - -@@ -89762,6 +90164,9 @@ OUI:8C1F64398* - OUI:8C1F643A4* - ID_OUI_FROM_DATABASE=QLM Technology Ltd - -+OUI:8C1F643AC* -+ ID_OUI_FROM_DATABASE=Benison Tech -+ - OUI:8C1F643AD* - ID_OUI_FROM_DATABASE=TowerIQ - -@@ -89774,15 +90179,24 @@ OUI:8C1F643B5* - OUI:8C1F643C4* - ID_OUI_FROM_DATABASE=NavSys Technology Inc. - -+OUI:8C1F643C5* -+ ID_OUI_FROM_DATABASE=Stratis IOT -+ - OUI:8C1F643C6* - ID_OUI_FROM_DATABASE=Wavestream Corp - - OUI:8C1F643D1* - ID_OUI_FROM_DATABASE=EMIT GmbH - -+OUI:8C1F643D4* -+ ID_OUI_FROM_DATABASE=e.p.g. Elettronica s.r.l. -+ - OUI:8C1F643E0* - ID_OUI_FROM_DATABASE=YPP Corporation - -+OUI:8C1F643E3* -+ ID_OUI_FROM_DATABASE=FMTec GmbH - Future Management Technologies -+ - OUI:8C1F643E8* - ID_OUI_FROM_DATABASE=Ruichuangte - -@@ -89810,6 +90224,9 @@ OUI:8C1F64417* - OUI:8C1F6441D* - ID_OUI_FROM_DATABASE=Aspen Spectra Sdn Bhd - -+OUI:8C1F64426* -+ ID_OUI_FROM_DATABASE=eumig industrie-TV GmbH. -+ - OUI:8C1F64429* - ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS - -@@ -89825,6 +90242,9 @@ OUI:8C1F64445* - OUI:8C1F64454* - ID_OUI_FROM_DATABASE=KJ Klimateknik A/S - -+OUI:8C1F6445D* -+ ID_OUI_FROM_DATABASE=Fuzhou Tucsen Photonics Co.,Ltd -+ - OUI:8C1F6445F* - ID_OUI_FROM_DATABASE=Toshniwal Security Solutions Pvt Ltd - -@@ -89981,6 +90401,9 @@ OUI:8C1F64581* - OUI:8C1F6459F* - ID_OUI_FROM_DATABASE=Delta Computers LLC. - -+OUI:8C1F645AC* -+ ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd -+ - OUI:8C1F645AE* - ID_OUI_FROM_DATABASE=Suzhou Motorcomm Electronic Technology Co., Ltd - -@@ -89993,12 +90416,18 @@ OUI:8C1F645BC* - OUI:8C1F645D3* - ID_OUI_FROM_DATABASE=Eloy Water - -+OUI:8C1F645E5* -+ ID_OUI_FROM_DATABASE=Telemetrics Inc. -+ - OUI:8C1F645F5* - ID_OUI_FROM_DATABASE=HongSeok Ltd. - - OUI:8C1F64600* - ID_OUI_FROM_DATABASE=Anhui Chaokun Testing Equipment Co., Ltd - -+OUI:8C1F64601* -+ ID_OUI_FROM_DATABASE=Camius -+ - OUI:8C1F64603* - ID_OUI_FROM_DATABASE=Fuku Energy Technology Co., Ltd. - -@@ -90020,6 +90449,9 @@ OUI:8C1F6461F* - OUI:8C1F64622* - ID_OUI_FROM_DATABASE=Logical Product - -+OUI:8C1F64625* -+ ID_OUI_FROM_DATABASE=Stresstech OY -+ - OUI:8C1F64634* - ID_OUI_FROM_DATABASE=AML - -@@ -90065,6 +90497,12 @@ OUI:8C1F64675* - OUI:8C1F6467A* - ID_OUI_FROM_DATABASE=MG s.r.l. - -+OUI:8C1F6467F* -+ ID_OUI_FROM_DATABASE=Hamamatsu Photonics K.K. -+ -+OUI:8C1F64683* -+ ID_OUI_FROM_DATABASE=SLAT -+ - OUI:8C1F64697* - ID_OUI_FROM_DATABASE=Sontay Ltd. - -@@ -90086,6 +90524,9 @@ OUI:8C1F646B3* - OUI:8C1F646B5* - ID_OUI_FROM_DATABASE=O-Net Communications(Shenzhen)Limited - -+OUI:8C1F646B9* -+ ID_OUI_FROM_DATABASE=GS Industrie-Elektronik GmbH -+ - OUI:8C1F646C6* - ID_OUI_FROM_DATABASE=FIT - -@@ -90140,6 +90581,9 @@ OUI:8C1F6472A* - OUI:8C1F6472C* - ID_OUI_FROM_DATABASE=Antai technology Co.,Ltd - -+OUI:8C1F64737* -+ ID_OUI_FROM_DATABASE=Vytahy-Vymyslicky s.r.o. -+ - OUI:8C1F6473C* - ID_OUI_FROM_DATABASE=REO AG - -@@ -90149,6 +90593,9 @@ OUI:8C1F6473D* - OUI:8C1F6473F* - ID_OUI_FROM_DATABASE=UBISCALE - -+OUI:8C1F64746* -+ ID_OUI_FROM_DATABASE=Sensus Healthcare -+ - OUI:8C1F64747* - ID_OUI_FROM_DATABASE=VisionTIR Multispectral Technology - -@@ -90200,6 +90647,9 @@ OUI:8C1F647A7* - OUI:8C1F647AA* - ID_OUI_FROM_DATABASE=XSENSOR Technology Corp. - -+OUI:8C1F647AF* -+ ID_OUI_FROM_DATABASE=E VISION INDIA PVT LTD -+ - OUI:8C1F647B7* - ID_OUI_FROM_DATABASE=Weidmann Tecnologia Electrica de Mexico - -@@ -90212,6 +90662,9 @@ OUI:8C1F647B9* - OUI:8C1F647C8* - ID_OUI_FROM_DATABASE=Jacquet Dechaume - -+OUI:8C1F647CF* -+ ID_OUI_FROM_DATABASE=Transdigital Pty Ltd -+ - OUI:8C1F647D2* - ID_OUI_FROM_DATABASE=Enlaps - -@@ -90239,6 +90692,9 @@ OUI:8C1F64801* - OUI:8C1F64807* - ID_OUI_FROM_DATABASE=GIORDANO CONTROLS SPA - -+OUI:8C1F64817* -+ ID_OUI_FROM_DATABASE=nke marine electronics -+ - OUI:8C1F6481A* - ID_OUI_FROM_DATABASE=Gemini Electronics B.V. - -@@ -90314,6 +90770,9 @@ OUI:8C1F648C2* - OUI:8C1F648C4* - ID_OUI_FROM_DATABASE=Hermes Network Inc - -+OUI:8C1F648C5* -+ ID_OUI_FROM_DATABASE=NextT Microwave Inc -+ - OUI:8C1F648CF* - ID_OUI_FROM_DATABASE=Diffraction Limited - -@@ -90335,6 +90794,9 @@ OUI:8C1F648E9* - OUI:8C1F648EE* - ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS - -+OUI:8C1F648F8* -+ ID_OUI_FROM_DATABASE=HIGHVOLT Prüftechnik -+ - OUI:8C1F64903* - ID_OUI_FROM_DATABASE=Portrait Displays, Inc. - -@@ -90371,6 +90833,12 @@ OUI:8C1F64943* - OUI:8C1F64947* - ID_OUI_FROM_DATABASE=LLC TC Vympel - -+OUI:8C1F64949* -+ ID_OUI_FROM_DATABASE=tickIoT Inc. -+ -+OUI:8C1F6494C* -+ ID_OUI_FROM_DATABASE=BCMTECH -+ - OUI:8C1F6494E* - ID_OUI_FROM_DATABASE=Monnit Corporation - -@@ -90392,6 +90860,9 @@ OUI:8C1F64971* - OUI:8C1F64973* - ID_OUI_FROM_DATABASE=Dorsett Technologies Inc - -+OUI:8C1F6497C* -+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme -+ - OUI:8C1F64984* - ID_OUI_FROM_DATABASE=Abacus Peripherals Pvt Ltd - -@@ -90458,6 +90929,9 @@ OUI:8C1F64A29* - OUI:8C1F64A2B* - ID_OUI_FROM_DATABASE=WENet Vietnam Joint Stock company - -+OUI:8C1F64A2D* -+ ID_OUI_FROM_DATABASE=ACSL Ltd. -+ - OUI:8C1F64A32* - ID_OUI_FROM_DATABASE=Nautel LTD - -@@ -90581,6 +91055,9 @@ OUI:8C1F64B56* - OUI:8C1F64B64* - ID_OUI_FROM_DATABASE=GSP Sprachtechnologie GmbH - -+OUI:8C1F64B73* -+ ID_OUI_FROM_DATABASE=Comm-ence, Inc. -+ - OUI:8C1F64B77* - ID_OUI_FROM_DATABASE=Carestream Dental LLC - -@@ -90611,6 +91088,9 @@ OUI:8C1F64B9A* - OUI:8C1F64BA3* - ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH - -+OUI:8C1F64BBF* -+ ID_OUI_FROM_DATABASE=Retency -+ - OUI:8C1F64BC0* - ID_OUI_FROM_DATABASE=GS Elektromedizinsiche Geräte G. Stemple GmbH - -@@ -90668,6 +91148,9 @@ OUI:8C1F64C2F* - OUI:8C1F64C38* - ID_OUI_FROM_DATABASE=ECO-ADAPT - -+OUI:8C1F64C3A* -+ ID_OUI_FROM_DATABASE=YUSUR Technology Co., Ltd. -+ - OUI:8C1F64C40* - ID_OUI_FROM_DATABASE=Sciospec Scientific Instruments GmbH - -@@ -90683,6 +91166,9 @@ OUI:8C1F64C50* - OUI:8C1F64C54* - ID_OUI_FROM_DATABASE=First Mode - -+OUI:8C1F64C57* -+ ID_OUI_FROM_DATABASE=Strategic Robotic Systems -+ - OUI:8C1F64C68* - ID_OUI_FROM_DATABASE=FIBERME COMMUNICATIONS LLC - -@@ -90713,9 +91199,15 @@ OUI:8C1F64CAD* - OUI:8C1F64CBE* - ID_OUI_FROM_DATABASE=Circa Enterprises Inc - -+OUI:8C1F64CC6* -+ ID_OUI_FROM_DATABASE=Genius vision digital private limted -+ - OUI:8C1F64CCB* - ID_OUI_FROM_DATABASE=suzhou yuecrown Electronic Technology Co.,LTD - -+OUI:8C1F64CD3* -+ ID_OUI_FROM_DATABASE=Pionierkraft GmbH -+ - OUI:8C1F64CD6* - ID_OUI_FROM_DATABASE=USM Pty Ltd - -@@ -90725,6 +91217,9 @@ OUI:8C1F64CD8* - OUI:8C1F64CD9* - ID_OUI_FROM_DATABASE=Fingoti Limited - -+OUI:8C1F64CDB* -+ ID_OUI_FROM_DATABASE=EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT -+ - OUI:8C1F64CDF* - ID_OUI_FROM_DATABASE=Canway Technology GmbH - -@@ -90791,6 +91286,9 @@ OUI:8C1F64D7C* - OUI:8C1F64D7E* - ID_OUI_FROM_DATABASE=Thales Belgium - -+OUI:8C1F64D88* -+ ID_OUI_FROM_DATABASE=University of Geneva - Department of Particle Physics -+ - OUI:8C1F64D92* - ID_OUI_FROM_DATABASE=Mitsubishi Electric India Pvt. Ltd. - -@@ -90830,6 +91328,9 @@ OUI:8C1F64DE1* - OUI:8C1F64DF8* - ID_OUI_FROM_DATABASE=Wittra Networks AB - -+OUI:8C1F64DFE* -+ ID_OUI_FROM_DATABASE=Nuvation Energy -+ - OUI:8C1F64E02* - ID_OUI_FROM_DATABASE=ITS Teknik A/S - -@@ -90884,6 +91385,9 @@ OUI:8C1F64E7B* - OUI:8C1F64E7C* - ID_OUI_FROM_DATABASE=Ashinne Technology Co., Ltd - -+OUI:8C1F64E90* -+ ID_OUI_FROM_DATABASE=MHE Electronics -+ - OUI:8C1F64E98* - ID_OUI_FROM_DATABASE=Luxshare Electronic Technology (Kunshan) LTD - -@@ -90920,6 +91424,9 @@ OUI:8C1F64ED4* - OUI:8C1F64ED9* - ID_OUI_FROM_DATABASE=NETGEN HITECH SOLUTIONS LLP - -+OUI:8C1F64EE0* -+ ID_OUI_FROM_DATABASE=Private -+ - OUI:8C1F64EE8* - ID_OUI_FROM_DATABASE=Global Organ Group B.V. - -@@ -90980,6 +91487,9 @@ OUI:8C1F64F5A* - OUI:8C1F64F5C* - ID_OUI_FROM_DATABASE=Flextronics International Kft - -+OUI:8C1F64F65* -+ ID_OUI_FROM_DATABASE=Talleres de Escoriaza SA -+ - OUI:8C1F64F72* - ID_OUI_FROM_DATABASE=Contrader - -@@ -91007,6 +91517,12 @@ OUI:8C1F64F9E* - OUI:8C1F64FA2* - ID_OUI_FROM_DATABASE=AZD Praha s.r.o., ZOZ Olomouc - -+OUI:8C1F64FA8* -+ ID_OUI_FROM_DATABASE=Unitron Systems b.v. -+ -+OUI:8C1F64FAA* -+ ID_OUI_FROM_DATABASE=Massar Networks -+ - OUI:8C1F64FB0* - ID_OUI_FROM_DATABASE=MARIAN GmbH - -@@ -91058,6 +91574,9 @@ OUI:8C210A* - OUI:8C2505* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:8C255E* -+ ID_OUI_FROM_DATABASE=VoltServer -+ - OUI:8C271D* - ID_OUI_FROM_DATABASE=QuantHouse - -@@ -91232,6 +91751,51 @@ OUI:8C4DEA* - OUI:8C5105* - ID_OUI_FROM_DATABASE=Shenzhen ireadygo Information Technology CO.,LTD. - -+OUI:8C51090* -+ ID_OUI_FROM_DATABASE=TianJin JointOptic Technology Co., LTD. -+ -+OUI:8C51091* -+ ID_OUI_FROM_DATABASE=Amzetta Technologies, LLC -+ -+OUI:8C51092* -+ ID_OUI_FROM_DATABASE=PROCET Technology Co., Ltd(HK) -+ -+OUI:8C51093* -+ ID_OUI_FROM_DATABASE=SHENZHEN LDROBOT CO., LTD. -+ -+OUI:8C51094* -+ ID_OUI_FROM_DATABASE=Shenzhen WOWOTO Technology Co., Ltd. -+ -+OUI:8C51095* -+ ID_OUI_FROM_DATABASE=Heliox Automotive B.V. -+ -+OUI:8C51096* -+ ID_OUI_FROM_DATABASE=Avxav Electronic Trading LLC -+ -+OUI:8C51097* -+ ID_OUI_FROM_DATABASE=ENPLUG Co., Ltd. -+ -+OUI:8C51098* -+ ID_OUI_FROM_DATABASE=nerospec -+ -+OUI:8C51099* -+ ID_OUI_FROM_DATABASE=Frontmatec -+ -+OUI:8C5109A* -+ ID_OUI_FROM_DATABASE=SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ -+OUI:8C5109B* -+ ID_OUI_FROM_DATABASE=Beijing Superhexa Century Technology Co., Ltd. -+ -+OUI:8C5109C* -+ ID_OUI_FROM_DATABASE=SpotterRF LLC -+ -+OUI:8C5109D* -+ ID_OUI_FROM_DATABASE=Surpedia Technologies Co., Ltd. -+ -+OUI:8C5109E* -+ ID_OUI_FROM_DATABASE=IROOTELLUCKY Corp. -+ - OUI:8C53C3* - ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd - -@@ -91998,7 +92562,7 @@ OUI:90013B* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - - OUI:900218* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:90027A* - ID_OUI_FROM_DATABASE=Shenzhen Sworix Techonlogy Co., Ltd -@@ -92130,7 +92694,7 @@ OUI:9020C2* - ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company - - OUI:902106* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:902155* - ID_OUI_FROM_DATABASE=HTC Corporation -@@ -92402,6 +92966,9 @@ OUI:9061AE* - OUI:90633B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:906560* -+ ID_OUI_FROM_DATABASE=EM Microelectronic -+ - OUI:906717* - ID_OUI_FROM_DATABASE=Alphion India Private Limited - -@@ -92423,6 +92990,9 @@ OUI:906976* - OUI:906A94* - ID_OUI_FROM_DATABASE=hangzhou huacheng network technology co., ltd - -+OUI:906AEB* -+ ID_OUI_FROM_DATABASE=Microsoft Corporation -+ - OUI:906CAC* - ID_OUI_FROM_DATABASE=Fortinet, Inc. - -@@ -93023,6 +93593,9 @@ OUI:90F7B2* - OUI:90F891* - ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. - -+OUI:90F970* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:90F9B7* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -93059,6 +93632,9 @@ OUI:9400B0* - OUI:940149* - ID_OUI_FROM_DATABASE=AutoHotBox - -+OUI:9401AC* -+ ID_OUI_FROM_DATABASE=Wuhan Qianyang Iotian Technology Co., Ltd -+ - OUI:9401C2* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -93218,6 +93794,9 @@ OUI:942790* - OUI:94282E* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -+OUI:94286F* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:94290C* - ID_OUI_FROM_DATABASE=Shenyang wisdom Foundation Technology Development Co., Ltd. - -@@ -93329,6 +93908,9 @@ OUI:944A09* - OUI:944A0C* - ID_OUI_FROM_DATABASE=Sercomm Corporation. - -+OUI:944E5B* -+ ID_OUI_FROM_DATABASE=Ubee Interactive Co., Limited -+ - OUI:944F4C* - ID_OUI_FROM_DATABASE=Sound United LLC - -@@ -93347,6 +93929,9 @@ OUI:94513D* - OUI:9451BF* - ID_OUI_FROM_DATABASE=Hyundai ESG - -+OUI:945244* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:945330* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -94319,6 +94904,9 @@ OUI:98234E* - OUI:98262A* - ID_OUI_FROM_DATABASE=Applied Research Associates, Inc - -+OUI:9826AD* -+ ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. -+ - OUI:9827820* - ID_OUI_FROM_DATABASE=SHENZHEN HEROFUN BIO-TECH CO., LTD - -@@ -94916,6 +95504,9 @@ OUI:989D5D* - OUI:989E63* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:98A2C0* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:98A404* - ID_OUI_FROM_DATABASE=Ericsson AB - -@@ -95114,6 +95705,9 @@ OUI:98D6BB* - OUI:98D6F7* - ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) - -+OUI:98D742* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:98D863* - ID_OUI_FROM_DATABASE=Shanghai High-Flying Electronics Technology Co., Ltd - -@@ -95501,6 +96095,9 @@ OUI:9C2BA6* - OUI:9C2DCF* - ID_OUI_FROM_DATABASE=Shishi Tongyun Technology(Chengdu)Co.,Ltd. - -+OUI:9C2E7A* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:9C2EA1* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -95526,7 +96123,7 @@ OUI:9C31B6* - ID_OUI_FROM_DATABASE=Kulite Semiconductor Products Inc - - OUI:9C31C3* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:9C32A9* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -@@ -95975,6 +96572,9 @@ OUI:9C9561* - OUI:9C9567* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:9C956E* -+ ID_OUI_FROM_DATABASE=Microchip Technology Inc. -+ - OUI:9C95F8* - ID_OUI_FROM_DATABASE=SmartDoor Systems, LLC - -@@ -96707,6 +97307,9 @@ OUI:A03679* - OUI:A0369F* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:A036BC* -+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -+ - OUI:A036F0* - ID_OUI_FROM_DATABASE=Comprehensive Power - -@@ -97058,6 +97661,9 @@ OUI:A086EC* - OUI:A08869* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:A0889D* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:A088B4* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -97308,7 +97914,7 @@ OUI:A0BD1D* - ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd. - - OUI:A0BDCD* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:A0BF50* - ID_OUI_FROM_DATABASE=S.C. ADD-PRODUCTION S.R.L. -@@ -97394,6 +98000,9 @@ OUI:A0CBFD* - OUI:A0CC2B* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. - -+OUI:A0CDF3* -+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -+ - OUI:A0CEC8* - ID_OUI_FROM_DATABASE=CE LINK LIMITED - -@@ -97562,6 +98171,9 @@ OUI:A0F9B7* - OUI:A0F9E0* - ID_OUI_FROM_DATABASE=VIVATEL COMPANY LIMITED - -+OUI:A0FB83* -+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. -+ - OUI:A0FBC5* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -98198,6 +98810,9 @@ OUI:A470D6* - OUI:A47174* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:A475B9* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:A47733* - ID_OUI_FROM_DATABASE=Google, Inc. - -@@ -98406,10 +99021,10 @@ OUI:A4ADB8* - ID_OUI_FROM_DATABASE=Vitec Group, Camera Dynamics Ltd - - OUI:A4AE11* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:A4AE12* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:A4AE9A* - ID_OUI_FROM_DATABASE=Maestro Wireless Solutions ltd. -@@ -99038,6 +99653,9 @@ OUI:A84122* - OUI:A842A7* - ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd. - -+OUI:A842E3* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:A84397* - ID_OUI_FROM_DATABASE=Innogrit Corporation - -@@ -99602,9 +100220,15 @@ OUI:A8DA0C* - OUI:A8DB03* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -+OUI:A8DE68* -+ ID_OUI_FROM_DATABASE=Beijing Wide Technology Co.,Ltd -+ - OUI:A8E018* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:A8E207* -+ ID_OUI_FROM_DATABASE=GOIP Global Services Pvt. Ltd. -+ - OUI:A8E2C1* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -99773,6 +100397,9 @@ OUI:AC14D2* - OUI:AC1585* - ID_OUI_FROM_DATABASE=silergy corp - -+OUI:AC15A2* -+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited -+ - OUI:AC15F4* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -99788,6 +100415,9 @@ OUI:AC17C8* - OUI:AC1826* - ID_OUI_FROM_DATABASE=Seiko Epson Corporation - -+OUI:AC198E* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:AC199F* - ID_OUI_FROM_DATABASE=SUNGROW POWER SUPPLY CO.,LTD. - -@@ -100019,6 +100649,9 @@ OUI:AC4D16* - OUI:AC4E2E* - ID_OUI_FROM_DATABASE=Shenzhen JingHanDa Electronics Co.Ltd - -+OUI:AC4E65* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:AC4E91* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -100073,6 +100706,9 @@ OUI:AC5A14* - OUI:AC5AEE* - ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. - -+OUI:AC5AF0* -+ ID_OUI_FROM_DATABASE=LG Electronics -+ - OUI:AC5AFC* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -100094,6 +100730,9 @@ OUI:AC5F3E* - OUI:AC5FEA* - ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd - -+OUI:AC606F* -+ ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd. -+ - OUI:AC6089* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -100361,6 +101000,9 @@ OUI:AC9232* - OUI:AC932F* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:AC936A* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:AC93C4* - ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd. - -@@ -100610,6 +101252,9 @@ OUI:ACDCE5* - OUI:ACDE48* - ID_OUI_FROM_DATABASE=Private - -+OUI:ACDF9F* -+ ID_OUI_FROM_DATABASE=Arcadyan Corporation -+ - OUI:ACE010* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -100950,7 +101595,7 @@ OUI:B03DC2* - ID_OUI_FROM_DATABASE=Wasp artificial intelligence(Shenzhen) Co.,ltd - - OUI:B03E51* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:B03EB0* - ID_OUI_FROM_DATABASE=MICRODIA Ltd. -@@ -100983,7 +101628,7 @@ OUI:B04519* - ID_OUI_FROM_DATABASE=TCT mobile ltd - - OUI:B04530* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:B04545* - ID_OUI_FROM_DATABASE=YACOUB Automation GmbH -@@ -101591,6 +102236,9 @@ OUI:B0DA00* - OUI:B0DAF9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:B0DCEF* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:B0DD74* - ID_OUI_FROM_DATABASE=Heimgard Technologies AS - -@@ -102050,6 +102698,9 @@ OUI:B44326* - OUI:B44506* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:B4466B* -+ ID_OUI_FROM_DATABASE=REALTIMEID AS -+ - OUI:B4475E* - ID_OUI_FROM_DATABASE=Avaya Inc - -@@ -102290,6 +102941,9 @@ OUI:B48901* - OUI:B48910* - ID_OUI_FROM_DATABASE=Coster T.E. S.P.A. - -+OUI:B48A0A* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:B48A5F* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -102518,6 +103172,9 @@ OUI:B4BA02* - OUI:B4BA12* - ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co.,Ltd. - -+OUI:B4BA9D* -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED -+ - OUI:B4BC7C* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -103025,6 +103682,9 @@ OUI:B85810* - OUI:B8599F* - ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. - -+OUI:B859C8* -+ ID_OUI_FROM_DATABASE=70mai Co.,Ltd. -+ - OUI:B859CE* - ID_OUI_FROM_DATABASE=Earda Technologies co Ltd - -@@ -103220,6 +103880,9 @@ OUI:B88EDF* - OUI:B88F14* - ID_OUI_FROM_DATABASE=Analytica GmbH - -+OUI:B88F27* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:B88FB4* - ID_OUI_FROM_DATABASE=JABIL CIRCUIT ITALIA S.R.L - -@@ -103673,6 +104336,9 @@ OUI:B8F8BE* - OUI:B8F934* - ID_OUI_FROM_DATABASE=Sony Corporation - -+OUI:B8FBAF* -+ ID_OUI_FROM_DATABASE=Xiamen IPRT Technology CO.,LTD -+ - OUI:B8FC9A* - ID_OUI_FROM_DATABASE=Le Shi Zhi Xin Electronic Technology (Tianjin) Limited - -@@ -103697,6 +104363,9 @@ OUI:BC0200* - OUI:BC024A* - ID_OUI_FROM_DATABASE=HMD Global Oy - -+OUI:BC0358* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:BC03A7* - ID_OUI_FROM_DATABASE=MFP MICHELIN - -@@ -103994,6 +104663,9 @@ OUI:BC4A56* - OUI:BC4B79* - ID_OUI_FROM_DATABASE=SensingTek - -+OUI:BC4CA0* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:BC4CC4* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -104042,6 +104714,9 @@ OUI:BC5BD5* - OUI:BC5C4C* - ID_OUI_FROM_DATABASE=ELECOM CO.,LTD. - -+OUI:BC5DA3* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:BC5EA1* - ID_OUI_FROM_DATABASE=PsiKick, Inc. - -@@ -104139,7 +104814,7 @@ OUI:BC6784* - ID_OUI_FROM_DATABASE=Environics Oy - - OUI:BC69CB* -- ID_OUI_FROM_DATABASE=Panasonic Life Solutions Networks Co., Ltd. -+ ID_OUI_FROM_DATABASE=Panasonic Electric Works Networks Co., Ltd. - - OUI:BC6A16* - ID_OUI_FROM_DATABASE=tdvine -@@ -104219,6 +104894,9 @@ OUI:BC79AD* - OUI:BC7ABF* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:BC7B72* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:BC7DD1* - ID_OUI_FROM_DATABASE=Radio Data Comms - -@@ -104654,6 +105332,9 @@ OUI:BCF685* - OUI:BCF811* - ID_OUI_FROM_DATABASE=Xiamen DNAKE Technology Co.,Ltd - -+OUI:BCF88B* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:BCF9F2* - ID_OUI_FROM_DATABASE=TEKO - -@@ -104877,7 +105558,7 @@ OUI:C03DD9* - ID_OUI_FROM_DATABASE=MitraStar Technology Corp. - - OUI:C03E0F* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:C03E50* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -@@ -104945,6 +105626,9 @@ OUI:C04B13* - OUI:C04DF7* - ID_OUI_FROM_DATABASE=SERELEC - -+OUI:C04E30* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:C0517E* - ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. - -@@ -105038,6 +105722,9 @@ OUI:C06599* - OUI:C067AF* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:C06911* -+ ID_OUI_FROM_DATABASE=Arista Networks -+ - OUI:C06B55* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -@@ -105318,7 +106005,7 @@ OUI:C0A364* - ID_OUI_FROM_DATABASE=3D Systems Massachusetts - - OUI:C0A36E* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:C0A39E* - ID_OUI_FROM_DATABASE=EarthCam, Inc. -@@ -105800,6 +106487,9 @@ OUI:C411E0* - OUI:C41234* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:C412EC* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:C412F5* - ID_OUI_FROM_DATABASE=D-Link International - -@@ -105962,9 +106652,15 @@ OUI:C43ABE* - OUI:C43C3C* - ID_OUI_FROM_DATABASE=CYBELEC SA - -+OUI:C43CB0* -+ ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD -+ - OUI:C43CEA* - ID_OUI_FROM_DATABASE=BUFFALO.INC - -+OUI:C43D1A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:C43DC7* - ID_OUI_FROM_DATABASE=NETGEAR - -@@ -106682,6 +107378,9 @@ OUI:C4E984* - OUI:C4EA1D* - ID_OUI_FROM_DATABASE=Technicolor Delivery Technologies Belgium NV - -+OUI:C4EB39* -+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -+ - OUI:C4EBE3* - ID_OUI_FROM_DATABASE=RRCN SAS - -@@ -106940,6 +107639,9 @@ OUI:C8292A* - OUI:C82A14* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:C82AF1* -+ ID_OUI_FROM_DATABASE=TCT mobile ltd -+ - OUI:C82B96* - ID_OUI_FROM_DATABASE=Espressif Inc. - -@@ -107018,6 +107720,9 @@ OUI:C83870* - OUI:C839AC* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -+OUI:C83A1B* -+ ID_OUI_FROM_DATABASE=Toshiba TEC Corporation Inc -+ - OUI:C83A35* - ID_OUI_FROM_DATABASE=Tenda Technology Co., Ltd. - -@@ -107081,6 +107786,9 @@ OUI:C8478C* - OUI:C848F5* - ID_OUI_FROM_DATABASE=MEDISON Xray Co., Ltd - -+OUI:C84BD6* -+ ID_OUI_FROM_DATABASE=Dell Inc. -+ - OUI:C84C75* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -107150,6 +107858,9 @@ OUI:C85CCC* - OUI:C85D38* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. - -+OUI:C85EA9* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:C86000* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -@@ -107549,6 +108260,9 @@ OUI:C8BE19* - OUI:C8BE35* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -+OUI:C8BF4C* -+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd -+ - OUI:C8BFFE* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -107849,6 +108563,9 @@ OUI:C8FF77* - OUI:CC0080* - ID_OUI_FROM_DATABASE=BETTINI SRL - -+OUI:CC037B* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:CC03D9* - ID_OUI_FROM_DATABASE=Cisco Meraki - -@@ -108041,6 +108758,9 @@ OUI:CC25EF* - OUI:CC262D* - ID_OUI_FROM_DATABASE=Verifi, LLC - -+OUI:CC29BD* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:CC29F5* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -109347,7 +110067,7 @@ OUI:D058C0* - ID_OUI_FROM_DATABASE=Qingdao Haier Multimedia Limited. - - OUI:D058FC* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:D05919* - ID_OUI_FROM_DATABASE=zte corporation -@@ -110381,6 +111101,9 @@ OUI:D44C9C* - OUI:D44CA7* - ID_OUI_FROM_DATABASE=Informtekhnika & Communication, LLC - -+OUI:D44D77* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:D44DA4* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. - -@@ -110409,7 +111132,7 @@ OUI:D45297* - ID_OUI_FROM_DATABASE=nSTREAMS Technologies, Inc. - - OUI:D452EE* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:D45383* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -@@ -110777,6 +111500,9 @@ OUI:D49AA0* - OUI:D49B5C* - ID_OUI_FROM_DATABASE=Chongqing Miedu Technology Co., Ltd. - -+OUI:D49B74* -+ ID_OUI_FROM_DATABASE=Kinetic Technologies -+ - OUI:D49C28* - ID_OUI_FROM_DATABASE=JayBird LLC - -@@ -110997,7 +111723,7 @@ OUI:D4D919* - ID_OUI_FROM_DATABASE=GoPro - - OUI:D4DACD* -- ID_OUI_FROM_DATABASE=BSkyB Ltd -+ ID_OUI_FROM_DATABASE=SKY UK LIMITED - - OUI:D4DC09* - ID_OUI_FROM_DATABASE=Mist Systems, Inc. -@@ -111494,6 +112220,9 @@ OUI:D867D9* - OUI:D86852* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:D868A0* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:D868C3* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -111554,6 +112283,9 @@ OUI:D87CDD* - OUI:D87D7F* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:D87E6F* -+ ID_OUI_FROM_DATABASE=CASCINATION AG -+ - OUI:D87E76* - ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED - -@@ -112004,6 +112736,9 @@ OUI:D8E72B* - OUI:D8E743* - ID_OUI_FROM_DATABASE=Wush, Inc - -+OUI:D8E844* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:D8E952* - ID_OUI_FROM_DATABASE=KEOPSYS - -@@ -112082,6 +112817,9 @@ OUI:D8FE8F* - OUI:D8FEE3* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:D8FFC3* -+ ID_OUI_FROM_DATABASE=Shenzhen 3SNIC information technology company Limited -+ - OUI:DC0077* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -112100,6 +112838,9 @@ OUI:DC0398* - OUI:DC052F* - ID_OUI_FROM_DATABASE=National Products Inc. - -+OUI:DC0539* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:DC0575* - ID_OUI_FROM_DATABASE=SIEMENS ENERGY AUTOMATION - -@@ -112121,6 +112862,9 @@ OUI:DC0914* - OUI:DC094C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:DC0B09* -+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc -+ - OUI:DC0B1A* - ID_OUI_FROM_DATABASE=ADB Broadband Italia - -@@ -112415,6 +113159,9 @@ OUI:DC44B6* - OUI:DC4517* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:DC4628* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:DC48B2* - ID_OUI_FROM_DATABASE=Baraja Pty. Ltd. - -@@ -112652,6 +113399,9 @@ OUI:DC8C37* - OUI:DC8D8A* - ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG - -+OUI:DC8DB7* -+ ID_OUI_FROM_DATABASE=ATW TECHNOLOGY, INC. -+ - OUI:DC8E95* - ID_OUI_FROM_DATABASE=Silicon Laboratories - -@@ -113054,6 +113804,9 @@ OUI:DCF090* - OUI:DCF110* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:DCF31C* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:DCF401* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -113123,6 +113876,9 @@ OUI:E0071B* - OUI:E007C2* - ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD - -+OUI:E00871* -+ ID_OUI_FROM_DATABASE=Dongguan Liesheng Electronic Co., Ltd. -+ - OUI:E009BF* - ID_OUI_FROM_DATABASE=SHENZHEN TONG BO WEI TECHNOLOGY Co.,LTD - -@@ -113162,6 +113918,9 @@ OUI:E013B5* - OUI:E0143E* - ID_OUI_FROM_DATABASE=Modoosis Inc. - -+OUI:E016B1* -+ ID_OUI_FROM_DATABASE=Advanced Design Technology co.,ltd. -+ - OUI:E01877* - ID_OUI_FROM_DATABASE=FUJITSU LIMITED - -@@ -113273,6 +114032,9 @@ OUI:E02CB2* - OUI:E02CF3* - ID_OUI_FROM_DATABASE=MRS Electronic GmbH - -+OUI:E02E0B* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:E02E3F* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -113390,6 +114152,9 @@ OUI:E05124* - OUI:E05163* - ID_OUI_FROM_DATABASE=Arcadyan Corporation - -+OUI:E051D8* -+ ID_OUI_FROM_DATABASE=China Dragon Technology Limited -+ - OUI:E0553D* - ID_OUI_FROM_DATABASE=Cisco Meraki - -@@ -113597,6 +114362,9 @@ OUI:E084F3* - OUI:E0859A* - ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. - -+OUI:E08614* -+ ID_OUI_FROM_DATABASE=Novatel Wireless Solutions, Inc. -+ - OUI:E087B1* - ID_OUI_FROM_DATABASE=Nata-Info Ltd. - -@@ -113630,6 +114398,9 @@ OUI:E091F5* - OUI:E0925C* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:E0928F* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:E092A7* - ID_OUI_FROM_DATABASE=Feitian Technologies Co., Ltd - -@@ -114065,6 +114836,9 @@ OUI:E0F678* - OUI:E0F6B5* - ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd - -+OUI:E0F728* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:E0F847* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -114482,6 +115256,9 @@ OUI:E46251* - OUI:E46449* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:E46564* -+ ID_OUI_FROM_DATABASE=SHENZHEN KTC TECHNOLOGY CO.,LTD -+ - OUI:E4671E* - ID_OUI_FROM_DATABASE=SHEN ZHEN NUO XIN CHENG TECHNOLOGY co., Ltd. - -@@ -114494,6 +115271,9 @@ OUI:E468A3* - OUI:E4695A* - ID_OUI_FROM_DATABASE=Dictum Health, Inc. - -+OUI:E46A35* -+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ - OUI:E46C21* - ID_OUI_FROM_DATABASE=messMa GmbH - -@@ -114776,6 +115556,9 @@ OUI:E4B318* - OUI:E4B503* - ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd. - -+OUI:E4B555* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:E4B633* - ID_OUI_FROM_DATABASE=Wuxi Stars Microsystem Technology Co., Ltd - -@@ -115694,6 +116477,9 @@ OUI:E8ABF3* - OUI:E8ABFA* - ID_OUI_FROM_DATABASE=Shenzhen Reecam Tech.Ltd. - -+OUI:E8AC23* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:E8ACAD* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -115838,6 +116624,9 @@ OUI:E8CC18* - OUI:E8CC32* - ID_OUI_FROM_DATABASE=Micronet LTD - -+OUI:E8CC8C* -+ ID_OUI_FROM_DATABASE=Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. -+ - OUI:E8CD2D* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -115994,6 +116783,9 @@ OUI:E8EDF3* - OUI:E8EECC* - ID_OUI_FROM_DATABASE=Fantasia Trading LLC - -+OUI:E8EF05* -+ ID_OUI_FROM_DATABASE=MIND TECH INTERNATIONAL LIMITED -+ - OUI:E8EF89* - ID_OUI_FROM_DATABASE=OPMEX Tech. - -@@ -116420,6 +117212,9 @@ OUI:EC71DB* - OUI:EC74BA* - ID_OUI_FROM_DATABASE=Hirschmann Automation and Control GmbH - -+OUI:EC74D7* -+ ID_OUI_FROM_DATABASE=Grandstream Networks Inc -+ - OUI:EC753E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -116633,6 +117428,9 @@ OUI:ECA29B* - OUI:ECA5DE* - ID_OUI_FROM_DATABASE=ONYX WIFI Inc - -+OUI:ECA62F* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:ECA81F* - ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. - -@@ -116807,6 +117605,9 @@ OUI:ECE512* - OUI:ECE555* - ID_OUI_FROM_DATABASE=Hirschmann Automation - -+OUI:ECE6A2* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:ECE744* - ID_OUI_FROM_DATABASE=Omntec mfg. inc - -@@ -117467,6 +118268,9 @@ OUI:F085C1* - OUI:F08620* - ID_OUI_FROM_DATABASE=Arcadyan Corporation - -+OUI:F08756* -+ ID_OUI_FROM_DATABASE=Zyxel Communications Corporation -+ - OUI:F0877F* - ID_OUI_FROM_DATABASE=Magnetar Technology Shenzhen Co., LTD. - -@@ -117719,6 +118523,9 @@ OUI:F0BE25* - OUI:F0BF97* - ID_OUI_FROM_DATABASE=Sony Corporation - -+OUI:F0C1CE* -+ ID_OUI_FROM_DATABASE=GoodWe Technologies CO., Ltd -+ - OUI:F0C1F1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -118154,6 +118961,9 @@ OUI:F42012* - OUI:F421AE* - ID_OUI_FROM_DATABASE=Shanghai Xiaodu Technology Limited - -+OUI:F4227A* -+ ID_OUI_FROM_DATABASE=Guangdong Seneasy Intelligent Technology Co., Ltd. -+ - OUI:F4239C* - ID_OUI_FROM_DATABASE=SERNET (SUZHOU) TECHNOLOGIES CORPORATION - -@@ -118217,6 +119027,9 @@ OUI:F438C1* - OUI:F43909* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:F43BD8* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:F43D80* - ID_OUI_FROM_DATABASE=FAG Industrial Services GmbH - -@@ -118430,8 +119243,11 @@ OUI:F46ABC* - OUI:F46AD7* - ID_OUI_FROM_DATABASE=Microsoft Corporation - -+OUI:F46ADD* -+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation -+ - OUI:F46B8C* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:F46BEF* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -@@ -118445,6 +119261,9 @@ OUI:F46D04* - OUI:F46D2F* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -+OUI:F46D3F* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:F46DE2* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -118647,7 +119466,7 @@ OUI:F492BF* - ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc. - - OUI:F4939F* -- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - - OUI:F49461* - ID_OUI_FROM_DATABASE=NexGen Storage -@@ -119333,6 +120152,9 @@ OUI:F828C9* - OUI:F829C0* - ID_OUI_FROM_DATABASE=Availink, Inc. - -+OUI:F82B7F* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:F82BC8* - ID_OUI_FROM_DATABASE=Jiangsu Switter Co., Ltd - -@@ -120608,6 +121430,42 @@ OUI:FC6018* - OUI:FC609B* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -+OUI:FC61790* -+ ID_OUI_FROM_DATABASE=Zhuhai Anjubao Electronics Technology Co., Ltd. -+ -+OUI:FC61791* -+ ID_OUI_FROM_DATABASE=Signalinks Communication Technology Co.,Ltd -+ -+OUI:FC61792* -+ ID_OUI_FROM_DATABASE=Shenzhen Shenshui Electronic Commerce Co.,Ltd -+ -+OUI:FC61793* -+ ID_OUI_FROM_DATABASE=EchoStar Mobile -+ -+OUI:FC61794* -+ ID_OUI_FROM_DATABASE=CHOEUNENG -+ -+OUI:FC61795* -+ ID_OUI_FROM_DATABASE=Qisda Corporation -+ -+OUI:FC61796* -+ ID_OUI_FROM_DATABASE=Hangzhou LiDe Communication Co.,Ltd -+ -+OUI:FC61797* -+ ID_OUI_FROM_DATABASE=Kvaliteta Systems and Solutions Private Limited -+ -+OUI:FC61798* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ -+OUI:FC61799* -+ ID_OUI_FROM_DATABASE=MACH SYSTEMS s.r.o. -+ -+OUI:FC6179A* -+ ID_OUI_FROM_DATABASE=Shenzhen Dptek Technology Co., Ltd. -+ -+OUI:FC6179D* -+ ID_OUI_FROM_DATABASE=Int'Act Pty Ltd -+ - OUI:FC6198* - ID_OUI_FROM_DATABASE=NEC Personal Products, Ltd - -@@ -120983,6 +121841,9 @@ OUI:FCC2DE* - OUI:FCC734* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:FCC737* -+ ID_OUI_FROM_DATABASE=Shaanxi Gangsion Electronic Technology Co., Ltd -+ - OUI:FCC897* - ID_OUI_FROM_DATABASE=zte corporation - -diff --git a/hwdb.d/20-acpi-vendor.hwdb b/hwdb.d/20-acpi-vendor.hwdb -index 7fdb463e10..e23dbbbc95 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb -+++ b/hwdb.d/20-acpi-vendor.hwdb -@@ -223,7 +223,7 @@ acpi:MXIM*: - ID_VENDOR_FROM_DATABASE=Maxim Integrated - - acpi:NOLO*: -- ID_VENDOR_FROM_DATABASE=NOLO VR -+ ID_VENDOR_FROM_DATABASE=NOLO Co., Ltd. - - acpi:NVDA*: - ID_VENDOR_FROM_DATABASE=Nvidia -@@ -4285,7 +4285,7 @@ acpi:MAS*: - ID_VENDOR_FROM_DATABASE=Mass Inc. - - acpi:MAT*: -- ID_VENDOR_FROM_DATABASE=Matsushita Electric Ind. Company Ltd -+ ID_VENDOR_FROM_DATABASE=Panasonic Connect Co.,Ltd. - - acpi:MAX*: - ID_VENDOR_FROM_DATABASE=Rogen Tech Distribution Inc -diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch -index d1781e419f..f88a96ed30 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb.patch -+++ b/hwdb.d/20-acpi-vendor.hwdb.patch -@@ -1,5 +1,5 @@ ----- 20-acpi-vendor.hwdb.base 2022-03-29 12:18:39.832815359 +0200 --+++ 20-acpi-vendor.hwdb 2022-03-29 12:18:39.838815428 +0200 -+--- 20-acpi-vendor.hwdb.base 2022-04-28 17:39:22.374730080 +0200 -++++ 20-acpi-vendor.hwdb 2022-04-28 17:39:22.381730080 +0200 - @@ -3,6 +3,8 @@ - # Data imported from: - # https://uefi.org/uefi-pnp-export -diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb -index dba7d96d3e..b55bd82327 100644 ---- a/hwdb.d/20-pci-vendor-model.hwdb -+++ b/hwdb.d/20-pci-vendor-model.hwdb -@@ -212,6 +212,27 @@ pci:v00000731d00007200sv00000731sd00007214* - pci:v00000731d00007200sv00000731sd00007215* - ID_MODEL_FROM_DATABASE=JM7200 Series GPU (JM7200) - -+pci:v00000731d00009100* -+ ID_MODEL_FROM_DATABASE=JM9100 -+ -+pci:v00000731d00009100sv00000731sd00009101* -+ ID_MODEL_FROM_DATABASE=JM9100 -+ -+pci:v00000731d00009100sv00000731sd00009102* -+ ID_MODEL_FROM_DATABASE=JM9100 (-I) -+ -+pci:v00000731d0000910A* -+ ID_MODEL_FROM_DATABASE=JH910 -+ -+pci:v00000731d0000910Asv00000731sd0000910A* -+ ID_MODEL_FROM_DATABASE=JH910 -+ -+pci:v00000731d0000910Asv00000731sd0000910B* -+ ID_MODEL_FROM_DATABASE=JH910 (-I) -+ -+pci:v00000731d0000910Asv00000731sd0000910C* -+ ID_MODEL_FROM_DATABASE=JH910 (-M) -+ - pci:v00000731d00009200* - ID_MODEL_FROM_DATABASE=JM9200 - -@@ -1901,6 +1922,9 @@ pci:v00001000d00000087sv00001000sd00003060* - pci:v00001000d00000087sv00001014sd00000472* - ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (N2125 External Host Bus Adapter) - -+pci:v00001000d00000087sv00001014sd0000047A* -+ ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (N2115 Internal Host Bus Adapter) -+ - pci:v00001000d00000087sv00001590sd00000041* - ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (H220i) - -@@ -2070,34 +2094,34 @@ pci:v00001000d000000A5sv00001000sd000046D0* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (eHBA 9600-8i8e Tri-Mode Storage Adapter) - - pci:v00001000d000000A5sv00001028sd00002114* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965 Adapter) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965i Adapter) - - pci:v00001000d000000A5sv00001028sd00002115* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965 Front) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965i Front) - - pci:v00001000d000000A5sv00001028sd00002117* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965 MX) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965i MX) - - pci:v00001000d000000A5sv00001028sd0000213A* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H965e Adapter) - - pci:v00001000d000000A5sv00001028sd0000213B* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765 Adapter) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765i Adapter) - - pci:v00001000d000000A5sv00001028sd0000213C* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765 Front) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765i Front) - - pci:v00001000d000000A5sv00001028sd0000213D* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765N Front) - - pci:v00001000d000000A5sv00001028sd0000213E* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765 MX) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H765i MX) - - pci:v00001000d000000A5sv00001028sd0000213F* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365 Adapter) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365i Adapter) - - pci:v00001000d000000A5sv00001028sd00002140* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365 Front) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365i Front) - - pci:v00001000d000000A5sv00001028sd00002141* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H360 MX) -@@ -3030,7 +3054,10 @@ pci:v00001002d00001638* - ID_MODEL_FROM_DATABASE=Cezanne - - pci:v00001002d0000163F* -- ID_MODEL_FROM_DATABASE=VanGogh -+ ID_MODEL_FROM_DATABASE=VanGogh [AMD Custom GPU 0405] -+ -+pci:v00001002d00001640* -+ ID_MODEL_FROM_DATABASE=Rembrandt Radeon High Definition Audio Controller - - pci:v00001002d0000164C* - ID_MODEL_FROM_DATABASE=Lucienne -@@ -36758,6 +36785,12 @@ pci:v000010DEd000020B6* - pci:v000010DEd000020B7* - ID_MODEL_FROM_DATABASE=GA100GL [A30 PCIe] - -+pci:v000010DEd000020B8* -+ ID_MODEL_FROM_DATABASE=GA100 [A100X] -+ -+pci:v000010DEd000020B9* -+ ID_MODEL_FROM_DATABASE=GA100 [A30X] -+ - pci:v000010DEd000020BB* - ID_MODEL_FROM_DATABASE=GA100 [DRIVE A100 PROD] - -@@ -36821,6 +36854,9 @@ pci:v000010DEd000021D1* - pci:v000010DEd00002200* - ID_MODEL_FROM_DATABASE=GA102 - -+pci:v000010DEd00002203* -+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3090 Ti] -+ - pci:v000010DEd00002204* - ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3090] - -@@ -36965,6 +37001,9 @@ pci:v000010DEd000024AF* - pci:v000010DEd000024B0* - ID_MODEL_FROM_DATABASE=GA104GL [RTX A4000] - -+pci:v000010DEd000024B1* -+ ID_MODEL_FROM_DATABASE=GA104GL [RTX A4000H] -+ - pci:v000010DEd000024B6* - ID_MODEL_FROM_DATABASE=GA104GLM [RTX A5000 Mobile] - -@@ -37043,6 +37082,9 @@ pci:v000010DEd000025A0* - pci:v000010DEd000025A2* - ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 3050 Mobile] - -+pci:v000010DEd000025A3* -+ ID_MODEL_FROM_DATABASE=GA107 -+ - pci:v000010DEd000025A4* - ID_MODEL_FROM_DATABASE=GA107 - -@@ -37058,6 +37100,9 @@ pci:v000010DEd000025A7* - pci:v000010DEd000025A9* - ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 2050] - -+pci:v000010DEd000025AA* -+ ID_MODEL_FROM_DATABASE=GA107M [GeForce MX570 A] -+ - pci:v000010DEd000025AF* - ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050 Engineering Sample] - -@@ -37211,6 +37256,9 @@ pci:v000010DFd0000E300sv00001014sd00000614* - pci:v000010DFd0000E300sv00001014sd00000615* - ID_MODEL_FROM_DATABASE=LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter (PCIe3 2-Port 32Gb Fibre Channel Adapter for POWER (FC EN1A/EN1B; CCIN 578F)) - -+pci:v000010DFd0000E300sv00001014sd000006A0* -+ ID_MODEL_FROM_DATABASE=LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter (PCIe3 2-Port 16Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC)) -+ - pci:v000010DFd0000E300sv000010DFsd0000E300* - ID_MODEL_FROM_DATABASE=LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter (LPe32002-M2 2-Port 32Gb Fibre Channel Adapter) - -@@ -37370,6 +37418,12 @@ pci:v000010DFd0000F400sv000010DFsd0000F418* - pci:v000010DFd0000F400sv000010DFsd0000F419* - ID_MODEL_FROM_DATABASE=LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter) - -+pci:v000010DFd0000F400sv000010DFsd0000F421* -+ ID_MODEL_FROM_DATABASE=LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (LPe36002-M2-L 2-Port 64Gb PCIe Fibre Channel Adapter) -+ -+pci:v000010DFd0000F400sv000010DFsd0000F422* -+ ID_MODEL_FROM_DATABASE=LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter) -+ - pci:v000010DFd0000F400sv00001590sd000002D5* - ID_MODEL_FROM_DATABASE=LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter) - -@@ -37379,6 +37433,12 @@ pci:v000010DFd0000F400sv00001590sd000002D6* - pci:v000010DFd0000F500* - ID_MODEL_FROM_DATABASE=LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter - -+pci:v000010DFd0000F500sv00001014sd000006C1* -+ ID_MODEL_FROM_DATABASE=LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter (PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC)) -+ -+pci:v000010DFd0000F500sv00001014sd000006C2* -+ ID_MODEL_FROM_DATABASE=LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter (PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD)) -+ - pci:v000010DFd0000F700* - ID_MODEL_FROM_DATABASE=LP7000 Fibre Channel Host Adapter - -@@ -47000,6 +47060,9 @@ pci:v000011F8d00008535* - pci:v000011F8d00008536* - ID_MODEL_FROM_DATABASE=PM8536 PFX 96xG3 PCIe Fanout Switch - -+pci:v000011F8d00008536sv00001BD4sd00000081* -+ ID_MODEL_FROM_DATABASE=PM8536 PFX 96xG3 PCIe Fanout Switch -+ - pci:v000011F8d00008546* - ID_MODEL_FROM_DATABASE=PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch - -@@ -50861,6 +50924,12 @@ pci:v00001344d00005191* - pci:v00001344d00005192* - ID_MODEL_FROM_DATABASE=9200 MAX NVMe SSD - -+pci:v00001344d000051A2* -+ ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD -+ -+pci:v00001344d000051A3* -+ ID_MODEL_FROM_DATABASE=9300 MAX NVMe SSD -+ - pci:v00001345* - ID_VENDOR_FROM_DATABASE=Arescom Inc - -@@ -58235,6 +58304,9 @@ pci:v000014E4d000016D6sv0000152Dsd00008B20* - pci:v000014E4d000016D6sv0000152Dsd00008B22* - ID_MODEL_FROM_DATABASE=BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller (BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller) - -+pci:v000014E4d000016D6sv0000193Dsd00001024* -+ ID_MODEL_FROM_DATABASE=BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller (NIC-ETH531F-LP-2P) -+ - pci:v000014E4d000016D7* - ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller - -@@ -59285,6 +59357,9 @@ pci:v000014E4d0000A8D8* - pci:v000014E4d0000AA52* - ID_MODEL_FROM_DATABASE=BCM43602 802.11ac Wireless LAN SoC - -+pci:v000014E4d0000B080* -+ ID_MODEL_FROM_DATABASE=BCM56080 Firelight2 Switch ASIC -+ - pci:v000014E4d0000B302* - ID_MODEL_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller - -@@ -65163,10 +65238,10 @@ pci:v000017CBd00001000* - ID_MODEL_FROM_DATABASE=QCS405 PCIe Root Complex - - pci:v000017CBd00001101* -- ID_MODEL_FROM_DATABASE=QCA6390 Wireless Network Adapter [AX500-DBS (2x2)] -+ ID_MODEL_FROM_DATABASE=QCA6390 Wireless Network Adapter - - pci:v000017CBd00001103* -- ID_MODEL_FROM_DATABASE=Atheros QCNFA765 -+ ID_MODEL_FROM_DATABASE=QCNFA765 Wireless Network Adapter - - pci:v000017CBd00001104* - ID_MODEL_FROM_DATABASE=QCN6024/9024/9074 Wireless Network Adapter -@@ -69683,6 +69758,54 @@ pci:v00001BB1d00000100sv00001BB1sd00000157* - pci:v00001BB1d00000100sv00001BB1sd00000158* - ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5050M TCG 7mm) - -+pci:v00001BB1d00000100sv00001BB1sd00000159* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000160* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000161* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M 7mm) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000162* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M TCG 7mm) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000163* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000164* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000165* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H E3.S 1T) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000166* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H E3.S 1T TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000167* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H E3.L 1T) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000168* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060H E3.L 1T TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000169* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E3.S 1T) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000170* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E3.S 1T TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000171* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E3.L 1T) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000172* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E3.L 1T TCG) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000173* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E1.S) -+ -+pci:v00001BB1d00000100sv00001BB1sd00000174* -+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5060M E1.S TCG) -+ - pci:v00001BB1d00000100sv00001BB1sd000001A1* - ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro XP7102) - -@@ -70814,6 +70937,12 @@ pci:v00001D6Ad000000B1* - pci:v00001D6Ad000007B1* - ID_MODEL_FROM_DATABASE=AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - -+pci:v00001D6Ad000007B1sv00001BAAsd000007B1* -+ ID_MODEL_FROM_DATABASE=AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] (QM2-2P10G1TA [QXG 10GbE Network Adapter]) -+ -+pci:v00001D6Ad000007B1sv00001BAAsd000007B2* -+ ID_MODEL_FROM_DATABASE=AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] (QM2-2P10G1TA [QM2 Expansion Adapter]) -+ - pci:v00001D6Ad000008B1* - ID_MODEL_FROM_DATABASE=AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - -@@ -70826,6 +70955,12 @@ pci:v00001D6Ad000012B1* - pci:v00001D6Ad000087B1* - ID_MODEL_FROM_DATABASE=AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - -+pci:v00001D6Ad000094C0* -+ ID_MODEL_FROM_DATABASE=AQC113CS NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] -+ -+pci:v00001D6Ad000094C0sv00001043sd000087F5* -+ ID_MODEL_FROM_DATABASE=AQC113CS NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] (ProArt X570-CREATOR WIFI) -+ - pci:v00001D6Ad0000D107* - ID_MODEL_FROM_DATABASE=AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - -@@ -72345,8 +72480,29 @@ pci:v00001ED5d00000100* - ID_MODEL_FROM_DATABASE=MTT S10 - - pci:v00001ED5d00000101* -+ ID_MODEL_FROM_DATABASE=MTT S10 -+ -+pci:v00001ED5d00000102* - ID_MODEL_FROM_DATABASE=MTT S30 - -+pci:v00001ED5d00000105* -+ ID_MODEL_FROM_DATABASE=MTT S50 -+ -+pci:v00001ED5d00000106* -+ ID_MODEL_FROM_DATABASE=MTT S60 -+ -+pci:v00001ED5d00000111* -+ ID_MODEL_FROM_DATABASE=MTT S100 -+ -+pci:v00001ED5d00000121* -+ ID_MODEL_FROM_DATABASE=MTT S1000M -+ -+pci:v00001ED5d00000122* -+ ID_MODEL_FROM_DATABASE=MTT S1000 -+ -+pci:v00001ED5d00000123* -+ ID_MODEL_FROM_DATABASE=MTT S2000 -+ - pci:v00001ED8* - ID_VENDOR_FROM_DATABASE=Digiteq Automotive - -@@ -72368,6 +72524,15 @@ pci:v00001EECd00000102* - pci:v00001EECd00001EEC* - ID_MODEL_FROM_DATABASE=VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe - -+pci:v00001EED* -+ ID_VENDOR_FROM_DATABASE=Xiangdixian Computing Technology (Chongqing) Ltd. -+ -+pci:v00001EEDd00000100* -+ ID_MODEL_FROM_DATABASE=XDX P100 VGA controller -+ -+pci:v00001EEDd00000101* -+ ID_MODEL_FROM_DATABASE=XDX P101 High Definition Audio Controller -+ - pci:v00001EFB* - ID_VENDOR_FROM_DATABASE=Flexxon Pte Ltd - -@@ -73943,6 +74108,12 @@ pci:v00004DDCd00002F00* - pci:v00004DDCd00003000* - ID_MODEL_FROM_DATABASE=SB-3644 Motion Feedback Device - -+pci:v00004E58* -+ ID_VENDOR_FROM_DATABASE=Nutanix, Inc. -+ -+pci:v00004E58d00000001* -+ ID_MODEL_FROM_DATABASE=Virtual NVMe Controller -+ - pci:v00005045* - ID_VENDOR_FROM_DATABASE=University of Toronto - -@@ -77060,11 +77231,14 @@ pci:v00008086d00000DD2sv00008086sd0000401A* - pci:v00008086d00000DD2sv00008086sd0000401B* - ID_MODEL_FROM_DATABASE=Ethernet Network Adapter I710 (-T4L for OCP 3.0) - -+pci:v00008086d00000DD5* -+ ID_MODEL_FROM_DATABASE=Ethernet Adaptive Virtual Function -+ - pci:v00008086d00000DDA* - ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ - - pci:v00008086d00000DDAsv00001BD4sd00000076* -- ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ -+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Ethernet Connection F102IX722 for 10GbE SFP) - - pci:v00008086d00000E00* - ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 -@@ -81083,15 +81257,27 @@ pci:v00008086d00001592sv00008086sd0000000D* - pci:v00008086d00001592sv00008086sd0000000E* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-2C-Q2) - -+pci:v00008086d00001592sv00008086sd0000000F* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-C-Q2T) -+ - pci:v00008086d00001592sv00008086sd00000010* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet 100G 2P E810-C-stg Adapter) - -+pci:v00008086d00001592sv00008086sd00000011* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-C-Q1 for OCP3.0) -+ - pci:v00008086d00001593* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP - - pci:v00008086d00001593sv00001137sd000002C3* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC) - -+pci:v00008086d00001593sv00001137sd000002E9* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC) -+ -+pci:v00008086d00001593sv00001137sd000002EA* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC) -+ - pci:v00008086d00001593sv00008086sd00000002* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet Network Adapter E810-L-2) - -@@ -81128,6 +81314,12 @@ pci:v00008086d00001593sv00008086sd0000000F* - pci:v00008086d00001593sv00008086sd00000010* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet 25G 4P E810-XXV-st Adapter) - -+pci:v00008086d00001593sv00008086sd00004010* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet Network Adapter E810-XXV-4) -+ -+pci:v00008086d00001593sv00008086sd00004013* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP (Ethernet Network Adapter E810-XXV-4 for OCP 3.0) -+ - pci:v00008086d00001599* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for backplane - -@@ -81176,6 +81368,9 @@ pci:v00008086d0000159Bsv00008086sd00004002* - pci:v00008086d0000159Bsv00008086sd00004003* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (Ethernet Network Adapter E810-XXV-2) - -+pci:v00008086d0000159Bsv00008086sd00004015* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (Ethernet Network Adapter E810-XXV-2 for OCP 3.0) -+ - pci:v00008086d000015A0* - ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM - -@@ -92258,6 +92453,9 @@ pci:v00008086d000034BA* - pci:v00008086d000034BC* - ID_MODEL_FROM_DATABASE=Ice Lake-LP PCI Express Root Port #5 - -+pci:v00008086d000034C4* -+ ID_MODEL_FROM_DATABASE=Ice Lake-LP SD Host Controller -+ - pci:v00008086d000034C5* - ID_MODEL_FROM_DATABASE=Ice Lake-LP Serial IO I2c Controller #4 - -@@ -96383,6 +96581,9 @@ pci:v00008086d00008A51* - pci:v00008086d00008A52* - ID_MODEL_FROM_DATABASE=Iris Plus Graphics G7 - -+pci:v00008086d00008A53* -+ ID_MODEL_FROM_DATABASE=Iris Plus Graphics G7 -+ - pci:v00008086d00008A56* - ID_MODEL_FROM_DATABASE=Iris Plus Graphics G1 (Ice Lake) - -@@ -99485,6 +99686,9 @@ pci:v00008820* - pci:v00008820d00002724* - ID_MODEL_FROM_DATABASE=Mako Front Side Motor Controller [cPCI] - -+pci:v00008848* -+ ID_VENDOR_FROM_DATABASE=Wuxi Micro Innovation Integrated Circuit Design Co.,Ltd -+ - pci:v00008866* - ID_VENDOR_FROM_DATABASE=T-Square Design Inc. - -@@ -100589,6 +100793,18 @@ pci:v00009005d0000028Fsv00001BD4sd00000071* - pci:v00009005d0000028Fsv00001BD4sd00000072* - ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0800M5E16i) - -+pci:v00009005d0000028Fsv00001BD4sd00000077* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0800M5E16iM) -+ -+pci:v00009005d0000028Fsv00001BD4sd00000078* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0800M5E24iM) -+ -+pci:v00009005d0000028Fsv00001BD4sd00000079* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0800M5H24iM) -+ -+pci:v00009005d0000028Fsv00001BD4sd00000080* -+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RS0804M5R16iM) -+ - pci:v00009005d0000028Fsv00001CC4sd00000101* - ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (Ramaxel FBGF-RAD PM8204) - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index 4bcb238815..c0e6f59917 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -10178,6 +10178,24 @@ usb:v0482p06B4* - usb:v0483* - ID_VENDOR_FROM_DATABASE=STMicroelectronics - -+usb:v0483p0102* -+ ID_MODEL_FROM_DATABASE=Remote NDIS Network device with Android debug (ADB) -+ -+usb:v0483p0103* -+ ID_MODEL_FROM_DATABASE=Remote NDIS Network device -+ -+usb:v0483p0104* -+ ID_MODEL_FROM_DATABASE=MTP device with Android debug (ADB) -+ -+usb:v0483p0105* -+ ID_MODEL_FROM_DATABASE=MTP device -+ -+usb:v0483p0106* -+ ID_MODEL_FROM_DATABASE=PTP device with Android debug (ADB) -+ -+usb:v0483p0107* -+ ID_MODEL_FROM_DATABASE=PTP device -+ - usb:v0483p0137* - ID_MODEL_FROM_DATABASE=BeWAN ADSL USB ST (blue or green) - -@@ -44831,6 +44849,18 @@ usb:v0E25* - usb:v0E26* - ID_VENDOR_FROM_DATABASE=J-Phone East Co., Ltd - -+usb:v0E2E* -+ ID_VENDOR_FROM_DATABASE=Brady Worldwide, Inc. -+ -+usb:v0E2Ep000B* -+ ID_MODEL_FROM_DATABASE=BMP 51 -+ -+usb:v0E2Ep000C* -+ ID_MODEL_FROM_DATABASE=BMP 61 -+ -+usb:v0E2Ep000D* -+ ID_MODEL_FROM_DATABASE=BMP 41 -+ - usb:v0E30* - ID_VENDOR_FROM_DATABASE=HeartMath LLC - -diff --git a/hwdb.d/acpi_id_registry.html b/hwdb.d/acpi_id_registry.html -index b2a6844521..cd4ac8c553 100644 ---- a/hwdb.d/acpi_id_registry.html -+++ b/hwdb.d/acpi_id_registry.html -@@ -112,7 +112,7 @@ - Wacom TechnologyWACF09/21/2021 - Shanghai Aiwei Electronic Technology Co., Ltd.AWDZ12/31/2021 - Silicom Ltd. Connectivity SolutionsSILC03/28/2022 -- NOLO VRNOLO03/28/2022 -+ NOLO Co., Ltd.NOLO03/28/2022 - - - -diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt -index eb99ea7fb0..67fd6c1836 100644 ---- a/hwdb.d/ma-large.txt -+++ b/hwdb.d/ma-large.txt -@@ -437,12 +437,6 @@ AC5D5C (base 16) FN-LINK TECHNOLOGY LIMITED - SHENZHEN GUANGDONG 518100 - CN - --A4-AE-11 (hex) Hon Hai Precision Ind. Co., Ltd. --A4AE11 (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - 54-DE-D0 (hex) Sevio Srl - 54DED0 (base 16) Sevio Srl - Via Dei Caniana 6/A -@@ -1523,12 +1517,6 @@ CCE194 (base 16) Juniper Networks - Sunnyvale CA 94089 - US - --90-02-18 (hex) BSkyB Ltd --900218 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 14-4E-2A (hex) Ciena Corporation - 144E2A (base 16) Ciena Corporation - 7035 Ridge Road -@@ -2963,12 +2951,6 @@ A8D498 (base 16) Avira Operations GmbH & Co. KG - Sunnyvale CA 94089 - US - --D0-58-FC (hex) BSkyB Ltd --D058FC (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 14-57-9F (hex) HUAWEI TECHNOLOGIES CO.,LTD - 14579F (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -8222,12 +8204,6 @@ D0B0CD (base 16) Moen - North Olmstead OH 44070-8022 - US - --70-50-AF (hex) BSkyB Ltd --7050AF (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - F4-EF-9E (hex) SGSG SCIENCE & TECHNOLOGY CO. LTD - F4EF9E (base 16) SGSG SCIENCE & TECHNOLOGY CO. LTD - 3RD Fl, Bldg A3, No.1 software Park Rd -@@ -10064,12 +10040,6 @@ B499BA (base 16) Hewlett Packard - Beijing 100101 - CN - --0C-F9-C0 (hex) BSkyB Ltd --0CF9C0 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 4C-FF-12 (hex) Fuze Entertainment Co., ltd - 4CFF12 (base 16) Fuze Entertainment Co., ltd - 3rd Floor Harbour Centre -@@ -10616,12 +10586,6 @@ D07AB5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Chongqing Chongqing 401332 - CN - --7C-4C-A5 (hex) BSkyB Ltd --7C4CA5 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 00-14-A4 (hex) Hon Hai Precision Ind. Co.,Ltd. - 0014A4 (base 16) Hon Hai Precision Ind. Co.,Ltd. - Building D21,No.1, East Zone 1st Road -@@ -10682,12 +10646,6 @@ C87B5B (base 16) zte corporation - Seoul 13456 - KR - --C0-3E-0F (hex) BSkyB Ltd --C03E0F (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 90-4E-2B (hex) HUAWEI TECHNOLOGIES CO.,LTD - 904E2B (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -32636,12 +32594,6 @@ B0E4D5 (base 16) Google, Inc. - Mountain View CA 94043 - US - --D4-DA-CD (hex) BSkyB Ltd --D4DACD (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 68-69-CA (hex) Hitachi, Ltd. - 6869CA (base 16) Hitachi, Ltd. - 27-18, Minami Oi 6-chome, Shinagawa-ku -@@ -34187,18 +34139,6 @@ BC0F9A (base 16) D-Link International - Singapore Singapore 609917 - SG - --B0-45-30 (hex) BSkyB Ltd --B04530 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- --6C-A0-B4 (hex) BSkyB Ltd --6CA0B4 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 94-7B-BE (hex) Ubicquia LLC - 947BBE (base 16) Ubicquia LLC - BoA Building–Suite 1750, 401 E. Las Olas Boulevard -@@ -36797,12 +36737,6 @@ F8C3CC (base 16) Apple, Inc. - Hangzhou Zhejiang 310052 - CN - --3C-9E-C7 (hex) BSkyB Ltd --3C9EC7 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 18-5B-00 (hex) Nokia - 185B00 (base 16) Nokia - 600 March Road -@@ -38165,12 +38099,306 @@ C09F51 (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - Piscataway NJ 08554 - US - -+A0-CD-F3 (hex) Murata Manufacturing Co., Ltd. -+A0CDF3 (base 16) Murata Manufacturing Co., Ltd. -+ 1-10-1, Higashikotari -+ Nagaokakyo-shi Kyoto 617-8555 -+ JP -+ -+B4-8A-0A (hex) Espressif Inc. -+B48A0A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+C8-3A-1B (hex) Toshiba TEC Corporation Inc -+C83A1B (base 16) Toshiba TEC Corporation Inc -+ Oval Court Ohsaki Mark East -+ Shinagawa-ku Tokyo 141-8664 -+ JP -+ -+EC-A6-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD -+ECA62F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+AC-5A-F0 (hex) LG Electronics -+AC5AF0 (base 16) LG Electronics -+ 222 LG-ro, JINWI-MYEON -+ Pyeongtaek-si Gyeonggi-do 451-713 -+ KR -+ - 5C-53-C3 (hex) Ubee Interactive Co., Limited - 5C53C3 (base 16) Ubee Interactive Co., Limited - Flat/RM 1202, 12/F, AT Tower, 180 Electric Road - North Point 00000 - HK - -+24-32-AE (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -+2432AE (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -+ No.555 Qianmo Road -+ Hangzhou Zhejiang 310052 -+ CN -+ -+38-22-F4 (hex) Huawei Device Co., Ltd. -+3822F4 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+0C-BE-F1 (hex) Huawei Device Co., Ltd. -+0CBEF1 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+AC-93-6A (hex) Huawei Device Co., Ltd. -+AC936A (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+38-A4-4B (hex) Huawei Device Co., Ltd. -+38A44B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+1C-0E-D3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+1C0ED3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+7C-4C-A5 (hex) SKY UK LIMITED -+7C4CA5 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+C0-3E-0F (hex) SKY UK LIMITED -+C03E0F (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+0C-F9-C0 (hex) SKY UK LIMITED -+0CF9C0 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+70-50-AF (hex) SKY UK LIMITED -+7050AF (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+24-29-34 (hex) Google, Inc. -+242934 (base 16) Google, Inc. -+ 1600 Amphitheatre Parkway -+ Mountain View CA 94043 -+ US -+ -+38-0A-4F (hex) PRACHI ENTERPRISES -+380A4F (base 16) PRACHI ENTERPRISES -+ B-141, 2nd FLOOR SECTOR-6 NOIDA -+ NOIDA UTTARPRADESH 201301 -+ IN -+ -+80-19-70 (hex) Samsung Electronics Co.,Ltd -+801970 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+E0-F7-28 (hex) Amazon Technologies Inc. -+E0F728 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+B8-FB-AF (hex) Xiamen IPRT Technology CO.,LTD -+B8FBAF (base 16) Xiamen IPRT Technology CO.,LTD -+ 3~5Floor,No.101,Huili Industry Park,Meixi Road,Tongan District,Xiamen,China. -+ xiamen fujian 361000 -+ CN -+ -+34-85-18 (hex) Espressif Inc. -+348518 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+D4-DA-CD (hex) SKY UK LIMITED -+D4DACD (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+B0-45-30 (hex) SKY UK LIMITED -+B04530 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+6C-A0-B4 (hex) SKY UK LIMITED -+6CA0B4 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+3C-9E-C7 (hex) SKY UK LIMITED -+3C9EC7 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+EC-E6-A2 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+ECE6A2 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+04-E8-B9 (hex) Intel Corporate -+04E8B9 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+E0-2E-0B (hex) Intel Corporate -+E02E0B (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+A4-AE-11 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE11 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+D0-58-FC (hex) SKY UK LIMITED -+D058FC (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+90-02-18 (hex) SKY UK LIMITED -+900218 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+38-5C-FB (hex) Silicon Laboratories -+385CFB (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+C4-3D-1A (hex) Intel Corporate -+C43D1A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+BC-F8-8B (hex) zte corporation -+BCF88B (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+68-53-9D (hex) EM Microelectronic -+68539D (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+E4-65-64 (hex) SHENZHEN KTC TECHNOLOGY CO.,LTD -+E46564 (base 16) SHENZHEN KTC TECHNOLOGY CO.,LTD -+ Add: NO.4023, Wuhe Road, Bantian, Longgang District, Shenzhen, China -+ SHEN ZHEN GUANG DONG 518100 -+ CN -+ -+C8-BF-4C (hex) Beijing Xiaomi Mobile Software Co., Ltd -+C8BF4C (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 -+ CN -+ -+E8-CC-8C (hex) Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. -+E8CC8C (base 16) Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. -+ 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -+ Chengdu Sichuan 610000 -+ CN -+ -+58-1C-F8 (hex) Intel Corporate -+581CF8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+AC-19-8E (hex) Intel Corporate -+AC198E (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+C8-5E-A9 (hex) Intel Corporate -+C85EA9 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+3C-E0-64 (hex) Texas Instruments -+3CE064 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+E0-92-8F (hex) Texas Instruments -+E0928F (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+CC-03-7B (hex) Texas Instruments -+CC037B (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+E0-51-D8 (hex) China Dragon Technology Limited -+E051D8 (base 16) China Dragon Technology Limited -+ B4 Bldg.Haoshan 1st Industry Park, -+ Shenzhen Guangdong 518104 -+ CN -+ -+CC-29-BD (hex) zte corporation -+CC29BD (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+7C-DE-78 (hex) New H3C Technologies Co., Ltd -+7CDE78 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+5C-60-BA (hex) HP Inc. -+5C60BA (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 -+ US -+ -+20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company -+209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ - 9C-FF-C2 (hex) AVI Systems GmbH - 9CFFC2 (base 16) AVI Systems GmbH - Dr. Franz Wilhelmstraße 2A -@@ -38459,12 +38687,6 @@ ACFE05 (base 16) ITEL MOBILE LIMITED - NO.68, Qinghe Middle Street Haidian District, Beijing 100085 - CN - --B0-3E-51 (hex) BSkyB Ltd --B03E51 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 5C-E8-83 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 5CE883 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -38513,12 +38735,6 @@ F887F1 (base 16) Apple, Inc. - Brandýs nad Labem 250 01 - CZ - --80-72-15 (hex) BSkyB Ltd --807215 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 74-D6-37 (hex) Amazon Technologies Inc. - 74D637 (base 16) Amazon Technologies Inc. - P.O Box 8102 -@@ -42458,12 +42674,6 @@ F0EFD2 (base 16) TF PAYMENT SERVICE CO., LTD - Shanghai Shanghai 201203 - CN - --F4-93-9F (hex) Hon Hai Precision Ind. Co., Ltd. --F4939F (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - 00-07-26 (hex) SHENZHEN GONGJIN ELECTRONICS CO.,LT - 000726 (base 16) SHENZHEN GONGJIN ELECTRONICS CO.,LT - A211-A213 & B201-B210, 2F, Baiying Building, 1019#, Nanhai RD, Shekou Party, Nanshan District, -@@ -68972,12 +69182,6 @@ D89E61 (base 16) Huawei Device Co., Ltd. - Rotkreuz CH-6343 - CH - --80-75-1F (hex) BSkyB Ltd --80751F (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - E8-5A-8B (hex) Xiaomi Communications Co Ltd - E85A8B (base 16) Xiaomi Communications Co Ltd - The Rainbow City of China Resources -@@ -70364,12 +70568,6 @@ B47947 (base 16) Nutanix - Hsinchu 30077 - TW - --38-F0-C8 (hex) Mevo Inc. --38F0C8 (base 16) Mevo Inc. -- 19 Morris Avenue -- Brooklyn NY 11205 -- US -- - 5C-FE-9E (hex) Wiwynn Corporation Tainan Branch - 5CFE9E (base 16) Wiwynn Corporation Tainan Branch - 4F, NO. 8, Beiyuan 3rd Rd., Anding Dist., -@@ -70796,12 +70994,6 @@ A0CFF5 (base 16) zte corporation - Dongguan Guangdong 523808 - CN - --C0-A3-6E (hex) BSkyB Ltd --C0A36E (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 60-32-B1 (hex) TP-LINK TECHNOLOGIES CO.,LTD. - 6032B1 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -@@ -71078,12 +71270,6 @@ CC483A (base 16) Dell Inc. - Round Rock TX 78682 - US - --A4-AE-12 (hex) Hon Hai Precision Ind. Co., Ltd. --A4AE12 (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - DC-A3-A2 (hex) Feng mi(Beijing)technology co., LTD - DCA3A2 (base 16) Feng mi(Beijing)technology co., LTD - RenHe Town barracks south street 10 yuan 33 level 301 -@@ -73742,12 +73928,6 @@ E0C58F (base 16) China Mobile IOT Company Limited - Shanghai Shanghai 201203 - CN - --00-A3-88 (hex) BSkyB Ltd --00A388 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 50-3D-EB (hex) Zhejiang Tmall Technology Co., Ltd. - 503DEB (base 16) Zhejiang Tmall Technology Co., Ltd. - Ali Center,No.3331 Keyuan South RD (Shenzhen bay), Nanshan District, Shenzhen Guangdong province -@@ -75884,12 +76064,6 @@ E0806B (base 16) Xiaomi Communications Co Ltd - Oslo NO-0216 - NO - --38-FD-F5 (hex) Renesas Electronics (Penang) Sdn. Bhd. --38FDF5 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -- Phase 3, Bayan Lepas FIZ -- Bayan Lepas Penang 11900 -- MY -- - 38-12-7B (hex) Crenet Labs Co., Ltd. - 38127B (base 16) Crenet Labs Co., Ltd. - Rm. 1, 10F., No. 181, Sec. 1, Datong Rd. -@@ -75902,12 +76076,306 @@ B0E45C (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - -+BC-4C-A0 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+BC4CA0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+74-34-2B (hex) HUAWEI TECHNOLOGIES CO.,LTD -+74342B (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C4-12-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C412EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ -+68-7F-F0 (hex) TP-Link Corporation Limited -+687FF0 (base 16) TP-Link Corporation Limited -+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -+ Tsim Sha Tsui Kowloon 999077 -+ HK -+ - DC-36-0C (hex) Hitron Technologies. Inc - DC360C (base 16) Hitron Technologies. Inc - No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C - Hsin-chu Taiwan 300 - TW - -+38-FD-F5 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+38FDF5 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+4C-62-7B (hex) SmartCow AI Technologies Taiwan Ltd. -+4C627B (base 16) SmartCow AI Technologies Taiwan Ltd. -+ 16F., No. 102, Songlong Rd., Xinyi Dist., -+ Taipei City 110059 -+ TW -+ -+BC-7B-72 (hex) Huawei Device Co., Ltd. -+BC7B72 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+F8-2B-7F (hex) Huawei Device Co., Ltd. -+F82B7F (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+D8-68-A0 (hex) Samsung Electronics Co.,Ltd -+D868A0 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+04-29-2E (hex) Samsung Electronics Co.,Ltd -+04292E (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+40-C3-BC (hex) Huawei Device Co., Ltd. -+40C3BC (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+28-53-E0 (hex) Sintela Ltd -+2853E0 (base 16) Sintela Ltd -+ The Distillery, The Old Brewery, 9-11 Lodway, -+ Pill Bristol BS20 0DH -+ GB -+ -+60-CF-69 (hex) meerecompany -+60CF69 (base 16) meerecompany -+ 69-12, Jeongmunsongsan-ro, Yanggam-myeon, Hwaseong-si, Gyeonggi-do, Republic of Korea -+ Hwaseong-si 18630 -+ KR -+ -+34-FE-1C (hex) CHOUNG HWA TECH CO.,LTD -+34FE1C (base 16) CHOUNG HWA TECH CO.,LTD -+ #31 Jangja-ro, Namdong-gu -+ Incheon-si 21532 -+ KR -+ -+F4-93-9F (hex) Hon Hai Precision Industry Co., Ltd. -+F4939F (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+A4-AE-12 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE12 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+38-F0-C8 (hex) Logitech -+38F0C8 (base 16) Logitech -+ 7700 Gateway Blvd -+ Newark CA 94560 -+ US -+ -+BC-5D-A3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+BC5DA3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+80-75-1F (hex) SKY UK LIMITED -+80751F (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+C0-A3-6E (hex) SKY UK LIMITED -+C0A36E (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+00-A3-88 (hex) SKY UK LIMITED -+00A388 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+AC-4E-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+AC4E65 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+80-72-15 (hex) SKY UK LIMITED -+807215 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+B0-3E-51 (hex) SKY UK LIMITED -+B03E51 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+1C-EF-03 (hex) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. -+1CEF03 (base 16) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. -+ Room 601,Originality Building B2, NO.162 Science Avenue,Science Town -+ Guangzhou Guangdong 510663 -+ CN -+ -+58-B0-3E (hex) Nintendo Co.,Ltd -+58B03E (base 16) Nintendo Co.,Ltd -+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU -+ KYOTO KYOTO 601-8501 -+ JP -+ -+54-45-38 (hex) Texas Instruments -+544538 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+74-13-EA (hex) Intel Corporate -+7413EA (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+18-7A-3E (hex) Silicon Laboratories -+187A3E (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ -+30-05-05 (hex) Intel Corporate -+300505 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+B0-DC-EF (hex) Intel Corporate -+B0DCEF (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+2C-A7-74 (hex) Texas Instruments -+2CA774 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+DC-F3-1C (hex) Texas Instruments -+DCF31C (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+28-BC-05 (hex) BLU Products Inc -+28BC05 (base 16) BLU Products Inc -+ 10814 NW 33rd Street -+ Miami FL 33172 -+ US -+ -+18-4E-03 (hex) HMD Global Oy -+184E03 (base 16) HMD Global Oy -+ Bertel Jungin aukio 9 -+ Espoo 02600 -+ FI -+ -+40-22-D8 (hex) Espressif Inc. -+4022D8 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+E0-08-71 (hex) Dongguan Liesheng Electronic Co., Ltd. -+E00871 (base 16) Dongguan Liesheng Electronic Co., Ltd. -+ F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci -+ dongguan guangdong 523000 -+ CN -+ -+90-65-60 (hex) EM Microelectronic -+906560 (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+A0-FB-83 (hex) Honor Device Co., Ltd. -+A0FB83 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+DC-0B-09 (hex) Cisco Systems, Inc -+DC0B09 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+08-F3-FB (hex) Cisco Systems, Inc -+08F3FB (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+88-0A-A3 (hex) Juniper Networks -+880AA3 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+04-D9-C8 (hex) Hon Hai Precision Industry Co., Ltd. -+04D9C8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+78-C2-13 (hex) Sagemcom Broadband SAS -+78C213 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+A0-36-BC (hex) ASUSTek COMPUTER INC. -+A036BC (base 16) ASUSTek COMPUTER INC. -+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -+ Taipei Taiwan 112 -+ TW -+ -+10-73-EB (hex) Infiniti Electro-Optics -+1073EB (base 16) Infiniti Electro-Optics -+ 15 - 9th Ave S -+ Cranbrook British Columbia V1C 2L9 -+ CA -+ -+9C-95-6E (hex) Microchip Technology Inc. -+9C956E (base 16) Microchip Technology Inc. -+ 2355 W. Chandler Blvd. -+ Chandler AZ 85224 -+ US -+ -+84-0B-BB (hex) MitraStar Technology Corp. -+840BBB (base 16) MitraStar Technology Corp. -+ No. 6, Innovation Road II, -+ Hsinchu 300 -+ TW -+ - 84-80-94 (hex) Meter, Inc. - 848094 (base 16) Meter, Inc. - 148 Townsend St -@@ -80036,12 +80504,6 @@ E084F3 (base 16) High Grade Controls Corporation - Sudbury Ontario P3Y1K6 - CA - --38-A6-CE (hex) BSkyB Ltd --38A6CE (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 70-70-8B (hex) Cisco Systems, Inc - 70708B (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -81566,12 +82028,6 @@ C8AA55 (base 16) Hunan Comtom Electronic Incorporated Co.,Ltd - Sunnyvale CA 94089 - US - --24-A7-DC (hex) BSkyB Ltd --24A7DC (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 64-DB-A0 (hex) Select Comfort - 64DBA0 (base 16) Select Comfort - 9800 59th Ave N -@@ -86192,18 +86648,6 @@ D0154A (base 16) zte corporation - YOKOHAMA 226 12345 - JP - --78-3E-53 (hex) BSkyB Ltd --783E53 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- --00-19-FB (hex) BSkyB Ltd --0019FB (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 14-B9-68 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 14B968 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -109697,12 +110141,6 @@ ACFAA5 (base 16) digitron - Chongqing China 401120 - CN - --BC-69-CB (hex) Panasonic Life Solutions Networks Co., Ltd. --BC69CB (base 16) Panasonic Life Solutions Networks Co., Ltd. -- 2-12-7, Higashi-Shinbashi -- Minato-Ku Tokyo 105-0021 -- JP -- - 08-93-56 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 089356 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -111353,9 +111791,6 @@ CC3ADF (base 16) Neptune Technology Group Inc. - Tallassee AL 36078 - US - --68-EC-8A (hex) Private --68EC8A (base 16) Private -- - 3C-62-F0 (hex) Sercomm Corporation. - 3C62F0 (base 16) Sercomm Corporation. - 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen -@@ -113816,6 +114251,24 @@ AC83F0 (base 16) Cobalt Digital Inc. - Champaign IL 61821 - US - -+AC-15-A2 (hex) TP-Link Corporation Limited -+AC15A2 (base 16) TP-Link Corporation Limited -+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -+ Tsim Sha Tsui Kowloon 999077 -+ HK -+ -+B8-59-C8 (hex) 70mai Co.,Ltd. -+B859C8 (base 16) 70mai Co.,Ltd. -+ Room 2220, building 2, No. 588, Zixing road -+ Shanghai MinHang District 201100 -+ CN -+ -+A8-E2-07 (hex) GOIP Global Services Pvt. Ltd. -+A8E207 (base 16) GOIP Global Services Pvt. Ltd. -+ H68, Sector 63, Noida 201301 -+ Noida Uttar Pradesh 201301 -+ IN -+ - 40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. - 402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. - 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -@@ -113828,18 +114281,342 @@ B8B409 (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - -+AC-DF-9F (hex) Arcadyan Corporation -+ACDF9F (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW -+ -+D4-E2-2F (hex) Roku, Inc -+D4E22F (base 16) Roku, Inc -+ 1155 Coleman Ave -+ San Jose CA 95110 -+ US -+ - 00-13-95 (hex) congatec GmbH - 001395 (base 16) congatec GmbH - Auwiesenstrasse 5 - Deggendorf 94469 - DE - --D4-E2-2F (hex) Roku, Inc --D4E22F (base 16) Roku, Inc -- 1155 Coleman Ave -- San Jose CA 95110 -+28-77-B1 (hex) Tri plus grupa d.o.o. -+2877B1 (base 16) Tri plus grupa d.o.o. -+ Banjavciceva 11 -+ Zagreb Zagreb 10000 -+ HR -+ -+C4-3C-B0 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD -+C43CB0 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD -+ NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district -+ shenzhen guangdong 518000 -+ CN -+ -+3C-0B-4F (hex) Yandex Services AG -+3C0B4F (base 16) Yandex Services AG -+ Werftestrasse 4, -+ Luzern 6005 -+ CH -+ -+4C-31-2D (hex) Sichuan AI-Link Technology Co., Ltd. -+4C312D (base 16) Sichuan AI-Link Technology Co., Ltd. -+ Anzhou, Industrial Park -+ Mianyang Sichuan 622650 -+ CN -+ -+D8-7E-6F (hex) CASCINATION AG -+D87E6F (base 16) CASCINATION AG -+ Steigerhubelstrasse 3 -+ Bern Bern 3008 -+ CH -+ -+04-4F-7A (hex) China Mobile Group Device Co.,Ltd. -+044F7A (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+40-5E-F6 (hex) Samsung Electronics Co.,Ltd -+405EF6 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+94-52-44 (hex) Samsung Electronics Co.,Ltd -+945244 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+9C-2E-7A (hex) Samsung Electronics Co.,Ltd -+9C2E7A (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+7C-63-05 (hex) Amazon Technologies Inc. -+7C6305 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+C0-4E-30 (hex) Espressif Inc. -+C04E30 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+74-E7-98 (hex) Juniper Networks -+74E798 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+E0-16-B1 (hex) Advanced Design Technology co.,ltd. -+E016B1 (base 16) Advanced Design Technology co.,ltd. -+ 1-1-3 Kotobukicho#10F Mitsukikotobukichobiru -+ Fucyu-city Tokyo 1830056 -+ JP -+ -+54-31-D4 (hex) TGW Mechanics GmbH -+5431D4 (base 16) TGW Mechanics GmbH -+ Collmannstraße 2 -+ Wels 4600 -+ AT -+ -+94-01-AC (hex) Wuhan Qianyang Iotian Technology Co., Ltd -+9401AC (base 16) Wuhan Qianyang Iotian Technology Co., Ltd -+ Unit 1301, Building B4, Wuhan future science and Technology City, Gaoxin Avenue, Wuhan East Lake New-Technology Development Zone -+ Wuhan Hubei 430206 -+ CN -+ -+C0-69-11 (hex) Arista Networks -+C06911 (base 16) Arista Networks -+ 5453 Great America Parkway -+ Santa Clara CA 95054 - US - -+E4-B5-55 (hex) Huawei Device Co., Ltd. -+E4B555 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+24-A7-DC (hex) SKY UK LIMITED -+24A7DC (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+38-A6-CE (hex) SKY UK LIMITED -+38A6CE (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+AC-60-6F (hex) Nokia Shanghai Bell Co., Ltd. -+AC606F (base 16) Nokia Shanghai Bell Co., Ltd. -+ No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai -+ Shanghai 201206 -+ CN -+ -+00-19-FB (hex) SKY UK LIMITED -+0019FB (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+78-3E-53 (hex) SKY UK LIMITED -+783E53 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+68-EC-8A (hex) IKEA of Sweden AB -+68EC8A (base 16) IKEA of Sweden AB -+ -+ -+ -+ -+48-02-AF (hex) Telit Communication s.p.a -+4802AF (base 16) Telit Communication s.p.a -+ Via stazione di prosecco 5B -+ SGONICO Trieste 34010 -+ IT -+ -+FC-C7-37 (hex) Shaanxi Gangsion Electronic Technology Co., Ltd -+FCC737 (base 16) Shaanxi Gangsion Electronic Technology Co., Ltd -+ Room 12302, building 1, Greenland territorial sea, No. 6, Jinye Road, high tech Zone, Xi'an, Shaanxi -+ xi'an Shaanxi 710076 -+ CN -+ -+94-28-6F (hex) zte corporation -+94286F (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+40-0E-F3 (hex) zte corporation -+400EF3 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+1C-46-D1 (hex) SKY UK LIMITED -+1C46D1 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+00-3F-10 (hex) Shenzhen GainStrong Technology Co., Ltd. -+003F10 (base 16) Shenzhen GainStrong Technology Co., Ltd. -+ 4/F, Building B, Hengmingzhu Industrial Park, Qian Jin Road 2, Baoan District -+ Shenzhen Guangdong 518126 -+ CN -+ -+88-22-B2 (hex) Chipsea Technologies (Shenzhen) Corp. -+8822B2 (base 16) Chipsea Technologies (Shenzhen) Corp. -+ 3 / F, Block A, Building 2, Shenzhen Bay Innovation Technology Center, No.3156 keyuan South Road, Yuehai Street, Nanshan District, Shenzhen -+ Shenzhen Guangdong 518000 -+ CN -+ -+68-7A-64 (hex) Intel Corporate -+687A64 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+BC-03-58 (hex) Intel Corporate -+BC0358 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+88-B8-63 (hex) HISENSE VISUAL TECHNOLOGY CO.,LTD -+88B863 (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD -+ Qianwangang Road 218 -+ Qingdao Shandong 266510 -+ CN -+ -+BC-69-CB (hex) Panasonic Electric Works Networks Co., Ltd. -+BC69CB (base 16) Panasonic Electric Works Networks Co., Ltd. -+ 2-12-7, Higashi-Shinbashi -+ Minato-Ku Tokyo 105-0021 -+ JP -+ -+58-C5-7E (hex) Fiberhome Telecommunication Technologies Co.,LTD -+58C57E (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+74-3A-F4 (hex) Intel Corporate -+743AF4 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+2C-93-FB (hex) Sercomm France Sarl -+2C93FB (base 16) Sercomm France Sarl -+ 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France -+ Moulineaux 92370 -+ FR -+ -+B4-46-6B (hex) REALTIMEID AS -+B4466B (base 16) REALTIMEID AS -+ Busk Bruns veg 1 , 7760 Snåsa (Norway) -+ Snåsa 7760 -+ NO -+ -+90-6A-EB (hex) Microsoft Corporation -+906AEB (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ -+C4-EB-39 (hex) Sagemcom Broadband SAS -+C4EB39 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+00-52-C8 (hex) Made Studio Design Ltd. -+0052C8 (base 16) Made Studio Design Ltd. -+ 10F., No. 169, Sec. 4, Zhongxiao E. Rd., Da-an Dist. -+ Taipei City 10690 -+ TW -+ -+08-9D-F4 (hex) Intel Corporate -+089DF4 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+DC-46-28 (hex) Intel Corporate -+DC4628 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+0C-91-92 (hex) Intel Corporate -+0C9192 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+48-AD-9A (hex) Intel Corporate -+48AD9A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+68-65-B7 (hex) Zhishang Chuanglian Technology Co., Ltd -+6865B7 (base 16) Zhishang Chuanglian Technology Co., Ltd -+ 2 / F, building F, hongfengtai Science Park, Jinyuan Road, Henggang street, Longgang District, -+ Shenzhen 518000 -+ CN -+ -+F0-C1-CE (hex) GoodWe Technologies CO., Ltd -+F0C1CE (base 16) GoodWe Technologies CO., Ltd -+ No.90 Zijin Rd.,New District,Suzhou,215011,China -+ Suzhou JiangSu 215011 -+ CN -+ -+58-2B-0A (hex) Texas Instruments -+582B0A (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+38-E7-C0 (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+38E7C0 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.2,Jin-da Road,Huinan Industrial Park -+ Hui Zhou Guangdong 516025 -+ CN -+ -+D8-E8-44 (hex) zte corporation -+D8E844 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+E4-6A-35 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+E46A35 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ -+20-04-F3 (hex) Honor Device Co., Ltd. -+2004F3 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ -+68-B9-C2 (hex) Earda Technologies co Ltd -+68B9C2 (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 -+ CN -+ - F8-D0-27 (hex) Seiko Epson Corporation - F8D027 (base 16) Seiko Epson Corporation - 2070 Kotobuki Koaka -@@ -114089,12 +114866,6 @@ D015A6 (base 16) Aruba, a Hewlett Packard Enterprise Company - Cambridge CB24 9ZR - GB - --04-81-9B (hex) BSkyB Ltd --04819B (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - E0-00-84 (hex) HUAWEI TECHNOLOGIES CO.,LTD - E00084 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -115940,12 +116711,6 @@ A85AF3 (base 16) Shanghai Siflower Communication Technology Co., Ltd - Chongqing Chongqing 401332 - CN - --3C-89-94 (hex) BSkyB Ltd --3C8994 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - E0-0E-E1 (hex) We Corporation Inc. - E00EE1 (base 16) We Corporation Inc. - 201, 33, Deokcheon-ro, Manan-gu -@@ -117170,12 +117935,6 @@ CC2DB7 (base 16) Apple, Inc. - Cupertino CA 95014 - US - --A0-BD-CD (hex) BSkyB Ltd --A0BDCD (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - BC-91-B5 (hex) Infinix mobility limited - BC91B5 (base 16) Infinix mobility limited - RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -@@ -119492,12 +120251,6 @@ F0D5BF (base 16) Intel Corporate - shenzhen guangdong 518057 - CN - --20-47-ED (hex) BSkyB Ltd --2047ED (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 74-8A-69 (hex) Korea Image Technology Co., Ltd - 748A69 (base 16) Korea Image Technology Co., Ltd - 125, beolmal road, dongan gu, -@@ -129593,12 +130346,6 @@ E03E7D (base 16) data-complex GmbH - Seoul Geumcheon-gu 153-802 - KR - --04-26-05 (hex) GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH --042605 (base 16) GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH -- Kapellenweg 42 -- Verl 33415 -- DE -- - 24-F0-FF (hex) GHT Co., Ltd. - 24F0FF (base 16) GHT Co., Ltd. - #16 Nanyunyi Lu, Guangzhou Science City -@@ -146654,12 +147401,6 @@ A0D83D (base 16) Fiberhome Telecommunication Technologies Co.,LTD - San Jose CA 94568 - US - --50-70-43 (hex) BSkyB Ltd --507043 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - D0-14-11 (hex) IEEE Registration Authority - D01411 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -148280,12 +149021,6 @@ E00CE5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Kulim Kedah 09000 - MY - --F4-6B-8C (hex) Hon Hai Precision Ind. Co., Ltd. --F46B8C (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - FC-34-97 (hex) ASUSTek COMPUTER INC. - FC3497 (base 16) ASUSTek COMPUTER INC. - 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -@@ -149627,12 +150362,6 @@ F4CE48 (base 16) Extreme Networks, Inc. - Kowloon Bay Hong Kong 0000 - HK - --04-B8-6A (hex) BSkyB Ltd --04B86A (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 1C-88-0C (hex) Shenzhen Skyworth Digital Technology CO., Ltd - 1C880C (base 16) Shenzhen Skyworth Digital Technology CO., Ltd - 4F,Block A, Skyworth?Building, -@@ -150401,12 +151130,6 @@ D0A0D6 (base 16) ChengDu TD Tech - Mianyang Sichuan 621000 - CN - --3C-45-7A (hex) BSkyB Ltd --3C457A (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 90-27-59 (hex) Nanjing Jiahao Technology Co., Ltd. - 902759 (base 16) Nanjing Jiahao Technology Co., Ltd. - Moling Industrial Park, Development Zone, Jiangning, Nanjing -@@ -150803,12 +151526,6 @@ ECA907 (base 16) Apple, Inc. - Vejle 7120 - DK - --4C-72-74 (hex) shenzhenshi xinzhongxin Technology Co.Ltd --4C7274 (base 16) shenzhenshi xinzhongxin Technology Co.Ltd -- Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -- ShenZHEN GuangDong 518104 -- CN -- - F4-B8-98 (hex) Texas Instruments - F4B898 (base 16) Texas Instruments - 12500 TI Blvd -@@ -151949,12 +152666,288 @@ E09C8D (base 16) Seakeeper, Inc. - Taipei City 114 - TW - -+34-3A-20 (hex) Aruba, a Hewlett Packard Enterprise Company -+343A20 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ - 30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA - 303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA - JL.PALEM 1 BLOK DS-6 - KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 - ID - -+18-E9-1D (hex) HUAWEI TECHNOLOGIES CO.,LTD -+18E91D (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+48-70-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD -+48706F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+F4-6A-DD (hex) Liteon Technology Corporation -+F46ADD (base 16) Liteon Technology Corporation -+ 4F, 90, Chien 1 Road -+ New Taipei City Taiwan 23585 -+ TW -+ -+C8-2A-F1 (hex) TCT mobile ltd -+C82AF1 (base 16) TCT mobile ltd -+ No.86 hechang 7th road, zhongkai, Hi-Tech District -+ Hui Zhou Guang Dong 516006 -+ CN -+ -+3C-E9-0E (hex) Espressif Inc. -+3CE90E (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+A8-42-E3 (hex) Espressif Inc. -+A842E3 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+7C-0C-92 (hex) Suzhou Mobydata Smart System Co.,Ltd. -+7C0C92 (base 16) Suzhou Mobydata Smart System Co.,Ltd. -+ 3f,building E,Yida science Park,No.11 Jinpu Road,SIP,Suzhou,Jiangsu,China -+ Suzhou Jingsu 215000 -+ CN -+ -+04-26-05 (hex) Bosch Building Automation GmbH -+042605 (base 16) Bosch Building Automation GmbH -+ Kapellenweg 42 -+ Verl 33415 -+ DE -+ -+3C-FE-AC (hex) Cisco Systems, Inc -+3CFEAC (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+04-A7-41 (hex) Cisco Systems, Inc -+04A741 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+A0-88-9D (hex) Huawei Device Co., Ltd. -+A0889D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+98-D7-42 (hex) Samsung Electronics Co.,Ltd -+98D742 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+D4-9B-74 (hex) Kinetic Technologies -+D49B74 (base 16) Kinetic Technologies -+ 6399 San Ignacio Ave #250 -+ San Jose CA 95119 -+ US -+ -+40-F8-DF (hex) CANON INC. -+40F8DF (base 16) CANON INC. -+ 30-2 Shimomaruko 3-chome, -+ Ohta-ku Tokyo 146-8501 -+ JP -+ -+20-47-ED (hex) SKY UK LIMITED -+2047ED (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+A0-BD-CD (hex) SKY UK LIMITED -+A0BDCD (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+3C-89-94 (hex) SKY UK LIMITED -+3C8994 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+04-81-9B (hex) SKY UK LIMITED -+04819B (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+50-70-43 (hex) SKY UK LIMITED -+507043 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+04-B8-6A (hex) SKY UK LIMITED -+04B86A (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+3C-45-7A (hex) SKY UK LIMITED -+3C457A (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+F4-6B-8C (hex) Hon Hai Precision Industry Co., Ltd. -+F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+74-37-5F (hex) SERCOMM PHILIPPINES INC -+74375F (base 16) SERCOMM PHILIPPINES INC -+ Lot 1 & 5, Phase 1, Filinvest Technology Park 1, Brgy. Punta, Calamba City -+ Calamba Lot 1 -+ PH -+ -+7C-67-AB (hex) Roku, Inc -+7C67AB (base 16) Roku, Inc -+ 1155 Coleman Ave -+ San Jose CA 95110 -+ US -+ -+0C-7F-ED (hex) IEEE Registration Authority -+0C7FED (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+F4-3B-D8 (hex) Intel Corporate -+F43BD8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+C8-4B-D6 (hex) Dell Inc. -+C84BD6 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ -+E0-86-14 (hex) Novatel Wireless Solutions, Inc. -+E08614 (base 16) Novatel Wireless Solutions, Inc. -+ 9710 Scranton Rd., Suite 200 -+ San Diego CA 92121 -+ US -+ -+A8-DE-68 (hex) Beijing Wide Technology Co.,Ltd -+A8DE68 (base 16) Beijing Wide Technology Co.,Ltd -+ Floor7,Block B,Yicheng wealth center,No. 22,Ronghua Middle Road,Beijing Economic and Technological Development Zone -+ Beijing Beijing 100000 -+ CN -+ -+6C-30-2A (hex) Texas Instruments -+6C302A (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+74-46-B3 (hex) Texas Instruments -+7446B3 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+94-4E-5B (hex) Ubee Interactive Co., Limited -+944E5B (base 16) Ubee Interactive Co., Limited -+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -+ North Point 00000 -+ HK -+ -+B4-BA-9D (hex) SKY UK LIMITED -+B4BA9D (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+50-F2-61 (hex) Photon Sail Technologies -+50F261 (base 16) Photon Sail Technologies -+ 8 Robinson Road, ASO Building -+ Singapore 048544 -+ SG -+ -+80-DA-C2 (hex) Technicolor CH USA Inc. -+80DAC2 (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+00-41-0E (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+00410E (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+FC-61-79 (hex) IEEE Registration Authority -+FC6179 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+3C-4E-56 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+3C4E56 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+ Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China -+ SHENZHEN GUANGDONG 518057 -+ CN -+ -+08-B6-1F (hex) Espressif Inc. -+08B61F (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+98-A2-C0 (hex) Cisco Systems, Inc -+98A2C0 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+EC-74-D7 (hex) Grandstream Networks Inc -+EC74D7 (base 16) Grandstream Networks Inc -+ 126 brookline avenue -+ boston MA 02215 -+ US -+ -+4C-72-74 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd -+4C7274 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -+ Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -+ ShenZHEN GuangDong 518104 -+ CN -+ -+30-63-71 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd -+306371 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -+ Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -+ ShenZHEN GuangDong 518104 -+ CN -+ -+88-12-AC (hex) HUNAN FN-LINK TECHNOLOGY LIMITED -+8812AC (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED -+ No.8, Litong Road, Liuyan Economic & Tec -+ Changsha HUNAN 410329 -+ CN -+ -+28-01-1C (hex) zte corporation -+28011C (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ - 7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. - 7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. - NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE -@@ -155294,12 +156287,6 @@ F0766F (base 16) Apple, Inc. - Cupertino CA 95014 - US - --1C-A0-B8 (hex) Hon Hai Precision Ind. Co., Ltd. --1CA0B8 (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - D8-84-66 (hex) Extreme Networks, Inc. - D88466 (base 16) Extreme Networks, Inc. - 145 Rio Robles -@@ -155696,12 +156683,6 @@ ECFABC (base 16) Espressif Inc. - San Jose CA 95121 - US - --28-C1-3C (hex) Hon Hai Precision Ind. Co., Ltd. --28C13C (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - B0-EC-E1 (hex) Private - B0ECE1 (base 16) Private - -@@ -157199,12 +158180,6 @@ EC01EE (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - Morristown NJ 07960 - US - --70-20-84 (hex) Hon Hai Precision Ind. Co., Ltd. --702084 (base 16) Hon Hai Precision Ind. Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - 9C-66-50 (hex) Glodio Technolies Co.,Ltd Tianjin Branch - 9C6650 (base 16) Glodio Technolies Co.,Ltd Tianjin Branch - Room 904, No.1-2 LanYuan Road, HuaYuan Industrial Area -@@ -162488,12 +163463,6 @@ C40528 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Yasu-gun Shiga 520-2393 - JP - --90-21-06 (hex) BSkyB Ltd --902106 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - D0-27-88 (hex) Hon Hai Precision Ind. Co.,Ltd. - D02788 (base 16) Hon Hai Precision Ind. Co.,Ltd. - Building D21,No.1, East Zone 1st Road -@@ -183329,12 +184298,6 @@ A0946A (base 16) Shenzhen XGTEC Technology Co,.Ltd. - San Jose CA 94568 - US - --9C-31-C3 (hex) BSkyB Ltd --9C31C3 (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 6C-24-A6 (hex) vivo Mobile Communication Co., Ltd. - 6C24A6 (base 16) vivo Mobile Communication Co., Ltd. - #283,BBK Road -@@ -184205,12 +185168,6 @@ C01692 (base 16) China Mobile Group Device Co.,Ltd. - Dongguan 523808 - CN - --D4-52-EE (hex) BSkyB Ltd --D452EE (base 16) BSkyB Ltd -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - E0-23-FF (hex) Fortinet, Inc. - E023FF (base 16) Fortinet, Inc. - 899 Kifer Road -@@ -189836,6 +190793,48 @@ F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Malmö 21136 - SE - -+E8-AC-23 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+68-D9-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+68D927 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+90-F9-70 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+90F970 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+04-CA-ED (hex) HUAWEI TECHNOLOGIES CO.,LTD -+04CAED (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+68-EE-88 (hex) Shenzhen TINNO Mobile Technology Corp. -+68EE88 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+54-3D-92 (hex) WIRELESS-TEK TECHNOLOGY LIMITED -+543D92 (base 16) WIRELESS-TEK TECHNOLOGY LIMITED -+ Room 402 4F, BiaoFan Technology Building, Bao'An Avenue, FuYong Town, Bao'An district, ShenZhen,China -+ SHENZHEN 518000 -+ CN -+ -+98-26-AD (hex) Quectel Wireless Solutions Co.,Ltd. -+9826AD (base 16) Quectel Wireless Solutions Co.,Ltd. -+ 7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District -+ Shanghai 200233 -+ CN -+ - 60-1E-98 (hex) Axevast Technology - 601E98 (base 16) Axevast Technology - 5F., No. 20, Guanqian Road, Zhongzheng District -@@ -189853,3 +190852,183 @@ A8F7D9 (base 16) Mist Systems, Inc. - 8F., No. 94, Baozhong Rd. - New Taipei City Taiwan 231 - TW -+ -+38-86-F7 (hex) Google, Inc. -+3886F7 (base 16) Google, Inc. -+ 1600 Amphitheatre Parkway -+ Mountain View CA 94043 -+ US -+ -+F4-22-7A (hex) Guangdong Seneasy Intelligent Technology Co., Ltd. -+F4227A (base 16) Guangdong Seneasy Intelligent Technology Co., Ltd. -+ No. 63, Huitai Industrial Park, -+ Huizhou City, Guangdong Province 516000 -+ CN -+ -+8C-51-09 (hex) IEEE Registration Authority -+8C5109 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+A4-75-B9 (hex) Samsung Electronics Co.,Ltd -+A475B9 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+80-54-9C (hex) Samsung Electronics Co.,Ltd -+80549C (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+6C-60-D0 (hex) Huawei Device Co., Ltd. -+6C60D0 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+1C-F8-D0 (hex) Samsung Electronics Co.,Ltd -+1CF8D0 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+64-0E-6A (hex) SECO-LARM USA Inc -+640E6A (base 16) SECO-LARM USA Inc -+ 16842 Millikan -+ Irvine CA 92606 -+ US -+ -+68-E1-54 (hex) SiMa.ai -+68E154 (base 16) SiMa.ai -+ 226 Airport Parkway, Suite 550 -+ San Jose CA 95110 -+ US -+ -+DC-8D-B7 (hex) ATW TECHNOLOGY, INC. -+DC8DB7 (base 16) ATW TECHNOLOGY, INC. -+ 1F, No.236 Ba’ai Street, Shulin District -+ New Taipei City 23845 -+ TW -+ -+70-20-84 (hex) Hon Hai Precision Industry Co., Ltd. -+702084 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+28-C1-3C (hex) Hon Hai Precision Industry Co., Ltd. -+28C13C (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+1C-A0-B8 (hex) Hon Hai Precision Industry Co., Ltd. -+1CA0B8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+18-AA-1E (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+18AA1E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ -+9C-31-C3 (hex) SKY UK LIMITED -+9C31C3 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+D4-52-EE (hex) SKY UK LIMITED -+D452EE (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+90-21-06 (hex) SKY UK LIMITED -+902106 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+D8-FF-C3 (hex) Shenzhen 3SNIC information technology company Limited -+D8FFC3 (base 16) Shenzhen 3SNIC information technology company Limited -+ Room 3101, Building 3, Nanshan Zhiyuan Chongwen Park, No.3370, Liuxian Avenue, Fuguang Community, Taoyuan Street, Nanshan District, -+ Shenzhen Guangdong 518000 -+ CN -+ -+F0-87-56 (hex) Zyxel Communications Corporation -+F08756 (base 16) Zyxel Communications Corporation -+ No. 6 Innovation Road II, Science Park -+ Hsichu Taiwan 300 -+ TW -+ -+E8-EF-05 (hex) MIND TECH INTERNATIONAL LIMITED -+E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED -+ FLAT E 2/F RIALTO MANSION 183 KING'S RD NORTH POINT HK -+ Hong Kong 999077 -+ HK -+ -+48-27-E2 (hex) Espressif Inc. -+4827E2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+58-B3-8F (hex) New H3C Technologies Co., Ltd -+58B38F (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+40-E1-71 (hex) Jiangsu Huitong Group Co.,Ltd. -+40E171 (base 16) Jiangsu Huitong Group Co.,Ltd. -+ No. 24, Block 2, Taohuawu New District -+ Zhenjiang Jiangsu 212003 -+ CN -+ -+F4-6D-3F (hex) Intel Corporate -+F46D3F (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+6C-72-4A (hex) Onkyo Technology K.K. -+6C724A (base 16) Onkyo Technology K.K. -+ Lux Building (5th floor),1-1-41 Kawamata -+ Higashiosaka City Osaka 577-0063 -+ JP -+ -+18-C3-00 (hex) Nokia -+18C300 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+D4-4D-77 (hex) Nokia -+D44D77 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+DC-05-39 (hex) Cisco Systems, Inc -+DC0539 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+8C-25-5E (hex) VoltServer -+8C255E (base 16) VoltServer -+ 42 Ladd St STE 227 -+ East Greenwich RI 02818 -+ US -+ -+B8-8F-27 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+B88F27 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt -index 0410acdf80..08cdcba936 100644 ---- a/hwdb.d/ma-medium.txt -+++ b/hwdb.d/ma-medium.txt -@@ -2714,12 +2714,6 @@ B00000-BFFFFF (base 16) Oliotalo Oy - Taipei City 10656 - TW - --80-7B-85 (hex) Ningbo Plus and Popscreens electronic Technology Co.,LTD --C00000-CFFFFF (base 16) Ningbo Plus and Popscreens electronic Technology Co.,LTD -- 7 Hong Da Road, Hong Tang Industrial Park Zone A -- Ningbo Zhejiang 315040 -- CN -- - 64-FB-81 (hex) Bronkhorst High-Tech BV - A00000-AFFFFF (base 16) Bronkhorst High-Tech BV - Nijverheidsstraat 1a -@@ -4862,6 +4856,12 @@ C00000-CFFFFF (base 16) Shenzhen Micro&Nano Perception Computing Technology - Tokyo Minato 108-0023 - JP - -+0C-86-29 (hex) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+900000-9FFFFF (base 16) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+ RM 1904A 19/F LUCKY COMMERCIAL CENTRE NO.103 DES VOEUX ROAD WEST HK -+ HONGKONG 999077 -+ CN -+ - 0C-86-29 (hex) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - D00000-DFFFFF (base 16) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - 27 Shucun West Road, Haidian District, -@@ -4874,12 +4874,6 @@ D00000-DFFFFF (base 16) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - ShenZhen GuangDong 518055 - CN - --0C-86-29 (hex) HONGKONG SAINT TECH INDUSTRIAL LIMITED --900000-9FFFFF (base 16) HONGKONG SAINT TECH INDUSTRIAL LIMITED -- RM 1904A 19/F LUCKY COMMERCIAL CENTRE NO.103 DES VOEUX ROAD WEST HK -- HONGKONG 999077 -- CN -- - 0C-86-29 (hex) Akribis Systems - B00000-BFFFFF (base 16) Akribis Systems - Block 5012 Techplace II, #01-05 Ang Mo Kio Avenue 5 -@@ -4898,6 +4892,12 @@ B00000-BFFFFF (base 16) Akribis Systems - Rydalmere NSW 2116 - AU - -+6C-93-08 (hex) WATERFORD CONSULTANTS LLC -+100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC -+ 7430 NEW TECHNOLOGY WAY, Suite 150 -+ FREDERICK 21703 -+ US -+ - 50-FF-99 (hex) COYOTE SYSTEM - 100000-1FFFFF (base 16) COYOTE SYSTEM - 24 quai Gallieni -@@ -4916,10 +4916,10 @@ B00000-BFFFFF (base 16) Akribis Systems - Kunshan Jiangsu 215324 - CN - --6C-93-08 (hex) WATERFORD CONSULTANTS LLC --100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC -- 7430 NEW TECHNOLOGY WAY, Suite 150 -- FREDERICK 21703 -+38-1F-26 (hex) Avon Protection -+800000-8FFFFF (base 16) Avon Protection -+ 503 8th Street -+ Cadillac MI 49601 - US - - 30-43-D7 (hex) DIGICITI Technology Co.,Ltd -@@ -4934,18 +4934,6 @@ B00000-BFFFFF (base 16) Akribis Systems - Suzhou 215021 - CN - --38-1F-26 (hex) Avon Protection --800000-8FFFFF (base 16) Avon Protection -- 503 8th Street -- Cadillac MI 49601 -- US -- --18-A5-9C (hex) Thermia AB --500000-5FFFFF (base 16) Thermia AB -- Snickaregatan 1 -- Arvika 67134 -- SE -- - 38-1F-26 (hex) SMS Evoko Group AB - 900000-9FFFFF (base 16) SMS Evoko Group AB - Hastholmsvagen 32 -@@ -4958,6 +4946,12 @@ B00000-BFFFFF (base 16) CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFO - MANAUS AMAZONAS 69041-025 - BR - -+18-A5-9C (hex) Thermia AB -+500000-5FFFFF (base 16) Thermia AB -+ Snickaregatan 1 -+ Arvika 67134 -+ SE -+ - 18-A5-9C (hex) BlueEyes Technology - C00000-CFFFFF (base 16) BlueEyes Technology - 7F-3, No.200, Sec. 4, Wenxin Rd., -@@ -4976,18 +4970,6 @@ E00000-EFFFFF (base 16) Globe Tracker ApS - kobenhavn State / Province* 1401 - DK - --C4-A1-0E (hex) Connectlab SRL --D00000-DFFFFF (base 16) Connectlab SRL -- via donatello 30 -- Milano Milano 20131 - Milano -- IT -- --C4-A1-0E (hex) BARTEC PIXAVI AS --100000-1FFFFF (base 16) BARTEC PIXAVI AS -- Vestre Svanholmen 24 -- SANDNES Rogaland 4313 -- NO -- - C4-A1-0E (hex) HYOSUNG HEAVY INDUSTRIES - 000000-0FFFFF (base 16) HYOSUNG HEAVY INDUSTRIES - 119, Mapo-daero (Gongdeok-dong), Mapo-gu -@@ -5000,6 +4982,18 @@ C4-A1-0E (hex) Consolinno Energy GmbH - Regensburg Bayern 93053 - DE - -+C4-A1-0E (hex) Connectlab SRL -+D00000-DFFFFF (base 16) Connectlab SRL -+ via donatello 30 -+ Milano Milano 20131 - Milano -+ IT -+ -+C4-A1-0E (hex) BARTEC PIXAVI AS -+100000-1FFFFF (base 16) BARTEC PIXAVI AS -+ Vestre Svanholmen 24 -+ SANDNES Rogaland 4313 -+ NO -+ - C4-A1-0E (hex) Ayla Networks (Shenzhen) Co., Ltd. - 800000-8FFFFF (base 16) Ayla Networks (Shenzhen) Co., Ltd. - Room 1501, Building B, Innovation Building, No.198 Daxin Road, Majialong Community ,Nantou Street,Nanshan District, -@@ -5018,12 +5012,54 @@ E00000-EFFFFF (base 16) KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD) - Ningbo ZheJiang Province, P.R.C. 315400 - CN - -+80-7B-85 (hex) SCALA Digital Technology(Ningbo) CO, LTD -+C00000-CFFFFF (base 16) SCALA Digital Technology(Ningbo) CO, LTD -+ 7 Hong Da Road, Hong Tang Industrial Park Zone A -+ Ningbo Zhejiang 315040 -+ CN -+ -+80-02-F4 (hex) Baicells Technologies Co., Ltd -+B00000-BFFFFF (base 16) Baicells Technologies Co., Ltd -+ 10-11F,AL, No.1 Zhongguancun, Haidian -+ Beijing Beijing 100094 -+ CN -+ - 80-02-F4 (hex) BK Networks Co,. Ltd. - 000000-0FFFFF (base 16) BK Networks Co,. Ltd. - 330 Suin-ro, Gwonseon-gu - Suwon-si Gyeonggi-do 16371 - KR - -+8C-51-09 (hex) Heliox Automotive B.V. -+500000-5FFFFF (base 16) Heliox Automotive B.V. -+ De Waal 24 -+ Best 5684 PH -+ NL -+ -+8C-51-09 (hex) Amzetta Technologies, LLC -+100000-1FFFFF (base 16) Amzetta Technologies, LLC -+ 5555 Oakbrook Pkwy, Suite 280 -+ Norcross GA 30093 -+ US -+ -+FC-61-79 (hex) Qisda Corporation -+500000-5FFFFF (base 16) Qisda Corporation -+ No. 157, Shanying Rd., Gueishan Dist., Taoyuan City 33341, Taiwan -+ Taoyuan 33341 -+ TW -+ -+0C-7F-ED (hex) Guangdong Tianshu New Energy Technology Co., Ltd -+000000-0FFFFF (base 16) Guangdong Tianshu New Energy Technology Co., Ltd -+ No.8 Huishang Road, Infore Enviro Industrial Park, Jiangcun Village, Leliu Street, Shunde District, -+ Foshan 528000 -+ CN -+ -+0C-7F-ED (hex) Annapurna labs -+A00000-AFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ - 4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD - 400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD - Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district -@@ -7991,12 +8027,6 @@ BC-66-41 (hex) Shenzhen Yaguang communication CO.,LTD - Shenzhen Guangdong 518029 - CN - --E4-95-6E (hex) Tband srl --100000-1FFFFF (base 16) Tband srl -- via A. Meucci, 4 -- Preganziol Treviso 31022 -- IT -- - BC-66-41 (hex) EBlink - A00000-AFFFFF (base 16) EBlink - 3-5 Rue Marcel Pagnol -@@ -9602,17 +9632,23 @@ D00000-DFFFFF (base 16) Shenzhen Vitalitim Technology Co., Ltd - Guangzhou 511400 - CN - -+10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. -+900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -+ No.146, Sec. 1,Donxing Rd. -+ Zhubei City, Hsinchu County Taiwan 302058 -+ TW -+ - 10-54-D2 (hex) Raylogic Control Systems Private Limited - 400000-4FFFFF (base 16) Raylogic Control Systems Private Limited - Unit 6, 3rd floor, HILIFE, PM Road, Santacruz West - Mumbai Maharashtra 400054 - IN - --10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. --900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -- No.146, Sec. 1,Donxing Rd. -- Zhubei City, Hsinchu County Taiwan 302058 -- TW -+10-54-D2 (hex) Sybersense -+500000-5FFFFF (base 16) Sybersense -+ Unit 10, 16F, Hi-Tech Industrial Centre, Block A, 5-21 Pat Tin Par Street, Tsuen Wan NT, HK -+ Hong Kong 999077 -+ CN - - 10-54-D2 (hex) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD - 700000-7FFFFF (base 16) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD -@@ -9638,12 +9674,6 @@ D00000-DFFFFF (base 16) Shenzhen Vitalitim Technology Co., Ltd - Edison NJ 08837 - US - --10-54-D2 (hex) Sybersense --500000-5FFFFF (base 16) Sybersense -- Unit 10, 16F, Hi-Tech Industrial Centre, Block A, 5-21 Pat Tin Par Street, Tsuen Wan NT, HK -- Hong Kong 999077 -- CN -- - 0C-86-29 (hex) MyGregor Ltd - 800000-8FFFFF (base 16) MyGregor Ltd - 11A, Carnegie str. -@@ -9656,18 +9686,18 @@ D00000-DFFFFF (base 16) Annapurna labs - Mail box 15123 Haifa 3508409 - IL - --6C-93-08 (hex) Shenzhen TOPWAY Technology Co.,LTD --A00000-AFFFFF (base 16) Shenzhen TOPWAY Technology Co.,LTD -- Bld.20 Zone 5, Baiwangxin Industry Park, Songbai Rd.Nanshan Dist -- ShenZhen Guangdong 518055 -- CN -- - 6C-93-08 (hex) Shenzhen DOOGEE Hengtong Technology CO., LTD - 900000-9FFFFF (base 16) Shenzhen DOOGEE Hengtong Technology CO., LTD - B, 2/F, Building A4, Silicon Valley Power Digital Industrial Park, No. 22, Dafu Industrial Zone, Guanlan Aobei Community, Guanlan Street, Longhua New District - Shenzhen Guangdong 518000 - CN - -+6C-93-08 (hex) Shenzhen TOPWAY Technology Co.,LTD -+A00000-AFFFFF (base 16) Shenzhen TOPWAY Technology Co.,LTD -+ Bld.20 Zone 5, Baiwangxin Industry Park, Songbai Rd.Nanshan Dist -+ ShenZhen Guangdong 518055 -+ CN -+ - 30-43-D7 (hex) SYMES SA - 000000-0FFFFF (base 16) SYMES SA - 4 allée technopolis, chemin des presses -@@ -9692,12 +9722,6 @@ E00000-EFFFFF (base 16) ANDDORO LLC - New York NY 10018 - US - --38-1F-26 (hex) Zhejiang Huazhou Intelligent Equipment Co,. Ltd --500000-5FFFFF (base 16) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -- Building3, No.416DdongshengAvenue, Wuzhen, Tongxiang, -- Jiaxing 314000 -- CN -- - 38-1F-26 (hex) Synamedia - 200000-2FFFFF (base 16) Synamedia - Luipaardstraat 12 -@@ -9710,6 +9734,12 @@ C00000-CFFFFF (base 16) Jade Bird Fire Co., Ltd. - Beijing 100871 - CN - -+38-1F-26 (hex) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+500000-5FFFFF (base 16) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+ Building3, No.416DdongshengAvenue, Wuzhen, Tongxiang, -+ Jiaxing 314000 -+ CN -+ - 18-A5-9C (hex) Omwave - 000000-0FFFFF (base 16) Omwave - 5 rue Barbes -@@ -9728,11 +9758,11 @@ C00000-CFFFFF (base 16) Jade Bird Fire Co., Ltd. - nanjing 211100 - CN - --1C-59-74 (hex) Shenzhen Geshem Technology Co Ltd --D00000-DFFFFF (base 16) Shenzhen Geshem Technology Co Ltd -- 12th Floor, Block B, Building 7, International Innovation Valley -- Shenzhen Gunagdong 518000 -- CN -+1C-59-74 (hex) Topway Global Technology Limited -+800000-8FFFFF (base 16) Topway Global Technology Limited -+ Room 1003, 10 / F, Tower 1, Lippo Centre, 89 Queensway, Hong Kong -+ Hong Kong Hong Kong 999077 -+ HK - - 1C-59-74 (hex) King-On Technology Ltd. - C00000-CFFFFF (base 16) King-On Technology Ltd. -@@ -9740,11 +9770,11 @@ C00000-CFFFFF (base 16) King-On Technology Ltd. - New Taipei Taiwan 23146 - TW - --1C-59-74 (hex) Topway Global Technology Limited --800000-8FFFFF (base 16) Topway Global Technology Limited -- Room 1003, 10 / F, Tower 1, Lippo Centre, 89 Queensway, Hong Kong -- Hong Kong Hong Kong 999077 -- HK -+1C-59-74 (hex) Shenzhen Geshem Technology Co Ltd -+D00000-DFFFFF (base 16) Shenzhen Geshem Technology Co Ltd -+ 12th Floor, Block B, Building 7, International Innovation Valley -+ Shenzhen Gunagdong 518000 -+ CN - - 18-A5-9C (hex) Annapurna labs - D00000-DFFFFF (base 16) Annapurna labs -@@ -9824,6 +9854,60 @@ C00000-CFFFFF (base 16) shenzhen newbridge communication equipment CO.,LTD - Shenzhen Guangdong 518057 - CN - -+8C-51-09 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+A00000-AFFFFF (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -+ Suzhou 215021 -+ CN -+ -+8C-51-09 (hex) TianJin JointOptic Technology Co., LTD. -+000000-0FFFFF (base 16) TianJin JointOptic Technology Co., LTD. -+ Floor 3, Building 6, Teda Service Outsourcing Industrial Park, 19 Xinhuan West Road, Binhai New Area, -+ Tianjin 300000 -+ CN -+ -+8C-51-09 (hex) Shenzhen WOWOTO Technology Co., Ltd. -+400000-4FFFFF (base 16) Shenzhen WOWOTO Technology Co., Ltd. -+ Room B508,Building B,Gaoxingqi Industrial Park,Liuxian 1st Road,District 67,Bao'an -+ Shenzhen Guangdong 518100 -+ CN -+ -+8C-51-09 (hex) Beijing Superhexa Century Technology Co., Ltd. -+B00000-BFFFFF (base 16) Beijing Superhexa Century Technology Co., Ltd. -+ Room 1022, 1F, Zone A, No.1, South Back Street, Anningzhuang, Haidian District, Beijing -+ Beijing 100010 -+ CN -+ -+E4-95-6E (hex) Tband srl -+100000-1FFFFF (base 16) Tband srl -+ Via Camucina 27/A -+ PORTOGRUARO Venezia 30026 -+ IT -+ -+0C-7F-ED (hex) ALT Co., Ltd. -+D00000-DFFFFF (base 16) ALT Co., Ltd. -+ #1201, 8, Seongnam-dearo 331beon-gil -+ Bundang-gu, Seongnam-si Gyeonggi-do 13558 -+ KR -+ -+0C-7F-ED (hex) Shenzhen ORVIBO Technology Co., Ltd. -+900000-9FFFFF (base 16) Shenzhen ORVIBO Technology Co., Ltd. -+ F7, Block A7, Nanshan I Park, No.1001 XueYuan Avenue , NanShan District, ShenZhen 518055 PRC. -+ shenzhen 518000 -+ CN -+ -+0C-7F-ED (hex) Netweb Technologies India Pvt Ltd -+600000-6FFFFF (base 16) Netweb Technologies India Pvt Ltd -+ Plot H1, Pocket-9, FIT,Sector-57, Ballabhgarh -+ Faridabad Haryana 121004 -+ IN -+ -+FC-61-79 (hex) Kvaliteta Systems and Solutions Private Limited -+700000-7FFFFF (base 16) Kvaliteta Systems and Solutions Private Limited -+ 2207 Yamuna Building Techno Park Phase 3 -+ Trivandrum Kerala 695583 -+ IN -+ - 20-85-93 (hex) UNILUMIN GROUP CO.,LTD - 300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD - No.112 Yongfu Rd.,BaoanDistrict, -@@ -14687,12 +14771,6 @@ A00000-AFFFFF (base 16) Pavana Technologies JSC. - Vinh Phuc 35000 - VN - --10-54-D2 (hex) COSMO AIOT TECHNOLOGY CO LTD --E00000-EFFFFF (base 16) COSMO AIOT TECHNOLOGY CO LTD -- Haier Information Industrial Complex, No.1 HaierRoad -- Qingdao Shandong 266101 -- CN -- - 10-54-D2 (hex) GIPS Technology Co., Ltd. - 000000-0FFFFF (base 16) GIPS Technology Co., Ltd. - Rm. 2, 6F., No. 395, Sec. 1, Linsen Rd., East Dist. -@@ -14717,6 +14795,12 @@ C00000-CFFFFF (base 16) LUXSHARE-ICT Co., Ltd. - Taipei City Taiwan 114754 - TW - -+10-54-D2 (hex) COSMO AIOT TECHNOLOGY CO LTD -+E00000-EFFFFF (base 16) COSMO AIOT TECHNOLOGY CO LTD -+ Haier Information Industrial Complex, No.1 HaierRoad -+ Qingdao Shandong 266101 -+ CN -+ - 0C-86-29 (hex) SHENZHEN YINGMU TECHNOLOGY.,LTD - C00000-CFFFFF (base 16) SHENZHEN YINGMU TECHNOLOGY.,LTD - 8 / F, Zone D, building F1, TCL International E city, Shuguang community, Xili street, Nanshan District, -@@ -14741,6 +14825,12 @@ E00000-EFFFFF (base 16) FX TECHNOLOGY LIMITED - Karlsruhe 76131 - DE - -+30-43-D7 (hex) Shenzhen juduoping Technology Co.,Ltd -+100000-1FFFFF (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ - 30-43-D7 (hex) Sprocomm Technologies Co., Ltd.Guangming Branch - 600000-6FFFFF (base 16) Sprocomm Technologies Co., Ltd.Guangming Branch - Area A 3rd Floor, Area A 5rd Floor and 6th Floor, 301, building 2, 7th Industrial Park, Yulv Community,Yutang Street, Guangming District, -@@ -14753,12 +14843,6 @@ C00000-CFFFFF (base 16) Shenzhen haichangxing Technology Co., Ltd. - SHENZHEN GUANGZHOU 518000 - CN - --30-43-D7 (hex) Shenzhen juduoping Technology Co.,Ltd --100000-1FFFFF (base 16) Shenzhen juduoping Technology Co.,Ltd -- Baoan Xin'an Streat -- Shenzhen 002052 -- CN -- - 30-43-D7 (hex) Guangdong Hongqin Telecom Technology Co. Ltd. - E00000-EFFFFF (base 16) Guangdong Hongqin Telecom Technology Co. Ltd. - 10 Keyuan Road, Songshan Lake -@@ -14771,18 +14855,18 @@ E00000-EFFFFF (base 16) Guangdong Hongqin Telecom Technology Co. Ltd. - Bengaluru Karnataka 560100 - IN - --18-A5-9C (hex) ePower Network Solution Co., Ltd. --700000-7FFFFF (base 16) ePower Network Solution Co., Ltd. -- No. 2, Aly. 1, Ln. 85, Xinshu Rd., Xinzhuang Dist., -- New Taipei City , 242063 -- TW -- - 18-A5-9C (hex) Erba Lachema s.r.o. - A00000-AFFFFF (base 16) Erba Lachema s.r.o. - Karasek1d - Brno 62100 - CZ - -+18-A5-9C (hex) ePower Network Solution Co., Ltd. -+700000-7FFFFF (base 16) ePower Network Solution Co., Ltd. -+ No. 2, Aly. 1, Ln. 85, Xinshu Rd., Xinzhuang Dist., -+ New Taipei City , 242063 -+ TW -+ - 1C-59-74 (hex) Shenzhen Hanshine Technology Co.Ltd. - 000000-0FFFFF (base 16) Shenzhen Hanshine Technology Co.Ltd. - Buiding 2 ,row 3,number 2 industrail zone,yulv community,Yutang street -@@ -14795,24 +14879,12 @@ A00000-AFFFFF (base 16) Erba Lachema s.r.o. - Chongqing 400000 - CN - --6C-15-24 (hex) Telsonic AG --100000-1FFFFF (base 16) Telsonic AG -- Industriestrasse 6b -- Bronschhofen St.Gallen 9552 -- CH -- - 18-A5-9C (hex) Beijing QS Medical Technology Co., Ltd. - 300000-3FFFFF (base 16) Beijing QS Medical Technology Co., Ltd. - Building 5, No.11, Kechuang 14th Street, Economic-Technological Development Area - Beijing 100176 - CN - --6C-15-24 (hex) SYMLINK CORPORATION --D00000-DFFFFF (base 16) SYMLINK CORPORATION -- 6F., No. 13, Lane. 35, Jihu Rd., Neihu Dist., Neihu Technology Park -- Taipei 11492 -- TW -- - C4-A1-0E (hex) Clinton Electronics Corporation - B00000-BFFFFF (base 16) Clinton Electronics Corporation - 6701 Clinton Road -@@ -14825,6 +14897,12 @@ C4-A1-0E (hex) Wistron InfoComn (Kunshan) Co., Ltd. - Kunshan Jiangsu 215300 - CN - -+6C-15-24 (hex) Telsonic AG -+100000-1FFFFF (base 16) Telsonic AG -+ Industriestrasse 6b -+ Bronschhofen St.Gallen 9552 -+ CH -+ - C4-A1-0E (hex) Guangzhou South Satellite Navigation Instrument Co., Ltd. - 700000-7FFFFF (base 16) Guangzhou South Satellite Navigation Instrument Co., Ltd. - Area A Layer 6, Area A Layer 5, Area A Layer 4, No.39, Sicheng Road, Tianhe District, -@@ -14837,24 +14915,18 @@ C4-A1-0E (hex) Guangzhou South Satellite Navigation Instrument Co., Ltd. - Bentley Western Australia 6102 - AU - -+6C-15-24 (hex) SYMLINK CORPORATION -+D00000-DFFFFF (base 16) SYMLINK CORPORATION -+ 6F., No. 13, Lane. 35, Jihu Rd., Neihu Dist., Neihu Technology Park -+ Taipei 11492 -+ TW -+ - 6C-15-24 (hex) AEC s.r.l. - E00000-EFFFFF (base 16) AEC s.r.l. - Via Zambon, 33/A - Creazzo Vicenza 36051 - IT - --70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd. --000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -- 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -- ShenZhen GuangDong 518000 -- CN -- --70-50-E7 (hex) Beijing Shannoncyber Technology Co.,Ltd --B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd -- 913 9/F,building 8,yard 2,Shenggu Middle Road,Chaoyang District -- beijing beijing 100029 -- CN -- - C4-A1-0E (hex) Harbour Cross Technology Ltd - 400000-4FFFFF (base 16) Harbour Cross Technology Ltd - Unit 622 One Island South, 2 Heung Yip Road, Wong Chuk Hang, -@@ -14867,10 +14939,16 @@ C4-A1-0E (hex) Harbour Cross Technology Ltd - Mail box 15123 Haifa 3508409 - IL - --80-02-F4 (hex) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. --900000-9FFFFF (base 16) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -- SECOND FLOOR, NO. 943-4, TONGLONG 2ND ROAD, TORCH HIGH-TECH (XIANG 'AN) INDUSTRY DISTRICT,XIAMEN CITY, FUJIAN PROVINCE,CHINA -- XIAMEN 361106 -+70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd. -+000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -+ 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -+ ShenZhen GuangDong 518000 -+ CN -+ -+70-50-E7 (hex) Beijing Shannoncyber Technology Co.,Ltd -+B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd -+ 913 9/F,building 8,yard 2,Shenggu Middle Road,Chaoyang District -+ beijing beijing 100029 - CN - - 80-02-F4 (hex) PassiveLogic -@@ -14879,12 +14957,90 @@ A00000-AFFFFF (base 16) PassiveLogic - Holladay UT 84121 - US - -+80-02-F4 (hex) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+900000-9FFFFF (base 16) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+ SECOND FLOOR, NO. 943-4, TONGLONG 2ND ROAD, TORCH HIGH-TECH (XIANG 'AN) INDUSTRY DISTRICT,XIAMEN CITY, FUJIAN PROVINCE,CHINA -+ XIAMEN 361106 -+ CN -+ - 80-02-F4 (hex) Sichuan Fanyi Technology Co. Ltd. - 500000-5FFFFF (base 16) Sichuan Fanyi Technology Co. Ltd. - No. 1707, Unit 1, Building 1, 888, Middle Section of Yizhou Avenue, Gaoxin District - Chengdu Sichuan 650000 - CN - -+80-02-F4 (hex) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -+D00000-DFFFFF (base 16) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -+ No. 52, Guoxiang Road, Wujin economic development zone -+ ChangZhou JiangSu 213100 -+ CN -+ -+80-02-F4 (hex) Infors AG -+400000-4FFFFF (base 16) Infors AG -+ Wuhrmattstr. 7 -+ Bottmingen 4103 -+ CH -+ -+80-02-F4 (hex) Mech-Mind Robotics Technologies Ltd. -+600000-6FFFFF (base 16) Mech-Mind Robotics Technologies Ltd. -+ Room 1001,1F,Building 3, No.8,Chuangye Road,Haidian District -+ Beijing 100085 -+ CN -+ -+8C-51-09 (hex) ENPLUG Co., Ltd. -+700000-7FFFFF (base 16) ENPLUG Co., Ltd. -+ #A-705, 46 Dallaenae-ro, Sujeong-gu, -+ Seongnam-si Gyeonggi-do 13449 -+ KR -+ -+8C-51-09 (hex) Frontmatec -+900000-9FFFFF (base 16) Frontmatec -+ Hassellunden 9 -+ Smørum 2765 -+ DK -+ -+0C-7F-ED (hex) ShenZhen TianGang Micro Technology CO.LTD -+500000-5FFFFF (base 16) ShenZhen TianGang Micro Technology CO.LTD -+ 3rd floor ,Building20,QingHu Industrial,QingHu community,LongHua DistrictShenZhen,China -+ ShenZhen GangDong 518100 -+ CN -+ -+0C-7F-ED (hex) U-tec Group Inc. -+800000-8FFFFF (base 16) U-tec Group Inc. -+ 32920 Alvarado-Niles Rd Ste 220 -+ Union City CA 94587 -+ US -+ -+0C-7F-ED (hex) Soft dB -+300000-3FFFFF (base 16) Soft dB -+ 1040, avenue Belvédère #215 -+ Québec Quebec G1S 3G3 -+ CA -+ -+FC-61-79 (hex) MACH SYSTEMS s.r.o. -+900000-9FFFFF (base 16) MACH SYSTEMS s.r.o. -+ Pocernicka 272/96 -+ Prague 10800 -+ CZ -+ -+FC-61-79 (hex) Annapurna labs -+800000-8FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+FC-61-79 (hex) Zhuhai Anjubao Electronics Technology Co., Ltd. -+000000-0FFFFF (base 16) Zhuhai Anjubao Electronics Technology Co., Ltd. -+ Room 603, Building 4, No. 101, Daxue Road, Tangjiawan Town, High-tech Zone, -+ Zhuhai Guangdong 519000 -+ CN -+ -+FC-61-79 (hex) Shenzhen Shenshui Electronic Commerce Co.,Ltd -+200000-2FFFFF (base 16) Shenzhen Shenshui Electronic Commerce Co.,Ltd -+ Room 517, Biaofan Building, No. 6, Tangwei Industrial Avenue, Fuhai Street, Baoan District -+ Shenzhen 518132 -+ CN -+ - 4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd. - 600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd. - 22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone -@@ -19667,18 +19823,18 @@ D00000-DFFFFF (base 16) Sun wealth technology corporation limited - Seoul 05808 - KR - --0C-86-29 (hex) HagerEnergy GmbH --700000-7FFFFF (base 16) HagerEnergy GmbH -- Karlstrasse 5 -- Osnabrueck 49074 -- DE -- - 6C-93-08 (hex) Shenzhen EZpro Sound & Light Technology Co., Ltd. - B00000-BFFFFF (base 16) Shenzhen EZpro Sound & Light Technology Co., Ltd. - E2?TCL International E City,1001 Zhong Shan Yuan Rd,Nanshan District - shenz guangdong 518055 - CN - -+0C-86-29 (hex) HagerEnergy GmbH -+700000-7FFFFF (base 16) HagerEnergy GmbH -+ Karlstrasse 5 -+ Osnabrueck 49074 -+ DE -+ - 30-43-D7 (hex) Xiaoniu network technology (Shanghai) Co., Ltd. - C00000-CFFFFF (base 16) Xiaoniu network technology (Shanghai) Co., Ltd. - Room 706, building 3, no.20 east road, jingan district. -@@ -19697,17 +19853,23 @@ A00000-AFFFFF (base 16) Flextronics International Kft - Zalaegerszeg 8900 - HU - -+38-1F-26 (hex) Airmaster A/S -+400000-4FFFFF (base 16) Airmaster A/S -+ Industrivej 59 -+ Aars 9600 -+ DK -+ - 38-1F-26 (hex) HWACHANG CORPORATION - D00000-DFFFFF (base 16) HWACHANG CORPORATION - 90, NONGGONGANJI-GIL - SOCHO-SI 24899 - KR - --38-1F-26 (hex) Airmaster A/S --400000-4FFFFF (base 16) Airmaster A/S -- Industrivej 59 -- Aars 9600 -- DK -+18-A5-9C (hex) Residence Control Ltd -+800000-8FFFFF (base 16) Residence Control Ltd -+ Cvetan Vuchkov 7 -+ Sofia Sofia 1614 -+ BG - - 18-A5-9C (hex) Actiontec Electronics Inc. - 200000-2FFFFF (base 16) Actiontec Electronics Inc. -@@ -19721,12 +19883,6 @@ D00000-DFFFFF (base 16) HWACHANG CORPORATION - Yeongtong-gu, Suwon-si Gyeonggi-do 16229 - KR - --18-A5-9C (hex) Residence Control Ltd --800000-8FFFFF (base 16) Residence Control Ltd -- Cvetan Vuchkov 7 -- Sofia Sofia 1614 -- BG -- - 7C-70-BC (hex) Motec GmbH - A00000-AFFFFF (base 16) Motec GmbH - 287 27 Road -@@ -19751,6 +19907,12 @@ B00000-BFFFFF (base 16) Beijing Flintec Electronic Technology Co.,Ltd. - shanghai 201614 - CN - -+1C-59-74 (hex) Square Inc. -+600000-6FFFFF (base 16) Square Inc. -+ 1455 Market St. -+ San Francisco CA 94103 -+ US -+ - 6C-15-24 (hex) Shenzhen Electron Technology Co., LTD. - 500000-5FFFFF (base 16) Shenzhen Electron Technology Co., LTD. - Building 2, Yingfeng Industrial Zone, Tantou Community, Songgang Street, Bao'an District -@@ -19769,18 +19931,6 @@ B00000-BFFFFF (base 16) Annapurna labs - Mail box 15123 Haifa 3508409 - IL - --1C-59-74 (hex) Square Inc. --600000-6FFFFF (base 16) Square Inc. -- 1455 Market St. -- San Francisco CA 94103 -- US -- --6C-15-24 (hex) DEFA AS --000000-0FFFFF (base 16) DEFA AS -- Blingsmovegen 30 -- Nesbyen 3540 -- NO -- - 6C-15-24 (hex) Linkplay - 200000-2FFFFF (base 16) Linkplay - 891 W. Washington Ave. -@@ -19793,6 +19943,12 @@ C00000-CFFFFF (base 16) CORAL-TAIYI - Taipei City 114 - TW - -+6C-15-24 (hex) DEFA AS -+000000-0FFFFF (base 16) DEFA AS -+ Blingsmovegen 30 -+ Nesbyen 3540 -+ NO -+ - C4-A1-0E (hex) O-NET Industrial Technologies (Shenzhen) Limited - 500000-5FFFFF (base 16) O-NET Industrial Technologies (Shenzhen) Limited - 501, Maile building, building 2, No. 28, Cuijing Road, Zhukeng community, Longtian street, Pingshan District -@@ -19817,16 +19973,70 @@ D00000-DFFFFF (base 16) Eta Compute Inc. - Sunnyvale CA 94086 - US - -+80-02-F4 (hex) Wuhan Glory Road Intelligent Technology Co., Ltd. -+C00000-CFFFFF (base 16) Wuhan Glory Road Intelligent Technology Co., Ltd. -+ 18F,Magic Cube Building,Optics Valley Core Center,No.303 Optics Valley Avenue,East Lake High-tech Development Zone -+ Wuhan Hubei 430073 -+ CN -+ - 80-02-F4 (hex) Sichuan lookout environment protection technology co.,Ltd - 100000-1FFFFF (base 16) Sichuan lookout environment protection technology co.,Ltd - No. 1015, floor 10, unit 2, building 1, No. 1616, Nanhua Road, high tech Zone - Chengdu Sichuan 610052 - CN - --80-02-F4 (hex) Wuhan Glory Road Intelligent Technology Co., Ltd. --C00000-CFFFFF (base 16) Wuhan Glory Road Intelligent Technology Co., Ltd. -- 18F,Magic Cube Building,Optics Valley Core Center,No.303 Optics Valley Avenue,East Lake High-tech Development Zone -- Wuhan Hubei 430073 -+8C-51-09 (hex) PROCET Technology Co., Ltd(HK) -+200000-2FFFFF (base 16) PROCET Technology Co., Ltd(HK) -+ Flat B,4/F, Kjngswell Commercial Tower, 171-173 Lockhard Road, Wanchai, Hongkong -+ Hong kong 999077 -+ HK -+ -+80-02-F4 (hex) Alfred Systems Inc -+E00000-EFFFFF (base 16) Alfred Systems Inc -+ 13F, No. 2, Sec. 5, Xinyi Rd. -+ Taipei city 110 -+ TW -+ -+8C-51-09 (hex) SpotterRF LLC -+C00000-CFFFFF (base 16) SpotterRF LLC -+ 720 Timpanogos Parkway -+ Orem UT 84097 -+ US -+ -+0C-7F-ED (hex) Tango Networks Inc -+200000-2FFFFF (base 16) Tango Networks Inc -+ 2801 Network Blvd, Suite 200 -+ Frisco TX TX 75034 -+ US -+ -+0C-7F-ED (hex) Purple Mountain ,Inc -+400000-4FFFFF (base 16) Purple Mountain ,Inc -+ New District -+ SuZhou JiangSu 215000 -+ CN -+ -+FC-61-79 (hex) CHOEUNENG -+400000-4FFFFF (base 16) CHOEUNENG -+ 22, Ildong-ro, Sangnok-gu -+ Ansan-si Gyeonggi-do 15326 -+ KR -+ -+FC-61-79 (hex) EchoStar Mobile -+300000-3FFFFF (base 16) EchoStar Mobile -+ 25/28 NORTH WALL QUAY, DUBLIN 1, D01H104 Ireland -+ Dublin Ireland D01H104 -+ IE -+ -+0C-7F-ED (hex) environmental systems corporation -+E00000-EFFFFF (base 16) environmental systems corporation -+ 122F Commerce Park Drive -+ Barrie Ontario L4N 8W8 -+ CA -+ -+FC-61-79 (hex) Hangzhou LiDe Communication Co.,Ltd -+600000-6FFFFF (base 16) Hangzhou LiDe Communication Co.,Ltd -+ No.188,DongJia Rd,Tonglu Econominc Development Zone,Hangzhou,Zhejiang, -+ Hangzhou 311500 - CN - - 20-85-93 (hex) Great Lite International -@@ -24632,12 +24842,6 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - Colorado Springs CO 80907 - US - --6C-93-08 (hex) Uconfree technology(shenzhen)limited --600000-6FFFFF (base 16) Uconfree technology(shenzhen)limited -- Room 311 PuFeng commercial center PingHu street LongGang District ShenZhen China -- SHENZHEN 518111 -- CN -- - 0C-86-29 (hex) Annapurna labs - 300000-3FFFFF (base 16) Annapurna labs - Matam Scientific Industries Center, Building 8.2 -@@ -24650,11 +24854,11 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - Hangzhou City Zhejiang Province 31000 - CN - --30-43-D7 (hex) Bodhi --A00000-AFFFFF (base 16) Bodhi -- 3150 W. Prospect Road, Suite 330 -- Fort Lauderdale FL 33309 -- US -+6C-93-08 (hex) Uconfree technology(shenzhen)limited -+600000-6FFFFF (base 16) Uconfree technology(shenzhen)limited -+ Room 311 PuFeng commercial center PingHu street LongGang District ShenZhen China -+ SHENZHEN 518111 -+ CN - - 6C-93-08 (hex) ZHEJIANG XIAN DA Environmental Technology Co., Ltd - 200000-2FFFFF (base 16) ZHEJIANG XIAN DA Environmental Technology Co., Ltd -@@ -24662,24 +24866,24 @@ A00000-AFFFFF (base 16) Bodhi - HANGZHOU ZHEJIANG 310000 - CN - --30-43-D7 (hex) Kesu (Shanghai) Electronic Technology Co., Ltd --800000-8FFFFF (base 16) Kesu (Shanghai) Electronic Technology Co., Ltd -- 3-36588?No. 1800, Panyuan Road, Changxing Town, Chongming District -- Shanghai 202150 -- CN -- - 30-43-D7 (hex) PK Solutions LLC - 900000-9FFFFF (base 16) PK Solutions LLC - 10811 E Harry - Wichita KS 67207 - US - --30-43-D7 (hex) FIBERME COMMUNICATIONS LLC --400000-4FFFFF (base 16) FIBERME COMMUNICATIONS LLC -- 1749 Old Meadow Rd. -- McLean VA 22102 -+30-43-D7 (hex) Bodhi -+A00000-AFFFFF (base 16) Bodhi -+ 3150 W. Prospect Road, Suite 330 -+ Fort Lauderdale FL 33309 - US - -+30-43-D7 (hex) Kesu (Shanghai) Electronic Technology Co., Ltd -+800000-8FFFFF (base 16) Kesu (Shanghai) Electronic Technology Co., Ltd -+ 3-36588?No. 1800, Panyuan Road, Changxing Town, Chongming District -+ Shanghai 202150 -+ CN -+ - 38-1F-26 (hex) NOITAC sp. z o.o. sp.k. - 600000-6FFFFF (base 16) NOITAC sp. z o.o. sp.k. - Szlak 28/3 -@@ -24692,6 +24896,12 @@ A00000-AFFFFF (base 16) Bodhi - YANG YANG GUN 25017 - KR - -+30-43-D7 (hex) FIBERME COMMUNICATIONS LLC -+400000-4FFFFF (base 16) FIBERME COMMUNICATIONS LLC -+ 1749 Old Meadow Rd. -+ McLean VA 22102 -+ US -+ - 38-1F-26 (hex) Deutronic Elektronik GmbH - B00000-BFFFFF (base 16) Deutronic Elektronik GmbH - Deutronicstraße 5 -@@ -24758,18 +24968,18 @@ A00000-AFFFFF (base 16) Jiangsu Perceive World Technology Co.,Ltd. - Nur-Sultan 010000 - KZ - --C4-A1-0E (hex) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD --900000-9FFFFF (base 16) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -- No.211 Tiangu 8th Road, High-tech Zone -- Xi 'an Shaanxi 710065 -- CN -- - 6C-15-24 (hex) STERIS - A00000-AFFFFF (base 16) STERIS - Unit 7 & 8, Stortford Hall Industrial Park, Dunmow Road - Bishops Stortford herts CM23 5GZ - GB - -+C4-A1-0E (hex) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -+900000-9FFFFF (base 16) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD -+ No.211 Tiangu 8th Road, High-tech Zone -+ Xi 'an Shaanxi 710065 -+ CN -+ - C4-A1-0E (hex) Alio, Inc - E00000-EFFFFF (base 16) Alio, Inc - 10901 W. 120th Ave, Suite 380 -@@ -24811,3 +25021,93 @@ A00000-AFFFFF (base 16) Guangzhou Tianhe High Tech Industrial Development Z - 1730 North First Street, 5th Floor - San Jose CA 95112 - US -+ -+80-02-F4 (hex) Annapurna labs -+800000-8FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+8C-51-09 (hex) Avxav Electronic Trading LLC -+600000-6FFFFF (base 16) Avxav Electronic Trading LLC -+ Office 534 Building # 6WA Dubai Airport Free Zone -+ Dubai Dubai 33964 -+ AE -+ -+80-02-F4 (hex) Lazer Safe Pty Ltd -+700000-7FFFFF (base 16) Lazer Safe Pty Ltd -+ 27 Action Road -+ Perth WA 6090 -+ AU -+ -+80-02-F4 (hex) Beijing Cybercore -+200000-2FFFFF (base 16) Beijing Cybercore -+ A206,F2,Yard#12,Building#1,JingAn DongLi,Chaoyang -+ Beijing Beijing 100028 -+ CN -+ -+8C-51-09 (hex) SHENZHEN LDROBOT CO., LTD. -+300000-3FFFFF (base 16) SHENZHEN LDROBOT CO., LTD. -+ Nanshan -+ Shenzhen 518000 -+ CN -+ -+8C-51-09 (hex) nerospec -+800000-8FFFFF (base 16) nerospec -+ 9 Freda Road, Bromhof,Skyview Retail Park -+ Randburg Gauteng 2169 -+ ZA -+ -+8C-51-09 (hex) Surpedia Technologies Co., Ltd. -+D00000-DFFFFF (base 16) Surpedia Technologies Co., Ltd. -+ 5F-1, No.212, Sec 3, Datong Rd. -+ Xhzhi Dist. New Taipei City 22103 -+ TW -+ -+8C-51-09 (hex) IROOTELLUCKY Corp. -+E00000-EFFFFF (base 16) IROOTELLUCKY Corp. -+ 609ho, 13, LS-ro -+ Gunpo-si Gyeonggi-do 15843 -+ KR -+ -+0C-7F-ED (hex) Shenzhen MoreSense Technology Co., Ltd. -+C00000-CFFFFF (base 16) Shenzhen MoreSense Technology Co., Ltd. -+ #206 Building A1,#663 Bulong Road,Dafapu Community,Bantian Street, -+ Shenzhen Guangdong 518129 -+ CN -+ -+0C-7F-ED (hex) Grandway Technology (Shenzhen) Limited -+700000-7FFFFF (base 16) Grandway Technology (Shenzhen) Limited -+ Block 7, Zhu Keng Industrial Zone -+ Ping Shan District Shenzhen 518118 -+ CN -+ -+0C-7F-ED (hex) TelX Systems -+B00000-BFFFFF (base 16) TelX Systems -+ UMM RAMOOL -+ DEIRA DUBAI 48235 -+ AE -+ -+FC-61-79 (hex) Int'Act Pty Ltd -+D00000-DFFFFF (base 16) Int'Act Pty Ltd -+ 4 Pine Street -+ North Ipswich Queensland 4305 -+ AU -+ -+0C-7F-ED (hex) Toast, Inc. -+100000-1FFFFF (base 16) Toast, Inc. -+ 401 Park Drive, Suite 801 -+ Boston MA 02215 -+ US -+ -+FC-61-79 (hex) Signalinks Communication Technology Co.,Ltd -+100000-1FFFFF (base 16) Signalinks Communication Technology Co.,Ltd -+ 3rd Floor, Building 6, Longxing Sciece park, East Huaning Road, Dalang Street , Longhua District, Shenzhen -+ Shenzhen Guangdong 518000 -+ CN -+ -+FC-61-79 (hex) Shenzhen Dptek Technology Co., Ltd. -+A00000-AFFFFF (base 16) Shenzhen Dptek Technology Co., Ltd. -+ Room 706, Building Pincui, Zhongcui Garden,Dafen Community, Buji Street, Longgang District -+ Shenzhen Guangdong 518000 -+ CN -diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt -index 6a21795559..704a346ad5 100644 ---- a/hwdb.d/ma-small.txt -+++ b/hwdb.d/ma-small.txt -@@ -5687,6 +5687,12 @@ F74000-F74FFF (base 16) GE AVIC Civil Avionics Systems Company Limited - Shanghai 200241 - CN - -+8C-1F-64 (hex) Stercom Power Solutions GmbH -+2B6000-2B6FFF (base 16) Stercom Power Solutions GmbH -+ Ziegelstr. 1 -+ Weyarn Bayern 83629 -+ DE -+ - 8C-1F-64 (hex) Shenzhen zhushida Technology lnformation Co.,Ltd - A5D000-A5DFFF (base 16) Shenzhen zhushida Technology lnformation Co.,Ltd - 1309, Block A, Innovation Building, Majialong Industrial Zone, Nantou Street, Nanshan District, -@@ -5699,12 +5705,6 @@ A5D000-A5DFFF (base 16) Shenzhen zhushida Technology lnformation Co.,Ltd - Sydney New South Wales 2132 - AU - --8C-1F-64 (hex) Stercom Power Solutions GmbH --2B6000-2B6FFF (base 16) Stercom Power Solutions GmbH -- Ziegelstr. 1 -- Weyarn Bayern 83629 -- DE -- - 8C-1F-64 (hex) Gateview Technologies - B7B000-B7BFFF (base 16) Gateview Technologies - 104 White St #201 -@@ -5741,6 +5741,12 @@ FBA000-FBAFFF (base 16) Onto Innovation - Wilmington MA 01887 - US - -+8C-1F-64 (hex) DAVE SRL -+967000-967FFF (base 16) DAVE SRL -+ VIA TALPONEDO 29/A -+ PORCIA PORDENONE 330850 -+ IT -+ - 8C-1F-64 (hex) Becton Dickinson - 775000-775FFF (base 16) Becton Dickinson - 7 Loveton Circle -@@ -5759,12 +5765,6 @@ BFB000-BFBFFF (base 16) TechArgos - Moscow 105066 - RU - --8C-1F-64 (hex) DAVE SRL --967000-967FFF (base 16) DAVE SRL -- VIA TALPONEDO 29/A -- PORCIA PORDENONE 330850 -- IT -- - 8C-1F-64 (hex) e.kundenservice Netz GmbH - 855000-855FFF (base 16) e.kundenservice Netz GmbH - Steindamm 100 -@@ -5801,23 +5801,17 @@ EB5000-EB5FFF (base 16) Meiryo Denshi Corp. - Gadag Karnataka 582103 - IN - --8C-1F-64 (hex) Tesat-Spacecom GmbH & Co. KG --F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG -- Gerberstrasse 49 -- Backnang 71522 -- DE -- - 8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme - 059000-059FFF (base 16) MB connect line GmbH Fernwartungssysteme - Winnettener Straße 6 - Dinkelsbuehl Bavaria 91550 - DE - --8C-1F-64 (hex) JBF --F45000-F45FFF (base 16) JBF -- via goretta 90 -- mappano torino 10079 -- IT -+8C-1F-64 (hex) Tesat-Spacecom GmbH & Co. KG -+F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG -+ Gerberstrasse 49 -+ Backnang 71522 -+ DE - - 8C-1F-64 (hex) REFU Storage System GmbH - 53B000-53BFFF (base 16) REFU Storage System GmbH -@@ -5831,6 +5825,12 @@ F45000-F45FFF (base 16) JBF - Bergisch Gladbach North Rhine-Westphalia 51465 - DE - -+8C-1F-64 (hex) JBF -+F45000-F45FFF (base 16) JBF -+ via goretta 90 -+ mappano torino 10079 -+ IT -+ - 8C-1F-64 (hex) Micro Electroninc Products - 765000-765FFF (base 16) Micro Electroninc Products - TT Vasumweg 150 -@@ -5849,35 +5849,17 @@ F45000-F45FFF (base 16) JBF - Indianapolis IN 46240 - US - --8C-1F-64 (hex) INVIXIUM ACCESS INC --274000-274FFF (base 16) INVIXIUM ACCESS INC -- 111 Gordon Baker Road, Suite #300 -- Toronto Ontario M2H 3R1 -- CA -- - 8C-1F-64 (hex) Sicon srl - B3B000-B3BFFF (base 16) Sicon srl - Via Sila 1/3 - Isola Vicentina Vicenza 36033 - IT - --8C-1F-64 (hex) Sanchar Telesystems limited --958000-958FFF (base 16) Sanchar Telesystems limited -- A-78, GROUND FLOOR, OKHLA INDUSTRIAL AREA, PHASE - II, NEW DELHI -- New Delhi Delhi 110020 -- IN -- --8C-1F-64 (hex) Tantronic AG --1EF000-1EFFFF (base 16) Tantronic AG -- Gewerbering 12 -- Wohlen AG 5610 -- CH -- --8C-1F-64 (hex) Tunstall A/S --F2C000-F2CFFF (base 16) Tunstall A/S -- Niels Bohrs vej 42 -- Stilling Skanderborg 8660 -- DK -+8C-1F-64 (hex) INVIXIUM ACCESS INC -+274000-274FFF (base 16) INVIXIUM ACCESS INC -+ 111 Gordon Baker Road, Suite #300 -+ Toronto Ontario M2H 3R1 -+ CA - - 8C-1F-64 (hex) Bunka Shutter Co., Ltd. - 0B0000-0B0FFF (base 16) Bunka Shutter Co., Ltd. -@@ -5885,6 +5867,12 @@ F2C000-F2CFFF (base 16) Tunstall A/S - Oyama Tochigi 323-0063 - JP - -+8C-1F-64 (hex) Sanchar Telesystems limited -+958000-958FFF (base 16) Sanchar Telesystems limited -+ A-78, GROUND FLOOR, OKHLA INDUSTRIAL AREA, PHASE - II, NEW DELHI -+ New Delhi Delhi 110020 -+ IN -+ - 8C-1F-64 (hex) Rodgers Instruments US LLC - A42000-A42FFF (base 16) Rodgers Instruments US LLC - 6497 NE Croeni Avenue -@@ -5903,6 +5891,42 @@ A42000-A42FFF (base 16) Rodgers Instruments US LLC - Ottawa ON K2G 0G3 - CA - -+8C-1F-64 (hex) Tunstall A/S -+F2C000-F2CFFF (base 16) Tunstall A/S -+ Niels Bohrs vej 42 -+ Stilling Skanderborg 8660 -+ DK -+ -+8C-1F-64 (hex) Tantronic AG -+1EF000-1EFFFF (base 16) Tantronic AG -+ Gewerbering 12 -+ Wohlen AG 5610 -+ CH -+ -+8C-1F-64 (hex) Strategic Robotic Systems -+C57000-C57FFF (base 16) Strategic Robotic Systems -+ 14842 NE 95th StreetBuilding 5 -+ Redmond WA 98052 -+ US -+ -+8C-1F-64 (hex) MHE Electronics -+E90000-E90FFF (base 16) MHE Electronics -+ 49Alexander Rd, Westmead -+ Durban KwaZulu Natal 3610 -+ ZA -+ -+8C-1F-64 (hex) tickIoT Inc. -+949000-949FFF (base 16) tickIoT Inc. -+ 651 N Broad St Ste 206, Ste 206 -+ Middletown DE 19709 -+ US -+ -+8C-1F-64 (hex) SYSN -+2C5000-2C5FFF (base 16) SYSN -+ the third floor, 26, Namsan-ro 39beon-gil, Uichang-gu -+ Changwon-si, Gyeongsangnam-do, Republic of Korea 51368 -+ KR -+ - 70-B3-D5 (hex) EVCO SPA - A80000-A80FFF (base 16) EVCO SPA - VIA FELTRE N. 81 -@@ -11465,22 +11489,16 @@ ED9000-ED9FFF (base 16) NETGEN HITECH SOLUTIONS LLP - MUMBAI MAHARASHTRA 400064 - IN - --8C-1F-64 (hex) Wolfspyre Labs --9D4000-9D4FFF (base 16) Wolfspyre Labs -- 5007 Highland Ct #WPL-IEEE -- Austin TX 78731 -- US -- - 8C-1F-64 (hex) Vekto - 4AC000-4ACFFF (base 16) Vekto - Televisieweg 75 - Almere 1322AK - NL - --8C-1F-64 (hex) SpectraDynamics, Inc. --581000-581FFF (base 16) SpectraDynamics, Inc. -- 1849 Cherry St. -- Louisville CO 80027 -+8C-1F-64 (hex) Wolfspyre Labs -+9D4000-9D4FFF (base 16) Wolfspyre Labs -+ 5007 Highland Ct #WPL-IEEE -+ Austin TX 78731 - US - - 8C-1F-64 (hex) IO Master Technology -@@ -11489,11 +11507,11 @@ BD3000-BD3FFF (base 16) IO Master Technology - New Taipei City 235 Taipei 235 - TW - --8C-1F-64 (hex) ESCAD AUTOMATION GmbH --05F000-05FFFF (base 16) ESCAD AUTOMATION GmbH -- Escadstr. 1 -- Pfullendorf 88630 -- DE -+8C-1F-64 (hex) SpectraDynamics, Inc. -+581000-581FFF (base 16) SpectraDynamics, Inc. -+ 1849 Cherry St. -+ Louisville CO 80027 -+ US - - 8C-1F-64 (hex) TIFLEX - 194000-194FFF (base 16) TIFLEX -@@ -11501,11 +11519,11 @@ BD3000-BD3FFF (base 16) IO Master Technology - PONCIN 01450 - FR - --8C-1F-64 (hex) Neuralog LP --115000-115FFF (base 16) Neuralog LP -- 4800 Sugar Grove Blvd., Ste. 200 -- Stafford TX 77479 -- US -+8C-1F-64 (hex) ESCAD AUTOMATION GmbH -+05F000-05FFFF (base 16) ESCAD AUTOMATION GmbH -+ Escadstr. 1 -+ Pfullendorf 88630 -+ DE - - 8C-1F-64 (hex) Sichuan Aiyijan Technology Company Ltd. - 40C000-40CFFF (base 16) Sichuan Aiyijan Technology Company Ltd. -@@ -11531,11 +11549,11 @@ C24000-C24FFF (base 16) Alifax S.r.l. - POLVERARA PD 35020 - IT - --8C-1F-64 (hex) Flextronics International Kft --A4C000-A4CFFF (base 16) Flextronics International Kft -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -+8C-1F-64 (hex) Neuralog LP -+115000-115FFF (base 16) Neuralog LP -+ 4800 Sugar Grove Blvd., Ste. 200 -+ Stafford TX 77479 -+ US - - 8C-1F-64 (hex) Pietro Fiorentini Spa - 8D9000-8D9FFF (base 16) Pietro Fiorentini Spa -@@ -11543,24 +11561,30 @@ A4C000-A4CFFF (base 16) Flextronics International Kft - San Vito al Tagliamento (PN) 33078 - IT - -+8C-1F-64 (hex) Flextronics International Kft -+A4C000-A4CFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU -+ - 8C-1F-64 (hex) Flextronics International Kft - D02000-D02FFF (base 16) Flextronics International Kft - 38. Zrinyi Str. - Zalaegerszeg Zala 8900 - HU - --8C-1F-64 (hex) VMukti Solutions Private Limited --E30000-E30FFF (base 16) VMukti Solutions Private Limited -- 3-4, Shivalik Plaza, Panjrapole, Ambawadi -- Ahmedabad Gujarat 380015 -- IN -- - 8C-1F-64 (hex) Autark GmbH - 943000-943FFF (base 16) Autark GmbH - Platz des Friedens 8 - Baunatal Hessen D-34225 - DE - -+8C-1F-64 (hex) VMukti Solutions Private Limited -+E30000-E30FFF (base 16) VMukti Solutions Private Limited -+ 3-4, Shivalik Plaza, Panjrapole, Ambawadi -+ Ahmedabad Gujarat 380015 -+ IN -+ - 8C-1F-64 (hex) ACTELSER S.L. - 3F4000-3F4FFF (base 16) ACTELSER S.L. - CARRER ALBERT EINSTEIN, 44 -@@ -11597,11 +11621,11 @@ FA2000-FA2FFF (base 16) AZD Praha s.r.o., ZOZ Olomouc - Knoxville TN 37932 - US - --70-B3-D5 (hex) Watteco --E75000-E75FFF (base 16) Watteco -- Rue Gutenberg -- Hennebont Brittany 56700 -- FR -+8C-1F-64 (hex) Beijing Zhongchen Microelectronics Co.,Ltd -+AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd -+ Room 0309, 3rd Floor, Building 2, China Agricultural University International Pioneer Park, No. 10 Tianxiu Road, Haidian District -+ Beijing Beijing 100081 -+ CN - - 8C-1F-64 (hex) Toolplanet Co., Ltd. - 54F000-54FFFF (base 16) Toolplanet Co., Ltd. -@@ -11615,11 +11639,11 @@ E75000-E75FFF (base 16) Watteco - Dubai Dubai 74249 - AE - --8C-1F-64 (hex) Beijing Zhongchen Microelectronics Co.,Ltd --AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd -- Room 0309, 3rd Floor, Building 2, China Agricultural University International Pioneer Park, No. 10 Tianxiu Road, Haidian District -- Beijing Beijing 100081 -- CN -+70-B3-D5 (hex) Watteco -+E75000-E75FFF (base 16) Watteco -+ Rue Gutenberg -+ Hennebont Brittany 56700 -+ FR - - 8C-1F-64 (hex) Weidmann Tecnologia Electrica de Mexico - 7B7000-7B7FFF (base 16) Weidmann Tecnologia Electrica de Mexico -@@ -11657,6 +11681,36 @@ B7C000-B7CFFF (base 16) EVERNET CO,.LTD TAIWAN - Nelson Nelson 7010 - NZ - -+8C-1F-64 (hex) e.p.g. Elettronica s.r.l. -+3D4000-3D4FFF (base 16) e.p.g. Elettronica s.r.l. -+ Via della Crocetta 3 -+ Oltrona di San Mamette Como (CO) 22070 -+ IT -+ -+8C-1F-64 (hex) Stratis IOT -+3C5000-3C5FFF (base 16) Stratis IOT -+ 4230 Main Street -+ Philadelphia PA 19127 -+ US -+ -+8C-1F-64 (hex) Twinleaf LLC -+080000-080FFF (base 16) Twinleaf LLC -+ 300 Deer Creek DriveSuite 300 -+ Plainsboro NJ 08536 -+ US -+ -+8C-1F-64 (hex) Genius vision digital private limted -+CC6000-CC6FFF (base 16) Genius vision digital private limted -+ S-39, GF JANTA MARKET, RAJOURI GARDEN,NEW DELHI - 110027 -+ new delhi new delhi 110027 -+ IN -+ -+8C-1F-64 (hex) FMTec GmbH - Future Management Technologies -+3E3000-3E3FFF (base 16) FMTec GmbH - Future Management Technologies -+ Austraße 59e -+ Bludenz Austria 6700 -+ AT -+ - 70-B3-D5 (hex) System West dba ICS Electronics - E06000-E06FFF (base 16) System West dba ICS Electronics - 7034 Commerce Circle Suite A -@@ -17222,18 +17276,18 @@ E61000-E61FFF (base 16) Stange Elektronik GmbH - Beijing Beijing 100029 - CN - --8C-1F-64 (hex) EOLANE --911000-911FFF (base 16) EOLANE -- ZI DU VAL D OMBREE -- COMBREE - 49520 -- FR -- - 8C-1F-64 (hex) Abbott Diagnostics Technologies AS - 429000-429FFF (base 16) Abbott Diagnostics Technologies AS - P. O. Box 6863 Rodeløkka - Oslo Oslo 0504 - NO - -+8C-1F-64 (hex) EOLANE -+911000-911FFF (base 16) EOLANE -+ ZI DU VAL D OMBREE -+ COMBREE - 49520 -+ FR -+ - 8C-1F-64 (hex) Huz Electronics Ltd - BC2000-BC2FFF (base 16) Huz Electronics Ltd - 10 Avondale road -@@ -17294,12 +17348,6 @@ E64000-E64FFF (base 16) Indefac company - São Paulo São Paulo 04268020 - BR - --8C-1F-64 (hex) Real Digital --3B2000-3B2FFF (base 16) Real Digital -- 655 SW James Pl -- Pullman WA 99163 -- US -- - 8C-1F-64 (hex) Fingoti Limited - CD9000-CD9FFF (base 16) Fingoti Limited - Barnam Ham Farm -@@ -17318,6 +17366,12 @@ FB7000-FB7FFF (base 16) Grace Design/Lunatec LLC - Leawood KS 66251 - US - -+8C-1F-64 (hex) Real Digital -+3B2000-3B2FFF (base 16) Real Digital -+ 655 SW James Pl -+ Pullman WA 99163 -+ US -+ - 8C-1F-64 (hex) Zhuhai Yunzhou Intelligence Technology Ltd. - 254000-254FFF (base 16) Zhuhai Yunzhou Intelligence Technology Ltd. - Room 311,312A,Floor 3,Heung Shan TechPort,No.3888 Qinglv North Road,Tangjiawan Town -@@ -17354,12 +17408,48 @@ CCB000-CCBFFF (base 16) suzhou yuecrown Electronic Technology Co.,LTD - suzhou jiangsu 215000 - CN - -+8C-1F-64 (hex) nke marine electronics -+817000-817FFF (base 16) nke marine electronics -+ 6 rue gutenberg -+ Hennebont 56700 -+ FR -+ -+8C-1F-64 (hex) GS Industrie-Elektronik GmbH -+6B9000-6B9FFF (base 16) GS Industrie-Elektronik GmbH -+ Porschestrasse 11 -+ Leverkusen 51381 -+ DE -+ - 8C-1F-64 (hex) Paragraf - 01A000-01AFFF (base 16) Paragraf - 7-8 West Newlands - Somersham Cambridgeshire PE28 3EB - GB - -+8C-1F-64 (hex) YUYAMA MFG Co.,Ltd -+5AC000-5ACFFF (base 16) YUYAMA MFG Co.,Ltd -+ 1-4-30 -+ MEISHINGUCHI,TOYONAKA OSAKA 561-0841 -+ JP -+ -+8C-1F-64 (hex) Transdigital Pty Ltd -+7CF000-7CFFFF (base 16) Transdigital Pty Ltd -+ 1/160 Stirling Highway -+ Nedlands Western Australia 6009 -+ AU -+ -+8C-1F-64 (hex) Talleres de Escoriaza SA -+F65000-F65FFF (base 16) Talleres de Escoriaza SA -+ Barrio Ventas, 35 -+ Irun Gipuzkoa 20305 -+ ES -+ -+8C-1F-64 (hex) EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT -+CDB000-CDBFFF (base 16) EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT -+ 1132 Budapest, Váci út 22-24. 3. em.) -+ Budapest 1132 -+ HU -+ - 70-B3-D5 (hex) YUYAMA MFG Co.,Ltd - BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd - 3-3-1 -@@ -17900,12 +17990,6 @@ A7B000-A7BFFF (base 16) SmartSafe - Jinan City Shandong Province 250101 - CN - --70-B3-D5 (hex) AVA Technologies Inc. --72F000-72FFFF (base 16) AVA Technologies Inc. -- 45 East Cordova St, AVA Technologies Inc. -- Vancouver BC V6A 1K3 -- CA -- - 70-B3-D5 (hex) Position Imaging - A5D000-A5DFFF (base 16) Position Imaging - 22 marin way unit 1 -@@ -23042,36 +23126,24 @@ BD6000-BD6FFF (base 16) NOVA Products GmbH - Munich 80538 - DE - --8C-1F-64 (hex) ECO-ADAPT --C38000-C38FFF (base 16) ECO-ADAPT -- 39 Rue de Chateaudun -- Paris Ile-de-France 75009 -- FR -- --8C-1F-64 (hex) Flextronics International Kft --F5C000-F5CFFF (base 16) Flextronics International Kft -+70-B3-D5 (hex) Flextronics International Kft -+E2F000-E2FFFF (base 16) Flextronics International Kft - Zrínyi Miklós str. 38. - Zalaegerszeg 8900 - HU - --70-B3-D5 (hex) Flextronics International Kft --E2F000-E2FFFF (base 16) Flextronics International Kft -+8C-1F-64 (hex) Flextronics International Kft -+F5C000-F5CFFF (base 16) Flextronics International Kft - Zrínyi Miklós str. 38. - Zalaegerszeg 8900 - HU - --8C-1F-64 (hex) ADETEC SAS --AE8000-AE8FFF (base 16) ADETEC SAS -- 8 rue de l'Angoumois -- ARGENTEUIL 95100 -+8C-1F-64 (hex) ECO-ADAPT -+C38000-C38FFF (base 16) ECO-ADAPT -+ 39 Rue de Chateaudun -+ Paris Ile-de-France 75009 - FR - --8C-1F-64 (hex) AML --634000-634FFF (base 16) AML -- 2190 Regal Parkway -- Euless TX 76040 -- US -- - 8C-1F-64 (hex) In-lite Design BV - 557000-557FFF (base 16) In-lite Design BV - Stephensonweg 18 -@@ -23096,6 +23168,18 @@ A6D000-A6DFFF (base 16) CyberneX Co., Ltd - YOKOHAMA Kanagawa 222-0033 - JP - -+8C-1F-64 (hex) ADETEC SAS -+AE8000-AE8FFF (base 16) ADETEC SAS -+ 8 rue de l'Angoumois -+ ARGENTEUIL 95100 -+ FR -+ -+8C-1F-64 (hex) AML -+634000-634FFF (base 16) AML -+ 2190 Regal Parkway -+ Euless TX 76040 -+ US -+ - 70-B3-D5 (hex) Active Research Limited - 6A0000-6A0FFF (base 16) Active Research Limited - 21 Harwell Road -@@ -23156,18 +23240,132 @@ D69000-D69FFF (base 16) ADiCo Corporation - Utsunomiya-shi Tochigi 320-0075 - JP - -+8C-1F-64 (hex) METRONA-Union GmbH -+9FA000-9FAFFF (base 16) METRONA-Union GmbH -+ Aidenbachstr. 40 -+ München 81379 -+ DE -+ - 8C-1F-64 (hex) Wittra Networks AB - DF8000-DF8FFF (base 16) Wittra Networks AB - Västra Järnvägsgatan 39th floor(Convendum) - Stockholm Stockholm 111 64 - SE - --8C-1F-64 (hex) METRONA-Union GmbH --9FA000-9FAFFF (base 16) METRONA-Union GmbH -- Aidenbachstr. 40 -- München 81379 -+8C-1F-64 (hex) Unitron Systems b.v. -+FA8000-FA8FFF (base 16) Unitron Systems b.v. -+ SCHANSESTRAAT 7 -+ IJzendijke 4515 RN -+ NL -+ -+8C-1F-64 (hex) University of Geneva - Department of Particle Physics -+D88000-D88FFF (base 16) University of Geneva - Department of Particle Physics -+ Quai Ernest-Ansermet 24 -+ Geneva 1211 -+ CH -+ -+8C-1F-64 (hex) Massar Networks -+FAA000-FAAFFF (base 16) Massar Networks -+ Postfach 1207PEAX ID 473.1849.6740.89 -+ Baar Zug CH-6341 -+ CH -+ -+8C-1F-64 (hex) Vytahy-Vymyslicky s.r.o. -+737000-737FFF (base 16) Vytahy-Vymyslicky s.r.o. -+ Pivovarska 542 -+ Uherske Hradiste - Jarosov 60801 -+ CZ -+ -+8C-1F-64 (hex) Retency -+BBF000-BBFFFF (base 16) Retency -+ 19 rue Vivienne -+ Paris 75002 -+ FR -+ -+8C-1F-64 (hex) Camius -+601000-601FFF (base 16) Camius -+ 41593 Winchester Rd., Ste 200 -+ Temecula CA 92590 -+ US -+ -+8C-1F-64 (hex) Patch Technologies, Inc. -+0AC000-0ACFFF (base 16) Patch Technologies, Inc. -+ 100 S Cincinnati Ave, Fifth Floor -+ Tulsa OK 74103 -+ US -+ -+8C-1F-64 (hex) BNB -+0BE000-0BEFFF (base 16) BNB -+ Deongmyeongdong-ro 22beon-gil -+ Daejeon Yuseong-gu 34155 -+ KR -+ -+8C-1F-64 (hex) Pionierkraft GmbH -+CD3000-CD3FFF (base 16) Pionierkraft GmbH -+ Agnes-Pockels-Bogen 1 -+ Munich Bavaria 80992 - DE - -+8C-1F-64 (hex) Comm-ence, Inc. -+B73000-B73FFF (base 16) Comm-ence, Inc. -+ 1813 Limerick Ct -+ Darien IL 60561 -+ US -+ -+8C-1F-64 (hex) YUSUR Technology Co., Ltd. -+C3A000-C3AFFF (base 16) YUSUR Technology Co., Ltd. -+ Room 1401,building 4,yard 1, Beiqing Road No.81, Haidian District -+ Beijing Beijing 100086 -+ CN -+ -+70-B3-D5 (hex) Ava Technologies -+72F000-72FFFF (base 16) Ava Technologies -+ 2409 E. Pender St. -+ Vancouver BC V5K 2B2 -+ CA -+ -+8C-1F-64 (hex) Benison Tech -+3AC000-3ACFFF (base 16) Benison Tech -+ 2100 Geng Road, Suite 210 -+ Palo Alto CA 94043 -+ US -+ -+8C-1F-64 (hex) HIGHVOLT Prüftechnik -+8F8000-8F8FFF (base 16) HIGHVOLT Prüftechnik -+ Marie-Curie-Straße10 -+ Dresden 01139 -+ DE -+ -+8C-1F-64 (hex) Stresstech OY -+625000-625FFF (base 16) Stresstech OY -+ Tikkutehtaantie 1 -+ Vaajakoski 40800 -+ FI -+ -+8C-1F-64 (hex) BCMTECH -+94C000-94CFFF (base 16) BCMTECH -+ 803ho(Gongjang-dong), Simin-daero 109beon-gil, Dongan-gu, -+ Anyang-si Gyeonggi-do 14042 -+ KR -+ -+8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme -+97C000-97CFFF (base 16) MB connect line GmbH Fernwartungssysteme -+ Winnettener Straße 6 -+ Dinkelsbuehl Bavaria 91550 -+ DE -+ -+8C-1F-64 (hex) SLAT -+683000-683FFF (base 16) SLAT -+ 11 Rue Jean-Elysée DUPUY -+ Champagne au Mont d'Or Rhône 69543 -+ FR -+ -+8C-1F-64 (hex) E VISION INDIA PVT LTD -+7AF000-7AFFFF (base 16) E VISION INDIA PVT LTD -+ 9/205, MAIN MARKET OLD FARIDABAD HARYANA INDIA 121002 -+ Faridabad HARYANA 121002 -+ IN -+ - 70-B3-D5 (hex) DISMUNTEL SAL - 92C000-92CFFF (base 16) DISMUNTEL SAL - Pol ind cotes -@@ -28613,6 +28811,12 @@ DC0000-DC0FFF (base 16) Pigs Can Fly Labs LLC - Beaverton OR 97008 - US - -+8C-1F-64 (hex) United States Technologies Inc. -+525000-525FFF (base 16) United States Technologies Inc. -+ 1701 Pollitt Drive -+ Fair Lawn NJ 07410 -+ US -+ - 8C-1F-64 (hex) EMBSYS SISTEMAS EMBARCADOS - FD4000-FD4FFF (base 16) EMBSYS SISTEMAS EMBARCADOS - AV. SIGISMUNDO NUNES DE OLIVEIRA,570 CASA 324 -@@ -28625,17 +28829,11 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Webb City MO 64870 - US - --8C-1F-64 (hex) United States Technologies Inc. --525000-525FFF (base 16) United States Technologies Inc. -- 1701 Pollitt Drive -- Fair Lawn NJ 07410 -- US -- --8C-1F-64 (hex) Rumble, Inc --837000-837FFF (base 16) Rumble, Inc -- Bluebonnet Ln -- Austin TX 78704 -- US -+8C-1F-64 (hex) PuS GmbH und Co. KG -+4E0000-4E0FFF (base 16) PuS GmbH und Co. KG -+ Hainstr. 13 -+ Gera Germany 07545 -+ DE - - 8C-1F-64 (hex) EA Elektroautomatik GmbH & Co. KG - 504000-504FFF (base 16) EA Elektroautomatik GmbH & Co. KG -@@ -28643,11 +28841,11 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Viersen NRW 41747 - DE - --8C-1F-64 (hex) PuS GmbH und Co. KG --4E0000-4E0FFF (base 16) PuS GmbH und Co. KG -- Hainstr. 13 -- Gera Germany 07545 -- DE -+8C-1F-64 (hex) Rumble, Inc -+837000-837FFF (base 16) Rumble, Inc -+ Bluebonnet Ln -+ Austin TX 78704 -+ US - - 8C-1F-64 (hex) Cinetix Srl - 89E000-89EFFF (base 16) Cinetix Srl -@@ -28655,18 +28853,18 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Borgo Valsugana Trento 38051 - IT - --8C-1F-64 (hex) ATM SOLUTIONS --9BD000-9BDFFF (base 16) ATM SOLUTIONS -- Office 10, Krishna Arcade, Plot 65, Sector 2A, Koparkharine -- Navi Mumbai Maharashatra 400709 -- IN -- - 8C-1F-64 (hex) Mitsubishi Electric India Pvt. Ltd. - D92000-D92FFF (base 16) Mitsubishi Electric India Pvt. Ltd. - EL3, J BLOCK, M.I.D.C. Bhosari - PUNE Maharastra 411027 - IN - -+8C-1F-64 (hex) ATM SOLUTIONS -+9BD000-9BDFFF (base 16) ATM SOLUTIONS -+ Office 10, Krishna Arcade, Plot 65, Sector 2A, Koparkharine -+ Navi Mumbai Maharashatra 400709 -+ IN -+ - 8C-1F-64 (hex) Integer.pl S.A. - A97000-A97FFF (base 16) Integer.pl S.A. - Wielicka 28 -@@ -28685,11 +28883,17 @@ A97000-A97FFF (base 16) Integer.pl S.A. - Hagen 58119 - DE - --8C-1F-64 (hex) ADAMCZEWSKI elektronische Messtechnik GmbH --F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH -- Felix-Wankel-Str. 13 -- Zaberfeld Baden-Württemberg 74374 -- DE -+8C-1F-64 (hex) SCIREQ Scientific Respiratory Equipment Inc -+01E000-01EFFF (base 16) SCIREQ Scientific Respiratory Equipment Inc -+ 6600 rue St. Urbain, Suite 300 -+ Montreal Quebec H2S 3G8 -+ CA -+ -+8C-1F-64 (hex) Beijing Wenrise Technology Co., Ltd. -+A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. -+ No.10 Shangdi Road, Haidian District -+ Beijing Beijing 100085 -+ CN - - 8C-1F-64 (hex) XSENSOR Technology Corp. - 7AA000-7AAFFF (base 16) XSENSOR Technology Corp. -@@ -28697,47 +28901,35 @@ F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH - Calgary Alberta T2G 0Z9 - CA - -+8C-1F-64 (hex) ADAMCZEWSKI elektronische Messtechnik GmbH -+F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH -+ Felix-Wankel-Str. 13 -+ Zaberfeld Baden-Württemberg 74374 -+ DE -+ - 8C-1F-64 (hex) MG s.r.l. - 67A000-67AFFF (base 16) MG s.r.l. - via Monte Bianco, 1 - Solbiate Olona VA 21058 - IT - --8C-1F-64 (hex) Beijing Wenrise Technology Co., Ltd. --A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. -- No.10 Shangdi Road, Haidian District -- Beijing Beijing 100085 -- CN -- - 8C-1F-64 (hex) AMF Medical SA - F52000-F52FFF (base 16) AMF Medical SA - Chemin de la Dent-d'Oche 1 A - Ecublens VD Vaud 1024 - CH - --8C-1F-64 (hex) SCIREQ Scientific Respiratory Equipment Inc --01E000-01EFFF (base 16) SCIREQ Scientific Respiratory Equipment Inc -- 6600 rue St. Urbain, Suite 300 -- Montreal Quebec H2S 3G8 -- CA -- --8C-1F-64 (hex) HUPI --489000-489FFF (base 16) HUPI -- 45 allée théodore monod -- Bidart Sélectionnez un département / état 64210 -- FR -- - 8C-1F-64 (hex) Qualitrol LLC - 905000-905FFF (base 16) Qualitrol LLC - 1385 Fairport Rd - Fairport NY 14450 - US - --8C-1F-64 (hex) WINTUS SYSTEM --9BA000-9BAFFF (base 16) WINTUS SYSTEM -- E1102, 7 yeonmujang 5ga gil, seongdong-gu -- SEOUL SEOUL 04782 -- KR -+8C-1F-64 (hex) HUPI -+489000-489FFF (base 16) HUPI -+ 45 allée théodore monod -+ Bidart Sélectionnez un département / état 64210 -+ FR - - 8C-1F-64 (hex) TTC TELEKOMUNIKACE, s.r.o. - E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. -@@ -28751,11 +28943,11 @@ E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. - Yreka CA 96097 - US - --8C-1F-64 (hex) Proterra, Inc --552000-552FFF (base 16) Proterra, Inc -- 1 Whitlee Court -- Greenville SC 29607 -- US -+8C-1F-64 (hex) WINTUS SYSTEM -+9BA000-9BAFFF (base 16) WINTUS SYSTEM -+ E1102, 7 yeonmujang 5ga gil, seongdong-gu -+ SEOUL SEOUL 04782 -+ KR - - 8C-1F-64 (hex) eumig industrie-TV GmbH. - 5B3000-5B3FFF (base 16) eumig industrie-TV GmbH. -@@ -28763,6 +28955,12 @@ E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. - Anif Salzburg 5081 - AT - -+8C-1F-64 (hex) Proterra, Inc -+552000-552FFF (base 16) Proterra, Inc -+ 1 Whitlee Court -+ Greenville SC 29607 -+ US -+ - 8C-1F-64 (hex) TeraDiode / Panasonic - 2C3000-2C3FFF (base 16) TeraDiode / Panasonic - 30 Upton Dr -@@ -28781,18 +28979,6 @@ D7C000-D7CFFF (base 16) QUERCUS TECHNOLOGIES, S.L. - Uijeongbu-si Gyonggi-do 11652 - KR - --8C-1F-64 (hex) VECOS Europe B.V. --C80000-C80FFF (base 16) VECOS Europe B.V. -- ESP 237 -- Eindhoven Noord-Brabant 5633 AD -- NL -- --8C-1F-64 (hex) EMIT GmbH --3D1000-3D1FFF (base 16) EMIT GmbH -- Johannes-Mauthe-Straße 14 -- Albstadt Baden Württemberg 72458 -- DE -- - 8C-1F-64 (hex) M/S MILIND RAMACHANDRA RAJWADE - 721000-721FFF (base 16) M/S MILIND RAMACHANDRA RAJWADE - 713, Sinhgad Road, P.cast S. No. 39, Manikbaug Industries Wadagaon Budru -@@ -28805,6 +28991,18 @@ C8F000-C8FFFF (base 16) JW Froehlich Maschinenfabrik GmbH - Leinfelden-Echterdingen 70771 - DE - -+8C-1F-64 (hex) VECOS Europe B.V. -+C80000-C80FFF (base 16) VECOS Europe B.V. -+ ESP 237 -+ Eindhoven Noord-Brabant 5633 AD -+ NL -+ -+8C-1F-64 (hex) EMIT GmbH -+3D1000-3D1FFF (base 16) EMIT GmbH -+ Johannes-Mauthe-Straße 14 -+ Albstadt Baden Württemberg 72458 -+ DE -+ - 8C-1F-64 (hex) Power Electronics Espana, S.L. - D08000-D08FFF (base 16) Power Electronics Espana, S.L. - Poligono Industrial Carrases. Ronda del camp d Aviacio 4 -@@ -28823,8 +29021,71 @@ B01000-B01FFF (base 16) noah - Leipzig 04109 - DE - -+8C-1F-64 (hex) eumig industrie-TV GmbH. -+426000-426FFF (base 16) eumig industrie-TV GmbH. -+ Gewerbeparkstrasse 9 -+ Anif Salzburg 5081 -+ AT -+ -+8C-1F-64 (hex) Hamamatsu Photonics K.K. -+67F000-67FFFF (base 16) Hamamatsu Photonics K.K. -+ 314-5 Shimokanzo -+ Iwata Shizuoka 4380193 -+ JP -+ -+8C-1F-64 (hex) Telemetrics Inc. -+5E5000-5E5FFF (base 16) Telemetrics Inc. -+ 75 Commerce Dr -+ Allendale 07401 -+ US -+ - 8C-1F-64 (hex) Nokeval Oy - E0E000-E0EFFF (base 16) Nokeval Oy - Rounionkatu 107 - Nokia 37150 - FI -+ -+8C-1F-64 (hex) NextT Microwave Inc -+8C5000-8C5FFF (base 16) NextT Microwave Inc -+ 121 Hymus Boulevard -+ Pointe-Claire Quebec H9R 1E6 -+ CA -+ -+8C-1F-64 (hex) Fuzhou Tucsen Photonics Co.,Ltd -+45D000-45DFFF (base 16) Fuzhou Tucsen Photonics Co.,Ltd -+ 5# Wanwushe Smart Industrial Park , No.2 Yangqi Branch Rd, Gaishan Town, Cangshan Area, Fuzhou, Fujian,PRC -+ fuzhou 350008 -+ CN -+ -+8C-1F-64 (hex) TEKVOX, Inc -+197000-197FFF (base 16) TEKVOX, Inc -+ 1965 Post Rd, Suite 400 -+ New Braunfels TX 78130 -+ US -+ -+8C-1F-64 (hex) ACSL Ltd. -+A2D000-A2DFFF (base 16) ACSL Ltd. -+ 3-6-4 Rinkaicho -+ Edogawa-ku Tokyo 134-0086 -+ JP -+ -+8C-1F-64 (hex) Private -+EE0000-EE0FFF (base 16) Private -+ -+8C-1F-64 (hex) Agar Corporation Inc. -+301000-301FFF (base 16) Agar Corporation Inc. -+ 5150 Tacoma Dr -+ Houston TX 77041 -+ US -+ -+8C-1F-64 (hex) Sensus Healthcare -+746000-746FFF (base 16) Sensus Healthcare -+ 851 Broken Sound Parkway NW, Suite 215 -+ Boca Raton FL 33487 -+ US -+ -+8C-1F-64 (hex) Nuvation Energy -+DFE000-DFEFFF (base 16) Nuvation Energy -+ 40 Bathurst Drive -+ Waterloo Ontario N2V 1V6 -+ CA -diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids -index 19832a58b3..c657b038fb 100644 ---- a/hwdb.d/pci.ids -+++ b/hwdb.d/pci.ids -@@ -1,8 +1,8 @@ - # - # List of PCI ID's - # --# Version: 2022.03.22 --# Date: 2022-03-22 03:15:02 -+# Version: 2022.04.16 -+# Date: 2022-04-16 00:17:00 - # - # Maintained by Albert Pool, Martin Mares, and other volunteers from - # the PCI ID Project at https://pci-ids.ucw.cz/. -@@ -103,6 +103,13 @@ - 0731 7212 JM7200 - 0731 7214 JM7500 - 0731 7215 JM7200 -+ 9100 JM9100 -+ 0731 9101 JM9100 -+ 0731 9102 JM9100-I -+ 910a JH910 -+ 0731 910a JH910 -+ 0731 910b JH910-I -+ 0731 910c JH910-M - 9200 JM9200 - 920a JH920 - 0731 920a JH920 -@@ -668,6 +675,7 @@ - 1000 3050 SAS9217-8i - 1000 3060 SAS9217-4i4e - 1014 0472 N2125 External Host Bus Adapter -+ 1014 047a N2115 Internal Host Bus Adapter - 1590 0041 H220i - 1590 0042 H221 / 9207-8e - 1590 0044 H220i -@@ -725,16 +733,16 @@ - 1000 46a0 MegaRAID 9660-24i Tri-Mode Storage Adapter - 1000 46c0 eHBA 9680W-16e Tri-Mode Storage Adapter - 1000 46d0 eHBA 9600-8i8e Tri-Mode Storage Adapter -- 1028 2114 PERC H965 Adapter -- 1028 2115 PERC H965 Front -- 1028 2117 PERC H965 MX -+ 1028 2114 PERC H965i Adapter -+ 1028 2115 PERC H965i Front -+ 1028 2117 PERC H965i MX - 1028 213a PERC H965e Adapter -- 1028 213b PERC H765 Adapter -- 1028 213c PERC H765 Front -+ 1028 213b PERC H765i Adapter -+ 1028 213c PERC H765i Front - 1028 213d PERC H765N Front -- 1028 213e PERC H765 MX -- 1028 213f PERC H365 Adapter -- 1028 2140 PERC H365 Front -+ 1028 213e PERC H765i MX -+ 1028 213f PERC H365i Adapter -+ 1028 2140 PERC H365i Front - 1028 2141 PERC H360 MX - 1028 2142 HBA 465e Adapter - 00ab SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) -@@ -1075,7 +1083,9 @@ - 1636 Renoir - 1637 Renoir Radeon High Definition Audio Controller - 1638 Cezanne -- 163f VanGogh -+# Used in the Steam Deck -+ 163f VanGogh [AMD Custom GPU 0405] -+ 1640 Rembrandt Radeon High Definition Audio Controller - 164c Lucienne - 164d Rembrandt - 1681 Rembrandt [Radeon 680M] -@@ -12416,6 +12426,8 @@ - 20b5 GA100 [A100 PCIe 80GB] - 20b6 GA100GL [PG506-232] - 20b7 GA100GL [A30 PCIe] -+ 20b8 GA100 [A100X] -+ 20b9 GA100 [A30X] - 20bb GA100 [DRIVE A100 PROD] - 20be GA100 [GRID A100A] - 20bf GA100 [GRID A100B] -@@ -12437,6 +12449,7 @@ - 21c4 TU116 [GeForce GTX 1660 SUPER] - 21d1 TU116BM [GeForce GTX 1660 Ti Mobile] - 2200 GA102 -+ 2203 GA102 [GeForce RTX 3090 Ti] - 2204 GA102 [GeForce RTX 3090] - 147d 10de NVIDIA Geforce RTX 3090 Founders Edition - 2205 GA102 [GeForce RTX 3080 Ti 20GB] -@@ -12485,6 +12498,7 @@ - 24ad GA104 [GeForce RTX 3060 Engineering Sample] - 24af GA104 [GeForce RTX 3070 Engineering Sample] - 24b0 GA104GL [RTX A4000] -+ 24b1 GA104GL [RTX A4000H] - 24b6 GA104GLM [RTX A5000 Mobile] - 24b7 GA104GLM [RTX A4000 Mobile] - 24b8 GA104GLM [RTX A3000 Mobile] -@@ -12511,11 +12525,13 @@ - 2583 GA107 [GeForce RTX 3050] - 25a0 GA107M [GeForce RTX 3050 Ti Mobile] - 25a2 GA107M [GeForce RTX 3050 Mobile] -+ 25a3 GA107 - 25a4 GA107 - 25a5 GA107M [GeForce RTX 3050 Mobile] - 25a6 GA107M [GeForce MX570] - 25a7 GA107M [GeForce MX570] - 25a9 GA107M [GeForce RTX 2050] -+ 25aa GA107M [GeForce MX570 A] - 25af GA107 [GeForce RTX 3050 Engineering Sample] - 25b5 GA107GLM [RTX A4 Mobile] - # A16 - 25B6 10DE 14A9 / A2 - 25B6 10DE 157E -@@ -12568,6 +12584,7 @@ - e300 LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter - 1014 0614 PCIe3 4-Port 16Gb Fibre Channel Adapter for POWER (FC EN1C/EN1D; CCIN 578E) - 1014 0615 PCIe3 2-Port 32Gb Fibre Channel Adapter for POWER (FC EN1A/EN1B; CCIN 578F) -+ 1014 06a0 PCIe3 2-Port 16Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) - 10df e300 LPe32002-M2 2-Port 32Gb Fibre Channel Adapter - 10df e301 LPe32000-M2 1-Port 32Gb Fibre Channel Adapter - 10df e310 LPe31002-M6 2-Port 16Gb Fibre Channel Adapter -@@ -12621,9 +12638,13 @@ - 10df f411 LPe35000-M2-D 1-Port 32Gb Fibre Channel Adapter - 10df f418 LPe35000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter - 10df f419 LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter -+ 10df f421 LPe36002-M2-L 2-Port 64Gb PCIe Fibre Channel Adapter -+ 10df f422 LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter - 1590 02d5 StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter - 1590 02d6 StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter - f500 LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter -+ 1014 06c1 PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) -+ 1014 06c2 PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD) - f700 LP7000 Fibre Channel Host Adapter - f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - f800 LP8000 Fibre Channel Host Adapter -@@ -15877,6 +15898,7 @@ - 8534 PM8534 PFX 64xG3 PCIe Fanout Switch - 8535 PM8535 PFX 80xG3 PCIe Fanout Switch - 8536 PM8536 PFX 96xG3 PCIe Fanout Switch -+ 1bd4 0081 PM8536 PFX 96xG3 PCIe Fanout Switch - 8546 PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch - 8562 PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch - 11f9 I-Cube Inc -@@ -17187,6 +17209,8 @@ - 5190 9200 ECO NVMe SSD - 5191 9200 PRO NVMe SSD - 5192 9200 MAX NVMe SSD -+ 51a2 9300 PRO NVMe SSD -+ 51a3 9300 MAX NVMe SSD - 1345 Arescom Inc - 1347 Odetics - 1349 Sumitomo Electric Industries, Ltd. -@@ -19680,6 +19704,8 @@ - 14e4 4126 NetXtreme-E Dual-port 10G SFP+ Ethernet OCP 3.0 Adapter (BCM957412N4120C) - 152d 8b20 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller - 152d 8b22 BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller -+# NIC-ETH531F-LP-2P BCM57412 2 x 10G SFP+ Ethernet PCIe Card -+ 193d 1024 NIC-ETH531F-LP-2P - 16d7 BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller - 14e4 1402 BCM957414A4142CC 10Gb/25Gb Ethernet PCIe - 14e4 1404 BCM957414M4142C OCP 2x25G Type1 wRoCE -@@ -20033,6 +20059,7 @@ - 9027 CN99xx [ThunderX2] Integrated AHCI/SATA 3 Host Controller - a8d8 BCM43224/5 Wireless Network Adapter - aa52 BCM43602 802.11ac Wireless LAN SoC -+ b080 BCM56080 Firelight2 Switch ASIC - b302 BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller - b334 BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller - b370 BCM56370 Switch ASIC -@@ -22053,8 +22080,8 @@ - 0400 Datacenter Technologies QDF2432 PCI Express Root Port - 0401 Datacenter Technologies QDF2400 PCI Express Root Port - 1000 QCS405 PCIe Root Complex -- 1101 QCA6390 Wireless Network Adapter [AX500-DBS (2x2)] -- 1103 Atheros QCNFA765 -+ 1101 QCA6390 Wireless Network Adapter -+ 1103 QCNFA765 Wireless Network Adapter - 1104 QCN6024/9024/9074 Wireless Network Adapter - 17cc NetChip Technology, Inc - 2280 USB 2.0 -@@ -23684,6 +23711,38 @@ - 1bb1 0157 Nytro 5050M 7mm - # Nytro 5050M (Ebonhawk Mainstream Performance) TCG - 7mm - 1bb1 0158 Nytro 5050M TCG 7mm -+# Nytro 5060M (Rocinante Mainstream Performance) - 15mm -+ 1bb1 0159 Nytro 5060M -+# Nytro 5050M TCG (Rocinante Mainstream Performance) - 15mm -+ 1bb1 0160 Nytro 5060M TCG -+# Nytro 5060M 7mm (Rocinante Mainstream Performance) -+ 1bb1 0161 Nytro 5060M 7mm -+# Nytro 5060M TCG (Rocinante Mainstream Performance) - 7mm -+ 1bb1 0162 Nytro 5060M TCG 7mm -+# Nytro 5060H (Rocinante High Performance) -+ 1bb1 0163 Nytro 5060H -+# Nytro 5060H TCG (Rocinante High Performance) -+ 1bb1 0164 Nytro 5060H TCG -+# Nytro 5060H (Rocinante - High Performance) - E3.S 1T -+ 1bb1 0165 Nytro 5060H E3.S 1T -+# Nytro 5060H (Rocinante - High Performance) - E3.S 1T TCG -+ 1bb1 0166 Nytro 5060H E3.S 1T TCG -+# Nytro 5060H (Rocinante - High Performance) - E3.L 1T -+ 1bb1 0167 Nytro 5060H E3.L 1T -+# Nytro 5060H (Rocinante - High Performance) - E3.L 1T TCG -+ 1bb1 0168 Nytro 5060H E3.L 1T TCG -+# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T -+ 1bb1 0169 Nytro 5060M E3.S 1T -+# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T TCG -+ 1bb1 0170 Nytro 5060M E3.S 1T TCG -+# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T -+ 1bb1 0171 Nytro 5060M E3.L 1T -+# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T TCG -+ 1bb1 0172 Nytro 5060M E3.L 1T TCG -+# Nytro 5060M (Rocinante Mainstream Performance) - E1.S -+ 1bb1 0173 Nytro 5060M E1.S -+# Nytro 5060M (Rocinante Mainstream Performance) - E1.S TCG -+ 1bb1 0174 Nytro 5060M E1.S TCG - 1bb1 01a1 Nytro XP7102 - 5012 FireCuda 510 SSD - 5016 FireCuda 520 SSD -@@ -24076,10 +24135,16 @@ - 0001 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - 00b1 AQC100 10G Ethernet MAC controller [AQtion] - 07b1 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] -+# Older revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card -+ 1baa 07b1 QM2-2P10G1TA [QXG 10GbE Network Adapter] -+# Newer revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card -+ 1baa 07b2 QM2-2P10G1TA [QM2 Expansion Adapter] - 08b1 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - 11b1 AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - 12b1 AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - 87b1 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] -+ 94c0 AQC113CS NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] -+ 1043 87f5 ProArt X570-CREATOR WIFI - d107 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] - 1043 8741 XG-C100C - d108 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] -@@ -24618,7 +24683,14 @@ - 1ed3 Yeston - 1ed5 Moore Threads Technology Co.,Ltd - 0100 MTT S10 -- 0101 MTT S30 -+ 0101 MTT S10 -+ 0102 MTT S30 -+ 0105 MTT S50 -+ 0106 MTT S60 -+ 0111 MTT S100 -+ 0121 MTT S1000M -+ 0122 MTT S1000 -+ 0123 MTT S2000 - 1ed8 Digiteq Automotive - 0101 FG4 PCIe Frame Grabber - 1ed9 Myrtle.ai -@@ -24626,6 +24698,9 @@ - 1eec Viscore Technologies Ltd - 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe - 1eec VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe -+1eed Xiangdixian Computing Technology (Chongqing) Ltd. -+ 0100 XDX P100 VGA controller -+ 0101 XDX P101 High Definition Audio Controller - 1efb Flexxon Pte Ltd - 1f02 Beijing Dayu Technology - 1f03 Shenzhen Shichuangyi Electronics Co., Ltd -@@ -25156,6 +25231,8 @@ - 0d10 SB-365x Motion Feedback Device - 2f00 SB-3642 Motion Feedback Device - 3000 SB-3644 Motion Feedback Device -+4e58 Nutanix, Inc. -+ 0001 Virtual NVMe Controller - 5045 University of Toronto - 4243 BLASTbus PCI Interface Card v1 - 5046 GemTek Technology Corporation -@@ -26340,8 +26417,9 @@ - 8086 0010 Ethernet Network Adapter I710-T4L for OCP 3.0 - 8086 401a Ethernet Network Adapter I710-T4L - 8086 401b Ethernet Network Adapter I710-T4L for OCP 3.0 -+ 0dd5 Ethernet Adaptive Virtual Function - 0dda Ethernet Connection X722 for 10GbE SFP+ -- 1bd4 0076 Ethernet Connection X722 for 10GbE SFP+ -+ 1bd4 0076 Ethernet Connection F102IX722 for 10GbE SFP - 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 - 1028 04f7 Xeon E5 v2 on PowerEdge R320 server - 15d9 066b X9SRL-F -@@ -27692,9 +27770,13 @@ - 8086 000c Ethernet 100G 2P E810-C OCP - 8086 000d Ethernet Network Adapter E810-L-Q2 for OCP 3.0 - 8086 000e Ethernet Network Adapter E810-2C-Q2 -+ 8086 000f Ethernet Network Adapter E810-C-Q2T - 8086 0010 Ethernet 100G 2P E810-C-stg Adapter -+ 8086 0011 Ethernet Network Adapter E810-C-Q1 for OCP3.0 - 1593 Ethernet Controller E810-C for SFP - 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC -+ 1137 02e9 E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC -+ 1137 02ea E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC - 8086 0002 Ethernet Network Adapter E810-L-2 - 8086 0005 Ethernet Network Adapter E810-XXV-4 - 8086 0006 Ethernet Network Adapter E810-XXV-4 -@@ -27707,6 +27789,8 @@ - 8086 000e Ethernet Network Adapter E810-XXV-4T - 8086 000f Ethernet 25G 4P E810-XXV-stg Adapter - 8086 0010 Ethernet 25G 4P E810-XXV-st Adapter -+ 8086 4010 Ethernet Network Adapter E810-XXV-4 -+ 8086 4013 Ethernet Network Adapter E810-XXV-4 for OCP 3.0 - 1599 Ethernet Controller E810-XXV for backplane - 8086 0001 Ethernet 25G 2P E810-XXV-k Mezz - 159a Ethernet Controller E810-XXV for QSFP -@@ -27723,6 +27807,7 @@ - 8086 4001 Ethernet Network Adapter E810-XXV-2 - 8086 4002 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 - 8086 4003 Ethernet Network Adapter E810-XXV-2 -+ 8086 4015 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 - 15a0 Ethernet Connection (2) I218-LM - 15a1 Ethernet Connection (2) I218-V - 15a2 Ethernet Connection (3) I218-LM -@@ -31429,6 +31514,7 @@ - 34b7 Ice Lake-LP PCI Express Root Port #16 - 34ba Ice Lake-LP PCI Express Root Port #3 - 34bc Ice Lake-LP PCI Express Root Port #5 -+ 34c4 Ice Lake-LP SD Host Controller - 34c5 Ice Lake-LP Serial IO I2c Controller #4 - 34c6 Ice Lake-LP Serial IO I2c Controller #5 - 34c8 Ice Lake-LP Smart Sound Technology Audio Controller -@@ -32805,6 +32891,7 @@ - 8a23 Ice Lake Thunderbolt 3 PCI Express Root Port #3 - 8a51 Iris Plus Graphics G7 (Ice Lake) - 8a52 Iris Plus Graphics G7 -+ 8a53 Iris Plus Graphics G7 - 8a56 Iris Plus Graphics G1 (Ice Lake) - 8a5a Iris Plus Graphics G4 (Ice Lake) - 8a5c Iris Plus Graphics G4 (Ice Lake) -@@ -33843,6 +33930,7 @@ - 2008 Video assistant component - 8820 Stryker Corporation - 2724 Mako Front Side Motor Controller [cPCI] -+8848 Wuxi Micro Innovation Integrated Circuit Design Co.,Ltd - 8866 T-Square Design Inc. - 8888 Silicon Magic - 8912 TRX -@@ -34215,6 +34303,10 @@ - 1bd4 0070 RS0800M5E24i - 1bd4 0071 RS0800M5H16i - 1bd4 0072 RS0800M5E16i -+ 1bd4 0077 RS0800M5E16iM -+ 1bd4 0078 RS0800M5E24iM -+ 1bd4 0079 RS0800M5H24iM -+ 1bd4 0080 RS0804M5R16iM - 1cc4 0101 Ramaxel FBGF-RAD PM8204 - 1cc4 0201 Ramaxel FBGF-RAD PM8222 - 1d49 0220 ThinkSystem 4350-8i SAS/SATA 12Gb HBA -@@ -34844,7 +34936,6 @@ C 05 Memory controller - 01 FLASH memory - 02 CXL - 00 CXL Memory Device - vendor specific --# Devices compliant to CXL spec - 10 CXL Memory Device (CXL 2.x) - 80 Memory controller - C 06 Bridge -diff --git a/hwdb.d/pnp_id_registry.html b/hwdb.d/pnp_id_registry.html -index a1d6f63bcd..ac15190e4c 100644 ---- a/hwdb.d/pnp_id_registry.html -+++ b/hwdb.d/pnp_id_registry.html -@@ -1262,7 +1262,7 @@ - MatroxMTX11/29/1996 - Mat's ComputersMCQ07/22/2004 - Matsushita Communication Industrial Co., Ltd.WPA03/15/2001 -- Matsushita Electric Ind. Company LtdMAT11/29/1996 -+ Panasonic Connect Co.,Ltd.MAT04/01/2022 - MaxCom Technical IncMTI11/29/1996 - MaxData Computer AGVOB02/21/2000 - MaxData Computer GmbH & Co.KGMXD04/19/2000 -diff --git a/hwdb.d/usb.ids b/hwdb.d/usb.ids -index d02e59f5e2..8e19afff93 100644 ---- a/hwdb.d/usb.ids -+++ b/hwdb.d/usb.ids -@@ -9,8 +9,8 @@ - # The latest version can be obtained from - # http://www.linux-usb.org/usb.ids - # --# Version: 2022.03.18 --# Date: 2022-03-18 20:34:09 -+# Version: 2022.04.13 -+# Date: 2022-04-13 20:34:10 - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -3412,6 +3412,12 @@ - 069b ECOSYS M2635dn - 06b4 ECOSYS M5526cdw - 0483 STMicroelectronics -+ 0102 Remote NDIS Network device with Android debug (ADB) -+ 0103 Remote NDIS Network device -+ 0104 MTP device with Android debug (ADB) -+ 0105 MTP device -+ 0106 PTP device with Android debug (ADB) -+ 0107 PTP device - 0137 BeWAN ADSL USB ST (blue or green) - 0138 Unicorn II (ST70138B + MTC-20174TQ chipset) - 0adb Android Debug Bridge (ADB) device -@@ -14964,6 +14970,10 @@ - 0e23 Liou Yuane Enterprise Co., Ltd - 0e25 VinChip Systems, Inc. - 0e26 J-Phone East Co., Ltd -+0e2e Brady Worldwide, Inc. -+ 000b BMP 51 -+ 000c BMP 61 -+ 000d BMP 41 - 0e30 HeartMath LLC - 0e34 Micro Computer Control Corp. - 0e35 3Pea Technologies, Inc. diff --git a/SOURCES/0307-hwdb-run-ninja-update-hwdb-autosuspend-for-v251-rc2.patch b/SOURCES/0307-hwdb-run-ninja-update-hwdb-autosuspend-for-v251-rc2.patch deleted file mode 100644 index 485ae28..0000000 --- a/SOURCES/0307-hwdb-run-ninja-update-hwdb-autosuspend-for-v251-rc2.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 101c779033314c5df131d5de48778524c7c82559 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 28 Apr 2022 17:43:27 +0200 -Subject: [PATCH] hwdb: run "ninja update-hwdb-autosuspend" for v251-rc2 - -(cherry picked from commit 27c03586ea80bc75f3f747670b4c89ce340d5345) - -Related: #2087778 ---- - hwdb.d/60-autosuspend-fingerprint-reader.hwdb | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-autosuspend-fingerprint-reader.hwdb b/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -index b44e3e328b..9704680cd1 100644 ---- a/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -+++ b/hwdb.d/60-autosuspend-fingerprint-reader.hwdb -@@ -137,6 +137,7 @@ usb:v04F3p0C32* - usb:v04F3p0C33* - usb:v04F3p0C3D* - usb:v04F3p0C42* -+usb:v04F3p0C4B* - usb:v04F3p0C4D* - usb:v04F3p0C4F* - usb:v04F3p0C63* -@@ -192,6 +193,7 @@ usb:v06CBp0103* - usb:v06CBp0123* - usb:v06CBp0126* - usb:v06CBp0129* -+usb:v06CBp0168* - ID_AUTOSUSPEND=1 - ID_PERSIST=0 - -@@ -261,7 +263,6 @@ usb:v138Ap0091* - # Known unsupported devices - usb:v04F3p036B* - usb:v04F3p0C00* --usb:v04F3p0C4B* - usb:v04F3p0C4C* - usb:v04F3p0C57* - usb:v04F3p0C5E* diff --git a/SOURCES/0308-Fix-orientation-detection-for-Asus-Transformer-T100T.patch b/SOURCES/0308-Fix-orientation-detection-for-Asus-Transformer-T100T.patch deleted file mode 100644 index 4ac8aea..0000000 --- a/SOURCES/0308-Fix-orientation-detection-for-Asus-Transformer-T100T.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1704b021b3d662b6f2e64208370c5a944144531d Mon Sep 17 00:00:00 2001 -From: techtino -Date: Sat, 30 Apr 2022 14:06:55 +0100 -Subject: [PATCH] Fix orientation detection for Asus Transformer T100TAF, - copied T100TA rule - -(cherry picked from commit ad44259225eabeb9755440506c261c6080a2f405) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index d6a584150c..0dfaaaf467 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -123,6 +123,7 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT300CHI:* - - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnM80TA:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TA:* -+sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TAF:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:* - ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - diff --git a/SOURCES/0309-Fix-orientation-detection-for-HP-Pavilion-X2-10-k010.patch b/SOURCES/0309-Fix-orientation-detection-for-HP-Pavilion-X2-10-k010.patch deleted file mode 100644 index cb452fe..0000000 --- a/SOURCES/0309-Fix-orientation-detection-for-HP-Pavilion-X2-10-k010.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d16426ae82574ad5312f0b3aaee076be199fe302 Mon Sep 17 00:00:00 2001 -From: Alice S -Date: Sun, 1 May 2022 14:49:18 -0700 -Subject: [PATCH] Fix orientation detection for HP Pavilion X2 10-k010nr - -(cherry picked from commit 8099abee00e3c6f53c292e8f8d33fc487e71a198) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 0dfaaaf467..b5d9eda510 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -452,6 +452,8 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream8Tablet:* - - # HP Pavillion X2 10-n000nd - sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2Detachable:*:rn815D:* -+# HP Pavilion X2 10-k010nr -+sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2DetachablePC10:* - ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 - - # HP Pro Tablet 408 G1 diff --git a/SOURCES/0310-fix-typo.patch b/SOURCES/0310-fix-typo.patch deleted file mode 100644 index c7430ae..0000000 --- a/SOURCES/0310-fix-typo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 612140f2207d0d6bf996acdf51b444c790f9f528 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Tue, 3 May 2022 01:16:32 +0900 -Subject: [PATCH] fix typo - -(cherry picked from commit 77f081f3632862eaaa43bbc744c9c897b373521c) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index b5d9eda510..70759145a8 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -450,7 +450,7 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream7Tablet:* - sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream8Tablet:* - ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 - --# HP Pavillion X2 10-n000nd -+# HP Pavilion X2 10-n000nd - sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2Detachable:*:rn815D:* - # HP Pavilion X2 10-k010nr - sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2DetachablePC10:* diff --git a/SOURCES/0311-Adding-a-description-of-the-keyboard-shortcut-Fn-F12.patch b/SOURCES/0311-Adding-a-description-of-the-keyboard-shortcut-Fn-F12.patch deleted file mode 100644 index ef7c93d..0000000 --- a/SOURCES/0311-Adding-a-description-of-the-keyboard-shortcut-Fn-F12.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 1926de432e7ac0e7eddc18e127f57809e64ec162 Mon Sep 17 00:00:00 2001 -From: rodin-ia <38556724+rodin-ia@users.noreply.github.com> -Date: Tue, 3 May 2022 22:40:55 +0200 -Subject: [PATCH] Adding a description of the keyboard shortcut Fn+F12 for the - HP EliteBook 845 G7 device. (#23253) - -udevadm info /dev/input/event4 -P: /devices/platform/i8042/serio0/input/input4/event4 -N: input/event4 -L: 0 -S: input/by-path/platform-i8042-serio-0-event-kbd -E: DEVPATH=/devices/platform/i8042/serio0/input/input4/event4 -E: DEVNAME=/dev/input/event4 -E: MAJOR=13 -E: MINOR=68 -E: SUBSYSTEM=input -E: USEC_INITIALIZED=4165584 -E: KEYBOARD_KEY_81=f20 -E: KEYBOARD_KEY_89=battery -E: KEYBOARD_KEY_8a=screenlock -E: KEYBOARD_KEY_8b=camera -E: KEYBOARD_KEY_8c=media -E: KEYBOARD_KEY_8e=dvd -E: KEYBOARD_KEY_92=brightnessdown -E: KEYBOARD_KEY_97=brightnessup -E: KEYBOARD_KEY_b1=help -E: KEYBOARD_KEY_b3=unknown -E: KEYBOARD_KEY_d7=wlan -E: KEYBOARD_KEY_ee=switchvideomode -E: KEYBOARD_KEY_68=unknown -E: ID_INPUT=1 -E: ID_INPUT_KEY=1 -E: ID_INPUT_KEYBOARD=1 -E: ID_BUS=i8042 -E: ID_SERIAL=noserial -E: ID_PATH=platform-i8042-serio-0 -E: ID_PATH_TAG=platform-i8042-serio-0 -E: XKBMODEL=pc105 -E: XKBLAYOUT=us -E: BACKSPACE=guess -E: LIBINPUT_DEVICE_GROUP=11/1/1:isa0060/serio0 -E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-0-event-kbd -E: TAGS=:power-switch: -E: CURRENT_TAGS=:power-switch: - -(cherry picked from commit d31b8a66d187523dab5d19a9269c9543382e021d) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 9b06bab54d..b852f33608 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -699,6 +699,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnHPEliteBookFolioG1:* - KEYBOARD_KEY_64=calendar - KEYBOARD_KEY_81=f20 - -+# HP EliteBook 845 G7 -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook845G7*:pvr* -+ KEYBOARD_KEY_68=unknown # Fn+F12 HP Programmable Key -+ - # HP ProBook 650 - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*ProBook*650*:* - KEYBOARD_KEY_f8=wlan # Wireless HW switch button diff --git a/SOURCES/0312-hwdb-run-update-hwdb.patch b/SOURCES/0312-hwdb-run-update-hwdb.patch deleted file mode 100644 index 4f428d2..0000000 --- a/SOURCES/0312-hwdb-run-update-hwdb.patch +++ /dev/null @@ -1,1984 +0,0 @@ -From 500ed61936ff0ef1269d08e45b97b99db63439bb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 5 May 2022 16:22:42 +0200 -Subject: [PATCH] hwdb: run "update-hwdb" - -(cherry picked from commit da2f26b2cbc607ae46fd181909f5513bad182dbf) - -Related: #2087778 ---- - hwdb.d/20-OUI.hwdb | 209 +++++++++++++++++++- - hwdb.d/20-acpi-vendor.hwdb.patch | 4 +- - hwdb.d/20-pci-vendor-model.hwdb | 187 +++++++++++++++--- - hwdb.d/20-usb-vendor-model.hwdb | 8 +- - hwdb.d/ma-large.txt | 322 +++++++++++++++++++++++++++++-- - hwdb.d/ma-medium.txt | 58 +++++- - hwdb.d/ma-small.txt | 108 +++++++++-- - hwdb.d/pci.ids | 61 +++++- - hwdb.d/usb.ids | 8 +- - 9 files changed, 877 insertions(+), 88 deletions(-) - -diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb -index aaa3326325..ab3afc31b2 100644 ---- a/hwdb.d/20-OUI.hwdb -+++ b/hwdb.d/20-OUI.hwdb -@@ -39836,6 +39836,9 @@ OUI:044169* - OUI:04421A* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -+OUI:0443FD* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:0444A1* - ID_OUI_FROM_DATABASE=TELECON GALICIA,S.A. - -@@ -41318,6 +41321,9 @@ OUI:082522* - OUI:082525* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:082573* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:082697* - ID_OUI_FROM_DATABASE=Zyxel Communications Corporation - -@@ -48152,6 +48158,9 @@ OUI:200CC8* - OUI:200DB0* - ID_OUI_FROM_DATABASE=Shenzhen Four Seas Global Link Network Technology Co., Ltd. - -+OUI:200E2B* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:200E95* - ID_OUI_FROM_DATABASE=IEC – TC9 WG43 - -@@ -48959,6 +48968,9 @@ OUI:20E52A* - OUI:20E564* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:20E6DF* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:20E791* - ID_OUI_FROM_DATABASE=Siemens Healthcare Diagnostics, Inc - -@@ -50165,6 +50177,9 @@ OUI:2827BF* - OUI:28285D* - ID_OUI_FROM_DATABASE=Zyxel Communications Corporation - -+OUI:282947* -+ ID_OUI_FROM_DATABASE=Chipsea Technologies (Shenzhen) Corp. -+ - OUI:282986* - ID_OUI_FROM_DATABASE=APC by Schneider Electric - -@@ -50615,6 +50630,9 @@ OUI:288A1C* - OUI:288CB8* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:288EEC* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:2891D0* - ID_OUI_FROM_DATABASE=Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH - -@@ -51929,6 +51947,9 @@ OUI:2C8A72* - OUI:2C8BF2* - ID_OUI_FROM_DATABASE=Hitachi Metals America Ltd - -+OUI:2C8D37* -+ ID_OUI_FROM_DATABASE=Virtium -+ - OUI:2C8DB1* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -52652,6 +52673,21 @@ OUI:303ABA* - OUI:303D08* - ID_OUI_FROM_DATABASE=GLINTT TES S.A. - -+OUI:303D511* -+ ID_OUI_FROM_DATABASE=SHENZHEN WLINK TECHNOLOGY CO., LTD. -+ -+OUI:303D512* -+ ID_OUI_FROM_DATABASE=Harman Connected Services Corporation India Pvt. Ltd. -+ -+OUI:303D515* -+ ID_OUI_FROM_DATABASE=Media Hub Digital Smart Home Pty Ltd. -+ -+OUI:303D518* -+ ID_OUI_FROM_DATABASE=The Heil Co dba AWTI 3rd Eye Cam -+ -+OUI:303D51A* -+ ID_OUI_FROM_DATABASE=TeraNXT Global India Pvt Ltd. -+ - OUI:303EA7* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -55133,6 +55169,9 @@ OUI:387A3C* - OUI:387B47* - ID_OUI_FROM_DATABASE=AKELA, Inc. - -+OUI:387C76* -+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd. -+ - OUI:3880DF* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -@@ -56078,6 +56117,9 @@ OUI:3C38F4* - OUI:3C39C3* - ID_OUI_FROM_DATABASE=JW Electronics Co., Ltd. - -+OUI:3C39C8* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:3C39E70* - ID_OUI_FROM_DATABASE=Hannstar Display Corp - -@@ -57227,6 +57269,9 @@ OUI:4044FD* - OUI:4045DA* - ID_OUI_FROM_DATABASE=Spreadtrum Communications (Shanghai) Co., Ltd. - -+OUI:40475E* -+ ID_OUI_FROM_DATABASE=eero inc. -+ - OUI:40476A* - ID_OUI_FROM_DATABASE=Astro Gaming - -@@ -57617,6 +57662,9 @@ OUI:40A36BD* - OUI:40A3CC* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:40A53B* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:40A5EF* - ID_OUI_FROM_DATABASE=Shenzhen Four Seas Global Link Network Technology Co., Ltd. - -@@ -58040,6 +58088,9 @@ OUI:40FA7F* - OUI:40FC89* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:40FDF3* -+ ID_OUI_FROM_DATABASE=AMPAK Technology,Inc. -+ - OUI:40FE0D* - ID_OUI_FROM_DATABASE=MAXIO - -@@ -60734,6 +60785,9 @@ OUI:4CA003* - OUI:4CA161* - ID_OUI_FROM_DATABASE=Rain Bird Corporation - -+OUI:4CA3A7* -+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED -+ - OUI:4CA515* - ID_OUI_FROM_DATABASE=Baikal Electronics JSC - -@@ -63665,6 +63719,9 @@ OUI:586356* - OUI:58639A* - ID_OUI_FROM_DATABASE=TPL SYSTEMES - -+OUI:5864C4* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5865E6* - ID_OUI_FROM_DATABASE=infomark - -@@ -63890,6 +63947,9 @@ OUI:589835* - OUI:58986F* - ID_OUI_FROM_DATABASE=Revolution Display - -+OUI:589A3E* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:589B0B* - ID_OUI_FROM_DATABASE=Shineway Technologies, Inc. - -@@ -64472,6 +64532,9 @@ OUI:5C3B35* - OUI:5C3C27* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:5C3E1B* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5C4058* - ID_OUI_FROM_DATABASE=Jefferson Audio Video Systems, Inc. - -@@ -64532,6 +64595,9 @@ OUI:5C521E* - OUI:5C5230* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:5C5284* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:5C53C3* - ID_OUI_FROM_DATABASE=Ubee Interactive Co., Limited - -@@ -67811,6 +67877,9 @@ OUI:6882F2* - OUI:68831A* - ID_OUI_FROM_DATABASE=Pandora Mobility Corporation - -+OUI:6883CB* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:688470* - ID_OUI_FROM_DATABASE=eSSys Co.,Ltd - -@@ -70178,6 +70247,9 @@ OUI:70B14E* - OUI:70B265* - ID_OUI_FROM_DATABASE=Hiltron s.r.l. - -+OUI:70B306* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:70B317* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -79704,7 +79776,7 @@ OUI:70B3D5C74* - ID_OUI_FROM_DATABASE=Qtechnology A/S - - OUI:70B3D5C75* -- ID_OUI_FROM_DATABASE=BIT Group USA, Inc. -+ ID_OUI_FROM_DATABASE=PLANET INNOVATION (PI) - - OUI:70B3D5C76* - ID_OUI_FROM_DATABASE=ELA INNOVATION -@@ -79983,7 +80055,7 @@ OUI:70B3D5CD1* - ID_OUI_FROM_DATABASE=Cannex Technology Inc. - - OUI:70B3D5CD2* -- ID_OUI_FROM_DATABASE=HBH Microwave GmbH -+ ID_OUI_FROM_DATABASE=TRUMPF Huttinger GmbH + Co. KG, - - OUI:70B3D5CD3* - ID_OUI_FROM_DATABASE=Controlrad -@@ -83273,6 +83345,9 @@ OUI:747E1A* - OUI:747E2D* - ID_OUI_FROM_DATABASE=Beijing Thomson CITIC Digital Technology Co. LTD. - -+OUI:74803F* -+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd. -+ - OUI:748114* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -85364,6 +85439,9 @@ OUI:7C27BC* - OUI:7C2A31* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:7C2ACA* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:7C2ADB* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -88610,6 +88688,9 @@ OUI:881DFC* - OUI:881FA1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:88200D* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:882012* - ID_OUI_FROM_DATABASE=LMI Technologies - -@@ -89981,6 +90062,9 @@ OUI:8C1F6419B* - OUI:8C1F6419C* - ID_OUI_FROM_DATABASE=Aton srl - -+OUI:8C1F641A5* -+ ID_OUI_FROM_DATABASE=DIALTRONICS SYSTEMS PVT LTD -+ - OUI:8C1F641AF* - ID_OUI_FROM_DATABASE=EnviroNode IoT Solutions - -@@ -90014,6 +90098,9 @@ OUI:8C1F641E3* - OUI:8C1F641EF* - ID_OUI_FROM_DATABASE=Tantronic AG - -+OUI:8C1F641F0* -+ ID_OUI_FROM_DATABASE=AVCOMM Technologies Inc -+ - OUI:8C1F64204* - ID_OUI_FROM_DATABASE=castcore - -@@ -90050,6 +90137,9 @@ OUI:8C1F6425E* - OUI:8C1F64264* - ID_OUI_FROM_DATABASE=BR. Voss Ingenjörsfirma AB - -+OUI:8C1F64268* -+ ID_OUI_FROM_DATABASE=Astro Machine Corporation -+ - OUI:8C1F64270* - ID_OUI_FROM_DATABASE=Xi‘an Hangguang Satellite and Control Technology Co.,Ltd - -@@ -90272,6 +90362,9 @@ OUI:8C1F64498* - OUI:8C1F644AC* - ID_OUI_FROM_DATABASE=Vekto - -+OUI:8C1F644AE* -+ ID_OUI_FROM_DATABASE=KCS Co., Ltd. -+ - OUI:8C1F644B0* - ID_OUI_FROM_DATABASE=U -MEI-DAH INT'L ENTERPRISE CO.,LTD. - -@@ -90584,6 +90677,9 @@ OUI:8C1F6472C* - OUI:8C1F64737* - ID_OUI_FROM_DATABASE=Vytahy-Vymyslicky s.r.o. - -+OUI:8C1F6473B* -+ ID_OUI_FROM_DATABASE=Fink Zeitsysteme GmbH -+ - OUI:8C1F6473C* - ID_OUI_FROM_DATABASE=REO AG - -@@ -90905,6 +91001,9 @@ OUI:8C1F649F0* - OUI:8C1F649F2* - ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme - -+OUI:8C1F649F4* -+ ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG -+ - OUI:8C1F649FA* - ID_OUI_FROM_DATABASE=METRONA-Union GmbH - -@@ -90914,6 +91013,9 @@ OUI:8C1F649FD* - OUI:8C1F649FE* - ID_OUI_FROM_DATABASE=Metroval Controle de Fluidos Ltda - -+OUI:8C1F649FF* -+ ID_OUI_FROM_DATABASE=Satelles Inc -+ - OUI:8C1F64A01* - ID_OUI_FROM_DATABASE=Guan Show Technologe Co., Ltd. - -@@ -91130,6 +91232,9 @@ OUI:8C1F64C03* - OUI:8C1F64C0C* - ID_OUI_FROM_DATABASE=GIORDANO CONTROLS SPA - -+OUI:8C1F64C0E* -+ ID_OUI_FROM_DATABASE=Goodtech AS dep Fredrikstad -+ - OUI:8C1F64C1F* - ID_OUI_FROM_DATABASE=Esys Srl - -@@ -91200,7 +91305,7 @@ OUI:8C1F64CBE* - ID_OUI_FROM_DATABASE=Circa Enterprises Inc - - OUI:8C1F64CC6* -- ID_OUI_FROM_DATABASE=Genius vision digital private limted -+ ID_OUI_FROM_DATABASE=Genius Vision Digital Private Limited - - OUI:8C1F64CCB* - ID_OUI_FROM_DATABASE=suzhou yuecrown Electronic Technology Co.,LTD -@@ -91238,6 +91343,9 @@ OUI:8C1F64CF1* - OUI:8C1F64CF3* - ID_OUI_FROM_DATABASE=ABB S.p.A. - -+OUI:8C1F64CF4* -+ ID_OUI_FROM_DATABASE=NT -+ - OUI:8C1F64D02* - ID_OUI_FROM_DATABASE=Flextronics International Kft - -@@ -91304,6 +91412,9 @@ OUI:8C1F64DAE* - OUI:8C1F64DB5* - ID_OUI_FROM_DATABASE=victtron - -+OUI:8C1F64DB7* -+ ID_OUI_FROM_DATABASE=Lambda Systems Inc. -+ - OUI:8C1F64DB9* - ID_OUI_FROM_DATABASE=Ermes Elettronica s.r.l. - -@@ -91322,6 +91433,9 @@ OUI:8C1F64DCA* - OUI:8C1F64DD5* - ID_OUI_FROM_DATABASE=Cardinal Scales Manufacturing Co - -+OUI:8C1F64DD7* -+ ID_OUI_FROM_DATABASE=KST technology -+ - OUI:8C1F64DE1* - ID_OUI_FROM_DATABASE=Franke Aquarotter GmbH - -@@ -91529,6 +91643,9 @@ OUI:8C1F64FB0* - OUI:8C1F64FB1* - ID_OUI_FROM_DATABASE=ABB - -+OUI:8C1F64FB5* -+ ID_OUI_FROM_DATABASE=Bavaria Digital Technik GmbH -+ - OUI:8C1F64FB7* - ID_OUI_FROM_DATABASE=Grace Design/Lunatec LLC - -@@ -92600,6 +92717,9 @@ OUI:900A39* - OUI:900A3A* - ID_OUI_FROM_DATABASE=PSG Plastic Service GmbH - -+OUI:900A62* -+ ID_OUI_FROM_DATABASE=Inventus Power Eletronica do Brasil LTDA -+ - OUI:900A84* - ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. - -@@ -94013,6 +94133,9 @@ OUI:946A77* - OUI:946AB0* - ID_OUI_FROM_DATABASE=Arcadyan Corporation - -+OUI:946DAE* -+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. -+ - OUI:9470D2* - ID_OUI_FROM_DATABASE=WINFIRM TECHNOLOGY - -@@ -95984,6 +96107,9 @@ OUI:9C04EB* - OUI:9C0567* - ID_OUI_FROM_DATABASE=Honor Device Co., Ltd. - -+OUI:9C0591* -+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. -+ - OUI:9C061B* - ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited - -@@ -96557,6 +96683,9 @@ OUI:9C8EDC* - OUI:9C9019* - ID_OUI_FROM_DATABASE=Beyless - -+OUI:9C924F* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:9C934E* - ID_OUI_FROM_DATABASE=Xerox Corporation - -@@ -97679,6 +97808,9 @@ OUI:A08C15* - OUI:A08C9B* - ID_OUI_FROM_DATABASE=Xtreme Technologies Corp - -+OUI:A08CF2* -+ ID_OUI_FROM_DATABASE=YINUOLINK CO.,LTD -+ - OUI:A08CF8* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -98900,6 +99032,9 @@ OUI:A48873* - OUI:A4895B* - ID_OUI_FROM_DATABASE=ARK INFOSOLUTIONS PVT LTD - -+OUI:A4897E* -+ ID_OUI_FROM_DATABASE=Guangzhou Yuhong Technology Co.,Ltd. -+ - OUI:A48CC0* - ID_OUI_FROM_DATABASE=JLG Industries, Inc. - -@@ -100079,6 +100214,9 @@ OUI:A8A668* - OUI:A8A795* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:A8ABB5* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:A8AD3D* - ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd - -@@ -100331,6 +100469,9 @@ OUI:AA0003* - OUI:AA0004* - ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION - -+OUI:AC007A* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:AC00D0* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -101117,6 +101258,9 @@ OUI:ACBB61* - OUI:ACBC32* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:ACBCB5* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:ACBCD9* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -101453,6 +101597,9 @@ OUI:B01C91* - OUI:B01F29* - ID_OUI_FROM_DATABASE=Helvetia INC. - -+OUI:B01F47* -+ ID_OUI_FROM_DATABASE=Heights Telecom T ltd -+ - OUI:B01F810* - ID_OUI_FROM_DATABASE=Dalian GigaTec Electronics Co.,Ltd - -@@ -101735,6 +101882,9 @@ OUI:B065F1* - OUI:B0672F* - ID_OUI_FROM_DATABASE=Bowers & Wilkins - -+OUI:B067B5* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:B068B6* - ID_OUI_FROM_DATABASE=Hangzhou OYE Technology Co. Ltd - -@@ -103643,6 +103793,9 @@ OUI:B847C6* - OUI:B848AA* - ID_OUI_FROM_DATABASE=EM Microelectronic - -+OUI:B8496D* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:B84D43* - ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED - -@@ -104411,6 +104564,9 @@ OUI:BC1485* - OUI:BC14EF* - ID_OUI_FROM_DATABASE=ITON Technology Limited - -+OUI:BC1541* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:BC15A6* - ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd. - -@@ -105893,6 +106049,9 @@ OUI:C09435* - OUI:C094AD* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:C0956D* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:C095DA* - ID_OUI_FROM_DATABASE=NXP India Private Limited - -@@ -106814,6 +106973,9 @@ OUI:C464B7* - OUI:C464E3* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:C464F2* -+ ID_OUI_FROM_DATABASE=Infinix mobility limited -+ - OUI:C46516* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -107603,6 +107765,9 @@ OUI:C81CFE* - OUI:C81E8E* - ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd - -+OUI:C81EC2* -+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED -+ - OUI:C81EE7* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -114809,12 +114974,18 @@ OUI:E0EDC7* - OUI:E0EE1B* - ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Company of America - -+OUI:E0EF02* -+ ID_OUI_FROM_DATABASE=Chengdu Quanjing Intelligent Technology Co.,Ltd -+ - OUI:E0EF25* - ID_OUI_FROM_DATABASE=Lintes Technology Co., Ltd. - - OUI:E0F211* - ID_OUI_FROM_DATABASE=Digitalwatt - -+OUI:E0F318* -+ ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD -+ - OUI:E0F379* - ID_OUI_FROM_DATABASE=Vaddio - -@@ -115502,6 +115673,9 @@ OUI:E4A471* - OUI:E4A5EF* - ID_OUI_FROM_DATABASE=TRON LINK ELECTRONICS CO., LTD. - -+OUI:E4A634* -+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc. -+ - OUI:E4A749* - ID_OUI_FROM_DATABASE=Palo Alto Networks - -@@ -116003,6 +116177,9 @@ OUI:E8361D* - OUI:E8377A* - ID_OUI_FROM_DATABASE=Zyxel Communications Corporation - -+OUI:E838A0* -+ ID_OUI_FROM_DATABASE=Vizio, Inc -+ - OUI:E83935* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -116625,7 +116802,7 @@ OUI:E8CC32* - ID_OUI_FROM_DATABASE=Micronet LTD - - OUI:E8CC8C* -- ID_OUI_FROM_DATABASE=Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. -+ ID_OUI_FROM_DATABASE=Chengdu Jiarui Hualian Communication Technology Co - - OUI:E8CD2D* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -@@ -117419,6 +117596,9 @@ OUI:EC9F0DD* - OUI:EC9F0DE* - ID_OUI_FROM_DATABASE=MAX Technologies - -+OUI:ECA138* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:ECA1D1* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -117515,6 +117695,9 @@ OUI:ECC01B* - OUI:ECC06A* - ID_OUI_FROM_DATABASE=PowerChord Group Limited - -+OUI:ECC07A* -+ ID_OUI_FROM_DATABASE=Laird Connectivity -+ - OUI:ECC1AB* - ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited - -@@ -117776,6 +117959,9 @@ OUI:F01E34* - OUI:F01FAF* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:F01FC7* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:F0219D* - ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. - -@@ -118610,6 +118796,9 @@ OUI:F0D657* - OUI:F0D767* - ID_OUI_FROM_DATABASE=Axema Passagekontroll AB - -+OUI:F0D793* -+ ID_OUI_FROM_DATABASE=Apple, Inc. -+ - OUI:F0D7AA* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company - -@@ -119465,6 +119654,9 @@ OUI:F4911E* - OUI:F492BF* - ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc. - -+OUI:F4931C* -+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc. -+ - OUI:F4939F* - ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd. - -@@ -121463,9 +121655,18 @@ OUI:FC61799* - OUI:FC6179A* - ID_OUI_FROM_DATABASE=Shenzhen Dptek Technology Co., Ltd. - -+OUI:FC6179B* -+ ID_OUI_FROM_DATABASE=Fulian Precision Electronics(Tianjin) Co., Ltd -+ -+OUI:FC6179C* -+ ID_OUI_FROM_DATABASE=Shenzhen Xmitech Electronic Co.,Ltd -+ - OUI:FC6179D* - ID_OUI_FROM_DATABASE=Int'Act Pty Ltd - -+OUI:FC6179E* -+ ID_OUI_FROM_DATABASE=ACCO Brands USA LLC -+ - OUI:FC6198* - ID_OUI_FROM_DATABASE=NEC Personal Products, Ltd - -diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch -index f88a96ed30..a696119753 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb.patch -+++ b/hwdb.d/20-acpi-vendor.hwdb.patch -@@ -1,5 +1,5 @@ ----- 20-acpi-vendor.hwdb.base 2022-04-28 17:39:22.374730080 +0200 --+++ 20-acpi-vendor.hwdb 2022-04-28 17:39:22.381730080 +0200 -+--- 20-acpi-vendor.hwdb.base 2022-05-05 16:21:43.499198786 +0200 -++++ 20-acpi-vendor.hwdb 2022-05-05 16:21:43.513198949 +0200 - @@ -3,6 +3,8 @@ - # Data imported from: - # https://uefi.org/uefi-pnp-export -diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb -index b55bd82327..cae426479b 100644 ---- a/hwdb.d/20-pci-vendor-model.hwdb -+++ b/hwdb.d/20-pci-vendor-model.hwdb -@@ -2127,7 +2127,13 @@ pci:v00001000d000000A5sv00001028sd00002141* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H360 MX) - - pci:v00001000d000000A5sv00001028sd00002142* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (HBA 465e Adapter) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (HBA465e Adapter) -+ -+pci:v00001000d000000A5sv00001028sd00002209* -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (HBA465i Adapter) -+ -+pci:v00001000d000000A5sv00001028sd0000220A* -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (HBA465i Front) - - pci:v00001000d000000AB* - ID_MODEL_FROM_DATABASE=SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) -@@ -11072,6 +11078,9 @@ pci:v00001002d000073BFsv00001002sd00000E3A* - pci:v00001002d000073BFsv0000148Csd00002408* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (Red Devil AMD Radeon RX 6900 XT) - -+pci:v00001002d000073BFsv00001DA2sd0000440F* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (TOXIC RX 6900 XT) -+ - pci:v00001002d000073BFsv00001EAEsd00006701* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black) - -@@ -11114,6 +11123,12 @@ pci:v00001002d0000740C* - pci:v00001002d0000740F* - ID_MODEL_FROM_DATABASE=Aldebaran - -+pci:v00001002d00007421* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon PRO W6500M] -+ -+pci:v00001002d00007422* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon PRO W6400] -+ - pci:v00001002d0000743F* - ID_MODEL_FROM_DATABASE=Navi 24 [Radeon RX 6400 / 6500 XT] - -@@ -37052,6 +37067,9 @@ pci:v000010DEd00002505* - pci:v000010DEd00002507* - ID_MODEL_FROM_DATABASE=GA106 [Geforce RTX 3050] - -+pci:v000010DEd00002508* -+ ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3050 OEM] -+ - pci:v000010DEd00002520* - ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3060 Mobile / Max-Q] - -@@ -37121,6 +37139,9 @@ pci:v000010DEd000025B9* - pci:v000010DEd000025BA* - ID_MODEL_FROM_DATABASE=GA107GLM [RTX A2000 8GB Laptop GPU] - -+pci:v000010DEd000025BB* -+ ID_MODEL_FROM_DATABASE=GA107GLM [RTX A500 Laptop GPU] -+ - pci:v000010DEd000025E0* - ID_MODEL_FROM_DATABASE=GA107BM [GeForce RTX 3050 Ti Mobile] - -@@ -56754,7 +56775,7 @@ pci:v000014C3* - ID_VENDOR_FROM_DATABASE=MEDIATEK Corp. - - pci:v000014C3d00000608* -- ID_MODEL_FROM_DATABASE=RZ608 Wi-Fi 6E 80MHz -+ ID_MODEL_FROM_DATABASE=MT7921K (RZ608) Wi-Fi 6E 80MHz - - pci:v000014C3d00000616* - ID_MODEL_FROM_DATABASE=MT7922 802.11ax PCI Express Wireless Network Adapter -@@ -61523,6 +61544,12 @@ pci:v000015B3d00000258* - pci:v000015B3d00000259* - ID_MODEL_FROM_DATABASE=Abir Chiplet - -+pci:v000015B3d0000025B* -+ ID_MODEL_FROM_DATABASE=Quantum-3 in Flash Recovery Mode -+ -+pci:v000015B3d0000025C* -+ ID_MODEL_FROM_DATABASE=Quantum-3 RMA -+ - pci:v000015B3d00000262* - ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable] EN - -@@ -62108,6 +62135,9 @@ pci:v000015B3d0000D2F0* - pci:v000015B3d0000D2F2* - ID_MODEL_FROM_DATABASE=Quantum-2 NDR (400Gbps) switch - -+pci:v000015B3d0000D2F4* -+ ID_MODEL_FROM_DATABASE=Quantum-3 -+ - pci:v000015B4* - ID_VENDOR_FROM_DATABASE=CCI/TRIAD - -@@ -65375,6 +65405,18 @@ pci:v000017D3d00001884* - pci:v000017D3d0000188A* - ID_MODEL_FROM_DATABASE=ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller - -+pci:v000017D3d0000188Asv000017D3sd00001217* -+ ID_MODEL_FROM_DATABASE=ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller (ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller) -+ -+pci:v000017D3d0000188Asv000017D3sd00001227* -+ ID_MODEL_FROM_DATABASE=ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller (ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller) -+ -+pci:v000017D3d0000188Asv000017D3sd00001686* -+ ID_MODEL_FROM_DATABASE=ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller (ARC-1686 PCIe 4.0 to SAS/SATA 12/6Gb Tape drive Controller) -+ -+pci:v000017D3d0000188Asv000017D3sd00001886* -+ ID_MODEL_FROM_DATABASE=ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller (ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller) -+ - pci:v000017D5* - ID_VENDOR_FROM_DATABASE=Exar Corp. - -@@ -70268,6 +70310,9 @@ pci:v00001C5Cd00002839sv00001C5Csd00000100* - pci:v00001C5Cd00002849* - ID_MODEL_FROM_DATABASE=PE81x0 U.2/3 NVMe Solid State Drive - -+pci:v00001C5Cd00002849sv00001C5Csd00000101* -+ ID_MODEL_FROM_DATABASE=PE81x0 U.2/3 NVMe Solid State Drive -+ - pci:v00001C5F* - ID_VENDOR_FROM_DATABASE=Beijing Memblaze Technology Co. Ltd. - -@@ -72525,13 +72570,61 @@ pci:v00001EECd00001EEC* - ID_MODEL_FROM_DATABASE=VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe - - pci:v00001EED* -- ID_VENDOR_FROM_DATABASE=Xiangdixian Computing Technology (Chongqing) Ltd. -+ ID_VENDOR_FROM_DATABASE=XDX Computing Technology Ltd. -+ -+pci:v00001EEDd00001100* -+ ID_MODEL_FROM_DATABASE=XDX110 Graphic/VGA Controller -+ -+pci:v00001EEDd00001101* -+ ID_MODEL_FROM_DATABASE=XDX110 Audio Controller -+ -+pci:v00001EEDd00001200* -+ ID_MODEL_FROM_DATABASE=XDX120 Graphic/VGA Controller -+ -+pci:v00001EEDd00001201* -+ ID_MODEL_FROM_DATABASE=XDX120 Audio Controller -+ -+pci:v00001EEDd00001300* -+ ID_MODEL_FROM_DATABASE=XDX130 Graphic/VGA Controller -+ -+pci:v00001EEDd00001301* -+ ID_MODEL_FROM_DATABASE=XDX130 Audio Controller -+ -+pci:v00001EEDd00001400* -+ ID_MODEL_FROM_DATABASE=XDX140 Graphic/VGA Controller -+ -+pci:v00001EEDd00001401* -+ ID_MODEL_FROM_DATABASE=XDX140 Audio Controller - --pci:v00001EEDd00000100* -- ID_MODEL_FROM_DATABASE=XDX P100 VGA controller -+pci:v00001EEDd00001500* -+ ID_MODEL_FROM_DATABASE=XDX150 Graphic/VGA Controller - --pci:v00001EEDd00000101* -- ID_MODEL_FROM_DATABASE=XDX P101 High Definition Audio Controller -+pci:v00001EEDd00001501* -+ ID_MODEL_FROM_DATABASE=XDX150 Audio Controller -+ -+pci:v00001EEDd00001600* -+ ID_MODEL_FROM_DATABASE=XDX160 Graphic/VGA Controller -+ -+pci:v00001EEDd00001601* -+ ID_MODEL_FROM_DATABASE=XDX160 Audio Controller -+ -+pci:v00001EEDd00001700* -+ ID_MODEL_FROM_DATABASE=XDX170 Graphic/VGA Controller -+ -+pci:v00001EEDd00001701* -+ ID_MODEL_FROM_DATABASE=XDX170 Audio Controller -+ -+pci:v00001EEDd00001800* -+ ID_MODEL_FROM_DATABASE=XDX180 Graphic/VGA Controller -+ -+pci:v00001EEDd00001801* -+ ID_MODEL_FROM_DATABASE=XDX180 Audio Controller -+ -+pci:v00001EEDd00001900* -+ ID_MODEL_FROM_DATABASE=XDX190 Graphic/VGA Controller -+ -+pci:v00001EEDd00001901* -+ ID_MODEL_FROM_DATABASE=XDX190 Audio Controller - - pci:v00001EFB* - ID_VENDOR_FROM_DATABASE=Flexxon Pte Ltd -@@ -74156,6 +74249,12 @@ pci:v00005168d00000300* - pci:v00005168d00000301* - ID_MODEL_FROM_DATABASE=FlyDVB-T - -+pci:v000051D8* -+ ID_VENDOR_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #2 -+ -+pci:v000051D9* -+ ID_VENDOR_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #3 -+ - pci:v00005301* - ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corp. - -@@ -74804,6 +74903,12 @@ pci:v00006766d00003D00* - pci:v00006766d00003D02* - ID_MODEL_FROM_DATABASE=Arise 1020 - -+pci:v00006766d00003D03* -+ ID_MODEL_FROM_DATABASE=Arise-GT-1040 -+ -+pci:v00006766d00003D04* -+ ID_MODEL_FROM_DATABASE=Arise1010 -+ - pci:v00006766d00003D40* - ID_MODEL_FROM_DATABASE=Arise-GT-10C0 High Definition Audio Controller - -@@ -80048,6 +80153,9 @@ pci:v00008086d0000124F* - pci:v00008086d00001250* - ID_MODEL_FROM_DATABASE=430HX - 82439HX TXC [Triton II] - -+pci:v00008086d0000125B* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller I226-LM -+ - pci:v00008086d00001360* - ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub PCI Bridge - -@@ -80682,61 +80790,61 @@ pci:v00008086d00001560* - ID_MODEL_FROM_DATABASE=Ethernet Controller X540 - - pci:v00008086d00001563* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 - - pci:v00008086d00001563sv00001028sd00001FA8* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10G 4P X550/I350 rNDC) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet 10G 4P X550/I350 rNDC) - - pci:v00008086d00001563sv00001028sd00001FA9* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10G 4P X550 rNDC) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet 10G 4P X550 rNDC) - - pci:v00008086d00001563sv00001137sd000002B2* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (X550-TX 10 Gig LOM) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (X550-TX 10 Gig LOM) - - pci:v00008086d00001563sv00001137sd000002B3* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (X550-TX 10 Gig LOM) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (X550-TX 10 Gig LOM) - - pci:v00008086d00001563sv00001170sd00000001* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Intel Ethernet Controller X550-T2 OCP card) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Intel Ethernet Controller X550-T2 OCP card) - - pci:v00008086d00001563sv000014C0sd00001201* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (X550 10Gb 2P RJ45 OCP Mezz) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (X550 10Gb 2P RJ45 OCP Mezz) - - pci:v00008086d00001563sv00001590sd000000D1* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10Gb 2-port 562T Adapter) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet 10Gb 2-port 562T Adapter) - - pci:v00008086d00001563sv00001590sd000000D2* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10Gb 2-port 562FLR-T Adapter) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet 10Gb 2-port 562FLR-T Adapter) - - pci:v00008086d00001563sv000016B8sd00007217* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Twin10G Thunderbolt 3 Edition) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Twin10G Thunderbolt 3 Edition) - - pci:v00008086d00001563sv000018D4sd00000C08* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2) - - pci:v00008086d00001563sv0000193Dsd00001008* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (560T-B) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (560T-B) - - pci:v00008086d00001563sv0000193Dsd00001009* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (560T-L) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (560T-L) - - pci:v00008086d00001563sv0000193Dsd00001011* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (UN-NIC-ETH563T-sL-2P) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (UN-NIC-ETH563T-sL-2P) - - pci:v00008086d00001563sv00008086sd00000001* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet Converged Network Adapter X550-T2) - - pci:v00008086d00001563sv00008086sd0000001A* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet Converged Network Adapter X550-T2) - - pci:v00008086d00001563sv00008086sd0000001B* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Server Adapter X550-T2 for OCP) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet Server Adapter X550-T2 for OCP) - - pci:v00008086d00001563sv00008086sd0000001D* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10G 2P X550-t Adapter) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet 10G 2P X550-t Adapter) - - pci:v00008086d00001563sv00008086sd00000022* -- ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2) -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X550 (Ethernet Converged Network Adapter X550-T2) - - pci:v00008086d00001564* - ID_MODEL_FROM_DATABASE=X550 Virtual Function -@@ -81266,6 +81374,9 @@ pci:v00008086d00001592sv00008086sd00000010* - pci:v00008086d00001592sv00008086sd00000011* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-C-Q1 for OCP3.0) - -+pci:v00008086d00001592sv00008086sd00000012* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet 100G 2P E810-C-st Adapter) -+ - pci:v00008086d00001593* - ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP - -@@ -81836,6 +81947,21 @@ pci:v00008086d0000163E* - pci:v00008086d00001889* - ID_MODEL_FROM_DATABASE=Ethernet Adaptive Virtual Function - -+pci:v00008086d0000188A* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-C for backplane -+ -+pci:v00008086d0000188B* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-C for QSFP -+ -+pci:v00008086d0000188C* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-C for SFP -+ -+pci:v00008086d0000188D* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-C/X557-AT 10GBASE-T -+ -+pci:v00008086d0000188E* -+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-C 1GbE -+ - pci:v00008086d00001890* - ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C for backplane - -@@ -95171,6 +95297,12 @@ pci:v00008086d000051C8* - pci:v00008086d000051D3* - ID_MODEL_FROM_DATABASE=Alder Lake-P SATA AHCI Controller - -+pci:v00008086d000051D8* -+ ID_MODEL_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #2 -+ -+pci:v00008086d000051D9* -+ ID_MODEL_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #3 -+ - pci:v00008086d000051E0* - ID_MODEL_FROM_DATABASE=Alder Lake PCH HECI Controller - -@@ -95222,9 +95354,6 @@ pci:v00008086d0000530D* - pci:v00008086d00005502* - ID_MODEL_FROM_DATABASE=Ethernet Controller (2) I225-LMvP - --pci:v00008086d00005504* -- ID_MODEL_FROM_DATABASE=Ethernet Controller I226-K -- - pci:v00008086d00005845* - ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index c0e6f59917..d7e218011a 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -66939,7 +66939,7 @@ usb:v2A19p5442* - ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB Opsis (FX2) - HDMI/DVI Capture Device - - usb:v2A1D* -- ID_VENDOR_FROM_DATABASE=Oxford Nanopore Technologies, Ltd -+ ID_VENDOR_FROM_DATABASE=Oxford Nanopore Technologies plc - - usb:v2A1Dp0000* - ID_MODEL_FROM_DATABASE=MinION -@@ -66959,6 +66959,12 @@ usb:v2A1Dp0020* - usb:v2A1Dp0021* - ID_MODEL_FROM_DATABASE=GridION - -+usb:v2A1Dp0120* -+ ID_MODEL_FROM_DATABASE=GridION Mk1 Bay -+ -+usb:v2A1Dp0121* -+ ID_MODEL_FROM_DATABASE=GridION Mk1 Bay -+ - usb:v2A37* - ID_VENDOR_FROM_DATABASE=RTD Embedded Technologies, Inc. - -diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt -index 67fd6c1836..aeecb73bbf 100644 ---- a/hwdb.d/ma-large.txt -+++ b/hwdb.d/ma-large.txt -@@ -38327,12 +38327,6 @@ C8BF4C (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Beijing Beijing 100085 - CN - --E8-CC-8C (hex) Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. --E8CC8C (base 16) Chengdu Jia Rui Hua Lian Communication Technology Co.,Ltd. -- 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -- Chengdu Sichuan 610000 -- CN -- - 58-1C-F8 (hex) Intel Corporate - 581CF8 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -38387,11 +38381,17 @@ CC29BD (base 16) zte corporation - Hangzhou Zhejiang 310052 - CN - --5C-60-BA (hex) HP Inc. --5C60BA (base 16) HP Inc. -- 10300 Energy Dr -- Spring TX 77389 -- US -+E0-EF-02 (hex) Chengdu Quanjing Intelligent Technology Co.,Ltd -+E0EF02 (base 16) Chengdu Quanjing Intelligent Technology Co.,Ltd -+ Building A2, Chi Yuen Technology Park, 1001 College Avenue, Nanshan District, Shenzhen,P.R.C. -+ Shenzhen Guangdong 518000 -+ CN -+ -+4C-A3-A7 (hex) TECNO MOBILE LIMITED -+4CA3A7 (base 16) TECNO MOBILE LIMITED -+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG -+ Hong Kong Hong Kong 999077 -+ HK - - 20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company - 209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -@@ -38399,6 +38399,90 @@ CC29BD (base 16) zte corporation - Santa Clara CA 95054 - US - -+E8-CC-8C (hex) Chengdu Jiarui Hualian Communication Technology Co -+E8CC8C (base 16) Chengdu Jiarui Hualian Communication Technology Co -+ 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -+ Chengdu Sichuan 610000 -+ CN -+ -+A8-AB-B5 (hex) Apple, Inc. -+A8ABB5 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+58-64-C4 (hex) Apple, Inc. -+5864C4 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+40-A5-3B (hex) Nokia -+40A53B (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+B0-67-B5 (hex) Apple, Inc. -+B067B5 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+5C-52-84 (hex) Apple, Inc. -+5C5284 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+C0-95-6D (hex) Apple, Inc. -+C0956D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+3C-39-C8 (hex) Apple, Inc. -+3C39C8 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+04-43-FD (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+0443FD (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+74-80-3F (hex) Renesas Electronics (Penang) Sdn. Bhd. -+74803F (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+EC-A1-38 (hex) Amazon Technologies Inc. -+ECA138 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+5C-60-BA (hex) HP Inc. -+5C60BA (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 -+ US -+ -+A4-89-7E (hex) Guangzhou Yuhong Technology Co.,Ltd. -+A4897E (base 16) Guangzhou Yuhong Technology Co.,Ltd. -+ Room 402, No. 11 Software Road, Tianhe District, Guangzhou -+ Guangzhou Guangdong 510640 -+ CN -+ -+90-0A-62 (hex) Inventus Power Eletronica do Brasil LTDA -+900A62 (base 16) Inventus Power Eletronica do Brasil LTDA -+ Av Buriti, 4285 Distrito Industrial -+ Manaus Amazonas 69075000 -+ BR -+ - 9C-FF-C2 (hex) AVI Systems GmbH - 9CFFC2 (base 16) AVI Systems GmbH - Dr. Franz Wilhelmstraße 2A -@@ -76376,6 +76460,42 @@ A036BC (base 16) ASUSTek COMPUTER INC. - Hsinchu 300 - TW - -+70-B3-06 (hex) Apple, Inc. -+70B306 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+B8-49-6D (hex) Apple, Inc. -+B8496D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+9C-92-4F (hex) Apple, Inc. -+9C924F (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+20-0E-2B (hex) Apple, Inc. -+200E2B (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+F0-D7-93 (hex) Apple, Inc. -+F0D793 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+30-3D-51 (hex) IEEE Registration Authority -+303D51 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ - 84-80-94 (hex) Meter, Inc. - 848094 (base 16) Meter, Inc. - 148 Townsend St -@@ -114587,12 +114707,6 @@ F0C1CE (base 16) GoodWe Technologies CO., Ltd - Dallas TX 75243 - US - --38-E7-C0 (hex) Hui Zhou Gaoshengda Technology Co.,LTD --38E7C0 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -- No.2,Jin-da Road,Huinan Industrial Park -- Hui Zhou Guangdong 516025 -- CN -- - D8-E8-44 (hex) zte corporation - D8E844 (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -@@ -114611,12 +114725,54 @@ E46A35 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Shenzhen Guangdong 518040 - CN - -+58-9A-3E (hex) Amazon Technologies Inc. -+589A3E (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+E8-38-A0 (hex) Vizio, Inc -+E838A0 (base 16) Vizio, Inc -+ 39 Tesla -+ Irvine CA 92618 -+ US -+ -+C8-1E-C2 (hex) ITEL MOBILE LIMITED -+C81EC2 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ -+38-E7-C0 (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+38E7C0 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.2,Jin-da Road,Huinan Industrial Park -+ Hui Zhou Guangdong 516025 -+ CN -+ - 68-B9-C2 (hex) Earda Technologies co Ltd - 68B9C2 (base 16) Earda Technologies co Ltd - Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District - Guangzhou Guangdong 511455 - CN - -+68-83-CB (hex) Apple, Inc. -+6883CB (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+EC-C0-7A (hex) Laird Connectivity -+ECC07A (base 16) Laird Connectivity -+ 3F.-1, No.145, Xianzheng 9th Rd., -+ Zhubei 30251 -+ TW -+ -+9C-05-91 (hex) Mellanox Technologies, Inc. -+9C0591 (base 16) Mellanox Technologies, Inc. -+ 350 Oakmead Parkway, Suite 100 -+ Sunnyvale CA 94085 -+ US -+ - F8-D0-27 (hex) Seiko Epson Corporation - F8D027 (base 16) Seiko Epson Corporation - 2070 Kotobuki Koaka -@@ -152948,6 +153104,48 @@ EC74D7 (base 16) Grandstream Networks Inc - shenzhen guangdong 518057 - CN - -+A0-8C-F2 (hex) YINUOLINK CO.,LTD -+A08CF2 (base 16) YINUOLINK CO.,LTD -+ 3F, Bldg 5, Gaoxinjian Industrial Park, Fuyuan 1st Road, Heping, Fuhai, Bao'an -+ Shenzhen Guangdong 518103 -+ CN -+ -+40-47-5E (hex) eero inc. -+40475E (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+20-E6-DF (hex) eero inc. -+20E6DF (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+F4-93-1C (hex) Universal Electronics, Inc. -+F4931C (base 16) Universal Electronics, Inc. -+ 201 E. Sandpointe Ave -+ Santa Ana CA 92707 -+ US -+ -+5C-3E-1B (hex) Apple, Inc. -+5C3E1B (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+7C-2A-CA (hex) Apple, Inc. -+7C2ACA (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+28-8E-EC (hex) Apple, Inc. -+288EEC (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - 7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. - 7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. - NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE -@@ -191027,8 +191225,98 @@ DC0539 (base 16) Cisco Systems, Inc - East Greenwich RI 02818 - US - -+B0-1F-47 (hex) Heights Telecom T ltd -+B01F47 (base 16) Heights Telecom T ltd -+ Moshe Lerer 15 -+ Nes Ziona 7404996 -+ IL -+ -+28-29-47 (hex) Chipsea Technologies (Shenzhen) Corp. -+282947 (base 16) Chipsea Technologies (Shenzhen) Corp. -+ 3 / F, Block A, Building 2, Shenzhen Bay Innovation Technology Center, No.3156 keyuan South Road, Yuehai Street, Nanshan District, Shenzhen -+ Shenzhen Guangdong 518000 -+ CN -+ -+AC-BC-B5 (hex) Apple, Inc. -+ACBCB5 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+08-25-73 (hex) Apple, Inc. -+082573 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+AC-00-7A (hex) Apple, Inc. -+AC007A (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+F0-1F-C7 (hex) Apple, Inc. -+F01FC7 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - B8-8F-27 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - B88F27 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. - Chongqing China 401120 - CN -+ -+88-20-0D (hex) Apple, Inc. -+88200D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+BC-15-41 (hex) Nokia -+BC1541 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+E0-F3-18 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+E0F318 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+C4-64-F2 (hex) Infinix mobility limited -+C464F2 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ -+94-6D-AE (hex) Mellanox Technologies, Inc. -+946DAE (base 16) Mellanox Technologies, Inc. -+ 350 Oakmead Parkway, Suite 100 -+ Sunnyvale CA 94085 -+ US -+ -+40-FD-F3 (hex) AMPAK Technology,Inc. -+40FDF3 (base 16) AMPAK Technology,Inc. -+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -+ Hsinchu Hsinchu,Taiwan R.O.C. 30352 -+ TW -+ -+E4-A6-34 (hex) Universal Electronics, Inc. -+E4A634 (base 16) Universal Electronics, Inc. -+ 201 E. Sandpointe Ave -+ Santa Ana CA 92707 -+ US -+ -+2C-8D-37 (hex) Virtium -+2C8D37 (base 16) Virtium -+ 30052 Tomas -+ Racho Santa MArgarita CA 92688 -+ US -+ -+38-7C-76 (hex) Universal Global Scientific Industrial Co., Ltd. -+387C76 (base 16) Universal Global Scientific Industrial Co., Ltd. -+ 141, Lane 351, Taiping Road, Sec.1,Tsao Tuen -+ Nan-Tou Taiwan 54261 -+ TW -diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt -index 08cdcba936..18806ccc14 100644 ---- a/hwdb.d/ma-medium.txt -+++ b/hwdb.d/ma-medium.txt -@@ -5060,6 +5060,18 @@ A00000-AFFFFF (base 16) Annapurna labs - Mail box 15123 Haifa 3508409 - IL - -+FC-61-79 (hex) Shenzhen Xmitech Electronic Co.,Ltd -+C00000-CFFFFF (base 16) Shenzhen Xmitech Electronic Co.,Ltd -+ Room 8B1888, Block AB, New Energy Building, No.2239, Nanhai Avenue, Nanguang Community, Nanshan Street, Nanshan District, Shenzhen -+ Shenzhen 518054 -+ CN -+ -+30-3D-51 (hex) SHENZHEN WLINK TECHNOLOGY CO., LTD. -+100000-1FFFFF (base 16) SHENZHEN WLINK TECHNOLOGY CO., LTD. -+ 201, F5 Building, TCL International E City, No.1001 Zhongshanyuan Rd., Nanshan Dist. -+ Shenzhen Guangdong 518052 -+ CN -+ - 4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD - 400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD - Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district -@@ -15023,11 +15035,11 @@ FC-61-79 (hex) MACH SYSTEMS s.r.o. - Prague 10800 - CZ - --FC-61-79 (hex) Annapurna labs --800000-8FFFFF (base 16) Annapurna labs -- Matam Scientific Industries Center, Building 8.2 -- Mail box 15123 Haifa 3508409 -- IL -+30-3D-51 (hex) Media Hub Digital Smart Home Pty Ltd. -+500000-5FFFFF (base 16) Media Hub Digital Smart Home Pty Ltd. -+ 40 Koornang Road -+ Scoresby VIC 3179 -+ AU - - FC-61-79 (hex) Zhuhai Anjubao Electronics Technology Co., Ltd. - 000000-0FFFFF (base 16) Zhuhai Anjubao Electronics Technology Co., Ltd. -@@ -15041,6 +15053,18 @@ FC-61-79 (hex) Shenzhen Shenshui Electronic Commerce Co.,Ltd - Shenzhen 518132 - CN - -+FC-61-79 (hex) Annapurna labs -+800000-8FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+30-3D-51 (hex) TeraNXT Global India Pvt Ltd. -+A00000-AFFFFF (base 16) TeraNXT Global India Pvt Ltd. -+ 7A/61 W.E.A KAROL BAGH -+ DELHI DELHI 110005 -+ IN -+ - 4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd. - 600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd. - 22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone -@@ -20039,6 +20063,18 @@ FC-61-79 (hex) Hangzhou LiDe Communication Co.,Ltd - Hangzhou 311500 - CN - -+30-3D-51 (hex) Harman Connected Services Corporation India Pvt. Ltd. -+200000-2FFFFF (base 16) Harman Connected Services Corporation India Pvt. Ltd. -+ Plot No 3 & 3A, EOIZ Industrial Area, Sy.No.85 and 86, KIADB, Whitefield, -+ Bengaluru Karnataka 560066 -+ IN -+ -+FC-61-79 (hex) ACCO Brands USA LLC -+E00000-EFFFFF (base 16) ACCO Brands USA LLC -+ Four Corporate Drive -+ Lake Zurich IL 60047-2997 -+ US -+ - 20-85-93 (hex) Great Lite International - 700000-7FFFFF (base 16) Great Lite International - 11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist., -@@ -25100,12 +25136,24 @@ D00000-DFFFFF (base 16) Int'Act Pty Ltd - Boston MA 02215 - US - -+30-3D-51 (hex) The Heil Co dba AWTI 3rd Eye Cam -+800000-8FFFFF (base 16) The Heil Co dba AWTI 3rd Eye Cam -+ 201 West Main Street, Suite 300 -+ Chattanooga 37408 -+ US -+ - FC-61-79 (hex) Signalinks Communication Technology Co.,Ltd - 100000-1FFFFF (base 16) Signalinks Communication Technology Co.,Ltd - 3rd Floor, Building 6, Longxing Sciece park, East Huaning Road, Dalang Street , Longhua District, Shenzhen - Shenzhen Guangdong 518000 - CN - -+FC-61-79 (hex) Fulian Precision Electronics(Tianjin) Co., Ltd -+B00000-BFFFFF (base 16) Fulian Precision Electronics(Tianjin) Co., Ltd -+ No 36. North Street, West Zone, Economic & Technological Development Area, Tianjin, China -+ Tianjin Tianjin 300457 -+ CN -+ - FC-61-79 (hex) Shenzhen Dptek Technology Co., Ltd. - A00000-AFFFFF (base 16) Shenzhen Dptek Technology Co., Ltd. - Room 706, Building Pincui, Zhongcui Garden,Dafen Community, Buji Street, Longgang District -diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt -index 704a346ad5..496fd55c73 100644 ---- a/hwdb.d/ma-small.txt -+++ b/hwdb.d/ma-small.txt -@@ -5927,6 +5927,30 @@ E90000-E90FFF (base 16) MHE Electronics - Changwon-si, Gyeongsangnam-do, Republic of Korea 51368 - KR - -+8C-1F-64 (hex) Lambda Systems Inc. -+DB7000-DB7FFF (base 16) Lambda Systems Inc. -+ 2-11-26 Sangenjaya -+ Setagaya-ku Tokyo 154-0024 -+ JP -+ -+8C-1F-64 (hex) Grossenbacher Systeme AG -+9F4000-9F4FFF (base 16) Grossenbacher Systeme AG -+ Spinnereistrasse 10 -+ St. Gallen 9008 -+ CH -+ -+8C-1F-64 (hex) KCS Co., Ltd. -+4AE000-4AEFFF (base 16) KCS Co., Ltd. -+ 1101, NexZone, 50, Wanam-ro, Seongsan-gu, -+ Changwon-si 51573 -+ KR -+ -+8C-1F-64 (hex) Satelles Inc -+9FF000-9FFFFF (base 16) Satelles Inc -+ 1835 Alexander Bell Dr., Suite 240 -+ Reston VA 20191 -+ US -+ - 70-B3-D5 (hex) EVCO SPA - A80000-A80FFF (base 16) EVCO SPA - VIA FELTRE N. 81 -@@ -11699,18 +11723,24 @@ B7C000-B7CFFF (base 16) EVERNET CO,.LTD TAIWAN - Plainsboro NJ 08536 - US - --8C-1F-64 (hex) Genius vision digital private limted --CC6000-CC6FFF (base 16) Genius vision digital private limted -- S-39, GF JANTA MARKET, RAJOURI GARDEN,NEW DELHI - 110027 -- new delhi new delhi 110027 -- IN -- - 8C-1F-64 (hex) FMTec GmbH - Future Management Technologies - 3E3000-3E3FFF (base 16) FMTec GmbH - Future Management Technologies - Austraße 59e - Bludenz Austria 6700 - AT - -+8C-1F-64 (hex) Genius Vision Digital Private Limited -+CC6000-CC6FFF (base 16) Genius Vision Digital Private Limited -+ S-39, GF JANTA MARKET, RAJOURI GARDEN,NEW DELHI - 110027 -+ new delhi new delhi 110027 -+ IN -+ -+8C-1F-64 (hex) AVCOMM Technologies Inc -+1F0000-1F0FFF (base 16) AVCOMM Technologies Inc -+ 333 West Loop N FreewaySuite 460 -+ Houston TX 77024-7338 -+ US -+ - 70-B3-D5 (hex) System West dba ICS Electronics - E06000-E06FFF (base 16) System West dba ICS Electronics - 7034 Commerce Circle Suite A -@@ -13829,12 +13859,6 @@ CE5000-CE5FFF (base 16) GridBridge Inc - Christchurch Canterbury 8024 - NZ - --70-B3-D5 (hex) HBH Microwave GmbH --CD2000-CD2FFF (base 16) HBH Microwave GmbH -- Helmholtzstr. 1 -- Stutensee 76297 -- DE -- - 70-B3-D5 (hex) Firefly RFID Solutions - 8B3000-8B3FFF (base 16) Firefly RFID Solutions - 1521 Boone Trail Rd -@@ -17450,6 +17474,24 @@ CDB000-CDBFFF (base 16) EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT - Budapest 1132 - HU - -+8C-1F-64 (hex) Goodtech AS dep Fredrikstad -+C0E000-C0EFFF (base 16) Goodtech AS dep Fredrikstad -+ Gamle Beddingvei 28 -+ FREDRIKSTAD Viken 1671 -+ NO -+ -+70-B3-D5 (hex) TRUMPF Huttinger GmbH + Co. KG, -+CD2000-CD2FFF (base 16) TRUMPF Huttinger GmbH + Co. KG, -+ Helmholtzstr. 1 -+ Stutensee 76297 -+ DE -+ -+8C-1F-64 (hex) DIALTRONICS SYSTEMS PVT LTD -+1A5000-1A5FFF (base 16) DIALTRONICS SYSTEMS PVT LTD -+ Dialtronics Systems Pvt Ltd, #201, Sirisampada Hitech, Kavuri Hills, Madhapur -+ Hyderabad Telangana 500081 -+ IN -+ - 70-B3-D5 (hex) YUYAMA MFG Co.,Ltd - BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd - 3-3-1 -@@ -21887,12 +21929,6 @@ DBA000-DBAFFF (base 16) KODENSHI CORP. - MINATO-KU TOKYO 1060032 - JP - --70-B3-D5 (hex) BIT Group USA, Inc. --C75000-C75FFF (base 16) BIT Group USA, Inc. -- 15870 Bernardo center drive -- San Diego CA 92127 -- US -- - 70-B3-D5 (hex) Zeus Control Systems Ltd - E73000-E73FFF (base 16) Zeus Control Systems Ltd - 1-4 Alexander House Station Road -@@ -23366,6 +23402,36 @@ C3A000-C3AFFF (base 16) YUSUR Technology Co., Ltd. - Faridabad HARYANA 121002 - IN - -+8C-1F-64 (hex) Fink Zeitsysteme GmbH -+73B000-73BFFF (base 16) Fink Zeitsysteme GmbH -+ Möslestraße 21 -+ Altach Vorarlberg 6844 -+ AT -+ -+70-B3-D5 (hex) PLANET INNOVATION (PI) -+C75000-C75FFF (base 16) PLANET INNOVATION (PI) -+ 6 Thomas -+ Irvine CA 92618 -+ US -+ -+8C-1F-64 (hex) KST technology -+DD7000-DD7FFF (base 16) KST technology -+ KST B/D 4-5, Wiryeseong-daero 12-gil -+ Songpa-gu Seoul 05636 -+ KR -+ -+8C-1F-64 (hex) Bavaria Digital Technik GmbH -+FB5000-FB5FFF (base 16) Bavaria Digital Technik GmbH -+ Rehbichler Weg 26 -+ Pfronten Bayern 87459 -+ DE -+ -+8C-1F-64 (hex) NT -+CF4000-CF4FFF (base 16) NT -+ Azrieli Circular Tower132 Menachem Begin Rd -+ Tel Aviv 6701101 -+ IL -+ - 70-B3-D5 (hex) DISMUNTEL SAL - 92C000-92CFFF (base 16) DISMUNTEL SAL - Pol ind cotes -@@ -29089,3 +29155,9 @@ DFE000-DFEFFF (base 16) Nuvation Energy - 40 Bathurst Drive - Waterloo Ontario N2V 1V6 - CA -+ -+8C-1F-64 (hex) Astro Machine Corporation -+268000-268FFF (base 16) Astro Machine Corporation -+ 630 Lively Blvd -+ Elk Grove Village IL 60007 -+ US -diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids -index c657b038fb..9bba38f431 100644 ---- a/hwdb.d/pci.ids -+++ b/hwdb.d/pci.ids -@@ -1,8 +1,8 @@ - # - # List of PCI ID's - # --# Version: 2022.04.16 --# Date: 2022-04-16 00:17:00 -+# Version: 2022.05.03 -+# Date: 2022-05-03 03:15:01 - # - # Maintained by Albert Pool, Martin Mares, and other volunteers from - # the PCI ID Project at https://pci-ids.ucw.cz/. -@@ -744,7 +744,9 @@ - 1028 213f PERC H365i Adapter - 1028 2140 PERC H365i Front - 1028 2141 PERC H360 MX -- 1028 2142 HBA 465e Adapter -+ 1028 2142 HBA465e Adapter -+ 1028 2209 HBA465i Adapter -+ 1028 220a HBA465i Front - 00ab SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) - # 8 Internal and 8 External port channel 9400 HBA - 1000 3040 HBA 9400-8i8e -@@ -3776,6 +3778,7 @@ - 73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] - 1002 0e3a Radeon RX 6900 XT - 148c 2408 Red Devil AMD Radeon RX 6900 XT -+ 1da2 440f TOXIC RX 6900 XT - 1eae 6701 XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black - 73c3 Navi 22 - 73c4 Navi 22 USB -@@ -3790,6 +3793,8 @@ - 7408 Aldebaran - 740c Aldebaran - 740f Aldebaran -+ 7421 Navi 24 [Radeon PRO W6500M] -+ 7422 Navi 24 [Radeon PRO W6400] - 743f Navi 24 [Radeon RX 6400 / 6500 XT] - 1da2 e457 PULSE AMD Radeon RX 6500 XT - 7833 RS350 Host Bridge -@@ -12515,6 +12520,7 @@ - 2504 GA106 [GeForce RTX 3060 Lite Hash Rate] - 2505 GA106 - 2507 GA106 [Geforce RTX 3050] -+ 2508 GA106 [GeForce RTX 3050 OEM] - 2520 GA106M [GeForce RTX 3060 Mobile / Max-Q] - 2523 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] - 252f GA106 [GeForce RTX 3060 Engineering Sample] -@@ -12539,6 +12545,7 @@ - 25b8 GA107GLM [RTX A2000 Mobile] - 25b9 GA107GLM [RTX A1000 Laptop GPU] - 25ba GA107GLM [RTX A2000 8GB Laptop GPU] -+ 25bb GA107GLM [RTX A500 Laptop GPU] - 25e0 GA107BM [GeForce RTX 3050 Ti Mobile] - 25e2 GA107BM [GeForce RTX 3050 Mobile] - 25e5 GA107BM [GeForce RTX 3050 Mobile] -@@ -19178,7 +19185,7 @@ - 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) - 14c2 DTK Computer - 14c3 MEDIATEK Corp. -- 0608 RZ608 Wi-Fi 6E 80MHz -+ 0608 MT7921K (RZ608) Wi-Fi 6E 80MHz - 0616 MT7922 802.11ax PCI Express Wireless Network Adapter - 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter - 7615 MT7615E 802.11ac PCI Express Wireless Network Adapter -@@ -20795,6 +20802,8 @@ - 0257 Quantum-2 in Flash Recovery Mode - 0258 Quantum-2 RMA - 0259 Abir Chiplet -+ 025b Quantum-3 in Flash Recovery Mode -+ 025c Quantum-3 RMA - 0262 MT27710 [ConnectX-4 Lx Programmable] EN - 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN - 0264 Innova-2 Flex Burn image -@@ -20998,6 +21007,7 @@ - cf84 Spectrum-4C - d2f0 Quantum HDR (200Gbps) switch - d2f2 Quantum-2 NDR (400Gbps) switch -+ d2f4 Quantum-3 - 15b4 CCI/TRIAD - 15b5 Cimetrics Inc - 15b6 Texas Memory Systems Inc -@@ -22126,6 +22136,10 @@ - 17d3 1883 ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller - 1884 ARC-1884 series PCIe 3.0 to SAS/SATA 12/6Gb RAID Controller - 188a ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller -+ 17d3 1217 ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller -+ 17d3 1227 ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller -+ 17d3 1686 ARC-1686 PCIe 4.0 to SAS/SATA 12/6Gb Tape drive Controller -+ 17d3 1886 ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller - # nee Neterion Inc., previously S2io Inc. - 17d5 Exar Corp. - 5731 Xframe 10-Gigabit Ethernet PCI-X -@@ -23901,6 +23915,7 @@ - 1028 214a DC NVMe PE8010 RI U.2 7.68TB - 1c5c 0100 PE8000 Series NVMe Solid State Drive - 2849 PE81x0 U.2/3 NVMe Solid State Drive -+ 1c5c 0101 PE81x0 U.2/3 NVMe Solid State Drive - 1c5f Beijing Memblaze Technology Co. Ltd. - 000d PBlaze5 520/526 - 000e PBlaze6 6530 -@@ -24698,9 +24713,25 @@ - 1eec Viscore Technologies Ltd - 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe - 1eec VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe --1eed Xiangdixian Computing Technology (Chongqing) Ltd. -- 0100 XDX P100 VGA controller -- 0101 XDX P101 High Definition Audio Controller -+1eed XDX Computing Technology Ltd. -+ 1100 XDX110 Graphic/VGA Controller -+ 1101 XDX110 Audio Controller -+ 1200 XDX120 Graphic/VGA Controller -+ 1201 XDX120 Audio Controller -+ 1300 XDX130 Graphic/VGA Controller -+ 1301 XDX130 Audio Controller -+ 1400 XDX140 Graphic/VGA Controller -+ 1401 XDX140 Audio Controller -+ 1500 XDX150 Graphic/VGA Controller -+ 1501 XDX150 Audio Controller -+ 1600 XDX160 Graphic/VGA Controller -+ 1601 XDX160 Audio Controller -+ 1700 XDX170 Graphic/VGA Controller -+ 1701 XDX170 Audio Controller -+ 1800 XDX180 Graphic/VGA Controller -+ 1801 XDX180 Audio Controller -+ 1900 XDX190 Graphic/VGA Controller -+ 1901 XDX190 Audio Controller - 1efb Flexxon Pte Ltd - 1f02 Beijing Dayu Technology - 1f03 Shenzhen Shichuangyi Electronics Co., Ltd -@@ -25247,6 +25278,8 @@ - 5168 Animation Technologies Inc. - 0300 FlyDVB-S - 0301 FlyDVB-T -+51d8 Alder Lake-P Serial IO I2C Controller #2 -+51d9 Alder Lake-P Serial IO I2C Controller #3 - 5301 Alliance Semiconductor Corp. - 0001 ProMotion aT3D - 5333 S3 Graphics Ltd. -@@ -25466,6 +25499,8 @@ - 6766 Glenfly Tech Co., Ltd. - 3d00 Arise-GT-10C0 - 3d02 Arise 1020 -+ 3d03 Arise-GT-1040 -+ 3d04 Arise1010 - 3d40 Arise-GT-10C0 High Definition Audio Controller - 3d41 Arise 1020 High Definition Audio Controller - 6899 ZT Systems -@@ -27357,6 +27392,7 @@ - 124e Ethernet Connection E823-L/X557-AT 10GBASE-T - 124f Ethernet Connection E823-L 1GbE - 1250 430HX - 82439HX TXC [Triton II] -+ 125b Ethernet Controller I226-LM - 1360 82806AA PCI64 Hub PCI Bridge - 1361 82806AA PCI64 Hub Controller (HRes) - 8086 1361 82806AA PCI64 Hub Controller (HRes) -@@ -27569,7 +27605,7 @@ - 8086 0001 Ethernet Server Bypass Adapter X520-SR2 - 8086 0002 Ethernet Server Bypass Adapter X520-LR2 - 1560 Ethernet Controller X540 -- 1563 Ethernet Controller 10G X550T -+ 1563 Ethernet Controller X550 - 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC - 1028 1fa9 Ethernet 10G 4P X550 rNDC - 1137 02b2 X550-TX 10 Gig LOM -@@ -27773,6 +27809,7 @@ - 8086 000f Ethernet Network Adapter E810-C-Q2T - 8086 0010 Ethernet 100G 2P E810-C-stg Adapter - 8086 0011 Ethernet Network Adapter E810-C-Q1 for OCP3.0 -+ 8086 0012 Ethernet 100G 2P E810-C-st Adapter - 1593 Ethernet Controller E810-C for SFP - 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC - 1137 02e9 E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC -@@ -27964,6 +28001,11 @@ - 163d Broadwell-U Integrated Graphics - 163e Broadwell-U Integrated Graphics - 1889 Ethernet Adaptive Virtual Function -+ 188a Ethernet Connection E823-C for backplane -+ 188b Ethernet Connection E823-C for QSFP -+ 188c Ethernet Connection E823-C for SFP -+ 188d Ethernet Connection E823-C/X557-AT 10GBASE-T -+ 188e Ethernet Connection E823-C 1GbE - 1890 Ethernet Connection E822-C for backplane - 1891 Ethernet Connection E822-C for QSFP - 1892 Ethernet Connection E822-C for SFP -@@ -32420,6 +32462,8 @@ - 51c6 Alder Lake-P Serial IO I2C Controller #1 - 51c8 Alder Lake PCH-P High Definition Audio Controller - 51d3 Alder Lake-P SATA AHCI Controller -+ 51d8 Alder Lake-P Serial IO I2C Controller #2 -+ 51d9 Alder Lake-P Serial IO I2C Controller #3 - 51e0 Alder Lake PCH HECI Controller - 51e8 Alder Lake PCH Serial IO I2C Controller #0 - 51e9 Alder Lake PCH Serial IO I2C Controller #1 -@@ -32437,7 +32481,6 @@ - 8086 0001 EtherExpress PRO/100 Server Ethernet Adapter - 530d 80310 (IOP) IO Processor - 5502 Ethernet Controller (2) I225-LMvP -- 5504 Ethernet Controller I226-K - 5845 QEMU NVM Express Controller - 1af4 1100 QEMU Virtual Machine - 5900 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers -diff --git a/hwdb.d/usb.ids b/hwdb.d/usb.ids -index 8e19afff93..9342f7c331 100644 ---- a/hwdb.d/usb.ids -+++ b/hwdb.d/usb.ids -@@ -9,8 +9,8 @@ - # The latest version can be obtained from - # http://www.linux-usb.org/usb.ids - # --# Version: 2022.04.13 --# Date: 2022-04-13 20:34:10 -+# Version: 2022.05.03 -+# Date: 2022-05-03 20:34:10 - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -22333,13 +22333,15 @@ - 5440 TimVideos' HDMI2USB Opsis (FX2) - Unconfigured device - 5441 TimVideos' HDMI2USB Opsis (FX2) - Firmware load/upgrade - 5442 TimVideos' HDMI2USB Opsis (FX2) - HDMI/DVI Capture Device --2a1d Oxford Nanopore Technologies, Ltd -+2a1d Oxford Nanopore Technologies plc - 0000 MinION - 0001 MinION - 0010 VolTRAX - 0011 VolTRAX - 0020 GridION - 0021 GridION -+ 0120 GridION Mk1 Bay -+ 0121 GridION Mk1 Bay - 2a37 RTD Embedded Technologies, Inc. - 5110 UPS35110/UPS25110 - 2a39 RME diff --git a/SOURCES/0313-hwdb-add-rammus-accelerometer-support.patch b/SOURCES/0313-hwdb-add-rammus-accelerometer-support.patch deleted file mode 100644 index 7d4ae75..0000000 --- a/SOURCES/0313-hwdb-add-rammus-accelerometer-support.patch +++ /dev/null @@ -1,27 +0,0 @@ -From be69b550c85a1882afd01daa24407272ff891bf0 Mon Sep 17 00:00:00 2001 -From: lucagoc <77584602+lucagoc@users.noreply.github.com> -Date: Sat, 7 May 2022 18:30:22 +0200 -Subject: [PATCH] hwdb: add rammus accelerometer support - -(cherry picked from commit 97d670a4297d4d3ffd21748b70c1a669a67d4e0f) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 70759145a8..d883db22a1 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -395,6 +395,10 @@ sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnVayne*:* - sensor:modalias:platform:cros-ec-accel:dmi:*Google_Nocturne*:* - ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - -+# rammus board (Asus Chromebook Flip C433) -+sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnRammus*:* -+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 -+ - ######################################### - # GP-electronic - ######################################### diff --git a/SOURCES/0314-Add-support-to-set-autosuspend-delay-via-hwdb.patch b/SOURCES/0314-Add-support-to-set-autosuspend-delay-via-hwdb.patch deleted file mode 100644 index 141247b..0000000 --- a/SOURCES/0314-Add-support-to-set-autosuspend-delay-via-hwdb.patch +++ /dev/null @@ -1,56 +0,0 @@ -From fab29ebaa62cfae9f56a7a108b35d17e4d2a16cd Mon Sep 17 00:00:00 2001 -From: Mario Limonciello -Date: Mon, 9 May 2022 20:16:22 -0500 -Subject: [PATCH] Add support to set autosuspend delay via hwdb - -(cherry picked from commit fa9a43a6905187195c9e86a61a906647726c3e55) - -Related: #2087778 ---- - hwdb.d/60-autosuspend.hwdb | 4 ++++ - hwdb.d/parse_hwdb.py | 1 + - rules.d/60-autosuspend.rules | 4 ++++ - 3 files changed, 9 insertions(+) - -diff --git a/hwdb.d/60-autosuspend.hwdb b/hwdb.d/60-autosuspend.hwdb -index 1b6c1e1c8f..323611d000 100644 ---- a/hwdb.d/60-autosuspend.hwdb -+++ b/hwdb.d/60-autosuspend.hwdb -@@ -24,8 +24,12 @@ - # - # Allowed properties are: - # ID_AUTOSUSPEND=1 -+# ID_AUTOSUSPEND_DELAY_MS=#### - # ID_PERSIST=0 - # -+# ID_AUTOSUSPEND_DELAY_MS adjusts the delay for autosuspend to something -+# different than the kernel default of 2000ms. -+# - # ID_PERSIST=0 allows disabling the kernels USB "persist" feature, which allows - # the continued use of devices after a power loss (due to suspend). Disable it - # if the device will loose state without a USB power session and the driver -diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py -index 93179b675c..7bad559699 100755 ---- a/hwdb.d/parse_hwdb.py -+++ b/hwdb.d/parse_hwdb.py -@@ -135,6 +135,7 @@ def property_grammar(): - ('MOUSE_WHEEL_CLICK_COUNT', INTEGER), - ('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER), - ('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))), -+ ('ID_AUTOSUSPEND_DELAY_MS', INTEGER), - ('ID_AV_PRODUCTION_CONTROLLER', Or((Literal('0'), Literal('1')))), - ('ID_PERSIST', Or((Literal('0'), Literal('1')))), - ('ID_PDA', Or((Literal('0'), Literal('1')))), -diff --git a/rules.d/60-autosuspend.rules b/rules.d/60-autosuspend.rules -index 332d052caa..ce31a920ed 100644 ---- a/rules.d/60-autosuspend.rules -+++ b/rules.d/60-autosuspend.rules -@@ -15,4 +15,8 @@ ENV{ID_AUTOSUSPEND}=="1", TEST=="power/control", \ - ENV{ID_PERSIST}=="0", TEST=="power/persist", \ - ATTR{power/persist}="0" - -+# Set up an autosuspend delay if hwdb say so -+ENV{ID_AUTOSUSPEND_DELAY_MS}!="", TEST=="power/control", \ -+ ATTR{power/autosuspend_delay_ms}="$env{ID_AUTOSUSPEND_DELAY_MS}" -+ - LABEL="autosuspend_end" diff --git a/SOURCES/0315-Set-autosuspend-delay-for-Fibocom-LG850-GL.patch b/SOURCES/0315-Set-autosuspend-delay-for-Fibocom-LG850-GL.patch deleted file mode 100644 index 457bf93..0000000 --- a/SOURCES/0315-Set-autosuspend-delay-for-Fibocom-LG850-GL.patch +++ /dev/null @@ -1,47 +0,0 @@ -From fd6e7c8949218df6b61a5b9186aba3f9d1d91f75 Mon Sep 17 00:00:00 2001 -From: Mario Limonciello -Date: Mon, 9 May 2022 20:16:26 -0500 -Subject: [PATCH] Set autosuspend delay for Fibocom LG850-GL - -It has been shown that the autosuspend delay for this device enacted -by modem manager will race with suspend and cause system suspend -failures. - -This occurred in ChromiumOS on a chromebook, but there is no reason -it won't happen in regular notebooks with the same WWAN. To avoid -the failure delay autosuspend to a frequency longer than the polling -rate used by modem manager. - -Link: https://chromium-review.googlesource.com/c/chromiumos/overlays/board-overlays/+/3635003 -Link: https://github.com/freedesktop/ModemManager/blob/43e76bf1bbca8207e37d3fbddfed4bb8578f0170/src/mm-iface-modem.c#L1633 -(cherry picked from commit f32049eda3b06deaae3d6d7d06a9dfd16528c443) - -Related: #2087778 ---- - hwdb.d/60-autosuspend.hwdb | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-autosuspend.hwdb b/hwdb.d/60-autosuspend.hwdb -index 323611d000..07f7fa9344 100644 ---- a/hwdb.d/60-autosuspend.hwdb -+++ b/hwdb.d/60-autosuspend.hwdb -@@ -75,13 +75,18 @@ usb:v0627p0001:*QEMU USB Tablet* - ID_AUTOSUSPEND=1 - - ######################################### --# Sierra Wireless -+# WWAN - ######################################### - - # Sierra Wireless EM7345 4G LTE modem - usb:v1199pA001* - ID_AUTOSUSPEND=1 - -+# Fibocom LG850-GL -+usb:v2CB7p0007* -+ ID_AUTOSUSPEND=1 -+ ID_AUTOSUSPEND_DELAY_MS=7000 -+ - ######################################### - # Wacom - ######################################### diff --git a/SOURCES/0316-Add-HUION-Inspiroy-H420X-to-hwdb.patch b/SOURCES/0316-Add-HUION-Inspiroy-H420X-to-hwdb.patch deleted file mode 100644 index 5b228ca..0000000 --- a/SOURCES/0316-Add-HUION-Inspiroy-H420X-to-hwdb.patch +++ /dev/null @@ -1,32 +0,0 @@ -From bb13a4603d6e25e792836598b7f0aa21e42cd08e Mon Sep 17 00:00:00 2001 -From: Yutsuten -Date: Tue, 10 May 2022 00:01:20 +0900 -Subject: [PATCH] Add HUION Inspiroy H420X to hwdb - -(cherry picked from commit ffa3da1dc20f8f3edb341a7476a82883fe40f3a6) - -Related: #2087778 ---- - hwdb.d/60-evdev.hwdb | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb -index a7fbf2ad4d..2d1751b478 100644 ---- a/hwdb.d/60-evdev.hwdb -+++ b/hwdb.d/60-evdev.hwdb -@@ -378,6 +378,15 @@ evdev:name:SynPS/2 Synaptics TouchPad:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:* - EVDEV_ABS_35=1302:5640:36 - EVDEV_ABS_36=1119:4741:61 - -+######################################### -+# HUION -+######################################### -+ -+# HUION Inpiroy H420X -+evdev:input:b0003v256Cp0064* -+ EVDEV_ABS_00=::200 -+ EVDEV_ABS_01=::200 -+ - ######################################### - # Lenovo - ######################################### diff --git a/SOURCES/0317-hwdb-run-update-hwdb-for-v251-rc3.patch b/SOURCES/0317-hwdb-run-update-hwdb-for-v251-rc3.patch deleted file mode 100644 index ac1cd64..0000000 --- a/SOURCES/0317-hwdb-run-update-hwdb-for-v251-rc3.patch +++ /dev/null @@ -1,8955 +0,0 @@ -From c6c9674865c39e4595751d6211a3d1a25e190650 Mon Sep 17 00:00:00 2001 -From: Luca Boccassi -Date: Fri, 13 May 2022 17:17:33 +0100 -Subject: [PATCH] hwdb: run 'update-hwdb' for v251-rc3 - -(cherry picked from commit caddab0f04a8ba5f6367a7dc2477c7938134ca8e) - -Related: #2087778 ---- - hwdb.d/20-OUI.hwdb | 221 +- - hwdb.d/20-acpi-vendor.hwdb.patch | 4 +- - hwdb.d/20-pci-vendor-model.hwdb | 294 ++- - hwdb.d/20-usb-vendor-model.hwdb | 18 + - hwdb.d/ma-large.txt | 3558 ++++++++++++++++-------------- - hwdb.d/ma-medium.txt | 534 ++--- - hwdb.d/ma-small.txt | 648 +++--- - hwdb.d/pci.ids | 112 +- - hwdb.d/usb.ids | 10 +- - 9 files changed, 3193 insertions(+), 2206 deletions(-) - -diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb -index ab3afc31b2..d9d17f4b2c 100644 ---- a/hwdb.d/20-OUI.hwdb -+++ b/hwdb.d/20-OUI.hwdb -@@ -7506,7 +7506,7 @@ OUI:0009DE* - ID_OUI_FROM_DATABASE=Samjin Information & Communications Co., Ltd. - - OUI:0009DF* -- ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş. -+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.S. - - OUI:0009E0* - ID_OUI_FROM_DATABASE=XEMICS S.A. -@@ -39530,6 +39530,9 @@ OUI:00FA3B* - OUI:00FAB6* - ID_OUI_FROM_DATABASE=Kontakt Micro-Location Sp z o.o. - -+OUI:00FBF9* -+ ID_OUI_FROM_DATABASE=Axiado Corporation -+ - OUI:00FC58* - ID_OUI_FROM_DATABASE=WebSilicon Ltd. - -@@ -39698,6 +39701,9 @@ OUI:0417B6* - OUI:04180F* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:041892* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:0418B6* - ID_OUI_FROM_DATABASE=Private - -@@ -39932,6 +39938,9 @@ OUI:0456E5* - OUI:04572F* - ID_OUI_FROM_DATABASE=Sertel Electronics UK Ltd - -+OUI:045747* -+ ID_OUI_FROM_DATABASE=GoPro -+ - OUI:04586F* - ID_OUI_FROM_DATABASE=Sichuan Whayer information industry Co.,LTD - -@@ -40325,6 +40334,9 @@ OUI:04BD97* - OUI:04BDBF* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:04BF1B* -+ ID_OUI_FROM_DATABASE=Dell Inc. -+ - OUI:04BF6D* - ID_OUI_FROM_DATABASE=Zyxel Communications Corporation - -@@ -41288,6 +41300,9 @@ OUI:08184C* - OUI:0819A6* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:081A1E* -+ ID_OUI_FROM_DATABASE=Shenzhen iComm Semiconductor CO.,LTD -+ - OUI:081C6E* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -@@ -44864,6 +44879,9 @@ OUI:14612F* - OUI:146308* - ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD. - -+OUI:14656A* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:1466B7* - ID_OUI_FROM_DATABASE=Advanced Design Technology Pty Ltd - -@@ -46776,7 +46794,7 @@ OUI:1C234F* - ID_OUI_FROM_DATABASE=EDMI Europe Ltd - - OUI:1C24CD* -- ID_OUI_FROM_DATABASE=Askey Computer Corp. -+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - - OUI:1C24EB* - ID_OUI_FROM_DATABASE=Burlywood -@@ -46808,6 +46826,9 @@ OUI:1C2E1B* - OUI:1C3008* - ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD - -+OUI:1C3283* -+ ID_OUI_FROM_DATABASE=COMTTI Intelligent Technology(Shenzhen) Co., Ltd. -+ - OUI:1C330E* - ID_OUI_FROM_DATABASE=PernixData - -@@ -52679,15 +52700,30 @@ OUI:303D511* - OUI:303D512* - ID_OUI_FROM_DATABASE=Harman Connected Services Corporation India Pvt. Ltd. - -+OUI:303D513* -+ ID_OUI_FROM_DATABASE=S & A Systems -+ -+OUI:303D514* -+ ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc. -+ - OUI:303D515* - ID_OUI_FROM_DATABASE=Media Hub Digital Smart Home Pty Ltd. - - OUI:303D518* - ID_OUI_FROM_DATABASE=The Heil Co dba AWTI 3rd Eye Cam - -+OUI:303D519* -+ ID_OUI_FROM_DATABASE=Annapurna labs -+ - OUI:303D51A* - ID_OUI_FROM_DATABASE=TeraNXT Global India Pvt Ltd. - -+OUI:303D51B* -+ ID_OUI_FROM_DATABASE=Labman Automation -+ -+OUI:303D51D* -+ ID_OUI_FROM_DATABASE=XOR UK Corporation Limited -+ - OUI:303EA7* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -56642,6 +56678,9 @@ OUI:3CA6F6* - OUI:3CA72B* - ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD - -+OUI:3CA7AE* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:3CA82A* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -58571,6 +58610,9 @@ OUI:44700B* - OUI:447098* - ID_OUI_FROM_DATABASE=MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED - -+OUI:447147* -+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Electronics Co.,Ltd -+ - OUI:4473D6* - ID_OUI_FROM_DATABASE=Logitech - -@@ -59258,6 +59300,9 @@ OUI:481A84* - OUI:481BD2* - ID_OUI_FROM_DATABASE=Intron Scientific co., ltd. - -+OUI:481CB9* -+ ID_OUI_FROM_DATABASE=SZ DJI TECHNOLOGY CO.,LTD -+ - OUI:481D70* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -59574,7 +59619,7 @@ OUI:486B91* - ID_OUI_FROM_DATABASE=Fleetwood Group Inc. - - OUI:486DBB* -- ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş. -+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.S. - - OUI:486E70* - ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd. -@@ -59693,6 +59738,9 @@ OUI:4889E7* - OUI:488AD2* - ID_OUI_FROM_DATABASE=MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. - -+OUI:488AE8* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:488B0A* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -60279,7 +60327,7 @@ OUI:4C3488* - ID_OUI_FROM_DATABASE=Intel Corporate - - OUI:4C364E* -- ID_OUI_FROM_DATABASE=Panasonic Corporation Connected Solutions Company -+ ID_OUI_FROM_DATABASE=Panasonic Connect Co., Ltd. - - OUI:4C38D5* - ID_OUI_FROM_DATABASE=MITAC COMPUTING TECHNOLOGY CORPORATION -@@ -60461,6 +60509,9 @@ OUI:4C627B* - OUI:4C6371* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:4C63AD* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:4C63EB* - ID_OUI_FROM_DATABASE=Application Solutions (Electronics and Vision) Ltd - -@@ -61496,6 +61547,9 @@ OUI:503E7C* - OUI:503EAA* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -+OUI:503F50* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:503F56* - ID_OUI_FROM_DATABASE=Syncmold Enterprise Corp - -@@ -61635,7 +61689,7 @@ OUI:505DAC* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - - OUI:505FB5* -- ID_OUI_FROM_DATABASE=Askey Computer Corp. -+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - - OUI:506028* - ID_OUI_FROM_DATABASE=Xirrus Inc. -@@ -61700,6 +61754,9 @@ OUI:506255E* - OUI:506313* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:506391* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:50642B* - ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD - -@@ -63539,6 +63596,9 @@ OUI:582F42* - OUI:582FF7* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS - -+OUI:58305B* -+ ID_OUI_FROM_DATABASE=Shanghai Junqian Sensing Technology Co.,LTD -+ - OUI:583112* - ID_OUI_FROM_DATABASE=DRUST - -@@ -64370,6 +64430,9 @@ OUI:5C0339* - OUI:5C045A* - ID_OUI_FROM_DATABASE=Company NA Stage & Light - -+OUI:5C0758* -+ ID_OUI_FROM_DATABASE=Ufispace Co., LTD. -+ - OUI:5C076F* - ID_OUI_FROM_DATABASE=Thought Creator - -@@ -69131,6 +69194,9 @@ OUI:6CB6CA* - OUI:6CB749* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:6CB7E2* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:6CB7F4* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -69455,6 +69521,9 @@ OUI:70105C* - OUI:70106F* - ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise - -+OUI:70110E* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:701124* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -69774,7 +69843,7 @@ OUI:705425* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - - OUI:7054B4* -- ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş. -+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.S. - - OUI:7054D2* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION -@@ -70157,6 +70226,9 @@ OUI:709BA5* - OUI:709BFC* - ID_OUI_FROM_DATABASE=Bryton Inc. - -+OUI:709C45* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:709C8F* - ID_OUI_FROM_DATABASE=Nero AG - -@@ -83486,6 +83558,9 @@ OUI:749D8F* - OUI:749DDC* - ID_OUI_FROM_DATABASE=2Wire Inc - -+OUI:749E75* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:749EA5* - ID_OUI_FROM_DATABASE=OHSUNG - -@@ -84353,6 +84428,9 @@ OUI:785B64* - OUI:785C28* - ID_OUI_FROM_DATABASE=Prime Motion Inc. - -+OUI:785C5E* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:785C72* - ID_OUI_FROM_DATABASE=Hioso Technology Co., Ltd. - -@@ -86903,6 +86981,9 @@ OUI:80618F* - OUI:806459* - ID_OUI_FROM_DATABASE=Nimbus Inc. - -+OUI:80646F* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:80647A* - ID_OUI_FROM_DATABASE=Ola Sense Inc - -@@ -89553,7 +89634,7 @@ OUI:88DD79* - ID_OUI_FROM_DATABASE=Voltaire - - OUI:88DE7C* -- ID_OUI_FROM_DATABASE=Askey Computer Corp. -+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - - OUI:88DEA9* - ID_OUI_FROM_DATABASE=Roku, Inc. -@@ -89909,6 +89990,9 @@ OUI:8C1F6401A* - OUI:8C1F6401E* - ID_OUI_FROM_DATABASE=SCIREQ Scientific Respiratory Equipment Inc - -+OUI:8C1F64043* -+ ID_OUI_FROM_DATABASE=AperNet, LLC -+ - OUI:8C1F64045* - ID_OUI_FROM_DATABASE=VEILUX INC. - -@@ -89945,6 +90029,9 @@ OUI:8C1F6408B* - OUI:8C1F6408F* - ID_OUI_FROM_DATABASE=AixControl GmbH - -+OUI:8C1F64098* -+ ID_OUI_FROM_DATABASE=Agvolution GmbH -+ - OUI:8C1F64099* - ID_OUI_FROM_DATABASE=Pantherun Technologies Pvt Ltd - -@@ -89993,6 +90080,9 @@ OUI:8C1F640E6* - OUI:8C1F640EA* - ID_OUI_FROM_DATABASE=SmartSky Networks LLC - -+OUI:8C1F640EF* -+ ID_OUI_FROM_DATABASE=DAVE SRL -+ - OUI:8C1F640F0* - ID_OUI_FROM_DATABASE=Xylon - -@@ -90455,6 +90545,9 @@ OUI:8C1F6453F* - OUI:8C1F64542* - ID_OUI_FROM_DATABASE=Landis+Gyr Equipamentos de Medição Ltda - -+OUI:8C1F64544* -+ ID_OUI_FROM_DATABASE=Tinkerbee Innovations Private Limited -+ - OUI:8C1F64549* - ID_OUI_FROM_DATABASE=Brad Technology - -@@ -90506,6 +90599,9 @@ OUI:8C1F645B3* - OUI:8C1F645BC* - ID_OUI_FROM_DATABASE=HEITEC AG - -+OUI:8C1F645CB* -+ ID_OUI_FROM_DATABASE=dinosys -+ - OUI:8C1F645D3* - ID_OUI_FROM_DATABASE=Eloy Water - -@@ -90596,6 +90692,9 @@ OUI:8C1F6467F* - OUI:8C1F64683* - ID_OUI_FROM_DATABASE=SLAT - -+OUI:8C1F64685* -+ ID_OUI_FROM_DATABASE=Sanchar Communication Systems -+ - OUI:8C1F64697* - ID_OUI_FROM_DATABASE=Sontay Ltd. - -@@ -90629,6 +90728,9 @@ OUI:8C1F646CD* - OUI:8C1F646CF* - ID_OUI_FROM_DATABASE=Italora - -+OUI:8C1F646D5* -+ ID_OUI_FROM_DATABASE=HTK Hamburg GmbH -+ - OUI:8C1F646E3* - ID_OUI_FROM_DATABASE=ViewSonic International Corporation - -@@ -90755,6 +90857,9 @@ OUI:8C1F647B8* - OUI:8C1F647B9* - ID_OUI_FROM_DATABASE=Deviceroy - -+OUI:8C1F647BC* -+ ID_OUI_FROM_DATABASE=GO development GmbH -+ - OUI:8C1F647C8* - ID_OUI_FROM_DATABASE=Jacquet Dechaume - -@@ -90770,6 +90875,9 @@ OUI:8C1F647D3* - OUI:8C1F647D6* - ID_OUI_FROM_DATABASE=Algodue Elettronica Srl - -+OUI:8C1F647D8* -+ ID_OUI_FROM_DATABASE=HIROSAWA ELECTRIC Co.,Ltd. -+ - OUI:8C1F647DD* - ID_OUI_FROM_DATABASE=TAKASAKI KYODO COMPUTING CENTER Co.,LTD. - -@@ -90833,6 +90941,9 @@ OUI:8C1F64883* - OUI:8C1F6488D* - ID_OUI_FROM_DATABASE=Pantherun Technologies Pvt Ltd - -+OUI:8C1F64890* -+ ID_OUI_FROM_DATABASE=WonATech Co., Ltd. -+ - OUI:8C1F64892* - ID_OUI_FROM_DATABASE=MDI Industrial - -@@ -90905,6 +91016,9 @@ OUI:8C1F64909* - OUI:8C1F6490E* - ID_OUI_FROM_DATABASE=Xacti Corporation - -+OUI:8C1F6490F* -+ ID_OUI_FROM_DATABASE=BELIMO Automation AG -+ - OUI:8C1F64911* - ID_OUI_FROM_DATABASE=EOLANE - -@@ -90926,6 +91040,9 @@ OUI:8C1F64939* - OUI:8C1F64943* - ID_OUI_FROM_DATABASE=Autark GmbH - -+OUI:8C1F64946* -+ ID_OUI_FROM_DATABASE=UniJet Co., Ltd. -+ - OUI:8C1F64947* - ID_OUI_FROM_DATABASE=LLC TC Vympel - -@@ -91133,6 +91250,9 @@ OUI:8C1F64B0C* - OUI:8C1F64B10* - ID_OUI_FROM_DATABASE=MTU Aero Engines AG - -+OUI:8C1F64B13* -+ ID_OUI_FROM_DATABASE=Abode Systems Inc -+ - OUI:8C1F64B22* - ID_OUI_FROM_DATABASE=BLIGHTER SURVEILLANCE SYSTEMS LTD - -@@ -91250,6 +91370,9 @@ OUI:8C1F64C28* - OUI:8C1F64C2F* - ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. - -+OUI:8C1F64C35* -+ ID_OUI_FROM_DATABASE=Peter Huber Kaeltemaschinenbau AG -+ - OUI:8C1F64C38* - ID_OUI_FROM_DATABASE=ECO-ADAPT - -@@ -91301,6 +91424,9 @@ OUI:8C1F64CA6* - OUI:8C1F64CAD* - ID_OUI_FROM_DATABASE=General Motors - -+OUI:8C1F64CAF* -+ ID_OUI_FROM_DATABASE=BRS Sistemas Eletrônicos -+ - OUI:8C1F64CBE* - ID_OUI_FROM_DATABASE=Circa Enterprises Inc - -@@ -92831,6 +92957,9 @@ OUI:9023B4* - OUI:9023EC* - ID_OUI_FROM_DATABASE=Availink, Inc. - -+OUI:9025F2* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:90272B* - ID_OUI_FROM_DATABASE=Algorab S.r.l. - -@@ -94289,6 +94418,9 @@ OUI:949FB4* - OUI:94A04E* - ID_OUI_FROM_DATABASE=Bostex Technology Co., LTD - -+OUI:94A07D* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:94A1A2* - ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. - -@@ -95288,6 +95420,9 @@ OUI:986022* - OUI:9860CA* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:986610* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:9866EA* - ID_OUI_FROM_DATABASE=Industrial Control Communications, Inc. - -@@ -95498,6 +95633,9 @@ OUI:9880BBE* - OUI:9880EE* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:98818A* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:988217* - ID_OUI_FROM_DATABASE=Disruptive Ltd - -@@ -97421,6 +97559,9 @@ OUI:A02D13* - OUI:A02EF3* - ID_OUI_FROM_DATABASE=United Integrated Services Co., Led. - -+OUI:A03131* -+ ID_OUI_FROM_DATABASE=Procenne Digital Security -+ - OUI:A031DB* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -100214,6 +100355,9 @@ OUI:A8A668* - OUI:A8A795* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:A8AA7C* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:A8ABB5* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -100358,6 +100502,9 @@ OUI:A8DA0C* - OUI:A8DB03* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -+OUI:A8DC5A* -+ ID_OUI_FROM_DATABASE=Digital Watchdog -+ - OUI:A8DE68* - ID_OUI_FROM_DATABASE=Beijing Wide Technology Co.,Ltd - -@@ -100682,6 +100829,9 @@ OUI:AC2DA9* - OUI:AC2FA8* - ID_OUI_FROM_DATABASE=Humannix Co.,Ltd. - -+OUI:AC3184* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:AC319D* - ID_OUI_FROM_DATABASE=Shenzhen TG-NET Botone Technology Co.,Ltd. - -@@ -101243,6 +101393,9 @@ OUI:ACB566* - OUI:ACB57D* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -+OUI:ACB687* -+ ID_OUI_FROM_DATABASE=Arcadyan Corporation -+ - OUI:ACB74F* - ID_OUI_FROM_DATABASE=METEL s.r.o. - -@@ -101939,6 +102092,9 @@ OUI:B0761B* - OUI:B077AC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:B07839* -+ ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd. -+ - OUI:B07870* - ID_OUI_FROM_DATABASE=Wi-NEXT, Inc. - -@@ -103340,6 +103496,9 @@ OUI:B4C170* - OUI:B4C26A* - ID_OUI_FROM_DATABASE=Garmin International - -+OUI:B4C2F7* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:B4C44E* - ID_OUI_FROM_DATABASE=VXL eTech Pvt Ltd - -@@ -103653,7 +103812,7 @@ OUI:B81F5E* - ID_OUI_FROM_DATABASE=Apption Labs Limited - - OUI:B8208E* -- ID_OUI_FROM_DATABASE=Panasonic Corporation Connected Solutions Company -+ ID_OUI_FROM_DATABASE=Panasonic Connect Co., Ltd. - - OUI:B820E7* - ID_OUI_FROM_DATABASE=Guangzhou Horizontal Information & Network Integration Co. Ltd -@@ -105899,6 +106058,9 @@ OUI:C06DED* - OUI:C07009* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:C071AA* -+ ID_OUI_FROM_DATABASE=ShenZhen OnMicro Electronics Co.,Ltd. -+ - OUI:C0742B* - ID_OUI_FROM_DATABASE=SHENZHEN XUNLONG SOFTWARE CO.,LIMITED - -@@ -107048,6 +107210,9 @@ OUI:C474F8* - OUI:C475AB* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:C475EA* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:C477AB* - ID_OUI_FROM_DATABASE=Beijing ASU Tech Co.,Ltd - -@@ -108164,6 +108329,9 @@ OUI:C88439* - OUI:C88447* - ID_OUI_FROM_DATABASE=Beautiful Enterprise Co., Ltd - -+OUI:C8848C* -+ ID_OUI_FROM_DATABASE=Ruckus Wireless -+ - OUI:C884A1* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -@@ -109373,6 +109541,9 @@ OUI:CC9635* - OUI:CC96A0* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:CC96E5* -+ ID_OUI_FROM_DATABASE=Dell Inc. -+ - OUI:CC988B* - ID_OUI_FROM_DATABASE=SONY Visual Products Inc. - -@@ -109481,6 +109652,9 @@ OUI:CCB8A8* - OUI:CCB8F1* - ID_OUI_FROM_DATABASE=EAGLE KINGDOM TECHNOLOGIES LIMITED - -+OUI:CCBA6F* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:CCBBFE* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -109695,7 +109869,7 @@ OUI:CCD39DE* - ID_OUI_FROM_DATABASE=Shanghai tongli information technology co. LTD - - OUI:CCD3C1* -- ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş. -+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.S. - - OUI:CCD3E2* - ID_OUI_FROM_DATABASE=Jiangsu Yinhe Electronics Co.,Ltd. -@@ -113678,6 +113852,9 @@ OUI:DCA971* - OUI:DCA989* - ID_OUI_FROM_DATABASE=MACANDC - -+OUI:DCAA43* -+ ID_OUI_FROM_DATABASE=Shenzhen Terca Information Technology Co., Ltd. -+ - OUI:DCAD9E* - ID_OUI_FROM_DATABASE=GreenPriz - -@@ -113834,6 +114011,9 @@ OUI:DCDA4F* - OUI:DCDA80* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -+OUI:DCDB27* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:DCDB70* - ID_OUI_FROM_DATABASE=Tonfunk Systementwicklung und Service GmbH - -@@ -114332,6 +114512,9 @@ OUI:E056F4* - OUI:E0589E* - ID_OUI_FROM_DATABASE=Laerdal Medical - -+OUI:E05A1B* -+ ID_OUI_FROM_DATABASE=Espressif Inc. -+ - OUI:E05A9F0* - ID_OUI_FROM_DATABASE=Annapurna labs - -@@ -116624,6 +116807,9 @@ OUI:E8A1F8* - OUI:E8A245* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:E8A34E* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:E8A364* - ID_OUI_FROM_DATABASE=Signal Path International / Peachtree Audio - -@@ -117684,7 +117870,7 @@ OUI:ECBD1D* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - - OUI:ECBE5F* -- ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş. -+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.S. - - OUI:ECBEDD* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -@@ -117788,6 +117974,9 @@ OUI:ECE512* - OUI:ECE555* - ID_OUI_FROM_DATABASE=Hirschmann Automation - -+OUI:ECE61D* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:ECE6A2* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD - -@@ -119123,6 +119312,9 @@ OUI:F419E2* - OUI:F41BA1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:F41C71* -+ ID_OUI_FROM_DATABASE=SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD -+ - OUI:F41C95* - ID_OUI_FROM_DATABASE=BEIJING YUNYI TIMES TECHNOLOGY CO,.LTD - -@@ -119828,6 +120020,9 @@ OUI:F4B898* - OUI:F4B8A7* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:F4BBC7* -+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. -+ - OUI:F4BC97* - ID_OUI_FROM_DATABASE=Shenzhen Crave Communication Co., LTD - -@@ -121301,6 +121496,9 @@ OUI:FC0647* - OUI:FC06ED* - ID_OUI_FROM_DATABASE=M2Motive Technology Inc. - -+OUI:FC0736* -+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. -+ - OUI:FC07A0* - ID_OUI_FROM_DATABASE=LRE Medical GmbH - -@@ -121349,6 +121547,9 @@ OUI:FC1193* - OUI:FC122C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:FC1263* -+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP -+ - OUI:FC1349* - ID_OUI_FROM_DATABASE=Global Apps Corp. - -diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch -index a696119753..35f3430268 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb.patch -+++ b/hwdb.d/20-acpi-vendor.hwdb.patch -@@ -1,5 +1,5 @@ ----- 20-acpi-vendor.hwdb.base 2022-05-05 16:21:43.499198786 +0200 --+++ 20-acpi-vendor.hwdb 2022-05-05 16:21:43.513198949 +0200 -+--- 20-acpi-vendor.hwdb.base 2022-05-13 17:14:22.098059674 +0100 -++++ 20-acpi-vendor.hwdb 2022-05-13 17:14:22.102059756 +0100 - @@ -3,6 +3,8 @@ - # Data imported from: - # https://uefi.org/uefi-pnp-export -diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb -index cae426479b..926247eefc 100644 ---- a/hwdb.d/20-pci-vendor-model.hwdb -+++ b/hwdb.d/20-pci-vendor-model.hwdb -@@ -122,6 +122,12 @@ pci:v0000018Ad00000106* - pci:v000001DE* - ID_VENDOR_FROM_DATABASE=Oxide Computer Company - -+pci:v000001DEd00000000* -+ ID_MODEL_FROM_DATABASE=Propolis NVMe Controller -+ -+pci:v000001DEd00000001* -+ ID_MODEL_FROM_DATABASE=Propolis xHCI Controller -+ - pci:v00000200* - ID_VENDOR_FROM_DATABASE=Dell (wrong ID) - -@@ -2124,7 +2130,7 @@ pci:v00001000d000000A5sv00001028sd00002140* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365i Front) - - pci:v00001000d000000A5sv00001028sd00002141* -- ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H360 MX) -+ ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (PERC H365i MX) - - pci:v00001000d000000A5sv00001028sd00002142* - ID_MODEL_FROM_DATABASE=Fusion-MPT 24GSAS/PCIe SAS40xx (HBA465e Adapter) -@@ -20114,6 +20120,12 @@ pci:v00001054d0000350E* - pci:v00001055* - ID_VENDOR_FROM_DATABASE=Microchip Technology / SMSC - -+pci:v00001055d00007430* -+ ID_MODEL_FROM_DATABASE=LAN7430 -+ -+pci:v00001055d00007431* -+ ID_MODEL_FROM_DATABASE=LAN7431 -+ - pci:v00001055d00009130* - ID_MODEL_FROM_DATABASE=SLC90E66 [Victory66] IDE - -@@ -36945,10 +36957,13 @@ pci:v000010DEd00002296* - ID_MODEL_FROM_DATABASE=Tegra PCIe Endpoint Virtual Network - - pci:v000010DEd00002302* -- ID_MODEL_FROM_DATABASE=GA103 -+ ID_MODEL_FROM_DATABASE=GH100 - - pci:v000010DEd00002321* -- ID_MODEL_FROM_DATABASE=GA103 -+ ID_MODEL_FROM_DATABASE=GH100 -+ -+pci:v000010DEd00002336* -+ ID_MODEL_FROM_DATABASE=GH100 [H100 96GB] - - pci:v000010DEd00002414* - ID_MODEL_FROM_DATABASE=GA103 [GeForce RTX 3060 Ti] -@@ -50946,11 +50961,113 @@ pci:v00001344d00005192* - ID_MODEL_FROM_DATABASE=9200 MAX NVMe SSD - - pci:v00001344d000051A2* -- ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD -+ ID_MODEL_FROM_DATABASE=7300 PRO NVMe SSD - - pci:v00001344d000051A3* -+ ID_MODEL_FROM_DATABASE=7300 MAX NVMe SSD -+ -+pci:v00001344d000051B1* -+ ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD -+ -+pci:v00001344d000051B1sv00001344sd00004000* -+ ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD (3.84TB U.2) -+ -+pci:v00001344d000051B1sv00001344sd00005000* -+ ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD (7.68TB U.2) -+ -+pci:v00001344d000051B1sv00001344sd00006000* -+ ID_MODEL_FROM_DATABASE=9300 PRO NVMe SSD (15.36TB U.2) -+ -+pci:v00001344d000051B2* - ID_MODEL_FROM_DATABASE=9300 MAX NVMe SSD - -+pci:v00001344d000051B2sv00001344sd00004000* -+ ID_MODEL_FROM_DATABASE=9300 MAX NVMe SSD (3.2TB U.2) -+ -+pci:v00001344d000051B2sv00001344sd00005000* -+ ID_MODEL_FROM_DATABASE=9300 MAX NVMe SSD (6.4 TB U.2) -+ -+pci:v00001344d000051B2sv00001344sd00006000* -+ ID_MODEL_FROM_DATABASE=9300 MAX NVMe SSD (12.8TB U.2) -+ -+pci:v00001344d000051C0* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD -+ -+pci:v00001344d000051C0sv00001344sd00001100* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (M.2 480GB) -+ -+pci:v00001344d000051C0sv00001344sd00002000* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (U.3 960GB) -+ -+pci:v00001344d000051C0sv00001344sd00002100* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (M.2 960GB) -+ -+pci:v00001344d000051C0sv00001344sd00002600* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (E1.S 960GB) -+ -+pci:v00001344d000051C0sv00001344sd00002B00* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (M.2 1920GB) -+ -+pci:v00001344d000051C0sv00001344sd00002D00* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (E1.2 1920GB) -+ -+pci:v00001344d000051C0sv00001344sd00003000* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (U.3 1920GB) -+ -+pci:v00001344d000051C0sv00001344sd00003E00* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (M.2 3840GB) -+ -+pci:v00001344d000051C0sv00001344sd00003F00* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (E1.S 3840GB) -+ -+pci:v00001344d000051C0sv00001344sd00004000* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (U.3 3840GB) -+ -+pci:v00001344d000051C0sv00001344sd00005000* -+ ID_MODEL_FROM_DATABASE=7400 PRO NVMe SSD (U.3 7680GB) -+ -+pci:v00001344d000051C1* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD -+ -+pci:v00001344d000051C1sv00001344sd00001100* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (M.2 400GB) -+ -+pci:v00001344d000051C1sv00001344sd00002000* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (U.3 800GB) -+ -+pci:v00001344d000051C1sv00001344sd00002100* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (M.2 800GB) -+ -+pci:v00001344d000051C1sv00001344sd00002600* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (E1.S 800GB) -+ -+pci:v00001344d000051C1sv00001344sd00002B00* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (M.2 1600GB) -+ -+pci:v00001344d000051C1sv00001344sd00002D00* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (E1.S 1600GB) -+ -+pci:v00001344d000051C1sv00001344sd00003000* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (U.3 1600GB) -+ -+pci:v00001344d000051C1sv00001344sd00003E00* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (M.2 3200GB) -+ -+pci:v00001344d000051C1sv00001344sd00003F00* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (E1.S 3200GB) -+ -+pci:v00001344d000051C1sv00001344sd00004000* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (U.3 3200GB) -+ -+pci:v00001344d000051C1sv00001344sd00005000* -+ ID_MODEL_FROM_DATABASE=7400 MAX NVMe SSD (U.3 6400GB) -+ -+pci:v00001344d000051C3* -+ ID_MODEL_FROM_DATABASE=7450 PRO NVMe SSD -+ -+pci:v00001344d000051C4* -+ ID_MODEL_FROM_DATABASE=7450 MAX NVMe SSD -+ - pci:v00001345* - ID_VENDOR_FROM_DATABASE=Arescom Inc - -@@ -55451,6 +55568,12 @@ pci:v00001425d00006089* - pci:v00001425d0000608A* - ID_MODEL_FROM_DATABASE=T62100-608a Unified Wire Ethernet Controller - -+pci:v00001425d00006092* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller -+ -+pci:v00001425d00006092sv000001DEsd0000FFF9* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet T6) -+ - pci:v00001425d00006401* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller - -@@ -55523,6 +55646,12 @@ pci:v00001425d00006489* - pci:v00001425d0000648A* - ID_MODEL_FROM_DATABASE=T62100-608a Unified Wire Ethernet Controller - -+pci:v00001425d00006492* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller -+ -+pci:v00001425d00006492sv000001DEsd0000FFF9* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet T6) -+ - pci:v00001425d00006501* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller - -@@ -55595,6 +55724,9 @@ pci:v00001425d00006589* - pci:v00001425d0000658A* - ID_MODEL_FROM_DATABASE=T62100-608a Unified Wire Storage Controller - -+pci:v00001425d00006592* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Storage Controller -+ - pci:v00001425d00006601* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller - -@@ -55667,6 +55799,9 @@ pci:v00001425d00006689* - pci:v00001425d0000668A* - ID_MODEL_FROM_DATABASE=T62100-608a Unified Wire Storage Controller - -+pci:v00001425d00006692* -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Storage Controller -+ - pci:v00001425d00006801* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller [VF] - -@@ -69047,9 +69182,15 @@ pci:v00001AF4* - pci:v00001AF4d00001000* - ID_MODEL_FROM_DATABASE=Virtio network device - -+pci:v00001AF4d00001000sv000001DEsd0000FFFB* -+ ID_MODEL_FROM_DATABASE=Virtio network device (Propolis Virtio network device) -+ - pci:v00001AF4d00001001* - ID_MODEL_FROM_DATABASE=Virtio block device - -+pci:v00001AF4d00001001sv000001DEsd0000FFFA* -+ ID_MODEL_FROM_DATABASE=Virtio block device (Propolis Virtio block device) -+ - pci:v00001AF4d00001002* - ID_MODEL_FROM_DATABASE=Virtio memory balloon - -@@ -72677,6 +72818,123 @@ pci:v00001F2Fd00001513sv00001F2Fsd00006116* - pci:v00001F2Fd00001513sv00001F2Fsd00006118* - ID_MODEL_FROM_DATABASE=DERA MENG NVMe Controller (KM560 U.2 7.68TB NVMe SSD) - -+pci:v00001F3F* -+ ID_VENDOR_FROM_DATABASE=3SNIC Ltd -+ -+pci:v00001F3Fd00002100* -+ ID_MODEL_FROM_DATABASE=3SRAID SAS/SATA HBA -+ -+pci:v00001F3Fd00002100sv00001F3Fsd00000120* -+ ID_MODEL_FROM_DATABASE=3SRAID SAS/SATA HBA (HBA 32 Ports) -+ -+pci:v00001F3Fd00002100sv00001F3Fsd00000125* -+ ID_MODEL_FROM_DATABASE=3SRAID SAS/SATA HBA (HBA 40 Ports) -+ -+pci:v00001F3Fd00002100sv00001F3Fsd00000180* -+ ID_MODEL_FROM_DATABASE=3SRAID SAS/SATA HBA (HBA 16 Ports) -+ -+pci:v00001F3Fd00002100sv00001F3Fsd00000185* -+ ID_MODEL_FROM_DATABASE=3SRAID SAS/SATA HBA (HBA 8 Ports) -+ -+pci:v00001F3Fd00002200* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller -+ -+pci:v00001F3Fd00002200sv00001F3Fsd00000185* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller (RAID Controller 16 Ports with 2G Cache) -+ -+pci:v00001F3Fd00002200sv00001F3Fsd000001A1* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller (RAID Controller 40 Ports with 2G Cache) -+ -+pci:v00001F3Fd00002200sv00001F3Fsd000001A4* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller (RAID Controller 16 Ports with 4G Cache) -+ -+pci:v00001F3Fd00002200sv00001F3Fsd000001A8* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller (RAID Controller 32 Ports with 4G Cache) -+ -+pci:v00001F3Fd00002200sv00001F3Fsd000001AD* -+ ID_MODEL_FROM_DATABASE=3SRAID RAID controller (RAID Controller 40 Ports with 4G Cache) -+ -+pci:v00001F3Fd00009001* -+ ID_MODEL_FROM_DATABASE=Ethernet VF -+ -+pci:v00001F3Fd00009001sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=Ethernet VF -+ -+pci:v00001F3Fd00009002* -+ ID_MODEL_FROM_DATABASE=Ethernet VF Hyper-V -+ -+pci:v00001F3Fd00009002sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=Ethernet VF Hyper-V -+ -+pci:v00001F3Fd00009003* -+ ID_MODEL_FROM_DATABASE=Ethernet SDI VF -+ -+pci:v00001F3Fd00009003sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=Ethernet SDI VF -+ -+pci:v00001F3Fd00009004* -+ ID_MODEL_FROM_DATABASE=Ethernet SDI VF Hyper-V -+ -+pci:v00001F3Fd00009004sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=Ethernet SDI VF Hyper-V -+ -+pci:v00001F3Fd00009008* -+ ID_MODEL_FROM_DATABASE=3SFC VF -+ -+pci:v00001F3Fd00009008sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=3SFC VF -+ -+pci:v00001F3Fd00009009* -+ ID_MODEL_FROM_DATABASE=3SFC VF Hyper-V -+ -+pci:v00001F3Fd00009009sv00001F3Fsd00001000* -+ ID_MODEL_FROM_DATABASE=3SFC VF Hyper-V -+ -+pci:v00001F3Fd00009010* -+ ID_MODEL_FROM_DATABASE=3SFC FC Controller -+ -+pci:v00001F3Fd00009010sv00001F3Fsd00000041* -+ ID_MODEL_FROM_DATABASE=3SFC FC Controller (Dual Port 16GE FC to PCIe Gen4 x16 Adapter) -+ -+pci:v00001F3Fd00009010sv00001F3Fsd00000061* -+ ID_MODEL_FROM_DATABASE=3SFC FC Controller (Dual Port 32GE FC to PCIe Gen4 x16 Adapter) -+ -+pci:v00001F3Fd00009020* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter -+ -+pci:v00001F3Fd00009020sv00001F3Fsd00000051* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter (Dual Port 25GE Ethernet Network Adapter) -+ -+pci:v00001F3Fd00009020sv00001F3Fsd00000052* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter (Quad Port 25GE Ethernet Network Adapter) -+ -+pci:v00001F3Fd00009020sv00001F3Fsd000000A1* -+ ID_MODEL_FROM_DATABASE=Ethernet Network Adapter (Dual Port 100GE Ethernet Network Adapter) -+ -+pci:v00001F3Fd00009030* -+ ID_MODEL_FROM_DATABASE=IPU -+ -+pci:v00001F3Fd00009030sv00001F3Fsd00000051* -+ ID_MODEL_FROM_DATABASE=IPU (Dual Port 25GE IPU) -+ -+pci:v00001F3Fd00009031* -+ ID_MODEL_FROM_DATABASE=SDI5.0 -+ -+pci:v00001F3Fd00009031sv00001F3Fsd00000051* -+ ID_MODEL_FROM_DATABASE=SDI5.0 (Dual Port 25GE SDI5.0lite) -+ -+pci:v00001F3Fd00009031sv00001F3Fsd000000A1* -+ ID_MODEL_FROM_DATABASE=SDI5.0 (Dual Port 100GE SDI5.0) -+ -+pci:v00001F3Fd00009032* -+ ID_MODEL_FROM_DATABASE=SDI5.1 -+ -+pci:v00001F3Fd00009032sv00001F3Fsd000000A1* -+ ID_MODEL_FROM_DATABASE=SDI5.1 (Dual Port 100GE SDI5.1) -+ -+pci:v00001FAA* -+ ID_VENDOR_FROM_DATABASE=Hexaflake (Shanghai) Information Technology Co., Ltd. -+ - pci:v00001FAB* - ID_VENDOR_FROM_DATABASE=Unifabrix Ltd. - -@@ -74249,12 +74507,6 @@ pci:v00005168d00000300* - pci:v00005168d00000301* - ID_MODEL_FROM_DATABASE=FlyDVB-T - --pci:v000051D8* -- ID_VENDOR_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #2 -- --pci:v000051D9* -- ID_VENDOR_FROM_DATABASE=Alder Lake-P Serial IO I2C Controller #3 -- - pci:v00005301* - ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corp. - -@@ -74901,7 +75153,7 @@ pci:v00006766d00003D00* - ID_MODEL_FROM_DATABASE=Arise-GT-10C0 - - pci:v00006766d00003D02* -- ID_MODEL_FROM_DATABASE=Arise 1020 -+ ID_MODEL_FROM_DATABASE=Arise1020 - - pci:v00006766d00003D03* - ID_MODEL_FROM_DATABASE=Arise-GT-1040 -@@ -74913,7 +75165,7 @@ pci:v00006766d00003D40* - ID_MODEL_FROM_DATABASE=Arise-GT-10C0 High Definition Audio Controller - - pci:v00006766d00003D41* -- ID_MODEL_FROM_DATABASE=Arise 1020 High Definition Audio Controller -+ ID_MODEL_FROM_DATABASE=Arise1020 High Definition Audio Controller - - pci:v00006899* - ID_VENDOR_FROM_DATABASE=ZT Systems -@@ -80111,6 +80363,9 @@ pci:v00008086d00001235* - pci:v00008086d00001237* - ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma] - -+pci:v00008086d00001237sv000001DEsd0000FFFE* -+ ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma] (Propolis Virtual 440FX) -+ - pci:v00008086d00001237sv00001AF4sd00001100* - ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma] (Qemu virtual machine) - -@@ -96173,6 +96428,9 @@ pci:v00008086d00006FFE* - pci:v00008086d00007000* - ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] - -+pci:v00008086d00007000sv000001DEsd0000FFFD* -+ ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] (Propolis Virtual PIIX3 ISA Controller) -+ - pci:v00008086d00007000sv00001AF4sd00001100* - ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] (Qemu virtual machine) - -@@ -96224,6 +96482,9 @@ pci:v00008086d00007112sv00001AF4sd00001100* - pci:v00008086d00007113* - ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI - -+pci:v00008086d00007113sv000001DEsd0000FFFC* -+ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI (Propolis Virtual PIIX4 PM Controller) -+ - pci:v00008086d00007113sv000015ADsd00001976* - ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI (Virtual Machine Chipset) - -@@ -96443,6 +96704,15 @@ pci:v00008086d00007AA7* - pci:v00008086d00007AB4* - ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #13 - -+pci:v00008086d00007AB8* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #1 -+ -+pci:v00008086d00007AB9* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #2 -+ -+pci:v00008086d00007ABC* -+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #5 -+ - pci:v00008086d00007ABD* - ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #6 - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index d7e218011a..ee890a8f28 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -64613,6 +64613,24 @@ usb:v2304p061E* - usb:v2304p2304* - ID_MODEL_FROM_DATABASE=1689 - -+usb:v2309* -+ ID_VENDOR_FROM_DATABASE=TimeLink Technology Co., Ltd -+ -+usb:v2309p1001* -+ ID_MODEL_FROM_DATABASE=Touch Device(hid) -+ -+usb:v2309p1005* -+ ID_MODEL_FROM_DATABASE=Touch Device -+ -+usb:v2309p1006* -+ ID_MODEL_FROM_DATABASE=Touch Device(2) -+ -+usb:v2309p1007* -+ ID_MODEL_FROM_DATABASE=MulTouch Device(hid) -+ -+usb:v2309p1009* -+ ID_MODEL_FROM_DATABASE=Touch Device(hid) -+ - usb:v230D* - ID_VENDOR_FROM_DATABASE=Teracom - -diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt -index aeecb73bbf..8481ff91b9 100644 ---- a/hwdb.d/ma-large.txt -+++ b/hwdb.d/ma-large.txt -@@ -1238,12 +1238,6 @@ A86D5F (base 16) Raisecom Technology CO., LTD - San Jose CA 95134 - US - --50-5F-B5 (hex) Askey Computer Corp. --505FB5 (base 16) Askey Computer Corp. -- 10F, NO. 119, JIANKANG RD., ZHONGHE DIST. -- NEW TAIPEI 235 -- TW -- - C4-F0-EC (hex) Fiberhome Telecommunication Technologies Co.,LTD - C4F0EC (base 16) Fiberhome Telecommunication Technologies Co.,LTD - No.5 DongXin Road -@@ -1322,12 +1316,6 @@ D88DC8 (base 16) Atil Technology Co., LTD - Da’an Dist., Taipei City 106 - TW - --88-DE-7C (hex) Askey Computer Corp. --88DE7C (base 16) Askey Computer Corp. -- 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -- NEW TAIPEI CITY 23585 -- TW -- - A8-E2-C1 (hex) Texas Instruments - A8E2C1 (base 16) Texas Instruments - 12500 TI Blvd -@@ -2873,12 +2861,6 @@ D0C5D8 (base 16) LATECOERE - Toulouse Cedex 5 31 Haute-Garonne 31079 - FR - --70-54-B4 (hex) Vestel Elektronik San ve Tic. A.Ş. --7054B4 (base 16) Vestel Elektronik San ve Tic. A.Ş. -- Organize san -- Manisa Turket 45030 -- TR -- - 20-A6-0C (hex) Xiaomi Communications Co Ltd - 20A60C (base 16) Xiaomi Communications Co Ltd - The Rainbow City of China Resources -@@ -36485,12 +36467,6 @@ B43D08 (base 16) GX International BV - TOYONAKA CITY,OSAKA 560-0035 - JP - --B8-20-8E (hex) Panasonic Corporation Connected Solutions Company --B8208E (base 16) Panasonic Corporation Connected Solutions Company -- 4-1-62 Minoshima, Hakata-ku -- Fukuoka-shi Fukuoka 812-8531 -- JP -- - 90-38-0C (hex) Espressif Inc. - 90380C (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -37412,12 +37388,6 @@ DC8084 (base 16) Apple, Inc. - Ernakulam KL 686662 - IN - --E4-DA-DF (hex) Taicang T&W Electronics --E4DADF (base 16) Taicang T&W Electronics -- 89# Jiang Nan RD -- Suzhou Jiangsu 215412 -- CN -- - 7C-35-F8 (hex) Zhejiang Tmall Technology Co., Ltd. - 7C35F8 (base 16) Zhejiang Tmall Technology Co., Ltd. - No.969 Wenyi West Road, Wuchang Street, Yuhang District -@@ -37442,6 +37412,12 @@ C85895 (base 16) Motorola Mobility LLC, a Lenovo Company - Chicago IL 60654 - US - -+E4-DA-DF (hex) Taicang T&W Electronics -+E4DADF (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 -+ CN -+ - A8-53-7D (hex) Mist Systems, Inc. - A8537D (base 16) Mist Systems, Inc. - 1601 South De Anza Blvd, Suite 248 -@@ -37472,12 +37448,6 @@ E8D322 (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --30-2B-DC (hex) Top-Unum Electronics Co., LTD --302BDC (base 16) Top-Unum Electronics Co., LTD -- No. 58, Ln. 137, Jianshan Rd., Yingge Dist., -- New Taipei City 239, Taiwan 239 -- CN -- - 8C-15-53 (hex) Beijing Memblaze Technology Co Ltd - 8C1553 (base 16) Beijing Memblaze Technology Co Ltd - Building B2,Dongsheng Park, 66 Xixiaokou Road, Haidian -@@ -37526,6 +37496,24 @@ E8EBD3 (base 16) Mellanox Technologies, Inc. - Sunnyvale CA 94085 - US - -+30-2B-DC (hex) Top-Unum Electronics Co., LTD -+302BDC (base 16) Top-Unum Electronics Co., LTD -+ No. 58, Ln. 137, Jianshan Rd., Yingge Dist., -+ New Taipei City 239, Taiwan 239 -+ CN -+ -+90-F7-B2 (hex) New H3C Technologies Co., Ltd -+90F7B2 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+04-E3-1A (hex) Sagemcom Broadband SAS -+04E31A (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ - C0-06-0C (hex) HUAWEI TECHNOLOGIES CO.,LTD - C0060C (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -37544,24 +37532,18 @@ B0A4F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - DONG GUAN GUANG DONG 523860 - CN - --90-F7-B2 (hex) New H3C Technologies Co., Ltd --90F7B2 (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -- --04-E3-1A (hex) Sagemcom Broadband SAS --04E31A (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- - 6C-99-9D (hex) Amazon Technologies Inc. - 6C999D (base 16) Amazon Technologies Inc. - P.O Box 8102 - Reno NV 89507 - US - -+6C-93-08 (hex) IEEE Registration Authority -+6C9308 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ - 7C-6A-60 (hex) China Mobile Group Device Co.,Ltd. - 7C6A60 (base 16) China Mobile Group Device Co.,Ltd. - 32 Xuanwumen West Street,Xicheng District -@@ -37580,14 +37562,20 @@ B0A4F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - York YO30 4RY - GB - --9C-A2-F4 (hex) TP-Link Corporation Limited --9CA2F4 (base 16) TP-Link Corporation Limited -+D8-E2-DF (hex) Microsoft Corporation -+D8E2DF (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ -+1C-61-B4 (hex) TP-Link Corporation Limited -+1C61B4 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road - Tsim Sha Tsui Kowloon 999077 - HK - --1C-61-B4 (hex) TP-Link Corporation Limited --1C61B4 (base 16) TP-Link Corporation Limited -+9C-A2-F4 (hex) TP-Link Corporation Limited -+9CA2F4 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road - Tsim Sha Tsui Kowloon 999077 - HK -@@ -37598,29 +37586,23 @@ B4695F (base 16) TCT mobile ltd - Hui Zhou Guang Dong 516006 - CN - --D8-E2-DF (hex) Microsoft Corporation --D8E2DF (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -- US -- --6C-93-08 (hex) IEEE Registration Authority --6C9308 (base 16) IEEE Registration Authority -- 445 Hoes Lane -- Piscataway NJ 08554 -- US -- - 38-8F-30 (hex) Samsung Electronics Co.,Ltd - 388F30 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong - Gumi Gyeongbuk 730-350 - KR - --24-06-F2 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --2406F2 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -+A0-44-66 (hex) Intellics -+A04466 (base 16) Intellics -+ 697, Pangyo-ro, Bundang-gu -+ Seongnam-si Gyeonggi-do 13511 -+ KR -+ -+44-6D-7F (hex) Amazon Technologies Inc. -+446D7F (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno 89507 -+ US - - 84-C6-92 (hex) Texas Instruments - 84C692 (base 16) Texas Instruments -@@ -37640,40 +37622,10 @@ D8E2DF (base 16) Microsoft Corporation - London E14 5EY - GB - --A0-44-66 (hex) Intellics --A04466 (base 16) Intellics -- 697, Pangyo-ro, Bundang-gu -- Seongnam-si Gyeonggi-do 13511 -- KR -- --CC-66-18 (hex) Adtran Inc --CC6618 (base 16) Adtran Inc -- 901 Explorer Blvd. -- Huntsville AL 35806-2807 -- US -- --C0-C1-70 (hex) Shenzhen SuperElectron Technology Co.,Ltd. --C0C170 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -- 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -- Shenzhen Guangdong 518000 -- CN -- --50-42-89 (hex) zte corporation --504289 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- --30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD --308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD --2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+24-06-F2 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+2406F2 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 - CN - - C0-6D-ED (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -@@ -37682,18 +37634,6 @@ C06DED (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. - Hangzhou Zhejiang 310052 - CN - --44-6D-7F (hex) Amazon Technologies Inc. --446D7F (base 16) Amazon Technologies Inc. -- P.O Box 8102 -- Reno 89507 -- US -- --E0-27-6C (hex) Guangzhou Shiyuan Electronic Technology Company Limited --E0276C (base 16) Guangzhou Shiyuan Electronic Technology Company Limited -- No.6, 4th Yunpu Road, Yunpu industry District -- Guangzhou Guangdong 510530 -- CN -- - 90-93-5A (hex) ARRIS Group, Inc. - 90935A (base 16) ARRIS Group, Inc. - 6450 Sequence Drive -@@ -37712,12 +37652,42 @@ AC8FA9 (base 16) Nokia Solutions and Networks GmbH & Co. KG - Sunnyvale CA 94089 - US - -+C0-C1-70 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+C0C170 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+50-42-89 (hex) zte corporation -+504289 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+44-29-1E (hex) AltoBeam (China) Inc. -+44291E (base 16) AltoBeam (China) Inc. -+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -+ Beijing Beijing 100083 -+ CN -+ - 24-EB-ED (hex) HUAWEI TECHNOLOGIES CO.,LTD - 24EBED (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - -+30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD -+308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD -+2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ - AC-51-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD - AC51AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -37730,22 +37700,16 @@ AC51AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --F8-AD-24 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. --F8AD24 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -- No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -- Chongqing China 401120 -- CN -- --A8-C9-8A (hex) New H3C Technologies Co., Ltd --A8C98A (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -+CC-66-18 (hex) Adtran Inc -+CC6618 (base 16) Adtran Inc -+ 901 Explorer Blvd. -+ Huntsville AL 35806-2807 -+ US - --44-29-1E (hex) AltoBeam (China) Inc. --44291E (base 16) AltoBeam (China) Inc. -- B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -- Beijing Beijing 100083 -+E0-27-6C (hex) Guangzhou Shiyuan Electronic Technology Company Limited -+E0276C (base 16) Guangzhou Shiyuan Electronic Technology Company Limited -+ No.6, 4th Yunpu Road, Yunpu industry District -+ Guangzhou Guangdong 510530 - CN - - DC-8E-95 (hex) Silicon Laboratories -@@ -37754,12 +37718,6 @@ DC8E95 (base 16) Silicon Laboratories - Austin TX 78701 - US - --7C-EF-40 (hex) Nextorage Corporation --7CEF40 (base 16) Nextorage Corporation -- Kawasaki-eki-mae Tower Riverk 9F, 12-1, Ekimaehoncho, Kawasaki-ku -- Kawasaki City Kanagawa 210-0007 -- JP -- - 28-BE-43 (hex) vivo Mobile Communication Co., Ltd. - 28BE43 (base 16) vivo Mobile Communication Co., Ltd. - No.1, vivo Road, Chang'an -@@ -37772,11 +37730,11 @@ DC8E95 (base 16) Silicon Laboratories - DONG GUAN GUANG DONG 523860 - CN - --28-74-F5 (hex) Nokia Solutions and Networks GmbH & Co. KG --2874F5 (base 16) Nokia Solutions and Networks GmbH & Co. KG -- Werinherstrasse 91 -- München Bavaria D-81541 -- DE -+F8-AD-24 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+F8AD24 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN - - B0-1F-8C (hex) Aruba, a Hewlett Packard Enterprise Company - B01F8C (base 16) Aruba, a Hewlett Packard Enterprise Company -@@ -37784,11 +37742,11 @@ B01F8C (base 16) Aruba, a Hewlett Packard Enterprise Company - Santa Clara CA 95054 - US - --C0-E0-1C (hex) IoT Security Group, SL --C0E01C (base 16) IoT Security Group, SL -- Calle Pez Dorado, 27, local 2 -- Torremolinos Malaga 29620 -- ES -+A8-C9-8A (hex) New H3C Technologies Co., Ltd -+A8C98A (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN - - 00-26-04 (hex) WorldCast Systems - 002604 (base 16) WorldCast Systems -@@ -37796,23 +37754,11 @@ C0E01C (base 16) IoT Security Group, SL - Mérignac 33700 - FR - --00-CB-7A (hex) Technicolor CH USA Inc. --00CB7A (base 16) Technicolor CH USA Inc. -- 5030 Sugarloaf Parkway Bldg 6 -- Lawrenceville GA 30044 -- US -- --F8-AB-82 (hex) Xiaomi Communications Co Ltd --F8AB82 (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --EC-30-B3 (hex) Xiaomi Communications Co Ltd --EC30B3 (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -+7C-EF-40 (hex) Nextorage Corporation -+7CEF40 (base 16) Nextorage Corporation -+ Kawasaki-eki-mae Tower Riverk 9F, 12-1, Ekimaehoncho, Kawasaki-ku -+ Kawasaki City Kanagawa 210-0007 -+ JP - - 1C-AF-4A (hex) Samsung Electronics Co.,Ltd - 1CAF4A (base 16) Samsung Electronics Co.,Ltd -@@ -37826,17 +37772,17 @@ C8120B (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - --90-2C-FB (hex) CanTops Co,.Ltd. --902CFB (base 16) CanTops Co,.Ltd. -- A-1002 Digital Empire, 16, Deogyong-daero 1556beon-gil -- Yeongtong-gu Suwon-si, Gyonggi-do 1660 -- KR -+28-74-F5 (hex) Nokia Solutions and Networks GmbH & Co. KG -+2874F5 (base 16) Nokia Solutions and Networks GmbH & Co. KG -+ Werinherstrasse 91 -+ München Bavaria D-81541 -+ DE - --A8-A2-37 (hex) Arcadyan Corporation --A8A237 (base 16) Arcadyan Corporation -- No.8, Sec.2, Guangfu Rd. -- Hsinchu City Hsinchu 30071 -- TW -+C0-E0-1C (hex) IoT Security Group, SL -+C0E01C (base 16) IoT Security Group, SL -+ Calle Pez Dorado, 27, local 2 -+ Torremolinos Malaga 29620 -+ ES - - 00-00-BD (hex) RYOSEI, Ltd. - 0000BD (base 16) RYOSEI, Ltd. -@@ -37844,29 +37790,35 @@ A8A237 (base 16) Arcadyan Corporation - Amagasaki-shi Hyogo 660-0834 - JP - -+00-CB-7A (hex) Technicolor CH USA Inc. -+00CB7A (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ - AC-CC-FC (hex) Amazon Technologies Inc. - ACCCFC (base 16) Amazon Technologies Inc. - P.O Box 8102 - Reno NV 89507 - US - --08-E6-3B (hex) zte corporation --08E63B (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -+90-2C-FB (hex) CanTops Co,.Ltd. -+902CFB (base 16) CanTops Co,.Ltd. -+ A-1002 Digital Empire, 16, Deogyong-daero 1556beon-gil -+ Yeongtong-gu Suwon-si, Gyonggi-do 1660 -+ KR - --88-C1-74 (hex) zte corporation --88C174 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+F8-AB-82 (hex) Xiaomi Communications Co Ltd -+F8AB82 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 - CN - --C8-9E-61 (hex) Lyngsoe Systems LTd --C89E61 (base 16) Lyngsoe Systems LTd -- 101 Simona Dr., Unit 2 -- Bolton Ontario L7E 4E8 -- CA -+EC-30-B3 (hex) Xiaomi Communications Co Ltd -+EC30B3 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN - - 9C-57-BC (hex) eero inc. - 9C57BC (base 16) eero inc. -@@ -37874,12 +37826,6 @@ C89E61 (base 16) Lyngsoe Systems LTd - San Francisco CA 94107 - US - --2C-82-17 (hex) Apple, Inc. --2C8217 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- - 14-2D-4D (hex) Apple, Inc. - 142D4D (base 16) Apple, Inc. - 1 Infinite Loop -@@ -37898,6 +37844,12 @@ B8211C (base 16) Apple, Inc. - Cupertino CA 95014 - US - -+B0-3F-64 (hex) Apple, Inc. -+B03F64 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - D4-5A-3F (hex) Juniper Networks - D45A3F (base 16) Juniper Networks - 1133 Innovation Way -@@ -37910,35 +37862,35 @@ E8DC6C (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --48-B4-C3 (hex) Aruba, a Hewlett Packard Enterprise Company --48B4C3 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -+A8-A2-37 (hex) Arcadyan Corporation -+A8A237 (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW - --B0-3F-64 (hex) Apple, Inc. --B03F64 (base 16) Apple, Inc. -+2C-82-17 (hex) Apple, Inc. -+2C8217 (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --68-A7-B4 (hex) Honor Device Co., Ltd. --68A7B4 (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -+08-E6-3B (hex) zte corporation -+08E63B (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - --80-3C-20 (hex) HUAWEI TECHNOLOGIES CO.,LTD --803C20 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+88-C1-74 (hex) zte corporation -+88C174 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - --A4-DD-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD --A4DD58 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -+C8-9E-61 (hex) Lyngsoe Systems LTd -+C89E61 (base 16) Lyngsoe Systems LTd -+ 101 Simona Dr., Unit 2 -+ Bolton Ontario L7E 4E8 -+ CA - - E0-28-B1 (hex) Shenzhen Skyworth Digital Technology CO., Ltd - E028B1 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -@@ -37958,6 +37910,12 @@ C08D51 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - -+48-B4-C3 (hex) Aruba, a Hewlett Packard Enterprise Company -+48B4C3 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ - 6C-15-24 (hex) IEEE Registration Authority - 6C1524 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -37970,12 +37928,6 @@ C08D51 (base 16) Amazon Technologies Inc. - Kanata Ontario K2K 2E6 - CA - --00-12-93 (hex) ABB Switzerland Ltd. --001293 (base 16) ABB Switzerland Ltd. -- Via Luserte Sud 9 Quartino -- Quartino 6572 -- CH -- - C0-E9-11 (hex) Private - C0E911 (base 16) Private - -@@ -37991,28 +37943,28 @@ C0E911 (base 16) Private - London SW1Y 4AR - GB - --24-2C-FE (hex) Zhejiang Tmall Technology Co., Ltd. --242CFE (base 16) Zhejiang Tmall Technology Co., Ltd. -- No.969 Wenyi West Road, Wuchang Street, Yuhang District -- Hangzhou Zhejiang 310024 -+68-A7-B4 (hex) Honor Device Co., Ltd. -+68A7B4 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 - CN - --A0-42-D1 (hex) Huawei Device Co., Ltd. --A042D1 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+80-3C-20 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+803C20 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --2C-DC-78 (hex) Descartes Systems (USA) LLC --2CDC78 (base 16) Descartes Systems (USA) LLC -- 2030 Powers Ferry Road SE -- Atlanta GA 303339 -- US -+A4-DD-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+A4DD58 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN - --58-87-9F (hex) Huawei Device Co., Ltd. --58879F (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+24-2C-FE (hex) Zhejiang Tmall Technology Co., Ltd. -+242CFE (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 - CN - - E8-D8-7E (hex) Amazon Technologies Inc. -@@ -38021,47 +37973,59 @@ E8D87E (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - -+00-12-93 (hex) ABB Switzerland Ltd. -+001293 (base 16) ABB Switzerland Ltd. -+ Via Luserte Sud 9 Quartino -+ Quartino 6572 -+ CH -+ - 9C-1F-CA (hex) Hangzhou AlmightyDigit Technology Co., Ltd - 9C1FCA (base 16) Hangzhou AlmightyDigit Technology Co., Ltd - Room A0041, 10 / F, building 1, Haizhi center, Cangqian street, Yuhang District - Hangzhou Zhejiang 310000 - CN - --84-70-D7 (hex) eero inc. --8470D7 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -+2C-DC-78 (hex) Descartes Systems (USA) LLC -+2CDC78 (base 16) Descartes Systems (USA) LLC -+ 2030 Powers Ferry Road SE -+ Atlanta GA 303339 - US - -+A0-42-D1 (hex) Huawei Device Co., Ltd. -+A042D1 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+58-87-9F (hex) Huawei Device Co., Ltd. -+58879F (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ - E0-6C-4E (hex) Shenzhen TINNO Mobile Technology Corp. - E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili - Nanshan District, Shenzhen PRC 518053 - CN - --58-1D-D8 (hex) Sagemcom Broadband SAS --581DD8 (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- - 80-6A-B0 (hex) Shenzhen TINNO Mobile Technology Corp. - 806AB0 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili - Nanshan District, Shenzhen PRC 518053 - CN - --F4-B3-B1 (hex) Silicon Laboratories --F4B3B1 (base 16) Silicon Laboratories -- 400 West Cesar Chavez Street -- Austin TX 78701 -+84-70-D7 (hex) eero inc. -+8470D7 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 - US - --04-69-8F (hex) Juniper Networks --04698F (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -+10-B2-32 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+10B232 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+ No.218 Qianwangang Road -+ Qingdao Shangdong 266510 -+ CN - - 14-9B-F3 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - 149BF3 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -@@ -38075,11 +38039,11 @@ F4B3B1 (base 16) Silicon Laboratories - Wuhan Hubei 430074 - CN - --10-B2-32 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd. --10B232 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd. -- No.218 Qianwangang Road -- Qingdao Shangdong 266510 -- CN -+F4-B3-B1 (hex) Silicon Laboratories -+F4B3B1 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US - - B8-50-D8 (hex) Beijing Xiaomi Mobile Software Co., Ltd - B850D8 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -@@ -38087,6 +38051,36 @@ B850D8 (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Beijing Beijing 100085 - CN - -+58-1D-D8 (hex) Sagemcom Broadband SAS -+581DD8 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ -+04-69-8F (hex) Juniper Networks -+04698F (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+5C-53-C3 (hex) Ubee Interactive Co., Limited -+5C53C3 (base 16) Ubee Interactive Co., Limited -+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -+ North Point 00000 -+ HK -+ -+AC-5A-F0 (hex) LG Electronics -+AC5AF0 (base 16) LG Electronics -+ 222 LG-ro, JINWI-MYEON -+ Pyeongtaek-si Gyeonggi-do 451-713 -+ KR -+ -+EC-A6-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD -+ECA62F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ - C0-9F-51 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - C09F51 (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -@@ -38105,11 +38099,17 @@ A0CDF3 (base 16) Murata Manufacturing Co., Ltd. - Nagaokakyo-shi Kyoto 617-8555 - JP - --B4-8A-0A (hex) Espressif Inc. --B48A0A (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -+24-29-34 (hex) Google, Inc. -+242934 (base 16) Google, Inc. -+ 1600 Amphitheatre Parkway -+ Mountain View CA 94043 -+ US -+ -+38-0A-4F (hex) PRACHI ENTERPRISES -+380A4F (base 16) PRACHI ENTERPRISES -+ B-141, 2nd FLOOR SECTOR-6 NOIDA -+ NOIDA UTTARPRADESH 201301 -+ IN - - C8-3A-1B (hex) Toshiba TEC Corporation Inc - C83A1B (base 16) Toshiba TEC Corporation Inc -@@ -38117,23 +38117,29 @@ C83A1B (base 16) Toshiba TEC Corporation Inc - Shinagawa-ku Tokyo 141-8664 - JP - --EC-A6-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD --ECA62F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+B4-8A-0A (hex) Espressif Inc. -+B48A0A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 - CN - --AC-5A-F0 (hex) LG Electronics --AC5AF0 (base 16) LG Electronics -- 222 LG-ro, JINWI-MYEON -- Pyeongtaek-si Gyeonggi-do 451-713 -+80-19-70 (hex) Samsung Electronics Co.,Ltd -+801970 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 - KR - --5C-53-C3 (hex) Ubee Interactive Co., Limited --5C53C3 (base 16) Ubee Interactive Co., Limited -- Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -- North Point 00000 -- HK -+E0-F7-28 (hex) Amazon Technologies Inc. -+E0F728 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+1C-0E-D3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+1C0ED3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN - - 24-32-AE (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. - 2432AE (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -@@ -38165,12 +38171,6 @@ AC936A (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - --1C-0E-D3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --1C0ED3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -- - 7C-4C-A5 (hex) SKY UK LIMITED - 7C4CA5 (base 16) SKY UK LIMITED - 130 Kings Road -@@ -38195,41 +38195,17 @@ C03E0F (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - --24-29-34 (hex) Google, Inc. --242934 (base 16) Google, Inc. -- 1600 Amphitheatre Parkway -- Mountain View CA 94043 -- US -- --38-0A-4F (hex) PRACHI ENTERPRISES --380A4F (base 16) PRACHI ENTERPRISES -- B-141, 2nd FLOOR SECTOR-6 NOIDA -- NOIDA UTTARPRADESH 201301 -- IN -- --80-19-70 (hex) Samsung Electronics Co.,Ltd --801970 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- --E0-F7-28 (hex) Amazon Technologies Inc. --E0F728 (base 16) Amazon Technologies Inc. -- P.O Box 8102 -- Reno NV 89507 -- US -- --B8-FB-AF (hex) Xiamen IPRT Technology CO.,LTD --B8FBAF (base 16) Xiamen IPRT Technology CO.,LTD -- 3~5Floor,No.101,Huili Industry Park,Meixi Road,Tongan District,Xiamen,China. -- xiamen fujian 361000 -- CN -+D0-58-FC (hex) SKY UK LIMITED -+D058FC (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB - --34-85-18 (hex) Espressif Inc. --348518 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -+90-02-18 (hex) SKY UK LIMITED -+900218 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB - - D4-DA-CD (hex) SKY UK LIMITED - D4DACD (base 16) SKY UK LIMITED -@@ -38255,6 +38231,66 @@ B04530 (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - -+A4-AE-11 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE11 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+7C-DE-78 (hex) New H3C Technologies Co., Ltd -+7CDE78 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+3C-E0-64 (hex) Texas Instruments -+3CE064 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+E0-92-8F (hex) Texas Instruments -+E0928F (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+CC-03-7B (hex) Texas Instruments -+CC037B (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+58-1C-F8 (hex) Intel Corporate -+581CF8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+AC-19-8E (hex) Intel Corporate -+AC198E (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+C8-5E-A9 (hex) Intel Corporate -+C85EA9 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+B8-FB-AF (hex) Xiamen IPRT Technology CO.,LTD -+B8FBAF (base 16) Xiamen IPRT Technology CO.,LTD -+ 3~5Floor,No.101,Huili Industry Park,Meixi Road,Tongan District,Xiamen,China. -+ xiamen fujian 361000 -+ CN -+ -+34-85-18 (hex) Espressif Inc. -+348518 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ - EC-E6-A2 (hex) Fiberhome Telecommunication Technologies Co.,LTD - ECE6A2 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - No.5 DongXin Road -@@ -38273,24 +38309,12 @@ E02E0B (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --A4-AE-11 (hex) Hon Hai Precision Industry Co., Ltd. --A4AE11 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -+CC-29-BD (hex) zte corporation -+CC29BD (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - --D0-58-FC (hex) SKY UK LIMITED --D058FC (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- --90-02-18 (hex) SKY UK LIMITED --900218 (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - 38-5C-FB (hex) Silicon Laboratories - 385CFB (base 16) Silicon Laboratories - 400 West Cesar Chavez Street -@@ -38303,65 +38327,23 @@ C43D1A (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --BC-F8-8B (hex) zte corporation --BCF88B (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- - 68-53-9D (hex) EM Microelectronic - 68539D (base 16) EM Microelectronic - Rue des Sors 3 - Marin-Epagnier Neuchatel 2074 - CH - --E4-65-64 (hex) SHENZHEN KTC TECHNOLOGY CO.,LTD --E46564 (base 16) SHENZHEN KTC TECHNOLOGY CO.,LTD -- Add: NO.4023, Wuhe Road, Bantian, Longgang District, Shenzhen, China -- SHEN ZHEN GUANG DONG 518100 -- CN -- - C8-BF-4C (hex) Beijing Xiaomi Mobile Software Co., Ltd - C8BF4C (base 16) Beijing Xiaomi Mobile Software Co., Ltd - The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District - Beijing Beijing 100085 - CN - --58-1C-F8 (hex) Intel Corporate --581CF8 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --AC-19-8E (hex) Intel Corporate --AC198E (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --C8-5E-A9 (hex) Intel Corporate --C85EA9 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --3C-E0-64 (hex) Texas Instruments --3CE064 (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --E0-92-8F (hex) Texas Instruments --E0928F (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --CC-03-7B (hex) Texas Instruments --CC037B (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -+E4-65-64 (hex) SHENZHEN KTC TECHNOLOGY CO.,LTD -+E46564 (base 16) SHENZHEN KTC TECHNOLOGY CO.,LTD -+ Add: NO.4023, Wuhe Road, Bantian, Longgang District, Shenzhen, China -+ SHEN ZHEN GUANG DONG 518100 -+ CN - - E0-51-D8 (hex) China Dragon Technology Limited - E051D8 (base 16) China Dragon Technology Limited -@@ -38369,17 +38351,17 @@ E051D8 (base 16) China Dragon Technology Limited - Shenzhen Guangdong 518104 - CN - --CC-29-BD (hex) zte corporation --CC29BD (base 16) zte corporation -+BC-F8-8B (hex) zte corporation -+BCF88B (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China - shenzhen guangdong 518057 - CN - --7C-DE-78 (hex) New H3C Technologies Co., Ltd --7CDE78 (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -+5C-60-BA (hex) HP Inc. -+5C60BA (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 -+ US - - E0-EF-02 (hex) Chengdu Quanjing Intelligent Technology Co.,Ltd - E0EF02 (base 16) Chengdu Quanjing Intelligent Technology Co.,Ltd -@@ -38393,18 +38375,6 @@ E0EF02 (base 16) Chengdu Quanjing Intelligent Technology Co.,Ltd - Hong Kong Hong Kong 999077 - HK - --20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company --209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -- --E8-CC-8C (hex) Chengdu Jiarui Hualian Communication Technology Co --E8CC8C (base 16) Chengdu Jiarui Hualian Communication Technology Co -- 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -- Chengdu Sichuan 610000 -- CN -- - A8-AB-B5 (hex) Apple, Inc. - A8ABB5 (base 16) Apple, Inc. - 1 Infinite Loop -@@ -38423,11 +38393,29 @@ A8ABB5 (base 16) Apple, Inc. - Kanata Ontario K2K 2E6 - CA - --B0-67-B5 (hex) Apple, Inc. --B067B5 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+74-80-3F (hex) Renesas Electronics (Penang) Sdn. Bhd. -+74803F (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY -+ -+04-43-FD (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+0443FD (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+A4-89-7E (hex) Guangzhou Yuhong Technology Co.,Ltd. -+A4897E (base 16) Guangzhou Yuhong Technology Co.,Ltd. -+ Room 402, No. 11 Software Road, Tianhe District, Guangzhou -+ Guangzhou Guangdong 510640 -+ CN -+ -+E8-CC-8C (hex) Chengdu Jiarui Hualian Communication Technology Co -+E8CC8C (base 16) Chengdu Jiarui Hualian Communication Technology Co -+ 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -+ Chengdu Sichuan 610000 -+ CN - - 5C-52-84 (hex) Apple, Inc. - 5C5284 (base 16) Apple, Inc. -@@ -38447,17 +38435,11 @@ C0956D (base 16) Apple, Inc. - Cupertino CA 95014 - US - --04-43-FD (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --0443FD (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -- --74-80-3F (hex) Renesas Electronics (Penang) Sdn. Bhd. --74803F (base 16) Renesas Electronics (Penang) Sdn. Bhd. -- Phase 3, Bayan Lepas FIZ -- Bayan Lepas Penang 11900 -- MY -+20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company -+209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US - - EC-A1-38 (hex) Amazon Technologies Inc. - ECA138 (base 16) Amazon Technologies Inc. -@@ -38465,24 +38447,90 @@ ECA138 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --5C-60-BA (hex) HP Inc. --5C60BA (base 16) HP Inc. -- 10300 Energy Dr -- Spring TX 77389 -+B0-67-B5 (hex) Apple, Inc. -+B067B5 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 - US - --A4-89-7E (hex) Guangzhou Yuhong Technology Co.,Ltd. --A4897E (base 16) Guangzhou Yuhong Technology Co.,Ltd. -- Room 402, No. 11 Software Road, Tianhe District, Guangzhou -- Guangzhou Guangdong 510640 -- CN -- - 90-0A-62 (hex) Inventus Power Eletronica do Brasil LTDA - 900A62 (base 16) Inventus Power Eletronica do Brasil LTDA - Av Buriti, 4285 Distrito Industrial - Manaus Amazonas 69075000 - BR - -+70-54-B4 (hex) Vestel Elektronik San ve Tic. A.S. -+7054B4 (base 16) Vestel Elektronik San ve Tic. A.S. -+ Organize san -+ Manisa Turket 45030 -+ TR -+ -+04-BF-1B (hex) Dell Inc. -+04BF1B (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ -+08-1A-1E (hex) Shenzhen iComm Semiconductor CO.,LTD -+081A1E (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+50-5F-B5 (hex) ASKEY COMPUTER CORP -+505FB5 (base 16) ASKEY COMPUTER CORP -+ 10F, NO. 119, JIANKANG RD., ZHONGHE DIST. -+ NEW TAIPEI 235 -+ TW -+ -+88-DE-7C (hex) ASKEY COMPUTER CORP -+88DE7C (base 16) ASKEY COMPUTER CORP -+ 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -+ NEW TAIPEI CITY 23585 -+ TW -+ -+AC-31-84 (hex) Huawei Device Co., Ltd. -+AC3184 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+50-3F-50 (hex) Huawei Device Co., Ltd. -+503F50 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+48-1C-B9 (hex) SZ DJI TECHNOLOGY CO.,LTD -+481CB9 (base 16) SZ DJI TECHNOLOGY CO.,LTD -+ 6/F,HKUST SZ IER Bldg,9 Yuexing 1st Rd -+ shenzhen guangdong 518057 -+ CN -+ -+B8-20-8E (hex) Panasonic Connect Co., Ltd. -+B8208E (base 16) Panasonic Connect Co., Ltd. -+ 4-1-62 Minoshima, Hakata-ku -+ Fukuoka-shi Fukuoka 812-8531 -+ JP -+ -+3C-A7-AE (hex) zte corporation -+3CA7AE (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+80-64-6F (hex) Espressif Inc. -+80646F (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+04-57-47 (hex) GoPro -+045747 (base 16) GoPro -+ 3000 Clearview Way -+ San Mateo CA 94402 -+ US -+ - 9C-FF-C2 (hex) AVI Systems GmbH - 9CFFC2 (base 16) AVI Systems GmbH - Dr. Franz Wilhelmstraße 2A -@@ -40073,12 +40121,6 @@ B8A175 (base 16) Roku, Inc. - Saratoga CA 95070 - US - --CC-D3-C1 (hex) Vestel Elektronik San ve Tic. A.Ş. --CCD3C1 (base 16) Vestel Elektronik San ve Tic. A.Ş. -- Organize san -- Manisa Turket 45030 -- TR -- - 0C-D0-F8 (hex) Cisco Systems, Inc - 0CD0F8 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -40235,12 +40277,6 @@ A45046 (base 16) Xiaomi Communications Co Ltd - NO.68, Qinghe Middle Street Haidian District, Beijing 100085 - CN - --1C-24-CD (hex) Askey Computer Corp. --1C24CD (base 16) Askey Computer Corp. -- 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -- NEW TAIPEI CITY 23585 -- TW -- - 00-7C-2D (hex) Samsung Electronics Co.,Ltd - 007C2D (base 16) Samsung Electronics Co.,Ltd - 129, Samsung-ro, Youngtongl-Gu -@@ -40616,12 +40652,6 @@ E43493 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dania Beach FL 33004 - US - --4C-36-4E (hex) Panasonic Corporation Connected Solutions Company --4C364E (base 16) Panasonic Corporation Connected Solutions Company -- 4-1-62 Minoshima, Hakata-ku -- Fukuoka-shi Fukuoka 812-8531 -- JP -- - BC-A5-8B (hex) Samsung Electronics Co.,Ltd - BCA58B (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -72272,12 +72302,6 @@ AC78D1 (base 16) Juniper Networks - Sunnyvale CA 94089 - US - --EC-BE-5F (hex) Vestel Elektronik San ve Tic. A.Ş. --ECBE5F (base 16) Vestel Elektronik San ve Tic. A.Ş. -- Organize san -- Manisa Turket 45030 -- TR -- - A4-42-3B (hex) Intel Corporate - A4423B (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -75428,24 +75452,6 @@ D850A1 (base 16) Hunan Danuo Technology Co.,LTD - Hong Kong Hong Kong 999077 - HK - --7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. --7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- --00-C3-0A (hex) Xiaomi Communications Co Ltd --00C30A (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --88-52-EB (hex) Xiaomi Communications Co Ltd --8852EB (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- - B4-28-75 (hex) Futecho Solutions Private Limited - B42875 (base 16) Futecho Solutions Private Limited - 504, Commercial Complex, Savitri Cinema Compound, GK2 -@@ -75464,6 +75470,24 @@ B42875 (base 16) Futecho Solutions Private Limited - San Francisco CA 94107 - US - -+00-C3-0A (hex) Xiaomi Communications Co Ltd -+00C30A (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+88-52-EB (hex) Xiaomi Communications Co Ltd -+8852EB (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. -+7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -+ Shenzhen guangdong 518053 -+ CN -+ - 00-A0-A2 (hex) B810 S.R.L. - 00A0A2 (base 16) B810 S.R.L. - Via E. Lazzaretti 2/1 -@@ -75536,12 +75560,6 @@ DC9A7D (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD - Dongguan 523808 - CN - --30-CB-36 (hex) Belden Singapore Pte. Ltd. --30CB36 (base 16) Belden Singapore Pte. Ltd. -- 151 Lorong Chuan #05-01 New Tech Park Singapore -- Singapore 556741 -- SG -- - B8-3F-D2 (hex) Mellanox Technologies, Inc. - B83FD2 (base 16) Mellanox Technologies, Inc. - 350 Oakmead Parkway, Suite 100 -@@ -75554,6 +75572,12 @@ B83FD2 (base 16) Mellanox Technologies, Inc. - Chiyoda-ku Tokyo 100-0004 - JP - -+30-CB-36 (hex) Belden Singapore Pte. Ltd. -+30CB36 (base 16) Belden Singapore Pte. Ltd. -+ 151 Lorong Chuan #05-01 New Tech Park Singapore -+ Singapore 556741 -+ SG -+ - 8C-17-59 (hex) Intel Corporate - 8C1759 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -75566,29 +75590,11 @@ B83FD2 (base 16) Mellanox Technologies, Inc. - San Jose CA 95131 - US - --6C-A4-01 (hex) essensys plc --6CA401 (base 16) essensys plc -- Aldgate Tower, Leman Street -- London E1 8FA -- GB -- --34-92-C2 (hex) Square Route Co., Ltd. --3492C2 (base 16) Square Route Co., Ltd. -- Area-Shinagawa 13F, 1-9-36, Konan, Minato-ku -- Tokyo Tokyo 108-0075 -- JP -- --34-BD-20 (hex) Hangzhou Hikrobot Technology Co., Ltd. --34BD20 (base 16) Hangzhou Hikrobot Technology Co., Ltd. -- Room 304, Unit B, Building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang -- Hangzhou 310052 -- CN -- --64-C2-69 (hex) eero inc. --64C269 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -+BC-6E-6D (hex) EM Microelectronic -+BC6E6D (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH - - B0-4A-6A (hex) Samsung Electronics Co.,Ltd - B04A6A (base 16) Samsung Electronics Co.,Ltd -@@ -75608,30 +75614,48 @@ A8798D (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - -+34-92-C2 (hex) Square Route Co., Ltd. -+3492C2 (base 16) Square Route Co., Ltd. -+ Area-Shinagawa 13F, 1-9-36, Konan, Minato-ku -+ Tokyo Tokyo 108-0075 -+ JP -+ - 28-3D-C2 (hex) Samsung Electronics Co.,Ltd - 283DC2 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong - Gumi Gyeongbuk 730-350 - KR - --BC-6E-6D (hex) EM Microelectronic --BC6E6D (base 16) EM Microelectronic -- Rue des Sors 3 -- Marin-Epagnier Neuchatel 2074 -- CH -- - 00-D4-9E (hex) Intel Corporate - 00D49E (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 - Kulim Kedah 09000 - MY - -+6C-A4-01 (hex) essensys plc -+6CA401 (base 16) essensys plc -+ Aldgate Tower, Leman Street -+ London E1 8FA -+ GB -+ - CC-F3-05 (hex) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD - CCF305 (base 16) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD - Second floor, Building A, FengHangAvenue, Hangcheng Street, Bao'an District - Shenzhen Guangdong 518126 - CN - -+34-BD-20 (hex) Hangzhou Hikrobot Technology Co., Ltd. -+34BD20 (base 16) Hangzhou Hikrobot Technology Co., Ltd. -+ Room 304, Unit B, Building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang -+ Hangzhou 310052 -+ CN -+ -+64-C2-69 (hex) eero inc. -+64C269 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ - AC-2A-A1 (hex) Cisco Systems, Inc - AC2AA1 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -75650,16 +75674,34 @@ F8E94F (base 16) Cisco Systems, Inc - Kulim Kedah 09000 - MY - --E0-6C-C5 (hex) Huawei Device Co., Ltd. --E06CC5 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+B8-D6-1A (hex) Espressif Inc. -+B8D61A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 - CN - --30-96-3B (hex) Huawei Device Co., Ltd. --30963B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+BC-F4-D4 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+BCF4D4 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+D8-9C-8E (hex) Comcast Cable Corporation -+D89C8E (base 16) Comcast Cable Corporation -+ 1800 Arch Street -+ Philadelphia PA 19103 -+ US -+ -+74-56-3C (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. -+74563C (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. -+ Pin-Jen City, Taoyuan, Taiwan, R.O.C. -+ Pin-Jen Taoyuan 324 -+ TW -+ -+EC-55-1C (hex) HUAWEI TECHNOLOGIES CO.,LTD -+EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - - 8C-6B-DB (hex) Huawei Device Co., Ltd. -@@ -75686,6 +75728,24 @@ E06CC5 (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - -+E0-6C-C5 (hex) Huawei Device Co., Ltd. -+E06CC5 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+30-96-3B (hex) Huawei Device Co., Ltd. -+30963B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD -+90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ - 98-59-7A (hex) Intel Corporate - 98597A (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -75698,11 +75758,11 @@ E06CC5 (base 16) Huawei Device Co., Ltd. - Kulim Kedah 09000 - MY - --B8-D6-1A (hex) Espressif Inc. --B8D61A (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -+B4-83-51 (hex) Intel Corporate -+B48351 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - - 00-25-CA (hex) Laird Connectivity - 0025CA (base 16) Laird Connectivity -@@ -75710,66 +75770,18 @@ B8D61A (base 16) Espressif Inc. - Cedarburg WI 53012 - US - --90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD --90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --74-56-3C (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. --74563C (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. -- Pin-Jen City, Taoyuan, Taiwan, R.O.C. -- Pin-Jen Taoyuan 324 -- TW -- --D8-9C-8E (hex) Comcast Cable Corporation --D89C8E (base 16) Comcast Cable Corporation -- 1800 Arch Street -- Philadelphia PA 19103 -- US -- - 04-B9-7D (hex) AiVIS Co., Itd. - 04B97D (base 16) AiVIS Co., Itd. - 112, Dumipo-ro, Jung-gu - Incheon Incheon 22394 - KR - --BC-F4-D4 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. --BCF4D4 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -- Nanning Guangxi 530007 -- CN -- - C4-C0-63 (hex) New H3C Technologies Co., Ltd - C4C063 (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District - Hangzhou Zhejiang 310052 - CN - --EC-55-1C (hex) HUAWEI TECHNOLOGIES CO.,LTD --EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- --E0-79-8D (hex) Silicon Laboratories --E0798D (base 16) Silicon Laboratories -- 400 West Cesar Chavez Street -- Austin TX 78701 -- US -- --B4-83-51 (hex) Intel Corporate --B48351 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --34-AD-61 (hex) CELESTICA INC. --34AD61 (base 16) CELESTICA INC. -- 1900-5140 Yonge Street PO Box 42 -- Toronto Ontario M2N 6L7 -- CA -- - 54-43-B2 (hex) Espressif Inc. - 5443B2 (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -75782,12 +75794,18 @@ C0DD8A (base 16) Facebook Technologies, LLC - Menlo Park CA 94025 - US - --AC-D3-1D (hex) Cisco Meraki --ACD31D (base 16) Cisco Meraki -- 500 Terry A. Francois Blvd -- San Francisco 94158 -+E0-79-8D (hex) Silicon Laboratories -+E0798D (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 - US - -+34-AD-61 (hex) CELESTICA INC. -+34AD61 (base 16) CELESTICA INC. -+ 1900-5140 Yonge Street PO Box 42 -+ Toronto Ontario M2N 6L7 -+ CA -+ - 10-96-1A (hex) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. - 10961A (base 16) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. - 9F,BLOCK A,GARDEN CITY DIGITAL BUILDING,NO.1079 NANHAI ROAD,NANSHAN DISTRICT -@@ -75800,18 +75818,6 @@ BCE9E2 (base 16) Brocade Communications Systems LLC - San Jose CA 95131 - US - --00-18-48 (hex) Vecima Networks Inc. --001848 (base 16) Vecima Networks Inc. -- 150 Cardinal Place -- Saskatoon SK S7L 6H7 -- CA -- --2C-55-3C (hex) Vecima Networks Inc. --2C553C (base 16) Vecima Networks Inc. -- 150 Cardinal Place -- Saskatoon SK S7L 6H7 -- CA -- - AC-BF-71 (hex) Bose Corporation - ACBF71 (base 16) Bose Corporation - The Mountain -@@ -75824,6 +75830,12 @@ ACBF71 (base 16) Bose Corporation - Piscataway NJ 08554 - US - -+AC-D3-1D (hex) Cisco Meraki -+ACD31D (base 16) Cisco Meraki -+ 500 Terry A. Francois Blvd -+ San Francisco 94158 -+ US -+ - 74-84-69 (hex) Nintendo Co.,Ltd - 748469 (base 16) Nintendo Co.,Ltd - 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU -@@ -75866,6 +75878,18 @@ B41974 (base 16) Apple, Inc. - Shenzhen Guangdong 518117 - CN - -+00-18-48 (hex) Vecima Networks Inc. -+001848 (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ -+2C-55-3C (hex) Vecima Networks Inc. -+2C553C (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ - 60-95-BD (hex) Apple, Inc. - 6095BD (base 16) Apple, Inc. - 1 Infinite Loop -@@ -75914,30 +75938,24 @@ D0989C (base 16) ConMet - Vancouver WA 98661 - US - --1C-A4-10 (hex) Amlogic, Inc. --1CA410 (base 16) Amlogic, Inc. -- 2518 Mission College Blvd, Suite 120 -- Santa Clara CA 95054 -- US -- - 24-26-D6 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 2426D6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --70-A6-BD (hex) Honor Device Co., Ltd. --70A6BD (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -- CN -- - EC-81-9C (hex) HUAWEI TECHNOLOGIES CO.,LTD - EC819C (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - -+1C-A4-10 (hex) Amlogic, Inc. -+1CA410 (base 16) Amlogic, Inc. -+ 2518 Mission College Blvd, Suite 120 -+ Santa Clara CA 95054 -+ US -+ - 20-0B-16 (hex) Texas Instruments - 200B16 (base 16) Texas Instruments - 12500 TI Blvd -@@ -75962,23 +75980,23 @@ F85548 (base 16) Texas Instruments - Dallas TX 75243 - US - -+70-A6-BD (hex) Honor Device Co., Ltd. -+70A6BD (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ - 4C-9E-6C (hex) BROADEX TECHNOLOGIES CO.LTD - 4C9E6C (base 16) BROADEX TECHNOLOGIES CO.LTD - NO.306 YATAI ROAD - JIAXING ZHEJIANG 314006 - CN - --AC-A3-2F (hex) Solidigm Technology --ACA32F (base 16) Solidigm Technology -- 1921 Corporate Center Circle, Suite 3B -- Longmont 80501 -- US -- --AC-71-2E (hex) Fortinet, Inc. --AC712E (base 16) Fortinet, Inc. -- 899 Kifer Road -- Sunnyvale 94086 -- US -+54-2F-04 (hex) Shanghai Longcheer Technology Co., Ltd. -+542F04 (base 16) Shanghai Longcheer Technology Co., Ltd. -+ Bldg 1,No.401,Caobao RD,Xuhui Dist -+ Shanghai 200233 -+ CN - - E4-B6-33 (hex) Wuxi Stars Microsystem Technology Co., Ltd - E4B633 (base 16) Wuxi Stars Microsystem Technology Co., Ltd -@@ -75998,16 +76016,10 @@ E4B633 (base 16) Wuxi Stars Microsystem Technology Co., Ltd - Dongguan Guangdong 523808 - CN - --98-D9-3D (hex) Demant Enterprise A/S --98D93D (base 16) Demant Enterprise A/S -- Kongebakken 9 -- Smorum 2765 -- DK -- --B4-A6-78 (hex) Zhejiang Tmall Technology Co., Ltd. --B4A678 (base 16) Zhejiang Tmall Technology Co., Ltd. -- No.969 Wenyi West Road, Wuchang Street, Yuhang District -- Hangzhou Zhejiang 310024 -+54-E1-5B (hex) Huawei Device Co., Ltd. -+54E15B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - - AC-C4-BD (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -@@ -76016,17 +76028,11 @@ ACC4BD (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DONG GUAN GUANG DONG 523860 - CN - --54-E1-5B (hex) Huawei Device Co., Ltd. --54E15B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --54-2F-04 (hex) Shanghai Longcheer Technology Co., Ltd. --542F04 (base 16) Shanghai Longcheer Technology Co., Ltd. -- Bldg 1,No.401,Caobao RD,Xuhui Dist -- Shanghai 200233 -- CN -+AC-A3-2F (hex) Solidigm Technology -+ACA32F (base 16) Solidigm Technology -+ 1921 Corporate Center Circle, Suite 3B -+ Longmont 80501 -+ US - - C4-A1-0E (hex) IEEE Registration Authority - C4A10E (base 16) IEEE Registration Authority -@@ -76034,6 +76040,12 @@ C4A10E (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - -+AC-71-2E (hex) Fortinet, Inc. -+AC712E (base 16) Fortinet, Inc. -+ 899 Kifer Road -+ Sunnyvale 94086 -+ US -+ - 0C-EC-84 (hex) Shenzhen TINNO Mobile Technology Corp. - 0CEC84 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -76064,6 +76076,18 @@ B43939 (base 16) Shenzhen TINNO Mobile Technology Corp. - HongKong 999077 - HK - -+98-D9-3D (hex) Demant Enterprise A/S -+98D93D (base 16) Demant Enterprise A/S -+ Kongebakken 9 -+ Smorum 2765 -+ DK -+ -+B4-A6-78 (hex) Zhejiang Tmall Technology Co., Ltd. -+B4A678 (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 -+ CN -+ - 88-F2-BD (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. - 88F2BD (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. - Midea Global Innovation Center,Beijiao Town,Shunde -@@ -76082,12 +76106,6 @@ A0F895 (base 16) Shenzhen TINNO Mobile Technology Corp. - NEW DELHI DELHI 110015 - IN - --70-AC-08 (hex) Silicon Laboratories --70AC08 (base 16) Silicon Laboratories -- 400 West Cesar Chavez Street -- Austin TX 78701 -- US -- - 2C-07-F6 (hex) SKG Health Technologies Co., Ltd. - 2C07F6 (base 16) SKG Health Technologies Co., Ltd. - 23A Floor,Building 3,Zhongke R&D Park,No.009,Gaoxin South 1st Road, High-tech Zone Community,Yuehai street, Nanshan District,Shenzhen City,Guangdong Province,P.R.China -@@ -76106,24 +76124,6 @@ A47EFA (base 16) Withings - Issy-les-Moulineaux 92130 - FR - --3C-26-E4 (hex) Cisco Systems, Inc --3C26E4 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --38-91-B7 (hex) Cisco Systems, Inc --3891B7 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --34-5D-A8 (hex) Cisco Systems, Inc --345DA8 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- - 78-91-DE (hex) Guangdong ACIGA Science&Technology Co.,Ltd - 7891DE (base 16) Guangdong ACIGA Science&Technology Co.,Ltd - L203 Biguiyuan International Club, Beijiao Town, Shunde District -@@ -76136,6 +76136,12 @@ E0806B (base 16) Xiaomi Communications Co Ltd - Beijing Haidian District 100085 - CN - -+70-AC-08 (hex) Silicon Laboratories -+70AC08 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ - 70-50-E7 (hex) IEEE Registration Authority - 7050E7 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -76160,6 +76166,24 @@ B0E45C (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - -+3C-26-E4 (hex) Cisco Systems, Inc -+3C26E4 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+38-91-B7 (hex) Cisco Systems, Inc -+3891B7 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+34-5D-A8 (hex) Cisco Systems, Inc -+345DA8 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ - BC-4C-A0 (hex) HUAWEI TECHNOLOGIES CO.,LTD - BC4CA0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -76172,18 +76196,6 @@ BC4CA0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --C4-12-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD --C412EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- --6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd --6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -- CN -- - 68-7F-F0 (hex) TP-Link Corporation Limited - 687FF0 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -@@ -76202,6 +76214,18 @@ DC360C (base 16) Hitron Technologies. Inc - Bayan Lepas Penang 11900 - MY - -+C4-12-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C412EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+60-CF-69 (hex) meerecompany -+60CF69 (base 16) meerecompany -+ 69-12, Jeongmunsongsan-ro, Yanggam-myeon, Hwaseong-si, Gyeonggi-do, Republic of Korea -+ Hwaseong-si 18630 -+ KR -+ - 4C-62-7B (hex) SmartCow AI Technologies Taiwan Ltd. - 4C627B (base 16) SmartCow AI Technologies Taiwan Ltd. - 16F., No. 102, Songlong Rd., Xinyi Dist., -@@ -76220,6 +76244,18 @@ F82B7F (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - -+40-C3-BC (hex) Huawei Device Co., Ltd. -+40C3BC (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+34-FE-1C (hex) CHOUNG HWA TECH CO.,LTD -+34FE1C (base 16) CHOUNG HWA TECH CO.,LTD -+ #31 Jangja-ro, Namdong-gu -+ Incheon-si 21532 -+ KR -+ - D8-68-A0 (hex) Samsung Electronics Co.,Ltd - D868A0 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -76232,10 +76268,10 @@ D868A0 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --40-C3-BC (hex) Huawei Device Co., Ltd. --40C3BC (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 - CN - - 28-53-E0 (hex) Sintela Ltd -@@ -76244,78 +76280,66 @@ D868A0 (base 16) Samsung Electronics Co.,Ltd - Pill Bristol BS20 0DH - GB - --60-CF-69 (hex) meerecompany --60CF69 (base 16) meerecompany -- 69-12, Jeongmunsongsan-ro, Yanggam-myeon, Hwaseong-si, Gyeonggi-do, Republic of Korea -- Hwaseong-si 18630 -- KR -- --34-FE-1C (hex) CHOUNG HWA TECH CO.,LTD --34FE1C (base 16) CHOUNG HWA TECH CO.,LTD -- #31 Jangja-ro, Namdong-gu -- Incheon-si 21532 -- KR -- - F4-93-9F (hex) Hon Hai Precision Industry Co., Ltd. - F4939F (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen - ShenZhen GuangDong 518109 - CN - --A4-AE-12 (hex) Hon Hai Precision Industry Co., Ltd. --A4AE12 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -+AC-4E-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+AC4E65 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - --38-F0-C8 (hex) Logitech --38F0C8 (base 16) Logitech -- 7700 Gateway Blvd -- Newark CA 94560 -- US -- - BC-5D-A3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - BC5DA3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD - No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County - Chengdu Sichuan 611330 - CN - --80-75-1F (hex) SKY UK LIMITED --80751F (base 16) SKY UK LIMITED -+80-72-15 (hex) SKY UK LIMITED -+807215 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --C0-A3-6E (hex) SKY UK LIMITED --C0A36E (base 16) SKY UK LIMITED -+B0-3E-51 (hex) SKY UK LIMITED -+B03E51 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --00-A3-88 (hex) SKY UK LIMITED --00A388 (base 16) SKY UK LIMITED -+80-75-1F (hex) SKY UK LIMITED -+80751F (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --AC-4E-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD --AC4E65 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -+A4-AE-12 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE12 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 - CN - --80-72-15 (hex) SKY UK LIMITED --807215 (base 16) SKY UK LIMITED -+C0-A3-6E (hex) SKY UK LIMITED -+C0A36E (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --B0-3E-51 (hex) SKY UK LIMITED --B03E51 (base 16) SKY UK LIMITED -+00-A3-88 (hex) SKY UK LIMITED -+00A388 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - -+38-F0-C8 (hex) Logitech -+38F0C8 (base 16) Logitech -+ 7700 Gateway Blvd -+ Newark CA 94560 -+ US -+ - 1C-EF-03 (hex) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. - 1CEF03 (base 16) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. - Room 601,Originality Building B2, NO.162 Science Avenue,Science Town -@@ -76328,12 +76352,6 @@ B03E51 (base 16) SKY UK LIMITED - KYOTO KYOTO 601-8501 - JP - --54-45-38 (hex) Texas Instruments --544538 (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- - 74-13-EA (hex) Intel Corporate - 7413EA (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -76358,53 +76376,35 @@ B0DCEF (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --2C-A7-74 (hex) Texas Instruments --2CA774 (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --DC-F3-1C (hex) Texas Instruments --DCF31C (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- - 28-BC-05 (hex) BLU Products Inc - 28BC05 (base 16) BLU Products Inc - 10814 NW 33rd Street - Miami FL 33172 - US - -+2C-A7-74 (hex) Texas Instruments -+2CA774 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ - 18-4E-03 (hex) HMD Global Oy - 184E03 (base 16) HMD Global Oy - Bertel Jungin aukio 9 - Espoo 02600 - FI - --40-22-D8 (hex) Espressif Inc. --4022D8 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- - E0-08-71 (hex) Dongguan Liesheng Electronic Co., Ltd. - E00871 (base 16) Dongguan Liesheng Electronic Co., Ltd. - F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci - dongguan guangdong 523000 - CN - --90-65-60 (hex) EM Microelectronic --906560 (base 16) EM Microelectronic -- Rue des Sors 3 -- Marin-Epagnier Neuchatel 2074 -- CH -- --A0-FB-83 (hex) Honor Device Co., Ltd. --A0FB83 (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -- CN -+9C-95-6E (hex) Microchip Technology Inc. -+9C956E (base 16) Microchip Technology Inc. -+ 2355 W. Chandler Blvd. -+ Chandler AZ 85224 -+ US - - DC-0B-09 (hex) Cisco Systems, Inc - DC0B09 (base 16) Cisco Systems, Inc -@@ -76418,17 +76418,17 @@ DC0B09 (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --88-0A-A3 (hex) Juniper Networks --880AA3 (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -+DC-F3-1C (hex) Texas Instruments -+DCF31C (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 - US - --04-D9-C8 (hex) Hon Hai Precision Industry Co., Ltd. --04D9C8 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -+54-45-38 (hex) Texas Instruments -+544538 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US - - 78-C2-13 (hex) Sagemcom Broadband SAS - 78C213 (base 16) Sagemcom Broadband SAS -@@ -76436,6 +76436,12 @@ DC0B09 (base 16) Cisco Systems, Inc - Rueil Malmaison Cedex hauts de seine 92848 - FR - -+40-22-D8 (hex) Espressif Inc. -+4022D8 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ - A0-36-BC (hex) ASUSTek COMPUTER INC. - A036BC (base 16) ASUSTek COMPUTER INC. - 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -@@ -76448,29 +76454,23 @@ A036BC (base 16) ASUSTek COMPUTER INC. - Cranbrook British Columbia V1C 2L9 - CA - --9C-95-6E (hex) Microchip Technology Inc. --9C956E (base 16) Microchip Technology Inc. -- 2355 W. Chandler Blvd. -- Chandler AZ 85224 -- US -- - 84-0B-BB (hex) MitraStar Technology Corp. - 840BBB (base 16) MitraStar Technology Corp. - No. 6, Innovation Road II, - Hsinchu 300 - TW - --70-B3-06 (hex) Apple, Inc. --70B306 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+04-D9-C8 (hex) Hon Hai Precision Industry Co., Ltd. -+04D9C8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN - --B8-49-6D (hex) Apple, Inc. --B8496D (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+A0-FB-83 (hex) Honor Device Co., Ltd. -+A0FB83 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN - - 9C-92-4F (hex) Apple, Inc. - 9C924F (base 16) Apple, Inc. -@@ -76490,12 +76490,96 @@ F0D793 (base 16) Apple, Inc. - Cupertino CA 95014 - US - -+70-B3-06 (hex) Apple, Inc. -+70B306 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+B8-49-6D (hex) Apple, Inc. -+B8496D (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+90-65-60 (hex) EM Microelectronic -+906560 (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+88-0A-A3 (hex) Juniper Networks -+880AA3 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ - 30-3D-51 (hex) IEEE Registration Authority - 303D51 (base 16) IEEE Registration Authority - 445 Hoes Lane - Piscataway NJ 08554 - US - -+CC-D3-C1 (hex) Vestel Elektronik San ve Tic. A.S. -+CCD3C1 (base 16) Vestel Elektronik San ve Tic. A.S. -+ Organize san -+ Manisa Turket 45030 -+ TR -+ -+EC-BE-5F (hex) Vestel Elektronik San ve Tic. A.S. -+ECBE5F (base 16) Vestel Elektronik San ve Tic. A.S. -+ Organize san -+ Manisa Turket 45030 -+ TR -+ -+F4-BB-C7 (hex) vivo Mobile Communication Co., Ltd. -+F4BBC7 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+4C-36-4E (hex) Panasonic Connect Co., Ltd. -+4C364E (base 16) Panasonic Connect Co., Ltd. -+ 4-1-62 Minoshima, Hakata-ku -+ Fukuoka-shi Fukuoka 812-8531 -+ JP -+ -+98-66-10 (hex) zte corporation -+986610 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+44-71-47 (hex) Beijing Xiaomi Electronics Co.,Ltd -+447147 (base 16) Beijing Xiaomi Electronics Co.,Ltd -+ Xiaomi Campus -+ Beijing Beijing 100085 -+ CN -+ -+A8-DC-5A (hex) Digital Watchdog -+A8DC5A (base 16) Digital Watchdog -+ 16220 Bloomfield Ave -+ Cerritos CA 90703 -+ US -+ -+1C-24-CD (hex) ASKEY COMPUTER CORP -+1C24CD (base 16) ASKEY COMPUTER CORP -+ 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -+ NEW TAIPEI CITY 23585 -+ TW -+ -+DC-AA-43 (hex) Shenzhen Terca Information Technology Co., Ltd. -+DCAA43 (base 16) Shenzhen Terca Information Technology Co., Ltd. -+ Room1401, Block A, Building 12 , Shenzhen Bay Technology and Eco-Park , No. 18 Keji South Road , Nanshan District , Shenzhen -+ SHENZHEN GUANGDONG 518000 -+ CN -+ -+00-FB-F9 (hex) Axiado Corporation -+00FBF9 (base 16) Axiado Corporation -+ 2610 Orchard Parkway, Suite 300 -+ San Jose CA 95134 -+ US -+ - 84-80-94 (hex) Meter, Inc. - 848094 (base 16) Meter, Inc. - 148 Townsend St -@@ -79160,12 +79244,6 @@ A4EA8E (base 16) Extreme Networks, Inc. - San Jose CA 94568 - US - --00-09-DF (hex) Vestel Elektronik San ve Tic. A.Ş. --0009DF (base 16) Vestel Elektronik San ve Tic. A.Ş. -- Organize san -- Manisa Turket 45030 -- TR -- - F4-03-2F (hex) Reduxio Systems - F4032F (base 16) Reduxio Systems - 2 Granit St -@@ -113789,18 +113867,6 @@ B4B742 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --60-BE-B4 (hex) S-Bluetech co., limited --60BEB4 (base 16) S-Bluetech co., limited -- Room 202, Block A, Donghai Wang Mansion, 369 Bulonglu -- Shenzhen Guangdong 518000 -- CN -- --90-DF-7D (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. --90DF7D (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -- No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -- Chongqing China 401120 -- CN -- - 50-C1-F0 (hex) NXP Semiconductor (Tianjin) LTD. - 50C1F0 (base 16) NXP Semiconductor (Tianjin) LTD. - No.15 Xinghua Avenue, Xiqing Economic Development Area -@@ -113813,6 +113879,24 @@ F4848D (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Shenzhen Guangdong 518057 - CN - -+58-11-22 (hex) ASUSTek COMPUTER INC. -+581122 (base 16) ASUSTek COMPUTER INC. -+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -+ Taipei Taiwan 112 -+ TW -+ -+60-BE-B4 (hex) S-Bluetech co., limited -+60BEB4 (base 16) S-Bluetech co., limited -+ Room 202, Block A, Donghai Wang Mansion, 369 Bulonglu -+ Shenzhen Guangdong 518000 -+ CN -+ -+90-DF-7D (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+90DF7D (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ - A8-54-A2 (hex) Heimgard Technologies AS - A854A2 (base 16) Heimgard Technologies AS - Dronning Mauds gate 15 -@@ -113837,11 +113921,11 @@ B87EE5 (base 16) Intelbras - São José Santa Catarina 88104800 - BR - --58-11-22 (hex) ASUSTek COMPUTER INC. --581122 (base 16) ASUSTek COMPUTER INC. -- 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -- Taipei Taiwan 112 -- TW -+94-AB-FE (hex) Nokia -+94ABFE (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA - - 74-69-4A (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - 74694A (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -@@ -113855,12 +113939,6 @@ B87EE5 (base 16) Intelbras - shenzhen 518000 - CN - --94-AB-FE (hex) Nokia --94ABFE (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -- - 98-A9-2D (hex) New H3C Technologies Co., Ltd - 98A92D (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District -@@ -113885,6 +113963,18 @@ B87EE5 (base 16) Intelbras - Austin TX 78759 - US - -+E0-03-6B (hex) Samsung Electronics Co.,Ltd -+E0036B (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+18-69-D4 (hex) Samsung Electronics Co.,Ltd -+1869D4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ - D4-F0-EA (hex) Beijing Xiaomi Mobile Software Co., Ltd - D4F0EA (base 16) Beijing Xiaomi Mobile Software Co., Ltd - The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -@@ -113897,12 +113987,6 @@ D4F0EA (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Suzhou 215021 - CN - --E0-03-6B (hex) Samsung Electronics Co.,Ltd --E0036B (base 16) Samsung Electronics Co.,Ltd -- 129, Samsung-ro, Youngtongl-Gu -- Suwon Gyeonggi-Do 16677 -- KR -- - 80-69-1A (hex) Belkin International Inc. - 80691A (base 16) Belkin International Inc. - 12045 East Waterfront Drive -@@ -113957,6 +114041,18 @@ E046EE (base 16) NETGEAR - San Jose CA 95134 - US - -+DC-BE-49 (hex) ITEL MOBILE LIMITED -+DCBE49 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ -+9C-95-61 (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+9C9561 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.75,Zhongkai High-Tech Development District,Huizhou -+ Hui Zhou Guangdong 516006 -+ CN -+ - 9C-4F-5F (hex) Google, Inc. - 9C4F5F (base 16) Google, Inc. - 15 rue Castel -@@ -113975,36 +114071,24 @@ A02942 (base 16) Intel Corporate - Hsichu Taiwan 300 - TW - --04-63-D0 (hex) Huawei Device Co., Ltd. --0463D0 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- - F0-D4-15 (hex) Intel Corporate - F0D415 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 - Kulim Kedah 09000 - MY - --18-69-D4 (hex) Samsung Electronics Co.,Ltd --1869D4 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -+D4-D8-53 (hex) Intel Corporate -+D4D853 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - --9C-95-61 (hex) Hui Zhou Gaoshengda Technology Co.,LTD --9C9561 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -- No.75,Zhongkai High-Tech Development District,Huizhou -- Hui Zhou Guangdong 516006 -+04-63-D0 (hex) Huawei Device Co., Ltd. -+0463D0 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - --DC-BE-49 (hex) ITEL MOBILE LIMITED --DCBE49 (base 16) ITEL MOBILE LIMITED -- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -- Hong Kong KOWLOON 999077 -- HK -- - 14-44-8F (hex) Edgecore Networks Corporation - 14448F (base 16) Edgecore Networks Corporation - 1 Creation RD 3. -@@ -114017,6 +114101,18 @@ DCBE49 (base 16) ITEL MOBILE LIMITED - Reno NV 89507 - US - -+C0-ED-E5 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+C0EDE5 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+10-A5-62 (hex) Iton Technology Corp. -+10A562 (base 16) Iton Technology Corp. -+ Room 1302, Block A, Building 4, Tianan Cyber Park, Huangge Road,Longgang District -+ Shenzhen Guangdong 518116 -+ CN -+ - D4-A3-EB (hex) Shenzhen iComm Semiconductor CO.,LTD - D4A3EB (base 16) Shenzhen iComm Semiconductor CO.,LTD - Room 601,Block B ,Digital Building,Garden City -@@ -114047,12 +114143,6 @@ B89FCC (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Kanata Ontario K2K 2E6 - CA - --D4-D8-53 (hex) Intel Corporate --D4D853 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - 8C-76-3F (hex) ARRIS Group, Inc. - 8C763F (base 16) ARRIS Group, Inc. - 6450 Sequence Drive -@@ -114071,18 +114161,6 @@ C0A938 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --C0-ED-E5 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD --C0EDE5 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -- NO.18 HAIBIN ROAD, -- DONG GUAN GUANG DONG 523860 -- CN -- --10-A5-62 (hex) Iton Technology Corp. --10A562 (base 16) Iton Technology Corp. -- Room 1302, Block A, Building 4, Tianan Cyber Park, Huangge Road,Longgang District -- Shenzhen Guangdong 518116 -- CN -- - 5C-24-E2 (hex) Suzhou Denbom Electronic S&T Co., Ltd - 5C24E2 (base 16) Suzhou Denbom Electronic S&T Co., Ltd - 3F,Building 2, No.415,Changyang Street -@@ -114119,12 +114197,6 @@ BCC746 (base 16) Hon Hai Precision IND.CO.,LTD - New Taipei City Banqiao Dist. 220871 - TW - --64-FD-96 (hex) Sagemcom Broadband SAS --64FD96 (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- - FC-B9-7E (hex) GE Appliances - FCB97E (base 16) GE Appliances - 4000 Buechel Bank Road -@@ -114143,6 +114215,12 @@ FCB97E (base 16) GE Appliances - Beijing 100089 - CN - -+64-FD-96 (hex) Sagemcom Broadband SAS -+64FD96 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ - C8-EB-EC (hex) Shenzhen YOUHUA Technology Co., Ltd - C8EBEC (base 16) Shenzhen YOUHUA Technology Co., Ltd - Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -@@ -114155,6 +114233,24 @@ C8EBEC (base 16) Shenzhen YOUHUA Technology Co., Ltd - New Taipei City Taiwan 235 - TW - -+94-C5-A6 (hex) ITEL MOBILE LIMITED -+94C5A6 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ -+7C-EC-B1 (hex) Apple, Inc. -+7CECB1 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+5C-E9-1E (hex) Apple, Inc. -+5CE91E (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - E0-D7-38 (hex) WireStar Networks - E0D738 (base 16) WireStar Networks - PO Box 10966 -@@ -114173,29 +114269,23 @@ E0D738 (base 16) WireStar Networks - SHANGHAI 201114 - CN - --7C-EC-B1 (hex) Apple, Inc. --7CECB1 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- --5C-E9-1E (hex) Apple, Inc. --5CE91E (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- - A8-B0-AE (hex) BizLink Special Cables Germany GmbH - A8B0AE (base 16) BizLink Special Cables Germany GmbH - Eschstrasse 1 - Friesoythe 26169 - DE - --94-C5-A6 (hex) ITEL MOBILE LIMITED --94C5A6 (base 16) ITEL MOBILE LIMITED -- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -- Hong Kong KOWLOON 999077 -- HK -+F0-B6-61 (hex) eero inc. -+F0B661 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ -+E0-6A-05 (hex) Shenzhen YOUHUA Technology Co., Ltd -+E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd -+ Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -+ Shenzhen Guangdong 518055 -+ CN - - 48-57-D2 (hex) Broadcom Limited - 4857D2 (base 16) Broadcom Limited -@@ -114221,12 +114311,6 @@ D834EE (base 16) SHURE INCORPORATED - NILES IL 60714 - US - --F0-B6-61 (hex) eero inc. --F0B661 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -- - 04-25-F0 (hex) Nokia - 0425F0 (base 16) Nokia - 600 March Road -@@ -114239,10 +114323,16 @@ F0B661 (base 16) eero inc. - Kyoto 619-0237 - JP - --E0-6A-05 (hex) Shenzhen YOUHUA Technology Co., Ltd --E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd -- Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -- Shenzhen Guangdong 518055 -+40-3B-7B (hex) Huawei Device Co., Ltd. -+403B7B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+08-30-CE (hex) Fiberhome Telecommunication Technologies Co.,LTD -+0830CE (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - - 90-CD-1F (hex) Quectel Wireless Solutions Co.,Ltd. -@@ -114275,18 +114365,6 @@ E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd - Rueil Malmaison Cedex hauts de seine 92848 - FR - --40-3B-7B (hex) Huawei Device Co., Ltd. --403B7B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --08-30-CE (hex) Fiberhome Telecommunication Technologies Co.,LTD --0830CE (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -- CN -- - B0-A2-E7 (hex) Shenzhen TINNO Mobile Technology Corp. - B0A2E7 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -114305,12 +114383,24 @@ BC4101 (base 16) Shenzhen TINNO Mobile Technology Corp. - Nanshan District, Shenzhen PRC 518053 - CN - -+18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. -+18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ - 74-97-79 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - 749779 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China - Nanning Guangxi 530007 - CN - -+34-CF-6C (hex) Hangzhou Taili wireless communication equipment Co.,Ltd -+34CF6C (base 16) Hangzhou Taili wireless communication equipment Co.,Ltd -+ Room 1901, No.258, Zhonghe Middle Road, Shangcheng District, Hangzhou -+ Hangzhou Zhejiang 310003 -+ CN -+ - F8-CD-C8 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - F8CDC8 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD - No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -@@ -114323,16 +114413,10 @@ B0285B (base 16) JUHUA Technology Inc. - Shenzhen City Guangdong Province 518117 - CN - --18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. --18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -- Building, No.33, Xiandong Rd, Xili -- Nanshan District, Shenzhen PRC 518053 -- CN -- --34-CF-6C (hex) Hangzhou Taili wireless communication equipment Co.,Ltd --34CF6C (base 16) Hangzhou Taili wireless communication equipment Co.,Ltd -- Room 1901, No.258, Zhonghe Middle Road, Shangcheng District, Hangzhou -- Hangzhou Zhejiang 310003 -+C8-24-96 (hex) Jiangsu Yinhe Electronics Co.,Ltd. -+C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. -+ No.188 Nanhuan Road, TangQiao Town -+ Zhangjiagang Jiangsu 215611 - CN - - E0-F6-78 (hex) Fiberhome Telecommunication Technologies Co.,LTD -@@ -114341,17 +114425,29 @@ E0F678 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - Wuhan Hubei 430074 - CN - -+40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+14-5B-B9 (hex) ConMet -+145BB9 (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ - 28-F7-D6 (hex) Fiberhome Telecommunication Technologies Co.,LTD - 28F7D6 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - No.5 DongXin Road - Wuhan Hubei 430074 - CN - --C8-24-96 (hex) Jiangsu Yinhe Electronics Co.,Ltd. --C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. -- No.188 Nanhuan Road, TangQiao Town -- Zhangjiagang Jiangsu 215611 -- CN -+B8-B4-09 (hex) Samsung Electronics Co.,Ltd -+B8B409 (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR - - 24-18-C0 (hex) E. Wehrle GmbH - 2418C0 (base 16) E. Wehrle GmbH -@@ -114359,12 +114455,6 @@ C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. - 78120 Furtwangen Baden-Württemberg 78120 - DE - --14-5B-B9 (hex) ConMet --145BB9 (base 16) ConMet -- 5701 SE Columbia Way -- Vancouver WA 98661 -- US -- - AC-83-F0 (hex) Cobalt Digital Inc. - AC83F0 (base 16) Cobalt Digital Inc. - 2506 Galen Drive -@@ -114377,6 +114467,12 @@ AC15A2 (base 16) TP-Link Corporation Limited - Tsim Sha Tsui Kowloon 999077 - HK - -+AC-DF-9F (hex) Arcadyan Corporation -+ACDF9F (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW -+ - B8-59-C8 (hex) 70mai Co.,Ltd. - B859C8 (base 16) 70mai Co.,Ltd. - Room 2220, building 2, No. 588, Zixing road -@@ -114389,23 +114485,11 @@ A8E207 (base 16) GOIP Global Services Pvt. Ltd. - Noida Uttar Pradesh 201301 - IN - --40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. --402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -- 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -- Shenzhen Guangdong 518000 -- CN -- --B8-B4-09 (hex) Samsung Electronics Co.,Ltd --B8B409 (base 16) Samsung Electronics Co.,Ltd -- 129, Samsung-ro, Youngtongl-Gu -- Suwon Gyeonggi-Do 16677 -- KR -- --AC-DF-9F (hex) Arcadyan Corporation --ACDF9F (base 16) Arcadyan Corporation -- No.8, Sec.2, Guangfu Rd. -- Hsinchu City Hsinchu 30071 -- TW -+74-E7-98 (hex) Juniper Networks -+74E798 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US - - D4-E2-2F (hex) Roku, Inc - D4E22F (base 16) Roku, Inc -@@ -114443,18 +114527,6 @@ C43CB0 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD - Mianyang Sichuan 622650 - CN - --D8-7E-6F (hex) CASCINATION AG --D87E6F (base 16) CASCINATION AG -- Steigerhubelstrasse 3 -- Bern Bern 3008 -- CH -- --04-4F-7A (hex) China Mobile Group Device Co.,Ltd. --044F7A (base 16) China Mobile Group Device Co.,Ltd. -- 32 Xuanwumen West Street,Xicheng District -- Beijing 100053 -- CN -- - 40-5E-F6 (hex) Samsung Electronics Co.,Ltd - 405EF6 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -114479,23 +114551,29 @@ D87E6F (base 16) CASCINATION AG - Reno NV 89507 - US - -+04-4F-7A (hex) China Mobile Group Device Co.,Ltd. -+044F7A (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ - C0-4E-30 (hex) Espressif Inc. - C04E30 (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area - Shanghai Shanghai 201203 - CN - --74-E7-98 (hex) Juniper Networks --74E798 (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -+AC-60-6F (hex) Nokia Shanghai Bell Co., Ltd. -+AC606F (base 16) Nokia Shanghai Bell Co., Ltd. -+ No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai -+ Shanghai 201206 -+ CN - --E0-16-B1 (hex) Advanced Design Technology co.,ltd. --E016B1 (base 16) Advanced Design Technology co.,ltd. -- 1-1-3 Kotobukicho#10F Mitsukikotobukichobiru -- Fucyu-city Tokyo 1830056 -- JP -+D8-7E-6F (hex) CASCINATION AG -+D87E6F (base 16) CASCINATION AG -+ Steigerhubelstrasse 3 -+ Bern Bern 3008 -+ CH - - 54-31-D4 (hex) TGW Mechanics GmbH - 5431D4 (base 16) TGW Mechanics GmbH -@@ -114509,44 +114587,50 @@ E016B1 (base 16) Advanced Design Technology co.,ltd. - Wuhan Hubei 430206 - CN - --C0-69-11 (hex) Arista Networks --C06911 (base 16) Arista Networks -- 5453 Great America Parkway -- Santa Clara CA 95054 -- US -- --E4-B5-55 (hex) Huawei Device Co., Ltd. --E4B555 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --24-A7-DC (hex) SKY UK LIMITED --24A7DC (base 16) SKY UK LIMITED -+00-19-FB (hex) SKY UK LIMITED -+0019FB (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --38-A6-CE (hex) SKY UK LIMITED --38A6CE (base 16) SKY UK LIMITED -+78-3E-53 (hex) SKY UK LIMITED -+783E53 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --AC-60-6F (hex) Nokia Shanghai Bell Co., Ltd. --AC606F (base 16) Nokia Shanghai Bell Co., Ltd. -- No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai -- Shanghai 201206 -- CN -- --00-19-FB (hex) SKY UK LIMITED --0019FB (base 16) SKY UK LIMITED -+24-A7-DC (hex) SKY UK LIMITED -+24A7DC (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --78-3E-53 (hex) SKY UK LIMITED --783E53 (base 16) SKY UK LIMITED -+E0-16-B1 (hex) Advanced Design Technology co.,ltd. -+E016B1 (base 16) Advanced Design Technology co.,ltd. -+ 1-1-3 Kotobukicho#10F Mitsukikotobukichobiru -+ Fucyu-city Tokyo 1830056 -+ JP -+ -+E4-B5-55 (hex) Huawei Device Co., Ltd. -+E4B555 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+C0-69-11 (hex) Arista Networks -+C06911 (base 16) Arista Networks -+ 5453 Great America Parkway -+ Santa Clara CA 95054 -+ US -+ -+2C-93-FB (hex) Sercomm France Sarl -+2C93FB (base 16) Sercomm France Sarl -+ 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France -+ Moulineaux 92370 -+ FR -+ -+38-A6-CE (hex) SKY UK LIMITED -+38A6CE (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB -@@ -114635,11 +114719,11 @@ BC69CB (base 16) Panasonic Electric Works Networks Co., Ltd. - Kulim Kedah 09000 - MY - --2C-93-FB (hex) Sercomm France Sarl --2C93FB (base 16) Sercomm France Sarl -- 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France -- Moulineaux 92370 -- FR -+58-2B-0A (hex) Texas Instruments -+582B0A (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US - - B4-46-6B (hex) REALTIMEID AS - B4466B (base 16) REALTIMEID AS -@@ -114647,12 +114731,6 @@ B4466B (base 16) REALTIMEID AS - Snåsa 7760 - NO - --90-6A-EB (hex) Microsoft Corporation --906AEB (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -- US -- - C4-EB-39 (hex) Sagemcom Broadband SAS - C4EB39 (base 16) Sagemcom Broadband SAS - 250, route de l'Empereur -@@ -114665,17 +114743,11 @@ C4EB39 (base 16) Sagemcom Broadband SAS - Taipei City 10690 - TW - --08-9D-F4 (hex) Intel Corporate --089DF4 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --DC-46-28 (hex) Intel Corporate --DC4628 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+F0-C1-CE (hex) GoodWe Technologies CO., Ltd -+F0C1CE (base 16) GoodWe Technologies CO., Ltd -+ No.90 Zijin Rd.,New District,Suzhou,215011,China -+ Suzhou JiangSu 215011 -+ CN - - 0C-91-92 (hex) Intel Corporate - 0C9192 (base 16) Intel Corporate -@@ -114695,23 +114767,23 @@ DC4628 (base 16) Intel Corporate - Shenzhen 518000 - CN - --F0-C1-CE (hex) GoodWe Technologies CO., Ltd --F0C1CE (base 16) GoodWe Technologies CO., Ltd -- No.90 Zijin Rd.,New District,Suzhou,215011,China -- Suzhou JiangSu 215011 -- CN -+08-9D-F4 (hex) Intel Corporate -+089DF4 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - --58-2B-0A (hex) Texas Instruments --582B0A (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -+DC-46-28 (hex) Intel Corporate -+DC4628 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - --D8-E8-44 (hex) zte corporation --D8E844 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -+90-6A-EB (hex) Microsoft Corporation -+906AEB (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US - - E4-6A-35 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - E46A35 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -@@ -114737,6 +114809,18 @@ E838A0 (base 16) Vizio, Inc - Irvine CA 92618 - US - -+EC-C0-7A (hex) Laird Connectivity -+ECC07A (base 16) Laird Connectivity -+ 3F.-1, No.145, Xianzheng 9th Rd., -+ Zhubei 30251 -+ TW -+ -+68-B9-C2 (hex) Earda Technologies co Ltd -+68B9C2 (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 -+ CN -+ - C8-1E-C2 (hex) ITEL MOBILE LIMITED - C81EC2 (base 16) ITEL MOBILE LIMITED - RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -@@ -114749,10 +114833,10 @@ C81EC2 (base 16) ITEL MOBILE LIMITED - Hui Zhou Guangdong 516025 - CN - --68-B9-C2 (hex) Earda Technologies co Ltd --68B9C2 (base 16) Earda Technologies co Ltd -- Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -- Guangzhou Guangdong 511455 -+D8-E8-44 (hex) zte corporation -+D8E844 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - - 68-83-CB (hex) Apple, Inc. -@@ -114761,18 +114845,66 @@ C81EC2 (base 16) ITEL MOBILE LIMITED - Cupertino CA 95014 - US - --EC-C0-7A (hex) Laird Connectivity --ECC07A (base 16) Laird Connectivity -- 3F.-1, No.145, Xianzheng 9th Rd., -- Zhubei 30251 -+FC-12-63 (hex) ASKEY COMPUTER CORP -+FC1263 (base 16) ASKEY COMPUTER CORP -+ 10F,No.119,JIANKANG RD,ZHONGHE DIST -+ NEW TAIPEI TAIWAN 23585 - TW - -+58-30-5B (hex) Shanghai Junqian Sensing Technology Co.,LTD -+58305B (base 16) Shanghai Junqian Sensing Technology Co.,LTD -+ Room 602,Building 1,NO.760,Xinjunhuan Road, Caohejing High-Tech Park,Minhang District, -+ Shanghai Shanghai 201114 -+ CN -+ -+C0-71-AA (hex) ShenZhen OnMicro Electronics Co.,Ltd. -+C071AA (base 16) ShenZhen OnMicro Electronics Co.,Ltd. -+ Room 407-408, West Building, Skyworth Semiconductor Building, GaoXin South 4th Road, Yuehai Street, Nanshan District -+ Shenzhen GuangDong 518057 -+ CN -+ - 9C-05-91 (hex) Mellanox Technologies, Inc. - 9C0591 (base 16) Mellanox Technologies, Inc. - 350 Oakmead Parkway, Suite 100 - Sunnyvale CA 94085 - US - -+70-9C-45 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+709C45 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+00-09-DF (hex) Vestel Elektronik San ve Tic. A.S. -+0009DF (base 16) Vestel Elektronik San ve Tic. A.S. -+ Organize san -+ Manisa Turket 45030 -+ TR -+ -+A0-31-31 (hex) Procenne Digital Security -+A03131 (base 16) Procenne Digital Security -+ Eski Buyukdere Cd. No:7/12 Maslak -+ Istanbul Sariyer 34398 -+ TR -+ -+FC-07-36 (hex) Huawei Device Co., Ltd. -+FC0736 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+94-A0-7D (hex) Huawei Device Co., Ltd. -+94A07D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+5C-07-58 (hex) Ufispace Co., LTD. -+5C0758 (base 16) Ufispace Co., LTD. -+ 9F., No. 81 Jhongcheng Rd., Tucheng Dist., -+ New Taipei 23674 -+ TW -+ - F8-D0-27 (hex) Seiko Epson Corporation - F8D027 (base 16) Seiko Epson Corporation - 2070 Kotobuki Koaka -@@ -152054,10 +152186,10 @@ B4E265 (base 16) Shenzhen SDMC Technology Co.,LTD - Shenzhen GUANGDONG 518027 - CN - --EC-7C-5C (hex) Juniper Networks --EC7C5C (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -+CC-60-C8 (hex) Microsoft Corporation -+CC60C8 (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 - US - - 00-EB-D8 (hex) MERCUSYS TECHNOLOGIES CO., LTD. -@@ -152066,12 +152198,6 @@ EC7C5C (base 16) Juniper Networks - Shenzhen Guangdong 518057 - CN - --CC-60-C8 (hex) Microsoft Corporation --CC60C8 (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -- US -- - 6C-8D-77 (hex) Cisco Systems, Inc - 6C8D77 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -152090,6 +152216,12 @@ B417A8 (base 16) Facebook Technologies, LLC - Menlo Park CA 94025 - US - -+EC-7C-5C (hex) Juniper Networks -+EC7C5C (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ - 10-54-D2 (hex) IEEE Registration Authority - 1054D2 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -152108,12 +152240,6 @@ C4DF39 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Chongqing China 401120 - CN - --10-63-4B (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. --10634B (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -- 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District -- Shenzhen Guangdong 518057 -- CN -- - 80-97-33 (hex) Shenzhen Elebao Technology Co., Ltd - 809733 (base 16) Shenzhen Elebao Technology Co., Ltd - F/6, Tower A, Zhihuichuangxin Center Bldg,Qianjin Road, XixiangTown, Bao’an District -@@ -152150,18 +152276,6 @@ D8365F (base 16) Intelbras - Moscow\ 117335 - RU - --E8-4D-EC (hex) Xerox Corporation --E84DEC (base 16) Xerox Corporation -- 800 Phillips Rd -- Webster NY 14450 -- US -- --C8-B8-2F (hex) eero inc. --C8B82F (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -- - 54-78-C9 (hex) AMPAK Technology,Inc. - 5478C9 (base 16) AMPAK Technology,Inc. - 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -@@ -152186,60 +152300,54 @@ FC101A (base 16) Palo Alto Networks - Rueil Malmaison Cedex hauts de seine 92848 - FR - --B8-5D-C3 (hex) HUAWEI TECHNOLOGIES CO.,LTD --B85DC3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+10-63-4B (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+10634B (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District -+ Shenzhen Guangdong 518057 - CN - -+E8-4D-EC (hex) Xerox Corporation -+E84DEC (base 16) Xerox Corporation -+ 800 Phillips Rd -+ Webster NY 14450 -+ US -+ -+C8-B8-2F (hex) eero inc. -+C8B82F (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ - B4-3A-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD - B43AE2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --D0-A4-6F (hex) China Dragon Technology Limited --D0A46F (base 16) China Dragon Technology Limited -- B4 Bldg.Haoshan 1st Industry Park, -- Shenzhen Guangdong 518104 -- CN -- - F0-C8-B5 (hex) HUAWEI TECHNOLOGIES CO.,LTD - F0C8B5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --2C-60-CD (hex) NR ELECTRIC CO., LTD --2C60CD (base 16) NR ELECTRIC CO., LTD -- 69,Suyuan Avenue -- Nanjing Jiangsu 211102 -- CN -- --8C-1E-80 (hex) Cisco Systems, Inc --8C1E80 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --A4-1E-E1 (hex) Taicang T&W Electronics --A41EE1 (base 16) Taicang T&W Electronics -- 89# Jiang Nan RD -- Suzhou Jiangsu 215412 -+B8-5D-C3 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B85DC3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --E8-FB-1C (hex) AzureWave Technology Inc. --E8FB1C (base 16) AzureWave Technology Inc. -- 8F., No. 94, Baozhong Rd. -- New Taipei City Taiwan 231 -- TW -- - B4-A7-C6 (hex) SERVERCOM (INDIA) PRIVATE LIMITED - B4A7C6 (base 16) SERVERCOM (INDIA) PRIVATE LIMITED - E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI - NEW DELHI NA - IN - -+D0-A4-6F (hex) China Dragon Technology Limited -+D0A46F (base 16) China Dragon Technology Limited -+ B4 Bldg.Haoshan 1st Industry Park, -+ Shenzhen Guangdong 518104 -+ CN -+ - 1C-76-F2 (hex) Samsung Electronics Co.,Ltd - 1C76F2 (base 16) Samsung Electronics Co.,Ltd - 129, Samsung-ro, Youngtongl-Gu -@@ -152258,6 +152366,12 @@ B4A7C6 (base 16) SERVERCOM (INDIA) PRIVATE LIMITED - Gumi Gyeongbuk 730-350 - KR - -+2C-60-CD (hex) NR ELECTRIC CO., LTD -+2C60CD (base 16) NR ELECTRIC CO., LTD -+ 69,Suyuan Avenue -+ Nanjing Jiangsu 211102 -+ CN -+ - 28-6B-35 (hex) Intel Corporate - 286B35 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -152270,6 +152384,18 @@ B4A7C6 (base 16) SERVERCOM (INDIA) PRIVATE LIMITED - Piscataway NJ 08554 - US - -+A4-1E-E1 (hex) Taicang T&W Electronics -+A41EE1 (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 -+ CN -+ -+E8-FB-1C (hex) AzureWave Technology Inc. -+E8FB1C (base 16) AzureWave Technology Inc. -+ 8F., No. 94, Baozhong Rd. -+ New Taipei City Taiwan 231 -+ TW -+ - C0-EE-40 (hex) Laird Connectivity - C0EE40 (base 16) Laird Connectivity - 50 South Main St -@@ -152282,72 +152408,12 @@ A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD - Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - --84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD --84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD --14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD --E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- - 30-04-5C (hex) Shenzhen SuperElectron Technology Co.,Ltd. - 30045C (base 16) Shenzhen SuperElectron Technology Co.,Ltd. - 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city - Shenzhen Guangdong 518000 - CN - --90-79-CF (hex) zte corporation --9079CF (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- --88-8F-A4 (hex) Huawei Device Co., Ltd. --888FA4 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --3C-82-C0 (hex) Technicolor CH USA Inc. --3C82C0 (base 16) Technicolor CH USA Inc. -- 5030 Sugarloaf Parkway Bldg 6 -- Lawrenceville GA 30044 -- US -- --C4-DE-E2 (hex) Espressif Inc. --C4DEE2 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- --68-B6-B3 (hex) Espressif Inc. --68B6B3 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- --FC-A0-5A (hex) Oray.com co., LTD. --FCA05A (base 16) Oray.com co., LTD. -- 8008Rm, building No.1 GuoDing d. Yangpu District -- Shanghai Shanghai 200433 -- CN -- --90-48-6C (hex) Ring LLC --90486C (base 16) Ring LLC -- 1523 26th St -- Santa Monica CA 90404 -- US -- - 3C-46-45 (hex) Shanghai Infinity Wireless Technologies Co.,Ltd. - 3C4645 (base 16) Shanghai Infinity Wireless Technologies Co.,Ltd. - Room 522, Building A, No.1687 Changyang Road, Yangpu District, Shanghai -@@ -152372,12 +152438,30 @@ A4F933 (base 16) Intel Corporate - Kulim Kedah 09000 - MY - -+88-8F-A4 (hex) Huawei Device Co., Ltd. -+888FA4 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ - 50-68-AC (hex) Huawei Device Co., Ltd. - 5068AC (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone - Dongguan Guangdong 523808 - CN - -+90-79-CF (hex) zte corporation -+9079CF (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+8C-1E-80 (hex) Cisco Systems, Inc -+8C1E80 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ - 50-39-2F (hex) INGRAM MICRO SERVICES - 50392F (base 16) INGRAM MICRO SERVICES - 100 CHEMIN DE BAILLOT -@@ -152402,11 +152486,53 @@ FC8417 (base 16) Honor Device Co., Ltd. - San Diego CA 92121 - US - --AC-B5-66 (hex) Renesas Electronics (Penang) Sdn. Bhd. --ACB566 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -- Phase 3, Bayan Lepas FIZ -- Bayan Lepas Penang 11900 -- MY -+C4-DE-E2 (hex) Espressif Inc. -+C4DEE2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+68-B6-B3 (hex) Espressif Inc. -+68B6B3 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+FC-A0-5A (hex) Oray.com co., LTD. -+FCA05A (base 16) Oray.com co., LTD. -+ 8008Rm, building No.1 GuoDing d. Yangpu District -+ Shanghai Shanghai 200433 -+ CN -+ -+84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD -+84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD -+14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD -+E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+90-48-6C (hex) Ring LLC -+90486C (base 16) Ring LLC -+ 1523 26th St -+ Santa Monica CA 90404 -+ US -+ -+3C-82-C0 (hex) Technicolor CH USA Inc. -+3C82C0 (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US - - 10-24-07 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 102407 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -@@ -152426,12 +152552,6 @@ D021AC (base 16) Yohana - Palo Alto CA 94304 - US - --38-1F-26 (hex) IEEE Registration Authority --381F26 (base 16) IEEE Registration Authority -- 445 Hoes Lane -- Piscataway NJ 08554 -- US -- - 7C-E1-52 (hex) THE GOODYEAR TIRE & RUBBER COMPANY - 7CE152 (base 16) THE GOODYEAR TIRE & RUBBER COMPANY - 200 Innovation Way -@@ -152450,17 +152570,17 @@ D021AC (base 16) Yohana - Mérignac 33700 - FR - --50-E6-36 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH --50E636 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH -- Alt-Moabit 95 -- Berlin Berlin 10559 -- DE -+AC-B5-66 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+ACB566 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY - --78-20-BD (hex) Polysense (Beijing) Technologies Co. Ltd --7820BD (base 16) Polysense (Beijing) Technologies Co. Ltd -- 9  Shangdi 3rd Street, D508B3/5(4)F Bldg D, Haidian Dist. -- Beijing 100085 -- CN -+38-1F-26 (hex) IEEE Registration Authority -+381F26 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US - - EC-21-25 (hex) Toshiba Corp. - EC2125 (base 16) Toshiba Corp. -@@ -152468,17 +152588,35 @@ EC2125 (base 16) Toshiba Corp. - Tokyo 105-8001 - JP - -+00-E5-F1 (hex) BUFFALO.INC -+00E5F1 (base 16) BUFFALO.INC -+ AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku -+ Nagoya Aichi Pref. 460-8315 -+ JP -+ -+34-EE-2A (hex) ConMet -+34EE2A (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ -+50-E6-36 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH -+50E636 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH -+ Alt-Moabit 95 -+ Berlin Berlin 10559 -+ DE -+ - 68-4E-05 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED - 684E05 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED - No.8, Litong Road, Liuyan Economic & Tec - Changsha HUNAN 410329 - CN - --04-99-BB (hex) Apple, Inc. --0499BB (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+78-20-BD (hex) Polysense (Beijing) Technologies Co. Ltd -+7820BD (base 16) Polysense (Beijing) Technologies Co. Ltd -+ 9  Shangdi 3rd Street, D508B3/5(4)F Bldg D, Haidian Dist. -+ Beijing 100085 -+ CN - - F0-4D-D4 (hex) Sagemcom Broadband SAS - F04DD4 (base 16) Sagemcom Broadband SAS -@@ -152486,11 +152624,17 @@ F04DD4 (base 16) Sagemcom Broadband SAS - Rueil Malmaison Cedex hauts de seine 92848 - FR - --00-E5-F1 (hex) BUFFALO.INC --00E5F1 (base 16) BUFFALO.INC -- AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku -- Nagoya Aichi Pref. 460-8315 -- JP -+AC-29-29 (hex) Infinix mobility limited -+AC2929 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ -+5C-1B-F4 (hex) Apple, Inc. -+5C1BF4 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US - - A8-51-AB (hex) Apple, Inc. - A851AB (base 16) Apple, Inc. -@@ -152498,17 +152642,35 @@ A851AB (base 16) Apple, Inc. - Cupertino CA 95014 - US - --5C-1B-F4 (hex) Apple, Inc. --5C1BF4 (base 16) Apple, Inc. -+3C-CE-0D (hex) Shenzhen juduoping Technology Co.,Ltd -+3CCE0D (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ -+04-99-BB (hex) Apple, Inc. -+0499BB (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --34-EE-2A (hex) ConMet --34EE2A (base 16) ConMet -- 5701 SE Columbia Way -- Vancouver WA 98661 -- US -+60-E9-AA (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+60E9AA (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+24-0F-5E (hex) Shenzhen z-router Technology Co., Ltd -+240F5E (base 16) Shenzhen z-router Technology Co., Ltd -+ 406,Block A,Taojindi Building ,Tenglong Road,Longhua New District, -+ Shenzhen GuangDong 518000 -+ CN -+ -+E8-3A-4B (hex) China Mobile Group Device Co.,Ltd. -+E83A4B (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN - - 78-66-9D (hex) Hui Zhou Gaoshengda Technology Co.,LTD - 78669D (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -@@ -152522,30 +152684,30 @@ A851AB (base 16) Apple, Inc. - Delft 2628 XJ - NL - --90-49-92 (hex) YSTen Technology Co.,Ltd --904992 (base 16) YSTen Technology Co.,Ltd -- Room 1715,17/F North Star Times Tower,Chaoyang District,Beijing. -- Beijing 100101 -- CN -- --AC-29-29 (hex) Infinix mobility limited --AC2929 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- --3C-CE-0D (hex) Shenzhen juduoping Technology Co.,Ltd --3CCE0D (base 16) Shenzhen juduoping Technology Co.,Ltd -- Baoan Xin'an Streat -- Shenzhen 002052 -- CN -- - 00-0E-DD (hex) SHURE INCORPORATED - 000EDD (base 16) SHURE INCORPORATED - 5800 W. TOUHY AVE. - NILES IL 60714 - US - -+6C-97-6D (hex) Motorola Mobility LLC, a Lenovo Company -+6C976D (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+64-11-A4 (hex) Motorola Mobility LLC, a Lenovo Company -+6411A4 (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+90-49-92 (hex) YSTen Technology Co.,Ltd -+904992 (base 16) YSTen Technology Co.,Ltd -+ Room 1715,17/F North Star Times Tower,Chaoyang District,Beijing. -+ Beijing 100101 -+ CN -+ - 18-FD-74 (hex) Routerboard.com - 18FD74 (base 16) Routerboard.com - Mikrotikls SIA -@@ -152576,42 +152738,6 @@ E4902A (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --E8-3A-4B (hex) China Mobile Group Device Co.,Ltd. --E83A4B (base 16) China Mobile Group Device Co.,Ltd. -- 32 Xuanwumen West Street,Xicheng District -- Beijing 100053 -- CN -- --60-E9-AA (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. --60E9AA (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -- Nanning Guangxi 530007 -- CN -- --24-0F-5E (hex) Shenzhen z-router Technology Co., Ltd --240F5E (base 16) Shenzhen z-router Technology Co., Ltd -- 406,Block A,Taojindi Building ,Tenglong Road,Longhua New District, -- Shenzhen GuangDong 518000 -- CN -- --6C-97-6D (hex) Motorola Mobility LLC, a Lenovo Company --6C976D (base 16) Motorola Mobility LLC, a Lenovo Company -- 222 West Merchandise Mart Plaza -- Chicago IL 60654 -- US -- --64-11-A4 (hex) Motorola Mobility LLC, a Lenovo Company --6411A4 (base 16) Motorola Mobility LLC, a Lenovo Company -- 222 West Merchandise Mart Plaza -- Chicago IL 60654 -- US -- --10-F0-68 (hex) Ruckus Wireless --10F068 (base 16) Ruckus Wireless -- 350 West Java Drive -- Sunnyvale CA 94089 -- US -- - F0-87-7F (hex) Magnetar Technology Shenzhen Co., LTD. - F0877F (base 16) Magnetar Technology Shenzhen Co., LTD. - Room211, Building1, No.26 Puzai Road, Pingdi Longgang -@@ -152630,10 +152756,10 @@ C8D6B7 (base 16) Solidigm Technology - Longmont CO 80501 - US - --60-5B-30 (hex) Dell Inc. --605B30 (base 16) Dell Inc. -- One Dell Way -- Round Rock TX 78682 -+10-F0-68 (hex) Ruckus Wireless -+10F068 (base 16) Ruckus Wireless -+ 350 West Java Drive -+ Sunnyvale CA 94089 - US - - 44-3C-9C (hex) Pintsch GmbH -@@ -152642,6 +152768,18 @@ C8D6B7 (base 16) Solidigm Technology - Dinslaken 46537 - DE - -+20-64-DE (hex) Sunitec Enterprise Co.,Ltd -+2064DE (base 16) Sunitec Enterprise Co.,Ltd -+ 3F.,No.98-1,Mincyuan Rd.Sindian City -+ Taipei County 231 231141 -+ CN -+ -+A4-0F-98 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+A40F98 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ - D8-80-DC (hex) Huawei Device Co., Ltd. - D880DC (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -152672,12 +152810,6 @@ F46C68 (base 16) Wistron Neweb Corporation - shenzhen guangdong 518057 - CN - --20-64-DE (hex) Sunitec Enterprise Co.,Ltd --2064DE (base 16) Sunitec Enterprise Co.,Ltd -- 3F.,No.98-1,Mincyuan Rd.Sindian City -- Taipei County 231 231141 -- CN -- - 74-B7-25 (hex) Huawei Device Co., Ltd. - 74B725 (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -152690,12 +152822,6 @@ F46C68 (base 16) Wistron Neweb Corporation - Dongguan Guangdong 523808 - CN - --A4-0F-98 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD --A40F98 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -- NO.18 HAIBIN ROAD, -- DONG GUAN GUANG DONG 523860 -- CN -- - BC-44-34 (hex) Shenzhen TINNO Mobile Technology Corp. - BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -152708,6 +152834,12 @@ BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. - Minato-ku Tokyo 108-0075 - JP - -+60-5B-30 (hex) Dell Inc. -+605B30 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ - 34-AC-11 (hex) China Mobile Group Device Co.,Ltd. - 34AC11 (base 16) China Mobile Group Device Co.,Ltd. - 32 Xuanwumen West Street,Xicheng District -@@ -152780,6 +152912,24 @@ DC71DD (base 16) AX Technologies - Singapore 556741 - SG - -+3C-69-D1 (hex) ADC Automotive Distance Control System GmbH -+3C69D1 (base 16) ADC Automotive Distance Control System GmbH -+ Peter-Dornier Strasse 10 -+ Lindau Bavaria 88131 -+ DE -+ -+04-BA-D6 (hex) D-Link Corporation -+04BAD6 (base 16) D-Link Corporation -+ No.289, Sinhu 3rd Rd., Neihu District, -+ Taipei City 114 -+ TW -+ -+30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA -+303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA -+ JL.PALEM 1 BLOK DS-6 -+ KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 -+ ID -+ - 30-7F-10 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - 307F10 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - NO.18 HAIBIN ROAD, -@@ -152804,35 +152954,23 @@ B0FBDD (base 16) Shenzhen SuperElectron Technology Co.,Ltd. - Shenzhen Guangdong 518000 - CN - --3C-69-D1 (hex) ADC Automotive Distance Control System GmbH --3C69D1 (base 16) ADC Automotive Distance Control System GmbH -- Peter-Dornier Strasse 10 -- Lindau Bavaria 88131 -- DE -- - E0-9C-8D (hex) Seakeeper, Inc. - E09C8D (base 16) Seakeeper, Inc. - 45310 Abell House Lane Suite 350 - California MD 20619 - US - --04-BA-D6 (hex) D-Link Corporation --04BAD6 (base 16) D-Link Corporation -- No.289, Sinhu 3rd Rd., Neihu District, -- Taipei City 114 -- TW -- - 34-3A-20 (hex) Aruba, a Hewlett Packard Enterprise Company - 343A20 (base 16) Aruba, a Hewlett Packard Enterprise Company - 3333 Scott Blvd - Santa Clara CA 95054 - US - --30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA --303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA -- JL.PALEM 1 BLOK DS-6 -- KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 -- ID -+7C-0C-92 (hex) Suzhou Mobydata Smart System Co.,Ltd. -+7C0C92 (base 16) Suzhou Mobydata Smart System Co.,Ltd. -+ 3f,building E,Yida science Park,No.11 Jinpu Road,SIP,Suzhou,Jiangsu,China -+ Suzhou Jingsu 215000 -+ CN - - 18-E9-1D (hex) HUAWEI TECHNOLOGIES CO.,LTD - 18E91D (base 16) HUAWEI TECHNOLOGIES CO.,LTD -@@ -152852,6 +152990,12 @@ F46ADD (base 16) Liteon Technology Corporation - New Taipei City Taiwan 23585 - TW - -+98-D7-42 (hex) Samsung Electronics Co.,Ltd -+98D742 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ - C8-2A-F1 (hex) TCT mobile ltd - C82AF1 (base 16) TCT mobile ltd - No.86 hechang 7th road, zhongkai, Hi-Tech District -@@ -152870,60 +153014,12 @@ A842E3 (base 16) Espressif Inc. - Shanghai Shanghai 201203 - CN - --7C-0C-92 (hex) Suzhou Mobydata Smart System Co.,Ltd. --7C0C92 (base 16) Suzhou Mobydata Smart System Co.,Ltd. -- 3f,building E,Yida science Park,No.11 Jinpu Road,SIP,Suzhou,Jiangsu,China -- Suzhou Jingsu 215000 -- CN -- - 04-26-05 (hex) Bosch Building Automation GmbH - 042605 (base 16) Bosch Building Automation GmbH - Kapellenweg 42 - Verl 33415 - DE - --3C-FE-AC (hex) Cisco Systems, Inc --3CFEAC (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --04-A7-41 (hex) Cisco Systems, Inc --04A741 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --A0-88-9D (hex) Huawei Device Co., Ltd. --A0889D (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --98-D7-42 (hex) Samsung Electronics Co.,Ltd --98D742 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- --D4-9B-74 (hex) Kinetic Technologies --D49B74 (base 16) Kinetic Technologies -- 6399 San Ignacio Ave #250 -- San Jose CA 95119 -- US -- --40-F8-DF (hex) CANON INC. --40F8DF (base 16) CANON INC. -- 30-2 Shimomaruko 3-chome, -- Ohta-ku Tokyo 146-8501 -- JP -- --20-47-ED (hex) SKY UK LIMITED --2047ED (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- - A0-BD-CD (hex) SKY UK LIMITED - A0BDCD (base 16) SKY UK LIMITED - 130 Kings Road -@@ -152960,6 +153056,42 @@ A0BDCD (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - -+3C-FE-AC (hex) Cisco Systems, Inc -+3CFEAC (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+04-A7-41 (hex) Cisco Systems, Inc -+04A741 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+A0-88-9D (hex) Huawei Device Co., Ltd. -+A0889D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+D4-9B-74 (hex) Kinetic Technologies -+D49B74 (base 16) Kinetic Technologies -+ 6399 San Ignacio Ave #250 -+ San Jose CA 95119 -+ US -+ -+20-47-ED (hex) SKY UK LIMITED -+2047ED (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+40-F8-DF (hex) CANON INC. -+40F8DF (base 16) CANON INC. -+ 30-2 Shimomaruko 3-chome, -+ Ohta-ku Tokyo 146-8501 -+ JP -+ - F4-6B-8C (hex) Hon Hai Precision Industry Co., Ltd. - F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen -@@ -152972,6 +153104,12 @@ F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. - Calamba Lot 1 - PH - -+F4-3B-D8 (hex) Intel Corporate -+F43BD8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 7C-67-AB (hex) Roku, Inc - 7C67AB (base 16) Roku, Inc - 1155 Coleman Ave -@@ -152984,18 +153122,6 @@ F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. - Piscataway NJ 08554 - US - --F4-3B-D8 (hex) Intel Corporate --F43BD8 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --C8-4B-D6 (hex) Dell Inc. --C84BD6 (base 16) Dell Inc. -- One Dell Way -- Round Rock TX 78682 -- US -- - E0-86-14 (hex) Novatel Wireless Solutions, Inc. - E08614 (base 16) Novatel Wireless Solutions, Inc. - 9710 Scranton Rd., Suite 200 -@@ -153008,6 +153134,18 @@ A8DE68 (base 16) Beijing Wide Technology Co.,Ltd - Beijing Beijing 100000 - CN - -+3C-4E-56 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+3C4E56 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+ Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China -+ SHENZHEN GUANGDONG 518057 -+ CN -+ -+C8-4B-D6 (hex) Dell Inc. -+C84BD6 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ - 6C-30-2A (hex) Texas Instruments - 6C302A (base 16) Texas Instruments - 12500 TI Blvd -@@ -153020,6 +153158,12 @@ A8DE68 (base 16) Beijing Wide Technology Co.,Ltd - Dallas TX 75243 - US - -+08-B6-1F (hex) Espressif Inc. -+08B61F (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ - 94-4E-5B (hex) Ubee Interactive Co., Limited - 944E5B (base 16) Ubee Interactive Co., Limited - Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -@@ -153056,16 +153200,10 @@ FC6179 (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - --3C-4E-56 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD --3C4E56 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -- Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China -- SHENZHEN GUANGDONG 518057 -- CN -- --08-B6-1F (hex) Espressif Inc. --08B61F (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -+4C-72-74 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd -+4C7274 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -+ Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -+ ShenZHEN GuangDong 518104 - CN - - 98-A2-C0 (hex) Cisco Systems, Inc -@@ -153080,12 +153218,6 @@ EC74D7 (base 16) Grandstream Networks Inc - boston MA 02215 - US - --4C-72-74 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd --4C7274 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -- Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -- ShenZHEN GuangDong 518104 -- CN -- - 30-63-71 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd - 306371 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd - Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -@@ -153104,6 +153236,24 @@ EC74D7 (base 16) Grandstream Networks Inc - shenzhen guangdong 518057 - CN - -+5C-3E-1B (hex) Apple, Inc. -+5C3E1B (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+7C-2A-CA (hex) Apple, Inc. -+7C2ACA (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+28-8E-EC (hex) Apple, Inc. -+288EEC (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - A0-8C-F2 (hex) YINUOLINK CO.,LTD - A08CF2 (base 16) YINUOLINK CO.,LTD - 3F, Bldg 5, Gaoxinjian Industrial Park, Fuyuan 1st Road, Heping, Fuhai, Bao'an -@@ -153128,24 +153278,84 @@ F4931C (base 16) Universal Electronics, Inc. - Santa Ana CA 92707 - US - --5C-3E-1B (hex) Apple, Inc. --5C3E1B (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -+C8-84-8C (hex) Ruckus Wireless -+C8848C (base 16) Ruckus Wireless -+ 350 West Java Drive -+ Sunnyvale CA 94089 - US - --7C-2A-CA (hex) Apple, Inc. --7C2ACA (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+B0-78-39 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. -+B07839 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. -+ Midea Global Innovation Center,Beijiao Town,Shunde -+ Foshan Guangdong 528311 -+ CN - --28-8E-EC (hex) Apple, Inc. --288EEC (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -+74-9E-75 (hex) Aruba, a Hewlett Packard Enterprise Company -+749E75 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 - US - -+E0-5A-1B (hex) Espressif Inc. -+E05A1B (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+48-8A-E8 (hex) vivo Mobile Communication Co., Ltd. -+488AE8 (base 16) vivo Mobile Communication Co., Ltd. -+ No.1, vivo Road, Chang'an -+ Dongguan Guangdong 523860 -+ CN -+ -+CC-BA-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD -+CCBA6F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+78-5C-5E (hex) HUAWEI TECHNOLOGIES CO.,LTD -+785C5E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+98-81-8A (hex) Huawei Device Co., Ltd. -+98818A (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+A8-AA-7C (hex) Huawei Device Co., Ltd. -+A8AA7C (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+B4-C2-F7 (hex) Huawei Device Co., Ltd. -+B4C2F7 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+1C-32-83 (hex) COMTTI Intelligent Technology(Shenzhen) Co., Ltd. -+1C3283 (base 16) COMTTI Intelligent Technology(Shenzhen) Co., Ltd. -+ Building 7/6 building 6 room 307, Area A, Baoan Internet Industrial Base, Mabu Community, Xixiang Street, Baoan District, -+ Shenzhen Guangdong 518000 -+ CN -+ -+F4-1C-71 (hex) SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD -+F41C71 (base 16) SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD -+ 17/F,Block 1A,Software Industry Base, XueFu Road,Nanshan District, -+ Shenzhen GuangDong 518100 -+ CN -+ -+70-11-0E (hex) zte corporation -+70110E (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ - 7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. - 7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. - NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE -@@ -159575,12 +159785,6 @@ FC9114 (base 16) Technicolor CH USA Inc. - Lawrenceville GA 30044 - US - --48-6D-BB (hex) Vestel Elektronik San ve Tic. A.Ş. --486DBB (base 16) Vestel Elektronik San ve Tic. A.Ş. -- Organize san -- Manisa Turket 45030 -- TR -- - 00-2A-10 (hex) Cisco Systems, Inc - 002A10 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -190325,6 +190529,18 @@ BC6193 (base 16) Xiaomi Communications Co Ltd - Beijing Haidian District 100085 - CN - -+94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ -+C8-54-A4 (hex) Infinix mobility limited -+C854A4 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ - EC-71-DB (hex) Reolink Innovation Limited - EC71DB (base 16) Reolink Innovation Limited - 705,7/F,FA YUEN COMMERCIAL BUILDING,75-77 FA YUEN STREET -@@ -190343,12 +190559,6 @@ F8E57E (base 16) Cisco Systems, Inc - Seoul Seocho-Gu #137-902 - KR - --94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd --947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -- CN -- - 38-5B-44 (hex) Silicon Laboratories - 385B44 (base 16) Silicon Laboratories - 400 West Cesar Chavez Street -@@ -190391,6 +190601,12 @@ EC6073 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Shenzhen Guangdong 518057 - CN - -+74-DD-CB (hex) China Leadshine Technology Co.,Ltd -+74DDCB (base 16) China Leadshine Technology Co.,Ltd -+ 9-11, Building A3, Nanshan Ipark, No.1001 Xueyuan Avenue, Nanshan? -+ SHENZHEN 518000 -+ CN -+ - 10-4D-15 (hex) Viaanix Inc - 104D15 (base 16) Viaanix Inc - 434 N Main St. -@@ -190403,18 +190619,6 @@ EC6073 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Shenzhen Nanshan District 518000 - CN - --C8-54-A4 (hex) Infinix mobility limited --C854A4 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- --A0-09-2E (hex) zte corporation --A0092E (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- - B0-AF-F7 (hex) Shenzhen Yipingfang Network Technology Co., Ltd. - B0AFF7 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. - 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China -@@ -190433,12 +190637,18 @@ B0AFF7 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. - Changsha HUNAN 410329 - CN - --74-DD-CB (hex) China Leadshine Technology Co.,Ltd --74DDCB (base 16) China Leadshine Technology Co.,Ltd -- 9-11, Building A3, Nanshan Ipark, No.1001 Xueyuan Avenue, Nanshan? -- SHENZHEN 518000 -+A0-09-2E (hex) zte corporation -+A0092E (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - -+14-75-5B (hex) Intel Corporate -+14755B (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - A8-B1-3B (hex) HP Inc. - A8B13B (base 16) HP Inc. - 10300 Energy Dr -@@ -190457,6 +190667,12 @@ C43875 (base 16) Sonos, Inc. - Reno NV 89507 - US - -+20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ - DC-A9-56 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DCA956 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - NO.18 HAIBIN ROAD, -@@ -190475,24 +190691,12 @@ BCD206 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd --20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -+CC-82-7F (hex) Advantech Technology (CHINA) Co., Ltd. -+CC827F (base 16) Advantech Technology (CHINA) Co., Ltd. -+ No.666, Han-Pu Rd. Yu-Shan -+ Kun-Shan Jiang Su 215316 - CN - --14-75-5B (hex) Intel Corporate --14755B (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --F4-E2-04 (hex) COYOTE SYSTEM --F4E204 (base 16) COYOTE SYSTEM -- 1, rue Royale -- Saint-Cloud 92210 -- FR -- - F8-4E-58 (hex) Samsung Electronics Co.,Ltd - F84E58 (base 16) Samsung Electronics Co.,Ltd - 129, Samsung-ro, Youngtongl-Gu -@@ -190505,11 +190709,29 @@ B47064 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --CC-82-7F (hex) Advantech Technology (CHINA) Co., Ltd. --CC827F (base 16) Advantech Technology (CHINA) Co., Ltd. -- No.666, Han-Pu Rd. Yu-Shan -- Kun-Shan Jiang Su 215316 -- CN -+4C-2E-5E (hex) Samsung Electronics Co.,Ltd -+4C2E5E (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+64-5D-F4 (hex) Samsung Electronics Co.,Ltd -+645DF4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+D8-10-68 (hex) Murata Manufacturing Co., Ltd. -+D81068 (base 16) Murata Manufacturing Co., Ltd. -+ 1-10-1, Higashikotari -+ Nagaokakyo-shi Kyoto 617-8555 -+ JP -+ -+5C-04-5A (hex) Company NA Stage & Light -+5C045A (base 16) Company NA Stage & Light -+ Lambertu 9 -+ M?rupe LV-2167 -+ LV - - 88-3F-0C (hex) system a.v. co., ltd. - 883F0C (base 16) system a.v. co., ltd. -@@ -190529,17 +190751,11 @@ C8BE35 (base 16) Extreme Networks, Inc. - Kulim Kedah 09000 - MY - --D8-10-68 (hex) Murata Manufacturing Co., Ltd. --D81068 (base 16) Murata Manufacturing Co., Ltd. -- 1-10-1, Higashikotari -- Nagaokakyo-shi Kyoto 617-8555 -- JP -- --5C-04-5A (hex) Company NA Stage & Light --5C045A (base 16) Company NA Stage & Light -- Lambertu 9 -- M?rupe LV-2167 -- LV -+F4-E2-04 (hex) COYOTE SYSTEM -+F4E204 (base 16) COYOTE SYSTEM -+ 1, rue Royale -+ Saint-Cloud 92210 -+ FR - - 58-C3-56 (hex) EM Microelectronic - 58C356 (base 16) EM Microelectronic -@@ -190565,17 +190781,11 @@ CCDD58 (base 16) Robert Bosch GmbH - Stuttgart 70499 - DE - --4C-2E-5E (hex) Samsung Electronics Co.,Ltd --4C2E5E (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- --64-5D-F4 (hex) Samsung Electronics Co.,Ltd --645DF4 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -+D4-E0-53 (hex) Aruba, a Hewlett Packard Enterprise Company -+D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US - - 88-FC-5D (hex) Cisco Systems, Inc - 88FC5D (base 16) Cisco Systems, Inc -@@ -190607,11 +190817,11 @@ F4C88A (base 16) Intel Corporate - Beijing 100053 - CN - --D4-E0-53 (hex) Aruba, a Hewlett Packard Enterprise Company --D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -+50-28-4A (hex) Intel Corporate -+50284A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - - 5C-A4-F4 (hex) zte corporation - 5CA4F4 (base 16) zte corporation -@@ -190625,11 +190835,11 @@ D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company - kakuda-City Miyagi-Pref 981-1595 - JP - --50-28-4A (hex) Intel Corporate --50284A (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+24-6C-60 (hex) Huawei Device Co., Ltd. -+246C60 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN - - 98-C9-7C (hex) Shenzhen iComm Semiconductor CO.,LTD - 98C97C (base 16) Shenzhen iComm Semiconductor CO.,LTD -@@ -190637,11 +190847,11 @@ D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company - Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - --24-6C-60 (hex) Huawei Device Co., Ltd. --246C60 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -+30-3E-A7 (hex) Intel Corporate -+303EA7 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - - 28-A3-31 (hex) Sierra Wireless - 28A331 (base 16) Sierra Wireless -@@ -190649,12 +190859,6 @@ D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company - Richmond BC V6V 3A4 - CA - --18-34-AF (hex) Kaonmedia CO., LTD. --1834AF (base 16) Kaonmedia CO., LTD. -- 884-3, Seongnam-daero, Bundang-gu -- Seongnam-si Gyeonggi-do 13517 -- KR -- - EC-62-60 (hex) Espressif Inc. - EC6260 (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -190667,23 +190871,23 @@ B06E72 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Chongqing China 401120 - CN - --30-3E-A7 (hex) Intel Corporate --303EA7 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - 60-7D-09 (hex) Luxshare Precision Industry Co., Ltd - 607D09 (base 16) Luxshare Precision Industry Co., Ltd - 2nd floor,A building,Sanyo New Industrial Area,West Area of Maoyi, Shajing Street,Bao'an District - Shenzhen City Guangdong Province 518100 - CN - --CC-3E-79 (hex) ARRIS Group, Inc. --CC3E79 (base 16) ARRIS Group, Inc. -- 6450 Sequence Drive -- San Diego CA 92121 -- US -+18-34-AF (hex) Kaonmedia CO., LTD. -+1834AF (base 16) Kaonmedia CO., LTD. -+ 884-3, Seongnam-daero, Bundang-gu -+ Seongnam-si Gyeonggi-do 13517 -+ KR -+ -+28-82-7C (hex) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+28827C (base 16) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+ No.17 Longmen Road -+ Changzhou JiangSu 213164 -+ CN - - 28-F5-D1 (hex) ARRIS Group, Inc. - 28F5D1 (base 16) ARRIS Group, Inc. -@@ -190697,12 +190901,6 @@ CC3E79 (base 16) ARRIS Group, Inc. - San Diego CA 92121 - US - --28-82-7C (hex) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch --28827C (base 16) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -- No.17 Longmen Road -- Changzhou JiangSu 213164 -- CN -- - 90-D4-73 (hex) vivo Mobile Communication Co., Ltd. - 90D473 (base 16) vivo Mobile Communication Co., Ltd. - No.1, vivo Road, Chang'an -@@ -190715,6 +190913,30 @@ CC3E79 (base 16) ARRIS Group, Inc. - Dongguan 523808 - CN - -+CC-3E-79 (hex) ARRIS Group, Inc. -+CC3E79 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US -+ -+00-16-A3 (hex) INGETEAM -+0016A3 (base 16) INGETEAM -+ Parque Tecnologico de Bizkaia, Edificio 110 -+ Zamudio Bizkaia 48170 -+ ES -+ -+F0-6C-5D (hex) Xiaomi Communications Co Ltd -+F06C5D (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+24-CF-24 (hex) Beijing Xiaomi Mobile Software Co., Ltd -+24CF24 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 -+ CN -+ - C8-F0-9E (hex) Espressif Inc. - C8F09E (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -190733,16 +190955,16 @@ DC5475 (base 16) Espressif Inc. - San Francisco 94158 - US - --00-16-A3 (hex) INGETEAM --0016A3 (base 16) INGETEAM -- Parque Tecnologico de Bizkaia, Edificio 110 -- Zamudio Bizkaia 48170 -- ES -+28-6F-40 (hex) Tonly Technology Co. Ltd -+286F40 (base 16) Tonly Technology Co. Ltd -+ Section 37, Zhongkai Hi-Tech Development Zone -+ Huizhou Guangdong 516006 -+ CN - --24-CF-24 (hex) Beijing Xiaomi Mobile Software Co., Ltd --24CF24 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -- The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -- Beijing Beijing 100085 -+0C-86-C7 (hex) Jabil Circuit (Guangzhou) Limited -+0C86C7 (base 16) Jabil Circuit (Guangzhou) Limited -+ Huangpu 128, JunCheng Road -+ GuangZhou Guangdong 510530 - CN - - 1C-0D-7D (hex) Apple, Inc. -@@ -190763,48 +190985,6 @@ DC5475 (base 16) Espressif Inc. - Cupertino CA 95014 - US - --F0-6C-5D (hex) Xiaomi Communications Co Ltd --F06C5D (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --40-B0-2F (hex) Miele & Cie. KG --40B02F (base 16) Miele & Cie. KG -- Carl-Miele-Straße 29 -- Gütersloh 33332 -- DE -- --18-66-F0 (hex) Jupiter Systems --1866F0 (base 16) Jupiter Systems -- 31015 Huntwood Ave -- Hayward CA 94544-7007 -- US -- --74-60-4C (hex) RØDE --74604C (base 16) RØDE -- 107 Carnarvon St -- Silverwater NSW 2128 -- AU -- --28-6F-40 (hex) Tonly Technology Co. Ltd --286F40 (base 16) Tonly Technology Co. Ltd -- Section 37, Zhongkai Hi-Tech Development Zone -- Huizhou Guangdong 516006 -- CN -- --BC-C7-DA (hex) Earda Technologies co Ltd --BCC7DA (base 16) Earda Technologies co Ltd -- Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -- Guangzhou Guangdong 511455 -- CN -- --0C-86-C7 (hex) Jabil Circuit (Guangzhou) Limited --0C86C7 (base 16) Jabil Circuit (Guangzhou) Limited -- Huangpu 128, JunCheng Road -- GuangZhou Guangdong 510530 -- CN -- - 14-94-6C (hex) Apple, Inc. - 14946C (base 16) Apple, Inc. - 1 Infinite Loop -@@ -190817,11 +190997,17 @@ BCC7DA (base 16) Earda Technologies co Ltd - Piscataway NJ 08554 - US - --58-00-32 (hex) Genexis B.V. --580032 (base 16) Genexis B.V. -- Lodewijkstraat 1A -- Eindhoven 5652AC -- NL -+74-60-4C (hex) RØDE -+74604C (base 16) RØDE -+ 107 Carnarvon St -+ Silverwater NSW 2128 -+ AU -+ -+40-B0-2F (hex) Miele & Cie. KG -+40B02F (base 16) Miele & Cie. KG -+ Carl-Miele-Straße 29 -+ Gütersloh 33332 -+ DE - - B4-7D-76 (hex) KNS Group LLC - B47D76 (base 16) KNS Group LLC -@@ -190835,18 +191021,6 @@ C0AD97 (base 16) TECNO MOBILE LIMITED - Hong Kong Hong Kong 999077 - HK - --B0-38-E2 (hex) Wanan Hongsheng Electronic Co.Ltd --B038E2 (base 16) Wanan Hongsheng Electronic Co.Ltd -- 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province -- Wanan China/jiangxi 343800 -- CN -- --4C-53-69 (hex) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd --4C5369 (base 16) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -- No.8,Gang’an 2nd Road,Jiangbei District,Chongqing,P.R.China -- ChongQing ChongQing 400025 -- CN -- - 70-A9-83 (hex) Cisco Systems, Inc - 70A983 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -190859,22 +191033,16 @@ BCFAEB (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --74-76-7D (hex) shenzhen kexint technology co.,ltd --74767D (base 16) shenzhen kexint technology co.,ltd -- 5th Floor, Building 2, Chunhu Industrial Park, Dongshen Road, Pinghu Street, Longgang District, Shenzhen City -- shenzhen guangdong 518000 -- CN -- --E0-48-D8 (hex) Guangzhi Wulian Technology(Guangzhou) Co., Ltd --E048D8 (base 16) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -- Room 1407, Fuli yingkai building, No. 16, Huaxia Road, Tianhe District, -- Guangzhou 510623 -- CN -+18-66-F0 (hex) Jupiter Systems -+1866F0 (base 16) Jupiter Systems -+ 31015 Huntwood Ave -+ Hayward CA 94544-7007 -+ US - --F8-E4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD --F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -+BC-C7-DA (hex) Earda Technologies co Ltd -+BCC7DA (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 - CN - - 84-85-53 (hex) Biznes Systema Telecom, LLC -@@ -190883,6 +191051,12 @@ F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - Moscow 121087 - RU - -+58-00-32 (hex) Genexis B.V. -+580032 (base 16) Genexis B.V. -+ Lodewijkstraat 1A -+ Eindhoven 5652AC -+ NL -+ - D8-88-63 (hex) HUAWEI TECHNOLOGIES CO.,LTD - D88863 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -190901,6 +191075,36 @@ C03E50 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - -+4C-53-69 (hex) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+4C5369 (base 16) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+ No.8,Gang’an 2nd Road,Jiangbei District,Chongqing,P.R.China -+ ChongQing ChongQing 400025 -+ CN -+ -+74-76-7D (hex) shenzhen kexint technology co.,ltd -+74767D (base 16) shenzhen kexint technology co.,ltd -+ 5th Floor, Building 2, Chunhu Industrial Park, Dongshen Road, Pinghu Street, Longgang District, Shenzhen City -+ shenzhen guangdong 518000 -+ CN -+ -+B0-38-E2 (hex) Wanan Hongsheng Electronic Co.Ltd -+B038E2 (base 16) Wanan Hongsheng Electronic Co.Ltd -+ 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province -+ Wanan China/jiangxi 343800 -+ CN -+ -+E0-48-D8 (hex) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+E048D8 (base 16) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+ Room 1407, Fuli yingkai building, No. 16, Huaxia Road, Tianhe District, -+ Guangzhou 510623 -+ CN -+ -+F8-E4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ - A0-C9-8B (hex) Nokia Solutions and Networks GmbH & Co. KG - A0C98B (base 16) Nokia Solutions and Networks GmbH & Co. KG - Werinherstrasse 91 -@@ -190913,18 +191117,6 @@ A0C98B (base 16) Nokia Solutions and Networks GmbH & Co. KG - Dongguan Guangdong 523808 - CN - --4C-9D-22 (hex) ACES Co.,Ltd --4C9D22 (base 16) ACES Co.,Ltd -- TianGong Avenue #916, Tianfu New Area -- ChengDu Sichuan Province 610000 -- CN -- --88-C9-E8 (hex) Sony Corporation --88C9E8 (base 16) Sony Corporation -- Sony City Osaki 2-10-1 -- Shinagawa-ku Tokyo 141-8610 -- JP -- - B8-F0-B9 (hex) zte corporation - B8F0B9 (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -@@ -190937,22 +191129,28 @@ B8F0B9 (base 16) zte corporation - Gwangju Gwangsan-gu 506-731 - KR - --D4-43-0E (hex) Zhejiang Dahua Technology Co., Ltd. --D4430E (base 16) Zhejiang Dahua Technology Co., Ltd. -- No.1199,Waterfront Road -- Hangzhou Zhejiang 310053 -+4C-9D-22 (hex) ACES Co.,Ltd -+4C9D22 (base 16) ACES Co.,Ltd -+ TianGong Avenue #916, Tianfu New Area -+ ChengDu Sichuan Province 610000 - CN - -+88-C9-E8 (hex) Sony Corporation -+88C9E8 (base 16) Sony Corporation -+ Sony City Osaki 2-10-1 -+ Shinagawa-ku Tokyo 141-8610 -+ JP -+ - 00-73-8D (hex) Shenzhen TINNO Mobile Technology Corp. - 00738D (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili - Nanshan District, Shenzhen PRC 518053 - CN - --44-D3-AD (hex) Shenzhen TINNO Mobile Technology Corp. --44D3AD (base 16) Shenzhen TINNO Mobile Technology Corp. -- Building, No.33, Xiandong Rd, Xili -- Nanshan District, Shenzhen PRC 518053 -+D4-43-0E (hex) Zhejiang Dahua Technology Co., Ltd. -+D4430E (base 16) Zhejiang Dahua Technology Co., Ltd. -+ No.1199,Waterfront Road -+ Hangzhou Zhejiang 310053 - CN - - F8-5E-0B (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -@@ -190961,12 +191159,36 @@ F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Chongqing China 401120 - CN - -+44-D3-AD (hex) Shenzhen TINNO Mobile Technology Corp. -+44D3AD (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ - 94-D3-31 (hex) Xiaomi Communications Co Ltd - 94D331 (base 16) Xiaomi Communications Co Ltd - #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road - Beijing Haidian District 100085 - CN - -+34-DD-04 (hex) Minut AB -+34DD04 (base 16) Minut AB -+ Baltzarsgatan 23 -+ Malmö 21136 -+ SE -+ -+60-1E-98 (hex) Axevast Technology -+601E98 (base 16) Axevast Technology -+ 5F., No. 20, Guanqian Road, Zhongzheng District -+ Taipei City 100007 -+ TW -+ -+A8-F7-D9 (hex) Mist Systems, Inc. -+A8F7D9 (base 16) Mist Systems, Inc. -+ 1601 South De Anza Blvd, Suite 248 -+ Cupertino CA 95014 -+ US -+ - 5C-8C-30 (hex) Taicang T&W Electronics - 5C8C30 (base 16) Taicang T&W Electronics - 89# Jiang Nan RD -@@ -190985,18 +191207,6 @@ F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - San Jose CA 94568 - US - --34-DD-04 (hex) Minut AB --34DD04 (base 16) Minut AB -- Baltzarsgatan 23 -- Malmö 21136 -- SE -- --E8-AC-23 (hex) HUAWEI TECHNOLOGIES CO.,LTD --E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- - 68-D9-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 68D927 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -191033,17 +191243,11 @@ E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Shanghai 200233 - CN - --60-1E-98 (hex) Axevast Technology --601E98 (base 16) Axevast Technology -- 5F., No. 20, Guanqian Road, Zhongzheng District -- Taipei City 100007 -- TW -- --A8-F7-D9 (hex) Mist Systems, Inc. --A8F7D9 (base 16) Mist Systems, Inc. -- 1601 South De Anza Blvd, Suite 248 -- Cupertino CA 95014 -- US -+E8-AC-23 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN - - 2C-3B-70 (hex) AzureWave Technology Inc. - 2C3B70 (base 16) AzureWave Technology Inc. -@@ -191069,6 +191273,12 @@ F4227A (base 16) Guangdong Seneasy Intelligent Technology Co., Ltd. - Piscataway NJ 08554 - US - -+DC-8D-B7 (hex) ATW TECHNOLOGY, INC. -+DC8DB7 (base 16) ATW TECHNOLOGY, INC. -+ 1F, No.236 Ba’ai Street, Shulin District -+ New Taipei City 23845 -+ TW -+ - A4-75-B9 (hex) Samsung Electronics Co.,Ltd - A475B9 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -191081,18 +191291,18 @@ A475B9 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --6C-60-D0 (hex) Huawei Device Co., Ltd. --6C60D0 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- - 1C-F8-D0 (hex) Samsung Electronics Co.,Ltd - 1CF8D0 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong - Gumi Gyeongbuk 730-350 - KR - -+6C-60-D0 (hex) Huawei Device Co., Ltd. -+6C60D0 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ - 64-0E-6A (hex) SECO-LARM USA Inc - 640E6A (base 16) SECO-LARM USA Inc - 16842 Millikan -@@ -191105,12 +191315,6 @@ A475B9 (base 16) Samsung Electronics Co.,Ltd - San Jose CA 95110 - US - --DC-8D-B7 (hex) ATW TECHNOLOGY, INC. --DC8DB7 (base 16) ATW TECHNOLOGY, INC. -- 1F, No.236 Ba’ai Street, Shulin District -- New Taipei City 23845 -- TW -- - 70-20-84 (hex) Hon Hai Precision Industry Co., Ltd. - 702084 (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen -@@ -191123,12 +191327,6 @@ DC8DB7 (base 16) ATW TECHNOLOGY, INC. - ShenZhen GuangDong 518109 - CN - --1C-A0-B8 (hex) Hon Hai Precision Industry Co., Ltd. --1CA0B8 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- - 18-AA-1E (hex) Shenzhen Skyworth Digital Technology CO., Ltd - 18AA1E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd - 4F,Block A, Skyworth?Building, -@@ -191147,6 +191345,18 @@ D452EE (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - -+1C-A0-B8 (hex) Hon Hai Precision Industry Co., Ltd. -+1CA0B8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ -+E8-EF-05 (hex) MIND TECH INTERNATIONAL LIMITED -+E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED -+ FLAT E 2/F RIALTO MANSION 183 KING'S RD NORTH POINT HK -+ Hong Kong 999077 -+ HK -+ - 90-21-06 (hex) SKY UK LIMITED - 902106 (base 16) SKY UK LIMITED - 130 Kings Road -@@ -191165,11 +191375,17 @@ F08756 (base 16) Zyxel Communications Corporation - Hsichu Taiwan 300 - TW - --E8-EF-05 (hex) MIND TECH INTERNATIONAL LIMITED --E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED -- FLAT E 2/F RIALTO MANSION 183 KING'S RD NORTH POINT HK -- Hong Kong 999077 -- HK -+18-C3-00 (hex) Nokia -+18C300 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+D4-4D-77 (hex) Nokia -+D44D77 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA - - 48-27-E2 (hex) Espressif Inc. - 4827E2 (base 16) Espressif Inc. -@@ -191177,6 +191393,12 @@ E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED - Shanghai Shanghai 201203 - CN - -+F4-6D-3F (hex) Intel Corporate -+F46D3F (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 58-B3-8F (hex) New H3C Technologies Co., Ltd - 58B38F (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District -@@ -191189,30 +191411,12 @@ E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED - Zhenjiang Jiangsu 212003 - CN - --F4-6D-3F (hex) Intel Corporate --F46D3F (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - 6C-72-4A (hex) Onkyo Technology K.K. - 6C724A (base 16) Onkyo Technology K.K. - Lux Building (5th floor),1-1-41 Kawamata - Higashiosaka City Osaka 577-0063 - JP - --18-C3-00 (hex) Nokia --18C300 (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -- --D4-4D-77 (hex) Nokia --D44D77 (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -- - DC-05-39 (hex) Cisco Systems, Inc - DC0539 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -191225,6 +191429,18 @@ DC0539 (base 16) Cisco Systems, Inc - East Greenwich RI 02818 - US - -+E0-F3-18 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+E0F318 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+C4-64-F2 (hex) Infinix mobility limited -+C464F2 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ - B0-1F-47 (hex) Heights Telecom T ltd - B01F47 (base 16) Heights Telecom T ltd - Moshe Lerer 15 -@@ -191279,30 +191495,12 @@ BC1541 (base 16) Nokia - Kanata Ontario K2K 2E6 - CA - --E0-F3-18 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --E0F318 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -- --C4-64-F2 (hex) Infinix mobility limited --C464F2 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- - 94-6D-AE (hex) Mellanox Technologies, Inc. - 946DAE (base 16) Mellanox Technologies, Inc. - 350 Oakmead Parkway, Suite 100 - Sunnyvale CA 94085 - US - --40-FD-F3 (hex) AMPAK Technology,Inc. --40FDF3 (base 16) AMPAK Technology,Inc. -- 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -- Hsinchu Hsinchu,Taiwan R.O.C. 30352 -- TW -- - E4-A6-34 (hex) Universal Electronics, Inc. - E4A634 (base 16) Universal Electronics, Inc. - 201 E. Sandpointe Ave -@@ -191315,8 +191513,92 @@ E4A634 (base 16) Universal Electronics, Inc. - Racho Santa MArgarita CA 92688 - US - -+50-63-91 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+506391 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+E8-A3-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E8A34E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+04-18-92 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+041892 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+14-65-6A (hex) HUAWEI TECHNOLOGIES CO.,LTD -+14656A (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+AC-B6-87 (hex) Arcadyan Corporation -+ACB687 (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW -+ -+6C-B7-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+6CB7E2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C4-75-EA (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C475EA (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+90-25-F2 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+9025F2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ - 38-7C-76 (hex) Universal Global Scientific Industrial Co., Ltd. - 387C76 (base 16) Universal Global Scientific Industrial Co., Ltd. - 141, Lane 351, Taiping Road, Sec.1,Tsao Tuen - Nan-Tou Taiwan 54261 - TW -+ -+40-FD-F3 (hex) AMPAK Technology,Inc. -+40FDF3 (base 16) AMPAK Technology,Inc. -+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -+ Hsinchu Hsinchu,Taiwan R.O.C. 30352 -+ TW -+ -+EC-E6-1D (hex) Huawei Device Co., Ltd. -+ECE61D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+48-6D-BB (hex) Vestel Elektronik San ve Tic. A.S. -+486DBB (base 16) Vestel Elektronik San ve Tic. A.S. -+ Organize san -+ Manisa Turket 45030 -+ TR -+ -+4C-63-AD (hex) Huawei Device Co., Ltd. -+4C63AD (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+DC-DB-27 (hex) Huawei Device Co., Ltd. -+DCDB27 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+CC-96-E5 (hex) Dell Inc. -+CC96E5 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt -index 18806ccc14..3ff16ce0bf 100644 ---- a/hwdb.d/ma-medium.txt -+++ b/hwdb.d/ma-medium.txt -@@ -4856,12 +4856,6 @@ C00000-CFFFFF (base 16) Shenzhen Micro&Nano Perception Computing Technology - Tokyo Minato 108-0023 - JP - --0C-86-29 (hex) HONGKONG SAINT TECH INDUSTRIAL LIMITED --900000-9FFFFF (base 16) HONGKONG SAINT TECH INDUSTRIAL LIMITED -- RM 1904A 19/F LUCKY COMMERCIAL CENTRE NO.103 DES VOEUX ROAD WEST HK -- HONGKONG 999077 -- CN -- - 0C-86-29 (hex) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - D00000-DFFFFF (base 16) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - 27 Shucun West Road, Haidian District, -@@ -4874,6 +4868,12 @@ D00000-DFFFFF (base 16) BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD - ShenZhen GuangDong 518055 - CN - -+0C-86-29 (hex) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+900000-9FFFFF (base 16) HONGKONG SAINT TECH INDUSTRIAL LIMITED -+ RM 1904A 19/F LUCKY COMMERCIAL CENTRE NO.103 DES VOEUX ROAD WEST HK -+ HONGKONG 999077 -+ CN -+ - 0C-86-29 (hex) Akribis Systems - B00000-BFFFFF (base 16) Akribis Systems - Block 5012 Techplace II, #01-05 Ang Mo Kio Avenue 5 -@@ -4892,12 +4892,6 @@ B00000-BFFFFF (base 16) Akribis Systems - Rydalmere NSW 2116 - AU - --6C-93-08 (hex) WATERFORD CONSULTANTS LLC --100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC -- 7430 NEW TECHNOLOGY WAY, Suite 150 -- FREDERICK 21703 -- US -- - 50-FF-99 (hex) COYOTE SYSTEM - 100000-1FFFFF (base 16) COYOTE SYSTEM - 24 quai Gallieni -@@ -4916,10 +4910,10 @@ B00000-BFFFFF (base 16) Akribis Systems - Kunshan Jiangsu 215324 - CN - --38-1F-26 (hex) Avon Protection --800000-8FFFFF (base 16) Avon Protection -- 503 8th Street -- Cadillac MI 49601 -+6C-93-08 (hex) WATERFORD CONSULTANTS LLC -+100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC -+ 7430 NEW TECHNOLOGY WAY, Suite 150 -+ FREDERICK 21703 - US - - 30-43-D7 (hex) DIGICITI Technology Co.,Ltd -@@ -4934,6 +4928,18 @@ B00000-BFFFFF (base 16) Akribis Systems - Suzhou 215021 - CN - -+38-1F-26 (hex) Avon Protection -+800000-8FFFFF (base 16) Avon Protection -+ 503 8th Street -+ Cadillac MI 49601 -+ US -+ -+18-A5-9C (hex) Thermia AB -+500000-5FFFFF (base 16) Thermia AB -+ Snickaregatan 1 -+ Arvika 67134 -+ SE -+ - 38-1F-26 (hex) SMS Evoko Group AB - 900000-9FFFFF (base 16) SMS Evoko Group AB - Hastholmsvagen 32 -@@ -4946,12 +4952,6 @@ B00000-BFFFFF (base 16) CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFO - MANAUS AMAZONAS 69041-025 - BR - --18-A5-9C (hex) Thermia AB --500000-5FFFFF (base 16) Thermia AB -- Snickaregatan 1 -- Arvika 67134 -- SE -- - 18-A5-9C (hex) BlueEyes Technology - C00000-CFFFFF (base 16) BlueEyes Technology - 7F-3, No.200, Sec. 4, Wenxin Rd., -@@ -4970,18 +4970,6 @@ E00000-EFFFFF (base 16) Globe Tracker ApS - kobenhavn State / Province* 1401 - DK - --C4-A1-0E (hex) HYOSUNG HEAVY INDUSTRIES --000000-0FFFFF (base 16) HYOSUNG HEAVY INDUSTRIES -- 119, Mapo-daero (Gongdeok-dong), Mapo-gu -- Seoul 04144 -- KR -- --C4-A1-0E (hex) Consolinno Energy GmbH --300000-3FFFFF (base 16) Consolinno Energy GmbH -- Franz-Mayer-Straße 1 -- Regensburg Bayern 93053 -- DE -- - C4-A1-0E (hex) Connectlab SRL - D00000-DFFFFF (base 16) Connectlab SRL - via donatello 30 -@@ -4994,6 +4982,18 @@ C4-A1-0E (hex) BARTEC PIXAVI AS - SANDNES Rogaland 4313 - NO - -+C4-A1-0E (hex) HYOSUNG HEAVY INDUSTRIES -+000000-0FFFFF (base 16) HYOSUNG HEAVY INDUSTRIES -+ 119, Mapo-daero (Gongdeok-dong), Mapo-gu -+ Seoul 04144 -+ KR -+ -+C4-A1-0E (hex) Consolinno Energy GmbH -+300000-3FFFFF (base 16) Consolinno Energy GmbH -+ Franz-Mayer-Straße 1 -+ Regensburg Bayern 93053 -+ DE -+ - C4-A1-0E (hex) Ayla Networks (Shenzhen) Co., Ltd. - 800000-8FFFFF (base 16) Ayla Networks (Shenzhen) Co., Ltd. - Room 1501, Building B, Innovation Building, No.198 Daxin Road, Majialong Community ,Nantou Street,Nanshan District, -@@ -5012,12 +5012,6 @@ E00000-EFFFFF (base 16) KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD) - Ningbo ZheJiang Province, P.R.C. 315400 - CN - --80-7B-85 (hex) SCALA Digital Technology(Ningbo) CO, LTD --C00000-CFFFFF (base 16) SCALA Digital Technology(Ningbo) CO, LTD -- 7 Hong Da Road, Hong Tang Industrial Park Zone A -- Ningbo Zhejiang 315040 -- CN -- - 80-02-F4 (hex) Baicells Technologies Co., Ltd - B00000-BFFFFF (base 16) Baicells Technologies Co., Ltd - 10-11F,AL, No.1 Zhongguancun, Haidian -@@ -5030,6 +5024,12 @@ B00000-BFFFFF (base 16) Baicells Technologies Co., Ltd - Suwon-si Gyeonggi-do 16371 - KR - -+80-7B-85 (hex) SCALA Digital Technology(Ningbo) CO, LTD -+C00000-CFFFFF (base 16) SCALA Digital Technology(Ningbo) CO, LTD -+ 7 Hong Da Road, Hong Tang Industrial Park Zone A -+ Ningbo Zhejiang 315040 -+ CN -+ - 8C-51-09 (hex) Heliox Automotive B.V. - 500000-5FFFFF (base 16) Heliox Automotive B.V. - De Waal 24 -@@ -5042,6 +5042,12 @@ B00000-BFFFFF (base 16) Baicells Technologies Co., Ltd - Norcross GA 30093 - US - -+0C-7F-ED (hex) Annapurna labs -+A00000-AFFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ - FC-61-79 (hex) Qisda Corporation - 500000-5FFFFF (base 16) Qisda Corporation - No. 157, Shanying Rd., Gueishan Dist., Taoyuan City 33341, Taiwan -@@ -5054,12 +5060,6 @@ FC-61-79 (hex) Qisda Corporation - Foshan 528000 - CN - --0C-7F-ED (hex) Annapurna labs --A00000-AFFFFF (base 16) Annapurna labs -- Matam Scientific Industries Center, Building 8.2 -- Mail box 15123 Haifa 3508409 -- IL -- - FC-61-79 (hex) Shenzhen Xmitech Electronic Co.,Ltd - C00000-CFFFFF (base 16) Shenzhen Xmitech Electronic Co.,Ltd - Room 8B1888, Block AB, New Energy Building, No.2239, Nanhai Avenue, Nanguang Community, Nanshan Street, Nanshan District, Shenzhen -@@ -5072,6 +5072,12 @@ C00000-CFFFFF (base 16) Shenzhen Xmitech Electronic Co.,Ltd - Shenzhen Guangdong 518052 - CN - -+30-3D-51 (hex) Labman Automation -+B00000-BFFFFF (base 16) Labman Automation -+ Labman Automation LtdSeamer Hill -+ Stokesley North Yorkshire TS9 5NQ -+ GB -+ - 4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD - 400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD - Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district -@@ -9644,23 +9650,17 @@ D00000-DFFFFF (base 16) Shenzhen Vitalitim Technology Co., Ltd - Guangzhou 511400 - CN - --10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. --900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -- No.146, Sec. 1,Donxing Rd. -- Zhubei City, Hsinchu County Taiwan 302058 -- TW -- - 10-54-D2 (hex) Raylogic Control Systems Private Limited - 400000-4FFFFF (base 16) Raylogic Control Systems Private Limited - Unit 6, 3rd floor, HILIFE, PM Road, Santacruz West - Mumbai Maharashtra 400054 - IN - --10-54-D2 (hex) Sybersense --500000-5FFFFF (base 16) Sybersense -- Unit 10, 16F, Hi-Tech Industrial Centre, Block A, 5-21 Pat Tin Par Street, Tsuen Wan NT, HK -- Hong Kong 999077 -- CN -+10-54-D2 (hex) Bamboo Dynamics Corporation., Ltd. -+900000-9FFFFF (base 16) Bamboo Dynamics Corporation., Ltd. -+ No.146, Sec. 1,Donxing Rd. -+ Zhubei City, Hsinchu County Taiwan 302058 -+ TW - - 10-54-D2 (hex) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD - 700000-7FFFFF (base 16) SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD -@@ -9686,6 +9686,12 @@ D00000-DFFFFF (base 16) Shenzhen Vitalitim Technology Co., Ltd - Edison NJ 08837 - US - -+10-54-D2 (hex) Sybersense -+500000-5FFFFF (base 16) Sybersense -+ Unit 10, 16F, Hi-Tech Industrial Centre, Block A, 5-21 Pat Tin Par Street, Tsuen Wan NT, HK -+ Hong Kong 999077 -+ CN -+ - 0C-86-29 (hex) MyGregor Ltd - 800000-8FFFFF (base 16) MyGregor Ltd - 11A, Carnegie str. -@@ -9698,18 +9704,18 @@ D00000-DFFFFF (base 16) Annapurna labs - Mail box 15123 Haifa 3508409 - IL - --6C-93-08 (hex) Shenzhen DOOGEE Hengtong Technology CO., LTD --900000-9FFFFF (base 16) Shenzhen DOOGEE Hengtong Technology CO., LTD -- B, 2/F, Building A4, Silicon Valley Power Digital Industrial Park, No. 22, Dafu Industrial Zone, Guanlan Aobei Community, Guanlan Street, Longhua New District -- Shenzhen Guangdong 518000 -- CN -- - 6C-93-08 (hex) Shenzhen TOPWAY Technology Co.,LTD - A00000-AFFFFF (base 16) Shenzhen TOPWAY Technology Co.,LTD - Bld.20 Zone 5, Baiwangxin Industry Park, Songbai Rd.Nanshan Dist - ShenZhen Guangdong 518055 - CN - -+6C-93-08 (hex) Shenzhen DOOGEE Hengtong Technology CO., LTD -+900000-9FFFFF (base 16) Shenzhen DOOGEE Hengtong Technology CO., LTD -+ B, 2/F, Building A4, Silicon Valley Power Digital Industrial Park, No. 22, Dafu Industrial Zone, Guanlan Aobei Community, Guanlan Street, Longhua New District -+ Shenzhen Guangdong 518000 -+ CN -+ - 30-43-D7 (hex) SYMES SA - 000000-0FFFFF (base 16) SYMES SA - 4 allée technopolis, chemin des presses -@@ -9734,6 +9740,12 @@ E00000-EFFFFF (base 16) ANDDORO LLC - New York NY 10018 - US - -+38-1F-26 (hex) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+500000-5FFFFF (base 16) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -+ Building3, No.416DdongshengAvenue, Wuzhen, Tongxiang, -+ Jiaxing 314000 -+ CN -+ - 38-1F-26 (hex) Synamedia - 200000-2FFFFF (base 16) Synamedia - Luipaardstraat 12 -@@ -9746,12 +9758,6 @@ C00000-CFFFFF (base 16) Jade Bird Fire Co., Ltd. - Beijing 100871 - CN - --38-1F-26 (hex) Zhejiang Huazhou Intelligent Equipment Co,. Ltd --500000-5FFFFF (base 16) Zhejiang Huazhou Intelligent Equipment Co,. Ltd -- Building3, No.416DdongshengAvenue, Wuzhen, Tongxiang, -- Jiaxing 314000 -- CN -- - 18-A5-9C (hex) Omwave - 000000-0FFFFF (base 16) Omwave - 5 rue Barbes -@@ -9770,11 +9776,11 @@ C00000-CFFFFF (base 16) Jade Bird Fire Co., Ltd. - nanjing 211100 - CN - --1C-59-74 (hex) Topway Global Technology Limited --800000-8FFFFF (base 16) Topway Global Technology Limited -- Room 1003, 10 / F, Tower 1, Lippo Centre, 89 Queensway, Hong Kong -- Hong Kong Hong Kong 999077 -- HK -+1C-59-74 (hex) Shenzhen Geshem Technology Co Ltd -+D00000-DFFFFF (base 16) Shenzhen Geshem Technology Co Ltd -+ 12th Floor, Block B, Building 7, International Innovation Valley -+ Shenzhen Gunagdong 518000 -+ CN - - 1C-59-74 (hex) King-On Technology Ltd. - C00000-CFFFFF (base 16) King-On Technology Ltd. -@@ -9782,11 +9788,11 @@ C00000-CFFFFF (base 16) King-On Technology Ltd. - New Taipei Taiwan 23146 - TW - --1C-59-74 (hex) Shenzhen Geshem Technology Co Ltd --D00000-DFFFFF (base 16) Shenzhen Geshem Technology Co Ltd -- 12th Floor, Block B, Building 7, International Innovation Valley -- Shenzhen Gunagdong 518000 -- CN -+1C-59-74 (hex) Topway Global Technology Limited -+800000-8FFFFF (base 16) Topway Global Technology Limited -+ Room 1003, 10 / F, Tower 1, Lippo Centre, 89 Queensway, Hong Kong -+ Hong Kong Hong Kong 999077 -+ HK - - 18-A5-9C (hex) Annapurna labs - D00000-DFFFFF (base 16) Annapurna labs -@@ -9866,12 +9872,6 @@ C00000-CFFFFF (base 16) shenzhen newbridge communication equipment CO.,LTD - Shenzhen Guangdong 518057 - CN - --8C-51-09 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION --A00000-AFFFFF (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -- NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -- Suzhou 215021 -- CN -- - 8C-51-09 (hex) TianJin JointOptic Technology Co., LTD. - 000000-0FFFFF (base 16) TianJin JointOptic Technology Co., LTD. - Floor 3, Building 6, Teda Service Outsourcing Industrial Park, 19 Xinhuan West Road, Binhai New Area, -@@ -9884,10 +9884,10 @@ A00000-AFFFFF (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - Shenzhen Guangdong 518100 - CN - --8C-51-09 (hex) Beijing Superhexa Century Technology Co., Ltd. --B00000-BFFFFF (base 16) Beijing Superhexa Century Technology Co., Ltd. -- Room 1022, 1F, Zone A, No.1, South Back Street, Anningzhuang, Haidian District, Beijing -- Beijing 100010 -+8C-51-09 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+A00000-AFFFFF (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION -+ NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -+ Suzhou 215021 - CN - - E4-95-6E (hex) Tband srl -@@ -9896,24 +9896,30 @@ E4-95-6E (hex) Tband srl - PORTOGRUARO Venezia 30026 - IT - -+8C-51-09 (hex) Beijing Superhexa Century Technology Co., Ltd. -+B00000-BFFFFF (base 16) Beijing Superhexa Century Technology Co., Ltd. -+ Room 1022, 1F, Zone A, No.1, South Back Street, Anningzhuang, Haidian District, Beijing -+ Beijing 100010 -+ CN -+ - 0C-7F-ED (hex) ALT Co., Ltd. - D00000-DFFFFF (base 16) ALT Co., Ltd. - #1201, 8, Seongnam-dearo 331beon-gil - Bundang-gu, Seongnam-si Gyeonggi-do 13558 - KR - --0C-7F-ED (hex) Shenzhen ORVIBO Technology Co., Ltd. --900000-9FFFFF (base 16) Shenzhen ORVIBO Technology Co., Ltd. -- F7, Block A7, Nanshan I Park, No.1001 XueYuan Avenue , NanShan District, ShenZhen 518055 PRC. -- shenzhen 518000 -- CN -- - 0C-7F-ED (hex) Netweb Technologies India Pvt Ltd - 600000-6FFFFF (base 16) Netweb Technologies India Pvt Ltd - Plot H1, Pocket-9, FIT,Sector-57, Ballabhgarh - Faridabad Haryana 121004 - IN - -+0C-7F-ED (hex) Shenzhen ORVIBO Technology Co., Ltd. -+900000-9FFFFF (base 16) Shenzhen ORVIBO Technology Co., Ltd. -+ F7, Block A7, Nanshan I Park, No.1001 XueYuan Avenue , NanShan District, ShenZhen 518055 PRC. -+ shenzhen 518000 -+ CN -+ - FC-61-79 (hex) Kvaliteta Systems and Solutions Private Limited - 700000-7FFFFF (base 16) Kvaliteta Systems and Solutions Private Limited - 2207 Yamuna Building Techno Park Phase 3 -@@ -14783,6 +14789,12 @@ A00000-AFFFFF (base 16) Pavana Technologies JSC. - Vinh Phuc 35000 - VN - -+10-54-D2 (hex) COSMO AIOT TECHNOLOGY CO LTD -+E00000-EFFFFF (base 16) COSMO AIOT TECHNOLOGY CO LTD -+ Haier Information Industrial Complex, No.1 HaierRoad -+ Qingdao Shandong 266101 -+ CN -+ - 10-54-D2 (hex) GIPS Technology Co., Ltd. - 000000-0FFFFF (base 16) GIPS Technology Co., Ltd. - Rm. 2, 6F., No. 395, Sec. 1, Linsen Rd., East Dist. -@@ -14807,12 +14819,6 @@ C00000-CFFFFF (base 16) LUXSHARE-ICT Co., Ltd. - Taipei City Taiwan 114754 - TW - --10-54-D2 (hex) COSMO AIOT TECHNOLOGY CO LTD --E00000-EFFFFF (base 16) COSMO AIOT TECHNOLOGY CO LTD -- Haier Information Industrial Complex, No.1 HaierRoad -- Qingdao Shandong 266101 -- CN -- - 0C-86-29 (hex) SHENZHEN YINGMU TECHNOLOGY.,LTD - C00000-CFFFFF (base 16) SHENZHEN YINGMU TECHNOLOGY.,LTD - 8 / F, Zone D, building F1, TCL International E city, Shuguang community, Xili street, Nanshan District, -@@ -14837,12 +14843,6 @@ E00000-EFFFFF (base 16) FX TECHNOLOGY LIMITED - Karlsruhe 76131 - DE - --30-43-D7 (hex) Shenzhen juduoping Technology Co.,Ltd --100000-1FFFFF (base 16) Shenzhen juduoping Technology Co.,Ltd -- Baoan Xin'an Streat -- Shenzhen 002052 -- CN -- - 30-43-D7 (hex) Sprocomm Technologies Co., Ltd.Guangming Branch - 600000-6FFFFF (base 16) Sprocomm Technologies Co., Ltd.Guangming Branch - Area A 3rd Floor, Area A 5rd Floor and 6th Floor, 301, building 2, 7th Industrial Park, Yulv Community,Yutang Street, Guangming District, -@@ -14855,6 +14855,12 @@ C00000-CFFFFF (base 16) Shenzhen haichangxing Technology Co., Ltd. - SHENZHEN GUANGZHOU 518000 - CN - -+30-43-D7 (hex) Shenzhen juduoping Technology Co.,Ltd -+100000-1FFFFF (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ - 30-43-D7 (hex) Guangdong Hongqin Telecom Technology Co. Ltd. - E00000-EFFFFF (base 16) Guangdong Hongqin Telecom Technology Co. Ltd. - 10 Keyuan Road, Songshan Lake -@@ -14867,18 +14873,18 @@ E00000-EFFFFF (base 16) Guangdong Hongqin Telecom Technology Co. Ltd. - Bengaluru Karnataka 560100 - IN - --18-A5-9C (hex) Erba Lachema s.r.o. --A00000-AFFFFF (base 16) Erba Lachema s.r.o. -- Karasek1d -- Brno 62100 -- CZ -- - 18-A5-9C (hex) ePower Network Solution Co., Ltd. - 700000-7FFFFF (base 16) ePower Network Solution Co., Ltd. - No. 2, Aly. 1, Ln. 85, Xinshu Rd., Xinzhuang Dist., - New Taipei City , 242063 - TW - -+18-A5-9C (hex) Erba Lachema s.r.o. -+A00000-AFFFFF (base 16) Erba Lachema s.r.o. -+ Karasek1d -+ Brno 62100 -+ CZ -+ - 1C-59-74 (hex) Shenzhen Hanshine Technology Co.Ltd. - 000000-0FFFFF (base 16) Shenzhen Hanshine Technology Co.Ltd. - Buiding 2 ,row 3,number 2 industrail zone,yulv community,Yutang street -@@ -14891,12 +14897,24 @@ A00000-AFFFFF (base 16) Erba Lachema s.r.o. - Chongqing 400000 - CN - -+6C-15-24 (hex) Telsonic AG -+100000-1FFFFF (base 16) Telsonic AG -+ Industriestrasse 6b -+ Bronschhofen St.Gallen 9552 -+ CH -+ - 18-A5-9C (hex) Beijing QS Medical Technology Co., Ltd. - 300000-3FFFFF (base 16) Beijing QS Medical Technology Co., Ltd. - Building 5, No.11, Kechuang 14th Street, Economic-Technological Development Area - Beijing 100176 - CN - -+6C-15-24 (hex) SYMLINK CORPORATION -+D00000-DFFFFF (base 16) SYMLINK CORPORATION -+ 6F., No. 13, Lane. 35, Jihu Rd., Neihu Dist., Neihu Technology Park -+ Taipei 11492 -+ TW -+ - C4-A1-0E (hex) Clinton Electronics Corporation - B00000-BFFFFF (base 16) Clinton Electronics Corporation - 6701 Clinton Road -@@ -14909,12 +14927,6 @@ C4-A1-0E (hex) Wistron InfoComn (Kunshan) Co., Ltd. - Kunshan Jiangsu 215300 - CN - --6C-15-24 (hex) Telsonic AG --100000-1FFFFF (base 16) Telsonic AG -- Industriestrasse 6b -- Bronschhofen St.Gallen 9552 -- CH -- - C4-A1-0E (hex) Guangzhou South Satellite Navigation Instrument Co., Ltd. - 700000-7FFFFF (base 16) Guangzhou South Satellite Navigation Instrument Co., Ltd. - Area A Layer 6, Area A Layer 5, Area A Layer 4, No.39, Sicheng Road, Tianhe District, -@@ -14927,18 +14939,24 @@ C4-A1-0E (hex) Guangzhou South Satellite Navigation Instrument Co., Ltd. - Bentley Western Australia 6102 - AU - --6C-15-24 (hex) SYMLINK CORPORATION --D00000-DFFFFF (base 16) SYMLINK CORPORATION -- 6F., No. 13, Lane. 35, Jihu Rd., Neihu Dist., Neihu Technology Park -- Taipei 11492 -- TW -- - 6C-15-24 (hex) AEC s.r.l. - E00000-EFFFFF (base 16) AEC s.r.l. - Via Zambon, 33/A - Creazzo Vicenza 36051 - IT - -+70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd. -+000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -+ 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -+ ShenZhen GuangDong 518000 -+ CN -+ -+70-50-E7 (hex) Beijing Shannoncyber Technology Co.,Ltd -+B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd -+ 913 9/F,building 8,yard 2,Shenggu Middle Road,Chaoyang District -+ beijing beijing 100029 -+ CN -+ - C4-A1-0E (hex) Harbour Cross Technology Ltd - 400000-4FFFFF (base 16) Harbour Cross Technology Ltd - Unit 622 One Island South, 2 Heung Yip Road, Wong Chuk Hang, -@@ -14951,16 +14969,10 @@ C4-A1-0E (hex) Harbour Cross Technology Ltd - Mail box 15123 Haifa 3508409 - IL - --70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd. --000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd. -- 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District -- ShenZhen GuangDong 518000 -- CN -- --70-50-E7 (hex) Beijing Shannoncyber Technology Co.,Ltd --B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd -- 913 9/F,building 8,yard 2,Shenggu Middle Road,Chaoyang District -- beijing beijing 100029 -+80-02-F4 (hex) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+900000-9FFFFF (base 16) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -+ SECOND FLOOR, NO. 943-4, TONGLONG 2ND ROAD, TORCH HIGH-TECH (XIANG 'AN) INDUSTRY DISTRICT,XIAMEN CITY, FUJIAN PROVINCE,CHINA -+ XIAMEN 361106 - CN - - 80-02-F4 (hex) PassiveLogic -@@ -14969,10 +14981,10 @@ A00000-AFFFFF (base 16) PassiveLogic - Holladay UT 84121 - US - --80-02-F4 (hex) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. --900000-9FFFFF (base 16) XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD. -- SECOND FLOOR, NO. 943-4, TONGLONG 2ND ROAD, TORCH HIGH-TECH (XIANG 'AN) INDUSTRY DISTRICT,XIAMEN CITY, FUJIAN PROVINCE,CHINA -- XIAMEN 361106 -+80-02-F4 (hex) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -+D00000-DFFFFF (base 16) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -+ No. 52, Guoxiang Road, Wujin economic development zone -+ ChangZhou JiangSu 213100 - CN - - 80-02-F4 (hex) Sichuan Fanyi Technology Co. Ltd. -@@ -14981,12 +14993,6 @@ A00000-AFFFFF (base 16) PassiveLogic - Chengdu Sichuan 650000 - CN - --80-02-F4 (hex) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd --D00000-DFFFFF (base 16) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd -- No. 52, Guoxiang Road, Wujin economic development zone -- ChangZhou JiangSu 213100 -- CN -- - 80-02-F4 (hex) Infors AG - 400000-4FFFFF (base 16) Infors AG - Wuhrmattstr. 7 -@@ -15023,23 +15029,23 @@ D00000-DFFFFF (base 16) Jiangsu Vedkang Medicl Sclence and Technology Co.,L - Union City CA 94587 - US - --0C-7F-ED (hex) Soft dB --300000-3FFFFF (base 16) Soft dB -- 1040, avenue Belvédère #215 -- Québec Quebec G1S 3G3 -- CA -- - FC-61-79 (hex) MACH SYSTEMS s.r.o. - 900000-9FFFFF (base 16) MACH SYSTEMS s.r.o. - Pocernicka 272/96 - Prague 10800 - CZ - --30-3D-51 (hex) Media Hub Digital Smart Home Pty Ltd. --500000-5FFFFF (base 16) Media Hub Digital Smart Home Pty Ltd. -- 40 Koornang Road -- Scoresby VIC 3179 -- AU -+0C-7F-ED (hex) Soft dB -+300000-3FFFFF (base 16) Soft dB -+ 1040, avenue Belvédère #215 -+ Québec Quebec G1S 3G3 -+ CA -+ -+FC-61-79 (hex) Annapurna labs -+800000-8FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL - - FC-61-79 (hex) Zhuhai Anjubao Electronics Technology Co., Ltd. - 000000-0FFFFF (base 16) Zhuhai Anjubao Electronics Technology Co., Ltd. -@@ -15053,11 +15059,17 @@ FC-61-79 (hex) Shenzhen Shenshui Electronic Commerce Co.,Ltd - Shenzhen 518132 - CN - --FC-61-79 (hex) Annapurna labs --800000-8FFFFF (base 16) Annapurna labs -- Matam Scientific Industries Center, Building 8.2 -- Mail box 15123 Haifa 3508409 -- IL -+30-3D-51 (hex) Media Hub Digital Smart Home Pty Ltd. -+500000-5FFFFF (base 16) Media Hub Digital Smart Home Pty Ltd. -+ 40 Koornang Road -+ Scoresby VIC 3179 -+ AU -+ -+30-3D-51 (hex) Dspread Technology (Beijing) Inc. -+400000-4FFFFF (base 16) Dspread Technology (Beijing) Inc. -+ Jingxin Building, 2045 Suite , Chaoyang District -+ Beijing 100027 -+ CN - - 30-3D-51 (hex) TeraNXT Global India Pvt Ltd. - A00000-AFFFFF (base 16) TeraNXT Global India Pvt Ltd. -@@ -15065,6 +15077,12 @@ A00000-AFFFFF (base 16) TeraNXT Global India Pvt Ltd. - DELHI DELHI 110005 - IN - -+30-3D-51 (hex) S & A Systems -+300000-3FFFFF (base 16) S & A Systems -+ 992 Sids Rd. -+ Rockwall TX 75032 -+ US -+ - 4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd. - 600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd. - 22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone -@@ -19847,18 +19865,18 @@ D00000-DFFFFF (base 16) Sun wealth technology corporation limited - Seoul 05808 - KR - --6C-93-08 (hex) Shenzhen EZpro Sound & Light Technology Co., Ltd. --B00000-BFFFFF (base 16) Shenzhen EZpro Sound & Light Technology Co., Ltd. -- E2?TCL International E City,1001 Zhong Shan Yuan Rd,Nanshan District -- shenz guangdong 518055 -- CN -- - 0C-86-29 (hex) HagerEnergy GmbH - 700000-7FFFFF (base 16) HagerEnergy GmbH - Karlstrasse 5 - Osnabrueck 49074 - DE - -+6C-93-08 (hex) Shenzhen EZpro Sound & Light Technology Co., Ltd. -+B00000-BFFFFF (base 16) Shenzhen EZpro Sound & Light Technology Co., Ltd. -+ E2?TCL International E City,1001 Zhong Shan Yuan Rd,Nanshan District -+ shenz guangdong 518055 -+ CN -+ - 30-43-D7 (hex) Xiaoniu network technology (Shanghai) Co., Ltd. - C00000-CFFFFF (base 16) Xiaoniu network technology (Shanghai) Co., Ltd. - Room 706, building 3, no.20 east road, jingan district. -@@ -19877,23 +19895,17 @@ A00000-AFFFFF (base 16) Flextronics International Kft - Zalaegerszeg 8900 - HU - --38-1F-26 (hex) Airmaster A/S --400000-4FFFFF (base 16) Airmaster A/S -- Industrivej 59 -- Aars 9600 -- DK -- - 38-1F-26 (hex) HWACHANG CORPORATION - D00000-DFFFFF (base 16) HWACHANG CORPORATION - 90, NONGGONGANJI-GIL - SOCHO-SI 24899 - KR - --18-A5-9C (hex) Residence Control Ltd --800000-8FFFFF (base 16) Residence Control Ltd -- Cvetan Vuchkov 7 -- Sofia Sofia 1614 -- BG -+38-1F-26 (hex) Airmaster A/S -+400000-4FFFFF (base 16) Airmaster A/S -+ Industrivej 59 -+ Aars 9600 -+ DK - - 18-A5-9C (hex) Actiontec Electronics Inc. - 200000-2FFFFF (base 16) Actiontec Electronics Inc. -@@ -19907,6 +19919,12 @@ D00000-DFFFFF (base 16) HWACHANG CORPORATION - Yeongtong-gu, Suwon-si Gyeonggi-do 16229 - KR - -+18-A5-9C (hex) Residence Control Ltd -+800000-8FFFFF (base 16) Residence Control Ltd -+ Cvetan Vuchkov 7 -+ Sofia Sofia 1614 -+ BG -+ - 7C-70-BC (hex) Motec GmbH - A00000-AFFFFF (base 16) Motec GmbH - 287 27 Road -@@ -19931,12 +19949,6 @@ B00000-BFFFFF (base 16) Beijing Flintec Electronic Technology Co.,Ltd. - shanghai 201614 - CN - --1C-59-74 (hex) Square Inc. --600000-6FFFFF (base 16) Square Inc. -- 1455 Market St. -- San Francisco CA 94103 -- US -- - 6C-15-24 (hex) Shenzhen Electron Technology Co., LTD. - 500000-5FFFFF (base 16) Shenzhen Electron Technology Co., LTD. - Building 2, Yingfeng Industrial Zone, Tantou Community, Songgang Street, Bao'an District -@@ -19955,6 +19967,18 @@ B00000-BFFFFF (base 16) Annapurna labs - Mail box 15123 Haifa 3508409 - IL - -+1C-59-74 (hex) Square Inc. -+600000-6FFFFF (base 16) Square Inc. -+ 1455 Market St. -+ San Francisco CA 94103 -+ US -+ -+6C-15-24 (hex) DEFA AS -+000000-0FFFFF (base 16) DEFA AS -+ Blingsmovegen 30 -+ Nesbyen 3540 -+ NO -+ - 6C-15-24 (hex) Linkplay - 200000-2FFFFF (base 16) Linkplay - 891 W. Washington Ave. -@@ -19967,12 +19991,6 @@ C00000-CFFFFF (base 16) CORAL-TAIYI - Taipei City 114 - TW - --6C-15-24 (hex) DEFA AS --000000-0FFFFF (base 16) DEFA AS -- Blingsmovegen 30 -- Nesbyen 3540 -- NO -- - C4-A1-0E (hex) O-NET Industrial Technologies (Shenzhen) Limited - 500000-5FFFFF (base 16) O-NET Industrial Technologies (Shenzhen) Limited - 501, Maile building, building 2, No. 28, Cuijing Road, Zhukeng community, Longtian street, Pingshan District -@@ -19997,18 +20015,18 @@ D00000-DFFFFF (base 16) Eta Compute Inc. - Sunnyvale CA 94086 - US - --80-02-F4 (hex) Wuhan Glory Road Intelligent Technology Co., Ltd. --C00000-CFFFFF (base 16) Wuhan Glory Road Intelligent Technology Co., Ltd. -- 18F,Magic Cube Building,Optics Valley Core Center,No.303 Optics Valley Avenue,East Lake High-tech Development Zone -- Wuhan Hubei 430073 -- CN -- - 80-02-F4 (hex) Sichuan lookout environment protection technology co.,Ltd - 100000-1FFFFF (base 16) Sichuan lookout environment protection technology co.,Ltd - No. 1015, floor 10, unit 2, building 1, No. 1616, Nanhua Road, high tech Zone - Chengdu Sichuan 610052 - CN - -+80-02-F4 (hex) Wuhan Glory Road Intelligent Technology Co., Ltd. -+C00000-CFFFFF (base 16) Wuhan Glory Road Intelligent Technology Co., Ltd. -+ 18F,Magic Cube Building,Optics Valley Core Center,No.303 Optics Valley Avenue,East Lake High-tech Development Zone -+ Wuhan Hubei 430073 -+ CN -+ - 8C-51-09 (hex) PROCET Technology Co., Ltd(HK) - 200000-2FFFFF (base 16) PROCET Technology Co., Ltd(HK) - Flat B,4/F, Kjngswell Commercial Tower, 171-173 Lockhard Road, Wanchai, Hongkong -@@ -20039,12 +20057,6 @@ C00000-CFFFFF (base 16) SpotterRF LLC - SuZhou JiangSu 215000 - CN - --FC-61-79 (hex) CHOEUNENG --400000-4FFFFF (base 16) CHOEUNENG -- 22, Ildong-ro, Sangnok-gu -- Ansan-si Gyeonggi-do 15326 -- KR -- - FC-61-79 (hex) EchoStar Mobile - 300000-3FFFFF (base 16) EchoStar Mobile - 25/28 NORTH WALL QUAY, DUBLIN 1, D01H104 Ireland -@@ -20057,6 +20069,12 @@ E00000-EFFFFF (base 16) environmental systems corporation - Barrie Ontario L4N 8W8 - CA - -+FC-61-79 (hex) CHOEUNENG -+400000-4FFFFF (base 16) CHOEUNENG -+ 22, Ildong-ro, Sangnok-gu -+ Ansan-si Gyeonggi-do 15326 -+ KR -+ - FC-61-79 (hex) Hangzhou LiDe Communication Co.,Ltd - 600000-6FFFFF (base 16) Hangzhou LiDe Communication Co.,Ltd - No.188,DongJia Rd,Tonglu Econominc Development Zone,Hangzhou,Zhejiang, -@@ -20075,6 +20093,12 @@ E00000-EFFFFF (base 16) ACCO Brands USA LLC - Lake Zurich IL 60047-2997 - US - -+30-3D-51 (hex) Annapurna labs -+900000-9FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ - 20-85-93 (hex) Great Lite International - 700000-7FFFFF (base 16) Great Lite International - 11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist., -@@ -24878,6 +24902,12 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - Colorado Springs CO 80907 - US - -+6C-93-08 (hex) Uconfree technology(shenzhen)limited -+600000-6FFFFF (base 16) Uconfree technology(shenzhen)limited -+ Room 311 PuFeng commercial center PingHu street LongGang District ShenZhen China -+ SHENZHEN 518111 -+ CN -+ - 0C-86-29 (hex) Annapurna labs - 300000-3FFFFF (base 16) Annapurna labs - Matam Scientific Industries Center, Building 8.2 -@@ -24890,11 +24920,11 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - Hangzhou City Zhejiang Province 31000 - CN - --6C-93-08 (hex) Uconfree technology(shenzhen)limited --600000-6FFFFF (base 16) Uconfree technology(shenzhen)limited -- Room 311 PuFeng commercial center PingHu street LongGang District ShenZhen China -- SHENZHEN 518111 -- CN -+30-43-D7 (hex) Bodhi -+A00000-AFFFFF (base 16) Bodhi -+ 3150 W. Prospect Road, Suite 330 -+ Fort Lauderdale FL 33309 -+ US - - 6C-93-08 (hex) ZHEJIANG XIAN DA Environmental Technology Co., Ltd - 200000-2FFFFF (base 16) ZHEJIANG XIAN DA Environmental Technology Co., Ltd -@@ -24902,24 +24932,24 @@ E00000-EFFFFF (base 16) CEL Terminus (Shanghai) Information Technologies Co - HANGZHOU ZHEJIANG 310000 - CN - -+30-43-D7 (hex) Kesu (Shanghai) Electronic Technology Co., Ltd -+800000-8FFFFF (base 16) Kesu (Shanghai) Electronic Technology Co., Ltd -+ 3-36588?No. 1800, Panyuan Road, Changxing Town, Chongming District -+ Shanghai 202150 -+ CN -+ - 30-43-D7 (hex) PK Solutions LLC - 900000-9FFFFF (base 16) PK Solutions LLC - 10811 E Harry - Wichita KS 67207 - US - --30-43-D7 (hex) Bodhi --A00000-AFFFFF (base 16) Bodhi -- 3150 W. Prospect Road, Suite 330 -- Fort Lauderdale FL 33309 -+30-43-D7 (hex) FIBERME COMMUNICATIONS LLC -+400000-4FFFFF (base 16) FIBERME COMMUNICATIONS LLC -+ 1749 Old Meadow Rd. -+ McLean VA 22102 - US - --30-43-D7 (hex) Kesu (Shanghai) Electronic Technology Co., Ltd --800000-8FFFFF (base 16) Kesu (Shanghai) Electronic Technology Co., Ltd -- 3-36588?No. 1800, Panyuan Road, Changxing Town, Chongming District -- Shanghai 202150 -- CN -- - 38-1F-26 (hex) NOITAC sp. z o.o. sp.k. - 600000-6FFFFF (base 16) NOITAC sp. z o.o. sp.k. - Szlak 28/3 -@@ -24932,12 +24962,6 @@ A00000-AFFFFF (base 16) Bodhi - YANG YANG GUN 25017 - KR - --30-43-D7 (hex) FIBERME COMMUNICATIONS LLC --400000-4FFFFF (base 16) FIBERME COMMUNICATIONS LLC -- 1749 Old Meadow Rd. -- McLean VA 22102 -- US -- - 38-1F-26 (hex) Deutronic Elektronik GmbH - B00000-BFFFFF (base 16) Deutronic Elektronik GmbH - Deutronicstraße 5 -@@ -25004,18 +25028,18 @@ A00000-AFFFFF (base 16) Jiangsu Perceive World Technology Co.,Ltd. - Nur-Sultan 010000 - KZ - --6C-15-24 (hex) STERIS --A00000-AFFFFF (base 16) STERIS -- Unit 7 & 8, Stortford Hall Industrial Park, Dunmow Road -- Bishops Stortford herts CM23 5GZ -- GB -- - C4-A1-0E (hex) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD - 900000-9FFFFF (base 16) XI'AN YEP TELECOM TECHNOLOGY CO.,LTD - No.211 Tiangu 8th Road, High-tech Zone - Xi 'an Shaanxi 710065 - CN - -+6C-15-24 (hex) STERIS -+A00000-AFFFFF (base 16) STERIS -+ Unit 7 & 8, Stortford Hall Industrial Park, Dunmow Road -+ Bishops Stortford herts CM23 5GZ -+ GB -+ - C4-A1-0E (hex) Alio, Inc - E00000-EFFFFF (base 16) Alio, Inc - 10901 W. 120th Ave, Suite 380 -@@ -25058,18 +25082,6 @@ A00000-AFFFFF (base 16) Guangzhou Tianhe High Tech Industrial Development Z - San Jose CA 95112 - US - --80-02-F4 (hex) Annapurna labs --800000-8FFFFF (base 16) Annapurna labs -- Matam Scientific Industries Center, Building 8.2 -- Mail box 15123 Haifa 3508409 -- IL -- --8C-51-09 (hex) Avxav Electronic Trading LLC --600000-6FFFFF (base 16) Avxav Electronic Trading LLC -- Office 534 Building # 6WA Dubai Airport Free Zone -- Dubai Dubai 33964 -- AE -- - 80-02-F4 (hex) Lazer Safe Pty Ltd - 700000-7FFFFF (base 16) Lazer Safe Pty Ltd - 27 Action Road -@@ -25082,11 +25094,17 @@ A00000-AFFFFF (base 16) Guangzhou Tianhe High Tech Industrial Development Z - Beijing Beijing 100028 - CN - --8C-51-09 (hex) SHENZHEN LDROBOT CO., LTD. --300000-3FFFFF (base 16) SHENZHEN LDROBOT CO., LTD. -- Nanshan -- Shenzhen 518000 -- CN -+80-02-F4 (hex) Annapurna labs -+800000-8FFFFF (base 16) Annapurna labs -+ Matam Scientific Industries Center, Building 8.2 -+ Mail box 15123 Haifa 3508409 -+ IL -+ -+8C-51-09 (hex) Avxav Electronic Trading LLC -+600000-6FFFFF (base 16) Avxav Electronic Trading LLC -+ Office 534 Building # 6WA Dubai Airport Free Zone -+ Dubai Dubai 33964 -+ AE - - 8C-51-09 (hex) nerospec - 800000-8FFFFF (base 16) nerospec -@@ -25100,6 +25118,12 @@ D00000-DFFFFF (base 16) Surpedia Technologies Co., Ltd. - Xhzhi Dist. New Taipei City 22103 - TW - -+8C-51-09 (hex) SHENZHEN LDROBOT CO., LTD. -+300000-3FFFFF (base 16) SHENZHEN LDROBOT CO., LTD. -+ Nanshan -+ Shenzhen 518000 -+ CN -+ - 8C-51-09 (hex) IROOTELLUCKY Corp. - E00000-EFFFFF (base 16) IROOTELLUCKY Corp. - 609ho, 13, LS-ro -@@ -25124,6 +25148,12 @@ B00000-BFFFFF (base 16) TelX Systems - DEIRA DUBAI 48235 - AE - -+FC-61-79 (hex) Signalinks Communication Technology Co.,Ltd -+100000-1FFFFF (base 16) Signalinks Communication Technology Co.,Ltd -+ 3rd Floor, Building 6, Longxing Sciece park, East Huaning Road, Dalang Street , Longhua District, Shenzhen -+ Shenzhen Guangdong 518000 -+ CN -+ - FC-61-79 (hex) Int'Act Pty Ltd - D00000-DFFFFF (base 16) Int'Act Pty Ltd - 4 Pine Street -@@ -25142,12 +25172,6 @@ D00000-DFFFFF (base 16) Int'Act Pty Ltd - Chattanooga 37408 - US - --FC-61-79 (hex) Signalinks Communication Technology Co.,Ltd --100000-1FFFFF (base 16) Signalinks Communication Technology Co.,Ltd -- 3rd Floor, Building 6, Longxing Sciece park, East Huaning Road, Dalang Street , Longhua District, Shenzhen -- Shenzhen Guangdong 518000 -- CN -- - FC-61-79 (hex) Fulian Precision Electronics(Tianjin) Co., Ltd - B00000-BFFFFF (base 16) Fulian Precision Electronics(Tianjin) Co., Ltd - No 36. North Street, West Zone, Economic & Technological Development Area, Tianjin, China -@@ -25159,3 +25183,9 @@ A00000-AFFFFF (base 16) Shenzhen Dptek Technology Co., Ltd. - Room 706, Building Pincui, Zhongcui Garden,Dafen Community, Buji Street, Longgang District - Shenzhen Guangdong 518000 - CN -+ -+30-3D-51 (hex) XOR UK Corporation Limited -+D00000-DFFFFF (base 16) XOR UK Corporation Limited -+ Unit 11-12, Stanhope Gate, Stanhope Rd -+ Camberley Surrey GU15 3DW -+ GB -diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt -index 496fd55c73..dfaf330309 100644 ---- a/hwdb.d/ma-small.txt -+++ b/hwdb.d/ma-small.txt -@@ -5687,12 +5687,6 @@ F74000-F74FFF (base 16) GE AVIC Civil Avionics Systems Company Limited - Shanghai 200241 - CN - --8C-1F-64 (hex) Stercom Power Solutions GmbH --2B6000-2B6FFF (base 16) Stercom Power Solutions GmbH -- Ziegelstr. 1 -- Weyarn Bayern 83629 -- DE -- - 8C-1F-64 (hex) Shenzhen zhushida Technology lnformation Co.,Ltd - A5D000-A5DFFF (base 16) Shenzhen zhushida Technology lnformation Co.,Ltd - 1309, Block A, Innovation Building, Majialong Industrial Zone, Nantou Street, Nanshan District, -@@ -5705,6 +5699,12 @@ A5D000-A5DFFF (base 16) Shenzhen zhushida Technology lnformation Co.,Ltd - Sydney New South Wales 2132 - AU - -+8C-1F-64 (hex) Stercom Power Solutions GmbH -+2B6000-2B6FFF (base 16) Stercom Power Solutions GmbH -+ Ziegelstr. 1 -+ Weyarn Bayern 83629 -+ DE -+ - 8C-1F-64 (hex) Gateview Technologies - B7B000-B7BFFF (base 16) Gateview Technologies - 104 White St #201 -@@ -5741,12 +5741,6 @@ FBA000-FBAFFF (base 16) Onto Innovation - Wilmington MA 01887 - US - --8C-1F-64 (hex) DAVE SRL --967000-967FFF (base 16) DAVE SRL -- VIA TALPONEDO 29/A -- PORCIA PORDENONE 330850 -- IT -- - 8C-1F-64 (hex) Becton Dickinson - 775000-775FFF (base 16) Becton Dickinson - 7 Loveton Circle -@@ -5765,6 +5759,12 @@ BFB000-BFBFFF (base 16) TechArgos - Moscow 105066 - RU - -+8C-1F-64 (hex) DAVE SRL -+967000-967FFF (base 16) DAVE SRL -+ VIA TALPONEDO 29/A -+ PORCIA PORDENONE 330850 -+ IT -+ - 8C-1F-64 (hex) e.kundenservice Netz GmbH - 855000-855FFF (base 16) e.kundenservice Netz GmbH - Steindamm 100 -@@ -5801,17 +5801,23 @@ EB5000-EB5FFF (base 16) Meiryo Denshi Corp. - Gadag Karnataka 582103 - IN - -+8C-1F-64 (hex) Tesat-Spacecom GmbH & Co. KG -+F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG -+ Gerberstrasse 49 -+ Backnang 71522 -+ DE -+ - 8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme - 059000-059FFF (base 16) MB connect line GmbH Fernwartungssysteme - Winnettener Straße 6 - Dinkelsbuehl Bavaria 91550 - DE - --8C-1F-64 (hex) Tesat-Spacecom GmbH & Co. KG --F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG -- Gerberstrasse 49 -- Backnang 71522 -- DE -+8C-1F-64 (hex) JBF -+F45000-F45FFF (base 16) JBF -+ via goretta 90 -+ mappano torino 10079 -+ IT - - 8C-1F-64 (hex) REFU Storage System GmbH - 53B000-53BFFF (base 16) REFU Storage System GmbH -@@ -5825,12 +5831,6 @@ F27000-F27FFF (base 16) Tesat-Spacecom GmbH & Co. KG - Bergisch Gladbach North Rhine-Westphalia 51465 - DE - --8C-1F-64 (hex) JBF --F45000-F45FFF (base 16) JBF -- via goretta 90 -- mappano torino 10079 -- IT -- - 8C-1F-64 (hex) Micro Electroninc Products - 765000-765FFF (base 16) Micro Electroninc Products - TT Vasumweg 150 -@@ -5849,23 +5849,17 @@ F45000-F45FFF (base 16) JBF - Indianapolis IN 46240 - US - --8C-1F-64 (hex) Sicon srl --B3B000-B3BFFF (base 16) Sicon srl -- Via Sila 1/3 -- Isola Vicentina Vicenza 36033 -- IT -- - 8C-1F-64 (hex) INVIXIUM ACCESS INC - 274000-274FFF (base 16) INVIXIUM ACCESS INC - 111 Gordon Baker Road, Suite #300 - Toronto Ontario M2H 3R1 - CA - --8C-1F-64 (hex) Bunka Shutter Co., Ltd. --0B0000-0B0FFF (base 16) Bunka Shutter Co., Ltd. -- 644-1 Tenjingoe,Ooaza-Kamiishizuka -- Oyama Tochigi 323-0063 -- JP -+8C-1F-64 (hex) Sicon srl -+B3B000-B3BFFF (base 16) Sicon srl -+ Via Sila 1/3 -+ Isola Vicentina Vicenza 36033 -+ IT - - 8C-1F-64 (hex) Sanchar Telesystems limited - 958000-958FFF (base 16) Sanchar Telesystems limited -@@ -5873,6 +5867,24 @@ B3B000-B3BFFF (base 16) Sicon srl - New Delhi Delhi 110020 - IN - -+8C-1F-64 (hex) Tantronic AG -+1EF000-1EFFFF (base 16) Tantronic AG -+ Gewerbering 12 -+ Wohlen AG 5610 -+ CH -+ -+8C-1F-64 (hex) Tunstall A/S -+F2C000-F2CFFF (base 16) Tunstall A/S -+ Niels Bohrs vej 42 -+ Stilling Skanderborg 8660 -+ DK -+ -+8C-1F-64 (hex) Bunka Shutter Co., Ltd. -+0B0000-0B0FFF (base 16) Bunka Shutter Co., Ltd. -+ 644-1 Tenjingoe,Ooaza-Kamiishizuka -+ Oyama Tochigi 323-0063 -+ JP -+ - 8C-1F-64 (hex) Rodgers Instruments US LLC - A42000-A42FFF (base 16) Rodgers Instruments US LLC - 6497 NE Croeni Avenue -@@ -5891,18 +5903,6 @@ A42000-A42FFF (base 16) Rodgers Instruments US LLC - Ottawa ON K2G 0G3 - CA - --8C-1F-64 (hex) Tunstall A/S --F2C000-F2CFFF (base 16) Tunstall A/S -- Niels Bohrs vej 42 -- Stilling Skanderborg 8660 -- DK -- --8C-1F-64 (hex) Tantronic AG --1EF000-1EFFFF (base 16) Tantronic AG -- Gewerbering 12 -- Wohlen AG 5610 -- CH -- - 8C-1F-64 (hex) Strategic Robotic Systems - C57000-C57FFF (base 16) Strategic Robotic Systems - 14842 NE 95th StreetBuilding 5 -@@ -5939,17 +5939,23 @@ DB7000-DB7FFF (base 16) Lambda Systems Inc. - St. Gallen 9008 - CH - -+8C-1F-64 (hex) Satelles Inc -+9FF000-9FFFFF (base 16) Satelles Inc -+ 1835 Alexander Bell Dr., Suite 240 -+ Reston VA 20191 -+ US -+ - 8C-1F-64 (hex) KCS Co., Ltd. - 4AE000-4AEFFF (base 16) KCS Co., Ltd. - 1101, NexZone, 50, Wanam-ro, Seongsan-gu, - Changwon-si 51573 - KR - --8C-1F-64 (hex) Satelles Inc --9FF000-9FFFFF (base 16) Satelles Inc -- 1835 Alexander Bell Dr., Suite 240 -- Reston VA 20191 -- US -+8C-1F-64 (hex) Peter Huber Kaeltemaschinenbau AG -+C35000-C35FFF (base 16) Peter Huber Kaeltemaschinenbau AG -+ Werner-von-Siemens-Str. 1 -+ Offenburg Ba-Wue 77656 -+ DE - - 70-B3-D5 (hex) EVCO SPA - A80000-A80FFF (base 16) EVCO SPA -@@ -11513,16 +11519,22 @@ ED9000-ED9FFF (base 16) NETGEN HITECH SOLUTIONS LLP - MUMBAI MAHARASHTRA 400064 - IN - -+8C-1F-64 (hex) Wolfspyre Labs -+9D4000-9D4FFF (base 16) Wolfspyre Labs -+ 5007 Highland Ct #WPL-IEEE -+ Austin TX 78731 -+ US -+ - 8C-1F-64 (hex) Vekto - 4AC000-4ACFFF (base 16) Vekto - Televisieweg 75 - Almere 1322AK - NL - --8C-1F-64 (hex) Wolfspyre Labs --9D4000-9D4FFF (base 16) Wolfspyre Labs -- 5007 Highland Ct #WPL-IEEE -- Austin TX 78731 -+8C-1F-64 (hex) SpectraDynamics, Inc. -+581000-581FFF (base 16) SpectraDynamics, Inc. -+ 1849 Cherry St. -+ Louisville CO 80027 - US - - 8C-1F-64 (hex) IO Master Technology -@@ -11531,11 +11543,11 @@ BD3000-BD3FFF (base 16) IO Master Technology - New Taipei City 235 Taipei 235 - TW - --8C-1F-64 (hex) SpectraDynamics, Inc. --581000-581FFF (base 16) SpectraDynamics, Inc. -- 1849 Cherry St. -- Louisville CO 80027 -- US -+8C-1F-64 (hex) ESCAD AUTOMATION GmbH -+05F000-05FFFF (base 16) ESCAD AUTOMATION GmbH -+ Escadstr. 1 -+ Pfullendorf 88630 -+ DE - - 8C-1F-64 (hex) TIFLEX - 194000-194FFF (base 16) TIFLEX -@@ -11543,11 +11555,11 @@ BD3000-BD3FFF (base 16) IO Master Technology - PONCIN 01450 - FR - --8C-1F-64 (hex) ESCAD AUTOMATION GmbH --05F000-05FFFF (base 16) ESCAD AUTOMATION GmbH -- Escadstr. 1 -- Pfullendorf 88630 -- DE -+8C-1F-64 (hex) Neuralog LP -+115000-115FFF (base 16) Neuralog LP -+ 4800 Sugar Grove Blvd., Ste. 200 -+ Stafford TX 77479 -+ US - - 8C-1F-64 (hex) Sichuan Aiyijan Technology Company Ltd. - 40C000-40CFFF (base 16) Sichuan Aiyijan Technology Company Ltd. -@@ -11573,11 +11585,11 @@ C24000-C24FFF (base 16) Alifax S.r.l. - POLVERARA PD 35020 - IT - --8C-1F-64 (hex) Neuralog LP --115000-115FFF (base 16) Neuralog LP -- 4800 Sugar Grove Blvd., Ste. 200 -- Stafford TX 77479 -- US -+8C-1F-64 (hex) Flextronics International Kft -+A4C000-A4CFFF (base 16) Flextronics International Kft -+ Zrínyi Miklós str. 38. -+ Zalaegerszeg 8900 -+ HU - - 8C-1F-64 (hex) Pietro Fiorentini Spa - 8D9000-8D9FFF (base 16) Pietro Fiorentini Spa -@@ -11585,30 +11597,24 @@ C24000-C24FFF (base 16) Alifax S.r.l. - San Vito al Tagliamento (PN) 33078 - IT - --8C-1F-64 (hex) Flextronics International Kft --A4C000-A4CFFF (base 16) Flextronics International Kft -- Zrínyi Miklós str. 38. -- Zalaegerszeg 8900 -- HU -- - 8C-1F-64 (hex) Flextronics International Kft - D02000-D02FFF (base 16) Flextronics International Kft - 38. Zrinyi Str. - Zalaegerszeg Zala 8900 - HU - --8C-1F-64 (hex) Autark GmbH --943000-943FFF (base 16) Autark GmbH -- Platz des Friedens 8 -- Baunatal Hessen D-34225 -- DE -- - 8C-1F-64 (hex) VMukti Solutions Private Limited - E30000-E30FFF (base 16) VMukti Solutions Private Limited - 3-4, Shivalik Plaza, Panjrapole, Ambawadi - Ahmedabad Gujarat 380015 - IN - -+8C-1F-64 (hex) Autark GmbH -+943000-943FFF (base 16) Autark GmbH -+ Platz des Friedens 8 -+ Baunatal Hessen D-34225 -+ DE -+ - 8C-1F-64 (hex) ACTELSER S.L. - 3F4000-3F4FFF (base 16) ACTELSER S.L. - CARRER ALBERT EINSTEIN, 44 -@@ -11645,11 +11651,11 @@ FA2000-FA2FFF (base 16) AZD Praha s.r.o., ZOZ Olomouc - Knoxville TN 37932 - US - --8C-1F-64 (hex) Beijing Zhongchen Microelectronics Co.,Ltd --AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd -- Room 0309, 3rd Floor, Building 2, China Agricultural University International Pioneer Park, No. 10 Tianxiu Road, Haidian District -- Beijing Beijing 100081 -- CN -+70-B3-D5 (hex) Watteco -+E75000-E75FFF (base 16) Watteco -+ Rue Gutenberg -+ Hennebont Brittany 56700 -+ FR - - 8C-1F-64 (hex) Toolplanet Co., Ltd. - 54F000-54FFFF (base 16) Toolplanet Co., Ltd. -@@ -11663,11 +11669,11 @@ AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd - Dubai Dubai 74249 - AE - --70-B3-D5 (hex) Watteco --E75000-E75FFF (base 16) Watteco -- Rue Gutenberg -- Hennebont Brittany 56700 -- FR -+8C-1F-64 (hex) Beijing Zhongchen Microelectronics Co.,Ltd -+AB4000-AB4FFF (base 16) Beijing Zhongchen Microelectronics Co.,Ltd -+ Room 0309, 3rd Floor, Building 2, China Agricultural University International Pioneer Park, No. 10 Tianxiu Road, Haidian District -+ Beijing Beijing 100081 -+ CN - - 8C-1F-64 (hex) Weidmann Tecnologia Electrica de Mexico - 7B7000-7B7FFF (base 16) Weidmann Tecnologia Electrica de Mexico -@@ -11705,17 +11711,23 @@ B7C000-B7CFFF (base 16) EVERNET CO,.LTD TAIWAN - Nelson Nelson 7010 - NZ - -+8C-1F-64 (hex) Stratis IOT -+3C5000-3C5FFF (base 16) Stratis IOT -+ 4230 Main Street -+ Philadelphia PA 19127 -+ US -+ - 8C-1F-64 (hex) e.p.g. Elettronica s.r.l. - 3D4000-3D4FFF (base 16) e.p.g. Elettronica s.r.l. - Via della Crocetta 3 - Oltrona di San Mamette Como (CO) 22070 - IT - --8C-1F-64 (hex) Stratis IOT --3C5000-3C5FFF (base 16) Stratis IOT -- 4230 Main Street -- Philadelphia PA 19127 -- US -+8C-1F-64 (hex) FMTec GmbH - Future Management Technologies -+3E3000-3E3FFF (base 16) FMTec GmbH - Future Management Technologies -+ Austraße 59e -+ Bludenz Austria 6700 -+ AT - - 8C-1F-64 (hex) Twinleaf LLC - 080000-080FFF (base 16) Twinleaf LLC -@@ -11723,11 +11735,11 @@ B7C000-B7CFFF (base 16) EVERNET CO,.LTD TAIWAN - Plainsboro NJ 08536 - US - --8C-1F-64 (hex) FMTec GmbH - Future Management Technologies --3E3000-3E3FFF (base 16) FMTec GmbH - Future Management Technologies -- Austraße 59e -- Bludenz Austria 6700 -- AT -+8C-1F-64 (hex) Tinkerbee Innovations Private Limited -+544000-544FFF (base 16) Tinkerbee Innovations Private Limited -+ #677, 1st Floor, 27th Main, 13th Cross Road,HSR Layout, Sector 1 -+ Bengaluru Karnataka 560102 -+ IN - - 8C-1F-64 (hex) Genius Vision Digital Private Limited - CC6000-CC6FFF (base 16) Genius Vision Digital Private Limited -@@ -11741,6 +11753,24 @@ CC6000-CC6FFF (base 16) Genius Vision Digital Private Limited - Houston TX 77024-7338 - US - -+8C-1F-64 (hex) Abode Systems Inc -+B13000-B13FFF (base 16) Abode Systems Inc -+ 2625 Middlefield Road -+ Palo Alto CA 94306 -+ US -+ -+8C-1F-64 (hex) DAVE SRL -+0EF000-0EFFFF (base 16) DAVE SRL -+ VIA TALPONEDO 29/A -+ PORCIA PORDENONE 330850 -+ IT -+ -+8C-1F-64 (hex) GO development GmbH -+7BC000-7BCFFF (base 16) GO development GmbH -+ Zeppelinstraße 126 -+ Esslingen am Neckar 73730 -+ DE -+ - 70-B3-D5 (hex) System West dba ICS Electronics - E06000-E06FFF (base 16) System West dba ICS Electronics - 7034 Commerce Circle Suite A -@@ -17300,18 +17330,18 @@ E61000-E61FFF (base 16) Stange Elektronik GmbH - Beijing Beijing 100029 - CN - --8C-1F-64 (hex) Abbott Diagnostics Technologies AS --429000-429FFF (base 16) Abbott Diagnostics Technologies AS -- P. O. Box 6863 Rodeløkka -- Oslo Oslo 0504 -- NO -- - 8C-1F-64 (hex) EOLANE - 911000-911FFF (base 16) EOLANE - ZI DU VAL D OMBREE - COMBREE - 49520 - FR - -+8C-1F-64 (hex) Abbott Diagnostics Technologies AS -+429000-429FFF (base 16) Abbott Diagnostics Technologies AS -+ P. O. Box 6863 Rodeløkka -+ Oslo Oslo 0504 -+ NO -+ - 8C-1F-64 (hex) Huz Electronics Ltd - BC2000-BC2FFF (base 16) Huz Electronics Ltd - 10 Avondale road -@@ -17372,6 +17402,12 @@ E64000-E64FFF (base 16) Indefac company - São Paulo São Paulo 04268020 - BR - -+8C-1F-64 (hex) Real Digital -+3B2000-3B2FFF (base 16) Real Digital -+ 655 SW James Pl -+ Pullman WA 99163 -+ US -+ - 8C-1F-64 (hex) Fingoti Limited - CD9000-CD9FFF (base 16) Fingoti Limited - Barnam Ham Farm -@@ -17390,12 +17426,6 @@ FB7000-FB7FFF (base 16) Grace Design/Lunatec LLC - Leawood KS 66251 - US - --8C-1F-64 (hex) Real Digital --3B2000-3B2FFF (base 16) Real Digital -- 655 SW James Pl -- Pullman WA 99163 -- US -- - 8C-1F-64 (hex) Zhuhai Yunzhou Intelligence Technology Ltd. - 254000-254FFF (base 16) Zhuhai Yunzhou Intelligence Technology Ltd. - Room 311,312A,Floor 3,Heung Shan TechPort,No.3888 Qinglv North Road,Tangjiawan Town -@@ -17432,6 +17462,12 @@ CCB000-CCBFFF (base 16) suzhou yuecrown Electronic Technology Co.,LTD - suzhou jiangsu 215000 - CN - -+8C-1F-64 (hex) Paragraf -+01A000-01AFFF (base 16) Paragraf -+ 7-8 West Newlands -+ Somersham Cambridgeshire PE28 3EB -+ GB -+ - 8C-1F-64 (hex) nke marine electronics - 817000-817FFF (base 16) nke marine electronics - 6 rue gutenberg -@@ -17444,12 +17480,6 @@ CCB000-CCBFFF (base 16) suzhou yuecrown Electronic Technology Co.,LTD - Leverkusen 51381 - DE - --8C-1F-64 (hex) Paragraf --01A000-01AFFF (base 16) Paragraf -- 7-8 West Newlands -- Somersham Cambridgeshire PE28 3EB -- GB -- - 8C-1F-64 (hex) YUYAMA MFG Co.,Ltd - 5AC000-5ACFFF (base 16) YUYAMA MFG Co.,Ltd - 1-4-30 -@@ -17474,23 +17504,53 @@ CDB000-CDBFFF (base 16) EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT - Budapest 1132 - HU - -+8C-1F-64 (hex) HTK Hamburg GmbH -+6D5000-6D5FFF (base 16) HTK Hamburg GmbH -+ Frahmredder 49 -+ Hamburg Hamburg 22393 -+ DE -+ - 8C-1F-64 (hex) Goodtech AS dep Fredrikstad - C0E000-C0EFFF (base 16) Goodtech AS dep Fredrikstad - Gamle Beddingvei 28 - FREDRIKSTAD Viken 1671 - NO - -+8C-1F-64 (hex) DIALTRONICS SYSTEMS PVT LTD -+1A5000-1A5FFF (base 16) DIALTRONICS SYSTEMS PVT LTD -+ Dialtronics Systems Pvt Ltd, #201, Sirisampada Hitech, Kavuri Hills, Madhapur -+ Hyderabad Telangana 500081 -+ IN -+ - 70-B3-D5 (hex) TRUMPF Huttinger GmbH + Co. KG, - CD2000-CD2FFF (base 16) TRUMPF Huttinger GmbH + Co. KG, - Helmholtzstr. 1 - Stutensee 76297 - DE - --8C-1F-64 (hex) DIALTRONICS SYSTEMS PVT LTD --1A5000-1A5FFF (base 16) DIALTRONICS SYSTEMS PVT LTD -- Dialtronics Systems Pvt Ltd, #201, Sirisampada Hitech, Kavuri Hills, Madhapur -- Hyderabad Telangana 500081 -- IN -+8C-1F-64 (hex) Agvolution GmbH -+098000-098FFF (base 16) Agvolution GmbH -+ Philipp-Reis-Str. 2A -+ Göttingen 37075 -+ DE -+ -+8C-1F-64 (hex) dinosys -+5CB000-5CBFFF (base 16) dinosys -+ 501,35,Gwangnaruro 6-gil, -+ Seoul Seoul 133-832 -+ KR -+ -+8C-1F-64 (hex) HIROSAWA ELECTRIC Co.,Ltd. -+7D8000-7D8FFF (base 16) HIROSAWA ELECTRIC Co.,Ltd. -+ 2-13-14 Nishikoujiya -+ Otaku Tokyo 1440034 -+ JP -+ -+8C-1F-64 (hex) WonATech Co., Ltd. -+890000-890FFF (base 16) WonATech Co., Ltd. -+ 7, Neunganmal 1-gil -+ Seocho-gu Seoul 06801 -+ KR - - 70-B3-D5 (hex) YUYAMA MFG Co.,Ltd - BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd -@@ -23162,24 +23222,36 @@ BD6000-BD6FFF (base 16) NOVA Products GmbH - Munich 80538 - DE - --70-B3-D5 (hex) Flextronics International Kft --E2F000-E2FFFF (base 16) Flextronics International Kft -+8C-1F-64 (hex) ECO-ADAPT -+C38000-C38FFF (base 16) ECO-ADAPT -+ 39 Rue de Chateaudun -+ Paris Ile-de-France 75009 -+ FR -+ -+8C-1F-64 (hex) Flextronics International Kft -+F5C000-F5CFFF (base 16) Flextronics International Kft - Zrínyi Miklós str. 38. - Zalaegerszeg 8900 - HU - --8C-1F-64 (hex) Flextronics International Kft --F5C000-F5CFFF (base 16) Flextronics International Kft -+70-B3-D5 (hex) Flextronics International Kft -+E2F000-E2FFFF (base 16) Flextronics International Kft - Zrínyi Miklós str. 38. - Zalaegerszeg 8900 - HU - --8C-1F-64 (hex) ECO-ADAPT --C38000-C38FFF (base 16) ECO-ADAPT -- 39 Rue de Chateaudun -- Paris Ile-de-France 75009 -+8C-1F-64 (hex) ADETEC SAS -+AE8000-AE8FFF (base 16) ADETEC SAS -+ 8 rue de l'Angoumois -+ ARGENTEUIL 95100 - FR - -+8C-1F-64 (hex) AML -+634000-634FFF (base 16) AML -+ 2190 Regal Parkway -+ Euless TX 76040 -+ US -+ - 8C-1F-64 (hex) In-lite Design BV - 557000-557FFF (base 16) In-lite Design BV - Stephensonweg 18 -@@ -23204,18 +23276,6 @@ A6D000-A6DFFF (base 16) CyberneX Co., Ltd - YOKOHAMA Kanagawa 222-0033 - JP - --8C-1F-64 (hex) ADETEC SAS --AE8000-AE8FFF (base 16) ADETEC SAS -- 8 rue de l'Angoumois -- ARGENTEUIL 95100 -- FR -- --8C-1F-64 (hex) AML --634000-634FFF (base 16) AML -- 2190 Regal Parkway -- Euless TX 76040 -- US -- - 70-B3-D5 (hex) Active Research Limited - 6A0000-6A0FFF (base 16) Active Research Limited - 21 Harwell Road -@@ -23276,23 +23336,23 @@ D69000-D69FFF (base 16) ADiCo Corporation - Utsunomiya-shi Tochigi 320-0075 - JP - --8C-1F-64 (hex) METRONA-Union GmbH --9FA000-9FAFFF (base 16) METRONA-Union GmbH -- Aidenbachstr. 40 -- München 81379 -- DE -- - 8C-1F-64 (hex) Wittra Networks AB - DF8000-DF8FFF (base 16) Wittra Networks AB - Västra Järnvägsgatan 39th floor(Convendum) - Stockholm Stockholm 111 64 - SE - --8C-1F-64 (hex) Unitron Systems b.v. --FA8000-FA8FFF (base 16) Unitron Systems b.v. -- SCHANSESTRAAT 7 -- IJzendijke 4515 RN -- NL -+8C-1F-64 (hex) METRONA-Union GmbH -+9FA000-9FAFFF (base 16) METRONA-Union GmbH -+ Aidenbachstr. 40 -+ München 81379 -+ DE -+ -+8C-1F-64 (hex) Retency -+BBF000-BBFFFF (base 16) Retency -+ 19 rue Vivienne -+ Paris 75002 -+ FR - - 8C-1F-64 (hex) University of Geneva - Department of Particle Physics - D88000-D88FFF (base 16) University of Geneva - Department of Particle Physics -@@ -23300,11 +23360,11 @@ D88000-D88FFF (base 16) University of Geneva - Department of Particle Physi - Geneva 1211 - CH - --8C-1F-64 (hex) Massar Networks --FAA000-FAAFFF (base 16) Massar Networks -- Postfach 1207PEAX ID 473.1849.6740.89 -- Baar Zug CH-6341 -- CH -+8C-1F-64 (hex) Camius -+601000-601FFF (base 16) Camius -+ 41593 Winchester Rd., Ste 200 -+ Temecula CA 92590 -+ US - - 8C-1F-64 (hex) Vytahy-Vymyslicky s.r.o. - 737000-737FFF (base 16) Vytahy-Vymyslicky s.r.o. -@@ -23312,17 +23372,17 @@ FAA000-FAAFFF (base 16) Massar Networks - Uherske Hradiste - Jarosov 60801 - CZ - --8C-1F-64 (hex) Retency --BBF000-BBFFFF (base 16) Retency -- 19 rue Vivienne -- Paris 75002 -- FR -+8C-1F-64 (hex) Unitron Systems b.v. -+FA8000-FA8FFF (base 16) Unitron Systems b.v. -+ SCHANSESTRAAT 7 -+ IJzendijke 4515 RN -+ NL - --8C-1F-64 (hex) Camius --601000-601FFF (base 16) Camius -- 41593 Winchester Rd., Ste 200 -- Temecula CA 92590 -- US -+8C-1F-64 (hex) Massar Networks -+FAA000-FAAFFF (base 16) Massar Networks -+ Postfach 1207PEAX ID 473.1849.6740.89 -+ Baar Zug CH-6341 -+ CH - - 8C-1F-64 (hex) Patch Technologies, Inc. - 0AC000-0ACFFF (base 16) Patch Technologies, Inc. -@@ -23360,12 +23420,6 @@ C3A000-C3AFFF (base 16) YUSUR Technology Co., Ltd. - Vancouver BC V5K 2B2 - CA - --8C-1F-64 (hex) Benison Tech --3AC000-3ACFFF (base 16) Benison Tech -- 2100 Geng Road, Suite 210 -- Palo Alto CA 94043 -- US -- - 8C-1F-64 (hex) HIGHVOLT Prüftechnik - 8F8000-8F8FFF (base 16) HIGHVOLT Prüftechnik - Marie-Curie-Straße10 -@@ -23378,17 +23432,11 @@ C3A000-C3AFFF (base 16) YUSUR Technology Co., Ltd. - Vaajakoski 40800 - FI - --8C-1F-64 (hex) BCMTECH --94C000-94CFFF (base 16) BCMTECH -- 803ho(Gongjang-dong), Simin-daero 109beon-gil, Dongan-gu, -- Anyang-si Gyeonggi-do 14042 -- KR -- --8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme --97C000-97CFFF (base 16) MB connect line GmbH Fernwartungssysteme -- Winnettener Straße 6 -- Dinkelsbuehl Bavaria 91550 -- DE -+8C-1F-64 (hex) Benison Tech -+3AC000-3ACFFF (base 16) Benison Tech -+ 2100 Geng Road, Suite 210 -+ Palo Alto CA 94043 -+ US - - 8C-1F-64 (hex) SLAT - 683000-683FFF (base 16) SLAT -@@ -23396,30 +23444,30 @@ C3A000-C3AFFF (base 16) YUSUR Technology Co., Ltd. - Champagne au Mont d'Or Rhône 69543 - FR - -+8C-1F-64 (hex) MB connect line GmbH Fernwartungssysteme -+97C000-97CFFF (base 16) MB connect line GmbH Fernwartungssysteme -+ Winnettener Straße 6 -+ Dinkelsbuehl Bavaria 91550 -+ DE -+ - 8C-1F-64 (hex) E VISION INDIA PVT LTD - 7AF000-7AFFFF (base 16) E VISION INDIA PVT LTD - 9/205, MAIN MARKET OLD FARIDABAD HARYANA INDIA 121002 - Faridabad HARYANA 121002 - IN - -+8C-1F-64 (hex) BCMTECH -+94C000-94CFFF (base 16) BCMTECH -+ 803ho(Gongjang-dong), Simin-daero 109beon-gil, Dongan-gu, -+ Anyang-si Gyeonggi-do 14042 -+ KR -+ - 8C-1F-64 (hex) Fink Zeitsysteme GmbH - 73B000-73BFFF (base 16) Fink Zeitsysteme GmbH - Möslestraße 21 - Altach Vorarlberg 6844 - AT - --70-B3-D5 (hex) PLANET INNOVATION (PI) --C75000-C75FFF (base 16) PLANET INNOVATION (PI) -- 6 Thomas -- Irvine CA 92618 -- US -- --8C-1F-64 (hex) KST technology --DD7000-DD7FFF (base 16) KST technology -- KST B/D 4-5, Wiryeseong-daero 12-gil -- Songpa-gu Seoul 05636 -- KR -- - 8C-1F-64 (hex) Bavaria Digital Technik GmbH - FB5000-FB5FFF (base 16) Bavaria Digital Technik GmbH - Rehbichler Weg 26 -@@ -23432,6 +23480,42 @@ CF4000-CF4FFF (base 16) NT - Tel Aviv 6701101 - IL - -+8C-1F-64 (hex) KST technology -+DD7000-DD7FFF (base 16) KST technology -+ KST B/D 4-5, Wiryeseong-daero 12-gil -+ Songpa-gu Seoul 05636 -+ KR -+ -+70-B3-D5 (hex) PLANET INNOVATION (PI) -+C75000-C75FFF (base 16) PLANET INNOVATION (PI) -+ 6 Thomas -+ Irvine CA 92618 -+ US -+ -+8C-1F-64 (hex) UniJet Co., Ltd. -+946000-946FFF (base 16) UniJet Co., Ltd. -+ 53-24,Dongtansandan 6-gil -+ Hwaseong Gyeonggi-do 18487 -+ KR -+ -+8C-1F-64 (hex) BELIMO Automation AG -+90F000-90FFFF (base 16) BELIMO Automation AG -+ brunnenbachstrasse 1 -+ Hinwil Zurich 8340 -+ CH -+ -+8C-1F-64 (hex) Sanchar Communication Systems -+685000-685FFF (base 16) Sanchar Communication Systems -+ X-47, okhla phase 2 -+ delhi delhi 110020 -+ IN -+ -+8C-1F-64 (hex) BRS Sistemas Eletrônicos -+CAF000-CAFFFF (base 16) BRS Sistemas Eletrônicos -+ Rua Gomes de Freitas, 491 / 204 -+ Porto Alegre RS 91380-000 -+ BR -+ - 70-B3-D5 (hex) DISMUNTEL SAL - 92C000-92CFFF (base 16) DISMUNTEL SAL - Pol ind cotes -@@ -28877,12 +28961,6 @@ DC0000-DC0FFF (base 16) Pigs Can Fly Labs LLC - Beaverton OR 97008 - US - --8C-1F-64 (hex) United States Technologies Inc. --525000-525FFF (base 16) United States Technologies Inc. -- 1701 Pollitt Drive -- Fair Lawn NJ 07410 -- US -- - 8C-1F-64 (hex) EMBSYS SISTEMAS EMBARCADOS - FD4000-FD4FFF (base 16) EMBSYS SISTEMAS EMBARCADOS - AV. SIGISMUNDO NUNES DE OLIVEIRA,570 CASA 324 -@@ -28895,11 +28973,17 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Webb City MO 64870 - US - --8C-1F-64 (hex) PuS GmbH und Co. KG --4E0000-4E0FFF (base 16) PuS GmbH und Co. KG -- Hainstr. 13 -- Gera Germany 07545 -- DE -+8C-1F-64 (hex) United States Technologies Inc. -+525000-525FFF (base 16) United States Technologies Inc. -+ 1701 Pollitt Drive -+ Fair Lawn NJ 07410 -+ US -+ -+8C-1F-64 (hex) Rumble, Inc -+837000-837FFF (base 16) Rumble, Inc -+ Bluebonnet Ln -+ Austin TX 78704 -+ US - - 8C-1F-64 (hex) EA Elektroautomatik GmbH & Co. KG - 504000-504FFF (base 16) EA Elektroautomatik GmbH & Co. KG -@@ -28907,11 +28991,11 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Viersen NRW 41747 - DE - --8C-1F-64 (hex) Rumble, Inc --837000-837FFF (base 16) Rumble, Inc -- Bluebonnet Ln -- Austin TX 78704 -- US -+8C-1F-64 (hex) PuS GmbH und Co. KG -+4E0000-4E0FFF (base 16) PuS GmbH und Co. KG -+ Hainstr. 13 -+ Gera Germany 07545 -+ DE - - 8C-1F-64 (hex) Cinetix Srl - 89E000-89EFFF (base 16) Cinetix Srl -@@ -28919,18 +29003,18 @@ DD5000-DD5FFF (base 16) Cardinal Scales Manufacturing Co - Borgo Valsugana Trento 38051 - IT - --8C-1F-64 (hex) Mitsubishi Electric India Pvt. Ltd. --D92000-D92FFF (base 16) Mitsubishi Electric India Pvt. Ltd. -- EL3, J BLOCK, M.I.D.C. Bhosari -- PUNE Maharastra 411027 -- IN -- - 8C-1F-64 (hex) ATM SOLUTIONS - 9BD000-9BDFFF (base 16) ATM SOLUTIONS - Office 10, Krishna Arcade, Plot 65, Sector 2A, Koparkharine - Navi Mumbai Maharashatra 400709 - IN - -+8C-1F-64 (hex) Mitsubishi Electric India Pvt. Ltd. -+D92000-D92FFF (base 16) Mitsubishi Electric India Pvt. Ltd. -+ EL3, J BLOCK, M.I.D.C. Bhosari -+ PUNE Maharastra 411027 -+ IN -+ - 8C-1F-64 (hex) Integer.pl S.A. - A97000-A97FFF (base 16) Integer.pl S.A. - Wielicka 28 -@@ -28949,17 +29033,11 @@ A97000-A97FFF (base 16) Integer.pl S.A. - Hagen 58119 - DE - --8C-1F-64 (hex) SCIREQ Scientific Respiratory Equipment Inc --01E000-01EFFF (base 16) SCIREQ Scientific Respiratory Equipment Inc -- 6600 rue St. Urbain, Suite 300 -- Montreal Quebec H2S 3G8 -- CA -- --8C-1F-64 (hex) Beijing Wenrise Technology Co., Ltd. --A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. -- No.10 Shangdi Road, Haidian District -- Beijing Beijing 100085 -- CN -+8C-1F-64 (hex) ADAMCZEWSKI elektronische Messtechnik GmbH -+F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH -+ Felix-Wankel-Str. 13 -+ Zaberfeld Baden-Württemberg 74374 -+ DE - - 8C-1F-64 (hex) XSENSOR Technology Corp. - 7AA000-7AAFFF (base 16) XSENSOR Technology Corp. -@@ -28967,29 +29045,29 @@ A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. - Calgary Alberta T2G 0Z9 - CA - --8C-1F-64 (hex) ADAMCZEWSKI elektronische Messtechnik GmbH --F4E000-F4EFFF (base 16) ADAMCZEWSKI elektronische Messtechnik GmbH -- Felix-Wankel-Str. 13 -- Zaberfeld Baden-Württemberg 74374 -- DE -- - 8C-1F-64 (hex) MG s.r.l. - 67A000-67AFFF (base 16) MG s.r.l. - via Monte Bianco, 1 - Solbiate Olona VA 21058 - IT - -+8C-1F-64 (hex) Beijing Wenrise Technology Co., Ltd. -+A84000-A84FFF (base 16) Beijing Wenrise Technology Co., Ltd. -+ No.10 Shangdi Road, Haidian District -+ Beijing Beijing 100085 -+ CN -+ - 8C-1F-64 (hex) AMF Medical SA - F52000-F52FFF (base 16) AMF Medical SA - Chemin de la Dent-d'Oche 1 A - Ecublens VD Vaud 1024 - CH - --8C-1F-64 (hex) Qualitrol LLC --905000-905FFF (base 16) Qualitrol LLC -- 1385 Fairport Rd -- Fairport NY 14450 -- US -+8C-1F-64 (hex) SCIREQ Scientific Respiratory Equipment Inc -+01E000-01EFFF (base 16) SCIREQ Scientific Respiratory Equipment Inc -+ 6600 rue St. Urbain, Suite 300 -+ Montreal Quebec H2S 3G8 -+ CA - - 8C-1F-64 (hex) HUPI - 489000-489FFF (base 16) HUPI -@@ -28997,6 +29075,18 @@ F52000-F52FFF (base 16) AMF Medical SA - Bidart Sélectionnez un département / état 64210 - FR - -+8C-1F-64 (hex) Qualitrol LLC -+905000-905FFF (base 16) Qualitrol LLC -+ 1385 Fairport Rd -+ Fairport NY 14450 -+ US -+ -+8C-1F-64 (hex) WINTUS SYSTEM -+9BA000-9BAFFF (base 16) WINTUS SYSTEM -+ E1102, 7 yeonmujang 5ga gil, seongdong-gu -+ SEOUL SEOUL 04782 -+ KR -+ - 8C-1F-64 (hex) TTC TELEKOMUNIKACE, s.r.o. - E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. - Trebohosticka 5 -@@ -29009,11 +29099,11 @@ E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. - Yreka CA 96097 - US - --8C-1F-64 (hex) WINTUS SYSTEM --9BA000-9BAFFF (base 16) WINTUS SYSTEM -- E1102, 7 yeonmujang 5ga gil, seongdong-gu -- SEOUL SEOUL 04782 -- KR -+8C-1F-64 (hex) Proterra, Inc -+552000-552FFF (base 16) Proterra, Inc -+ 1 Whitlee Court -+ Greenville SC 29607 -+ US - - 8C-1F-64 (hex) eumig industrie-TV GmbH. - 5B3000-5B3FFF (base 16) eumig industrie-TV GmbH. -@@ -29021,12 +29111,6 @@ E4C000-E4CFFF (base 16) TTC TELEKOMUNIKACE, s.r.o. - Anif Salzburg 5081 - AT - --8C-1F-64 (hex) Proterra, Inc --552000-552FFF (base 16) Proterra, Inc -- 1 Whitlee Court -- Greenville SC 29607 -- US -- - 8C-1F-64 (hex) TeraDiode / Panasonic - 2C3000-2C3FFF (base 16) TeraDiode / Panasonic - 30 Upton Dr -@@ -29045,18 +29129,6 @@ D7C000-D7CFFF (base 16) QUERCUS TECHNOLOGIES, S.L. - Uijeongbu-si Gyonggi-do 11652 - KR - --8C-1F-64 (hex) M/S MILIND RAMACHANDRA RAJWADE --721000-721FFF (base 16) M/S MILIND RAMACHANDRA RAJWADE -- 713, Sinhgad Road, P.cast S. No. 39, Manikbaug Industries Wadagaon Budru -- Pune Maharashtra 411051 -- IN -- --8C-1F-64 (hex) JW Froehlich Maschinenfabrik GmbH --C8F000-C8FFFF (base 16) JW Froehlich Maschinenfabrik GmbH -- Kohlhammerstrasse 18-24 -- Leinfelden-Echterdingen 70771 -- DE -- - 8C-1F-64 (hex) VECOS Europe B.V. - C80000-C80FFF (base 16) VECOS Europe B.V. - ESP 237 -@@ -29069,6 +29141,18 @@ C80000-C80FFF (base 16) VECOS Europe B.V. - Albstadt Baden Württemberg 72458 - DE - -+8C-1F-64 (hex) M/S MILIND RAMACHANDRA RAJWADE -+721000-721FFF (base 16) M/S MILIND RAMACHANDRA RAJWADE -+ 713, Sinhgad Road, P.cast S. No. 39, Manikbaug Industries Wadagaon Budru -+ Pune Maharashtra 411051 -+ IN -+ -+8C-1F-64 (hex) JW Froehlich Maschinenfabrik GmbH -+C8F000-C8FFFF (base 16) JW Froehlich Maschinenfabrik GmbH -+ Kohlhammerstrasse 18-24 -+ Leinfelden-Echterdingen 70771 -+ DE -+ - 8C-1F-64 (hex) Power Electronics Espana, S.L. - D08000-D08FFF (base 16) Power Electronics Espana, S.L. - Poligono Industrial Carrases. Ronda del camp d Aviacio 4 -@@ -29087,18 +29171,18 @@ B01000-B01FFF (base 16) noah - Leipzig 04109 - DE - --8C-1F-64 (hex) eumig industrie-TV GmbH. --426000-426FFF (base 16) eumig industrie-TV GmbH. -- Gewerbeparkstrasse 9 -- Anif Salzburg 5081 -- AT -- - 8C-1F-64 (hex) Hamamatsu Photonics K.K. - 67F000-67FFFF (base 16) Hamamatsu Photonics K.K. - 314-5 Shimokanzo - Iwata Shizuoka 4380193 - JP - -+8C-1F-64 (hex) eumig industrie-TV GmbH. -+426000-426FFF (base 16) eumig industrie-TV GmbH. -+ Gewerbeparkstrasse 9 -+ Anif Salzburg 5081 -+ AT -+ - 8C-1F-64 (hex) Telemetrics Inc. - 5E5000-5E5FFF (base 16) Telemetrics Inc. - 75 Commerce Dr -@@ -29123,18 +29207,18 @@ E0E000-E0EFFF (base 16) Nokeval Oy - fuzhou 350008 - CN - --8C-1F-64 (hex) TEKVOX, Inc --197000-197FFF (base 16) TEKVOX, Inc -- 1965 Post Rd, Suite 400 -- New Braunfels TX 78130 -- US -- - 8C-1F-64 (hex) ACSL Ltd. - A2D000-A2DFFF (base 16) ACSL Ltd. - 3-6-4 Rinkaicho - Edogawa-ku Tokyo 134-0086 - JP - -+8C-1F-64 (hex) TEKVOX, Inc -+197000-197FFF (base 16) TEKVOX, Inc -+ 1965 Post Rd, Suite 400 -+ New Braunfels TX 78130 -+ US -+ - 8C-1F-64 (hex) Private - EE0000-EE0FFF (base 16) Private - -@@ -29161,3 +29245,9 @@ DFE000-DFEFFF (base 16) Nuvation Energy - 630 Lively Blvd - Elk Grove Village IL 60007 - US -+ -+8C-1F-64 (hex) AperNet, LLC -+043000-043FFF (base 16) AperNet, LLC -+ 651 North Broad StreetSuite 206 -+ Middletown DE 19709 -+ US -diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids -index 9bba38f431..dddb2b639a 100644 ---- a/hwdb.d/pci.ids -+++ b/hwdb.d/pci.ids -@@ -1,8 +1,8 @@ - # - # List of PCI ID's - # --# Version: 2022.05.03 --# Date: 2022-05-03 03:15:01 -+# Version: 2022.05.09 -+# Date: 2022-05-09 03:15:02 - # - # Maintained by Albert Pool, Martin Mares, and other volunteers from - # the PCI ID Project at https://pci-ids.ucw.cz/. -@@ -70,6 +70,8 @@ - 018a LevelOne - 0106 FPC-0106TX misprogrammed [RTL81xx] - 01de Oxide Computer Company -+ 0000 Propolis NVMe Controller -+ 0001 Propolis xHCI Controller - # probably misprogrammed Intel Atom C2338 on Dell 0K8Y0N board - 0200 Dell (wrong ID) - # 021b is not Compaq but there is a board misprogrammed -@@ -743,7 +745,7 @@ - 1028 213e PERC H765i MX - 1028 213f PERC H365i Adapter - 1028 2140 PERC H365i Front -- 1028 2141 PERC H360 MX -+ 1028 2141 PERC H365i MX - 1028 2142 HBA465e Adapter - 1028 2209 HBA465i Adapter - 1028 220a HBA465i Front -@@ -6821,6 +6823,8 @@ - 3505 SH7751 PCI Controller (PCIC) - 350e SH7751R PCI Controller (PCIC) - 1055 Microchip Technology / SMSC -+ 7430 LAN7430 -+ 7431 LAN7431 - 9130 SLC90E66 [Victory66] IDE - 9460 SLC90E66 [Victory66] ISA - 9462 SLC90E66 [Victory66] USB -@@ -12479,8 +12483,9 @@ - 223f GA102GL - 228b GA104 High Definition Audio Controller - 2296 Tegra PCIe Endpoint Virtual Network -- 2302 GA103 -- 2321 GA103 -+ 2302 GH100 -+ 2321 GH100 -+ 2336 GH100 [H100 96GB] - 2414 GA103 [GeForce RTX 3060 Ti] - 2420 GA103M [GeForce RTX 3080 Ti Mobile] - 2438 GA103GLM [RTX A5500 Laptop GPU] -@@ -17216,8 +17221,42 @@ - 5190 9200 ECO NVMe SSD - 5191 9200 PRO NVMe SSD - 5192 9200 MAX NVMe SSD -- 51a2 9300 PRO NVMe SSD -- 51a3 9300 MAX NVMe SSD -+ 51a2 7300 PRO NVMe SSD -+ 51a3 7300 MAX NVMe SSD -+ 51b1 9300 PRO NVMe SSD -+ 1344 4000 3.84TB U.2 -+ 1344 5000 7.68TB U.2 -+ 1344 6000 15.36TB U.2 -+ 51b2 9300 MAX NVMe SSD -+ 1344 4000 3.2TB U.2 -+ 1344 5000 6.4 TB U.2 -+ 1344 6000 12.8TB U.2 -+ 51c0 7400 PRO NVMe SSD -+ 1344 1100 M.2 480GB -+ 1344 2000 U.3 960GB -+ 1344 2100 M.2 960GB -+ 1344 2600 E1.S 960GB -+ 1344 2b00 M.2 1920GB -+ 1344 2d00 E1.2 1920GB -+ 1344 3000 U.3 1920GB -+ 1344 3e00 M.2 3840GB -+ 1344 3f00 E1.S 3840GB -+ 1344 4000 U.3 3840GB -+ 1344 5000 U.3 7680GB -+ 51c1 7400 MAX NVMe SSD -+ 1344 1100 M.2 400GB -+ 1344 2000 U.3 800GB -+ 1344 2100 M.2 800GB -+ 1344 2600 E1.S 800GB -+ 1344 2b00 M.2 1600GB -+ 1344 2d00 E1.S 1600GB -+ 1344 3000 U.3 1600GB -+ 1344 3e00 M.2 3200GB -+ 1344 3f00 E1.S 3200GB -+ 1344 4000 U.3 3200GB -+ 1344 5000 U.3 6400GB -+ 51c3 7450 PRO NVMe SSD -+ 51c4 7450 MAX NVMe SSD - 1345 Arescom Inc - 1347 Odetics - 1349 Sumitomo Electric Industries, Ltd. -@@ -18734,6 +18773,8 @@ - 6088 T62100-6088 Unified Wire Ethernet Controller - 6089 T62100-6089 Unified Wire Ethernet Controller - 608a T62100-608a Unified Wire Ethernet Controller -+ 6092 T62100-KR Unified Wire Ethernet Controller -+ 01de fff9 Gimlet T6 - 6401 T6225-CR Unified Wire Ethernet Controller - 6402 T6225-SO-CR Unified Wire Ethernet Controller - 6403 T6425-CR Unified Wire Ethernet Controller -@@ -18758,6 +18799,8 @@ - 6488 T62100-6088 Unified Wire Ethernet Controller - 6489 T62100-6089 Unified Wire Ethernet Controller - 648a T62100-608a Unified Wire Ethernet Controller -+ 6492 T62100-KR Unified Wire Ethernet Controller -+ 01de fff9 Gimlet T6 - 6501 T6225-CR Unified Wire Storage Controller - 6502 T6225-SO-CR Unified Wire Storage Controller - 6503 T6425-CR Unified Wire Storage Controller -@@ -18782,6 +18825,7 @@ - 6588 T62100-6088 Unified Wire Storage Controller - 6589 T62100-6089 Unified Wire Storage Controller - 658a T62100-608a Unified Wire Storage Controller -+ 6592 T62100-KR Unified Wire Storage Controller - 6601 T6225-CR Unified Wire Storage Controller - 6602 T6225-SO-CR Unified Wire Storage Controller - 6603 T6425-CR Unified Wire Storage Controller -@@ -18806,6 +18850,7 @@ - 6688 T62100-6088 Unified Wire Storage Controller - 6689 T62100-6089 Unified Wire Storage Controller - 668a T62100-608a Unified Wire Storage Controller -+ 6692 T62100-KR Unified Wire Storage Controller - 6801 T6225-CR Unified Wire Ethernet Controller [VF] - 6802 T6225-SO-CR Unified Wire Ethernet Controller [VF] - 6803 T6425-CR Unified Wire Ethernet Controller [VF] -@@ -23434,7 +23479,9 @@ - # nee Qumranet, Inc. - 1af4 Red Hat, Inc. - 1000 Virtio network device -+ 01de fffb Propolis Virtio network device - 1001 Virtio block device -+ 01de fffa Propolis Virtio block device - 1002 Virtio memory balloon - 1003 Virtio console - 1004 Virtio SCSI -@@ -24749,6 +24796,45 @@ - 1f2f 6115 KM660 U.2 3.2TB NVMe SSD - 1f2f 6116 KM560 U.2 3.84TB NVMe SSD - 1f2f 6118 KM560 U.2 7.68TB NVMe SSD -+1f3f 3SNIC Ltd -+ 2100 3SRAID SAS/SATA HBA -+ 1f3f 0120 HBA 32 Ports -+ 1f3f 0125 HBA 40 Ports -+ 1f3f 0180 HBA 16 Ports -+ 1f3f 0185 HBA 8 Ports -+ 2200 3SRAID RAID controller -+ 1f3f 0185 RAID Controller 16 Ports with 2G Cache -+ 1f3f 01a1 RAID Controller 40 Ports with 2G Cache -+ 1f3f 01a4 RAID Controller 16 Ports with 4G Cache -+ 1f3f 01a8 RAID Controller 32 Ports with 4G Cache -+ 1f3f 01ad RAID Controller 40 Ports with 4G Cache -+ 9001 Ethernet VF -+ 1f3f 1000 Ethernet VF -+ 9002 Ethernet VF Hyper-V -+ 1f3f 1000 Ethernet VF Hyper-V -+ 9003 Ethernet SDI VF -+ 1f3f 1000 Ethernet SDI VF -+ 9004 Ethernet SDI VF Hyper-V -+ 1f3f 1000 Ethernet SDI VF Hyper-V -+ 9008 3SFC VF -+ 1f3f 1000 3SFC VF -+ 9009 3SFC VF Hyper-V -+ 1f3f 1000 3SFC VF Hyper-V -+ 9010 3SFC FC Controller -+ 1f3f 0041 Dual Port 16GE FC to PCIe Gen4 x16 Adapter -+ 1f3f 0061 Dual Port 32GE FC to PCIe Gen4 x16 Adapter -+ 9020 Ethernet Network Adapter -+ 1f3f 0051 Dual Port 25GE Ethernet Network Adapter -+ 1f3f 0052 Quad Port 25GE Ethernet Network Adapter -+ 1f3f 00a1 Dual Port 100GE Ethernet Network Adapter -+ 9030 IPU -+ 1f3f 0051 Dual Port 25GE IPU -+ 9031 SDI5.0 -+ 1f3f 0051 Dual Port 25GE SDI5.0lite -+ 1f3f 00a1 Dual Port 100GE SDI5.0 -+ 9032 SDI5.1 -+ 1f3f 00a1 Dual Port 100GE SDI5.1 -+1faa Hexaflake (Shanghai) Information Technology Co., Ltd. - 1fab Unifabrix Ltd. - 0000 Nexus Alpha IVPU - # nee Tumsan Oy -@@ -25278,8 +25364,6 @@ - 5168 Animation Technologies Inc. - 0300 FlyDVB-S - 0301 FlyDVB-T --51d8 Alder Lake-P Serial IO I2C Controller #2 --51d9 Alder Lake-P Serial IO I2C Controller #3 - 5301 Alliance Semiconductor Corp. - 0001 ProMotion aT3D - 5333 S3 Graphics Ltd. -@@ -25498,11 +25582,11 @@ - 1800 CooVOX TDM BRI Module - 6766 Glenfly Tech Co., Ltd. - 3d00 Arise-GT-10C0 -- 3d02 Arise 1020 -+ 3d02 Arise1020 - 3d03 Arise-GT-1040 - 3d04 Arise1010 - 3d40 Arise-GT-10C0 High Definition Audio Controller -- 3d41 Arise 1020 High Definition Audio Controller -+ 3d41 Arise1020 High Definition Audio Controller - 6899 ZT Systems - # nee Qumranet - 6900 Red Hat, Inc. -@@ -27378,6 +27462,7 @@ - 1234 430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) - 1235 430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) - 1237 440FX - 82441FX PMC [Natoma] -+ 01de fffe Propolis Virtual 440FX - 1af4 1100 Qemu virtual machine - 1239 82371FB PIIX IDE Interface - 123b 82380PB PCI to PCI Docking Bridge -@@ -32754,6 +32839,7 @@ - 6ffd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 7000 82371SB PIIX3 ISA [Natoma/Triton II] -+ 01de fffd Propolis Virtual PIIX3 ISA Controller - 1af4 1100 Qemu virtual machine - 7010 82371SB PIIX3 IDE [Natoma/Triton II] - 1af4 1100 Qemu virtual machine -@@ -32771,6 +32857,7 @@ - 15ad 1976 Virtual Machine Chipset - 1af4 1100 QEMU Virtual Machine - 7113 82371AB/EB/MB PIIX4 ACPI -+ 01de fffc Propolis Virtual PIIX4 PM Controller - 15ad 1976 Virtual Machine Chipset - 1af4 1100 Qemu virtual machine - 7120 82810 GMCH (Graphics Memory Controller Hub) -@@ -32845,6 +32932,9 @@ - 7aa4 Alder Lake-S PCH SPI Controller - 7aa7 Alder Lake-S PCH Shared SRAM - 7ab4 Alder Lake-S PCH PCI Express Root Port #13 -+ 7ab8 Alder Lake-S PCH PCI Express Root Port #1 -+ 7ab9 Alder Lake-S PCH PCI Express Root Port #2 -+ 7abc Alder Lake-S PCH PCI Express Root Port #5 - 7abd Alder Lake-S PCH PCI Express Root Port #6 - 7acc Alder Lake-S PCH I2C Controller #0 - 7ad0 Alder Lake-S HD Audio Controller -diff --git a/hwdb.d/usb.ids b/hwdb.d/usb.ids -index 9342f7c331..7f41fd0b07 100644 ---- a/hwdb.d/usb.ids -+++ b/hwdb.d/usb.ids -@@ -9,8 +9,8 @@ - # The latest version can be obtained from - # http://www.linux-usb.org/usb.ids - # --# Version: 2022.05.03 --# Date: 2022-05-03 20:34:10 -+# Version: 2022.05.09 -+# Date: 2022-05-09 20:34:10 - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -21558,6 +21558,12 @@ - 061d PCTV Deluxe (NTSC) Device - 061e PCTV Deluxe (PAL) Device - 2304 1689 -+2309 TimeLink Technology Co., Ltd -+ 1001 Touch Device(hid) -+ 1005 Touch Device -+ 1006 Touch Device(2) -+ 1007 MulTouch Device(hid) -+ 1009 Touch Device(hid) - 230d Teracom - 0103 Huwaii 3g wireless modem - 2314 INQ Mobile diff --git a/SOURCES/0318-hwdb-add-touchpad-parameters-for-Lenovo-T15g-Gen1-23.patch b/SOURCES/0318-hwdb-add-touchpad-parameters-for-Lenovo-T15g-Gen1-23.patch deleted file mode 100644 index 0808a87..0000000 --- a/SOURCES/0318-hwdb-add-touchpad-parameters-for-Lenovo-T15g-Gen1-23.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a80d44db309d07425e1efe06722220876caf1f8d Mon Sep 17 00:00:00 2001 -From: Nikolai Grigoriev <2364632+ngrigoriev@users.noreply.github.com> -Date: Sat, 14 May 2022 17:39:02 -0400 -Subject: [PATCH] hwdb: add touchpad parameters for Lenovo T15g Gen1 (#23373) - -(cherry picked from commit 5a6bcbb00134e4f810bcefa0c6e1340c75e6981e) - -Related: #2087778 ---- - hwdb.d/60-evdev.hwdb | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb -index 2d1751b478..da4eb0070a 100644 ---- a/hwdb.d/60-evdev.hwdb -+++ b/hwdb.d/60-evdev.hwdb -@@ -588,6 +588,13 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2a:* - EVDEV_ABS_35=::44 - EVDEV_ABS_36=::52 - -+# Lenovo ThinkPad T15g Gen1 -+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*pvrThinkPadT15gGen1** -+ EVDEV_ABS_00=::44 -+ EVDEV_ABS_01=::50 -+ EVDEV_ABS_35=::44 -+ EVDEV_ABS_36=::50 -+ - # Lenovo Legion Y9000X2020 - evdev:name:MSFT0001:02 04F3:304B Touchpad:dmi:*svnLENOVO:*pvrLenovoLegionY9000X2020:* - EVDEV_ABS_00=::31 diff --git a/SOURCES/0319-hwdb-Add-accel-orientation-for-the-I15-TG.patch b/SOURCES/0319-hwdb-Add-accel-orientation-for-the-I15-TG.patch deleted file mode 100644 index ed48025..0000000 --- a/SOURCES/0319-hwdb-Add-accel-orientation-for-the-I15-TG.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a3a1bb14b60c215bd39c5ffde16ffe85fcafe109 Mon Sep 17 00:00:00 2001 -From: Martin -Date: Sun, 15 May 2022 00:51:59 +0200 -Subject: [PATCH] hwdb: Add accel orientation for the I15-TG - -Add accel orientation for the Cube iWork 10 I15-TG - -(cherry picked from commit c4c336e0cdf66a4c0922f2b77a7e6e3811287114) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index d883db22a1..3fb308f3f1 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -277,6 +277,7 @@ sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni18B:* - - # Cube iWork 10 Flagship - sensor:modalias:acpi:BOSC0200*:dmi:*:svnCube:pnI15-TC:* -+sensor:modalias:acpi:BOSC0200*:dmi:*:svnALLDOCUBE:pnI15-TG:* - ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - - # Cube iWork 11 Stylus diff --git a/SOURCES/0320-hwdb-fix-accelerometer-mount-matrix-for-Aquarius-NS4.patch b/SOURCES/0320-hwdb-fix-accelerometer-mount-matrix-for-Aquarius-NS4.patch deleted file mode 100644 index 2dfd67b..0000000 --- a/SOURCES/0320-hwdb-fix-accelerometer-mount-matrix-for-Aquarius-NS4.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8373d5f5a1c9604a1a87cdc04668000720fe3155 Mon Sep 17 00:00:00 2001 -From: Nikolai Kostrigin -Date: Fri, 13 May 2022 17:13:00 +0300 -Subject: [PATCH] hwdb: fix accelerometer mount matrix for Aquarius NS483 - -Signed-off-by: Nikolai Kostrigin -(cherry picked from commit e4bb1a07ef834f4e4eabe1fa21e838586e7dd2a3) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 3fb308f3f1..104fe05187 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -106,6 +106,14 @@ sensor:modalias:acpi:BOSC0200*:dmi:*svn*Acer*:*pn*Spin*SP111-33:* - sensor:modalias:acpi:BOSC0200*:dmi:*svnAcer*:*pnSpinSP111-34:* - ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 - -+######################################### -+# Aquarius -+######################################### -+ -+# Aquarius NS483 -+sensor:modalias:acpi:MXC6655*:dmi:*:svnAquarius*:pnNS483:* -+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 -+ - ######################################### - # Archos - ######################################### diff --git a/SOURCES/0321-hwdb-Add-Google-Hangouts-Meet-speakermic.patch b/SOURCES/0321-hwdb-Add-Google-Hangouts-Meet-speakermic.patch deleted file mode 100644 index 19b1384..0000000 --- a/SOURCES/0321-hwdb-Add-Google-Hangouts-Meet-speakermic.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 20537f77e4b66c5e657174a4f29dfaf883b8929c Mon Sep 17 00:00:00 2001 -From: Pablo Ceballos -Date: Fri, 13 May 2022 23:33:07 +0000 -Subject: [PATCH] hwdb: Add Google Hangouts Meet speakermic - -This device implements the phone mute HID usage as a toggle switch, -where 1 indicates muted, and 0 indicates unmuted. However, for a key -event 1 indicates that the key has been pressed and 0 indicates it has -been released. This mismatch causes issues, so prevent key events from -being generated for this HID usage. - -(cherry picked from commit 2d251543211dae43bcf6f01ed32a3dbe8fef1ea7) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index b852f33608..2e4f6f4293 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -511,6 +511,14 @@ evdev:input:b0003v0458p0708* - KEYBOARD_KEY_0900fd=scale - KEYBOARD_KEY_0900fc=screenlock - -+########################################################### -+# Google -+########################################################### -+ -+# Google Hangouts Meet speakermic -+evdev:input:b0003v18D1p8001* -+ KEYBOARD_KEY_b002f=reserved # Disable micmute key -+ - ########################################################### - # Hewlett Packard - ########################################################### diff --git a/SOURCES/0322-hwdb-update-via-ninja-C-build-update-hwdb.patch b/SOURCES/0322-hwdb-update-via-ninja-C-build-update-hwdb.patch deleted file mode 100644 index 7266877..0000000 --- a/SOURCES/0322-hwdb-update-via-ninja-C-build-update-hwdb.patch +++ /dev/null @@ -1,7079 +0,0 @@ -From a3cfd0001a0854d247ac30c111e41058276abd52 Mon Sep 17 00:00:00 2001 -From: Luca Boccassi -Date: Sat, 21 May 2022 12:44:36 +0100 -Subject: [PATCH] hwdb: update via ninja -C build update-hwdb - -(cherry picked from commit 5ea8bcd93d1df1caedf240f41e243584d4cf8258) - -Related: #2087778 ---- - hwdb.d/20-OUI.hwdb | 199 +- - hwdb.d/20-acpi-vendor.hwdb.patch | 4 +- - hwdb.d/20-pci-vendor-model.hwdb | 108 +- - hwdb.d/20-usb-vendor-model.hwdb | 4 +- - hwdb.d/ma-large.txt | 3648 ++++++++++++++++-------------- - hwdb.d/ma-medium.txt | 159 +- - hwdb.d/ma-small.txt | 95 +- - hwdb.d/pci.ids | 58 +- - hwdb.d/usb.ids | 8 +- - 9 files changed, 2485 insertions(+), 1798 deletions(-) - -diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb -index d9d17f4b2c..c46086633c 100644 ---- a/hwdb.d/20-OUI.hwdb -+++ b/hwdb.d/20-OUI.hwdb -@@ -29592,7 +29592,7 @@ OUI:0025DE* - ID_OUI_FROM_DATABASE=Probits Co., LTD. - - OUI:0025DF* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=Taser International Inc. - - OUI:0025E0* - ID_OUI_FROM_DATABASE=CeedTec Sdn Bhd -@@ -34914,7 +34914,7 @@ OUI:0081F9* - ID_OUI_FROM_DATABASE=Texas Instruments - - OUI:0084ED* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=LEXMARK INTERNATIONAL, INC. - - OUI:00869C* - ID_OUI_FROM_DATABASE=Palo Alto Networks -@@ -41750,6 +41750,9 @@ OUI:088F2C* - OUI:0890BA* - ID_OUI_FROM_DATABASE=Danlaw Inc - -+OUI:089115* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:089204* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -41940,7 +41943,7 @@ OUI:08CA45* - ID_OUI_FROM_DATABASE=Toyou Feiji Electronics Co., Ltd. - - OUI:08CBE5* -- ID_OUI_FROM_DATABASE=R3 - Reliable Realtime Radio Communications GmbH -+ ID_OUI_FROM_DATABASE=R3 Solutions GmbH - - OUI:08CC27* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -@@ -44568,7 +44571,7 @@ OUI:141FBAE* - ID_OUI_FROM_DATABASE=POS Systema LLC - - OUI:141FBAF* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=IEEE Registration Authority - - OUI:14205E* - ID_OUI_FROM_DATABASE=Apple, Inc. -@@ -44615,6 +44618,9 @@ OUI:142D27* - OUI:142D4D* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:142D79* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:142D8B* - ID_OUI_FROM_DATABASE=Incipio Technologies, Inc - -@@ -51833,6 +51839,48 @@ OUI:2C6798* - OUI:2C67FB* - ID_OUI_FROM_DATABASE=ShenZhen Zhengjili Electronics Co., LTD - -+OUI:2C691D0* -+ ID_OUI_FROM_DATABASE=Hunan Xiangjiang Kunpeng Information Technology Co., Ltd. -+ -+OUI:2C691D1* -+ ID_OUI_FROM_DATABASE=KATEK SE -+ -+OUI:2C691D2* -+ ID_OUI_FROM_DATABASE=Abode Systems Inc -+ -+OUI:2C691D3* -+ ID_OUI_FROM_DATABASE=Sunsa, Inc -+ -+OUI:2C691D4* -+ ID_OUI_FROM_DATABASE=SPEEDTECH CORP. -+ -+OUI:2C691D5* -+ ID_OUI_FROM_DATABASE=LG Electronics Inc. -+ -+OUI:2C691D6* -+ ID_OUI_FROM_DATABASE=Carnegie Robotics -+ -+OUI:2C691D7* -+ ID_OUI_FROM_DATABASE=Shenzhen Gigalight Technology Co., Ltd -+ -+OUI:2C691D8* -+ ID_OUI_FROM_DATABASE=IBM -+ -+OUI:2C691D9* -+ ID_OUI_FROM_DATABASE=SHENZHEN EX-LINK TECHNOLOGY CO.,LTD -+ -+OUI:2C691DA* -+ ID_OUI_FROM_DATABASE=Panasonic Appliances Marketing Asia Pacific (A division of Panasonic Malaysia Sdn Bhd -+ -+OUI:2C691DB* -+ ID_OUI_FROM_DATABASE=Shenzhen Daren HI-Tech Electronics Co., Ltd. -+ -+OUI:2C691DC* -+ ID_OUI_FROM_DATABASE=Aparian, Inc. -+ -+OUI:2C691DD* -+ ID_OUI_FROM_DATABASE=Ascentac Inc. -+ - OUI:2C69BA* - ID_OUI_FROM_DATABASE=RF Controls, LLC - -@@ -52623,7 +52671,7 @@ OUI:3024A9* - ID_OUI_FROM_DATABASE=HP Inc. - - OUI:3027CF* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=Canopy Growth Corp - - OUI:302952* - ID_OUI_FROM_DATABASE=Hillstone Networks Inc -@@ -52694,6 +52742,9 @@ OUI:303ABA* - OUI:303D08* - ID_OUI_FROM_DATABASE=GLINTT TES S.A. - -+OUI:303D510* -+ ID_OUI_FROM_DATABASE=Fink Telecom Services GmbH -+ - OUI:303D511* - ID_OUI_FROM_DATABASE=SHENZHEN WLINK TECHNOLOGY CO., LTD. - -@@ -52709,6 +52760,12 @@ OUI:303D514* - OUI:303D515* - ID_OUI_FROM_DATABASE=Media Hub Digital Smart Home Pty Ltd. - -+OUI:303D516* -+ ID_OUI_FROM_DATABASE=Amber-Link Network Technology Co.,Ltd. -+ -+OUI:303D517* -+ ID_OUI_FROM_DATABASE=Destiny Automate Limited -+ - OUI:303D518* - ID_OUI_FROM_DATABASE=The Heil Co dba AWTI 3rd Eye Cam - -@@ -52721,9 +52778,15 @@ OUI:303D51A* - OUI:303D51B* - ID_OUI_FROM_DATABASE=Labman Automation - -+OUI:303D51C* -+ ID_OUI_FROM_DATABASE=TalkGo, Inc. -+ - OUI:303D51D* - ID_OUI_FROM_DATABASE=XOR UK Corporation Limited - -+OUI:303D51E* -+ ID_OUI_FROM_DATABASE=Percent.com -+ - OUI:303EA7* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -53796,7 +53859,7 @@ OUI:343794* - ID_OUI_FROM_DATABASE=Hamee Corp. - - OUI:3438AF* -- ID_OUI_FROM_DATABASE=Inlab Software GmbH -+ ID_OUI_FROM_DATABASE=Inlab Networks GmbH - - OUI:3438B7* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. -@@ -55352,6 +55415,9 @@ OUI:38A851* - OUI:38A86B* - ID_OUI_FROM_DATABASE=Orga BV - -+OUI:38A89B* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:38A8CD0* - ID_OUI_FROM_DATABASE=ACiiST Smart Networks Ltd. - -@@ -57518,6 +57584,9 @@ OUI:407496* - OUI:4074E0* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:4075C3* -+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. -+ - OUI:4076A9* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd. - -@@ -58223,6 +58292,9 @@ OUI:441102* - OUI:4411C2* - ID_OUI_FROM_DATABASE=Telegartner Karl Gartner GmbH - -+OUI:441244* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:441319* - ID_OUI_FROM_DATABASE=WKK TECHNOLOGY LTD. - -@@ -59642,6 +59714,9 @@ OUI:48706F* - OUI:487119* - ID_OUI_FROM_DATABASE=SGB GROUP LTD. - -+OUI:487310* -+ ID_OUI_FROM_DATABASE=Juniper Networks -+ - OUI:487397* - ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd - -@@ -66719,6 +66794,9 @@ OUI:643409* - OUI:64351C* - ID_OUI_FROM_DATABASE=e-CON SYSTEMS INDIA PVT LTD - -+OUI:6437A4* -+ ID_OUI_FROM_DATABASE=TOKYOSHUHA CO.,LTD. -+ - OUI:643AB1* - ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co.,LTD - -@@ -69728,6 +69806,9 @@ OUI:7040FF* - OUI:7041B7* - ID_OUI_FROM_DATABASE=Edwards Lifesciences LLC - -+OUI:7042D3* -+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD -+ - OUI:70441C* - ID_OUI_FROM_DATABASE=SHENZHEN KAIFA TECHNOLOGY CO.,LTD. - -@@ -71169,7 +71250,7 @@ OUI:70B3D5119* - ID_OUI_FROM_DATABASE=Private - - OUI:70B3D511A* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=Mahindra Electric Mobility Limited - - OUI:70B3D511B* - ID_OUI_FROM_DATABASE=HoseoTelnet Inc... -@@ -83723,6 +83804,9 @@ OUI:74D21D* - OUI:74D285* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:74D423* -+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -+ - OUI:74D435* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -@@ -86411,6 +86495,9 @@ OUI:7CDAC3* - OUI:7CDB98* - ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - -+OUI:7CDCCC* -+ ID_OUI_FROM_DATABASE=Beijing Yixin Techology Co.,Ltd -+ - OUI:7CDD11* - ID_OUI_FROM_DATABASE=Chongqing MAS SCI&TECH.Co.,Ltd - -@@ -88649,6 +88736,9 @@ OUI:84F1D0* - OUI:84F3EB* - ID_OUI_FROM_DATABASE=Espressif Inc. - -+OUI:84F44C* -+ ID_OUI_FROM_DATABASE=International Integrated Systems., Inc. -+ - OUI:84F493* - ID_OUI_FROM_DATABASE=OMS spol. s.r.o. - -@@ -89037,7 +89127,7 @@ OUI:885D90E* - ID_OUI_FROM_DATABASE=Unitac Technology Limited - - OUI:885D90F* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=IEEE Registration Authority - - OUI:885DFB* - ID_OUI_FROM_DATABASE=zte corporation -@@ -89436,7 +89526,7 @@ OUI:88B362* - ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd. - - OUI:88B436* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=FUJIFILM Corporation - - OUI:88B4A6* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -@@ -90029,6 +90119,9 @@ OUI:8C1F6408B* - OUI:8C1F6408F* - ID_OUI_FROM_DATABASE=AixControl GmbH - -+OUI:8C1F64092* -+ ID_OUI_FROM_DATABASE=Gogo BA -+ - OUI:8C1F64098* - ID_OUI_FROM_DATABASE=Agvolution GmbH - -@@ -90164,6 +90257,9 @@ OUI:8C1F641B6* - OUI:8C1F641BB* - ID_OUI_FROM_DATABASE=Renwei Electronics Technology (Shenzhen) Co.,LTD. - -+OUI:8C1F641BD* -+ ID_OUI_FROM_DATABASE=DORLET SAU -+ - OUI:8C1F641BF* - ID_OUI_FROM_DATABASE=Ossia Inc - -@@ -90281,6 +90377,9 @@ OUI:8C1F642F5* - OUI:8C1F642FD* - ID_OUI_FROM_DATABASE=Enestone Corporation - -+OUI:8C1F64300* -+ ID_OUI_FROM_DATABASE=Abbott Diagnostics Technologies AS -+ - OUI:8C1F64301* - ID_OUI_FROM_DATABASE=Agar Corporation Inc. - -@@ -90551,6 +90650,9 @@ OUI:8C1F64544* - OUI:8C1F64549* - ID_OUI_FROM_DATABASE=Brad Technology - -+OUI:8C1F6454A* -+ ID_OUI_FROM_DATABASE=Belden India Private Limited -+ - OUI:8C1F6454C* - ID_OUI_FROM_DATABASE=Gemini Electronics B.V. - -@@ -90584,6 +90686,9 @@ OUI:8C1F6457B* - OUI:8C1F64581* - ID_OUI_FROM_DATABASE=SpectraDynamics, Inc. - -+OUI:8C1F6458C* -+ ID_OUI_FROM_DATABASE=Ear Micro LLC -+ - OUI:8C1F6459F* - ID_OUI_FROM_DATABASE=Delta Computers LLC. - -@@ -90671,6 +90776,9 @@ OUI:8C1F6465F* - OUI:8C1F64660* - ID_OUI_FROM_DATABASE=LLC NTPC - -+OUI:8C1F64662* -+ ID_OUI_FROM_DATABASE=Suzhou Leamore Optronics Co., Ltd. -+ - OUI:8C1F64663* - ID_OUI_FROM_DATABASE=mal-tech Technological Solutions Ltd/CRISP - -@@ -90719,6 +90827,9 @@ OUI:8C1F646B5* - OUI:8C1F646B9* - ID_OUI_FROM_DATABASE=GS Industrie-Elektronik GmbH - -+OUI:8C1F646BB* -+ ID_OUI_FROM_DATABASE=Season Electronics Ltd -+ - OUI:8C1F646C6* - ID_OUI_FROM_DATABASE=FIT - -@@ -90989,6 +91100,9 @@ OUI:8C1F648D1* - OUI:8C1F648D4* - ID_OUI_FROM_DATABASE=Recab Sweden AB - -+OUI:8C1F648D5* -+ ID_OUI_FROM_DATABASE=Agramkow A/S -+ - OUI:8C1F648D9* - ID_OUI_FROM_DATABASE=Pietro Fiorentini Spa - -@@ -91079,6 +91193,9 @@ OUI:8C1F6497C* - OUI:8C1F64984* - ID_OUI_FROM_DATABASE=Abacus Peripherals Pvt Ltd - -+OUI:8C1F6498F* -+ ID_OUI_FROM_DATABASE=Breas Medical AB -+ - OUI:8C1F64991* - ID_OUI_FROM_DATABASE=DB Systel GmbH - -@@ -91508,6 +91625,9 @@ OUI:8C1F64D54* - OUI:8C1F64D56* - ID_OUI_FROM_DATABASE=Wisdom Audio - -+OUI:8C1F64D5E* -+ ID_OUI_FROM_DATABASE=Integer.pl S.A. -+ - OUI:8C1F64D69* - ID_OUI_FROM_DATABASE=ADiCo Corporation - -@@ -92039,6 +92159,9 @@ OUI:8C5109D* - OUI:8C5109E* - ID_OUI_FROM_DATABASE=IROOTELLUCKY Corp. - -+OUI:8C5219* -+ ID_OUI_FROM_DATABASE=SHARP Corporation -+ - OUI:8C53C3* - ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd - -@@ -93638,6 +93761,9 @@ OUI:90C7D8* - OUI:90C99B* - ID_OUI_FROM_DATABASE=Tesorion Nederland B.V. - -+OUI:90CAFA* -+ ID_OUI_FROM_DATABASE=Google, Inc. -+ - OUI:90CC24* - ID_OUI_FROM_DATABASE=Synaptics, Inc - -@@ -95016,7 +95142,7 @@ OUI:9802D8E* - ID_OUI_FROM_DATABASE=Private - - OUI:9802D8F* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=IEEE Registration Authority - - OUI:98039B* - ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. -@@ -97709,6 +97835,9 @@ OUI:A0445C* - OUI:A04466* - ID_OUI_FROM_DATABASE=Intellics - -+OUI:A044F3* -+ ID_OUI_FROM_DATABASE=RafaelMicro -+ - OUI:A047D7* - ID_OUI_FROM_DATABASE=Best IT World (India) Pvt Ltd - -@@ -99251,6 +99380,9 @@ OUI:A49BF5* - OUI:A49D49* - ID_OUI_FROM_DATABASE=Ketra, Inc. - -+OUI:A49E69* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:A49EDB* - ID_OUI_FROM_DATABASE=AutoCrib, Inc. - -@@ -102977,6 +103109,9 @@ OUI:B439D6* - OUI:B43A28* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:B43A31* -+ ID_OUI_FROM_DATABASE=Silicon Laboratories -+ - OUI:B43AE2* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -104523,7 +104658,7 @@ OUI:B8D812E* - ID_OUI_FROM_DATABASE=ZheJiang FangTai Electirc Co., Ltd - - OUI:B8D812F* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=IEEE Registration Authority - - OUI:B8D94D* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS -@@ -105537,7 +105672,7 @@ OUI:BCD713* - ID_OUI_FROM_DATABASE=Owl Labs - - OUI:BCD767* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=BAE Systems Apllied Intelligence - - OUI:BCD7A5* - ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -@@ -106524,7 +106659,7 @@ OUI:C0D391A* - ID_OUI_FROM_DATABASE=Alpha Audiotronics, Inc. - - OUI:C0D391B* -- ID_OUI_FROM_DATABASE=Private -+ ID_OUI_FROM_DATABASE=Celliber Technologies Pvt Limited - - OUI:C0D391C* - ID_OUI_FROM_DATABASE=Zhinengguo technology company limited -@@ -107723,6 +107858,9 @@ OUI:C4EEF5* - OUI:C4EF70* - ID_OUI_FROM_DATABASE=Home Skinovations - -+OUI:C4EFDA* -+ ID_OUI_FROM_DATABASE=Honeywell -+ - OUI:C4F081* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -@@ -109346,6 +109484,9 @@ OUI:CC5D57* - OUI:CC5D78* - ID_OUI_FROM_DATABASE=JTD Consulting - -+OUI:CC5EF8* -+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ - OUI:CC5FBF* - ID_OUI_FROM_DATABASE=Topwise 3G Communication Co., Ltd. - -@@ -111330,7 +111471,7 @@ OUI:D42C46* - ID_OUI_FROM_DATABASE=BUFFALO.INC - - OUI:D42DC5* -- ID_OUI_FROM_DATABASE=Panasonic i-PRO Sensing Solutions Co., Ltd. -+ ID_OUI_FROM_DATABASE=i-PRO Co., Ltd. - - OUI:D42F23* - ID_OUI_FROM_DATABASE=Akenori PTE Ltd -@@ -112481,6 +112622,9 @@ OUI:D8539A* - OUI:D8543A* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:D85482* -+ ID_OUI_FROM_DATABASE=Oxit, LLC -+ - OUI:D854A2* - ID_OUI_FROM_DATABASE=Extreme Networks, Inc. - -@@ -113123,6 +113267,9 @@ OUI:D8F3BC* - OUI:D8F3DB* - ID_OUI_FROM_DATABASE=Post CH AG - -+OUI:D8F507* -+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -+ - OUI:D8F710* - ID_OUI_FROM_DATABASE=Libre Wireless Technologies Inc. - -@@ -113891,6 +114038,9 @@ OUI:DCB54F* - OUI:DCB72E* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -+OUI:DCB7AC* -+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company -+ - OUI:DCB7FC* - ID_OUI_FROM_DATABASE=Alps Electric (Ireland) Ltd - -@@ -114101,6 +114251,9 @@ OUI:DCE55B* - OUI:DCE578* - ID_OUI_FROM_DATABASE=Experimental Factory of Scientific Engineering and Special Design Department - -+OUI:DCE650* -+ ID_OUI_FROM_DATABASE=Extreme Networks, Inc. -+ - OUI:DCE71C* - ID_OUI_FROM_DATABASE=AUG Elektronik GmbH - -@@ -114464,6 +114617,9 @@ OUI:E046E5* - OUI:E046EE* - ID_OUI_FROM_DATABASE=NETGEAR - -+OUI:E04735* -+ ID_OUI_FROM_DATABASE=Ericsson AB -+ - OUI:E048AF* - ID_OUI_FROM_DATABASE=Premietech Limited - -@@ -114938,6 +115094,9 @@ OUI:E0B9BA* - OUI:E0B9E5* - ID_OUI_FROM_DATABASE=Technicolor Delivery Technologies Belgium NV - -+OUI:E0BAAD* -+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. -+ - OUI:E0BAB4* - ID_OUI_FROM_DATABASE=Arrcus, Inc - -@@ -116705,6 +116864,9 @@ OUI:E884C6* - OUI:E8854B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:E886CF* -+ ID_OUI_FROM_DATABASE=Nokia -+ - OUI:E887A3* - ID_OUI_FROM_DATABASE=Loxley Public Company Limited - -@@ -117299,6 +117461,9 @@ OUI:EC1D7F* - OUI:EC1D8B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -+OUI:EC1D9E* -+ ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co.,Ltd. -+ - OUI:EC1F72* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) - -@@ -119309,6 +119474,9 @@ OUI:F417B8* - OUI:F419E2* - ID_OUI_FROM_DATABASE=Volterra - -+OUI:F41AB0* -+ ID_OUI_FROM_DATABASE=Shenzhen Xingguodu Technology Co., Ltd. -+ - OUI:F41BA1* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -119369,6 +119537,9 @@ OUI:F42A7D* - OUI:F42B48* - ID_OUI_FROM_DATABASE=Ubiqam - -+OUI:F42B7D* -+ ID_OUI_FROM_DATABASE=Chipsguide technology CO.,LTD. -+ - OUI:F42C56* - ID_OUI_FROM_DATABASE=SENOR TECH CO LTD - -diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch -index 35f3430268..f884cd8240 100644 ---- a/hwdb.d/20-acpi-vendor.hwdb.patch -+++ b/hwdb.d/20-acpi-vendor.hwdb.patch -@@ -1,5 +1,5 @@ ----- 20-acpi-vendor.hwdb.base 2022-05-13 17:14:22.098059674 +0100 --+++ 20-acpi-vendor.hwdb 2022-05-13 17:14:22.102059756 +0100 -+--- 20-acpi-vendor.hwdb.base 2022-05-21 12:43:45.053612968 +0100 -++++ 20-acpi-vendor.hwdb 2022-05-21 12:43:45.057613062 +0100 - @@ -3,6 +3,8 @@ - # Data imported from: - # https://uefi.org/uefi-pnp-export -diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb -index 926247eefc..1344fab356 100644 ---- a/hwdb.d/20-pci-vendor-model.hwdb -+++ b/hwdb.d/20-pci-vendor-model.hwdb -@@ -2967,7 +2967,7 @@ pci:v00001002d000013E9* - ID_MODEL_FROM_DATABASE=Ariel - - pci:v00001002d000013FE* -- ID_MODEL_FROM_DATABASE=Cyan Skillfish -+ ID_MODEL_FROM_DATABASE=Cyan Skillfish [BC-250] - - pci:v00001002d00001478* - ID_MODEL_FROM_DATABASE=Navi 10 XL Upstream Port of PCI Express Switch -@@ -2975,6 +2975,9 @@ pci:v00001002d00001478* - pci:v00001002d00001479* - ID_MODEL_FROM_DATABASE=Navi 10 XL Downstream Port of PCI Express Switch - -+pci:v00001002d00001506* -+ ID_MODEL_FROM_DATABASE=Mendocino -+ - pci:v00001002d0000154C* - ID_MODEL_FROM_DATABASE=Kryptos [Radeon RX 350] - -@@ -2993,6 +2996,9 @@ pci:v00001002d00001552* - pci:v00001002d00001561* - ID_MODEL_FROM_DATABASE=Anubis - -+pci:v00001002d000015BF* -+ ID_MODEL_FROM_DATABASE=Phoenix -+ - pci:v00001002d000015D8* - ID_MODEL_FROM_DATABASE=Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] - -@@ -3077,6 +3083,9 @@ pci:v00001002d0000164C* - pci:v00001002d0000164D* - ID_MODEL_FROM_DATABASE=Rembrandt - -+pci:v00001002d0000164F* -+ ID_MODEL_FROM_DATABASE=Phoenix -+ - pci:v00001002d00001681* - ID_MODEL_FROM_DATABASE=Rembrandt [Radeon 680M] - -@@ -11006,6 +11015,9 @@ pci:v00001002d00007312* - pci:v00001002d00007314* - ID_MODEL_FROM_DATABASE=Navi 10 USB - -+pci:v00001002d0000731E* -+ ID_MODEL_FROM_DATABASE=TDC-150 -+ - pci:v00001002d0000731F* - ID_MODEL_FROM_DATABASE=Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] - -@@ -11040,7 +11052,7 @@ pci:v00001002d0000734F* - ID_MODEL_FROM_DATABASE=Navi 14 [Radeon Pro W5300M] - - pci:v00001002d00007360* -- ID_MODEL_FROM_DATABASE=Navi 12 [Radeon Pro 5600M / V520] -+ ID_MODEL_FROM_DATABASE=Navi 12 [Radeon Pro 5600M/V520/BC-160] - - pci:v00001002d00007362* - ID_MODEL_FROM_DATABASE=Navi 12 [Radeon Pro V520] -@@ -11054,6 +11066,9 @@ pci:v00001002d0000738C* - pci:v00001002d0000738E* - ID_MODEL_FROM_DATABASE=Arcturus GL-XL [Instinct MI100] - -+pci:v00001002d000073A1* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon Pro V620] -+ - pci:v00001002d000073A2* - ID_MODEL_FROM_DATABASE=Navi 21 Pro-XTA [Radeon Pro W6900X] - -@@ -11069,6 +11084,9 @@ pci:v00001002d000073A5* - pci:v00001002d000073AB* - ID_MODEL_FROM_DATABASE=Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] - -+pci:v00001002d000073AE* -+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon Pro V620 MxGPU] -+ - pci:v00001002d000073AF* - ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6900 XT] - -@@ -11096,6 +11114,9 @@ pci:v00001002d000073C3* - pci:v00001002d000073C4* - ID_MODEL_FROM_DATABASE=Navi 22 USB - -+pci:v00001002d000073CE* -+ ID_MODEL_FROM_DATABASE=Navi22-XL SRIOV MxGPU -+ - pci:v00001002d000073DF* - ID_MODEL_FROM_DATABASE=Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] - -@@ -11135,6 +11156,12 @@ pci:v00001002d00007421* - pci:v00001002d00007422* - ID_MODEL_FROM_DATABASE=Navi 24 [Radeon PRO W6400] - -+pci:v00001002d00007423* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon PRO W6300/W6300M] -+ -+pci:v00001002d00007424* -+ ID_MODEL_FROM_DATABASE=Navi 24 [Radeon RX 6300] -+ - pci:v00001002d0000743F* - ID_MODEL_FROM_DATABASE=Navi 24 [Radeon RX 6400 / 6500 XT] - -@@ -14255,6 +14282,9 @@ pci:v00001022d00001482* - pci:v00001022d00001483* - ID_MODEL_FROM_DATABASE=Starship/Matisse GPP Bridge - -+pci:v00001022d00001483sv000001DEsd0000FFF9* -+ ID_MODEL_FROM_DATABASE=Starship/Matisse GPP Bridge (Gimlet Baseboard) -+ - pci:v00001022d00001484* - ID_MODEL_FROM_DATABASE=Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] - -@@ -16211,6 +16241,9 @@ pci:v00001028d00000016sv00001028sd00001F24* - pci:v00001028d00000073* - ID_MODEL_FROM_DATABASE=NV-RAM Adapter - -+pci:v00001028d00001028* -+ ID_MODEL_FROM_DATABASE=PCIe Bridge riser -+ - pci:v00001029* - ID_VENDOR_FROM_DATABASE=Siemens Nixdorf IS - -@@ -38525,9 +38558,24 @@ pci:v000010EEd00003FC5* - pci:v000010EEd00003FC6* - ID_MODEL_FROM_DATABASE=RME Hammerfall DSP MADI - -+pci:v000010EEd00005000* -+ ID_MODEL_FROM_DATABASE=Alveo U200 XDMA Platform -+ -+pci:v000010EEd00005004* -+ ID_MODEL_FROM_DATABASE=Alveo U250 XDMA Platform -+ - pci:v000010EEd00005005* - ID_MODEL_FROM_DATABASE=Alveo U250 - -+pci:v000010EEd0000500C* -+ ID_MODEL_FROM_DATABASE=Alveo U280 XDMA Platform -+ -+pci:v000010EEd00005020* -+ ID_MODEL_FROM_DATABASE=Alveo U50 XMDA Platform -+ -+pci:v000010EEd0000505C* -+ ID_MODEL_FROM_DATABASE=Alveo U55C -+ - pci:v000010EEd00007038* - ID_MODEL_FROM_DATABASE=FPGA Card XC7VX690T - -@@ -38546,6 +38594,18 @@ pci:v000010EEd00008380* - pci:v000010EEd00008381* - ID_MODEL_FROM_DATABASE=Ellips Santos Frame Grabber - -+pci:v000010EEd0000D000* -+ ID_MODEL_FROM_DATABASE=Alveo U200 Golden Image -+ -+pci:v000010EEd0000D004* -+ ID_MODEL_FROM_DATABASE=Alveo U250 Golden Image -+ -+pci:v000010EEd0000D00C* -+ ID_MODEL_FROM_DATABASE=Alveo U280 Golden Image -+ -+pci:v000010EEd0000D020* -+ ID_MODEL_FROM_DATABASE=Alveo U50 Golden Image -+ - pci:v000010EEd0000D154* - ID_MODEL_FROM_DATABASE=Copley Controls CAN card (PCI-CAN-02) - -@@ -55572,7 +55632,7 @@ pci:v00001425d00006092* - ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller - - pci:v00001425d00006092sv000001DEsd0000FFF9* -- ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet T6) -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet Baseboard) - - pci:v00001425d00006401* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller -@@ -55650,7 +55710,7 @@ pci:v00001425d00006492* - ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller - - pci:v00001425d00006492sv000001DEsd0000FFF9* -- ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet T6) -+ ID_MODEL_FROM_DATABASE=T62100-KR Unified Wire Ethernet Controller (Gimlet Baseboard) - - pci:v00001425d00006501* - ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller -@@ -68978,6 +69038,9 @@ pci:v00001ADEd00003038sv00004254sd00000552* - pci:v00001AE0* - ID_VENDOR_FROM_DATABASE=Google, Inc. - -+pci:v00001AE0d0000001F* -+ ID_MODEL_FROM_DATABASE=NVMe device -+ - pci:v00001AE0d00000042* - ID_MODEL_FROM_DATABASE=Compute Engine Virtual Ethernet [gVNIC] - -@@ -69563,6 +69626,9 @@ pci:v00001B4Bd00002241sv00001028sd00002151* - pci:v00001B4Bd00002241sv00001028sd00002196* - ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (ROR-N100) - -+pci:v00001B4Bd00002241sv00001B4Bsd00002241* -+ ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (Santa Cruz NVMe Host Adapter) -+ - pci:v00001B4Bd00002241sv00001D49sd00000306* - ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit) - -@@ -71486,6 +71552,9 @@ pci:v00001DA3d00001000* - pci:v00001DA3d00001010* - ID_MODEL_FROM_DATABASE=HL-2000 AI Training Accelerator [Gaudi secured] - -+pci:v00001DA8* -+ ID_VENDOR_FROM_DATABASE=Corigine, Inc. -+ - pci:v00001DAD* - ID_VENDOR_FROM_DATABASE=Fungible - -@@ -72932,6 +73001,9 @@ pci:v00001F3Fd00009032* - pci:v00001F3Fd00009032sv00001F3Fsd000000A1* - ID_MODEL_FROM_DATABASE=SDI5.1 (Dual Port 100GE SDI5.1) - -+pci:v00001F40* -+ ID_VENDOR_FROM_DATABASE=Netac Technology Co.,Ltd -+ - pci:v00001FAA* - ID_VENDOR_FROM_DATABASE=Hexaflake (Shanghai) Information Technology Co., Ltd. - -@@ -82070,6 +82142,9 @@ pci:v00008086d000015FFsv00008086sd0000000B* - pci:v00008086d000015FFsv00008086sd0000000C* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-T2L for OCP 3.0) - -+pci:v00008086d000015FFsv00008086sd0000000D* -+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet 10G 2P X710-T2L-t OCP) -+ - pci:v00008086d000015FFsv00008086sd0000000F* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-T2L for OCP 3.0) - -@@ -92505,10 +92580,28 @@ pci:v00008086d000031A8sv00001849sd000031A8* - ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor USB 3.0 xHCI Controller - - pci:v00008086d000031AC* -- ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Serial IO I2C Host Controller -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 0 - - pci:v00008086d000031AE* -- ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Serial IO I2C Host Controller -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 1 -+ -+pci:v00008086d000031B0* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 2 -+ -+pci:v00008086d000031B2* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 3 -+ -+pci:v00008086d000031B4* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 4 -+ -+pci:v00008086d000031B6* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 5 -+ -+pci:v00008086d000031B8* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 6 -+ -+pci:v00008086d000031BA* -+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor I2C 7 - - pci:v00008086d000031BC* - ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Serial IO UART Host Controller -@@ -96944,6 +97037,9 @@ pci:v00008086d00008818* - pci:v00008086d00008819* - ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T IEEE 1588 Hardware Assist - -+pci:v00008086d00008A03* -+ ID_MODEL_FROM_DATABASE=Processor Power and Thermal Controller -+ - pci:v00008086d00008A0D* - ID_MODEL_FROM_DATABASE=Ice Lake Thunderbolt 3 NHI #1 - -diff --git a/hwdb.d/20-usb-vendor-model.hwdb b/hwdb.d/20-usb-vendor-model.hwdb -index ee890a8f28..a9b2eabd54 100644 ---- a/hwdb.d/20-usb-vendor-model.hwdb -+++ b/hwdb.d/20-usb-vendor-model.hwdb -@@ -51843,7 +51843,7 @@ usb:v1391p1000* - ID_MODEL_FROM_DATABASE=URTC-1000 - - usb:v1395* -- ID_VENDOR_FROM_DATABASE=Sennheiser Communications -+ ID_VENDOR_FROM_DATABASE=DSEA A/S - - usb:v1395p0025* - ID_MODEL_FROM_DATABASE=Headset [PC 8] -@@ -51969,7 +51969,7 @@ usb:v1395p0067* - ID_MODEL_FROM_DATABASE=SP 20 D MS - - usb:v1395p006B* -- ID_MODEL_FROM_DATABASE=SC5x5 MS -+ ID_MODEL_FROM_DATABASE=SC6x5 - - usb:v1395p0072* - ID_MODEL_FROM_DATABASE=Headset -diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt -index 8481ff91b9..d98eb3f384 100644 ---- a/hwdb.d/ma-large.txt -+++ b/hwdb.d/ma-large.txt -@@ -31745,12 +31745,6 @@ FC1CA1 (base 16) Nokia - Kanata Ontario K2K 2E6 - CA - --D4-2D-C5 (hex) Panasonic i-PRO Sensing Solutions Co., Ltd. --D42DC5 (base 16) Panasonic i-PRO Sensing Solutions Co., Ltd. -- 4-1-62 Minoshima, Hakata-ku -- Fukuoka City 812-8531 -- JP -- - E8-D0-3C (hex) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd - E8D03C (base 16) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd - 3/F,A5 Building Zhiyuan Community No.1001,Xueyuan Road Nanshan District -@@ -32141,9 +32135,6 @@ F06728 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DONG GUAN GUANG DONG 523860 - CN - --BC-D7-67 (hex) Private --BCD767 (base 16) Private -- - 9C-E1-76 (hex) Cisco Systems, Inc - 9CE176 (base 16) Cisco Systems, Inc - 80 West Tasman Dr. -@@ -37388,6 +37379,12 @@ DC8084 (base 16) Apple, Inc. - Ernakulam KL 686662 - IN - -+E4-DA-DF (hex) Taicang T&W Electronics -+E4DADF (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 -+ CN -+ - 7C-35-F8 (hex) Zhejiang Tmall Technology Co., Ltd. - 7C35F8 (base 16) Zhejiang Tmall Technology Co., Ltd. - No.969 Wenyi West Road, Wuchang Street, Yuhang District -@@ -37412,12 +37409,6 @@ C85895 (base 16) Motorola Mobility LLC, a Lenovo Company - Chicago IL 60654 - US - --E4-DA-DF (hex) Taicang T&W Electronics --E4DADF (base 16) Taicang T&W Electronics -- 89# Jiang Nan RD -- Suzhou Jiangsu 215412 -- CN -- - A8-53-7D (hex) Mist Systems, Inc. - A8537D (base 16) Mist Systems, Inc. - 1601 South De Anza Blvd, Suite 248 -@@ -37448,6 +37439,12 @@ E8D322 (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - -+30-2B-DC (hex) Top-Unum Electronics Co., LTD -+302BDC (base 16) Top-Unum Electronics Co., LTD -+ No. 58, Ln. 137, Jianshan Rd., Yingge Dist., -+ New Taipei City 239, Taiwan 239 -+ CN -+ - 8C-15-53 (hex) Beijing Memblaze Technology Co Ltd - 8C1553 (base 16) Beijing Memblaze Technology Co Ltd - Building B2,Dongsheng Park, 66 Xixiaokou Road, Haidian -@@ -37496,24 +37493,6 @@ E8EBD3 (base 16) Mellanox Technologies, Inc. - Sunnyvale CA 94085 - US - --30-2B-DC (hex) Top-Unum Electronics Co., LTD --302BDC (base 16) Top-Unum Electronics Co., LTD -- No. 58, Ln. 137, Jianshan Rd., Yingge Dist., -- New Taipei City 239, Taiwan 239 -- CN -- --90-F7-B2 (hex) New H3C Technologies Co., Ltd --90F7B2 (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -- --04-E3-1A (hex) Sagemcom Broadband SAS --04E31A (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- - C0-06-0C (hex) HUAWEI TECHNOLOGIES CO.,LTD - C0060C (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -37532,18 +37511,24 @@ B0A4F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - DONG GUAN GUANG DONG 523860 - CN - -+90-F7-B2 (hex) New H3C Technologies Co., Ltd -+90F7B2 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+04-E3-1A (hex) Sagemcom Broadband SAS -+04E31A (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ - 6C-99-9D (hex) Amazon Technologies Inc. - 6C999D (base 16) Amazon Technologies Inc. - P.O Box 8102 - Reno NV 89507 - US - --6C-93-08 (hex) IEEE Registration Authority --6C9308 (base 16) IEEE Registration Authority -- 445 Hoes Lane -- Piscataway NJ 08554 -- US -- - 7C-6A-60 (hex) China Mobile Group Device Co.,Ltd. - 7C6A60 (base 16) China Mobile Group Device Co.,Ltd. - 32 Xuanwumen West Street,Xicheng District -@@ -37562,20 +37547,14 @@ B0A4F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - York YO30 4RY - GB - --D8-E2-DF (hex) Microsoft Corporation --D8E2DF (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -- US -- --1C-61-B4 (hex) TP-Link Corporation Limited --1C61B4 (base 16) TP-Link Corporation Limited -+9C-A2-F4 (hex) TP-Link Corporation Limited -+9CA2F4 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road - Tsim Sha Tsui Kowloon 999077 - HK - --9C-A2-F4 (hex) TP-Link Corporation Limited --9CA2F4 (base 16) TP-Link Corporation Limited -+1C-61-B4 (hex) TP-Link Corporation Limited -+1C61B4 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road - Tsim Sha Tsui Kowloon 999077 - HK -@@ -37586,23 +37565,29 @@ B4695F (base 16) TCT mobile ltd - Hui Zhou Guang Dong 516006 - CN - -+D8-E2-DF (hex) Microsoft Corporation -+D8E2DF (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ -+6C-93-08 (hex) IEEE Registration Authority -+6C9308 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ - 38-8F-30 (hex) Samsung Electronics Co.,Ltd - 388F30 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong - Gumi Gyeongbuk 730-350 - KR - --A0-44-66 (hex) Intellics --A04466 (base 16) Intellics -- 697, Pangyo-ro, Bundang-gu -- Seongnam-si Gyeonggi-do 13511 -- KR -- --44-6D-7F (hex) Amazon Technologies Inc. --446D7F (base 16) Amazon Technologies Inc. -- P.O Box 8102 -- Reno 89507 -- US -+24-06-F2 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+2406F2 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN - - 84-C6-92 (hex) Texas Instruments - 84C692 (base 16) Texas Instruments -@@ -37622,10 +37607,40 @@ A04466 (base 16) Intellics - London E14 5EY - GB - --24-06-F2 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --2406F2 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -+A0-44-66 (hex) Intellics -+A04466 (base 16) Intellics -+ 697, Pangyo-ro, Bundang-gu -+ Seongnam-si Gyeonggi-do 13511 -+ KR -+ -+CC-66-18 (hex) Adtran Inc -+CC6618 (base 16) Adtran Inc -+ 901 Explorer Blvd. -+ Huntsville AL 35806-2807 -+ US -+ -+C0-C1-70 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+C0C170 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+50-42-89 (hex) zte corporation -+504289 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD -+308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD -+2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - - C0-6D-ED (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -@@ -37634,6 +37649,18 @@ C06DED (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. - Hangzhou Zhejiang 310052 - CN - -+44-6D-7F (hex) Amazon Technologies Inc. -+446D7F (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno 89507 -+ US -+ -+E0-27-6C (hex) Guangzhou Shiyuan Electronic Technology Company Limited -+E0276C (base 16) Guangzhou Shiyuan Electronic Technology Company Limited -+ No.6, 4th Yunpu Road, Yunpu industry District -+ Guangzhou Guangdong 510530 -+ CN -+ - 90-93-5A (hex) ARRIS Group, Inc. - 90935A (base 16) ARRIS Group, Inc. - 6450 Sequence Drive -@@ -37652,42 +37679,12 @@ AC8FA9 (base 16) Nokia Solutions and Networks GmbH & Co. KG - Sunnyvale CA 94089 - US - --C0-C1-70 (hex) Shenzhen SuperElectron Technology Co.,Ltd. --C0C170 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -- 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -- Shenzhen Guangdong 518000 -- CN -- --50-42-89 (hex) zte corporation --504289 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- --44-29-1E (hex) AltoBeam (China) Inc. --44291E (base 16) AltoBeam (China) Inc. -- B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -- Beijing Beijing 100083 -- CN -- - 24-EB-ED (hex) HUAWEI TECHNOLOGIES CO.,LTD - 24EBED (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD --308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --2C-DD-5F (hex) Shenzhen iComm Semiconductor CO.,LTD --2CDD5F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- - AC-51-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD - AC51AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -37700,16 +37697,22 @@ AC51AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --CC-66-18 (hex) Adtran Inc --CC6618 (base 16) Adtran Inc -- 901 Explorer Blvd. -- Huntsville AL 35806-2807 -- US -+F8-AD-24 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+F8AD24 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN - --E0-27-6C (hex) Guangzhou Shiyuan Electronic Technology Company Limited --E0276C (base 16) Guangzhou Shiyuan Electronic Technology Company Limited -- No.6, 4th Yunpu Road, Yunpu industry District -- Guangzhou Guangdong 510530 -+A8-C9-8A (hex) New H3C Technologies Co., Ltd -+A8C98A (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN -+ -+44-29-1E (hex) AltoBeam (China) Inc. -+44291E (base 16) AltoBeam (China) Inc. -+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian -+ Beijing Beijing 100083 - CN - - DC-8E-95 (hex) Silicon Laboratories -@@ -37718,6 +37721,12 @@ DC8E95 (base 16) Silicon Laboratories - Austin TX 78701 - US - -+7C-EF-40 (hex) Nextorage Corporation -+7CEF40 (base 16) Nextorage Corporation -+ Kawasaki-eki-mae Tower Riverk 9F, 12-1, Ekimaehoncho, Kawasaki-ku -+ Kawasaki City Kanagawa 210-0007 -+ JP -+ - 28-BE-43 (hex) vivo Mobile Communication Co., Ltd. - 28BE43 (base 16) vivo Mobile Communication Co., Ltd. - No.1, vivo Road, Chang'an -@@ -37730,11 +37739,11 @@ DC8E95 (base 16) Silicon Laboratories - DONG GUAN GUANG DONG 523860 - CN - --F8-AD-24 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. --F8AD24 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -- No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -- Chongqing China 401120 -- CN -+28-74-F5 (hex) Nokia Solutions and Networks GmbH & Co. KG -+2874F5 (base 16) Nokia Solutions and Networks GmbH & Co. KG -+ Werinherstrasse 91 -+ München Bavaria D-81541 -+ DE - - B0-1F-8C (hex) Aruba, a Hewlett Packard Enterprise Company - B01F8C (base 16) Aruba, a Hewlett Packard Enterprise Company -@@ -37742,11 +37751,11 @@ B01F8C (base 16) Aruba, a Hewlett Packard Enterprise Company - Santa Clara CA 95054 - US - --A8-C9-8A (hex) New H3C Technologies Co., Ltd --A8C98A (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -+C0-E0-1C (hex) IoT Security Group, SL -+C0E01C (base 16) IoT Security Group, SL -+ Calle Pez Dorado, 27, local 2 -+ Torremolinos Malaga 29620 -+ ES - - 00-26-04 (hex) WorldCast Systems - 002604 (base 16) WorldCast Systems -@@ -37754,11 +37763,23 @@ A8C98A (base 16) New H3C Technologies Co., Ltd - Mérignac 33700 - FR - --7C-EF-40 (hex) Nextorage Corporation --7CEF40 (base 16) Nextorage Corporation -- Kawasaki-eki-mae Tower Riverk 9F, 12-1, Ekimaehoncho, Kawasaki-ku -- Kawasaki City Kanagawa 210-0007 -- JP -+00-CB-7A (hex) Technicolor CH USA Inc. -+00CB7A (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+F8-AB-82 (hex) Xiaomi Communications Co Ltd -+F8AB82 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+EC-30-B3 (hex) Xiaomi Communications Co Ltd -+EC30B3 (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN - - 1C-AF-4A (hex) Samsung Electronics Co.,Ltd - 1CAF4A (base 16) Samsung Electronics Co.,Ltd -@@ -37772,17 +37793,17 @@ C8120B (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - --28-74-F5 (hex) Nokia Solutions and Networks GmbH & Co. KG --2874F5 (base 16) Nokia Solutions and Networks GmbH & Co. KG -- Werinherstrasse 91 -- München Bavaria D-81541 -- DE -+90-2C-FB (hex) CanTops Co,.Ltd. -+902CFB (base 16) CanTops Co,.Ltd. -+ A-1002 Digital Empire, 16, Deogyong-daero 1556beon-gil -+ Yeongtong-gu Suwon-si, Gyonggi-do 1660 -+ KR - --C0-E0-1C (hex) IoT Security Group, SL --C0E01C (base 16) IoT Security Group, SL -- Calle Pez Dorado, 27, local 2 -- Torremolinos Malaga 29620 -- ES -+A8-A2-37 (hex) Arcadyan Corporation -+A8A237 (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW - - 00-00-BD (hex) RYOSEI, Ltd. - 0000BD (base 16) RYOSEI, Ltd. -@@ -37790,42 +37811,42 @@ C0E01C (base 16) IoT Security Group, SL - Amagasaki-shi Hyogo 660-0834 - JP - --00-CB-7A (hex) Technicolor CH USA Inc. --00CB7A (base 16) Technicolor CH USA Inc. -- 5030 Sugarloaf Parkway Bldg 6 -- Lawrenceville GA 30044 -- US -- - AC-CC-FC (hex) Amazon Technologies Inc. - ACCCFC (base 16) Amazon Technologies Inc. - P.O Box 8102 - Reno NV 89507 - US - --90-2C-FB (hex) CanTops Co,.Ltd. --902CFB (base 16) CanTops Co,.Ltd. -- A-1002 Digital Empire, 16, Deogyong-daero 1556beon-gil -- Yeongtong-gu Suwon-si, Gyonggi-do 1660 -- KR -- --F8-AB-82 (hex) Xiaomi Communications Co Ltd --F8AB82 (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -+08-E6-3B (hex) zte corporation -+08E63B (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - --EC-30-B3 (hex) Xiaomi Communications Co Ltd --EC30B3 (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -+88-C1-74 (hex) zte corporation -+88C174 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - -+C8-9E-61 (hex) Lyngsoe Systems LTd -+C89E61 (base 16) Lyngsoe Systems LTd -+ 101 Simona Dr., Unit 2 -+ Bolton Ontario L7E 4E8 -+ CA -+ - 9C-57-BC (hex) eero inc. - 9C57BC (base 16) eero inc. - 660 3rd Street - San Francisco CA 94107 - US - -+2C-82-17 (hex) Apple, Inc. -+2C8217 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - 14-2D-4D (hex) Apple, Inc. - 142D4D (base 16) Apple, Inc. - 1 Infinite Loop -@@ -37844,12 +37865,6 @@ B8211C (base 16) Apple, Inc. - Cupertino CA 95014 - US - --B0-3F-64 (hex) Apple, Inc. --B03F64 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- - D4-5A-3F (hex) Juniper Networks - D45A3F (base 16) Juniper Networks - 1133 Innovation Way -@@ -37862,35 +37877,35 @@ E8DC6C (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --A8-A2-37 (hex) Arcadyan Corporation --A8A237 (base 16) Arcadyan Corporation -- No.8, Sec.2, Guangfu Rd. -- Hsinchu City Hsinchu 30071 -- TW -+48-B4-C3 (hex) Aruba, a Hewlett Packard Enterprise Company -+48B4C3 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US - --2C-82-17 (hex) Apple, Inc. --2C8217 (base 16) Apple, Inc. -+B0-3F-64 (hex) Apple, Inc. -+B03F64 (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --08-E6-3B (hex) zte corporation --08E63B (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+68-A7-B4 (hex) Honor Device Co., Ltd. -+68A7B4 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 - CN - --88-C1-74 (hex) zte corporation --88C174 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+80-3C-20 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+803C20 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --C8-9E-61 (hex) Lyngsoe Systems LTd --C89E61 (base 16) Lyngsoe Systems LTd -- 101 Simona Dr., Unit 2 -- Bolton Ontario L7E 4E8 -- CA -+A4-DD-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+A4DD58 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN - - E0-28-B1 (hex) Shenzhen Skyworth Digital Technology CO., Ltd - E028B1 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -@@ -37910,12 +37925,6 @@ C08D51 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --48-B4-C3 (hex) Aruba, a Hewlett Packard Enterprise Company --48B4C3 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -- - 6C-15-24 (hex) IEEE Registration Authority - 6C1524 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -37928,6 +37937,12 @@ C08D51 (base 16) Amazon Technologies Inc. - Kanata Ontario K2K 2E6 - CA - -+00-12-93 (hex) ABB Switzerland Ltd. -+001293 (base 16) ABB Switzerland Ltd. -+ Via Luserte Sud 9 Quartino -+ Quartino 6572 -+ CH -+ - C0-E9-11 (hex) Private - C0E911 (base 16) Private - -@@ -37943,28 +37958,28 @@ C0E911 (base 16) Private - London SW1Y 4AR - GB - --68-A7-B4 (hex) Honor Device Co., Ltd. --68A7B4 (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -+24-2C-FE (hex) Zhejiang Tmall Technology Co., Ltd. -+242CFE (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 - CN - --80-3C-20 (hex) HUAWEI TECHNOLOGIES CO.,LTD --803C20 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+A0-42-D1 (hex) Huawei Device Co., Ltd. -+A042D1 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - --A4-DD-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD --A4DD58 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -+2C-DC-78 (hex) Descartes Systems (USA) LLC -+2CDC78 (base 16) Descartes Systems (USA) LLC -+ 2030 Powers Ferry Road SE -+ Atlanta GA 303339 -+ US - --24-2C-FE (hex) Zhejiang Tmall Technology Co., Ltd. --242CFE (base 16) Zhejiang Tmall Technology Co., Ltd. -- No.969 Wenyi West Road, Wuchang Street, Yuhang District -- Hangzhou Zhejiang 310024 -+58-87-9F (hex) Huawei Device Co., Ltd. -+58879F (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - - E8-D8-7E (hex) Amazon Technologies Inc. -@@ -37973,59 +37988,47 @@ E8D87E (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --00-12-93 (hex) ABB Switzerland Ltd. --001293 (base 16) ABB Switzerland Ltd. -- Via Luserte Sud 9 Quartino -- Quartino 6572 -- CH -- - 9C-1F-CA (hex) Hangzhou AlmightyDigit Technology Co., Ltd - 9C1FCA (base 16) Hangzhou AlmightyDigit Technology Co., Ltd - Room A0041, 10 / F, building 1, Haizhi center, Cangqian street, Yuhang District - Hangzhou Zhejiang 310000 - CN - --2C-DC-78 (hex) Descartes Systems (USA) LLC --2CDC78 (base 16) Descartes Systems (USA) LLC -- 2030 Powers Ferry Road SE -- Atlanta GA 303339 -+84-70-D7 (hex) eero inc. -+8470D7 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 - US - --A0-42-D1 (hex) Huawei Device Co., Ltd. --A042D1 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --58-87-9F (hex) Huawei Device Co., Ltd. --58879F (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- - E0-6C-4E (hex) Shenzhen TINNO Mobile Technology Corp. - E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili - Nanshan District, Shenzhen PRC 518053 - CN - -+58-1D-D8 (hex) Sagemcom Broadband SAS -+581DD8 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ - 80-6A-B0 (hex) Shenzhen TINNO Mobile Technology Corp. - 806AB0 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili - Nanshan District, Shenzhen PRC 518053 - CN - --84-70-D7 (hex) eero inc. --8470D7 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -+F4-B3-B1 (hex) Silicon Laboratories -+F4B3B1 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 - US - --10-B2-32 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd. --10B232 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd. -- No.218 Qianwangang Road -- Qingdao Shangdong 266510 -- CN -+04-69-8F (hex) Juniper Networks -+04698F (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US - - 14-9B-F3 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - 149BF3 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -@@ -38039,11 +38042,11 @@ E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp. - Wuhan Hubei 430074 - CN - --F4-B3-B1 (hex) Silicon Laboratories --F4B3B1 (base 16) Silicon Laboratories -- 400 West Cesar Chavez Street -- Austin TX 78701 -- US -+10-B2-32 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+10B232 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd. -+ No.218 Qianwangang Road -+ Qingdao Shangdong 266510 -+ CN - - B8-50-D8 (hex) Beijing Xiaomi Mobile Software Co., Ltd - B850D8 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -@@ -38051,36 +38054,6 @@ B850D8 (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Beijing Beijing 100085 - CN - --58-1D-D8 (hex) Sagemcom Broadband SAS --581DD8 (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- --04-69-8F (hex) Juniper Networks --04698F (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -- --5C-53-C3 (hex) Ubee Interactive Co., Limited --5C53C3 (base 16) Ubee Interactive Co., Limited -- Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -- North Point 00000 -- HK -- --AC-5A-F0 (hex) LG Electronics --AC5AF0 (base 16) LG Electronics -- 222 LG-ro, JINWI-MYEON -- Pyeongtaek-si Gyeonggi-do 451-713 -- KR -- --EC-A6-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD --ECA62F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- - C0-9F-51 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - C09F51 (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION - NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China -@@ -38099,17 +38072,11 @@ A0CDF3 (base 16) Murata Manufacturing Co., Ltd. - Nagaokakyo-shi Kyoto 617-8555 - JP - --24-29-34 (hex) Google, Inc. --242934 (base 16) Google, Inc. -- 1600 Amphitheatre Parkway -- Mountain View CA 94043 -- US -- --38-0A-4F (hex) PRACHI ENTERPRISES --380A4F (base 16) PRACHI ENTERPRISES -- B-141, 2nd FLOOR SECTOR-6 NOIDA -- NOIDA UTTARPRADESH 201301 -- IN -+B4-8A-0A (hex) Espressif Inc. -+B48A0A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN - - C8-3A-1B (hex) Toshiba TEC Corporation Inc - C83A1B (base 16) Toshiba TEC Corporation Inc -@@ -38117,29 +38084,23 @@ C83A1B (base 16) Toshiba TEC Corporation Inc - Shinagawa-ku Tokyo 141-8664 - JP - --B4-8A-0A (hex) Espressif Inc. --B48A0A (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -+EC-A6-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD -+ECA62F (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --80-19-70 (hex) Samsung Electronics Co.,Ltd --801970 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -+AC-5A-F0 (hex) LG Electronics -+AC5AF0 (base 16) LG Electronics -+ 222 LG-ro, JINWI-MYEON -+ Pyeongtaek-si Gyeonggi-do 451-713 - KR - --E0-F7-28 (hex) Amazon Technologies Inc. --E0F728 (base 16) Amazon Technologies Inc. -- P.O Box 8102 -- Reno NV 89507 -- US -- --1C-0E-D3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --1C0ED3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -+5C-53-C3 (hex) Ubee Interactive Co., Limited -+5C53C3 (base 16) Ubee Interactive Co., Limited -+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -+ North Point 00000 -+ HK - - 24-32-AE (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. - 2432AE (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -@@ -38171,6 +38132,12 @@ AC936A (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - -+1C-0E-D3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+1C0ED3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ - 7C-4C-A5 (hex) SKY UK LIMITED - 7C4CA5 (base 16) SKY UK LIMITED - 130 Kings Road -@@ -38195,17 +38162,41 @@ C03E0F (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - --D0-58-FC (hex) SKY UK LIMITED --D058FC (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -+24-29-34 (hex) Google, Inc. -+242934 (base 16) Google, Inc. -+ 1600 Amphitheatre Parkway -+ Mountain View CA 94043 -+ US - --90-02-18 (hex) SKY UK LIMITED --900218 (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -+38-0A-4F (hex) PRACHI ENTERPRISES -+380A4F (base 16) PRACHI ENTERPRISES -+ B-141, 2nd FLOOR SECTOR-6 NOIDA -+ NOIDA UTTARPRADESH 201301 -+ IN -+ -+80-19-70 (hex) Samsung Electronics Co.,Ltd -+801970 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+E0-F7-28 (hex) Amazon Technologies Inc. -+E0F728 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+B8-FB-AF (hex) Xiamen IPRT Technology CO.,LTD -+B8FBAF (base 16) Xiamen IPRT Technology CO.,LTD -+ 3~5Floor,No.101,Huili Industry Park,Meixi Road,Tongan District,Xiamen,China. -+ xiamen fujian 361000 -+ CN -+ -+34-85-18 (hex) Espressif Inc. -+348518 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN - - D4-DA-CD (hex) SKY UK LIMITED - D4DACD (base 16) SKY UK LIMITED -@@ -38231,66 +38222,6 @@ B04530 (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - --A4-AE-11 (hex) Hon Hai Precision Industry Co., Ltd. --A4AE11 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- --7C-DE-78 (hex) New H3C Technologies Co., Ltd --7CDE78 (base 16) New H3C Technologies Co., Ltd -- 466 Changhe Road, Binjiang District -- Hangzhou Zhejiang 310052 -- CN -- --3C-E0-64 (hex) Texas Instruments --3CE064 (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --E0-92-8F (hex) Texas Instruments --E0928F (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --CC-03-7B (hex) Texas Instruments --CC037B (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -- --58-1C-F8 (hex) Intel Corporate --581CF8 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --AC-19-8E (hex) Intel Corporate --AC198E (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --C8-5E-A9 (hex) Intel Corporate --C85EA9 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --B8-FB-AF (hex) Xiamen IPRT Technology CO.,LTD --B8FBAF (base 16) Xiamen IPRT Technology CO.,LTD -- 3~5Floor,No.101,Huili Industry Park,Meixi Road,Tongan District,Xiamen,China. -- xiamen fujian 361000 -- CN -- --34-85-18 (hex) Espressif Inc. --348518 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- - EC-E6-A2 (hex) Fiberhome Telecommunication Technologies Co.,LTD - ECE6A2 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - No.5 DongXin Road -@@ -38309,12 +38240,24 @@ E02E0B (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --CC-29-BD (hex) zte corporation --CC29BD (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+A4-AE-11 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE11 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 - CN - -+D0-58-FC (hex) SKY UK LIMITED -+D058FC (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ -+90-02-18 (hex) SKY UK LIMITED -+900218 (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ - 38-5C-FB (hex) Silicon Laboratories - 385CFB (base 16) Silicon Laboratories - 400 West Cesar Chavez Street -@@ -38327,23 +38270,65 @@ C43D1A (base 16) Intel Corporate - Kulim Kedah 09000 - MY - -+BC-F8-8B (hex) zte corporation -+BCF88B (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ - 68-53-9D (hex) EM Microelectronic - 68539D (base 16) EM Microelectronic - Rue des Sors 3 - Marin-Epagnier Neuchatel 2074 - CH - -+E4-65-64 (hex) SHENZHEN KTC TECHNOLOGY CO.,LTD -+E46564 (base 16) SHENZHEN KTC TECHNOLOGY CO.,LTD -+ Add: NO.4023, Wuhe Road, Bantian, Longgang District, Shenzhen, China -+ SHEN ZHEN GUANG DONG 518100 -+ CN -+ - C8-BF-4C (hex) Beijing Xiaomi Mobile Software Co., Ltd - C8BF4C (base 16) Beijing Xiaomi Mobile Software Co., Ltd - The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District - Beijing Beijing 100085 - CN - --E4-65-64 (hex) SHENZHEN KTC TECHNOLOGY CO.,LTD --E46564 (base 16) SHENZHEN KTC TECHNOLOGY CO.,LTD -- Add: NO.4023, Wuhe Road, Bantian, Longgang District, Shenzhen, China -- SHEN ZHEN GUANG DONG 518100 -- CN -+58-1C-F8 (hex) Intel Corporate -+581CF8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+AC-19-8E (hex) Intel Corporate -+AC198E (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+C8-5E-A9 (hex) Intel Corporate -+C85EA9 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+3C-E0-64 (hex) Texas Instruments -+3CE064 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+E0-92-8F (hex) Texas Instruments -+E0928F (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+CC-03-7B (hex) Texas Instruments -+CC037B (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US - - E0-51-D8 (hex) China Dragon Technology Limited - E051D8 (base 16) China Dragon Technology Limited -@@ -38351,17 +38336,17 @@ E051D8 (base 16) China Dragon Technology Limited - Shenzhen Guangdong 518104 - CN - --BC-F8-8B (hex) zte corporation --BCF88B (base 16) zte corporation -+CC-29-BD (hex) zte corporation -+CC29BD (base 16) zte corporation - 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China - shenzhen guangdong 518057 - CN - --5C-60-BA (hex) HP Inc. --5C60BA (base 16) HP Inc. -- 10300 Energy Dr -- Spring TX 77389 -- US -+7C-DE-78 (hex) New H3C Technologies Co., Ltd -+7CDE78 (base 16) New H3C Technologies Co., Ltd -+ 466 Changhe Road, Binjiang District -+ Hangzhou Zhejiang 310052 -+ CN - - E0-EF-02 (hex) Chengdu Quanjing Intelligent Technology Co.,Ltd - E0EF02 (base 16) Chengdu Quanjing Intelligent Technology Co.,Ltd -@@ -38375,6 +38360,18 @@ E0EF02 (base 16) Chengdu Quanjing Intelligent Technology Co.,Ltd - Hong Kong Hong Kong 999077 - HK - -+20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company -+209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+E8-CC-8C (hex) Chengdu Jiarui Hualian Communication Technology Co -+E8CC8C (base 16) Chengdu Jiarui Hualian Communication Technology Co -+ 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -+ Chengdu Sichuan 610000 -+ CN -+ - A8-AB-B5 (hex) Apple, Inc. - A8ABB5 (base 16) Apple, Inc. - 1 Infinite Loop -@@ -38393,29 +38390,11 @@ A8ABB5 (base 16) Apple, Inc. - Kanata Ontario K2K 2E6 - CA - --74-80-3F (hex) Renesas Electronics (Penang) Sdn. Bhd. --74803F (base 16) Renesas Electronics (Penang) Sdn. Bhd. -- Phase 3, Bayan Lepas FIZ -- Bayan Lepas Penang 11900 -- MY -- --04-43-FD (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --0443FD (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -- --A4-89-7E (hex) Guangzhou Yuhong Technology Co.,Ltd. --A4897E (base 16) Guangzhou Yuhong Technology Co.,Ltd. -- Room 402, No. 11 Software Road, Tianhe District, Guangzhou -- Guangzhou Guangdong 510640 -- CN -- --E8-CC-8C (hex) Chengdu Jiarui Hualian Communication Technology Co --E8CC8C (base 16) Chengdu Jiarui Hualian Communication Technology Co -- 5th Floor, Building F, Huirong Plaza (Jinhua), No. 88, Section 3, Jinhua Road, Industrial Park, Jinjiang District, Chengdu, Sichuan Province -- Chengdu Sichuan 610000 -- CN -+B0-67-B5 (hex) Apple, Inc. -+B067B5 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US - - 5C-52-84 (hex) Apple, Inc. - 5C5284 (base 16) Apple, Inc. -@@ -38435,11 +38414,17 @@ C0956D (base 16) Apple, Inc. - Cupertino CA 95014 - US - --20-9C-B4 (hex) Aruba, a Hewlett Packard Enterprise Company --209CB4 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -+04-43-FD (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+0443FD (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+74-80-3F (hex) Renesas Electronics (Penang) Sdn. Bhd. -+74803F (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY - - EC-A1-38 (hex) Amazon Technologies Inc. - ECA138 (base 16) Amazon Technologies Inc. -@@ -38447,12 +38432,18 @@ ECA138 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --B0-67-B5 (hex) Apple, Inc. --B067B5 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -+5C-60-BA (hex) HP Inc. -+5C60BA (base 16) HP Inc. -+ 10300 Energy Dr -+ Spring TX 77389 - US - -+A4-89-7E (hex) Guangzhou Yuhong Technology Co.,Ltd. -+A4897E (base 16) Guangzhou Yuhong Technology Co.,Ltd. -+ Room 402, No. 11 Software Road, Tianhe District, Guangzhou -+ Guangzhou Guangdong 510640 -+ CN -+ - 90-0A-62 (hex) Inventus Power Eletronica do Brasil LTDA - 900A62 (base 16) Inventus Power Eletronica do Brasil LTDA - Av Buriti, 4285 Distrito Industrial -@@ -38477,18 +38468,6 @@ B067B5 (base 16) Apple, Inc. - Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - --50-5F-B5 (hex) ASKEY COMPUTER CORP --505FB5 (base 16) ASKEY COMPUTER CORP -- 10F, NO. 119, JIANKANG RD., ZHONGHE DIST. -- NEW TAIPEI 235 -- TW -- --88-DE-7C (hex) ASKEY COMPUTER CORP --88DE7C (base 16) ASKEY COMPUTER CORP -- 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -- NEW TAIPEI CITY 23585 -- TW -- - AC-31-84 (hex) Huawei Device Co., Ltd. - AC3184 (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -38501,6 +38480,18 @@ AC3184 (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - -+50-5F-B5 (hex) ASKEY COMPUTER CORP -+505FB5 (base 16) ASKEY COMPUTER CORP -+ 10F, NO. 119, JIANKANG RD., ZHONGHE DIST. -+ NEW TAIPEI 235 -+ TW -+ -+88-DE-7C (hex) ASKEY COMPUTER CORP -+88DE7C (base 16) ASKEY COMPUTER CORP -+ 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -+ NEW TAIPEI CITY 23585 -+ TW -+ - 48-1C-B9 (hex) SZ DJI TECHNOLOGY CO.,LTD - 481CB9 (base 16) SZ DJI TECHNOLOGY CO.,LTD - 6/F,HKUST SZ IER Bldg,9 Yuexing 1st Rd -@@ -38531,6 +38522,72 @@ B8208E (base 16) Panasonic Connect Co., Ltd. - San Mateo CA 94402 - US - -+E0-BA-AD (hex) Hangzhou Hikvision Digital Technology Co.,Ltd. -+E0BAAD (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd. -+ No.555 Qianmo Road -+ Hangzhou Zhejiang 310052 -+ CN -+ -+08-91-15 (hex) Amazon Technologies Inc. -+089115 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+74-D4-23 (hex) Amazon Technologies Inc. -+74D423 (base 16) Amazon Technologies Inc. -+ P.O Box 8102 -+ Reno NV 89507 -+ US -+ -+EC-1D-9E (hex) Quectel Wireless Solutions Co.,Ltd. -+EC1D9E (base 16) Quectel Wireless Solutions Co.,Ltd. -+ 7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District -+ Shanghai 200233 -+ CN -+ -+BC-D7-67 (hex) BAE Systems Apllied Intelligence -+BCD767 (base 16) BAE Systems Apllied Intelligence -+ 170 Waterside House -+ Guildford Surrey GU2 7RQ -+ GB -+ -+2C-69-1D (hex) IEEE Registration Authority -+2C691D (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+D4-2D-C5 (hex) i-PRO Co., Ltd. -+D42DC5 (base 16) i-PRO Co., Ltd. -+ 4-1-62 Minoshima, Hakata-ku -+ Fukuoka City 812-8531 -+ JP -+ -+E0-47-35 (hex) Ericsson AB -+E04735 (base 16) Ericsson AB -+ Torshamnsgatan 36 -+ Stockholm SE-164 80 -+ SE -+ -+F4-2B-7D (hex) Chipsguide technology CO.,LTD. -+F42B7D (base 16) Chipsguide technology CO.,LTD. -+ No.758 in DongHua Design House, Nan Guang Road, Nan Shan Tone, ShenZhen, Guangdong, China -+ Shenzhen Guangdong 518002 -+ CN -+ -+8C-52-19 (hex) SHARP Corporation -+8C5219 (base 16) SHARP Corporation -+ 1 Takumi-cho, Sakai-ku -+ Sakai City Osaka 590-8522 -+ JP -+ -+A0-44-F3 (hex) RafaelMicro -+A044F3 (base 16) RafaelMicro -+ 8F.,No.28,Chenggong 12th St. -+ ChuBei City HsinChu County 30264 -+ TW -+ - 9C-FF-C2 (hex) AVI Systems GmbH - 9CFFC2 (base 16) AVI Systems GmbH - Dr. Franz Wilhelmstraße 2A -@@ -39272,9 +39329,6 @@ D0196A (base 16) Ciena Corporation - Shanghai Shanghai 201203 - CN - --88-B4-36 (hex) Private --88B436 (base 16) Private -- - 6C-AB-05 (hex) Cisco Systems, Inc - 6CAB05 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -69548,9 +69602,6 @@ A0224E (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - --30-27-CF (hex) Private --3027CF (base 16) Private -- - 38-43-E5 (hex) Grotech Inc - 3843E5 (base 16) Grotech Inc - 19, Ojeongongeop-gil -@@ -75452,6 +75503,24 @@ D850A1 (base 16) Hunan Danuo Technology Co.,LTD - Hong Kong Hong Kong 999077 - HK - -+7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. -+7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -+ 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -+ Shenzhen guangdong 518053 -+ CN -+ -+00-C3-0A (hex) Xiaomi Communications Co Ltd -+00C30A (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+88-52-EB (hex) Xiaomi Communications Co Ltd -+8852EB (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ - B4-28-75 (hex) Futecho Solutions Private Limited - B42875 (base 16) Futecho Solutions Private Limited - 504, Commercial Complex, Savitri Cinema Compound, GK2 -@@ -75470,24 +75539,6 @@ B42875 (base 16) Futecho Solutions Private Limited - San Francisco CA 94107 - US - --00-C3-0A (hex) Xiaomi Communications Co Ltd --00C30A (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --88-52-EB (hex) Xiaomi Communications Co Ltd --8852EB (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --7C-6C-F0 (hex) Shenzhen TINNO Mobile Technology Corp. --7C6CF0 (base 16) Shenzhen TINNO Mobile Technology Corp. -- 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen -- Shenzhen guangdong 518053 -- CN -- - 00-A0-A2 (hex) B810 S.R.L. - 00A0A2 (base 16) B810 S.R.L. - Via E. Lazzaretti 2/1 -@@ -75560,6 +75611,12 @@ DC9A7D (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD - Dongguan 523808 - CN - -+30-CB-36 (hex) Belden Singapore Pte. Ltd. -+30CB36 (base 16) Belden Singapore Pte. Ltd. -+ 151 Lorong Chuan #05-01 New Tech Park Singapore -+ Singapore 556741 -+ SG -+ - B8-3F-D2 (hex) Mellanox Technologies, Inc. - B83FD2 (base 16) Mellanox Technologies, Inc. - 350 Oakmead Parkway, Suite 100 -@@ -75572,12 +75629,6 @@ B83FD2 (base 16) Mellanox Technologies, Inc. - Chiyoda-ku Tokyo 100-0004 - JP - --30-CB-36 (hex) Belden Singapore Pte. Ltd. --30CB36 (base 16) Belden Singapore Pte. Ltd. -- 151 Lorong Chuan #05-01 New Tech Park Singapore -- Singapore 556741 -- SG -- - 8C-17-59 (hex) Intel Corporate - 8C1759 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -75590,11 +75641,29 @@ B83FD2 (base 16) Mellanox Technologies, Inc. - San Jose CA 95131 - US - --BC-6E-6D (hex) EM Microelectronic --BC6E6D (base 16) EM Microelectronic -- Rue des Sors 3 -- Marin-Epagnier Neuchatel 2074 -- CH -+6C-A4-01 (hex) essensys plc -+6CA401 (base 16) essensys plc -+ Aldgate Tower, Leman Street -+ London E1 8FA -+ GB -+ -+34-92-C2 (hex) Square Route Co., Ltd. -+3492C2 (base 16) Square Route Co., Ltd. -+ Area-Shinagawa 13F, 1-9-36, Konan, Minato-ku -+ Tokyo Tokyo 108-0075 -+ JP -+ -+34-BD-20 (hex) Hangzhou Hikrobot Technology Co., Ltd. -+34BD20 (base 16) Hangzhou Hikrobot Technology Co., Ltd. -+ Room 304, Unit B, Building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang -+ Hangzhou 310052 -+ CN -+ -+64-C2-69 (hex) eero inc. -+64C269 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US - - B0-4A-6A (hex) Samsung Electronics Co.,Ltd - B04A6A (base 16) Samsung Electronics Co.,Ltd -@@ -75614,48 +75683,30 @@ A8798D (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --34-92-C2 (hex) Square Route Co., Ltd. --3492C2 (base 16) Square Route Co., Ltd. -- Area-Shinagawa 13F, 1-9-36, Konan, Minato-ku -- Tokyo Tokyo 108-0075 -- JP -- - 28-3D-C2 (hex) Samsung Electronics Co.,Ltd - 283DC2 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong - Gumi Gyeongbuk 730-350 - KR - -+BC-6E-6D (hex) EM Microelectronic -+BC6E6D (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ - 00-D4-9E (hex) Intel Corporate - 00D49E (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 - Kulim Kedah 09000 - MY - --6C-A4-01 (hex) essensys plc --6CA401 (base 16) essensys plc -- Aldgate Tower, Leman Street -- London E1 8FA -- GB -- - CC-F3-05 (hex) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD - CCF305 (base 16) SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD - Second floor, Building A, FengHangAvenue, Hangcheng Street, Bao'an District - Shenzhen Guangdong 518126 - CN - --34-BD-20 (hex) Hangzhou Hikrobot Technology Co., Ltd. --34BD20 (base 16) Hangzhou Hikrobot Technology Co., Ltd. -- Room 304, Unit B, Building 2, 399 Danfeng Road, Binjiang District, Hangzhou, Zhejiang -- Hangzhou 310052 -- CN -- --64-C2-69 (hex) eero inc. --64C269 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -- - AC-2A-A1 (hex) Cisco Systems, Inc - AC2AA1 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -75674,34 +75725,16 @@ F8E94F (base 16) Cisco Systems, Inc - Kulim Kedah 09000 - MY - --B8-D6-1A (hex) Espressif Inc. --B8D61A (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- --BC-F4-D4 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. --BCF4D4 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -- Nanning Guangxi 530007 -+E0-6C-C5 (hex) Huawei Device Co., Ltd. -+E06CC5 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - --D8-9C-8E (hex) Comcast Cable Corporation --D89C8E (base 16) Comcast Cable Corporation -- 1800 Arch Street -- Philadelphia PA 19103 -- US -- --74-56-3C (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. --74563C (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. -- Pin-Jen City, Taoyuan, Taiwan, R.O.C. -- Pin-Jen Taoyuan 324 -- TW -- --EC-55-1C (hex) HUAWEI TECHNOLOGIES CO.,LTD --EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+30-96-3B (hex) Huawei Device Co., Ltd. -+30963B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - - 8C-6B-DB (hex) Huawei Device Co., Ltd. -@@ -75728,24 +75761,6 @@ EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan Guangdong 523808 - CN - --E0-6C-C5 (hex) Huawei Device Co., Ltd. --E06CC5 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --30-96-3B (hex) Huawei Device Co., Ltd. --30963B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD --90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- - 98-59-7A (hex) Intel Corporate - 98597A (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -75758,11 +75773,11 @@ E06CC5 (base 16) Huawei Device Co., Ltd. - Kulim Kedah 09000 - MY - --B4-83-51 (hex) Intel Corporate --B48351 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+B8-D6-1A (hex) Espressif Inc. -+B8D61A (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN - - 00-25-CA (hex) Laird Connectivity - 0025CA (base 16) Laird Connectivity -@@ -75770,42 +75785,84 @@ B48351 (base 16) Intel Corporate - Cedarburg WI 53012 - US - -+90-B5-7F (hex) Shenzhen iComm Semiconductor CO.,LTD -+90B57F (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+74-56-3C (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. -+74563C (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. -+ Pin-Jen City, Taoyuan, Taiwan, R.O.C. -+ Pin-Jen Taoyuan 324 -+ TW -+ -+D8-9C-8E (hex) Comcast Cable Corporation -+D89C8E (base 16) Comcast Cable Corporation -+ 1800 Arch Street -+ Philadelphia PA 19103 -+ US -+ - 04-B9-7D (hex) AiVIS Co., Itd. - 04B97D (base 16) AiVIS Co., Itd. - 112, Dumipo-ro, Jung-gu - Incheon Incheon 22394 - KR - -+BC-F4-D4 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+BCF4D4 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ - C4-C0-63 (hex) New H3C Technologies Co., Ltd - C4C063 (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District - Hangzhou Zhejiang 310052 - CN - --54-43-B2 (hex) Espressif Inc. --5443B2 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -+EC-55-1C (hex) HUAWEI TECHNOLOGIES CO.,LTD -+EC551C (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --C0-DD-8A (hex) Facebook Technologies, LLC --C0DD8A (base 16) Facebook Technologies, LLC -- 1601 Willow Rd -- Menlo Park CA 94025 -- US -- - E0-79-8D (hex) Silicon Laboratories - E0798D (base 16) Silicon Laboratories - 400 West Cesar Chavez Street - Austin TX 78701 - US - -+B4-83-51 (hex) Intel Corporate -+B48351 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 34-AD-61 (hex) CELESTICA INC. - 34AD61 (base 16) CELESTICA INC. - 1900-5140 Yonge Street PO Box 42 - Toronto Ontario M2N 6L7 - CA - -+54-43-B2 (hex) Espressif Inc. -+5443B2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+C0-DD-8A (hex) Facebook Technologies, LLC -+C0DD8A (base 16) Facebook Technologies, LLC -+ 1601 Willow Rd -+ Menlo Park CA 94025 -+ US -+ -+AC-D3-1D (hex) Cisco Meraki -+ACD31D (base 16) Cisco Meraki -+ 500 Terry A. Francois Blvd -+ San Francisco 94158 -+ US -+ - 10-96-1A (hex) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. - 10961A (base 16) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. - 9F,BLOCK A,GARDEN CITY DIGITAL BUILDING,NO.1079 NANHAI ROAD,NANSHAN DISTRICT -@@ -75818,6 +75875,18 @@ BCE9E2 (base 16) Brocade Communications Systems LLC - San Jose CA 95131 - US - -+00-18-48 (hex) Vecima Networks Inc. -+001848 (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ -+2C-55-3C (hex) Vecima Networks Inc. -+2C553C (base 16) Vecima Networks Inc. -+ 150 Cardinal Place -+ Saskatoon SK S7L 6H7 -+ CA -+ - AC-BF-71 (hex) Bose Corporation - ACBF71 (base 16) Bose Corporation - The Mountain -@@ -75830,12 +75899,6 @@ ACBF71 (base 16) Bose Corporation - Piscataway NJ 08554 - US - --AC-D3-1D (hex) Cisco Meraki --ACD31D (base 16) Cisco Meraki -- 500 Terry A. Francois Blvd -- San Francisco 94158 -- US -- - 74-84-69 (hex) Nintendo Co.,Ltd - 748469 (base 16) Nintendo Co.,Ltd - 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU -@@ -75878,18 +75941,6 @@ B41974 (base 16) Apple, Inc. - Shenzhen Guangdong 518117 - CN - --00-18-48 (hex) Vecima Networks Inc. --001848 (base 16) Vecima Networks Inc. -- 150 Cardinal Place -- Saskatoon SK S7L 6H7 -- CA -- --2C-55-3C (hex) Vecima Networks Inc. --2C553C (base 16) Vecima Networks Inc. -- 150 Cardinal Place -- Saskatoon SK S7L 6H7 -- CA -- - 60-95-BD (hex) Apple, Inc. - 6095BD (base 16) Apple, Inc. - 1 Infinite Loop -@@ -75938,24 +75989,30 @@ D0989C (base 16) ConMet - Vancouver WA 98661 - US - -+1C-A4-10 (hex) Amlogic, Inc. -+1CA410 (base 16) Amlogic, Inc. -+ 2518 Mission College Blvd, Suite 120 -+ Santa Clara CA 95054 -+ US -+ - 24-26-D6 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 2426D6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - -+70-A6-BD (hex) Honor Device Co., Ltd. -+70A6BD (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN -+ - EC-81-9C (hex) HUAWEI TECHNOLOGIES CO.,LTD - EC819C (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --1C-A4-10 (hex) Amlogic, Inc. --1CA410 (base 16) Amlogic, Inc. -- 2518 Mission College Blvd, Suite 120 -- Santa Clara CA 95054 -- US -- - 20-0B-16 (hex) Texas Instruments - 200B16 (base 16) Texas Instruments - 12500 TI Blvd -@@ -75980,23 +76037,23 @@ F85548 (base 16) Texas Instruments - Dallas TX 75243 - US - --70-A6-BD (hex) Honor Device Co., Ltd. --70A6BD (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -- CN -- - 4C-9E-6C (hex) BROADEX TECHNOLOGIES CO.LTD - 4C9E6C (base 16) BROADEX TECHNOLOGIES CO.LTD - NO.306 YATAI ROAD - JIAXING ZHEJIANG 314006 - CN - --54-2F-04 (hex) Shanghai Longcheer Technology Co., Ltd. --542F04 (base 16) Shanghai Longcheer Technology Co., Ltd. -- Bldg 1,No.401,Caobao RD,Xuhui Dist -- Shanghai 200233 -- CN -+AC-A3-2F (hex) Solidigm Technology -+ACA32F (base 16) Solidigm Technology -+ 1921 Corporate Center Circle, Suite 3B -+ Longmont 80501 -+ US -+ -+AC-71-2E (hex) Fortinet, Inc. -+AC712E (base 16) Fortinet, Inc. -+ 899 Kifer Road -+ Sunnyvale 94086 -+ US - - E4-B6-33 (hex) Wuxi Stars Microsystem Technology Co., Ltd - E4B633 (base 16) Wuxi Stars Microsystem Technology Co., Ltd -@@ -76016,10 +76073,16 @@ E4B633 (base 16) Wuxi Stars Microsystem Technology Co., Ltd - Dongguan Guangdong 523808 - CN - --54-E1-5B (hex) Huawei Device Co., Ltd. --54E15B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+98-D9-3D (hex) Demant Enterprise A/S -+98D93D (base 16) Demant Enterprise A/S -+ Kongebakken 9 -+ Smorum 2765 -+ DK -+ -+B4-A6-78 (hex) Zhejiang Tmall Technology Co., Ltd. -+B4A678 (base 16) Zhejiang Tmall Technology Co., Ltd. -+ No.969 Wenyi West Road, Wuchang Street, Yuhang District -+ Hangzhou Zhejiang 310024 - CN - - AC-C4-BD (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -@@ -76028,11 +76091,17 @@ ACC4BD (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DONG GUAN GUANG DONG 523860 - CN - --AC-A3-2F (hex) Solidigm Technology --ACA32F (base 16) Solidigm Technology -- 1921 Corporate Center Circle, Suite 3B -- Longmont 80501 -- US -+54-E1-5B (hex) Huawei Device Co., Ltd. -+54E15B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+54-2F-04 (hex) Shanghai Longcheer Technology Co., Ltd. -+542F04 (base 16) Shanghai Longcheer Technology Co., Ltd. -+ Bldg 1,No.401,Caobao RD,Xuhui Dist -+ Shanghai 200233 -+ CN - - C4-A1-0E (hex) IEEE Registration Authority - C4A10E (base 16) IEEE Registration Authority -@@ -76040,12 +76109,6 @@ C4A10E (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - --AC-71-2E (hex) Fortinet, Inc. --AC712E (base 16) Fortinet, Inc. -- 899 Kifer Road -- Sunnyvale 94086 -- US -- - 0C-EC-84 (hex) Shenzhen TINNO Mobile Technology Corp. - 0CEC84 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -76076,18 +76139,6 @@ B43939 (base 16) Shenzhen TINNO Mobile Technology Corp. - HongKong 999077 - HK - --98-D9-3D (hex) Demant Enterprise A/S --98D93D (base 16) Demant Enterprise A/S -- Kongebakken 9 -- Smorum 2765 -- DK -- --B4-A6-78 (hex) Zhejiang Tmall Technology Co., Ltd. --B4A678 (base 16) Zhejiang Tmall Technology Co., Ltd. -- No.969 Wenyi West Road, Wuchang Street, Yuhang District -- Hangzhou Zhejiang 310024 -- CN -- - 88-F2-BD (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. - 88F2BD (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. - Midea Global Innovation Center,Beijiao Town,Shunde -@@ -76106,6 +76157,12 @@ A0F895 (base 16) Shenzhen TINNO Mobile Technology Corp. - NEW DELHI DELHI 110015 - IN - -+70-AC-08 (hex) Silicon Laboratories -+70AC08 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez Street -+ Austin TX 78701 -+ US -+ - 2C-07-F6 (hex) SKG Health Technologies Co., Ltd. - 2C07F6 (base 16) SKG Health Technologies Co., Ltd. - 23A Floor,Building 3,Zhongke R&D Park,No.009,Gaoxin South 1st Road, High-tech Zone Community,Yuehai street, Nanshan District,Shenzhen City,Guangdong Province,P.R.China -@@ -76124,6 +76181,24 @@ A47EFA (base 16) Withings - Issy-les-Moulineaux 92130 - FR - -+3C-26-E4 (hex) Cisco Systems, Inc -+3C26E4 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+38-91-B7 (hex) Cisco Systems, Inc -+3891B7 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+34-5D-A8 (hex) Cisco Systems, Inc -+345DA8 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ - 78-91-DE (hex) Guangdong ACIGA Science&Technology Co.,Ltd - 7891DE (base 16) Guangdong ACIGA Science&Technology Co.,Ltd - L203 Biguiyuan International Club, Beijiao Town, Shunde District -@@ -76136,12 +76211,6 @@ E0806B (base 16) Xiaomi Communications Co Ltd - Beijing Haidian District 100085 - CN - --70-AC-08 (hex) Silicon Laboratories --70AC08 (base 16) Silicon Laboratories -- 400 West Cesar Chavez Street -- Austin TX 78701 -- US -- - 70-50-E7 (hex) IEEE Registration Authority - 7050E7 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -76166,24 +76235,6 @@ B0E45C (base 16) Samsung Electronics Co.,Ltd - Suwon Gyeonggi-Do 16677 - KR - --3C-26-E4 (hex) Cisco Systems, Inc --3C26E4 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --38-91-B7 (hex) Cisco Systems, Inc --3891B7 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --34-5D-A8 (hex) Cisco Systems, Inc --345DA8 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- - BC-4C-A0 (hex) HUAWEI TECHNOLOGIES CO.,LTD - BC4CA0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -76196,6 +76247,18 @@ BC4CA0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - -+C4-12-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C412EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ - 68-7F-F0 (hex) TP-Link Corporation Limited - 687FF0 (base 16) TP-Link Corporation Limited - Room 901,9/F.New East Ocean Centre, 9 Science Museum Road -@@ -76214,18 +76277,6 @@ DC360C (base 16) Hitron Technologies. Inc - Bayan Lepas Penang 11900 - MY - --C4-12-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD --C412EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- --60-CF-69 (hex) meerecompany --60CF69 (base 16) meerecompany -- 69-12, Jeongmunsongsan-ro, Yanggam-myeon, Hwaseong-si, Gyeonggi-do, Republic of Korea -- Hwaseong-si 18630 -- KR -- - 4C-62-7B (hex) SmartCow AI Technologies Taiwan Ltd. - 4C627B (base 16) SmartCow AI Technologies Taiwan Ltd. - 16F., No. 102, Songlong Rd., Xinyi Dist., -@@ -76244,18 +76295,6 @@ F82B7F (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - --40-C3-BC (hex) Huawei Device Co., Ltd. --40C3BC (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --34-FE-1C (hex) CHOUNG HWA TECH CO.,LTD --34FE1C (base 16) CHOUNG HWA TECH CO.,LTD -- #31 Jangja-ro, Namdong-gu -- Incheon-si 21532 -- KR -- - D8-68-A0 (hex) Samsung Electronics Co.,Ltd - D868A0 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -76268,10 +76307,10 @@ D868A0 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd --6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -+40-C3-BC (hex) Huawei Device Co., Ltd. -+40C3BC (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 - CN - - 28-53-E0 (hex) Sintela Ltd -@@ -76280,66 +76319,78 @@ D868A0 (base 16) Samsung Electronics Co.,Ltd - Pill Bristol BS20 0DH - GB - -+60-CF-69 (hex) meerecompany -+60CF69 (base 16) meerecompany -+ 69-12, Jeongmunsongsan-ro, Yanggam-myeon, Hwaseong-si, Gyeonggi-do, Republic of Korea -+ Hwaseong-si 18630 -+ KR -+ -+34-FE-1C (hex) CHOUNG HWA TECH CO.,LTD -+34FE1C (base 16) CHOUNG HWA TECH CO.,LTD -+ #31 Jangja-ro, Namdong-gu -+ Incheon-si 21532 -+ KR -+ - F4-93-9F (hex) Hon Hai Precision Industry Co., Ltd. - F4939F (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen - ShenZhen GuangDong 518109 - CN - --AC-4E-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD --AC4E65 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -+A4-AE-12 (hex) Hon Hai Precision Industry Co., Ltd. -+A4AE12 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 - CN - -+38-F0-C8 (hex) Logitech -+38F0C8 (base 16) Logitech -+ 7700 Gateway Blvd -+ Newark CA 94560 -+ US -+ - BC-5D-A3 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - BC5DA3 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD - No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County - Chengdu Sichuan 611330 - CN - --80-72-15 (hex) SKY UK LIMITED --807215 (base 16) SKY UK LIMITED -+80-75-1F (hex) SKY UK LIMITED -+80751F (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --B0-3E-51 (hex) SKY UK LIMITED --B03E51 (base 16) SKY UK LIMITED -+C0-A3-6E (hex) SKY UK LIMITED -+C0A36E (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --80-75-1F (hex) SKY UK LIMITED --80751F (base 16) SKY UK LIMITED -+00-A3-88 (hex) SKY UK LIMITED -+00A388 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --A4-AE-12 (hex) Hon Hai Precision Industry Co., Ltd. --A4AE12 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -+AC-4E-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+AC4E65 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - --C0-A3-6E (hex) SKY UK LIMITED --C0A36E (base 16) SKY UK LIMITED -+80-72-15 (hex) SKY UK LIMITED -+807215 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --00-A3-88 (hex) SKY UK LIMITED --00A388 (base 16) SKY UK LIMITED -+B0-3E-51 (hex) SKY UK LIMITED -+B03E51 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB - --38-F0-C8 (hex) Logitech --38F0C8 (base 16) Logitech -- 7700 Gateway Blvd -- Newark CA 94560 -- US -- - 1C-EF-03 (hex) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. - 1CEF03 (base 16) Guangzhou V-SOLUTION Electronic Technology Co., Ltd. - Room 601,Originality Building B2, NO.162 Science Avenue,Science Town -@@ -76352,6 +76403,12 @@ C0A36E (base 16) SKY UK LIMITED - KYOTO KYOTO 601-8501 - JP - -+54-45-38 (hex) Texas Instruments -+544538 (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ - 74-13-EA (hex) Intel Corporate - 7413EA (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -76376,35 +76433,53 @@ B0DCEF (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --28-BC-05 (hex) BLU Products Inc --28BC05 (base 16) BLU Products Inc -- 10814 NW 33rd Street -- Miami FL 33172 -- US -- - 2C-A7-74 (hex) Texas Instruments - 2CA774 (base 16) Texas Instruments - 12500 TI Blvd - Dallas TX 75243 - US - -+DC-F3-1C (hex) Texas Instruments -+DCF31C (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 -+ US -+ -+28-BC-05 (hex) BLU Products Inc -+28BC05 (base 16) BLU Products Inc -+ 10814 NW 33rd Street -+ Miami FL 33172 -+ US -+ - 18-4E-03 (hex) HMD Global Oy - 184E03 (base 16) HMD Global Oy - Bertel Jungin aukio 9 - Espoo 02600 - FI - -+40-22-D8 (hex) Espressif Inc. -+4022D8 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ - E0-08-71 (hex) Dongguan Liesheng Electronic Co., Ltd. - E00871 (base 16) Dongguan Liesheng Electronic Co., Ltd. - F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci - dongguan guangdong 523000 - CN - --9C-95-6E (hex) Microchip Technology Inc. --9C956E (base 16) Microchip Technology Inc. -- 2355 W. Chandler Blvd. -- Chandler AZ 85224 -- US -+90-65-60 (hex) EM Microelectronic -+906560 (base 16) EM Microelectronic -+ Rue des Sors 3 -+ Marin-Epagnier Neuchatel 2074 -+ CH -+ -+A0-FB-83 (hex) Honor Device Co., Ltd. -+A0FB83 (base 16) Honor Device Co., Ltd. -+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -+ Shenzhen Guangdong 518040 -+ CN - - DC-0B-09 (hex) Cisco Systems, Inc - DC0B09 (base 16) Cisco Systems, Inc -@@ -76418,17 +76493,17 @@ DC0B09 (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --DC-F3-1C (hex) Texas Instruments --DCF31C (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -+88-0A-A3 (hex) Juniper Networks -+880AA3 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 - US - --54-45-38 (hex) Texas Instruments --544538 (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -+04-D9-C8 (hex) Hon Hai Precision Industry Co., Ltd. -+04D9C8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN - - 78-C2-13 (hex) Sagemcom Broadband SAS - 78C213 (base 16) Sagemcom Broadband SAS -@@ -76436,12 +76511,6 @@ DCF31C (base 16) Texas Instruments - Rueil Malmaison Cedex hauts de seine 92848 - FR - --40-22-D8 (hex) Espressif Inc. --4022D8 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- - A0-36-BC (hex) ASUSTek COMPUTER INC. - A036BC (base 16) ASUSTek COMPUTER INC. - 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -@@ -76454,72 +76523,48 @@ A036BC (base 16) ASUSTek COMPUTER INC. - Cranbrook British Columbia V1C 2L9 - CA - -+9C-95-6E (hex) Microchip Technology Inc. -+9C956E (base 16) Microchip Technology Inc. -+ 2355 W. Chandler Blvd. -+ Chandler AZ 85224 -+ US -+ - 84-0B-BB (hex) MitraStar Technology Corp. - 840BBB (base 16) MitraStar Technology Corp. - No. 6, Innovation Road II, - Hsinchu 300 - TW - --04-D9-C8 (hex) Hon Hai Precision Industry Co., Ltd. --04D9C8 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- --A0-FB-83 (hex) Honor Device Co., Ltd. --A0FB83 (base 16) Honor Device Co., Ltd. -- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District -- Shenzhen Guangdong 518040 -- CN -- --9C-92-4F (hex) Apple, Inc. --9C924F (base 16) Apple, Inc. -+70-B3-06 (hex) Apple, Inc. -+70B306 (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --20-0E-2B (hex) Apple, Inc. --200E2B (base 16) Apple, Inc. -+B8-49-6D (hex) Apple, Inc. -+B8496D (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --F0-D7-93 (hex) Apple, Inc. --F0D793 (base 16) Apple, Inc. -+9C-92-4F (hex) Apple, Inc. -+9C924F (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --70-B3-06 (hex) Apple, Inc. --70B306 (base 16) Apple, Inc. -+20-0E-2B (hex) Apple, Inc. -+200E2B (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --B8-49-6D (hex) Apple, Inc. --B8496D (base 16) Apple, Inc. -+F0-D7-93 (hex) Apple, Inc. -+F0D793 (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --90-65-60 (hex) EM Microelectronic --906560 (base 16) EM Microelectronic -- Rue des Sors 3 -- Marin-Epagnier Neuchatel 2074 -- CH -- --88-0A-A3 (hex) Juniper Networks --880AA3 (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -- --30-3D-51 (hex) IEEE Registration Authority --303D51 (base 16) IEEE Registration Authority -- 445 Hoes Lane -- Piscataway NJ 08554 -- US -- - CC-D3-C1 (hex) Vestel Elektronik San ve Tic. A.S. - CCD3C1 (base 16) Vestel Elektronik San ve Tic. A.S. - Organize san -@@ -76532,12 +76577,48 @@ ECBE5F (base 16) Vestel Elektronik San ve Tic. A.S. - Manisa Turket 45030 - TR - -+A8-DC-5A (hex) Digital Watchdog -+A8DC5A (base 16) Digital Watchdog -+ 16220 Bloomfield Ave -+ Cerritos CA 90703 -+ US -+ -+1C-24-CD (hex) ASKEY COMPUTER CORP -+1C24CD (base 16) ASKEY COMPUTER CORP -+ 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -+ NEW TAIPEI CITY 23585 -+ TW -+ -+30-3D-51 (hex) IEEE Registration Authority -+303D51 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ -+00-FB-F9 (hex) Axiado Corporation -+00FBF9 (base 16) Axiado Corporation -+ 2610 Orchard Parkway, Suite 300 -+ San Jose CA 95134 -+ US -+ -+44-71-47 (hex) Beijing Xiaomi Electronics Co.,Ltd -+447147 (base 16) Beijing Xiaomi Electronics Co.,Ltd -+ Xiaomi Campus -+ Beijing Beijing 100085 -+ CN -+ - F4-BB-C7 (hex) vivo Mobile Communication Co., Ltd. - F4BBC7 (base 16) vivo Mobile Communication Co., Ltd. - No.1, vivo Road, Chang'an - Dongguan Guangdong 523860 - CN - -+DC-AA-43 (hex) Shenzhen Terca Information Technology Co., Ltd. -+DCAA43 (base 16) Shenzhen Terca Information Technology Co., Ltd. -+ Room1401, Block A, Building 12 , Shenzhen Bay Technology and Eco-Park , No. 18 Keji South Road , Nanshan District , Shenzhen -+ SHENZHEN GUANGDONG 518000 -+ CN -+ - 4C-36-4E (hex) Panasonic Connect Co., Ltd. - 4C364E (base 16) Panasonic Connect Co., Ltd. - 4-1-62 Minoshima, Hakata-ku -@@ -76550,34 +76631,34 @@ F4BBC7 (base 16) vivo Mobile Communication Co., Ltd. - shenzhen guangdong 518057 - CN - --44-71-47 (hex) Beijing Xiaomi Electronics Co.,Ltd --447147 (base 16) Beijing Xiaomi Electronics Co.,Ltd -- Xiaomi Campus -- Beijing Beijing 100085 -- CN -- --A8-DC-5A (hex) Digital Watchdog --A8DC5A (base 16) Digital Watchdog -- 16220 Bloomfield Ave -- Cerritos CA 90703 -- US -+88-B4-36 (hex) FUJIFILM Corporation -+88B436 (base 16) FUJIFILM Corporation -+ 1-324,Uetake,Kita-ku -+ Saitama Saitama 331-9624 -+ JP - --1C-24-CD (hex) ASKEY COMPUTER CORP --1C24CD (base 16) ASKEY COMPUTER CORP -- 10F, No.119, JIANKANG RD.,ZHINGHE DIST, -- NEW TAIPEI CITY 23585 -- TW -+30-27-CF (hex) Canopy Growth Corp -+3027CF (base 16) Canopy Growth Corp -+ 350 Leggett Drive -+ Ottawa Ontario K2K 2W7 -+ CA - --DC-AA-43 (hex) Shenzhen Terca Information Technology Co., Ltd. --DCAA43 (base 16) Shenzhen Terca Information Technology Co., Ltd. -- Room1401, Block A, Building 12 , Shenzhen Bay Technology and Eco-Park , No. 18 Keji South Road , Nanshan District , Shenzhen -- SHENZHEN GUANGDONG 518000 -+38-A8-9B (hex) Fiberhome Telecommunication Technologies Co.,LTD -+38A89B (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - --00-FB-F9 (hex) Axiado Corporation --00FBF9 (base 16) Axiado Corporation -- 2610 Orchard Parkway, Suite 300 -- San Jose CA 95134 -+64-37-A4 (hex) TOKYOSHUHA CO.,LTD. -+6437A4 (base 16) TOKYOSHUHA CO.,LTD. -+ 1-8-9 KANDAIZUMICHO -+ CHIYODA-KU TOKYO 101-0024 -+ JP -+ -+90-CA-FA (hex) Google, Inc. -+90CAFA (base 16) Google, Inc. -+ 1600 Amphitheatre Parkway -+ Mountain View CA 94043 - US - - 84-80-94 (hex) Meter, Inc. -@@ -113867,24 +113948,6 @@ B4B742 (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --50-C1-F0 (hex) NXP Semiconductor (Tianjin) LTD. --50C1F0 (base 16) NXP Semiconductor (Tianjin) LTD. -- No.15 Xinghua Avenue, Xiqing Economic Development Area -- Tianjin 300385 -- CN -- --F4-84-8D (hex) TP-LINK TECHNOLOGIES CO.,LTD. --F4848D (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -- Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -- Shenzhen Guangdong 518057 -- CN -- --58-11-22 (hex) ASUSTek COMPUTER INC. --581122 (base 16) ASUSTek COMPUTER INC. -- 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -- Taipei Taiwan 112 -- TW -- - 60-BE-B4 (hex) S-Bluetech co., limited - 60BEB4 (base 16) S-Bluetech co., limited - Room 202, Block A, Donghai Wang Mansion, 369 Bulonglu -@@ -113897,6 +113960,18 @@ F4848D (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Chongqing China 401120 - CN - -+50-C1-F0 (hex) NXP Semiconductor (Tianjin) LTD. -+50C1F0 (base 16) NXP Semiconductor (Tianjin) LTD. -+ No.15 Xinghua Avenue, Xiqing Economic Development Area -+ Tianjin 300385 -+ CN -+ -+F4-84-8D (hex) TP-LINK TECHNOLOGIES CO.,LTD. -+F4848D (base 16) TP-LINK TECHNOLOGIES CO.,LTD. -+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan -+ Shenzhen Guangdong 518057 -+ CN -+ - A8-54-A2 (hex) Heimgard Technologies AS - A854A2 (base 16) Heimgard Technologies AS - Dronning Mauds gate 15 -@@ -113921,11 +113996,11 @@ B87EE5 (base 16) Intelbras - São José Santa Catarina 88104800 - BR - --94-AB-FE (hex) Nokia --94ABFE (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -+58-11-22 (hex) ASUSTek COMPUTER INC. -+581122 (base 16) ASUSTek COMPUTER INC. -+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan -+ Taipei Taiwan 112 -+ TW - - 74-69-4A (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - 74694A (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -@@ -113939,6 +114014,12 @@ B87EE5 (base 16) Intelbras - shenzhen 518000 - CN - -+94-AB-FE (hex) Nokia -+94ABFE (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ - 98-A9-2D (hex) New H3C Technologies Co., Ltd - 98A92D (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District -@@ -113963,18 +114044,6 @@ B87EE5 (base 16) Intelbras - Austin TX 78759 - US - --E0-03-6B (hex) Samsung Electronics Co.,Ltd --E0036B (base 16) Samsung Electronics Co.,Ltd -- 129, Samsung-ro, Youngtongl-Gu -- Suwon Gyeonggi-Do 16677 -- KR -- --18-69-D4 (hex) Samsung Electronics Co.,Ltd --1869D4 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- - D4-F0-EA (hex) Beijing Xiaomi Mobile Software Co., Ltd - D4F0EA (base 16) Beijing Xiaomi Mobile Software Co., Ltd - The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -@@ -113987,6 +114056,12 @@ D4F0EA (base 16) Beijing Xiaomi Mobile Software Co., Ltd - Suzhou 215021 - CN - -+E0-03-6B (hex) Samsung Electronics Co.,Ltd -+E0036B (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ - 80-69-1A (hex) Belkin International Inc. - 80691A (base 16) Belkin International Inc. - 12045 East Waterfront Drive -@@ -114041,18 +114116,6 @@ E046EE (base 16) NETGEAR - San Jose CA 95134 - US - --DC-BE-49 (hex) ITEL MOBILE LIMITED --DCBE49 (base 16) ITEL MOBILE LIMITED -- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -- Hong Kong KOWLOON 999077 -- HK -- --9C-95-61 (hex) Hui Zhou Gaoshengda Technology Co.,LTD --9C9561 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -- No.75,Zhongkai High-Tech Development District,Huizhou -- Hui Zhou Guangdong 516006 -- CN -- - 9C-4F-5F (hex) Google, Inc. - 9C4F5F (base 16) Google, Inc. - 15 rue Castel -@@ -114071,24 +114134,36 @@ A02942 (base 16) Intel Corporate - Hsichu Taiwan 300 - TW - -+04-63-D0 (hex) Huawei Device Co., Ltd. -+0463D0 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ - F0-D4-15 (hex) Intel Corporate - F0D415 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 - Kulim Kedah 09000 - MY - --D4-D8-53 (hex) Intel Corporate --D4D853 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+18-69-D4 (hex) Samsung Electronics Co.,Ltd -+1869D4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR - --04-63-D0 (hex) Huawei Device Co., Ltd. --0463D0 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+9C-95-61 (hex) Hui Zhou Gaoshengda Technology Co.,LTD -+9C9561 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -+ No.75,Zhongkai High-Tech Development District,Huizhou -+ Hui Zhou Guangdong 516006 - CN - -+DC-BE-49 (hex) ITEL MOBILE LIMITED -+DCBE49 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK -+ - 14-44-8F (hex) Edgecore Networks Corporation - 14448F (base 16) Edgecore Networks Corporation - 1 Creation RD 3. -@@ -114101,18 +114176,6 @@ D4D853 (base 16) Intel Corporate - Reno NV 89507 - US - --C0-ED-E5 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD --C0EDE5 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -- NO.18 HAIBIN ROAD, -- DONG GUAN GUANG DONG 523860 -- CN -- --10-A5-62 (hex) Iton Technology Corp. --10A562 (base 16) Iton Technology Corp. -- Room 1302, Block A, Building 4, Tianan Cyber Park, Huangge Road,Longgang District -- Shenzhen Guangdong 518116 -- CN -- - D4-A3-EB (hex) Shenzhen iComm Semiconductor CO.,LTD - D4A3EB (base 16) Shenzhen iComm Semiconductor CO.,LTD - Room 601,Block B ,Digital Building,Garden City -@@ -114143,6 +114206,12 @@ B89FCC (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Kanata Ontario K2K 2E6 - CA - -+D4-D8-53 (hex) Intel Corporate -+D4D853 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 8C-76-3F (hex) ARRIS Group, Inc. - 8C763F (base 16) ARRIS Group, Inc. - 6450 Sequence Drive -@@ -114161,6 +114230,18 @@ C0A938 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - -+C0-ED-E5 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+C0EDE5 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ -+10-A5-62 (hex) Iton Technology Corp. -+10A562 (base 16) Iton Technology Corp. -+ Room 1302, Block A, Building 4, Tianan Cyber Park, Huangge Road,Longgang District -+ Shenzhen Guangdong 518116 -+ CN -+ - 5C-24-E2 (hex) Suzhou Denbom Electronic S&T Co., Ltd - 5C24E2 (base 16) Suzhou Denbom Electronic S&T Co., Ltd - 3F,Building 2, No.415,Changyang Street -@@ -114197,6 +114278,12 @@ BCC746 (base 16) Hon Hai Precision IND.CO.,LTD - New Taipei City Banqiao Dist. 220871 - TW - -+64-FD-96 (hex) Sagemcom Broadband SAS -+64FD96 (base 16) Sagemcom Broadband SAS -+ 250, route de l'Empereur -+ Rueil Malmaison Cedex hauts de seine 92848 -+ FR -+ - FC-B9-7E (hex) GE Appliances - FCB97E (base 16) GE Appliances - 4000 Buechel Bank Road -@@ -114215,12 +114302,6 @@ FCB97E (base 16) GE Appliances - Beijing 100089 - CN - --64-FD-96 (hex) Sagemcom Broadband SAS --64FD96 (base 16) Sagemcom Broadband SAS -- 250, route de l'Empereur -- Rueil Malmaison Cedex hauts de seine 92848 -- FR -- - C8-EB-EC (hex) Shenzhen YOUHUA Technology Co., Ltd - C8EBEC (base 16) Shenzhen YOUHUA Technology Co., Ltd - Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -@@ -114233,24 +114314,6 @@ C8EBEC (base 16) Shenzhen YOUHUA Technology Co., Ltd - New Taipei City Taiwan 235 - TW - --94-C5-A6 (hex) ITEL MOBILE LIMITED --94C5A6 (base 16) ITEL MOBILE LIMITED -- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -- Hong Kong KOWLOON 999077 -- HK -- --7C-EC-B1 (hex) Apple, Inc. --7CECB1 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- --5C-E9-1E (hex) Apple, Inc. --5CE91E (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- - E0-D7-38 (hex) WireStar Networks - E0D738 (base 16) WireStar Networks - PO Box 10966 -@@ -114269,23 +114332,29 @@ E0D738 (base 16) WireStar Networks - SHANGHAI 201114 - CN - -+7C-EC-B1 (hex) Apple, Inc. -+7CECB1 (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ -+5C-E9-1E (hex) Apple, Inc. -+5CE91E (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US -+ - A8-B0-AE (hex) BizLink Special Cables Germany GmbH - A8B0AE (base 16) BizLink Special Cables Germany GmbH - Eschstrasse 1 - Friesoythe 26169 - DE - --F0-B6-61 (hex) eero inc. --F0B661 (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -- --E0-6A-05 (hex) Shenzhen YOUHUA Technology Co., Ltd --E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd -- Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -- Shenzhen Guangdong 518055 -- CN -+94-C5-A6 (hex) ITEL MOBILE LIMITED -+94C5A6 (base 16) ITEL MOBILE LIMITED -+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -+ Hong Kong KOWLOON 999077 -+ HK - - 48-57-D2 (hex) Broadcom Limited - 4857D2 (base 16) Broadcom Limited -@@ -114311,6 +114380,12 @@ D834EE (base 16) SHURE INCORPORATED - NILES IL 60714 - US - -+F0-B6-61 (hex) eero inc. -+F0B661 (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ - 04-25-F0 (hex) Nokia - 0425F0 (base 16) Nokia - 600 March Road -@@ -114323,16 +114398,10 @@ D834EE (base 16) SHURE INCORPORATED - Kyoto 619-0237 - JP - --40-3B-7B (hex) Huawei Device Co., Ltd. --403B7B (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --08-30-CE (hex) Fiberhome Telecommunication Technologies Co.,LTD --0830CE (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -+E0-6A-05 (hex) Shenzhen YOUHUA Technology Co., Ltd -+E06A05 (base 16) Shenzhen YOUHUA Technology Co., Ltd -+ Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District -+ Shenzhen Guangdong 518055 - CN - - 90-CD-1F (hex) Quectel Wireless Solutions Co.,Ltd. -@@ -114365,6 +114434,18 @@ D834EE (base 16) SHURE INCORPORATED - Rueil Malmaison Cedex hauts de seine 92848 - FR - -+40-3B-7B (hex) Huawei Device Co., Ltd. -+403B7B (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+08-30-CE (hex) Fiberhome Telecommunication Technologies Co.,LTD -+0830CE (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ - B0-A2-E7 (hex) Shenzhen TINNO Mobile Technology Corp. - B0A2E7 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -114383,24 +114464,12 @@ BC4101 (base 16) Shenzhen TINNO Mobile Technology Corp. - Nanshan District, Shenzhen PRC 518053 - CN - --18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. --18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -- Building, No.33, Xiandong Rd, Xili -- Nanshan District, Shenzhen PRC 518053 -- CN -- - 74-97-79 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - 749779 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. - B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China - Nanning Guangxi 530007 - CN - --34-CF-6C (hex) Hangzhou Taili wireless communication equipment Co.,Ltd --34CF6C (base 16) Hangzhou Taili wireless communication equipment Co.,Ltd -- Room 1901, No.258, Zhonghe Middle Road, Shangcheng District, Hangzhou -- Hangzhou Zhejiang 310003 -- CN -- - F8-CD-C8 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD - F8CDC8 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD - No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -@@ -114413,10 +114482,16 @@ B0285B (base 16) JUHUA Technology Inc. - Shenzhen City Guangdong Province 518117 - CN - --C8-24-96 (hex) Jiangsu Yinhe Electronics Co.,Ltd. --C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. -- No.188 Nanhuan Road, TangQiao Town -- Zhangjiagang Jiangsu 215611 -+18-D6-1C (hex) Shenzhen TINNO Mobile Technology Corp. -+18D61C (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 -+ CN -+ -+34-CF-6C (hex) Hangzhou Taili wireless communication equipment Co.,Ltd -+34CF6C (base 16) Hangzhou Taili wireless communication equipment Co.,Ltd -+ Room 1901, No.258, Zhonghe Middle Road, Shangcheng District, Hangzhou -+ Hangzhou Zhejiang 310003 - CN - - E0-F6-78 (hex) Fiberhome Telecommunication Technologies Co.,LTD -@@ -114425,29 +114500,17 @@ E0F678 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - Wuhan Hubei 430074 - CN - --40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. --402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -- 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -- Shenzhen Guangdong 518000 -- CN -- --14-5B-B9 (hex) ConMet --145BB9 (base 16) ConMet -- 5701 SE Columbia Way -- Vancouver WA 98661 -- US -- - 28-F7-D6 (hex) Fiberhome Telecommunication Technologies Co.,LTD - 28F7D6 (base 16) Fiberhome Telecommunication Technologies Co.,LTD - No.5 DongXin Road - Wuhan Hubei 430074 - CN - --B8-B4-09 (hex) Samsung Electronics Co.,Ltd --B8B409 (base 16) Samsung Electronics Co.,Ltd -- 129, Samsung-ro, Youngtongl-Gu -- Suwon Gyeonggi-Do 16677 -- KR -+C8-24-96 (hex) Jiangsu Yinhe Electronics Co.,Ltd. -+C82496 (base 16) Jiangsu Yinhe Electronics Co.,Ltd. -+ No.188 Nanhuan Road, TangQiao Town -+ Zhangjiagang Jiangsu 215611 -+ CN - - 24-18-C0 (hex) E. Wehrle GmbH - 2418C0 (base 16) E. Wehrle GmbH -@@ -114455,6 +114518,12 @@ B8B409 (base 16) Samsung Electronics Co.,Ltd - 78120 Furtwangen Baden-Württemberg 78120 - DE - -+14-5B-B9 (hex) ConMet -+145BB9 (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US -+ - AC-83-F0 (hex) Cobalt Digital Inc. - AC83F0 (base 16) Cobalt Digital Inc. - 2506 Galen Drive -@@ -114467,12 +114536,6 @@ AC15A2 (base 16) TP-Link Corporation Limited - Tsim Sha Tsui Kowloon 999077 - HK - --AC-DF-9F (hex) Arcadyan Corporation --ACDF9F (base 16) Arcadyan Corporation -- No.8, Sec.2, Guangfu Rd. -- Hsinchu City Hsinchu 30071 -- TW -- - B8-59-C8 (hex) 70mai Co.,Ltd. - B859C8 (base 16) 70mai Co.,Ltd. - Room 2220, building 2, No. 588, Zixing road -@@ -114485,11 +114548,23 @@ A8E207 (base 16) GOIP Global Services Pvt. Ltd. - Noida Uttar Pradesh 201301 - IN - --74-E7-98 (hex) Juniper Networks --74E798 (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -+40-22-30 (hex) Shenzhen SuperElectron Technology Co.,Ltd. -+402230 (base 16) Shenzhen SuperElectron Technology Co.,Ltd. -+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city -+ Shenzhen Guangdong 518000 -+ CN -+ -+B8-B4-09 (hex) Samsung Electronics Co.,Ltd -+B8B409 (base 16) Samsung Electronics Co.,Ltd -+ 129, Samsung-ro, Youngtongl-Gu -+ Suwon Gyeonggi-Do 16677 -+ KR -+ -+AC-DF-9F (hex) Arcadyan Corporation -+ACDF9F (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW - - D4-E2-2F (hex) Roku, Inc - D4E22F (base 16) Roku, Inc -@@ -114527,6 +114602,18 @@ C43CB0 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD - Mianyang Sichuan 622650 - CN - -+D8-7E-6F (hex) CASCINATION AG -+D87E6F (base 16) CASCINATION AG -+ Steigerhubelstrasse 3 -+ Bern Bern 3008 -+ CH -+ -+04-4F-7A (hex) China Mobile Group Device Co.,Ltd. -+044F7A (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ - 40-5E-F6 (hex) Samsung Electronics Co.,Ltd - 405EF6 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -114551,29 +114638,23 @@ C43CB0 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD - Reno NV 89507 - US - --04-4F-7A (hex) China Mobile Group Device Co.,Ltd. --044F7A (base 16) China Mobile Group Device Co.,Ltd. -- 32 Xuanwumen West Street,Xicheng District -- Beijing 100053 -- CN -- - C0-4E-30 (hex) Espressif Inc. - C04E30 (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area - Shanghai Shanghai 201203 - CN - --AC-60-6F (hex) Nokia Shanghai Bell Co., Ltd. --AC606F (base 16) Nokia Shanghai Bell Co., Ltd. -- No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai -- Shanghai 201206 -- CN -+74-E7-98 (hex) Juniper Networks -+74E798 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US - --D8-7E-6F (hex) CASCINATION AG --D87E6F (base 16) CASCINATION AG -- Steigerhubelstrasse 3 -- Bern Bern 3008 -- CH -+E0-16-B1 (hex) Advanced Design Technology co.,ltd. -+E016B1 (base 16) Advanced Design Technology co.,ltd. -+ 1-1-3 Kotobukicho#10F Mitsukikotobukichobiru -+ Fucyu-city Tokyo 1830056 -+ JP - - 54-31-D4 (hex) TGW Mechanics GmbH - 5431D4 (base 16) TGW Mechanics GmbH -@@ -114587,17 +114668,17 @@ D87E6F (base 16) CASCINATION AG - Wuhan Hubei 430206 - CN - --00-19-FB (hex) SKY UK LIMITED --0019FB (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -+C0-69-11 (hex) Arista Networks -+C06911 (base 16) Arista Networks -+ 5453 Great America Parkway -+ Santa Clara CA 95054 -+ US - --78-3E-53 (hex) SKY UK LIMITED --783E53 (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -+E4-B5-55 (hex) Huawei Device Co., Ltd. -+E4B555 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN - - 24-A7-DC (hex) SKY UK LIMITED - 24A7DC (base 16) SKY UK LIMITED -@@ -114605,32 +114686,26 @@ D87E6F (base 16) CASCINATION AG - Brentwood Essex 08854 - GB - --E0-16-B1 (hex) Advanced Design Technology co.,ltd. --E016B1 (base 16) Advanced Design Technology co.,ltd. -- 1-1-3 Kotobukicho#10F Mitsukikotobukichobiru -- Fucyu-city Tokyo 1830056 -- JP -+38-A6-CE (hex) SKY UK LIMITED -+38A6CE (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB - --E4-B5-55 (hex) Huawei Device Co., Ltd. --E4B555 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+AC-60-6F (hex) Nokia Shanghai Bell Co., Ltd. -+AC606F (base 16) Nokia Shanghai Bell Co., Ltd. -+ No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai -+ Shanghai 201206 - CN - --C0-69-11 (hex) Arista Networks --C06911 (base 16) Arista Networks -- 5453 Great America Parkway -- Santa Clara CA 95054 -- US -- --2C-93-FB (hex) Sercomm France Sarl --2C93FB (base 16) Sercomm France Sarl -- 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France -- Moulineaux 92370 -- FR -+00-19-FB (hex) SKY UK LIMITED -+0019FB (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB - --38-A6-CE (hex) SKY UK LIMITED --38A6CE (base 16) SKY UK LIMITED -+78-3E-53 (hex) SKY UK LIMITED -+783E53 (base 16) SKY UK LIMITED - 130 Kings Road - Brentwood Essex 08854 - GB -@@ -114719,11 +114794,11 @@ BC69CB (base 16) Panasonic Electric Works Networks Co., Ltd. - Kulim Kedah 09000 - MY - --58-2B-0A (hex) Texas Instruments --582B0A (base 16) Texas Instruments -- 12500 TI Blvd -- Dallas TX 75243 -- US -+2C-93-FB (hex) Sercomm France Sarl -+2C93FB (base 16) Sercomm France Sarl -+ 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France -+ Moulineaux 92370 -+ FR - - B4-46-6B (hex) REALTIMEID AS - B4466B (base 16) REALTIMEID AS -@@ -114731,6 +114806,12 @@ B4466B (base 16) REALTIMEID AS - Snåsa 7760 - NO - -+90-6A-EB (hex) Microsoft Corporation -+906AEB (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ - C4-EB-39 (hex) Sagemcom Broadband SAS - C4EB39 (base 16) Sagemcom Broadband SAS - 250, route de l'Empereur -@@ -114743,11 +114824,17 @@ C4EB39 (base 16) Sagemcom Broadband SAS - Taipei City 10690 - TW - --F0-C1-CE (hex) GoodWe Technologies CO., Ltd --F0C1CE (base 16) GoodWe Technologies CO., Ltd -- No.90 Zijin Rd.,New District,Suzhou,215011,China -- Suzhou JiangSu 215011 -- CN -+08-9D-F4 (hex) Intel Corporate -+089DF4 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+DC-46-28 (hex) Intel Corporate -+DC4628 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - - 0C-91-92 (hex) Intel Corporate - 0C9192 (base 16) Intel Corporate -@@ -114767,24 +114854,24 @@ F0C1CE (base 16) GoodWe Technologies CO., Ltd - Shenzhen 518000 - CN - --08-9D-F4 (hex) Intel Corporate --089DF4 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- --DC-46-28 (hex) Intel Corporate --DC4628 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+F0-C1-CE (hex) GoodWe Technologies CO., Ltd -+F0C1CE (base 16) GoodWe Technologies CO., Ltd -+ No.90 Zijin Rd.,New District,Suzhou,215011,China -+ Suzhou JiangSu 215011 -+ CN - --90-6A-EB (hex) Microsoft Corporation --906AEB (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -+58-2B-0A (hex) Texas Instruments -+582B0A (base 16) Texas Instruments -+ 12500 TI Blvd -+ Dallas TX 75243 - US - -+D8-E8-44 (hex) zte corporation -+D8E844 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ - E4-6A-35 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - E46A35 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -@@ -114809,18 +114896,6 @@ E838A0 (base 16) Vizio, Inc - Irvine CA 92618 - US - --EC-C0-7A (hex) Laird Connectivity --ECC07A (base 16) Laird Connectivity -- 3F.-1, No.145, Xianzheng 9th Rd., -- Zhubei 30251 -- TW -- --68-B9-C2 (hex) Earda Technologies co Ltd --68B9C2 (base 16) Earda Technologies co Ltd -- Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -- Guangzhou Guangdong 511455 -- CN -- - C8-1E-C2 (hex) ITEL MOBILE LIMITED - C81EC2 (base 16) ITEL MOBILE LIMITED - RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K -@@ -114833,10 +114908,10 @@ C81EC2 (base 16) ITEL MOBILE LIMITED - Hui Zhou Guangdong 516025 - CN - --D8-E8-44 (hex) zte corporation --D8E844 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+68-B9-C2 (hex) Earda Technologies co Ltd -+68B9C2 (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 - CN - - 68-83-CB (hex) Apple, Inc. -@@ -114857,11 +114932,11 @@ FC1263 (base 16) ASKEY COMPUTER CORP - Shanghai Shanghai 201114 - CN - --C0-71-AA (hex) ShenZhen OnMicro Electronics Co.,Ltd. --C071AA (base 16) ShenZhen OnMicro Electronics Co.,Ltd. -- Room 407-408, West Building, Skyworth Semiconductor Building, GaoXin South 4th Road, Yuehai Street, Nanshan District -- Shenzhen GuangDong 518057 -- CN -+EC-C0-7A (hex) Laird Connectivity -+ECC07A (base 16) Laird Connectivity -+ 3F.-1, No.145, Xianzheng 9th Rd., -+ Zhubei 30251 -+ TW - - 9C-05-91 (hex) Mellanox Technologies, Inc. - 9C0591 (base 16) Mellanox Technologies, Inc. -@@ -114869,28 +114944,22 @@ C071AA (base 16) ShenZhen OnMicro Electronics Co.,Ltd. - Sunnyvale CA 94085 - US - --70-9C-45 (hex) HUAWEI TECHNOLOGIES CO.,LTD --709C45 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- - 00-09-DF (hex) Vestel Elektronik San ve Tic. A.S. - 0009DF (base 16) Vestel Elektronik San ve Tic. A.S. - Organize san - Manisa Turket 45030 - TR - --A0-31-31 (hex) Procenne Digital Security --A03131 (base 16) Procenne Digital Security -- Eski Buyukdere Cd. No:7/12 Maslak -- Istanbul Sariyer 34398 -- TR -+C0-71-AA (hex) ShenZhen OnMicro Electronics Co.,Ltd. -+C071AA (base 16) ShenZhen OnMicro Electronics Co.,Ltd. -+ Room 407-408, West Building, Skyworth Semiconductor Building, GaoXin South 4th Road, Yuehai Street, Nanshan District -+ Shenzhen GuangDong 518057 -+ CN - --FC-07-36 (hex) Huawei Device Co., Ltd. --FC0736 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -+70-9C-45 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+709C45 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - - 94-A0-7D (hex) Huawei Device Co., Ltd. -@@ -114905,6 +114974,66 @@ FC0736 (base 16) Huawei Device Co., Ltd. - New Taipei 23674 - TW - -+FC-07-36 (hex) Huawei Device Co., Ltd. -+FC0736 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+A0-31-31 (hex) Procenne Digital Security -+A03131 (base 16) Procenne Digital Security -+ Eski Buyukdere Cd. No:7/12 Maslak -+ Istanbul Sariyer 34398 -+ TR -+ -+84-F4-4C (hex) International Integrated Systems., Inc. -+84F44C (base 16) International Integrated Systems., Inc. -+ 6F., No.7, Sec. 2, Xianmin Blvd., Banqiao Dist., -+ New Taipei City 22041 -+ TW -+ -+14-2D-79 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+142D79 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 -+ CN -+ -+DC-B7-AC (hex) Aruba, a Hewlett Packard Enterprise Company -+DCB7AC (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+A4-9E-69 (hex) Silicon Laboratories -+A49E69 (base 16) Silicon Laboratories -+ 400 W Cesar Chavez St, Silicon La -+ Austin TX 78701 -+ US -+ -+DC-E6-50 (hex) Extreme Networks, Inc. -+DCE650 (base 16) Extreme Networks, Inc. -+ 6480 Via Del Oro -+ San Jose CA 95119 -+ US -+ -+48-73-10 (hex) Juniper Networks -+487310 (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 -+ US -+ -+7C-DC-CC (hex) Beijing Yixin Techology Co.,Ltd -+7CDCCC (base 16) Beijing Yixin Techology Co.,Ltd -+ Unit 907, Building 4, Building 2, No. 9 Fenghao East Road, Haidian District, Beijing -+ Beijing 100000 -+ CN -+ -+CC-5E-F8 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+CC5EF8 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ - F8-D0-27 (hex) Seiko Epson Corporation - F8D027 (base 16) Seiko Epson Corporation - 2070 Kotobuki Koaka -@@ -126533,12 +126662,6 @@ C81B6B (base 16) Innova Security - Sao Paulo Sao Paulo 02033000 - BR - --34-38-AF (hex) Inlab Software GmbH --3438AF (base 16) Inlab Software GmbH -- Josef-Wuerth-Str. 3 -- Gruenwald Bavaria 82031 -- DE -- - B4-A8-28 (hex) Shenzhen Concox Information Technology Co., Ltd - B4A828 (base 16) Shenzhen Concox Information Technology Co., Ltd - Floor 4th, Building B, Gaoxinqi Industrial Park, Liuxian 1st Road, district 67, Bao’an, Shenzhen, Guangdong,China -@@ -148637,12 +148760,6 @@ FCD436 (base 16) Motorola Mobility LLC, a Lenovo Company - Nakano-ku Tokyo 164-8570 - JP - --08-CB-E5 (hex) R3 - Reliable Realtime Radio Communications GmbH --08CBE5 (base 16) R3 - Reliable Realtime Radio Communications GmbH -- Bismarckstrasse 10-12 -- Berlin Berlin 10625 -- DE -- - F0-23-AE (hex) AMPAK Technology,Inc. - F023AE (base 16) AMPAK Technology,Inc. - 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -@@ -150446,12 +150563,6 @@ F02A2B (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - --00-25-DF (hex) Private --0025DF (base 16) Private -- 17800 N 85th St. -- Scottsdale AZ 85255 -- US -- - D0-49-7C (hex) OnePlus Technology (Shenzhen) Co., Ltd - D0497C (base 16) OnePlus Technology (Shenzhen) Co., Ltd - 18C02, 18C03, 18C04 ,18C05,TAIRAN BUILDING, -@@ -152186,10 +152297,10 @@ B4E265 (base 16) Shenzhen SDMC Technology Co.,LTD - Shenzhen GUANGDONG 518027 - CN - --CC-60-C8 (hex) Microsoft Corporation --CC60C8 (base 16) Microsoft Corporation -- One Microsoft Way -- REDMOND WA 98052 -+EC-7C-5C (hex) Juniper Networks -+EC7C5C (base 16) Juniper Networks -+ 1133 Innovation Way -+ Sunnyvale CA 94089 - US - - 00-EB-D8 (hex) MERCUSYS TECHNOLOGIES CO., LTD. -@@ -152198,6 +152309,12 @@ CC60C8 (base 16) Microsoft Corporation - Shenzhen Guangdong 518057 - CN - -+CC-60-C8 (hex) Microsoft Corporation -+CC60C8 (base 16) Microsoft Corporation -+ One Microsoft Way -+ REDMOND WA 98052 -+ US -+ - 6C-8D-77 (hex) Cisco Systems, Inc - 6C8D77 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -152216,12 +152333,6 @@ B417A8 (base 16) Facebook Technologies, LLC - Menlo Park CA 94025 - US - --EC-7C-5C (hex) Juniper Networks --EC7C5C (base 16) Juniper Networks -- 1133 Innovation Way -- Sunnyvale CA 94089 -- US -- - 10-54-D2 (hex) IEEE Registration Authority - 1054D2 (base 16) IEEE Registration Authority - 445 Hoes Lane -@@ -152240,6 +152351,12 @@ C4DF39 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Chongqing China 401120 - CN - -+10-63-4B (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+10634B (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District -+ Shenzhen Guangdong 518057 -+ CN -+ - 80-97-33 (hex) Shenzhen Elebao Technology Co., Ltd - 809733 (base 16) Shenzhen Elebao Technology Co., Ltd - F/6, Tower A, Zhihuichuangxin Center Bldg,Qianjin Road, XixiangTown, Bao’an District -@@ -152276,6 +152393,18 @@ D8365F (base 16) Intelbras - Moscow\ 117335 - RU - -+E8-4D-EC (hex) Xerox Corporation -+E84DEC (base 16) Xerox Corporation -+ 800 Phillips Rd -+ Webster NY 14450 -+ US -+ -+C8-B8-2F (hex) eero inc. -+C8B82F (base 16) eero inc. -+ 660 3rd Street -+ San Francisco CA 94107 -+ US -+ - 54-78-C9 (hex) AMPAK Technology,Inc. - 5478C9 (base 16) AMPAK Technology,Inc. - 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou, -@@ -152300,54 +152429,60 @@ FC101A (base 16) Palo Alto Networks - Rueil Malmaison Cedex hauts de seine 92848 - FR - --10-63-4B (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. --10634B (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. -- 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District -- Shenzhen Guangdong 518057 -+B8-5D-C3 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+B85DC3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 - CN - --E8-4D-EC (hex) Xerox Corporation --E84DEC (base 16) Xerox Corporation -- 800 Phillips Rd -- Webster NY 14450 -- US -- --C8-B8-2F (hex) eero inc. --C8B82F (base 16) eero inc. -- 660 3rd Street -- San Francisco CA 94107 -- US -- - B4-3A-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD - B43AE2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - -+D0-A4-6F (hex) China Dragon Technology Limited -+D0A46F (base 16) China Dragon Technology Limited -+ B4 Bldg.Haoshan 1st Industry Park, -+ Shenzhen Guangdong 518104 -+ CN -+ - F0-C8-B5 (hex) HUAWEI TECHNOLOGIES CO.,LTD - F0C8B5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --B8-5D-C3 (hex) HUAWEI TECHNOLOGIES CO.,LTD --B85DC3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -+2C-60-CD (hex) NR ELECTRIC CO., LTD -+2C60CD (base 16) NR ELECTRIC CO., LTD -+ 69,Suyuan Avenue -+ Nanjing Jiangsu 211102 -+ CN -+ -+8C-1E-80 (hex) Cisco Systems, Inc -+8C1E80 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+A4-1E-E1 (hex) Taicang T&W Electronics -+A41EE1 (base 16) Taicang T&W Electronics -+ 89# Jiang Nan RD -+ Suzhou Jiangsu 215412 - CN - -+E8-FB-1C (hex) AzureWave Technology Inc. -+E8FB1C (base 16) AzureWave Technology Inc. -+ 8F., No. 94, Baozhong Rd. -+ New Taipei City Taiwan 231 -+ TW -+ - B4-A7-C6 (hex) SERVERCOM (INDIA) PRIVATE LIMITED - B4A7C6 (base 16) SERVERCOM (INDIA) PRIVATE LIMITED - E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI - NEW DELHI NA - IN - --D0-A4-6F (hex) China Dragon Technology Limited --D0A46F (base 16) China Dragon Technology Limited -- B4 Bldg.Haoshan 1st Industry Park, -- Shenzhen Guangdong 518104 -- CN -- - 1C-76-F2 (hex) Samsung Electronics Co.,Ltd - 1C76F2 (base 16) Samsung Electronics Co.,Ltd - 129, Samsung-ro, Youngtongl-Gu -@@ -152366,12 +152501,6 @@ D0A46F (base 16) China Dragon Technology Limited - Gumi Gyeongbuk 730-350 - KR - --2C-60-CD (hex) NR ELECTRIC CO., LTD --2C60CD (base 16) NR ELECTRIC CO., LTD -- 69,Suyuan Avenue -- Nanjing Jiangsu 211102 -- CN -- - 28-6B-35 (hex) Intel Corporate - 286B35 (base 16) Intel Corporate - Lot 8, Jalan Hi-Tech 2/3 -@@ -152384,18 +152513,6 @@ D0A46F (base 16) China Dragon Technology Limited - Piscataway NJ 08554 - US - --A4-1E-E1 (hex) Taicang T&W Electronics --A41EE1 (base 16) Taicang T&W Electronics -- 89# Jiang Nan RD -- Suzhou Jiangsu 215412 -- CN -- --E8-FB-1C (hex) AzureWave Technology Inc. --E8FB1C (base 16) AzureWave Technology Inc. -- 8F., No. 94, Baozhong Rd. -- New Taipei City Taiwan 231 -- TW -- - C0-EE-40 (hex) Laird Connectivity - C0EE40 (base 16) Laird Connectivity - 50 South Main St -@@ -152408,12 +152525,72 @@ A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD - Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - -+84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD -+84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD -+14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ -+E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD -+E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -+ Room 601,Block B ,Digital Building,Garden City -+ Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -+ CN -+ - 30-04-5C (hex) Shenzhen SuperElectron Technology Co.,Ltd. - 30045C (base 16) Shenzhen SuperElectron Technology Co.,Ltd. - 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city - Shenzhen Guangdong 518000 - CN - -+90-79-CF (hex) zte corporation -+9079CF (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+88-8F-A4 (hex) Huawei Device Co., Ltd. -+888FA4 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+3C-82-C0 (hex) Technicolor CH USA Inc. -+3C82C0 (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+C4-DE-E2 (hex) Espressif Inc. -+C4DEE2 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+68-B6-B3 (hex) Espressif Inc. -+68B6B3 (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 -+ CN -+ -+FC-A0-5A (hex) Oray.com co., LTD. -+FCA05A (base 16) Oray.com co., LTD. -+ 8008Rm, building No.1 GuoDing d. Yangpu District -+ Shanghai Shanghai 200433 -+ CN -+ -+90-48-6C (hex) Ring LLC -+90486C (base 16) Ring LLC -+ 1523 26th St -+ Santa Monica CA 90404 -+ US -+ - 3C-46-45 (hex) Shanghai Infinity Wireless Technologies Co.,Ltd. - 3C4645 (base 16) Shanghai Infinity Wireless Technologies Co.,Ltd. - Room 522, Building A, No.1687 Changyang Road, Yangpu District, Shanghai -@@ -152438,30 +152615,12 @@ A4F933 (base 16) Intel Corporate - Kulim Kedah 09000 - MY - --88-8F-A4 (hex) Huawei Device Co., Ltd. --888FA4 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- - 50-68-AC (hex) Huawei Device Co., Ltd. - 5068AC (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone - Dongguan Guangdong 523808 - CN - --90-79-CF (hex) zte corporation --9079CF (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- --8C-1E-80 (hex) Cisco Systems, Inc --8C1E80 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- - 50-39-2F (hex) INGRAM MICRO SERVICES - 50392F (base 16) INGRAM MICRO SERVICES - 100 CHEMIN DE BAILLOT -@@ -152486,53 +152645,11 @@ FC8417 (base 16) Honor Device Co., Ltd. - San Diego CA 92121 - US - --C4-DE-E2 (hex) Espressif Inc. --C4DEE2 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- --68-B6-B3 (hex) Espressif Inc. --68B6B3 (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- --FC-A0-5A (hex) Oray.com co., LTD. --FCA05A (base 16) Oray.com co., LTD. -- 8008Rm, building No.1 GuoDing d. Yangpu District -- Shanghai Shanghai 200433 -- CN -- --84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD --84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD --14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --E0-CB-56 (hex) Shenzhen iComm Semiconductor CO.,LTD --E0CB56 (base 16) Shenzhen iComm Semiconductor CO.,LTD -- Room 601,Block B ,Digital Building,Garden City -- Shenzhen No.1079 Nanhai Road,Nanshan District 518067 -- CN -- --90-48-6C (hex) Ring LLC --90486C (base 16) Ring LLC -- 1523 26th St -- Santa Monica CA 90404 -- US -- --3C-82-C0 (hex) Technicolor CH USA Inc. --3C82C0 (base 16) Technicolor CH USA Inc. -- 5030 Sugarloaf Parkway Bldg 6 -- Lawrenceville GA 30044 -- US -+AC-B5-66 (hex) Renesas Electronics (Penang) Sdn. Bhd. -+ACB566 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -+ Phase 3, Bayan Lepas FIZ -+ Bayan Lepas Penang 11900 -+ MY - - 10-24-07 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 102407 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -@@ -152552,6 +152669,12 @@ D021AC (base 16) Yohana - Palo Alto CA 94304 - US - -+38-1F-26 (hex) IEEE Registration Authority -+381F26 (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ Piscataway NJ 08554 -+ US -+ - 7C-E1-52 (hex) THE GOODYEAR TIRE & RUBBER COMPANY - 7CE152 (base 16) THE GOODYEAR TIRE & RUBBER COMPANY - 200 Innovation Way -@@ -152570,17 +152693,17 @@ D021AC (base 16) Yohana - Mérignac 33700 - FR - --AC-B5-66 (hex) Renesas Electronics (Penang) Sdn. Bhd. --ACB566 (base 16) Renesas Electronics (Penang) Sdn. Bhd. -- Phase 3, Bayan Lepas FIZ -- Bayan Lepas Penang 11900 -- MY -+50-E6-36 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH -+50E636 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH -+ Alt-Moabit 95 -+ Berlin Berlin 10559 -+ DE - --38-1F-26 (hex) IEEE Registration Authority --381F26 (base 16) IEEE Registration Authority -- 445 Hoes Lane -- Piscataway NJ 08554 -- US -+78-20-BD (hex) Polysense (Beijing) Technologies Co. Ltd -+7820BD (base 16) Polysense (Beijing) Technologies Co. Ltd -+ 9  Shangdi 3rd Street, D508B3/5(4)F Bldg D, Haidian Dist. -+ Beijing 100085 -+ CN - - EC-21-25 (hex) Toshiba Corp. - EC2125 (base 16) Toshiba Corp. -@@ -152588,35 +152711,17 @@ EC2125 (base 16) Toshiba Corp. - Tokyo 105-8001 - JP - --00-E5-F1 (hex) BUFFALO.INC --00E5F1 (base 16) BUFFALO.INC -- AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku -- Nagoya Aichi Pref. 460-8315 -- JP -- --34-EE-2A (hex) ConMet --34EE2A (base 16) ConMet -- 5701 SE Columbia Way -- Vancouver WA 98661 -- US -- --50-E6-36 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH --50E636 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH -- Alt-Moabit 95 -- Berlin Berlin 10559 -- DE -- - 68-4E-05 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED - 684E05 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED - No.8, Litong Road, Liuyan Economic & Tec - Changsha HUNAN 410329 - CN - --78-20-BD (hex) Polysense (Beijing) Technologies Co. Ltd --7820BD (base 16) Polysense (Beijing) Technologies Co. Ltd -- 9  Shangdi 3rd Street, D508B3/5(4)F Bldg D, Haidian Dist. -- Beijing 100085 -- CN -+04-99-BB (hex) Apple, Inc. -+0499BB (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US - - F0-4D-D4 (hex) Sagemcom Broadband SAS - F04DD4 (base 16) Sagemcom Broadband SAS -@@ -152624,17 +152729,11 @@ F04DD4 (base 16) Sagemcom Broadband SAS - Rueil Malmaison Cedex hauts de seine 92848 - FR - --AC-29-29 (hex) Infinix mobility limited --AC2929 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- --5C-1B-F4 (hex) Apple, Inc. --5C1BF4 (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -+00-E5-F1 (hex) BUFFALO.INC -+00E5F1 (base 16) BUFFALO.INC -+ AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku -+ Nagoya Aichi Pref. 460-8315 -+ JP - - A8-51-AB (hex) Apple, Inc. - A851AB (base 16) Apple, Inc. -@@ -152642,35 +152741,17 @@ A851AB (base 16) Apple, Inc. - Cupertino CA 95014 - US - --3C-CE-0D (hex) Shenzhen juduoping Technology Co.,Ltd --3CCE0D (base 16) Shenzhen juduoping Technology Co.,Ltd -- Baoan Xin'an Streat -- Shenzhen 002052 -- CN -- --04-99-BB (hex) Apple, Inc. --0499BB (base 16) Apple, Inc. -+5C-1B-F4 (hex) Apple, Inc. -+5C1BF4 (base 16) Apple, Inc. - 1 Infinite Loop - Cupertino CA 95014 - US - --60-E9-AA (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. --60E9AA (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -- Nanning Guangxi 530007 -- CN -- --24-0F-5E (hex) Shenzhen z-router Technology Co., Ltd --240F5E (base 16) Shenzhen z-router Technology Co., Ltd -- 406,Block A,Taojindi Building ,Tenglong Road,Longhua New District, -- Shenzhen GuangDong 518000 -- CN -- --E8-3A-4B (hex) China Mobile Group Device Co.,Ltd. --E83A4B (base 16) China Mobile Group Device Co.,Ltd. -- 32 Xuanwumen West Street,Xicheng District -- Beijing 100053 -- CN -+34-EE-2A (hex) ConMet -+34EE2A (base 16) ConMet -+ 5701 SE Columbia Way -+ Vancouver WA 98661 -+ US - - 78-66-9D (hex) Hui Zhou Gaoshengda Technology Co.,LTD - 78669D (base 16) Hui Zhou Gaoshengda Technology Co.,LTD -@@ -152684,30 +152765,30 @@ E83A4B (base 16) China Mobile Group Device Co.,Ltd. - Delft 2628 XJ - NL - --00-0E-DD (hex) SHURE INCORPORATED --000EDD (base 16) SHURE INCORPORATED -- 5800 W. TOUHY AVE. -- NILES IL 60714 -- US -- --6C-97-6D (hex) Motorola Mobility LLC, a Lenovo Company --6C976D (base 16) Motorola Mobility LLC, a Lenovo Company -- 222 West Merchandise Mart Plaza -- Chicago IL 60654 -- US -- --64-11-A4 (hex) Motorola Mobility LLC, a Lenovo Company --6411A4 (base 16) Motorola Mobility LLC, a Lenovo Company -- 222 West Merchandise Mart Plaza -- Chicago IL 60654 -- US -- - 90-49-92 (hex) YSTen Technology Co.,Ltd - 904992 (base 16) YSTen Technology Co.,Ltd - Room 1715,17/F North Star Times Tower,Chaoyang District,Beijing. - Beijing 100101 - CN - -+AC-29-29 (hex) Infinix mobility limited -+AC2929 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ -+3C-CE-0D (hex) Shenzhen juduoping Technology Co.,Ltd -+3CCE0D (base 16) Shenzhen juduoping Technology Co.,Ltd -+ Baoan Xin'an Streat -+ Shenzhen 002052 -+ CN -+ -+00-0E-DD (hex) SHURE INCORPORATED -+000EDD (base 16) SHURE INCORPORATED -+ 5800 W. TOUHY AVE. -+ NILES IL 60714 -+ US -+ - 18-FD-74 (hex) Routerboard.com - 18FD74 (base 16) Routerboard.com - Mikrotikls SIA -@@ -152738,6 +152819,42 @@ E4902A (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - -+E8-3A-4B (hex) China Mobile Group Device Co.,Ltd. -+E83A4B (base 16) China Mobile Group Device Co.,Ltd. -+ 32 Xuanwumen West Street,Xicheng District -+ Beijing 100053 -+ CN -+ -+60-E9-AA (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+60E9AA (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD. -+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China -+ Nanning Guangxi 530007 -+ CN -+ -+24-0F-5E (hex) Shenzhen z-router Technology Co., Ltd -+240F5E (base 16) Shenzhen z-router Technology Co., Ltd -+ 406,Block A,Taojindi Building ,Tenglong Road,Longhua New District, -+ Shenzhen GuangDong 518000 -+ CN -+ -+6C-97-6D (hex) Motorola Mobility LLC, a Lenovo Company -+6C976D (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+64-11-A4 (hex) Motorola Mobility LLC, a Lenovo Company -+6411A4 (base 16) Motorola Mobility LLC, a Lenovo Company -+ 222 West Merchandise Mart Plaza -+ Chicago IL 60654 -+ US -+ -+10-F0-68 (hex) Ruckus Wireless -+10F068 (base 16) Ruckus Wireless -+ 350 West Java Drive -+ Sunnyvale CA 94089 -+ US -+ - F0-87-7F (hex) Magnetar Technology Shenzhen Co., LTD. - F0877F (base 16) Magnetar Technology Shenzhen Co., LTD. - Room211, Building1, No.26 Puzai Road, Pingdi Longgang -@@ -152756,10 +152873,10 @@ C8D6B7 (base 16) Solidigm Technology - Longmont CO 80501 - US - --10-F0-68 (hex) Ruckus Wireless --10F068 (base 16) Ruckus Wireless -- 350 West Java Drive -- Sunnyvale CA 94089 -+60-5B-30 (hex) Dell Inc. -+605B30 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 - US - - 44-3C-9C (hex) Pintsch GmbH -@@ -152768,18 +152885,6 @@ C8D6B7 (base 16) Solidigm Technology - Dinslaken 46537 - DE - --20-64-DE (hex) Sunitec Enterprise Co.,Ltd --2064DE (base 16) Sunitec Enterprise Co.,Ltd -- 3F.,No.98-1,Mincyuan Rd.Sindian City -- Taipei County 231 231141 -- CN -- --A4-0F-98 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD --A40F98 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -- NO.18 HAIBIN ROAD, -- DONG GUAN GUANG DONG 523860 -- CN -- - D8-80-DC (hex) Huawei Device Co., Ltd. - D880DC (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -152810,6 +152915,12 @@ F46C68 (base 16) Wistron Neweb Corporation - shenzhen guangdong 518057 - CN - -+20-64-DE (hex) Sunitec Enterprise Co.,Ltd -+2064DE (base 16) Sunitec Enterprise Co.,Ltd -+ 3F.,No.98-1,Mincyuan Rd.Sindian City -+ Taipei County 231 231141 -+ CN -+ - 74-B7-25 (hex) Huawei Device Co., Ltd. - 74B725 (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -152822,6 +152933,12 @@ F46C68 (base 16) Wistron Neweb Corporation - Dongguan Guangdong 523808 - CN - -+A4-0F-98 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+A40F98 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD -+ NO.18 HAIBIN ROAD, -+ DONG GUAN GUANG DONG 523860 -+ CN -+ - BC-44-34 (hex) Shenzhen TINNO Mobile Technology Corp. - BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. - Building, No.33, Xiandong Rd, Xili -@@ -152834,12 +152951,6 @@ BC4434 (base 16) Shenzhen TINNO Mobile Technology Corp. - Minato-ku Tokyo 108-0075 - JP - --60-5B-30 (hex) Dell Inc. --605B30 (base 16) Dell Inc. -- One Dell Way -- Round Rock TX 78682 -- US -- - 34-AC-11 (hex) China Mobile Group Device Co.,Ltd. - 34AC11 (base 16) China Mobile Group Device Co.,Ltd. - 32 Xuanwumen West Street,Xicheng District -@@ -152912,24 +153023,6 @@ DC71DD (base 16) AX Technologies - Singapore 556741 - SG - --3C-69-D1 (hex) ADC Automotive Distance Control System GmbH --3C69D1 (base 16) ADC Automotive Distance Control System GmbH -- Peter-Dornier Strasse 10 -- Lindau Bavaria 88131 -- DE -- --04-BA-D6 (hex) D-Link Corporation --04BAD6 (base 16) D-Link Corporation -- No.289, Sinhu 3rd Rd., Neihu District, -- Taipei City 114 -- TW -- --30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA --303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA -- JL.PALEM 1 BLOK DS-6 -- KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 -- ID -- - 30-7F-10 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - 307F10 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - NO.18 HAIBIN ROAD, -@@ -152954,23 +153047,35 @@ B0FBDD (base 16) Shenzhen SuperElectron Technology Co.,Ltd. - Shenzhen Guangdong 518000 - CN - -+3C-69-D1 (hex) ADC Automotive Distance Control System GmbH -+3C69D1 (base 16) ADC Automotive Distance Control System GmbH -+ Peter-Dornier Strasse 10 -+ Lindau Bavaria 88131 -+ DE -+ - E0-9C-8D (hex) Seakeeper, Inc. - E09C8D (base 16) Seakeeper, Inc. - 45310 Abell House Lane Suite 350 - California MD 20619 - US - -+04-BA-D6 (hex) D-Link Corporation -+04BAD6 (base 16) D-Link Corporation -+ No.289, Sinhu 3rd Rd., Neihu District, -+ Taipei City 114 -+ TW -+ - 34-3A-20 (hex) Aruba, a Hewlett Packard Enterprise Company - 343A20 (base 16) Aruba, a Hewlett Packard Enterprise Company - 3333 Scott Blvd - Santa Clara CA 95054 - US - --7C-0C-92 (hex) Suzhou Mobydata Smart System Co.,Ltd. --7C0C92 (base 16) Suzhou Mobydata Smart System Co.,Ltd. -- 3f,building E,Yida science Park,No.11 Jinpu Road,SIP,Suzhou,Jiangsu,China -- Suzhou Jingsu 215000 -- CN -+30-3F-5D (hex) PT HAN SUNG ELECTORONICS INDONESIA -+303F5D (base 16) PT HAN SUNG ELECTORONICS INDONESIA -+ JL.PALEM 1 BLOK DS-6 -+ KAWASAN INDUSTRI BATIK LIPPO CIKARANG, DESA CIBATU, KECAMATAN CIKARANG SELATAN BEKASI JAWA BARAT 17550 -+ ID - - 18-E9-1D (hex) HUAWEI TECHNOLOGIES CO.,LTD - 18E91D (base 16) HUAWEI TECHNOLOGIES CO.,LTD -@@ -152990,12 +153095,6 @@ F46ADD (base 16) Liteon Technology Corporation - New Taipei City Taiwan 23585 - TW - --98-D7-42 (hex) Samsung Electronics Co.,Ltd --98D742 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- - C8-2A-F1 (hex) TCT mobile ltd - C82AF1 (base 16) TCT mobile ltd - No.86 hechang 7th road, zhongkai, Hi-Tech District -@@ -153014,12 +153113,60 @@ A842E3 (base 16) Espressif Inc. - Shanghai Shanghai 201203 - CN - -+7C-0C-92 (hex) Suzhou Mobydata Smart System Co.,Ltd. -+7C0C92 (base 16) Suzhou Mobydata Smart System Co.,Ltd. -+ 3f,building E,Yida science Park,No.11 Jinpu Road,SIP,Suzhou,Jiangsu,China -+ Suzhou Jingsu 215000 -+ CN -+ - 04-26-05 (hex) Bosch Building Automation GmbH - 042605 (base 16) Bosch Building Automation GmbH - Kapellenweg 42 - Verl 33415 - DE - -+3C-FE-AC (hex) Cisco Systems, Inc -+3CFEAC (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+04-A7-41 (hex) Cisco Systems, Inc -+04A741 (base 16) Cisco Systems, Inc -+ 80 West Tasman Drive -+ San Jose CA 94568 -+ US -+ -+A0-88-9D (hex) Huawei Device Co., Ltd. -+A0889D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ -+98-D7-42 (hex) Samsung Electronics Co.,Ltd -+98D742 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+D4-9B-74 (hex) Kinetic Technologies -+D49B74 (base 16) Kinetic Technologies -+ 6399 San Ignacio Ave #250 -+ San Jose CA 95119 -+ US -+ -+40-F8-DF (hex) CANON INC. -+40F8DF (base 16) CANON INC. -+ 30-2 Shimomaruko 3-chome, -+ Ohta-ku Tokyo 146-8501 -+ JP -+ -+20-47-ED (hex) SKY UK LIMITED -+2047ED (base 16) SKY UK LIMITED -+ 130 Kings Road -+ Brentwood Essex 08854 -+ GB -+ - A0-BD-CD (hex) SKY UK LIMITED - A0BDCD (base 16) SKY UK LIMITED - 130 Kings Road -@@ -153056,42 +153203,6 @@ A0BDCD (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - --3C-FE-AC (hex) Cisco Systems, Inc --3CFEAC (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --04-A7-41 (hex) Cisco Systems, Inc --04A741 (base 16) Cisco Systems, Inc -- 80 West Tasman Drive -- San Jose CA 94568 -- US -- --A0-88-9D (hex) Huawei Device Co., Ltd. --A0889D (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- --D4-9B-74 (hex) Kinetic Technologies --D49B74 (base 16) Kinetic Technologies -- 6399 San Ignacio Ave #250 -- San Jose CA 95119 -- US -- --20-47-ED (hex) SKY UK LIMITED --2047ED (base 16) SKY UK LIMITED -- 130 Kings Road -- Brentwood Essex 08854 -- GB -- --40-F8-DF (hex) CANON INC. --40F8DF (base 16) CANON INC. -- 30-2 Shimomaruko 3-chome, -- Ohta-ku Tokyo 146-8501 -- JP -- - F4-6B-8C (hex) Hon Hai Precision Industry Co., Ltd. - F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen -@@ -153104,12 +153215,6 @@ F46B8C (base 16) Hon Hai Precision Industry Co., Ltd. - Calamba Lot 1 - PH - --F4-3B-D8 (hex) Intel Corporate --F43BD8 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - 7C-67-AB (hex) Roku, Inc - 7C67AB (base 16) Roku, Inc - 1155 Coleman Ave -@@ -153122,6 +153227,18 @@ F43BD8 (base 16) Intel Corporate - Piscataway NJ 08554 - US - -+F4-3B-D8 (hex) Intel Corporate -+F43BD8 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+C8-4B-D6 (hex) Dell Inc. -+C84BD6 (base 16) Dell Inc. -+ One Dell Way -+ Round Rock TX 78682 -+ US -+ - E0-86-14 (hex) Novatel Wireless Solutions, Inc. - E08614 (base 16) Novatel Wireless Solutions, Inc. - 9710 Scranton Rd., Suite 200 -@@ -153134,18 +153251,6 @@ A8DE68 (base 16) Beijing Wide Technology Co.,Ltd - Beijing Beijing 100000 - CN - --3C-4E-56 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD --3C4E56 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -- Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China -- SHENZHEN GUANGDONG 518057 -- CN -- --C8-4B-D6 (hex) Dell Inc. --C84BD6 (base 16) Dell Inc. -- One Dell Way -- Round Rock TX 78682 -- US -- - 6C-30-2A (hex) Texas Instruments - 6C302A (base 16) Texas Instruments - 12500 TI Blvd -@@ -153158,12 +153263,6 @@ C84BD6 (base 16) Dell Inc. - Dallas TX 75243 - US - --08-B6-1F (hex) Espressif Inc. --08B61F (base 16) Espressif Inc. -- Room 204, Building 2, 690 Bibo Rd, Pudong New Area -- Shanghai Shanghai 201203 -- CN -- - 94-4E-5B (hex) Ubee Interactive Co., Limited - 944E5B (base 16) Ubee Interactive Co., Limited - Flat/RM 1202, 12/F, AT Tower, 180 Electric Road -@@ -153200,10 +153299,16 @@ FC6179 (base 16) IEEE Registration Authority - Piscataway NJ 08554 - US - --4C-72-74 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd --4C7274 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -- Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -- ShenZHEN GuangDong 518104 -+3C-4E-56 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+3C4E56 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD -+ Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China -+ SHENZHEN GUANGDONG 518057 -+ CN -+ -+08-B6-1F (hex) Espressif Inc. -+08B61F (base 16) Espressif Inc. -+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area -+ Shanghai Shanghai 201203 - CN - - 98-A2-C0 (hex) Cisco Systems, Inc -@@ -153218,6 +153323,12 @@ EC74D7 (base 16) Grandstream Networks Inc - boston MA 02215 - US - -+4C-72-74 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd -+4C7274 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd -+ Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -+ ShenZHEN GuangDong 518104 -+ CN -+ - 30-63-71 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd - 306371 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd - Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China -@@ -153236,24 +153347,6 @@ EC74D7 (base 16) Grandstream Networks Inc - shenzhen guangdong 518057 - CN - --5C-3E-1B (hex) Apple, Inc. --5C3E1B (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- --7C-2A-CA (hex) Apple, Inc. --7C2ACA (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- --28-8E-EC (hex) Apple, Inc. --288EEC (base 16) Apple, Inc. -- 1 Infinite Loop -- Cupertino CA 95014 -- US -- - A0-8C-F2 (hex) YINUOLINK CO.,LTD - A08CF2 (base 16) YINUOLINK CO.,LTD - 3F, Bldg 5, Gaoxinjian Industrial Park, Fuyuan 1st Road, Heping, Fuhai, Bao'an -@@ -153278,22 +153371,22 @@ F4931C (base 16) Universal Electronics, Inc. - Santa Ana CA 92707 - US - --C8-84-8C (hex) Ruckus Wireless --C8848C (base 16) Ruckus Wireless -- 350 West Java Drive -- Sunnyvale CA 94089 -+5C-3E-1B (hex) Apple, Inc. -+5C3E1B (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 - US - --B0-78-39 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. --B07839 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. -- Midea Global Innovation Center,Beijiao Town,Shunde -- Foshan Guangdong 528311 -- CN -+7C-2A-CA (hex) Apple, Inc. -+7C2ACA (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 -+ US - --74-9E-75 (hex) Aruba, a Hewlett Packard Enterprise Company --749E75 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -+28-8E-EC (hex) Apple, Inc. -+288EEC (base 16) Apple, Inc. -+ 1 Infinite Loop -+ Cupertino CA 95014 - US - - E0-5A-1B (hex) Espressif Inc. -@@ -153314,12 +153407,6 @@ CCBA6F (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --78-5C-5E (hex) HUAWEI TECHNOLOGIES CO.,LTD --785C5E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -- - 98-81-8A (hex) Huawei Device Co., Ltd. - 98818A (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -153344,18 +153431,84 @@ B4C2F7 (base 16) Huawei Device Co., Ltd. - Shenzhen Guangdong 518000 - CN - -+70-11-0E (hex) zte corporation -+70110E (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ -+78-5C-5E (hex) HUAWEI TECHNOLOGIES CO.,LTD -+785C5E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ -+C8-84-8C (hex) Ruckus Wireless -+C8848C (base 16) Ruckus Wireless -+ 350 West Java Drive -+ Sunnyvale CA 94089 -+ US -+ -+B0-78-39 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd. -+B07839 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd. -+ Midea Global Innovation Center,Beijiao Town,Shunde -+ Foshan Guangdong 528311 -+ CN -+ -+74-9E-75 (hex) Aruba, a Hewlett Packard Enterprise Company -+749E75 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ - F4-1C-71 (hex) SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD - F41C71 (base 16) SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD - 17/F,Block 1A,Software Industry Base, XueFu Road,Nanshan District, - Shenzhen GuangDong 518100 - CN - --70-11-0E (hex) zte corporation --70110E (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+00-25-DF (hex) Taser International Inc. -+0025DF (base 16) Taser International Inc. -+ 17800 N 85th St. -+ Scottsdale AZ 85255 -+ US -+ -+E8-86-CF (hex) Nokia -+E886CF (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+34-38-AF (hex) Inlab Networks GmbH -+3438AF (base 16) Inlab Networks GmbH -+ Josef-Wuerth-Str. 3 -+ Gruenwald Bavaria 82031 -+ DE -+ -+D8-F5-07 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+D8F507 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - -+C4-EF-DA (hex) Honeywell -+C4EFDA (base 16) Honeywell -+ 9680 Old Bailes Rd, Fort Mill, SC 29707 -+ Fort Mill SC 29707 -+ US -+ -+08-CB-E5 (hex) R3 Solutions GmbH -+08CBE5 (base 16) R3 Solutions GmbH -+ Kurfürstendamm 21 -+ Berlin 10719 -+ DE -+ -+D8-54-82 (hex) Oxit, LLC -+D85482 (base 16) Oxit, LLC -+ 3131 Westinghouse Blvd -+ Charlotte NC 28273 -+ US -+ - 7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. - 7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. - NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE -@@ -154136,9 +154289,6 @@ D8D090 (base 16) Dell Inc. - Nagoya Aichi Pref. 460-8315 - JP - --00-84-ED (hex) Private --0084ED (base 16) Private -- - E0-02-A5 (hex) ABB Robotics - E002A5 (base 16) ABB Robotics - Hydrovägen 10 -@@ -190529,18 +190679,6 @@ BC6193 (base 16) Xiaomi Communications Co Ltd - Beijing Haidian District 100085 - CN - --94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd --947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -- CN -- --C8-54-A4 (hex) Infinix mobility limited --C854A4 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- - EC-71-DB (hex) Reolink Innovation Limited - EC71DB (base 16) Reolink Innovation Limited - 705,7/F,FA YUEN COMMERCIAL BUILDING,75-77 FA YUEN STREET -@@ -190559,6 +190697,12 @@ F8E57E (base 16) Cisco Systems, Inc - Seoul Seocho-Gu #137-902 - KR - -+94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 -+ CN -+ - 38-5B-44 (hex) Silicon Laboratories - 385B44 (base 16) Silicon Laboratories - 400 West Cesar Chavez Street -@@ -190601,12 +190745,6 @@ EC6073 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Shenzhen Guangdong 518057 - CN - --74-DD-CB (hex) China Leadshine Technology Co.,Ltd --74DDCB (base 16) China Leadshine Technology Co.,Ltd -- 9-11, Building A3, Nanshan Ipark, No.1001 Xueyuan Avenue, Nanshan? -- SHENZHEN 518000 -- CN -- - 10-4D-15 (hex) Viaanix Inc - 104D15 (base 16) Viaanix Inc - 434 N Main St. -@@ -190619,6 +190757,18 @@ EC6073 (base 16) TP-LINK TECHNOLOGIES CO.,LTD. - Shenzhen Nanshan District 518000 - CN - -+C8-54-A4 (hex) Infinix mobility limited -+C854A4 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK -+ -+A0-09-2E (hex) zte corporation -+A0092E (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 -+ CN -+ - B0-AF-F7 (hex) Shenzhen Yipingfang Network Technology Co., Ltd. - B0AFF7 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. - 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China -@@ -190637,18 +190787,12 @@ B0AFF7 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd. - Changsha HUNAN 410329 - CN - --A0-09-2E (hex) zte corporation --A0092E (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -+74-DD-CB (hex) China Leadshine Technology Co.,Ltd -+74DDCB (base 16) China Leadshine Technology Co.,Ltd -+ 9-11, Building A3, Nanshan Ipark, No.1001 Xueyuan Avenue, Nanshan? -+ SHENZHEN 518000 - CN - --14-75-5B (hex) Intel Corporate --14755B (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - A8-B1-3B (hex) HP Inc. - A8B13B (base 16) HP Inc. - 10300 Energy Dr -@@ -190667,12 +190811,6 @@ C43875 (base 16) Sonos, Inc. - Reno NV 89507 - US - --20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd --20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -- 4F,Block A, Skyworth?Building, -- Shenzhen Guangdong 518057 -- CN -- - DC-A9-56 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - DCA956 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - NO.18 HAIBIN ROAD, -@@ -190691,12 +190829,24 @@ BCD206 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --CC-82-7F (hex) Advantech Technology (CHINA) Co., Ltd. --CC827F (base 16) Advantech Technology (CHINA) Co., Ltd. -- No.666, Han-Pu Rd. Yu-Shan -- Kun-Shan Jiang Su 215316 -+20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd -+20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd -+ 4F,Block A, Skyworth?Building, -+ Shenzhen Guangdong 518057 - CN - -+14-75-5B (hex) Intel Corporate -+14755B (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ -+F4-E2-04 (hex) COYOTE SYSTEM -+F4E204 (base 16) COYOTE SYSTEM -+ 1, rue Royale -+ Saint-Cloud 92210 -+ FR -+ - F8-4E-58 (hex) Samsung Electronics Co.,Ltd - F84E58 (base 16) Samsung Electronics Co.,Ltd - 129, Samsung-ro, Youngtongl-Gu -@@ -190709,29 +190859,11 @@ B47064 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --4C-2E-5E (hex) Samsung Electronics Co.,Ltd --4C2E5E (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- --64-5D-F4 (hex) Samsung Electronics Co.,Ltd --645DF4 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- --D8-10-68 (hex) Murata Manufacturing Co., Ltd. --D81068 (base 16) Murata Manufacturing Co., Ltd. -- 1-10-1, Higashikotari -- Nagaokakyo-shi Kyoto 617-8555 -- JP -- --5C-04-5A (hex) Company NA Stage & Light --5C045A (base 16) Company NA Stage & Light -- Lambertu 9 -- M?rupe LV-2167 -- LV -+CC-82-7F (hex) Advantech Technology (CHINA) Co., Ltd. -+CC827F (base 16) Advantech Technology (CHINA) Co., Ltd. -+ No.666, Han-Pu Rd. Yu-Shan -+ Kun-Shan Jiang Su 215316 -+ CN - - 88-3F-0C (hex) system a.v. co., ltd. - 883F0C (base 16) system a.v. co., ltd. -@@ -190751,11 +190883,17 @@ C8BE35 (base 16) Extreme Networks, Inc. - Kulim Kedah 09000 - MY - --F4-E2-04 (hex) COYOTE SYSTEM --F4E204 (base 16) COYOTE SYSTEM -- 1, rue Royale -- Saint-Cloud 92210 -- FR -+D8-10-68 (hex) Murata Manufacturing Co., Ltd. -+D81068 (base 16) Murata Manufacturing Co., Ltd. -+ 1-10-1, Higashikotari -+ Nagaokakyo-shi Kyoto 617-8555 -+ JP -+ -+5C-04-5A (hex) Company NA Stage & Light -+5C045A (base 16) Company NA Stage & Light -+ Lambertu 9 -+ M?rupe LV-2167 -+ LV - - 58-C3-56 (hex) EM Microelectronic - 58C356 (base 16) EM Microelectronic -@@ -190781,11 +190919,17 @@ CCDD58 (base 16) Robert Bosch GmbH - Stuttgart 70499 - DE - --D4-E0-53 (hex) Aruba, a Hewlett Packard Enterprise Company --D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company -- 3333 Scott Blvd -- Santa Clara CA 95054 -- US -+4C-2E-5E (hex) Samsung Electronics Co.,Ltd -+4C2E5E (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ -+64-5D-F4 (hex) Samsung Electronics Co.,Ltd -+645DF4 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR - - 88-FC-5D (hex) Cisco Systems, Inc - 88FC5D (base 16) Cisco Systems, Inc -@@ -190817,11 +190961,11 @@ F4C88A (base 16) Intel Corporate - Beijing 100053 - CN - --50-28-4A (hex) Intel Corporate --50284A (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+D4-E0-53 (hex) Aruba, a Hewlett Packard Enterprise Company -+D4E053 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US - - 5C-A4-F4 (hex) zte corporation - 5CA4F4 (base 16) zte corporation -@@ -190835,11 +190979,11 @@ F4C88A (base 16) Intel Corporate - kakuda-City Miyagi-Pref 981-1595 - JP - --24-6C-60 (hex) Huawei Device Co., Ltd. --246C60 (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -+50-28-4A (hex) Intel Corporate -+50284A (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY - - 98-C9-7C (hex) Shenzhen iComm Semiconductor CO.,LTD - 98C97C (base 16) Shenzhen iComm Semiconductor CO.,LTD -@@ -190847,11 +190991,11 @@ F4C88A (base 16) Intel Corporate - Shenzhen No.1079 Nanhai Road,Nanshan District 518067 - CN - --30-3E-A7 (hex) Intel Corporate --303EA7 (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -+24-6C-60 (hex) Huawei Device Co., Ltd. -+246C60 (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN - - 28-A3-31 (hex) Sierra Wireless - 28A331 (base 16) Sierra Wireless -@@ -190859,6 +191003,12 @@ F4C88A (base 16) Intel Corporate - Richmond BC V6V 3A4 - CA - -+18-34-AF (hex) Kaonmedia CO., LTD. -+1834AF (base 16) Kaonmedia CO., LTD. -+ 884-3, Seongnam-daero, Bundang-gu -+ Seongnam-si Gyeonggi-do 13517 -+ KR -+ - EC-62-60 (hex) Espressif Inc. - EC6260 (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -190871,23 +191021,23 @@ B06E72 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Chongqing China 401120 - CN - -+30-3E-A7 (hex) Intel Corporate -+303EA7 (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 60-7D-09 (hex) Luxshare Precision Industry Co., Ltd - 607D09 (base 16) Luxshare Precision Industry Co., Ltd - 2nd floor,A building,Sanyo New Industrial Area,West Area of Maoyi, Shajing Street,Bao'an District - Shenzhen City Guangdong Province 518100 - CN - --18-34-AF (hex) Kaonmedia CO., LTD. --1834AF (base 16) Kaonmedia CO., LTD. -- 884-3, Seongnam-daero, Bundang-gu -- Seongnam-si Gyeonggi-do 13517 -- KR -- --28-82-7C (hex) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch --28827C (base 16) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -- No.17 Longmen Road -- Changzhou JiangSu 213164 -- CN -+CC-3E-79 (hex) ARRIS Group, Inc. -+CC3E79 (base 16) ARRIS Group, Inc. -+ 6450 Sequence Drive -+ San Diego CA 92121 -+ US - - 28-F5-D1 (hex) ARRIS Group, Inc. - 28F5D1 (base 16) ARRIS Group, Inc. -@@ -190901,6 +191051,12 @@ B06E72 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - San Diego CA 92121 - US - -+28-82-7C (hex) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+28827C (base 16) Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch -+ No.17 Longmen Road -+ Changzhou JiangSu 213164 -+ CN -+ - 90-D4-73 (hex) vivo Mobile Communication Co., Ltd. - 90D473 (base 16) vivo Mobile Communication Co., Ltd. - No.1, vivo Road, Chang'an -@@ -190913,30 +191069,6 @@ B06E72 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Dongguan 523808 - CN - --CC-3E-79 (hex) ARRIS Group, Inc. --CC3E79 (base 16) ARRIS Group, Inc. -- 6450 Sequence Drive -- San Diego CA 92121 -- US -- --00-16-A3 (hex) INGETEAM --0016A3 (base 16) INGETEAM -- Parque Tecnologico de Bizkaia, Edificio 110 -- Zamudio Bizkaia 48170 -- ES -- --F0-6C-5D (hex) Xiaomi Communications Co Ltd --F06C5D (base 16) Xiaomi Communications Co Ltd -- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -- Beijing Haidian District 100085 -- CN -- --24-CF-24 (hex) Beijing Xiaomi Mobile Software Co., Ltd --24CF24 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -- The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -- Beijing Beijing 100085 -- CN -- - C8-F0-9E (hex) Espressif Inc. - C8F09E (base 16) Espressif Inc. - Room 204, Building 2, 690 Bibo Rd, Pudong New Area -@@ -190955,16 +191087,16 @@ DC5475 (base 16) Espressif Inc. - San Francisco 94158 - US - --28-6F-40 (hex) Tonly Technology Co. Ltd --286F40 (base 16) Tonly Technology Co. Ltd -- Section 37, Zhongkai Hi-Tech Development Zone -- Huizhou Guangdong 516006 -- CN -+00-16-A3 (hex) INGETEAM -+0016A3 (base 16) INGETEAM -+ Parque Tecnologico de Bizkaia, Edificio 110 -+ Zamudio Bizkaia 48170 -+ ES - --0C-86-C7 (hex) Jabil Circuit (Guangzhou) Limited --0C86C7 (base 16) Jabil Circuit (Guangzhou) Limited -- Huangpu 128, JunCheng Road -- GuangZhou Guangdong 510530 -+24-CF-24 (hex) Beijing Xiaomi Mobile Software Co., Ltd -+24CF24 (base 16) Beijing Xiaomi Mobile Software Co., Ltd -+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District -+ Beijing Beijing 100085 - CN - - 1C-0D-7D (hex) Apple, Inc. -@@ -190985,6 +191117,48 @@ DC5475 (base 16) Espressif Inc. - Cupertino CA 95014 - US - -+F0-6C-5D (hex) Xiaomi Communications Co Ltd -+F06C5D (base 16) Xiaomi Communications Co Ltd -+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road -+ Beijing Haidian District 100085 -+ CN -+ -+40-B0-2F (hex) Miele & Cie. KG -+40B02F (base 16) Miele & Cie. KG -+ Carl-Miele-Straße 29 -+ Gütersloh 33332 -+ DE -+ -+18-66-F0 (hex) Jupiter Systems -+1866F0 (base 16) Jupiter Systems -+ 31015 Huntwood Ave -+ Hayward CA 94544-7007 -+ US -+ -+74-60-4C (hex) RØDE -+74604C (base 16) RØDE -+ 107 Carnarvon St -+ Silverwater NSW 2128 -+ AU -+ -+28-6F-40 (hex) Tonly Technology Co. Ltd -+286F40 (base 16) Tonly Technology Co. Ltd -+ Section 37, Zhongkai Hi-Tech Development Zone -+ Huizhou Guangdong 516006 -+ CN -+ -+BC-C7-DA (hex) Earda Technologies co Ltd -+BCC7DA (base 16) Earda Technologies co Ltd -+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -+ Guangzhou Guangdong 511455 -+ CN -+ -+0C-86-C7 (hex) Jabil Circuit (Guangzhou) Limited -+0C86C7 (base 16) Jabil Circuit (Guangzhou) Limited -+ Huangpu 128, JunCheng Road -+ GuangZhou Guangdong 510530 -+ CN -+ - 14-94-6C (hex) Apple, Inc. - 14946C (base 16) Apple, Inc. - 1 Infinite Loop -@@ -190997,17 +191171,11 @@ DC5475 (base 16) Espressif Inc. - Piscataway NJ 08554 - US - --74-60-4C (hex) RØDE --74604C (base 16) RØDE -- 107 Carnarvon St -- Silverwater NSW 2128 -- AU -- --40-B0-2F (hex) Miele & Cie. KG --40B02F (base 16) Miele & Cie. KG -- Carl-Miele-Straße 29 -- Gütersloh 33332 -- DE -+58-00-32 (hex) Genexis B.V. -+580032 (base 16) Genexis B.V. -+ Lodewijkstraat 1A -+ Eindhoven 5652AC -+ NL - - B4-7D-76 (hex) KNS Group LLC - B47D76 (base 16) KNS Group LLC -@@ -191021,6 +191189,18 @@ C0AD97 (base 16) TECNO MOBILE LIMITED - Hong Kong Hong Kong 999077 - HK - -+B0-38-E2 (hex) Wanan Hongsheng Electronic Co.Ltd -+B038E2 (base 16) Wanan Hongsheng Electronic Co.Ltd -+ 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province -+ Wanan China/jiangxi 343800 -+ CN -+ -+4C-53-69 (hex) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+4C5369 (base 16) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -+ No.8,Gang’an 2nd Road,Jiangbei District,Chongqing,P.R.China -+ ChongQing ChongQing 400025 -+ CN -+ - 70-A9-83 (hex) Cisco Systems, Inc - 70A983 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -191033,16 +191213,22 @@ BCFAEB (base 16) Cisco Systems, Inc - San Jose CA 94568 - US - --18-66-F0 (hex) Jupiter Systems --1866F0 (base 16) Jupiter Systems -- 31015 Huntwood Ave -- Hayward CA 94544-7007 -- US -+74-76-7D (hex) shenzhen kexint technology co.,ltd -+74767D (base 16) shenzhen kexint technology co.,ltd -+ 5th Floor, Building 2, Chunhu Industrial Park, Dongshen Road, Pinghu Street, Longgang District, Shenzhen City -+ shenzhen guangdong 518000 -+ CN - --BC-C7-DA (hex) Earda Technologies co Ltd --BCC7DA (base 16) Earda Technologies co Ltd -- Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District -- Guangzhou Guangdong 511455 -+E0-48-D8 (hex) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+E048D8 (base 16) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -+ Room 1407, Fuli yingkai building, No. 16, Huaxia Road, Tianhe District, -+ Guangzhou 510623 -+ CN -+ -+F8-E4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD -+F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -+ No.5 DongXin Road -+ Wuhan Hubei 430074 - CN - - 84-85-53 (hex) Biznes Systema Telecom, LLC -@@ -191051,12 +191237,6 @@ BCC7DA (base 16) Earda Technologies co Ltd - Moscow 121087 - RU - --58-00-32 (hex) Genexis B.V. --580032 (base 16) Genexis B.V. -- Lodewijkstraat 1A -- Eindhoven 5652AC -- NL -- - D8-88-63 (hex) HUAWEI TECHNOLOGIES CO.,LTD - D88863 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -191075,36 +191255,6 @@ C03E50 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Dongguan 523808 - CN - --4C-53-69 (hex) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd --4C5369 (base 16) YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd -- No.8,Gang’an 2nd Road,Jiangbei District,Chongqing,P.R.China -- ChongQing ChongQing 400025 -- CN -- --74-76-7D (hex) shenzhen kexint technology co.,ltd --74767D (base 16) shenzhen kexint technology co.,ltd -- 5th Floor, Building 2, Chunhu Industrial Park, Dongshen Road, Pinghu Street, Longgang District, Shenzhen City -- shenzhen guangdong 518000 -- CN -- --B0-38-E2 (hex) Wanan Hongsheng Electronic Co.Ltd --B038E2 (base 16) Wanan Hongsheng Electronic Co.Ltd -- 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province -- Wanan China/jiangxi 343800 -- CN -- --E0-48-D8 (hex) Guangzhi Wulian Technology(Guangzhou) Co., Ltd --E048D8 (base 16) Guangzhi Wulian Technology(Guangzhou) Co., Ltd -- Room 1407, Fuli yingkai building, No. 16, Huaxia Road, Tianhe District, -- Guangzhou 510623 -- CN -- --F8-E4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD --F8E4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD -- No.5 DongXin Road -- Wuhan Hubei 430074 -- CN -- - A0-C9-8B (hex) Nokia Solutions and Networks GmbH & Co. KG - A0C98B (base 16) Nokia Solutions and Networks GmbH & Co. KG - Werinherstrasse 91 -@@ -191117,18 +191267,6 @@ A0C98B (base 16) Nokia Solutions and Networks GmbH & Co. KG - Dongguan Guangdong 523808 - CN - --B8-F0-B9 (hex) zte corporation --B8F0B9 (base 16) zte corporation -- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -- shenzhen guangdong 518057 -- CN -- --80-5B-65 (hex) LG Innotek --805B65 (base 16) LG Innotek -- 26, Hanamsandan 5beon-ro -- Gwangju Gwangsan-gu 506-731 -- KR -- - 4C-9D-22 (hex) ACES Co.,Ltd - 4C9D22 (base 16) ACES Co.,Ltd - TianGong Avenue #916, Tianfu New Area -@@ -191141,22 +191279,28 @@ B8F0B9 (base 16) zte corporation - Shinagawa-ku Tokyo 141-8610 - JP - --00-73-8D (hex) Shenzhen TINNO Mobile Technology Corp. --00738D (base 16) Shenzhen TINNO Mobile Technology Corp. -- Building, No.33, Xiandong Rd, Xili -- Nanshan District, Shenzhen PRC 518053 -+B8-F0-B9 (hex) zte corporation -+B8F0B9 (base 16) zte corporation -+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China -+ shenzhen guangdong 518057 - CN - -+80-5B-65 (hex) LG Innotek -+805B65 (base 16) LG Innotek -+ 26, Hanamsandan 5beon-ro -+ Gwangju Gwangsan-gu 506-731 -+ KR -+ - D4-43-0E (hex) Zhejiang Dahua Technology Co., Ltd. - D4430E (base 16) Zhejiang Dahua Technology Co., Ltd. - No.1199,Waterfront Road - Hangzhou Zhejiang 310053 - CN - --F8-5E-0B (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. --F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -- No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -- Chongqing China 401120 -+00-73-8D (hex) Shenzhen TINNO Mobile Technology Corp. -+00738D (base 16) Shenzhen TINNO Mobile Technology Corp. -+ Building, No.33, Xiandong Rd, Xili -+ Nanshan District, Shenzhen PRC 518053 - CN - - 44-D3-AD (hex) Shenzhen TINNO Mobile Technology Corp. -@@ -191165,30 +191309,18 @@ F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. - Nanshan District, Shenzhen PRC 518053 - CN - -+F8-5E-0B (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+F85E0B (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd. -+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing. -+ Chongqing China 401120 -+ CN -+ - 94-D3-31 (hex) Xiaomi Communications Co Ltd - 94D331 (base 16) Xiaomi Communications Co Ltd - #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road - Beijing Haidian District 100085 - CN - --34-DD-04 (hex) Minut AB --34DD04 (base 16) Minut AB -- Baltzarsgatan 23 -- Malmö 21136 -- SE -- --60-1E-98 (hex) Axevast Technology --601E98 (base 16) Axevast Technology -- 5F., No. 20, Guanqian Road, Zhongzheng District -- Taipei City 100007 -- TW -- --A8-F7-D9 (hex) Mist Systems, Inc. --A8F7D9 (base 16) Mist Systems, Inc. -- 1601 South De Anza Blvd, Suite 248 -- Cupertino CA 95014 -- US -- - 5C-8C-30 (hex) Taicang T&W Electronics - 5C8C30 (base 16) Taicang T&W Electronics - 89# Jiang Nan RD -@@ -191207,6 +191339,18 @@ A8F7D9 (base 16) Mist Systems, Inc. - San Jose CA 94568 - US - -+34-DD-04 (hex) Minut AB -+34DD04 (base 16) Minut AB -+ Baltzarsgatan 23 -+ Malmö 21136 -+ SE -+ -+E8-AC-23 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -+ Dongguan 523808 -+ CN -+ - 68-D9-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD - 68D927 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -@@ -191243,11 +191387,17 @@ A8F7D9 (base 16) Mist Systems, Inc. - Shanghai 200233 - CN - --E8-AC-23 (hex) HUAWEI TECHNOLOGIES CO.,LTD --E8AC23 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park -- Dongguan 523808 -- CN -+60-1E-98 (hex) Axevast Technology -+601E98 (base 16) Axevast Technology -+ 5F., No. 20, Guanqian Road, Zhongzheng District -+ Taipei City 100007 -+ TW -+ -+A8-F7-D9 (hex) Mist Systems, Inc. -+A8F7D9 (base 16) Mist Systems, Inc. -+ 1601 South De Anza Blvd, Suite 248 -+ Cupertino CA 95014 -+ US - - 2C-3B-70 (hex) AzureWave Technology Inc. - 2C3B70 (base 16) AzureWave Technology Inc. -@@ -191273,12 +191423,6 @@ F4227A (base 16) Guangdong Seneasy Intelligent Technology Co., Ltd. - Piscataway NJ 08554 - US - --DC-8D-B7 (hex) ATW TECHNOLOGY, INC. --DC8DB7 (base 16) ATW TECHNOLOGY, INC. -- 1F, No.236 Ba’ai Street, Shulin District -- New Taipei City 23845 -- TW -- - A4-75-B9 (hex) Samsung Electronics Co.,Ltd - A475B9 (base 16) Samsung Electronics Co.,Ltd - #94-1, Imsoo-Dong -@@ -191291,18 +191435,18 @@ A475B9 (base 16) Samsung Electronics Co.,Ltd - Gumi Gyeongbuk 730-350 - KR - --1C-F8-D0 (hex) Samsung Electronics Co.,Ltd --1CF8D0 (base 16) Samsung Electronics Co.,Ltd -- #94-1, Imsoo-Dong -- Gumi Gyeongbuk 730-350 -- KR -- - 6C-60-D0 (hex) Huawei Device Co., Ltd. - 6C60D0 (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone - Dongguan Guangdong 523808 - CN - -+1C-F8-D0 (hex) Samsung Electronics Co.,Ltd -+1CF8D0 (base 16) Samsung Electronics Co.,Ltd -+ #94-1, Imsoo-Dong -+ Gumi Gyeongbuk 730-350 -+ KR -+ - 64-0E-6A (hex) SECO-LARM USA Inc - 640E6A (base 16) SECO-LARM USA Inc - 16842 Millikan -@@ -191315,6 +191459,12 @@ A475B9 (base 16) Samsung Electronics Co.,Ltd - San Jose CA 95110 - US - -+DC-8D-B7 (hex) ATW TECHNOLOGY, INC. -+DC8DB7 (base 16) ATW TECHNOLOGY, INC. -+ 1F, No.236 Ba’ai Street, Shulin District -+ New Taipei City 23845 -+ TW -+ - 70-20-84 (hex) Hon Hai Precision Industry Co., Ltd. - 702084 (base 16) Hon Hai Precision Industry Co., Ltd. - GuangDongShenZhen -@@ -191327,6 +191477,12 @@ A475B9 (base 16) Samsung Electronics Co.,Ltd - ShenZhen GuangDong 518109 - CN - -+1C-A0-B8 (hex) Hon Hai Precision Industry Co., Ltd. -+1CA0B8 (base 16) Hon Hai Precision Industry Co., Ltd. -+ GuangDongShenZhen -+ ShenZhen GuangDong 518109 -+ CN -+ - 18-AA-1E (hex) Shenzhen Skyworth Digital Technology CO., Ltd - 18AA1E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd - 4F,Block A, Skyworth?Building, -@@ -191345,18 +191501,6 @@ D452EE (base 16) SKY UK LIMITED - Brentwood Essex 08854 - GB - --1C-A0-B8 (hex) Hon Hai Precision Industry Co., Ltd. --1CA0B8 (base 16) Hon Hai Precision Industry Co., Ltd. -- GuangDongShenZhen -- ShenZhen GuangDong 518109 -- CN -- --E8-EF-05 (hex) MIND TECH INTERNATIONAL LIMITED --E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED -- FLAT E 2/F RIALTO MANSION 183 KING'S RD NORTH POINT HK -- Hong Kong 999077 -- HK -- - 90-21-06 (hex) SKY UK LIMITED - 902106 (base 16) SKY UK LIMITED - 130 Kings Road -@@ -191375,17 +191519,11 @@ F08756 (base 16) Zyxel Communications Corporation - Hsichu Taiwan 300 - TW - --18-C3-00 (hex) Nokia --18C300 (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -- --D4-4D-77 (hex) Nokia --D44D77 (base 16) Nokia -- 600 March Road -- Kanata Ontario K2K 2E6 -- CA -+E8-EF-05 (hex) MIND TECH INTERNATIONAL LIMITED -+E8EF05 (base 16) MIND TECH INTERNATIONAL LIMITED -+ FLAT E 2/F RIALTO MANSION 183 KING'S RD NORTH POINT HK -+ Hong Kong 999077 -+ HK - - 48-27-E2 (hex) Espressif Inc. - 4827E2 (base 16) Espressif Inc. -@@ -191393,12 +191531,6 @@ D44D77 (base 16) Nokia - Shanghai Shanghai 201203 - CN - --F4-6D-3F (hex) Intel Corporate --F46D3F (base 16) Intel Corporate -- Lot 8, Jalan Hi-Tech 2/3 -- Kulim Kedah 09000 -- MY -- - 58-B3-8F (hex) New H3C Technologies Co., Ltd - 58B38F (base 16) New H3C Technologies Co., Ltd - 466 Changhe Road, Binjiang District -@@ -191411,12 +191543,30 @@ F46D3F (base 16) Intel Corporate - Zhenjiang Jiangsu 212003 - CN - -+F4-6D-3F (hex) Intel Corporate -+F46D3F (base 16) Intel Corporate -+ Lot 8, Jalan Hi-Tech 2/3 -+ Kulim Kedah 09000 -+ MY -+ - 6C-72-4A (hex) Onkyo Technology K.K. - 6C724A (base 16) Onkyo Technology K.K. - Lux Building (5th floor),1-1-41 Kawamata - Higashiosaka City Osaka 577-0063 - JP - -+18-C3-00 (hex) Nokia -+18C300 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ -+D4-4D-77 (hex) Nokia -+D44D77 (base 16) Nokia -+ 600 March Road -+ Kanata Ontario K2K 2E6 -+ CA -+ - DC-05-39 (hex) Cisco Systems, Inc - DC0539 (base 16) Cisco Systems, Inc - 80 West Tasman Drive -@@ -191429,18 +191579,6 @@ DC0539 (base 16) Cisco Systems, Inc - East Greenwich RI 02818 - US - --E0-F3-18 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD --E0F318 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -- Chengdu Sichuan 611330 -- CN -- --C4-64-F2 (hex) Infinix mobility limited --C464F2 (base 16) Infinix mobility limited -- RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -- HongKong HongKong 999077 -- HK -- - B0-1F-47 (hex) Heights Telecom T ltd - B01F47 (base 16) Heights Telecom T ltd - Moshe Lerer 15 -@@ -191495,11 +191633,17 @@ BC1541 (base 16) Nokia - Kanata Ontario K2K 2E6 - CA - --94-6D-AE (hex) Mellanox Technologies, Inc. --946DAE (base 16) Mellanox Technologies, Inc. -- 350 Oakmead Parkway, Suite 100 -- Sunnyvale CA 94085 -- US -+E0-F3-18 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD -+E0F318 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD -+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County -+ Chengdu Sichuan 611330 -+ CN -+ -+C4-64-F2 (hex) Infinix mobility limited -+C464F2 (base 16) Infinix mobility limited -+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG -+ HongKong HongKong 999077 -+ HK - - E4-A6-34 (hex) Universal Electronics, Inc. - E4A634 (base 16) Universal Electronics, Inc. -@@ -191513,50 +191657,44 @@ E4A634 (base 16) Universal Electronics, Inc. - Racho Santa MArgarita CA 92688 - US - --50-63-91 (hex) HUAWEI TECHNOLOGIES CO.,LTD --506391 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+14-65-6A (hex) HUAWEI TECHNOLOGIES CO.,LTD -+14656A (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --E8-A3-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD --E8A34E (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+6C-B7-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+6CB7E2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --04-18-92 (hex) HUAWEI TECHNOLOGIES CO.,LTD --041892 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+C4-75-EA (hex) HUAWEI TECHNOLOGIES CO.,LTD -+C475EA (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --14-65-6A (hex) HUAWEI TECHNOLOGIES CO.,LTD --14656A (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+90-25-F2 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+9025F2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --AC-B6-87 (hex) Arcadyan Corporation --ACB687 (base 16) Arcadyan Corporation -- No.8, Sec.2, Guangfu Rd. -- Hsinchu City Hsinchu 30071 -- TW -- --6C-B7-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD --6CB7E2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+50-63-91 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+506391 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --C4-75-EA (hex) HUAWEI TECHNOLOGIES CO.,LTD --C475EA (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+E8-A3-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD -+E8A34E (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN - --90-25-F2 (hex) HUAWEI TECHNOLOGIES CO.,LTD --9025F2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD -+04-18-92 (hex) HUAWEI TECHNOLOGIES CO.,LTD -+041892 (base 16) HUAWEI TECHNOLOGIES CO.,LTD - No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park - Dongguan 523808 - CN -@@ -191573,18 +191711,36 @@ C475EA (base 16) HUAWEI TECHNOLOGIES CO.,LTD - Hsinchu Hsinchu,Taiwan R.O.C. 30352 - TW - --EC-E6-1D (hex) Huawei Device Co., Ltd. --ECE61D (base 16) Huawei Device Co., Ltd. -- No.2 of Xincheng Road, Songshan Lake Zone -- Dongguan Guangdong 523808 -- CN -- - 48-6D-BB (hex) Vestel Elektronik San ve Tic. A.S. - 486DBB (base 16) Vestel Elektronik San ve Tic. A.S. - Organize san - Manisa Turket 45030 - TR - -+94-6D-AE (hex) Mellanox Technologies, Inc. -+946DAE (base 16) Mellanox Technologies, Inc. -+ 350 Oakmead Parkway, Suite 100 -+ Sunnyvale CA 94085 -+ US -+ -+00-84-ED (hex) LEXMARK INTERNATIONAL, INC. -+0084ED (base 16) LEXMARK INTERNATIONAL, INC. -+ 740 W. New Circle Rd. -+ Lexington KY 40550 -+ US -+ -+AC-B6-87 (hex) Arcadyan Corporation -+ACB687 (base 16) Arcadyan Corporation -+ No.8, Sec.2, Guangfu Rd. -+ Hsinchu City Hsinchu 30071 -+ TW -+ -+B4-3A-31 (hex) Silicon Laboratories -+B43A31 (base 16) Silicon Laboratories -+ 400 West Cesar Chavez -+ Austin TX 78701 -+ US -+ - 4C-63-AD (hex) Huawei Device Co., Ltd. - 4C63AD (base 16) Huawei Device Co., Ltd. - No.2 of Xincheng Road, Songshan Lake Zone -@@ -191597,8 +191753,38 @@ DCDB27 (base 16) Huawei Device Co., Ltd. - Dongguan Guangdong 523808 - CN - -+70-42-D3 (hex) Ruijie Networks Co.,LTD -+7042D3 (base 16) Ruijie Networks Co.,LTD -+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city -+ Fuzhou Fujian 350002 -+ CN -+ -+44-12-44 (hex) Aruba, a Hewlett Packard Enterprise Company -+441244 (base 16) Aruba, a Hewlett Packard Enterprise Company -+ 3333 Scott Blvd -+ Santa Clara CA 95054 -+ US -+ -+EC-E6-1D (hex) Huawei Device Co., Ltd. -+ECE61D (base 16) Huawei Device Co., Ltd. -+ No.2 of Xincheng Road, Songshan Lake Zone -+ Dongguan Guangdong 523808 -+ CN -+ - CC-96-E5 (hex) Dell Inc. - CC96E5 (base 16) Dell Inc. - One Dell Way - Round Rock TX 78682 - US -+ -+40-75-C3 (hex) Technicolor CH USA Inc. -+4075C3 (base 16) Technicolor CH USA Inc. -+ 5030 Sugarloaf Parkway Bldg 6 -+ Lawrenceville GA 30044 -+ US -+ -+F4-1A-B0 (hex) Shenzhen Xingguodu Technology Co., Ltd. -+F41AB0 (base 16) Shenzhen Xingguodu Technology Co., Ltd. -+ 18th Floor, Block B, Building 10, Shenzhen Bay Science and Technology Ecological Park, Nanshan District, Shenzhen -+ Shenzhen Guangdong 518000 -+ CN -diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt -index 3ff16ce0bf..3c84424c58 100644 ---- a/hwdb.d/ma-medium.txt -+++ b/hwdb.d/ma-medium.txt -@@ -245,9 +245,6 @@ B00000-BFFFFF (base 16) KeyWest Networks, Inc - Orange CA 92865 - US - --88-5D-90 (hex) Private --F00000-FFFFFF (base 16) Private -- - 60-95-CE (hex) Beijing Sinomedisite Bio-tech Co.,Ltd - B00000-BFFFFF (base 16) Beijing Sinomedisite Bio-tech Co.,Ltd - No.9 Kangding Street,Economic-Technological Development Area -@@ -5078,6 +5075,36 @@ B00000-BFFFFF (base 16) Labman Automation - Stokesley North Yorkshire TS9 5NQ - GB - -+30-3D-51 (hex) Fink Telecom Services GmbH -+000000-0FFFFF (base 16) Fink Telecom Services GmbH -+ Paradieshofstrasse 101 -+ Basel 4054 -+ CH -+ -+30-3D-51 (hex) Amber-Link Network Technology Co.,Ltd. -+600000-6FFFFF (base 16) Amber-Link Network Technology Co.,Ltd. -+ Bld. #1, St. 356, Rd. Guo Shoujing -+ Shanghai China -+ CN -+ -+88-5D-90 (hex) IEEE Registration Authority -+F00000-FFFFFF (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ PISCATAWAY NJ 08854 -+ US -+ -+2C-69-1D (hex) IBM -+800000-8FFFFF (base 16) IBM -+ 9000 South Rita Rd -+ Tucson AZ 85744 -+ US -+ -+2C-69-1D (hex) SPEEDTECH CORP. -+400000-4FFFFF (base 16) SPEEDTECH CORP. -+ No. 568, Sec. 1, Minsheng N. Rd., Guishan Dist., Taoyuan City 338, Taiwan -+ Taoyuan 338 -+ TW -+ - 4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD - 400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD - Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district -@@ -9926,6 +9953,30 @@ FC-61-79 (hex) Kvaliteta Systems and Solutions Private Limited - Trivandrum Kerala 695583 - IN - -+2C-69-1D (hex) Shenzhen Gigalight Technology Co., Ltd -+700000-7FFFFF (base 16) Shenzhen Gigalight Technology Co., Ltd -+ 2/f, Block F3, Changfeng Ind. Park, Liuxian 3 Rd., Shenzhen, Guangdong, China 1/f, Block F4, Changfeng Ind. Park, 68 Zone,Baoan District,Shenzhen,China -+ Shenzhen Guangdong 518100 -+ CN -+ -+2C-69-1D (hex) Panasonic Appliances Marketing Asia Pacific (A division of Panasonic Malaysia Sdn Bhd -+A00000-AFFFFF (base 16) Panasonic Appliances Marketing Asia Pacific (A division of Panasonic Malaysia Sdn Bhd -+ Lot 10, Jalan 13/2 -+ Petaling Jaya Selangor 46200 -+ MY -+ -+30-3D-51 (hex) TalkGo, Inc. -+C00000-CFFFFF (base 16) TalkGo, Inc. -+ 3518 Fremont Ave N#473 -+ Seattle WA 98103 -+ US -+ -+2C-69-1D (hex) KATEK SE -+100000-1FFFFF (base 16) KATEK SE -+ Promenadeplatz 12 -+ Munich 80333 -+ DE -+ - 20-85-93 (hex) UNILUMIN GROUP CO.,LTD - 300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD - No.112 Yongfu Rd.,BaoanDistrict, -@@ -10319,9 +10370,6 @@ E00000-EFFFFF (base 16) ShenZhen Arts Changhua Intelligent Technology Co., - 8C-C8-F4 (hex) Private - 700000-7FFFFF (base 16) Private - --98-02-D8 (hex) Private --F00000-FFFFFF (base 16) Private -- - D8-86-0B (hex) Get SAT - 200000-2FFFFF (base 16) Get SAT - Hamada 12 -@@ -15083,6 +15131,42 @@ A00000-AFFFFF (base 16) TeraNXT Global India Pvt Ltd. - Rockwall TX 75032 - US - -+30-3D-51 (hex) Percent.com -+E00000-EFFFFF (base 16) Percent.com -+ 167/2, Fakirerpool D.I.T Extention Road, Motiheel -+ Dhaka Dhaka 1000 -+ BD -+ -+98-02-D8 (hex) IEEE Registration Authority -+F00000-FFFFFF (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ PISCATAWAY NJ 08854 -+ US -+ -+2C-69-1D (hex) Sunsa, Inc -+300000-3FFFFF (base 16) Sunsa, Inc -+ 3422 Fait Ave -+ Baltimore MD 21224 -+ US -+ -+2C-69-1D (hex) SHENZHEN EX-LINK TECHNOLOGY CO.,LTD -+900000-9FFFFF (base 16) SHENZHEN EX-LINK TECHNOLOGY CO.,LTD -+ 818 Building 2,Nanyou Fourth Industrial Zone,No 1124 ,Nanshan Avenue,Nanguang Community,Nanshan Street,Nanshan District,Shenzhen -+ SHENZHEN GUANGDONG 518052 -+ CN -+ -+2C-69-1D (hex) Aparian, Inc. -+C00000-CFFFFF (base 16) Aparian, Inc. -+ 2709 S Orange AveUnit D -+ Santa Ana CA 92707 -+ US -+ -+2C-69-1D (hex) Carnegie Robotics -+600000-6FFFFF (base 16) Carnegie Robotics -+ 4501 Hatfield Street -+ Pittsburgh PA 15201 -+ US -+ - 4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd. - 600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd. - 22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone -@@ -15152,9 +15236,6 @@ F00000-FFFFFF (base 16) Private - 78-C2-C0 (hex) Private - F00000-FFFFFF (base 16) Private - --14-1F-BA (hex) Private --F00000-FFFFFF (base 16) Private -- - 58-FC-DB (hex) Private - F00000-FFFFFF (base 16) Private - -@@ -20099,6 +20180,42 @@ E00000-EFFFFF (base 16) ACCO Brands USA LLC - Mail box 15123 Haifa 3508409 - IL - -+2C-69-1D (hex) Hunan Xiangjiang Kunpeng Information Technology Co., Ltd. -+000000-0FFFFF (base 16) Hunan Xiangjiang Kunpeng Information Technology Co., Ltd. -+ Building 1# and Building 4#, No. 67 Ziyuan Road, Xueshi Street, Yuelu District, -+ Changsha Hunan 410006 -+ CN -+ -+30-3D-51 (hex) Destiny Automate Limited -+700000-7FFFFF (base 16) Destiny Automate Limited -+ Aw House, 6-8 Stuart Street -+ Luton Bedfordshire LU1 2SJ -+ GB -+ -+2C-69-1D (hex) Abode Systems Inc -+200000-2FFFFF (base 16) Abode Systems Inc -+ 2625 Middlefield Road -+ Palo Alto CA 94306 -+ US -+ -+14-1F-BA (hex) IEEE Registration Authority -+F00000-FFFFFF (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ PISCATAWAY NJ 08854 -+ US -+ -+2C-69-1D (hex) Shenzhen Daren HI-Tech Electronics Co., Ltd. -+B00000-BFFFFF (base 16) Shenzhen Daren HI-Tech Electronics Co., Ltd. -+ Room 401, No. 5, Jiayi Industrial Park, Guihua Community, Guanlan Street, Longhua District, Shenzhen -+ Shenzhen Guangdong 518109 -+ CN -+ -+2C-69-1D (hex) Ascentac Inc. -+D00000-DFFFFF (base 16) Ascentac Inc. -+ 11F.-1, No.80, Minzu 1st Rd., Sanmin Dist., Kaohsiung City 807, Taiwan (R.O.C.) -+ Kaohsiung City Taiwan 807 -+ TW -+ - 20-85-93 (hex) Great Lite International - 700000-7FFFFF (base 16) Great Lite International - 11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist., -@@ -20735,9 +20852,6 @@ B00000-BFFFFF (base 16) YINUO-LINK LIMITED - 80-0A-80 (hex) Private - F00000-FFFFFF (base 16) Private - --C0-D3-91 (hex) Private --B00000-BFFFFF (base 16) Private -- - 1C-FD-08 (hex) MESHBOX FOUNDATION PTE. LTD. - E00000-EFFFFF (base 16) MESHBOX FOUNDATION PTE. LTD. - 152 Beach Road #14-02 GATEWAY EAST TOWER -@@ -20780,9 +20894,6 @@ A00000-AFFFFF (base 16) Banmak Technogies Co.,Ltd - Huizhou Guangdong 516100 - CN - --B8-D8-12 (hex) Private --F00000-FFFFFF (base 16) Private -- - A8-3F-A1 (hex) Imecon Engineering SrL - 000000-0FFFFF (base 16) Imecon Engineering SrL - via Gerola 13/15 -@@ -25189,3 +25300,21 @@ D00000-DFFFFF (base 16) XOR UK Corporation Limited - Unit 11-12, Stanhope Gate, Stanhope Rd - Camberley Surrey GU15 3DW - GB -+ -+C0-D3-91 (hex) Celliber Technologies Pvt Limited -+B00000-BFFFFF (base 16) Celliber Technologies Pvt Limited -+ No.1027, 24th Main, 11th Cross, -+ Bangalore Karnataka 560102 -+ IN -+ -+2C-69-1D (hex) LG Electronics Inc. -+500000-5FFFFF (base 16) LG Electronics Inc. -+ LG Twin Towers, 128, Yeoui-daero, Yeongdeungpo-gu -+ Seoul 150-721 -+ KR -+ -+B8-D8-12 (hex) IEEE Registration Authority -+F00000-FFFFFF (base 16) IEEE Registration Authority -+ 445 Hoes Lane -+ PISCATAWAY NJ 08854 -+ US -diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt -index dfaf330309..7492357661 100644 ---- a/hwdb.d/ma-small.txt -+++ b/hwdb.d/ma-small.txt -@@ -4010,9 +4010,6 @@ E6F000-E6FFFF (base 16) Amazon Technologies Inc. - Reno NV 89507 - US - --70-B3-D5 (hex) Private --11A000-11AFFF (base 16) Private -- - 70-B3-D5 (hex) Mettler Toledo - 4FC000-4FCFFF (base 16) Mettler Toledo - 1571 Northpointe Parkway -@@ -5957,6 +5954,12 @@ C35000-C35FFF (base 16) Peter Huber Kaeltemaschinenbau AG - Offenburg Ba-Wue 77656 - DE - -+70-B3-D5 (hex) Mahindra Electric Mobility Limited -+11A000-11AFFF (base 16) Mahindra Electric Mobility Limited -+ 690, Gold Hill Square, Hosur Road, Bommanahalli -+ Bangalore Karnataka 560068 -+ IN -+ - 70-B3-D5 (hex) EVCO SPA - A80000-A80FFF (base 16) EVCO SPA - VIA FELTRE N. 81 -@@ -11753,23 +11756,59 @@ CC6000-CC6FFF (base 16) Genius Vision Digital Private Limited - Houston TX 77024-7338 - US - -+8C-1F-64 (hex) GO development GmbH -+7BC000-7BCFFF (base 16) GO development GmbH -+ Zeppelinstraße 126 -+ Esslingen am Neckar 73730 -+ DE -+ - 8C-1F-64 (hex) Abode Systems Inc - B13000-B13FFF (base 16) Abode Systems Inc - 2625 Middlefield Road - Palo Alto CA 94306 - US - -+8C-1F-64 (hex) Ear Micro LLC -+58C000-58CFFF (base 16) Ear Micro LLC -+ 4043 Broadway -+ Kansas City MO 64111 -+ US -+ - 8C-1F-64 (hex) DAVE SRL - 0EF000-0EFFFF (base 16) DAVE SRL - VIA TALPONEDO 29/A - PORCIA PORDENONE 330850 - IT - --8C-1F-64 (hex) GO development GmbH --7BC000-7BCFFF (base 16) GO development GmbH -- Zeppelinstraße 126 -- Esslingen am Neckar 73730 -- DE -+8C-1F-64 (hex) Season Electronics Ltd -+6BB000-6BBFFF (base 16) Season Electronics Ltd -+ 600 Nest Business Park -+ Havant Hampshire PO9 5TL -+ GB -+ -+8C-1F-64 (hex) Integer.pl S.A. -+D5E000-D5EFFF (base 16) Integer.pl S.A. -+ Wielicka 28 -+ Krakow 30-552 -+ PL -+ -+8C-1F-64 (hex) Abbott Diagnostics Technologies AS -+300000-300FFF (base 16) Abbott Diagnostics Technologies AS -+ P. O. Box 6863 Rodeløkka -+ Oslo 0504 -+ NO -+ -+8C-1F-64 (hex) Suzhou Leamore Optronics Co., Ltd. -+662000-662FFF (base 16) Suzhou Leamore Optronics Co., Ltd. -+ Block 12-301, NO 99 Jinji Lake Road, Suzhou Industrial Park, Suzhou -+ Suzhou Jiangsu 215000 -+ CN -+ -+8C-1F-64 (hex) Breas Medical AB -+98F000-98FFFF (base 16) Breas Medical AB -+ Företagsvägen 1 -+ Mölnlycke SE-435 33 -+ SE - - 70-B3-D5 (hex) System West dba ICS Electronics - E06000-E06FFF (base 16) System West dba ICS Electronics -@@ -17534,10 +17573,10 @@ CD2000-CD2FFF (base 16) TRUMPF Huttinger GmbH + Co. KG, - Göttingen 37075 - DE - --8C-1F-64 (hex) dinosys --5CB000-5CBFFF (base 16) dinosys -- 501,35,Gwangnaruro 6-gil, -- Seoul Seoul 133-832 -+8C-1F-64 (hex) WonATech Co., Ltd. -+890000-890FFF (base 16) WonATech Co., Ltd. -+ 7, Neunganmal 1-gil -+ Seocho-gu Seoul 06801 - KR - - 8C-1F-64 (hex) HIROSAWA ELECTRIC Co.,Ltd. -@@ -17546,12 +17585,24 @@ CD2000-CD2FFF (base 16) TRUMPF Huttinger GmbH + Co. KG, - Otaku Tokyo 1440034 - JP - --8C-1F-64 (hex) WonATech Co., Ltd. --890000-890FFF (base 16) WonATech Co., Ltd. -- 7, Neunganmal 1-gil -- Seocho-gu Seoul 06801 -+8C-1F-64 (hex) dinosys -+5CB000-5CBFFF (base 16) dinosys -+ 501,35,Gwangnaruro 6-gil, -+ Seoul Seoul 133-832 - KR - -+8C-1F-64 (hex) Agramkow A/S -+8D5000-8D5FFF (base 16) Agramkow A/S -+ Augustenborg Landevej 19 -+ Sønderborg 6400 -+ DK -+ -+8C-1F-64 (hex) Gogo BA -+092000-092FFF (base 16) Gogo BA -+ 105 Edgeview Drive -+ Broomfield CO 80021 -+ US -+ - 70-B3-D5 (hex) YUYAMA MFG Co.,Ltd - BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd - 3-3-1 -@@ -23516,6 +23567,12 @@ CAF000-CAFFFF (base 16) BRS Sistemas Eletrônicos - Porto Alegre RS 91380-000 - BR - -+8C-1F-64 (hex) DORLET SAU -+1BD000-1BDFFF (base 16) DORLET SAU -+ Albert Eistein 34 -+ Alava SPAIN 01510 -+ ES -+ - 70-B3-D5 (hex) DISMUNTEL SAL - 92C000-92CFFF (base 16) DISMUNTEL SAL - Pol ind cotes -@@ -29251,3 +29308,9 @@ DFE000-DFEFFF (base 16) Nuvation Energy - 651 North Broad StreetSuite 206 - Middletown DE 19709 - US -+ -+8C-1F-64 (hex) Belden India Private Limited -+54A000-54AFFF (base 16) Belden India Private Limited -+ Plot No. D-228, Chakan MIDC Phase 2, -+ Village Bhamboli, Taluka:Khed Pune, Maharashtra 410 507 -+ IN -diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids -index dddb2b639a..ba1be0bbc1 100644 ---- a/hwdb.d/pci.ids -+++ b/hwdb.d/pci.ids -@@ -1,8 +1,8 @@ - # - # List of PCI ID's - # --# Version: 2022.05.09 --# Date: 2022-05-09 03:15:02 -+# Version: 2022.05.18 -+# Date: 2022-05-18 03:15:02 - # - # Maintained by Albert Pool, Martin Mares, and other volunteers from - # the PCI ID Project at https://pci-ids.ucw.cz/. -@@ -1054,15 +1054,17 @@ - 131c Kaveri [Radeon R7 Graphics] - 131d Kaveri [Radeon R6 Graphics] - 13e9 Ariel -- 13fe Cyan Skillfish -+ 13fe Cyan Skillfish [BC-250] - 1478 Navi 10 XL Upstream Port of PCI Express Switch - 1479 Navi 10 XL Downstream Port of PCI Express Switch -+ 1506 Mendocino - 154c Kryptos [Radeon RX 350] - 1462 7c28 MS-7C28 Motherboard - 154e Garfield - 1551 Arlene - 1552 Pooky - 1561 Anubis -+ 15bf Phoenix - 15d8 Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] - 103c 8615 Pavilion Laptop 15-cw1xxx - 17aa 3181 ThinkCentre M75n IoT -@@ -1092,6 +1094,7 @@ - 1640 Rembrandt Radeon High Definition Audio Controller - 164c Lucienne - 164d Rembrandt -+ 164f Phoenix - 1681 Rembrandt [Radeon 680M] - 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] - 103c 168b ProBook 4535s -@@ -3754,6 +3757,7 @@ - 7310 Navi 10 [Radeon Pro W5700X] - 7312 Navi 10 [Radeon Pro W5700] - 7314 Navi 10 USB -+ 731e TDC-150 - 731f Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] - 1002 0b36 Reference RX 5700 XT - 1458 2313 Radeon RX 5700 XT Gaming OC -@@ -3765,16 +3769,18 @@ - 7341 Navi 14 [Radeon Pro W5500] - 7347 Navi 14 [Radeon Pro W5500M] - 734f Navi 14 [Radeon Pro W5300M] -- 7360 Navi 12 [Radeon Pro 5600M / V520] -+ 7360 Navi 12 [Radeon Pro 5600M/V520/BC-160] - 7362 Navi 12 [Radeon Pro V520] - 7388 Arcturus GL-XL - 738c Arcturus GL-XL [Instinct MI100] - 738e Arcturus GL-XL [Instinct MI100] -+ 73a1 Navi 21 [Radeon Pro V620] - 73a2 Navi 21 Pro-XTA [Radeon Pro W6900X] - 73a3 Navi 21 GL-XL [Radeon PRO W6800] - 73a4 Navi 21 USB - 73a5 Navi 21 [Radeon RX 6950 XT] - 73ab Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] -+ 73ae Navi 21 [Radeon Pro V620 MxGPU] - 73af Navi 21 [Radeon RX 6900 XT] - 148c 2414 Navi 21 XTXH [PowerColor Red Devil RX 6900 XT Ultimate] - 73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] -@@ -3784,6 +3790,7 @@ - 1eae 6701 XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black - 73c3 Navi 22 - 73c4 Navi 22 USB -+ 73ce Navi22-XL SRIOV MxGPU - 73df Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] - 73e0 Navi 23 - 73e1 Navi 23 WKS-XM [Radeon PRO W6600M] -@@ -3797,6 +3804,8 @@ - 740f Aldebaran - 7421 Navi 24 [Radeon PRO W6500M] - 7422 Navi 24 [Radeon PRO W6400] -+ 7423 Navi 24 [Radeon PRO W6300/W6300M] -+ 7424 Navi 24 [Radeon RX 6300] - 743f Navi 24 [Radeon RX 6400 / 6500 XT] - 1da2 e457 PULSE AMD Radeon RX 6500 XT - 7833 RS350 Host Bridge -@@ -4851,6 +4860,7 @@ - 1481 Starship/Matisse IOMMU - 1482 Starship/Matisse PCIe Dummy Host Bridge - 1483 Starship/Matisse GPP Bridge -+ 01de fff9 Gimlet Baseboard - 1484 Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] - 1485 Starship/Matisse Reserved SPP - 1486 Starship/Matisse Cryptographic Coprocessor PSPCPP -@@ -5509,6 +5519,7 @@ - 1028 1f24 PERC S300 Controller - # NV-RAM Adapter used in Dell DR appliances - 0073 NV-RAM Adapter -+ 1028 PCIe Bridge riser - 1029 Siemens Nixdorf IS - 102a LSI Logic - 0000 HYDRA -@@ -13010,13 +13021,31 @@ - 3fc4 RME Digi9652 (Hammerfall) - 3fc5 RME Hammerfall DSP - 3fc6 RME Hammerfall DSP MADI -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ 5000 Alveo U200 XDMA Platform -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ 5004 Alveo U250 XDMA Platform - 5005 Alveo U250 -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ 500c Alveo U280 XDMA Platform -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ 5020 Alveo U50 XMDA Platform -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ 505c Alveo U55C - 7038 FPGA Card XC7VX690T - 17aa 402f FPGA XC7VX690T-3FFG1157E - 8019 Memory controller - 1eec 0201 VSEC10232X Dual-port 100Gb/s Etherent PCIe - 8380 Ellips ProfiXpress Profibus Master - 8381 Ellips Santos Frame Grabber -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ d000 Alveo U200 Golden Image -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ d004 Alveo U250 Golden Image -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ d00c Alveo U280 Golden Image -+# Reference: https://xilinx.github.io/Alveo-Cards/master/management-specification/appendix_a.html -+ d020 Alveo U50 Golden Image - d154 Copley Controls CAN card (PCI-CAN-02) - # SED is assigned Xilinx PCI device IDs ebf0 through ebff - ebf0 SED Systems Modulator/Demodulator -@@ -18774,7 +18803,7 @@ - 6089 T62100-6089 Unified Wire Ethernet Controller - 608a T62100-608a Unified Wire Ethernet Controller - 6092 T62100-KR Unified Wire Ethernet Controller -- 01de fff9 Gimlet T6 -+ 01de fff9 Gimlet Baseboard - 6401 T6225-CR Unified Wire Ethernet Controller - 6402 T6225-SO-CR Unified Wire Ethernet Controller - 6403 T6425-CR Unified Wire Ethernet Controller -@@ -18800,7 +18829,7 @@ - 6489 T62100-6089 Unified Wire Ethernet Controller - 648a T62100-608a Unified Wire Ethernet Controller - 6492 T62100-KR Unified Wire Ethernet Controller -- 01de fff9 Gimlet T6 -+ 01de fff9 Gimlet Baseboard - 6501 T6225-CR Unified Wire Storage Controller - 6502 T6225-SO-CR Unified Wire Storage Controller - 6503 T6425-CR Unified Wire Storage Controller -@@ -23378,6 +23407,8 @@ - 13c2 3016 TT-budget S2-4200 Twin - 4254 0552 S952 v3 - 1ae0 Google, Inc. -+# NVMe drive in GCP -+ 001f NVMe device - 0042 Compute Engine Virtual Ethernet [gVNIC] - abcd Airbrush Combined Paintbox IPU/Oscar Edge TPU [Pixel Neural Core] - 1ae3 SANBlaze Technology, Inc. -@@ -23619,6 +23650,7 @@ - 1028 2113 BOSS-N1 Modular - 1028 2151 BOSS-N1 Modular ET - 1028 2196 ROR-N100 -+ 1b4b 2241 Santa Cruz NVMe Host Adapter - 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit - 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit - 9120 88SE9120 SATA 6Gb/s Controller -@@ -24324,6 +24356,7 @@ - 1000 HL-2000 AI Training Accelerator [Gaudi] - # PCIe accelerator card for Deep Learning training tasks with secured firmware - 1010 HL-2000 AI Training Accelerator [Gaudi secured] -+1da8 Corigine, Inc. - 1dad Fungible - 1db2 ATP ELECTRONICS INC - 1db7 Phytium Technology Co., Ltd. -@@ -24834,6 +24867,7 @@ - 1f3f 00a1 Dual Port 100GE SDI5.0 - 9032 SDI5.1 - 1f3f 00a1 Dual Port 100GE SDI5.1 -+1f40 Netac Technology Co.,Ltd - 1faa Hexaflake (Shanghai) Information Technology Co., Ltd. - 1fab Unifabrix Ltd. - 0000 Nexus Alpha IVPU -@@ -28042,6 +28076,7 @@ - 8086 000a Ethernet Network Adapter X710-T4L for OCP 3.0 - 8086 000b Ethernet Network Adapter X710-T2L for OCP 3.0 - 8086 000c Ethernet Network Adapter X710-T2L for OCP 3.0 -+ 8086 000d Ethernet 10G 2P X710-T2L-t OCP - 8086 000f Ethernet Network Adapter X710-T2L for OCP 3.0 - 8086 4009 Ethernet Network Adapter X710-T2L - 8086 4012 Ethernet Network Adapter X710-T4L for OCP 3.0 -@@ -31531,8 +31566,14 @@ - 31a2 Celeron/Pentium Silver Processor Integrated Sensor Solution - 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller - 1849 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller -- 31ac Celeron/Pentium Silver Processor Serial IO I2C Host Controller -- 31ae Celeron/Pentium Silver Processor Serial IO I2C Host Controller -+ 31ac Celeron/Pentium Silver Processor I2C 0 -+ 31ae Celeron/Pentium Silver Processor I2C 1 -+ 31b0 Celeron/Pentium Silver Processor I2C 2 -+ 31b2 Celeron/Pentium Silver Processor I2C 3 -+ 31b4 Celeron/Pentium Silver Processor I2C 4 -+ 31b6 Celeron/Pentium Silver Processor I2C 5 -+ 31b8 Celeron/Pentium Silver Processor I2C 6 -+ 31ba Celeron/Pentium Silver Processor I2C 7 - 31bc Celeron/Pentium Silver Processor Serial IO UART Host Controller - 31be Celeron/Pentium Silver Processor Serial IO UART Host Controller - 31c0 Celeron/Pentium Silver Processor Serial IO UART Host Controller -@@ -33012,6 +33053,7 @@ - 8817 Platform Controller Hub EG20T I2C Controller - 8818 Platform Controller Hub EG20T Controller Area Network (CAN) Controller - 8819 Platform Controller Hub EG20T IEEE 1588 Hardware Assist -+ 8a03 Processor Power and Thermal Controller - 8a0d Ice Lake Thunderbolt 3 NHI #1 - 8a12 Ice Lake-LP Processor Host Bridge/DRAM Registers - 8a13 Ice Lake Thunderbolt 3 USB Controller -diff --git a/hwdb.d/usb.ids b/hwdb.d/usb.ids -index 7f41fd0b07..07c927c993 100644 ---- a/hwdb.d/usb.ids -+++ b/hwdb.d/usb.ids -@@ -9,8 +9,8 @@ - # The latest version can be obtained from - # http://www.linux-usb.org/usb.ids - # --# Version: 2022.05.09 --# Date: 2022-05-09 20:34:10 -+# Version: 2022.05.20 -+# Date: 2022-05-20 20:34:10 - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -17301,7 +17301,7 @@ - a001 Bandit Action Camera Batt-Stick - 1391 IdealTEK, Inc. - 1000 URTC-1000 --1395 Sennheiser Communications -+1395 DSEA A/S - 0025 Headset [PC 8] - 0026 SC230 - 0027 SC260 -@@ -17343,7 +17343,7 @@ - 0065 MB 660 - 0066 SP 20 D UC - 0067 SP 20 D MS -- 006b SC5x5 MS -+ 006b SC6x5 - 0072 Headset - 3556 USB Headset - 1397 BEHRINGER International GmbH diff --git a/SOURCES/0323-hwdb-Add-Google-Meet-speakermic.patch b/SOURCES/0323-hwdb-Add-Google-Meet-speakermic.patch deleted file mode 100644 index 8ea0ad9..0000000 --- a/SOURCES/0323-hwdb-Add-Google-Meet-speakermic.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 45ba681f5f1a27f0b0b87bf961bce014fe73e056 Mon Sep 17 00:00:00 2001 -From: Pablo Ceballos -Date: Thu, 26 May 2022 22:23:35 +0000 -Subject: [PATCH] hwdb: Add Google Meet speakermic - -It has the same issue as the Google Hangouts Meet speakermic but a -different VID/PID. - -(cherry picked from commit 1a2134fb51ab1e84c213f2a309dab25da3a5369d) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 2e4f6f4293..7204e4ea2a 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -515,8 +515,9 @@ evdev:input:b0003v0458p0708* - # Google - ########################################################### - --# Google Hangouts Meet speakermic -+# Google Hangouts Meet speakermic and Google Meet speakermic - evdev:input:b0003v18D1p8001* -+evdev:input:b0003v18D1p8007* - KEYBOARD_KEY_b002f=reserved # Disable micmute key - - ########################################################### diff --git a/SOURCES/0324-hwdb-Add-accel-orientation-quirk-for-the-Aya-Neo-Nex.patch b/SOURCES/0324-hwdb-Add-accel-orientation-quirk-for-the-Aya-Neo-Nex.patch deleted file mode 100644 index 50576aa..0000000 --- a/SOURCES/0324-hwdb-Add-accel-orientation-quirk-for-the-Aya-Neo-Nex.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 3e7648919309c1dfc677a1d383ddba0937fa14a9 Mon Sep 17 00:00:00 2001 -From: Maccraft123 -Date: Thu, 2 Jun 2022 20:05:22 +0200 -Subject: [PATCH] hwdb: Add accel orientation quirk for the Aya Neo Next - -(cherry picked from commit cc9e3a55d3d3558c309b1ebbde0f2cc26d69ee54) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 104fe05187..3de4616f7f 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -170,6 +170,14 @@ sensor:modalias:acpi:BOSC0200*:dmi:*svn*ASUSTeK*:*pn*TP412UA:* - sensor:modalias:acpi:SMO8500*:dmi:*:svnStandard:pnWCBT1011::* - ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 - -+######################################### -+# AYANEO -+######################################### -+ -+# AYANEO NEXT -+sensor:modalias:acpi:BMI0160*:dmi:*:svnAYANEO:pn*NEXT*:* -+ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 -+ - ######################################### - # Chuwi - ######################################### diff --git a/SOURCES/0325-hwdb-Add-HP-Dev-One.patch b/SOURCES/0325-hwdb-Add-HP-Dev-One.patch deleted file mode 100644 index d14411e..0000000 --- a/SOURCES/0325-hwdb-Add-HP-Dev-One.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b6eda5abff85cb5764900d1da944096ece4b657c Mon Sep 17 00:00:00 2001 -From: Jeremy Soller -Date: Wed, 8 Jun 2022 07:59:46 -0600 -Subject: [PATCH] hwdb: Add HP Dev One - -This enables the microphone mute and programmable hotkey for the HP Dev -One. - -(cherry picked from commit 295e0291bff52a12d4ce7d7481c4da464002fbb6) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 7204e4ea2a..51c631929e 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -764,6 +764,11 @@ evdev:name:gpio-keys:phys:gpio-keys/input0:ev:23:dmi:*:svnHewlett-Packard:pnHPSt - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnOMEN*:pvr* - KEYBOARD_KEY_a1=!calc - -+# HP Dev One -+evdev:atkbd:dmi:*:rvnHP:rn8A78:* -+ KEYBOARD_KEY_81=f20 # Fn+F8; Microphone mute button -+ KEYBOARD_KEY_f9=prog1 # Fn+F12; Programmable hotkey -+ - ########################################################## - # Huawei - ########################################################## diff --git a/SOURCES/0326-hwdb-analyzers-remove-generic-STM-Device-in-DFU-Mode.patch b/SOURCES/0326-hwdb-analyzers-remove-generic-STM-Device-in-DFU-Mode.patch deleted file mode 100644 index c7c5f5c..0000000 --- a/SOURCES/0326-hwdb-analyzers-remove-generic-STM-Device-in-DFU-Mode.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 82d43b95791c5303f6e83f9de496aa377cb56702 Mon Sep 17 00:00:00 2001 -From: Jan Luebbe -Date: Mon, 13 Jun 2022 16:40:18 +0200 -Subject: [PATCH] hwdb: analyzers: remove generic "STM Device in DFU Mode" - -The USB ID v0483pDF11 is used by the ROM code in many STMicroelectronics -devices (for firmware download) and not just signal analyzers. - -(cherry picked from commit 5d049ff9204b9aad48c62c296def4daa4b53005e) - -Related: #2087778 ---- - hwdb.d/70-analyzers.hwdb | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/hwdb.d/70-analyzers.hwdb b/hwdb.d/70-analyzers.hwdb -index 899ece3a01..0a1911507a 100644 ---- a/hwdb.d/70-analyzers.hwdb -+++ b/hwdb.d/70-analyzers.hwdb -@@ -29,7 +29,6 @@ usb:v1679p3001* - - # Power Delivery Analyzers - usb:v1679p6003* --usb:v0483pDF11* - ID_SIGNAL_ANALYZER=1 - - ########################################################### diff --git a/SOURCES/0327-hwdb-Add-Lenovo-ThinkPad-C13-Yoga.patch b/SOURCES/0327-hwdb-Add-Lenovo-ThinkPad-C13-Yoga.patch deleted file mode 100644 index daace34..0000000 --- a/SOURCES/0327-hwdb-Add-Lenovo-ThinkPad-C13-Yoga.patch +++ /dev/null @@ -1,27 +0,0 @@ -From cdaf92f134f358ad681678162a4bbf50e4a6477a Mon Sep 17 00:00:00 2001 -From: Akihiko Odaki -Date: Sat, 11 Jun 2022 07:58:52 +0900 -Subject: [PATCH] hwdb: Add Lenovo ThinkPad C13 Yoga - -(cherry picked from commit c3b8113af061eaf696fec46a1a9f38600d588f32) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 3de4616f7f..971fac84d5 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -416,6 +416,10 @@ sensor:modalias:platform:cros-ec-accel:dmi:*Google_Nocturne*:* - sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnRammus*:* - ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 - -+# Lenovo ThinkPad C13 Yoga -+sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnMorphius*:* -+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 -+ - ######################################### - # GP-electronic - ######################################### diff --git a/SOURCES/0328-Fix-automatic-screen-rotation-for-Asus-Transformer-T.patch b/SOURCES/0328-Fix-automatic-screen-rotation-for-Asus-Transformer-T.patch deleted file mode 100644 index 77f71eb..0000000 --- a/SOURCES/0328-Fix-automatic-screen-rotation-for-Asus-Transformer-T.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 5278a0144c6824f430d74a60d67f61a921d464e7 Mon Sep 17 00:00:00 2001 -From: Michal Stanke -Date: Mon, 11 Jul 2022 14:11:12 +0200 -Subject: [PATCH] Fix automatic screen rotation for Asus Transformer T100TAM - -(cherry picked from commit 81706277965be18afd819f0e458baa6bf49fdc2e) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 971fac84d5..b1a83e8561 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -132,6 +132,7 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT300CHI:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnM80TA:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TA:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TAF:* -+sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TAM:* - sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:* - ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - diff --git a/SOURCES/0329-hwdb-Add-Acer-Aspire-A317-33-24050.patch b/SOURCES/0329-hwdb-Add-Acer-Aspire-A317-33-24050.patch deleted file mode 100644 index 735cb92..0000000 --- a/SOURCES/0329-hwdb-Add-Acer-Aspire-A317-33-24050.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8e0965646e6e00945d866c1131a261f1c4cf4fca Mon Sep 17 00:00:00 2001 -From: Mitchell Freiderich -Date: Mon, 18 Jul 2022 01:03:44 -0500 -Subject: [PATCH] hwdb: Add Acer Aspire A317-33 (#24050) - -Enables the power button on the Acer Aspire 3 A317-33 - -(cherry picked from commit 0216462f0836596fb0b2bf7b819bfd1d5b45b951) - -Related: #2087778 ---- - hwdb.d/60-keyboard.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb -index 51c631929e..095bb34cd8 100644 ---- a/hwdb.d/60-keyboard.hwdb -+++ b/hwdb.d/60-keyboard.hwdb -@@ -154,6 +154,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:* - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*7750G:* - KEYBOARD_KEY_e0=!pageup - -+# Acer Aspire 3 A317-33 -+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspireA317-33:* -+ KEYBOARD_KEY_55=power -+ - # Acer Aspire One AO532h - evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO532h:* - KEYBOARD_KEY_84=bluetooth diff --git a/SOURCES/0330-Add-ACCEL_MOUNT_MATRIX-for-OXP-Mini.patch b/SOURCES/0330-Add-ACCEL_MOUNT_MATRIX-for-OXP-Mini.patch deleted file mode 100644 index 7706be7..0000000 --- a/SOURCES/0330-Add-ACCEL_MOUNT_MATRIX-for-OXP-Mini.patch +++ /dev/null @@ -1,28 +0,0 @@ -From c4ca5a1a08e052cb4c5be621a9128d3fe1bb8111 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Joaqu=C3=ADn=20Ignacio=20Aramend=C3=ADa?= - -Date: Sat, 30 Jul 2022 16:56:04 -0300 -Subject: [PATCH] Add ACCEL_MOUNT_MATRIX for OXP Mini - -(cherry picked from commit e18569cc7271ba8b2b2be90cbb285980915cf4a2) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index b1a83e8561..fc688ef4d3 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -767,6 +767,10 @@ sensor:modalias:acpi:BOSC0200*:dmi:*svnONE-NETBOOKTECHNOLOGYCO*:pnOne-Mix3Pro:* - sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.12:bd07/17/2019:*svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnDefaultstring:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:* - ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 - -+# One-Netbook OneXPlayer Mini (and maybe others) -+sensor:modalias:acpi:BMI0160*:dmi:*:rnONEXPLAYER:rvrV01:* -+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1 -+ - ######################################### - # Peaq - ######################################### diff --git a/SOURCES/0331-Added-DERE-DBook-D10-24173.patch b/SOURCES/0331-Added-DERE-DBook-D10-24173.patch deleted file mode 100644 index 917f8e3..0000000 --- a/SOURCES/0331-Added-DERE-DBook-D10-24173.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 8a7803d8c57ad39d05541ce6e6c0460eeae9da01 Mon Sep 17 00:00:00 2001 -From: Gio -Date: Wed, 3 Aug 2022 04:26:03 -0400 -Subject: [PATCH] Added DERE DBook D10 (#24173) - -* Added DERE DBook D10 - -(cherry picked from commit 2d2efed2eeebad6860e9fa4880d02286175dcffa) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index fc688ef4d3..1c3f6b62bb 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -339,6 +339,14 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnDellInc.*:pnVenue8Pro3845:* - sensor:modalias:acpi:INVN6500*:dmi:*svnDell*:pnVenue10Pro5055:* - ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1 - -+######################################### -+# DERE -+######################################### -+ -+# DBook D10 -+sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJP2V1.05:bd04/27/2022:br1.5:efr1.3:svnDefaultstring:* -+ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 -+ - ######################################### - # DEXP - ######################################### diff --git a/SOURCES/0332-hwdb-analyzers-Clarify-the-type-of-devices-we-want-l.patch b/SOURCES/0332-hwdb-analyzers-Clarify-the-type-of-devices-we-want-l.patch deleted file mode 100644 index e76d47f..0000000 --- a/SOURCES/0332-hwdb-analyzers-Clarify-the-type-of-devices-we-want-l.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e70784afa017a3d721a2fd5202ae31b12d806069 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Tue, 9 Aug 2022 18:08:24 +0200 -Subject: [PATCH] hwdb: analyzers: Clarify the type of devices we want listed - -(cherry picked from commit 838d0fd3d5f890e986c631eda2a4945b0c661d19) - -Related: #2087778 ---- - hwdb.d/70-analyzers.hwdb | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/hwdb.d/70-analyzers.hwdb b/hwdb.d/70-analyzers.hwdb -index 0a1911507a..7f31ca3ea3 100644 ---- a/hwdb.d/70-analyzers.hwdb -+++ b/hwdb.d/70-analyzers.hwdb -@@ -1,8 +1,9 @@ - # This file is part of systemd. - # - # Database for signal analyzers (protocol analyzers, logic analyzers, --# oscilloscopes, multimeters, bench power supplies, etc.) that should --# be accessible to the seat owner. -+# oscilloscopes, multimeters, bench power supplies, etc.) or just -+# anything that has to do with electronics and that should be -+# accessible to the seat owner. - # - # Permitted keys: - # Specify if a device is a signal analyzer diff --git a/SOURCES/0333-hwdb-Add-Greaseweazle-drives-to-the-list-of-analyzer.patch b/SOURCES/0333-hwdb-Add-Greaseweazle-drives-to-the-list-of-analyzer.patch deleted file mode 100644 index 41c4845..0000000 --- a/SOURCES/0333-hwdb-Add-Greaseweazle-drives-to-the-list-of-analyzer.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 056b1d368b14e9664b69499cbcba49bc04be7e52 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Thu, 21 Apr 2022 11:11:22 +0200 -Subject: [PATCH] hwdb: Add Greaseweazle "drives" to the list of analyzers - -They're floppy disk flux readers and writers used in digital -preservation and can be broadly considered to be "analyzers" of magnetic -fluxes. - -This will have the intended side-effect of giving access to the device -to users at the console, obsoleting: -https://github.com/keirf/greaseweazle/blob/master/scripts/49-greaseweazle.rules - -(cherry picked from commit 9ab755dce50bfb6f1f614f57fe3a8b65b570b5b9) - -Related: #2087778 ---- - hwdb.d/70-analyzers.hwdb | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/hwdb.d/70-analyzers.hwdb b/hwdb.d/70-analyzers.hwdb -index 7f31ca3ea3..821ebcb1ca 100644 ---- a/hwdb.d/70-analyzers.hwdb -+++ b/hwdb.d/70-analyzers.hwdb -@@ -9,6 +9,13 @@ - # Specify if a device is a signal analyzer - # ID_SIGNAL_ANALYZER=1|0 - -+########################################################### -+# Greaseweazle -+########################################################### -+# Greaseweazle -+usb:v1209p4D69* -+ ID_SIGNAL_ANALYZER=1 -+ - ########################################################### - # Total Phase - ########################################################### diff --git a/SOURCES/0334-hwdb-Apply-existing-accel-orientation-quirk-to-all-C.patch b/SOURCES/0334-hwdb-Apply-existing-accel-orientation-quirk-to-all-C.patch deleted file mode 100644 index d5073b0..0000000 --- a/SOURCES/0334-hwdb-Apply-existing-accel-orientation-quirk-to-all-C.patch +++ /dev/null @@ -1,59 +0,0 @@ -From f06a6ff8b3dba8ba48ca5bb6ebaa04a86b4c06d6 Mon Sep 17 00:00:00 2001 -From: Alper Nebi Yasak -Date: Wed, 10 Aug 2022 22:09:32 +0300 -Subject: [PATCH] hwdb: Apply existing accel orientation quirk to all - Chromebooks - -The cros-ec-accel and cros-ec-accel-legacy kernel modules internally -correct for the board-specific accelerometer mounting orientations. -Their sensor outputs are in a standard reference frame consistent across -different boards, so the orientation matrix already added for a number -of devices should apply to every device using cros-ec accelerometers. -The different matrix for the 'Nocturne' board seems to be an error. - -Replace the existing hwdb rules for select Chromebooks with generic -rules that apply to all Chromebooks. - -(cherry picked from commit 1800f7098a3e91a1d28697ef11a15e4b4193d21f) - -Related: #2087778 ---- - hwdb.d/60-sensor.hwdb | 22 ++++------------------ - 1 file changed, 4 insertions(+), 18 deletions(-) - -diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb -index 1c3f6b62bb..7978675943 100644 ---- a/hwdb.d/60-sensor.hwdb -+++ b/hwdb.d/60-sensor.hwdb -@@ -406,27 +406,13 @@ sensor:modalias:acpi:KXCJ9000*:dmi:*:bvrZY-8-BI-PX4S70VTR400-X423B-005-D:*:rvnAM - ######################################### - # Google Chromebooks - ######################################### --sensor:modalias:platform:cros-ec-accel:dmi:*:svnGOOGLE:* -- ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 -- --# caroline board (Samsung Chromebook Pro) reports itself as svnGoogle --sensor:modalias:platform:cros-ec-accel:dmi:*:svnGoogle:pnCaroline*:* -- ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 -- --# Dell Inspiron Chromebook 14 2-in-1 --sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnVayne*:* -- ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 -- --# nocturne board (Google Pixel Slate) --sensor:modalias:platform:cros-ec-accel:dmi:*Google_Nocturne*:* -- ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 - --# rammus board (Asus Chromebook Flip C433) --sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnRammus*:* -+# CrOS EC & kernel drivers internally correct for per-board sensor orientations, -+# but they return values in the inverse direction (Android & W3C specs vs HID). -+sensor:modalias:platform:cros-ec-accel:* - ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 - --# Lenovo ThinkPad C13 Yoga --sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnMorphius*:* -+sensor:modalias:platform:cros-ec-accel-legacy:* - ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 - - ######################################### diff --git a/SOURCES/0335-shared-install-fix-crash-when-reenable-is-called-wit.patch b/SOURCES/0335-shared-install-fix-crash-when-reenable-is-called-wit.patch deleted file mode 100644 index de44419..0000000 --- a/SOURCES/0335-shared-install-fix-crash-when-reenable-is-called-wit.patch +++ /dev/null @@ -1,26 +0,0 @@ -From b419d118455739757b1b426989964123d2e94869 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 12 Apr 2022 20:42:32 +0200 -Subject: [PATCH] shared/install: fix crash when reenable is called without - --root - -(cherry picked from commit 6e961aeb262521742a4cd92e4620de193f159f7c) - -Resolves: #2120222 ---- - src/shared/install.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/install.c b/src/shared/install.c -index d3661521a9..b8d18d1484 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -2827,7 +2827,7 @@ static int normalize_linked_files( - return r; - - const char *p = NULL; -- if (i && i->path) -+ if (i && i->path && i->root) - /* Use startswith here, because we know that paths are normalized, and - * path_startswith() would give us a relative path, but we need an absolute path - * relative to i->root. diff --git a/SOURCES/0336-scope-allow-unprivileged-delegation-on-scopes.patch b/SOURCES/0336-scope-allow-unprivileged-delegation-on-scopes.patch deleted file mode 100644 index d11b642..0000000 --- a/SOURCES/0336-scope-allow-unprivileged-delegation-on-scopes.patch +++ /dev/null @@ -1,343 +0,0 @@ -From f23d0328e563fa5534377297153daa098664147f Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 1 Jun 2022 10:15:06 +0200 -Subject: [PATCH] scope: allow unprivileged delegation on scopes - -Previously it was possible to set delegate property for scope, but you -were not able to allow unprivileged process to manage the scope's cgroup -hierarchy. This is useful when launching manager process that will run -unprivileged but is supposed to manage its own (scope) sub-hierarchy. - -Fixes #21683 - -(cherry picked from commit 03860190fefce8bbea3a6f0e77919b882ade517c) - -Resolves: #2120604 ---- - src/basic/unit-def.c | 1 + - src/basic/unit-def.h | 1 + - src/core/dbus-scope.c | 6 ++ - src/core/scope.c | 130 ++++++++++++++++++++++++++++++++----- - src/core/scope.h | 3 + - src/shared/bus-unit-util.c | 5 ++ - test/units/testsuite-19.sh | 14 ++++ - 7 files changed, 143 insertions(+), 17 deletions(-) - -diff --git a/src/basic/unit-def.c b/src/basic/unit-def.c -index 2667e61dc4..9408141842 100644 ---- a/src/basic/unit-def.c -+++ b/src/basic/unit-def.c -@@ -170,6 +170,7 @@ DEFINE_STRING_TABLE_LOOKUP(path_state, PathState); - static const char* const scope_state_table[_SCOPE_STATE_MAX] = { - [SCOPE_DEAD] = "dead", - [SCOPE_RUNNING] = "running", -+ [SCOPE_START_CHOWN] = "start-chown", - [SCOPE_ABANDONED] = "abandoned", - [SCOPE_STOP_SIGTERM] = "stop-sigterm", - [SCOPE_STOP_SIGKILL] = "stop-sigkill", -diff --git a/src/basic/unit-def.h b/src/basic/unit-def.h -index f80e554d2b..5fcd51c095 100644 ---- a/src/basic/unit-def.h -+++ b/src/basic/unit-def.h -@@ -114,6 +114,7 @@ typedef enum PathState { - - typedef enum ScopeState { - SCOPE_DEAD, -+ SCOPE_START_CHOWN, - SCOPE_RUNNING, - SCOPE_ABANDONED, - SCOPE_STOP_SIGTERM, -diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c -index 109ad6f2ef..0f59622166 100644 ---- a/src/core/dbus-scope.c -+++ b/src/core/dbus-scope.c -@@ -186,6 +186,12 @@ int bus_scope_set_property( - r = bus_kill_context_set_transient_property(u, &s->kill_context, name, message, flags, error); - if (r != 0) - return r; -+ -+ if (streq(name, "User")) -+ return bus_set_transient_user_relaxed(u, name, &s->user, message, flags, error); -+ -+ if (streq(name, "Group")) -+ return bus_set_transient_user_relaxed(u, name, &s->group, message, flags, error); - } - - return 0; -diff --git a/src/core/scope.c b/src/core/scope.c -index 63d3288caf..a4da45ac43 100644 ---- a/src/core/scope.c -+++ b/src/core/scope.c -@@ -6,6 +6,7 @@ - #include "alloc-util.h" - #include "dbus-scope.h" - #include "dbus-unit.h" -+#include "exit-status.h" - #include "load-dropin.h" - #include "log.h" - #include "process-util.h" -@@ -18,9 +19,11 @@ - #include "strv.h" - #include "unit-name.h" - #include "unit.h" -+#include "user-util.h" - - static const UnitActiveState state_translation_table[_SCOPE_STATE_MAX] = { - [SCOPE_DEAD] = UNIT_INACTIVE, -+ [SCOPE_START_CHOWN] = UNIT_ACTIVATING, - [SCOPE_RUNNING] = UNIT_ACTIVE, - [SCOPE_ABANDONED] = UNIT_ACTIVE, - [SCOPE_STOP_SIGTERM] = UNIT_DEACTIVATING, -@@ -39,6 +42,7 @@ static void scope_init(Unit *u) { - s->runtime_max_usec = USEC_INFINITY; - s->timeout_stop_usec = u->manager->default_timeout_stop_usec; - u->ignore_on_isolate = true; -+ s->user = s->group = NULL; - } - - static void scope_done(Unit *u) { -@@ -50,6 +54,9 @@ static void scope_done(Unit *u) { - s->controller_track = sd_bus_track_unref(s->controller_track); - - s->timer_event_source = sd_event_source_disable_unref(s->timer_event_source); -+ -+ s->user = mfree(s->user); -+ s->group = mfree(s->group); - } - - static usec_t scope_running_timeout(Scope *s) { -@@ -107,7 +114,7 @@ static void scope_set_state(Scope *s, ScopeState state) { - old_state = s->state; - s->state = state; - -- if (!IN_SET(state, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL)) -+ if (!IN_SET(state, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL, SCOPE_START_CHOWN)) - s->timer_event_source = sd_event_source_disable_unref(s->timer_event_source); - - if (IN_SET(state, SCOPE_DEAD, SCOPE_FAILED)) { -@@ -353,26 +360,72 @@ fail: - scope_enter_dead(s, SCOPE_FAILURE_RESOURCES); - } - --static int scope_start(Unit *u) { -- Scope *s = SCOPE(u); -+static int scope_enter_start_chown(Scope *s) { -+ Unit *u = UNIT(s); -+ pid_t pid; - int r; - - assert(s); -+ assert(s->user); - -- if (unit_has_name(u, SPECIAL_INIT_SCOPE)) -- return -EPERM; -+ r = scope_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), u->manager->default_timeout_start_usec)); -+ if (r < 0) -+ return r; - -- if (s->state == SCOPE_FAILED) -- return -EPERM; -+ r = unit_fork_helper_process(u, "(sd-chown-cgroup)", &pid); -+ if (r < 0) -+ goto fail; - -- /* We can't fulfill this right now, please try again later */ -- if (IN_SET(s->state, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL)) -- return -EAGAIN; -+ if (r == 0) { -+ uid_t uid = UID_INVALID; -+ gid_t gid = GID_INVALID; - -- assert(s->state == SCOPE_DEAD); -+ if (!isempty(s->user)) { -+ const char *user = s->user; - -- if (!u->transient && !MANAGER_IS_RELOADING(u->manager)) -- return -ENOENT; -+ r = get_user_creds(&user, &uid, &gid, NULL, NULL, 0); -+ if (r < 0) { -+ log_unit_error_errno(UNIT(s), r, "Failed to resolve user \"%s\": %m", user); -+ _exit(EXIT_USER); -+ } -+ } -+ -+ if (!isempty(s->group)) { -+ const char *group = s->group; -+ -+ r = get_group_creds(&group, &gid, 0); -+ if (r < 0) { -+ log_unit_error_errno(UNIT(s), r, "Failed to resolve group \"%s\": %m", group); -+ _exit(EXIT_GROUP); -+ } -+ } -+ -+ r = cg_set_access(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, uid, gid); -+ if (r < 0) { -+ log_unit_error_errno(UNIT(s), r, "Failed to adjust control group access: %m"); -+ _exit(EXIT_CGROUP); -+ } -+ -+ _exit(EXIT_SUCCESS); -+ } -+ -+ r = unit_watch_pid(UNIT(s), pid, true); -+ if (r < 0) -+ goto fail; -+ -+ scope_set_state(s, SCOPE_START_CHOWN); -+ -+ return 1; -+fail: -+ s->timer_event_source = sd_event_source_disable_unref(s->timer_event_source); -+ return r; -+} -+ -+static int scope_enter_running(Scope *s) { -+ Unit *u = UNIT(s); -+ int r; -+ -+ assert(s); - - (void) bus_scope_track_controller(s); - -@@ -380,9 +433,6 @@ static int scope_start(Unit *u) { - if (r < 0) - return r; - -- (void) unit_realize_cgroup(u); -- (void) unit_reset_accounting(u); -- - unit_export_state_files(u); - - r = unit_attach_pids_to_cgroup(u, u->pids, NULL); -@@ -416,6 +466,37 @@ static int scope_start(Unit *u) { - return 1; - } - -+static int scope_start(Unit *u) { -+ Scope *s = SCOPE(u); -+ -+ assert(s); -+ -+ if (unit_has_name(u, SPECIAL_INIT_SCOPE)) -+ return -EPERM; -+ -+ if (s->state == SCOPE_FAILED) -+ return -EPERM; -+ -+ /* We can't fulfill this right now, please try again later */ -+ if (IN_SET(s->state, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL)) -+ return -EAGAIN; -+ -+ assert(s->state == SCOPE_DEAD); -+ -+ if (!u->transient && !MANAGER_IS_RELOADING(u->manager)) -+ return -ENOENT; -+ -+ (void) unit_realize_cgroup(u); -+ (void) unit_reset_accounting(u); -+ -+ /* We check only for User= option to keep behavior consistent with logic for service units, -+ * i.e. having 'Delegate=true Group=foo' w/o specifing User= has no effect. */ -+ if (s->user && unit_cgroup_delegate(u)) -+ return scope_enter_start_chown(s); -+ -+ return scope_enter_running(s); -+} -+ - static int scope_stop(Unit *u) { - Scope *s = SCOPE(u); - -@@ -547,7 +628,17 @@ static void scope_notify_cgroup_empty_event(Unit *u) { - } - - static void scope_sigchld_event(Unit *u, pid_t pid, int code, int status) { -- assert(u); -+ Scope *s = SCOPE(u); -+ -+ assert(s); -+ -+ if (s->state == SCOPE_START_CHOWN) { -+ if (!is_clean_exit(code, status, EXIT_CLEAN_COMMAND, NULL)) -+ scope_enter_dead(s, SCOPE_FAILURE_RESOURCES); -+ else -+ scope_enter_running(s); -+ return; -+ } - - /* If we get a SIGCHLD event for one of the processes we were interested in, then we look for others to - * watch, under the assumption that we'll sooner or later get a SIGCHLD for them, as the original -@@ -585,6 +676,11 @@ static int scope_dispatch_timer(sd_event_source *source, usec_t usec, void *user - scope_enter_dead(s, SCOPE_FAILURE_TIMEOUT); - break; - -+ case SCOPE_START_CHOWN: -+ log_unit_warning(UNIT(s), "User lookup timed out. Entering failed state."); -+ scope_enter_dead(s, SCOPE_FAILURE_TIMEOUT); -+ break; -+ - default: - assert_not_reached(); - } -diff --git a/src/core/scope.h b/src/core/scope.h -index 03a9ba4324..def1541652 100644 ---- a/src/core/scope.h -+++ b/src/core/scope.h -@@ -34,6 +34,9 @@ struct Scope { - bool was_abandoned; - - sd_event_source *timer_event_source; -+ -+ char *user; -+ char *group; - }; - - extern const UnitVTable scope_vtable; -diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c -index c211fe34d5..33b0b947b7 100644 ---- a/src/shared/bus-unit-util.c -+++ b/src/shared/bus-unit-util.c -@@ -2130,6 +2130,11 @@ static int bus_append_scope_property(sd_bus_message *m, const char *field, const - if (streq(field, "TimeoutStopSec")) - return bus_append_parse_sec_rename(m, field, eq); - -+ /* Scope units don't have execution context but we still want to allow setting these two, -+ * so let's handle them separately. */ -+ if (STR_IN_SET(field, "User", "Group")) -+ return bus_append_string(m, field, eq); -+ - return 0; - } - -diff --git a/test/units/testsuite-19.sh b/test/units/testsuite-19.sh -index ee4eb8431e..6ce6d3d429 100755 ---- a/test/units/testsuite-19.sh -+++ b/test/units/testsuite-19.sh -@@ -3,6 +3,16 @@ - set -eux - set -o pipefail - -+test_scope_unpriv_delegation() { -+ useradd test ||: -+ trap "userdel -r test" RETURN -+ -+ systemd-run --uid=test -p User=test -p Delegate=yes --slice workload.slice --unit workload0.scope --scope \ -+ test -w /sys/fs/cgroup/workload.slice/workload0.scope -a \ -+ -w /sys/fs/cgroup/workload.slice/workload0.scope/cgroup.procs -a \ -+ -w /sys/fs/cgroup/workload.slice/workload0.scope/cgroup.subtree_control -+} -+ - if grep -q cgroup2 /proc/filesystems ; then - systemd-run --wait --unit=test0.service -p "DynamicUser=1" -p "Delegate=" \ - test -w /sys/fs/cgroup/system.slice/test0.service/ -a \ -@@ -31,6 +41,10 @@ if grep -q cgroup2 /proc/filesystems ; then - - # And now check again, "io" should have vanished - grep -qv io /sys/fs/cgroup/system.slice/cgroup.controllers -+ -+ # Check that unprivileged delegation works for scopes -+ test_scope_unpriv_delegation -+ - else - echo "Skipping TEST-19-DELEGATE, as the kernel doesn't actually support cgroup v2" >&2 - fi diff --git a/SOURCES/0337-udev-net_id-add-rhel-9.1-naming-scheme.patch b/SOURCES/0337-udev-net_id-add-rhel-9.1-naming-scheme.patch deleted file mode 100644 index 65725c9..0000000 --- a/SOURCES/0337-udev-net_id-add-rhel-9.1-naming-scheme.patch +++ /dev/null @@ -1,55 +0,0 @@ -From ef6d76202a28d374a96c4dff1e40c7bd4551de0c Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 24 Aug 2022 17:18:47 +0200 -Subject: [PATCH] udev/net_id: add "rhel-9.1" naming scheme - -RHEL-only - -Resolves: #2121144 ---- - man/systemd.net-naming-scheme.xml | 6 ++++++ - src/shared/netif-naming-scheme.c | 1 + - src/shared/netif-naming-scheme.h | 1 + - 3 files changed, 8 insertions(+) - -diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml -index 73d08b681d..23bfcead1f 100644 ---- a/man/systemd.net-naming-scheme.xml -+++ b/man/systemd.net-naming-scheme.xml -@@ -415,6 +415,12 @@ - - - -+ -+ rhel-9.1 -+ -+ Same as naming scheme rhel-9.0. -+ -+ - - - Note that latest may be used to denote the latest scheme known (to this -diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c -index 44d011a9b7..adda731f63 100644 ---- a/src/shared/netif-naming-scheme.c -+++ b/src/shared/netif-naming-scheme.c -@@ -24,6 +24,7 @@ static const NamingScheme naming_schemes[] = { - { "v249", NAMING_V249 }, - { "v250", NAMING_V250 }, - { "rhel-9.0", NAMING_RHEL_9_0 }, -+ { "rhel-9.1", NAMING_RHEL_9_1 }, - /* … add more schemes here, as the logic to name devices is updated … */ - - EXTRA_NET_NAMING_MAP -diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h -index 5c86cb4545..f27c0593c3 100644 ---- a/src/shared/netif-naming-scheme.h -+++ b/src/shared/netif-naming-scheme.h -@@ -49,6 +49,7 @@ typedef enum NamingSchemeFlags { - NAMING_V249 = NAMING_V247 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX | NAMING_REPLACE_STRICTLY, - NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF, - NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT, -+ NAMING_RHEL_9_1 = NAMING_RHEL_9_0, - - EXTRA_NET_NAMING_SCHEMES - diff --git a/SOURCES/0338-core-load-fragment-move-config_parse_sec_fix_0-to-sr.patch b/SOURCES/0338-core-load-fragment-move-config_parse_sec_fix_0-to-sr.patch deleted file mode 100644 index 2ffff43..0000000 --- a/SOURCES/0338-core-load-fragment-move-config_parse_sec_fix_0-to-sr.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 009b55d532a66704072ca0c01e8dc218d318b520 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Tue, 9 Aug 2022 11:41:04 +0200 -Subject: [PATCH] core/load-fragment: move config_parse_sec_fix_0 to src/shared - -(cherry picked from commit 4ee8176fe33bbcd0971c4583a0e7d1cc2a64ac06) - -Related: #2100464 ---- - src/core/load-fragment.c | 31 ------------------------------- - src/core/load-fragment.h | 1 - - src/shared/conf-parser.c | 1 + - src/shared/conf-parser.h | 1 + - 4 files changed, 2 insertions(+), 32 deletions(-) - -diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c -index 0acc350389..e26581c1d5 100644 ---- a/src/core/load-fragment.c -+++ b/src/core/load-fragment.c -@@ -2518,37 +2518,6 @@ int config_parse_service_timeout_abort( - return 0; - } - --int config_parse_sec_fix_0( -- const char *unit, -- const char *filename, -- unsigned line, -- const char *section, -- unsigned section_line, -- const char *lvalue, -- int ltype, -- const char *rvalue, -- void *data, -- void *userdata) { -- -- usec_t *usec = data; -- int r; -- -- assert(filename); -- assert(lvalue); -- assert(rvalue); -- assert(usec); -- -- /* This is pretty much like config_parse_sec(), except that this treats a time of 0 as infinity, for -- * compatibility with older versions of systemd where 0 instead of infinity was used as indicator to turn off a -- * timeout. */ -- -- r = parse_sec_fix_0(rvalue, usec); -- if (r < 0) -- log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse %s= parameter, ignoring: %s", lvalue, rvalue); -- -- return 0; --} -- - int config_parse_user_group_compat( - const char *unit, - const char *filename, -diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h -index 26b8de28f7..4c302c43ec 100644 ---- a/src/core/load-fragment.h -+++ b/src/core/load-fragment.h -@@ -114,7 +114,6 @@ CONFIG_PARSER_PROTOTYPE(config_parse_bus_name); - CONFIG_PARSER_PROTOTYPE(config_parse_exec_utmp_mode); - CONFIG_PARSER_PROTOTYPE(config_parse_working_directory); - CONFIG_PARSER_PROTOTYPE(config_parse_fdname); --CONFIG_PARSER_PROTOTYPE(config_parse_sec_fix_0); - CONFIG_PARSER_PROTOTYPE(config_parse_user_group_compat); - CONFIG_PARSER_PROTOTYPE(config_parse_user_group_strv_compat); - CONFIG_PARSER_PROTOTYPE(config_parse_restrict_namespaces); -diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c -index d19041207c..7bfed38834 100644 ---- a/src/shared/conf-parser.c -+++ b/src/shared/conf-parser.c -@@ -1592,3 +1592,4 @@ int config_parse_in_addr_non_null( - - DEFINE_CONFIG_PARSE(config_parse_percent, parse_percent, "Failed to parse percent value"); - DEFINE_CONFIG_PARSE(config_parse_permyriad, parse_permyriad, "Failed to parse permyriad value"); -+DEFINE_CONFIG_PARSE_PTR(config_parse_sec_fix_0, parse_sec_fix_0, usec_t, "Failed to parse time value"); -diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h -index d686665532..fbfdbdb333 100644 ---- a/src/shared/conf-parser.h -+++ b/src/shared/conf-parser.h -@@ -157,6 +157,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_ether_addrs); - CONFIG_PARSER_PROTOTYPE(config_parse_in_addr_non_null); - CONFIG_PARSER_PROTOTYPE(config_parse_percent); - CONFIG_PARSER_PROTOTYPE(config_parse_permyriad); -+CONFIG_PARSER_PROTOTYPE(config_parse_sec_fix_0); - - typedef enum Disabled { - DISABLED_CONFIGURATION, diff --git a/SOURCES/0339-logind-add-option-to-stop-idle-sessions-after-specif.patch b/SOURCES/0339-logind-add-option-to-stop-idle-sessions-after-specif.patch deleted file mode 100644 index 4cd8562..0000000 --- a/SOURCES/0339-logind-add-option-to-stop-idle-sessions-after-specif.patch +++ /dev/null @@ -1,254 +0,0 @@ -From a8980738c4ef8fba4fd8995ab69669d438ad7a9f Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Mon, 8 Aug 2022 09:13:50 +0200 -Subject: [PATCH] logind: add option to stop idle sessions after specified - timeout - -Thanks to Jan Pazdziora for providing a patch -which implemeted a PoC of this feature. - -(cherry picked from commit 82325af3ae41bc7efb3d5cd8f56a4652fef498c2) - -Resolves: #2100464 ---- - man/logind.conf.xml | 11 ++++++ - man/org.freedesktop.login1.xml | 6 +++ - src/login/logind-core.c | 2 + - src/login/logind-dbus.c | 1 + - src/login/logind-gperf.gperf | 1 + - src/login/logind-session.c | 67 ++++++++++++++++++++++++++++++++-- - src/login/logind-session.h | 2 + - src/login/logind.conf.in | 1 + - src/login/logind.h | 2 + - 9 files changed, 90 insertions(+), 3 deletions(-) - -diff --git a/man/logind.conf.xml b/man/logind.conf.xml -index 96fa076239..c37fd97be1 100644 ---- a/man/logind.conf.xml -+++ b/man/logind.conf.xml -@@ -357,6 +357,17 @@ - are excluded from the effect of this setting. Defaults to no. - - -+ -+ StopIdleSessionSec= -+ -+ Specifies a timeout in seconds, or a time span value after which -+ systemd-logind checks the idle state of all sessions. Every session that is idle for -+ longer then the timeout will be stopped. Defaults to infinity -+ (systemd-logind is not checking the idle state of sessions). For details about the syntax -+ of time spans, see -+ systemd.time7. -+ -+ - - - -diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml -index c11324ee3b..0ebcfb84ab 100644 ---- a/man/org.freedesktop.login1.xml -+++ b/man/org.freedesktop.login1.xml -@@ -235,6 +235,8 @@ node /org/freedesktop/login1 { - readonly t SessionsMax = ...; - @org.freedesktop.DBus.Property.EmitsChangedSignal("false") - readonly t NCurrentSessions = ...; -+ @org.freedesktop.DBus.Property.EmitsChangedSignal("const") -+ readonly t StopIdleSessionUSec = ...; - }; - interface org.freedesktop.DBus.Peer { ... }; - interface org.freedesktop.DBus.Introspectable { ... }; -@@ -242,6 +244,8 @@ node /org/freedesktop/login1 { - }; - - -+ -+ - - - -@@ -460,6 +464,8 @@ node /org/freedesktop/login1 { - - - -+ -+ - - - -diff --git a/src/login/logind-core.c b/src/login/logind-core.c -index 616c08132a..9807c85b8c 100644 ---- a/src/login/logind-core.c -+++ b/src/login/logind-core.c -@@ -71,6 +71,8 @@ void manager_reset_config(Manager *m) { - - m->kill_only_users = strv_free(m->kill_only_users); - m->kill_exclude_users = strv_free(m->kill_exclude_users); -+ -+ m->stop_idle_session_usec = USEC_INFINITY; - } - - int manager_parse_config_file(Manager *m) { -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index 31a41bd271..c97a89c37d 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -3389,6 +3389,7 @@ static const sd_bus_vtable manager_vtable[] = { - SD_BUS_PROPERTY("SessionsMax", "t", NULL, offsetof(Manager, sessions_max), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("NCurrentSessions", "t", property_get_hashmap_size, offsetof(Manager, sessions), 0), - SD_BUS_PROPERTY("UserTasksMax", "t", property_get_compat_user_tasks_max, 0, SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN), -+ SD_BUS_PROPERTY("StopIdleSessionUSec", "t", NULL, offsetof(Manager, stop_idle_session_usec), SD_BUS_VTABLE_PROPERTY_CONST), - - SD_BUS_METHOD_WITH_ARGS("GetSession", - SD_BUS_ARGS("s", session_id), -diff --git a/src/login/logind-gperf.gperf b/src/login/logind-gperf.gperf -index 867db36533..300d56542d 100644 ---- a/src/login/logind-gperf.gperf -+++ b/src/login/logind-gperf.gperf -@@ -50,3 +50,4 @@ Login.RemoveIPC, config_parse_bool, 0, offse - Login.InhibitorsMax, config_parse_uint64, 0, offsetof(Manager, inhibitors_max) - Login.SessionsMax, config_parse_uint64, 0, offsetof(Manager, sessions_max) - Login.UserTasksMax, config_parse_compat_user_tasks_max, 0, 0 -+Login.StopIdleSessionSec, config_parse_sec_fix_0, 0, offsetof(Manager, stop_idle_session_usec) -diff --git a/src/login/logind-session.c b/src/login/logind-session.c -index a052596e57..a110b6f1c1 100644 ---- a/src/login/logind-session.c -+++ b/src/login/logind-session.c -@@ -150,6 +150,8 @@ Session* session_free(Session *s) { - free(s->state_file); - free(s->fifo_path); - -+ sd_event_source_unref(s->stop_on_idle_event_source); -+ - return mfree(s); - } - -@@ -687,6 +689,55 @@ static int session_start_scope(Session *s, sd_bus_message *properties, sd_bus_er - return 0; - } - -+static int session_dispatch_stop_on_idle(sd_event_source *source, uint64_t t, void *userdata) { -+ Session *s = userdata; -+ dual_timestamp ts; -+ int r, idle; -+ -+ assert(s); -+ -+ if (s->stopping) -+ return 0; -+ -+ idle = session_get_idle_hint(s, &ts); -+ if (idle) { -+ log_debug("Session \"%s\" of user \"%s\" is idle, stopping.", s->id, s->user->user_record->user_name); -+ -+ return session_stop(s, /* force */ true); -+ } -+ -+ r = sd_event_source_set_time(source, usec_add(ts.monotonic, s->manager->stop_idle_session_usec)); -+ if (r < 0) -+ return log_error_errno(r, "Failed to configure stop on idle session event source: %m"); -+ -+ r = sd_event_source_set_enabled(source, SD_EVENT_ONESHOT); -+ if (r < 0) -+ return log_error_errno(r, "Failed to enable stop on idle session event source: %m"); -+ -+ return 1; -+} -+ -+static int session_setup_stop_on_idle_timer(Session *s) { -+ int r; -+ -+ assert(s); -+ -+ if (s->manager->stop_idle_session_usec == USEC_INFINITY) -+ return 0; -+ -+ r = sd_event_add_time_relative( -+ s->manager->event, -+ &s->stop_on_idle_event_source, -+ CLOCK_MONOTONIC, -+ s->manager->stop_idle_session_usec, -+ 0, -+ session_dispatch_stop_on_idle, s); -+ if (r < 0) -+ return log_error_errno(r, "Failed to add stop on idle session event source: %m"); -+ -+ return 0; -+} -+ - int session_start(Session *s, sd_bus_message *properties, sd_bus_error *error) { - int r; - -@@ -709,6 +760,10 @@ int session_start(Session *s, sd_bus_message *properties, sd_bus_error *error) { - if (r < 0) - return r; - -+ r = session_setup_stop_on_idle_timer(s); -+ if (r < 0) -+ return r; -+ - log_struct(s->class == SESSION_BACKGROUND ? LOG_DEBUG : LOG_INFO, - "MESSAGE_ID=" SD_MESSAGE_SESSION_START_STR, - "SESSION_ID=%s", s->id, -@@ -949,7 +1004,7 @@ static int get_process_ctty_atime(pid_t pid, usec_t *atime) { - } - - int session_get_idle_hint(Session *s, dual_timestamp *t) { -- usec_t atime = 0; -+ usec_t atime = 0, dtime = 0; - int r; - - assert(s); -@@ -986,10 +1041,16 @@ found_atime: - if (t) - dual_timestamp_from_realtime(t, atime); - -- if (s->manager->idle_action_usec <= 0) -+ if (s->manager->idle_action_usec > 0 && s->manager->stop_idle_session_usec != USEC_INFINITY) -+ dtime = MIN(s->manager->idle_action_usec, s->manager->stop_idle_session_usec); -+ else if (s->manager->idle_action_usec > 0) -+ dtime = s->manager->idle_action_usec; -+ else if (s->manager->stop_idle_session_usec != USEC_INFINITY) -+ dtime = s->manager->stop_idle_session_usec; -+ else - return false; - -- return usec_add(atime, s->manager->idle_action_usec) <= now(CLOCK_REALTIME); -+ return usec_add(atime, dtime) <= now(CLOCK_REALTIME); - } - - int session_set_idle_hint(Session *s, bool b) { -diff --git a/src/login/logind-session.h b/src/login/logind-session.h -index 6b6ac2d573..4c28607986 100644 ---- a/src/login/logind-session.h -+++ b/src/login/logind-session.h -@@ -115,6 +115,8 @@ struct Session { - Hashmap *devices; - sd_bus_track *track; - -+ sd_event_source *stop_on_idle_event_source; -+ - LIST_FIELDS(Session, sessions_by_user); - LIST_FIELDS(Session, sessions_by_seat); - -diff --git a/src/login/logind.conf.in b/src/login/logind.conf.in -index 79d685b3de..fcdbad58c7 100644 ---- a/src/login/logind.conf.in -+++ b/src/login/logind.conf.in -@@ -43,3 +43,4 @@ - #RemoveIPC=no - #InhibitorsMax=8192 - #SessionsMax=8192 -+#StopIdleSessionSec=infinity -diff --git a/src/login/logind.h b/src/login/logind.h -index 730c14a46a..e5c68a74cb 100644 ---- a/src/login/logind.h -+++ b/src/login/logind.h -@@ -101,6 +101,8 @@ struct Manager { - usec_t idle_action_not_before_usec; - HandleAction idle_action; - -+ usec_t stop_idle_session_usec; -+ - HandleAction handle_power_key; - HandleAction handle_power_key_long_press; - HandleAction handle_reboot_key; diff --git a/SOURCES/0340-tree-wide-fix-typo.patch b/SOURCES/0340-tree-wide-fix-typo.patch deleted file mode 100644 index dc3e862..0000000 --- a/SOURCES/0340-tree-wide-fix-typo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 6ce73e569dc989cc09ea2dda73fc74a29d8f568f Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Wed, 15 Jun 2022 14:50:34 +0900 -Subject: [PATCH] tree-wide: fix typo - -(cherry picked from commit 172cbcdc8b61feffa07b332a871ec33b3215ad59) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 05d2a6c4c3..21cb01c16f 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -228,7 +228,7 @@ test_session_tear_down() { - check_session() { - loginctl - if [[ $(loginctl --no-legend | grep -c "logind-test-user") != 1 ]]; then -- echo "no session or multile sessions for logind-test-user." >&2 -+ echo "no session or multiple sessions for logind-test-user." >&2 - return 1 - fi - diff --git a/SOURCES/0341-test-several-cleanups-for-TEST-35-LOGIN.patch b/SOURCES/0341-test-several-cleanups-for-TEST-35-LOGIN.patch deleted file mode 100644 index 7e1b5fe..0000000 --- a/SOURCES/0341-test-several-cleanups-for-TEST-35-LOGIN.patch +++ /dev/null @@ -1,456 +0,0 @@ -From 8eda88f8c46d053137cf6cf52280b9988c3c996b Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Thu, 7 Jul 2022 10:10:05 +0900 -Subject: [PATCH] test: several cleanups for TEST-35-LOGIN - -- use test_append_files() to install additional commands -- drop use of expect -- include assert.sh and use assertions at several places -- use timeout command at several places -- always use logind-test-user -- etc - -(cherry picked from commit 63663a0f0f0e1dcd6036cecf013de3f1de87cd99) - -Related: #2100464 ---- - test/TEST-35-LOGIN/test.sh | 6 +- - test/test-functions | 2 - - test/units/testsuite-35.sh | 228 ++++++++++++++++++------------------- - 3 files changed, 116 insertions(+), 120 deletions(-) - -diff --git a/test/TEST-35-LOGIN/test.sh b/test/TEST-35-LOGIN/test.sh -index 9762410fa3..add862c962 100755 ---- a/test/TEST-35-LOGIN/test.sh -+++ b/test/TEST-35-LOGIN/test.sh -@@ -2,9 +2,13 @@ - # SPDX-License-Identifier: LGPL-2.1-or-later - set -e - --TEST_DESCRIPTION="LOGIN" -+TEST_DESCRIPTION="Tests for systemd-logind" - - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" - -+test_append_files() { -+ image_install -o evemu-device evemu-event crond crontab -+} -+ - do_test "$@" -diff --git a/test/test-functions b/test/test-functions -index b0f3b28def..8ea2f97b71 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -1670,8 +1670,6 @@ install_basic_tools() { - image_install -o sushell - # in Debian ldconfig is just a shell script wrapper around ldconfig.real - image_install -o ldconfig.real -- # for TEST-35-LOGIN -- image_install -o evemu-device evemu-event - } - - install_debug_tools() { -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 21cb01c16f..86787e7a02 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -3,6 +3,24 @@ - set -eux - set -o pipefail - -+# shellcheck source=test/units/assert.sh -+. "$(dirname "$0")"/assert.sh -+ -+cleanup_test_user() ( -+ set +ex -+ -+ pkill -u "$(id -u logind-test-user)" -+ sleep 1 -+ pkill -KILL -u "$(id -u logind-test-user)" -+ userdel -r logind-test-user -+) -+ -+setup_test_user() { -+ mkdir -p /var/spool/cron /var/spool/mail -+ useradd -m -s /bin/bash logind-test-user -+ trap cleanup_test_user EXIT -+} -+ - test_enable_debug() { - mkdir -p /run/systemd/system/systemd-logind.service.d - cat >/run/systemd/system/systemd-logind.service.d/debug.conf <&2 -- exit 1 -- fi -+ assert_eq "$(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager KillUserProcesses)" "b false" - - cat >/run/systemd/logind.conf.d/kill-user-processes.conf <&2 -- exit 1 -- fi -+ assert_eq "$(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager KillUserProcesses)" "b true" - - rm -rf /run/systemd/logind.conf.d - } - - test_started() { -+ local pid -+ - systemctl restart systemd-logind.service - - # should start at boot, not with D-BUS activation -- LOGINDPID=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ pid=$(systemctl show systemd-logind.service -p ExecMainPID --value) - - # loginctl should succeed -- loginctl --no-pager -+ loginctl -+ -+ # logind should still be running -+ assert_eq "$(systemctl show systemd-logind.service -p ExecMainPID --value)" "$pid" - } - --# args: - wait_suspend() { -- timeout="$1" -- while [[ $timeout -gt 0 && ! -e /run/suspend.flag ]]; do -- sleep 1 -- timeout=$((timeout - 1)) -- done -- if [[ ! -e /run/suspend.flag ]]; then -- echo "closing lid did not cause suspend" >&2 -- exit 1 -- fi -+ timeout "${1?}" bash -c "while [[ ! -e /run/suspend.flag ]]; do sleep 1; done" - rm /run/suspend.flag - } - --test_suspend_tear_down() { -- set +e -+teardown_suspend() ( -+ set +eux - -- kill "$KILL_PID" --} -+ pkill evemu-device -+ -+ rm -rf /run/systemd/system/systemd-suspend.service.d -+ systemctl daemon-reload -+ -+ rm -f /run/udev/rules.d/70-logindtest-lid.rules -+ udevadm control --reload -+) - - test_suspend_on_lid() { -+ local pid input_name lid_dev -+ - if systemd-detect-virt --quiet --container; then - echo "Skipping suspend test in container" - return -@@ -90,8 +105,10 @@ test_suspend_on_lid() { - return - fi - -- KILL_PID= -- trap test_suspend_tear_down RETURN -+ trap teardown_suspend RETURN -+ -+ # save pid -+ pid=$(systemctl show systemd-logind.service -p ExecMainPID --value) - - # create fake suspend - mkdir -p /run/systemd/system/systemd-suspend.service.d -@@ -147,129 +164,127 @@ B: 15 00 00 00 00 00 00 00 00 - EOF - - evemu-device /run/lidswitch.evemu & -- KILL_PID="$!" - -- for ((i = 0; i < 20; i++)); do -- if (( i != 0 )); then sleep .5; fi -- -- INPUT_NAME=$(grep -l '^Fake Lid Switch' /sys/class/input/*/device/name || :) -- if [[ -n "$INPUT_NAME" ]]; then break; fi -- done -- if [[ -z "$INPUT_NAME" ]]; then -+ timeout 20 bash -c 'while ! grep "^Fake Lid Switch" /sys/class/input/*/device/name; do sleep .5; done' -+ input_name=$(grep -l '^Fake Lid Switch' /sys/class/input/*/device/name || :) -+ if [[ -z "$input_name" ]]; then - echo "cannot find fake lid switch." >&2 - exit 1 - fi -- INPUT_NAME=${INPUT_NAME%/device/name} -- LID_DEV=/dev/${INPUT_NAME#/sys/class/} -- udevadm info --wait-for-initialization=10s "$LID_DEV" -+ input_name=${input_name%/device/name} -+ lid_dev=/dev/${input_name#/sys/class/} -+ udevadm info --wait-for-initialization=10s "$lid_dev" - udevadm settle - - # close lid -- evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 1 -+ evemu-event "$lid_dev" --sync --type 5 --code 0 --value 1 - # need to wait for 30s suspend inhibition after boot - wait_suspend 31 - # open lid again -- evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 0 -+ evemu-event "$lid_dev" --sync --type 5 --code 0 --value 0 - - # waiting for 30s inhibition time between suspends - sleep 30 - - # now closing lid should cause instant suspend -- evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 1 -+ evemu-event "$lid_dev" --sync --type 5 --code 0 --value 1 - wait_suspend 2 -- evemu-event "$LID_DEV" --sync --type 5 --code 0 --value 0 -+ evemu-event "$lid_dev" --sync --type 5 --code 0 --value 0 - -- P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -- if [[ "$P" != "$LOGINDPID" ]]; then -- echo "logind crashed" >&2 -- exit 1 -- fi -+ assert_eq "$(systemctl show systemd-logind.service -p ExecMainPID --value)" "$pid" - } - - test_shutdown() { -+ local pid -+ -+ # save pid -+ pid=$(systemctl show systemd-logind.service -p ExecMainPID --value) -+ - # scheduled shutdown with wall message - shutdown 2>&1 - sleep 5 - shutdown -c || : - # logind should still be running -- P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -- if [[ "$P" != "$LOGINDPID" ]]; then -- echo "logind crashed" >&2 -- exit 1 -- fi -+ assert_eq "$(systemctl show systemd-logind.service -p ExecMainPID --value)" "$pid" - - # scheduled shutdown without wall message - shutdown --no-wall 2>&1 - sleep 5 - shutdown -c --no-wall || true -- P=$(systemctl show systemd-logind.service -p ExecMainPID --value) -- if [[ "$P" != "$LOGINDPID" ]]; then -- echo "logind crashed" >&2 -- exit 1 -- fi -+ assert_eq "$(systemctl show systemd-logind.service -p ExecMainPID --value)" "$pid" - } - --test_session_tear_down() { -- set +e -- -- rm -f /run/udev/rules.d/70-logindtest-scsi_debug-user.rules -- udevadm control --reload -+teardown_session() ( -+ set +ex - - systemctl stop getty@tty2.service - rm -rf /run/systemd/system/getty@tty2.service.d - systemctl daemon-reload - -- pkill -u logind-test-user -- userdel logind-test-user -+ pkill -u "$(id -u logind-test-user)" -+ sleep 1 -+ pkill -KILL -u "$(id -u logind-test-user)" - -+ rm -f /run/udev/rules.d/70-logindtest-scsi_debug-user.rules -+ udevadm control --reload - rmmod scsi_debug --} -+) -+ -+check_session() ( -+ set +ex -+ -+ local seat session leader_pid - --check_session() { -- loginctl - if [[ $(loginctl --no-legend | grep -c "logind-test-user") != 1 ]]; then - echo "no session or multiple sessions for logind-test-user." >&2 - return 1 - fi - -- SEAT=$(loginctl --no-legend | grep 'logind-test-user *seat' | awk '{ print $4 }') -- if [[ -z "$SEAT" ]]; then -+ seat=$(loginctl --no-legend | grep 'logind-test-user *seat' | awk '{ print $4 }') -+ if [[ -z "$seat" ]]; then - echo "no seat found for user logind-test-user" >&2 - return 1 - fi - -- SESSION=$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }') -- if [[ -z "$SESSION" ]]; then -+ session=$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }') -+ if [[ -z "$session" ]]; then - echo "no session found for user logind-test-user" >&2 - return 1 - fi - -- loginctl session-status "$SESSION" -- loginctl session-status "$SESSION" | grep -q "Unit: session-${SESSION}\.scope" -- LEADER_PID=$(loginctl session-status "$SESSION" | grep "Leader:" | awk '{ print $2 }') -- if [[ -z "$LEADER_PID" ]]; then -- echo "cannot found leader process for session $SESSION" >&2 -+ if ! loginctl session-status "$session" | grep -q "Unit: session-${session}\.scope"; then -+ echo "cannot find scope unit for session $session" >&2 -+ return 1 -+ fi -+ -+ leader_pid=$(loginctl session-status "$session" | grep "Leader:" | awk '{ print $2 }') -+ if [[ -z "$leader_pid" ]]; then -+ echo "cannot found leader process for session $session" >&2 - return 1 - fi - - # cgroup v1: "1:name=systemd:/user.slice/..."; unified hierarchy: "0::/user.slice" -- if ! grep -q -E '(name=systemd|^0:):.*session.*scope' /proc/"$LEADER_PID"/cgroup; then -- echo "FAIL: process $LEADER_PID is not in the session cgroup" >&2 -+ if ! grep -q -E '(name=systemd|^0:):.*session.*scope' /proc/"$leader_pid"/cgroup; then -+ echo "FAIL: process $leader_pid is not in the session cgroup" >&2 - cat /proc/self/cgroup - return 1 - fi --} -+) - - test_session() { -+ local dev -+ - if systemd-detect-virt --quiet --container; then -- echo " * Skipping ACL tests in container" -+ echo "Skipping ACL tests in container" - return - fi - -- trap test_session_tear_down RETURN -+ if [[ ! -c /dev/tty2 ]]; then -+ echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." -+ return -+ fi - -- # add user -- useradd -s /bin/bash logind-test-user -+ trap teardown_session RETURN - - # login with the test user to start a session - mkdir -p /run/systemd/system/getty@tty2.service.d -@@ -280,20 +295,14 @@ ExecStart= - ExecStart=-/sbin/agetty --autologin logind-test-user --noclear %I $TERM - EOF - systemctl daemon-reload -- systemctl start getty@tty2.service -+ systemctl restart getty@tty2.service - - # check session -- ret=1 - for ((i = 0; i < 30; i++)); do -- if (( i != 0)); then sleep 1; fi -- if check_session; then -- ret=0 -- break -- fi -+ (( i != 0 )) && sleep 1 -+ check_session && break - done -- if [[ "$ret" == "1" ]]; then -- exit 1 -- fi -+ check_session - - # scsi_debug should not be loaded yet - if [[ -d /sys/bus/pseudo/drivers/scsi_debug ]]; then -@@ -312,12 +321,8 @@ EOF - # coldplug: logind started with existing device - systemctl stop systemd-logind.service - modprobe scsi_debug -- for ((i = 0; i < 30; i++)); do -- if (( i != 0)); then sleep 1; fi -- if dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null); then -- break -- fi -- done -+ timeout 30 bash -c 'while ! ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null; do sleep 1; done' -+ dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null) - if [[ ! -b "$dev" ]]; then - echo "cannot find suitable scsi block device" >&2 - exit 1 -@@ -326,25 +331,17 @@ EOF - udevadm info "$dev" - - # trigger logind and activate session -- loginctl activate "$SESSION" -+ loginctl activate "$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }')" - - # check ACL - sleep 1 -- if ! getfacl -p "$dev" | grep -q "user:logind-test-user:rw-"; then -- echo "$dev has no ACL for user logind-test-user" >&2 -- getfacl -p "$dev" >&2 -- exit 1 -- fi -+ assert_in "user:logind-test-user:rw-" "$(getfacl -p "$dev")" - - # hotplug: new device appears while logind is running - rmmod scsi_debug - modprobe scsi_debug -- for ((i = 0; i < 30; i++)); do -- if (( i != 0)); then sleep 1; fi -- if dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null); then -- break -- fi -- done -+ timeout 30 bash -c 'while ! ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null; do sleep 1; done' -+ dev=/dev/$(ls /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*:*/block 2>/dev/null) - if [[ ! -b "$dev" ]]; then - echo "cannot find suitable scsi block device" >&2 - exit 1 -@@ -353,15 +350,12 @@ EOF - - # check ACL - sleep 1 -- if ! getfacl -p "$dev" | grep -q "user:logind-test-user:rw-"; then -- echo "$dev has no ACL for user logind-test-user" >&2 -- getfacl -p "$dev" >&2 -- exit 1 -- fi -+ assert_in "user:logind-test-user:rw-" "$(getfacl -p "$dev")" - } - - : >/failed - -+setup_test_user - test_enable_debug - test_properties - test_started diff --git a/SOURCES/0342-test-start-test-user-session-before-idle-action-sett.patch b/SOURCES/0342-test-start-test-user-session-before-idle-action-sett.patch deleted file mode 100644 index 3dadc2e..0000000 --- a/SOURCES/0342-test-start-test-user-session-before-idle-action-sett.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 2ac026ce61d73f76e33a31fdb29c73ec40a05dfc Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 8 Jul 2022 20:22:40 +0900 -Subject: [PATCH] test: start test user session before idle action setting is - changed - -Otherwise, idle action may be triggered before starting the test user -session. - -This also introduce create_session() and cleanup_session() helper -functions. - -Fixes #23952. - -(cherry picked from commit 9d9fd4ad0a66eea9635081e8ef765e29865d22bf) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 44 ++++++++++++++++++++++++-------------- - 1 file changed, 28 insertions(+), 16 deletions(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 86787e7a02..9c37fc36d0 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -214,7 +214,7 @@ test_shutdown() { - assert_eq "$(systemctl show systemd-logind.service -p ExecMainPID --value)" "$pid" - } - --teardown_session() ( -+cleanup_session() ( - set +ex - - systemctl stop getty@tty2.service -@@ -224,6 +224,12 @@ teardown_session() ( - pkill -u "$(id -u logind-test-user)" - sleep 1 - pkill -KILL -u "$(id -u logind-test-user)" -+) -+ -+teardown_session() ( -+ set +ex -+ -+ cleanup_session - - rm -f /run/udev/rules.d/70-logindtest-scsi_debug-user.rules - udevadm control --reload -@@ -271,21 +277,7 @@ check_session() ( - fi - ) - --test_session() { -- local dev -- -- if systemd-detect-virt --quiet --container; then -- echo "Skipping ACL tests in container" -- return -- fi -- -- if [[ ! -c /dev/tty2 ]]; then -- echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." -- return -- fi -- -- trap teardown_session RETURN -- -+create_session() { - # login with the test user to start a session - mkdir -p /run/systemd/system/getty@tty2.service.d - cat >/run/systemd/system/getty@tty2.service.d/override.conf < -Date: Wed, 13 Jul 2022 11:29:20 +0200 -Subject: [PATCH] test: ensure cleanup functions return success - -Otherwise the return value of the last command is propagated, which may -cause spurious test failures. E.g., pkill returns 1 if no process -matched, which may be a problem in cleanup session: - -cleanup_session() { -... - - pkill -u "$(id -u logind-test-user)" - sleep 1 - pkill -KILL -u "$(id -u logind-test-user)" -} - -If there are no remaining processes when the final pkill runs, it will -return 1 and therefore cleanup_session will return 1 as well. - -(cherry picked from commit bd681a7eb04fd6d1fb9631e277bef93ceb06b321) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 9c37fc36d0..ad14d8a73c 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -13,6 +13,8 @@ cleanup_test_user() ( - sleep 1 - pkill -KILL -u "$(id -u logind-test-user)" - userdel -r logind-test-user -+ -+ return 0 - ) - - setup_test_user() { -@@ -83,6 +85,8 @@ teardown_suspend() ( - - rm -f /run/udev/rules.d/70-logindtest-lid.rules - udevadm control --reload -+ -+ return 0 - ) - - test_suspend_on_lid() { -@@ -224,6 +228,8 @@ cleanup_session() ( - pkill -u "$(id -u logind-test-user)" - sleep 1 - pkill -KILL -u "$(id -u logind-test-user)" -+ -+ return 0 - ) - - teardown_session() ( -@@ -234,6 +240,8 @@ teardown_session() ( - rm -f /run/udev/rules.d/70-logindtest-scsi_debug-user.rules - udevadm control --reload - rmmod scsi_debug -+ -+ return 0 - ) - - check_session() ( diff --git a/SOURCES/0344-test-add-test-for-org.freedesktop.login1.Session-Set.patch b/SOURCES/0344-test-add-test-for-org.freedesktop.login1.Session-Set.patch deleted file mode 100644 index f5b5af5..0000000 --- a/SOURCES/0344-test-add-test-for-org.freedesktop.login1.Session-Set.patch +++ /dev/null @@ -1,138 +0,0 @@ -From 24e6f79352a94e6c0d13aefe355c5c316274103d Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Mon, 27 Jun 2022 08:37:22 +0200 -Subject: [PATCH] test: add test for org.freedesktop.login1.Session SetType - -(cherry picked from commit 9ac0855b614b068e699092be7ec8cb39559ff88f) - -Related: #2100464 ---- - src/login/meson.build | 3 ++ - src/login/test-session-properties.c | 71 +++++++++++++++++++++++++++++ - test/units/testsuite-35.sh | 16 +++++++ - 3 files changed, 90 insertions(+) - create mode 100644 src/login/test-session-properties.c - -diff --git a/src/login/meson.build b/src/login/meson.build -index 92f491665c..8ee364144c 100644 ---- a/src/login/meson.build -+++ b/src/login/meson.build -@@ -110,4 +110,7 @@ tests += [ - [liblogind_core, - libshared], - [threads]], -+ -+ [files('test-session-properties.c'), -+ [], [], [], '', 'manual'], - ] -diff --git a/src/login/test-session-properties.c b/src/login/test-session-properties.c -new file mode 100644 -index 0000000000..8406147a2c ---- /dev/null -+++ b/src/login/test-session-properties.c -@@ -0,0 +1,71 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+/* Usage: -+ * ./test-session-properties -+ * e.g., -+ * ./test-session-properties /org/freedesktop/login1/session/_32 -+ */ -+ -+#include "alloc-util.h" -+#include "bus-common-errors.h" -+#include "bus-locator.h" -+#include "string-util.h" -+#include "tests.h" -+ -+static BusLocator session; -+ -+/* Tests org.freedesktop.logind.Session SetType */ -+TEST(set_type) { -+ _cleanup_(sd_bus_flush_close_unrefp) sd_bus* bus = NULL; -+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; -+ const char* types[] = {"tty", "x11", "wayland", "mir", "web"}; -+ _cleanup_free_ char *type = NULL, *type2 = NULL; -+ -+ assert_se(sd_bus_open_system(&bus) >= 0); -+ -+ /* Default type is set */ -+ assert_se(bus_get_property_string(bus, &session, "Type", NULL, &type) >= 0); -+ assert_se(streq(type, "tty")); -+ -+ /* Type can only be set by the session controller (which we're not ATM) */ -+ assert_se(bus_call_method(bus, &session, "SetType", &error, NULL, "s", "x11") < 0); -+ assert_se(sd_bus_error_has_name(&error, BUS_ERROR_NOT_IN_CONTROL)); -+ -+ assert_se(bus_call_method(bus, &session, "TakeControl", NULL, NULL, "b", true) >= 0); -+ -+ /* All defined session types can be set */ -+ for (size_t i = 0; i < ELEMENTSOF(types); i++) { -+ type = mfree(type); -+ assert_se(bus_call_method(bus, &session, "SetType", NULL, NULL, "s", types[i]) >= 0); -+ assert_se(bus_get_property_string(bus, &session, "Type", NULL, &type) >= 0); -+ assert_se(streq(type, types[i])); -+ } -+ -+ /* An unknown type is rejected */ -+ sd_bus_error_free(&error); -+ assert_se(bus_call_method(bus, &session, "SetType", &error, NULL, "s", "hello") < 0); -+ assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)); -+ assert_se(bus_get_property_string(bus, &session, "Type", NULL, &type2) >= 0); -+ -+ /* Type is reset to the original value when we release control of the session */ -+ assert_se(!streq(type, "tty")); -+ assert_se(bus_call_method(bus, &session, "ReleaseControl", NULL, NULL, "") >= 0); -+ type = mfree(type); -+ assert_se(bus_get_property_string(bus, &session, "Type", NULL, &type) >= 0); -+ assert_se(streq(type, "tty")); -+} -+ -+static int intro(void) { -+ if (saved_argc <= 1) -+ return EXIT_FAILURE; -+ -+ session = (BusLocator) { -+ .destination = "org.freedesktop.login1", -+ .path = saved_argv[1], -+ .interface = "org.freedesktop.login1.Session", -+ }; -+ -+ return EXIT_SUCCESS; -+} -+ -+DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index ad14d8a73c..4fb2944e2d 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -373,6 +373,21 @@ EOF - assert_in "user:logind-test-user:rw-" "$(getfacl -p "$dev")" - } - -+test_session_properties() { -+ local s -+ -+ if [[ ! -c /dev/tty2 ]]; then -+ echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." -+ return -+ fi -+ -+ trap cleanup_session RETURN -+ create_session -+ -+ s=$(loginctl list-sessions --no-legend | awk '$3 == "logind-test-user" { print $1 }') -+ /usr/lib/systemd/tests/manual/test-session-properties "/org/freedesktop/login1/session/_3${s?}" -+} -+ - : >/failed - - setup_test_user -@@ -382,6 +397,7 @@ test_started - test_suspend_on_lid - test_shutdown - test_session -+test_session_properties - - touch /testok - rm /failed diff --git a/SOURCES/0345-test-add-a-simple-test-for-list-users.patch b/SOURCES/0345-test-add-a-simple-test-for-list-users.patch deleted file mode 100644 index 35c4a21..0000000 --- a/SOURCES/0345-test-add-a-simple-test-for-list-users.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 10d03dd6ea51b99488dcfa5e85c85fbddc86a243 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sun, 17 Jul 2022 15:35:22 +0200 -Subject: [PATCH] test: add a simple test for list-users - -(cherry picked from commit 6083f7a604267d02a648c76edd3e0cb7b83b4620) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 4fb2944e2d..28022b03cf 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -225,6 +225,8 @@ cleanup_session() ( - rm -rf /run/systemd/system/getty@tty2.service.d - systemctl daemon-reload - -+ loginctl disable-linger logind-test-user -+ - pkill -u "$(id -u logind-test-user)" - sleep 1 - pkill -KILL -u "$(id -u logind-test-user)" -@@ -388,6 +390,23 @@ test_session_properties() { - /usr/lib/systemd/tests/manual/test-session-properties "/org/freedesktop/login1/session/_3${s?}" - } - -+test_list_users() { -+ if [[ ! -c /dev/tty2 ]]; then -+ echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." -+ return -+ fi -+ -+ trap cleanup_session RETURN -+ create_session -+ -+ assert_eq "$(loginctl list-users --no-legend | awk '$2 == "logind-test-user" { print $1 }')" "$(id -ru logind-test-user)" -+ assert_eq "$(loginctl show-user --property Linger --value logind-test-user)" no -+ -+ loginctl enable-linger logind-test-user -+ -+ assert_eq "$(loginctl show-user --property Linger --value logind-test-user)" yes -+} -+ - : >/failed - - setup_test_user -@@ -398,6 +417,7 @@ test_suspend_on_lid - test_shutdown - test_session - test_session_properties -+test_list_users - - touch /testok - rm /failed diff --git a/SOURCES/0346-test-merge-grep-awk-calls.patch b/SOURCES/0346-test-merge-grep-awk-calls.patch deleted file mode 100644 index 32ed5b7..0000000 --- a/SOURCES/0346-test-merge-grep-awk-calls.patch +++ /dev/null @@ -1,43 +0,0 @@ -From b13ef318b4f02ad21f0235d22da4e22cb9745cc3 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sun, 17 Jul 2022 15:41:38 +0200 -Subject: [PATCH] test: merge grep | awk calls - -(cherry picked from commit 283db37a20900b549508b2bf6d9db898c9a0ca67) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 28022b03cf..d9eccee84f 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -262,7 +262,7 @@ check_session() ( - return 1 - fi - -- session=$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }') -+ session=$(loginctl --no-legend | awk '$3 == "logind-test-user" { print $1 }') - if [[ -z "$session" ]]; then - echo "no session found for user logind-test-user" >&2 - return 1 -@@ -273,7 +273,7 @@ check_session() ( - return 1 - fi - -- leader_pid=$(loginctl session-status "$session" | grep "Leader:" | awk '{ print $2 }') -+ leader_pid=$(loginctl session-status "$session" | awk '$1 == "Leader:" { print $2 }') - if [[ -z "$leader_pid" ]]; then - echo "cannot found leader process for session $session" >&2 - return 1 -@@ -353,7 +353,7 @@ EOF - udevadm info "$dev" - - # trigger logind and activate session -- loginctl activate "$(loginctl --no-legend | grep "logind-test-user" | awk '{ print $1 }')" -+ loginctl activate "$(loginctl --no-legend | awk '$3 == "logind-test-user" { print $1 }')" - - # check ACL - sleep 1 diff --git a/SOURCES/0347-test-wait-for-user-service-or-slice-to-be-finished.patch b/SOURCES/0347-test-wait-for-user-service-or-slice-to-be-finished.patch deleted file mode 100644 index ddad53e..0000000 --- a/SOURCES/0347-test-wait-for-user-service-or-slice-to-be-finished.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 1fe172a67c2bbbedfd08d6ec5a28386f197962f9 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Fri, 22 Jul 2022 15:45:24 +0900 -Subject: [PATCH] test: wait for user service or slice to be finished - -Hopefully fixes #24040. - -(cherry picked from commit 8015e2587045f8a58a15d4551c76521a4a3ff50c) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 27 ++++++++++++++++++++++----- - 1 file changed, 22 insertions(+), 5 deletions(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index d9eccee84f..d55ad6103e 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -221,15 +221,32 @@ test_shutdown() { - cleanup_session() ( - set +ex - -- systemctl stop getty@tty2.service -- rm -rf /run/systemd/system/getty@tty2.service.d -- systemctl daemon-reload -+ local uid -+ -+ uid=$(id -u logind-test-user) - - loginctl disable-linger logind-test-user - -- pkill -u "$(id -u logind-test-user)" -+ systemctl stop getty@tty2.service -+ -+ pkill -u "$uid" - sleep 1 -- pkill -KILL -u "$(id -u logind-test-user)" -+ pkill -KILL -u "$uid" -+ -+ if ! timeout 30 bash -c "while systemctl is-active --quiet user@${uid}.service; do sleep 1; done"; then -+ echo "WARNING: user@${uid}.service is still active, ignoring." -+ fi -+ -+ if ! timeout 30 bash -c "while systemctl is-active --quiet user-runtime-dir@${uid}.service; do sleep 1; done"; then -+ echo "WARNING: user-runtime-dir@${uid}.service is still active, ignoring." -+ fi -+ -+ if ! timeout 30 bash -c "while systemctl is-active --quiet user-${uid}.slice; do sleep 1; done"; then -+ echo "WARNING: user-${uid}.slice is still active, ignoring." -+ fi -+ -+ rm -rf /run/systemd/system/getty@tty2.service.d -+ systemctl daemon-reload - - return 0 - ) diff --git a/SOURCES/0348-test-terminate-session-and-user-on-cleanup.patch b/SOURCES/0348-test-terminate-session-and-user-on-cleanup.patch deleted file mode 100644 index 3454818..0000000 --- a/SOURCES/0348-test-terminate-session-and-user-on-cleanup.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a39c796e6ef6bcce655404b4aecc29603ebd4c3c Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 31 Jul 2022 00:11:59 +0900 -Subject: [PATCH] test: terminate session and user on cleanup - -(cherry picked from commit fe9d58b25a8b8b1029dcdfbae89fac59fb429707) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index d55ad6103e..b6b1639668 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -221,7 +221,7 @@ test_shutdown() { - cleanup_session() ( - set +ex - -- local uid -+ local uid s - - uid=$(id -u logind-test-user) - -@@ -229,6 +229,17 @@ cleanup_session() ( - - systemctl stop getty@tty2.service - -+ for s in $(loginctl --no-legend list-sessions | awk '$3 == "logind-test-user" { print $1 }'); do -+ echo "INFO: stopping session $s" -+ loginctl terminate-session "$s" -+ done -+ -+ loginctl terminate-user logind-test-user -+ -+ if ! timeout 30 bash -c "while loginctl --no-legend | grep -q logind-test-user; do sleep 1; done"; then -+ echo "WARNING: session for logind-test-user still active, ignoring." -+ fi -+ - pkill -u "$uid" - sleep 1 - pkill -KILL -u "$uid" diff --git a/SOURCES/0349-test-do-not-restart-getty-tty2-automatically.patch b/SOURCES/0349-test-do-not-restart-getty-tty2-automatically.patch deleted file mode 100644 index 361ad91..0000000 --- a/SOURCES/0349-test-do-not-restart-getty-tty2-automatically.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 76771540ffa4656e66e6ee64d1f23a08d7f2d1ae Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 31 Jul 2022 00:12:48 +0900 -Subject: [PATCH] test: do not restart getty@tty2 automatically - -(cherry picked from commit 54d5c126d30dc0bc4c88d776af2b59e240844d58) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index b6b1639668..8bd93ce92c 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -323,6 +323,7 @@ create_session() { - Type=simple - ExecStart= - ExecStart=-/sbin/agetty --autologin logind-test-user --noclear %I $TERM -+Restart=no - EOF - systemctl daemon-reload - diff --git a/SOURCES/0350-tests-add-test-for-StopIdleSessionSec-option.patch b/SOURCES/0350-tests-add-test-for-StopIdleSessionSec-option.patch deleted file mode 100644 index 46ed36c..0000000 --- a/SOURCES/0350-tests-add-test-for-StopIdleSessionSec-option.patch +++ /dev/null @@ -1,67 +0,0 @@ -From d18194ace1b40a39e6503f46cda768b26d403948 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Mon, 8 Aug 2022 11:39:52 +0200 -Subject: [PATCH] tests: add test for StopIdleSessionSec= option - -(cherry picked from commit 5aa633db228ed3de263500d99d40b5d5e2c9695a) - -Related: #2100464 ---- - test/units/testsuite-35.sh | 37 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 37 insertions(+) - -diff --git a/test/units/testsuite-35.sh b/test/units/testsuite-35.sh -index 8bd93ce92c..964adecbf2 100755 ---- a/test/units/testsuite-35.sh -+++ b/test/units/testsuite-35.sh -@@ -436,6 +436,42 @@ test_list_users() { - assert_eq "$(loginctl show-user --property Linger --value logind-test-user)" yes - } - -+ -+teardown_stop_idle_session() ( -+ set +eux -+ -+ rm -f /run/systemd/logind.conf.d/stop-idle-session.conf -+ systemctl restart systemd-logind.service -+ -+ cleanup_session -+) -+ -+test_stop_idle_session() { -+ local id ts -+ -+ if [[ ! -c /dev/tty2 ]]; then -+ echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}." -+ return -+ fi -+ -+ create_session -+ trap teardown_stop_idle_session RETURN -+ -+ id="$(loginctl --no-legend | awk '$3 == "logind-test-user" { print $1; }')" -+ ts="$(date '+%H:%M:%S')" -+ -+ mkdir -p /run/systemd/logind.conf.d -+ cat >/run/systemd/logind.conf.d/stop-idle-session.conf </failed - - setup_test_user -@@ -447,6 +483,7 @@ test_shutdown - test_session - test_session_properties - test_list_users -+test_stop_idle_session - - touch /testok - rm /failed diff --git a/SOURCES/0351-logind-schedule-idle-check-full-interval-from-now-if.patch b/SOURCES/0351-logind-schedule-idle-check-full-interval-from-now-if.patch deleted file mode 100644 index 6c6a97b..0000000 --- a/SOURCES/0351-logind-schedule-idle-check-full-interval-from-now-if.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 4147bdd9212ece576be2f481dff41daf58788f04 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Fri, 9 Sep 2022 13:38:58 +0200 -Subject: [PATCH] logind: schedule idle check full interval from now if we - couldn't figure out atime timestamp - -(cherry picked from commit ab7ae746c6eed3074aa7edc6ae9ecfbac157e0da) - -Related: #2100464 ---- - src/login/logind-session.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/login/logind-session.c b/src/login/logind-session.c -index a110b6f1c1..1d6aa80913 100644 ---- a/src/login/logind-session.c -+++ b/src/login/logind-session.c -@@ -706,7 +706,10 @@ static int session_dispatch_stop_on_idle(sd_event_source *source, uint64_t t, vo - return session_stop(s, /* force */ true); - } - -- r = sd_event_source_set_time(source, usec_add(ts.monotonic, s->manager->stop_idle_session_usec)); -+ r = sd_event_source_set_time( -+ source, -+ usec_add(dual_timestamp_is_set(&ts) ? ts.monotonic : now(CLOCK_MONOTONIC), -+ s->manager->stop_idle_session_usec)); - if (r < 0) - return log_error_errno(r, "Failed to configure stop on idle session event source: %m"); - diff --git a/SOURCES/0352-time-util-fix-buffer-over-run.patch b/SOURCES/0352-time-util-fix-buffer-over-run.patch deleted file mode 100644 index 08c53f4..0000000 --- a/SOURCES/0352-time-util-fix-buffer-over-run.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 694ffe6e760878bf4983fc63f5c9fe109e19b80e Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Thu, 7 Jul 2022 18:27:02 +0900 -Subject: [PATCH] time-util: fix buffer-over-run - -Fixes #23928. - -(cherry picked from commit 9102c625a673a3246d7e73d8737f3494446bad4e) - -Resolves: #2139388 ---- - src/basic/time-util.c | 2 +- - src/test/test-time-util.c | 5 +++++ - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/src/basic/time-util.c b/src/basic/time-util.c -index c0841af8f3..4610c37273 100644 ---- a/src/basic/time-util.c -+++ b/src/basic/time-util.c -@@ -598,7 +598,7 @@ char *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy) { - t = b; - } - -- n = MIN((size_t) k, l); -+ n = MIN((size_t) k, l-1); - - l -= n; - p += n; -diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c -index 15f4a0c169..20ad521db7 100644 ---- a/src/test/test-time-util.c -+++ b/src/test/test-time-util.c -@@ -238,6 +238,11 @@ TEST(format_timespan) { - test_format_timespan_accuracy(1); - test_format_timespan_accuracy(USEC_PER_MSEC); - test_format_timespan_accuracy(USEC_PER_SEC); -+ -+ /* See issue #23928. */ -+ _cleanup_free_ char *buf; -+ assert_se(buf = new(char, 5)); -+ assert_se(buf == format_timespan(buf, 5, 100005, 1000)); - } - - TEST(verify_timezone) { diff --git a/SOURCES/0353-coredump-adjust-whitespace.patch b/SOURCES/0353-coredump-adjust-whitespace.patch deleted file mode 100644 index 8d8e54c..0000000 --- a/SOURCES/0353-coredump-adjust-whitespace.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 6415f270c3733d3c80e4d5bdc2e67f9ffb108308 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 29 Nov 2022 09:00:16 +0100 -Subject: [PATCH] coredump: adjust whitespace - -(cherry picked from commit 510a146634f3e095b34e2a26023b1b1f99dcb8c0) - -Related: #2155516 ---- - src/coredump/coredump.c | 56 ++++++++++++++++++++--------------------- - 1 file changed, 28 insertions(+), 28 deletions(-) - -diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c -index fd156370b2..5f315b9a79 100644 ---- a/src/coredump/coredump.c -+++ b/src/coredump/coredump.c -@@ -109,16 +109,16 @@ enum { - }; - - static const char * const meta_field_names[_META_MAX] = { -- [META_ARGV_PID] = "COREDUMP_PID=", -- [META_ARGV_UID] = "COREDUMP_UID=", -- [META_ARGV_GID] = "COREDUMP_GID=", -- [META_ARGV_SIGNAL] = "COREDUMP_SIGNAL=", -- [META_ARGV_TIMESTAMP] = "COREDUMP_TIMESTAMP=", -- [META_ARGV_RLIMIT] = "COREDUMP_RLIMIT=", -- [META_ARGV_HOSTNAME] = "COREDUMP_HOSTNAME=", -- [META_COMM] = "COREDUMP_COMM=", -- [META_EXE] = "COREDUMP_EXE=", -- [META_UNIT] = "COREDUMP_UNIT=", -+ [META_ARGV_PID] = "COREDUMP_PID=", -+ [META_ARGV_UID] = "COREDUMP_UID=", -+ [META_ARGV_GID] = "COREDUMP_GID=", -+ [META_ARGV_SIGNAL] = "COREDUMP_SIGNAL=", -+ [META_ARGV_TIMESTAMP] = "COREDUMP_TIMESTAMP=", -+ [META_ARGV_RLIMIT] = "COREDUMP_RLIMIT=", -+ [META_ARGV_HOSTNAME] = "COREDUMP_HOSTNAME=", -+ [META_COMM] = "COREDUMP_COMM=", -+ [META_EXE] = "COREDUMP_EXE=", -+ [META_UNIT] = "COREDUMP_UNIT=", - }; - - typedef struct Context { -@@ -137,9 +137,9 @@ typedef enum CoredumpStorage { - } CoredumpStorage; - - static const char* const coredump_storage_table[_COREDUMP_STORAGE_MAX] = { -- [COREDUMP_STORAGE_NONE] = "none", -+ [COREDUMP_STORAGE_NONE] = "none", - [COREDUMP_STORAGE_EXTERNAL] = "external", -- [COREDUMP_STORAGE_JOURNAL] = "journal", -+ [COREDUMP_STORAGE_JOURNAL] = "journal", - }; - - DEFINE_PRIVATE_STRING_TABLE_LOOKUP(coredump_storage, CoredumpStorage); -@@ -155,13 +155,13 @@ static uint64_t arg_max_use = UINT64_MAX; - - static int parse_config(void) { - static const ConfigTableItem items[] = { -- { "Coredump", "Storage", config_parse_coredump_storage, 0, &arg_storage }, -- { "Coredump", "Compress", config_parse_bool, 0, &arg_compress }, -- { "Coredump", "ProcessSizeMax", config_parse_iec_uint64, 0, &arg_process_size_max }, -- { "Coredump", "ExternalSizeMax", config_parse_iec_uint64_infinity, 0, &arg_external_size_max }, -- { "Coredump", "JournalSizeMax", config_parse_iec_size, 0, &arg_journal_size_max }, -- { "Coredump", "KeepFree", config_parse_iec_uint64, 0, &arg_keep_free }, -- { "Coredump", "MaxUse", config_parse_iec_uint64, 0, &arg_max_use }, -+ { "Coredump", "Storage", config_parse_coredump_storage, 0, &arg_storage }, -+ { "Coredump", "Compress", config_parse_bool, 0, &arg_compress }, -+ { "Coredump", "ProcessSizeMax", config_parse_iec_uint64, 0, &arg_process_size_max }, -+ { "Coredump", "ExternalSizeMax", config_parse_iec_uint64_infinity, 0, &arg_external_size_max }, -+ { "Coredump", "JournalSizeMax", config_parse_iec_size, 0, &arg_journal_size_max }, -+ { "Coredump", "KeepFree", config_parse_iec_uint64, 0, &arg_keep_free }, -+ { "Coredump", "MaxUse", config_parse_iec_uint64, 0, &arg_max_use }, - {} - }; - -@@ -207,15 +207,15 @@ static int fix_acl(int fd, uid_t uid) { - static int fix_xattr(int fd, const Context *context) { - - static const char * const xattrs[_META_MAX] = { -- [META_ARGV_PID] = "user.coredump.pid", -- [META_ARGV_UID] = "user.coredump.uid", -- [META_ARGV_GID] = "user.coredump.gid", -- [META_ARGV_SIGNAL] = "user.coredump.signal", -- [META_ARGV_TIMESTAMP] = "user.coredump.timestamp", -- [META_ARGV_RLIMIT] = "user.coredump.rlimit", -- [META_ARGV_HOSTNAME] = "user.coredump.hostname", -- [META_COMM] = "user.coredump.comm", -- [META_EXE] = "user.coredump.exe", -+ [META_ARGV_PID] = "user.coredump.pid", -+ [META_ARGV_UID] = "user.coredump.uid", -+ [META_ARGV_GID] = "user.coredump.gid", -+ [META_ARGV_SIGNAL] = "user.coredump.signal", -+ [META_ARGV_TIMESTAMP] = "user.coredump.timestamp", -+ [META_ARGV_RLIMIT] = "user.coredump.rlimit", -+ [META_ARGV_HOSTNAME] = "user.coredump.hostname", -+ [META_COMM] = "user.coredump.comm", -+ [META_EXE] = "user.coredump.exe", - }; - - int r = 0; diff --git a/SOURCES/0354-basic-add-STRERROR-wrapper-for-strerror_r.patch b/SOURCES/0354-basic-add-STRERROR-wrapper-for-strerror_r.patch deleted file mode 100644 index fb351b7..0000000 --- a/SOURCES/0354-basic-add-STRERROR-wrapper-for-strerror_r.patch +++ /dev/null @@ -1,99 +0,0 @@ -From f42e15fdfba61fe6dee0bfb0a6a7f44fd9ca9dd3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 7 Oct 2022 12:28:31 +0200 -Subject: [PATCH] basic: add STRERROR() wrapper for strerror_r() - -(cherry picked from commit 2c5d05b3cd986568105d67891e4010b868dea24f) - -Related: #2155516 ---- - src/basic/errno-util.h | 10 +++++++++ - src/test/meson.build | 2 ++ - src/test/test-errno-util.c | 44 ++++++++++++++++++++++++++++++++++++++ - 3 files changed, 56 insertions(+) - create mode 100644 src/test/test-errno-util.c - -diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h -index 09abf0b751..a2d9876c15 100644 ---- a/src/basic/errno-util.h -+++ b/src/basic/errno-util.h -@@ -6,6 +6,16 @@ - - #include "macro.h" - -+/* strerror(3) says that glibc uses a maximum length of 1024 bytes. */ -+#define ERRNO_BUF_LEN 1024 -+ -+/* Note: the lifetime of the compound literal is the immediately surrounding block, -+ * see C11 §6.5.2.5, and -+ * https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks -+ * -+ * Note that we use the GNU variant of strerror_r() here. */ -+#define STRERROR(errnum) strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN) -+ - static inline void _reset_errno_(int *saved_errno) { - if (*saved_errno < 0) /* Invalidated by UNPROTECT_ERRNO? */ - return; -diff --git a/src/test/meson.build b/src/test/meson.build -index 14b7939b1f..032800dd85 100644 ---- a/src/test/meson.build -+++ b/src/test/meson.build -@@ -580,6 +580,8 @@ tests += [ - [files('test-errno-list.c') + - generated_gperf_headers], - -+ [files('test-errno-util.c')], -+ - [files('test-ip-protocol-list.c') + - shared_generated_gperf_headers], - -diff --git a/src/test/test-errno-util.c b/src/test/test-errno-util.c -new file mode 100644 -index 0000000000..284f451002 ---- /dev/null -+++ b/src/test/test-errno-util.c -@@ -0,0 +1,44 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+#include "errno-util.h" -+#include "stdio-util.h" -+#include "string-util.h" -+#include "tests.h" -+ -+TEST(strerror_not_threadsafe) { -+ /* Just check that strerror really is not thread-safe. */ -+ log_info("strerror(%d) → %s", 200, strerror(200)); -+ log_info("strerror(%d) → %s", 201, strerror(201)); -+ log_info("strerror(%d) → %s", INT_MAX, strerror(INT_MAX)); -+ -+ log_info("strerror(%d), strerror(%d) → %p, %p", 200, 201, strerror(200), strerror(201)); -+ -+ /* This call is not allowed, because the first returned string becomes invalid when -+ * we call strerror the second time: -+ * -+ * log_info("strerror(%d), strerror(%d) → %s, %s", 200, 201, strerror(200), strerror(201)); -+ */ -+} -+ -+TEST(STRERROR) { -+ /* Just check that STRERROR really is thread-safe. */ -+ log_info("STRERROR(%d) → %s", 200, STRERROR(200)); -+ log_info("STRERROR(%d) → %s", 201, STRERROR(201)); -+ log_info("STRERROR(%d), STRERROR(%d) → %s, %s", 200, 201, STRERROR(200), STRERROR(201)); -+ -+ const char *a = STRERROR(200), *b = STRERROR(201); -+ assert_se(strstr(a, "200")); -+ assert_se(strstr(b, "201")); -+ -+ /* Check with negative values */ -+ assert_se(streq(a, STRERROR(-200))); -+ assert_se(streq(b, STRERROR(-201))); -+ -+ const char *c = STRERROR(INT_MAX); -+ char buf[DECIMAL_STR_MAX(int)]; -+ xsprintf(buf, "%d", INT_MAX); /* INT_MAX is hexadecimal, use printf to convert to decimal */ -+ log_info("STRERROR(%d) → %s", INT_MAX, c); -+ assert_se(strstr(c, buf)); -+} -+ -+DEFINE_TEST_MAIN(LOG_INFO); diff --git a/SOURCES/0355-coredump-do-not-allow-user-to-access-coredumps-with-.patch b/SOURCES/0355-coredump-do-not-allow-user-to-access-coredumps-with-.patch deleted file mode 100644 index 8732578..0000000 --- a/SOURCES/0355-coredump-do-not-allow-user-to-access-coredumps-with-.patch +++ /dev/null @@ -1,384 +0,0 @@ -From d133e7f71d4530a25971eb99cd1a108f3ede72b9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 28 Nov 2022 12:12:55 +0100 -Subject: [PATCH] coredump: do not allow user to access coredumps with changed - uid/gid/capabilities - -When the user starts a program which elevates its permissions via setuid, -setgid, or capabilities set on the file, it may access additional information -which would then be visible in the coredump. We shouldn't make the the coredump -visible to the user in such cases. - -Reported-by: Matthias Gerstner - -This reads the /proc//auxv file and attaches it to the process metadata as -PROC_AUXV. Before the coredump is submitted, it is parsed and if either -at_secure was set (which the kernel will do for processes that are setuid, -setgid, or setcap), or if the effective uid/gid don't match uid/gid, the file -is not made accessible to the user. If we can't access this data, we assume the -file should not be made accessible either. In principle we could also access -the auxv data from a note in the core file, but that is much more complex and -it seems better to use the stand-alone file that is provided by the kernel. - -Attaching auxv is both convient for this patch (because this way it's passed -between the stages along with other fields), but I think it makes sense to save -it in general. - -We use the information early in the core file to figure out if the program was -32-bit or 64-bit and its endianness. This way we don't need heuristics to guess -whether the format of the auxv structure. This test might reject some cases on -fringe architecutes. But the impact would be limited: we just won't grant the -user permissions to view the coredump file. If people report that we're missing -some cases, we can always enhance this to support more architectures. - -I tested auxv parsing on amd64, 32-bit program on amd64, arm64, arm32, and -ppc64el, but not the whole coredump handling. - -(cherry picked from commit 3e4d0f6cf99f8677edd6a237382a65bfe758de03) - -Resolves: #2155516 ---- - src/basic/io-util.h | 9 ++ - src/coredump/coredump.c | 197 +++++++++++++++++++++++++++++++++++++--- - 2 files changed, 193 insertions(+), 13 deletions(-) - -diff --git a/src/basic/io-util.h b/src/basic/io-util.h -index 39728e06bc..3afb134266 100644 ---- a/src/basic/io-util.h -+++ b/src/basic/io-util.h -@@ -91,7 +91,16 @@ struct iovec_wrapper *iovw_new(void); - struct iovec_wrapper *iovw_free(struct iovec_wrapper *iovw); - struct iovec_wrapper *iovw_free_free(struct iovec_wrapper *iovw); - void iovw_free_contents(struct iovec_wrapper *iovw, bool free_vectors); -+ - int iovw_put(struct iovec_wrapper *iovw, void *data, size_t len); -+static inline int iovw_consume(struct iovec_wrapper *iovw, void *data, size_t len) { -+ /* Move data into iovw or free on error */ -+ int r = iovw_put(iovw, data, len); -+ if (r < 0) -+ free(data); -+ return r; -+} -+ - int iovw_put_string_field(struct iovec_wrapper *iovw, const char *field, const char *value); - int iovw_put_string_field_free(struct iovec_wrapper *iovw, const char *field, char *value); - void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new); -diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c -index 5f315b9a79..48911522f2 100644 ---- a/src/coredump/coredump.c -+++ b/src/coredump/coredump.c -@@ -4,6 +4,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -105,6 +106,7 @@ enum { - - META_EXE = _META_MANDATORY_MAX, - META_UNIT, -+ META_PROC_AUXV, - _META_MAX - }; - -@@ -119,10 +121,12 @@ static const char * const meta_field_names[_META_MAX] = { - [META_COMM] = "COREDUMP_COMM=", - [META_EXE] = "COREDUMP_EXE=", - [META_UNIT] = "COREDUMP_UNIT=", -+ [META_PROC_AUXV] = "COREDUMP_PROC_AUXV=", - }; - - typedef struct Context { - const char *meta[_META_MAX]; -+ size_t meta_size[_META_MAX]; - pid_t pid; - bool is_pid1; - bool is_journald; -@@ -184,13 +188,16 @@ static uint64_t storage_size_max(void) { - return 0; - } - --static int fix_acl(int fd, uid_t uid) { -+static int fix_acl(int fd, uid_t uid, bool allow_user) { -+ assert(fd >= 0); -+ assert(uid_is_valid(uid)); - - #if HAVE_ACL - int r; - -- assert(fd >= 0); -- assert(uid_is_valid(uid)); -+ /* We don't allow users to read coredumps if the uid or capabilities were changed. */ -+ if (!allow_user) -+ return 0; - - if (uid_is_system(uid) || uid_is_dynamic(uid) || uid == UID_NOBODY) - return 0; -@@ -250,7 +257,8 @@ static int fix_permissions( - const char *filename, - const char *target, - const Context *context, -- uid_t uid) { -+ uid_t uid, -+ bool allow_user) { - - int r; - -@@ -260,7 +268,7 @@ static int fix_permissions( - - /* Ignore errors on these */ - (void) fchmod(fd, 0640); -- (void) fix_acl(fd, uid); -+ (void) fix_acl(fd, uid, allow_user); - (void) fix_xattr(fd, context); - - r = fsync_full(fd); -@@ -330,6 +338,154 @@ static int make_filename(const Context *context, char **ret) { - return 0; - } - -+static int parse_auxv64( -+ const uint64_t *auxv, -+ size_t size_bytes, -+ int *at_secure, -+ uid_t *uid, -+ uid_t *euid, -+ gid_t *gid, -+ gid_t *egid) { -+ -+ assert(auxv || size_bytes == 0); -+ -+ if (size_bytes % (2 * sizeof(uint64_t)) != 0) -+ return log_warning_errno(SYNTHETIC_ERRNO(EIO), "Incomplete auxv structure (%zu bytes).", size_bytes); -+ -+ size_t words = size_bytes / sizeof(uint64_t); -+ -+ /* Note that we set output variables even on error. */ -+ -+ for (size_t i = 0; i + 1 < words; i += 2) -+ switch (auxv[i]) { -+ case AT_SECURE: -+ *at_secure = auxv[i + 1] != 0; -+ break; -+ case AT_UID: -+ *uid = auxv[i + 1]; -+ break; -+ case AT_EUID: -+ *euid = auxv[i + 1]; -+ break; -+ case AT_GID: -+ *gid = auxv[i + 1]; -+ break; -+ case AT_EGID: -+ *egid = auxv[i + 1]; -+ break; -+ case AT_NULL: -+ if (auxv[i + 1] != 0) -+ goto error; -+ return 0; -+ } -+ error: -+ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), -+ "AT_NULL terminator not found, cannot parse auxv structure."); -+} -+ -+static int parse_auxv32( -+ const uint32_t *auxv, -+ size_t size_bytes, -+ int *at_secure, -+ uid_t *uid, -+ uid_t *euid, -+ gid_t *gid, -+ gid_t *egid) { -+ -+ assert(auxv || size_bytes == 0); -+ -+ size_t words = size_bytes / sizeof(uint32_t); -+ -+ if (size_bytes % (2 * sizeof(uint32_t)) != 0) -+ return log_warning_errno(SYNTHETIC_ERRNO(EIO), "Incomplete auxv structure (%zu bytes).", size_bytes); -+ -+ /* Note that we set output variables even on error. */ -+ -+ for (size_t i = 0; i + 1 < words; i += 2) -+ switch (auxv[i]) { -+ case AT_SECURE: -+ *at_secure = auxv[i + 1] != 0; -+ break; -+ case AT_UID: -+ *uid = auxv[i + 1]; -+ break; -+ case AT_EUID: -+ *euid = auxv[i + 1]; -+ break; -+ case AT_GID: -+ *gid = auxv[i + 1]; -+ break; -+ case AT_EGID: -+ *egid = auxv[i + 1]; -+ break; -+ case AT_NULL: -+ if (auxv[i + 1] != 0) -+ goto error; -+ return 0; -+ } -+ error: -+ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), -+ "AT_NULL terminator not found, cannot parse auxv structure."); -+} -+ -+static int grant_user_access(int core_fd, const Context *context) { -+ int at_secure = -1; -+ uid_t uid = UID_INVALID, euid = UID_INVALID; -+ uid_t gid = GID_INVALID, egid = GID_INVALID; -+ int r; -+ -+ assert(core_fd >= 0); -+ assert(context); -+ -+ if (!context->meta[META_PROC_AUXV]) -+ return log_warning_errno(SYNTHETIC_ERRNO(ENODATA), "No auxv data, not adjusting permissions."); -+ -+ uint8_t elf[EI_NIDENT]; -+ errno = 0; -+ if (pread(core_fd, &elf, sizeof(elf), 0) != sizeof(elf)) -+ return log_warning_errno(errno > 0 ? -errno : -EIO, -+ "Failed to pread from coredump fd: %s", -+ errno > 0 ? STRERROR(errno) : "Unexpected EOF"); -+ -+ if (elf[EI_MAG0] != ELFMAG0 || -+ elf[EI_MAG1] != ELFMAG1 || -+ elf[EI_MAG2] != ELFMAG2 || -+ elf[EI_MAG3] != ELFMAG3 || -+ elf[EI_VERSION] != EV_CURRENT) -+ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), -+ "Core file does not have ELF header, not adjusting permissions."); -+ if (!IN_SET(elf[EI_CLASS], ELFCLASS32, ELFCLASS64) || -+ !IN_SET(elf[EI_DATA], ELFDATA2LSB, ELFDATA2MSB)) -+ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), -+ "Core file has strange ELF class, not adjusting permissions."); -+ -+ if ((elf[EI_DATA] == ELFDATA2LSB) != (__BYTE_ORDER == __LITTLE_ENDIAN)) -+ return log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), -+ "Core file has non-native endianness, not adjusting permissions."); -+ -+ if (elf[EI_CLASS] == ELFCLASS64) -+ r = parse_auxv64((const uint64_t*) context->meta[META_PROC_AUXV], -+ context->meta_size[META_PROC_AUXV], -+ &at_secure, &uid, &euid, &gid, &egid); -+ else -+ r = parse_auxv32((const uint32_t*) context->meta[META_PROC_AUXV], -+ context->meta_size[META_PROC_AUXV], -+ &at_secure, &uid, &euid, &gid, &egid); -+ if (r < 0) -+ return r; -+ -+ /* We allow access if we got all the data and at_secure is not set and -+ * the uid/gid matches euid/egid. */ -+ bool ret = -+ at_secure == 0 && -+ uid != UID_INVALID && euid != UID_INVALID && uid == euid && -+ gid != GID_INVALID && egid != GID_INVALID && gid == egid; -+ log_debug("Will %s access (uid="UID_FMT " euid="UID_FMT " gid="GID_FMT " egid="GID_FMT " at_secure=%s)", -+ ret ? "permit" : "restrict", -+ uid, euid, gid, egid, yes_no(at_secure)); -+ return ret; -+} -+ - static int save_external_coredump( - const Context *context, - int input_fd, -@@ -452,6 +608,8 @@ static int save_external_coredump( - context->meta[META_ARGV_PID], context->meta[META_COMM]); - truncated = r == 1; - -+ bool allow_user = grant_user_access(fd, context) > 0; -+ - #if HAVE_COMPRESSION - if (arg_compress) { - _cleanup_(unlink_and_freep) char *tmp_compressed = NULL; -@@ -489,7 +647,7 @@ static int save_external_coredump( - uncompressed_size += partial_uncompressed_size; - } - -- r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, context, uid); -+ r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, context, uid, allow_user); - if (r < 0) - return r; - -@@ -516,7 +674,7 @@ static int save_external_coredump( - "SIZE_LIMIT=%zu", max_size, - "MESSAGE_ID=" SD_MESSAGE_TRUNCATED_CORE_STR); - -- r = fix_permissions(fd, tmp, fn, context, uid); -+ r = fix_permissions(fd, tmp, fn, context, uid, allow_user); - if (r < 0) - return log_error_errno(r, "Failed to fix permissions and finalize coredump %s into %s: %m", coredump_tmpfile_name(tmp), fn); - -@@ -764,7 +922,7 @@ static int change_uid_gid(const Context *context) { - } - - static int submit_coredump( -- Context *context, -+ const Context *context, - struct iovec_wrapper *iovw, - int input_fd) { - -@@ -925,16 +1083,15 @@ static int save_context(Context *context, const struct iovec_wrapper *iovw) { - struct iovec *iovec = iovw->iovec + n; - - for (size_t i = 0; i < ELEMENTSOF(meta_field_names); i++) { -- char *p; -- - /* Note that these strings are NUL terminated, because we made sure that a - * trailing NUL byte is in the buffer, though not included in the iov_len - * count (see process_socket() and gather_pid_metadata_*()) */ - assert(((char*) iovec->iov_base)[iovec->iov_len] == 0); - -- p = startswith(iovec->iov_base, meta_field_names[i]); -+ const char *p = startswith(iovec->iov_base, meta_field_names[i]); - if (p) { - context->meta[i] = p; -+ context->meta_size[i] = iovec->iov_len - strlen(meta_field_names[i]); - count++; - break; - } -@@ -1176,6 +1333,7 @@ static int gather_pid_metadata(struct iovec_wrapper *iovw, Context *context) { - uid_t owner_uid; - pid_t pid; - char *t; -+ size_t size; - const char *p; - int r; - -@@ -1240,13 +1398,26 @@ static int gather_pid_metadata(struct iovec_wrapper *iovw, Context *context) { - (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_LIMITS=", t); - - p = procfs_file_alloca(pid, "cgroup"); -- if (read_full_virtual_file(p, &t, NULL) >=0) -+ if (read_full_virtual_file(p, &t, NULL) >= 0) - (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_CGROUP=", t); - - p = procfs_file_alloca(pid, "mountinfo"); -- if (read_full_virtual_file(p, &t, NULL) >=0) -+ if (read_full_virtual_file(p, &t, NULL) >= 0) - (void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_MOUNTINFO=", t); - -+ /* We attach /proc/auxv here. ELF coredumps also contain a note for this (NT_AUXV), see elf(5). */ -+ p = procfs_file_alloca(pid, "auxv"); -+ if (read_full_virtual_file(p, &t, &size) >= 0) { -+ char *buf = malloc(strlen("COREDUMP_PROC_AUXV=") + size + 1); -+ if (buf) { -+ /* Add a dummy terminator to make save_context() happy. */ -+ *((uint8_t*) mempcpy(stpcpy(buf, "COREDUMP_PROC_AUXV="), t, size)) = '\0'; -+ (void) iovw_consume(iovw, buf, size + strlen("COREDUMP_PROC_AUXV=")); -+ } -+ -+ free(t); -+ } -+ - if (get_process_cwd(pid, &t) >= 0) - (void) iovw_put_string_field_free(iovw, "COREDUMP_CWD=", t); - diff --git a/SOURCES/0356-Packit-build-SRPMs-in-Copr.patch b/SOURCES/0356-Packit-build-SRPMs-in-Copr.patch deleted file mode 100644 index 3cd833c..0000000 --- a/SOURCES/0356-Packit-build-SRPMs-in-Copr.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 43ca4cb2cb81e4107710e8a8c48df31d022a1136 Mon Sep 17 00:00:00 2001 -From: Laura Barcziova -Date: Wed, 9 Mar 2022 07:50:29 +0100 -Subject: [PATCH] Packit: build SRPMs in Copr - -Add srpm_build_deps key to the Packit config to specify needed dependencies for SRPM build -and indicate to build SRPM in Copr. - -(cherry picked from commit d15e1a29e3aab04ee79d5e3ec8e1e65fca78e165) - -Related: #2155516 ---- - .packit.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/.packit.yml b/.packit.yml -index ce8782aae2..e1cbea3b3a 100644 ---- a/.packit.yml -+++ b/.packit.yml -@@ -13,6 +13,7 @@ downstream_package_name: systemd - # `git describe` returns in systemd's case 'v245-xxx' which breaks RPM version - # detection (that expects 245-xxxx'). Let's tweak the version string accordingly - upstream_tag_template: "v{version}" -+srpm_build_deps: [] - - actions: - post-upstream-clone: diff --git a/SOURCES/0357-test-support-non-summer-time.patch b/SOURCES/0357-test-support-non-summer-time.patch deleted file mode 100644 index 9c98742..0000000 --- a/SOURCES/0357-test-support-non-summer-time.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 1e034561de36b0eda6356b15b5433bf8571d4067 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Sun, 30 Oct 2022 11:59:10 +0900 -Subject: [PATCH] test: support non-summer time - -Follow-up for 759ed0a2533da8840dea315d07f92e6bb0272cdd. - -(cherry picked from commit 59ab79a73d030a49bfdffd85897b6b30a2b132c5) - -Related: #2155516 ---- - test/units/testsuite-45.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/units/testsuite-45.sh b/test/units/testsuite-45.sh -index 75e07bc09a..38017a43ea 100755 ---- a/test/units/testsuite-45.sh -+++ b/test/units/testsuite-45.sh -@@ -39,7 +39,7 @@ test_timezone() { - if [[ -f /etc/timezone ]]; then - assert_eq "$(cat /etc/timezone)" "Europe/Kiev" - fi -- assert_in "Time zone: Europe/Kiev \(EEST, \+0[0-9]00\)" "$(timedatectl)" -+ assert_in "Time zone: Europe/Kiev \(EES*T, \+0[0-9]00\)" "$(timedatectl)" - - if [[ -n "$ORIG_TZ" ]]; then - echo 'reset timezone to original' diff --git a/SOURCES/0358-test-bump-the-base-VM-memory-to-768M.patch b/SOURCES/0358-test-bump-the-base-VM-memory-to-768M.patch deleted file mode 100644 index 91ee41d..0000000 --- a/SOURCES/0358-test-bump-the-base-VM-memory-to-768M.patch +++ /dev/null @@ -1,42 +0,0 @@ -From c518597dddb9b8a0b8d895b28ebb4792c8a32c6e Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Thu, 25 Aug 2022 14:52:30 +0200 -Subject: [PATCH] test: bump the base VM memory to 768M - -as with 512M some tests occasionally trip off OOM-killer (e.g. -TEST-64 + multipath). - -(cherry picked from commit 6a9c4977683a30fcd36baf64e35255e9846028c6) - -Related: #2155516 ---- - test/TEST-36-NUMAPOLICY/test.sh | 2 +- - test/test-functions | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/TEST-36-NUMAPOLICY/test.sh b/test/TEST-36-NUMAPOLICY/test.sh -index 7909b1dce3..a0bfd4079a 100755 ---- a/test/TEST-36-NUMAPOLICY/test.sh -+++ b/test/TEST-36-NUMAPOLICY/test.sh -@@ -9,7 +9,7 @@ TEST_NO_NSPAWN=1 - . "${TEST_BASE_DIR:?}/test-functions" - - if qemu_min_version "5.2.0"; then -- QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:-512M} -numa node,memdev=mem0,nodeid=0" -+ QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:-768M} -numa node,memdev=mem0,nodeid=0" - else - QEMU_OPTIONS="-numa node,nodeid=0" - fi -diff --git a/test/test-functions b/test/test-functions -index 8ea2f97b71..f9a80884e8 100644 ---- a/test/test-functions -+++ b/test/test-functions -@@ -450,7 +450,7 @@ run_qemu() { - qemu_options+=( - -smp "$QEMU_SMP" - -net none -- -m "${QEMU_MEM:-512M}" -+ -m "${QEMU_MEM:-768M}" - -nographic - -kernel "$KERNEL_BIN" - -drive "format=raw,cache=unsafe,file=$image" diff --git a/SOURCES/0359-test-don-t-overwrite-existing-QEMU_OPTIONS.patch b/SOURCES/0359-test-don-t-overwrite-existing-QEMU_OPTIONS.patch deleted file mode 100644 index 6a29b5f..0000000 --- a/SOURCES/0359-test-don-t-overwrite-existing-QEMU_OPTIONS.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 58b82abb17fd5c40b5c990a36c43ad558ef3cae1 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Tue, 20 Sep 2022 19:12:18 +0200 -Subject: [PATCH] test: don't overwrite existing $QEMU_OPTIONS - -(cherry picked from commit 761b1d83145a6f9f41ad9aafcb5f28d452582864) - -Related: #2155516 ---- - test/TEST-36-NUMAPOLICY/test.sh | 4 ++-- - test/TEST-53-ISSUE-16347/test.sh | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/test/TEST-36-NUMAPOLICY/test.sh b/test/TEST-36-NUMAPOLICY/test.sh -index a0bfd4079a..5c39b7c6d8 100755 ---- a/test/TEST-36-NUMAPOLICY/test.sh -+++ b/test/TEST-36-NUMAPOLICY/test.sh -@@ -9,9 +9,9 @@ TEST_NO_NSPAWN=1 - . "${TEST_BASE_DIR:?}/test-functions" - - if qemu_min_version "5.2.0"; then -- QEMU_OPTIONS="-object memory-backend-ram,id=mem0,size=${QEMU_MEM:-768M} -numa node,memdev=mem0,nodeid=0" -+ QEMU_OPTIONS+=" -object memory-backend-ram,id=mem0,size=${QEMU_MEM:-768M} -numa node,memdev=mem0,nodeid=0" - else -- QEMU_OPTIONS="-numa node,nodeid=0" -+ QEMU_OPTIONS+=" -numa node,nodeid=0" - fi - - do_test "$@" -diff --git a/test/TEST-53-ISSUE-16347/test.sh b/test/TEST-53-ISSUE-16347/test.sh -index 7f44c66bff..6d4821d2c1 100755 ---- a/test/TEST-53-ISSUE-16347/test.sh -+++ b/test/TEST-53-ISSUE-16347/test.sh -@@ -5,7 +5,7 @@ set -e - TEST_DESCRIPTION="test timer units when initial clock is ahead" - TEST_NO_NSPAWN=1 - --QEMU_OPTIONS="-rtc base=$(date -u +%Y-%m-%dT%H:%M:%S -d '+3 days')" -+QEMU_OPTIONS+=" -rtc base=$(date -u +%Y-%m-%dT%H:%M:%S -d '+3 days')" - - # shellcheck source=test/test-functions - . "${TEST_BASE_DIR:?}/test-functions" diff --git a/SOURCES/0360-shared-json-allow-json_variant_dump-to-return-an-err.patch b/SOURCES/0360-shared-json-allow-json_variant_dump-to-return-an-err.patch deleted file mode 100644 index 0028708..0000000 --- a/SOURCES/0360-shared-json-allow-json_variant_dump-to-return-an-err.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 022cb8bb2028571b9119fd4ae95c87c96f816d6c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 18 Oct 2022 18:09:06 +0200 -Subject: [PATCH] shared/json: allow json_variant_dump() to return an error - -(cherry picked from commit 7922ead507e0d83e4ec72a8cbd2b67194766e58c) - -Related: #2149074 ---- - src/shared/json.c | 7 ++++--- - src/shared/json.h | 2 +- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/shared/json.c b/src/shared/json.c -index bcc109abc2..f91738227b 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -1768,9 +1768,9 @@ int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) { - return (int) sz - 1; - } - --void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix) { -+int json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix) { - if (!v) -- return; -+ return 0; - - if (!f) - f = stdout; -@@ -1796,7 +1796,8 @@ void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const cha - fputc('\n', f); /* In case of SSE add a second newline */ - - if (flags & JSON_FORMAT_FLUSH) -- fflush(f); -+ return fflush_and_check(f); -+ return 0; - } - - int json_variant_filter(JsonVariant **v, char **to_remove) { -diff --git a/src/shared/json.h b/src/shared/json.h -index dd73c1e497..e4bfeae8f5 100644 ---- a/src/shared/json.h -+++ b/src/shared/json.h -@@ -195,7 +195,7 @@ typedef enum JsonFormatFlags { - } JsonFormatFlags; - - int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret); --void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix); -+int json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix); - - int json_variant_filter(JsonVariant **v, char **to_remove); - diff --git a/SOURCES/0361-shared-json-use-different-return-code-for-empty-inpu.patch b/SOURCES/0361-shared-json-use-different-return-code-for-empty-inpu.patch deleted file mode 100644 index 12859fd..0000000 --- a/SOURCES/0361-shared-json-use-different-return-code-for-empty-inpu.patch +++ /dev/null @@ -1,89 +0,0 @@ -From ffed186cce8e5a20187f6f652be94e3135b74eed Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 19 Oct 2022 08:41:13 +0200 -Subject: [PATCH] shared/json: use different return code for empty input - -It is useful to distinguish if json_parse_file() got no input or invalid input. -Use different return codes for the two cases. - -(cherry picked from commit 87a16eb8b54002a49f12944fc09ce45d0cbadf45) - -Related: #2149074 ---- - src/shared/elf-util.c | 2 +- - src/shared/json.c | 6 ++++-- - src/test/test-json.c | 18 ++++++++++++++++++ - 3 files changed, 23 insertions(+), 3 deletions(-) - -diff --git a/src/shared/elf-util.c b/src/shared/elf-util.c -index 6d9fcfbbf2..392ed9f31b 100644 ---- a/src/shared/elf-util.c -+++ b/src/shared/elf-util.c -@@ -800,7 +800,7 @@ int parse_elf_object(int fd, const char *executable, bool fork_disable_dump, cha - return -errno; - - r = json_parse_file(json_in, NULL, 0, &package_metadata, NULL, NULL); -- if (r < 0 && r != -EINVAL) /* EINVAL: json was empty, so we got nothing, but that's ok */ -+ if (r < 0 && r != -ENODATA) /* ENODATA: json was empty, so we got nothing, but that's ok */ - return r; - } - -diff --git a/src/shared/json.c b/src/shared/json.c -index f91738227b..70e46fabb1 100644 ---- a/src/shared/json.c -+++ b/src/shared/json.c -@@ -3170,7 +3170,6 @@ int json_parse_continue(const char **p, JsonParseFlags flags, JsonVariant **ret, - int json_parse_file_at(FILE *f, int dir_fd, const char *path, JsonParseFlags flags, JsonVariant **ret, unsigned *ret_line, unsigned *ret_column) { - _cleanup_(json_source_unrefp) JsonSource *source = NULL; - _cleanup_free_ char *text = NULL; -- const char *p; - int r; - - if (f) -@@ -3182,13 +3181,16 @@ int json_parse_file_at(FILE *f, int dir_fd, const char *path, JsonParseFlags fla - if (r < 0) - return r; - -+ if (isempty(text)) -+ return -ENODATA; -+ - if (path) { - source = json_source_new(path); - if (!source) - return -ENOMEM; - } - -- p = text; -+ const char *p = text; - return json_parse_internal(&p, source, flags, ret, ret_line, ret_column, false); - } - -diff --git a/src/test/test-json.c b/src/test/test-json.c -index b385edc269..2256492fb2 100644 ---- a/src/test/test-json.c -+++ b/src/test/test-json.c -@@ -346,6 +346,24 @@ TEST(build) { - assert_se(json_variant_equal(a, b)); - } - -+TEST(json_parse_file_empty) { -+ _cleanup_fclose_ FILE *f = NULL; -+ _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; -+ -+ assert_se(fopen_unlocked("/dev/null", "re", &f) >= 0); -+ assert_se(json_parse_file(f, "waldo", 0, &v, NULL, NULL) == -ENODATA); -+ assert_se(v == NULL); -+} -+ -+TEST(json_parse_file_invalid) { -+ _cleanup_fclose_ FILE *f = NULL; -+ _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; -+ -+ assert_se(f = fmemopen_unlocked((void*) "kookoo", 6, "r")); -+ assert_se(json_parse_file(f, "waldo", 0, &v, NULL, NULL) == -EINVAL); -+ assert_se(v == NULL); -+} -+ - TEST(source) { - static const char data[] = - "\n" diff --git a/SOURCES/0362-coredump-avoid-deadlock-when-passing-processed-backt.patch b/SOURCES/0362-coredump-avoid-deadlock-when-passing-processed-backt.patch deleted file mode 100644 index 589ddb9..0000000 --- a/SOURCES/0362-coredump-avoid-deadlock-when-passing-processed-backt.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 35a233228ff0105892b3edc86a0cdda06282a9ac Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 18 Oct 2022 18:23:53 +0200 -Subject: [PATCH] coredump: avoid deadlock when passing processed backtrace - data - -We would deadlock when passing the data back from the forked-off process that -was doing backtrace generation back to the coredump parent. This is because we -fork the child and wait for it to exit. The child tries to write too much data -to the output pipe, and and after the first 64k blocks on the parent because -the pipe is full. The bug surfaced in Fedora because of a combination of four -factors: -- 87707784c70dc9894ec613df0a6e75e732a362a3 was backported to v251.5, which - allowed coredump processing to be successful. -- 1a0281a3ebf4f8c16d40aa9e63103f16cd23bb2a was NOT backported, so the output - was very verbose. -- Fedora has the ELF package metadata available, so a lot of output can be - generated. Most other distros just don't have the information. -- gnome-calendar crashes and has a bazillion modules and 69596 bytes of output - are generated for it. - -Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2135778. - -The code is changed to try to write data opportunistically. If we get partial -information, that is still logged. In is generally better to log partial -backtrace information than nothing at all. - -(cherry picked from commit 076b807be472630692c5348c60d0c2b7b28ad437) - -Resolves: #2149074 ---- - src/shared/elf-util.c | 37 +++++++++++++++++++++++++++++++------ - 1 file changed, 31 insertions(+), 6 deletions(-) - -diff --git a/src/shared/elf-util.c b/src/shared/elf-util.c -index 392ed9f31b..644fbae9ce 100644 ---- a/src/shared/elf-util.c -+++ b/src/shared/elf-util.c -@@ -30,6 +30,9 @@ - #define THREADS_MAX 64 - #define ELF_PACKAGE_METADATA_ID 0xcafe1a7e - -+/* The amount of data we're willing to write to each of the output pipes. */ -+#define COREDUMP_PIPE_MAX (1024*1024U) -+ - static void *dw_dl = NULL; - static void *elf_dl = NULL; - -@@ -700,13 +703,13 @@ int parse_elf_object(int fd, const char *executable, bool fork_disable_dump, cha - return r; - - if (ret) { -- r = RET_NERRNO(pipe2(return_pipe, O_CLOEXEC)); -+ r = RET_NERRNO(pipe2(return_pipe, O_CLOEXEC|O_NONBLOCK)); - if (r < 0) - return r; - } - - if (ret_package_metadata) { -- r = RET_NERRNO(pipe2(json_pipe, O_CLOEXEC)); -+ r = RET_NERRNO(pipe2(json_pipe, O_CLOEXEC|O_NONBLOCK)); - if (r < 0) - return r; - } -@@ -750,8 +753,24 @@ int parse_elf_object(int fd, const char *executable, bool fork_disable_dump, cha - goto child_fail; - - if (buf) { -- r = loop_write(return_pipe[1], buf, strlen(buf), false); -- if (r < 0) -+ size_t len = strlen(buf); -+ -+ if (len > COREDUMP_PIPE_MAX) { -+ /* This is iffy. A backtrace can be a few hundred kilobytes, but too much is -+ * too much. Let's log a warning and ignore the rest. */ -+ log_warning("Generated backtrace is %zu bytes (more than the limit of %u bytes), backtrace will be truncated.", -+ len, COREDUMP_PIPE_MAX); -+ len = COREDUMP_PIPE_MAX; -+ } -+ -+ /* Bump the space for the returned string. -+ * Failure is ignored, because partial output is still useful. */ -+ (void) fcntl(return_pipe[1], F_SETPIPE_SZ, len); -+ -+ r = loop_write(return_pipe[1], buf, len, false); -+ if (r == -EAGAIN) -+ log_warning("Write failed, backtrace will be truncated."); -+ else if (r < 0) - goto child_fail; - - return_pipe[1] = safe_close(return_pipe[1]); -@@ -760,13 +779,19 @@ int parse_elf_object(int fd, const char *executable, bool fork_disable_dump, cha - if (package_metadata) { - _cleanup_fclose_ FILE *json_out = NULL; - -+ /* Bump the space for the returned string. We don't know how much space we'll need in -+ * advance, so we'll just try to write as much as possible and maybe fail later. */ -+ (void) fcntl(json_pipe[1], F_SETPIPE_SZ, COREDUMP_PIPE_MAX); -+ - json_out = take_fdopen(&json_pipe[1], "w"); - if (!json_out) { - r = -errno; - goto child_fail; - } - -- json_variant_dump(package_metadata, JSON_FORMAT_FLUSH, json_out, NULL); -+ r = json_variant_dump(package_metadata, JSON_FORMAT_FLUSH, json_out, NULL); -+ if (r < 0) -+ log_warning_errno(r, "Failed to write JSON package metadata, ignoring: %m"); - } - - _exit(EXIT_SUCCESS); -@@ -801,7 +826,7 @@ int parse_elf_object(int fd, const char *executable, bool fork_disable_dump, cha - - r = json_parse_file(json_in, NULL, 0, &package_metadata, NULL, NULL); - if (r < 0 && r != -ENODATA) /* ENODATA: json was empty, so we got nothing, but that's ok */ -- return r; -+ log_warning_errno(r, "Failed to read or parse json metadata, ignoring: %m"); - } - - if (ret) diff --git a/SOURCES/0363-test-disable-flaky-subtests-that-require-udevadm-wai.patch b/SOURCES/0363-test-disable-flaky-subtests-that-require-udevadm-wai.patch deleted file mode 100644 index d87223e..0000000 --- a/SOURCES/0363-test-disable-flaky-subtests-that-require-udevadm-wai.patch +++ /dev/null @@ -1,34 +0,0 @@ -From a71653b20b889a71c6643171603e65b0ca945ea4 Mon Sep 17 00:00:00 2001 -From: Frantisek Sumsal -Date: Wed, 30 Nov 2022 15:24:33 +0100 -Subject: [PATCH] test: disable flaky subtests that require udevadm wait/lock - -Certain TEST-64-UDEV-STORAGE tests require `udevadm wait` and `udevadm -lock` verbs to work reliably. Since we don't plan to backport the verbs -to RHEL 9.1 and older, let's skip the tests to make CIs a bit more -reliable when dealing with z-streams. - -Necessary only on RHEL 9.1 and 9.0. - -rhel-only -Related: #2149074 ---- - test/TEST-64-UDEV-STORAGE/test.sh | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/test/TEST-64-UDEV-STORAGE/test.sh b/test/TEST-64-UDEV-STORAGE/test.sh -index 2a5b5b2dd3..659b03e07b 100755 ---- a/test/TEST-64-UDEV-STORAGE/test.sh -+++ b/test/TEST-64-UDEV-STORAGE/test.sh -@@ -310,6 +310,11 @@ EOF - - # Test case for issue https://github.com/systemd/systemd/issues/19946 - testcase_simultaneous_events() { -+ if ! "$BUILD_DIR/udevadm" lock --version >/dev/null; then -+ echo "This test is flaky without udevadm wait/lock, skipping the test..." -+ return 77 -+ fi -+ - local qemu_opts=("-device virtio-scsi-pci,id=scsi") - local partdisk="${TESTDIR:?}/simultaneousevents.img" - diff --git a/SOURCES/split-files.py b/SOURCES/split-files.py index 7622210..dd9ec8f 100644 --- a/SOURCES/split-files.py +++ b/SOURCES/split-files.py @@ -17,18 +17,19 @@ def files(root): o_libs = open('.file-list-libs', 'w') o_udev = open('.file-list-udev', 'w') +o_boot = open('.file-list-boot', 'w') o_pam = open('.file-list-pam', 'w') o_rpm_macros = open('.file-list-rpm-macros', 'w') o_devel = open('.file-list-devel', 'w') o_container = open('.file-list-container', 'w') o_networkd = open('.file-list-networkd', 'w') -o_resolved = open('.file-list-resolved', 'w') o_oomd = open('.file-list-oomd', 'w') o_remote = open('.file-list-remote', 'w') +o_resolve = open('.file-list-resolve', 'w') o_tests = open('.file-list-tests', 'w') o_standalone_tmpfiles = open('.file-list-standalone-tmpfiles', 'w') o_standalone_sysusers = open('.file-list-standalone-sysusers', 'w') -o_rest = open('.file-list-rest', 'w') +o_main = open('.file-list-main', 'w') for file in files(buildroot): n = file.path[1:] if re.match(r'''/usr/(share|include)$| @@ -58,7 +59,11 @@ for file in files(buildroot): o = o_rpm_macros elif '/usr/lib/systemd/tests' in n: o = o_tests - elif re.search(r'/lib.*\.pc|/man3/|/usr/include|(?/dev/null || useradd -r -l -g systemd-oom -d / -s /s %global _docdir_fmt %{name} -%files -f %{name}.lang -f .file-list-rest +%files -f %{name}.lang -f .file-list-main %doc %{_pkgdocdir} %exclude %{_pkgdocdir}/LICENSE.* %license LICENSE.GPL2 LICENSE.LGPL2.1 @@ -1209,11 +1117,15 @@ getent passwd systemd-oom &>/dev/null || useradd -r -l -g systemd-oom -d / -s /s %files udev -f .file-list-udev +%if 0%{?have_gnu_efi} +%files boot-unsigned -f .file-list-boot +%endif + %files container -f .file-list-container %files journal-remote -f .file-list-remote -%files resolved -f .file-list-resolved +%files resolved -f .file-list-resolve %files oomd -f .file-list-oomd @@ -1222,39 +1134,148 @@ getent passwd systemd-oom &>/dev/null || useradd -r -l -g systemd-oom -d / -s /s %files standalone-sysusers -f .file-list-standalone-sysusers %changelog -* Mon Feb 13 2023 systemd maintenance team - 250-12.3 -- shared/json: allow json_variant_dump() to return an error (#2149074) -- shared/json: use different return code for empty input (#2149074) -- coredump: avoid deadlock when passing processed backtrace data (#2149074) -- test: disable flaky subtests that require udevadm wait/lock (#2149074) - -* Mon Jan 16 2023 systemd maintenance team - 250-12.2 -- coredump: adjust whitespace (#2155516) -- basic: add STRERROR() wrapper for strerror_r() (#2155516) -- coredump: do not allow user to access coredumps with changed uid/gid/capabilities (#2155516) -- Packit: build SRPMs in Copr (#2155516) -- test: support non-summer time (#2155516) -- test: bump the base VM memory to 768M (#2155516) -- test: don't overwrite existing $QEMU_OPTIONS (#2155516) - -* Mon Nov 07 2022 systemd maintenance team - 250-12.1 -- time-util: fix buffer-over-run (#2139388) - -* Fri Sep 23 2022 systemd maintenance team - 250-12 -- core/load-fragment: move config_parse_sec_fix_0 to src/shared (#2100464) -- logind: add option to stop idle sessions after specified timeout (#2100464) -- tree-wide: fix typo (#2100464) -- test: several cleanups for TEST-35-LOGIN (#2100464) -- test: start test user session before idle action setting is changed (#2100464) -- test: ensure cleanup functions return success (#2100464) -- test: add test for org.freedesktop.login1.Session SetType (#2100464) -- test: add a simple test for list-users (#2100464) -- test: merge grep | awk calls (#2100464) -- test: wait for user service or slice to be finished (#2100464) -- test: terminate session and user on cleanup (#2100464) -- test: do not restart getty@tty2 automatically (#2100464) -- tests: add test for StopIdleSessionSec= option (#2100464) -- logind: schedule idle check full interval from now if we couldn't figure out atime timestamp (#2100464) +* Mon Mar 20 2023 systemd maintenance team - 252-13 +- spec: release bump (#2179165) + +* Mon Mar 20 2023 systemd maintenance team - 252-12 +- unit: In cgroupv1, gracefully terminate delegated scopes again (#2179165) + +* Tue Mar 14 2023 systemd maintenance team - 252-11 +- spec: release bump (#2175619) + +* Fri Mar 10 2023 systemd maintenance team - 252-10 +- spec: move man for sd-boot into boot-unsigned subpackage (#2175619) + +* Fri Mar 10 2023 systemd maintenance team - 252-9 +- Revert "user: delegate cpu controller, assign weights to user slices" (#2173996) +- systemd: Support OOMPolicy in scope units (#2175619) +- systemd: Default to OOMPolicy=continue for login session scopes (#2175619) +- man: rework description of OOMPolicy= a bit (#2175619) +- core,man: add missing integration of OOMPolicy= in scopes (#2175619) +- meson: Store fuzz tests in structured way (#2175619) +- meson: Generate fuzzer inputs with directives (#2175619) +- oss-fuzz: include generated corpora in the final zip file (#2175619) + +* Mon Feb 27 2023 systemd maintenance team - 252-8 +- journal-file: Fix return value in bump_entry_array() (#2173682) + +* Mon Feb 27 2023 systemd maintenance team - 252-7 +- test: add coverage for #24177 (#1985288) +- logind-session: make stopping of idle session visible to admins (#2172401) + +* Wed Feb 22 2023 systemd maintenance team - 252-6 +- journalctl: actually run the static destructors (#2122500) +- efi: drop executable-stack bit from .elf file (#2140646) +- install: fail early if specifier expansion failed (#2138081) +- test: add coverage for #26467 (#2138081) + +* Fri Feb 17 2023 systemd maintenance team - 252-5 +- nss-myhostname: fix inverted condition in (#2167468) +- nss-myhostname: do not return empty result with NSS_STATUS_SUCCESS (#2167468) +- sleep: rename hibernate_delay_sec -> _usec (#2151612) +- sleep: fetch_batteries_capacity_by_name() does not return -ENOENT (#2151612) +- sleep: drop unnecessary temporal vaiable and initialization (#2151612) +- sleep: introduce SuspendEstimationSec= (#2151612) +- sleep: coding style fixlets (#2151612) +- sleep: simplify code a bit (#2151612) +- sleep: fix indentation (#2151612) +- sleep: enumerate only existing and non-device batteries (#2151612) +- core: when isolating to a unit, also keep units running that are triggered by units we keep running (#1952378) +- udev/net_id: introduce naming scheme for RHEL-9.2 (#2170500) + +* Mon Feb 06 2023 systemd maintenance team - 252-4 +- udev: make get_virtfn_info() provide physical PCI device (#2159448) +- test: make helper_check_device_units() log unit name (#2138081) +- test: add a testcase for lvextend (#2138081) +- pid1: fix segv triggered by status query (#26279) (#2138081) +- test: create config under /run (#2138081) +- test: add tests for mDNS and LLMNR settings (#2138081) +- resolved: introduce the _localdnsstub and _localdnsproxy special hostnames for 127.0.0.54 + 127.0.0.53 (#2138081) +- test: wait for the monitoring service to become active (#2138081) +- test: suppress echo in monitor_check_rr() (#2138081) +- Revert "test: wait for the monitoring service to become active" (#2138081) +- test: show and check almost all journal entries since the relevant command being invoked (#2138081) +- test: cover IPv6 in the resolved test suite (#2138081) +- test: add a couple of SRV records to check service resolution (#2138081) +- test: add a test for the OPENPGPKEY RR (#2138081) +- test: don't hang indefinitely on no match (#2138081) +- test-ndisc: fix memleak and fd leak (#2138081) +- test-unit-name: fix fd leak (#2138081) +- test: bump D-Bus service start timeout if we run without accel (#2138081) +- test: bump the client-side timeout in sd-bus as well (#2138081) +- test: bump the container spawn timeout to 60s (#2138081) +- network: fix memleak (#2138081) +- busctl: fix introspecting DBus properties (#2138081) +- busctl: simplify peeking the type (#2138081) +- resolve: drop redundant call of socket_ipv6_is_supported() (#2138081) +- resolve: introduce link_get_llmnr_support() and link_get_mdns_support() (#2138081) +- resolve: provide effective supporting levels of mDNS and LLMNR (#2138081) +- resolvectl: warn if the global mDNS or LLMNR support level is lower than the requested one (#2138081) +- resolve: enable per-link mDNS setting by default (#2138081) + +* Mon Jan 16 2023 systemd maintenance team - 252-3 +- swap: tell swapon to reinitialize swap if needed (#2151993) +- coredump: adjust whitespace (#2155517) +- coredump: do not allow user to access coredumps with changed uid/gid/capabilities (#2155517) +- Revert "basic: add fallback in chase_symlinks_and_opendir() for cases when /proc is not mounted" (#2138081) +- glyph-util: add warning sign special glyph (#2138081) +- chase-symlink: when converting directory O_PATH fd to real fd, don't bother with /proc/ (#2138081) +- systemctl: print a clear warning if people invoke systemctl without /proc/ (#2138081) +- TEST-65: check cat-config operation in chroot (#2138081) +- TEST-65: use [[ -v ]] more (#2138081) +- systemctl: warn if trying to disable a unit with no install info (#2141979) +- systemctl: allow suppress the warning of no install info using --no-warn (#2141979) +- rpm/systemd-update-helper: use --no-warn when disabling units (#2141979) +- systemctl: suppress warning about missing /proc/ when --no-warn (#2141979) +- shell-completion: systemctl: add --no-warn (#2141979) +- core/unit: drop doubled empty line (#2160477) +- core/unit: drop dependency to the unit being merged (#2160477) +- core/unit: fix logic of dropping self-referencing dependencies (#2160477) +- core/unit: merge two loops into one (#2160477) +- test: add test case for sysv-generator and invalid dependency (#2160477) +- core/unit: merge unit names after merging deps (#2160477) +- core/unit: fix log message (#2160477) +- test: explicitly create the /etc/init.d directory (#2160477) +- test: support a non-default SysV directory (#2160477) + +* Fri Dec 09 2022 systemd maintenance team - 252-2 +- test: check if we can use SHA1 MD for signing before using it (#2141979) +- boot: cleanups for efivar_get() and friends (#2141979) +- boot: fix false maybe-uninitialized warning (#2141979) +- tree-wide: modernizations with RET_NERRNO() (#2137584) +- sd-bus: handle -EINTR return from bus_poll() (#2137584) +- stdio-bridge: don't be bothered with EINTR (#2137584) +- varlink: also handle EINTR gracefully when waiting for EIO via ppoll() (#2137584) +- sd-netlink: handle EINTR from poll() gracefully, as success (#2137584) +- resolved: handle -EINTR returned from fd_wait_for_event() better (#2137584) +- homed: handle EINTR gracefully when waiting for device node (#2137584) +- utmp-wtmp: fix error in case isatty() fails (#2137584) +- utmp-wtmp: handle EINTR gracefully when waiting to write to tty (#2137584) +- io-util: document EINTR situation a bit (#2137584) +- terminal-util: Set OPOST when setting ONLCR (#2138081) +- cgtop: Do not rewrite -P or -k options (#2138081) +- test: Add tests for systemd-cgtop args parsing (#2138081) +- resolved: remove inappropriate assert() (#2138081) +- boot: Add xstrn8_to_16 (#2138081) +- boot: Use xstr8_to_16 (#2138081) +- boot: Use xstr8_to_16 for path conversion (#2138081) +- stub: Fix cmdline handling (#2138081) +- stub: Detect empty LoadOptions when run from EFI shell (#2138081) +- boot: Use EFI_BOOT_MANAGER_POLICY_PROTOCOL to connect console devices (#2138081) +- boot: Make sure all partitions drivers are connected (#2138081) +- boot: improve support for qemu (#2138081) +- systemd-boot man page: add section for virtual machines (#2138081) +- boot: Only do full driver initialization in VMs (#2138081) +- dissect: rework DISSECT_IMAGE_ADD_PARTITION_DEVICES + DISSECT_IMAGE_OPEN_PARTITION_DEVICES (#2138081) +- ci(Mergify): v252 configuration update (#2138081) +- ci: Run GitHub workflows on rhel branches (#2138081) +- ci: Drop scorecards workflow, not relevant (#2138081) + +* Fri Dec 02 2022 systemd maintenance team - 252-1 +- Rebase to systemd v252 + systemd-stable v252.2 (#2138081) + +* Fri Dec 02 2022 systemd maintenance team - 250-13 +- build systemd-boot EFI tools (#2140646) * Thu Aug 25 2022 systemd maintenance team - 250-11 - scope: allow unprivileged delegation on scopes (#2120604)