]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #26341 from DaanDeMeyer/chase-fixes
authorLuca Boccassi <bluca@debian.org>
Fri, 17 Feb 2023 11:44:47 +0000 (11:44 +0000)
committerGitHub <noreply@github.com>
Fri, 17 Feb 2023 11:44:47 +0000 (11:44 +0000)
chase-symlinks fixes

221 files changed:
.github/workflows/labeler.yml
.github/workflows/mkosi.yml
NEWS
README
TODO
docs/CREDENTIALS.md
docs/JOURNAL_EXPORT_FORMATS.md
docs/NETWORK_ONLINE.md
docs/USER_RECORD.md
factory/templates/meson.build
factory/templates/vconsole.conf.in [new file with mode: 0644]
hwdb.d/20-OUI.hwdb
hwdb.d/20-acpi-vendor.hwdb
hwdb.d/20-acpi-vendor.hwdb.patch
hwdb.d/20-pci-vendor-model.hwdb
hwdb.d/60-evdev.hwdb
hwdb.d/60-keyboard.hwdb
hwdb.d/ma-large.txt
hwdb.d/ma-medium.txt
hwdb.d/ma-small.txt
hwdb.d/pci.ids
hwdb.d/pnp_id_registry.html
man/loader.conf.xml
man/org.freedesktop.hostname1.xml
man/org.freedesktop.systemd1.xml
man/rules/meson.build
man/sd_bus_message_new_signal.xml
man/sd_bus_message_open_container.xml
man/sd_journal_get_realtime_usec.xml
man/sd_journal_get_seqnum.xml [new file with mode: 0644]
man/systemctl.xml
man/systemd-boot-random-seed.service.xml
man/systemd-notify.xml
man/systemd-nspawn.xml
man/systemd-pcrphase.service.xml
man/systemd.exec.xml
man/systemd.journal-fields.xml
man/systemd.resource-control.xml
man/systemd.system-credentials.xml
man/tc.xml
man/tmpfiles.d.xml
man/ukify.xml
meson.build
meson_options.txt
mkosi.build
mkosi.conf.d/10-systemd.conf
mkosi.conf.d/centos/10-centos.conf
mkosi.conf.d/debian/10-debian.conf
mkosi.conf.d/ubuntu/10-ubuntu.conf
mkosi.prepare
src/activate/activate.c
src/basic/build.c
src/basic/cgroup-util.c
src/basic/cgroup-util.h
src/basic/fd-util.c
src/basic/fd-util.h
src/basic/fileio.c
src/basic/log.c
src/basic/log.h
src/basic/macro.h
src/basic/missing_magic.h
src/basic/os-util.c
src/basic/process-util.c
src/basic/socket-util.c
src/basic/strv.c
src/basic/strv.h
src/basic/terminal-util.h
src/basic/unit-file.c
src/basic/xattr-util.c
src/basic/xattr-util.h
src/boot/bootctl-install.c
src/boot/bootctl-util.c
src/boot/efi/bcd.c
src/boot/efi/boot.c
src/boot/efi/console.c
src/boot/efi/cpio.c
src/boot/efi/measure.c
src/boot/efi/util.c
src/core/cgroup.c
src/core/cgroup.h
src/core/dbus-cgroup.c
src/core/dbus-manager.c
src/core/dbus-unit.c
src/core/device.c
src/core/execute.c
src/core/load-fragment-gperf.gperf.in
src/core/load-fragment.c
src/core/main.c
src/core/manager.c
src/core/mount.c
src/core/org.freedesktop.systemd1.conf
src/core/scope.c
src/core/service.c
src/core/slice.c
src/core/socket.c
src/core/swap.c
src/core/transaction.c
src/core/unit.c
src/core/unit.h
src/coredump/coredump.c
src/cryptenroll/cryptenroll-tpm2.c
src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c
src/cryptsetup/cryptsetup-tpm2.c
src/dissect/dissect.c
src/fsck/fsck.c
src/home/homed-home.c
src/import/export-raw.c
src/import/import-raw.c
src/import/pull-common.c
src/import/pull-raw.c
src/journal-remote/journal-remote-main.c
src/journal-remote/journal-remote-write.c
src/journal/cat.c
src/journal/journalctl.c
src/journal/journald-client.c
src/journal/journald-kmsg.c
src/journal/journald-server.c
src/journal/journald-server.h
src/journal/test-journal-flush.c
src/journal/test-journal-interleaving.c
src/journal/test-journal-stream.c
src/journal/test-journal-verify.c
src/journal/test-journal.c
src/kernel-install/test-kernel-install.sh
src/libsystemd-network/sd-dhcp-server.c
src/libsystemd/libsystemd.sym
src/libsystemd/sd-bus/bus-common-errors.c
src/libsystemd/sd-bus/bus-common-errors.h
src/libsystemd/sd-bus/bus-socket.c
src/libsystemd/sd-bus/sd-bus.c
src/libsystemd/sd-journal/journal-file.c
src/libsystemd/sd-journal/journal-file.h
src/libsystemd/sd-journal/journal-internal.h
src/libsystemd/sd-journal/sd-journal.c
src/locale/localed-util.c
src/network/networkd-link.c
src/notify/notify.c
src/nspawn/nspawn-bind-user.c
src/nspawn/nspawn-oci.c
src/nspawn/nspawn-setuid.c
src/nspawn/nspawn.c
src/nss-myhostname/nss-myhostname.c
src/oom/oomd-util.h
src/oom/test-oomd-util.c
src/partition/repart.c
src/pstore/pstore.c
src/resolve/resolvectl.c
src/resolve/resolved-bus.c
src/resolve/resolved-dns-dnssec.c
src/resolve/resolved-dns-transaction.c
src/resolve/test-dnssec-complex.c
src/shared/base-filesystem.c
src/shared/bus-log-control-api.c
src/shared/bus-map-properties.c
src/shared/bus-util.h
src/shared/copy.c
src/shared/copy.h
src/shared/dissect-image.c
src/shared/ethtool-util.h
src/shared/exec-util.c
src/shared/install.c
src/shared/journal-importer.c
src/shared/journal-util.c
src/shared/json.c
src/shared/libfido2-util.c
src/shared/logs-show.c
src/shared/logs-show.h
src/shared/mount-setup.c
src/shared/tpm2-util.c
src/shared/userdb.c
src/sulogin-shell/sulogin-shell.c
src/systemctl/systemctl-kill.c
src/systemctl/systemctl-show.c
src/systemctl/systemctl.c
src/systemctl/systemctl.h
src/systemd/sd-journal.h
src/test/test-boot-timestamps.c
src/test/test-cgroup-util.c
src/test/test-escape.c
src/test/test-execute.c
src/test/test-parse-util.c
src/test/test-strv.c
src/test/test-xattr-util.c
src/udev/net/link-config.c
src/udev/udev-event.c
src/udev/udevd.c
src/ukify/ukify.py
src/vconsole/vconsole-setup.c
sysusers.d/basic.conf.in
test/TEST-55-OOMD/test.sh
test/TEST-78-SIGQUEUE/Makefile [new symlink]
test/TEST-78-SIGQUEUE/test.sh [new file with mode: 0755]
test/test-execute/exec-credentials-dir-specifier.service [moved from test/test-execute/exec-specifier-credentials-dir.service with 100% similarity]
test/test-execute/exec-dynamicuser-statedir-migrate-step1.service
test/test-execute/exec-dynamicuser-statedir-migrate-step2.service
test/test-execute/exec-dynamicuser-statedir.service
test/test-execute/exec-load-credential.service [new file with mode: 0644]
test/test-execute/exec-privatenetwork-yes.service
test/test-execute/exec-set-credential.service [new file with mode: 0644]
test/test-execute/exec-specifier-system.service [new file with mode: 0644]
test/test-execute/exec-specifier-user.service [new file with mode: 0644]
test/test-execute/exec-specifier.service
test/test-execute/exec-specifier@.service
test/test-network/conf/25-bridge.netdev
test/test-sysusers/test-00-basic.expected-group [new file with mode: 0644]
test/test-sysusers/test-00-basic.expected-passwd [new file with mode: 0644]
test/test-sysusers/test-00-basic.input [new file with mode: 0644]
test/testsuite-04.units/delegated-cgroup-filtering.service [new file with mode: 0644]
test/units/delegated_cgroup_filtering_payload.sh [new file with mode: 0755]
test/units/delegated_cgroup_filtering_payload_child.sh [new file with mode: 0755]
test/units/testsuite-04.sh
test/units/testsuite-70.sh
test/units/testsuite-78.service [new file with mode: 0644]
test/units/testsuite-78.sh [new file with mode: 0755]
tmpfiles.d/etc.conf.in
units/systemd-pcrfs-root.service.in
units/systemd-pcrfs@.service.in
units/systemd-pcrmachine.service.in
units/systemd-pcrphase-initrd.service.in
units/systemd-pcrphase-sysinit.service.in
units/systemd-pcrphase.service.in

index b6f65afd4e5f888bc9cb8f907746ede2f7065907..c51a2c0d729dc7b0d18f8468b87c2552c8b01190 100644 (file)
@@ -19,15 +19,18 @@ jobs:
     runs-on: ubuntu-latest
     permissions:
       pull-requests: write
+
     steps:
-    - uses: actions/labeler@e54e5b338fbd6e6cdb5d60f51c22335fc57c401e
+    - name: Label PR based on policy in labeler.yml
+      uses: actions/labeler@e54e5b338fbd6e6cdb5d60f51c22335fc57c401e
       if: github.event_name == 'pull_request_target' && github.event.action != 'closed'
       with:
         repo-token: "${{ secrets.GITHUB_TOKEN }}"
         configuration-path: .github/labeler.yml
         sync-labels: "" # This is a workaround for issue 18671
 
-    - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+    - name: Set or remove labels based on systemd development workflow
+      uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
       if: github.event_name == 'pull_request_target' && github.event.action != 'closed' && !github.event.pull_request.draft
       with:
         script: |
@@ -71,7 +74,8 @@ jobs:
             }
           }
 
-    - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+    - name: Add please-review label on command in issue comment
+      uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
       if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/please-review')
       with:
         script: |
@@ -82,8 +86,9 @@ jobs:
             labels: ["please-review"]
           })
 
-    - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
-      if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.issue.pull_request
+    - name: Remove specific labels when PR is closed or merged
+      uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+      if: github.event_name == 'pull_request_target' && github.event.action == 'closed'
       with:
         script: |
           for (const label of ["please-review",
@@ -96,9 +101,9 @@ jobs:
                                "good-to-merge/waiting-for-reporter-feedback 👍",
                                "needs-discussion 🤔",
                                "needs-reporter-feedback ❓",
-                               "dont-merge",
-                               "squash-on-merge,
-                               "quick-review"]) {
+                               "dont-merge 💣",
+                               "squash-on-merge",
+                               "quick-review 🏃‍♂️"]) {
             try {
               await github.rest.issues.removeLabel({
                 issue_number: context.issue.number,
index 84f930abd17b7493e1e7746da19a1df5716ad4ef..c11202a18c244fdee6f838851d042b0f26aec734 100644 (file)
@@ -79,7 +79,7 @@ jobs:
 
     steps:
     - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b
-    - uses: systemd/mkosi@500f93a36cc3d5bf1d06848a0a8870bf1424625f
+    - uses: systemd/mkosi@4be912b0fa4931403fddf649aa242cd4406471c4
 
     - name: Configure
       run: |
@@ -87,6 +87,7 @@ jobs:
         [Distribution]
         Distribution=${{ matrix.distro }}
         Release=${{ matrix.release }}
+        SecureBoot=yes
 
         [Content]
         Environment=CI_BUILD=1
@@ -96,22 +97,28 @@ jobs:
         EOF
 
     - name: Generate secure boot key
-      run: sudo mkosi genkey
+      run: mkosi genkey
 
     - name: Build ${{ matrix.distro }}
-      run: sudo mkosi --idmap no --secure-boot
+      run: mkosi
 
     - name: Show ${{ matrix.distro }} image summary
-      run: sudo mkosi summary
+      run: mkosi summary
 
     - name: Boot ${{ matrix.distro }} systemd-nspawn
       run: sudo mkosi boot ${{ env.KERNEL_CMDLINE }} audit=0
+      env:
+        SYSTEMD_LOG_LEVEL: debug
 
     - name: Check ${{ matrix.distro }} systemd-nspawn
       run: sudo mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
+      env:
+        SYSTEMD_LOG_LEVEL: debug
 
     - name: Boot ${{ matrix.distro }} QEMU
-      run: sudo timeout -k 30 10m mkosi qemu
+      run: timeout -k 30 10m mkosi qemu
 
     - name: Check ${{ matrix.distro }} QEMU
       run: sudo mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
+      env:
+        SYSTEMD_LOG_LEVEL: debug
diff --git a/NEWS b/NEWS
index d703acef4835e2e4c3b0b5d121499889c7f343d9..a5f882c5ec501420ab3abb69ff25c08945666be5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,38 @@
 systemd System and Service Manager
 
-CHANGES WITH 253 in spe:
+CHANGES WITH 253:
+
+        Announcements of Future Feature Removals and Incompatible Changes:
+
+        * We intend to remove cgroup v1 support from systemd release after the
+          end of 2023. If you run services that make explicit use of cgroup v1
+          features (i.e. the "legacy hierarchy" with separate hierarchies for
+          each controller), please implement compatibility with cgroup v2 (i.e.
+          the "unified hierarchy") sooner rather than later. Most of Linux
+          userspace has been ported over already.
+
+        * We intend to remove support for split-usr (/usr mounted separately
+          during boot) and unmerged-usr (parallel directories /bin and
+          /usr/bin, /lib and /usr/lib, etc). This will happen in the second
+          half of 2023, in the first release that falls into that time window.
+          For more details, see:
+          https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+        * We intend to change behaviour w.r.t. units of the per-user service
+          manager and sandboxing options, so that they work without having to
+          manually enable PrivateUsers= as well, which is not required for
+          system units. To make this work, we will implicitly enable user
+          namespaces (PrivateUsers=yes) when a sandboxing option is enabled in a
+          user unit. The drawback is that system users will no longer be visible
+          (and appear as 'nobody') to the user unit when a sandboxing option is
+          enabled. By definition a sandboxed user unit should run with reduced
+          privileges, so impact should be small. This will remove a great source
+          of confusion that has been reported by users over the years, due to
+          how these options require an extra setting to be manually enabled when
+          used in the per-user service manager, as opposed as to the system
+          service manager. We plan to enable this change in the next release
+          later this year. For more details, see:
+          https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
 
         Deprecations and incompatible changes:
 
@@ -53,6 +85,13 @@ CHANGES WITH 253 in spe:
           legacy and thus typically do not receive the same level of security
           support and fixes.
 
+        * The default per-link multicast DNS mode is changed to "yes"
+          (that was previously "no"). As the default global multicast DNS mode
+          has been "yes" (but can be changed by the build option), now the
+          multicast DNS is enabled on all links by default. You can disable the
+          multicast DNS on all links by setting MulticastDNS= in resolved.conf,
+          or on an interface by calling "resolvectl mdns INTERFACE no".
+
         New components:
 
         * A tool 'ukify' tool to build, measure, and sign Unified Kernel Images
@@ -115,7 +154,9 @@ CHANGES WITH 253 in spe:
 
         * When enabling a swap device systemd will now reinitialize the device
           when the page size of the swap space does not match the page size of
-          the running kernel.
+          the running kernel. Note that this requires the 'swapon' utility to
+          provide the '--fixpgsz' option, as implemented by util-linux, and it
+          is not supported by busybox at the time of writing.
 
         * systemd now executes generator programs in a mount namespace
           "sandbox" with most of the file system read-only and write access
@@ -126,7 +167,7 @@ CHANGES WITH 253 in spe:
           yet. (This feature has no security implications, because the code is
           still privileged and can trivially exit the sandbox.)
 
-        * The system manager manager will now parse a new "vmm.notify_socket"
+        * The system manager will now parse a new "vmm.notify_socket"
           system credential, which may be supplied to a VM via SMBIOS. If
           found, the manager will send a "READY=1" notification on the
           specified socket after boot is complete. This allows readiness
@@ -139,7 +180,7 @@ CHANGES WITH 253 in spe:
           with something custom, so this change has limited effect.)
 
         * A new environment variable $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST
-          can can be used to override the mount units burst late limit for
+          can be used to override the mount units burst late limit for
           parsing '/proc/self/mountinfo', which was introduced in v249.
           Defaults to 5.
 
@@ -586,33 +627,36 @@ CHANGES WITH 253 in spe:
         Bernd Steinhauser, blutch112, cake03, Callum Farmer, Carlo Teubner,
         Charles Hardin, chris, Christian Brauner, Christian Göttsche,
         Cristian Rodríguez, Daan De Meyer, Dan Streetman, DaPigGuy,
-        David Tardon, dependabot[bot], Dirk Su, Dmitry V. Levin, drosdeck,
-        Edson Juliano Drosdeck, edupont, Eric DeVolder, Erik Moqvist,
-        Evgeny Vereshchagin, Felix Riemann, Franck Bui, Frantisek Sumsal,
+        Darrell Kavanagh, David Tardon, dependabot[bot], Dirk Su,
+        Dmitry V. Levin, drosdeck, Edson Juliano Drosdeck, edupont,
+        Eric DeVolder, Erik Moqvist, Evgeny Vereshchagin, Fabian Gurtner,
+        Felix Riemann, Franck Bui, Frantisek Sumsal, Geert Lorang,
         Gerd Hoffmann, Gio, Hannoskaj, Hans de Goede, Hugo Carvalho,
         igo95862, Ilya Leoshkevich, Ivan Shapovalov, Jacek Migacz,
         Jade Lovelace, Jan Engelhardt, Jan Janssen, Jan Macku, January,
-        Jason A. Donenfeld, jcg, Jelle van der Waa, Jeremy Linton,
-        Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann, Jörg Thalheim,
-        Joshua Goins, joshuazivkovic, Joshua Zivkovic, Kai-Chuan Hsieh,
-        Khem Raj, Koba Ko, Lennart Poettering, lichao, Li kunyu,
-        Luca Boccassi, Luca BRUNO, Ludwig Nussel, Łukasz Stelmach,
-        Lycowolf, marcel151, Marcus Schäfer, Marek Vasut, Mark Laws,
-        Michael Biebl, Michał Kotyla, Michal Koutný, Michal Sekletár,
-        Mike Yuan, MkfsSion, msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore,
-        Nick Rosbrook, noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv,
-        Phaedrus Leeds, Philipp Jungkamp, Quentin Deslandes, Ray Strode,
+        Jason A. Donenfeld, jcg, Jean-Tiare Le Bigot, Jelle van der Waa,
+        Jeremy Linton, Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann,
+        Jörg Thalheim, Joshua Goins, joshuazivkovic, Joshua Zivkovic,
+        Kai-Chuan Hsieh, Khem Raj, Koba Ko, Lennart Poettering, lichao,
+        Li kunyu, Luca Boccassi, Luca BRUNO, Ludwig Nussel,
+        Łukasz Stelmach, Lycowolf, marcel151, Marcus Schäfer, Marek Vasut,
+        Mark Laws, Michael Biebl, Michał Kotyla, Michal Koutný,
+        Michal Sekletár, Mike Gilbert, Mike Yuan, MkfsSion, ml,
+        msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore, Nick Rosbrook,
+        noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv, Phaedrus Leeds,
+        Philipp Jungkamp, Quentin Deslandes, Raul Tambre, Ray Strode,
         reuben olinsky, Richard E. van der Luit, Richard Phibel,
         Ricky Tigg, Robin Humble, rogg, Rudi Heitbaum, Sam James,
-        Samuel Thibault, Siddhesh Poyarekar, Space Meyer, Spindle Security,
-        Steve Ramage, Thomas Haller, Tonći Galić, Torsten Hilbrich,
+        Samuel Cabrero, Samuel Thibault, Siddhesh Poyarekar, Simon Brand,
+        Space Meyer, Spindle Security, Steve Ramage, Takashi Sakamoto,
+        Thomas Haller, Tonći Galić, Topi Miettinen, Torsten Hilbrich,
         Tuetuopay, uerdogan, Ulrich Ölmann, Valentin David,
         Vitaly Kuznetsov, Vito Caputo, Waltibaba, Will Fancher,
         William Roberts, wouter bolsterlee, Youfu Zhang, Yu Watanabe,
         Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски,
         наб
 
-        — Warsaw, 2023-02-02
+        — Warsaw, 2023-02-15
 
 CHANGES WITH 252 🎃:
 
@@ -812,7 +856,7 @@ CHANGES WITH 252 🎃:
           (e.g. comparisons for empty strings). Boot counting is now part of
           the main specification.
 
-        * New PCRs measurements are performed during boot: PCR 11 for the the
+        * New PCRs measurements are performed during boot: PCR 11 for the
           kernel+initrd combo, PCR 13 for any sysext images. If a measurement
           took place this is now reported to userspace via the new
           StubPcrKernelImage and StubPcrInitRDSysExts EFI variables.
@@ -1726,7 +1770,7 @@ CHANGES WITH 251:
 
         * A new build-time configuration setting default-user-shell= can be
           used to set the default shell for user records and nspawn shell
-          invocations (instead of of the default /bin/bash).
+          invocations (instead of the default /bin/bash).
 
         * systemd-timesyncd now provides a D-Bus API for receiving NTP server
           information dynamically at runtime via IPC.
@@ -2414,7 +2458,7 @@ CHANGES WITH 250:
           now also owned by the system group "sgx".
 
         * A new build-time meson option "extra-net-naming-schemes=" has been
-          added to define additional naming schemes schemes for udev's network
+          added to define additional naming schemes for udev's network
           interface naming logic. This is useful for enterprise distributions
           and similar which want to pin the schemes of certain distribution
           releases under a specific name and previously had to patch the
diff --git a/README b/README
index b12ad3f236094338129673169fbf90105be7cdc7..857cb38bf8cc76ae3b407dabb08884ab87f7346f 100644 (file)
--- a/README
+++ b/README
@@ -221,7 +221,9 @@ REQUIREMENTS:
         During runtime, you need the following additional
         dependencies:
 
-        util-linux >= v2.27.1 required
+        util-linux >= v2.27.1 required (including but not limited to: mount,
+                                        umount, swapon, swapoff, sulogin,
+                                        agetty, fsck)
         dbus >= 1.4.0 (strictly speaking optional, but recommended)
                 NOTE: If using dbus < 1.9.18, you should override the default
                 policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).
diff --git a/TODO b/TODO
index 0a06735c08cc24a97a601c6b265d16868dcf9ec4..34c4f87410dc7fa6a76524b08034c71c7e7ca9dd 100644 (file)
--- a/TODO
+++ b/TODO
@@ -129,6 +129,14 @@ Deprecations and removals:
 
 Features:
 
+* Add systemd-mount@.service which is instantiated for a block device and
+  invokes systemd-mount and exits. This is then useful to use in
+  ENV{SYSTEMD_WANTS} in udev rules, and a bit prettier than using RUN+=
+
+* sd-journal puts a limit on parallel journal files to view at once. journald
+  should probably honour that same limit (JOURNAL_FILES_MAX) when vacuuming to
+  ensure we never generate more files than we can actually view.
+
 * in order to make binding to PCR 4 realistic:
   - generate one keypair "U" and store it in a tpm2 nvindex.
   - Generate another keypair "P" and store it in a second tpm2 nvindex.
@@ -205,7 +213,7 @@ Features:
 
 * in journald: whenever we start a new journal file because the boot ID
   changed, let's generate a recognizable log record containing info about old
-  and new new ID. Then, when displaying log stream in journalctl look for these
+  and new ID. Then, when displaying log stream in journalctl look for these
   records, to be able to order them.
 
 * timesyncd: when saving/restoring clock try to take boot time into account.
@@ -740,11 +748,11 @@ Features:
   protections of the root OS are weakened after interactive confirmation, to
   allow hackers to allow their own stuff. idea: allow entering developer mode
   only via explicit choice in boot menu: i.e. add explicit boot menu item for
-  it. when developer mode is entered generate a key pair in the TPM2, and add
+  it. When developer mode is entered, generate a key pair in the TPM2, and add
   the public part of it automatically to keychain of valid code signature keys
   on subsequent boots. Then provide a tool to sign code with the key in the
-  TPM2. Ensure that boot menu item is only way to enter developer mode, by
-  binding it to locality/PCRs so that that keys cannot be generated otherwise.
+  TPM2. Ensure that boot menu item is the only way to enter developer mode, by
+  binding it to locality/PCRs so that keys cannot be generated otherwise.
 
 * services: add support for cryptographically unlocking per-service directories
   via TPM2. Specifically, for StateDirectory= (and related dirs) use fscrypt to
@@ -992,7 +1000,7 @@ Features:
   mounted from host. maybe put this in systemd-user-sessions.service?
 
 * drop dependency on libcap, replace by direct syscalls based on
-  CapabilityQuintet we already have. (This likely allows us drop drop libcap
+  CapabilityQuintet we already have. (This likely allows us to drop libcap
   dep in the base OS image)
 
 * sysext: automatically activate sysext images dropped in via new sd-stub
@@ -1140,7 +1148,7 @@ Features:
 
 * credentials system:
   - acquire from EFI variable?
-  - acquire via via ask-password?
+  - acquire via ask-password?
   - acquire creds via keyring?
   - pass creds via keyring?
   - pass creds via memfd?
index eb46296c8ba2f08edd04d95e172bd42f0d4fb9ad..8cdf6d7ffa98bf076ebeed4d94a159986464d46c 100644 (file)
@@ -34,7 +34,7 @@ purpose. Specifically, the following features are provided:
    environment variables the credential data is not propagated down the process
    tree. Instead each time a credential is accessed an access check is enforced
    by the kernel. If the service is using file system namespacing the loaded
-   credential data is invisible to any other services.
+   credential data is invisible to all other services.
 
 4. Service credentials may be acquired from files on disk, specified as literal
    strings in unit files, acquired from another service dynamically via an
index 037db94f9de5598a9ef4bd0c1587556fee9ac0ba..9db2726fc2645ca9538b1d80f532d59839029135 100644 (file)
@@ -20,7 +20,7 @@ When exporting journal data for other uses or transferring it via the network/lo
 * Two journal entries that follow each other are separated by a double newline.
 * Journal fields consisting only of valid non-control UTF-8 codepoints are serialized as they are (i.e. the field name, followed by '=', followed by field data), followed by a newline as separator to the next field. Note that fields containing newlines cannot be formatted like this. Non-control UTF-8 codepoints are the codepoints with value at or above 32 (' '), or equal to 9 (TAB).
 * Other journal fields are serialized in a special binary safe way: field name, followed by newline, followed by a binary 64bit little endian size value, followed by the binary field data, followed by a newline as separator to the next field.
-* Entry metadata that is not actually a field is serialized like it was a field, but beginning with two underscores. More specifically, `__CURSOR=`, `__REALTIME_TIMESTAMP=`, `__MONOTONIC_TIMESTAMP=` are introduced this way. Note that these meta-fields are only generated when actual journal files are serialized. They are omitted for entries that do not originate from a journal file (for example because they are transferred for the first time to be stored in one). Or in other words: if you are generating this format you shouldn't care about these special double-underscore fields. But you might find them usable when you deserialize the format generated by us. Additional fields prefixed with two underscores might be added later on, your parser should skip over the fields it does not know.
+* Entry metadata that is not actually a field is serialized like it was a field, but beginning with two underscores. More specifically, `__CURSOR=`, `__REALTIME_TIMESTAMP=`, `__MONOTONIC_TIMESTAMP=`, `__SEQNUM=`, `__SEQNUM_ID` are introduced this way. Note that these meta-fields are only generated when actual journal files are serialized. They are omitted for entries that do not originate from a journal file (for example because they are transferred for the first time to be stored in one). Or in other words: if you are generating this format you shouldn't care about these special double-underscore fields. But you might find them usable when you deserialize the format generated by us. Additional fields prefixed with two underscores might be added later on, your parser should skip over the fields it does not know.
 * The order in which fields appear in an entry is undefined and might be different for each entry that is serialized.
 And that's already it.
 
@@ -133,7 +133,7 @@ In most cases the Journal JSON serialization is the obvious mapping of the entry
 * A field that contains non-printable or non-UTF8 is serialized as a number array instead. This is necessary to handle binary data in a safe way without losing data, since JSON cannot embed binary data natively. Each byte of the binary field will be mapped to its numeric value in the range 0…255.
 * The JSON serializer can optionally skip huge (as in larger than a specific threshold) data fields from the JSON object. If that is enabled and a data field is too large, the field name is still included in the JSON object but assigned _null_.
 * Within the same entry, Journal fields may have multiple values assigned. This is not allowed in JSON. The serializer will hence create a single JSON field only for these cases, and assign it an array of values (which the can be strings, _null_ or number arrays, see above).
-* If the JSON data originates from a journal file it may include the special addressing fields `__CURSOR`, `__REALTIME_TIMESTAMP`, `__MONOTONIC_TIMESTAMP`, which contain the cursor string of this entry as string, and the realtime/monotonic timestamps of this entry as formatted numeric string of usec since the respective epoch.
+* If the JSON data originates from a journal file it may include the special addressing fields `__CURSOR`, `__REALTIME_TIMESTAMP`, `__MONOTONIC_TIMESTAMP`, `__SEQNUM`, `__SEQNUM_ID`, which contain the cursor string of this entry as string, the realtime/monotonic timestamps of this entry as formatted numeric string of usec since the respective epoch, and the sequence number and associated sequence number ID, both formatted as strings.
 
 Here's an example, illustrating all cases mentioned above. Consider this entry:
 
index 084f0d138199b4c0de8188427efb64b45353d977..a8d929e4ab4900c26bd0b349f2eed0ab5d14d596 100644 (file)
@@ -16,7 +16,7 @@ start to be configured. Its primary purpose is for usage with firewall services
 that want to establish a firewall *before* any network interface is up.
 
 `network-pre.target` is a passive unit: it cannot be started directly and it is
-not pulled in by the the network management service, but instead a service that
+not pulled in by the network management service, but instead a service that
 wants to run before it must pull it in. Network management services hence
 should set `After=network-pre.target`, but not `Wants=network-pre.target` or
 `Requires=network-pre.target`. Services that want to be run before the network
@@ -28,7 +28,7 @@ avoiding an unnecessary synchronization point.
 ## Network management services: `network.target`
 
 `network.target` indicates that the network management stack has been started.
-Ordering after it it has little meaning during start-up: whether any network
+Ordering after it has little meaning during start-up: whether any network
 interfaces are already configured when it is reached is not defined.
 
 Its primary purpose is for ordering things properly at shutdown: since the
@@ -252,6 +252,8 @@ established), the following simple service could be used:
 DefaultDependencies=no
 After=nss-lookup.target
 Before=network-online.target
+Type=oneshot
+RemainAfterExit=yes
 
 [Service]
 ExecStart=sh -c 'while ! ping -c 1 example.com; do sleep 1; done'
index a00bec2353e9ac4e974489cd96fa53744989662b..9170a678507893dd1cff9dc07cee830a5b75f73c 100644 (file)
@@ -212,7 +212,7 @@ object. The following fields are currently defined:
 
 `userName` → The UNIX user name for this record. Takes a string with a valid
 UNIX user name. This field is the only mandatory field, all others are
-optional. Corresponds with the `pw_name` field of of `struct passwd` and the
+optional. Corresponds with the `pw_name` field of `struct passwd` and the
 `sp_namp` field of `struct spwd` (i.e. the shadow user record stored in
 `/etc/shadow`). See [User/Group Name Syntax](USER_NAMES.md) for
 the (relaxed) rules the various systemd components enforce on user/group names.
index ece2c644ff21faac690feb71521e7d6d777a05eb..a3ba7b166ffe031bd365663d721042af3b56e7a9 100644 (file)
@@ -9,3 +9,11 @@ custom_target(
         command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
         install : true,
         install_dir : factory_etc_dir)
+
+custom_target(
+        'vconsole.conf',
+        input : 'vconsole.conf.in',
+        output : 'vconsole.conf',
+        command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
+        install : true,
+        install_dir : factory_etc_dir)
diff --git a/factory/templates/vconsole.conf.in b/factory/templates/vconsole.conf.in
new file mode 100644 (file)
index 0000000..f682487
--- /dev/null
@@ -0,0 +1,3 @@
+# This is the fallback vconsole configuration provided by systemd.
+
+#KEYMAP={{ SYSTEMD_DEFAULT_KEYMAP }}
index 319e382f1e1d6f0b4964d6b10bd0d1c2f5f5189b..69b00c94c36a8a43abdcfef5cce67a83c706535f 100644 (file)
@@ -40283,6 +40283,9 @@ OUI:049B9C*
 OUI:049C62*
  ID_OUI_FROM_DATABASE=BMT Medical Technology s.r.o.
 
+OUI:049D05*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:049DFE*
  ID_OUI_FROM_DATABASE=Hivesystem
 
@@ -40329,7 +40332,7 @@ OUI:04AAE1*
  ID_OUI_FROM_DATABASE=BEIJING MICROVISION TECHNOLOGY CO.,LTD
 
 OUI:04AB08*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:04AB18*
  ID_OUI_FROM_DATABASE=ELECOM CO.,LTD.
@@ -40527,7 +40530,7 @@ OUI:04CD15*
  ID_OUI_FROM_DATABASE=Silicon Laboratories
 
 OUI:04CE09*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:04CE14*
  ID_OUI_FROM_DATABASE=Wilocity LTD.
@@ -42348,7 +42351,7 @@ OUI:08FD0E*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
 OUI:08FF24*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:08FF44*
  ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -43715,6 +43718,9 @@ OUI:101331*
 OUI:1013EE*
  ID_OUI_FROM_DATABASE=Justec International Technology INC.
 
+OUI:1015C1*
+ ID_OUI_FROM_DATABASE=Zhanzuo (Beijing) Technology Co., Ltd.
+
 OUI:10189E*
  ID_OUI_FROM_DATABASE=Elmo Motion Control
 
@@ -43992,7 +43998,7 @@ OUI:1054D2E*
  ID_OUI_FROM_DATABASE=COSMO AIOT TECHNOLOGY CO LTD
 
 OUI:1055E4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:105611*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -44258,6 +44264,9 @@ OUI:109D7A*
 OUI:109E3A*
  ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd.
 
+OUI:109F41*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:109F4F*
  ID_OUI_FROM_DATABASE=New H3C Intelligence Terminal Co., Ltd.
 
@@ -44372,6 +44381,9 @@ OUI:10BC97*
 OUI:10BD18*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
+OUI:10BD3A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:10BD55*
  ID_OUI_FROM_DATABASE=Q-Lab Corporation
 
@@ -44570,6 +44582,9 @@ OUI:10DFFC*
 OUI:10E177*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:10E2C9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:10E2D5*
  ID_OUI_FROM_DATABASE=Qi Hardware Inc.
 
@@ -46082,6 +46097,9 @@ OUI:1848CA*
 OUI:1848D8*
  ID_OUI_FROM_DATABASE=Fastback Networks
 
+OUI:184A53*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:184A6F*
  ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
 
@@ -46587,7 +46605,7 @@ OUI:18AA0F*
  ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
 
 OUI:18AA1E*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:18AA45*
  ID_OUI_FROM_DATABASE=Fon Technology
@@ -47874,7 +47892,7 @@ OUI:1C87E3*
  ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
 
 OUI:1C880C*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:1C88790*
  ID_OUI_FROM_DATABASE=Newps co.,ltd
@@ -48045,7 +48063,7 @@ OUI:1CA0D36*
  ID_OUI_FROM_DATABASE=Intertecno SRL NISUTA
 
 OUI:1CA0D37*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=U-TX Technologies Ltd
 
 OUI:1CA0D38*
  ID_OUI_FROM_DATABASE=Desarrollos y Soluciones Guinea I+D S.L.
@@ -48692,6 +48710,9 @@ OUI:2012D5*
 OUI:2013E0*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:201582*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:20163D*
  ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
 
@@ -49188,7 +49209,7 @@ OUI:208986*
  ID_OUI_FROM_DATABASE=zte corporation
 
 OUI:20898A*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:208B37*
  ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
@@ -49523,6 +49544,9 @@ OUI:20E2A8*
 OUI:20E407*
  ID_OUI_FROM_DATABASE=Spark srl
 
+OUI:20E46F*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
 OUI:20E52A*
  ID_OUI_FROM_DATABASE=NETGEAR
 
@@ -50304,7 +50328,7 @@ OUI:2497ED*
  ID_OUI_FROM_DATABASE=Techvision Intelligent Technology Limited
 
 OUI:249AC8*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:249AD8*
  ID_OUI_FROM_DATABASE=YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.
@@ -50427,7 +50451,7 @@ OUI:24BE18*
  ID_OUI_FROM_DATABASE=DADOUTEK COMPANY LIMITED
 
 OUI:24BF74*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Hamamatsu Photonics K.K.
 
 OUI:24C0B3*
  ID_OUI_FROM_DATABASE=RSF
@@ -50589,7 +50613,7 @@ OUI:24E853*
  ID_OUI_FROM_DATABASE=LG Innotek
 
 OUI:24E8E5*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:24E927*
  ID_OUI_FROM_DATABASE=TomTom International BV
@@ -51516,7 +51540,7 @@ OUI:28BF89*
  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
 
 OUI:28C01B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:28C0DA*
  ID_OUI_FROM_DATABASE=Juniper Networks
@@ -51524,6 +51548,9 @@ OUI:28C0DA*
 OUI:28C13C*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd.
 
+OUI:28C1A0*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:28C21F*
  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
 
@@ -52520,6 +52547,9 @@ OUI:2C64F6*
 OUI:2C6798*
  ID_OUI_FROM_DATABASE=InTalTech Ltd.
 
+OUI:2C67AB*
+ ID_OUI_FROM_DATABASE=EZELINK TELECOM
+
 OUI:2C67FB*
  ID_OUI_FROM_DATABASE=ShenZhen Zhengjili Electronics Co., LTD
 
@@ -52919,6 +52949,9 @@ OUI:2CBE97*
 OUI:2CBEEB*
  ID_OUI_FROM_DATABASE=Nothing Technology Limited
 
+OUI:2CC253*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:2CC260*
  ID_OUI_FROM_DATABASE=Oracle Corporation
 
@@ -53442,7 +53475,7 @@ OUI:30317D*
  ID_OUI_FROM_DATABASE=Hosiden Corporation
 
 OUI:303180*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:303235*
  ID_OUI_FROM_DATABASE=Qingdao Intelligent&Precise Electronics Co.,Ltd.
@@ -54954,7 +54987,7 @@ OUI:3484E4*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
 OUI:348511*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:348518*
  ID_OUI_FROM_DATABASE=Espressif Inc.
@@ -55086,7 +55119,7 @@ OUI:34A8EB*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
 OUI:34AA31*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:34AA8B*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -57863,6 +57896,9 @@ OUI:3CDFA9*
 OUI:3CDFBD*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
+OUI:3CE002*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:3CE038*
  ID_OUI_FROM_DATABASE=Omnifi Inc.
 
@@ -58518,7 +58554,7 @@ OUI:40667A*
  ID_OUI_FROM_DATABASE=mediola - connected living AG
 
 OUI:40679B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:406826*
  ID_OUI_FROM_DATABASE=Thales UK Limited
@@ -58649,6 +58685,9 @@ OUI:408F9D*
 OUI:409151*
  ID_OUI_FROM_DATABASE=Espressif Inc.
 
+OUI:40921A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:409505*
  ID_OUI_FROM_DATABASE=ACOINFO TECHNOLOGY CO.,LTD
 
@@ -60599,6 +60638,9 @@ OUI:4844F7*
 OUI:484520*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
+OUI:4845CF*
+ ID_OUI_FROM_DATABASE=LLC Proizvodstvennaya Kompania TransService
+
 OUI:48468D*
  ID_OUI_FROM_DATABASE=Zepcam B.V.
 
@@ -60672,7 +60714,7 @@ OUI:48555C*
  ID_OUI_FROM_DATABASE=Wu Qi Technologies,Inc.
 
 OUI:48555E*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:48555F*
  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
@@ -62126,6 +62168,9 @@ OUI:4C968A*
 OUI:4C98EF*
  ID_OUI_FROM_DATABASE=Zeo
 
+OUI:4C9B63*
+ ID_OUI_FROM_DATABASE=LG Innotek
+
 OUI:4C9D22*
  ID_OUI_FROM_DATABASE=ACES Co.,Ltd
 
@@ -63716,6 +63761,9 @@ OUI:50E14A*
 OUI:50E24E*
  ID_OUI_FROM_DATABASE=zte corporation
 
+OUI:50E538*
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
+
 OUI:50E549*
  ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
 
@@ -63926,18 +63974,36 @@ OUI:54083B3*
 OUI:54083B4*
  ID_OUI_FROM_DATABASE=Toray Medical Company Limited
 
+OUI:54083B5*
+ ID_OUI_FROM_DATABASE=shenzhen HAIOT technology co.,ltd
+
 OUI:54083B6*
  ID_OUI_FROM_DATABASE=Vector Atomic
 
+OUI:54083B7*
+ ID_OUI_FROM_DATABASE=ASCS Sp. z o.o.
+
 OUI:54083B8*
  ID_OUI_FROM_DATABASE=Update Systems Inc.
 
+OUI:54083B9*
+ ID_OUI_FROM_DATABASE=Unicompute Technology Co.,Ltd.
+
 OUI:54083BA*
  ID_OUI_FROM_DATABASE=Silex Ipari Automatizálási Zrt.
 
 OUI:54083BB*
  ID_OUI_FROM_DATABASE=Korea Bus Broadcasting
 
+OUI:54083BC*
+ ID_OUI_FROM_DATABASE=FairPhone B.V.
+
+OUI:54083BD*
+ ID_OUI_FROM_DATABASE=BHS Corrugated Maschinen- und Anlagenbau GmbH
+
+OUI:54083BE*
+ ID_OUI_FROM_DATABASE=Sinclair Technologies
+
 OUI:540910*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -64865,6 +64931,9 @@ OUI:54F82A*
 OUI:54F876*
  ID_OUI_FROM_DATABASE=ABB AG
 
+OUI:54F8F0*
+ ID_OUI_FROM_DATABASE=Tesla Inc
+
 OUI:54FA3E*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -66104,6 +66173,9 @@ OUI:5C2763*
 OUI:5C27D4*
  ID_OUI_FROM_DATABASE=Shenzhen Qihu Intelligent Technology Company Limited
 
+OUI:5C2886*
+ ID_OUI_FROM_DATABASE=Inventec(Chongqing) Corporation
+
 OUI:5C2AEF*
  ID_OUI_FROM_DATABASE=r2p Asia-Pacific Pty Ltd
 
@@ -67211,6 +67283,9 @@ OUI:601970*
 OUI:601971*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:601B52*
+ ID_OUI_FROM_DATABASE=Vodafone Italia S.p.A.
+
 OUI:601D0F*
  ID_OUI_FROM_DATABASE=Midnite Solar
 
@@ -67562,6 +67637,9 @@ OUI:60812B*
 OUI:6081F9*
  ID_OUI_FROM_DATABASE=Helium Systems, Inc
 
+OUI:608246*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:608334*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
@@ -68006,6 +68084,9 @@ OUI:60DB2A*
 OUI:60DB98*
  ID_OUI_FROM_DATABASE=Calix Inc.
 
+OUI:60DC81*
+ ID_OUI_FROM_DATABASE=AltoBeam Inc.
+
 OUI:60DD70*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -68276,6 +68357,9 @@ OUI:641A22*
 OUI:641ABA*
  ID_OUI_FROM_DATABASE=Dryad Networks GmbH
 
+OUI:641C10*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:641C67*
  ID_OUI_FROM_DATABASE=DIGIBRAS INDUSTRIA DO BRASILS/A
 
@@ -69372,7 +69456,7 @@ OUI:6819AC*
  ID_OUI_FROM_DATABASE=Guangzhou Xianyou Intelligent Technogoly CO., LTD
 
 OUI:681AA4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:681AB2*
  ID_OUI_FROM_DATABASE=zte corporation
@@ -71133,7 +71217,7 @@ OUI:6CC217*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
 OUI:6CC242*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:6CC26B*
  ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -71405,6 +71489,45 @@ OUI:700433*
 OUI:700514*
  ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
 
+OUI:7006920*
+ ID_OUI_FROM_DATABASE=Techology, LLC
+
+OUI:7006921*
+ ID_OUI_FROM_DATABASE=Beijing Fortech Microsystems., Co., Ltd.
+
+OUI:7006922*
+ ID_OUI_FROM_DATABASE=Scud (Fujian) Electronics Co.,Ltd
+
+OUI:7006923*
+ ID_OUI_FROM_DATABASE=BOSSCCTV CO., LTD
+
+OUI:7006924*
+ ID_OUI_FROM_DATABASE=Fusiostor Technologies Private Limited
+
+OUI:7006925*
+ ID_OUI_FROM_DATABASE=CANAAN CREATIVE CO.,LTD.
+
+OUI:7006926*
+ ID_OUI_FROM_DATABASE=Hangzhou Clounix Technology Limited
+
+OUI:7006928*
+ ID_OUI_FROM_DATABASE=JMA Wireless
+
+OUI:7006929*
+ ID_OUI_FROM_DATABASE=Shenzhen Lingwei Technology Co., Ltd
+
+OUI:700692A*
+ ID_OUI_FROM_DATABASE=Munters
+
+OUI:700692B*
+ ID_OUI_FROM_DATABASE=SWIT Electronics Co.,Ltd
+
+OUI:700692C*
+ ID_OUI_FROM_DATABASE=ScoreBird, LLC
+
+OUI:700692D*
+ ID_OUI_FROM_DATABASE=Skyware Protech Limited
+
 OUI:7006AC*
  ID_OUI_FROM_DATABASE=Eastcompeace Technology Co., Ltd
 
@@ -72029,6 +72152,9 @@ OUI:70723C*
 OUI:7072CF*
  ID_OUI_FROM_DATABASE=EdgeCore Networks
 
+OUI:7072FE*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:7073CB*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -74211,7 +74337,7 @@ OUI:70B3D5277*
  ID_OUI_FROM_DATABASE=Voltaware Limited
 
 OUI:70B3D5278*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Medicomp, Inc
 
 OUI:70B3D5279*
  ID_OUI_FROM_DATABASE=Medicomp, Inc
@@ -77640,7 +77766,7 @@ OUI:70B3D56F3*
  ID_OUI_FROM_DATABASE=iungo
 
 OUI:70B3D56F4*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=WDI Wise Device Inc.
 
 OUI:70B3D56F5*
  ID_OUI_FROM_DATABASE=Cominfo, Inc.
@@ -85655,6 +85781,9 @@ OUI:74A4B5*
 OUI:74A528*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
+OUI:74A58C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:74A6CD*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -86493,7 +86622,7 @@ OUI:785262*
  ID_OUI_FROM_DATABASE=Shenzhen Hojy Software Co., Ltd.
 
 OUI:78530D*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:785364*
  ID_OUI_FROM_DATABASE=SHIFT GmbH
@@ -86595,7 +86724,7 @@ OUI:785EE8E*
  ID_OUI_FROM_DATABASE=Suzhou Tianping Advanced Digital Technologies Co.Ltd
 
 OUI:785F36*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:785F4C*
  ID_OUI_FROM_DATABASE=Argox Information Co., Ltd.
@@ -86786,6 +86915,9 @@ OUI:788973*
 OUI:788A20*
  ID_OUI_FROM_DATABASE=Ubiquiti Inc
 
+OUI:788A86*
+ ID_OUI_FROM_DATABASE=China Dragon Technology Limited
+
 OUI:788B2A*
  ID_OUI_FROM_DATABASE=Zhen Shi Information Technology (Shanghai) Co., Ltd.
 
@@ -88472,6 +88604,9 @@ OUI:7CBFAE*
 OUI:7CBFB1*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:7CC06F*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:7CC177*
  ID_OUI_FROM_DATABASE=INGRAM MICRO SERVICES
 
@@ -89853,7 +89988,7 @@ OUI:80ED2C*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
 OUI:80EE25*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:80EE73*
  ID_OUI_FROM_DATABASE=Shuttle Inc.
@@ -90377,6 +90512,9 @@ OUI:84716A*
 OUI:847207*
  ID_OUI_FROM_DATABASE=I&C Technology
 
+OUI:847293*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:847303*
  ID_OUI_FROM_DATABASE=Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.
 
@@ -90470,6 +90608,9 @@ OUI:8485E6*
 OUI:8486F3*
  ID_OUI_FROM_DATABASE=Greenvity Communications
 
+OUI:8488E1*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:8489AD*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -91046,6 +91187,9 @@ OUI:84F129*
 OUI:84F147*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
+OUI:84F175*
+ ID_OUI_FROM_DATABASE=Jiangxi Xunte Intelligent Terminal Co., Ltd
+
 OUI:84F1D0*
  ID_OUI_FROM_DATABASE=EHOOME IOT PRIVATE LIMITED
 
@@ -91355,6 +91499,9 @@ OUI:883D24*
 OUI:883F0C*
  ID_OUI_FROM_DATABASE=system a.v. co., ltd.
 
+OUI:883F37*
+ ID_OUI_FROM_DATABASE=UHTEK CO., LTD.
+
 OUI:883F4A*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
@@ -92264,6 +92411,9 @@ OUI:88FED6*
 OUI:8C006D*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:8C02CD*
+ ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD
+
 OUI:8C02FA*
  ID_OUI_FROM_DATABASE=COMMANDO Networks Limited
 
@@ -92331,7 +92481,7 @@ OUI:8C147D0*
  ID_OUI_FROM_DATABASE=Nio
 
 OUI:8C147D1*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Schneider Electric - Triconex
 
 OUI:8C147D2*
  ID_OUI_FROM_DATABASE=Agilent S.p.A
@@ -92654,6 +92804,9 @@ OUI:8C1F640D5*
 OUI:8C1F640D6*
  ID_OUI_FROM_DATABASE=AVD INNOVATION LIMITED
 
+OUI:8C1F640D8*
+ ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L.
+
 OUI:8C1F640E0*
  ID_OUI_FROM_DATABASE=Autopharma
 
@@ -92939,6 +93092,9 @@ OUI:8C1F64274*
 OUI:8C1F64281*
  ID_OUI_FROM_DATABASE=NVP TECO LTD
 
+OUI:8C1F64286*
+ ID_OUI_FROM_DATABASE=i2s
+
 OUI:8C1F64289*
  ID_OUI_FROM_DATABASE=Craft4 Digital GmbH
 
@@ -93053,6 +93209,9 @@ OUI:8C1F64317*
 OUI:8C1F6431A*
  ID_OUI_FROM_DATABASE=Asiga Pty Ltd
 
+OUI:8C1F6431B*
+ ID_OUI_FROM_DATABASE=joint analytical systems GmbH
+
 OUI:8C1F64324*
  ID_OUI_FROM_DATABASE=Kinetic Technologies
 
@@ -93062,6 +93221,9 @@ OUI:8C1F64328*
 OUI:8C1F64329*
  ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd
 
+OUI:8C1F6432B*
+ ID_OUI_FROM_DATABASE=Shenyang Taihua Technology Co., Ltd.
+
 OUI:8C1F6432C*
  ID_OUI_FROM_DATABASE=Taiko Audio B.V.
 
@@ -93254,6 +93416,9 @@ OUI:8C1F64417*
 OUI:8C1F6441D*
  ID_OUI_FROM_DATABASE=Aspen Spectra Sdn Bhd
 
+OUI:8C1F64423*
+ ID_OUI_FROM_DATABASE=Hiwin Mikrosystem Corp.
+
 OUI:8C1F64426*
  ID_OUI_FROM_DATABASE=eumig industrie-TV GmbH.
 
@@ -93653,6 +93818,9 @@ OUI:8C1F64641*
 OUI:8C1F64647*
  ID_OUI_FROM_DATABASE=Senior Group LLC
 
+OUI:8C1F6464E*
+ ID_OUI_FROM_DATABASE=Nilfisk Food
+
 OUI:8C1F64650*
  ID_OUI_FROM_DATABASE=L tec Co.,Ltd
 
@@ -94070,6 +94238,9 @@ OUI:8C1F64842*
 OUI:8C1F64848*
  ID_OUI_FROM_DATABASE=Jena-Optronik GmbH
 
+OUI:8C1F6484A*
+ ID_OUI_FROM_DATABASE=Bitmapper Integration Technologies Private Limited
+
 OUI:8C1F6484C*
  ID_OUI_FROM_DATABASE=AvMap srlu
 
@@ -94220,6 +94391,9 @@ OUI:8C1F64903*
 OUI:8C1F64905*
  ID_OUI_FROM_DATABASE=Qualitrol LLC
 
+OUI:8C1F64907*
+ ID_OUI_FROM_DATABASE=Sicon srl
+
 OUI:8C1F64909*
  ID_OUI_FROM_DATABASE=MATELEX
 
@@ -94400,6 +94574,9 @@ OUI:8C1F649F2*
 OUI:8C1F649F4*
  ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG
 
+OUI:8C1F649F6*
+ ID_OUI_FROM_DATABASE=Vision Systems Safety Tech
+
 OUI:8C1F649FA*
  ID_OUI_FROM_DATABASE=METRONA-Union GmbH
 
@@ -94496,6 +94673,12 @@ OUI:8C1F64A6D*
 OUI:8C1F64A76*
  ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
 
+OUI:8C1F64A77*
+ ID_OUI_FROM_DATABASE=Rax-Tech International
+
+OUI:8C1F64A81*
+ ID_OUI_FROM_DATABASE=3D perception AS
+
 OUI:8C1F64A83*
  ID_OUI_FROM_DATABASE=EkspertStroyProekt
 
@@ -94697,6 +94880,9 @@ OUI:8C1F64BA3*
 OUI:8C1F64BB3*
  ID_OUI_FROM_DATABASE=Zaruc Tecnologia LTDA
 
+OUI:8C1F64BBC*
+ ID_OUI_FROM_DATABASE=Liberator Pty Ltd
+
 OUI:8C1F64BBF*
  ID_OUI_FROM_DATABASE=Retency
 
@@ -94892,6 +95078,12 @@ OUI:8C1F64CAF*
 OUI:8C1F64CB2*
  ID_OUI_FROM_DATABASE=Dyncir Soluções Tecnológicas Ltda
 
+OUI:8C1F64CB5*
+ ID_OUI_FROM_DATABASE=Gamber-Johnson LLC
+
+OUI:8C1F64CB7*
+ ID_OUI_FROM_DATABASE=ARKRAY,Inc.Kyoto Laboratory
+
 OUI:8C1F64CBE*
  ID_OUI_FROM_DATABASE=Circa Enterprises Inc
 
@@ -94973,6 +95165,9 @@ OUI:8C1F64D13*
 OUI:8C1F64D20*
  ID_OUI_FROM_DATABASE=NAS Engineering PRO
 
+OUI:8C1F64D21*
+ ID_OUI_FROM_DATABASE=AMETEK CTS GMBH
+
 OUI:8C1F64D29*
  ID_OUI_FROM_DATABASE=Secure Bits
 
@@ -95090,6 +95285,9 @@ OUI:8C1F64DC9*
 OUI:8C1F64DCA*
  ID_OUI_FROM_DATABASE=Porsche engineering
 
+OUI:8C1F64DD4*
+ ID_OUI_FROM_DATABASE=Midlands Technical Co., Ltd.
+
 OUI:8C1F64DD5*
  ID_OUI_FROM_DATABASE=Cardinal Scales Manufacturing Co
 
@@ -95126,6 +95324,9 @@ OUI:8C1F64E12*
 OUI:8C1F64E21*
  ID_OUI_FROM_DATABASE=LG-LHT Aircraft Solutions GmbH
 
+OUI:8C1F64E24*
+ ID_OUI_FROM_DATABASE=COMETA SAS
+
 OUI:8C1F64E2D*
  ID_OUI_FROM_DATABASE=Private
 
@@ -95189,6 +95390,9 @@ OUI:8C1F64E86*
 OUI:8C1F64E90*
  ID_OUI_FROM_DATABASE=MHE Electronics
 
+OUI:8C1F64E92*
+ ID_OUI_FROM_DATABASE=EA Elektro-Automatik
+
 OUI:8C1F64E94*
  ID_OUI_FROM_DATABASE=ZIN TECHNOLOGIES
 
@@ -96428,6 +96632,9 @@ OUI:8CDEE6*
 OUI:8CDEF9*
  ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
 
+OUI:8CDF2C*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
 OUI:8CDF9D*
  ID_OUI_FROM_DATABASE=NEC Corporation
 
@@ -96497,6 +96704,9 @@ OUI:8CF228*
 OUI:8CF319*
  ID_OUI_FROM_DATABASE=Siemens Industrial Automation Products Ltd., Chengdu
 
+OUI:8CF3E7*
+ ID_OUI_FROM_DATABASE=solidotech
+
 OUI:8CF5A3*
  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
 
@@ -96590,6 +96800,9 @@ OUI:9003B7*
 OUI:900628*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:9006F2*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:900917*
  ID_OUI_FROM_DATABASE=Far-sighted mobile
 
@@ -96803,6 +97016,9 @@ OUI:903AA0*
 OUI:903AE6*
  ID_OUI_FROM_DATABASE=PARROT SA
 
+OUI:903C1D*
+ ID_OUI_FROM_DATABASE=HISENSE VISUAL TECHNOLOGY CO.,LTD
+
 OUI:903C92*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -97289,6 +97505,9 @@ OUI:90A6BF*
 OUI:90A783*
  ID_OUI_FROM_DATABASE=JSW PACIFIC CORPORATION
 
+OUI:90A7BF*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
 OUI:90A7C1*
  ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc.
 
@@ -97347,7 +97566,7 @@ OUI:90B622*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
 OUI:90B67A*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:90B686*
  ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
@@ -97964,6 +98183,9 @@ OUI:943FBB*
 OUI:943FC2*
  ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
 
+OUI:943FD6*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:9440A2*
  ID_OUI_FROM_DATABASE=Anywave Communication Technologies, Inc.
 
@@ -98148,7 +98370,7 @@ OUI:947F1D*
  ID_OUI_FROM_DATABASE=Shenzhen Fastrain Technology Co., Ltd.
 
 OUI:947FD8*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:9481A4*
  ID_OUI_FROM_DATABASE=Azuray Technologies
@@ -98903,6 +99125,9 @@ OUI:9802D8E*
 OUI:9802D8F*
  ID_OUI_FROM_DATABASE=Private
 
+OUI:98038A*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:98039B*
  ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
 
@@ -99782,6 +100007,9 @@ OUI:98B08B*
 OUI:98B177*
  ID_OUI_FROM_DATABASE=LANDIS + GYR
 
+OUI:98B379*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:98B3EF*
  ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
 
@@ -101739,7 +101967,7 @@ OUI:A04A5E*
  ID_OUI_FROM_DATABASE=Microsoft Corporation
 
 OUI:A04C0C*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:A04C5B*
  ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
@@ -101834,6 +102062,9 @@ OUI:A06518*
 OUI:A06610*
  ID_OUI_FROM_DATABASE=FUJITSU LIMITED
 
+OUI:A06636*
+ ID_OUI_FROM_DATABASE=Intracom SA Telecom Solutions
+
 OUI:A06720*
  ID_OUI_FROM_DATABASE=China Dragon Technology Limited
 
@@ -106475,6 +106706,9 @@ OUI:B0958E*
 OUI:B0966C*
  ID_OUI_FROM_DATABASE=Lanbowan Technology Ltd.
 
+OUI:B09738*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
+
 OUI:B0973A*
  ID_OUI_FROM_DATABASE=E-Fuel Corporation
 
@@ -108404,6 +108638,9 @@ OUI:B85F98*
 OUI:B85FB0*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
+OUI:B86061*
+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
+
 OUI:B86091*
  ID_OUI_FROM_DATABASE=Onnet Technologies and Innovations LLC
 
@@ -110111,6 +110348,9 @@ OUI:BCF310*
 OUI:BCF45F*
  ID_OUI_FROM_DATABASE=zte corporation
 
+OUI:BCF499*
+ ID_OUI_FROM_DATABASE=Rockwell Automation
+
 OUI:BCF4D4*
  ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
 
@@ -110210,6 +110450,9 @@ OUI:C01692*
 OUI:C0174D*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:C01754*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:C01803*
  ID_OUI_FROM_DATABASE=HP Inc.
 
@@ -110534,6 +110777,9 @@ OUI:C06599*
 OUI:C067AF*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
+OUI:C068CC*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
+
 OUI:C06911*
  ID_OUI_FROM_DATABASE=Arista Networks
 
@@ -110697,7 +110943,7 @@ OUI:C08D51*
  ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
 
 OUI:C08F20*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:C09132*
  ID_OUI_FROM_DATABASE=Patriot Memory
@@ -112668,7 +112914,7 @@ OUI:C8120B*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
 OUI:C8138B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:C81451*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -113258,6 +113504,9 @@ OUI:C89665*
 OUI:C8979F*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:C89828*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:C899B2*
  ID_OUI_FROM_DATABASE=Arcadyan Corporation
 
@@ -113600,6 +113849,9 @@ OUI:C8EFBC*
 OUI:C8F09E*
  ID_OUI_FROM_DATABASE=Espressif Inc.
 
+OUI:C8F225*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
 OUI:C8F230*
  ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
 
@@ -114515,6 +114767,9 @@ OUI:CCB3AB*
 OUI:CCB3F8*
  ID_OUI_FROM_DATABASE=FUJITSU ISOTEC LIMITED
 
+OUI:CCB54C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:CCB55A*
  ID_OUI_FROM_DATABASE=Fraunhofer ITWM
 
@@ -115373,6 +115628,9 @@ OUI:D057A1*
 OUI:D05875*
  ID_OUI_FROM_DATABASE=Active Control Technology Inc.
 
+OUI:D058A5*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:D058A8*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -116459,6 +116717,9 @@ OUI:D42DC5*
 OUI:D42F23*
  ID_OUI_FROM_DATABASE=Akenori PTE Ltd
 
+OUI:D42FCA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:D4319D*
  ID_OUI_FROM_DATABASE=Sinwatec
 
@@ -116606,6 +116867,9 @@ OUI:D45251*
 OUI:D45297*
  ID_OUI_FROM_DATABASE=nSTREAMS Technologies, Inc.
 
+OUI:D452C7*
+ ID_OUI_FROM_DATABASE=Beijing L&S Lancom Platform Tech. Co., Ltd.
+
 OUI:D452EE*
  ID_OUI_FROM_DATABASE=SKY UK LIMITED
 
@@ -117359,6 +117623,9 @@ OUI:D4E8B2*
 OUI:D4E90B*
  ID_OUI_FROM_DATABASE=CVT CO.,LTD
 
+OUI:D4E95E*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:D4E98A*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
@@ -118043,6 +118310,9 @@ OUI:D88D5C*
 OUI:D88DC8*
  ID_OUI_FROM_DATABASE=Atil Technology Co., LTD
 
+OUI:D88ED4*
+ ID_OUI_FROM_DATABASE=eero inc.
+
 OUI:D88F76*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -118691,6 +118961,9 @@ OUI:DC35F1*
 OUI:DC360C*
  ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
 
+OUI:DC3642*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:DC36430*
  ID_OUI_FROM_DATABASE=Meier Tobler AG
 
@@ -119748,7 +120021,7 @@ OUI:E0286D*
  ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
 
 OUI:E028B1*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:E02967*
  ID_OUI_FROM_DATABASE=HMD Global Oy
@@ -121301,6 +121574,9 @@ OUI:E48D8C*
 OUI:E48E10*
  ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD
 
+OUI:E48EBB*
+ ID_OUI_FROM_DATABASE=Rockwell Automation
+
 OUI:E48F1D*
  ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
 
@@ -123032,6 +123308,9 @@ OUI:EC2C11*
 OUI:EC2C49*
  ID_OUI_FROM_DATABASE=NakaoLab, The University of Tokyo
 
+OUI:EC2C73*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:EC2CE2*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -123305,6 +123584,9 @@ OUI:EC7FC6*
 OUI:EC8009*
  ID_OUI_FROM_DATABASE=NovaSparks
 
+OUI:EC8150*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
 OUI:EC8193*
  ID_OUI_FROM_DATABASE=Logitech, Inc
 
@@ -125810,6 +126092,9 @@ OUI:F4A80D*
 OUI:F4A997*
  ID_OUI_FROM_DATABASE=CANON INC.
 
+OUI:F4AAD0*
+ ID_OUI_FROM_DATABASE=OHSUNG
+
 OUI:F4ACC1*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
@@ -126440,6 +126725,9 @@ OUI:F82D7C*
 OUI:F82DC0*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:F82E0C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:F82E3F*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
@@ -126773,6 +127061,9 @@ OUI:F87907*
 OUI:F8790A*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:F87928*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:F87999*
  ID_OUI_FROM_DATABASE=Guangdong Jiuzhi Technology Co.,Ltd
 
@@ -127137,7 +127428,7 @@ OUI:F8B7E2*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
 OUI:F8B8B4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:F8B95A*
  ID_OUI_FROM_DATABASE=LG Innotek
@@ -127610,6 +127901,9 @@ OUI:FC2A9C*
 OUI:FC2BB2*
  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
 
+OUI:FC2CFD*
+ ID_OUI_FROM_DATABASE=dormakaba Canada Inc. - Keyscan
+
 OUI:FC2D5E*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -127718,6 +128012,9 @@ OUI:FC45C3*
 OUI:FC47D8*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:FC48C9*
+ ID_OUI_FROM_DATABASE=Yobiiq Intelligence B.V.
+
 OUI:FC48EF*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
@@ -127932,7 +128229,7 @@ OUI:FC790B*
  ID_OUI_FROM_DATABASE=Hitachi High Technologies America, Inc.
 
 OUI:FC7A58*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth  Digital  Technology  CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital  Technology  CO., Ltd
 
 OUI:FC7C02*
  ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd.
@@ -127961,6 +128258,9 @@ OUI:FC83C6*
 OUI:FC8417*
  ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
 
+OUI:FC84A7*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
 OUI:FC8596*
  ID_OUI_FROM_DATABASE=Axonne Inc.
 
index db6d5010aa89d68b8c1b79ede46321365c554cff..ce57ffc609bd93f76bfccf9492b5783ae5545de3 100644 (file)
@@ -2262,6 +2262,9 @@ acpi:DYN*:
 acpi:DYX*:
  ID_VENDOR_FROM_DATABASE=Dynax Electronics (HK) Ltd
 
+acpi:EAC*:
+ ID_VENDOR_FROM_DATABASE=Emotiva Audio Corp.
+
 acpi:EAG*:
  ID_VENDOR_FROM_DATABASE=ELTEC Elektronik AG
 
index be9141d7af56c864c7627f50829bbe416fa5c324..6d4e61c8ebb787baa68298d747f0cdaeff72903c 100644 (file)
@@ -1,5 +1,5 @@
---- 20-acpi-vendor.hwdb.base   2023-02-02 14:17:24.826033033 +0000
-+++ 20-acpi-vendor.hwdb        2023-02-02 14:17:24.834033185 +0000
+--- 20-acpi-vendor.hwdb.base   2023-02-15 18:03:45.791408751 +0000
++++ 20-acpi-vendor.hwdb        2023-02-15 18:03:45.799408909 +0000
 @@ -3,6 +3,8 @@
  # Data imported from:
  #     https://uefi.org/uefi-pnp-export
  
  acpi:DJP*:
   ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
-@@ -2335,6 +2364,9 @@
+@@ -2338,6 +2367,9 @@
  acpi:EIN*:
   ID_VENDOR_FROM_DATABASE=Elegant Invention
  
  acpi:EKA*:
   ID_VENDOR_FROM_DATABASE=MagTek Inc.
  
-@@ -2605,6 +2637,9 @@
+@@ -2608,6 +2640,9 @@
  acpi:FCG*:
   ID_VENDOR_FROM_DATABASE=First International Computer Ltd
  
  acpi:FCS*:
   ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
  
-@@ -2981,7 +3016,7 @@
+@@ -2984,7 +3019,7 @@
   ID_VENDOR_FROM_DATABASE=General Standards Corporation
  
  acpi:GSM*:
  
  acpi:GSN*:
   ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
-@@ -3091,6 +3126,9 @@
+@@ -3094,6 +3129,9 @@
  acpi:HEC*:
   ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
  
  acpi:HEL*:
   ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
  
-@@ -3223,6 +3261,9 @@
+@@ -3226,6 +3264,9 @@
  acpi:HSD*:
   ID_VENDOR_FROM_DATABASE=HannStar Display Corp
  
  acpi:HSM*:
   ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
  
-@@ -3349,6 +3390,9 @@
+@@ -3352,6 +3393,9 @@
  acpi:ICI*:
   ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
  
  acpi:ICM*:
   ID_VENDOR_FROM_DATABASE=Intracom SA
  
-@@ -3445,6 +3489,9 @@
+@@ -3448,6 +3492,9 @@
  acpi:IKE*:
   ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
  
  acpi:IKS*:
   ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
  
-@@ -3493,6 +3540,9 @@
+@@ -3496,6 +3543,9 @@
  acpi:IMX*:
   ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
  
  acpi:INA*:
   ID_VENDOR_FROM_DATABASE=Inventec Corporation
  
-@@ -4012,6 +4062,9 @@
+@@ -4015,6 +4065,9 @@
  acpi:LAN*:
   ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
  
  acpi:LAS*:
   ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
  
-@@ -4060,6 +4113,9 @@
+@@ -4063,6 +4116,9 @@
  acpi:LED*:
   ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
  
  acpi:LEG*:
   ID_VENDOR_FROM_DATABASE=Legerity, Inc
  
-@@ -4078,6 +4134,9 @@
+@@ -4081,6 +4137,9 @@
  acpi:LGD*:
   ID_VENDOR_FROM_DATABASE=LG Display
  
  acpi:LGI*:
   ID_VENDOR_FROM_DATABASE=Logitech Inc
  
-@@ -4135,6 +4194,9 @@
+@@ -4138,6 +4197,9 @@
  acpi:LND*:
   ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
  
  acpi:LNK*:
   ID_VENDOR_FROM_DATABASE=Link Tech Inc
  
-@@ -4169,7 +4231,7 @@
+@@ -4172,7 +4234,7 @@
   ID_VENDOR_FROM_DATABASE=Design Technology
  
  acpi:LPL*:
  
  acpi:LSC*:
   ID_VENDOR_FROM_DATABASE=LifeSize Communications
-@@ -4345,6 +4407,9 @@
+@@ -4348,6 +4410,9 @@
  acpi:MCX*:
   ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
  
  acpi:MDA*:
   ID_VENDOR_FROM_DATABASE=Media4 Inc
  
-@@ -4585,6 +4650,9 @@
+@@ -4588,6 +4653,9 @@
  acpi:MOM*:
   ID_VENDOR_FROM_DATABASE=Momentum Data Systems
  
  acpi:MOS*:
   ID_VENDOR_FROM_DATABASE=Moses Corporation
  
-@@ -4822,6 +4890,9 @@
+@@ -4825,6 +4893,9 @@
  acpi:NAL*:
   ID_VENDOR_FROM_DATABASE=Network Alchemy
  
  acpi:NAT*:
   ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
  
-@@ -5356,6 +5427,9 @@
+@@ -5359,6 +5430,9 @@
  acpi:PCX*:
   ID_VENDOR_FROM_DATABASE=PC Xperten
  
  acpi:PDM*:
   ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
  
-@@ -5419,9 +5493,6 @@
+@@ -5422,9 +5496,6 @@
  acpi:PHE*:
   ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
  
  acpi:PHL*:
   ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
  
-@@ -5512,9 +5583,6 @@
+@@ -5515,9 +5586,6 @@
  acpi:PNL*:
   ID_VENDOR_FROM_DATABASE=Panelview, Inc.
  
  acpi:PNR*:
   ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
  
-@@ -5980,9 +6048,6 @@
+@@ -5983,9 +6051,6 @@
  acpi:RTI*:
   ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
  
  acpi:RTL*:
   ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
  
-@@ -6154,9 +6219,6 @@
+@@ -6157,9 +6222,6 @@
  acpi:SEE*:
   ID_VENDOR_FROM_DATABASE=SeeColor Corporation
  
  acpi:SEI*:
   ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
  
-@@ -6634,6 +6696,9 @@
+@@ -6637,6 +6699,9 @@
  acpi:SVD*:
   ID_VENDOR_FROM_DATABASE=SVD Computer
  
  acpi:SVI*:
   ID_VENDOR_FROM_DATABASE=Sun Microsystems
  
-@@ -6718,6 +6783,9 @@
+@@ -6721,6 +6786,9 @@
  acpi:SZM*:
   ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
  
  acpi:TAA*:
   ID_VENDOR_FROM_DATABASE=Tandberg
  
-@@ -6808,6 +6876,9 @@
+@@ -6811,6 +6879,9 @@
  acpi:TDG*:
   ID_VENDOR_FROM_DATABASE=Six15 Technologies
  
  acpi:TDM*:
   ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
  
-@@ -6850,6 +6921,9 @@
+@@ -6853,6 +6924,9 @@
  acpi:TEV*:
   ID_VENDOR_FROM_DATABASE=Televés, S.A.
  
  acpi:TEZ*:
   ID_VENDOR_FROM_DATABASE=Tech Source Inc.
  
-@@ -6976,9 +7050,6 @@
+@@ -6979,9 +7053,6 @@
  acpi:TNC*:
   ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
  
  acpi:TNM*:
   ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
  
-@@ -7288,14 +7359,14 @@
+@@ -7291,14 +7362,14 @@
  acpi:UNC*:
   ID_VENDOR_FROM_DATABASE=Unisys Corporation
  
  
  acpi:UNI*:
   ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
-@@ -7330,6 +7401,9 @@
+@@ -7333,6 +7404,9 @@
  acpi:USA*:
   ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
  
  acpi:USD*:
   ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
  
-@@ -7588,9 +7662,6 @@
+@@ -7591,9 +7665,6 @@
  acpi:WAL*:
   ID_VENDOR_FROM_DATABASE=Wave Access
  
  acpi:WAV*:
   ID_VENDOR_FROM_DATABASE=Wavephore
  
-@@ -7718,7 +7789,7 @@
+@@ -7721,7 +7792,7 @@
   ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
  
  acpi:WYS*:
  
  acpi:WYT*:
   ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
-@@ -7732,9 +7803,6 @@
+@@ -7735,9 +7806,6 @@
  acpi:XDM*:
   ID_VENDOR_FROM_DATABASE=XDM Ltd.
  
  acpi:XES*:
   ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
  
-@@ -7765,9 +7833,6 @@
+@@ -7768,9 +7836,6 @@
  acpi:XNT*:
   ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
  
  acpi:XQU*:
   ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
  
-@@ -7834,6 +7899,9 @@
+@@ -7837,6 +7902,9 @@
  acpi:ZBX*:
   ID_VENDOR_FROM_DATABASE=Zebax Technologies
  
index eba428890c11411f609a603dbc5816cd1fd64c05..c43385d4b91e17947acac229cc02023b156195da 100644 (file)
@@ -11793,79 +11793,79 @@ pci:v00001002d00009552sv0000174Bsd00003000*
  ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4350/4550 HyperMemory DDR2)
 
 pci:v00001002d00009553*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v]
 
 pci:v00001002d00009553sv00001025sd0000015E*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001025sd0000017D*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001025sd00000205*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570 / 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570 / 545v)
 
 pci:v00001002d00009553sv00001025sd00000206*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001025sd00000237*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001028sd000002BE*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570 / 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570 / 545v)
 
 pci:v00001002d00009553sv00001028sd000002E8*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
 
 pci:v00001002d00009553sv0000103Csd0000143C*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv0000103Csd00001446*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv0000103Csd00003624*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
 
 pci:v00001002d00009553sv0000103Csd00003628*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
 
 pci:v00001002d00009553sv0000103Csd00003636*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
 
 pci:v00001002d00009553sv00001043sd00001B32*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001043sd00001B42*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv0000104Dsd00009056*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
 
 pci:v00001002d00009553sv00001179sd0000FF82*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Satellite L505-13T GPU (Mobility Radeon HD 5145))
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Satellite L505-13T GPU (Mobility Radeon HD 5145))
 
 pci:v00001002d00009553sv0000144Dsd0000C07F*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv0000144Dsd0000C571*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv00001462sd00001006*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv000017AAsd00002129*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv000017AAsd0000215B*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009553sv000017AAsd000021BB*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
 
 pci:v00001002d00009555*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550]
+ ID_MODEL_FROM_DATABASE=RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220]
 
 pci:v00001002d00009555sv0000103Csd00001411*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] (ProBook 4720s GPU (Mobility Radeon HD 4350))
+ ID_MODEL_FROM_DATABASE=RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220] (ProBook 4720s GPU (Mobility Radeon HD 4350))
 
 pci:v00001002d00009557*
  ID_MODEL_FROM_DATABASE=RV711/M93 GL [FirePro RG220]
@@ -37685,6 +37685,9 @@ pci:v000010DEd000025A9*
 pci:v000010DEd000025AA*
  ID_MODEL_FROM_DATABASE=GA107M [GeForce MX570 A]
 
+pci:v000010DEd000025AB*
+ ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 3050 4GB Laptop GPU]
+
 pci:v000010DEd000025AC*
  ID_MODEL_FROM_DATABASE=GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]
 
@@ -37712,6 +37715,9 @@ pci:v000010DEd000025BA*
 pci:v000010DEd000025BB*
  ID_MODEL_FROM_DATABASE=GA107GLM [RTX A500 Laptop GPU]
 
+pci:v000010DEd000025BC*
+ ID_MODEL_FROM_DATABASE=GA107
+
 pci:v000010DEd000025E0*
  ID_MODEL_FROM_DATABASE=GA107BM [GeForce RTX 3050 Ti Mobile]
 
@@ -37760,6 +37766,9 @@ pci:v000010DEd00002704*
 pci:v000010DEd00002717*
  ID_MODEL_FROM_DATABASE=GN21-X11 [GeForce RTX 4090 Laptop GPU]
 
+pci:v000010DEd00002730*
+ ID_MODEL_FROM_DATABASE=AD103GLM [RTX 5000 Ada Generation Laptop GPU]
+
 pci:v000010DEd00002757*
  ID_MODEL_FROM_DATABASE=GN21-X11
 
@@ -37778,12 +37787,21 @@ pci:v000010DEd000027A0*
 pci:v000010DEd000027B8*
  ID_MODEL_FROM_DATABASE=AD104GL [L4]
 
+pci:v000010DEd000027BA*
+ ID_MODEL_FROM_DATABASE=AD104
+
+pci:v000010DEd000027BB*
+ ID_MODEL_FROM_DATABASE=AD104GLM [RTX 3500 Ada Generation Laptop GPU]
+
 pci:v000010DEd000027E0*
  ID_MODEL_FROM_DATABASE=GN21-X9
 
 pci:v000010DEd00002820*
  ID_MODEL_FROM_DATABASE=GN21-X6
 
+pci:v000010DEd00002838*
+ ID_MODEL_FROM_DATABASE=AD106GLM [RTX 3000 Ada Generation Laptop GPU]
+
 pci:v000010DEd00002860*
  ID_MODEL_FROM_DATABASE=GN21-X6
 
@@ -37793,6 +37811,9 @@ pci:v000010DEd000028A0*
 pci:v000010DEd000028A1*
  ID_MODEL_FROM_DATABASE=GN21-X2
 
+pci:v000010DEd000028B8*
+ ID_MODEL_FROM_DATABASE=AD107GLM [RTX 2000 Ada Generation Laptop GPU]
+
 pci:v000010DEd000028E0*
  ID_MODEL_FROM_DATABASE=GN21-X4
 
@@ -41076,22 +41097,22 @@ pci:v00001106d00003218*
  ID_MODEL_FROM_DATABASE=K8T800M Host Bridge
 
 pci:v00001106d00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South]
 
 pci:v00001106d00003227sv00001043sd000080ED*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (A7V600/K8V-X/A8V Deluxe motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (A7V600/K8V-X/A8V Deluxe motherboard)
 
 pci:v00001106d00003227sv00001106sd00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (DFI KT600-AL / Soltek SL-B9D-FGR Motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (VT8237 ISA bridge)
 
 pci:v00001106d00003227sv00001458sd00005001*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (GA-7VT600 Motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (GA-7VT600 Motherboard)
 
 pci:v00001106d00003227sv0000147Bsd00001407*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (KV8-MAX3 motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (KV8-MAX3 motherboard)
 
 pci:v00001106d00003227sv00001849sd00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (K7VT4 motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (K7VT4 motherboard)
 
 pci:v00001106d00003230*
  ID_MODEL_FROM_DATABASE=K8M890CE/K8N890CE [Chrome 9]
@@ -56849,6 +56870,12 @@ pci:v0000144Dd00001600*
 pci:v0000144Dd0000A544*
  ID_MODEL_FROM_DATABASE=Exynos 8890 PCIe Root Complex
 
+pci:v0000144Dd0000A575*
+ ID_MODEL_FROM_DATABASE=Exynos 7420 PCIe Root Complex
+
+pci:v0000144Dd0000A5E3*
+ ID_MODEL_FROM_DATABASE=Exynos 5433 PCIe Root Complex
+
 pci:v0000144Dd0000A800*
  ID_MODEL_FROM_DATABASE=XP941 PCIe SSD
 
@@ -65327,9 +65354,21 @@ pci:v000016E2d00001100*
 pci:v000016E2d00001120*
  ID_MODEL_FROM_DATABASE=GX1120 Arbitrary Waveform and Function Generator PXI Board
 
+pci:v000016E2d00001164*
+ ID_MODEL_FROM_DATABASE=GX1164 Multi-Channel Programmable Resistor PXI Board
+
 pci:v000016E2d00001632*
  ID_MODEL_FROM_DATABASE=GX1632e 32-Channel Arbitrary Analog Output PXIe Board
 
+pci:v000016E2d00001648*
+ ID_MODEL_FROM_DATABASE=GX1648 64-Channel Analog Output PXI Board
+
+pci:v000016E2d00001649*
+ ID_MODEL_FROM_DATABASE=GX1649 64-Channel Arbitrary Analog Output PXI Board
+
+pci:v000016E2d00001838*
+ ID_MODEL_FROM_DATABASE=GX1838 Precision DC Source PXI Board
+
 pci:v000016E2d00002065*
  ID_MODEL_FROM_DATABASE=GX2065 Digital Multimeter PXI Board
 
@@ -65339,12 +65378,150 @@ pci:v000016E2d00002200*
 pci:v000016E2d00002201*
  ID_MODEL_FROM_DATABASE=GC2200 High Resolution Universal Time Interval Counter PCI Board
 
+pci:v000016E2d00003104*
+ ID_MODEL_FROM_DATABASE=GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board
+
+pci:v000016E2d00003108*
+ ID_MODEL_FROM_DATABASE=GX3108 4-Channel Source Measure Unit PXI Board
+
+pci:v000016E2d00003116*
+ ID_MODEL_FROM_DATABASE=GX3116e 16-Channel DUT Power Supply PXIe Board
+
+pci:v000016E2d00003348*
+ ID_MODEL_FROM_DATABASE=GX3348 Multi-Channel DC Source and Switch Matrix Board
+
+pci:v000016E2d00003500*
+ ID_MODEL_FROM_DATABASE=GX3500 Digital I/O FLEX FPGA Board
+
+pci:v000016E2d00003700*
+ ID_MODEL_FROM_DATABASE=GX3700e Digital I/O FLEX FPGA PXIe Board
+
+pci:v000016E2d00003701*
+ ID_MODEL_FROM_DATABASE=GX3700 Digital I/O FLEX FPGA PXI Board
+
+pci:v000016E2d00003800*
+ ID_MODEL_FROM_DATABASE=GX3800e Digital I/O FLEX FPGA PXIe Board
+
+pci:v000016E2d00004943*
+ ID_MODEL_FROM_DATABASE=GX4943 HellFire/Longbow Serial Communication Board
+
 pci:v000016E2d00005050*
  ID_MODEL_FROM_DATABASE=GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board
 
+pci:v000016E2d00005055*
+ ID_MODEL_FROM_DATABASE=GX5055 Dynamic Digital I/O with Pin Electronics PXI Board
+
+pci:v000016E2d00005083*
+ ID_MODEL_FROM_DATABASE=GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+
+pci:v000016E2d00005106*
+ ID_MODEL_FROM_DATABASE=GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board
+
+pci:v000016E2d00005151*
+ ID_MODEL_FROM_DATABASE=GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board
+
+pci:v000016E2d00005152*
+ ID_MODEL_FROM_DATABASE=GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board
+
+pci:v000016E2d00005250*
+ ID_MODEL_FROM_DATABASE=GX5250 Digital I/O Streaming PXI Board
+
+pci:v000016E2d00005280*
+ ID_MODEL_FROM_DATABASE=GX5280 High-Speed Digital I/O PXI Board
+
+pci:v000016E2d00005290*
+ ID_MODEL_FROM_DATABASE=GX5290 High-Speed Dynamic Digital I/O PXI Board
+
+pci:v000016E2d00005294*
+ ID_MODEL_FROM_DATABASE=GX5294 High-Speed Digital I/O PXI Board
+
+pci:v000016E2d00005295*
+ ID_MODEL_FROM_DATABASE=GX5295 Digital I/O with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00005296*
+ ID_MODEL_FROM_DATABASE=GX5296 Digital I/O with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00005550*
+ ID_MODEL_FROM_DATABASE=GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+
 pci:v000016E2d00005641*
  ID_MODEL_FROM_DATABASE=GX5641/2 Bi-directional Differential-TTL I/O PXI Board
 
+pci:v000016E2d00005731*
+ ID_MODEL_FROM_DATABASE=GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board
+
+pci:v000016E2d00005732*
+ ID_MODEL_FROM_DATABASE=GX5732 224-Channel Static Digital I/O PXI Board
+
+pci:v000016E2d00005733*
+ ID_MODEL_FROM_DATABASE=GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board
+
+pci:v000016E2d00005960*
+ ID_MODEL_FROM_DATABASE=GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00006021*
+ ID_MODEL_FROM_DATABASE=GX6021 20-Channel RF Multiplexer PXI Board
+
+pci:v000016E2d00006062*
+ ID_MODEL_FROM_DATABASE=GX6062 60-Channel RF Multiplexer PXI Board
+
+pci:v000016E2d00006115*
+ ID_MODEL_FROM_DATABASE=GX6115 15-Channel High Current SPDT Form-C Relay PXI Board
+
+pci:v000016E2d00006125*
+ ID_MODEL_FROM_DATABASE=GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board
+
+pci:v000016E2d00006138*
+ ID_MODEL_FROM_DATABASE=GX6138 38-Channel SPST Form-A Relay PXI Board
+
+pci:v000016E2d00006188*
+ ID_MODEL_FROM_DATABASE=GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board
+
+pci:v000016E2d00006192*
+ ID_MODEL_FROM_DATABASE=GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board
+
+pci:v000016E2d00006196*
+ ID_MODEL_FROM_DATABASE=GX6196 96-Channel DPST Form-A Relay Carrier PXI Board
+
+pci:v000016E2d00006256*
+ ID_MODEL_FROM_DATABASE=GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board
+
+pci:v000016E2d00006264*
+ ID_MODEL_FROM_DATABASE=GX6264 128-Channel Scanner/Multiplexer Board
+
+pci:v000016E2d00006315*
+ ID_MODEL_FROM_DATABASE=GX6315 45-Channel High Current SPDT Form-C Relay Board
+
+pci:v000016E2d00006325*
+ ID_MODEL_FROM_DATABASE=GX6325 75-Channel High-Density SPDT Form-C Relay Board
+
+pci:v000016E2d00006338*
+ ID_MODEL_FROM_DATABASE=GX6338 114-Channel SPST Form-A Relay PXI Board
+
+pci:v000016E2d00006377*
+ ID_MODEL_FROM_DATABASE=GX6377 Multifunction Switching PXI Board
+
+pci:v000016E2d00006384*
+ ID_MODEL_FROM_DATABASE=GX6384 Configurable High-Density Switch Matrix PXI Board
+
+pci:v000016E2d00006616*
+ ID_MODEL_FROM_DATABASE=GX6616 6x2:16 Switch Matrix PXI Board
+
+pci:v000016E2d00006864*
+ ID_MODEL_FROM_DATABASE=GX6864 Video Switching PXI Board
+
+pci:v000016E2d00007400*
+ ID_MODEL_FROM_DATABASE=GX7400 Dual-Output Programmable Power Supply PXI Board
+
+pci:v000016E2d00007404*
+ ID_MODEL_FROM_DATABASE=GX7404 Prototyping and Power Interface PXI Board
+
+pci:v000016E2d00007777*
+ ID_MODEL_FROM_DATABASE=GX7777 Generic Interface PXI Board
+
+pci:v000016E2d00007779*
+ ID_MODEL_FROM_DATABASE=GX7779 Backplane Tester PXI Board
+
 pci:v000016E3*
  ID_VENDOR_FROM_DATABASE=European Space Agency
 
@@ -68280,7 +68457,7 @@ pci:v0000193C*
  ID_VENDOR_FROM_DATABASE=MAXIM Integrated Products
 
 pci:v0000193D*
- ID_VENDOR_FROM_DATABASE=Hangzhou H3C Technologies Co., Ltd.
+ ID_VENDOR_FROM_DATABASE=New H3C Technologies Co., Ltd.
 
 pci:v0000193F*
  ID_VENDOR_FROM_DATABASE=AHA Products Group
@@ -71453,48 +71630,90 @@ pci:v00001C5Fd0000000Esv00001C5Fsd00000B20*
 pci:v00001C5Fd0000000Esv00001C5Fsd00000B21*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B25*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B27*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 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:v00001C5Fd0000000Esv00001C5Fsd00000B35*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B37*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 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:v00001C5Fd0000000Esv00001C5Fsd00000B47*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 7680G 2.5" U.2)
+
 pci:v00001C5Fd0000000Esv00001C5Fsd00001331*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6531 3840G 2.5" U.2)
 
 pci:v00001C5Fd0000000Esv00001C5Fsd00001341*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6531 7680G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00001431*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6541 3840G 2.5" U.2)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00001441*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6541 7680G 2.5" U.2)
+
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B20*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G AIC)
 
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B21*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B25*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B27*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 1600G 2.5" U.2)
+
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B30*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G AIC)
 
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B31*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B35*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B37*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 3200G 2.5" U.2)
+
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B40*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 6400G AIC)
 
 pci:v00001C5Fd0000000Esv00001C5Fsd00004B41*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 6400G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B47*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 6400G 2.5" U.2)
+
 pci:v00001C5Fd0000000Esv00001C5Fsd00005331*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6537 3200G 2.5" U.2)
 
 pci:v00001C5Fd0000000Esv00001C5Fsd00005341*
  ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6537 6400G 2.5" U.2)
 
+pci:v00001C5Fd0000000Esv00001C5Fsd00005431*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6547 3200G 2.5" U.2)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00005441*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6547 6400G 2.5" U.2)
+
 pci:v00001C5Fd0000003D*
  ID_MODEL_FROM_DATABASE=PBlaze5 920/926
 
@@ -71558,6 +71777,9 @@ pci:v00001C5Fd0000003Esv00001C5Fsd00004B51*
 pci:v00001C5Fd0000003Esv00001C5Fsd00004B61*
  ID_MODEL_FROM_DATABASE=PBlaze6 6920/6930 (NVMe SSD PBlaze6 6936 25600GB 2.5" U.3)
 
+pci:v00001C5Fd0000003F*
+ ID_MODEL_FROM_DATABASE=PBlaze7 7940/7946
+
 pci:v00001C5Fd00000540*
  ID_MODEL_FROM_DATABASE=PBlaze4 NVMe SSD
 
@@ -71709,7 +71931,7 @@ pci:v00001CC4d00001203sv00001CC4sd0000A214*
  ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UHXXXa series U.2 6400GB)
 
 pci:v00001CC4d00001203sv00001CC4sd0000E122*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 1920G)
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 1920GB)
 
 pci:v00001CC4d00001203sv00001CC4sd0000E123*
  ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 3840GB)
@@ -72714,7 +72936,7 @@ pci:v00001D97d00002263*
  ID_MODEL_FROM_DATABASE=SM2263EN/SM2263XT-based OEM SSD
 
 pci:v00001D9B*
- ID_VENDOR_FROM_DATABASE=Facebook, Inc.
+ ID_VENDOR_FROM_DATABASE=Meta Platforms, Inc.
 
 pci:v00001D9Bd00000010*
  ID_MODEL_FROM_DATABASE=Networking DOM Engine
@@ -73514,6 +73736,27 @@ pci:v00001DF7d00000002*
 pci:v00001DF7d00000003*
  ID_MODEL_FROM_DATABASE=alst4x
 
+pci:v00001DF8*
+ ID_VENDOR_FROM_DATABASE=V&G Information System Co.,Ltd
+
+pci:v00001DF8d0000C000*
+ ID_MODEL_FROM_DATABASE=DC NVMe SSD
+
+pci:v00001DF8d0000C000sv00001DF8sd0000C600*
+ ID_MODEL_FROM_DATABASE=DC NVMe SSD (Enterprise U.2 NVMe SSD)
+
+pci:v00001DF8d0000D000*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D100*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D201*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D600*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
 pci:v00001DFC*
  ID_VENDOR_FROM_DATABASE=JSC NT-COM
 
@@ -73713,184 +73956,223 @@ pci:v00001E3B*
  ID_VENDOR_FROM_DATABASE=DapuStor Corporation
 
 pci:v00001E3Bd00000600*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000010*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5102))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000013*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5302))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000030*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (J5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000031*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (J5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000032*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 15.36TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 15.36TB (J5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000033*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (J5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000034*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (J5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000035*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 12.80TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 12.80TB (J5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000036*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 7.68TB (J5110))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 7.68TB (J5110))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000037*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 6.40TB (J5310))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 6.40TB (J5310))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000038*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (J5100D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000039*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (J5100D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000003B*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (J5300D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000003C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (J5300D))
 
 pci:v00001E3Bd00000600sv00001E3Bsd0000003E*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 3.84TB (J5110))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 3.84TB (J5110))
 
 pci:v00001E3Bd00000600sv00001E3Bsd0000003F*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 3.20TB (J5310))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 3.20TB (J5310))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000004C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 QDP 1.92TB (J5100))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000004D*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 QDP 1.60TB (J5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000050*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000051*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (R5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000052*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 15.36TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 15.36TB (R5100))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000053*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000054*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (R5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000055*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 12.80TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 12.80TB (R5300))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000056*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5101))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5101))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000059*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5301))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5301))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000060*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5100D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5100D))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000061*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (R5100D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (R5100D))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000063*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5300D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5300D))
 
 pci:v00001E3Bd00000600sv00001E3Bsd00000064*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (R5300D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (R5300D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000066*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5101D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000069*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5301D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000006C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.92TB (R5101))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000006D*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.60TB (J5301))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F0*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.40TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.40TB (X2900))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F1*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.80TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.80TB (X2900))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F2*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 1.60TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.60TB (X2900))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F3*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (X2900))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F5*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.40TB (X2900P))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.40TB (X2900P))
 
 pci:v00001E3Bd00000600sv00001E3Bsd000000F6*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.80TB (X2900P))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.80TB (X2900P))
 
 pci:v00001E3Bd00001098*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000001*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H2100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000002*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H2200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000004*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H2100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000005*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H2200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000009*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000000A*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000000C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000000D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000014*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 3.2TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 3.2TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000015*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 3.84TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 3.84TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000021*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 6.4TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 6.4TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000022*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 7.68TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 7.68TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000052*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3900))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000053*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3900))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000059*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.75TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.75TB (H3900))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000061*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H2100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000062*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H2200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000064*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H2100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000065*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H2200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000006C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000006D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000006F*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000070*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000007C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 3.2TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 3.2TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000007D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 3.84TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 3.84TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000007F*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 6.4TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 6.4TB (H3100))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000080*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 7.68TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 7.68TB (H3200))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000008A*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3900))
 
 pci:v00001E3Bd00001098sv00001E3Bsd0000008B*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3900))
 
 pci:v00001E3Bd00001098sv00001E3Bsd00000091*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.75TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.75TB (H3900))
+
+pci:v00001E3Bd00001333*
+ ID_MODEL_FROM_DATABASE=Haishen5 NVMe SSD
 
 pci:v00001E3D*
  ID_VENDOR_FROM_DATABASE=Burlywood, Inc
@@ -73995,7 +74277,10 @@ pci:v00001E7Cd0000BCA1*
  ID_MODEL_FROM_DATABASE=AKD1000 Neural Network Coprocessor [Akida]
 
 pci:v00001E7E*
- ID_VENDOR_FROM_DATABASE=9034 Pliops-Data Processor [XDP1.0]
+ ID_VENDOR_FROM_DATABASE=Pliops
+
+pci:v00001E7Ed00009034*
+ ID_MODEL_FROM_DATABASE=Pliops Extreme Data Processor [XDP1.0]
 
 pci:v00001E7F*
  ID_VENDOR_FROM_DATABASE=Jiangsu Huacun Elec. Tech. Co., Ltd.
@@ -74439,19 +74724,19 @@ pci:v00001F3F*
  ID_VENDOR_FROM_DATABASE=3SNIC Ltd
 
 pci:v00001F3Fd00002100*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA
 
 pci:v00001F3Fd00002100sv00001F3Fsd00000120*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 32 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 32 Ports)
 
 pci:v00001F3Fd00002100sv00001F3Fsd00000125*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 40 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 40 Ports)
 
 pci:v00001F3Fd00002100sv00001F3Fsd00000180*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 16 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 16 Ports)
 
 pci:v00001F3Fd00002100sv00001F3Fsd00000185*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 8 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 8 Ports)
 
 pci:v00001F3Fd00002200*
  ID_MODEL_FROM_DATABASE=SSSRAID RAID controller
@@ -83456,6 +83741,9 @@ pci:v00008086d0000159B*
 pci:v00008086d0000159Bsv00001137sd000002BE*
  ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC)
 
+pci:v00008086d0000159Bsv0000193Dsd00001085*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (NIC-ETH660F-3S-2P)
+
 pci:v00008086d0000159Bsv00001BD4sd00000057*
  ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (Ethernet Network Adapter E810-XXVAM2)
 
@@ -97238,6 +97526,15 @@ pci:v00008086d000046C1*
 pci:v00008086d000046C3*
  ID_MODEL_FROM_DATABASE=Alder Lake-UP4 GT1 [UHD Graphics]
 
+pci:v00008086d000046D0*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
+pci:v00008086d000046D1*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
+pci:v00008086d000046D2*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
 pci:v00008086d00004905*
  ID_MODEL_FROM_DATABASE=DG1 [Iris Xe MAX Graphics]
 
@@ -98834,6 +99131,9 @@ pci:v00008086d00007ABD*
 pci:v00008086d00007ABF*
  ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #8
 
+pci:v00008086d00007AC8*
+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #25
+
 pci:v00008086d00007ACC*
  ID_MODEL_FROM_DATABASE=Alder Lake-S PCH Serial IO I2C Controller #0
 
@@ -102047,6 +102347,12 @@ pci:v00008086d0000A3F0*
 pci:v00008086d0000A620*
  ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB)
 
+pci:v00008086d0000A720*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
+pci:v00008086d0000A721*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
 pci:v00008086d0000A77F*
  ID_MODEL_FROM_DATABASE=Volume Management Device NVMe RAID Controller Intel Corporation
 
@@ -102074,6 +102380,18 @@ pci:v00008086d0000A78A*
 pci:v00008086d0000A78B*
  ID_MODEL_FROM_DATABASE=Raptor Lake-S UHD Graphics
 
+pci:v00008086d0000A7A0*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [Iris Xe Graphics]
+
+pci:v00008086d0000A7A1*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [Iris Xe Graphics]
+
+pci:v00008086d0000A7A8*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
+pci:v00008086d0000A7A9*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
 pci:v00008086d0000ABC0*
  ID_MODEL_FROM_DATABASE=Omni-Path Fabric Switch Silicon 100 Series
 
index 3fbe7ca8e728a198e43976482effb811fc6cf443..7a969a84b5cd46d842cbd4eb72650004ea3efa16 100644 (file)
@@ -462,7 +462,8 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPSpectreNotebook:*
  EVDEV_ABS_36=1083:4808:65
 
 # HP Envy x360
-evdev:name:SynPS/2 Synaptics TouchPad:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:*
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:*
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15-cn0xxx**
  EVDEV_ABS_00=1302:5640:36
  EVDEV_ABS_01=1119:4741:61
  EVDEV_ABS_35=1302:5640:36
index 47d4583ef299ba91b5e9a8b17fce45ae9f9e2967..10dde4dbec05ff137c22a5d1b9e2709c953c7cb1 100644 (file)
@@ -611,6 +611,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible13*:*
 evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*HP[sS][pP][eE][cC][tT][rR][eE]*x3602-in-1*:*
 # ENVY x360
 evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible*:*
+evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx3602-in-1*:*
  KEYBOARD_KEY_08=unknown                                #  Prevents random airplane mode activation
 
 # HP Elite x2 1013 G3
@@ -935,7 +936,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*3000*:*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn0769AP2:pvr3000N200:*
  KEYBOARD_KEY_b4=prog1
 
-# lenovo-ideapad
+# Lenovo IdeaPad
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
  KEYBOARD_KEY_81=rfkill                                 # does nothing in BIOS
@@ -946,6 +947,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
  KEYBOARD_KEY_f2=f21                                    # touchpad toggle (key alternately emits F2 and F3)
  KEYBOARD_KEY_f3=f21
 
+# Lenovo IdeaPad 5
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrIdeaPad5*:*
+ KEYBOARD_KEY_81=insert
+
 # Thinkpad X200_Tablet
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*:*
  KEYBOARD_KEY_5d=menu
@@ -2025,8 +2030,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnViewSonic:pnVPAD10:*
 ###########################################################
 # Positivo-Vaio
 ###########################################################
-# Vaio Pro (VJPW11F11X)
-evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJPW11F11X*:pvr*:*
+# Vaio Pro (VJPW11F11X, VJPW12F11X)
+evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJPW1[12]F11X*:pvr*:*
 # Vaio FE14 (VJFE41F11X, VJE42F11X, VJFE44F11X, VJFE54F11X)
 evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE*:pvr*:*
  KEYBOARD_KEY_76=f21                                   # Fn+F1 toggle touchpad
index 00823c69864c939cbec0cbe6362b2171b10adb4e..feeaaaac761f757496839d57789310e9ad0a1715 100644 (file)
@@ -33206,12 +33206,6 @@ C80AA9     (base 16)           Quanta Computer Inc.
                                Tao Yuan    33377\r
                                TW\r
 \r
-C0-8F-20   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-C08F20     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 74-F7-F6   (hex)               Shanghai Sunmi Technology Co.,Ltd.\r
 74F7F6     (base 16)           Shanghai Sunmi Technology Co.,Ltd.\r
                                Room 505, KIC Plaza, No.388 Song Hu Road, Yang Pu District, Shanghai, China\r
@@ -34322,12 +34316,6 @@ A0A3F0     (base 16)           D-Link International
                                Osaka  Kita-ku  530-0011\r
                                JP\r
 \r
-08-FF-24   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-08FF24     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 50-55-8D   (hex)               China Mobile IOT Company Limited\r
 50558D     (base 16)           China Mobile IOT Company Limited\r
                                NO.8 Yu Ma Road, NanAn Area\r
@@ -34838,12 +34826,6 @@ C45BBE     (base 16)           Espressif Inc.
                                Sunnyvale  CA  94089\r
                                US\r
 \r
-90-B6-7A   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-90B67A     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 7C-D9-F4   (hex)               UAB Teltonika Telematics\r
 7CD9F4     (base 16)           UAB Teltonika Telematics\r
                                Saltoniskiu  str. 9B-1\r
@@ -35216,12 +35198,6 @@ F46077     (base 16)           Texas Instruments
                                Dallas  TX  75243\r
                                US\r
 \r
-24-9A-C8   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-249AC8     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 C0-3C-04   (hex)               Sagemcom Broadband SAS\r
 C03C04     (base 16)           Sagemcom Broadband SAS\r
                                250, route de l'Empereur\r
@@ -36368,12 +36344,6 @@ D8B053     (base 16)           Xiaomi Communications Co Ltd
                                Shenzhen  GuangDong  518109\r
                                CN\r
 \r
-28-C0-1B   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-28C01B     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 B8-12-DA   (hex)                LVSWITCHES INC.\r
 B812DA     (base 16)            LVSWITCHES INC.\r
                                F1 building,New light source base Luocun town,Nanhai district\r
@@ -37652,12 +37622,6 @@ C89E61     (base 16)           Lyngsoe Systems LTd
                                Bolton  Ontario  L7E 4E8\r
                                CA\r
 \r
-E0-28-B1   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-E028B1     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 C0-8D-51   (hex)               Amazon Technologies Inc.\r
 C08D51     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
@@ -39233,12 +39197,6 @@ C44137     (base 16)           Quectel Wireless Solutions Co.,Ltd.
                                Beijing  Beijing  100085\r
                                CN\r
 \r
-30-31-80   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-303180     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 5C-3E-06   (hex)               Cisco Systems, Inc\r
 5C3E06     (base 16)           Cisco Systems, Inc\r
                                80 West Tasman Drive\r
@@ -39341,18 +39299,6 @@ D46352     (base 16)           Vutility Inc.
                                Sandy  UT  84070\r
                                US\r
 \r
-94-0E-E7   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-940EE7     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-A8-B2-71   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-A8B271     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
 50-5A-65   (hex)               AzureWave Technology Inc.\r
 505A65     (base 16)           AzureWave Technology Inc.\r
                                8F., No. 94, Baozhong Rd., Xindian Dist.\r
@@ -39383,6 +39329,18 @@ F41532     (base 16)           PETAiO (NanJing), Inc.
                                Nanjing  Jiangsu  211800\r
                                CN\r
 \r
+A8-B2-71   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+A8B271     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+64-05-E4   (hex)               ALPSALPINE CO,.LTD\r
+6405E4     (base 16)           ALPSALPINE CO,.LTD\r
+                               nishida 6-1\r
+                               kakuda-City  Miyagi-Pref  981-1595\r
+                               JP\r
+\r
 BC-64-D9   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
 BC64D9     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
                                NO.18 HAIBIN ROAD,\r
@@ -39395,11 +39353,11 @@ BC64D9     (base 16)          GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
-64-05-E4   (hex)               ALPSALPINE CO,.LTD\r
-6405E4     (base 16)           ALPSALPINE CO,.LTD\r
-                               nishida 6-1\r
-                               kakuda-City  Miyagi-Pref  981-1595\r
-                               JP\r
+94-0E-E7   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+940EE7     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
 \r
 7C-C7-4A   (hex)               Fiberhome Telecommunication Technologies Co.,LTD\r
 7CC74A     (base 16)           Fiberhome Telecommunication Technologies Co.,LTD\r
@@ -39419,12 +39377,6 @@ BC64D9     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
                                Dongguan  Guangdong  523808\r
                                CN\r
 \r
-48-BC-E1   (hex)               Samsung Electronics Co.,Ltd\r
-48BCE1     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
-\r
 28-B5-E8   (hex)               Texas Instruments\r
 28B5E8     (base 16)           Texas Instruments\r
                                12500 TI Blvd\r
@@ -39437,6 +39389,12 @@ BC64D9     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
                                Moscow    129223\r
                                RU\r
 \r
+70-F8-AE   (hex)               Microsoft Corporation\r
+70F8AE     (base 16)           Microsoft Corporation\r
+                               One Microsoft Way\r
+                               REDMOND  WA  98052\r
+                               US\r
+\r
 F8-3C-80   (hex)               MITSUMI ELECTRIC CO.,LTD.\r
 F83C80     (base 16)           MITSUMI ELECTRIC CO.,LTD.\r
                                2-11-2, Tsurumaki\r
@@ -39449,11 +39407,11 @@ D83ADD     (base 16)          Raspberry Pi Trading Ltd
                                Cambridge    CB4 0DS\r
                                GB\r
 \r
-70-F8-AE   (hex)               Microsoft Corporation\r
-70F8AE     (base 16)           Microsoft Corporation\r
-                               One Microsoft Way\r
-                               REDMOND  WA  98052\r
-                               US\r
+64-EC-65   (hex)               vivo Mobile Communication Co., Ltd.\r
+64EC65     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               No.1, vivo Road, Chang'an\r
+                               Dongguan  Guangdong  523860\r
+                               CN\r
 \r
 F4-24-62   (hex)               Selcom Electronics (Shanghai) Co., Ltd\r
 F42462     (base 16)           Selcom Electronics (Shanghai) Co., Ltd\r
@@ -39461,23 +39419,35 @@ F42462     (base 16)          Selcom Electronics (Shanghai) Co., Ltd
                                Shanghai  Shanghai  201707\r
                                CN\r
 \r
-64-EC-65   (hex)               vivo Mobile Communication Co., Ltd.\r
-64EC65     (base 16)           vivo Mobile Communication Co., Ltd.\r
-                               No.1, vivo Road, Chang'an\r
-                               Dongguan  Guangdong  523860\r
+F4-A1-7F   (hex)               Marquardt Electronics Technology (Shanghai) Co.Ltd\r
+F4A17F     (base 16)           Marquardt Electronics Technology (Shanghai) Co.Ltd\r
+                               No. 650 Qingda Road, Heqing Industrial Zone, Shanghai\r
+                               Shanghai    201201\r
                                CN\r
 \r
+48-BC-E1   (hex)               Samsung Electronics Co.,Ltd\r
+48BCE1     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
+90-B4-DD   (hex)               Private\r
+90B4DD     (base 16)           Private\r
+                               Hovås Snöbärsväg 2, lgh 201\r
+                               Hovås    43654\r
+                               SE\r
+\r
 B8-5C-EE   (hex)               Baidu Online Network Technology (Beijing) Co., Ltd\r
 B85CEE     (base 16)           Baidu Online Network Technology (Beijing) Co., Ltd\r
                                Baidu Campus, No.10 Shangdi 10th Street, Haidian District\r
                                 Beijing    100085\r
                                CN\r
 \r
-F4-A1-7F   (hex)               Marquardt Electronics Technology (Shanghai) Co.Ltd\r
-F4A17F     (base 16)           Marquardt Electronics Technology (Shanghai) Co.Ltd\r
-                               No. 650 Qingda Road, Heqing Industrial Zone, Shanghai\r
-                               Shanghai    201201\r
-                               CN\r
+8C-79-09   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
+8C7909     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
+                               3333 Scott Blvd\r
+                               Santa Clara  CA  95054\r
+                               US\r
 \r
 D0-D0-03   (hex)               Samsung Electronics Co.,Ltd\r
 D0D003     (base 16)           Samsung Electronics Co.,Ltd\r
@@ -39497,6 +39467,12 @@ D0D003     (base 16)           Samsung Electronics Co.,Ltd
                                Kanata  Ontario  K2K 2E6\r
                                CA\r
 \r
+B8-38-EF   (hex)               ADVA Optical Networking Ltd.\r
+B838EF     (base 16)           ADVA Optical Networking Ltd.\r
+                               ADVAntage House\r
+                               York    YO30 4RY\r
+                               GB\r
+\r
 B4-ED-D5   (hex)               Quectel Wireless Solutions Co.,Ltd.\r
 B4EDD5     (base 16)           Quectel Wireless Solutions Co.,Ltd.\r
                                7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District\r
@@ -39509,42 +39485,24 @@ B4EDD5     (base 16)          Quectel Wireless Solutions Co.,Ltd.
                                Nagaokakyo-shi  Kyoto  617-8555\r
                                JP\r
 \r
+F0-74-8D   (hex)               Ruijie Networks Co.,LTD\r
+F0748D     (base 16)           Ruijie Networks Co.,LTD\r
+                               No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+                               Fuzhou  Fujian  350002\r
+                               CN\r
+\r
 08-42-18   (hex)               Asyril SA\r
 084218     (base 16)           Asyril SA\r
                                Z.I. du Vivier 22\r
                                Villaz-St-Pierre   Fribourg  1690\r
                                CH\r
 \r
-90-B4-DD   (hex)               Private\r
-90B4DD     (base 16)           Private\r
-                               Hovås Snöbärsväg 2, lgh 201\r
-                               Hovås    43654\r
-                               SE\r
-\r
 D8-5B-22   (hex)               Shenzhen Hohunet Technology Co., Ltd\r
 D85B22     (base 16)           Shenzhen Hohunet Technology Co., Ltd\r
                                8th floor, block a, Huahan technology building, No.16, Langshan Road, North District, Science Park, Nanshan District, Shenzhen\r
                                Shenzhen  Gongdong  518000\r
                                CN\r
 \r
-8C-79-09   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
-8C7909     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
-                               3333 Scott Blvd\r
-                               Santa Clara  CA  95054\r
-                               US\r
-\r
-B8-38-EF   (hex)               ADVA Optical Networking Ltd.\r
-B838EF     (base 16)           ADVA Optical Networking Ltd.\r
-                               ADVAntage House\r
-                               York    YO30 4RY\r
-                               GB\r
-\r
-70-58-46   (hex)               Trig Avionics Limited\r
-705846     (base 16)           Trig Avionics Limited\r
-                               Heriot Watt Research Park\r
-                               Edinburgh    EH14 4AP\r
-                               GB\r
-\r
 08-91-A3   (hex)               Amazon Technologies Inc.\r
 0891A3     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
@@ -39557,23 +39515,11 @@ B838EF     (base 16)          ADVA Optical Networking Ltd.
                                Pudong  Shanghai  201203\r
                                CN\r
 \r
-F0-74-8D   (hex)               Ruijie Networks Co.,LTD\r
-F0748D     (base 16)           Ruijie Networks Co.,LTD\r
-                               No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
-                               Fuzhou  Fujian  350002\r
-                               CN\r
-\r
-0C-2E-57   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-0C2E57     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-E8-D7-75   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-E8D775     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
+90-9B-6F   (hex)               Apple, Inc.\r
+909B6F     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
 \r
 74-73-B4   (hex)               Apple, Inc.\r
 7473B4     (base 16)           Apple, Inc.\r
@@ -39593,29 +39539,23 @@ A81AF1     (base 16)          Apple, Inc.
                                Cupertino  CA  95014\r
                                US\r
 \r
-CC-08-FA   (hex)               Apple, Inc.\r
-CC08FA     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
+98-0C-33   (hex)               Silicon Laboratories\r
+980C33     (base 16)           Silicon Laboratories\r
+                               7000 W. William Cannon Dr.\r
+                               Austin  TX  78735\r
                                US\r
 \r
-90-9B-6F   (hex)               Apple, Inc.\r
-909B6F     (base 16)           Apple, Inc.\r
+CC-08-FA   (hex)               Apple, Inc.\r
+CC08FA     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
                                Cupertino  CA  95014\r
                                US\r
 \r
-9C-DB-AF   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-9CDBAF     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-98-0C-33   (hex)               Silicon Laboratories\r
-980C33     (base 16)           Silicon Laboratories\r
-                               7000 W. William Cannon Dr.\r
-                               Austin  TX  78735\r
-                               US\r
+70-58-46   (hex)               Trig Avionics Limited\r
+705846     (base 16)           Trig Avionics Limited\r
+                               Heriot Watt Research Park\r
+                               Edinburgh    EH14 4AP\r
+                               GB\r
 \r
 84-39-8F   (hex)               Fortinet, Inc.\r
 84398F     (base 16)           Fortinet, Inc.\r
@@ -39623,12 +39563,6 @@ CC08FA     (base 16)           Apple, Inc.
                                Sunnyvale    94086\r
                                US\r
 \r
-00-30-2B   (hex)               Inalp Solutions AG\r
-00302B     (base 16)           Inalp Solutions AG\r
-                               Badenerstrasse 13\r
-                               Brugg    5200\r
-                               CH\r
-\r
 A4-A5-28   (hex)               Sichuan Tianyi Comheart Telecom Co.,LTD\r
 A4A528     (base 16)           Sichuan Tianyi Comheart Telecom Co.,LTD\r
                                No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
@@ -39647,6 +39581,24 @@ ECA7AD     (base 16)           Barrot Technology Co.,Ltd.
                                beijing  beijing  100000\r
                                CN\r
 \r
+9C-DB-AF   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+9CDBAF     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+0C-2E-57   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+0C2E57     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+E8-D7-75   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+E8D775     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
 44-DB-D2   (hex)               YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
 44DBD2     (base 16)           YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
                                309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
@@ -39659,36 +39611,24 @@ ECA7AD     (base 16)          Barrot Technology Co.,Ltd.
                                San Jose  CA  94568\r
                                US\r
 \r
+00-30-2B   (hex)               Inalp Solutions AG\r
+00302B     (base 16)           Inalp Solutions AG\r
+                               Badenerstrasse 13\r
+                               Brugg    5200\r
+                               CH\r
+\r
 1C-3B-62   (hex)               HMD Global Oy\r
 1C3B62     (base 16)           HMD Global Oy\r
                                Bertel Jungin aukio 9\r
                                Espoo    02600\r
                                FI\r
 \r
-7C-4D-8F   (hex)               HP Inc.\r
-7C4D8F     (base 16)           HP Inc.\r
-                               10300 Energy Dr\r
-                               Spring  TX  77389\r
-                               US\r
-\r
-74-D5-58   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-74D558     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-                               NO.18 HAIBIN ROAD,\r
-                               DONG GUAN  GUANG DONG  523860\r
-                               CN\r
-\r
 24-48-45   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
 244845     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
                                No.555 Qianmo Road\r
                                Hangzhou  Zhejiang  310052\r
                                CN\r
 \r
-9C-CB-F7   (hex)               CLOUD STAR TECHNOLOGY CO., LTD.\r
-9CCBF7     (base 16)           CLOUD STAR TECHNOLOGY CO., LTD.\r
-                               13F.-1, No. 167, Wenqing Rd  Guishan Dist\r
-                               Taoyuan City  Taoyuan  333613\r
-                               TW\r
-\r
 E0-DC-A0   (hex)               Siemens Industrial Automation Products Ltd., Chengdu\r
 E0DCA0     (base 16)           Siemens Industrial Automation Products Ltd., Chengdu\r
                                Tianyuan Road 99\r
@@ -39701,6 +39641,18 @@ E0DCA0     (base 16)           Siemens Industrial Automation Products Ltd., Chengdu
                                Guangzhou  Guangdong  511493\r
                                CN\r
 \r
+F4-64-12   (hex)               Sony Interactive Entertainment Inc.\r
+F46412     (base 16)           Sony Interactive Entertainment Inc.\r
+                               1-7-1 Konan\r
+                               Minato-ku  Tokyo  108-0075\r
+                               JP\r
+\r
+7C-4D-8F   (hex)               HP Inc.\r
+7C4D8F     (base 16)           HP Inc.\r
+                               10300 Energy Dr\r
+                               Spring  TX  77389\r
+                               US\r
+\r
 3C-F9-F0   (hex)               zte corporation\r
 3CF9F0     (base 16)           zte corporation\r
                                12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
@@ -39713,11 +39665,17 @@ E0DCA0     (base 16)          Siemens Industrial Automation Products Ltd., Chengdu
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
-F4-64-12   (hex)               Sony Interactive Entertainment Inc.\r
-F46412     (base 16)           Sony Interactive Entertainment Inc.\r
-                               1-7-1 Konan\r
-                               Minato-ku  Tokyo  108-0075\r
-                               JP\r
+74-D5-58   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+74D558     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+                               NO.18 HAIBIN ROAD,\r
+                               DONG GUAN  GUANG DONG  523860\r
+                               CN\r
+\r
+9C-CB-F7   (hex)               CLOUD STAR TECHNOLOGY CO., LTD.\r
+9CCBF7     (base 16)           CLOUD STAR TECHNOLOGY CO., LTD.\r
+                               13F.-1, No. 167, Wenqing Rd  Guishan Dist\r
+                               Taoyuan City  Taoyuan  333613\r
+                               TW\r
 \r
 48-81-4E   (hex)               E&M SOLUTION CO,.Ltd\r
 48814E     (base 16)           E&M SOLUTION CO,.Ltd\r
@@ -39725,6 +39683,30 @@ F46412     (base 16)           Sony Interactive Entertainment Inc.
                                Ansan-si  Danwon-gu  15434\r
                                KR\r
 \r
+AC-80-0A   (hex)               Sony Corporation\r
+AC800A     (base 16)           Sony Corporation\r
+                               Sony City Osaki 2-10-1\r
+                               Shinagawa-ku   Tokyo  141-8610\r
+                               JP\r
+\r
+B8-EA-98   (hex)               Xiaomi Communications Co Ltd\r
+B8EA98     (base 16)           Xiaomi Communications Co Ltd\r
+                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+                               Beijing  Haidian District  100085\r
+                               CN\r
+\r
+78-8C-B5   (hex)               TP-Link Corporation Limited\r
+788CB5     (base 16)           TP-Link Corporation Limited\r
+                               Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+                                Tsim Sha Tsui  Kowloon  999077\r
+                               HK\r
+\r
+10-C4-CA   (hex)               HUMAX Co., Ltd.\r
+10C4CA     (base 16)           HUMAX Co., Ltd.\r
+                               HUMAX Village, 216, Hwangsaeul-ro, Bu\r
+                               Seongnam-si  Gyeonggi-do  463-875\r
+                               KR\r
+\r
 58-C9-35   (hex)               Chiun Mai Communication System, Inc\r
 58C935     (base 16)           Chiun Mai Communication System, Inc\r
                                No.4, Minsheng St., Tucheng District\r
@@ -39761,30 +39743,6 @@ FC1D3A     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-AC-80-0A   (hex)               Sony Corporation\r
-AC800A     (base 16)           Sony Corporation\r
-                               Sony City Osaki 2-10-1\r
-                               Shinagawa-ku   Tokyo  141-8610\r
-                               JP\r
-\r
-B8-EA-98   (hex)               Xiaomi Communications Co Ltd\r
-B8EA98     (base 16)           Xiaomi Communications Co Ltd\r
-                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
-                               Beijing  Haidian District  100085\r
-                               CN\r
-\r
-78-8C-B5   (hex)               TP-Link Corporation Limited\r
-788CB5     (base 16)           TP-Link Corporation Limited\r
-                               Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
-                                Tsim Sha Tsui  Kowloon  999077\r
-                               HK\r
-\r
-10-C4-CA   (hex)               HUMAX Co., Ltd.\r
-10C4CA     (base 16)           HUMAX Co., Ltd.\r
-                               HUMAX Village, 216, Hwangsaeul-ro, Bu\r
-                               Seongnam-si  Gyeonggi-do  463-875\r
-                               KR\r
-\r
 54-8C-81   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
 548C81     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
                                No.555 Qianmo Road\r
@@ -39797,26 +39755,26 @@ B8EA98     (base 16)          Xiaomi Communications Co Ltd
                                Fuzhou  Fujian  350015\r
                                CN\r
 \r
+00-50-CA   (hex)               DZS Inc.\r
+0050CA     (base 16)           DZS Inc.\r
+                               680 CENTRAL AVENUE - STE. #301\r
+                               DOVER  NH  03820\r
+                               US\r
+\r
 74-EE-8D   (hex)               Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd.\r
 74EE8D     (base 16)           Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd.\r
                                Baidu Technology Park Building No.2 No.10 Xibeiwang East Road Haidian District\r
                                BeiJing  BeiJing  100193\r
                                CN\r
 \r
-24-5A-4C   (hex)               Ubiquiti Inc\r
-245A4C     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
-60-22-32   (hex)               Ubiquiti Inc\r
-602232     (base 16)           Ubiquiti Inc\r
+F0-9F-C2   (hex)               Ubiquiti Inc\r
+F09FC2     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-E4-38-83   (hex)               Ubiquiti Inc\r
-E43883     (base 16)           Ubiquiti Inc\r
+80-2A-A8   (hex)               Ubiquiti Inc\r
+802AA8     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
@@ -39839,6 +39797,12 @@ E063DA     (base 16)           Ubiquiti Inc
                                New York  NY  New York NY 10017\r
                                US\r
 \r
+24-5A-4C   (hex)               Ubiquiti Inc\r
+245A4C     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
+\r
 E4-BE-FB   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 E4BEFB     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -39851,14 +39815,14 @@ E4BEFB     (base 16)          HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-F0-9F-C2   (hex)               Ubiquiti Inc\r
-F09FC2     (base 16)           Ubiquiti Inc\r
+60-22-32   (hex)               Ubiquiti Inc\r
+602232     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-80-2A-A8   (hex)               Ubiquiti Inc\r
-802AA8     (base 16)           Ubiquiti Inc\r
+E4-38-83   (hex)               Ubiquiti Inc\r
+E43883     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
@@ -39869,35 +39833,17 @@ F09FC2     (base 16)          Ubiquiti Inc
                                North Canton  OH  44720\r
                                US\r
 \r
-00-50-CA   (hex)               DZS Inc.\r
-0050CA     (base 16)           DZS Inc.\r
-                               680 CENTRAL AVENUE - STE. #301\r
-                               DOVER  NH  03820\r
-                               US\r
-\r
-D8-58-C6   (hex)               Katch Asset Tracking Pty Limited \r
-D858C6     (base 16)           Katch Asset Tracking Pty Limited \r
-                               98 Riley St\r
-                               Darlinghurst   NSW  2010\r
-                               AU\r
-\r
-2C-C6-A0   (hex)               Lumacron Technology Ltd.\r
-2CC6A0     (base 16)           Lumacron Technology Ltd.\r
-                               4 Pitreavie Court, Pitreavie Business Park\r
-                               Dunfermline  Fife  KY11 8UU\r
-                               GB\r
-\r
 E8-EB-DD   (hex)               Guangzhou Qingying Acoustics Technology Co., Ltd\r
 E8EBDD     (base 16)           Guangzhou Qingying Acoustics Technology Co., Ltd\r
                                Room 905, 863 Industrialization Promotion Center, Guangzhou Private Science Park, Taihe Town, Baiyun District\r
                                Guangzhou  Guangdong  510000\r
                                CN\r
 \r
-70-66-B9   (hex)               Huawei Device Co., Ltd.\r
-7066B9     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
-                               CN\r
+D8-58-C6   (hex)               Katch Asset Tracking Pty Limited \r
+D858C6     (base 16)           Katch Asset Tracking Pty Limited \r
+                               98 Riley St\r
+                               Darlinghurst   NSW  2010\r
+                               AU\r
 \r
 C4-A1-AE   (hex)               Huawei Device Co., Ltd.\r
 C4A1AE     (base 16)           Huawei Device Co., Ltd.\r
@@ -39911,6 +39857,18 @@ A87116     (base 16)           Earda Technologies co Ltd
                                Guangzhou  Guangdong  511455\r
                                CN\r
 \r
+70-66-B9   (hex)               Huawei Device Co., Ltd.\r
+7066B9     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
+\r
+2C-C6-A0   (hex)               Lumacron Technology Ltd.\r
+2CC6A0     (base 16)           Lumacron Technology Ltd.\r
+                               4 Pitreavie Court, Pitreavie Business Park\r
+                               Dunfermline  Fife  KY11 8UU\r
+                               GB\r
+\r
 FC-D7-49   (hex)               Amazon Technologies Inc.\r
 FCD749     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
@@ -39929,12 +39887,6 @@ FCD749     (base 16)           Amazon Technologies Inc.
                                Hsinchu    300\r
                                TW\r
 \r
-58-10-31   (hex)               Hon Hai Precision IND.CO.,LTD\r
-581031     (base 16)           Hon Hai Precision IND.CO.,LTD\r
-                               No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN \r
-                               TAIPEI  TAIWAN  33859\r
-                               CN\r
-\r
 EC-41-CA   (hex)               Shenzhen TecAnswer Technology co.,ltd\r
 EC41CA     (base 16)           Shenzhen TecAnswer Technology co.,ltd\r
                                1004 yuemeite Building,No.1 gaoxin South 7th Road,Gaoxin District,Yuehai Street,Nanshan District,Shenzhen\r
@@ -39983,11 +39935,11 @@ CCF3C8     (base 16)          Technicolor CH USA Inc.
                                Lawrenceville   GA  30044\r
                                US\r
 \r
-44-20-63   (hex)               Continental Automotive Technologies GmbH\r
-442063     (base 16)           Continental Automotive Technologies GmbH\r
-                               Siemensstr. 12\r
-                               Regensburg    93055\r
-                               DE\r
+58-10-31   (hex)               Hon Hai Precision IND.CO.,LTD\r
+581031     (base 16)           Hon Hai Precision IND.CO.,LTD\r
+                               No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN \r
+                               TAIPEI  TAIWAN  33859\r
+                               CN\r
 \r
 F8-0D-A9   (hex)               Zyxel Communications Corporation\r
 F80DA9     (base 16)           Zyxel Communications Corporation\r
@@ -39995,18 +39947,18 @@ F80DA9     (base 16)          Zyxel Communications Corporation
                                Hsichu  Taiwan  300\r
                                TW\r
 \r
+44-20-63   (hex)               Continental Automotive Technologies GmbH\r
+442063     (base 16)           Continental Automotive Technologies GmbH\r
+                               Siemensstr. 12\r
+                               Regensburg    93055\r
+                               DE\r
+\r
 48-5A-0D   (hex)               Juniper Networks\r
 485A0D     (base 16)           Juniper Networks\r
                                1133 Innovation Way\r
                                Sunnyvale  CA  94089\r
                                US\r
 \r
-B4-45-06   (hex)               Dell Inc.\r
-B44506     (base 16)           Dell Inc.\r
-                               One Dell Way\r
-                               Round Rock   TX  78682\r
-                               US\r
-\r
 30-86-F1   (hex)               Fiberhome Telecommunication Technologies Co.,LTD\r
 3086F1     (base 16)           Fiberhome Telecommunication Technologies Co.,LTD\r
                                No.5 DongXin Road\r
@@ -40031,10 +39983,10 @@ F0A0B1     (base 16)          HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-38-A8-51   (hex)               Quickset Defense Technologies, LLC\r
-38A851     (base 16)           Quickset Defense Technologies, LLC\r
-                               3650 Woodhead Drive\r
-                               Northbrook   IL  60062\r
+B4-45-06   (hex)               Dell Inc.\r
+B44506     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock   TX  78682\r
                                US\r
 \r
 04-BF-1B   (hex)               Dell Inc.\r
@@ -40043,24 +39995,114 @@ F0A0B1     (base 16)         HUAWEI TECHNOLOGIES CO.,LTD
                                Round Rock   TX  78682\r
                                US\r
 \r
+38-A8-51   (hex)               Quickset Defense Technologies, LLC\r
+38A851     (base 16)           Quickset Defense Technologies, LLC\r
+                               3650 Woodhead Drive\r
+                               Northbrook   IL  60062\r
+                               US\r
+\r
 24-A4-2C   (hex)               NETIO products a.s.\r
 24A42C     (base 16)           NETIO products a.s.\r
                                U Pily 3\r
                                Prague    143 00\r
                                CZ\r
 \r
+60-1B-52   (hex)               Vodafone Italia S.p.A.\r
+601B52     (base 16)           Vodafone Italia S.p.A.\r
+                               Via Lorenteggio nr. 240\r
+                               Milan  Italy  20147\r
+                               IT\r
+\r
+C0-8F-20   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+C08F20     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+08-FF-24   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+08FF24     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+90-B6-7A   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+90B67A     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+24-9A-C8   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+249AC8     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
 A8-88-1F   (hex)               SERVERCOM (INDIA) PRIVATE LIMITED\r
 A8881F     (base 16)           SERVERCOM (INDIA) PRIVATE LIMITED\r
                                E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI\r
                                NEW DELHI    NA\r
                                IN\r
 \r
+20-15-82   (hex)               Apple, Inc.\r
+201582     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+40-92-1A   (hex)               Apple, Inc.\r
+40921A     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+10-E2-C9   (hex)               Apple, Inc.\r
+10E2C9     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 A8-C6-47   (hex)               Extreme Networks, Inc.\r
 A8C647     (base 16)           Extreme Networks, Inc.\r
                                6480 Via Del Oro\r
                                San Jose  CA  95119\r
                                US\r
 \r
+E0-28-B1   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+E028B1     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+28-C0-1B   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+28C01B     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+30-31-80   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+303180     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+5C-28-86   (hex)               Inventec(Chongqing) Corporation\r
+5C2886     (base 16)           Inventec(Chongqing) Corporation\r
+                               No.66 West District 2nd Rd, Shapingba District\r
+                               Chongqing  Chongqing  401331\r
+                               CN\r
+\r
+FC-84-A7   (hex)               Murata Manufacturing Co., Ltd.\r
+FC84A7     (base 16)           Murata Manufacturing Co., Ltd.\r
+                               1-10-1, Higashikotari\r
+                               Nagaokakyo-shi  Kyoto  617-8555\r
+                               JP\r
+\r
+88-3F-37   (hex)               UHTEK CO., LTD.\r
+883F37     (base 16)           UHTEK CO., LTD.\r
+                               403DONG 503HO, 655 PYEONGCHEON-RO\r
+                               BUCHEONSI  KYEONGGIDO  14502\r
+                               KR\r
+\r
 9C-FF-C2   (hex)               AVI Systems GmbH\r
 9CFFC2     (base 16)           AVI Systems GmbH\r
                                Dr. Franz Wilhelmstraße 2A\r
@@ -74585,12 +74627,6 @@ C8BB81     (base 16)           Huawei Device Co., Ltd.
                                San Francisco  CA  94107\r
                                US\r
 \r
-C8-13-8B   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-C8138B     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 78-F2-35   (hex)               Sichuan AI-Link Technology Co., Ltd.\r
 78F235     (base 16)           Sichuan AI-Link Technology Co., Ltd.\r
                                Anzhou, Industrial Park\r
@@ -75803,12 +75839,6 @@ F820A9     (base 16)           Huawei Device Co., Ltd.
                                Nagaokakyo-shi  Kyoto  617-8555\r
                                JP\r
 \r
-34-AA-31   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-34AA31     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 48-BD-4A   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 48BD4A     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -76145,12 +76175,6 @@ D419F6     (base 16)           NXP Semiconductor (Tianjin) LTD.
                                Tianjin    300385\r
                                CN\r
 \r
-A0-4C-0C   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-A04C0C     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 40-AC-BF   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
 40ACBF     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
                                No.555 Qianmo Road\r
@@ -77597,12 +77621,6 @@ D868A0     (base 16)           Samsung Electronics Co.,Ltd
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-6C-C2-42   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-6CC242     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 28-53-E0   (hex)               Sintela Ltd\r
 2853E0     (base 16)           Sintela Ltd\r
                                The Distillery, The Old Brewery, 9-11 Lodway,\r
@@ -78830,6 +78848,12 @@ FCB0DE     (base 16)           CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
                                Xiamen  Fujian  361024\r
                                CN\r
 \r
+64-C6-D2   (hex)               Seiko Epson Corporation\r
+64C6D2     (base 16)           Seiko Epson Corporation\r
+                               2070 Kotobuki Koaka\r
+                               Matsumoto-shi  Nagano-ken  399-8702\r
+                               JP\r
+\r
 78-24-59   (hex)               Alcatel-Lucent Enterprise\r
 782459     (base 16)           Alcatel-Lucent Enterprise\r
                                26801 West Agoura Rd\r
@@ -78854,30 +78878,54 @@ FCB0DE     (base 16)          CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
                                Culoz    01350\r
                                FR\r
 \r
+B8-3C-28   (hex)               Apple, Inc.\r
+B83C28     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+3C-6D-89   (hex)               Apple, Inc.\r
+3C6D89     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+AC-45-00   (hex)               Apple, Inc.\r
+AC4500     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+84-B1-E4   (hex)               Apple, Inc.\r
+84B1E4     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+54-EB-E9   (hex)               Apple, Inc.\r
+54EBE9     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+AC-16-15   (hex)               Apple, Inc.\r
+AC1615     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 48-BD-CE   (hex)               Technicolor CH USA Inc.\r
 48BDCE     (base 16)           Technicolor CH USA Inc.\r
                                5030 Sugarloaf Parkway Bldg 6 \r
                                Lawrenceville   GA  30044\r
                                US\r
 \r
-64-C6-D2   (hex)               Seiko Epson Corporation\r
-64C6D2     (base 16)           Seiko Epson Corporation\r
-                               2070 Kotobuki Koaka\r
-                               Matsumoto-shi  Nagano-ken  399-8702\r
-                               JP\r
-\r
 48-1F-66   (hex)               China Mobile Group Device Co.,Ltd.\r
 481F66     (base 16)           China Mobile Group Device Co.,Ltd.\r
                                32 Xuanwumen West Street,Xicheng District\r
                                Beijing    100053\r
                                CN\r
 \r
-B8-3C-28   (hex)               Apple, Inc.\r
-B83C28     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
 10-68-38   (hex)               AzureWave Technology Inc.\r
 106838     (base 16)           AzureWave Technology Inc.\r
                                8F., No.94, Baozhong Rd., Xindian\r
@@ -78902,6 +78950,24 @@ C80A35     (base 16)           Qingdao Hisense Smart Life Technology Co., Ltd
                                Brescia  Italy  25062\r
                                IT\r
 \r
+CC-DE-DE   (hex)               Nokia\r
+CCDEDE     (base 16)           Nokia\r
+                               600 March Road\r
+                               Kanata  Ontario  K2K 2E6\r
+                               CA\r
+\r
+EC-F8-D0   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+ECF8D0     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+30-DF-17   (hex)               ALPSALPINE CO,.LTD\r
+30DF17     (base 16)           ALPSALPINE CO,.LTD\r
+                               nishida 6-1\r
+                               kakuda-City  Miyagi-Pref  981-1595\r
+                               JP\r
+\r
 D8-02-8A   (hex)               Shenzhen YOUHUA Technology Co., Ltd\r
 D8028A     (base 16)           Shenzhen YOUHUA Technology Co., Ltd\r
                                Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District\r
@@ -78914,40 +78980,10 @@ D8028A     (base 16)          Shenzhen YOUHUA Technology Co., Ltd
                                Dongguan    523808\r
                                CN\r
 \r
-EC-F8-D0   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-ECF8D0     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-3C-6D-89   (hex)               Apple, Inc.\r
-3C6D89     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-AC-45-00   (hex)               Apple, Inc.\r
-AC4500     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-84-B1-E4   (hex)               Apple, Inc.\r
-84B1E4     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-54-EB-E9   (hex)               Apple, Inc.\r
-54EBE9     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-AC-16-15   (hex)               Apple, Inc.\r
-AC1615     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
+60-B6-47   (hex)               Silicon Laboratories\r
+60B647     (base 16)           Silicon Laboratories\r
+                               7000 W. William Cannon Dr.\r
+                               Austin  TX  78735\r
                                US\r
 \r
 EC-73-79   (hex)               Apple, Inc.\r
@@ -78956,18 +78992,6 @@ EC7379     (base 16)           Apple, Inc.
                                Cupertino  CA  95014\r
                                US\r
 \r
-60-B6-47   (hex)               Silicon Laboratories\r
-60B647     (base 16)           Silicon Laboratories\r
-                               7000 W. William Cannon Dr.\r
-                               Austin  TX  78735\r
-                               US\r
-\r
-30-DF-17   (hex)               ALPSALPINE CO,.LTD\r
-30DF17     (base 16)           ALPSALPINE CO,.LTD\r
-                               nishida 6-1\r
-                               kakuda-City  Miyagi-Pref  981-1595\r
-                               JP\r
-\r
 04-70-56   (hex)               Arcadyan Corporation\r
 047056     (base 16)           Arcadyan Corporation\r
                                No.8, Sec.2, Guangfu Rd.\r
@@ -78986,11 +79010,17 @@ E86538     (base 16)          CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
                                Nanning  Guangxi  530007\r
                                CN\r
 \r
-CC-DE-DE   (hex)               Nokia\r
-CCDEDE     (base 16)           Nokia\r
-                               600 March Road\r
-                               Kanata  Ontario  K2K 2E6\r
-                               CA\r
+D4-04-E6   (hex)               Broadcom Limited\r
+D404E6     (base 16)           Broadcom Limited\r
+                               15191 Alton Parkway\r
+                               Irvine  CA  92618\r
+                               US\r
+\r
+DC-E3-05   (hex)               AO \r
+DCE305     (base 16)           AO \r
+                               Prospekt Mira\r
+                               Moscow    129223\r
+                               RU\r
 \r
 B8-94-D9   (hex)               Texas Instruments\r
 B894D9     (base 16)           Texas Instruments\r
@@ -79004,17 +79034,23 @@ B894D9     (base 16)          Texas Instruments
                                Dallas  TX  75243\r
                                US\r
 \r
+88-6D-2D   (hex)               Huawei Device Co., Ltd.\r
+886D2D     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
+\r
 08-04-B4   (hex)               Texas Instruments\r
 0804B4     (base 16)           Texas Instruments\r
                                12500 TI Blvd\r
                                Dallas  TX  75243\r
                                US\r
 \r
-88-6D-2D   (hex)               Huawei Device Co., Ltd.\r
-886D2D     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
-                               CN\r
+30-AF-7E   (hex)               Texas Instruments\r
+30AF7E     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
 \r
 24-2A-04   (hex)               Cisco Systems, Inc\r
 242A04     (base 16)           Cisco Systems, Inc\r
@@ -79028,12 +79064,6 @@ B894D9     (base 16)           Texas Instruments
                                Mountain View  CA  94043\r
                                US\r
 \r
-DC-E3-05   (hex)               AO \r
-DCE305     (base 16)           AO \r
-                               Prospekt Mira\r
-                               Moscow    129223\r
-                               RU\r
-\r
 10-BE-99   (hex)               Netberg\r
 10BE99     (base 16)           Netberg\r
                                2F-1 No.36, Park St., Nangang District\r
@@ -79046,17 +79076,35 @@ DCE305     (base 16)          AO
                                Shenzhen  No.1079 Nanhai Road,Nanshan District  518067\r
                                CN\r
 \r
+84-D3-52   (hex)               Tonly Technology Co. Ltd \r
+84D352     (base 16)           Tonly Technology Co. Ltd \r
+                               Section 37, Zhongkai Hi-Tech Development Zone\r
+                               Huizhou  Guangdong  516006\r
+                               CN\r
+\r
 E4-21-50   (hex)               Shanghai Chint low voltage electrical technology Co.,Ltd.\r
 E42150     (base 16)           Shanghai Chint low voltage electrical technology Co.,Ltd.\r
                                3857 Sixian Road, Songjiang District, Shanghai\r
                                Shanghai  Shanghai  201616\r
                                CN\r
 \r
-84-D3-52   (hex)               Tonly Technology Co. Ltd \r
-84D352     (base 16)           Tonly Technology Co. Ltd \r
-                               Section 37, Zhongkai Hi-Tech Development Zone\r
-                               Huizhou  Guangdong  516006\r
-                               CN\r
+F8-D7-58   (hex)               Veratron AG\r
+F8D758     (base 16)           Veratron AG\r
+                               Industriestrasse 18\r
+                               Rüthi  St.Gallen  9464\r
+                               CH\r
+\r
+24-FE-9A   (hex)               CyberTAN Technology Inc.\r
+24FE9A     (base 16)           CyberTAN Technology Inc.\r
+                               99 Park Ave III, Hsinchu Science Park\r
+                               Hsinchu    308\r
+                               TW\r
+\r
+B4-CB-B8   (hex)               Universal Electronics, Inc.\r
+B4CBB8     (base 16)           Universal Electronics, Inc.\r
+                               201 E Sandpointe Ave\r
+                               SANTA ANA  CA  927075778\r
+                               US\r
 \r
 BC-32-B2   (hex)               Samsung Electronics Co.,Ltd\r
 BC32B2     (base 16)           Samsung Electronics Co.,Ltd\r
@@ -79064,35 +79112,17 @@ BC32B2     (base 16)          Samsung Electronics Co.,Ltd
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-D4-04-E6   (hex)               Broadcom Limited\r
-D404E6     (base 16)           Broadcom Limited\r
-                               15191 Alton Parkway\r
-                               Irvine  CA  92618\r
-                               US\r
-\r
 80-D2-66   (hex)               ScaleFlux\r
 80D266     (base 16)           ScaleFlux\r
                                900 N. McCarthy Blvd.Suite 200\r
                                Milpitas  CA  95035\r
                                US\r
 \r
-30-AF-7E   (hex)               Texas Instruments\r
-30AF7E     (base 16)           Texas Instruments\r
-                               12500 TI Blvd\r
-                               Dallas  TX  75243\r
-                               US\r
-\r
-F8-D7-58   (hex)               Veratron AG\r
-F8D758     (base 16)           Veratron AG\r
-                               Industriestrasse 18\r
-                               Rüthi  St.Gallen  9464\r
-                               CH\r
-\r
-24-FE-9A   (hex)               CyberTAN Technology Inc.\r
-24FE9A     (base 16)           CyberTAN Technology Inc.\r
-                               99 Park Ave III, Hsinchu Science Park\r
-                               Hsinchu    308\r
-                               TW\r
+28-EB-A6   (hex)               Nex-T LLC\r
+28EBA6     (base 16)           Nex-T LLC\r
+                               Volgogradsky prospect, 42, building 5, floor 1, room I\r
+                               Moscow  Select State  109316\r
+                               RU\r
 \r
 E8-10-98   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
 E81098     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
@@ -79100,11 +79130,17 @@ E81098     (base 16)          Aruba, a Hewlett Packard Enterprise Company
                                Santa Clara  CA  95054\r
                                US\r
 \r
-B4-CB-B8   (hex)               Universal Electronics, Inc.\r
-B4CBB8     (base 16)           Universal Electronics, Inc.\r
-                               201 E Sandpointe Ave\r
-                               SANTA ANA  CA  927075778\r
-                               US\r
+CC-4D-74   (hex)               Fujian Newland Payment Technology Co., Ltd.\r
+CC4D74     (base 16)           Fujian Newland Payment Technology Co., Ltd.\r
+                               No. B602, Building #1, HaixiaJingmao Plaza, Fuzhou Bonded Area\r
+                               Fuzhou    350015\r
+                               CN\r
+\r
+A0-31-EB   (hex)               Semikron Elektronik GmbH & Co. KG\r
+A031EB     (base 16)           Semikron Elektronik GmbH & Co. KG\r
+                               Sigmundstrasse 200\r
+                               Nürnberg  Bavaria  90431\r
+                               DE\r
 \r
 EC-8A-48   (hex)               Arista Networks\r
 EC8A48     (base 16)           Arista Networks\r
@@ -79124,24 +79160,6 @@ EC8A48     (base 16)           Arista Networks
                                Piscataway  NJ  08554\r
                                US\r
 \r
-CC-4D-74   (hex)               Fujian Newland Payment Technology Co., Ltd.\r
-CC4D74     (base 16)           Fujian Newland Payment Technology Co., Ltd.\r
-                               No. B602, Building #1, HaixiaJingmao Plaza, Fuzhou Bonded Area\r
-                               Fuzhou    350015\r
-                               CN\r
-\r
-A0-31-EB   (hex)               Semikron Elektronik GmbH & Co. KG\r
-A031EB     (base 16)           Semikron Elektronik GmbH & Co. KG\r
-                               Sigmundstrasse 200\r
-                               Nürnberg  Bavaria  90431\r
-                               DE\r
-\r
-28-EB-A6   (hex)               Nex-T LLC\r
-28EBA6     (base 16)           Nex-T LLC\r
-                               Volgogradsky prospect, 42, building 5, floor 1, room I\r
-                               Moscow  Select State  109316\r
-                               RU\r
-\r
 C0-B3-C8   (hex)               LLC NTC Rotek\r
 C0B3C8     (base 16)           LLC NTC Rotek\r
                                Russian Federation, Moscow, Nizhnyaya Krasnoselskaya st., house 5, building 6, room 03\r
@@ -79172,18 +79190,6 @@ AC86A3     (base 16)           Apple, Inc.
                                Dongguan    523808\r
                                CN\r
 \r
-14-1A-97   (hex)               Apple, Inc.\r
-141A97     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-C8-36-A3   (hex)               GERTEC BRASIL LTDA\r
-C836A3     (base 16)           GERTEC BRASIL LTDA\r
-                               Avenida Jabaquara, 3060, room 601\r
-                               Sao Paulo  São Paulo  04046500\r
-                               BR\r
-\r
 74-95-A7   (hex)               Keyence Corporation\r
 7495A7     (base 16)           Keyence Corporation\r
                                1-3-14, Higashinakajima, Higashiyodogawa\r
@@ -79196,11 +79202,11 @@ F4EE31     (base 16)          Cisco Systems, Inc
                                San Jose  CA  94568\r
                                US\r
 \r
-30-B2-16   (hex)               Hitachi Energy Germany AG\r
-30B216     (base 16)           Hitachi Energy Germany AG\r
-                               Havellandstr. 10-14\r
-                               Mannheim    68309\r
-                               DE\r
+14-1A-97   (hex)               Apple, Inc.\r
+141A97     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
 \r
 88-62-5D   (hex)               BITNETWORKS CO.,LTD\r
 88625D     (base 16)           BITNETWORKS CO.,LTD\r
@@ -79208,12 +79214,42 @@ F4EE31     (base 16)          Cisco Systems, Inc
                                Goyang-si    10550\r
                                KR\r
 \r
+B4-B9-E6   (hex)               eero inc.\r
+B4B9E6     (base 16)           eero inc.\r
+                               660 3rd Street\r
+                               San Francisco  CA  94107\r
+                               US\r
+\r
 68-59-32   (hex)               Sunitec Enterprise Co.,Ltd\r
 685932     (base 16)           Sunitec Enterprise Co.,Ltd\r
                                3F.,No.98-1,Mincyuan Rd.Sindian City\r
                                Taipei County 231    231141\r
                                CN\r
 \r
+C8-36-A3   (hex)               GERTEC BRASIL LTDA\r
+C836A3     (base 16)           GERTEC BRASIL LTDA\r
+                               Avenida Jabaquara, 3060, room 601\r
+                               Sao Paulo  São Paulo  04046500\r
+                               BR\r
+\r
+30-B2-16   (hex)               Hitachi Energy Germany AG\r
+30B216     (base 16)           Hitachi Energy Germany AG\r
+                               Havellandstr. 10-14\r
+                               Mannheim    68309\r
+                               DE\r
+\r
+CC-9F-7A   (hex)               Chiun Mai Communication System, Inc\r
+CC9F7A     (base 16)           Chiun Mai Communication System, Inc\r
+                               No.4, Minsheng St., Tucheng District\r
+                               New Taipei City    23678\r
+                               TW\r
+\r
+54-14-A7   (hex)               Nanjing Qinheng Microelectronics Co., Ltd.\r
+5414A7     (base 16)           Nanjing Qinheng Microelectronics Co., Ltd.\r
+                               No.18, Ningshuang Road\r
+                                Nanjing  Jiangsu  210012\r
+                               CN\r
+\r
 A0-A3-B3   (hex)               Espressif Inc.\r
 A0A3B3     (base 16)           Espressif Inc.\r
                                Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
@@ -79238,22 +79274,16 @@ A0A3B3     (base 16)          Espressif Inc.
                                PARIS  IdF  75008\r
                                FR\r
 \r
-B4-B9-E6   (hex)               eero inc.\r
-B4B9E6     (base 16)           eero inc.\r
-                               660 3rd Street\r
-                               San Francisco  CA  94107\r
+5C-6A-EC   (hex)               IEEE Registration Authority\r
+5C6AEC     (base 16)           IEEE Registration Authority\r
+                               445 Hoes Lane\r
+                               Piscataway  NJ  08554\r
                                US\r
 \r
-CC-9F-7A   (hex)               Chiun Mai Communication System, Inc\r
-CC9F7A     (base 16)           Chiun Mai Communication System, Inc\r
-                               No.4, Minsheng St., Tucheng District\r
-                               New Taipei City    23678\r
-                               TW\r
-\r
-54-14-A7   (hex)               Nanjing Qinheng Microelectronics Co., Ltd.\r
-5414A7     (base 16)           Nanjing Qinheng Microelectronics Co., Ltd.\r
-                               No.18, Ningshuang Road\r
-                                Nanjing  Jiangsu  210012\r
+4C-E7-05   (hex)               Siemens Industrial Automation Products Ltd., Chengdu\r
+4CE705     (base 16)           Siemens Industrial Automation Products Ltd., Chengdu\r
+                               Tianyuan Road No.99, High Tech Zone West\r
+                               Chengdu  Sichuan Province  611731 \r
                                CN\r
 \r
 0C-72-74   (hex)               AVM Audiovisuelles Marketing und Computersysteme GmbH\r
@@ -79262,18 +79292,6 @@ CC9F7A     (base 16)           Chiun Mai Communication System, Inc
                                Berlin  Berlin  10559\r
                                DE\r
 \r
-4C-E7-05   (hex)               Siemens Industrial Automation Products Ltd., Chengdu\r
-4CE705     (base 16)           Siemens Industrial Automation Products Ltd., Chengdu\r
-                               Tianyuan Road No.99, High Tech Zone West\r
-                               Chengdu  Sichuan Province  611731 \r
-                               CN\r
-\r
-5C-6A-EC   (hex)               IEEE Registration Authority\r
-5C6AEC     (base 16)           IEEE Registration Authority\r
-                               445 Hoes Lane\r
-                               Piscataway  NJ  08554\r
-                               US\r
-\r
 48-BD-A7   (hex)               Honor Device Co., Ltd.\r
 48BDA7     (base 16)           Honor Device Co., Ltd.\r
                                Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
@@ -79286,11 +79304,11 @@ EC2150     (base 16)          vivo Mobile Communication Co., Ltd.
                                Dongguan  Guangdong  523860\r
                                CN\r
 \r
-78-45-58   (hex)               Ubiquiti Inc\r
-784558     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
+A0-AF-12   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+A0AF12     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
 \r
 AC-8B-A9   (hex)               Ubiquiti Inc\r
 AC8BA9     (base 16)           Ubiquiti Inc\r
@@ -79310,36 +79328,36 @@ AC8BA9     (base 16)          Ubiquiti Inc
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-A0-AF-12   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-A0AF12     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
 60-96-A4   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 6096A4     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
                                Dongguan    523808\r
                                CN\r
 \r
-20-BA-36   (hex)               u-blox AG\r
-20BA36     (base 16)           u-blox AG\r
-                               Zuercherstrasse, 68\r
-                               Thalwil  Switzerland  CH-8800\r
-                               CH\r
+78-45-58   (hex)               Ubiquiti Inc\r
+784558     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
 \r
-D8-0A-E6   (hex)               zte corporation\r
-D80AE6     (base 16)           zte corporation\r
-                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
-                               shenzhen   guangdong  518057\r
-                               CN\r
+04-A5-26   (hex)               Nokia\r
+04A526     (base 16)           Nokia\r
+                               600 March Road\r
+                               Kanata  Ontario  K2K 2E6\r
+                               CA\r
 \r
-48-9E-9D   (hex)               Hui Zhou Gaoshengda Technology Co.,LTD\r
-489E9D     (base 16)           Hui Zhou Gaoshengda Technology Co.,LTD\r
-                               No.2,Jin-da Road,Huinan Industrial Park\r
-                               Hui Zhou  Guangdong  516025\r
+08-15-AE   (hex)               China Mobile Group Device Co.,Ltd.\r
+0815AE     (base 16)           China Mobile Group Device Co.,Ltd.\r
+                               32 Xuanwumen West Street,Xicheng District\r
+                               Beijing    100053\r
                                CN\r
 \r
+04-B4-FE   (hex)               AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+04B4FE     (base 16)           AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+                               Alt-Moabit 95\r
+                               Berlin  Berlin  10559\r
+                               DE\r
+\r
 18-F4-6B   (hex)               Telenor Connexion AB\r
 18F46B     (base 16)           Telenor Connexion AB\r
                                116 88\r
@@ -79364,6 +79382,18 @@ CCA174     (base 16)           Meta Platforms Technologies, LLC
                                Menlo Park  CA  94025\r
                                US\r
 \r
+48-9E-9D   (hex)               Hui Zhou Gaoshengda Technology Co.,LTD\r
+489E9D     (base 16)           Hui Zhou Gaoshengda Technology Co.,LTD\r
+                               No.2,Jin-da Road,Huinan Industrial Park\r
+                               Hui Zhou  Guangdong  516025\r
+                               CN\r
+\r
+D8-0A-E6   (hex)               zte corporation\r
+D80AE6     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
+                               CN\r
+\r
 9C-65-EE   (hex)               DZS Inc.\r
 9C65EE     (base 16)           DZS Inc.\r
                                DASAN Tower 8F, 49 Daewangpangyo-ro644beon-gil Bundang-gu\r
@@ -79376,22 +79406,22 @@ CCA174     (base 16)          Meta Platforms Technologies, LLC
                                San Jose  CA  94568\r
                                US\r
 \r
-04-A5-26   (hex)               Nokia\r
-04A526     (base 16)           Nokia\r
-                               600 March Road\r
-                               Kanata  Ontario  K2K 2E6\r
-                               CA\r
+20-BA-36   (hex)               u-blox AG\r
+20BA36     (base 16)           u-blox AG\r
+                               Zuercherstrasse, 68\r
+                               Thalwil  Switzerland  CH-8800\r
+                               CH\r
 \r
-64-52-34   (hex)               Sichuan Tianyi Comheart Telecom Co.,LTD\r
-645234     (base 16)           Sichuan Tianyi Comheart Telecom Co.,LTD\r
-                               No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
-                               Chengdu  Sichuan  611330\r
-                               CN\r
+A4-6D-D4   (hex)               Silicon Laboratories\r
+A46DD4     (base 16)           Silicon Laboratories\r
+                               7000 W. William Cannon Dr.\r
+                               Austin  TX  78735\r
+                               US\r
 \r
-E0-1F-6A   (hex)               Huawei Device Co., Ltd.\r
-E01F6A     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
+8C-C5-8C   (hex)               ShenZhen Elsky Technology Co.,LTD\r
+8CC58C     (base 16)           ShenZhen Elsky Technology Co.,LTD\r
+                               401, building A, wanguocheng, No. 9, Pingji Avenue, Shanglilang community, Nanwan street, Longgang District, Shenzhen\r
+                               ShenZhen  GuangDong  518000\r
                                CN\r
 \r
 00-56-6D   (hex)               Huawei Device Co., Ltd.\r
@@ -79406,23 +79436,17 @@ E01F6A     (base 16)          Huawei Device Co., Ltd.
                                Dongguan  Guangdong  523808\r
                                CN\r
 \r
-A4-6D-D4   (hex)               Silicon Laboratories\r
-A46DD4     (base 16)           Silicon Laboratories\r
-                               7000 W. William Cannon Dr.\r
-                               Austin  TX  78735\r
-                               US\r
-\r
-8C-C5-8C   (hex)               ShenZhen Elsky Technology Co.,LTD\r
-8CC58C     (base 16)           ShenZhen Elsky Technology Co.,LTD\r
-                               401, building A, wanguocheng, No. 9, Pingji Avenue, Shanglilang community, Nanwan street, Longgang District, Shenzhen\r
-                               ShenZhen  GuangDong  518000\r
+64-52-34   (hex)               Sichuan Tianyi Comheart Telecom Co.,LTD\r
+645234     (base 16)           Sichuan Tianyi Comheart Telecom Co.,LTD\r
+                               No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
+                               Chengdu  Sichuan  611330\r
                                CN\r
 \r
-04-B4-FE   (hex)               AVM Audiovisuelles Marketing und Computersysteme GmbH\r
-04B4FE     (base 16)           AVM Audiovisuelles Marketing und Computersysteme GmbH\r
-                               Alt-Moabit 95\r
-                               Berlin  Berlin  10559\r
-                               DE\r
+E0-1F-6A   (hex)               Huawei Device Co., Ltd.\r
+E01F6A     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
 \r
 2C-70-4F   (hex)               zte corporation\r
 2C704F     (base 16)           zte corporation\r
@@ -79430,12 +79454,6 @@ A46DD4     (base 16)           Silicon Laboratories
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
-08-15-AE   (hex)               China Mobile Group Device Co.,Ltd.\r
-0815AE     (base 16)           China Mobile Group Device Co.,Ltd.\r
-                               32 Xuanwumen West Street,Xicheng District\r
-                               Beijing    100053\r
-                               CN\r
-\r
 38-16-72   (hex)               Shenzhen SuperElectron Technology Co.,Ltd.\r
 381672     (base 16)           Shenzhen SuperElectron Technology Co.,Ltd.\r
                                1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
@@ -79454,12 +79472,6 @@ D07B6F     (base 16)           Zhuhai Yunmai Technology Co.,Ltd
                                Hangzhou  Zhejiang  310052\r
                                CN\r
 \r
-D4-53-47   (hex)               Merytronic 2012, S.L.\r
-D45347     (base 16)           Merytronic 2012, S.L.\r
-                               Parque empresarial BoroaParcela 2C-1\r
-                               Amorebieta  Bizkaia  48340\r
-                               ES\r
-\r
 6C-29-D2   (hex)               Cisco Systems, Inc\r
 6C29D2     (base 16)           Cisco Systems, Inc\r
                                80 West Tasman Drive\r
@@ -79490,6 +79502,12 @@ D43844     (base 16)           UNION MAN TECHNOLOGY CO.,LTD
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
+D4-53-47   (hex)               Merytronic 2012, S.L.\r
+D45347     (base 16)           Merytronic 2012, S.L.\r
+                               Parque empresarial BoroaParcela 2C-1\r
+                               Amorebieta  Bizkaia  48340\r
+                               ES\r
+\r
 94-3E-E4   (hex)               WiSA Technologies Inc\r
 943EE4     (base 16)           WiSA Technologies Inc\r
                                15268 Northwest Greenbrier Parkway\r
@@ -79502,18 +79520,6 @@ A8BD3A     (base 16)           UNION MAN TECHNOLOGY CO.,LTD
                                Huizhou  Guangdong  516007\r
                                CN\r
 \r
-20-97-27   (hex)               TELTONIKA NETWORKS UAB\r
-209727     (base 16)           TELTONIKA NETWORKS UAB\r
-                               K. Baršausko st. 66, Kaunas\r
-                               Kaunas    LT-51436\r
-                               LT\r
-\r
-00-1A-E8   (hex)               Unify Software and Solutions GmbH & Co. KG\r
-001AE8     (base 16)           Unify Software and Solutions GmbH & Co. KG\r
-                               Otto-Hahn-Ring 6\r
-                               Munich    81739\r
-                               DE\r
-\r
 54-EF-43   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 54EF43     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -79562,17 +79568,23 @@ A8B028     (base 16)          CubePilot Pty Ltd
                                Sunnyvale  CA  94089\r
                                US\r
 \r
+20-97-27   (hex)               TELTONIKA NETWORKS UAB\r
+209727     (base 16)           TELTONIKA NETWORKS UAB\r
+                               K. Baršausko st. 66, Kaunas\r
+                               Kaunas    LT-51436\r
+                               LT\r
+\r
 54-08-3B   (hex)               IEEE Registration Authority\r
 54083B     (base 16)           IEEE Registration Authority\r
                                445 Hoes Lane\r
                                Piscataway  NJ  08554\r
                                US\r
 \r
-E0-73-E7   (hex)               HP Inc.\r
-E073E7     (base 16)           HP Inc.\r
-                               10300 Energy Dr\r
-                               Spring  TX  77389\r
-                               US\r
+00-1A-E8   (hex)               Unify Software and Solutions GmbH & Co. KG\r
+001AE8     (base 16)           Unify Software and Solutions GmbH & Co. KG\r
+                               Otto-Hahn-Ring 6\r
+                               Munich    81739\r
+                               DE\r
 \r
 E8-6E-3A   (hex)               Sony Interactive Entertainment Inc.\r
 E86E3A     (base 16)           Sony Interactive Entertainment Inc.\r
@@ -79586,6 +79598,108 @@ BCB1D3     (base 16)          Cisco Meraki
                                San Francisco    94158\r
                                US\r
 \r
+60-82-46   (hex)               Apple, Inc.\r
+608246     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+98-B3-79   (hex)               Apple, Inc.\r
+98B379     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+04-9D-05   (hex)               Apple, Inc.\r
+049D05     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+E0-73-E7   (hex)               HP Inc.\r
+E073E7     (base 16)           HP Inc.\r
+                               10300 Energy Dr\r
+                               Spring  TX  77389\r
+                               US\r
+\r
+34-AA-31   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+34AA31     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+A0-4C-0C   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+A04C0C     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+C8-98-28   (hex)               zte corporation\r
+C89828     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
+                               CN\r
+\r
+DC-36-42   (hex)               zte corporation\r
+DC3642     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
+                               CN\r
+\r
+C8-13-8B   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+C8138B     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+6C-C2-42   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+6CC242     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+78-8A-86   (hex)               China Dragon Technology Limited\r
+788A86     (base 16)           China Dragon Technology Limited\r
+                               B4 Bldg.Haoshan 1st Industry Park,\r
+                               Shenzhen  Guangdong  518104\r
+                               CN\r
+\r
+20-E4-6F   (hex)               vivo Mobile Communication Co., Ltd.\r
+20E46F     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               No.1, vivo Road, Chang'an\r
+                               Dongguan  Guangdong  523860\r
+                               CN\r
+\r
+60-DC-81   (hex)               AltoBeam Inc.\r
+60DC81     (base 16)           AltoBeam Inc.\r
+                               B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+                               Beijing  Beijing  100083\r
+                               CN\r
+\r
+84-72-93   (hex)               Texas Instruments\r
+847293     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+F8-2E-0C   (hex)               Texas Instruments\r
+F82E0C     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+90-06-F2   (hex)               Texas Instruments\r
+9006F2     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+84-F1-75   (hex)               Jiangxi Xunte Intelligent Terminal Co., Ltd\r
+84F175     (base 16)           Jiangxi Xunte Intelligent Terminal Co., Ltd\r
+                               16 # 1-3/F, Zhongxing Nanchang Software Industrial Park, No. 688, Aixihu North Road, Nanchang High-tech Industrial Development Zone, Nanchang, Jiangxi Province\r
+                               Nanchang  Jiangxi  330000\r
+                               CN\r
+\r
 84-80-94   (hex)               Meter, Inc.\r
 848094     (base 16)           Meter, Inc.\r
                                148 Townsend St\r
@@ -112808,12 +112922,6 @@ D46A91     (base 16)         SnapAV
                                Charlotte  North Carolina  28273\r
                                US\r
 \r
-80-EE-25   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-80EE25     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 44-87-DB   (hex)               Tymphany Acoustic Technology (Huizhou) Co.,  Ltd.\r
 4487DB     (base 16)           Tymphany Acoustic Technology (Huizhou) Co.,  Ltd.\r
                                Tymphany Acoustic Technology (Huizhou) Co., Ltd.\r
@@ -115487,12 +115595,6 @@ B8374A     (base 16)         Apple, Inc.
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-10-55-E4   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-1055E4     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 C0-F5-35   (hex)               AMPAK Technology,Inc.\r
 C0F535     (base 16)           AMPAK Technology,Inc.\r
                                3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,\r
@@ -116069,12 +116171,6 @@ D4F98D     (base 16)         Espressif Inc.
                                Shanghai  Shanghai  201203\r
                                CN\r
 \r
-04-CE-09   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-04CE09     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 1C-86-9A   (hex)               Samsung Electronics Co.,Ltd\r
 1C869A     (base 16)           Samsung Electronics Co.,Ltd\r
                                129, Samsung-ro, Youngtongl-Gu\r
@@ -116363,12 +116459,6 @@ A8587C     (base 16)         Shoogee GmbH & Co. KG
                                Shenzhen    518000\r
                                CN\r
 \r
-40-67-9B   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-40679B     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 F0-A6-54   (hex)               CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
 F0A654     (base 16)           CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
                                B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China\r
@@ -117389,12 +117479,6 @@ C06911     (base 16)         Arista Networks
                                Brentwood  Essex  08854\r
                                GB\r
 \r
-68-EC-8A   (hex)               IKEA of Sweden AB\r
-68EC8A     (base 16)           IKEA of Sweden AB\r
-                               \r
-                                   \r
-                               \r
-\r
 48-02-AF   (hex)               Telit Communication s.p.a\r
 4802AF     (base 16)           Telit Communication s.p.a\r
                                Via stazione di prosecco 5B\r
@@ -118697,24 +118781,12 @@ F4331C     (base 16)                Toast, Inc.
                                Boston  MA  02215\r
                                US\r
 \r
-DC-A3-13   (hex)               Shenzhen Changjin Communication Technology Co.,Ltd\r
-DCA313     (base 16)           Shenzhen Changjin Communication Technology Co.,Ltd\r
-                               6th Floor, Saibo Building, Tenglong Road, Minzhi Street, Longhua District, Shenzhen\r
-                               Shenzhen    518000\r
-                               CN\r
-\r
-70-B6-51   (hex)               Eight Sleep\r
-70B651     (base 16)           Eight Sleep\r
-                               212 W 35th StFloor 4\r
-                               New York  NY  10123\r
+04-32-01   (hex)               Broadcom Limited\r
+043201     (base 16)           Broadcom Limited\r
+                               15191 Alton Parkway\r
+                               Irvine  CA  92618\r
                                US\r
 \r
-AC-FC-82   (hex)               Shenzhen Sundray Technologies Company Limited\r
-ACFC82     (base 16)           Shenzhen Sundray Technologies Company Limited\r
-                               5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 D8-AF-81   (hex)               AO \r
 D8AF81     (base 16)           AO \r
                                Filippovskiy per., 8/1\r
@@ -118727,12 +118799,6 @@ D8AF81     (base 16)         AO
                                Mawson Lakes  SA  5095\r
                                AU\r
 \r
-7C-17-79   (hex)               EM Microelectronic\r
-7C1779     (base 16)           EM Microelectronic\r
-                               Rue des Sors 3\r
-                               Marin-Epagnier  Neuchatel  2074\r
-                               CH\r
-\r
 38-39-6C   (hex)               Huawei Device Co., Ltd.\r
 38396C     (base 16)           Huawei Device Co., Ltd.\r
                                No.2 of Xincheng Road, Songshan Lake Zone\r
@@ -118751,17 +118817,29 @@ DC7794     (base 16)                Huawei Device Co., Ltd.
                                Dongguan  Guangdong  523808\r
                                CN\r
 \r
+70-B6-51   (hex)               Eight Sleep\r
+70B651     (base 16)           Eight Sleep\r
+                               212 W 35th StFloor 4\r
+                               New York  NY  10123\r
+                               US\r
+\r
+DC-A3-13   (hex)               Shenzhen Changjin Communication Technology Co.,Ltd\r
+DCA313     (base 16)           Shenzhen Changjin Communication Technology Co.,Ltd\r
+                               6th Floor, Saibo Building, Tenglong Road, Minzhi Street, Longhua District, Shenzhen\r
+                               Shenzhen    518000\r
+                               CN\r
+\r
 68-9A-21   (hex)               Fiberhome Telecommunication Technologies Co.,LTD\r
 689A21     (base 16)           Fiberhome Telecommunication Technologies Co.,LTD\r
                                No.5 DongXin Road\r
                                Wuhan  Hubei  430074\r
                                CN\r
 \r
-04-32-01   (hex)               Broadcom Limited\r
-043201     (base 16)           Broadcom Limited\r
-                               15191 Alton Parkway\r
-                               Irvine  CA  92618\r
-                               US\r
+7C-17-79   (hex)               EM Microelectronic\r
+7C1779     (base 16)           EM Microelectronic\r
+                               Rue des Sors 3\r
+                               Marin-Epagnier  Neuchatel  2074\r
+                               CH\r
 \r
 90-CE-B8   (hex)               Texas Instruments\r
 90CEB8     (base 16)           Texas Instruments\r
@@ -118769,30 +118847,30 @@ DC7794     (base 16)                Huawei Device Co., Ltd.
                                Dallas  TX  75243\r
                                US\r
 \r
+AC-FC-82   (hex)               Shenzhen Sundray Technologies Company Limited\r
+ACFC82     (base 16)           Shenzhen Sundray Technologies Company Limited\r
+                               5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
 CC-F8-26   (hex)               Samsung Electronics Co.,Ltd\r
 CCF826     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-18-26-54   (hex)               Samsung Electronics Co.,Ltd\r
-182654     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
-\r
-54-11-49   (hex)               vivo Mobile Communication Co., Ltd.\r
-541149     (base 16)           vivo Mobile Communication Co., Ltd.\r
-                               No.1, vivo Road, Chang'an\r
-                               Dongguan  Guangdong  523860\r
-                               CN\r
-\r
 5C-22-DA   (hex)               Technicolor CH USA Inc.\r
 5C22DA     (base 16)           Technicolor CH USA Inc.\r
                                5030 Sugarloaf Parkway Bldg 6 \r
                                Lawrenceville   GA  30044\r
                                US\r
 \r
+18-26-54   (hex)               Samsung Electronics Co.,Ltd\r
+182654     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
 70-5A-6F   (hex)               IEEE Registration Authority\r
 705A6F     (base 16)           IEEE Registration Authority\r
                                445 Hoes Lane\r
@@ -118811,10 +118889,16 @@ CCF826     (base 16)                Samsung Electronics Co.,Ltd
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-E8-88-43   (hex)               Xiaomi Communications Co Ltd\r
-E88843     (base 16)           Xiaomi Communications Co Ltd\r
-                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
-                               Beijing  Haidian District  100085\r
+54-11-49   (hex)               vivo Mobile Communication Co., Ltd.\r
+541149     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               No.1, vivo Road, Chang'an\r
+                               Dongguan  Guangdong  523860\r
+                               CN\r
+\r
+70-7C-E3   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+707CE3     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
                                CN\r
 \r
 3C-6F-9B   (hex)               zte corporation\r
@@ -118829,12 +118913,42 @@ E88843     (base 16)                Xiaomi Communications Co Ltd
                                Chengdu  Sichuan  611330\r
                                CN\r
 \r
+60-EF-AB   (hex)               Silicon Laboratories\r
+60EFAB     (base 16)           Silicon Laboratories\r
+                               7000 W. William Cannon Dr.\r
+                               Austin  TX  78735\r
+                               US\r
+\r
+48-A9-8A   (hex)               Routerboard.com\r
+48A98A     (base 16)           Routerboard.com\r
+                               Mikrotikls SIA\r
+                               Riga  Riga  LV1009\r
+                               LV\r
+\r
 88-1E-59   (hex)               Onion Corporation\r
 881E59     (base 16)           Onion Corporation\r
                                895 Don Mills Road\r
                                North York  Ontario  M3C 1W3,\r
                                CA\r
 \r
+2C-00-2A   (hex)               Shenzhen TINNO Mobile Technology Corp.\r
+2C002A     (base 16)           Shenzhen TINNO Mobile Technology Corp.\r
+                               Building, No.33, Xiandong Rd, Xili\r
+                               Nanshan District, Shenzhen  PRC  518053\r
+                               CN\r
+\r
+E8-88-43   (hex)               Xiaomi Communications Co Ltd\r
+E88843     (base 16)           Xiaomi Communications Co Ltd\r
+                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+                               Beijing  Haidian District  100085\r
+                               CN\r
+\r
+28-02-2E   (hex)               Apple, Inc.\r
+28022E     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 FC-9C-A7   (hex)               Apple, Inc.\r
 FC9CA7     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
@@ -118859,36 +118973,6 @@ FC9CA7     (base 16)         Apple, Inc.
                                Dongguan    523808\r
                                CN\r
 \r
-70-7C-E3   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-707CE3     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-2C-00-2A   (hex)               Shenzhen TINNO Mobile Technology Corp.\r
-2C002A     (base 16)           Shenzhen TINNO Mobile Technology Corp.\r
-                               Building, No.33, Xiandong Rd, Xili\r
-                               Nanshan District, Shenzhen  PRC  518053\r
-                               CN\r
-\r
-60-EF-AB   (hex)               Silicon Laboratories\r
-60EFAB     (base 16)           Silicon Laboratories\r
-                               7000 W. William Cannon Dr.\r
-                               Austin  TX  78735\r
-                               US\r
-\r
-48-A9-8A   (hex)               Routerboard.com\r
-48A98A     (base 16)           Routerboard.com\r
-                               Mikrotikls SIA\r
-                               Riga  Riga  LV1009\r
-                               LV\r
-\r
-28-02-2E   (hex)               Apple, Inc.\r
-28022E     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
 38-14-1B   (hex)               Secure Letter Inc.\r
 38141B     (base 16)           Secure Letter Inc.\r
                                223, Yeoksam-ro\r
@@ -118913,6 +118997,12 @@ B461E9     (base 16)         Sichuan AI-Link Technology Co., Ltd.
                                Nanning  Guangxi  530007\r
                                CN\r
 \r
+9C-D1-D0   (hex)               Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
+9CD1D0     (base 16)           Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
+                               Address:Unit 503-505, 507, Area E, No. 80 Lanyue Road, Science Avenue, Huangpu District, Guangzhou\r
+                               Guangzhou  Guangdong  510600\r
+                               CN\r
+\r
 90-D6-89   (hex)               Huahao Fangzhou Technology Co.,Ltd\r
 90D689     (base 16)           Huahao Fangzhou Technology Co.,Ltd\r
                                No.99,Hangtian Road,Section 2,East Third Ring Road,Chenghua Distrct,Chengdu,SiChuan\r
@@ -118937,12 +119027,6 @@ C08B2A     (base 16)         Cisco Systems, Inc
                                Ansbach    91522\r
                                DE\r
 \r
-9C-D1-D0   (hex)               Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
-9CD1D0     (base 16)           Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
-                               Address:Unit 503-505, 507, Area E, No. 80 Lanyue Road, Science Avenue, Huangpu District, Guangzhou\r
-                               Guangzhou  Guangdong  510600\r
-                               CN\r
-\r
 5C-94-62   (hex)               Shenzhen Jiuzhou Electric Co.,LTD\r
 5C9462     (base 16)           Shenzhen Jiuzhou Electric Co.,LTD\r
                                6F,Jiuzhou Electric Building,Southern No.12RD.,Hi-Tech Industrial Park,Nanshan District,\r
@@ -118967,30 +119051,6 @@ D4996C     (base 16)         Juniper Networks
                                Sunnyvale  CA  94089\r
                                US\r
 \r
-C4-67-8B   (hex)               Alphabet Capital Sdn Bhd\r
-C4678B     (base 16)           Alphabet Capital Sdn Bhd\r
-                               L-3A-3A, No.2, Jalan Solaris, Solaris Mont Kiara, 50480 Kuala Lumpur, Malaysia\r
-                               Mont Kiara  Kuala Lumpur  50480\r
-                               MY\r
-\r
-60-F0-4D   (hex)               Honor Device Co., Ltd.\r
-60F04D     (base 16)           Honor Device Co., Ltd.\r
-                               Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
-                               Shenzhen   Guangdong  518040\r
-                               CN\r
-\r
-00-0E-51   (hex)               TECNA SpA\r
-000E51     (base 16)           TECNA SpA\r
-                               Via Meucci, 27\r
-                               Sastel San Pietro Terme  Bologna  40024\r
-                               IT\r
-\r
-C0-C7-0A   (hex)               Ruckus Wireless\r
-C0C70A     (base 16)           Ruckus Wireless\r
-                               350 West Java Drive\r
-                               Sunnyvale  CA  94089\r
-                               US\r
-\r
 E4-BC-AA   (hex)               Xiaomi Communications Co Ltd\r
 E4BCAA     (base 16)           Xiaomi Communications Co Ltd\r
                                #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
@@ -119021,6 +119081,18 @@ BC9E2C     (base 16)         China Mobile Group Device Co.,Ltd.
                                HuKou Hsiang  HsinChu Hsien  303\r
                                TW\r
 \r
+C0-C7-0A   (hex)               Ruckus Wireless\r
+C0C70A     (base 16)           Ruckus Wireless\r
+                               350 West Java Drive\r
+                               Sunnyvale  CA  94089\r
+                               US\r
+\r
+00-0E-51   (hex)               TECNA SpA\r
+000E51     (base 16)           TECNA SpA\r
+                               Via Meucci, 27\r
+                               Sastel San Pietro Terme  Bologna  40024\r
+                               IT\r
+\r
 5C-62-8B   (hex)               TP-Link Corporation Limited\r
 5C628B     (base 16)           TP-Link Corporation Limited\r
                                Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
@@ -119051,10 +119123,16 @@ D43A2F     (base 16)                SHENZHEN MTC CO LTD
                                Guangzhou   Guangdong  510030\r
                                CN\r
 \r
-48-81-D4   (hex)               Ruijie Networks Co.,LTD\r
-4881D4     (base 16)           Ruijie Networks Co.,LTD\r
-                               No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
-                               Fuzhou  Fujian  350002\r
+C4-67-8B   (hex)               Alphabet Capital Sdn Bhd\r
+C4678B     (base 16)           Alphabet Capital Sdn Bhd\r
+                               L-3A-3A, No.2, Jalan Solaris, Solaris Mont Kiara, 50480 Kuala Lumpur, Malaysia\r
+                               Mont Kiara  Kuala Lumpur  50480\r
+                               MY\r
+\r
+60-F0-4D   (hex)               Honor Device Co., Ltd.\r
+60F04D     (base 16)           Honor Device Co., Ltd.\r
+                               Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
+                               Shenzhen   Guangdong  518040\r
                                CN\r
 \r
 60-03-0C   (hex)               Shenzhen YOUHUA Technology Co., Ltd\r
@@ -119087,24 +119165,12 @@ D43A2F     (base 16)                SHENZHEN MTC CO LTD
                                Reno  NV  89507\r
                                US\r
 \r
-C8-2B-6B   (hex)               shenzhen worldelite electronics co., LTD\r
-C82B6B     (base 16)           shenzhen worldelite electronics co., LTD\r
-                               Office 5 F, Xiang Yu Industrial Park, Longsheng Road, Longgang Dist\r
-                               Shenzhen  Guangdong  51800\r
+48-81-D4   (hex)               Ruijie Networks Co.,LTD\r
+4881D4     (base 16)           Ruijie Networks Co.,LTD\r
+                               No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+                               Fuzhou  Fujian  350002\r
                                CN\r
 \r
-D0-21-F9   (hex)               Ubiquiti Inc\r
-D021F9     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
-70-A7-41   (hex)               Ubiquiti Inc\r
-70A741     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
 24-A4-3C   (hex)               Ubiquiti Inc\r
 24A43C     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
@@ -119123,6 +119189,18 @@ C0613D     (base 16)         BioIntelliSense, Inc.
                                Golden  CO  80401\r
                                US\r
 \r
+D0-21-F9   (hex)               Ubiquiti Inc\r
+D021F9     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
+\r
+70-A7-41   (hex)               Ubiquiti Inc\r
+70A741     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
+\r
 18-14-AE   (hex)               Nokia\r
 1814AE     (base 16)           Nokia\r
                                600 March Road\r
@@ -119135,18 +119213,6 @@ C0613D     (base 16)         BioIntelliSense, Inc.
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-CC-47-40   (hex)               AzureWave Technology Inc.\r
-CC4740     (base 16)           AzureWave Technology Inc.\r
-                               8F., No. 94, Baozhong Rd.\r
-                               New Taipei City  Taiwan  231\r
-                               TW\r
-\r
-24-E8-E5   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-24E8E5     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 00-14-91   (hex)               Daniels Electronics Ltd. dba Codan Radio Communications\r
 001491     (base 16)           Daniels Electronics Ltd. dba Codan Radio Communications\r
                                43 Erie St\r
@@ -119165,6 +119231,12 @@ CC4740     (base 16)         AzureWave Technology Inc.
                                San Jose  CA  94568\r
                                US\r
 \r
+C8-2B-6B   (hex)               shenzhen worldelite electronics co., LTD\r
+C82B6B     (base 16)           shenzhen worldelite electronics co., LTD\r
+                               Office 5 F, Xiang Yu Industrial Park, Longsheng Road, Longgang Dist\r
+                               Shenzhen  Guangdong  51800\r
+                               CN\r
+\r
 30-4F-75   (hex)               DZS Inc.\r
 304F75     (base 16)           DZS Inc.\r
                                DASAN Tower 8F, 49 Daewangpangyo-ro644beon-gil Bundang-gu\r
@@ -119177,12 +119249,6 @@ D096FB     (base 16)         DZS Inc.
                                Seongnam-si  Gyeonggi-do  13493\r
                                KR\r
 \r
-00-01-47   (hex)               DZS Inc.\r
-000147     (base 16)           DZS Inc.\r
-                               7001 Oakport Street\r
-                               Oakland  CA  94621\r
-                               US\r
-\r
 80-7C-62   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
 807C62     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
                                No.555 Qianmo Road \r
@@ -119201,23 +119267,23 @@ D096FB     (base 16)                DZS Inc.
                                Hangzhou  Zhejiang  310052\r
                                CN\r
 \r
-00-02-71   (hex)               DZS Inc.\r
-000271     (base 16)           DZS Inc.\r
+00-01-47   (hex)               DZS Inc.\r
+000147     (base 16)           DZS Inc.\r
                                7001 Oakport Street\r
                                Oakland  CA  94621\r
                                US\r
 \r
-6C-03-70   (hex)               Extreme Networks, Inc.\r
-6C0370     (base 16)           Extreme Networks, Inc.\r
-                               6480 Via Del Oro\r
-                               San Jose  CA  95119\r
+00-02-71   (hex)               DZS Inc.\r
+000271     (base 16)           DZS Inc.\r
+                               7001 Oakport Street\r
+                               Oakland  CA  94621\r
                                US\r
 \r
-DC-9E-AB   (hex)               Chongqing Yipingfang Technology Co., Ltd.\r
-DC9EAB     (base 16)           Chongqing Yipingfang Technology Co., Ltd.\r
-                               No. 1-10, Tieshan Road, Biquan Street, Bishan District, Chongqing\r
-                               ChongQing    402760\r
-                               CN\r
+CC-47-40   (hex)               AzureWave Technology Inc.\r
+CC4740     (base 16)           AzureWave Technology Inc.\r
+                               8F., No. 94, Baozhong Rd.\r
+                               New Taipei City  Taiwan  231\r
+                               TW\r
 \r
 6C-8F-4E   (hex)               Chongqing Yipingfang Technology Co., Ltd.\r
 6C8F4E     (base 16)           Chongqing Yipingfang Technology Co., Ltd.\r
@@ -119231,18 +119297,18 @@ E01FFC     (base 16)                Motorola (Wuhan) Mobility Technologies Communication Co.,
                                Wuhan  Hubei  430000\r
                                CN\r
 \r
-74-D6-E5   (hex)               Huawei Device Co., Ltd.\r
-74D6E5     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
-                               CN\r
-\r
 88-25-08   (hex)               Meta Platforms Technologies, LLC\r
 882508     (base 16)           Meta Platforms Technologies, LLC\r
                                1601 Willow Rd\r
                                Menlo Park  CA  94025\r
                                US\r
 \r
+6C-03-70   (hex)               Extreme Networks, Inc.\r
+6C0370     (base 16)           Extreme Networks, Inc.\r
+                               6480 Via Del Oro\r
+                               San Jose  CA  95119\r
+                               US\r
+\r
 9C-65-FA   (hex)               AcSiP\r
 9C65FA     (base 16)           AcSiP\r
                                3F., No. 246, Bo'ai St., Shulin Dist.,\r
@@ -119273,6 +119339,12 @@ AC7A94     (base 16)         GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
+34-AF-A3   (hex)               Recogni Inc\r
+34AFA3     (base 16)           Recogni Inc\r
+                               2590 N 1ST STSuite 320\r
+                               San Jose  CA  95131\r
+                               US\r
+\r
 D8-7A-3B   (hex)               Silicon Laboratories\r
 D87A3B     (base 16)           Silicon Laboratories\r
                                7000 W. William Cannon Dr.\r
@@ -119285,6 +119357,24 @@ D87A3B     (base 16)         Silicon Laboratories
                                Chengdu  Sichuan  611330\r
                                CN\r
 \r
+DC-9E-AB   (hex)               Chongqing Yipingfang Technology Co., Ltd.\r
+DC9EAB     (base 16)           Chongqing Yipingfang Technology Co., Ltd.\r
+                               No. 1-10, Tieshan Road, Biquan Street, Bishan District, Chongqing\r
+                               ChongQing    402760\r
+                               CN\r
+\r
+74-D6-E5   (hex)               Huawei Device Co., Ltd.\r
+74D6E5     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
+\r
+14-A4-17   (hex)               Shenzhen Belon Technology CO.,LTD\r
+14A417     (base 16)           Shenzhen Belon Technology CO.,LTD\r
+                               Tsinghua Information\r
+                               Shenzhen  Guangdong  518052\r
+                               CN\r
+\r
 48-91-D5   (hex)               Cisco Systems, Inc\r
 4891D5     (base 16)           Cisco Systems, Inc\r
                                80 West Tasman Drive\r
@@ -119297,22 +119387,16 @@ D87A3B     (base 16)                Silicon Laboratories
                                Chandler  AZ  85226\r
                                US\r
 \r
-34-AF-A3   (hex)               Recogni Inc\r
-34AFA3     (base 16)           Recogni Inc\r
-                               2590 N 1ST STSuite 320\r
-                               San Jose  CA  95131\r
+48-9E-CB   (hex)               Hewlett Packard Enterprise\r
+489ECB     (base 16)           Hewlett Packard Enterprise\r
+                               8000 Foothills Blvd.\r
+                               Roseville    95747\r
                                US\r
 \r
-14-A4-17   (hex)               Shenzhen Belon Technology CO.,LTD\r
-14A417     (base 16)           Shenzhen Belon Technology CO.,LTD\r
-                               Tsinghua Information\r
-                               Shenzhen  Guangdong  518052\r
-                               CN\r
-\r
-60-48-9C   (hex)               YIPPEE ELECTRONICS CO.,LIMITED\r
-60489C     (base 16)           YIPPEE ELECTRONICS CO.,LIMITED\r
-                               19H MAXGRAND PLAZA NO.3 TAI YAU STREET SAN PO KONG KL\r
-                               Kowloon    999077\r
+90-2A-EE   (hex)               Xiaomi Communications Co Ltd\r
+902AEE     (base 16)           Xiaomi Communications Co Ltd\r
+                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+                               Beijing  Haidian District  100085\r
                                CN\r
 \r
 D8-E3-5E   (hex)               LG Innotek\r
@@ -119321,30 +119405,12 @@ D8E35E     (base 16)                LG Innotek
                                Gwangju  Gwangsan-gu  506-731\r
                                KR\r
 \r
-48-9E-CB   (hex)               Hewlett Packard Enterprise\r
-489ECB     (base 16)           Hewlett Packard Enterprise\r
-                               8000 Foothills Blvd.\r
-                               Roseville    95747\r
-                               US\r
-\r
 78-68-29   (hex)               eero inc.\r
 786829     (base 16)           eero inc.\r
                                660 3rd Street\r
                                San Francisco  CA  94107\r
                                US\r
 \r
-D8-47-8F   (hex)               Microchip Technology Inc.\r
-D8478F     (base 16)           Microchip Technology Inc.\r
-                               2355 W. Chandler Blvd.\r
-                               Chandler  AZ  85224\r
-                               US\r
-\r
-90-2A-EE   (hex)               Xiaomi Communications Co Ltd\r
-902AEE     (base 16)           Xiaomi Communications Co Ltd\r
-                               #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
-                               Beijing  Haidian District  100085\r
-                               CN\r
-\r
 F4-D9-C6   (hex)               UNION MAN TECHNOLOGY CO.,LTD\r
 F4D9C6     (base 16)           UNION MAN TECHNOLOGY CO.,LTD\r
                                No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
@@ -119357,10 +119423,16 @@ F4D9C6     (base 16)                UNION MAN TECHNOLOGY CO.,LTD
                                Huizhou  Guangdong  516007\r
                                CN\r
 \r
-88-08-94   (hex)               Skullcandy\r
-880894     (base 16)           Skullcandy\r
-                               1441 Ute blvd.\r
-                               Park City    84098\r
+60-48-9C   (hex)               YIPPEE ELECTRONICS CO.,LIMITED\r
+60489C     (base 16)           YIPPEE ELECTRONICS CO.,LIMITED\r
+                               19H MAXGRAND PLAZA NO.3 TAI YAU STREET SAN PO KONG KL\r
+                               Kowloon    999077\r
+                               CN\r
+\r
+D8-47-8F   (hex)               Microchip Technology Inc.\r
+D8478F     (base 16)           Microchip Technology Inc.\r
+                               2355 W. Chandler Blvd.\r
+                               Chandler  AZ  85224\r
                                US\r
 \r
 24-90-38   (hex)               Universal Biosensors Pty Ltd\r
@@ -119375,42 +119447,12 @@ F8EDAE     (base 16)                MOBIWIRE MOBILES(NINGBO) CO.,LTD
                                NingBo  ZheJiang  315500\r
                                CN\r
 \r
-00-E6-0E   (hex)               Extreme Networks, Inc.\r
-00E60E     (base 16)           Extreme Networks, Inc.\r
-                               6480 Via Del Oro\r
-                               San Jose  CA  95119\r
-                               US\r
-\r
-94-98-8F   (hex)               Sagemcom Broadband SAS\r
-94988F     (base 16)           Sagemcom Broadband SAS\r
-                               250, route de l'Empereur\r
-                               Rueil Malmaison Cedex  hauts de seine  92848\r
-                               FR\r
-\r
-F0-7B-65   (hex)               Sagemcom Broadband SAS\r
-F07B65     (base 16)           Sagemcom Broadband SAS\r
-                               250, route de l'Empereur\r
-                               Rueil Malmaison Cedex  hauts de seine  92848\r
-                               FR\r
-\r
-24-E4-CE   (hex)               Kaonmedia CO., LTD.\r
-24E4CE     (base 16)           Kaonmedia CO., LTD.\r
-                               884-3, Seongnam-daero, Bundang-gu\r
-                               Seongnam-si  Gyeonggi-do  13517\r
-                               KR\r
-\r
 14-C3-5E   (hex)               FibRSol Global Network Limited\r
 14C35E     (base 16)           FibRSol Global Network Limited\r
                                17, Deep Vihar, Vikas Nagar, Near Durga Mata Mandir, Uttam Nagar New Delhi\r
                                New Delhi  New Delhi  110059\r
                                IN\r
 \r
-04-AB-08   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-04AB08     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 40-FA-FE   (hex)               Motorola Mobility LLC, a Lenovo Company\r
 40FAFE     (base 16)           Motorola Mobility LLC, a Lenovo Company\r
                                222 West Merchandise Mart Plaza\r
@@ -119423,6 +119465,42 @@ F07B65     (base 16)         Sagemcom Broadband SAS
                                KYOTO  KYOTO  601-8501\r
                                JP\r
 \r
+00-E6-0E   (hex)               Extreme Networks, Inc.\r
+00E60E     (base 16)           Extreme Networks, Inc.\r
+                               6480 Via Del Oro\r
+                               San Jose  CA  95119\r
+                               US\r
+\r
+88-08-94   (hex)               Skullcandy\r
+880894     (base 16)           Skullcandy\r
+                               1441 Ute blvd.\r
+                               Park City    84098\r
+                               US\r
+\r
+28-BE-F3   (hex)               FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+28BEF3     (base 16)           FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+                               19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
+                               FUZHOU  FUJIAN  350002\r
+                               CN\r
+\r
+E0-CB-19   (hex)               Nokia\r
+E0CB19     (base 16)           Nokia\r
+                               600 March Road\r
+                               Kanata  Ontario  K2K 2E6\r
+                               CA\r
+\r
+94-98-8F   (hex)               Sagemcom Broadband SAS\r
+94988F     (base 16)           Sagemcom Broadband SAS\r
+                               250, route de l'Empereur\r
+                               Rueil Malmaison Cedex  hauts de seine  92848\r
+                               FR\r
+\r
+F0-7B-65   (hex)               Sagemcom Broadband SAS\r
+F07B65     (base 16)           Sagemcom Broadband SAS\r
+                               250, route de l'Empereur\r
+                               Rueil Malmaison Cedex  hauts de seine  92848\r
+                               FR\r
+\r
 94-DF-34   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 94DF34     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -119435,18 +119513,24 @@ F07B65     (base 16)                Sagemcom Broadband SAS
                                Wuhan  Hubei  430074\r
                                CN\r
 \r
-28-BE-F3   (hex)               FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
-28BEF3     (base 16)           FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
-                               19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
-                               FUZHOU  FUJIAN  350002\r
-                               CN\r
+24-E4-CE   (hex)               Kaonmedia CO., LTD.\r
+24E4CE     (base 16)           Kaonmedia CO., LTD.\r
+                               884-3, Seongnam-daero, Bundang-gu\r
+                               Seongnam-si  Gyeonggi-do  13517\r
+                               KR\r
 \r
-68-85-A4   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-6885A4     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-                               NO.18 HAIBIN ROAD,\r
-                               DONG GUAN  GUANG DONG  523860\r
+B0-21-6F   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+B0216F     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
                                CN\r
 \r
+84-5A-3E   (hex)               Cisco Systems, Inc\r
+845A3E     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
 E8-B5-D0   (hex)               Dell Inc.\r
 E8B5D0     (base 16)           Dell Inc.\r
                                One Dell Way\r
@@ -119459,40 +119543,34 @@ E8B5D0     (base 16)                Dell Inc.
                                Round Rock   TX  78682\r
                                US\r
 \r
-B0-21-6F   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-B0216F     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
+68-85-A4   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+6885A4     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+                               NO.18 HAIBIN ROAD,\r
+                               DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
+B4-56-FA   (hex)               IOPSYS Software Solutions\r
+B456FA     (base 16)           IOPSYS Software Solutions\r
+                               Krukmakargatan 21\r
+                               Stockholm  Stockholm  118 51\r
+                               SE\r
+\r
 68-F6-3B   (hex)               Amazon Technologies Inc.\r
 68F63B     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
                                Reno  NV  89507\r
                                US\r
 \r
-84-5A-3E   (hex)               Cisco Systems, Inc\r
-845A3E     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
-                               US\r
-\r
-E0-CB-19   (hex)               Nokia\r
-E0CB19     (base 16)           Nokia\r
-                               600 March Road\r
-                               Kanata  Ontario  K2K 2E6\r
-                               CA\r
-\r
 80-C4-5D   (hex)               IPG Laser GmbH\r
 80C45D     (base 16)           IPG Laser GmbH\r
                                Carl-Benz-Strasse 28\r
                                Burbach    57299\r
                                DE\r
 \r
-B4-56-FA   (hex)               IOPSYS Software Solutions\r
-B456FA     (base 16)           IOPSYS Software Solutions\r
-                               Krukmakargatan 21\r
-                               Stockholm  Stockholm  118 51\r
+68-EC-8A   (hex)               IKEA of Sweden AB\r
+68EC8A     (base 16)           IKEA of Sweden AB\r
+                               Box 72\r
+                               Älmhult    343 81\r
                                SE\r
 \r
 E8-F8-D0   (hex)               Nokia Shanghai Bell Co., Ltd.\r
@@ -119507,6 +119585,126 @@ E8F8D0     (base 16)                Nokia Shanghai Bell Co., Ltd.
                                REDMOND  WA  98052\r
                                US\r
 \r
+18-4A-53   (hex)               Apple, Inc.\r
+184A53     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+10-9F-41   (hex)               Apple, Inc.\r
+109F41     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+70-72-FE   (hex)               Apple, Inc.\r
+7072FE     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+90-A7-BF   (hex)               EM Microelectronic\r
+90A7BF     (base 16)           EM Microelectronic\r
+                               Rue des Sors 3\r
+                               Marin-Epagnier  Neuchatel  2074\r
+                               CH\r
+\r
+10-55-E4   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+1055E4     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+04-CE-09   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+04CE09     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+40-67-9B   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+40679B     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+24-E8-E5   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+24E8E5     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+04-AB-08   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+04AB08     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+C0-68-CC   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+C068CC     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+80-EE-25   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+80EE25     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+84-88-E1   (hex)               Apple, Inc.\r
+8488E1     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+10-BD-3A   (hex)               Apple, Inc.\r
+10BD3A     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+2C-C2-53   (hex)               Apple, Inc.\r
+2CC253     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+90-3C-1D   (hex)               HISENSE VISUAL TECHNOLOGY CO.,LTD\r
+903C1D     (base 16)           HISENSE VISUAL TECHNOLOGY CO.,LTD\r
+                               Qianwangang Road 218\r
+                               Qingdao  Shandong  266510\r
+                               CN\r
+\r
+BC-F4-99   (hex)               Rockwell Automation\r
+BCF499     (base 16)           Rockwell Automation\r
+                               1 Allen-Bradley Dr.\r
+                               Mayfield Heights  OH  44124-6118\r
+                               US\r
+\r
+8C-F3-E7   (hex)               solidotech\r
+8CF3E7     (base 16)           solidotech\r
+                               No.1 Dongji Avenue, Jiangning District, Nanjing, Jiangsu Province, China\r
+                               Nanjing  Jiangsu Province  211153\r
+                               CN\r
+\r
+D4-52-C7   (hex)               Beijing L&S Lancom Platform Tech. Co., Ltd.\r
+D452C7     (base 16)           Beijing L&S Lancom Platform Tech. Co., Ltd.\r
+                               901,floor 9, jelly loft, building 28, yard 9, Huinan Road, Changping District.\r
+                               Beijing    102208\r
+                               CN\r
+\r
+D4-E9-5E   (hex)               Texas Instruments\r
+D4E95E     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+10-15-C1   (hex)               Zhanzuo (Beijing) Technology Co., Ltd.\r
+1015C1     (base 16)           Zhanzuo (Beijing) Technology Co., Ltd.\r
+                               Room 313-2511, 3rd Floor, Shanshui Building, No. 3, Gulou East Street, Miyun District\r
+                               Beijing    101500\r
+                               CN\r
+\r
 F8-D0-27   (hex)               Seiko Epson Corporation\r
 F8D027     (base 16)           Seiko Epson Corporation\r
                                2070 Kotobuki Koaka\r
@@ -155105,12 +155303,6 @@ F4CE48     (base 16)         Extreme Networks, Inc.
                                Kowloon Bay  Hong Kong  0000\r
                                HK\r
 \r
-1C-88-0C   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-1C880C     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 EC-35-4D   (hex)               Wingtech Mobile Communications Co.,Ltd\r
 EC354D     (base 16)           Wingtech Mobile Communications Co.,Ltd\r
                                No.777,Yazhong Road,Nanhu District\r
@@ -156137,12 +156329,6 @@ E81656     (base 16)         Hangzhou BroadLink Technology Co.,Ltd
                                Mayfield Heights  OH  44124-6118\r
                                US\r
 \r
-34-85-11   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-348511     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 20-1F-54   (hex)               Raisecom Technology CO., LTD\r
 201F54     (base 16)           Raisecom Technology CO., LTD\r
                                No. 11, East Area, No. 10 Block, East Xibeiwang Road\r
@@ -157307,12 +157493,6 @@ A490CE     (base 16)         vivo Mobile Communication Co., Ltd.
                                Dongguan  Guangdong  523860\r
                                CN\r
 \r
-F8-B8-B4   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-F8B8B4     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 B0-FB-DD   (hex)               Shenzhen SuperElectron Technology Co.,Ltd.\r
 B0FBDD     (base 16)           Shenzhen SuperElectron Technology Co.,Ltd.\r
                                1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
@@ -157727,12 +157907,6 @@ E886CF     (base 16)         Nokia
                                Gruenwald  Bavaria  82031\r
                                DE\r
 \r
-68-1A-A4   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-681AA4     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 D8-54-82   (hex)               Oxit, LLC\r
 D85482     (base 16)           Oxit, LLC\r
                                3131 Westinghouse Blvd\r
@@ -158549,12 +158723,6 @@ D8312C     (base 16)         zte corporation
                                Beijing  Haidian District  100011\r
                                CN\r
 \r
-48-55-5E   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-48555E     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 B0-EB-7F   (hex)               Juniper Networks\r
 B0EB7F     (base 16)           Juniper Networks\r
                                1133 Innovation Way\r
@@ -158759,6 +158927,12 @@ A45D5E     (base 16)         Wilk Elektronik S.A.
                                Laziska Gorne  Slaskie  43-173\r
                                PL\r
 \r
+FC-31-5D   (hex)               Apple, Inc.\r
+FC315D     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 74-A6-CD   (hex)               Apple, Inc.\r
 74A6CD     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
@@ -158777,18 +158951,6 @@ A45D5E     (base 16)         Wilk Elektronik S.A.
                                Cupertino  CA  95014\r
                                US\r
 \r
-88-74-77   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-887477     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
-FC-31-5D   (hex)               Apple, Inc.\r
-FC315D     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
 3C-BC-D0   (hex)               zte corporation\r
 3CBCD0     (base 16)           zte corporation\r
                                12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
@@ -158831,11 +158993,11 @@ E02DF0     (base 16)                ALPSALPINE CO,.LTD
                                Stockholm    SE-164 80\r
                                SE\r
 \r
-3C-3B-4D   (hex)               Toyo Seisakusho Kaisha, Limited\r
-3C3B4D     (base 16)           Toyo Seisakusho Kaisha, Limited\r
-                               2-4-6 Honjyo\r
-                               Higashi-Osaka  Osaka  578-0953\r
-                               JP\r
+88-74-77   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+887477     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
 \r
 28-B8-29   (hex)               Juniper Networks\r
 28B829     (base 16)           Juniper Networks\r
@@ -158843,18 +159005,18 @@ E02DF0     (base 16)                ALPSALPINE CO,.LTD
                                Sunnyvale  CA  94089\r
                                US\r
 \r
+D0-A9-D3   (hex)               EM Microelectronic\r
+D0A9D3     (base 16)           EM Microelectronic\r
+                               Rue des Sors 3\r
+                               Marin-Epagnier  Neuchatel  2074\r
+                               CH\r
+\r
 14-DD-02   (hex)               Liangang Optoelectronic Technology CO., Ltd.\r
 14DD02     (base 16)           Liangang Optoelectronic Technology CO., Ltd.\r
                                150 JingHai West Road,ShaQu Village ShaTou Area,ChangAn Town\r
                                DongGuan GuangDong    523846\r
                                CN\r
 \r
-60-C7-27   (hex)               Digiboard Eletronica da Amazonia Ltda\r
-60C727     (base 16)           Digiboard Eletronica da Amazonia Ltda\r
-                               1111-A Matrinxa\r
-                               Manaus  Amazonia  69075-150\r
-                               BR\r
-\r
 D0-39-FA   (hex)               Samsung Electronics Co.,Ltd\r
 D039FA     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
@@ -158879,17 +159041,23 @@ AC80FB     (base 16)                Samsung Electronics Co.,Ltd
                                Wuhan  Hubei  430074\r
                                CN\r
 \r
+60-C7-27   (hex)               Digiboard Eletronica da Amazonia Ltda\r
+60C727     (base 16)           Digiboard Eletronica da Amazonia Ltda\r
+                               1111-A Matrinxa\r
+                               Manaus  Amazonia  69075-150\r
+                               BR\r
+\r
 48-31-DB   (hex)               Huawei Device Co., Ltd.\r
 4831DB     (base 16)           Huawei Device Co., Ltd.\r
                                No.2 of Xincheng Road, Songshan Lake Zone\r
                                Dongguan  Guangdong  523808\r
                                CN\r
 \r
-D0-A9-D3   (hex)               EM Microelectronic\r
-D0A9D3     (base 16)           EM Microelectronic\r
-                               Rue des Sors 3\r
-                               Marin-Epagnier  Neuchatel  2074\r
-                               CH\r
+3C-3B-4D   (hex)               Toyo Seisakusho Kaisha, Limited\r
+3C3B4D     (base 16)           Toyo Seisakusho Kaisha, Limited\r
+                               2-4-6 Honjyo\r
+                               Higashi-Osaka  Osaka  578-0953\r
+                               JP\r
 \r
 14-7F-0F   (hex)               Texas Instruments\r
 147F0F     (base 16)           Texas Instruments\r
@@ -158897,12 +159065,6 @@ D0A9D3     (base 16)         EM Microelectronic
                                Dallas  TX  75243\r
                                US\r
 \r
-20-5F-3D   (hex)               Adtran Inc\r
-205F3D     (base 16)           Adtran Inc\r
-                               Victory House, Vision Park, Chivers Way, Histon\r
-                               Cambridge    CB24 9ZR\r
-                               GB\r
-\r
 00-92-A5   (hex)               LG Innotek\r
 0092A5     (base 16)           LG Innotek\r
                                26, Hanamsandan 5beon-ro\r
@@ -158915,6 +159077,36 @@ D8638C     (base 16)         Shenzhen Dttek Technology Co., Ltd.
                                Shenzhen  Guangdong  518057\r
                                CN\r
 \r
+04-F7-78   (hex)               Sony Interactive Entertainment Inc.\r
+04F778     (base 16)           Sony Interactive Entertainment Inc.\r
+                               1-7-1 Konan\r
+                               Minato-ku  Tokyo  108-0075\r
+                               JP\r
+\r
+90-31-4B   (hex)               AltoBeam Inc.\r
+90314B     (base 16)           AltoBeam Inc.\r
+                               B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+                               Beijing  Beijing  100083\r
+                               CN\r
+\r
+20-5F-3D   (hex)               Adtran Inc\r
+205F3D     (base 16)           Adtran Inc\r
+                               Victory House, Vision Park, Chivers Way, Histon\r
+                               Cambridge    CB24 9ZR\r
+                               GB\r
+\r
+34-7D-E4   (hex)               SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+347DE4     (base 16)           SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+                               NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district\r
+                               shenzhen  guangdong  518000\r
+                               CN\r
+\r
+CC-CF-83   (hex)               CIG SHANGHAI CO LTD\r
+CCCF83     (base 16)           CIG SHANGHAI CO LTD\r
+                               5th Floor, Building 8 No 2388 Chenhang Road \r
+                               SHANGHAI    201114\r
+                               CN\r
+\r
 24-D3-37   (hex)               Xiaomi Communications Co Ltd\r
 24D337     (base 16)           Xiaomi Communications Co Ltd\r
                                #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
@@ -158927,17 +159119,17 @@ B4636F     (base 16)                Nokia Solutions and Networks GmbH & Co. KG
                                München  Bavaria  D-81541\r
                                DE\r
 \r
-04-F7-78   (hex)               Sony Interactive Entertainment Inc.\r
-04F778     (base 16)           Sony Interactive Entertainment Inc.\r
-                               1-7-1 Konan\r
-                               Minato-ku  Tokyo  108-0075\r
-                               JP\r
+10-CF-0F   (hex)               Apple, Inc.\r
+10CF0F     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
 \r
-90-31-4B   (hex)               AltoBeam Inc.\r
-90314B     (base 16)           AltoBeam Inc.\r
-                               B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
-                               Beijing  Beijing  100083\r
-                               CN\r
+1C-CA-41   (hex)               AO \r
+1CCA41     (base 16)           AO \r
+                               Verhnyaya Krasnoselskaya, 11A, building 3, fl. 3, cab. 8.\r
+                               Moscow    107140\r
+                               RU\r
 \r
 30-40-74   (hex)               zte corporation\r
 304074     (base 16)           zte corporation\r
@@ -158957,18 +159149,6 @@ A01077     (base 16)         zte corporation
                                Hangzhou  Zhejiang  310052\r
                                CN\r
 \r
-34-7D-E4   (hex)               SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
-347DE4     (base 16)           SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
-                               NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district\r
-                               shenzhen  guangdong  518000\r
-                               CN\r
-\r
-CC-CF-83   (hex)               CIG SHANGHAI CO LTD\r
-CCCF83     (base 16)           CIG SHANGHAI CO LTD\r
-                               5th Floor, Building 8 No 2388 Chenhang Road \r
-                               SHANGHAI    201114\r
-                               CN\r
-\r
 FC-A0-F3   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 FCA0F3     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -158981,30 +159161,6 @@ FCA0F3     (base 16)         HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-10-CF-0F   (hex)               Apple, Inc.\r
-10CF0F     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-1C-CA-41   (hex)               AO \r
-1CCA41     (base 16)           AO \r
-                               Verhnyaya Krasnoselskaya, 11A, building 3, fl. 3, cab. 8.\r
-                               Moscow    107140\r
-                               RU\r
-\r
-14-0F-A6   (hex)               Renesas Electronics (Penang) Sdn. Bhd.\r
-140FA6     (base 16)           Renesas Electronics (Penang) Sdn. Bhd.\r
-                               Phase 3, Bayan Lepas FIZ\r
-                               Bayan Lepas  Penang  11900\r
-                               MY\r
-\r
-00-50-C4   (hex)               IMD\r
-0050C4     (base 16)           IMD\r
-                               Dornierstr. 4\r
-                               Puchheim    82178\r
-                               DE\r
-\r
 14-84-73   (hex)               Cisco Systems, Inc\r
 148473     (base 16)           Cisco Systems, Inc\r
                                80 West Tasman Drive\r
@@ -159035,6 +159191,30 @@ AC1754     (base 16)         tiko Energy Solutions AG
                                Zürich  Zürich  8004\r
                                CH\r
 \r
+A4-C2-3E   (hex)               Huizhou Speed Wireless Technology Co.,Ltd\r
+A4C23E     (base 16)           Huizhou Speed Wireless Technology Co.,Ltd\r
+                               138 Huize Avenue, Shangxia District\r
+                               Dongjiang Hi tech Industrial Park, Shuikou  Huizhou, Guangdong  516000\r
+                               CN\r
+\r
+14-0F-A6   (hex)               Renesas Electronics (Penang) Sdn. Bhd.\r
+140FA6     (base 16)           Renesas Electronics (Penang) Sdn. Bhd.\r
+                               Phase 3, Bayan Lepas FIZ\r
+                               Bayan Lepas  Penang  11900\r
+                               MY\r
+\r
+00-50-C4   (hex)               IMD\r
+0050C4     (base 16)           IMD\r
+                               Dornierstr. 4\r
+                               Puchheim    82178\r
+                               DE\r
+\r
+7C-45-F9   (hex)               IEEE Registration Authority\r
+7C45F9     (base 16)           IEEE Registration Authority\r
+                               445 Hoes Lane\r
+                               Piscataway  NJ  08554\r
+                               US\r
+\r
 AC-E0-D6   (hex)               koreabts\r
 ACE0D6     (base 16)           koreabts\r
                                362-11, Jongga-ro, Jung-gu, Ulsan, Republic of Korea\r
@@ -159047,12 +159227,6 @@ ACE0D6     (base 16)         koreabts
                                Changsha  HUNAN  410329\r
                                CN\r
 \r
-A4-C2-3E   (hex)               Huizhou Speed Wireless Technology Co.,Ltd\r
-A4C23E     (base 16)           Huizhou Speed Wireless Technology Co.,Ltd\r
-                               138 Huize Avenue, Shangxia District\r
-                               Dongjiang Hi tech Industrial Park, Shuikou  Huizhou, Guangdong  516000\r
-                               CN\r
-\r
 BC-73-A4   (hex)               ANDA TELECOM PVT LTD\r
 BC73A4     (base 16)           ANDA TELECOM PVT LTD\r
                                E-36 Amar Colony, Lajpat Nagar, New Delhi\r
@@ -159065,11 +159239,17 @@ BC73A4     (base 16)                ANDA TELECOM PVT LTD
                                Hsinchu City  Hsinchu  30071\r
                                TW\r
 \r
-7C-45-F9   (hex)               IEEE Registration Authority\r
-7C45F9     (base 16)           IEEE Registration Authority\r
-                               445 Hoes Lane\r
-                               Piscataway  NJ  08554\r
-                               US\r
+00-1A-A6   (hex)               Elbit Systems Deutschland GmbH & Co. KG\r
+001AA6     (base 16)           Elbit Systems Deutschland GmbH & Co. KG\r
+                               Eberhard-Finckh-Strasse 55\r
+                               Ulm  Baden-Wurttemberg  89075\r
+                               DE\r
+\r
+60-FA-B1   (hex)               Kempower Oyj\r
+60FAB1     (base 16)           Kempower Oyj\r
+                               Ala-Okeroistentie 29\r
+                               Lahti    15700\r
+                               FI\r
 \r
 E8-97-B8   (hex)               Chiun Mai Communication System, Inc\r
 E897B8     (base 16)           Chiun Mai Communication System, Inc\r
@@ -159083,11 +159263,11 @@ E897B8     (base 16)                Chiun Mai Communication System, Inc
                                chengdu    610000\r
                                CN\r
 \r
-60-FA-B1   (hex)               Kempower Oyj\r
-60FAB1     (base 16)           Kempower Oyj\r
-                               Ala-Okeroistentie 29\r
-                               Lahti    15700\r
-                               FI\r
+C8-78-7D   (hex)               D-Link Corporation\r
+C8787D     (base 16)           D-Link Corporation\r
+                               No.289, Sinhu 3rd Rd., Neihu District, \r
+                               Taipei City     114\r
+                               TW\r
 \r
 8C-E0-42   (hex)               vivo Mobile Communication Co., Ltd.\r
 8CE042     (base 16)           vivo Mobile Communication Co., Ltd.\r
@@ -159101,17 +159281,23 @@ FC5703     (base 16)                Hisense broadband multimedia technology Co.,Ltd
                                Qingdao    266000\r
                                CN\r
 \r
-00-1A-A6   (hex)               Elbit Systems Deutschland GmbH & Co. KG\r
-001AA6     (base 16)           Elbit Systems Deutschland GmbH & Co. KG\r
-                               Eberhard-Finckh-Strasse 55\r
-                               Ulm  Baden-Wurttemberg  89075\r
-                               DE\r
+94-2A-6F   (hex)               Ubiquiti Inc\r
+942A6F     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
 \r
-C8-78-7D   (hex)               D-Link Corporation\r
-C8787D     (base 16)           D-Link Corporation\r
-                               No.289, Sinhu 3rd Rd., Neihu District, \r
-                               Taipei City     114\r
-                               TW\r
+F4-E2-C6   (hex)               Ubiquiti Inc\r
+F4E2C6     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
+\r
+D8-B3-70   (hex)               Ubiquiti Inc\r
+D8B370     (base 16)           Ubiquiti Inc\r
+                               685 Third Avenue, 27th Floor\r
+                               New York  NY  New York NY 10017\r
+                               US\r
 \r
 B0-A7-32   (hex)               Espressif Inc.\r
 B0A732     (base 16)           Espressif Inc.\r
@@ -159125,52 +159311,22 @@ B0B21C     (base 16)                Espressif Inc.
                                Shanghai  Shanghai  201203\r
                                CN\r
 \r
-54-02-95   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-540295     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
 B4-FB-E4   (hex)               Ubiquiti Inc\r
 B4FBE4     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-E0-9B-27   (hex)               Ciena Corporation\r
-E09B27     (base 16)           Ciena Corporation\r
-                               7035 Ridge Road\r
-                               Hanover  MD  21076\r
-                               US\r
-\r
 68-72-51   (hex)               Ubiquiti Inc\r
 687251     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-94-2A-6F   (hex)               Ubiquiti Inc\r
-942A6F     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
-F4-E2-C6   (hex)               Ubiquiti Inc\r
-F4E2C6     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
-D8-B3-70   (hex)               Ubiquiti Inc\r
-D8B370     (base 16)           Ubiquiti Inc\r
-                               685 Third Avenue, 27th Floor\r
-                               New York  NY  New York NY 10017\r
-                               US\r
-\r
-F4-12-DA   (hex)               zte corporation\r
-F412DA     (base 16)           zte corporation\r
-                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
-                               shenzhen   guangdong  518057\r
+54-02-95   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+540295     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
                                CN\r
 \r
 FC-EC-DA   (hex)               Ubiquiti Inc\r
@@ -159179,11 +159335,11 @@ FCECDA     (base 16)                Ubiquiti Inc
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-C0-48-84   (hex)               Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
-C04884     (base 16)           Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
-                               CEV?ZL?DERE MAH. 1226. SOK. NO:14/1 AYTUNA APT. \r
-                               ANKARA    06520\r
-                               TR\r
+E0-9B-27   (hex)               Ciena Corporation\r
+E09B27     (base 16)           Ciena Corporation\r
+                               7035 Ridge Road\r
+                               Hanover  MD  21076\r
+                               US\r
 \r
 40-F2-1C   (hex)               DZS Inc.\r
 40F21C     (base 16)           DZS Inc.\r
@@ -159203,11 +159359,11 @@ C04884     (base 16)                Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd.
                                Hannover    30179\r
                                DE\r
 \r
-00-A0-1B   (hex)               DZS Inc.\r
-00A01B     (base 16)           DZS Inc.\r
-                               48664 MILMONT DRIVE\r
-                               FREMONT  CA  94538\r
-                               US\r
+F4-12-DA   (hex)               zte corporation\r
+F412DA     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
+                               CN\r
 \r
 C0-2C-17   (hex)               Cisco Systems, Inc\r
 C02C17     (base 16)           Cisco Systems, Inc\r
@@ -159215,60 +159371,60 @@ C02C17     (base 16)                Cisco Systems, Inc
                                San Jose  CA  94568\r
                                US\r
 \r
-98-49-25   (hex)               Juniper Networks\r
-984925     (base 16)           Juniper Networks\r
-                               1133 Innovation Way\r
-                               Sunnyvale  CA  94089\r
-                               US\r
-\r
-7C-BF-AE   (hex)               Renesas Electronics (Penang) Sdn. Bhd.\r
-7CBFAE     (base 16)           Renesas Electronics (Penang) Sdn. Bhd.\r
-                               Phase 3, Bayan Lepas FIZ\r
-                               Bayan Lepas  Penang  11900\r
-                               MY\r
-\r
-80-AF-CA   (hex)               Shenzhen Cudy Technology Co., Ltd.\r
-80AFCA     (base 16)           Shenzhen Cudy Technology Co., Ltd.\r
-                               Room A606, Gaoxinqi Industrial Park, Baoan 67 Dist\r
-                               Baoan 67 District, Shenzhen    518101\r
-                               CN\r
-\r
-B4-17-A8   (hex)               Meta Platforms Technologies, LLC\r
-B417A8     (base 16)           Meta Platforms Technologies, LLC\r
-                               1 Hacker Way\r
-                               Menlo Park  CA  94025\r
-                               US\r
-\r
-1C-6E-74   (hex)               EnOcean Edge Inc.\r
-1C6E74     (base 16)           EnOcean Edge Inc.\r
-                               8184 S. Highland Dr. Ste C5\r
-                               Sandy  UT  84093\r
-                               US\r
-\r
 04-47-2A   (hex)               Palo Alto Networks\r
 04472A     (base 16)           Palo Alto Networks\r
                                3000 Tannery Way\r
                                Santa Clara  CA  95054\r
                                US\r
 \r
+98-49-25   (hex)               Juniper Networks\r
+984925     (base 16)           Juniper Networks\r
+                               1133 Innovation Way\r
+                               Sunnyvale  CA  94089\r
+                               US\r
+\r
 D0-93-95   (hex)               IEEE Registration Authority\r
 D09395     (base 16)           IEEE Registration Authority\r
                                445 Hoes Lane\r
                                Piscataway  NJ  08554\r
                                US\r
 \r
+00-A0-1B   (hex)               DZS Inc.\r
+00A01B     (base 16)           DZS Inc.\r
+                               48664 MILMONT DRIVE\r
+                               FREMONT  CA  94538\r
+                               US\r
+\r
 44-63-70   (hex)               LCFC(Hefei) Electronics Technology Co., Ltd\r
 446370     (base 16)           LCFC(Hefei) Electronics Technology Co., Ltd\r
                                No.3188-1,YunGu Road(Comprehensive Bonded Zone),Hefei Economic and Technological Development Area\r
                                HEFEI  ANHUI  230601\r
                                CN\r
 \r
-C0-95-73   (hex)               AIxLink\r
-C09573     (base 16)           AIxLink\r
-                               Office 2702, Unit3, Building 1, Shudu Center Phase II. 333 Jiqing Third Road. High-Tech Zone\r
-                               Chegndu  Sichuan  610041\r
+C0-48-84   (hex)               Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
+C04884     (base 16)           Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
+                               CEV?ZL?DERE MAH. 1226. SOK. NO:14/1 AYTUNA APT. \r
+                               ANKARA    06520\r
+                               TR\r
+\r
+80-AF-CA   (hex)               Shenzhen Cudy Technology Co., Ltd.\r
+80AFCA     (base 16)           Shenzhen Cudy Technology Co., Ltd.\r
+                               Room A606, Gaoxinqi Industrial Park, Baoan 67 Dist\r
+                               Baoan 67 District, Shenzhen    518101\r
                                CN\r
 \r
+1C-6E-74   (hex)               EnOcean Edge Inc.\r
+1C6E74     (base 16)           EnOcean Edge Inc.\r
+                               8184 S. Highland Dr. Ste C5\r
+                               Sandy  UT  84093\r
+                               US\r
+\r
+7C-BF-AE   (hex)               Renesas Electronics (Penang) Sdn. Bhd.\r
+7CBFAE     (base 16)           Renesas Electronics (Penang) Sdn. Bhd.\r
+                               Phase 3, Bayan Lepas FIZ\r
+                               Bayan Lepas  Penang  11900\r
+                               MY\r
+\r
 7C-89-31   (hex)               Huawei Device Co., Ltd.\r
 7C8931     (base 16)           Huawei Device Co., Ltd.\r
                                No.2 of Xincheng Road, Songshan Lake Zone\r
@@ -159281,6 +159437,12 @@ C09573     (base 16)         AIxLink
                                Dongguan  Guangdong  523808\r
                                CN\r
 \r
+B4-17-A8   (hex)               Meta Platforms Technologies, LLC\r
+B417A8     (base 16)           Meta Platforms Technologies, LLC\r
+                               1 Hacker Way\r
+                               Menlo Park  CA  94025\r
+                               US\r
+\r
 7C-ED-C6   (hex)               Amazon Technologies Inc.\r
 7CEDC6     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
@@ -159305,6 +159467,12 @@ FC35E6     (base 16)         Visteon Corporation
                                Belleville  MI  48111\r
                                US\r
 \r
+C0-95-73   (hex)               AIxLink\r
+C09573     (base 16)           AIxLink\r
+                               Office 2702, Unit3, Building 1, Shudu Center Phase II. 333 Jiqing Third Road. High-Tech Zone\r
+                               Chegndu  Sichuan  610041\r
+                               CN\r
+\r
 94-CB-CD   (hex)               zte corporation\r
 94CBCD     (base 16)           zte corporation\r
                                12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
@@ -159335,46 +159503,16 @@ F814FE     (base 16)                UNION MAN TECHNOLOGY CO.,LTD
                                Huizhou  Guangdong  516025\r
                                CN\r
 \r
-A8-3A-79   (hex)               Mist Systems, Inc.\r
-A83A79     (base 16)           Mist Systems, Inc.\r
-                               1601 South De Anza Blvd, Suite 248\r
-                               Cupertino  CA  95014\r
-                               US\r
-\r
-54-88-FE   (hex)               Xiaoniu network technology (Shanghai) Co., Ltd.\r
-5488FE     (base 16)           Xiaoniu network technology (Shanghai) Co., Ltd.\r
-                               Room 706, building 3, no.20 east road, jingan district.\r
-                               Shang hai    200040\r
-                               CN\r
-\r
-F4-D5-80   (hex)               YAMAHA CORPORATION\r
-F4D580     (base 16)           YAMAHA CORPORATION\r
-                               10-1 Nakazawa-cho, Naka-ku\r
-                               Hamamatsu  Shizuoka  430-8650\r
-                               JP\r
-\r
 CC-62-FE   (hex)               UNION MAN TECHNOLOGY CO.,LTD\r
 CC62FE     (base 16)           UNION MAN TECHNOLOGY CO.,LTD\r
                                No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
                                Huizhou  Guangdong  516025\r
                                CN\r
 \r
-A8-52-D4   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
-A852D4     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
-                               3333 Scott Blvd\r
-                               Santa Clara  CA  95054\r
-                               US\r
-\r
-F4-EE-08   (hex)               Dell Inc.\r
-F4EE08     (base 16)           Dell Inc.\r
-                               One Dell Way\r
-                               Round Rock   TX  78682\r
-                               US\r
-\r
-90-8D-6E   (hex)               Dell Inc.\r
-908D6E     (base 16)           Dell Inc.\r
-                               One Dell Way\r
-                               Round Rock   TX  78682\r
+A8-3A-79   (hex)               Mist Systems, Inc.\r
+A83A79     (base 16)           Mist Systems, Inc.\r
+                               1601 South De Anza Blvd, Suite 248\r
+                               Cupertino  CA  95014\r
                                US\r
 \r
 EC-2A-72   (hex)               Dell Inc.\r
@@ -159419,23 +159557,53 @@ AC91A1     (base 16)                Dell Inc.
                                Round Rock   TX  78682\r
                                US\r
 \r
-C4-CB-E1   (hex)               Dell Inc.\r
-C4CBE1     (base 16)           Dell Inc.\r
+A8-52-D4   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
+A852D4     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
+                               3333 Scott Blvd\r
+                               Santa Clara  CA  95054\r
+                               US\r
+\r
+54-88-FE   (hex)               Xiaoniu network technology (Shanghai) Co., Ltd.\r
+5488FE     (base 16)           Xiaoniu network technology (Shanghai) Co., Ltd.\r
+                               Room 706, building 3, no.20 east road, jingan district.\r
+                               Shang hai    200040\r
+                               CN\r
+\r
+F4-EE-08   (hex)               Dell Inc.\r
+F4EE08     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock   TX  78682\r
+                               US\r
+\r
+90-8D-6E   (hex)               Dell Inc.\r
+908D6E     (base 16)           Dell Inc.\r
                                One Dell Way\r
                                Round Rock   TX  78682\r
                                US\r
 \r
+F4-D5-80   (hex)               YAMAHA CORPORATION\r
+F4D580     (base 16)           YAMAHA CORPORATION\r
+                               10-1 Nakazawa-cho, Naka-ku\r
+                               Hamamatsu  Shizuoka  430-8650\r
+                               JP\r
+\r
+38-B5-C9   (hex)               INGRAM MICRO SERVICES\r
+38B5C9     (base 16)           INGRAM MICRO SERVICES\r
+                               100 CHEMIN DE BAILLOT\r
+                               MONTAUBAN    82000\r
+                               FR\r
+\r
 84-4D-BE   (hex)               Fiberhome Telecommunication Technologies Co.,LTD\r
 844DBE     (base 16)           Fiberhome Telecommunication Technologies Co.,LTD\r
                                No.5 DongXin Road\r
                                Wuhan  Hubei  430074\r
                                CN\r
 \r
-AC-FF-6B   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-ACFF6B     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
+80-B9-46   (hex)               Nokia\r
+80B946     (base 16)           Nokia\r
+                               600 March Road\r
+                               Kanata  Ontario  K2K 2E6\r
+                               CA\r
 \r
 98-4B-06   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 984B06     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
@@ -159443,17 +159611,11 @@ ACFF6B     (base 16)                HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-80-B9-46   (hex)               Nokia\r
-80B946     (base 16)           Nokia\r
-                               600 March Road\r
-                               Kanata  Ontario  K2K 2E6\r
-                               CA\r
-\r
-38-B5-C9   (hex)               INGRAM MICRO SERVICES\r
-38B5C9     (base 16)           INGRAM MICRO SERVICES\r
-                               100 CHEMIN DE BAILLOT\r
-                               MONTAUBAN    82000\r
-                               FR\r
+AC-FF-6B   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+ACFF6B     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
 \r
 38-AB-16   (hex)               NPO RTT LLC\r
 38AB16     (base 16)           NPO RTT LLC\r
@@ -159461,12 +159623,156 @@ ACFF6B     (base 16)               HUAWEI TECHNOLOGIES CO.,LTD
                                Moscow  Select State  115172\r
                                RU\r
 \r
+C4-CB-E1   (hex)               Dell Inc.\r
+C4CBE1     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock   TX  78682\r
+                               US\r
+\r
 2C-D7-FF   (hex)               LANCOM Systems GmbH\r
 2CD7FF     (base 16)           LANCOM Systems GmbH\r
                                Adenauer Straße 20 /B2\r
                                Würselen    52146\r
                                DE\r
 \r
+1C-88-0C   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+1C880C     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+34-85-11   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+348511     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+28-C1-A0   (hex)               Apple, Inc.\r
+28C1A0     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+EC-2C-73   (hex)               Apple, Inc.\r
+EC2C73     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+7C-C0-6F   (hex)               Apple, Inc.\r
+7CC06F     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+B0-97-38   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+B09738     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+EC-81-50   (hex)               Apple, Inc.\r
+EC8150     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+D4-2F-CA   (hex)               Apple, Inc.\r
+D42FCA     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+D0-58-A5   (hex)               Apple, Inc.\r
+D058A5     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+2C-67-AB   (hex)               EZELINK TELECOM\r
+2C67AB     (base 16)           EZELINK TELECOM\r
+                               Bay Square Building 06 - Office No 105\r
+                               Dubai  Dubai  111581\r
+                               AE\r
+\r
+94-3F-D6   (hex)               Apple, Inc.\r
+943FD6     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+70-06-92   (hex)               IEEE Registration Authority\r
+700692     (base 16)           IEEE Registration Authority\r
+                               445 Hoes Lane\r
+                               Piscataway  NJ  08554\r
+                               US\r
+\r
+F8-B8-B4   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+F8B8B4     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+68-1A-A4   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+681AA4     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+48-55-5E   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+48555E     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+8C-DF-2C   (hex)               vivo Mobile Communication Co., Ltd.\r
+8CDF2C     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               No.1, vivo Road, Chang'an\r
+                               Dongguan  Guangdong  523860\r
+                               CN\r
+\r
+CC-B5-4C   (hex)               Texas Instruments\r
+CCB54C     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+74-A5-8C   (hex)               Texas Instruments\r
+74A58C     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+3C-E0-02   (hex)               Texas Instruments\r
+3CE002     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+98-03-8A   (hex)               Texas Instruments\r
+98038A     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+F8-79-28   (hex)               zte corporation\r
+F87928     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
+                               CN\r
+\r
+B8-60-61   (hex)               China Mobile Group Device Co.,Ltd.\r
+B86061     (base 16)           China Mobile Group Device Co.,Ltd.\r
+                               32 Xuanwumen West Street,Xicheng District\r
+                               Beijing    100053\r
+                               CN\r
+\r
+D8-8E-D4   (hex)               eero inc.\r
+D88ED4     (base 16)           eero inc.\r
+                               660 3rd Street\r
+                               San Francisco  CA  94107\r
+                               US\r
+\r
 7C-8A-E1   (hex)               COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
 7C8AE1     (base 16)           COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
                                NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE \r
@@ -160463,9 +160769,6 @@ D4BBC8     (base 16)          vivo Mobile Communication Co., Ltd.
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-24-BF-74   (hex)               Private\r
-24BF74     (base 16)           Private\r
-\r
 CC-DC-55   (hex)               Dragonchip Limited\r
 CCDC55     (base 16)           Dragonchip Limited\r
                                Room 601-2, 6/F, IC Development Centre, No. 6 Science Park West Avenue, Hong Kong Science Park, Shatin, N.T.\r
@@ -191369,12 +191672,6 @@ B48107     (base 16)         SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
                                North Point  Hong Kong  180\r
                                HK\r
 \r
-78-53-0D   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-78530D     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 0C-48-C6   (hex)               CELESTICA INC.\r
 0C48C6     (base 16)           CELESTICA INC.\r
                                1900-5140 Yonge Street PO Box 42   \r
@@ -194714,12 +195011,6 @@ AC49DB     (base 16)         Apple, Inc.
                                Shenzhen  Guangdong  518055\r
                                CN\r
 \r
-78-5F-36   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-785F36     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 A0-18-42   (hex)               Comtrend Corporation\r
 A01842     (base 16)           Comtrend Corporation\r
                                3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
@@ -196352,12 +196643,6 @@ BC6193     (base 16)         Xiaomi Communications Co Ltd
                                Beijing  Haidian District  100085\r
                                CN\r
 \r
-94-7F-D8   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-947FD8     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 C8-54-A4   (hex)               Infinix mobility limited\r
 C854A4     (base 16)           Infinix mobility limited\r
                                RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG\r
@@ -196490,12 +196775,6 @@ C43875     (base 16)         Sonos, Inc.
                                Reno  NV  89507\r
                                US\r
 \r
-20-89-8A   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-20898A     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 DC-A9-56   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
 DCA956     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
                                NO.18 HAIBIN ROAD,\r
@@ -197138,12 +197417,6 @@ A475B9     (base 16)         Samsung Electronics Co.,Ltd
                                ShenZhen  GuangDong  518109\r
                                CN\r
 \r
-18-AA-1E   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-18AA1E     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 9C-31-C3   (hex)               SKY UK LIMITED\r
 9C31C3     (base 16)           SKY UK LIMITED\r
                                130 Kings Road\r
@@ -198368,18 +198641,6 @@ D04F58     (base 16)         Ruckus Wireless
                                Sunnyvale  CA  94089\r
                                US\r
 \r
-50-3C-CA   (hex)               TECNO MOBILE LIMITED\r
-503CCA     (base 16)           TECNO MOBILE LIMITED\r
-                               ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
-                               Hong Kong  Hong Kong  999077\r
-                               HK\r
-\r
-9C-0C-35   (hex)               Shenzhenshi Xinzhongxin Technology Co.Ltd\r
-9C0C35     (base 16)           Shenzhenshi Xinzhongxin Technology Co.Ltd\r
-                               Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China\r
-                               ShenZHEN  GuangDong  518104\r
-                               CN\r
-\r
 C8-ED-FC   (hex)               Shenzhen Ideaform Industrial Product Design Co., Ltd\r
 C8EDFC     (base 16)           Shenzhen Ideaform Industrial Product Design Co., Ltd\r
                                Room 206, Building A2, Hangcheng Park, Xixiang Street, Bao'an District\r
@@ -198392,18 +198653,6 @@ F82229     (base 16)         Nokia Shanghai Bell Co., Ltd.
                                Shanghai     201206\r
                                CN\r
 \r
-44-3D-54   (hex)               Amazon Technologies Inc.\r
-443D54     (base 16)           Amazon Technologies Inc.\r
-                               P.O Box 8102 \r
-                               Reno  NV  89507\r
-                               US\r
-\r
-54-47-CC   (hex)               Sagemcom Broadband SAS\r
-5447CC     (base 16)           Sagemcom Broadband SAS\r
-                               250, route de l'Empereur\r
-                               Rueil Malmaison Cedex  hauts de seine  92848\r
-                               FR\r
-\r
 78-D6-D6   (hex)               eero inc.\r
 78D6D6     (base 16)           eero inc.\r
                                660 3rd Street\r
@@ -198416,41 +198665,35 @@ F82229     (base 16)                Nokia Shanghai Bell Co., Ltd.
                                Taipei City  TAIWAN  11087\r
                                TW\r
 \r
-DC-FB-B8   (hex)               Meizhou Guo Wei Electronics Co., Ltd\r
-DCFBB8     (base 16)           Meizhou Guo Wei Electronics Co., Ltd\r
-                               AD1 Section, The Economy Development Area, Dongsheng Industrial District, \r
-                               Meizhou  Guangdong Province  514000\r
+9C-0C-35   (hex)               Shenzhenshi Xinzhongxin Technology Co.Ltd\r
+9C0C35     (base 16)           Shenzhenshi Xinzhongxin Technology Co.Ltd\r
+                               Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China\r
+                               ShenZHEN  GuangDong  518104\r
                                CN\r
 \r
-AC-B1-81   (hex)               Belden Mooresville\r
-ACB181     (base 16)           Belden Mooresville\r
-                               1113 N Main St.\r
-                               Mooresville    28115\r
+44-3D-54   (hex)               Amazon Technologies Inc.\r
+443D54     (base 16)           Amazon Technologies Inc.\r
+                               P.O Box 8102 \r
+                               Reno  NV  89507\r
                                US\r
 \r
-AC-E4-03   (hex)               Shenzhen Visteng Technology CO.,LTD\r
-ACE403     (base 16)           Shenzhen Visteng Technology CO.,LTD\r
-                               6F, M7, MaQueLing, Hi-tech Park, Nanshan District\r
-                               Shenzhen    518000\r
-                               CN\r
-\r
-60-D0-39   (hex)               Apple, Inc.\r
-60D039     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
+50-3C-CA   (hex)               TECNO MOBILE LIMITED\r
+503CCA     (base 16)           TECNO MOBILE LIMITED\r
+                               ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
+                               Hong Kong  Hong Kong  999077\r
+                               HK\r
 \r
-C4-C1-7D   (hex)               Apple, Inc.\r
-C4C17D     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
+54-47-CC   (hex)               Sagemcom Broadband SAS\r
+5447CC     (base 16)           Sagemcom Broadband SAS\r
+                               250, route de l'Empereur\r
+                               Rueil Malmaison Cedex  hauts de seine  92848\r
+                               FR\r
 \r
-E0-BD-A0   (hex)               Apple, Inc.\r
-E0BDA0     (base 16)           Apple, Inc.\r
-                               1 Infinite Loop\r
-                               Cupertino  CA  95014\r
-                               US\r
+DC-FB-B8   (hex)               Meizhou Guo Wei Electronics Co., Ltd\r
+DCFBB8     (base 16)           Meizhou Guo Wei Electronics Co., Ltd\r
+                               AD1 Section, The Economy Development Area, Dongsheng Industrial District, \r
+                               Meizhou  Guangdong Province  514000\r
+                               CN\r
 \r
 C4-DB-04   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 C4DB04     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
@@ -198482,34 +198725,52 @@ F4E8C7     (base 16)                Apple, Inc.
                                Cupertino  CA  95014\r
                                US\r
 \r
+60-D0-39   (hex)               Apple, Inc.\r
+60D039     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
+C4-C1-7D   (hex)               Apple, Inc.\r
+C4C17D     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 94-09-C9   (hex)               ALPSALPINE CO,.LTD\r
 9409C9     (base 16)           ALPSALPINE CO,.LTD\r
                                nishida 6-1\r
                                kakuda-City  Miyagi-Pref  981-1595\r
                                JP\r
 \r
+E0-BD-A0   (hex)               Apple, Inc.\r
+E0BDA0     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
+\r
 F8-34-51   (hex)               Comcast-SRL\r
 F83451     (base 16)           Comcast-SRL\r
                                Alejo Martinez 17\r
                                Sosua  Puerto Plata  34443\r
                                DO\r
 \r
-68-63-72   (hex)               Huawei Device Co., Ltd.\r
-686372     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
-                               CN\r
+20-DE-1E   (hex)               Nokia\r
+20DE1E     (base 16)           Nokia\r
+                               600 March Road\r
+                               Kanata  Ontario  K2K 2E6\r
+                               CA\r
 \r
-A0-C2-0D   (hex)               Huawei Device Co., Ltd.\r
-A0C20D     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
-                               CN\r
+AC-B1-81   (hex)               Belden Mooresville\r
+ACB181     (base 16)           Belden Mooresville\r
+                               1113 N Main St.\r
+                               Mooresville    28115\r
+                               US\r
 \r
-4C-88-9E   (hex)               Huawei Device Co., Ltd.\r
-4C889E     (base 16)           Huawei Device Co., Ltd.\r
-                               No.2 of Xincheng Road, Songshan Lake Zone\r
-                               Dongguan  Guangdong  523808\r
+AC-E4-03   (hex)               Shenzhen Visteng Technology CO.,LTD\r
+ACE403     (base 16)           Shenzhen Visteng Technology CO.,LTD\r
+                               6F, M7, MaQueLing, Hi-tech Park, Nanshan District\r
+                               Shenzhen    518000\r
                                CN\r
 \r
 E4-62-C4   (hex)               Cisco Systems, Inc\r
@@ -198524,34 +198785,58 @@ E462C4     (base 16)                Cisco Systems, Inc
                                Mountain View  CA  94043\r
                                US\r
 \r
+A0-C2-0D   (hex)               Huawei Device Co., Ltd.\r
+A0C20D     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
+\r
+4C-88-9E   (hex)               Huawei Device Co., Ltd.\r
+4C889E     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
+\r
+6C-AC-C2   (hex)               Samsung Electronics Co.,Ltd\r
+6CACC2     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
+BC-F7-30   (hex)               Samsung Electronics Co.,Ltd\r
+BCF730     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
 44-EE-14   (hex)               Texas Instruments\r
 44EE14     (base 16)           Texas Instruments\r
                                12500 TI Blvd\r
                                Dallas  TX  75243\r
                                US\r
 \r
-D4-3F-32   (hex)               eero inc.\r
-D43F32     (base 16)           eero inc.\r
-                               660 3rd Street\r
-                               San Francisco  CA  94107\r
+B4-AC-9D   (hex)               Texas Instruments\r
+B4AC9D     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
                                US\r
 \r
-20-DE-1E   (hex)               Nokia\r
-20DE1E     (base 16)           Nokia\r
-                               600 March Road\r
-                               Kanata  Ontario  K2K 2E6\r
-                               CA\r
+68-63-72   (hex)               Huawei Device Co., Ltd.\r
+686372     (base 16)           Huawei Device Co., Ltd.\r
+                               No.2 of Xincheng Road, Songshan Lake Zone\r
+                               Dongguan  Guangdong  523808\r
+                               CN\r
 \r
-A8-80-55   (hex)               Tuya Smart Inc.\r
-A88055     (base 16)           Tuya Smart Inc.\r
-                               160 Greentree Drive, Suite 101\r
-                               Dover  DE  19904\r
-                               US\r
+BC-93-07   (hex)               Samsung Electronics Co.,Ltd\r
+BC9307     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
 \r
-50-8B-B9   (hex)               Tuya Smart Inc.\r
-508BB9     (base 16)           Tuya Smart Inc.\r
-                               160 Greentree Drive, Suite 101\r
-                               Dover  DE  19904\r
+D4-3F-32   (hex)               eero inc.\r
+D43F32     (base 16)           eero inc.\r
+                               660 3rd Street\r
+                               San Francisco  CA  94107\r
                                US\r
 \r
 00-1B-1F   (hex)               FORCE Technology\r
@@ -198560,6 +198845,24 @@ A88055     (base 16)         Tuya Smart Inc.
                                Horsholm    2970\r
                                DK\r
 \r
+C4-FC-22   (hex)               YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+C4FC22     (base 16)           YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+                               309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
+                               xiamen  Fujian  361015\r
+                               CN\r
+\r
+AC-51-EE   (hex)               Adtran Inc\r
+AC51EE     (base 16)           Adtran Inc\r
+                               Sheraton House\r
+                               Cambridge  Cambridgeshire  CB3 0AX\r
+                               GB\r
+\r
+28-D0-CB   (hex)               Adtran Inc\r
+28D0CB     (base 16)           Adtran Inc\r
+                               Victory House, Vision Park, Chivers Way, Histon\r
+                               Cambridge    CB24 9ZR\r
+                               GB\r
+\r
 FC-6A-1C   (hex)               Mellanox Technologies, Inc.\r
 FC6A1C     (base 16)           Mellanox Technologies, Inc.\r
                                350 Oakmead Parkway, Suite 100 \r
@@ -198572,36 +198875,36 @@ A088C2     (base 16)                Mellanox Technologies, Inc.
                                Sunnyvale  CA  94085\r
                                US\r
 \r
-6C-AC-C2   (hex)               Samsung Electronics Co.,Ltd\r
-6CACC2     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
-\r
-BC-F7-30   (hex)               Samsung Electronics Co.,Ltd\r
-BCF730     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
-\r
 48-29-D6   (hex)               GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
 4829D6     (base 16)           GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
                                NO.18 HAIBIN ROAD,\r
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-BC-93-07   (hex)               Samsung Electronics Co.,Ltd\r
-BC9307     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
+A4-D5-C2   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+A4D5C2     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+                               No.555 Qianmo Road\r
+                               Hangzhou  Zhejiang  310052\r
+                               CN\r
 \r
-B4-AC-9D   (hex)               Texas Instruments\r
-B4AC9D     (base 16)           Texas Instruments\r
-                               12500 TI Blvd\r
-                               Dallas  TX  75243\r
+A8-80-55   (hex)               Tuya Smart Inc.\r
+A88055     (base 16)           Tuya Smart Inc.\r
+                               160 Greentree Drive, Suite 101\r
+                               Dover  DE  19904\r
                                US\r
 \r
+50-8B-B9   (hex)               Tuya Smart Inc.\r
+508BB9     (base 16)           Tuya Smart Inc.\r
+                               160 Greentree Drive, Suite 101\r
+                               Dover  DE  19904\r
+                               US\r
+\r
+00-23-C7   (hex)               AVSystem sp. z o. o.\r
+0023C7     (base 16)           AVSystem sp. z o. o.\r
+                               Radzikowskiego 47D\r
+                               Kraków, ul.    31-315\r
+                               PL\r
+\r
 08-28-02   (hex)               SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
 082802     (base 16)           SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
                                Unit East Block22-24/F,Skyworth semiconductor design  Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China\r
@@ -198614,18 +198917,6 @@ CC4210     (base 16)         Xiaomi Communications Co Ltd
                                Beijing  Haidian District  100085\r
                                CN\r
 \r
-00-23-C7   (hex)               AVSystem sp. z o. o.\r
-0023C7     (base 16)           AVSystem sp. z o. o.\r
-                               Radzikowskiego 47D\r
-                               Kraków, ul.    31-315\r
-                               PL\r
-\r
-C4-FC-22   (hex)               YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
-C4FC22     (base 16)           YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
-                               309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
-                               xiamen  Fujian  361015\r
-                               CN\r
-\r
 3C-99-8C   (hex)               Houwa System Design Corp.\r
 3C998C     (base 16)           Houwa System Design Corp.\r
                                4F Matubara Building  3-22-14 Shibuyaku Higashi\r
@@ -198638,24 +198929,6 @@ C4FC22     (base 16)         YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.
                                Hangzhou  Zhejiang  310053\r
                                CN\r
 \r
-BC-AD-90   (hex)               Kymeta Purchasing\r
-BCAD90     (base 16)           Kymeta Purchasing\r
-                               12034 134th Ct NE #105\r
-                               Redmond  WA  98052\r
-                               US\r
-\r
-AC-51-EE   (hex)               Adtran Inc\r
-AC51EE     (base 16)           Adtran Inc\r
-                               Sheraton House\r
-                               Cambridge  Cambridgeshire  CB3 0AX\r
-                               GB\r
-\r
-28-D0-CB   (hex)               Adtran Inc\r
-28D0CB     (base 16)           Adtran Inc\r
-                               Victory House, Vision Park, Chivers Way, Histon\r
-                               Cambridge    CB24 9ZR\r
-                               GB\r
-\r
 38-68-A4   (hex)               Samsung Electronics Co.,Ltd\r
 3868A4     (base 16)           Samsung Electronics Co.,Ltd\r
                                129, Samsung-ro, Youngtongl-Gu\r
@@ -198668,18 +198941,30 @@ AC1E92     (base 16)                Samsung Electronics Co.,Ltd
                                Suwon    16677\r
                                KR\r
 \r
-A4-D5-C2   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
-A4D5C2     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
-                               No.555 Qianmo Road\r
-                               Hangzhou  Zhejiang  310052\r
-                               CN\r
-\r
 B8-37-B2   (hex)               Aruba, a Hewlett Packard Enterprise Company\r
 B837B2     (base 16)           Aruba, a Hewlett Packard Enterprise Company\r
                                3333 Scott Blvd\r
                                Santa Clara  CA  95054\r
                                US\r
 \r
+BC-AD-90   (hex)               Kymeta Purchasing\r
+BCAD90     (base 16)           Kymeta Purchasing\r
+                               12034 134th Ct NE #105\r
+                               Redmond  WA  98052\r
+                               US\r
+\r
+A0-60-32   (hex)               Amcrest Technologies\r
+A06032     (base 16)           Amcrest Technologies\r
+                               16727 Park Row\r
+                               Houston  TX  77084\r
+                               US\r
+\r
+DC-C2-C9   (hex)               CANON INC.\r
+DCC2C9     (base 16)           CANON INC.\r
+                               30-2 Shimomaruko 3-chome,\r
+                               Ohta-ku  Tokyo  146-8501\r
+                               JP\r
+\r
 D8-53-BC   (hex)               Lenovo Information Products (Shenzhen)Co.,Ltd\r
 D853BC     (base 16)           Lenovo Information Products (Shenzhen)Co.,Ltd\r
                                2F, NO.1 Plant , Lenovo Innovation Park, Lidu Road, Loucun Community, Xinhu Street, Guangming District , Shenzhen, Guangdong, China\r
@@ -198704,14 +198989,8 @@ DC45B8     (base 16)         Apple, Inc.
                                Cupertino  CA  95014\r
                                US\r
 \r
-DC-C2-C9   (hex)               CANON INC.\r
-DCC2C9     (base 16)           CANON INC.\r
-                               30-2 Shimomaruko 3-chome,\r
-                               Ohta-ku  Tokyo  146-8501\r
-                               JP\r
-\r
-F0-D3-1F   (hex)               Apple, Inc.\r
-F0D31F     (base 16)           Apple, Inc.\r
+90-EC-EA   (hex)               Apple, Inc.\r
+90ECEA     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
                                Cupertino  CA  95014\r
                                US\r
@@ -198728,30 +199007,30 @@ B4AEC1     (base 16)                Apple, Inc.
                                Cupertino  CA  95014\r
                                US\r
 \r
-90-EC-EA   (hex)               Apple, Inc.\r
-90ECEA     (base 16)           Apple, Inc.\r
+10-B5-88   (hex)               Apple, Inc.\r
+10B588     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
                                Cupertino  CA  95014\r
                                US\r
 \r
-10-B5-88   (hex)               Apple, Inc.\r
-10B588     (base 16)           Apple, Inc.\r
+F0-D3-1F   (hex)               Apple, Inc.\r
+F0D31F     (base 16)           Apple, Inc.\r
                                1 Infinite Loop\r
                                Cupertino  CA  95014\r
                                US\r
 \r
+38-0F-AD   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+380FAD     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
 80-AC-C8   (hex)               Phyplus Microelectronics Limited\r
 80ACC8     (base 16)           Phyplus Microelectronics Limited\r
                                304 Building 1 No.608 Sheng Xia Road\r
                                Shanghai    200000\r
                                CN\r
 \r
-A0-60-32   (hex)               Amcrest Technologies\r
-A06032     (base 16)           Amcrest Technologies\r
-                               16727 Park Row\r
-                               Houston  TX  77084\r
-                               US\r
-\r
 58-E4-88   (hex)               Amazon Technologies Inc.\r
 58E488     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
@@ -198800,12 +199079,6 @@ E4BC96     (base 16)         DAP B.V.
                                Beijing  Beijing  100085\r
                                CN\r
 \r
-38-0F-AD   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-380FAD     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
 D8-03-1A   (hex)               Laird Connectivity\r
 D8031A     (base 16)           Laird Connectivity\r
                                3F.-1, No.145, Xianzheng 9th Rd.,\r
@@ -198824,6 +199097,18 @@ D8031A     (base 16)         Laird Connectivity
                                Beijing    100102\r
                                CN\r
 \r
+7C-27-3C   (hex)               Shenzhen Yunlink Technology Co., Ltd\r
+7C273C     (base 16)           Shenzhen Yunlink Technology Co., Ltd\r
+                               Gushu, Xixiang Town, Bao'an District, \r
+                               Shenzhen City  Guangdong Province  518100\r
+                               CN\r
+\r
+1C-2A-B0   (hex)               Beijing Xiaomi Electronics Co.,Ltd\r
+1C2AB0     (base 16)           Beijing Xiaomi Electronics Co.,Ltd\r
+                               Xiaomi Campus\r
+                               Beijing  Beijing  100085\r
+                               CN\r
+\r
 98-17-F1   (hex)               zte corporation\r
 9817F1     (base 16)           zte corporation\r
                                12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
@@ -198842,12 +199127,36 @@ B8A535     (base 16)                Technicolor CH USA Inc.
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
+4C-C8-44   (hex)               Maipu Communication Technology Co.,Ltd.\r
+4CC844     (base 16)           Maipu Communication Technology Co.,Ltd.\r
+                               No.16 Jiuxing Avenue, Hi-tech zone\r
+                               Chengdu  Sichuan  610094\r
+                               CN\r
+\r
 00-2B-F5   (hex)               BUFFALO.INC\r
 002BF5     (base 16)           BUFFALO.INC\r
                                AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku\r
                                Nagoya  Aichi Pref.  460-8315\r
                                JP\r
 \r
+98-C8-54   (hex)               Chiun Mai Communication System, Inc\r
+98C854     (base 16)           Chiun Mai Communication System, Inc\r
+                               No.4, MingSheng St. TuCheng District\r
+                               New Taipei City    23679\r
+                               TW\r
+\r
+70-17-D7   (hex)               Shanghai Enflame Technology Co., Ltd.\r
+7017D7     (base 16)           Shanghai Enflame Technology Co., Ltd.\r
+                               A-522, No. 188, Yesheng Road, LIN-GANG Special Area, China (Shanghai) Pilot Free Trade Zone\r
+                               Shanghai  Shanghai  201306\r
+                               CN\r
+\r
+64-B7-08   (hex)               Espressif Inc.\r
+64B708     (base 16)           Espressif Inc.\r
+                               Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+                               Shanghai  Shanghai  201203\r
+                               CN\r
+\r
 70-54-64   (hex)               Silicon Laboratories\r
 705464     (base 16)           Silicon Laboratories\r
                                7000 W. William Cannon Dr.\r
@@ -198872,53 +199181,23 @@ CC5830     (base 16)                Sagemcom Broadband SAS
                                Rueil Malmaison Cedex  hauts de seine  92848\r
                                FR\r
 \r
-7C-27-3C   (hex)               Shenzhen Yunlink Technology Co., Ltd\r
-7C273C     (base 16)           Shenzhen Yunlink Technology Co., Ltd\r
-                               Gushu, Xixiang Town, Bao'an District, \r
-                               Shenzhen City  Guangdong Province  518100\r
-                               CN\r
-\r
-1C-2A-B0   (hex)               Beijing Xiaomi Electronics Co.,Ltd\r
-1C2AB0     (base 16)           Beijing Xiaomi Electronics Co.,Ltd\r
-                               Xiaomi Campus\r
-                               Beijing  Beijing  100085\r
-                               CN\r
-\r
 E8-24-A6   (hex)               Juniper Networks\r
 E824A6     (base 16)           Juniper Networks\r
                                1133 Innovation Way\r
                                Sunnyvale  CA  94089\r
                                US\r
 \r
-98-C8-54   (hex)               Chiun Mai Communication System, Inc\r
-98C854     (base 16)           Chiun Mai Communication System, Inc\r
-                               No.4, MingSheng St. TuCheng District\r
-                               New Taipei City    23679\r
-                               TW\r
-\r
-70-17-D7   (hex)               Shanghai Enflame Technology Co., Ltd.\r
-7017D7     (base 16)           Shanghai Enflame Technology Co., Ltd.\r
-                               A-522, No. 188, Yesheng Road, LIN-GANG Special Area, China (Shanghai) Pilot Free Trade Zone\r
-                               Shanghai  Shanghai  201306\r
-                               CN\r
-\r
-4C-C8-44   (hex)               Maipu Communication Technology Co.,Ltd.\r
-4CC844     (base 16)           Maipu Communication Technology Co.,Ltd.\r
-                               No.16 Jiuxing Avenue, Hi-tech zone\r
-                               Chengdu  Sichuan  610094\r
-                               CN\r
-\r
 A0-8E-24   (hex)               eero inc.\r
 A08E24     (base 16)           eero inc.\r
                                660 3rd Street\r
                                San Francisco  CA  94107\r
                                US\r
 \r
-64-B7-08   (hex)               Espressif Inc.\r
-64B708     (base 16)           Espressif Inc.\r
-                               Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
-                               Shanghai  Shanghai  201203\r
-                               CN\r
+AC-89-D2   (hex)               Ciena Corporation\r
+AC89D2     (base 16)           Ciena Corporation\r
+                               7035 Ridge Road\r
+                               Hanover  MD  21076\r
+                               US\r
 \r
 E0-56-94   (hex)               Yunhight Microelectronics\r
 E05694     (base 16)           Yunhight Microelectronics\r
@@ -198944,12 +199223,6 @@ B49882     (base 16)         Brusa HyPower AG
                                Buchs    9470\r
                                CH\r
 \r
-FC-7A-58   (hex)               Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-FC7A58     (base 16)           Shenzhen Skyworth  Digital  Technology  CO., Ltd\r
-                               4F,Block A, Skyworth?Building,\r
-                               Shenzhen  Guangdong  518057\r
-                               CN\r
-\r
 18-E8-29   (hex)               Ubiquiti Inc\r
 18E829     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
@@ -198974,12 +199247,30 @@ F492BF     (base 16)                Ubiquiti Inc
                                New York  NY  New York NY 10017\r
                                US\r
 \r
+48-38-B6   (hex)               Auhui Taoyun Technology Co., Ltd\r
+4838B6     (base 16)           Auhui Taoyun Technology Co., Ltd\r
+                               6/F and 23/F, Scientific Research Building, Building 2, Zone A, China Sound Valley, No. 3333, Xiyou Road, High tech Zone\r
+                               Hefei  Anhui  230094\r
+                               CN\r
+\r
+00-03-56   (hex)               Diebold Nixdorf\r
+000356     (base 16)           Diebold Nixdorf\r
+                               Wohlrabedamm 31\r
+                               Berlin    13629\r
+                               DE\r
+\r
 00-15-6D   (hex)               Ubiquiti Inc\r
 00156D     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
                                New York  NY  New York NY 10017\r
                                US\r
 \r
+BC-C4-27   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+BCC427     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
 00-27-22   (hex)               Ubiquiti Inc\r
 002722     (base 16)           Ubiquiti Inc\r
                                685 Third Avenue, 27th Floor\r
@@ -198992,34 +199283,16 @@ DC9FDB     (base 16)                Ubiquiti Inc
                                New York  NY  New York NY 10017\r
                                US\r
 \r
-BC-C4-27   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-BCC427     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
-\r
 B0-CF-CB   (hex)               Amazon Technologies Inc.\r
 B0CFCB     (base 16)           Amazon Technologies Inc.\r
                                P.O Box 8102 \r
                                Reno  NV  89507\r
                                US\r
 \r
-AC-89-D2   (hex)               Ciena Corporation\r
-AC89D2     (base 16)           Ciena Corporation\r
-                               7035 Ridge Road\r
-                               Hanover  MD  21076\r
-                               US\r
-\r
-00-03-56   (hex)               Diebold Nixdorf\r
-000356     (base 16)           Diebold Nixdorf\r
-                               Wohlrabedamm 31\r
-                               Berlin    13629\r
-                               DE\r
-\r
-5C-4D-BF   (hex)               zte corporation\r
-5C4DBF     (base 16)           zte corporation\r
-                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
-                               shenzhen   guangdong  518057\r
+88-6E-DD   (hex)               Micronet union Technology(Chengdu)Co., Ltd.\r
+886EDD     (base 16)           Micronet union Technology(Chengdu)Co., Ltd.\r
+                                No.502, Building 5, No. 528, Yuefei Road, Shibantan Street, Xindu District\r
+                               Chengdu  Sichuan  610000\r
                                CN\r
 \r
 98-47-44   (hex)               Shenzhen Boomtech Industrial Corporation\r
@@ -199028,10 +199301,10 @@ AC89D2     (base 16)                Ciena Corporation
                                Shenzhen    518100\r
                                CN\r
 \r
-48-38-B6   (hex)               Auhui Taoyun Technology Co., Ltd\r
-4838B6     (base 16)           Auhui Taoyun Technology Co., Ltd\r
-                               6/F and 23/F, Scientific Research Building, Building 2, Zone A, China Sound Valley, No. 3333, Xiyou Road, High tech Zone\r
-                               Hefei  Anhui  230094\r
+5C-4D-BF   (hex)               zte corporation\r
+5C4DBF     (base 16)           zte corporation\r
+                               12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+                               shenzhen   guangdong  518057\r
                                CN\r
 \r
 80-F3-EF   (hex)               Meta Platforms Technologies, LLC\r
@@ -199058,36 +199331,24 @@ AC89D2     (base 16)                Ciena Corporation
                                ALPHARETTA  GA  30005\r
                                US\r
 \r
-88-6E-DD   (hex)               Micronet union Technology(Chengdu)Co., Ltd.\r
-886EDD     (base 16)           Micronet union Technology(Chengdu)Co., Ltd.\r
-                                No.502, Building 5, No. 528, Yuefei Road, Shibantan Street, Xindu District\r
-                               Chengdu  Sichuan  610000\r
-                               CN\r
-\r
-08-BF-B8   (hex)               ASUSTek COMPUTER INC.\r
-08BFB8     (base 16)           ASUSTek COMPUTER INC.\r
-                               No.15,Lide Rd., Beitou, Dist.,Taipei 112,Taiwan\r
-                               Taipei  Taiwan  112\r
-                               TW\r
-\r
 D0-19-D3   (hex)               ITEL MOBILE LIMITED\r
 D019D3     (base 16)           ITEL MOBILE LIMITED\r
                                RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING  NO.7 KO FAI ROAD, YAU TONG, KLN, H.K\r
                                Hong Kong  KOWLOON  999077\r
                                HK\r
 \r
-4C-5E-D3   (hex)               Unisyue Technologies Co; LTD.\r
-4C5ED3     (base 16)           Unisyue Technologies Co; LTD.\r
-                               Room 402, No. 2 Building, NO.1 ZhongGuancun East Rd, HaiDian District, Beijing, People’s Republic of China\r
-                               Beijing    100190\r
-                               CN\r
-\r
 CC-AC-FE   (hex)               Telink Semiconductor (Shanghai) Co., Ltd.\r
 CCACFE     (base 16)           Telink Semiconductor (Shanghai) Co., Ltd.\r
                                No. 1500 Zuchongzhi Rd, Building #3\r
                                Shanghai    201203\r
                                CN\r
 \r
+08-BF-B8   (hex)               ASUSTek COMPUTER INC.\r
+08BFB8     (base 16)           ASUSTek COMPUTER INC.\r
+                               No.15,Lide Rd., Beitou, Dist.,Taipei 112,Taiwan\r
+                               Taipei  Taiwan  112\r
+                               TW\r
+\r
 4C-23-1A   (hex)               Extreme Networks, Inc.\r
 4C231A     (base 16)           Extreme Networks, Inc.\r
                                6480 Via Del Oro\r
@@ -199100,24 +199361,12 @@ F40046     (base 16)                ON Semiconductor
                                Phoenix    85008\r
                                US\r
 \r
-18-84-C1   (hex)               Guangzhou Shiyuan Electronic Technology Company Limited\r
-1884C1     (base 16)           Guangzhou Shiyuan Electronic Technology Company Limited\r
-                               No.6, 4th Yunpu Road, Yunpu industry District\r
-                               Guangzhou  Guangdong  510530\r
+4C-5E-D3   (hex)               Unisyue Technologies Co; LTD.\r
+4C5ED3     (base 16)           Unisyue Technologies Co; LTD.\r
+                               Room 402, No. 2 Building, NO.1 ZhongGuancun East Rd, HaiDian District, Beijing, People’s Republic of China\r
+                               Beijing    100190\r
                                CN\r
 \r
-EC-C0-18   (hex)               Cisco Systems, Inc\r
-ECC018     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
-                               US\r
-\r
-74-8F-C2   (hex)               Cisco Systems, Inc\r
-748FC2     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
-                               US\r
-\r
 D8-B2-49   (hex)               Huawei Device Co., Ltd.\r
 D8B249     (base 16)           Huawei Device Co., Ltd.\r
                                No.2 of Xincheng Road, Songshan Lake Zone\r
@@ -199136,18 +199385,6 @@ C49D08     (base 16)         Huawei Device Co., Ltd.
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
-D8-24-EC   (hex)               Plenom A/S\r
-D824EC     (base 16)           Plenom A/S\r
-                               Pi 2, Soften\r
-                               Hinnerup  Favrskov  8382\r
-                               DK\r
-\r
-D0-16-F0   (hex)               IEEE Registration Authority\r
-D016F0     (base 16)           IEEE Registration Authority\r
-                               445 Hoes Lane\r
-                               Piscataway  NJ  08554\r
-                               US\r
-\r
 B0-44-9C   (hex)               Assa Abloy AB - Yale\r
 B0449C     (base 16)           Assa Abloy AB - Yale\r
                                Nordenskiöldsgatan 8B (5tr)\r
@@ -199160,12 +199397,48 @@ B0449C     (base 16)                Assa Abloy AB - Yale
                                Changwon-si    51542\r
                                KR\r
 \r
-64-E0-AB   (hex)               UNION MAN TECHNOLOGY CO.,LTD\r
-64E0AB     (base 16)           UNION MAN TECHNOLOGY CO.,LTD\r
-                               No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
-                               Huizhou  Guangdong  516025\r
+18-84-C1   (hex)               Guangzhou Shiyuan Electronic Technology Company Limited\r
+1884C1     (base 16)           Guangzhou Shiyuan Electronic Technology Company Limited\r
+                               No.6, 4th Yunpu Road, Yunpu industry District\r
+                               Guangzhou  Guangdong  510530\r
                                CN\r
 \r
+68-85-6A   (hex)               OuterLink Corporation\r
+68856A     (base 16)           OuterLink Corporation\r
+                               150 Baker Avenue Extension, Suite 302\r
+                               Concord  MA  01742\r
+                               US\r
+\r
+E4-12-89   (hex)               topsystem GmbH\r
+E41289     (base 16)           topsystem GmbH\r
+                               Krefelder Straße 201\r
+                               Aachen    52070\r
+                               DE\r
+\r
+EC-C0-18   (hex)               Cisco Systems, Inc\r
+ECC018     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+74-8F-C2   (hex)               Cisco Systems, Inc\r
+748FC2     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+D8-24-EC   (hex)               Plenom A/S\r
+D824EC     (base 16)           Plenom A/S\r
+                               Pi 2, Soften\r
+                               Hinnerup  Favrskov  8382\r
+                               DK\r
+\r
+D0-16-F0   (hex)               IEEE Registration Authority\r
+D016F0     (base 16)           IEEE Registration Authority\r
+                               445 Hoes Lane\r
+                               Piscataway  NJ  08554\r
+                               US\r
+\r
 00-19-F0   (hex)               UNION MAN TECHNOLOGY CO.,LTD\r
 0019F0     (base 16)           UNION MAN TECHNOLOGY CO.,LTD\r
                                18F, HUAYANG TOWER,YANDAYI ROAD\r
@@ -199184,17 +199457,17 @@ A01C87     (base 16)                UNION MAN TECHNOLOGY CO.,LTD
                                Huizhou  Guangdong  516025\r
                                CN\r
 \r
-68-85-6A   (hex)               OuterLink Corporation\r
-68856A     (base 16)           OuterLink Corporation\r
-                               150 Baker Avenue Extension, Suite 302\r
-                               Concord  MA  01742\r
-                               US\r
+AC-12-8E   (hex)               Shanghai Baud Data Communication Co.,Ltd.\r
+AC128E     (base 16)           Shanghai Baud Data Communication Co.,Ltd.\r
+                               NO.123 JULI RD\r
+                               PUDONG ZHANGJIANG HIGH-TECH PARK  SHANGHAI  201203\r
+                               CN\r
 \r
-E4-12-89   (hex)               topsystem GmbH\r
-E41289     (base 16)           topsystem GmbH\r
-                               Krefelder Straße 201\r
-                               Aachen    52070\r
-                               DE\r
+64-E0-AB   (hex)               UNION MAN TECHNOLOGY CO.,LTD\r
+64E0AB     (base 16)           UNION MAN TECHNOLOGY CO.,LTD\r
+                               No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
+                               Huizhou  Guangdong  516025\r
+                               CN\r
 \r
 44-A3-C7   (hex)               zte corporation\r
 44A3C7     (base 16)           zte corporation\r
@@ -199202,29 +199475,41 @@ E41289     (base 16)                topsystem GmbH
                                shenzhen   guangdong  518057\r
                                CN\r
 \r
+AC-3D-94   (hex)               Arista Networks\r
+AC3D94     (base 16)           Arista Networks\r
+                               5453 Great America Parkway\r
+                               Santa Clara  CA  95054\r
+                               US\r
+\r
 30-E1-F1   (hex)               Intelbras\r
 30E1F1     (base 16)           Intelbras\r
                                BR 101, km 210, S/N°\r
                                São José  Santa Catarina  88104800\r
                                BR\r
 \r
-AC-3D-94   (hex)               Arista Networks\r
-AC3D94     (base 16)           Arista Networks\r
-                               5453 Great America Parkway\r
-                               Santa Clara  CA  95054\r
+3C-46-A1   (hex)               Ruckus Wireless\r
+3C46A1     (base 16)           Ruckus Wireless\r
+                               350 West Java Drive\r
+                               Sunnyvale  CA  94089\r
                                US\r
 \r
-CC-96-E5   (hex)               Dell Inc.\r
-CC96E5     (base 16)           Dell Inc.\r
-                               One Dell Way\r
-                               Round Rock   TX  78682\r
+64-8F-3E   (hex)               Cisco Systems, Inc\r
+648F3E     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
                                US\r
 \r
-AC-12-8E   (hex)               Shanghai Baud Data Communication Co.,Ltd.\r
-AC128E     (base 16)           Shanghai Baud Data Communication Co.,Ltd.\r
-                               NO.123 JULI RD\r
-                               PUDONG ZHANGJIANG HIGH-TECH PARK  SHANGHAI  201203\r
-                               CN\r
+CC-B6-C8   (hex)               Cisco Systems, Inc\r
+CCB6C8     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+6C-D6-E3   (hex)               Cisco Systems, Inc\r
+6CD6E3     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
 \r
 EC-ED-73   (hex)               Motorola Mobility LLC, a Lenovo Company\r
 ECED73     (base 16)           Motorola Mobility LLC, a Lenovo Company\r
@@ -199238,18 +199523,18 @@ EC2C49     (base 16)                NakaoLab, The University of Tokyo
                                Tokyo  Bunkyoku  113-0033\r
                                JP\r
 \r
-3C-46-A1   (hex)               Ruckus Wireless\r
-3C46A1     (base 16)           Ruckus Wireless\r
-                               350 West Java Drive\r
-                               Sunnyvale  CA  94089\r
-                               US\r
-\r
 A0-29-19   (hex)               Dell Inc.\r
 A02919     (base 16)           Dell Inc.\r
                                One Dell Way\r
                                Round Rock   TX  78682\r
                                US\r
 \r
+CC-96-E5   (hex)               Dell Inc.\r
+CC96E5     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock   TX  78682\r
+                               US\r
+\r
 2C-64-F6   (hex)               Wu Qi Technologies,Inc.\r
 2C64F6     (base 16)           Wu Qi Technologies,Inc.\r
                                14/F, 107 Middle Road, Xiantao Big Data Valley, Yubei District\r
@@ -199262,29 +199547,20 @@ A02919     (base 16)                Dell Inc.
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-64-8F-3E   (hex)               Cisco Systems, Inc\r
-648F3E     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
-                               US\r
-\r
-CC-B6-C8   (hex)               Cisco Systems, Inc\r
-CCB6C8     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
-                               US\r
+E8-8F-C4   (hex)               MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
+E88FC4     (base 16)           MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
+                               Buliding B,Bird Indusrtial Park No.999 Dacheng Road,Fenghua Zhejiang,China\r
+                               NingBo  ZheJiang  315500\r
+                               CN\r
 \r
-6C-D6-E3   (hex)               Cisco Systems, Inc\r
-6CD6E3     (base 16)           Cisco Systems, Inc\r
-                               80 West Tasman Drive\r
-                               San Jose  CA  94568\r
+AC-1A-3D   (hex)               Dell Inc.\r
+AC1A3D     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock   TX  78682\r
                                US\r
 \r
-E8-4C-4A   (hex)               Amazon Technologies Inc.\r
-E84C4A     (base 16)           Amazon Technologies Inc.\r
-                               P.O Box 8102 \r
-                               Reno  NV  89507\r
-                               US\r
+F4-9D-A7   (hex)               Private\r
+F49DA7     (base 16)           Private\r
 \r
 74-8F-4D   (hex)               duagon Germany GmbH\r
 748F4D     (base 16)           duagon Germany GmbH\r
@@ -199298,20 +199574,47 @@ E84C4A     (base 16)                Amazon Technologies Inc.
                                Nuremberg  Bavaria   90411\r
                                DE\r
 \r
-E8-8F-C4   (hex)               MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
-E88FC4     (base 16)           MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
-                               Buliding B,Bird Indusrtial Park No.999 Dacheng Road,Fenghua Zhejiang,China\r
-                               NingBo  ZheJiang  315500\r
+E8-4C-4A   (hex)               Amazon Technologies Inc.\r
+E84C4A     (base 16)           Amazon Technologies Inc.\r
+                               P.O Box 8102 \r
+                               Reno  NV  89507\r
+                               US\r
+\r
+C8-F2-25   (hex)               EM Microelectronic\r
+C8F225     (base 16)           EM Microelectronic\r
+                               Rue des Sors 3\r
+                               Marin-Epagnier  Neuchatel  2074\r
+                               CH\r
+\r
+78-53-0D   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+78530D     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
                                CN\r
 \r
-AC-1A-3D   (hex)               Dell Inc.\r
-AC1A3D     (base 16)           Dell Inc.\r
-                               One Dell Way\r
-                               Round Rock   TX  78682\r
-                               US\r
+78-5F-36   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+785F36     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
 \r
-F4-9D-A7   (hex)               Private\r
-F49DA7     (base 16)           Private\r
+FC-2C-FD   (hex)               dormakaba Canada Inc. - Keyscan\r
+FC2CFD     (base 16)           dormakaba Canada Inc. - Keyscan\r
+                               901 Burns Street East\r
+                               Whitby  Ontario  L1N 0E6\r
+                               CA\r
+\r
+4C-9B-63   (hex)               LG Innotek\r
+4C9B63     (base 16)           LG Innotek\r
+                               26, Hanamsandan 5beon-ro\r
+                               Gwangju  Gwangsan-gu  506-731\r
+                               KR\r
+\r
+C0-17-54   (hex)               Apple, Inc.\r
+C01754     (base 16)           Apple, Inc.\r
+                               1 Infinite Loop\r
+                               Cupertino  CA  95014\r
+                               US\r
 \r
 00-12-27   (hex)               Franklin Electric Co., Inc.\r
 001227     (base 16)           Franklin Electric Co., Inc.\r
@@ -199324,3 +199627,87 @@ BC3340     (base 16)         Cisco Meraki
                                500 Terry A. Francois Blvd\r
                                San Francisco    94158\r
                                US\r
+\r
+8C-02-CD   (hex)               FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+8C02CD     (base 16)           FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+                               19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
+                               FUZHOU  FUJIAN  350002\r
+                               CN\r
+\r
+94-7F-D8   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+947FD8     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+20-89-8A   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+20898A     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+48-45-CF   (hex)               LLC Proizvodstvennaya Kompania TransService\r
+4845CF     (base 16)           LLC Proizvodstvennaya Kompania TransService\r
+                               Ulitsa Podolskih Kursantov,  build. 3, of. 133\r
+                               Moscow  Moscow  117545\r
+                               RU\r
+\r
+FC-7A-58   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+FC7A58     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+18-AA-1E   (hex)               Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+18AA1E     (base 16)           Shenzhen Skyworth Digital  Technology  CO., Ltd\r
+                               4F,Block A, Skyworth?Building,\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+50-E5-38   (hex)               Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+50E538     (base 16)           Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+                               No.555 Qianmo Road \r
+                               Hangzhou  Zhejiang  310052\r
+                               CN\r
+\r
+E4-8E-BB   (hex)               Rockwell Automation\r
+E48EBB     (base 16)           Rockwell Automation\r
+                               1 Allen-Bradley Dr.\r
+                               Mayfield Heights  OH  44124-6118\r
+                               US\r
+\r
+54-F8-F0   (hex)               Tesla Inc\r
+54F8F0     (base 16)           Tesla Inc\r
+                               1 Tesla Road\r
+                               Austin  TX  78725\r
+                               US\r
+\r
+24-BF-74   (hex)               Hamamatsu Photonics K.K.\r
+24BF74     (base 16)           Hamamatsu Photonics K.K.\r
+                               1126-1, Ichino-cho, Higashi-ku\r
+                               Hamamatsu-City  Shizuoka-ken  435-8558\r
+                               JP\r
+\r
+FC-48-C9   (hex)               Yobiiq Intelligence B.V.\r
+FC48C9     (base 16)           Yobiiq Intelligence B.V.\r
+                               Bedrijfsweg 31\r
+                               Geleen  Limburg  6163CZ\r
+                               NL\r
+\r
+A0-66-36   (hex)               Intracom SA Telecom Solutions\r
+A06636     (base 16)           Intracom SA Telecom Solutions\r
+                               19.7 klm Marcopoulo Ave\r
+                               PEANIA  ATTIKI  19001\r
+                               GR\r
+\r
+64-1C-10   (hex)               Texas Instruments\r
+641C10     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+F4-AA-D0   (hex)               OHSUNG\r
+F4AAD0     (base 16)           OHSUNG\r
+                               335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA\r
+                               GUMI  GYEONG BUK  730-030\r
+                               KR\r
index b16f6285f8e6240e5359bbdb8ef2dd67040b0955..381171135922c77e3646a3792a806ed5c6c88db3 100644 (file)
@@ -5516,17 +5516,65 @@ D00000-DFFFFF     (base 16)             Sprintshield d.o.o.
                                Velika Gorica    10410\r
                                HR\r
 \r
+54-08-3B   (hex)               BHS Corrugated Maschinen- und Anlagenbau GmbH\r
+D00000-DFFFFF     (base 16)            BHS Corrugated Maschinen- und Anlagenbau GmbH\r
+                               Paul-Engel-Strasse 1\r
+                               Weiherhammer  Bavaria  92729\r
+                               DE\r
+\r
+54-08-3B   (hex)               FairPhone B.V.\r
+C00000-CFFFFF     (base 16)            FairPhone B.V.\r
+                               VanDiemenstraat 200\r
+                               Amsterdam    1013 CP\r
+                               NL\r
+\r
+54-08-3B   (hex)               Sinclair Technologies\r
+E00000-EFFFFF     (base 16)            Sinclair Technologies\r
+                               85 MARY ST\r
+                               AURORA  Ontario  L4G 6X5\r
+                               CA\r
+\r
+E0-3C-1C   (hex)               Semic Inc.\r
+500000-5FFFFF     (base 16)            Semic Inc.\r
+                               17F.-6, No. 79, Sec. 1, Xintai 5th Rd., Xizhi Dist.\r
+                               New Taipei City    22101\r
+                               TW\r
+\r
 54-08-3B   (hex)               Korea Bus Broadcasting\r
 B00000-BFFFFF     (base 16)            Korea Bus Broadcasting\r
                                7F, 24, Bangbaejungang-ro, Seocho-gu\r
                                Seoul    06684\r
                                KR\r
 \r
-E0-3C-1C   (hex)               Semic Inc.\r
-500000-5FFFFF     (base 16)            Semic Inc.\r
-                               17F.-6, No. 79, Sec. 1, Xintai 5th Rd., Xizhi Dist.\r
-                               New Taipei City  Select State  22101\r
-                               TW\r
+70-06-92   (hex)               SWIT Electronics Co.,Ltd\r
+B00000-BFFFFF     (base 16)            SWIT Electronics Co.,Ltd\r
+                               10 Hengtong Rd,Nanjing Economic Technological Development Zone\r
+                               Nanjing  Jiangsu  210038\r
+                               CN\r
+\r
+70-06-92   (hex)               Hangzhou Clounix Technology Limited\r
+600000-6FFFFF     (base 16)            Hangzhou Clounix Technology Limited\r
+                               Floor 12, Building 2, Zichen International Center, NO.39, Jincheng Road, Xiaoshan District\r
+                               Hangzhou  Zhejiang  311202\r
+                               CN\r
+\r
+70-06-92   (hex)               Fusiostor Technologies Private Limited\r
+400000-4FFFFF     (base 16)            Fusiostor Technologies Private Limited\r
+                               GALA NO.7, MUNERVA IND ESTATE, BISHAN UDYOG\r
+                               MUMBAI  Maharashtra  400080\r
+                               IN\r
+\r
+70-06-92   (hex)               Shenzhen Lingwei Technology Co., Ltd\r
+900000-9FFFFF     (base 16)            Shenzhen Lingwei Technology Co., Ltd\r
+                               No. 50-1, Minqing Road, Longhua District\r
+                               Shenzhen  Guangdong Province  518109\r
+                               CN\r
+\r
+70-06-92   (hex)               Scud (Fujian) Electronics Co.,Ltd\r
+200000-2FFFFF     (base 16)            Scud (Fujian) Electronics Co.,Ltd\r
+                               NO.98 ,EAST ROAD OF JIANGBIN ,MAWEI ZONE,FUZHOU\r
+                               FUZHOU    350000\r
+                               CN\r
 \r
 4C-4B-F9   (hex)               Shenzhen dingsheng technology co., LTD\r
 400000-4FFFFF     (base 16)            Shenzhen dingsheng technology co., LTD\r
@@ -10712,12 +10760,30 @@ E0-3C-1C   (hex)              Shikino High-Tech Co., Ltd.
                                Uozu-shi  TOYAMA  937-0041\r
                                JP\r
 \r
+54-08-3B   (hex)               Unicompute Technology Co.,Ltd.\r
+900000-9FFFFF     (base 16)            Unicompute Technology Co.,Ltd.\r
+                               Building 10, Tian Jian Lake AloT Industrial Park, No.173 Feng Xiang West Street? High-Tech Industrial Development Zone, \r
+                               ZhengZhou City    450066\r
+                               CN\r
+\r
 54-08-3B   (hex)               NAVITUS LT\r
 200000-2FFFFF     (base 16)            NAVITUS LT\r
                                Visoriu g. 2\r
                                Vilnius    08300\r
                                LT\r
 \r
+70-06-92   (hex)               Munters\r
+A00000-AFFFFF     (base 16)            Munters\r
+                               Hasivim 18\r
+                               Pethch Tikva  Israel  4959376\r
+                               IL\r
+\r
+70-06-92   (hex)               Skyware Protech Limited\r
+D00000-DFFFFF     (base 16)            Skyware Protech Limited\r
+                               3806A, Cable TV Tower, 9 Hoi Sing Road, Tsuen Wan\r
+                               Tsuen Wan    00000\r
+                               HK\r
+\r
 20-85-93   (hex)               UNILUMIN GROUP CO.,LTD\r
 300000-3FFFFF     (base 16)            UNILUMIN GROUP CO.,LTD\r
                                No.112 Yongfu Rd.,BaoanDistrict,\r
@@ -10982,9 +11048,6 @@ B0-FD-0B   (hex)                Vista Manufacturing
                                Elkhart  IN  46514\r
                                US\r
 \r
-8C-14-7D   (hex)               Private\r
-100000-1FFFFF     (base 16)            Private\r
-\r
 C8-2C-2B   (hex)               RF Engineering and Energy Resource\r
 300000-3FFFFF     (base 16)            RF Engineering and Energy Resource\r
                                4460 Commercial Ave.\r
@@ -16427,6 +16490,24 @@ E0-3C-1C   (hex)               Scangrip
                                Numazu  Shizuoka  410-0001\r
                                JP\r
 \r
+54-08-3B   (hex)               shenzhen HAIOT technology co.,ltd\r
+500000-5FFFFF     (base 16)            shenzhen HAIOT technology co.,ltd\r
+                               No 407 Building E zhongshan load, nanshan district,shenzhen city \r
+                               shenzhen  guangdong  518057\r
+                               CN\r
+\r
+8C-14-7D   (hex)               Schneider Electric - Triconex\r
+100000-1FFFFF     (base 16)            Schneider Electric - Triconex\r
+                               26561 Rancho Pkwy S\r
+                               LAKE FOREST  CA  92630\r
+                               US\r
+\r
+70-06-92   (hex)               Beijing Fortech Microsystems., Co., Ltd.\r
+100000-1FFFFF     (base 16)            Beijing Fortech Microsystems., Co., Ltd.\r
+                               Suite A3 502, Zhongguancun No. 1, No. 81 Beiqing Road, Haidian District\r
+                               Beijing    100084\r
+                               CN\r
+\r
 4C-4B-F9   (hex)               Shandong Linkotech Electronic Co., Ltd.\r
 600000-6FFFFF     (base 16)            Shandong Linkotech Electronic Co., Ltd.\r
                                22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone\r
@@ -21827,12 +21908,6 @@ E00000-EFFFFF     (base 16)            Saab Seaeye Ltd
                                Fareham  Hampshire  PO15 5SD\r
                                GB\r
 \r
-1C-A0-D3   (hex)               Private\r
-700000-7FFFFF     (base 16)            Private\r
-                               Omonoia Avenue\r
-                               Limassol  Cyprus  3045\r
-                               CY\r
-\r
 D0-16-F0   (hex)               Top Guard Technologies\r
 D00000-DFFFFF     (base 16)            Top Guard Technologies\r
                                9200 Corporate BlvdSuite 250\r
@@ -21875,6 +21950,30 @@ A00000-AFFFFF     (base 16)            Silex Ipari Automatizálási Zrt.
                                Budapest, IX.    1095\r
                                HU\r
 \r
+54-08-3B   (hex)               ASCS Sp. z o.o.\r
+700000-7FFFFF     (base 16)            ASCS Sp. z o.o.\r
+                               Zwirki i Wigury 65A\r
+                               Mikolow  Slask  43-190 Mikolow\r
+                               PL\r
+\r
+70-06-92   (hex)               ScoreBird, LLC\r
+C00000-CFFFFF     (base 16)            ScoreBird, LLC\r
+                               6001 Kenwood Drive\r
+                               Nashville  TN  37215\r
+                               US\r
+\r
+70-06-92   (hex)               JMA Wireless\r
+800000-8FFFFF     (base 16)            JMA Wireless\r
+                               140 Cortland Ave\r
+                               Syracuse  NY  13202\r
+                               US\r
+\r
+1C-A0-D3   (hex)               U-TX Technologies Ltd\r
+700000-7FFFFF     (base 16)            U-TX Technologies Ltd\r
+                               Omonoia Avenue\r
+                               Limassol  Cyprus  3045\r
+                               CY\r
+\r
 20-85-93   (hex)               Great Lite International\r
 700000-7FFFFF     (base 16)            Great Lite International\r
                                11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist.,\r
@@ -27448,3 +27547,21 @@ E0-3C-1C   (hex)               Ocamar Technologies (Shanghai) Co.,Ltd.
                                1307, building A4, workshop 2, LiLang International Jewelry Industrial Park, 31 Bulan Road, xialilang community, Nanwan street, Longgang District\r
                                Shenzhen  Guangdong  518112\r
                                CN\r
+\r
+70-06-92   (hex)               BOSSCCTV CO., LTD\r
+300000-3FFFFF     (base 16)            BOSSCCTV CO., LTD\r
+                               6F.-6, No. 22, Sec. 2, Keelung Rd., Xinyi Dist.\r
+                               Taipei City  Taiwan (R.O.C.)  11052\r
+                               TW\r
+\r
+70-06-92   (hex)               Techology, LLC\r
+000000-0FFFFF     (base 16)            Techology, LLC\r
+                               2335 S Ellis St\r
+                               Lakewood  CO  80228\r
+                               US\r
+\r
+70-06-92   (hex)               CANAAN CREATIVE CO.,LTD.\r
+500000-5FFFFF     (base 16)            CANAAN CREATIVE CO.,LTD.\r
+                               Building 1, Yard 1, No.81 Beiqing Road, Haidian District\r
+                               Beijing    100144\r
+                               CN\r
index 5f032c6b20c69b1323e394a571fc3917966293bb..75c27371eaabae902cd6288db7234391822018ee 100644 (file)
@@ -128,9 +128,6 @@ C7A000-C7AFFF     (base 16)         ENTEC Electric & Electronic Co., LTD.
                                Hwaseong-city  Gyungki-do  445-894\r
                                KR\r
 \r
-70-B3-D5   (hex)               Private\r
-6F4000-6F4FFF     (base 16)            Private\r
-\r
 70-B3-D5   (hex)               Guan Show Technologe Co., Ltd.\r
 1FC000-1FCFFF     (base 16)            Guan Show Technologe Co., Ltd.\r
                                No.127, Jianguo 1st Rd., Lingya Dist.\r
@@ -6182,18 +6179,18 @@ BC3000-BC3FFF     (base 16)             FoxIoT OÜ
                                Remscheid    42897\r
                                DE\r
 \r
-8C-1F-64   (hex)               Murata Manufacturing CO., Ltd.\r
-B14000-B14FFF     (base 16)            Murata Manufacturing CO., Ltd.\r
-                               4-3-8, Minatomirai, Nishi-ku\r
-                               Yokohama-shi  Kanagawa-ken  220-0012\r
-                               JP\r
-\r
 8C-1F-64   (hex)               CHASEO CONNECTOME\r
 744000-744FFF     (base 16)            CHASEO CONNECTOME\r
                                2floor, 14, Nambusunhwan-ro 378-gil\r
                                Gangnam-gu  seoul  06296\r
                                KR\r
 \r
+8C-1F-64   (hex)               Murata Manufacturing CO., Ltd.\r
+B14000-B14FFF     (base 16)            Murata Manufacturing CO., Ltd.\r
+                               4-3-8, Minatomirai, Nishi-ku\r
+                               Yokohama-shi  Kanagawa-ken  220-0012\r
+                               JP\r
+\r
 8C-1F-64   (hex)               ABB\r
 6D0000-6D0FFF     (base 16)            ABB\r
                                Fulachstrasse 150\r
@@ -6230,30 +6227,24 @@ DA6000-DA6FFF     (base 16)             Power Electronics Espana, S.L.
                                Zhunan Township  Miaoli County  35059\r
                                TW\r
 \r
-8C-1F-64   (hex)               Watchdog Systems\r
-251000-251FFF     (base 16)            Watchdog Systems\r
-                               334 W Weatherby Pl\r
-                               Chandler    85286\r
-                               US\r
-\r
 8C-1F-64   (hex)               Dacom West GmbH\r
 895000-895FFF     (base 16)            Dacom West GmbH\r
                                Schallbruch 19-21\r
                                Haan  NRW  42781\r
                                DE\r
 \r
+8C-1F-64   (hex)               Watchdog Systems\r
+251000-251FFF     (base 16)            Watchdog Systems\r
+                               334 W Weatherby Pl\r
+                               Chandler    85286\r
+                               US\r
+\r
 8C-1F-64   (hex)               KST technology\r
 F84000-F84FFF     (base 16)            KST technology\r
                                KST B/D 4-5, Wiryeseong-daero 12-gil\r
                                Songpa-gu  Seoul  05636\r
                                KR\r
 \r
-8C-1F-64   (hex)               UniTik Technology Co., Limited\r
-8E3000-8E3FFF     (base 16)            UniTik Technology Co., Limited\r
-                               7F.-3, No. 15, Lane  360, Sec. 1, Neihu Rd., Neihu Dist.,\r
-                               Taipei    114064\r
-                               TW\r
-\r
 8C-1F-64   (hex)               Soha Jin\r
 BF1000-BF1FFF     (base 16)            Soha Jin\r
                                North Campus, Wenzhou University\r
@@ -6272,11 +6263,11 @@ AFF000-AFFFFF     (base 16)             Qtechnology A/S
                                Padova    35127\r
                                IT\r
 \r
-8C-1F-64   (hex)               Lumiplan Duhamel\r
-A0D000-A0DFFF     (base 16)            Lumiplan Duhamel\r
-                               2 rue de l'industrie\r
-                               Domène  Isère  38420\r
-                               FR\r
+8C-1F-64   (hex)               UniTik Technology Co., Limited\r
+8E3000-8E3FFF     (base 16)            UniTik Technology Co., Limited\r
+                               7F.-3, No. 15, Lane  360, Sec. 1, Neihu Rd., Neihu Dist.,\r
+                               Taipei    114064\r
+                               TW\r
 \r
 8C-1F-64   (hex)               DB SAS\r
 77B000-77BFFF     (base 16)            DB SAS\r
@@ -6296,18 +6287,24 @@ A0D000-A0DFFF     (base 16)             Lumiplan Duhamel
                                 Chuo-ku  Tokyo  1030011\r
                                JP\r
 \r
-8C-1F-64   (hex)               Landis+Gyr Equipamentos de Medição Ltda\r
-293000-293FFF     (base 16)            Landis+Gyr Equipamentos de Medição Ltda\r
-                               Hasdrubal Bellegard, 400, CIC\r
-                               Curitiba  Paraná  81460-120\r
-                               BR\r
-\r
 8C-1F-64   (hex)               AW-SOM Technologies LLC\r
 0F4000-0F4FFF     (base 16)            AW-SOM Technologies LLC\r
                                1284 SOM Center Rd. -Suite 145\r
                                Mayfield Heights  OH  44124-2048\r
                                US\r
 \r
+8C-1F-64   (hex)               Lumiplan Duhamel\r
+A0D000-A0DFFF     (base 16)            Lumiplan Duhamel\r
+                               2 rue de l'industrie\r
+                               Domène  Isère  38420\r
+                               FR\r
+\r
+8C-1F-64   (hex)               Landis+Gyr Equipamentos de Medição Ltda\r
+293000-293FFF     (base 16)            Landis+Gyr Equipamentos de Medição Ltda\r
+                               Hasdrubal Bellegard, 400, CIC\r
+                               Curitiba  Paraná  81460-120\r
+                               BR\r
+\r
 8C-1F-64   (hex)               MOSCA Elektronik und Antriebstechnik GmbH\r
 803000-803FFF     (base 16)            MOSCA Elektronik und Antriebstechnik GmbH\r
                                Albert-Einstein-Straße 5\r
@@ -6362,12 +6359,6 @@ A31000-A31FFF     (base 16)              Zing Communications Inc
                                Offenau  Baden-Wuerttemberg  74254\r
                                DE\r
 \r
-8C-1F-64   (hex)               PuS GmbH und Co. KG\r
-EE1000-EE1FFF     (base 16)            PuS GmbH und Co. KG\r
-                               Hainstr. 13\r
-                               Gera  Germany  07545\r
-                               DE\r
-\r
 8C-1F-64   (hex)               Primalucelab isrl\r
 59A000-59AFFF     (base 16)            Primalucelab isrl\r
                                VIA BRENTELLA 53/7\r
@@ -6386,6 +6377,12 @@ BDB000-BDBFFF     (base 16)              Cardinal Scales Manufacturing Co
                                San Giovanni Bianco  Bergamo  24015\r
                                IT\r
 \r
+8C-1F-64   (hex)               PuS GmbH und Co. KG\r
+EE1000-EE1FFF     (base 16)            PuS GmbH und Co. KG\r
+                               Hainstr. 13\r
+                               Gera  Germany  07545\r
+                               DE\r
+\r
 8C-1F-64   (hex)               Albotronic\r
 F24000-F24FFF     (base 16)            Albotronic\r
                                Bunsenstr. 3\r
@@ -6404,6 +6401,18 @@ CC2000-CC2FFF     (base 16)              TOYOGIKEN CO.,LTD.
                                Okaya  Nagano  3940081\r
                                JP\r
 \r
+70-B3-D5   (hex)               WDI Wise Device Inc.\r
+6F4000-6F4FFF     (base 16)            WDI Wise Device Inc.\r
+                               135 west beaver creek rd unit 2\r
+                               Richmond hill   Ontario  L4B 1l2\r
+                               CA\r
+\r
+8C-1F-64   (hex)               i2s\r
+286000-286FFF     (base 16)            i2s\r
+                               28 Rue Jean Perrin\r
+                               France    33600\r
+                               FR\r
+\r
 70-B3-D5   (hex)               EVCO SPA\r
 A80000-A80FFF     (base 16)            EVCO SPA\r
                                VIA FELTRE N. 81\r
@@ -12464,18 +12473,18 @@ A9E000-A9EFFF     (base 16)           Optimum Instruments Inc.
                                Waltham  MA  02453\r
                                US\r
 \r
-8C-1F-64   (hex)               ANDA TELECOM PVT LTD\r
-406000-406FFF     (base 16)            ANDA TELECOM PVT LTD\r
-                               E-36 Amar Colony, Lajpat Nagar, New Delhi\r
-                               New Delhi  Delhi  110024\r
-                               IN\r
-\r
 8C-1F-64   (hex)               LYNKX\r
 EE6000-EE6FFF     (base 16)            LYNKX\r
                                776 route du balcon\r
                                Les Adrets    38190\r
                                FR\r
 \r
+8C-1F-64   (hex)               ANDA TELECOM PVT LTD\r
+406000-406FFF     (base 16)            ANDA TELECOM PVT LTD\r
+                               E-36 Amar Colony, Lajpat Nagar, New Delhi\r
+                               New Delhi  Delhi  110024\r
+                               IN\r
+\r
 8C-1F-64   (hex)               Chakra Technology Ltd\r
 2BB000-2BBFFF     (base 16)            Chakra Technology Ltd\r
                                7F, NO. 93, SHUEI YUAN RD.\r
@@ -12494,23 +12503,17 @@ EE6000-EE6FFF     (base 16)           LYNKX
                                Warsaw  Mazovia  02-495\r
                                PL\r
 \r
-8C-1F-64   (hex)               AI-BLOX\r
-3B7000-3B7FFF     (base 16)            AI-BLOX\r
-                               Ikaroslaan 1\r
-                               Zaventem    1930\r
-                               BE\r
-\r
 8C-1F-64   (hex)               Header Rhyme\r
 9C0000-9C0FFF     (base 16)            Header Rhyme\r
                                C401, 410, Jeongseojin-ro\r
                                Incheon  Incheon  22689\r
                                KR\r
 \r
-8C-1F-64   (hex)               HomyHub SL\r
-B65000-B65FFF     (base 16)            HomyHub SL\r
-                               Sierra de Atapuerca 13Correos Labs\r
-                               MADRID  Madrid  28050\r
-                               ES\r
+8C-1F-64   (hex)               AI-BLOX\r
+3B7000-3B7FFF     (base 16)            AI-BLOX\r
+                               Ikaroslaan 1\r
+                               Zaventem    1930\r
+                               BE\r
 \r
 8C-1F-64   (hex)               Wende Tan\r
 691000-691FFF     (base 16)            Wende Tan\r
@@ -12518,11 +12521,11 @@ B65000-B65FFF     (base 16)           HomyHub SL
                                Beijing    100084\r
                                CN\r
 \r
-8C-1F-64   (hex)               Tunstall A/S\r
-C59000-C59FFF     (base 16)            Tunstall A/S\r
-                               Niels Bohrs vej 42\r
-                               Stilling  Skanderborg  8660\r
-                               DK\r
+8C-1F-64   (hex)               HomyHub SL\r
+B65000-B65FFF     (base 16)            HomyHub SL\r
+                               Sierra de Atapuerca 13Correos Labs\r
+                               MADRID  Madrid  28050\r
+                               ES\r
 \r
 8C-1F-64   (hex)               CI SYSTEMS ISRAEL LTD\r
 9FB000-9FBFFF     (base 16)            CI SYSTEMS ISRAEL LTD\r
@@ -12530,10 +12533,10 @@ C59000-C59FFF     (base 16)           Tunstall A/S
                                 Migdal HaEmek    2306990\r
                                IL\r
 \r
-8C-1F-64   (hex)               Embeddded Plus Plus\r
-62D000-62DFFF     (base 16)            Embeddded Plus Plus\r
-                               Filmbyen 23, 2. tv.\r
-                               Aarhus C    8000\r
+8C-1F-64   (hex)               Tunstall A/S\r
+C59000-C59FFF     (base 16)            Tunstall A/S\r
+                               Niels Bohrs vej 42\r
+                               Stilling  Skanderborg  8660\r
                                DK\r
 \r
 8C-1F-64   (hex)               XTIA Ltd.\r
@@ -12542,29 +12545,29 @@ A5E000-A5EFFF     (base 16)           XTIA Ltd.
                                Shinagawa-Ku  Tokyo  140-0002\r
                                JP\r
 \r
+8C-1F-64   (hex)               Embeddded Plus Plus\r
+62D000-62DFFF     (base 16)            Embeddded Plus Plus\r
+                               Filmbyen 23, 2. tv.\r
+                               Aarhus C    8000\r
+                               DK\r
+\r
 8C-1F-64   (hex)               Nuphoton Technologies\r
 FDC000-FDCFFF     (base 16)            Nuphoton Technologies\r
                                41610 CORNING PLACE\r
                                MURRIETA  CA  92562\r
                                US\r
 \r
-8C-1F-64   (hex)               Potter Electric Signal Co. LLC\r
-CC5000-CC5FFF     (base 16)            Potter Electric Signal Co. LLC\r
-                               1609 Park 370 Place\r
-                               Hazelwood  MO  63042\r
-                               US\r
-\r
 8C-1F-64   (hex)               Alpha Bridge Technologies Private Limited\r
 20E000-20EFFF     (base 16)            Alpha Bridge Technologies Private Limited\r
                                T5-1001, Parsvnath Green Ville, Sector 48 , Sohna Road \r
                                Gurgaon  Haryana  122018\r
                                IN\r
 \r
-8C-1F-64   (hex)               LINEAGE POWER PVT LTD.,\r
-7DC000-7DCFFF     (base 16)            LINEAGE POWER PVT LTD.,\r
-                               30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD\r
-                               BANGALORE  KARNATAKA  560074\r
-                               IN\r
+8C-1F-64   (hex)               Potter Electric Signal Co. LLC\r
+CC5000-CC5FFF     (base 16)            Potter Electric Signal Co. LLC\r
+                               1609 Park 370 Place\r
+                               Hazelwood  MO  63042\r
+                               US\r
 \r
 8C-1F-64   (hex)               Monnit Corporation\r
 ECF000-ECFFFF     (base 16)            Monnit Corporation\r
@@ -12572,6 +12575,12 @@ ECF000-ECFFFF     (base 16)            Monnit Corporation
                                Kaysville  UT  84037\r
                                US\r
 \r
+8C-1F-64   (hex)               LINEAGE POWER PVT LTD.,\r
+7DC000-7DCFFF     (base 16)            LINEAGE POWER PVT LTD.,\r
+                               30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD\r
+                               BANGALORE  KARNATAKA  560074\r
+                               IN\r
+\r
 8C-1F-64   (hex)               Gnewtek photoelectric technology Ltd.\r
 D98000-D98FFF     (base 16)            Gnewtek photoelectric technology Ltd.\r
                                No. 238-15, Ln. 220, Sec. 1, Minyi Rd., Wugu Dist., New Taipei City 248 , Taiwan (R.O.C.)\r
@@ -12584,18 +12593,6 @@ D98000-D98FFF     (base 16)            Gnewtek photoelectric technology Ltd.
                                Innsbruck    6020\r
                                AT\r
 \r
-8C-1F-64   (hex)               Sanwa Supply Inc.\r
-06B000-06BFFF     (base 16)            Sanwa Supply Inc.\r
-                               1-10-1 Tamachi Kita-ku\r
-                               Okayama  Okayama Prefecture  700-0825\r
-                               JP\r
-\r
-70-B3-D5   (hex)               TIAMA\r
-8BA000-8BAFFF     (base 16)            TIAMA\r
-                               215 Chemin du Grand Revoyet\r
-                               Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
-                               FR\r
-\r
 8C-1F-64   (hex)               TIAMA\r
 63B000-63BFFF     (base 16)            TIAMA\r
                                215 Chemin du Grand Revoyet\r
@@ -12608,18 +12605,24 @@ D98000-D98FFF     (base 16)           Gnewtek photoelectric technology Ltd.
                                Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
                                FR\r
 \r
-8C-1F-64   (hex)               Bipom Electronics, Inc.\r
-211000-211FFF     (base 16)            Bipom Electronics, Inc.\r
-                               9788 Clarewood Dr. 306\r
-                               Houston  TX  77036\r
-                               US\r
-\r
 70-B3-D5   (hex)               TIAMA\r
 4BC000-4BCFFF     (base 16)            TIAMA\r
                                215 Chemin du Grand Revoyet\r
                                Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
                                FR\r
 \r
+70-B3-D5   (hex)               TIAMA\r
+8BA000-8BAFFF     (base 16)            TIAMA\r
+                               215 Chemin du Grand Revoyet\r
+                               Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
+                               FR\r
+\r
+8C-1F-64   (hex)               Sanwa Supply Inc.\r
+06B000-06BFFF     (base 16)            Sanwa Supply Inc.\r
+                               1-10-1 Tamachi Kita-ku\r
+                               Okayama  Okayama Prefecture  700-0825\r
+                               JP\r
+\r
 8C-1F-64   (hex)               Planet Innovation Products Inc.\r
 978000-978FFF     (base 16)            Planet Innovation Products Inc.\r
                                80 Technology Dr.\r
@@ -12632,6 +12635,12 @@ F5F000-F5FFFF     (base 16)            TR7 Siber Savunma A.S.
                                Ankara  TR  06800\r
                                TR\r
 \r
+8C-1F-64   (hex)               Bipom Electronics, Inc.\r
+211000-211FFF     (base 16)            Bipom Electronics, Inc.\r
+                               9788 Clarewood Dr. 306\r
+                               Houston  TX  77036\r
+                               US\r
+\r
 8C-1F-64   (hex)               Adasky Ltd.\r
 71B000-71BFFF     (base 16)            Adasky Ltd.\r
                                7 Hamada Street\r
@@ -12662,18 +12671,66 @@ D51000-D51FFF     (base 16)           ZIGEN Lighting Solution co., ltd.
                                Higashihiroshima  Hiroshima  7390144\r
                                JP\r
 \r
+8C-1F-64   (hex)               Grossenbacher Systeme AG\r
+8DF000-8DFFFF     (base 16)            Grossenbacher Systeme AG\r
+                               Spinnereistrasse 10\r
+                               St. Gallen    9008\r
+                               CH\r
+\r
+8C-1F-64   (hex)               Shenyang Taihua Technology Co., Ltd.\r
+32B000-32BFFF     (base 16)            Shenyang Taihua Technology Co., Ltd.\r
+                               No. 33-48, Quanyun Fifth Road, Hunnan District\r
+                               Shenyang City  Liaoning Province  110179\r
+                               CN\r
+\r
+8C-1F-64   (hex)               Sicon srl\r
+907000-907FFF     (base 16)            Sicon srl\r
+                               Via Sila 1/3\r
+                               Isola Vicentina  Vicenza  36033\r
+                               IT\r
+\r
 8C-1F-64   (hex)               YUYAMA MFG Co.,Ltd\r
 D42000-D42FFF     (base 16)            YUYAMA MFG Co.,Ltd\r
                                1-4-30\r
                                MEISHINGUCHI,TOYONAKA  OSAKA  561-0841\r
                                JP\r
 \r
-8C-1F-64   (hex)               Grossenbacher Systeme AG\r
-8DF000-8DFFFF     (base 16)            Grossenbacher Systeme AG\r
-                               Spinnereistrasse 10\r
-                               St. Gallen    9008\r
+8C-1F-64   (hex)               Hiwin Mikrosystem Corp.\r
+423000-423FFF     (base 16)            Hiwin Mikrosystem Corp.\r
+                               NO 6 JINGKE CENTRAL RD  TAICHUNG CITY TAIWAN 40841\r
+                               TAICHUNG    40841\r
+                               TW\r
+\r
+8C-1F-64   (hex)               AMETEK CTS GMBH\r
+D21000-D21FFF     (base 16)            AMETEK CTS GMBH\r
+                               Sternenhofstrasse 15\r
+                               Reinach  BL  4153\r
                                CH\r
 \r
+8C-1F-64   (hex)               3D perception AS\r
+A81000-A81FFF     (base 16)            3D perception AS\r
+                               Nye Vakas vei 14\r
+                               Hvalstad    1395\r
+                               NO\r
+\r
+8C-1F-64   (hex)               Power Electronics Espana, S.L.\r
+0D8000-0D8FFF     (base 16)            Power Electronics Espana, S.L.\r
+                               C/ Leonardo Da Vinci, 24-26\r
+                               Paterna  Valencia  46980\r
+                               ES\r
+\r
+8C-1F-64   (hex)               joint analytical systems GmbH\r
+31B000-31BFFF     (base 16)            joint analytical systems GmbH\r
+                               Carl-Zeiss-Str. 49\r
+                               Moers  NRW  47445\r
+                               DE\r
+\r
+8C-1F-64   (hex)               Midlands Technical Co., Ltd.\r
+DD4000-DD4FFF     (base 16)            Midlands Technical Co., Ltd.\r
+                               1-29-4 5F Takadanobaba\r
+                               shinjyuku-ku  Tokyo  169-0075\r
+                               JP\r
+\r
 70-B3-D5   (hex)               System West dba ICS Electronics\r
 E06000-E06FFF     (base 16)            System West dba ICS Electronics\r
                                7034 Commerce Circle Suite A\r
@@ -18677,6 +18734,12 @@ AF5000-AF5FFF     (base 16)            SANMINA ISRAEL MEDICAL SYSTEMS LTD
                                Ried  Bavaria  86510\r
                                DE\r
 \r
+8C-1F-64   (hex)               Sicon srl\r
+187000-187FFF     (base 16)            Sicon srl\r
+                               Via Sila 1/3\r
+                               Isola Vicentina  Vicenza  36033\r
+                               IT\r
+\r
 8C-1F-64   (hex)               DAVE SRL\r
 9AB000-9ABFFF     (base 16)            DAVE SRL\r
                                VIA TALPONEDO 29/A\r
@@ -18695,12 +18758,6 @@ C52000-C52FFF     (base 16)            Invendis Technologies India Pvt Ltd
                                Schaffhausen    8200\r
                                CH\r
 \r
-8C-1F-64   (hex)               Sicon srl\r
-187000-187FFF     (base 16)            Sicon srl\r
-                               Via Sila 1/3\r
-                               Isola Vicentina  Vicenza  36033\r
-                               IT\r
-\r
 8C-1F-64   (hex)               ComVetia AG\r
 E86000-E86FFF     (base 16)            ComVetia AG\r
                                Wittenwilerstrasse 31\r
@@ -18731,18 +18788,18 @@ AFD000-AFDFFF     (base 16)           Universal Robots A/S
                                Pretoria  Gauteng  0182\r
                                ZA\r
 \r
-8C-1F-64   (hex)               Orbital Astronautics Ltd\r
-369000-369FFF     (base 16)            Orbital Astronautics Ltd\r
-                               Atlas Building, Harwell Campus\r
-                               Didcot  Oxfordshire  OX11 0QX\r
-                               GB\r
-\r
 8C-1F-64   (hex)               XIAMEN ZHIXIAOJIN INTELLIGENT TECHNOLOGY CO., LTD\r
 38C000-38CFFF     (base 16)            XIAMEN ZHIXIAOJIN INTELLIGENT TECHNOLOGY CO., LTD\r
                                8th Floor, 99-4, Zhigu Dong Yi Road, Xike Town, Tong 'an District\r
                                Xiamen  Fujian  361100\r
                                CN\r
 \r
+8C-1F-64   (hex)               Orbital Astronautics Ltd\r
+369000-369FFF     (base 16)            Orbital Astronautics Ltd\r
+                               Atlas Building, Harwell Campus\r
+                               Didcot  Oxfordshire  OX11 0QX\r
+                               GB\r
+\r
 8C-1F-64   (hex)               Technology for Energy Corp\r
 9E2000-9E2FFF     (base 16)            Technology for Energy Corp\r
                                10737 Lexington Dr\r
@@ -18905,12 +18962,6 @@ F50000-F50FFF     (base 16)            Vigor Electric Corp.
                                Danshui Dist.  New Taipei City  25152\r
                                TW\r
 \r
-8C-1F-64   (hex)               Zaruc Tecnologia LTDA\r
-BB3000-BB3FFF     (base 16)            Zaruc Tecnologia LTDA\r
-                               Rua Afonso Arinos Melo Franco, 181, Parque Residencial Laranjeiras\r
-                               Serra  Espírito Santo  29165-491\r
-                               BR\r
-\r
 70-B3-D5   (hex)               RF Code\r
 ADB000-ADBFFF     (base 16)            RF Code\r
                                9229 Waterford Centre Blvd #500\r
@@ -18923,6 +18974,12 @@ ADB000-ADBFFF     (base 16)            RF Code
                                Kfar Saba    4464312\r
                                IL\r
 \r
+8C-1F-64   (hex)               Zaruc Tecnologia LTDA\r
+BB3000-BB3FFF     (base 16)            Zaruc Tecnologia LTDA\r
+                               Rua Afonso Arinos Melo Franco, 181, Parque Residencial Laranjeiras\r
+                               Serra  Espírito Santo  29165-491\r
+                               BR\r
+\r
 70-B3-D5   (hex)               Exascend, Inc.\r
 851000-851FFF     (base 16)            Exascend, Inc.\r
                                530 Lawrence Expy., #416\r
@@ -18947,30 +19004,66 @@ C85000-C85FFF     (base 16)           Potter Electric Signal Co. LLC
                                Hazelwood  MO  63042\r
                                US\r
 \r
-8C-1F-64   (hex)               CubeWorks, Inc.\r
-88E000-88EFFF     (base 16)            CubeWorks, Inc.\r
-                               1600 Huron ParkwayOFC 520-2364\r
-                               Ann Arbor  MI  48109\r
-                               US\r
-\r
 8C-1F-64   (hex)               Scenario Automation\r
 E10000-E10FFF     (base 16)            Scenario Automation\r
                                Rua Paulo Elias, 216\r
                                São Carlos  São Paulo  13564400\r
                                BR\r
 \r
+8C-1F-64   (hex)               CubeWorks, Inc.\r
+88E000-88EFFF     (base 16)            CubeWorks, Inc.\r
+                               1600 Huron ParkwayOFC 520-2364\r
+                               Ann Arbor  MI  48109\r
+                               US\r
+\r
 8C-1F-64   (hex)               M-Pulse GmbH & Co.KG\r
 18B000-18BFFF     (base 16)            M-Pulse GmbH & Co.KG\r
                                Haunerbusch110\r
                                Kierspe  NRW  58566\r
                                DE\r
 \r
+8C-1F-64   (hex)               Bitmapper Integration Technologies Private Limited\r
+84A000-84AFFF     (base 16)            Bitmapper Integration Technologies Private Limited\r
+                               Shewale Centre A, Survey No. 22/2 CTS No 4691, 4889, 4990\r
+                               Pune  Maharashtra  411018\r
+                               IN\r
+\r
+8C-1F-64   (hex)               ARKRAY,Inc.Kyoto Laboratory\r
+CB7000-CB7FFF     (base 16)            ARKRAY,Inc.Kyoto Laboratory\r
+                               Kamigyo-ku Gansui-cho 59 Yousuien-nai\r
+                               Kyoto  Kyoto-fu  602-0008\r
+                               JP\r
+\r
+8C-1F-64   (hex)               EA Elektro-Automatik\r
+E92000-E92FFF     (base 16)            EA Elektro-Automatik\r
+                               Helmholtzstraße 31-37\r
+                               Viersen  Nordrhein-Westfalen  41747\r
+                               DE\r
+\r
 8C-1F-64   (hex)               EIDOS s.r.l.\r
 99E000-99EFFF     (base 16)            EIDOS s.r.l.\r
                                via dell'Industria, 11 Z.I. Fontaneto \r
                                CHIERI   Turin  10023\r
                                IT\r
 \r
+8C-1F-64   (hex)               Nilfisk Food\r
+64E000-64EFFF     (base 16)            Nilfisk Food\r
+                               Blytækkervej 2\r
+                               Aalborg    9000\r
+                               DK\r
+\r
+8C-1F-64   (hex)               Gamber-Johnson LLC\r
+CB5000-CB5FFF     (base 16)            Gamber-Johnson LLC\r
+                               5001 Joerns Dr\r
+                               Stevens Point  WI  54481\r
+                               US\r
+\r
+8C-1F-64   (hex)               Rax-Tech International\r
+A77000-A77FFF     (base 16)            Rax-Tech International\r
+                               5th floor, 5/391 Kaleeswari towerTambaram-Velachery Main road, Medavakkam\r
+                               Chennai  Tamil Nadu  600100\r
+                               IN\r
+\r
 70-B3-D5   (hex)               YUYAMA MFG Co.,Ltd\r
 BBB000-BBBFFF     (base 16)            YUYAMA MFG Co.,Ltd\r
                                3-3-1\r
@@ -23669,12 +23762,6 @@ B14000-B14FFF     (base 16)            Pantherun Technologies Pvt Ltd
                                Bangalore  Karnataka  560038\r
                                IN\r
 \r
-70-B3-D5   (hex)               Liberator Pty Ltd\r
-561000-561FFF     (base 16)            Liberator Pty Ltd\r
-                               265?Gilbert Street\r
-                               Adelaide     SA 5000\r
-                               AU\r
-\r
 70-B3-D5   (hex)               EASTERN SCIENCE & TECHNOLOGY CO., LTD\r
 2DF000-2DFFFF     (base 16)            EASTERN SCIENCE & TECHNOLOGY CO., LTD\r
                                6F.,No.963, Zhongzheng Rd, Zhonghe Dist.\r
@@ -25064,12 +25151,6 @@ A9C000-A9CFFF     (base 16)            Upstart Power
                                Dinkelsbuehl  Bavaria  91550\r
                                DE\r
 \r
-8C-1F-64   (hex)               EPC Energy Inc\r
-C51000-C51FFF     (base 16)            EPC Energy Inc\r
-                               780 Montague Expy, Building 1, Suite 101\r
-                               San Jose  CA  95131\r
-                               US\r
-\r
 8C-1F-64   (hex)               Flextronics International Kft\r
 07A000-07AFFF     (base 16)            Flextronics International Kft\r
                                38. Zrinyi Str.\r
@@ -25082,6 +25163,12 @@ AC3000-AC3FFF     (base 16)            WAVES SYSTEM
                                Sainte Luce Sur Loire  Loire Atlantique  44980\r
                                FR\r
 \r
+8C-1F-64   (hex)               EPC Energy Inc\r
+C51000-C51FFF     (base 16)            EPC Energy Inc\r
+                               780 Montague Expy, Building 1, Suite 101\r
+                               San Jose  CA  95131\r
+                               US\r
+\r
 8C-1F-64   (hex)               TMY TECHNOLOGY INC.\r
 882000-882FFF     (base 16)            TMY TECHNOLOGY INC.\r
                                Rm. E, 3F., No. 3, Yuandong Rd., Banqiao Dist., \r
@@ -25136,18 +25223,6 @@ A83000-A83FFF     (base 16)            EkspertStroyProekt
                                Moscow    129344\r
                                RU\r
 \r
-8C-1F-64   (hex)               Pixus Technologies Inc.\r
-E12000-E12FFF     (base 16)            Pixus Technologies Inc.\r
-                               50 Bathurst Dr., Unit 6\r
-                               Waterloo  Ontario  N2V 2C5\r
-                               CA\r
-\r
-8C-1F-64   (hex)               Bobeesc Co.\r
-DFB000-DFBFFF     (base 16)            Bobeesc Co.\r
-                               100, Nonggongdanji-gil, Sokcho-si, Gangwon-do, Republic of Korea\r
-                               sokcho  gangwon  24899\r
-                               KR\r
-\r
 8C-1F-64   (hex)               Idneo Technologies S.A.U.\r
 8F6000-8F6FFF     (base 16)            Idneo Technologies S.A.U.\r
                                Carrer de Dalt, 3\r
@@ -25160,24 +25235,36 @@ DFB000-DFBFFF     (base 16)           Bobeesc Co.
                                MONTREAL  Quebec  H3C 2G9\r
                                CA\r
 \r
+8C-1F-64   (hex)               Bobeesc Co.\r
+DFB000-DFBFFF     (base 16)            Bobeesc Co.\r
+                               100, Nonggongdanji-gil, Sokcho-si, Gangwon-do, Republic of Korea\r
+                               sokcho  gangwon  24899\r
+                               KR\r
+\r
+8C-1F-64   (hex)               Pixus Technologies Inc.\r
+E12000-E12FFF     (base 16)            Pixus Technologies Inc.\r
+                               50 Bathurst Dr., Unit 6\r
+                               Waterloo  Ontario  N2V 2C5\r
+                               CA\r
+\r
 8C-1F-64   (hex)               InfraChen Technology Co., Ltd.\r
 0BB000-0BBFFF     (base 16)            InfraChen Technology Co., Ltd.\r
                                14F., No. 90, Xingde Rd., Sanchong Dist.\r
                                New Taipei City    24158\r
                                TW\r
 \r
-8C-1F-64   (hex)               Solid State Supplies Ltd\r
-43D000-43DFFF     (base 16)            Solid State Supplies Ltd\r
-                               Ravensbank Business ParkHedera Road\r
-                               Redditch    B98 9EY\r
-                               GB\r
-\r
 8C-1F-64   (hex)               ALZAJEL MODERN TELECOMMUNICATION\r
 FE9000-FE9FFF     (base 16)            ALZAJEL MODERN TELECOMMUNICATION\r
                                BOX: 3932\r
                                RUWI  MUSCAT  112\r
                                OM\r
 \r
+8C-1F-64   (hex)               Solid State Supplies Ltd\r
+43D000-43DFFF     (base 16)            Solid State Supplies Ltd\r
+                               Ravensbank Business ParkHedera Road\r
+                               Redditch    B98 9EY\r
+                               GB\r
+\r
 8C-1F-64   (hex)               inomatic GmbH\r
 12E000-12EFFF     (base 16)            inomatic GmbH\r
                                Karl-Braun-Straße 12\r
@@ -25190,6 +25277,12 @@ FE9000-FE9FFF     (base 16)            ALZAJEL MODERN TELECOMMUNICATION
                                Fukuoka-shi  Fukuoka  8120015\r
                                JP\r
 \r
+8C-1F-64   (hex)               miniDSP\r
+4AF000-4AFFFF     (base 16)            miniDSP\r
+                               Unit 307, 13 Wang Hoi Road\r
+                               Kowloon Bay  Kowloon  na\r
+                               HK\r
+\r
 8C-1F-64   (hex)               Enerthing GmbH\r
 8D0000-8D0FFF     (base 16)            Enerthing GmbH\r
                                An der Schusterinsel 3a\r
@@ -25208,18 +25301,6 @@ FE9000-FE9FFF     (base 16)            ALZAJEL MODERN TELECOMMUNICATION
                                Shenzhen  Guangdong  518108\r
                                CN\r
 \r
-8C-1F-64   (hex)               miniDSP\r
-4AF000-4AFFFF     (base 16)            miniDSP\r
-                               Unit 307, 13 Wang Hoi Road\r
-                               Kowloon Bay  Kowloon  na\r
-                               HK\r
-\r
-8C-1F-64   (hex)               Shanghai Sizhong Information Technology Co., Ltd\r
-9CB000-9CBFFF     (base 16)            Shanghai Sizhong Information Technology Co., Ltd\r
-                               Room 402 Building 13 No.518 XinZhuan Road Caohejing Hi-tech Park,Xinqiao Town?SongJiang District,ShangHai\r
-                               Shanghai  Shanghai  201612\r
-                               CN\r
-\r
 8C-1F-64   (hex)               VA SYD\r
 C1E000-C1EFFF     (base 16)            VA SYD\r
                                Box 191\r
@@ -25238,24 +25319,18 @@ C1E000-C1EFFF     (base 16)           VA SYD
                                Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
                                FR\r
 \r
+8C-1F-64   (hex)               Shanghai Sizhong Information Technology Co., Ltd\r
+9CB000-9CBFFF     (base 16)            Shanghai Sizhong Information Technology Co., Ltd\r
+                               Room 402 Building 13 No.518 XinZhuan Road Caohejing Hi-tech Park,Xinqiao Town?SongJiang District,ShangHai\r
+                               Shanghai  Shanghai  201612\r
+                               CN\r
+\r
 70-B3-D5   (hex)               TIAMA\r
 C4A000-C4AFFF     (base 16)            TIAMA\r
                                215 Chemin du Grand Revoyet\r
                                Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
                                FR\r
 \r
-8C-1F-64   (hex)               ard sa\r
-550000-550FFF     (base 16)            ard sa\r
-                               Micropolis Bat Clematis\r
-                               Gap  France  05000\r
-                               FR\r
-\r
-8C-1F-64   (hex)               Beijing Yahong Century Technology Co., Ltd\r
-FD7000-FD7FFF     (base 16)            Beijing Yahong Century Technology Co., Ltd\r
-                               Floor 3, Building 2, Yard 3, Gaolizhang Road, Haidian District\r
-                               Beijing  Beijing  100095\r
-                               CN\r
-\r
 70-B3-D5   (hex)               Planet Innovation Products Inc.\r
 C75000-C75FFF     (base 16)            Planet Innovation Products Inc.\r
                                80 Technology Dr.\r
@@ -25268,11 +25343,17 @@ C75000-C75FFF     (base 16)           Planet Innovation Products Inc.
                                San Dimas  CA  91773\r
                                US\r
 \r
-8C-1F-64   (hex)               YUYAMA MFG Co.,Ltd\r
-F79000-F79FFF     (base 16)            YUYAMA MFG Co.,Ltd\r
-                               1-4-30\r
-                               MEISHINGUCHI,TOYONAKA  OSAKA  561-0841\r
-                               JP\r
+8C-1F-64   (hex)               ard sa\r
+550000-550FFF     (base 16)            ard sa\r
+                               Micropolis Bat Clematis\r
+                               Gap  France  05000\r
+                               FR\r
+\r
+8C-1F-64   (hex)               Beijing Yahong Century Technology Co., Ltd\r
+FD7000-FD7FFF     (base 16)            Beijing Yahong Century Technology Co., Ltd\r
+                               Floor 3, Building 2, Yard 3, Gaolizhang Road, Haidian District\r
+                               Beijing  Beijing  100095\r
+                               CN\r
 \r
 8C-1F-64   (hex)               BRS Sistemas Eletrônicos\r
 D73000-D73FFF     (base 16)            BRS Sistemas Eletrônicos\r
@@ -25280,11 +25361,11 @@ D73000-D73FFF     (base 16)           BRS Sistemas Eletrônicos
                                Porto Alegre  RS  91380-000\r
                                BR\r
 \r
-8C-1F-64   (hex)               Cool Air Incorporated\r
-90C000-90CFFF     (base 16)            Cool Air Incorporated\r
-                               1544 134th Ave NEHam Lake\r
-                               Ham Lake  MN  55304\r
-                               US\r
+8C-1F-64   (hex)               YUYAMA MFG Co.,Ltd\r
+F79000-F79FFF     (base 16)            YUYAMA MFG Co.,Ltd\r
+                               1-4-30\r
+                               MEISHINGUCHI,TOYONAKA  OSAKA  561-0841\r
+                               JP\r
 \r
 8C-1F-64   (hex)               China Information Technology Designing &Consulting Institute Co.,Ltd.\r
 FA4000-FA4FFF     (base 16)            China Information Technology Designing &Consulting Institute Co.,Ltd.\r
@@ -25292,23 +25373,23 @@ FA4000-FA4FFF     (base 16)           China Information Technology Designing &Consulting
                                Beijing  Beijing  100048\r
                                CN\r
 \r
-70-B3-D5   (hex)               LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
-5BC000-5BCFFF     (base 16)            LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
-                               Wiesenstraße 6\r
-                               Walldorf  Baden Württemberg  69190\r
-                               DE\r
-\r
 8C-1F-64   (hex)               HOSCH Gebäude Automation Neue Produkte GmbH\r
 5E7000-5E7FFF     (base 16)            HOSCH Gebäude Automation Neue Produkte GmbH\r
                                Rheinstr 9\r
                                Teltow    14513\r
                                DE\r
 \r
-8C-1F-64   (hex)               PROFITT Ltd\r
-40D000-40DFFF     (base 16)            PROFITT Ltd\r
-                               office 5H, block 14-2 lit.A, Raevsky av.\r
-                               Saint-Petersburg    194064\r
-                               RU\r
+70-B3-D5   (hex)               LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
+5BC000-5BCFFF     (base 16)            LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
+                               Wiesenstraße 6\r
+                               Walldorf  Baden Württemberg  69190\r
+                               DE\r
+\r
+8C-1F-64   (hex)               Cool Air Incorporated\r
+90C000-90CFFF     (base 16)            Cool Air Incorporated\r
+                               1544 134th Ave NEHam Lake\r
+                               Ham Lake  MN  55304\r
+                               US\r
 \r
 8C-1F-64   (hex)               Fujian Satlink Electronics Co., Ltd\r
 A3B000-A3BFFF     (base 16)            Fujian Satlink Electronics Co., Ltd\r
@@ -25316,18 +25397,18 @@ A3B000-A3BFFF     (base 16)           Fujian Satlink Electronics Co., Ltd
                                Quanzhou  Fujian  362000\r
                                CN\r
 \r
-8C-1F-64   (hex)               RF Code\r
-596000-596FFF     (base 16)            RF Code\r
-                               9229 Waterford Centre Blvd #500\r
-                               Austin  TX  78758\r
-                               US\r
-\r
 8C-1F-64   (hex)               L-signature\r
 83D000-83DFFF     (base 16)            L-signature\r
                                44, Charyong-ro 48beon-gil, Uichang-gu, Changwon-si\r
                                Gyeongsangnam-do    51391\r
                                KR\r
 \r
+8C-1F-64   (hex)               PROFITT Ltd\r
+40D000-40DFFF     (base 16)            PROFITT Ltd\r
+                               office 5H, block 14-2 lit.A, Raevsky av.\r
+                               Saint-Petersburg    194064\r
+                               RU\r
+\r
 70-B3-D5   (hex)               RF Code\r
 A51000-A51FFF     (base 16)            RF Code\r
                                9229 Waterford Centre Blvd #500\r
@@ -25352,11 +25433,11 @@ CAB000-CABFFF     (base 16)           Spyder Controls Corp.
                                Lacombe  AB  T4L 1Y9\r
                                CA\r
 \r
-8C-1F-64   (hex)               Taiko Audio B.V.\r
-32C000-32CFFF     (base 16)            Taiko Audio B.V.\r
-                               Zandbreeweg 6\r
-                               Oldenzaal  Overijssel  7577 BZ\r
-                               NL\r
+8C-1F-64   (hex)               RF Code\r
+596000-596FFF     (base 16)            RF Code\r
+                               9229 Waterford Centre Blvd #500\r
+                               Austin  TX  78758\r
+                               US\r
 \r
 8C-1F-64   (hex)               Packetalk LLC\r
 5CE000-5CEFFF     (base 16)            Packetalk LLC\r
@@ -25370,6 +25451,18 @@ CAB000-CABFFF     (base 16)            Spyder Controls Corp.
                                Ahmedabad  Gujarat  380059\r
                                IN\r
 \r
+8C-1F-64   (hex)               Taiko Audio B.V.\r
+32C000-32CFFF     (base 16)            Taiko Audio B.V.\r
+                               Zandbreeweg 6\r
+                               Oldenzaal  Overijssel  7577 BZ\r
+                               NL\r
+\r
+70-B3-D5   (hex)               Liberator Pty Ltd\r
+561000-561FFF     (base 16)            Liberator Pty Ltd\r
+                               265 Gilbert Street\r
+                               Adelaide     SA 5000\r
+                               AU\r
+\r
 70-B3-D5   (hex)               DISMUNTEL SAL\r
 92C000-92CFFF     (base 16)            DISMUNTEL SAL\r
                                Pol ind cotes\r
@@ -30176,12 +30269,6 @@ E42000-E42FFF     (base 16)            Neusoft Reach Automotive Technology (Shenyang) Co.,
                                Shenyang  Liaoning  110000\r
                                CN\r
 \r
-70-B3-D5   (hex)               Private\r
-278000-278FFF     (base 16)            Private\r
-                               600 Atlantis Rd\r
-                               Melbourne  FL  32904\r
-                               US\r
-\r
 70-B3-D5   (hex)               YUYAMA MFG Co.,Ltd\r
 196000-196FFF     (base 16)            YUYAMA MFG Co.,Ltd\r
                                1-4-30\r
@@ -31334,10 +31421,10 @@ CBD000-CBDFFF     (base 16)           PREO INDUSTRIES FAR EAST LTD
                                Hong Kong  Kwai Chung, N.T.  999077\r
                                HK\r
 \r
-8C-1F-64   (hex)               Quanxing Tech Co.,LTD\r
-B69000-B69FFF     (base 16)            Quanxing Tech Co.,LTD\r
-                               No. 102, building 3, Qianhai Shenzhen-Hong Kong Youth Innovation & Entrepreneur Hub, Qianwan 1st Road, Nanshan District,\r
-                               SHENZHEN  Guangdong  518066\r
+8C-1F-64   (hex)               Taolink Technologies Corporation\r
+C81000-C81FFF     (base 16)            Taolink Technologies Corporation\r
+                               Floor 5, Building 4, Shanghai Intelligent Sensing Industrial Park, 333 Huangqing Road, Jiading District\r
+                               Shanghai    201899\r
                                CN\r
 \r
 8C-1F-64   (hex)               Texi AS\r
@@ -31346,12 +31433,6 @@ F09000-F09FFF     (base 16)            Texi AS
                                Trondheim    7030\r
                                NO\r
 \r
-8C-1F-64   (hex)               Taolink Technologies Corporation\r
-C81000-C81FFF     (base 16)            Taolink Technologies Corporation\r
-                               Floor 5, Building 4, Shanghai Intelligent Sensing Industrial Park, 333 Huangqing Road, Jiading District\r
-                               Shanghai    201899\r
-                               CN\r
-\r
 8C-1F-64   (hex)               CONTROL SYSTEMS Srl\r
 2D8000-2D8FFF     (base 16)            CONTROL SYSTEMS Srl\r
                                Via del Brolo, 14\r
@@ -31364,11 +31445,11 @@ C81000-C81FFF     (base 16)           Taolink Technologies Corporation
                                Austin  TX  78704\r
                                US\r
 \r
-8C-1F-64   (hex)               Eagle Harbor Technologies, Inc.\r
-5F7000-5F7FFF     (base 16)            Eagle Harbor Technologies, Inc.\r
-                               169 Western Ave W.\r
-                               Seattle  WA  98119\r
-                               US\r
+8C-1F-64   (hex)               Quanxing Tech Co.,LTD\r
+B69000-B69FFF     (base 16)            Quanxing Tech Co.,LTD\r
+                               No. 102, building 3, Qianhai Shenzhen-Hong Kong Youth Innovation & Entrepreneur Hub, Qianwan 1st Road, Nanshan District,\r
+                               SHENZHEN  Guangdong  518066\r
+                               CN\r
 \r
 8C-1F-64   (hex)               ArgusEye TECH. INC\r
 9BF000-9BFFFF     (base 16)            ArgusEye TECH. INC\r
@@ -31376,35 +31457,29 @@ C81000-C81FFF     (base 16)           Taolink Technologies Corporation
                                Taipei City    114062\r
                                TW\r
 \r
-8C-1F-64   (hex)               Zumbach Electronic AG\r
-EA8000-EA8FFF     (base 16)            Zumbach Electronic AG\r
-                               Hauptstrasse 93\r
-                               Orpund    2552\r
-                               CH\r
-\r
 8C-1F-64   (hex)               Rapid-e-Engineering Steffen Kramer\r
 1B2000-1B2FFF     (base 16)            Rapid-e-Engineering Steffen Kramer\r
                                Am Waldring 7\r
                                Rechtmehring  Bayern  83562\r
                                DE\r
 \r
+8C-1F-64   (hex)               Eagle Harbor Technologies, Inc.\r
+5F7000-5F7FFF     (base 16)            Eagle Harbor Technologies, Inc.\r
+                               169 Western Ave W.\r
+                               Seattle  WA  98119\r
+                               US\r
+\r
 70-B3-D5   (hex)               Earth Works\r
 61C000-61CFFF     (base 16)            Earth Works\r
                                2-9-14 Aioi\r
                                Kofu  Yamanashi  400-0858\r
                                JP\r
 \r
-8C-1F-64   (hex)               DI3 INFOTECH LLP\r
-0AA000-0AAFFF     (base 16)            DI3 INFOTECH LLP\r
-                               406, CRYSTAL ARCADE, NEXT TO BSNL EXCHANGE, C.G ROAD, NAVRANGPURA\r
-                               AHMEDABAD  Gujarat  380009\r
-                               IN\r
-\r
-8C-1F-64   (hex)               Graphimecc Group SRL\r
-0F2000-0F2FFF     (base 16)            Graphimecc Group SRL\r
-                               Via Nobel 2\r
-                               San Martino Buon Albergo  Verona  37036\r
-                               IT\r
+8C-1F-64   (hex)               Zumbach Electronic AG\r
+EA8000-EA8FFF     (base 16)            Zumbach Electronic AG\r
+                               Hauptstrasse 93\r
+                               Orpund    2552\r
+                               CH\r
 \r
 8C-1F-64   (hex)               Procon Electronics Pty Ltd\r
 DC2000-DC2FFF     (base 16)            Procon Electronics Pty Ltd\r
@@ -31424,6 +31499,18 @@ DC2000-DC2FFF     (base 16)            Procon Electronics Pty Ltd
                                Anyang    14056\r
                                KR\r
 \r
+8C-1F-64   (hex)               DI3 INFOTECH LLP\r
+0AA000-0AAFFF     (base 16)            DI3 INFOTECH LLP\r
+                               406, CRYSTAL ARCADE, NEXT TO BSNL EXCHANGE, C.G ROAD, NAVRANGPURA\r
+                               AHMEDABAD  Gujarat  380009\r
+                               IN\r
+\r
+8C-1F-64   (hex)               Graphimecc Group SRL\r
+0F2000-0F2FFF     (base 16)            Graphimecc Group SRL\r
+                               Via Nobel 2\r
+                               San Martino Buon Albergo  Verona  37036\r
+                               IT\r
+\r
 8C-1F-64   (hex)               IQ Home Kft.\r
 033000-033FFF     (base 16)            IQ Home Kft.\r
                                Forgach utca 32/5. 312.\r
@@ -31448,24 +31535,18 @@ CE4000-CE4FFF     (base 16)           SL USA, LLC
                                São Paulo  São Paulo  04010-000\r
                                BR\r
 \r
-8C-1F-64   (hex)               WAVES SYSTEM\r
-349000-349FFF     (base 16)            WAVES SYSTEM\r
-                               La Ville en Bois\r
-                               BOUAYE  Loire Atlantique  44830\r
-                               FR\r
-\r
-8C-1F-64   (hex)               Ajeco Oy\r
-C64000-C64FFF     (base 16)            Ajeco Oy\r
-                               Arinatie 8\r
-                               Helsinki    00370\r
-                               FI\r
-\r
 8C-1F-64   (hex)               Comercial Electronica Studio-2 s.l.\r
 412000-412FFF     (base 16)            Comercial Electronica Studio-2 s.l.\r
                                P.I. La Figuera - C/ Rosa Luxemburgo, 34\r
                                Alaquas  Valencia  46970\r
                                ES\r
 \r
+8C-1F-64   (hex)               WAVES SYSTEM\r
+349000-349FFF     (base 16)            WAVES SYSTEM\r
+                               La Ville en Bois\r
+                               BOUAYE  Loire Atlantique  44830\r
+                               FR\r
+\r
 8C-1F-64   (hex)               TIAMA\r
 820000-820FFF     (base 16)            TIAMA\r
                                215 Chemin du Grand Revoyet\r
@@ -31478,6 +31559,18 @@ BA3000-BA3FFF     (base 16)            TIAMA
                                Saint-Genis Laval  Auvergne Rhone Alpes  69230\r
                                FR\r
 \r
+8C-1F-64   (hex)               Ajeco Oy\r
+C64000-C64FFF     (base 16)            Ajeco Oy\r
+                               Arinatie 8\r
+                               Helsinki    00370\r
+                               FI\r
+\r
+8C-1F-64   (hex)               biosilver .co.,ltd\r
+350000-350FFF     (base 16)            biosilver .co.,ltd\r
+                               2-14-4, shinyokohama\r
+                               yokohama  kanagawa  2220033\r
+                               JP\r
+\r
 8C-1F-64   (hex)               White2net srl\r
 5DA000-5DAFFF     (base 16)            White2net srl\r
                                Chemin du grand bois 5\r
@@ -31490,12 +31583,6 @@ BA3000-BA3FFF     (base 16)            TIAMA
                                Oslo  Oslo  0504\r
                                NO\r
 \r
-8C-1F-64   (hex)               biosilver .co.,ltd\r
-350000-350FFF     (base 16)            biosilver .co.,ltd\r
-                               2-14-4, shinyokohama\r
-                               yokohama  kanagawa  2220033\r
-                               JP\r
-\r
 8C-1F-64   (hex)               Relcom, Inc.\r
 D9C000-D9CFFF     (base 16)            Relcom, Inc.\r
                                2221 Yew Street\r
@@ -31532,11 +31619,11 @@ AA3000-AA3FFF     (base 16)           Peter Huber Kaeltemaschinenbau AG
                                Offenburg  Ba-Wue  77656\r
                                DE\r
 \r
-8C-1F-64   (hex)               NVP TECO LTD\r
-281000-281FFF     (base 16)            NVP TECO LTD\r
-                               str Zalutinska 10\r
-                               Kharkiv    61177\r
-                               UA\r
+8C-1F-64   (hex)               Scheurich GmbH\r
+B7D000-B7DFFF     (base 16)            Scheurich GmbH\r
+                               Grimmenstein 9/1\r
+                               Wolfegg    88364\r
+                               DE\r
 \r
 8C-1F-64   (hex)               DEUTA-WERKE GmbH\r
 EDA000-EDAFFF     (base 16)            DEUTA-WERKE GmbH\r
@@ -31544,18 +31631,18 @@ EDA000-EDAFFF     (base 16)           DEUTA-WERKE GmbH
                                Bergisch Gladbach  North Rhine-Westphalia  51465\r
                                DE\r
 \r
-8C-1F-64   (hex)               Scheurich GmbH\r
-B7D000-B7DFFF     (base 16)            Scheurich GmbH\r
-                               Grimmenstein 9/1\r
-                               Wolfegg    88364\r
-                               DE\r
-\r
 8C-1F-64   (hex)               Craft4 Digital GmbH\r
 289000-289FFF     (base 16)            Craft4 Digital GmbH\r
                                Sonnenwirtleweg 9\r
                                Vaihingen  Baden-Württemberg  71665\r
                                DE\r
 \r
+8C-1F-64   (hex)               NVP TECO LTD\r
+281000-281FFF     (base 16)            NVP TECO LTD\r
+                               str Zalutinska 10\r
+                               Kharkiv    61177\r
+                               UA\r
+\r
 8C-1F-64   (hex)               Timberline Manufacturing\r
 113000-113FFF     (base 16)            Timberline Manufacturing\r
                                1029 Blairs Ferry Rd\r
@@ -31567,3 +31654,27 @@ B7D000-B7DFFF     (base 16)            Scheurich GmbH
                                Box 423\r
                                Karlskoga    SE-691 27\r
                                SE\r
+\r
+70-B3-D5   (hex)               Medicomp, Inc\r
+278000-278FFF     (base 16)            Medicomp, Inc\r
+                               600 Atlantis Rd\r
+                               Melbourne  FL  32904\r
+                               US\r
+\r
+8C-1F-64   (hex)               Vision Systems Safety Tech\r
+9F6000-9F6FFF     (base 16)            Vision Systems Safety Tech\r
+                               5 Chemin de Chiradie\r
+                               Brignais    69530\r
+                               FR\r
+\r
+8C-1F-64   (hex)               Liberator Pty Ltd\r
+BBC000-BBCFFF     (base 16)            Liberator Pty Ltd\r
+                               265 Gilbert Street\r
+                               Adelaide     SA 5000\r
+                               AU\r
+\r
+8C-1F-64   (hex)               COMETA SAS\r
+E24000-E24FFF     (base 16)            COMETA SAS\r
+                               9 rue marcel chabloz\r
+                               Saint martin d'Hères    38400\r
+                               FR\r
index b0c8bdcc06b1a92c3419cc05241b673742406ce7..f5dcf901627936026922730d0ed63399fdddb376 100644 (file)
@@ -1,8 +1,8 @@
 #
 #      List of PCI ID's
 #
-#      Version: 2023.01.26
-#      Date:    2023-01-26 03:15:02
+#      Version: 2023.02.11
+#      Date:    2023-02-11 03:15:01
 #
 #      Maintained by Albert Pool, Martin Mares, and other volunteers from
 #      the PCI ID Project at https://pci-ids.ucw.cz/.
                148c 3000  Radeon HD 4350 Go! Green 512MB GDDR3
 # 113-2E172001-003
                174b 3000  Radeon HD 4350/4550 HyperMemory DDR2
-       9553  RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+       9553  RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v]
                1025 015e  Mobility Radeon HD 4570
                1025 017d  Mobility Radeon HD 4570
                1025 0205  Mobility Radeon HD 4570 / 545v
                17aa 2129  Mobility Radeon HD 545v
                17aa 215b  Mobility Radeon HD 545v
                17aa 21bb  Mobility Radeon HD 545v
-       9555  RV710/M92 [Mobility Radeon HD 4350/4550]
+       9555  RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220]
                103c 1411  ProBook 4720s GPU (Mobility Radeon HD 4350)
        9557  RV711/M93 GL [FirePro RG220]
        955f  RV710/M92 [Mobility Radeon HD 4330]
        25a7  GA107M [GeForce MX570]
        25a9  GA107M [GeForce RTX 2050]
        25aa  GA107M [GeForce MX570 A]
+       25ab  GA107M [GeForce RTX 3050 4GB Laptop GPU]
        25ac  GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]
        25ad  GA107 [GeForce RTX 2050]
        25af  GA107 [GeForce RTX 3050 Engineering Sample]
        25b9  GA107GLM [RTX A1000 Laptop GPU]
        25ba  GA107GLM [RTX A2000 8GB Laptop GPU]
        25bb  GA107GLM [RTX A500 Laptop GPU]
+       25bc  GA107
        25e0  GA107BM [GeForce RTX 3050 Ti Mobile]
        25e2  GA107BM [GeForce RTX 3050 Mobile]
        25e5  GA107BM [GeForce RTX 3050 Mobile]
        26f5  AD102GL [L40 CNX]
        2704  AD103 [GeForce RTX 4080]
        2717  GN21-X11 [GeForce RTX 4090 Laptop GPU]
+       2730  AD103GLM [RTX 5000 Ada Generation Laptop GPU]
        2757  GN21-X11
        2782  AD104 [GeForce RTX 4070 Ti]
        2785  AD104
        2786  AD104 [GeForce RTX 4070]
        27a0  GN21-X9
        27b8  AD104GL [L4]
+       27ba  AD104
+       27bb  AD104GLM [RTX 3500 Ada Generation Laptop GPU]
        27e0  GN21-X9
        2820  GN21-X6
+       2838  AD106GLM [RTX 3000 Ada Generation Laptop GPU]
        2860  GN21-X6
        28a0  GN21-X4
        28a1  GN21-X2
+       28b8  AD107GLM [RTX 2000 Ada Generation Laptop GPU]
        28e0  GN21-X4
        28e1  GN21-X2
 10df  Emulex Corporation
        3208  PT890 Host Bridge
        3213  VPX/VPX2 PCI to PCI Bridge Controller
        3218  K8T800M Host Bridge
-       3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+       3227  VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South]
                1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
-               1106 3227  DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
+               1106 3227  VT8237 ISA bridge
                1458 5001  GA-7VT600 Motherboard
                147b 1407  KV8-MAX3 motherboard
                1849 3227  K7VT4 motherboard
 144d  Samsung Electronics Co Ltd
        1600  Apple PCIe SSD
        a544  Exynos 8890 PCIe Root Complex
+       a575  Exynos 7420 PCIe Root Complex
+       a5e3  Exynos 5433 PCIe Root Complex
        a800  XP941 PCIe SSD
        a802  NVMe SSD Controller SM951/PM951
                144d a801  PM963 2.5" NVMe PCIe SSD
        1034  GX1034 Certification and Verification Module PXI Board
        1100  GX1100 Arbitrary Waveform and Function Generator PXI Board
        1120  GX1120 Arbitrary Waveform and Function Generator PXI Board
+       1164  GX1164 Multi-Channel Programmable Resistor PXI Board
        1632  GX1632e 32-Channel Arbitrary Analog Output PXIe Board
+       1648  GX1648 64-Channel Analog Output PXI Board
+       1649  GX1649 64-Channel Arbitrary Analog Output PXI Board
+       1838  GX1838 Precision DC Source PXI Board
        2065  GX2065 Digital Multimeter PXI Board
        2200  GTX2200 High Resolution Universal Time Interval Counter PXI Board
        2201  GC2200 High Resolution Universal Time Interval Counter PCI Board
+       3104  GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board
+       3108  GX3108 4-Channel Source Measure Unit PXI Board
+       3116  GX3116e 16-Channel DUT Power Supply PXIe Board
+       3348  GX3348 Multi-Channel DC Source and Switch Matrix Board
+       3500  GX3500 Digital I/O FLEX FPGA Board
+       3700  GX3700e Digital I/O FLEX FPGA PXIe Board
+       3701  GX3700 Digital I/O FLEX FPGA PXI Board
+       3800  GX3800e Digital I/O FLEX FPGA PXIe Board
+       4943  GX4943 HellFire/Longbow Serial Communication Board
        5050  GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board
+       5055  GX5055 Dynamic Digital I/O with Pin Electronics PXI Board
+       5083  GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+       5106  GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board
+       5151  GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board
+       5152  GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board
+       5250  GX5250 Digital I/O Streaming PXI Board
+       5280  GX5280 High-Speed Digital I/O PXI Board
+       5290  GX5290 High-Speed Dynamic Digital I/O PXI Board
+       5294  GX5294 High-Speed Digital I/O PXI Board
+       5295  GX5295 Digital I/O with Pin Electronics and PMU PXI Board
+       5296  GX5296 Digital I/O with Pin Electronics and PMU PXI Board
+       5550  GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
        5641  GX5641/2 Bi-directional Differential-TTL I/O PXI Board
+       5731  GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board
+       5732  GX5732 224-Channel Static Digital I/O PXI Board
+       5733  GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board
+       5960  GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board
+       6021  GX6021 20-Channel RF Multiplexer PXI Board
+       6062  GX6062 60-Channel RF Multiplexer PXI Board
+       6115  GX6115 15-Channel High Current SPDT Form-C Relay PXI Board
+       6125  GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board
+       6138  GX6138 38-Channel SPST Form-A Relay PXI Board
+       6188  GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board
+       6192  GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board
+       6196  GX6196 96-Channel DPST Form-A Relay Carrier PXI Board
+       6256  GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board
+       6264  GX6264 128-Channel Scanner/Multiplexer Board
+       6315  GX6315 45-Channel High Current SPDT Form-C Relay Board
+       6325  GX6325 75-Channel High-Density SPDT Form-C Relay Board
+       6338  GX6338 114-Channel SPST Form-A Relay PXI Board
+       6377  GX6377 Multifunction Switching PXI Board
+       6384  GX6384 Configurable High-Density Switch Matrix PXI Board
+       6616  GX6616 6x2:16 Switch Matrix PXI Board
+       6864  GX6864 Video Switching PXI Board
+       7400  GX7400 Dual-Output Programmable Power Supply PXI Board
+       7404  GX7404 Prototyping and Power Interface PXI Board
+       7777  GX7777 Generic Interface PXI Board
+       7779  GX7779 Backplane Tester PXI Board
 16e3  European Space Agency
        1e0f  LEON2FT Processor
 16e5  Intellon Corp.
        000c  Qualcomm MSM6275 UMTS chip
 1932  DiBcom
 193c  MAXIM Integrated Products
-193d  Hangzhou H3C Technologies Co., Ltd.
+193d  New H3C Technologies Co., Ltd.
 193f  AHA Products Group
        0001  AHA36x-PCIX
        0360  AHA360-PCIe
        000e  PBlaze6 6530
                1c5f 0b20  NVMe SSD PBlaze6 6530 1920G AIC
                1c5f 0b21  NVMe SSD PBlaze6 6530 1920G 2.5" U.2
+               1c5f 0b25  NVMe SSD PBlaze6 6530 1920G E1.S
+               1c5f 0b27  NVMe SSD PBlaze6 6630 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 0b35  NVMe SSD PBlaze6 6530 3840G E1.S
+               1c5f 0b37  NVMe SSD PBlaze6 6630 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 0b47  NVMe SSD PBlaze6 6630 7680G 2.5" U.2
                1c5f 1331  NVMe SSD PBlaze6 6531 3840G 2.5" U.2
                1c5f 1341  NVMe SSD PBlaze6 6531 7680G 2.5" U.2
+               1c5f 1431  NVMe SSD PBlaze6 6541 3840G 2.5" U.2
+               1c5f 1441  NVMe SSD PBlaze6 6541 7680G 2.5" U.2
                1c5f 4b20  NVMe SSD PBlaze6 6536 1600G AIC
                1c5f 4b21  NVMe SSD PBlaze6 6536 1600G 2.5" U.2
+               1c5f 4b25  NVMe SSD PBlaze6 6536 1600G E1.S
+               1c5f 4b27  NVMe SSD PBlaze6 6636 1600G 2.5" U.2
                1c5f 4b30  NVMe SSD PBlaze6 6536 3200G AIC
                1c5f 4b31  NVMe SSD PBlaze6 6536 3200G 2.5" U.2
+               1c5f 4b35  NVMe SSD PBlaze6 6536 3200G E1.S
+               1c5f 4b37  NVMe SSD PBlaze6 6636 3200G 2.5" U.2
                1c5f 4b40  NVMe SSD PBlaze6 6536 6400G AIC
                1c5f 4b41  NVMe SSD PBlaze6 6536 6400G 2.5" U.2
+               1c5f 4b47  NVMe SSD PBlaze6 6636 6400G 2.5" U.2
                1c5f 5331  NVMe SSD PBlaze6 6537 3200G 2.5" U.2
                1c5f 5341  NVMe SSD PBlaze6 6537 6400G 2.5" U.2
+               1c5f 5431  NVMe SSD PBlaze6 6547 3200G 2.5" U.2
+               1c5f 5441  NVMe SSD PBlaze6 6547 6400G 2.5" U.2
        003d  PBlaze5 920/926
                1c5f 0a30  NVMe SSD PBlaze5 920 3840G AIC
                1c5f 0a31  NVMe SSD PBlaze5 920 3840G 2.5" U.2
                1c5f 4b41  NVMe SSD PBlaze6 6936 6400GB 2.5" U.3
                1c5f 4b51  NVMe SSD PBlaze6 6936 12800GB 2.5" U.3
                1c5f 4b61  NVMe SSD PBlaze6 6936 25600GB 2.5" U.3
+# Gen5 NVMe SSD
+       003f  PBlaze7 7940/7946
        0540  PBlaze4 NVMe SSD
        0550  PBlaze5 700/900
        0555  PBlaze5 510/516
                1cc4 a212  NVMe SSD UHXXXa series U.2 1600GB
                1cc4 a213  NVMe SSD UHXXXa series U.2 3200GB
                1cc4 a214  NVMe SSD UHXXXa series U.2 6400GB
-               1cc4 e122  NVMe SSD UH711a series U.2 1920G
+               1cc4 e122  NVMe SSD UH711a series U.2 1920GB
                1cc4 e123  NVMe SSD UH711a series U.2 3840GB
                1cc4 e124  NVMe SSD UH711a series U.2 7680GB
        17ab  NVMe 256G SSD device
        0002  Colossus GC1 [S1]
 1d97  Shenzhen Longsys Electronics Co., Ltd.
        2263  SM2263EN/SM2263XT-based OEM SSD
-1d9b  Facebook, Inc.
+# nee Facebook, Inc.
+1d9b  Meta Platforms, Inc.
        0010  Networking DOM Engine
        0011  IO Bridge
 1da1  Teko Telecom S.r.l.
        0001  ml605
        0002  alst4
        0003  alst4x
+1df8  V&G Information System Co.,Ltd
+       c000  DC NVMe SSD
+               1df8 c600  Enterprise U.2 NVMe SSD
+       d000  PC NVMe SSD
+               1df8 d100  M.2 NVMe SSD
+               1df8 d201  M.2 NVMe SSD
+               1df8 d600  M.2 NVMe SSD
 1dfc  JSC NT-COM
        1181  TDM 8 Port E1/T1/J1 Adapter
 1e0f  KIOXIA Corporation
 # https://www.medion.com/
 1e39  MEDION AG
 1e3b  DapuStor Corporation
-       0600  NVMe SSD Controller DPU600
+       0600  NVMe SSD Controller DP600
+               1e3b 0010  Enterprise NVMe SSD U.2 3.84TB (R5102)
+               1e3b 0013  Enterprise NVMe SSD U.2 3.20TB (R5302)
                1e3b 0030  Enterprise NVMe SSD U.2 3.84TB (J5100)
                1e3b 0031  Enterprise NVMe SSD U.2 7.68TB (J5100)
                1e3b 0032  Enterprise NVMe SSD U.2 15.36TB (J5100)
                1e3b 0035  Enterprise NVMe SSD U.2 12.80TB (J5300)
                1e3b 0036  Enterprise NVMe SSD AIC 7.68TB (J5110)
                1e3b 0037  Enterprise NVMe SSD AIC 6.40TB (J5310)
+               1e3b 0038  Enterprise NVMe SSD U.2 3.84TB (J5100D)
+               1e3b 0039  Enterprise NVMe SSD U.2 7.68TB (J5100D)
+               1e3b 003b  Enterprise NVMe SSD U.2 3.20TB (J5300D)
+               1e3b 003c  Enterprise NVMe SSD U.2 6.40TB (J5300D)
                1e3b 003e  Enterprise NVMe SSD AIC 3.84TB (J5110)
                1e3b 003f  Enterprise NVMe SSD AIC 3.20TB (J5310)
+               1e3b 004c  Enterprise NVMe SSD U.2 QDP 1.92TB (J5100)
+               1e3b 004d  Enterprise NVMe SSD U.2 QDP 1.60TB (J5300)
                1e3b 0050  Enterprise NVMe SSD U.2 3.84TB (R5100)
                1e3b 0051  Enterprise NVMe SSD U.2 7.68TB (R5100)
                1e3b 0052  Enterprise NVMe SSD U.2 15.36TB (R5100)
                1e3b 0061  Enterprise NVMe SSD U.2 7.68TB (R5100D)
                1e3b 0063  Enterprise NVMe SSD U.2 3.20TB (R5300D)
                1e3b 0064  Enterprise NVMe SSD U.2 6.40TB (R5300D)
+               1e3b 0066  Enterprise NVMe SSD U.2 3.84TB (R5101D)
+               1e3b 0069  Enterprise NVMe SSD U.2 3.20TB (R5301D)
+               1e3b 006c  Enterprise NVMe SSD U.2 1.92TB (R5101)
+               1e3b 006d  Enterprise NVMe SSD U.2 1.60TB (J5301)
                1e3b 00f0  Enterprise NVMe SSD U.2 0.40TB (X2900)
                1e3b 00f1  Enterprise NVMe SSD U.2 0.80TB (X2900)
                1e3b 00f2  Enterprise NVMe SSD U.2 1.60TB (X2900)
                1e3b 00f3  Enterprise NVMe SSD U.2 3.20TB (X2900)
                1e3b 00f5  Enterprise NVMe SSD U.2 0.40TB (X2900P)
                1e3b 00f6  Enterprise NVMe SSD U.2 0.80TB (X2900P)
-       1098  Haishen NVMe SSD
+       1098  Haishen3 NVMe SSD
                1e3b 0001  Enterprise NVMe SSD U.2 0.8TB (H2100)
                1e3b 0002  Enterprise NVMe SSD U.2 0.96TB (H2200)
                1e3b 0004  Enterprise NVMe SSD U.2 1.6TB (H2100)
                1e3b 008a  Enterprise NVMe SSD HHHL 0.8TB (H3900)
                1e3b 008b  Enterprise NVMe SSD HHHL 1.6TB (H3900)
                1e3b 0091  Enterprise NVMe SSD HHHL 0.75TB (H3900)
+       1333  Haishen5 NVMe SSD
 1e3d  Burlywood, Inc
 1e44  Valve Software
 1e49  Yangtze Memory Technologies Co.,Ltd
 1e7b  Dataland
 1e7c  Brainchip Inc
        bca1  AKD1000 Neural Network Coprocessor [Akida]
-1e7e  9034 Pliops-Data Processor [XDP1.0]
+1e7e  Pliops
+       9034  Pliops Extreme Data Processor [XDP1.0]
 1e7f  Jiangsu Huacun Elec. Tech. Co., Ltd.
 1e81  Ramaxel Technology(Shenzhen) Limited
        1203  NVMe SSD Controller UHXXXa series
                1f2f 6116  KM560 U.2 3.84TB NVMe SSD
                1f2f 6118  KM560 U.2 7.68TB NVMe SSD
 1f3f  3SNIC Ltd
-       2100  SSSRAID SAS/SATA HBA
+       2100  SSSHBA SAS/SATA HBA
                1f3f 0120  HBA 32 Ports
                1f3f 0125  HBA 40 Ports
                1f3f 0180  HBA 16 Ports
        159a  Ethernet Controller E810-XXV for QSFP
        159b  Ethernet Controller E810-XXV for SFP
                1137 02be  E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC
+# NIC-ETH660F-3S-2P 2x25GbE SFP28 Network Adapter for OCP 3.0
+               193d 1085  NIC-ETH660F-3S-2P
                1bd4 0057  Ethernet Network Adapter E810-XXVAM2
                1bd4 0058  Ethernet Network Adapter E810-XXVAM2 for OCP 3.0
                1bd4 006e  Ethernet Network Adapter E810-XXVAM2 for BD
        46c0  AlderLake-M GT1
        46c1  AlderLake-M [Iris Xe Graphics]
        46c3  Alder Lake-UP4 GT1 [UHD Graphics]
+       46d0  Alder Lake-N [UHD Graphics]
+       46d1  Alder Lake-N [UHD Graphics]
+       46d2  Alder Lake-N [UHD Graphics]
        4905  DG1 [Iris Xe MAX Graphics]
        4906  DG1 [Iris Xe Pod]
        4907  SG1 [Server GPU SG-18M]
        7abc  Alder Lake-S PCH PCI Express Root Port #5
        7abd  Alder Lake-S PCH PCI Express Root Port #6
        7abf  Alder Lake-S PCH PCI Express Root Port #8
+# As documented in Chipset datasheet
+       7ac8  Alder Lake-S PCH PCI Express Root Port #25
        7acc  Alder Lake-S PCH Serial IO I2C Controller #0
        7acd  Alder Lake-S PCH Serial IO I2C Controller #1
        7ace  Alder Lake-S PCH Serial IO I2C Controller #2
        a3eb  Comet Lake PCI Express Root Port #21
        a3f0  Comet Lake PCH-V cAVS
        a620  6400/6402 Advanced Memory Buffer (AMB)
+       a720  Raptor Lake-P [UHD Graphics]
+       a721  Raptor Lake-P [UHD Graphics]
        a77f  Volume Management Device NVMe RAID Controller Intel Corporation
        a780  Raptor Lake-S GT1 [UHD Graphics 770]
        a781  Raptor Lake-S UHD Graphics
        a789  Raptor Lake-S UHD Graphics
        a78a  Raptor Lake-S UHD Graphics
        a78b  Raptor Lake-S UHD Graphics
+       a7a0  Raptor Lake-P [Iris Xe Graphics]
+       a7a1  Raptor Lake-P [Iris Xe Graphics]
+       a7a8  Raptor Lake-P [UHD Graphics]
+       a7a9  Raptor Lake-P [UHD Graphics]
        abc0  Omni-Path Fabric Switch Silicon 100 Series
        ad0b  Volume Management Device NVMe RAID Controller Intel Corporation
        b152  21152 PCI-to-PCI Bridge
index 4df7583ea862008524b13d467c104317efb633ce..60c19a5938f9f0eca1322919b6f041d78e8f344b 100644 (file)
  <tr class="even"><td>Colorlight</td><td>KLT</td><td>10/20/2022</td> </tr>
  <tr class="odd"><td>Beck GmbH &amp; Co. Elektronik Bauelemente KG</td><td>BCK</td><td>10/20/2022</td> </tr>
  <tr class="even"><td>Shenzhen Soogeen Electronics Co., LTD.</td><td>SGN</td><td>11/29/2022</td> </tr>
+ <tr class="odd"><td>Emotiva Audio Corp. </td><td>EAC</td><td>02/02/2023</td> </tr>
       </tbody>
     </table>
   </body>
index c6cc4ffe37f213ffb0ab9fe210e51c76f9f0ad14..b002227032531762525ed3cc7c3f0a0d819d9f86 100644 (file)
@@ -294,7 +294,7 @@ cat MicCorUEFCA2011_2011-06-27.esl >>db.esl
 
 # Optionally add Microsoft Corporation KEK CA 2011. Recommended if either of the
 # Microsoft keys is used as the official UEFI revocation database is signed with this
-# key. The revocation database can be updated with <citerefentry><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+# key. The revocation database can be updated with <citerefentry project='man-pages'><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
 cat MicCorKEKCA2011_2011-06-24.esl >>KEK.esl
 
 attr=NON_VOLATILE,RUNTIME_ACCESS,BOOTSERVICE_ACCESS,TIME_BASED_AUTHENTICATED_WRITE_ACCESS
index 7cad9a7624738c5d9c376d965b443d4214f7961d..c5abd2511cf68cf7838abbff15e0f9bfe9b5c296 100644 (file)
@@ -370,7 +370,7 @@ node /org/freedesktop/hostname1 {
       as-is to <filename>systemd-hostnamed</filename> in which case it will automatically use a suitable
       fallback.</para></listitem>
 
-      <listitem><para>Uppercase charaacters should be replaced with their lowercase equivalents.
+      <listitem><para>Uppercase characters should be replaced with their lowercase equivalents.
       </para></listitem>
     </itemizedlist></para>
 
index bbb6b1433938c034fb834b4594a41ce2f086a5f7..5bae473856363e11d1d10bd261dd5ad835f8a71e 100644 (file)
@@ -112,6 +112,10 @@ node /org/freedesktop/systemd1 {
       KillUnit(in  s name,
                in  s whom,
                in  i signal);
+      QueueSignalUnit(in  s name,
+                      in  s whom,
+                      in  i signal,
+                      in  i value);
       CleanUnit(in  s name,
                 in  as mask);
       FreezeUnit(in  s name);
@@ -826,6 +830,8 @@ node /org/freedesktop/systemd1 {
 
     <variablelist class="dbus-method" generated="True" extra-ref="KillUnit()"/>
 
+    <variablelist class="dbus-method" generated="True" extra-ref="QueueSignalUnit()"/>
+
     <variablelist class="dbus-method" generated="True" extra-ref="CleanUnit()"/>
 
     <variablelist class="dbus-method" generated="True" extra-ref="FreezeUnit()"/>
@@ -1286,6 +1292,13 @@ node /org/freedesktop/systemd1 {
       <varname>ExecStop=</varname> and is spawned in parallel to the main daemon process in order to shut it
       down.</para>
 
+      <para><function>QueueSignalUnit()</function> is similar to <function>KillUnit()</function> but may be
+      used to enqueue a POSIX Realtime Signal (i.e. <constant>SIGRTMIN+…</constant> and
+      <constant>SIGRTMAX-…</constant>) to the selected process(es). Takes the same paramaters as
+      <function>KillUnit()</function> with one additional argument: an integer that is passed in the
+      <varname>sival_int</varname> value accompanying the queued signal. See <citerefentry project="man-pages"><refentrytitle>sigqueue</refentrytitle><manvolnum>3</manvolnum></citerefentry> for
+      details.</para>
+
       <para><function>GetJob()</function> returns the job object path for a specific job, identified by its
       id.</para>
 
@@ -1731,7 +1744,8 @@ node /org/freedesktop/systemd1 {
       <para>Read access is generally granted to all clients. Additionally, for unprivileged clients, some
       operations are allowed through the polkit privilege system. Operations which modify unit state
       (<function>StartUnit()</function>, <function>StopUnit()</function>, <function>KillUnit()</function>,
-      <function>RestartUnit()</function> and similar, <function>SetProperty()</function>) require
+      <function>QueueSignalUnit()</function>, <function>RestartUnit()</function> and similar,
+      <function>SetProperty()</function>) require
       <interfacename>org.freedesktop.systemd1.manage-units</interfacename>. Operations which modify unit file
       enablement state (<function>EnableUnitFiles()</function>, <function>DisableUnitFiles()</function>,
       <function>EnableUnitFilesWithFlags()</function>, <function>DisableUnitFilesWithFlags()</function>,
@@ -1778,6 +1792,9 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
                  out a(uosos) affected_jobs);
       Kill(in  s whom,
            in  i signal);
+      QueueSignal(in  s whom,
+                  in  i signal,
+                  in  i value);
       ResetFailed();
       SetProperties(in  b runtime,
                     in  a(sv) properties);
@@ -2084,6 +2101,8 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
 
     <variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
 
+    <variablelist class="dbus-method" generated="True" extra-ref="QueueSignal()"/>
+
     <variablelist class="dbus-method" generated="True" extra-ref="ResetFailed()"/>
 
     <variablelist class="dbus-method" generated="True" extra-ref="SetProperties()"/>
@@ -2302,12 +2321,12 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
       <para><function>Start()</function>, <function>Stop()</function>, <function>Reload()</function>,
       <function>Restart()</function>, <function>TryRestart()</function>,
       <function>ReloadOrRestart()</function>, <function>ReloadOrTryRestart()</function>,
-      <function>Kill()</function>, <function>ResetFailed()</function>, and
-      <function>SetProperties()</function> implement the same operation as the respective methods on the
+      <function>Kill()</function>, <function>QueueSignal()</function>, <function>ResetFailed()</function>,
+      and <function>SetProperties()</function> implement the same operation as the respective methods on the
       <interfacename>Manager</interfacename> object (see above). However, these methods operate on the unit
-      object and hence do not take a unit name parameter. Invoking the methods directly on the Manager
-      object has the advantage of not requiring a <function>GetUnit()</function> call to get the unit object
-      for a specific unit name. Calling the methods on the Manager object is hence a round trip
+      object and hence do not take a unit name parameter. Invoking the methods directly on the Manager object
+      has the advantage of not requiring a <function>GetUnit()</function> call to get the unit object for a
+      specific unit name. Calling the methods on the Manager object is hence a round trip
       optimization.</para>
     </refsect2>
 
@@ -2720,20 +2739,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -3299,20 +3330,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -3887,20 +3930,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@@ -4628,20 +4683,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -5227,20 +5294,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -5805,20 +5884,32 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@@ -6435,20 +6526,32 @@ node /org/freedesktop/systemd1/unit/home_2emount {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -6962,20 +7065,32 @@ node /org/freedesktop/systemd1/unit/home_2emount {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -7458,20 +7573,32 @@ node /org/freedesktop/systemd1/unit/home_2emount {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@@ -8215,20 +8342,32 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -8728,20 +8867,32 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -9210,20 +9361,32 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@@ -9826,20 +9989,32 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -9979,20 +10154,32 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -10139,20 +10326,32 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@@ -10323,20 +10522,32 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t DefaultStartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t DefaultMemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMin = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLow = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryLow = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryHigh = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryHigh = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemorySwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemorySwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryZSwapMax = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+      readonly t StartupMemoryZSwapMax = ...;
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly t MemoryLimit = ...;
       @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
       readonly s DevicePolicy = '...';
@@ -10496,20 +10707,32 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
 
     <!--property DefaultMemoryLow is not documented!-->
 
+    <!--property DefaultStartupMemoryLow is not documented!-->
+
     <!--property DefaultMemoryMin is not documented!-->
 
     <!--property MemoryMin is not documented!-->
 
     <!--property MemoryLow is not documented!-->
 
+    <!--property StartupMemoryLow is not documented!-->
+
     <!--property MemoryHigh is not documented!-->
 
+    <!--property StartupMemoryHigh is not documented!-->
+
     <!--property MemoryMax is not documented!-->
 
+    <!--property StartupMemoryMax is not documented!-->
+
     <!--property MemorySwapMax is not documented!-->
 
+    <!--property StartupMemorySwapMax is not documented!-->
+
     <!--property MemoryZSwapMax is not documented!-->
 
+    <!--property StartupMemoryZSwapMax is not documented!-->
+
     <!--property MemoryLimit is not documented!-->
 
     <!--property DevicePolicy is not documented!-->
@@ -10686,20 +10909,32 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
 
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
     <variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
 
     <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
index c5b457bd7f9d42ad009223b24818c04515c3b3b6..dcae4442eaa55af24d52de50c729367ea3f0d8a4 100644 (file)
@@ -720,6 +720,7 @@ manpages = [
    'sd_journal_wait'],
   ''],
  ['sd_journal_get_realtime_usec', '3', ['sd_journal_get_monotonic_usec'], ''],
+ ['sd_journal_get_seqnum', '3', [], ''],
  ['sd_journal_get_usage', '3', [], ''],
  ['sd_journal_has_runtime_files', '3', ['sd_journal_has_persistent_files'], ''],
  ['sd_journal_next',
index 0c4f6e3a35b9fd35dbfeba9ae48dba59f4cc2d29..3f138899bd188fa63186f943792a15c529d103a8 100644 (file)
     </para>
 
     <para><function>sd_bus_message_new_signal_to()</function> is a shorthand for creating a new bus message
-    to a specific destination. It's behavior is similar to calling <function>sd_bus_message_new_signal()</function>
-    followed by calling <citerefentry><refentrytitle>sd_bus_message_set_destination()</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+    to a specific destination. It's behavior is similar to calling
+    <function>sd_bus_message_new_signal()</function> followed by calling
+    <citerefentry><refentrytitle>sd_bus_message_set_destination</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+    </para>
   </refsect1>
 
   <refsect1>
index 89c75f0e91edc88481648ec8bfdbc76dce6dafbd..688f43227b190b99e79aed52262e24319a95e220 100644 (file)
@@ -93,7 +93,7 @@
     <function>sd_bus_message_exit_container()</function> may only be called after iterating through all
     members of the container, i.e. reading or skipping them. Use
     <citerefentry><refentrytitle>sd_bus_message_skip</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-    to skip over felds of a container in order to be able to exit the container with
+    to skip over fields of a container in order to be able to exit the container with
     <function>sd_bus_message_exit_container()</function> without reading all members.</para>
   </refsect1>
 
index 025b6a1a5aaefea8f98a716a4c216d7170524286..f5096f8db8fc54762d034d1225806890a47ee20e 100644 (file)
       <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd_journal_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>sd_id128_get_boot</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>clock_gettime</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
diff --git a/man/sd_journal_get_seqnum.xml b/man/sd_journal_get_seqnum.xml
new file mode 100644 (file)
index 0000000..732f660
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
+
+<refentry id="sd_journal_get_seqnum"
+          xmlns:xi="http://www.w3.org/2001/XInclude">
+
+  <refentryinfo>
+    <title>sd_journal_get_seqnum</title>
+    <productname>systemd</productname>
+  </refentryinfo>
+
+  <refmeta>
+    <refentrytitle>sd_journal_get_seqnum</refentrytitle>
+    <manvolnum>3</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>sd_journal_get_seqnum</refname>
+    <refpurpose>Read sequence number from the current journal entry</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <funcsynopsis>
+      <funcsynopsisinfo>#include &lt;systemd/sd-journal.h&gt;</funcsynopsisinfo>
+
+      <funcprototype>
+        <funcdef>int <function>sd_journal_get_seqnum</function></funcdef>
+        <paramdef>sd_journal *<parameter>j</parameter></paramdef>
+        <paramdef>uint64_t *<parameter>ret_seqnum</parameter></paramdef>
+        <paramdef>sd_id128_t *<parameter>ret_seqnum_id</parameter></paramdef>
+      </funcprototype>
+    </funcsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1>
+    <title>Description</title>
+
+    <para><function>sd_journal_get_seqnum()</function> returns the sequence number of the current journal
+    entry. It takes three arguments: the journal context object, a pointer to a 64-bit unsigned integer to
+    store the sequence number in, and a buffer to return the 128bit sequence number ID in.</para>
+
+    <para>When writing journal entries to disk each <command>systemd-journald</command> instance will number
+    them sequentially, starting from 1 for the first entry written after subsystem intialization. Each such
+    series of sequence numbers is associated with a 128bit sequence number ID which is initialized randomly,
+    once at <command>systemd-journal</command> initialization. Thus, while multiple instances of
+    <command>systemd-journald</command> will assign the same sequence numbers to their written journal
+    entries, they will have a distinct sequence number IDs. The sequence number is assigned at the moment of
+    writing the entry to disk. If log entries are rewritten (for example because the volatile logs from
+    <filename>/run/log/</filename> are flushed to <filename>/var/log/</filename> via
+    <filename>systemd-journald-flush.service</filename>) they will get new sequence numbers assigned.</para>
+
+    <para>Sequence numbers may be used to order entries (entries associated with the same sequence number ID
+    and lower sequence numbers should be ordered chronologically before those with higher sequence numbers),
+    and to detect lost entries. Note that journal service instances typically write to multiple journal files
+    in parallel (for example because <varname>SplitMode=</varname> is used), in which case each journal file
+    will only contain a subset of the sequence numbers. To recover the full stream of journal entries the
+    files must be combined ("interleaved"), a process that primarily relies on the sequence numbers. When
+    journal files are rotated (due to size or time limits), the series of sequence numbers is continued in
+    the replacement files. All journal files generated from the same journal instance will carry the same
+    sequence number ID.</para>
+
+    <para>As the sequence numbers are assigned at the moment of writing the journal entries to disk they do
+    not exist if storage is disabled via <varname>SplitMode=</varname>.</para>
+
+    <para>The <varname>ret_seqnum</varname> and <varname>ret_seqnum_id</varname> parameters may be specified
+    as <constant>NULL</constant> in which case the relevant data is not returned (but the call will otherwise
+    succeed).</para>
+
+    <para>Note that these functions will not work before
+    <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+    (or related call) has been called at least
+    once, in order to position the read pointer at a valid entry.</para>
+  </refsect1>
+
+  <refsect1>
+    <title>Return Value</title>
+
+    <para><function>sd_journal_get_seqnum()</function> returns 0 on success or a negative errno-style error
+    code..</para>
+  </refsect1>
+
+  <refsect1>
+    <title>Notes</title>
+
+    <xi:include href="threads-aware.xml" xpointer="strict"/>
+
+    <xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
+  </refsect1>
+
+  <refsect1>
+    <title>See Also</title>
+
+    <para>
+      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>sd_journal_get_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+    </para>
+  </refsect1>
+
+</refentry>
index 04b2e9813d90c2e4ba3788efd1a6790ffb53ef9c..dfaca638c2a8ed0a2fb30ce32aba382d338c8b52 100644 (file)
@@ -501,10 +501,11 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
           <term><command>kill <replaceable>PATTERN</replaceable>…</command></term>
 
           <listitem>
-            <para>Send a signal to one or more processes of the
-            unit. Use <option>--kill-whom=</option> to select which
-            process to kill. Use <option>--signal=</option> to select
-            the signal to send.</para>
+            <para>Send a UNIX process signal to one or more processes of the unit. Use
+            <option>--kill-whom=</option> to select which process to send the signal to. Use
+            <option>--signal=</option> to select the signal to send. Combine with
+            <option>--kill-value=</option> to enqueue a POSIX Realtime Signal with an associated
+            value.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
@@ -2124,40 +2125,46 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
         <term><option>--kill-whom=</option></term>
 
         <listitem>
-          <para>When used with <command>kill</command>, choose which
-          processes to send a signal to. Must be one of
-          <option>main</option>, <option>control</option> or
-          <option>all</option> to select whether to kill only the main
-          process, the control process or all processes of the
-          unit. The main process of the unit is the one that defines
-          the life-time of it. A control process of a unit is one that
-          is invoked by the manager to induce state changes of it. For
-          example, all processes started due to the
-          <varname>ExecStartPre=</varname>,
-          <varname>ExecStop=</varname> or
-          <varname>ExecReload=</varname> settings of service units are
-          control processes. Note that there is only one control
-          process per unit at a time, as only one state change is
-          executed at a time. For services of type
-          <varname>Type=forking</varname>, the initial process started
-          by the manager for <varname>ExecStart=</varname> is a
-          control process, while the process ultimately forked off by
-          that one is then considered the main process of the unit (if
-          it can be determined). This is different for service units
-          of other types, where the process forked off by the manager
-          for <varname>ExecStart=</varname> is always the main process
-          itself. A service unit consists of zero or one main process,
-          zero or one control process plus any number of additional
-          processes. Not all unit types manage processes of these
-          types however. For example, for mount units, control processes
-          are defined (which are the invocations of
-          <filename>&MOUNT_PATH;</filename> and
-          <filename>&UMOUNT_PATH;</filename>), but no main process
-          is defined. If omitted, defaults to
+          <para>When used with <command>kill</command>, choose which processes to send a UNIX process signal
+          to. Must be one of <option>main</option>, <option>control</option> or <option>all</option> to
+          select whether to kill only the main process, the control process or all processes of the unit. The
+          main process of the unit is the one that defines the life-time of it. A control process of a unit
+          is one that is invoked by the manager to induce state changes of it. For example, all processes
+          started due to the <varname>ExecStartPre=</varname>, <varname>ExecStop=</varname> or
+          <varname>ExecReload=</varname> settings of service units are control processes. Note that there is
+          only one control process per unit at a time, as only one state change is executed at a time. For
+          services of type <varname>Type=forking</varname>, the initial process started by the manager for
+          <varname>ExecStart=</varname> is a control process, while the process ultimately forked off by that
+          one is then considered the main process of the unit (if it can be determined). This is different
+          for service units of other types, where the process forked off by the manager for
+          <varname>ExecStart=</varname> is always the main process itself. A service unit consists of zero or
+          one main process, zero or one control process plus any number of additional processes. Not all unit
+          types manage processes of these types however. For example, for mount units, control processes are
+          defined (which are the invocations of <filename>&MOUNT_PATH;</filename> and
+          <filename>&UMOUNT_PATH;</filename>), but no main process is defined. If omitted, defaults to
           <option>all</option>.</para>
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><option>--kill-value=</option><replaceable>INT</replaceable></term>
+
+        <listitem><para>If used with the <command>kill</command> command, enqueues a signal along with the
+        specified integer value parameter to the specified process(es). This operation is only available for
+        POSIX Realtime Signals (i.e. <option>--signal=SIGRTMIN+…</option> or
+        <option>--signal=SIGRTMAX-…</option>), and ensures the signals are generated via the <citerefentry
+        project='man-pages'><refentrytitle>sigqueue</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+        system call, rather than <citerefentry
+        project='man-pages'><refentrytitle>kill</refentrytitle><manvolnum>3</manvolnum></citerefentry>. The
+        specified value must be a 32bit signed integer, and may be specified either in decimal, in
+        hexademical (if prefixed with <literal>0x</literal>), octal (if prefixed with <literal>0o</literal>)
+        or binary (if prefixed with <literal>0b</literal>)</para>
+
+        <para>If this option is used the signal will only be enqueued on the control or main process of the
+        unit, never on other processes belonging to the unit, i.e. <option>--kill-whom=all</option> will only
+        affect main and control processes but no other processes.</para></listitem>
+      </varlistentry>
+
       <xi:include href="standard-options.xml" xpointer="signal" />
 
       <varlistentry>
index 8685bae1f9ce133faf86ec1c0003be03c8e38699..49f33668aaae983c0d2b12d19513593491acc4ec 100644 (file)
@@ -77,7 +77,7 @@
       from the kernel entropy pool.</para></listitem>
 
       <listitem><para>In userspace the <filename>systemd-boot-random-seed.service</filename> service updates
-      the boot loader random seed with a new value derived from the kernel kernel entropy pool.</para></listitem>
+      the boot loader random seed with a new value derived from the kernel entropy pool.</para></listitem>
     </orderedlist>
 
     <para>This logic should ensure that the kernel's entropy pool is seeded during earliest bool already, if
index dd76cc0fb6608b1ecad51bad5256014520d08292..5a154686f5f7b305ca9676db8c5de55720a70eef 100644 (file)
@@ -25,6 +25,9 @@
     <cmdsynopsis>
       <command>systemd-notify <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">VARIABLE=VALUE</arg></command>
     </cmdsynopsis>
+    <cmdsynopsis>
+      <command>systemd-notify --exec <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">VARIABLE=VALUE</arg> ; <arg rep="repeat">CMDLINE</arg></command>
+    </cmdsynopsis>
   </refsynopsisdiv>
 
   <refsect1>
         this option set is prone to race conditions in all other cases.</para></listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><option>--exec</option></term>
+
+        <listitem><para>If specified <command>systemd-notify</command> will execute another command line
+        after it completed its operation, replacing its own process. If used, the list of assignments to
+        include in the message sent must be followed by a <literal>;</literal> character (as separate
+        argument), followed by the command line to execute. This permits "chaining" of commands, i.e. issuing
+        one operation, followed immediately by another, without changing PIDs.</para>
+
+        <para>Note that many shells interpret <literal>;</literal> as their own separator for command lines,
+        hence when <command>systemd-notify</command> is invoked from a shell the semicolon must usually be
+        escaped as <literal>\;</literal>.</para></listitem>
+      </varlistentry>
+
       <xi:include href="standard-options.xml" xpointer="help" />
       <xi:include href="standard-options.xml" xpointer="version" />
     </variablelist>
index ca33d82a7468c90644f11eda5e62760093c00ec6..e2c751692f14af9a74437280bc7693e093a2bf9a 100644 (file)
@@ -1405,7 +1405,7 @@ After=sys-subsystem-net-devices-ens1.device</programlisting>
 
         <orderedlist>
           <listitem><para>The user's home directory is bind mounted from the host into
-          <filename>/run/hosts/home/</filename>.</para></listitem>
+          <filename>/run/host/home/</filename>.</para></listitem>
 
           <listitem><para>An additional UID/GID mapping is added that maps the host user's UID/GID to a
           container UID/GID, allocated from the 60514…60577 range.</para></listitem>
index f9dd5615aa070bccb4b31b5d3b0380e1c528a7e8..643dbe60cebef250ae55537fae7b2bff14109106 100644 (file)
 
     <para><filename>systemd-pcrfs-root.service</filename> and <filename>systemd-pcrfs@.service</filename> are
     automatically pulled into the initial transaction by
-    <citerefentry><refentrytitle>systemd-gpt-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+    <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
     for the root and <filename>/var/</filename> file
     systems. <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
     will do this for all mounts with the <option>x-systemd.pcrfs</option> mount option in
       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>systemd-stub</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>systemd-measure</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>systemd-gpt-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
       <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
     </para>
   </refsect1>
index b6e71cce2ba51754a9f8190f01261e8ea05b269d..bad21ceb0c2bc7792e542a3f100a80a9fc47b526 100644 (file)
@@ -3154,7 +3154,13 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
         authenticated credentials improves security as credentials are not stored in plaintext and only
         authenticated and decrypted into plaintext the moment a service requiring them is started. Moreover,
         credentials may be bound to the local hardware and installations, so that they cannot easily be
-        analyzed offline, or be generated externally.</para>
+        analyzed offline, or be generated externally. When <varname>DevicePolicy=</varname> is set to
+        <literal>closed</literal> or <literal>strict</literal>, or set to <literal>auto</literal> and
+        <varname>DeviceAllow=</varname> is set, or <varname>PrivateDevices=</varname> is set, then this
+        setting adds <filename>/dev/tpmrm0</filename> with <constant>rw</constant> mode to
+        <varname>DeviceAllow=</varname>. See
+        <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+        for the details about <varname>DevicePolicy=</varname> or <varname>DeviceAllow=</varname>.</para>
 
         <para>The credential files/IPC sockets must be accessible to the service manager, but don't have to
         be directly accessible to the unit's processes: the credential data is read and copied into separate,
index d9e3d5760ce0a1c3e9c982d92741d8c6970c3c88..9eaa4ce1fc62e383f61b421fa209b1201a3b3143 100644 (file)
           </para>
         </listitem>
       </varlistentry>
+
+      <varlistentry>
+        <term><varname>__SEQNUM=</varname></term>
+        <term><varname>__SEQNUM_ID=</varname></term>
+
+        <listitem><para>The sequence number (and associated sequence number ID) of this journal entry in the
+        journal file it originates from. See
+        <citerefentry><refentrytitle>sd_journal_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+        for details.</para></listitem>
+      </varlistentry>
     </variablelist>
   </refsect1>
 
index 4b19b18231a8ae1b766ea6dcfade166d05ec086c..f0112bb36b35c790e6b28e87397ffccaeed9b049 100644 (file)
 
       <varlistentry>
         <term><varname>MemoryMin=<replaceable>bytes</replaceable></varname>, <varname>MemoryLow=<replaceable>bytes</replaceable></varname></term>
+        <term><varname>StartupMemoryLow=<replaceable>bytes</replaceable></varname></term>
 
         <listitem>
           <para>Specify the memory usage protection of the executed processes in this unit.
           in the unit itself.
           Using it to set a default child allocation is only useful on kernels older than 5.7,
           which do not support the <literal>memory_recursiveprot</literal> cgroup2 mount option.</para>
+
+          <para>While <varname>StartupMemoryLow=</varname> applies to the startup and shutdown phases of the system,
+          <varname>MemoryMin=</varname> applies to normal runtime of the system, and if the former is not set also to
+          the startup and shutdown phases. Using <varname>StartupMemoryLow=</varname> allows prioritizing specific services at
+          boot-up and shutdown differently than during normal runtime.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
         <term><varname>MemoryHigh=<replaceable>bytes</replaceable></varname></term>
+        <term><varname>StartupMemoryHigh=<replaceable>bytes</replaceable></varname></term>
 
         <listitem>
           <para>Specify the throttling limit on memory usage of the executed processes in this unit. Memory usage may go
           special value <literal>infinity</literal>, no memory throttling is applied. This controls the
           <literal>memory.high</literal> control group attribute. For details about this control group attribute, see
           <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+          <para>While <varname>StartupMemoryHigh=</varname> applies to the startup and shutdown phases of the system,
+          <varname>MemoryHigh=</varname> applies to normal runtime of the system, and if the former is not set also to
+          the startup and shutdown phases. Using <varname>StartupMemoryHigh=</varname> allows prioritizing specific services at
+          boot-up and shutdown differently than during normal runtime.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
         <term><varname>MemoryMax=<replaceable>bytes</replaceable></varname></term>
+        <term><varname>StartupMemoryMax=<replaceable>bytes</replaceable></varname></term>
 
         <listitem>
           <para>Specify the absolute limit on memory usage of the executed processes in this unit. If memory usage
           assigned the special value <literal>infinity</literal>, no memory limit is applied. This controls the
           <literal>memory.max</literal> control group attribute. For details about this control group attribute, see
           <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+          <para>While <varname>StartupMemoryMax=</varname> applies to the startup and shutdown phases of the system,
+          <varname>MemoryMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+          the startup and shutdown phases. Using <varname>StartupMemoryMax=</varname> allows prioritizing specific services at
+          boot-up and shutdown differently than during normal runtime.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
         <term><varname>MemorySwapMax=<replaceable>bytes</replaceable></varname></term>
+        <term><varname>StartupMemorySwapMax=<replaceable>bytes</replaceable></varname></term>
 
         <listitem>
           <para>Specify the absolute limit on swap usage of the executed processes in this unit.</para>
           special value <literal>infinity</literal>, no swap limit is applied. These settings control the
           <literal>memory.swap.max</literal> control group attribute. For details about this control group attribute,
           see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+          <para>While <varname>StartupMemorySwapMax=</varname> applies to the startup and shutdown phases of the system,
+          <varname>MemorySwapMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+          the startup and shutdown phases. Using <varname>StartupMemorySwapMax=</varname> allows prioritizing specific services at
+          boot-up and shutdown differently than during normal runtime.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
         <term><varname>MemoryZSwapMax=<replaceable>bytes</replaceable></varname></term>
+        <term><varname>StartupMemoryZSwapMax=<replaceable>bytes</replaceable></varname></term>
 
         <listitem>
           <para>Specify the absolute limit on zswap usage of the processes in this unit. Zswap is a lightweight compressed
           special value <literal>infinity</literal>, no limit is applied. These settings control the
           <literal>memory.zswap.max</literal> control group attribute. For details about this control group attribute,
           see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+          <para>While <varname>StartupMemoryZSwapMax=</varname> applies to the startup and shutdown phases of the system,
+          <varname>MemoryZSwapMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+          the startup and shutdown phases. Using <varname>StartupMemoryZSwapMax=</varname> allows prioritizing specific services at
+          boot-up and shutdown differently than during normal runtime.</para>
         </listitem>
       </varlistentry>
 
index a73aef9ed009a3fb52259fe62c40e687ee899ae6..b473a580a6794dfa027878bcd24d99a246b12f2d 100644 (file)
         <term><varname>login.issue</varname></term>
         <listitem>
           <para>The data of this credential is written to
-          <filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist
-          yet. <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-          reads this file and shows its contents at the login prompt of terminal logins. See <citerefentry
-          project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
-          details.</para>
+          <filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist yet.
+          <citerefentry project='man-pages'><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+          reads this file and shows its contents at the login prompt of terminal logins. See
+          <citerefentry project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+          for details.</para>
 
           <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
           <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
         <term><varname>login.motd</varname></term>
         <listitem>
           <para>The data of this credential is written to <filename>/etc/motd.d/50-provision.conf</filename>,
-          if the file doesn't exist
-          yet. <citerefentry><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+          if the file doesn't exist yet.
+          <citerefentry project='man-pages'><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
           reads this file and shows its contents as "message of the day" during terminal logins. See
-          <citerefentry
-          project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
-          details.</para>
+          <citerefentry project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+          for details.</para>
 
           <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
           <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
         <term><varname>network.hosts</varname></term>
         <listitem>
           <para>The data of this credential is written to <filename>/etc/hosts</filename>, if the file
-          doesn't exist yet. See <citerefentry
-          project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
-          details.</para>
+          doesn't exist yet. See
+          <citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+          for details.</para>
 
           <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
           <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
index e5c70d4a18a9934d74b3cde4552c4f6c1d4ab3de..8d39be3d19b06e8bedcc8f3e1a26e700e68e22d2 100644 (file)
@@ -12,7 +12,7 @@
       <listitem>
         <para>Configures the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
         <literal>clsact</literal>, <literal>ingress</literal> or a class identifier. The class identifier is
-        specified as the major and minor numbers in hexadecimal in the range 0x1–Oxffff separated with a
+        specified as the major and minor numbers in hexadecimal in the range 0x1–0xffff separated with a
         colon (<literal>major:minor</literal>). Defaults to <literal>root</literal>.</para>
       </listitem>
     </varlistentry>
@@ -30,7 +30,7 @@
       <listitem>
         <para>Configures the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>, or a
         qdisc identifier. The qdisc identifier is specified as the major and minor numbers in hexadecimal in
-        the range 0x1–Oxffff separated with a colon (<literal>major:minor</literal>). Defaults to
+        the range 0x1–0xffff separated with a colon (<literal>major:minor</literal>). Defaults to
         <literal>root</literal>.
         </para>
       </listitem>
@@ -40,7 +40,7 @@
       <term><varname>ClassId=</varname></term>
       <listitem>
         <para>Configures the unique identifier of the class. It is specified as the major and minor numbers in
-        hexadecimal in the range 0x1–Oxffff separated with a colon (<literal>major:minor</literal>).
+        hexadecimal in the range 0x1–0xffff separated with a colon (<literal>major:minor</literal>).
         Defaults to unset.</para>
       </listitem>
     </varlistentry>
index 2b4b4f37bcb3ff75c0aa13d16798f9c80e71c6eb..11a61808d6dd23a38f0cf22d0d1d2df5e1c3d3f5 100644 (file)
@@ -88,10 +88,10 @@ A+    /path-or-glob/to/append/acls/recursively -    -    -     -           POSIX
     <filename>/sys/</filename> or <filename>/proc/</filename>, as well as some other directories below
     <filename>/var/</filename>).</para>
 
-    <para><citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+    <para><citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>
     uses this configuration to create volatile files and directories during boot and to do periodic cleanup
     afterwards. See
-    <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
+    <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry> for
     the description of <filename>systemd-tmpfiles-setup.service</filename>,
     <filename>systemd-tmpfiles-clean.service</filename>, and associated units.</para>
 
@@ -161,7 +161,7 @@ L     /tmp/foobar -    -    -     -   /dev/null</programlisting>
     <refsect2>
       <title>Type</title>
 
-      <para>The type consists of a single letter and optionally one or emore modifier characters: a plus sign
+      <para>The type consists of a single letter and optionally one or more modifier characters: a plus sign
       (<literal>+</literal>), exclamation mark (<literal>!</literal>), minus sign (<literal>-</literal>),
       equals sign (<literal>=</literal>), tilde character (<literal>~</literal>) and/or caret
       (<literal>^</literal>).</para>
@@ -533,7 +533,7 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
       <title>Mode</title>
 
       <para>The file access mode to use when creating this file or directory. If omitted or when set to
-      <literal>-</literal>, the default is used: 0755 for directories, 0644 for all other file objects.  For
+      <literal>-</literal>, the default is used: 0755 for directories, 0644 for all other file objects. For
       <varname>z</varname>, <varname>Z</varname> lines, if omitted or when set to <literal>-</literal>, the
       file access mode will not be modified. This parameter is ignored for <varname>x</varname>,
       <varname>r</varname>, <varname>R</varname>, <varname>L</varname>, <varname>t</varname>, and
index a6818cca0f5cd389da1a3d91c3b647c65f5df8c4..d79fff55357aa53242d64f16d68563c5ae9b7262 100644 (file)
 
         <listitem><para>An "engine" to for signing of the resulting binary. This option is currently passed
         verbatim to the <option>--engine=</option> option of
-        <citerefentry><refentrytitle>sbsign</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+        <citerefentry project='archlinux'><refentrytitle>sbsign</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
         </para></listitem>
       </varlistentry>
 
index bfc86857d62663d138d192a7a15ea57c0c2ea0e8..319246c6393eb3144454ca9cd7d20e88898b83db 100644 (file)
@@ -985,6 +985,9 @@ conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
 nspawn_locale = get_option('nspawn-locale')
 conf.set_quoted('SYSTEMD_NSPAWN_LOCALE', nspawn_locale)
 
+default_keymap = get_option('default-keymap')
+conf.set_quoted('SYSTEMD_DEFAULT_KEYMAP', default_keymap)
+
 localegen_path = get_option('localegen-path')
 if localegen_path != ''
         conf.set_quoted('LOCALEGEN_PATH', localegen_path)
index 17c88e23a1d3bee5d4743ee88fb8d02de8505810..f59c3997951d37ae92b5ba1a25d35a6d70f9b802 100644 (file)
@@ -312,6 +312,8 @@ option('default-locale', type : 'string', value : 'C.UTF-8',
        description : 'default locale used when /etc/locale.conf does not exist')
 option('nspawn-locale', type : 'string', value : 'C.UTF-8',
        description : 'default locale used by systemd-nspawn when executing commands in a container')
+option('default-keymap', type : 'string', value : 'us',
+       description : 'default keymap used when populating /etc/vconsole.conf')
 option('localegen-path', type : 'string', value : '',
        description : 'absolute path to the locale-gen binary in case the system is using locale-gen')
 option('service-watchdog', type : 'string', value : '3min',
index b058b0352f7df2f9ba7f8a55a5c9b7dabee6c19b..b9ee0f1ae2d443405bddfdc999d0ac456e2553bc 100755 (executable)
@@ -86,7 +86,19 @@ if [ ! -f "$BUILDDIR"/build.ninja ] ; then
                 rootprefix=/${rootprefix#/}
         fi
 
+        # On debian-like systems the library directory is not /usr/lib64 but /usr/lib/<arch-triplet>/.
+        # It is important to use the right one especially for cryptsetup plugins, otherwise they will be
+        # installed in the wrong directory and not be found by cryptsetup. Assume native build.
+        if grep -q -e "ID=debian" -e "ID_LIKE=debian" /etc/os-release && command -v dpkg 2>/dev/null; then
+                LIBDIR="-Drootlibdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
+                PAMDIR="-Dpamlibdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/security"
+        fi
+
+        # Cannot quote $LIBDIR and $PAMDIR, because they may be empty, and meson will fail.
+        # shellcheck disable=SC2086
         meson setup "$BUILDDIR" \
+                ${LIBDIR:-} \
+                ${PAMDIR:-} \
                 -D "sysvinit-path=$sysvinit_path" \
                 -D "rootprefix=$rootprefix" \
                 -D man=false \
@@ -175,10 +187,6 @@ fi
 cd "$BUILDDIR"
 ninja "$@"
 if [ "$WITH_TESTS" = 1 ] ; then
-        for id in 1 2 3; do
-                getent group $id >/dev/null || echo "g testgroup$id $id -" | ./systemd-sysusers -
-        done
-
         if [ -n "$SANITIZERS" ]; then
                 export ASAN_OPTIONS="$ASAN_OPTIONS"
                 export UBSAN_OPTIONS="$UBSAN_OPTIONS"
@@ -292,7 +300,6 @@ if [ -d mkosi.kernel/ ]; then
 
         KERNEL_RELEASE=$(make O="$BUILDDIR"/mkosi.kernel -s kernelrelease)
         mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
-        make O="$BUILDDIR/mkosi.kernel" INSTALL_HDR_PATH=/usr headers_install
         make O="$BUILDDIR/mkosi.kernel" INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
         make O="$BUILDDIR/mkosi.kernel" INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
         mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
index a91378da971b7255b70e734a73462f65f5f4a971..57db7ecda900f17d4d98041608db15a099b044b9 100644 (file)
@@ -11,8 +11,6 @@ OutputDirectory=mkosi.output
 [Content]
 BuildDirectory=mkosi.builddir
 Cache=mkosi.cache
-SourceFileTransfer=mount
-SourceFileTransferFinal=copy-git-others
 Packages=
         acl
         bash-completion
index ce6eafe31b103ab4f87444248b3a8943a4a3aeb2..94aeaed9c9cc3b85626f3e3f7bf3d5d75eaab232 100644 (file)
@@ -3,6 +3,10 @@
 # This is a settings file for OS image generation using mkosi (https://github.com/systemd/mkosi).
 # Symlink this file to mkosi.default in the project root directory and invoke "mkosi" to build an OS image.
 
+# We use python3*dist() throughout this file because we need to make sure the python3.9dis() packages are
+# installed on CentOS Stream 8. mkosi doesn't support release specific configuration yet so we use the globs
+# to get the necessary packages on both CentOS Stream 8 and CentOS Stream 9.
+
 [Distribution]
 Distribution=centos
 Repositories=epel
@@ -37,7 +41,10 @@ Packages=
         polkit
         popt
         procps-ng
-        python3dist(pefile)
+        python3*dist(pefile)
+        python3*dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
+        python3*dist(pytest)
+        python39
         quota
         tpm2-tss
         vim-common
@@ -91,7 +98,6 @@ BuildPackages=
         pkgconfig(tss2-rc)
         pkgconfig(valgrind)
         pkgconfig(xkbcommon)
-        python3dist(docutils)
-        python3dist(jinja2)
-        python3dist(lxml)
-        python3dist(pytest)
+        python3*dist(docutils)
+        python3*dist(jinja2)
+        python3*dist(lxml)
index 356b8b06ab5b00eb14ff92dca08f9de4e2735952..905378a9b4a92d567405c37be4d19ec8343ef92f 100644 (file)
@@ -44,6 +44,7 @@ Packages=
 BuildPackages=
         bpftool
         docbook-xsl
+        dpkg-dev
         g++
         gcc-multilib
         libacl1-dev
index 99cffa043d458b9bc2cc8e3513ec5a1cfd1256f7..647a71826c251c9539fe401ee1feaa5b3decbe38 100644 (file)
@@ -45,6 +45,7 @@ Packages=
 
 BuildPackages=
         docbook-xsl
+        dpkg-dev
         g++
         gcc-multilib
         libacl1-dev
index 9d377cf716c0b0050590e94ae45507b8cfea0929..7e00df015259649c533c9ccbea3c7bf89e0ff6e4 100755 (executable)
@@ -3,17 +3,14 @@
 set -e
 
 if [ "$(grep '^ID=' /etc/os-release)" = "ID=\"centos\"" ] && [ "$(grep '^VERSION=' /etc/os-release)" = "VERSION=\"8\"" ]; then
-    # python39-pluggy is a pytest dependency that's not installed for some reason.
-    dnf \
-        -y \
-        --enablerepo=powertools \
-         --setopt=powertools.module_hotfixes=true \
-         install \
-         python39 \
-         python39-pefile \
-         python39-jinja2 \
-         python39-pytest \
-         python39-pluggy
     alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
     alternatives --set python3 /usr/bin/python3.9
 fi
+
+# Make sure the necessary test users are available in the build image. We do this here because the build
+# script does not run as root.
+if [ "$1" = "build" ]; then
+    for id in 1 2 3; do
+        getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
+    done
+fi
index 16463a9b93f2ffd09ddeebd55e4d84c3ef0f4bd2..ea141c54bdf65ee48d6ae29d63aacea645402624 100644 (file)
@@ -16,6 +16,7 @@
 #include "fd-util.h"
 #include "log.h"
 #include "macro.h"
+#include "main-func.h"
 #include "pretty-print.h"
 #include "process-util.h"
 #include "signal-util.h"
@@ -48,9 +49,12 @@ static int add_epoll(int epoll_fd, int fd) {
         return 0;
 }
 
-static int open_sockets(int *epoll_fd, bool accept) {
+static int open_sockets(int *ret_epoll_fd, bool accept) {
+        _cleanup_close_ int epoll_fd = -EBADF;
         int n, r, count = 0;
 
+        assert(ret_epoll_fd);
+
         n = sd_listen_fds(true);
         if (n < 0)
                 return log_error_errno(n, "Failed to read listening file descriptors from environment: %m");
@@ -76,32 +80,32 @@ static int open_sockets(int *epoll_fd, bool accept) {
                         except[i] = SD_LISTEN_FDS_START + i;
 
                 log_close();
+                log_set_open_when_needed(true);
+
                 r = close_all_fds(except, n);
                 if (r < 0)
                         return log_error_errno(r, "Failed to close all file descriptors: %m");
         }
 
-        /** Note: we leak some fd's on error here. I doesn't matter
-         *  much, since the program will exit immediately anyway, but
-         *  would be a pain to fix.
-         */
+        /* Note: we leak some fd's on error here. It doesn't matter much, since the program will exit
+         * immediately anyway, but would be a pain to fix. */
 
         STRV_FOREACH(address, arg_listen) {
                 r = make_socket_fd(LOG_DEBUG, *address, arg_socket_type, (arg_accept * SOCK_CLOEXEC));
-                if (r < 0) {
-                        log_open();
+                if (r < 0)
                         return log_error_errno(r, "Failed to open '%s': %m", *address);
-                }
 
                 assert(r == SD_LISTEN_FDS_START + count);
                 count++;
         }
 
-        if (arg_listen)
+        if (arg_listen) {
                 log_open();
+                log_set_open_when_needed(false);
+        }
 
-        *epoll_fd = epoll_create1(EPOLL_CLOEXEC);
-        if (*epoll_fd < 0)
+        epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+        if (epoll_fd < 0)
                 return log_error_errno(errno, "Failed to create epoll object: %m");
 
         for (int fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + count; fd++) {
@@ -110,11 +114,12 @@ static int open_sockets(int *epoll_fd, bool accept) {
                 getsockname_pretty(fd, &name);
                 log_info("Listening on %s as %i.", strna(name), fd);
 
-                r = add_epoll(*epoll_fd, fd);
+                r = add_epoll(epoll_fd, fd);
                 if (r < 0)
                         return r;
         }
 
+        *ret_epoll_fd = TAKE_FD(epoll_fd);
         return count;
 }
 
@@ -432,9 +437,9 @@ static int parse_argv(int argc, char *argv[]) {
         return 1 /* work to do */;
 }
 
-int main(int argc, char **argv) {
+static int run(int argc, char **argv) {
+        _cleanup_close_ int epoll_fd = -EBADF;
         int r, n;
-        int epoll_fd = -EBADF;
 
         log_show_color(true);
         log_parse_environment();
@@ -442,19 +447,17 @@ int main(int argc, char **argv) {
 
         r = parse_argv(argc, argv);
         if (r <= 0)
-                return r == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+                return r;
 
         r = install_chld_handler();
         if (r < 0)
-                return EXIT_FAILURE;
+                return r;
 
         n = open_sockets(&epoll_fd, arg_accept);
         if (n < 0)
-                return EXIT_FAILURE;
-        if (n == 0) {
-                log_error("No sockets to listen on specified or passed in.");
-                return EXIT_FAILURE;
-        }
+                return n;
+        if (n == 0)
+                return log_error_errno(SYNTHETIC_ERRNO(ENOENT), "No sockets to listen on specified or passed in.");
 
         for (;;) {
                 struct epoll_event event;
@@ -463,20 +466,19 @@ int main(int argc, char **argv) {
                         if (errno == EINTR)
                                 continue;
 
-                        log_error_errno(errno, "epoll_wait() failed: %m");
-                        return EXIT_FAILURE;
+                        return log_error_errno(errno, "epoll_wait() failed: %m");
                 }
 
                 log_info("Communication attempt on fd %i.", event.data.fd);
                 if (arg_accept) {
                         r = do_accept(argv[optind], argv + optind, event.data.fd);
                         if (r < 0)
-                                return EXIT_FAILURE;
+                                return r;
                 } else
                         break;
         }
 
-        exec_process(argv[optind], argv + optind, SD_LISTEN_FDS_START, (size_t) n);
-
-        return EXIT_SUCCESS;
+        return exec_process(argv[optind], argv + optind, SD_LISTEN_FDS_START, (size_t) n);
 }
+
+DEFINE_MAIN_FUNCTION(run);
index aaf7d2ceeb80038495fa40515309ab9fb157f5a9..c587adad7b063d824c543fe78f17ca44456867e4 100644 (file)
@@ -276,7 +276,8 @@ int version(void) {
         if (colors_enabled())
                 b = systemd_features_with_color();
 
-        printf("systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n%s\n",
+        printf("%ssystemd " STRINGIFY(PROJECT_VERSION) "%s (" GIT_VERSION ")\n%s\n",
+               ansi_highlight(), ansi_normal(),
                b ?: systemd_features);
         return 0;
 }
index a8e4a1bb2d27ec2a0d34a78a4cf61782d91e3233..feda5969390c6f357600e0666c03191d0b1e1053 100644 (file)
@@ -1198,6 +1198,28 @@ int cg_path_get_unit(const char *path, char **ret) {
         return 0;
 }
 
+int cg_path_get_unit_path(const char *path, char **ret) {
+        _cleanup_free_ char *path_copy = NULL;
+        char *unit_name;
+
+        assert(path);
+        assert(ret);
+
+        path_copy = strdup(path);
+        if (!path_copy)
+                return -ENOMEM;
+
+        unit_name = (char *)skip_slices(path_copy);
+        unit_name[strcspn(unit_name, "/")] = 0;
+
+        if (!unit_name_is_valid(cg_unescape(unit_name), UNIT_NAME_PLAIN|UNIT_NAME_INSTANCE))
+                return -ENXIO;
+
+        *ret = TAKE_PTR(path_copy);
+
+        return 0;
+}
+
 int cg_pid_get_unit(pid_t pid, char **unit) {
         _cleanup_free_ char *cgroup = NULL;
         int r;
index c9aae5abf6272e1fd2d7ed71695f2c2d6f294d86..b69f1683dbe781e6b3ab04b1eb07a530097ca841 100644 (file)
@@ -261,6 +261,7 @@ int cg_path_get_cgroupid(const char *path, uint64_t *ret);
 int cg_path_get_session(const char *path, char **session);
 int cg_path_get_owner_uid(const char *path, uid_t *uid);
 int cg_path_get_unit(const char *path, char **unit);
+int cg_path_get_unit_path(const char *path, char **unit);
 int cg_path_get_user_unit(const char *path, char **unit);
 int cg_path_get_machine_name(const char *path, char **machine);
 int cg_path_get_slice(const char *path, char **slice);
index 4d6d01cd9928d69af955471f6992f8f9a40b0354..430db0c87907b8b61a40fad431b96aa4e0e6f1f8 100644 (file)
@@ -808,6 +808,18 @@ int fd_reopen_condition(
         return new_fd;
 }
 
+int fd_is_opath(int fd) {
+        int r;
+
+        assert(fd >= 0);
+
+        r = fcntl(fd, F_GETFL);
+        if (r < 0)
+                return -errno;
+
+        return FLAGS_SET(r, O_PATH);
+}
+
 int read_nr_open(void) {
         _cleanup_free_ char *nr_open = NULL;
         int r;
index 952afdd64f0054755790dd2861f93254e0c21239..f5357860f55b58b7568fb8abce7b099b25ee8430 100644 (file)
@@ -104,6 +104,7 @@ static inline int make_null_stdio(void) {
 
 int fd_reopen(int fd, int flags);
 int fd_reopen_condition(int fd, int flags, int mask, int *ret_new_fd);
+int fd_is_opath(int fd);
 int read_nr_open(void);
 int fd_get_diskseq(int fd, uint64_t *ret);
 
index 51b11ab9c7d12e85dc76500c3216e82deb9cc43b..c802db749b369744b45cd09526c73140d690ce5b 100644 (file)
@@ -504,7 +504,7 @@ int read_virtual_file_fd(int fd, size_t max_size, char **ret_contents, size_t *r
                  * at least one more byte to be able to distinguish EOF from truncation. */
                 if (max_size != SIZE_MAX && n > max_size) {
                         n = size; /* Make sure we never use more than what we sized the buffer for (so that
-                                   * we have one free byte in it for the trailing NUL we add below).*/
+                                   * we have one free byte in it for the trailing NUL we add below). */
                         truncated = true;
                         break;
                 }
index fc5793139ed709c656248ae0b6eb6018aa96ba83..6a4373101205a62b2a0368088f76a8672d696614 100644 (file)
@@ -347,6 +347,11 @@ void log_set_target(LogTarget target) {
         log_target = target;
 }
 
+void log_set_target_and_open(LogTarget target) {
+        log_set_target(target);
+        log_open();
+}
+
 void log_close(void) {
         /* Do not call from library code. */
 
index f73d4c41545c07c6cad1345ee562672043f9c098..0d4956e6b5782d65a8b52f49d94b44f4a4f713ef 100644 (file)
@@ -51,6 +51,7 @@ static inline void clear_log_syntax_callback(dummy_t *dummy) {
 const char *log_target_to_string(LogTarget target) _const_;
 LogTarget log_target_from_string(const char *s) _pure_;
 void log_set_target(LogTarget target);
+void log_set_target_and_open(LogTarget target);
 int log_set_target_from_string(const char *e);
 LogTarget log_get_target(void) _pure_;
 
index 0d032866cfea0c0dba110e521bbfef5ae1773dd8..25e42db0b6bfc413fa67cc11b0821992dd8434ba 100644 (file)
@@ -418,7 +418,7 @@ typedef struct {
 
 assert_cc(sizeof(dummy_t) == 0);
 
-/* A little helper for subtracting 1 off a pointer in a safe UB-free way. This is intended to be used for for
+/* A little helper for subtracting 1 off a pointer in a safe UB-free way. This is intended to be used for
  * loops that count down from a high pointer until some base. A naive loop would implement this like this:
  *
  * for (p = end-1; p >= base; p--) …
index c104fcfba3151a528f05514b091100c9c0a3f4bc..27a33adecb4edd3691e7ac07eff560235902351a 100644 (file)
@@ -58,7 +58,7 @@
 #define UDF_SUPER_MAGIC 0x15013346
 #endif
 
-/* b1123ea6d3b3da25af5c8a9d843bd07ab63213f4 (4.8)*/
+/* b1123ea6d3b3da25af5c8a9d843bd07ab63213f4 (4.8) */
 #ifndef BALLOON_KVM_MAGIC
 #define BALLOON_KVM_MAGIC 0x13661366
 #endif
index 37a4ac1fe4bddda2b23c2a2d0ee0cf04bad7eff4..bf844e5b7fe05776d61b2706ea67e5f4b7ea1640 100644 (file)
@@ -171,7 +171,7 @@ int open_extension_release(const char *root, const char *extension, bool relax_e
 
                                 /* 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
-                                 * in case we are in the fallback path.*/
+                                 * in case we are in the fallback path. */
                                 if (r == 0) {
                                         r = -ENOTUNIQ;
                                         break;
index 70aa15f0600695d9878732cfd87086a733da320e..b6bf83c2cfdf498eefc67937d1ff78804a2f5788 100644 (file)
@@ -596,6 +596,8 @@ int get_process_umask(pid_t pid, mode_t *ret) {
         r = get_proc_field(p, "Umask", WHITESPACE, &m);
         if (r == -ENOENT)
                 return -ESRCH;
+        if (r < 0)
+                return r;
 
         return parse_mode(m, ret);
 }
index d7946a3641a5b1f7e56fa6f4f69ba58e76aa0ee9..f01873e6080d37b768325f6a1d1d40bfc4b76f48 100644 (file)
@@ -1425,52 +1425,60 @@ int socket_get_mtu(int fd, int af, size_t *ret) {
         return 0;
 }
 
-int connect_unix_path(int fd, int dir_fd, const char *path) {
-        _cleanup_close_ int inode_fd = -EBADF;
+static int connect_unix_path_simple(int fd, const char *path) {
         union sockaddr_union sa = {
                 .un.sun_family = AF_UNIX,
         };
-        size_t path_len;
-        socklen_t salen;
+        size_t l;
 
         assert(fd >= 0);
-        assert(dir_fd == AT_FDCWD || dir_fd >= 0);
         assert(path);
 
+        l = strlen(path);
+        assert(l > 0);
+        assert(l < sizeof(sa.un.sun_path));
+
+        memcpy(sa.un.sun_path, path, l + 1);
+        return RET_NERRNO(connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + l + 1));
+}
+
+static int connect_unix_inode(int fd, int inode_fd) {
+        assert(fd >= 0);
+        assert(inode_fd >= 0);
+
+        return connect_unix_path_simple(fd, FORMAT_PROC_FD_PATH(inode_fd));
+}
+
+int connect_unix_path(int fd, int dir_fd, const char *path) {
+        _cleanup_close_ int inode_fd = -EBADF;
+
+        assert(fd >= 0);
+        assert(dir_fd == AT_FDCWD || dir_fd >= 0);
+
         /* Connects to the specified AF_UNIX socket in the file system. Works around the 108 byte size limit
          * in sockaddr_un, by going via O_PATH if needed. This hence works for any kind of path. */
 
-        path_len = strlen(path);
+        if (!path)
+                return connect_unix_inode(fd, dir_fd); /* If no path is specified, then dir_fd refers to the socket inode to connect to. */
 
         /* Refuse zero length path early, to make sure AF_UNIX stack won't mistake this for an abstract
          * namespace path, since first char is NUL */
-        if (path_len <= 0)
+        if (isempty(path))
                 return -EINVAL;
 
-        if (dir_fd == AT_FDCWD && path_len < sizeof(sa.un.sun_path)) {
-                memcpy(sa.un.sun_path, path, path_len + 1);
-                salen = offsetof(struct sockaddr_un, sun_path) + path_len + 1;
-        } else {
-                const char *proc;
-                size_t proc_len;
-
-                /* If dir_fd is specified, then we need to go the indirect O_PATH route, because connectat()
-                 * does not exist. If the path is too long, we also need to take the indirect route, since we
-                 * can't fit this into a sockaddr_un directly. */
-
-                inode_fd = openat(dir_fd, path, O_PATH|O_CLOEXEC);
-                if (inode_fd < 0)
-                        return -errno;
+        /* Shortcut for the simple case */
+        if (dir_fd == AT_FDCWD && strlen(path) < sizeof_field(struct sockaddr_un, sun_path))
+                return connect_unix_path_simple(fd, path);
 
-                proc = FORMAT_PROC_FD_PATH(inode_fd);
-                proc_len = strlen(proc);
+        /* If dir_fd is specified, then we need to go the indirect O_PATH route, because connectat() does not
+         * exist. If the path is too long, we also need to take the indirect route, since we can't fit this
+         * into a sockaddr_un directly. */
 
-                assert(proc_len < sizeof(sa.un.sun_path));
-                memcpy(sa.un.sun_path, proc, proc_len + 1);
-                salen = offsetof(struct sockaddr_un, sun_path) + proc_len + 1;
-        }
+        inode_fd = openat(dir_fd, path, O_PATH|O_CLOEXEC);
+        if (inode_fd < 0)
+                return -errno;
 
-        return RET_NERRNO(connect(fd, &sa.sa, salen));
+        return connect_unix_inode(fd, inode_fd);
 }
 
 int socket_address_parse_unix(SocketAddress *ret_address, const char *s) {
index 2b7a61d442b7a8e8e23768b6a3580b5329a0650a..9b4a7663a90562340e957f5f631d6e6f60cf3731 100644 (file)
@@ -77,20 +77,26 @@ char** strv_free_erase(char **l) {
         return mfree(l);
 }
 
-char** strv_copy(char * const *l) {
+char** strv_copy_n(char * const *l, size_t m) {
         _cleanup_strv_free_ char **result = NULL;
         char **k;
 
-        result = new(char*, strv_length(l) + 1);
+        result = new(char*, MIN(strv_length(l), m) + 1);
         if (!result)
                 return NULL;
 
         k = result;
         STRV_FOREACH(i, l) {
+                if (m == 0)
+                        break;
+
                 *k = strdup(*i);
                 if (!*k)
                         return NULL;
                 k++;
+
+                if (m != SIZE_MAX)
+                        m--;
         }
 
         *k = NULL;
index 1f8da85fccd94dcc81fa86ba45164848658c9e1e..71ff3a4edf279418168a19c351dde5448cc2f07d 100644 (file)
@@ -29,7 +29,10 @@ char** strv_free_erase(char **l);
 DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free_erase);
 #define _cleanup_strv_free_erase_ _cleanup_(strv_free_erasep)
 
-char** strv_copy(char * const *l);
+char** strv_copy_n(char * const *l, size_t n);
+static inline char** strv_copy(char * const *l) {
+        return strv_copy_n(l, SIZE_MAX);
+}
 size_t strv_length(char * const *l) _pure_;
 
 int strv_extend_strv(char ***a, char * const *b, bool filter_duplicates);
index 59c868a2a53913739e0d875dce16b138efce1f56..1723de34fa2278973dc1027dbff51e09e6510d44 100644 (file)
@@ -111,7 +111,7 @@ typedef enum ColorMode {
         /* Only 256 colors. */
         COLOR_256,
 
-        /* For truecolor or 24bit color support.*/
+        /* For truecolor or 24bit color support. */
         COLOR_24BIT,
 
         _COLOR_INVALID = -EINVAL,
index 1334365c2fa9109eb21ddc3b28ab6d7d0f1dd8b7..1f79a2735e9f543d4b7ee6205868abf790c1a17c 100644 (file)
@@ -329,7 +329,7 @@ int unit_file_resolve_symlink(
 
         assert(path_is_absolute(simplified));
 
-        /* Check if the symlink remain inside of of our search path.
+        /* Check if the symlink remain inside 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
index 5b6131b56a36b466404d97ff6be176fd6b2ffe0a..b42bf68f5808a87bb1ebc20d77c458a2a0f02153 100644 (file)
@@ -293,3 +293,72 @@ int listxattr_at_malloc(
                 l = (size_t) n;
         }
 }
+
+int xsetxattr(int fd,
+              const char *path,
+              const char *name,
+              const char *value,
+              size_t size,
+              int flags) {
+
+        _cleanup_close_ int opened_fd = -EBADF;
+        bool by_procfs = false;
+        int r;
+
+        assert(fd >= 0 || fd == AT_FDCWD);
+        assert(name);
+        assert(value);
+        assert((flags & ~(AT_SYMLINK_FOLLOW|AT_EMPTY_PATH)) == 0);
+
+        /* So, this is a single function that does what setxattr()/lsetxattr()/fsetxattr() do, but in one go,
+         * and with additional bells and whistles. Specifically:
+         *
+         * 1. This works on O_PATH fds (which fsetxattr() does not)
+         * 2. Provides full openat()-style semantics, i.e. by-fd, by-path and combination thereof
+         * 3. As extension to openat()-style semantics implies AT_EMPTY_PATH if path is NULL.
+         */
+
+        if (!path) /* If path is NULL, imply AT_EMPTY_PATH. – But if it's "", don't — for safety reasons. */
+                flags |= AT_EMPTY_PATH;
+
+        if (size == SIZE_MAX)
+                size = strlen(value);
+
+        if (isempty(path)) {
+                if (!FLAGS_SET(flags, AT_EMPTY_PATH))
+                        return -EINVAL;
+
+                if (fd == AT_FDCWD) /* Both unspecified? Then operate on current working directory */
+                        path = ".";
+                else {
+                        r = fd_is_opath(fd);
+                        if (r < 0)
+                                return r;
+
+                        by_procfs = r;
+                        path = NULL;
+                }
+
+        } else if (fd != AT_FDCWD) {
+
+                /* If both have been specified, then we go via O_PATH */
+                opened_fd = openat(fd, path, O_PATH|O_CLOEXEC|(FLAGS_SET(flags, AT_SYMLINK_FOLLOW) ? 0 : O_NOFOLLOW));
+                if (opened_fd < 0)
+                        return -errno;
+
+                fd = opened_fd;
+                path = NULL;
+                by_procfs = true; /* fsetxattr() is not going to work, go via /proc/ link right-away */
+        }
+
+        if (path)
+                r = FLAGS_SET(flags, AT_SYMLINK_FOLLOW) ? setxattr(path, name, value, size, 0)
+                                                        : lsetxattr(path, name, value, size, 0);
+        else
+                r = by_procfs ? setxattr(FORMAT_PROC_FD_PATH(fd), name, value, size, 0)
+                              : fsetxattr(fd, name, value, size, 0);
+        if (r < 0)
+                return -errno;
+
+        return 0;
+}
index 0eb745a7a3bd84bb61081b912a94b88ade35ad21..649a842fe262d2582eb5e654ab17960c37e91014 100644 (file)
@@ -36,3 +36,5 @@ static inline int llistxattr_malloc(const char *path, char **ret) {
 static inline int flistxattr_malloc(int fd, char **ret) {
         return listxattr_at_malloc(fd, NULL, AT_EMPTY_PATH, ret);
 }
+
+int xsetxattr(int fd, const char *path, const char *name, const char *value, size_t size, int flags);
index c382d2a84f994f6b3320fe220dcdcbf135da0e39..ebb0d486c922779d21956d2544608e7147e53133 100644 (file)
@@ -43,10 +43,14 @@ static int load_etc_machine_info(void) {
          * for setting up the ESP in /etc/machine-info. The newer /etc/kernel/entry-token file, as well as
          * the $layout field in /etc/kernel/install.conf are better replacements for this though, hence this
          * has been deprecated and is only returned for compatibility. */
-        _cleanup_free_ char *s = NULL, *layout = NULL;
+        _cleanup_free_ char *p = NULL, *s = NULL, *layout = NULL;
         int r;
 
-        r = parse_env_file(NULL, "/etc/machine-info",
+        p = path_join(arg_root, "etc/machine-info");
+        if (!p)
+                return log_oom();
+
+        r = parse_env_file(NULL, p,
                            "KERNEL_INSTALL_LAYOUT", &layout,
                            "KERNEL_INSTALL_MACHINE_ID", &s);
         if (r == -ENOENT)
@@ -63,7 +67,7 @@ static int load_etc_machine_info(void) {
                 if (r < 0)
                         return log_error_errno(r, "Failed to parse KERNEL_INSTALL_MACHINE_ID=%s in /etc/machine-info: %m", s);
 
-                log_debug("Loaded KERNEL_INSTALL_MACHINE_ID=%s from KERNEL_INSTALL_MACHINE_ID in /etc/machine-info.",
+                log_debug("Loaded KERNEL_INSTALL_MACHINE_ID=%s from /etc/machine-info.",
                           SD_ID128_TO_STRING(arg_machine_id));
         }
 
@@ -83,7 +87,7 @@ static int load_etc_kernel_install_conf(void) {
         _cleanup_free_ char *layout = NULL, *p = NULL;
         int r;
 
-        p = path_join(etc_kernel(), "install.conf");
+        p = path_join(arg_root, etc_kernel(), "install.conf");
         if (!p)
                 return log_oom();
 
@@ -94,7 +98,7 @@ static int load_etc_kernel_install_conf(void) {
                 return log_error_errno(r, "Failed to parse %s: %m", p);
 
         if (!isempty(layout)) {
-                log_debug("layout=%s is specified in /etc/machine-info.", layout);
+                log_debug("layout=%s is specified in %s.", layout, p);
                 free_and_replace(arg_install_layout, layout);
         }
 
@@ -506,13 +510,13 @@ static int install_entry_token(void) {
         if (!arg_make_entry_directory && arg_entry_token_type == ARG_ENTRY_TOKEN_MACHINE_ID)
                 return 0;
 
-        p = path_join(etc_kernel(), "entry-token");
+        p = path_join(arg_root, etc_kernel(), "entry-token");
         if (!p)
                 return log_oom();
 
         r = write_string_file(p, arg_entry_token, WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_MKDIR_0755);
         if (r < 0)
-                return log_error_errno(r, "Failed to write entry token '%s' to %s", arg_entry_token, p);
+                return log_error_errno(r, "Failed to write entry token '%s' to %s: %m", arg_entry_token, p);
 
         return 0;
 }
index 859742a1261003e8934402fd19e51fd2bf51ab98..62c0b64406d272622b58a7550ad78a88909e64d5 100644 (file)
@@ -41,7 +41,9 @@ const char *get_efi_arch(void) {
         if (r == -ENOENT)
                 return EFI_MACHINE_TYPE_NAME;
         if (r < 0) {
-                log_warning_errno(r, "Error reading EFI firmware word size, assuming '%i': %m", __WORDSIZE);
+                log_warning_errno(r,
+                        "Error reading EFI firmware word size, assuming machine type '%s': %m",
+                        EFI_MACHINE_TYPE_NAME);
                 return EFI_MACHINE_TYPE_NAME;
         }
 
@@ -51,9 +53,9 @@ const char *get_efi_arch(void) {
                 return "ia32";
 
         log_warning(
-                "Unknown EFI firmware word size '%s', using default word size '%i' instead.",
+                "Unknown EFI firmware word size '%s', using machine type '%s'.",
                 platform_size,
-                __WORDSIZE);
+                EFI_MACHINE_TYPE_NAME);
 #endif
 
         return EFI_MACHINE_TYPE_NAME;
@@ -120,7 +122,7 @@ int settle_entry_token(void) {
 
         case ARG_ENTRY_TOKEN_AUTO: {
                 _cleanup_free_ char *buf = NULL, *p = NULL;
-                p = path_join(etc_kernel(), "entry-token");
+                p = path_join(arg_root, etc_kernel(), "entry-token");
                 if (!p)
                         return log_oom();
                 r = read_one_line_file(p, &buf);
@@ -133,7 +135,7 @@ int settle_entry_token(void) {
                 } else if (sd_id128_is_null(arg_machine_id)) {
                         _cleanup_free_ char *id = NULL, *image_id = NULL;
 
-                        r = parse_os_release(NULL,
+                        r = parse_os_release(arg_root,
                                              "IMAGE_ID", &image_id,
                                              "ID", &id);
                         if (r < 0)
@@ -171,7 +173,7 @@ int settle_entry_token(void) {
         case ARG_ENTRY_TOKEN_OS_IMAGE_ID: {
                 _cleanup_free_ char *buf = NULL;
 
-                r = parse_os_release(NULL, "IMAGE_ID", &buf);
+                r = parse_os_release(arg_root, "IMAGE_ID", &buf);
                 if (r < 0)
                         return log_error_errno(r, "Failed to load /etc/os-release: %m");
 
@@ -185,7 +187,7 @@ int settle_entry_token(void) {
         case ARG_ENTRY_TOKEN_OS_ID: {
                 _cleanup_free_ char *buf = NULL;
 
-                r = parse_os_release(NULL, "ID", &buf);
+                r = parse_os_release(arg_root, "ID", &buf);
                 if (r < 0)
                         return log_error_errno(r, "Failed to load /etc/os-release: %m");
 
index 7200012c0a722d84fa53970280913b3d28d1a6a2..f6291e8b7f4fe5c7b7b36cf65b214a0732720e57 100644 (file)
@@ -204,7 +204,7 @@ static const KeyValue *get_key_value(const uint8_t *bcd, uint32_t bcd_len, const
 /* The BCD store is really just a regular windows registry hive with a rather cryptic internal
  * key structure. On a running system it gets mounted to HKEY_LOCAL_MACHINE\BCD00000000.
  *
- * Of interest to us are the these two keys:
+ * Of interest to us are these two keys:
  * - \Objects\{bootmgr}\Elements\24000001
  *   This key is the "displayorder" property and contains a value of type REG_MULTI_SZ
  *   with the name "Element" that holds a {GUID} list (UTF16, NUL-separated).
index 03fe022ef64510da9dc6c33f60d2c285ae082c98..6d4da0c51c624e910165a38c529d93774b585c74 100644 (file)
@@ -1907,7 +1907,7 @@ static ConfigEntry *config_entry_add_loader_auto(
                  * but we do not want to do that if that would be us.
                  *
                  * If the default loader is not us, it might be shim. It would
-                 * chainload GRUBX64.EFI in that case, which might be us.*/
+                 * chainload GRUBX64.EFI in that case, which might be us. */
                 if (strcaseeq16(loader, loaded_image_path) ||
                     is_sd_boot(root_dir, loader) ||
                     is_sd_boot(root_dir, u"\\EFI\\BOOT\\GRUB" EFI_MACHINE_TYPE_NAME u".EFI"))
index 3b8b6b2e4198e0b0ecc440ee28581c8242575bbb..343d96569289a3b9e9519f77ae86fd16df051d7f 100644 (file)
@@ -47,7 +47,7 @@ EFI_STATUS console_key_read(uint64_t *key, uint64_t timeout_usec) {
         assert(key);
 
         if (!checked) {
-                /* Get the *first* TextInputEx device.*/
+                /* Get the *first* TextInputEx device. */
                 err = BS->LocateProtocol(
                                 MAKE_GUID_PTR(EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL), NULL, (void **) &extraInEx);
                 if (err != EFI_SUCCESS || BS->CheckEvent(extraInEx->WaitForKeyEx) == EFI_INVALID_PARAMETER)
index a91070b020745c8f7bab3c9bd398677fc497437a..1fd16a98d16412a705feda51432139acdfd0370e 100644 (file)
@@ -79,7 +79,7 @@ static EFI_STATUS pack_cpio_one(
         if (*inode_counter == UINT32_MAX) /* more than 2^32-1 inodes? yikes. cpio doesn't support that either */
                 return EFI_OUT_OF_RESOURCES;
 
-        l = 6 + 13*8 + 1 + 1; /* Fixed CPIO header size, slash separator, and NUL byte after the file name*/
+        l = 6 + 13*8 + 1 + 1; /* Fixed CPIO header size, slash separator, and NUL byte after the file name */
 
         target_dir_prefix_size = strlen8(target_dir_prefix);
         if (l > SIZE_MAX - target_dir_prefix_size)
@@ -177,7 +177,7 @@ static EFI_STATUS pack_cpio_dir(
         if (*inode_counter == UINT32_MAX)
                 return EFI_OUT_OF_RESOURCES;
 
-        l = 6 + 13*8 + 1; /* Fixed CPIO header size, and NUL byte after the file name*/
+        l = 6 + 13*8 + 1; /* Fixed CPIO header size, and NUL byte after the file name */
 
         path_size = strlen8(path);
         if (l > SIZE_MAX - path_size)
index a8bbc62eaae080ebe9c5da56452ec2bf72396ea9..949e26350c783fc44490ee03e381647ea7e2e7cf 100644 (file)
@@ -146,7 +146,7 @@ EFI_STATUS tpm_log_event(uint32_t pcrindex, EFI_PHYSICAL_ADDRESS buffer, size_t
         EFI_TCG2 *tpm2;
         EFI_STATUS err;
 
-        assert(description);
+        assert(description || pcrindex == UINT32_MAX);
 
         /* If EFI_SUCCESS is returned, will initialize ret_measured to true if we actually measured
          * something, or false if measurement was turned off. */
index 403b78c033cc333f64e952d3ea048121a8f99748..683724b66cec83b82a05e8ff96ebca4c8870041b 100644 (file)
@@ -721,3 +721,9 @@ void *find_configuration_table(const EFI_GUID *guid) {
 
         return NULL;
 }
+
+/* libgcc's __aeabi_ldiv0 intrinsic will call raise() on division by zero, so we
+ * need to provide one ourselves for now. */
+_used_ _noreturn_ int raise(int sig) {
+        assert_not_reached();
+}
index 4cac3f6a89b1e7ea051beefbab97f59f17072674..7ac9549f89ed6edc84537292cd8757b4fc166cd3 100644 (file)
@@ -91,7 +91,12 @@ bool unit_has_startup_cgroup_constraints(Unit *u) {
                c->startup_io_weight != CGROUP_WEIGHT_INVALID ||
                c->startup_blockio_weight != CGROUP_BLKIO_WEIGHT_INVALID ||
                c->startup_cpuset_cpus.set ||
-               c->startup_cpuset_mems.set;
+               c->startup_cpuset_mems.set ||
+               c->startup_memory_high_set ||
+               c->startup_memory_max_set ||
+               c->startup_memory_swap_max_set||
+               c->startup_memory_zswap_max_set ||
+               c->startup_memory_low_set;
 }
 
 bool unit_has_host_root_cgroup(Unit *u) {
@@ -149,9 +154,13 @@ void cgroup_context_init(CGroupContext *c) {
                 .startup_cpu_shares = CGROUP_CPU_SHARES_INVALID,
 
                 .memory_high = CGROUP_LIMIT_MAX,
+                .startup_memory_high = CGROUP_LIMIT_MAX,
                 .memory_max = CGROUP_LIMIT_MAX,
+                .startup_memory_max = CGROUP_LIMIT_MAX,
                 .memory_swap_max = CGROUP_LIMIT_MAX,
+                .startup_memory_swap_max = CGROUP_LIMIT_MAX,
                 .memory_zswap_max = CGROUP_LIMIT_MAX,
+                .startup_memory_zswap_max = CGROUP_LIMIT_MAX,
 
                 .memory_limit = CGROUP_LIMIT_MAX,
 
@@ -340,24 +349,41 @@ static int unit_compare_memory_limit(Unit *u, const char *property_name, uint64_
 
         assert_se(c = unit_get_cgroup_context(u));
 
+        bool startup = u->manager && IN_SET(manager_state(u->manager), MANAGER_STARTING, MANAGER_INITIALIZING, MANAGER_STOPPING);
+
         if (streq(property_name, "MemoryLow")) {
                 unit_value = unit_get_ancestor_memory_low(u);
                 file = "memory.low";
+        } else if (startup && streq(property_name, "StartupMemoryLow")) {
+                unit_value = unit_get_ancestor_startup_memory_low(u);
+                file = "memory.low";
         } else if (streq(property_name, "MemoryMin")) {
                 unit_value = unit_get_ancestor_memory_min(u);
                 file = "memory.min";
         } else if (streq(property_name, "MemoryHigh")) {
                 unit_value = c->memory_high;
                 file = "memory.high";
+        } else if (startup && streq(property_name, "StartupMemoryHigh")) {
+                unit_value = c->startup_memory_high;
+                file = "memory.high";
         } else if (streq(property_name, "MemoryMax")) {
                 unit_value = c->memory_max;
                 file = "memory.max";
+        } else if (startup && streq(property_name, "StartupMemoryMax")) {
+                unit_value = c->startup_memory_max;
+                file = "memory.max";
         } else if (streq(property_name, "MemorySwapMax")) {
                 unit_value = c->memory_swap_max;
                 file = "memory.swap.max";
+        } else if (startup && streq(property_name, "StartupMemorySwapMax")) {
+                unit_value = c->startup_memory_swap_max;
+                file = "memory.swap.max";
         } else if (streq(property_name, "MemoryZSwapMax")) {
                 unit_value = c->memory_zswap_max;
                 file = "memory.zswap.max";
+        } else if (startup && streq(property_name, "StartupMemoryZSwapMax")) {
+                unit_value = c->startup_memory_zswap_max;
+                file = "memory.zswap.max";
         } else
                 return -EINVAL;
 
@@ -403,7 +429,11 @@ static char *format_cgroup_memory_limit_comparison(char *buf, size_t l, Unit *u,
          * only complain if the error is not ENOENT. This is similarly the case for memory.zswap.max relying
          * on CONFIG_ZSWAP. */
         if (r > 0 || IN_SET(r, -ENODATA, -EOWNERDEAD) ||
-            (r == -ENOENT && STR_IN_SET(property_name, "MemorySwapMax", "MemoryZSwapMax")))
+            (r == -ENOENT && STR_IN_SET(property_name,
+                                        "MemorySwapMax",
+                                        "StartupMemorySwapMax",
+                                        "MemoryZSwapMax",
+                                        "StartupMemoryZSwapMax")))
                 buf[0] = 0;
         else if (r < 0) {
                 errno = -r;
@@ -424,6 +454,12 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
         char cdc[FORMAT_CGROUP_DIFF_MAX];
         char cdd[FORMAT_CGROUP_DIFF_MAX];
         char cde[FORMAT_CGROUP_DIFF_MAX];
+        char cdf[FORMAT_CGROUP_DIFF_MAX];
+        char cdg[FORMAT_CGROUP_DIFF_MAX];
+        char cdh[FORMAT_CGROUP_DIFF_MAX];
+        char cdi[FORMAT_CGROUP_DIFF_MAX];
+        char cdj[FORMAT_CGROUP_DIFF_MAX];
+        char cdk[FORMAT_CGROUP_DIFF_MAX];
 
         assert(u);
         assert(f);
@@ -464,10 +500,15 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
                 "%sDefaultMemoryLow: %" PRIu64 "\n"
                 "%sMemoryMin: %" PRIu64 "%s\n"
                 "%sMemoryLow: %" PRIu64 "%s\n"
+                "%sStartupMemoryLow: %" PRIu64 "%s\n"
                 "%sMemoryHigh: %" PRIu64 "%s\n"
+                "%sStartupMemoryHigh: %" PRIu64 "%s\n"
                 "%sMemoryMax: %" PRIu64 "%s\n"
+                "%sStartupMemoryMax: %" PRIu64 "%s\n"
                 "%sMemorySwapMax: %" PRIu64 "%s\n"
+                "%sStartupMemorySwapMax: %" PRIu64 "%s\n"
                 "%sMemoryZSwapMax: %" PRIu64 "%s\n"
+                "%sStartupMemoryZSwapMax: %" PRIu64 "%s\n"
                 "%sMemoryLimit: %" PRIu64 "\n"
                 "%sTasksMax: %" PRIu64 "\n"
                 "%sDevicePolicy: %s\n"
@@ -501,10 +542,15 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
                 prefix, c->default_memory_low,
                 prefix, c->memory_min, format_cgroup_memory_limit_comparison(cda, sizeof(cda), u, "MemoryMin"),
                 prefix, c->memory_low, format_cgroup_memory_limit_comparison(cdb, sizeof(cdb), u, "MemoryLow"),
-                prefix, c->memory_high, format_cgroup_memory_limit_comparison(cdc, sizeof(cdc), u, "MemoryHigh"),
-                prefix, c->memory_max, format_cgroup_memory_limit_comparison(cdd, sizeof(cdd), u, "MemoryMax"),
-                prefix, c->memory_swap_max, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "MemorySwapMax"),
-                prefix, c->memory_zswap_max, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "MemoryZSwapMax"),
+                prefix, c->startup_memory_low, format_cgroup_memory_limit_comparison(cdc, sizeof(cdc), u, "StartupMemoryLow"),
+                prefix, c->memory_high, format_cgroup_memory_limit_comparison(cdd, sizeof(cdd), u, "MemoryHigh"),
+                prefix, c->startup_memory_high, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "StartupMemoryHigh"),
+                prefix, c->memory_max, format_cgroup_memory_limit_comparison(cdf, sizeof(cdf), u, "MemoryMax"),
+                prefix, c->startup_memory_max, format_cgroup_memory_limit_comparison(cdg, sizeof(cdg), u, "StartupMemoryMax"),
+                prefix, c->memory_swap_max, format_cgroup_memory_limit_comparison(cdh, sizeof(cdh), u, "MemorySwapMax"),
+                prefix, c->startup_memory_swap_max, format_cgroup_memory_limit_comparison(cdi, sizeof(cdi), u, "StartupMemorySwapMax"),
+                prefix, c->memory_zswap_max, format_cgroup_memory_limit_comparison(cdj, sizeof(cdj), u, "MemoryZSwapMax"),
+                prefix, c->startup_memory_zswap_max, format_cgroup_memory_limit_comparison(cdk, sizeof(cdk), u, "StartupMemoryZSwapMax"),
                 prefix, c->memory_limit,
                 prefix, tasks_max_resolve(&c->tasks_max),
                 prefix, cgroup_device_policy_to_string(c->device_policy),
@@ -721,6 +767,7 @@ int cgroup_add_bpf_foreign_program(CGroupContext *c, uint32_t attach_type, const
 }
 
 UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_low);
+UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(startup_memory_low);
 UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_min);
 
 static void unit_set_xattr_graceful(Unit *u, const char *cgroup_path, const char *name, const void *data, size_t size) {
@@ -1261,9 +1308,12 @@ static bool unit_has_unified_memory_config(Unit *u) {
 
         assert_se(c = unit_get_cgroup_context(u));
 
-        return unit_get_ancestor_memory_min(u) > 0 || unit_get_ancestor_memory_low(u) > 0 ||
-               c->memory_high != CGROUP_LIMIT_MAX || c->memory_max != CGROUP_LIMIT_MAX ||
-               c->memory_swap_max != CGROUP_LIMIT_MAX || c->memory_zswap_max != CGROUP_LIMIT_MAX;
+        return unit_get_ancestor_memory_min(u) > 0 ||
+               unit_get_ancestor_memory_low(u) > 0 || unit_get_ancestor_startup_memory_low(u) > 0 ||
+               c->memory_high != CGROUP_LIMIT_MAX || c->startup_memory_high_set ||
+               c->memory_max != CGROUP_LIMIT_MAX || c->startup_memory_max_set ||
+               c->memory_swap_max != CGROUP_LIMIT_MAX || c->startup_memory_swap_max_set ||
+               c->memory_zswap_max != CGROUP_LIMIT_MAX || c->startup_memory_zswap_max_set;
 }
 
 static void cgroup_apply_unified_memory_limit(Unit *u, const char *file, uint64_t v) {
@@ -1623,12 +1673,15 @@ static void cgroup_context_apply(
         if ((apply_mask & CGROUP_MASK_MEMORY) && !is_local_root) {
 
                 if (cg_all_unified() > 0) {
-                        uint64_t max, swap_max = CGROUP_LIMIT_MAX, zswap_max = CGROUP_LIMIT_MAX;
+                        uint64_t max, swap_max = CGROUP_LIMIT_MAX, zswap_max = CGROUP_LIMIT_MAX, high = CGROUP_LIMIT_MAX;
 
                         if (unit_has_unified_memory_config(u)) {
-                                max = c->memory_max;
-                                swap_max = c->memory_swap_max;
-                                zswap_max = c->memory_zswap_max;
+                                bool startup = IN_SET(state, MANAGER_STARTING, MANAGER_INITIALIZING, MANAGER_STOPPING);
+
+                                high = startup && c->startup_memory_high_set ? c->startup_memory_high : c->memory_high;
+                                max = startup && c->startup_memory_max_set ? c->startup_memory_max : c->memory_max;
+                                swap_max = startup && c->startup_memory_swap_max_set ? c->startup_memory_swap_max : c->memory_swap_max;
+                                zswap_max = startup && c->startup_memory_zswap_max_set ? c->startup_memory_zswap_max : c->memory_zswap_max;
                         } else {
                                 max = c->memory_limit;
 
@@ -1638,7 +1691,7 @@ static void cgroup_context_apply(
 
                         cgroup_apply_unified_memory_limit(u, "memory.min", unit_get_ancestor_memory_min(u));
                         cgroup_apply_unified_memory_limit(u, "memory.low", unit_get_ancestor_memory_low(u));
-                        cgroup_apply_unified_memory_limit(u, "memory.high", c->memory_high);
+                        cgroup_apply_unified_memory_limit(u, "memory.high", high);
                         cgroup_apply_unified_memory_limit(u, "memory.max", max);
                         cgroup_apply_unified_memory_limit(u, "memory.swap.max", swap_max);
                         cgroup_apply_unified_memory_limit(u, "memory.zswap.max", zswap_max);
index d137e3af4f37bc520c2470fc4dff4e87a0efa483..7d905096420ec3dc51b945af2bb99abee71e54de 100644 (file)
@@ -144,17 +144,29 @@ struct CGroupContext {
 
         uint64_t default_memory_min;
         uint64_t default_memory_low;
+        uint64_t default_startup_memory_low;
         uint64_t memory_min;
         uint64_t memory_low;
+        uint64_t startup_memory_low;
         uint64_t memory_high;
+        uint64_t startup_memory_high;
         uint64_t memory_max;
+        uint64_t startup_memory_max;
         uint64_t memory_swap_max;
+        uint64_t startup_memory_swap_max;
         uint64_t memory_zswap_max;
+        uint64_t startup_memory_zswap_max;
 
         bool default_memory_min_set:1;
         bool default_memory_low_set:1;
+        bool default_startup_memory_low_set:1;
         bool memory_min_set:1;
         bool memory_low_set:1;
+        bool startup_memory_low_set:1;
+        bool startup_memory_high_set:1;
+        bool startup_memory_max_set:1;
+        bool startup_memory_swap_max_set:1;
+        bool startup_memory_zswap_max_set:1;
 
         Set *ip_address_allow;
         Set *ip_address_deny;
@@ -288,6 +300,7 @@ Unit* manager_get_unit_by_pid(Manager *m, pid_t pid);
 
 uint64_t unit_get_ancestor_memory_min(Unit *u);
 uint64_t unit_get_ancestor_memory_low(Unit *u);
+uint64_t unit_get_ancestor_startup_memory_low(Unit *u);
 
 int unit_search_main_pid(Unit *u, pid_t *ret);
 int unit_watch_all_pids(Unit *u);
index b5484eda78ed17cc1a6679deecceaffd4fd14ee2..a3313c417f342125f2f469845acc02bf8b400ab7 100644 (file)
@@ -462,13 +462,19 @@ const sd_bus_vtable bus_cgroup_vtable[] = {
         SD_BUS_PROPERTY("BlockIOWriteBandwidth", "a(st)", property_get_blockio_device_bandwidths, 0, 0),
         SD_BUS_PROPERTY("MemoryAccounting", "b", bus_property_get_bool, offsetof(CGroupContext, memory_accounting), 0),
         SD_BUS_PROPERTY("DefaultMemoryLow", "t", NULL, offsetof(CGroupContext, default_memory_low), 0),
+        SD_BUS_PROPERTY("DefaultStartupMemoryLow", "t", NULL, offsetof(CGroupContext, default_startup_memory_low), 0),
         SD_BUS_PROPERTY("DefaultMemoryMin", "t", NULL, offsetof(CGroupContext, default_memory_min), 0),
         SD_BUS_PROPERTY("MemoryMin", "t", NULL, offsetof(CGroupContext, memory_min), 0),
         SD_BUS_PROPERTY("MemoryLow", "t", NULL, offsetof(CGroupContext, memory_low), 0),
+        SD_BUS_PROPERTY("StartupMemoryLow", "t", NULL, offsetof(CGroupContext, startup_memory_low), 0),
         SD_BUS_PROPERTY("MemoryHigh", "t", NULL, offsetof(CGroupContext, memory_high), 0),
+        SD_BUS_PROPERTY("StartupMemoryHigh", "t", NULL, offsetof(CGroupContext, startup_memory_high), 0),
         SD_BUS_PROPERTY("MemoryMax", "t", NULL, offsetof(CGroupContext, memory_max), 0),
+        SD_BUS_PROPERTY("StartupMemoryMax", "t", NULL, offsetof(CGroupContext, startup_memory_max), 0),
         SD_BUS_PROPERTY("MemorySwapMax", "t", NULL, offsetof(CGroupContext, memory_swap_max), 0),
+        SD_BUS_PROPERTY("StartupMemorySwapMax", "t", NULL, offsetof(CGroupContext, startup_memory_swap_max), 0),
         SD_BUS_PROPERTY("MemoryZSwapMax", "t", NULL, offsetof(CGroupContext, memory_zswap_max), 0),
+        SD_BUS_PROPERTY("StartupMemoryZSwapMax", "t", NULL, offsetof(CGroupContext, startup_memory_zswap_max), 0),
         SD_BUS_PROPERTY("MemoryLimit", "t", NULL, offsetof(CGroupContext, memory_limit), 0),
         SD_BUS_PROPERTY("DevicePolicy", "s", property_get_cgroup_device_policy, offsetof(CGroupContext, device_policy), 0),
         SD_BUS_PROPERTY("DeviceAllow", "a(ss)", property_get_device_allow, 0, 0),
@@ -1057,6 +1063,13 @@ int bus_cgroup_set_property(
                 return r;
         }
 
+        if (streq(name, "StartupMemoryLow")) {
+                r = bus_cgroup_set_memory_protection(u, name, &c->startup_memory_low, message, flags, error);
+                if (r > 0)
+                        c->startup_memory_low_set = true;
+                return r;
+        }
+
         if (streq(name, "DefaultMemoryMin")) {
                 r = bus_cgroup_set_memory_protection(u, name, &c->default_memory_min, message, flags, error);
                 if (r > 0)
@@ -1071,18 +1084,53 @@ int bus_cgroup_set_property(
                 return r;
         }
 
+        if (streq(name, "DefaultStartupMemoryLow")) {
+                r = bus_cgroup_set_memory_protection(u, name, &c->default_startup_memory_low, message, flags, error);
+                if (r > 0)
+                        c->default_startup_memory_low_set = true;
+                return r;
+        }
+
         if (streq(name, "MemoryHigh"))
                 return bus_cgroup_set_memory(u, name, &c->memory_high, message, flags, error);
 
+        if (streq(name, "StartupMemoryHigh")) {
+                r = bus_cgroup_set_memory(u, name, &c->startup_memory_high, message, flags, error);
+                if (r > 0)
+                        c->startup_memory_high_set = true;
+                return r;
+        }
+
         if (streq(name, "MemorySwapMax"))
                 return bus_cgroup_set_swap(u, name, &c->memory_swap_max, message, flags, error);
 
+        if (streq(name, "StartupMemorySwapMax")) {
+                r = bus_cgroup_set_swap(u, name, &c->startup_memory_swap_max, message, flags, error);
+                if (r > 0)
+                        c->startup_memory_swap_max_set = true;
+                return r;
+        }
+
         if (streq(name, "MemoryZSwapMax"))
                 return bus_cgroup_set_zswap(u, name, &c->memory_zswap_max, message, flags, error);
 
+        if (streq(name, "StartupMemoryZSwapMax")) {
+                r = bus_cgroup_set_zswap(u, name, &c->startup_memory_zswap_max, message, flags, error);
+                if (r > 0)
+                        c->startup_memory_zswap_max_set = true;
+                return r;
+        }
+
         if (streq(name, "MemoryMax"))
                 return bus_cgroup_set_memory(u, name, &c->memory_max, message, flags, error);
 
+        if (streq(name, "StartupMemoryMax")) {
+                r = bus_cgroup_set_memory(u, name, &c->startup_memory_max, message, flags, error);
+                if (r > 0)
+                        c->startup_memory_max_set = true;
+                return r;
+        }
+
         if (streq(name, "MemoryLimit"))
                 return bus_cgroup_set_memory(u, name, &c->memory_limit, message, flags, error);
 
index 53121fa1a6bd89fe92384dcc077205f122607bc3..7d6f6bfc0fad5d6f423e1d1762f764d50a9007bc 100644 (file)
@@ -1527,8 +1527,10 @@ static void log_caller(sd_bus_message *message, Manager *manager, const char *me
         (void) sd_bus_creds_get_comm(creds, &comm);
         caller = manager_get_unit_by_pid(manager, pid);
 
-        log_info("%s requested from client PID " PID_FMT " ('%s') (from unit '%s')...",
-                 method, pid, strna(comm), strna(caller ? caller->id : NULL));
+        log_info("%s requested from client PID " PID_FMT "%s%s%s%s%s%s...",
+                 method, pid,
+                 comm ? " ('" : "", strempty(comm), comm ? "')" : "",
+                 caller ? " (unit " : "", caller ? caller->id : NULL, caller ? ")" : "");
 }
 
 static int method_reload(sd_bus_message *message, void *userdata, sd_bus_error *error) {
@@ -3032,6 +3034,11 @@ const sd_bus_vtable bus_manager_vtable[] = {
                                 SD_BUS_NO_RESULT,
                                 method_kill_unit,
                                 SD_BUS_VTABLE_UNPRIVILEGED),
+        SD_BUS_METHOD_WITH_ARGS("QueueSignalUnit",
+                                SD_BUS_ARGS("s", name, "s", whom, "i", signal, "i", value),
+                                SD_BUS_NO_RESULT,
+                                method_kill_unit,
+                                SD_BUS_VTABLE_UNPRIVILEGED),
         SD_BUS_METHOD_WITH_ARGS("CleanUnit",
                                 SD_BUS_ARGS("s", name, "as", mask),
                                 SD_BUS_NO_RESULT,
index 1ef98da6fd9f265fb0942d12534650b1ba95f952..8f851cbceb2ffad6287f5af68a4e008b0c5ddc1f 100644 (file)
@@ -513,10 +513,11 @@ int bus_unit_method_enqueue_job(sd_bus_message *message, void *userdata, sd_bus_
 
 int bus_unit_method_kill(sd_bus_message *message, void *userdata, sd_bus_error *error) {
         Unit *u = ASSERT_PTR(userdata);
+        int32_t value = 0;
         const char *swho;
         int32_t signo;
         KillWho who;
-        int r;
+        int r, code;
 
         assert(message);
 
@@ -528,17 +529,30 @@ int bus_unit_method_kill(sd_bus_message *message, void *userdata, sd_bus_error *
         if (r < 0)
                 return r;
 
+        if (startswith(sd_bus_message_get_member(message), "QueueSignal")) {
+                r = sd_bus_message_read(message, "i", &value);
+                if (r < 0)
+                        return r;
+
+                code = SI_QUEUE;
+        } else
+                code = SI_USER;
+
         if (isempty(swho))
                 who = KILL_ALL;
         else {
                 who = kill_who_from_string(swho);
                 if (who < 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid who argument %s", swho);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid who argument: %s", swho);
         }
 
         if (!SIGNAL_VALID(signo))
                 return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Signal number out of range.");
 
+        if (code == SI_QUEUE && !((signo >= SIGRTMIN) && (signo <= SIGRTMAX)))
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                         "Value parameter only accepted for realtime signals (SIGRTMIN…SIGRTMAX), refusing for signal SIG%s.", signal_to_string(signo));
+
         r = bus_verify_manage_units_async_full(
                         u,
                         "kill",
@@ -552,7 +566,7 @@ int bus_unit_method_kill(sd_bus_message *message, void *userdata, sd_bus_error *
         if (r == 0)
                 return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
 
-        r = unit_kill(u, who, signo, error);
+        r = unit_kill(u, who, signo, code, value, error);
         if (r < 0)
                 return r;
 
@@ -984,6 +998,11 @@ const sd_bus_vtable bus_unit_vtable[] = {
                                 SD_BUS_NO_RESULT,
                                 bus_unit_method_kill,
                                 SD_BUS_VTABLE_UNPRIVILEGED),
+        SD_BUS_METHOD_WITH_ARGS("QueueSignal",
+                                SD_BUS_ARGS("s", whom, "i", signal, "i", value),
+                                SD_BUS_NO_RESULT,
+                                bus_unit_method_kill,
+                                SD_BUS_VTABLE_UNPRIVILEGED),
         SD_BUS_METHOD("ResetFailed",
                       NULL,
                       NULL,
index ec018a4c442861d147d3dee4c0fe0a7eb9a2cd4f..4f6ecf4d7f9a1e537caf0f4a013de961a25c59ec 100644 (file)
@@ -684,7 +684,7 @@ static int device_setup_unit(Manager *m, sd_device *dev, const char *path, bool
                  * serialize the sysfs path across reloads/reexecs. Hence, when coming back from a reload/restart we
                  * might have the state valid, but not the sysfs path. Also, there is another possibility; when multiple
                  * devices have the same devlink (e.g. /dev/disk/by-uuid/xxxx), adding/updating/removing one of the
-                 * device causes syspath change. Hence, let's always update sysfs path.*/
+                 * device causes syspath change. Hence, let's always update sysfs path. */
 
                 /* Let's remove all dependencies generated due to udev properties. We'll re-add whatever is configured
                  * now below. */
@@ -892,7 +892,7 @@ static int device_setup_units(Manager *m, sd_device *dev, Set **ready_units, Set
 
         /* First, process the main (that is, points to the syspath) and (real, not symlink) devnode units. */
         if (device_for_action(dev, SD_DEVICE_REMOVE))
-                /* If the device is removed, the main and devnode units units will be removed by
+                /* If the device is removed, the main and devnode units will be removed by
                  * device_update_found_by_sysfs() in device_dispatch_io(). Hence, it is not necessary to
                  * store them to not_ready_units, and we have nothing to do here.
                  *
index ac3f096b0da49c2296017e03364073916779ab51..36d664c7ee96fe2698856231c3b525f8ef44343d 100644 (file)
@@ -3024,7 +3024,7 @@ static int setup_credentials_internal(
                 final_mounted = true;
 
                 if (workspace_mounted < 0) {
-                        /* If the final place is mounted, but the workspace we isn't, then let's bind mount
+                        /* If the final place is mounted, but the workspace isn't, then let's bind mount
                          * the final version to the workspace, and make it writable, so that we can make
                          * changes */
 
@@ -5600,7 +5600,6 @@ int exec_context_destroy_runtime_directory(const ExecContext *c, const char *run
 
                         (void) unlink(symlink_abs);
                 }
-
         }
 
         return 0;
index 3ea3ca3200a09d46345f5596ec119d830ab7e016..58ace4627913b4f63391d3e7681bb35bede9c973 100644 (file)
 {{type}}.MemoryMin,                        config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.DefaultMemoryMin,                 config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.DefaultMemoryLow,                 config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.DefaultStartupMemoryLow,          config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemoryLow,                        config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryLow,                 config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemoryHigh,                       config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryHigh,                config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemoryMax,                        config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryMax,                 config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemorySwapMax,                    config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemorySwapMax,             config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemoryZSwapMax,                   config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryZSwapMax,            config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.MemoryLimit,                      config_parse_memory_limit,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.DeviceAllow,                      config_parse_device_allow,                   0,                                  offsetof({{type}}, cgroup_context)
 {{type}}.DevicePolicy,                     config_parse_device_policy,                  0,                                  offsetof({{type}}, cgroup_context.device_policy)
index ce15758901ada2a2f09f98b98eb364b445045efd..ec782703a755ca16aaa3590b08fb7ff57a51f2c4 100644 (file)
@@ -3813,6 +3813,7 @@ int config_parse_memory_limit(
         if (isempty(rvalue) && STR_IN_SET(lvalue, "DefaultMemoryLow",
                                                   "DefaultMemoryMin",
                                                   "MemoryLow",
+                                                  "StartupMemoryLow",
                                                   "MemoryMin"))
                 bytes = CGROUP_LIMIT_MIN;
         else if (!isempty(rvalue) && !streq(rvalue, "infinity")) {
@@ -3828,7 +3829,17 @@ int config_parse_memory_limit(
                         bytes = physical_memory_scale(r, 10000U);
 
                 if (bytes >= UINT64_MAX ||
-                    (bytes <= 0 && !STR_IN_SET(lvalue, "MemorySwapMax", "MemoryZSwapMax", "MemoryLow", "MemoryMin", "DefaultMemoryLow", "DefaultMemoryMin"))) {
+                    (bytes <= 0 && !STR_IN_SET(lvalue,
+                                               "MemorySwapMax",
+                                               "StartupMemorySwapMax",
+                                               "MemoryZSwapMax",
+                                               "StartupMemoryZSwapMax",
+                                               "MemoryLow",
+                                               "StartupMemoryLow",
+                                               "MemoryMin",
+                                               "DefaultMemoryLow",
+                                               "DefaultstartupMemoryLow",
+                                               "DefaultMemoryMin"))) {
                         log_syntax(unit, LOG_WARNING, filename, line, 0, "Memory limit '%s' out of range, ignoring.", rvalue);
                         return 0;
                 }
@@ -3837,6 +3848,9 @@ int config_parse_memory_limit(
         if (streq(lvalue, "DefaultMemoryLow")) {
                 c->default_memory_low = bytes;
                 c->default_memory_low_set = true;
+        } else if (streq(lvalue, "DefaultStartupMemoryLow")) {
+                c->default_startup_memory_low = bytes;
+                c->default_startup_memory_low_set = true;
         } else if (streq(lvalue, "DefaultMemoryMin")) {
                 c->default_memory_min = bytes;
                 c->default_memory_min_set = true;
@@ -3846,15 +3860,30 @@ int config_parse_memory_limit(
         } else if (streq(lvalue, "MemoryLow")) {
                 c->memory_low = bytes;
                 c->memory_low_set = true;
+        } else if (streq(lvalue, "StartupMemoryLow")) {
+                c->startup_memory_low = bytes;
+                c->startup_memory_low_set = true;
         } else if (streq(lvalue, "MemoryHigh"))
                 c->memory_high = bytes;
-        else if (streq(lvalue, "MemoryMax"))
+        else if (streq(lvalue, "StartupMemoryHigh")) {
+                c->startup_memory_high = bytes;
+                c->startup_memory_high_set = true;
+        } else if (streq(lvalue, "MemoryMax"))
                 c->memory_max = bytes;
-        else if (streq(lvalue, "MemorySwapMax"))
+        else if (streq(lvalue, "StartupMemoryMax")) {
+                c->startup_memory_max = bytes;
+                c->startup_memory_max_set = true;
+        } else if (streq(lvalue, "MemorySwapMax"))
                 c->memory_swap_max = bytes;
-        else if (streq(lvalue, "MemoryZSwapMax"))
+        else if (streq(lvalue, "StartupMemorySwapMax")) {
+                c->startup_memory_swap_max = bytes;
+                c->startup_memory_swap_max_set = true;
+        } else if (streq(lvalue, "MemoryZSwapMax"))
                 c->memory_zswap_max = bytes;
-        else if (streq(lvalue, "MemoryLimit")) {
+        else if (streq(lvalue, "StartupMemoryZSwapMax")) {
+                c->startup_memory_zswap_max = bytes;
+                c->startup_memory_zswap_max_set = true;
+        } else if (streq(lvalue, "MemoryLimit")) {
                 log_syntax(unit, LOG_WARNING, filename, line, 0,
                            "Unit uses MemoryLimit=; please use MemoryMax= instead. Support for MemoryLimit= will be removed soon.");
                 c->memory_limit = bytes;
index 867f3c7adcf02d33e0dc8dd0923f022104f22766..f28448f9e43bccf4b532d733f7018d54fbf794ec 100644 (file)
@@ -645,6 +645,9 @@ static int parse_config_file(void) {
                 { "Manager", "NoNewPrivileges",              config_parse_bool,                  0,                        &arg_no_new_privs                 },
 #if HAVE_SECCOMP
                 { "Manager", "SystemCallArchitectures",      config_parse_syscall_archs,         0,                        &arg_syscall_archs                },
+#else
+                { "Manager", "SystemCallArchitectures",      config_parse_warn_compat,           DISABLED_CONFIGURATION,   NULL                              },
+
 #endif
                 { "Manager", "TimerSlackNSec",               config_parse_nsec,                  0,                        &arg_timer_slack_nsec             },
                 { "Manager", "DefaultTimerAccuracySec",      config_parse_sec,                   0,                        &arg_default_timer_accuracy_usec  },
@@ -2784,8 +2787,7 @@ int main(int argc, char *argv[]) {
                 if (detect_container() <= 0) {
 
                         /* Running outside of a container as PID 1 */
-                        log_set_target(LOG_TARGET_KMSG);
-                        log_open();
+                        log_set_target_and_open(LOG_TARGET_KMSG);
 
                         if (in_initrd())
                                 initrd_timestamp = userspace_timestamp;
@@ -2829,8 +2831,7 @@ int main(int argc, char *argv[]) {
 
                 } else {
                         /* Running inside a container, as PID 1 */
-                        log_set_target(LOG_TARGET_CONSOLE);
-                        log_open();
+                        log_set_target_and_open(LOG_TARGET_CONSOLE);
 
                         /* For later on, see above... */
                         log_set_target(LOG_TARGET_JOURNAL);
@@ -2877,8 +2878,7 @@ int main(int argc, char *argv[]) {
                 /* Running as user instance */
                 arg_system = false;
                 log_set_always_reopen_console(true);
-                log_set_target(LOG_TARGET_AUTO);
-                log_open();
+                log_set_target_and_open(LOG_TARGET_AUTO);
 
                 /* clear the kernel timestamp, because we are not PID 1 */
                 kernel_timestamp = DUAL_TIMESTAMP_NULL;
index 67bab54b9b0a440e895bd6b8fd13e08175ef734a..7b394794b0d4d5efdff42c10629aec1f043f42f9 100644 (file)
@@ -2994,7 +2994,7 @@ static int manager_dispatch_idle_pipe_fd(sd_event_source *source, int fd, uint32
          * on services that want to own the console exclusively without our interference. */
         m->no_console_output = m->n_on_console > 0;
 
-        /* Acknowledge the child's request, and let all all other children know too that they shouldn't wait
+        /* Acknowledge the child's request, and let all other children know too that they shouldn't wait
          * any longer by closing the pipes towards them, which is what they are waiting for. */
         manager_close_idle_pipe(m);
 
index f47c511da6033de7463112cf93e81b3cf5335fcf..95bd04f6e9f214bcc6e6a4b78698ebe5822ae570 100644 (file)
@@ -490,6 +490,10 @@ static int mount_add_default_ordering_dependencies(Mount *m, MountParameters *p,
                 after = NULL;
                 before = isempty(e) ? SPECIAL_INITRD_ROOT_FS_TARGET : SPECIAL_INITRD_FS_TARGET;
 
+        } else if (in_initrd() && path_startswith(m->where, "/sysusr/usr")) {
+                after = NULL;
+                before = SPECIAL_INITRD_USR_FS_TARGET;
+
         } else if (mount_is_network(p)) {
                 after = SPECIAL_REMOTE_FS_PRE_TARGET;
                 before = SPECIAL_REMOTE_FS_TARGET;
@@ -2154,12 +2158,12 @@ static void mount_reset_failed(Unit *u) {
         m->clean_result = MOUNT_SUCCESS;
 }
 
-static int mount_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
+static int mount_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
         Mount *m = MOUNT(u);
 
         assert(m);
 
-        return unit_kill_common(u, who, signo, -1, m->control_pid, error);
+        return unit_kill_common(u, who, signo, code, value, -1, m->control_pid, error);
 }
 
 static int mount_control_pid(Unit *u) {
index 1cef421db81037457bdf83d3546b6d41d803ce18..7f44c32b8395b36e06c4be9cb9c51961607a97d3 100644 (file)
                        send_interface="org.freedesktop.systemd1.Manager"
                        send_member="KillUnit"/>
 
+                <allow send_destination="org.freedesktop.systemd1"
+                       send_interface="org.freedesktop.systemd1.Manager"
+                       send_member="QueueSignalUnit"/>
+
                 <allow send_destination="org.freedesktop.systemd1"
                        send_interface="org.freedesktop.systemd1.Manager"
                        send_member="ResetFailedUnit"/>
                        send_interface="org.freedesktop.systemd1.Unit"
                        send_member="Kill"/>
 
+                <allow send_destination="org.freedesktop.systemd1"
+                       send_interface="org.freedesktop.systemd1.Unit"
+                       send_member="QueueSignal"/>
+
                 <allow send_destination="org.freedesktop.systemd1"
                        send_interface="org.freedesktop.systemd1.Unit"
                        send_member="ResetFailed"/>
index 914d1cc74467174c1db350d6d91da6d8cd3bffef..62f23a9e1ecf2d29f2b185bbc6f75009b427eca2 100644 (file)
@@ -530,8 +530,8 @@ static void scope_reset_failed(Unit *u) {
         s->result = SCOPE_SUCCESS;
 }
 
-static int scope_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
-        return unit_kill_common(u, who, signo, -1, -1, error);
+static int scope_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+        return unit_kill_common(u, who, signo, code, value, -1, -1, error);
 }
 
 static int scope_get_timeout(Unit *u, usec_t *timeout) {
index 9c2fb2ee1c8d3a7da074164a9c53df7f686e0bc6..dc5ccfd239d1f2e0fd4922f0d4f43af93ffaaee0 100644 (file)
@@ -2691,25 +2691,24 @@ _pure_ static bool service_can_reload(Unit *u) {
                 s->type == SERVICE_NOTIFY_RELOAD;
 }
 
-static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, ExecCommand *current) {
+static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, const ExecCommand *current) {
         Service *s = SERVICE(u);
         unsigned idx = 0;
-        ExecCommand *first, *c;
 
         assert(s);
         assert(id >= 0);
         assert(id < _SERVICE_EXEC_COMMAND_MAX);
 
-        first = s->exec_command[id];
+        const ExecCommand *first = s->exec_command[id];
 
         /* Figure out where we are in the list by walking back to the beginning */
-        for (c = current; c != first; c = c->command_prev)
+        for (const ExecCommand *c = current; c != first; c = c->command_prev)
                 idx++;
 
         return idx;
 }
 
-static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command) {
+static int service_serialize_exec_command(Unit *u, FILE *f, const ExecCommand *command) {
         _cleanup_free_ char *args = NULL, *p = NULL;
         Service *s = SERVICE(u);
         const char *type, *key;
@@ -2764,7 +2763,16 @@ static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command
                 return log_oom();
 
         key = strjoina(type, "-command");
-        (void) serialize_item_format(f, key, "%s %u %s %s", service_exec_command_to_string(id), idx, p, args);
+
+        /* We use '+1234' instead of '1234' to mark the last command in a sequence.
+         * This is used in service_deserialize_exec_command(). */
+        (void) serialize_item_format(
+                        f, key,
+                        "%s %s%u %s %s",
+                        service_exec_command_to_string(id),
+                        command->command_next ? "" : "+",
+                        idx,
+                        p, args);
 
         return 0;
 }
@@ -2878,7 +2886,7 @@ int service_deserialize_exec_command(
         Service *s = SERVICE(u);
         int r;
         unsigned idx = 0, i;
-        bool control, found = false;
+        bool control, found = false, last = false;
         ServiceExecCommand id = _SERVICE_EXEC_COMMAND_INVALID;
         ExecCommand *command = NULL;
         _cleanup_free_ char *path = NULL;
@@ -2919,9 +2927,15 @@ int service_deserialize_exec_command(
                         state = STATE_EXEC_COMMAND_INDEX;
                         break;
                 case STATE_EXEC_COMMAND_INDEX:
+                        /* PID 1234 is serialized as either '1234' or '+1234'. The second form is used to
+                         * mark the last command in a sequence. We warn if the deserialized command doesn't
+                         * match what we have loaded from the unit, but we don't need to warn if that is the
+                         * last command. */
+
                         r = safe_atou(arg, &idx);
                         if (r < 0)
                                 return r;
+                        last = arg[0] == '+';
 
                         state = STATE_EXEC_COMMAND_PATH;
                         break;
@@ -2966,6 +2980,8 @@ int service_deserialize_exec_command(
                 s->control_command_id = id;
         } else if (command)
                 s->main_command = command;
+        else if (last)
+                log_unit_debug(u, "Current command vanished from the unit file.");
         else
                 log_unit_warning(u, "Current command vanished from the unit file, execution of the command list won't be resumed.");
 
@@ -4580,12 +4596,12 @@ static void service_reset_failed(Unit *u) {
         s->flush_n_restarts = false;
 }
 
-static int service_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
+static int service_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
         Service *s = SERVICE(u);
 
         assert(s);
 
-        return unit_kill_common(u, who, signo, s->main_pid, s->control_pid, error);
+        return unit_kill_common(u, who, signo, code, value, s->main_pid, s->control_pid, error);
 }
 
 static int service_main_pid(Unit *u) {
index 4824a300d0718c4c45e4aa82d0467ff8cb5407aa..eb0ba5e763d6db5c3b6352043ee335c080a9f9da 100644 (file)
@@ -247,8 +247,8 @@ static int slice_stop(Unit *u) {
         return 1;
 }
 
-static int slice_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
-        return unit_kill_common(u, who, signo, -1, -1, error);
+static int slice_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+        return unit_kill_common(u, who, signo, code, value, -1, -1, error);
 }
 
 static int slice_serialize(Unit *u, FILE *f, FDSet *fds) {
index 409d415d8d99295a25164aa645110ebec6d29df8..8241ba050bfd9fe1c81fd4a6a1114eb1523b7530 100644 (file)
@@ -3299,8 +3299,8 @@ static void socket_trigger_notify(Unit *u, Unit *other) {
                 socket_set_state(s, SOCKET_RUNNING);
 }
 
-static int socket_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
-        return unit_kill_common(u, who, signo, -1, SOCKET(u)->control_pid, error);
+static int socket_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+        return unit_kill_common(u, who, signo, code, value, -1, SOCKET(u)->control_pid, error);
 }
 
 static int socket_get_timeout(Unit *u, usec_t *timeout) {
index 2d25014e5f4abf2c5ff94765d474843da056518c..ab901a2cd171d4d959801f209e49c3775cb7a709 100644 (file)
@@ -1480,8 +1480,8 @@ static void swap_reset_failed(Unit *u) {
         s->clean_result = SWAP_SUCCESS;
 }
 
-static int swap_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
-        return unit_kill_common(u, who, signo, -1, SWAP(u)->control_pid, error);
+static int swap_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+        return unit_kill_common(u, who, signo, code, value, -1, SWAP(u)->control_pid, error);
 }
 
 static int swap_get_timeout(Unit *u, usec_t *timeout) {
index 982b6cf6dc329fef4447e5589a59caad296a975c..a6fd184e33e78d1b7a0207422dc8e91309faf626 100644 (file)
@@ -1098,6 +1098,20 @@ int transaction_add_job_and_dependencies(
         return 0;
 }
 
+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;
@@ -1107,20 +1121,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);
index 166246901244365730298a0b858ecbf715c7aefc..be7b19877f4678827f59aa0d0e7043b884406de1 100644 (file)
@@ -3785,15 +3785,16 @@ bool unit_will_restart(Unit *u) {
         return UNIT_VTABLE(u)->will_restart(u);
 }
 
-int unit_kill(Unit *u, KillWho w, int signo, sd_bus_error *error) {
+int unit_kill(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error) {
         assert(u);
         assert(w >= 0 && w < _KILL_WHO_MAX);
         assert(SIGNAL_VALID(signo));
+        assert(IN_SET(code, SI_USER, SI_QUEUE));
 
         if (!UNIT_VTABLE(u)->kill)
                 return -EOPNOTSUPP;
 
-        return UNIT_VTABLE(u)->kill(u, w, signo, error);
+        return UNIT_VTABLE(u)->kill(u, w, signo, code, value, error);
 }
 
 void unit_notify_cgroup_oom(Unit *u, bool managed_oom) {
@@ -3838,21 +3839,48 @@ static int kill_common_log(pid_t pid, int signo, void *userdata) {
         return 1;
 }
 
+static int kill_or_sigqueue(pid_t pid, int signo, int code, int value) {
+        assert(pid > 0);
+        assert(SIGNAL_VALID(signo));
+
+        switch (code) {
+
+        case SI_USER:
+                log_debug("Killing " PID_FMT " with signal SIG%s.", pid, signal_to_string(signo));
+                return RET_NERRNO(kill(pid, signo));
+
+        case SI_QUEUE:
+                log_debug("Enqueuing value %i to " PID_FMT " on signal SIG%s.", value, pid, signal_to_string(signo));
+                return RET_NERRNO(sigqueue(pid, signo, (const union sigval) { .sival_int = value }));
+
+        default:
+                assert_not_reached();
+        }
+}
+
 int unit_kill_common(
                 Unit *u,
                 KillWho who,
                 int signo,
+                int code,
+                int value,
                 pid_t main_pid,
                 pid_t control_pid,
                 sd_bus_error *error) {
 
-        int r = 0;
         bool killed = false;
+        int ret = 0, r;
 
         /* This is the common implementation for explicit user-requested killing of unit processes, shared by
          * various unit types. Do not confuse with unit_kill_context(), which is what we use when we want to
          * stop a service ourselves. */
 
+        assert(u);
+        assert(who >= 0);
+        assert(who < _KILL_WHO_MAX);
+        assert(SIGNAL_VALID(signo));
+        assert(IN_SET(code, SI_USER, SI_QUEUE));
+
         if (IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL)) {
                 if (main_pid < 0)
                         return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_PROCESS, "%s units have no main processes", unit_type_to_string(u->type));
@@ -3867,71 +3895,85 @@ int unit_kill_common(
                         return sd_bus_error_set_const(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill");
         }
 
-        if (IN_SET(who, KILL_CONTROL, KILL_CONTROL_FAIL, KILL_ALL, KILL_ALL_FAIL))
-                if (control_pid > 0) {
-                        _cleanup_free_ char *comm = NULL;
-                        (void) get_process_comm(control_pid, &comm);
+        if (control_pid > 0 &&
+            IN_SET(who, KILL_CONTROL, KILL_CONTROL_FAIL, KILL_ALL, KILL_ALL_FAIL)) {
+                _cleanup_free_ char *comm = NULL;
+                (void) get_process_comm(control_pid, &comm);
 
-                        if (kill(control_pid, signo) < 0) {
-                                /* Report this failure both to the logs and to the client */
-                                sd_bus_error_set_errnof(
-                                                error, errno,
-                                                "Failed to send signal SIG%s to control process " PID_FMT " (%s): %m",
-                                                signal_to_string(signo), control_pid, strna(comm));
-                                r = log_unit_warning_errno(
-                                                u, errno,
-                                                "Failed to send signal SIG%s to control process " PID_FMT " (%s) on client request: %m",
-                                                signal_to_string(signo), control_pid, strna(comm));
-                        } else {
-                                log_unit_info(u, "Sent signal SIG%s to control process " PID_FMT " (%s) on client request.",
-                                              signal_to_string(signo), control_pid, strna(comm));
-                                killed = true;
-                        }
+                r = kill_or_sigqueue(control_pid, signo, code, value);
+                if (r < 0) {
+                        ret = r;
+
+                        /* Report this failure both to the logs and to the client */
+                        sd_bus_error_set_errnof(
+                                        error, r,
+                                        "Failed to send signal SIG%s to control process " PID_FMT " (%s): %m",
+                                        signal_to_string(signo), control_pid, strna(comm));
+                        log_unit_warning_errno(
+                                        u, r,
+                                        "Failed to send signal SIG%s to control process " PID_FMT " (%s) on client request: %m",
+                                        signal_to_string(signo), control_pid, strna(comm));
+                } else {
+                        log_unit_info(u, "Sent signal SIG%s to control process " PID_FMT " (%s) on client request.",
+                                      signal_to_string(signo), control_pid, strna(comm));
+                        killed = true;
                 }
+        }
 
-        if (IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL, KILL_ALL, KILL_ALL_FAIL))
-                if (main_pid > 0) {
-                        _cleanup_free_ char *comm = NULL;
-                        (void) get_process_comm(main_pid, &comm);
+        if (main_pid > 0 &&
+            IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL, KILL_ALL, KILL_ALL_FAIL)) {
 
-                        if (kill(main_pid, signo) < 0) {
-                                if (r == 0)
-                                        sd_bus_error_set_errnof(
-                                                        error, errno,
-                                                        "Failed to send signal SIG%s to main process " PID_FMT " (%s): %m",
-                                                        signal_to_string(signo), main_pid, strna(comm));
+                _cleanup_free_ char *comm = NULL;
+                (void) get_process_comm(main_pid, &comm);
+
+                r = kill_or_sigqueue(main_pid, signo, code, value);
+                if (r < 0) {
+                        if (ret == 0) {
+                                ret = r;
 
-                                r = log_unit_warning_errno(
-                                                u, errno,
-                                                "Failed to send signal SIG%s to main process " PID_FMT " (%s) on client request: %m",
+                                sd_bus_error_set_errnof(
+                                                error, r,
+                                                "Failed to send signal SIG%s to main process " PID_FMT " (%s): %m",
                                                 signal_to_string(signo), main_pid, strna(comm));
-                        } else {
-                                log_unit_info(u, "Sent signal SIG%s to main process " PID_FMT " (%s) on client request.",
-                                              signal_to_string(signo), main_pid, strna(comm));
-                                killed = true;
                         }
+
+                        log_unit_warning_errno(
+                                        u, r,
+                                        "Failed to send signal SIG%s to main process " PID_FMT " (%s) on client request: %m",
+                                        signal_to_string(signo), main_pid, strna(comm));
+
+                } else {
+                        log_unit_info(u, "Sent signal SIG%s to main process " PID_FMT " (%s) on client request.",
+                                      signal_to_string(signo), main_pid, strna(comm));
+                        killed = true;
                 }
+        }
 
-        if (IN_SET(who, KILL_ALL, KILL_ALL_FAIL) && u->cgroup_path) {
+        /* Note: if we shall enqueue rather than kill we won't do this via the cgroup mechanism, since it
+         * doesn't really make much sense (and given that enqueued values are a relatively expensive
+         * resource, and we shouldn't allow us to be subjects for such allocation sprees) */
+        if (IN_SET(who, KILL_ALL, KILL_ALL_FAIL) && u->cgroup_path && code == SI_USER) {
                 _cleanup_set_free_ Set *pid_set = NULL;
-                int q;
 
                 /* Exclude the main/control pids from being killed via the cgroup */
                 pid_set = unit_pid_set(main_pid, control_pid);
                 if (!pid_set)
                         return log_oom();
 
-                q = cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, signo, 0, pid_set, kill_common_log, u);
-                if (q < 0) {
-                        if (!IN_SET(q, -ESRCH, -ENOENT)) {
-                                if (r == 0)
+                r = cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, signo, 0, pid_set, kill_common_log, u);
+                if (r < 0) {
+                        if (!IN_SET(r, -ESRCH, -ENOENT)) {
+                                if (ret == 0) {
+                                        ret = r;
+
                                         sd_bus_error_set_errnof(
-                                                        error, q,
+                                                        error, r,
                                                         "Failed to send signal SIG%s to auxiliary processes: %m",
                                                         signal_to_string(signo));
+                                }
 
-                                r = log_unit_warning_errno(
-                                                u, q,
+                                log_unit_warning_errno(
+                                                u, r,
                                                 "Failed to send signal SIG%s to auxiliary processes on client request: %m",
                                                 signal_to_string(signo));
                         }
@@ -3940,10 +3982,10 @@ int unit_kill_common(
         }
 
         /* If the "fail" versions of the operation are requested, then complain if the set of processes we killed is empty */
-        if (r == 0 && !killed && IN_SET(who, KILL_ALL_FAIL, KILL_CONTROL_FAIL, KILL_MAIN_FAIL))
+        if (ret == 0 && !killed && IN_SET(who, KILL_ALL_FAIL, KILL_CONTROL_FAIL, KILL_MAIN_FAIL))
                 return sd_bus_error_set_const(error, BUS_ERROR_NO_SUCH_PROCESS, "No matching processes to kill");
 
-        return r;
+        return ret;
 }
 
 int unit_following_set(Unit *u, Set **s) {
@@ -4169,6 +4211,16 @@ int unit_patch_contexts(Unit *u) {
                                 if (r < 0)
                                         return r;
                         }
+
+                        /* If there are encrypted credentials we might need to access the TPM. */
+                        ExecLoadCredential *cred;
+                        HASHMAP_FOREACH(cred, ec->load_credentials)
+                                if (cred->encrypted) {
+                                        r = cgroup_add_device_allow(cc, "/dev/tpmrm0", "rw");
+                                        if (r < 0)
+                                                return r;
+                                        break;
+                                }
                 }
         }
 
@@ -4500,7 +4552,9 @@ static int log_kill(pid_t pid, int sig, void *userdata) {
         /* Don't log about processes marked with brackets, under the assumption that these are temporary processes
            only, like for example systemd's own PAM stub process. */
         if (comm && comm[0] == '(')
-                return 0;
+                /* Although we didn't log anything, as this callback is used in unit_kill_context we must return 1
+                 * here to let the manager know that a process was killed. */
+                return 1;
 
         log_unit_notice(userdata,
                         "Killing process " PID_FMT " (%s) with signal SIG%s.",
index 58417ebd0ec080b8dbc43fee78d2cf878c905366..3f8377fbf64ebdc558dba196317a3e152cee7db9 100644 (file)
@@ -619,7 +619,7 @@ typedef struct UnitVTable {
         int (*stop)(Unit *u);
         int (*reload)(Unit *u);
 
-        int (*kill)(Unit *u, KillWho w, int signo, sd_bus_error *error);
+        int (*kill)(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error);
 
         /* Clear out the various runtime/state/cache/logs/configuration data */
         int (*clean)(Unit *u, ExecCleanMask m);
@@ -889,8 +889,8 @@ int unit_start(Unit *u, ActivationDetails *details);
 int unit_stop(Unit *u);
 int unit_reload(Unit *u);
 
-int unit_kill(Unit *u, KillWho w, int signo, sd_bus_error *error);
-int unit_kill_common(Unit *u, KillWho who, int signo, pid_t main_pid, pid_t control_pid, sd_bus_error *error);
+int unit_kill(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error);
+int unit_kill_common(Unit *u, KillWho who, int signo, int code, int value, pid_t main_pid, pid_t control_pid, sd_bus_error *error);
 
 void unit_notify_cgroup_oom(Unit *u, bool managed_oom);
 
index 013ebb4c2871d4c50ace650a7f29ba4de35aabcc..d9db98bf323a1a4d8b6e13cfcf46d2267ebb44be 100644 (file)
@@ -1486,11 +1486,9 @@ static int process_kernel(int argc, char* argv[]) {
         if (r < 0)
                 goto finish;
 
-        if (!context.is_journald) {
+        if (!context.is_journald)
                 /* OK, now we know it's not the journal, hence we can make use of it now. */
-                log_set_target(LOG_TARGET_JOURNAL_OR_KMSG);
-                log_open();
-        }
+                log_set_target_and_open(LOG_TARGET_JOURNAL_OR_KMSG);
 
         /* If this is PID 1 disable coredump collection, we'll unlikely be able to process
          * it later on.
@@ -1589,8 +1587,7 @@ static int run(int argc, char *argv[]) {
         /* First, log to a safe place, since we don't know what crashed and it might
          * be journald which we'd rather not log to then. */
 
-        log_set_target(LOG_TARGET_KMSG);
-        log_open();
+        log_set_target_and_open(LOG_TARGET_KMSG);
 
         /* Make sure we never enter a loop */
         (void) prctl(PR_SET_DUMPABLE, 0);
index 3098b2e7ac155353e57f22df6c1c3f0179c0d8f1..fc6cc74dadbd79dfaf8dabf9143fd19d06801c3b 100644 (file)
@@ -196,16 +196,13 @@ int enroll_tpm2(struct crypt_device *cd,
 
                 log_debug_errno(r, "Failed to read TPM2 PCR public key, proceeding without: %m");
                 pubkey_pcr_mask = 0;
-        } else {
-                /* Also try to load the signature JSON object, to verify that our enrollment will work. This is optional however. */
+        } else if (signature_path) {
+                /* Also try to load the signature JSON object, to verify that our enrollment will work.
+                 * This is optional however, skip it if it's not explicitly provided. */
 
                 r = tpm2_load_pcr_signature(signature_path, &signature_json);
-                if (r < 0) {
-                        if (signature_path || r != -ENOENT)
-                                return log_debug_errno(r, "Failed to read TPM PCR signature: %m");
-
-                        log_debug_errno(r, "Failed to read TPM2 PCR signature, proceeding without: %m");
-                }
+                if (r < 0)
+                        return log_debug_errno(r, "Failed to read TPM PCR signature: %m");
         }
 
         r = tpm2_seal(device,
@@ -232,7 +229,7 @@ int enroll_tpm2(struct crypt_device *cd,
                 return r; /* return existing keyslot, so that wiping won't kill it */
         }
 
-        /* Quick verification that everything is in order, we are not in a hurry after all.*/
+        /* Quick verification that everything is in order, we are not in a hurry after all. */
         if (!pubkey || signature_json) {
                 _cleanup_(erase_and_freep) void *secret2 = NULL;
                 size_t secret2_size;
index 80a2c0d31611114bc1c6c866d941ad2e55acef8b..307488726935ac28b6f5c9ae64c079675e6cb330 100644 (file)
@@ -38,6 +38,7 @@ int acquire_luks2_key(
         _cleanup_(erase_and_freep) char *b64_salted_pin = NULL;
         int r;
 
+        assert(salt || salt_size == 0);
         assert(ret_decrypted_key);
         assert(ret_decrypted_key_size);
 
@@ -55,10 +56,10 @@ int acquire_luks2_key(
                 return -ENOANO;
 
         /* If we're using a PIN, and the luks header has a salt, it better have a pin too */
-        if ((flags & TPM2_FLAGS_USE_PIN) && salt && !pin)
+        if ((flags & TPM2_FLAGS_USE_PIN) && salt_size > 0 && !pin)
                 return -ENOANO;
 
-        if (pin) {
+        if (pin && salt_size > 0) {
                 uint8_t salted_pin[SHA256_DIGEST_SIZE] = {};
                 CLEANUP_ERASE(salted_pin);
                 r = tpm2_util_pbkdf2_hmac_sha256(pin, strlen(pin), salt, salt_size, salted_pin);
index 2a8a38c593892ac7921fab401db399a2adb0ee83..a375a227586d87383823e430f9ae1c0d94a9c2f0 100644 (file)
@@ -86,6 +86,8 @@ int acquire_tpm2_key(
         const void *blob;
         int r;
 
+        assert(salt || salt_size == 0);
+
         if (!device) {
                 r = tpm2_find_device_auto(LOG_DEBUG, &auto_device);
                 if (r == -ENODEV)
@@ -152,7 +154,7 @@ int acquire_tpm2_key(
                 if (r < 0)
                         return r;
 
-                if (salt) {
+                if (salt_size > 0) {
                         uint8_t salted_pin[SHA256_DIGEST_SIZE] = {};
                         CLEANUP_ERASE(salted_pin);
 
index f435932815d10f98f06695db1550f1f2826fd109..a6a5b9e2108a44a19df56338620d955121dfb59d 100644 (file)
@@ -1105,7 +1105,7 @@ static int action_list_or_mtree_or_copy(DissectedImage *m, LoopDevice *d) {
                 if (r < 0)
                         return log_error_errno(r, "Failed to copy bytes from %s in mage '%s' to '%s': %m", arg_source, arg_image, arg_target);
 
-                (void) copy_xattr(source_fd, target_fd, 0);
+                (void) copy_xattr(source_fd, NULL, target_fd, NULL, 0);
                 (void) copy_access(source_fd, target_fd);
                 (void) copy_times(source_fd, target_fd, 0);
 
@@ -1182,7 +1182,7 @@ static int action_list_or_mtree_or_copy(DissectedImage *m, LoopDevice *d) {
                 if (r < 0)
                         return log_error_errno(r, "Failed to copy bytes from '%s' to '%s' in image '%s': %m", arg_source, arg_target, arg_image);
 
-                (void) copy_xattr(source_fd, target_fd, 0);
+                (void) copy_xattr(source_fd, NULL, target_fd, NULL, 0);
                 (void) copy_access(source_fd, target_fd);
                 (void) copy_times(source_fd, target_fd, 0);
 
@@ -1258,7 +1258,7 @@ static int action_umount(const char *path) {
         if (r < 0)
                 return log_error_errno(r, "Failed to unmount '%s': %m", canonical);
 
-        /* We managed to lock and unmount successfully? That means we can try to remove the loop device.*/
+        /* We managed to lock and unmount successfully? That means we can try to remove the loop device. */
         loop_device_unrelinquish(d);
 
         if (arg_rmdir) {
index 37fdfa540f1a3be8fdfbd8d2632c266586177fde..e25c5d5efa67b0e29bb862e70780594578f35ba1 100644 (file)
@@ -27,7 +27,6 @@
 #include "path-util.h"
 #include "proc-cmdline.h"
 #include "process-util.h"
-#include "rlimit-util.h"
 #include "signal-util.h"
 #include "socket-util.h"
 #include "special.h"
@@ -346,7 +345,7 @@ static int run(int argc, char *argv[]) {
             pipe(progress_pipe) < 0)
                 return log_error_errno(errno, "pipe(): %m");
 
-        r = safe_fork("(fsck)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+        r = safe_fork("(fsck)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
         if (r < 0)
                 return r;
         if (r == 0) {
@@ -395,8 +394,6 @@ static int run(int argc, char *argv[]) {
                 cmdline[i++] = device;
                 cmdline[i++] = NULL;
 
-                (void) rlimit_nofile_safe();
-
                 execv(cmdline[0], (char**) cmdline);
                 _exit(FSCK_OPERATIONAL_ERROR);
         }
index c2514aafc9a7716eeb93fd9b23c6d99e48a66593..e6b77406000d53bc715ad8829c8f23c72f92992b 100644 (file)
@@ -2242,7 +2242,7 @@ static int home_get_disk_status_luks(
          * that case the image is pre-allocated and thus appears all used from the host PoV but is not used
          * up at all yet from the user's PoV.
          *
-         * That said, we use use the stat() reported loopback file size as upper boundary: our footprint can
+         * That said, we use the stat() reported loopback file size as upper boundary: our footprint can
          * never be larger than what we take up on the lowest layers. */
 
         if (disk_size != UINT64_MAX && disk_size > disk_free) {
index 7c61aef3b68f15149e6df08d994c8e9cc3358804..44181fd9b2fa8fe4c4f746bfa21a5b97dbfd75d5 100644 (file)
@@ -216,7 +216,7 @@ static int raw_export_process(RawExport *e) {
 finish:
         if (r >= 0) {
                 (void) copy_times(e->input_fd, e->output_fd, COPY_CRTIME);
-                (void) copy_xattr(e->input_fd, e->output_fd, 0);
+                (void) copy_xattr(e->input_fd, NULL, e->output_fd, NULL, 0);
         }
 
         if (e->on_finished)
index 5d4dedf66d609b1c52e3d0b75e262e7fa33e6460..3765b514bb373f9c4e176bc5133271b886559efc 100644 (file)
@@ -234,7 +234,7 @@ static int raw_import_finish(RawImport *i) {
 
                 if (S_ISREG(i->input_stat.st_mode)) {
                         (void) copy_times(i->input_fd, i->output_fd, COPY_CRTIME);
-                        (void) copy_xattr(i->input_fd, i->output_fd, 0);
+                        (void) copy_xattr(i->input_fd, NULL, i->output_fd, NULL, 0);
                 }
         }
 
index 6980f12a796cc4c56de40ec3ed3d6cae3cf30c34..c8a3bf370e113bdd6c223ccd84b88e949d6db6bc 100644 (file)
@@ -16,7 +16,6 @@
 #include "process-util.h"
 #include "pull-common.h"
 #include "pull-job.h"
-#include "rlimit-util.h"
 #include "rm-rf.h"
 #include "signal-util.h"
 #include "siphash24.h"
@@ -415,7 +414,7 @@ static int verify_gpg(
 
         gpg_home_created = true;
 
-        r = safe_fork("(gpg)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+        r = safe_fork("(gpg)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
         if (r < 0)
                 return r;
         if (r == 0) {
@@ -446,8 +445,6 @@ static int verify_gpg(
                         _exit(EXIT_FAILURE);
                 }
 
-                (void) rlimit_nofile_safe();
-
                 cmd[k++] = strjoina("--homedir=", gpg_home);
 
                 /* We add the user keyring only to the command line arguments, if it's around since gpg fails
index a4a844bf0727ac160cb2bf3681f943839c103c6b..8a152d0f6f41f8e9390b75f635fafe6bccbafeb6 100644 (file)
@@ -396,7 +396,7 @@ static int raw_pull_make_local_copy(RawPull *i) {
                 return log_error_errno(r, "Failed to make writable copy of image: %m");
 
         (void) copy_times(i->raw_job->disk_fd, dfd, COPY_CRTIME);
-        (void) copy_xattr(i->raw_job->disk_fd, dfd, 0);
+        (void) copy_xattr(i->raw_job->disk_fd, NULL, dfd, NULL, 0);
 
         dfd = safe_close(dfd);
 
index 29f05891f57646707b0fd9a503bec7cc7bdf3462..7df264fb53141858d15d5f6ed2e77d13690cf152 100644 (file)
@@ -85,7 +85,7 @@ static int spawn_child(const char* child, char** argv) {
         if (pipe(fd) < 0)
                 return log_error_errno(errno, "Failed to create pager pipe: %m");
 
-        r = safe_fork("(remote)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &child_pid);
+        r = safe_fork("(remote)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &child_pid);
         if (r < 0) {
                 safe_close_pair(fd);
                 return r;
@@ -101,8 +101,6 @@ static int spawn_child(const char* child, char** argv) {
                         _exit(EXIT_FAILURE);
                 }
 
-                (void) rlimit_nofile_safe();
-
                 execvp(child, argv);
                 log_error_errno(errno, "Failed to exec child %s: %m", child);
                 _exit(EXIT_FAILURE);
index f6c3d83732b7f8272e10cb2490519bf4fb960102..ace4a1cfadd91538d69ead2a6684b794c25a01ea 100644 (file)
@@ -99,9 +99,16 @@ int writer_write(Writer *w,
                         return r;
         }
 
-        r = journal_file_append_entry(w->journal->file, ts, boot_id,
-                                      iovw->iovec, iovw->count,
-                                      &w->seqnum, NULL, NULL);
+        r = journal_file_append_entry(
+                        w->journal->file,
+                        ts,
+                        boot_id,
+                        iovw->iovec,
+                        iovw->count,
+                        &w->seqnum,
+                        /* seqnum_id= */ NULL,
+                        /* ret_object= */ NULL,
+                        /* ret_offset= */ NULL);
         if (r >= 0) {
                 if (w->server)
                         w->server->event_count += 1;
@@ -120,9 +127,15 @@ int writer_write(Writer *w,
                 return r;
 
         log_debug("Retrying write.");
-        r = journal_file_append_entry(w->journal->file, ts, boot_id,
-                                      iovw->iovec, iovw->count,
-                                      &w->seqnum, NULL, NULL);
+        r = journal_file_append_entry(
+                        w->journal->file,
+                        ts,
+                        boot_id,
+                        iovw->iovec, iovw->count,
+                        &w->seqnum,
+                        /* seqnum_id= */ NULL,
+                        /* ret_object= */ NULL,
+                        /* ret_offset= */ NULL);
         if (r < 0)
                 return r;
 
index 0ba427a660b54cd7e12efea8e66c8e1b92f46358..5908758a8f03ade9be2b4fb0b3ca188aa8b9f991 100644 (file)
@@ -5,6 +5,7 @@
 #include <getopt.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <sys/stat.h>
 #include <unistd.h>
 
 #include "sd-journal.h"
@@ -12,6 +13,7 @@
 #include "alloc-util.h"
 #include "build.h"
 #include "fd-util.h"
+#include "format-util.h"
 #include "main-func.h"
 #include "parse-argument.h"
 #include "parse-util.h"
@@ -151,8 +153,23 @@ static int run(int argc, char *argv[]) {
 
         if (argc <= optind)
                 (void) execl("/bin/cat", "/bin/cat", NULL);
-        else
+        else {
+                _cleanup_free_ char *s = NULL;
+                struct stat st;
+
+                if (fstat(STDERR_FILENO, &st) < 0)
+                        return log_error_errno(errno,
+                                               "Failed to fstat(%s): %m",
+                                               FORMAT_PROC_FD_PATH(STDERR_FILENO));
+
+                if (asprintf(&s, DEV_FMT ":" INO_FMT, st.st_dev, st.st_ino) < 0)
+                        return log_oom();
+
+                if (setenv("JOURNAL_STREAM", s, /* overwrite = */ true) < 0)
+                        return log_error_errno(errno, "Failed to set environment variable JOURNAL_STREAM: %m");
+
                 (void) execvp(argv[optind], argv + optind);
+        }
         r = -errno;
 
         /* Let's try to restore a working stderr, so we can print the error message */
index b2883ff177ba091f76c063e043c1bd47ed5e242f..0267fc6506cfc315a9b8af61db916eb690a82421 100644 (file)
@@ -45,6 +45,7 @@
 #include "locale-util.h"
 #include "log.h"
 #include "logs-show.h"
+#include "main-func.h"
 #include "memory-util.h"
 #include "missing_sched.h"
 #include "mkdir.h"
@@ -2091,7 +2092,7 @@ static int wait_for_change(sd_journal *j, int poll_fd) {
         return 0;
 }
 
-int main(int argc, char *argv[]) {
+static int run(int argc, char *argv[]) {
         _cleanup_(loop_device_unrefp) LoopDevice *loop_device = NULL;
         _cleanup_(umount_and_rmdir_and_freep) char *unlink_dir = NULL;
         bool previous_boot_id_valid = false, first_line = true, ellipsized = false, need_seek = false;
@@ -2099,6 +2100,7 @@ int main(int argc, char *argv[]) {
         _cleanup_(sd_journal_closep) sd_journal *j = NULL;
         sd_id128_t previous_boot_id = SD_ID128_NULL, previous_boot_id_output = SD_ID128_NULL;
         dual_timestamp previous_ts_output = DUAL_TIMESTAMP_NULL;
+        _cleanup_close_ int machine_fd = -EBADF;
         int n_shown = 0, r, poll_fd = -EBADF;
 
         setlocale(LC_ALL, "");
@@ -2110,7 +2112,7 @@ int main(int argc, char *argv[]) {
 
         r = parse_argv(argc, argv);
         if (r <= 0)
-                goto finish;
+                return r;
 
         if (arg_image) {
                 assert(!arg_root);
@@ -2138,12 +2140,10 @@ int main(int argc, char *argv[]) {
         switch (arg_action) {
 
         case ACTION_NEW_ID128:
-                r = id128_print_new(ID128_PRINT_PRETTY);
-                goto finish;
+                return id128_print_new(ID128_PRINT_PRETTY);
 
         case ACTION_SETUP_KEYS:
-                r = setup_keys();
-                goto finish;
+                return setup_keys();
 
         case ACTION_LIST_CATALOG:
         case ACTION_DUMP_CATALOG:
@@ -2151,15 +2151,13 @@ int main(int argc, char *argv[]) {
                 _cleanup_free_ char *database = NULL;
 
                 database = path_join(arg_root, CATALOG_DATABASE);
-                if (!database) {
-                        r = log_oom();
-                        goto finish;
-                }
+                if (!database)
+                        return log_oom();
 
                 if (arg_action == ACTION_UPDATE_CATALOG) {
                         r = catalog_update(database, arg_root, catalog_file_dirs);
                         if (r < 0)
-                                log_error_errno(r, "Failed to list catalog: %m");
+                                return log_error_errno(r, "Failed to list catalog: %m");
                 } else {
                         bool oneline = arg_action == ACTION_LIST_CATALOG;
 
@@ -2170,27 +2168,23 @@ int main(int argc, char *argv[]) {
                         else
                                 r = catalog_list(stdout, database, oneline);
                         if (r < 0)
-                                log_error_errno(r, "Failed to list catalog: %m");
+                                return log_error_errno(r, "Failed to list catalog: %m");
                 }
 
-                goto finish;
+                return 0;
         }
 
         case ACTION_FLUSH:
-                r = flush_to_var();
-                goto finish;
+                return flush_to_var();
 
         case ACTION_RELINQUISH_VAR:
-                r = relinquish_var();
-                goto finish;
+                return relinquish_var();
 
         case ACTION_SYNC:
-                r = sync_journal();
-                goto finish;
+                return sync_journal();
 
         case ACTION_ROTATE:
-                r = rotate();
-                goto finish;
+                return rotate();
 
         case ACTION_SHOW:
         case ACTION_PRINT_HEADER:
@@ -2222,18 +2216,14 @@ int main(int argc, char *argv[]) {
                 _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
                 int fd;
 
-                if (geteuid() != 0) {
+                if (geteuid() != 0)
                         /* The file descriptor returned by OpenMachineRootDirectory() will be owned by users/groups of
                          * the container, thus we need root privileges to override them. */
-                        r = log_error_errno(SYNTHETIC_ERRNO(EPERM), "Using the --machine= switch requires root privileges.");
-                        goto finish;
-                }
+                        return log_error_errno(SYNTHETIC_ERRNO(EPERM), "Using the --machine= switch requires root privileges.");
 
                 r = sd_bus_open_system(&bus);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to open system bus: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to open system bus: %m");
 
                 r = sd_bus_call_method(
                                 bus,
@@ -2244,41 +2234,31 @@ int main(int argc, char *argv[]) {
                                 &error,
                                 &reply,
                                 "s", arg_machine);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to open root directory: %s", bus_error_message(&error, r));
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to open root directory: %s", bus_error_message(&error, r));
 
                 r = sd_bus_message_read(reply, "h", &fd);
-                if (r < 0) {
-                        bus_log_parse_error(r);
-                        goto finish;
-                }
+                if (r < 0)
+                        return bus_log_parse_error(r);
 
-                fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
-                if (fd < 0) {
-                        r = log_error_errno(errno, "Failed to duplicate file descriptor: %m");
-                        goto finish;
-                }
+                machine_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
+                if (machine_fd < 0)
+                        return log_error_errno(errno, "Failed to duplicate file descriptor: %m");
 
-                r = sd_journal_open_directory_fd(&j, fd, SD_JOURNAL_OS_ROOT);
-                if (r < 0)
-                        safe_close(fd);
+                r = sd_journal_open_directory_fd(&j, machine_fd, SD_JOURNAL_OS_ROOT);
         } else
                 r = sd_journal_open_namespace(
                                 &j,
                                 arg_namespace,
                                 (arg_merge ? 0 : SD_JOURNAL_LOCAL_ONLY) |
                                 arg_namespace_flags | arg_journal_type);
-        if (r < 0) {
-                log_error_errno(r, "Failed to open %s: %m", arg_directory ?: arg_file ? "files" : "journal");
-                goto finish;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to open %s: %m", arg_directory ?: arg_file ? "files" : "journal");
 
         r = journal_access_check_and_warn(j, arg_quiet,
                                           !(arg_journal_type == SD_JOURNAL_CURRENT_USER || arg_user_units));
         if (r < 0)
-                goto finish;
+                return r;
 
         switch (arg_action) {
 
@@ -2294,61 +2274,58 @@ int main(int argc, char *argv[]) {
 
         case ACTION_PRINT_HEADER:
                 journal_print_header(j);
-                r = 0;
-                goto finish;
+                return 0;
 
         case ACTION_VERIFY:
-                r = verify(j, !arg_quiet);
-                goto finish;
+                return verify(j, !arg_quiet);
 
         case ACTION_DISK_USAGE: {
                 uint64_t bytes = 0;
 
                 r = sd_journal_get_usage(j, &bytes);
                 if (r < 0)
-                        goto finish;
+                        return r;
 
                 printf("Archived and active journals take up %s in the file system.\n",
                        FORMAT_BYTES(bytes));
-                goto finish;
+
+                return 0;
         }
 
         case ACTION_LIST_BOOTS:
-                r = list_boots(j);
-                goto finish;
+                return list_boots(j);
 
         case ACTION_ROTATE_AND_VACUUM:
 
                 r = rotate();
                 if (r < 0)
-                        goto finish;
+                        return r;
 
                 _fallthrough_;
 
         case ACTION_VACUUM: {
                 Directory *d;
+                int ret = 0;
 
                 HASHMAP_FOREACH(d, j->directories_by_path) {
-                        int q;
-
-                        q = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);
-                        if (q < 0)
-                                r = log_error_errno(q, "Failed to vacuum %s: %m", d->path);
+                        r = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);
+                        if (r < 0) {
+                                log_error_errno(r, "Failed to vacuum %s: %m", d->path);
+                                if (ret >= 0)
+                                        ret = r;
+                        }
                 }
 
-                goto finish;
+                return ret;
         }
 
         case ACTION_LIST_FIELD_NAMES: {
                 const char *field;
 
-                SD_JOURNAL_FOREACH_FIELD(j, field) {
+                SD_JOURNAL_FOREACH_FIELD(j, field)
                         printf("%s\n", field);
-                        n_shown++;
-                }
 
-                r = 0;
-                goto finish;
+                return 0;
         }
 
         case ACTION_SHOW:
@@ -2363,42 +2340,41 @@ int main(int argc, char *argv[]) {
             sd_journal_has_runtime_files(j) > 0 &&
             sd_journal_has_persistent_files(j) == 0) {
                 log_info("Specifying boot ID or boot offset has no effect, no persistent journal was found.");
-                r = 0;
-                goto finish;
+
+                if (arg_action == ACTION_SHOW && arg_compiled_pattern)
+                        return -ENOENT;
+
+                return 0;
         }
         /* add_boot() must be called first!
          * It may need to seek the journal to find parent boot IDs. */
         r = add_boot(j);
         if (r < 0)
-                goto finish;
+                return r;
 
         r = add_dmesg(j);
         if (r < 0)
-                goto finish;
+                return r;
 
         r = add_units(j);
-        if (r < 0) {
-                log_error_errno(r, "Failed to add filter for units: %m");
-                goto finish;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to add filter for units: %m");
 
         r = add_syslog_identifier(j);
-        if (r < 0) {
-                log_error_errno(r, "Failed to add filter for syslog identifiers: %m");
-                goto finish;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to add filter for syslog identifiers: %m");
 
         r = add_priorities(j);
         if (r < 0)
-                goto finish;
+                return r;
 
         r = add_facilities(j);
         if (r < 0)
-                goto finish;
+                return r;
 
         r = add_matches(j, argv + optind);
         if (r < 0)
-                goto finish;
+                return r;
 
         if (DEBUG_LOGGING) {
                 _cleanup_free_ char *filter = NULL;
@@ -2417,16 +2393,12 @@ int main(int argc, char *argv[]) {
                 assert(arg_field);
 
                 r = sd_journal_set_data_threshold(j, 0);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to unset data size threshold: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to unset data size threshold: %m");
 
                 r = sd_journal_query_unique(j, arg_field);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to query unique data objects: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to query unique data objects: %m");
 
                 SD_JOURNAL_FOREACH_UNIQUE(j, data, size) {
                         const void *eq;
@@ -2443,8 +2415,7 @@ int main(int argc, char *argv[]) {
                         n_shown++;
                 }
 
-                r = 0;
-                goto finish;
+                return 0;
         }
 
         /* Opening the fd now means the first sd_journal_wait() will actually wait */
@@ -2453,13 +2424,10 @@ int main(int argc, char *argv[]) {
                 if (poll_fd == -EMFILE) {
                         log_warning_errno(poll_fd, "Insufficient watch descriptors available. Reverting to -n.");
                         arg_follow = false;
-                } else if (poll_fd == -EMEDIUMTYPE) {
-                        log_error_errno(poll_fd, "The --follow switch is not supported in conjunction with reading from STDIN.");
-                        goto finish;
-                } else if (poll_fd < 0) {
-                        log_error_errno(poll_fd, "Failed to get journal fd: %m");
-                        goto finish;
-                }
+                } else if (poll_fd == -EMEDIUMTYPE)
+                        return log_error_errno(poll_fd, "The --follow switch is not supported in conjunction with reading from STDIN.");
+                else if (poll_fd < 0)
+                        return log_error_errno(poll_fd, "Failed to get journal fd: %m");
         }
 
         if (arg_cursor || arg_after_cursor || arg_cursor_file) {
@@ -2468,10 +2436,8 @@ int main(int argc, char *argv[]) {
 
                 if (arg_cursor_file) {
                         r = read_one_line_file(arg_cursor_file, &cursor_from_file);
-                        if (r < 0 && r != -ENOENT) {
-                                log_error_errno(r, "Failed to read cursor file %s: %m", arg_cursor_file);
-                                goto finish;
-                        }
+                        if (r < 0 && r != -ENOENT)
+                                return log_error_errno(r, "Failed to read cursor file %s: %m", arg_cursor_file);
 
                         if (r > 0) {
                                 cursor = cursor_from_file;
@@ -2482,10 +2448,9 @@ int main(int argc, char *argv[]) {
 
                 if (cursor) {
                         r = sd_journal_seek_cursor(j, cursor);
-                        if (r < 0) {
-                                log_error_errno(r, "Failed to seek to cursor: %m");
-                                goto finish;
-                        }
+                        if (r < 0)
+                                return log_error_errno(r, "Failed to seek to cursor: %m");
+
                         use_cursor = true;
                 }
         }
@@ -2506,52 +2471,41 @@ int main(int argc, char *argv[]) {
 
         } else if (arg_since_set && !arg_reverse) {
                 r = sd_journal_seek_realtime_usec(j, arg_since);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to seek to date: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to seek to date: %m");
+
                 r = sd_journal_next(j);
 
         } else if (arg_until_set && arg_reverse) {
                 r = sd_journal_seek_realtime_usec(j, arg_until);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to seek to date: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to seek to date: %m");
+
                 r = sd_journal_previous(j);
 
         } else if (arg_reverse) {
                 r = sd_journal_seek_tail(j);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to seek to tail: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to seek to tail: %m");
 
                 r = sd_journal_previous(j);
 
         } else if (arg_lines >= 0) {
                 r = sd_journal_seek_tail(j);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to seek to tail: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to seek to tail: %m");
 
                 r = sd_journal_previous_skip(j, arg_lines);
 
         } else {
                 r = sd_journal_seek_head(j);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to seek to head: %m");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to seek to head: %m");
 
                 r = sd_journal_next(j);
         }
-
-        if (r < 0) {
-                log_error_errno(r, "Failed to iterate through journal: %m");
-                goto finish;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to iterate through journal: %m");
         if (r == 0)
                 need_seek = true;
 
@@ -2563,11 +2517,8 @@ int main(int argc, char *argv[]) {
                 char start_buf[FORMAT_TIMESTAMP_MAX], end_buf[FORMAT_TIMESTAMP_MAX];
 
                 r = sd_journal_get_cutoff_realtime_usec(j, &start, &end);
-                if (r < 0) {
-                        log_error_errno(r, "Failed to get cutoff: %m");
-                        goto finish;
-                }
-
+                if (r < 0)
+                        return log_error_errno(r, "Failed to get cutoff: %m");
                 if (r > 0) {
                         if (arg_follow)
                                 printf("-- Journal begins at %s. --\n",
@@ -2589,10 +2540,8 @@ int main(int argc, char *argv[]) {
                                         r = sd_journal_next(j);
                                 else
                                         r = sd_journal_previous(j);
-                                if (r < 0) {
-                                        log_error_errno(r, "Failed to iterate through journal: %m");
-                                        goto finish;
-                                }
+                                if (r < 0)
+                                        return log_error_errno(r, "Failed to iterate through journal: %m");
                                 if (r == 0)
                                         break;
                         }
@@ -2601,10 +2550,8 @@ int main(int argc, char *argv[]) {
                                 usec_t usec;
 
                                 r = sd_journal_get_realtime_usec(j, &usec);
-                                if (r < 0) {
-                                        log_error_errno(r, "Failed to determine timestamp: %m");
-                                        goto finish;
-                                }
+                                if (r < 0)
+                                        return log_error_errno(r, "Failed to determine timestamp: %m");
                                 if (usec > arg_until)
                                         break;
                         }
@@ -2613,10 +2560,8 @@ int main(int argc, char *argv[]) {
                                 usec_t usec;
 
                                 r = sd_journal_get_realtime_usec(j, &usec);
-                                if (r < 0) {
-                                        log_error_errno(r, "Failed to determine timestamp: %m");
-                                        goto finish;
-                                }
+                                if (r < 0)
+                                        return log_error_errno(r, "Failed to determine timestamp: %m");
                                 if (usec < arg_since)
                                         break;
                         }
@@ -2647,8 +2592,7 @@ int main(int argc, char *argv[]) {
                                                 continue;
                                         }
 
-                                        log_error_errno(r, "Failed to get MESSAGE field: %m");
-                                        goto finish;
+                                        return log_error_errno(r, "Failed to get MESSAGE field: %m");
                                 }
 
                                 assert_se(message = startswith(message, "MESSAGE="));
@@ -2656,7 +2600,7 @@ int main(int argc, char *argv[]) {
                                 r = pattern_matches_and_log(arg_compiled_pattern, message,
                                                             len - strlen("MESSAGE="), highlight);
                                 if (r < 0)
-                                        goto finish;
+                                        return r;
                                 if (r == 0) {
                                         need_seek = true;
                                         continue;
@@ -2677,8 +2621,8 @@ int main(int argc, char *argv[]) {
                         need_seek = true;
                         if (r == -EADDRNOTAVAIL)
                                 break;
-                        else if (r < 0)
-                                goto finish;
+                        if (r < 0)
+                                return r;
 
                         n_shown++;
 
@@ -2690,10 +2634,8 @@ int main(int argc, char *argv[]) {
                          * (deleted) journal files. */
                         if ((n_shown % PROCESS_INOTIFY_INTERVAL) == 0) {
                                 r = sd_journal_process(j);
-                                if (r < 0) {
-                                        log_error_errno(r, "Failed to process inotify events: %m");
-                                        goto finish;
-                                }
+                                if (r < 0)
+                                        return log_error_errno(r, "Failed to process inotify events: %m");
                         }
                 }
 
@@ -2707,7 +2649,7 @@ int main(int argc, char *argv[]) {
 
                 r = wait_for_change(j, poll_fd);
                 if (r < 0)
-                        goto finish;
+                        return r;
 
                 first_line = false;
         }
@@ -2717,8 +2659,8 @@ int main(int argc, char *argv[]) {
 
                 r = sd_journal_get_cursor(j, &cursor);
                 if (r < 0 && r != -EADDRNOTAVAIL)
-                        log_error_errno(r, "Failed to get cursor: %m");
-                else if (r >= 0) {
+                        return log_error_errno(r, "Failed to get cursor: %m");
+                if (r >= 0) {
                         if (arg_show_cursor)
                                 printf("-- cursor: %s\n", cursor);
 
@@ -2727,22 +2669,20 @@ int main(int argc, char *argv[]) {
                                                       WRITE_STRING_FILE_CREATE |
                                                       WRITE_STRING_FILE_ATOMIC);
                                 if (r < 0)
-                                        log_error_errno(r,
-                                                        "Failed to write new cursor to %s: %m",
-                                                        arg_cursor_file);
+                                        return log_error_errno(r, "Failed to write new cursor to %s: %m",
+                                                               arg_cursor_file);
                         }
                 }
         }
 
-finish:
-        pager_close();
-
-        if (arg_compiled_pattern && r == 0 && n_shown == 0)
+        if (arg_compiled_pattern && n_shown == 0)
                 /* --grep was used, no error was thrown, but the pattern didn't
                  * match anything. Let's mimic grep's behavior here and return
                  * a non-zero exit code, so journalctl --grep can be used
                  * in scripts and such */
-                r = -ENOENT;
+                return -ENOENT;
 
-        return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+        return 0;
 }
+
+DEFINE_MAIN_FUNCTION(run);
index 22090aa93c1d51bcd5757fd0087ae3658fb471d2..5aedf4e5b622238471b2b66163e9e49222ba1c68 100644 (file)
@@ -46,16 +46,20 @@ static int client_parse_log_filter_nulstr(const char *nulstr, size_t len, Set **
 
 int client_context_read_log_filter_patterns(ClientContext *c, const char *cgroup) {
         char *deny_list_xattr, *xattr_end;
-        _cleanup_free_ char *xattr = NULL;
+        _cleanup_free_ char *xattr = NULL, *unit_cgroup = NULL;
         _cleanup_set_free_ Set *allow_list = NULL, *deny_list = NULL;
         int r;
 
         assert(c);
 
-        r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.journald_log_filter_patterns", &xattr);
+        r = cg_path_get_unit_path(cgroup, &unit_cgroup);
+        if (r < 0)
+                return log_debug_errno(r, "Failed to get the unit's cgroup path for %s: %m", cgroup);
+
+        r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, unit_cgroup, "user.journald_log_filter_patterns", &xattr);
         if (r < 0) {
                 if (!ERRNO_IS_XATTR_ABSENT(r))
-                        return log_debug_errno(r, "Failed to get user.journald_log_filter_patterns xattr for %s: %m", cgroup);
+                        return log_debug_errno(r, "Failed to get user.journald_log_filter_patterns xattr for %s: %m", unit_cgroup);
 
                 client_set_filtering_patterns(c, NULL, NULL);
                 return 0;
index c64e626b2cdff9879b5f394e8df47c35d163377f..83082c4e94f537473c0828450dc4ed77dc51076d 100644 (file)
@@ -423,9 +423,6 @@ finish:
 }
 
 int server_open_kernel_seqnum(Server *s) {
-        _cleanup_close_ int fd = -EBADF;
-        const char *fn;
-        uint64_t *p;
         int r;
 
         assert(s);
@@ -436,26 +433,9 @@ int server_open_kernel_seqnum(Server *s) {
         if (!s->dev_kmsg_readable)
                 return 0;
 
-        fn = strjoina(s->runtime_directory, "/kernel-seqnum");
-        fd = open(fn, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
-        if (fd < 0) {
-                log_error_errno(errno, "Failed to open %s, ignoring: %m", fn);
-                return 0;
-        }
-
-        r = posix_fallocate_loop(fd, 0, sizeof(uint64_t));
-        if (r < 0) {
-                log_error_errno(r, "Failed to allocate sequential number file, ignoring: %m");
-                return 0;
-        }
-
-        p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-        if (p == MAP_FAILED) {
-                log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
-                return 0;
-        }
-
-        s->kernel_seqnum = p;
+        r = server_map_seqnum_file(s, "kernel-seqnum", sizeof(uint64_t), (void**) &s->kernel_seqnum);
+        if (r < 0)
+                return log_error_errno(r, "Failed to map kernel seqnum file: %m");
 
         return 0;
 }
index 022e12d83dfd2b3b38cec0f54367ee488950b6a2..f88365e2684f940490cd6ac56cc0d58e39185a94 100644 (file)
@@ -889,10 +889,12 @@ static bool shall_try_append_again(JournalFile *f, int r) {
                 log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: Montonic clock jumped backwards relative to last journal entry, rotating.", f->path);
                 return true;
 
+        case -EILSEQ:          /* seqnum ID last used in the file doesn't match the one we'd passed when writing an entry to it */
+                log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: Journal file uses a different sequence number ID, rotating.", f->path);
+                return true;
+
         case -EAFNOSUPPORT:
-                log_ratelimit_warning(JOURNAL_LOG_RATELIMIT,
-                                      "%s: underlying file system does not support memory mapping or another required file system feature.",
-                                      f->path);
+                log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: underlying file system does not support memory mapping or another required file system feature.", f->path);
                 return false;
 
         default:
@@ -900,7 +902,13 @@ static bool shall_try_append_again(JournalFile *f, int r) {
         }
 }
 
-static void server_write_to_journal(Server *s, uid_t uid, struct iovec *iovec, size_t n, int priority) {
+static void server_write_to_journal(
+                Server *s,
+                uid_t uid,
+                const struct iovec *iovec,
+                size_t n,
+                int priority) {
+
         bool vacuumed = false, rotate = false;
         struct dual_timestamp ts;
         ManagedJournalFile *f;
@@ -950,7 +958,15 @@ static void server_write_to_journal(Server *s, uid_t uid, struct iovec *iovec, s
 
         s->last_realtime_clock = ts.realtime;
 
-        r = journal_file_append_entry(f->file, &ts, NULL, iovec, n, &s->seqnum, NULL, NULL);
+        r = journal_file_append_entry(
+                        f->file,
+                        &ts,
+                        /* boot_id= */ NULL,
+                        iovec, n,
+                        &s->seqnum->seqnum,
+                        &s->seqnum->id,
+                        /* ret_object= */ NULL,
+                        /* ret_offset= */ NULL);
         if (r >= 0) {
                 server_schedule_sync(s, priority);
                 return;
@@ -978,7 +994,15 @@ static void server_write_to_journal(Server *s, uid_t uid, struct iovec *iovec, s
                 return;
 
         log_debug_errno(r, "Retrying write.");
-        r = journal_file_append_entry(f->file, &ts, NULL, iovec, n, &s->seqnum, NULL, NULL);
+        r = journal_file_append_entry(
+                        f->file,
+                        &ts,
+                        /* boot_id= */ NULL,
+                        iovec, n,
+                        &s->seqnum->seqnum,
+                        &s->seqnum->id,
+                        /* ret_object= */ NULL,
+                        /* ret_offset= */ NULL);
         if (r < 0)
                 log_ratelimit_error_errno(r, FAILED_TO_WRITE_ENTRY_RATELIMIT,
                                           "Failed to write entry to %s (%zu items, %zu bytes) despite vacuuming, ignoring: %m",
@@ -1290,7 +1314,13 @@ int server_flush_to_var(Server *s, bool require_flag_file) {
                         goto finish;
                 }
 
-                r = journal_file_copy_entry(f, s->system_journal->file, o, f->current_offset);
+                r = journal_file_copy_entry(
+                                f,
+                                s->system_journal->file,
+                                o,
+                                f->current_offset,
+                                &s->seqnum->seqnum,
+                                &s->seqnum->id);
                 if (r >= 0)
                         continue;
 
@@ -1312,7 +1342,13 @@ int server_flush_to_var(Server *s, bool require_flag_file) {
                 }
 
                 log_debug("Retrying write.");
-                r = journal_file_copy_entry(f, s->system_journal->file, o, f->current_offset);
+                r = journal_file_copy_entry(
+                                f,
+                                s->system_journal->file,
+                                o,
+                                f->current_offset,
+                                &s->seqnum->seqnum,
+                                &s->seqnum->id);
                 if (r < 0) {
                         log_ratelimit_error_errno(r, JOURNAL_LOG_RATELIMIT, "Can't write entry: %m");
                         goto finish;
@@ -2250,6 +2286,51 @@ static int server_open_varlink(Server *s, const char *socket, int fd) {
         return 0;
 }
 
+int server_map_seqnum_file(
+                Server *s,
+                const char *fname,
+                size_t size,
+                void **ret) {
+
+        _cleanup_free_ char *fn = NULL;
+        _cleanup_close_ int fd = -EBADF;
+        uint64_t *p;
+        int r;
+
+        assert(s);
+        assert(fname);
+        assert(size > 0);
+        assert(ret);
+
+        fn = path_join(s->runtime_directory, fname);
+        if (!fn)
+                return -ENOMEM;
+
+        fd = open(fn, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
+        if (fd < 0)
+                return -errno;
+
+        r = posix_fallocate_loop(fd, 0, size);
+        if (r < 0)
+                return r;
+
+        p = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+        if (p == MAP_FAILED)
+                return -errno;
+
+        *ret = p;
+        return 0;
+}
+
+void server_unmap_seqnum_file(void *p, size_t size) {
+        assert(size > 0);
+
+        if (!p)
+                return;
+
+        assert_se(munmap(p, size) >= 0);
+}
+
 static bool server_is_idle(Server *s) {
         assert(s);
 
@@ -2562,6 +2643,10 @@ int server_init(Server *s, const char *namespace) {
         if (r < 0)
                 return r;
 
+        r = server_map_seqnum_file(s, "seqnum", sizeof(SeqnumData), (void**) &s->seqnum);
+        if (r < 0)
+                return log_error_errno(r, "Failed to map main seqnum file: %m");
+
         r = server_open_kernel_seqnum(s);
         if (r < 0)
                 return r;
@@ -2678,8 +2763,8 @@ void server_done(Server *s) {
         if (s->ratelimit)
                 journal_ratelimit_free(s->ratelimit);
 
-        if (s->kernel_seqnum)
-                munmap(s->kernel_seqnum, sizeof(uint64_t));
+        server_unmap_seqnum_file(s->seqnum, sizeof(*s->seqnum));
+        server_unmap_seqnum_file(s->kernel_seqnum, sizeof(*s->kernel_seqnum));
 
         free(s->buffer);
         free(s->tty_path);
index ee8f37419088c2e7e9c99e29ba078ec28b4923d5..e7bf750a59c9f517d9d6499ad1fe2d483ad33188 100644 (file)
@@ -60,6 +60,13 @@ typedef struct JournalStorage {
         JournalStorageSpace space;
 } JournalStorage;
 
+/* This structure will be kept in $RUNTIME_DIRECTORY/seqnum and is mapped by journald, and is used to
+ * maintain the sequence number counter with its seqnum ID */
+typedef struct SeqnumData {
+        sd_id128_t id;
+        uint64_t seqnum;
+} SeqnumData;
+
 struct Server {
         char *namespace;
 
@@ -93,7 +100,7 @@ struct Server {
         ManagedJournalFile *system_journal;
         OrderedHashmap *user_journals;
 
-        uint64_t seqnum;
+        SeqnumData *seqnum;
 
         char *buffer;
 
@@ -227,3 +234,6 @@ void server_space_usage_message(Server *s, JournalStorage *storage);
 
 int server_start_or_stop_idle_timer(Server *s);
 int server_refresh_idle_timer(Server *s);
+
+int server_map_seqnum_file(Server *s, const char *fname, size_t size, void **ret);
+void server_unmap_seqnum_file(void *p, size_t size);
index 53e479909e78877f5ebeeb276e097b26b578b6c1..f2fe0e51c00db84581567e78bd5c40105bced880 100644 (file)
@@ -53,7 +53,7 @@ static void test_journal_flush(int argc, char *argv[]) {
                         log_error_errno(r, "journal_file_move_to_object failed: %m");
                 assert_se(r >= 0);
 
-                r = journal_file_copy_entry(f, new_journal->file, o, f->current_offset);
+                r = journal_file_copy_entry(f, new_journal->file, o, f->current_offset, NULL, NULL);
                 if (r < 0)
                         log_warning_errno(r, "journal_file_copy_entry failed: %m");
                 assert_se(r >= 0 ||
index 67552de8fe8344943c5264da9cec72a202be5510..55d717da3163ec45f428bd26b9a74de965d7e434 100644 (file)
@@ -66,7 +66,7 @@ static void append_number(ManagedJournalFile *f, int n, uint64_t *seqnum) {
 
         assert_se(asprintf(&p, "NUMBER=%d", n) >= 0);
         iovec[0] = IOVEC_MAKE_STRING(p);
-        assert_ret(journal_file_append_entry(f->file, &ts, NULL, iovec, 1, seqnum, NULL, NULL));
+        assert_ret(journal_file_append_entry(f->file, &ts, NULL, iovec, 1, seqnum, NULL, NULL, NULL));
         free(p);
 }
 
index 9f4494c6c0ab05ba4bf4485675ba3c0cdd20aa07..940625a0843d21dad4e8ef63390ccd41b010337f 100644 (file)
@@ -103,12 +103,12 @@ static void run_test(void) {
                 iovec[1] = IOVEC_MAKE(q, strlen(q));
 
                 if (i % 10 == 0)
-                        assert_se(journal_file_append_entry(three->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+                        assert_se(journal_file_append_entry(three->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
                 else {
                         if (i % 3 == 0)
-                                assert_se(journal_file_append_entry(two->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+                                assert_se(journal_file_append_entry(two->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
 
-                        assert_se(journal_file_append_entry(one->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+                        assert_se(journal_file_append_entry(one->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
                 }
 
                 free(p);
index 0c58d05ced3e5d373e8f174084549ba89d156df0..7a90079fc8e6b1e65bff7edd4c3d187ee1a9cabd 100644 (file)
@@ -94,7 +94,7 @@ static int run_test(int argc, char *argv[]) {
 
                 iovec = IOVEC_MAKE_STRING(test);
 
-                assert_se(journal_file_append_entry(df->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+                assert_se(journal_file_append_entry(df->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
 
                 free(test);
         }
index 889673cae776b35ac7c6f8a9a5480fb2f2563232..cd295b2a7e51bc751a6e37283788729e0b7588ab 100644 (file)
@@ -45,13 +45,13 @@ static void test_non_empty_one(void) {
         assert_se(sd_id128_randomize(&fake_boot_id) == 0);
 
         iovec = IOVEC_MAKE_STRING(test);
-        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
 
         iovec = IOVEC_MAKE_STRING(test2);
-        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
 
         iovec = IOVEC_MAKE_STRING(test);
-        assert_se(journal_file_append_entry(f->file, &ts, &fake_boot_id, &iovec, 1, NULL, NULL, NULL) == 0);
+        assert_se(journal_file_append_entry(f->file, &ts, &fake_boot_id, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
 
 #if HAVE_GCRYPT
         journal_file_append_tag(f->file);
@@ -199,7 +199,7 @@ static bool check_compressed(uint64_t compress_threshold, uint64_t data_size) {
         dual_timestamp_get(&ts);
 
         iovec = IOVEC_MAKE(data, data_size);
-        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+        assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
 
 #if HAVE_GCRYPT
         journal_file_append_tag(f->file);
index f16bb9f50f9d4d328c942b9365bbf54b3c5b54b1..bc833e4cb263c66a3dca2f78be85ffc6138060b0 100755 (executable)
@@ -90,18 +90,21 @@ if test -x "$_KERNEL_INSTALL_BOOTCTL"; then
     echo "Testing bootctl"
     e2="${entry%+*}_2.conf"
     cp "$entry" "$e2"
-    export SYSTEMD_ESP_PATH=/
+    export SYSTEMD_ESP_PATH=/boot
+    # We use --root so strip the root prefix from KERNEL_INSTALL_CONF_ROOT
+    export KERNEL_INSTALL_CONF_ROOT="sources"
 
     # create file that is not referenced. Check if cleanup removes
     # it but leaves the rest alone
     :> "$BOOT_ROOT/the-token/1.1.2/initrd"
-    "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" cleanup
+    "$_KERNEL_INSTALL_BOOTCTL" --root="$D" cleanup
     test ! -e "$BOOT_ROOT/the-token/1.1.2/initrd"
     test -e "$BOOT_ROOT/the-token/1.1.2/linux"
     test -e "$BOOT_ROOT/the-token/1.1.1/linux"
     test -e "$BOOT_ROOT/the-token/1.1.1/initrd"
+
     # now remove duplicated entry and make sure files are left over
-    "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" unlink "${e2##*/}"
+    "$_KERNEL_INSTALL_BOOTCTL" --root="$D" unlink "${e2##*/}"
     test -e "$BOOT_ROOT/the-token/1.1.1/linux"
     test -e "$BOOT_ROOT/the-token/1.1.1/initrd"
     test -e "$entry"
@@ -109,7 +112,7 @@ if test -x "$_KERNEL_INSTALL_BOOTCTL"; then
     # remove last entry referencing those files
     entry_id="${entry##*/}"
     entry_id="${entry_id%+*}.conf"
-    "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" unlink "$entry_id"
+    "$_KERNEL_INSTALL_BOOTCTL" --root="$D" unlink "$entry_id"
     test ! -e "$entry"
     test ! -e "$BOOT_ROOT/the-token/1.1.1/linux"
     test ! -e "$BOOT_ROOT/the-token/1.1.1/initrd"
index 7d84aaf6ab9ba2d62cb7d6ccbf1c7b6b60f487eb..5de230aaed783d2808fc43fab59c2318a353f251 100644 (file)
@@ -1533,7 +1533,7 @@ int sd_dhcp_server_set_router(sd_dhcp_server *server, const struct in_addr *rout
 
         /* router is NULL: router option will not be appended.
          * router is null address (0.0.0.0): the server address will be used as the router address.
-         * otherwise: the specified address will be used as the router address.*/
+         * otherwise: the specified address will be used as the router address. */
 
         server->emit_router = router;
         if (router)
index 0f2230a42f97afbb09dc4a4e463ea41f856181d9..802009b710013132316a9cce19984dd9c5507d8e 100644 (file)
@@ -810,4 +810,5 @@ global:
         sd_pidfd_get_unit;
         sd_pidfd_get_user_slice;
         sd_pidfd_get_user_unit;
+        sd_journal_get_seqnum;
 } LIBSYSTEMD_252;
index cb22d62d2cc299c91ce761113dd18393de296e6c..0eaedec87c77fe41afcc7f58de95c71d39dd4e4b 100644 (file)
@@ -80,24 +80,24 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_common_errors[] = {
         SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_DNSSD_SERVICE,        ENOENT),
         SD_BUS_ERROR_MAP(BUS_ERROR_DNSSD_SERVICE_EXISTS,         EEXIST),
 
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "FORMERR",               EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "SERVFAIL",              EHOSTDOWN),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXDOMAIN",              ENXIO),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTIMP",                ENOSYS),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "REFUSED",               EACCES),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YXDOMAIN",              EEXIST),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YRRSET",                EEXIST),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXRRSET",               ENOENT),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTAUTH",               EACCES),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTZONE",               EREMOTE),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADVERS",               EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADKEY",                EKEYREJECTED),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTIME",               EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADMODE",               EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADNAME",               EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADALG",                EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTRUNC",              EBADMSG),
-        SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADCOOKIE",             EBADR),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_FORMERR,                  EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_SERVFAIL,                 EHOSTDOWN),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXDOMAIN,                 ENXIO),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTIMP,                   ENOSYS),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_REFUSED,                  EACCES),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YXDOMAIN,                 EEXIST),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YRRSET,                   EEXIST),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXRRSET,                  ENOENT),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTAUTH,                  EACCES),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTZONE,                  EREMOTE),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADVERS,                  EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADKEY,                   EKEYREJECTED),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTIME,                  EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADMODE,                  EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADNAME,                  EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADALG,                   EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTRUNC,                 EBADMSG),
+        SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADCOOKIE,                EBADR),
 
         SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_TRANSFER,             ENXIO),
         SD_BUS_ERROR_MAP(BUS_ERROR_TRANSFER_IN_PROGRESS,         EBUSY),
index 40d6abc41319671c371754613befe687108ac2a2..b6c2e93ea5b0580b3419fc7d4690a5b4f275b6ff 100644 (file)
 #define BUS_ERROR_STUB_LOOP                    "org.freedesktop.resolve1.StubLoop"
 #define BUS_ERROR_NO_SUCH_DNSSD_SERVICE        "org.freedesktop.resolve1.NoSuchDnssdService"
 #define BUS_ERROR_DNSSD_SERVICE_EXISTS         "org.freedesktop.resolve1.DnssdServiceExists"
+
 #define _BUS_ERROR_DNS                         "org.freedesktop.resolve1.DnsError."
+#define BUS_ERROR_DNS_FORMERR                  _BUS_ERROR_DNS "FORMERR"
+#define BUS_ERROR_DNS_SERVFAIL                 _BUS_ERROR_DNS "SERVFAIL"
+#define BUS_ERROR_DNS_NXDOMAIN                 _BUS_ERROR_DNS "NXDOMAIN"
+#define BUS_ERROR_DNS_NOTIMP                   _BUS_ERROR_DNS "NOTIMP"
+#define BUS_ERROR_DNS_REFUSED                  _BUS_ERROR_DNS "REFUSED"
+#define BUS_ERROR_DNS_YXDOMAIN                 _BUS_ERROR_DNS "YXDOMAIN"
+#define BUS_ERROR_DNS_YRRSET                   _BUS_ERROR_DNS "YRRSET"
+#define BUS_ERROR_DNS_NXRRSET                  _BUS_ERROR_DNS "NXRRSET"
+#define BUS_ERROR_DNS_NOTAUTH                  _BUS_ERROR_DNS "NOTAUTH"
+#define BUS_ERROR_DNS_NOTZONE                  _BUS_ERROR_DNS "NOTZONE"
+#define BUS_ERROR_DNS_BADVERS                  _BUS_ERROR_DNS "BADVERS"
+#define BUS_ERROR_DNS_BADKEY                   _BUS_ERROR_DNS "BADKEY"
+#define BUS_ERROR_DNS_BADTIME                  _BUS_ERROR_DNS "BADTIME"
+#define BUS_ERROR_DNS_BADMODE                  _BUS_ERROR_DNS "BADMODE"
+#define BUS_ERROR_DNS_BADNAME                  _BUS_ERROR_DNS "BADNAME"
+#define BUS_ERROR_DNS_BADALG                   _BUS_ERROR_DNS "BADALG"
+#define BUS_ERROR_DNS_BADTRUNC                 _BUS_ERROR_DNS "BADTRUNC"
+#define BUS_ERROR_DNS_BADCOOKIE                _BUS_ERROR_DNS "BADCOOKIE"
 
 #define BUS_ERROR_NO_SUCH_TRANSFER             "org.freedesktop.import1.NoSuchTransfer"
 #define BUS_ERROR_TRANSFER_IN_PROGRESS         "org.freedesktop.import1.TransferInProgress"
index 253f41c636b5c4c8520659b792d57aaeb755a638..64037e4fe0595875933899155c20c700e80d1b1b 100644 (file)
@@ -22,7 +22,6 @@
 #include "memory-util.h"
 #include "path-util.h"
 #include "process-util.h"
-#include "rlimit-util.h"
 #include "signal-util.h"
 #include "stdio-util.h"
 #include "string-util.h"
@@ -995,7 +994,7 @@ int bus_socket_exec(sd_bus *b) {
         if (r < 0)
                 return -errno;
 
-        r = safe_fork_full("(sd-busexec)", s+1, 1, FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS, &b->busexec_pid);
+        r = safe_fork_full("(sd-busexec)", s+1, 1, FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_RLIMIT_NOFILE_SAFE, &b->busexec_pid);
         if (r < 0) {
                 safe_close_pair(s);
                 return r;
@@ -1008,8 +1007,6 @@ int bus_socket_exec(sd_bus *b) {
                 if (r < 0)
                         _exit(EXIT_FAILURE);
 
-                (void) rlimit_nofile_safe();
-
                 if (b->exec_argv)
                         execvp(b->exec_path, b->exec_argv);
                 else
index 10796e25c7479a94d7182bf5452bcdede55cb191..f6a5e4aa06bc29ee07af1301fd6ba3f25a2325e2 100644 (file)
@@ -48,7 +48,9 @@
 #define log_debug_bus_message(m)                                         \
         do {                                                             \
                 sd_bus_message *_mm = (m);                               \
-                log_debug("Got message type=%s sender=%s destination=%s path=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " signature=%s error-name=%s error-message=%s", \
+                log_debug("Got message type=%s sender=%s destination=%s path=%s interface=%s member=%s " \
+                          " cookie=%" PRIu64 " reply_cookie=%" PRIu64   \
+                          " signature=%s error-name=%s error-message=%s", \
                           strna(bus_message_type_to_string(_mm->header->type)), \
                           strna(sd_bus_message_get_sender(_mm)),         \
                           strna(sd_bus_message_get_destination(_mm)),    \
@@ -1983,7 +1985,9 @@ static int bus_write_message(sd_bus *bus, sd_bus_message *m, size_t *idx) {
                 return r;
 
         if (*idx >= BUS_MESSAGE_SIZE(m))
-                log_debug("Sent message type=%s sender=%s destination=%s path=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " signature=%s error-name=%s error-message=%s",
+                log_debug("Sent message type=%s sender=%s destination=%s path=%s interface=%s member=%s"
+                          " cookie=%" PRIu64 " reply_cookie=%" PRIu64
+                          " signature=%s error-name=%s error-message=%s",
                           bus_message_type_to_string(m->header->type),
                           strna(sd_bus_message_get_sender(m)),
                           strna(sd_bus_message_get_destination(m)),
@@ -2412,7 +2416,8 @@ _public_ int sd_bus_call(
                                                 return 1;
                                         }
 
-                                        return sd_bus_error_set(error, SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Reply message contained file descriptors which I couldn't accept. Sorry.");
+                                        return sd_bus_error_set(error, SD_BUS_ERROR_INCONSISTENT_MESSAGE,
+                                                                "Reply message contained file descriptors which I couldn't accept. Sorry.");
 
                                 } else if (incoming->header->type == SD_BUS_MESSAGE_METHOD_ERROR)
                                         return sd_bus_error_copy(error, &incoming->error);
@@ -2924,7 +2929,8 @@ static int process_fd_check(sd_bus *bus, sd_bus_message *m) {
         if (m->header->type != SD_BUS_MESSAGE_METHOD_CALL)
                 return 1; /* just eat it up */
 
-        return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Message contains file descriptors, which I cannot accept. Sorry.");
+        return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INCONSISTENT_MESSAGE,
+                                          "Message contains file descriptors, which I cannot accept. Sorry.");
 }
 
 static int process_message(sd_bus *bus, sd_bus_message *m) {
index 2ead29548b334f574f76e843ddf6cd2c47f0e2f8..aab33dbfccab138f58d923ced36bea8b16c96a0e 100644 (file)
@@ -2094,6 +2094,7 @@ static int journal_file_append_entry_internal(
                 const EntryItem items[],
                 size_t n_items,
                 uint64_t *seqnum,
+                sd_id128_t *seqnum_id,
                 Object **ret_object,
                 uint64_t *ret_offset) {
 
@@ -2139,6 +2140,21 @@ static int journal_file_append_entry_internal(
                 }
         }
 
+        if (seqnum_id) {
+                /* Settle the passed in sequence number ID */
+
+                if (sd_id128_is_null(*seqnum_id))
+                        *seqnum_id = f->header->seqnum_id; /* Caller has none assigned, then copy the one from the file */
+                else if (!sd_id128_equal(*seqnum_id, f->header->seqnum_id)) {
+                        /* Different seqnum IDs? We can't allow entries from multiple IDs end up in the same journal.*/
+                        if (le64toh(f->header->n_entries) == 0)
+                                f->header->seqnum_id = *seqnum_id; /* Caller has one, and file so far has no entries, then copy the one from the caller */
+                        else
+                                return log_debug_errno(SYNTHETIC_ERRNO(EILSEQ),
+                                                       "Sequence number IDs don't match, refusing entry.");
+                }
+        }
+
         osize = offsetof(Object, entry.items) + (n_items * journal_file_entry_item_size(f));
 
         r = journal_file_append_object(f, OBJECT_ENTRY, osize, &o, &np);
@@ -2290,6 +2306,7 @@ int journal_file_append_entry(
                 const struct iovec iovec[],
                 size_t n_iovec,
                 uint64_t *seqnum,
+                sd_id128_t *seqnum_id,
                 Object **ret_object,
                 uint64_t *ret_offset) {
 
@@ -2376,7 +2393,7 @@ int journal_file_append_entry(
         typesafe_qsort(items, n_iovec, entry_item_cmp);
         n_iovec = remove_duplicate_entry_items(items, n_iovec);
 
-        r = journal_file_append_entry_internal(f, ts, boot_id, xor_hash, items, n_iovec, seqnum, ret_object, ret_offset);
+        r = journal_file_append_entry_internal(f, ts, boot_id, xor_hash, items, n_iovec, seqnum, seqnum_id, ret_object, ret_offset);
 
         /* If the memory mapping triggered a SIGBUS then we return an
          * IO error and ignore the error code passed down to us, since
@@ -4093,7 +4110,14 @@ int journal_file_dispose(int dir_fd, const char *fname) {
         return 0;
 }
 
-int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p) {
+int journal_file_copy_entry(
+                JournalFile *from,
+                JournalFile *to,
+                Object *o,
+                uint64_t p,
+                uint64_t *seqnum,
+                sd_id128_t *seqnum_id) {
+
         _cleanup_free_ EntryItem *items_alloc = NULL;
         EntryItem *items;
         uint64_t q, n, xor_hash = 0;
@@ -4168,7 +4192,7 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
                         return r;
         }
 
-        r = journal_file_append_entry_internal(to, &ts, boot_id, xor_hash, items, n, NULL, NULL, NULL);
+        r = journal_file_append_entry_internal(to, &ts, boot_id, xor_hash, items, n, seqnum, seqnum_id, NULL, NULL);
 
         if (mmap_cache_fd_got_sigbus(to->cache_fd))
                 return -EIO;
index 8c809ed4b99a56cc53e5eee3756ddae3a304b205..07f1f5d180651ab250132f0baf30c474da8ca62d 100644 (file)
@@ -259,7 +259,8 @@ int journal_file_append_entry(
                 const sd_id128_t *boot_id,
                 const struct iovec iovec[],
                 size_t n_iovec,
-                uint64_t *seqno,
+                uint64_t *seqnum,
+                sd_id128_t *seqnum_id,
                 Object **ret_object,
                 uint64_t *ret_offset);
 
@@ -286,7 +287,7 @@ int journal_file_move_to_entry_by_seqnum_for_data(JournalFile *f, Object *d, uin
 int journal_file_move_to_entry_by_realtime_for_data(JournalFile *f, Object *d, uint64_t realtime, direction_t direction, Object **ret_object, uint64_t *ret_offset);
 int journal_file_move_to_entry_by_monotonic_for_data(JournalFile *f, Object *d, sd_id128_t boot_id, uint64_t monotonic, direction_t direction, Object **ret_object, uint64_t *ret_offset);
 
-int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p);
+int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p, uint64_t *seqnum, sd_id128_t *seqnum_id);
 
 void journal_file_dump(JournalFile *f);
 void journal_file_print_header(JournalFile *f);
index ed052d1b890de82277e6802dcf509afba658be7c..87ce930d4104a7cdb82ef4a804afef82e1e30f88 100644 (file)
@@ -14,6 +14,8 @@
 #include "list.h"
 #include "set.h"
 
+#define JOURNAL_FILES_MAX 7168u
+
 #define JOURNAL_LOG_RATELIMIT ((const RateLimit) { .interval = 60 * USEC_PER_SEC, .burst = 3 })
 
 typedef struct Match Match;
index 523e23925de46ad4adcbb573f90c2347266eb4f5..afbf25526635ebf9ecdeed98bf3ddac1ae52963c 100644 (file)
@@ -42,8 +42,6 @@
 #include "strv.h"
 #include "syslog-util.h"
 
-#define JOURNAL_FILES_MAX 7168
-
 #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
 
 /* The maximum size of variable values we'll expand in catalog entries. We bind this to PATH_MAX for now, as
@@ -2166,18 +2164,16 @@ _public_ void sd_journal_close(sd_journal *j) {
 }
 
 _public_ int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret) {
-        Object *o;
         JournalFile *f;
+        Object *o;
         int r;
 
         assert_return(j, -EINVAL);
         assert_return(!journal_pid_changed(j), -ECHILD);
-        assert_return(ret, -EINVAL);
 
         f = j->current_file;
         if (!f)
                 return -EADDRNOTAVAIL;
-
         if (f->current_offset <= 0)
                 return -EADDRNOTAVAIL;
 
@@ -2185,7 +2181,13 @@ _public_ int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret) {
         if (r < 0)
                 return r;
 
-        *ret = le64toh(o->entry.realtime);
+        uint64_t t = le64toh(o->entry.realtime);
+        if (!VALID_REALTIME(t))
+                return -EBADMSG;
+
+        if (ret)
+                *ret = t;
+
         return 0;
 }
 
@@ -2230,6 +2232,37 @@ _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id12
         return 0;
 }
 
+_public_ int sd_journal_get_seqnum(
+                sd_journal *j,
+                uint64_t *ret_seqnum,
+                sd_id128_t *ret_seqnum_id) {
+
+        JournalFile *f;
+        Object *o;
+        int r;
+
+        assert_return(j, -EINVAL);
+        assert_return(!journal_pid_changed(j), -ECHILD);
+
+        f = j->current_file;
+        if (!f)
+                return -EADDRNOTAVAIL;
+
+        if (f->current_offset <= 0)
+                return -EADDRNOTAVAIL;
+
+        r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
+        if (r < 0)
+                return r;
+
+        if (ret_seqnum_id)
+                *ret_seqnum_id = f->header->seqnum_id;
+        if (ret_seqnum)
+                *ret_seqnum = le64toh(o->entry.seqnum);
+
+        return 0;
+}
+
 static bool field_is_valid(const char *field) {
         assert(field);
 
@@ -2608,28 +2641,23 @@ _public_ int sd_journal_wait(sd_journal *j, uint64_t timeout_usec) {
         if (j->inotify_fd < 0) {
                 JournalFile *f;
 
-                /* This is the first invocation, hence create the
-                 * inotify watch */
+                /* This is the first invocation, hence create the inotify watch */
                 r = sd_journal_get_fd(j);
                 if (r < 0)
                         return r;
 
-                /* Server might have done some vacuuming while we weren't watching.
-                   Get rid of the deleted files now so they don't stay around indefinitely. */
+                /* Server might have done some vacuuming while we weren't watching. Get rid of the deleted
+                 * files now so they don't stay around indefinitely. */
                 ORDERED_HASHMAP_FOREACH(f, j->files) {
                         r = journal_file_fstat(f);
                         if (r == -EIDRM)
                                 remove_file_real(j, f);
-                        else if (r < 0) {
-                                log_debug_errno(r,"Failed to fstat() journal file '%s' : %m", f->path);
-                                continue;
-                        }
+                        else if (r < 0)
+                                log_debug_errno(r, "Failed to fstat() journal file '%s', ignoring: %m", f->path);
                 }
 
-                /* The journal might have changed since the context
-                 * object was created and we weren't watching before,
-                 * hence don't wait for anything, and return
-                 * immediately. */
+                /* The journal might have changed since the context object was created and we weren't
+                 * watching before, hence don't wait for anything, and return immediately. */
                 return determine_change(j);
         }
 
index 8f18ecd0d2fd79cfbed4a260a278772a94624938..d6b6593bea607d9e4738d352033c8cd36f06955b 100644 (file)
@@ -921,7 +921,7 @@ int locale_gen_enable_locale(const char *locale) {
                 r = copy_access(fileno(fr), fileno(fw));
                 if (r < 0)
                         return r;
-                r = copy_xattr(fileno(fr), fileno(fw), COPY_ALL_XATTRS);
+                r = copy_xattr(fileno(fr), NULL, fileno(fw), NULL, COPY_ALL_XATTRS);
                 if (r < 0)
                         log_debug_errno(r, "Failed to copy all xattrs from old to new /etc/locale.gen file, ignoring: %m");
         }
index e43c04567a4a390ee27e57164ebb4cfa7ffdf446..019bef0590af86ca71f49f75676faab1553b183a 100644 (file)
@@ -2711,7 +2711,7 @@ int link_flags_to_string_alloc(uint32_t flags, char **ret) {
         _cleanup_free_ char *str = NULL;
         static const char* map[] = {
                 [LOG2U(IFF_UP)]          = "up",             /* interface is up. */
-                [LOG2U(IFF_BROADCAST)]   = "broadcast",      /* broadcast address valid.*/
+                [LOG2U(IFF_BROADCAST)]   = "broadcast",      /* broadcast address valid. */
                 [LOG2U(IFF_DEBUG)]       = "debug",          /* turn on debugging. */
                 [LOG2U(IFF_LOOPBACK)]    = "loopback",       /* interface is a loopback net. */
                 [LOG2U(IFF_POINTOPOINT)] = "point-to-point", /* interface has p-p link. */
@@ -2722,7 +2722,7 @@ int link_flags_to_string_alloc(uint32_t flags, char **ret) {
                 [LOG2U(IFF_ALLMULTI)]    = "all-multicast",  /* receive all multicast packets. */
                 [LOG2U(IFF_MASTER)]      = "master",         /* master of a load balancer. */
                 [LOG2U(IFF_SLAVE)]       = "slave",          /* slave of a load balancer. */
-                [LOG2U(IFF_MULTICAST)]   = "multicast",      /* supports multicast.*/
+                [LOG2U(IFF_MULTICAST)]   = "multicast",      /* supports multicast. */
                 [LOG2U(IFF_PORTSEL)]     = "portsel",        /* can set media type. */
                 [LOG2U(IFF_AUTOMEDIA)]   = "auto-media",     /* auto media select active. */
                 [LOG2U(IFF_DYNAMIC)]     = "dynamic",        /* dialup device with changing addresses. */
index b1348383f5b8196bf242be1641f4844665e5a6bf..7320ffebdeffe7a39e6e596f913f585810c7bdbf 100644 (file)
@@ -31,6 +31,11 @@ static bool arg_booted = false;
 static uid_t arg_uid = UID_INVALID;
 static gid_t arg_gid = GID_INVALID;
 static bool arg_no_block = false;
+static char **arg_env = NULL;
+static char **arg_exec = NULL;
+
+STATIC_DESTRUCTOR_REGISTER(arg_env, strv_freep);
+STATIC_DESTRUCTOR_REGISTER(arg_exec, strv_freep);
 
 static int help(void) {
         _cleanup_free_ char *link = NULL;
@@ -41,6 +46,7 @@ static int help(void) {
                 return log_oom();
 
         printf("%s [OPTIONS...] [VARIABLE=VALUE...]\n"
+               "%s [OPTIONS...] --exec [VARIABLE=VALUE...] ; CMDLINE...\n"
                "\n%sNotify the init system about service status updates.%s\n\n"
                "  -h --help            Show this help\n"
                "     --version         Show package version\n"
@@ -53,8 +59,10 @@ static int help(void) {
                "     --status=TEXT     Set status text\n"
                "     --booted          Check if the system was booted up with systemd\n"
                "     --no-block        Do not wait until operation finished\n"
+               "     --exec            Execute command line separated by ';' once done\n"
                "\nSee the %s for details.\n",
                program_invocation_short_name,
+               program_invocation_short_name,
                ansi_highlight(),
                ansi_normal(),
                link);
@@ -93,7 +101,8 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_STATUS,
                 ARG_BOOTED,
                 ARG_UID,
-                ARG_NO_BLOCK
+                ARG_NO_BLOCK,
+                ARG_EXEC,
         };
 
         static const struct option options[] = {
@@ -107,10 +116,12 @@ static int parse_argv(int argc, char *argv[]) {
                 { "booted",    no_argument,       NULL, ARG_BOOTED    },
                 { "uid",       required_argument, NULL, ARG_UID       },
                 { "no-block",  no_argument,       NULL, ARG_NO_BLOCK  },
+                { "exec",      no_argument,       NULL, ARG_EXEC      },
                 {}
         };
 
-        int c, r;
+        bool do_exec = false;
+        int c, r, n_env;
 
         assert(argc >= 0);
         assert(argv);
@@ -183,6 +194,10 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_no_block = true;
                         break;
 
+                case ARG_EXEC:
+                        do_exec = true;
+                        break;
+
                 case '?':
                         return -EINVAL;
 
@@ -202,6 +217,32 @@ static int parse_argv(int argc, char *argv[]) {
                 return -EINVAL;
         }
 
+        if (do_exec) {
+                int i;
+
+                for (i = optind; i < argc; i++)
+                        if (streq(argv[i], ";"))
+                                break;
+
+                if (i >= argc)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "If --exec is used argument list must contain ';' separator, refusing.");
+                if (i+1 == argc)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Empty command line specified after ';' separator, refusing");
+
+                arg_exec = strv_copy_n(argv + i + 1, argc - i - 1);
+                if (!arg_exec)
+                        return log_oom();
+
+                n_env = i - optind;
+        } else
+                n_env = argc - optind;
+
+        if (n_env > 0) {
+                arg_env = strv_copy_n(argv + optind, n_env);
+                if (!arg_env)
+                        return log_oom();
+        }
+
         return 1;
 }
 
@@ -263,7 +304,7 @@ static int run(int argc, char* argv[]) {
 
         our_env[i++] = NULL;
 
-        final_env = strv_env_merge(our_env, argv + optind);
+        final_env = strv_env_merge(our_env, arg_env);
         if (!final_env)
                 return log_oom();
 
@@ -313,6 +354,18 @@ static int run(int argc, char* argv[]) {
                                                "No status data could be sent: $NOTIFY_SOCKET was not set");
         }
 
+        if (arg_exec) {
+                _cleanup_free_ char *cmdline = NULL;
+
+                execvp(arg_exec[0], arg_exec);
+
+                cmdline = strv_join(arg_exec, " ");
+                if (!cmdline)
+                        return log_oom();
+
+                return log_error_errno(errno, "Failed to execute command line: %s", cmdline);
+        }
+
         return 0;
 }
 
index 45ddb59f7613c8f0886c58d78c3a523ea6b02733..2e3c3c3072990e41460883b08b77d274daf366e4 100644 (file)
@@ -394,7 +394,7 @@ int bind_user_setup(
 
         r = userns_mkdir(root, "/run/host/home", 0755, 0, 0);
         if (r < 0)
-                return log_error_errno(r, "Failed to create /run/host/userdb: %m");
+                return log_error_errno(r, "Failed to create /run/host/home: %m");
 
         r = userns_mkdir(root, "/run/host/userdb", 0755, 0, 0);
         if (r < 0)
index 02142a93522a1ee25670fc4136cc47570e0498ca..3c6bfd3eaf31fd91f7fdfbbfae832eb92f3807b2 100644 (file)
@@ -1807,7 +1807,7 @@ static int oci_seccomp_args(const char *name, JsonVariant *v, JsonDispatchFlags
 
                 expected = p->op == SCMP_CMP_MASKED_EQ ? 4 : 3;
                 if (r != expected)
-                        json_log(e, flags|JSON_WARNING, 0, "Wrong number of system call arguments for JSON data data, ignoring.");
+                        json_log(e, flags|JSON_WARNING, 0, "Wrong number of system call arguments for JSON data, ignoring.");
 
                 /* Note that we are a bit sloppy here and do not insist that SCMP_CMP_MASKED_EQ gets two datum values,
                  * and the other only one. That's because buildah for example by default calls things with
index e396d66441297b6f3457c05307e959ced1af91c2..5772d96b2fa50031e3e38a235dffdf1f0e226219 100644 (file)
@@ -12,7 +12,6 @@
 #include "mkdir.h"
 #include "nspawn-setuid.h"
 #include "process-util.h"
-#include "rlimit-util.h"
 #include "signal-util.h"
 #include "string-util.h"
 #include "strv.h"
@@ -29,7 +28,7 @@ static int spawn_getent(const char *database, const char *key, pid_t *rpid) {
         if (pipe2(pipe_fds, O_CLOEXEC) < 0)
                 return log_error_errno(errno, "Failed to allocate pipe: %m");
 
-        r = safe_fork("(getent)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+        r = safe_fork("(getent)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
         if (r < 0) {
                 safe_close_pair(pipe_fds);
                 return r;
@@ -44,8 +43,6 @@ static int spawn_getent(const char *database, const char *key, pid_t *rpid) {
 
                 (void) close_all_fds(NULL, 0);
 
-                (void) rlimit_nofile_safe();
-
                 execle("/usr/bin/getent", "getent", database, key, NULL, &empty_env);
                 execle("/bin/getent", "getent", database, key, NULL, &empty_env);
                 _exit(EXIT_FAILURE);
index 3567d034e7b7eb515ab3ab2afdaf3229943fb20c..36d336dfc896c42cb8722455bbb69a2b3e09841c 100644 (file)
@@ -2516,7 +2516,7 @@ static int setup_kmsg(int fd_inner_socket) {
 
         BLOCK_WITH_UMASK(0000);
 
-        /* We create the kmsg FIFO as as temporary file in /run, but immediately delete it after bind mounting it to
+        /* We create the kmsg FIFO as a temporary file in /run, but immediately delete it after bind mounting it to
          * /proc/kmsg. While FIFOs on the reading side behave very similar to /proc/kmsg, their writing side behaves
          * differently from /dev/kmsg in that writing blocks when nothing is reading. In order to avoid any problems
          * with containers deadlocking due to this we simply make /dev/kmsg unavailable to the container. */
index 3af1d2f0c13fbac994ab6d233b33392e18ae6db7..ed417306f020ab43bb4806b4190e280ed5bbc243 100644 (file)
@@ -346,9 +346,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);
@@ -461,7 +462,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) {
index a758d5589bf6f4ee8022f0f832fabcafe2186659..f53e4c47e8b33860857046f401897f3181a1bc8e 100644 (file)
@@ -109,7 +109,7 @@ static inline int compare_swap_usage(OomdCGroupContext * const *c1, OomdCGroupCo
  * Returns the number of sorted items; negative on error. */
 int oomd_sort_cgroup_contexts(Hashmap *h, oomd_compare_t compare_func, const char *prefix, OomdCGroupContext ***ret);
 
-/* If the the cgroup is owned by root, or the cgroups represented by `ctx` and
+/* If the cgroup is owned by root, or the cgroups represented by `ctx` and
  * `prefix` are owned by the same user, then set `ctx->preference` using the
  * `user.oomd_avoid` and `user.oomd_omit` xattrs. Otherwise, set
  * `ctx->preference` to MANAGED_OOM_PREFERENCE_NONE.
index ed98812399132306b0de5f255ca0e52ce079715b..ef99d924bb12bb71d62b218d294482cfd2eed8a5 100644 (file)
@@ -474,7 +474,7 @@ static void test_oomd_fetch_cgroup_oom_preference(void) {
         assert_se(oomd_fetch_cgroup_oom_preference(ctx, "/herp.slice/derp.scope") == -EINVAL);
 
         /* Assert that avoid/omit are not set if the cgroup and prefix are not
-         * owned by the same user.*/
+         * owned by the same user. */
         if (test_xattrs && !empty_or_root(cgroup)) {
                 ctx = oomd_cgroup_context_free(ctx);
                 assert_se(cg_set_access(SYSTEMD_CGROUP_CONTROLLER, cgroup, 61183, 0) >= 0);
index 6ba48b528ec8b10d9c6195b402ba07c0075793d5..272bf19431d934aa58ac0f5c9ad8d30e1bfbaf83 100644 (file)
@@ -3752,6 +3752,31 @@ static int do_copy_files(Partition *p, const char *root, const Set *denylist) {
         assert(p);
         assert(root);
 
+        /* copy_tree_at() automatically copies the permissions of source directories to target directories if
+         * it created them. However, the root directory is created by us, so we have to manually take care
+         * that it is initialized. We use the first source directory targeting "/" as the metadata source for
+         * the root directory. */
+        STRV_FOREACH_PAIR(source, target, p->copy_files) {
+                _cleanup_close_ int rfd = -EBADF, sfd = -EBADF;
+
+                if (!path_equal(*target, "/"))
+                        continue;
+
+                rfd = open(root, O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW);
+                if (rfd < 0)
+                        return rfd;
+
+                sfd = chase_symlinks_and_open(*source, arg_root, CHASE_PREFIX_ROOT, O_PATH|O_DIRECTORY|O_CLOEXEC|O_NOCTTY, NULL);
+                if (sfd < 0)
+                        return log_error_errno(sfd, "Failed to open source file '%s%s': %m", strempty(arg_root), *source);
+
+                (void) copy_xattr(sfd, NULL, rfd, NULL, COPY_ALL_XATTRS);
+                (void) copy_access(sfd, rfd);
+                (void) copy_times(sfd, rfd, 0);
+
+                break;
+        }
+
         STRV_FOREACH_PAIR(source, target, p->copy_files) {
                 _cleanup_close_ int sfd = -EBADF, pfd = -EBADF, tfd = -EBADF;
 
@@ -3788,10 +3813,6 @@ static int do_copy_files(Partition *p, const char *root, const Set *denylist) {
                                 if (pfd < 0)
                                         return log_error_errno(pfd, "Failed to open parent directory of target: %m");
 
-                                /* Make sure everything is owned by the user running repart so that
-                                 * make_filesystem() can map the user running repart to "root" in a user
-                                 * namespace to have the files owned by root in the final image. */
-
                                 r = copy_tree_at(
                                                 sfd, ".",
                                                 pfd, fn,
@@ -3840,7 +3861,7 @@ static int do_copy_files(Partition *p, const char *root, const Set *denylist) {
                         if (r < 0)
                                 return log_error_errno(r, "Failed to copy '%s' to '%s%s': %m", *source, strempty(arg_root), *target);
 
-                        (void) copy_xattr(sfd, tfd, COPY_ALL_XATTRS);
+                        (void) copy_xattr(sfd, NULL, tfd, NULL, COPY_ALL_XATTRS);
                         (void) copy_access(sfd, tfd);
                         (void) copy_times(sfd, tfd, 0);
                 }
@@ -3872,17 +3893,22 @@ static bool partition_needs_populate(Partition *p) {
 
 static int partition_populate_directory(Partition *p, const Set *denylist, char **ret) {
         _cleanup_(rm_rf_physical_and_freep) char *root = NULL;
-        _cleanup_close_ int rfd = -EBADF;
+        const char *vt;
         int r;
 
         assert(ret);
 
-        rfd = mkdtemp_open("/var/tmp/repart-XXXXXX", 0, &root);
-        if (rfd < 0)
-                return log_error_errno(rfd, "Failed to create temporary directory: %m");
+        r = var_tmp_dir(&vt);
+        if (r < 0)
+                return log_error_errno(r, "Could not determine temporary directory: %m");
+
+        r = tempfn_random_child(vt, "repart", &root);
+        if (r < 0)
+                return log_error_errno(r, "Failed to generate temporary directory: %m");
 
-        if (fchmod(rfd, 0755) < 0)
-                return log_error_errno(errno, "Failed to change mode of temporary directory: %m");
+        r = mkdir(root, 0755);
+        if (r < 0)
+                return log_error_errno(errno, "Failed to create temporary directory: %m");
 
         r = do_copy_files(p, root, denylist);
         if (r < 0)
index 306540650fd6fa10c62ab2003678071241231160..e8c21450600695758ec6bc8d7125b197c92645e3 100644 (file)
@@ -214,7 +214,7 @@ static int process_dmesg_files(PStoreList *list) {
          * The dmesg- filename contains the backend-type and the Common Platform Error Record, CPER,
          * record id, a 64-bit number.
          *
-         * Files are processed in reverse lexigraphical order so as to properly reconstruct original dmesg.*/
+         * Files are processed in reverse lexigraphical order so as to properly reconstruct original dmesg. */
 
         for (size_t n = list->n_entries; n > 0; n--) {
                 PStoreEntry *pe;
@@ -351,7 +351,7 @@ static int run(int argc, char *argv[]) {
                 return r;
 
         /* Handle each pstore file */
-        /* Sort files lexigraphically ascending, generally needed by all */
+        /* Sort files lexicographically ascending, generally needed by all */
         typesafe_qsort(list.entries, list.n_entries, compare_pstore_entries);
 
         /* Process known file types */
index 505be230513364dcae1056a1dddf179ce197406f..2638e985fb42c9f1d40f22c0dc944eac36c33347 100644 (file)
@@ -232,6 +232,13 @@ static void print_ifindex_comment(int printed_so_far, int ifindex) {
                ansi_grey(), ifname, ansi_normal());
 }
 
+static int resolve_host_error(const char *name, int r, const sd_bus_error *error) {
+        if (sd_bus_error_has_name(error, BUS_ERROR_DNS_NXDOMAIN))
+                return log_error_errno(r, "%s: %s", name, bus_error_message(error, r));
+
+        return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(error, r));
+}
+
 static int resolve_host(sd_bus *bus, const char *name) {
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL;
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -257,7 +264,7 @@ static int resolve_host(sd_bus *bus, const char *name) {
 
         r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply);
         if (r < 0)
-                return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(&error, r));
+                return resolve_host_error(name, r, &error);
 
         ts = now(CLOCK_MONOTONIC) - ts;
 
index c818e1d52f0954ac667d9b0d3eb4ae58a6f67b24..1c1e5bc3aadda2d97cd5727dca301d0e0391a1fc 100644 (file)
@@ -159,7 +159,7 @@ static int reply_query_state(DnsQuery *q) {
         case DNS_TRANSACTION_NOT_FOUND:
                 /* We return this as NXDOMAIN. This is only generated when a host doesn't implement LLMNR/TCP, and we
                  * thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */
-                return reply_method_errorf(q, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q));
+                return reply_method_errorf(q, BUS_ERROR_DNS_NXDOMAIN, "'%s' not found", dns_query_string(q));
 
         case DNS_TRANSACTION_NO_SOURCE:
                 return reply_method_errorf(q, BUS_ERROR_NO_SOURCE, "All suitable resolution sources turned off");
@@ -176,7 +176,7 @@ static int reply_query_state(DnsQuery *q) {
                         return 0;
 
                 if (q->answer_rcode == DNS_RCODE_NXDOMAIN)
-                        sd_bus_error_setf(&error, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q));
+                        sd_bus_error_setf(&error, BUS_ERROR_DNS_NXDOMAIN, "Name '%s' not found", dns_query_string(q));
                 else {
                         const char *rc, *n;
 
index f63cd9b48c6e24f66d23cd95c5baa01497702839..fc076856b601d636d1b6e3095bfaaaa14c7eefef 100644 (file)
@@ -348,7 +348,7 @@ static int dnssec_ecdsa_verify_raw(
         if (!s)
                 return -EIO;
 
-        /* TODO: We should eventually use use the EVP API once it supports ECDSA signature verification */
+        /* TODO: We should eventually use the EVP API once it supports ECDSA signature verification */
 
         sig = ECDSA_SIG_new();
         if (!sig)
index 8d76630adb686ad867e342432a206720856cbd8c..3f994690e622a610e05d471f4190a03365a6924b 100644 (file)
@@ -2079,7 +2079,9 @@ int dns_transaction_go(DnsTransaction *t) {
                         log_debug("Sending query via TCP since it is too large.");
                 else if (r == -EAGAIN)
                         log_debug("Sending query via TCP since UDP isn't supported or DNS-over-TLS is selected.");
-                if (IN_SET(r, -EMSGSIZE, -EAGAIN))
+                else if (r == -EPERM)
+                        log_debug("Sending query via TCP since UDP is blocked.");
+                if (IN_SET(r, -EMSGSIZE, -EAGAIN, -EPERM))
                         r = dns_transaction_emit_tcp(t);
         }
         if (r == -ELOOP) {
index e21eb86756987ca85c37402ff06501b92f9c6b4c..d8aeb7061f9036ee32d1862a96d1f4eeba5b8976 100644 (file)
@@ -146,9 +146,9 @@ int main(int argc, char* argv[]) {
         test_hostname_lookup(bus, "www.dnssec-bogus.sg", AF_INET, BUS_ERROR_DNSSEC_FAILED);
 
         /* NXDOMAIN in NSEC domain */
-        test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
-        test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, _BUS_ERROR_DNS "NXDOMAIN");
+        test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+        test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, BUS_ERROR_DNS_NXDOMAIN);
 
         /* wildcard, NSEC zone */
         test_rr_lookup(bus, ".wilda.nsec.0skar.cz", DNS_TYPE_A, NULL);
@@ -187,16 +187,16 @@ int main(int argc, char* argv[]) {
         test_hostname_lookup(bus, "herndon.nasa.gov", AF_INET6, BUS_ERROR_NO_SUCH_RR);
 
         /* NXDOMAIN in NSEC root zone: */
-        test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
+        test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
 
         /* NXDOMAIN in NSEC3 .com zone: */
-        test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
+        test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
 
         /* Unsigned A */
         test_rr_lookup(bus, "poettering.de", DNS_TYPE_A, NULL);
@@ -213,11 +213,11 @@ int main(int argc, char* argv[]) {
 #endif
 
         /* DNAME, pointing to NXDOMAIN */
-        test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
-        test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
-        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
+        test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+        test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+        test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
 
         return 0;
 }
index c3f6c1f9f49950345a41427dc88b356057f6f1a0..be6dd1654a0d6ed6ec23f6dd80d29cf024f14002 100644 (file)
@@ -45,7 +45,7 @@ static const BaseFilesystem table[] = {
          * been mounted into) it is thus necessary to create a symlink pointing to the right subdirectory of
          * /usr/ first — otherwise we couldn't invoke any dynamic binary. Let's detect this case here, and
          * create the symlink as needed should it be missing. We prefer doing this consistently with Debian's
-         * multiarch logic, but support Fedora-style multilib too.*/
+         * multiarch logic, but support Fedora-style multilib too. */
 #if defined(__aarch64__)
         /* aarch64 ELF ABI actually says dynamic loader is in /lib/, but Fedora puts it in /lib64/ anyway and
          * just symlinks /lib/ld-linux-aarch64.so.1 to ../lib64/ld-linux-aarch64.so.1. For this to work
index 06e6697a3301a044c53ac4fc1fb3296eecafc7ba..40f99ac2bb29a4c6c7e35880546b09b4b9f5c99b 100644 (file)
@@ -86,8 +86,7 @@ int bus_property_set_log_target(
                 return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log target '%s'", t);
 
         log_info("Setting log target to %s.", log_target_to_string(target));
-        log_set_target(target);
-        log_open();
+        log_set_target_and_open(target);
 
         return 0;
 }
index e5e89339636856be410233f63655bac686a34512..809759db803733f5611225cb8fbd7c725c6ca45a 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "bus-map-properties.h"
 #include "alloc-util.h"
+#include "bus-util.h"
 #include "strv.h"
 #include "bus-message.h"
 
@@ -13,7 +14,7 @@ int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_err
 
         r = sd_bus_message_read_array(m, SD_BUS_TYPE_BYTE, &v, &n);
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
 
         if (n == 0)
                 *p = SD_ID128_NULL;
@@ -32,11 +33,11 @@ int bus_map_strv_sort(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus
 
         r = sd_bus_message_read_strv_extend(m, &l);
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
 
         r = strv_extend_strv(p, l, false);
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
 
         strv_sort(*p);
         return 0;
@@ -48,7 +49,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
         r = sd_bus_message_peek_type(m, &type, NULL);
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
 
         switch (type) {
 
@@ -59,7 +60,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_basic(m, type, &s);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 if (isempty(s))
                         s = NULL;
@@ -77,7 +78,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_strv_extend(m, &l);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 return strv_extend_strv(p, l, false);
         }
@@ -87,7 +88,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_basic(m, type, &b);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 if (flags & BUS_MAP_BOOLEAN_AS_BOOL)
                         *(bool*) userdata = b;
@@ -103,7 +104,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_basic(m, type, &u);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 *p = u;
                 return 0;
@@ -115,7 +116,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_basic(m, type, &t);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 *p = t;
                 return 0;
@@ -126,7 +127,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne
 
                 r = sd_bus_message_read_basic(m, type, &d);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 *p = d;
                 return 0;
@@ -149,7 +150,7 @@ int bus_message_map_all_properties(
 
         r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "{sv}");
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
 
         while ((r = sd_bus_message_enter_container(m, SD_BUS_TYPE_DICT_ENTRY, "sv")) > 0) {
                 const struct bus_properties_map *prop;
@@ -160,7 +161,7 @@ int bus_message_map_all_properties(
 
                 r = sd_bus_message_read_basic(m, SD_BUS_TYPE_STRING, &member);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
 
                 for (i = 0, prop = NULL; map[i].member; i++)
                         if (streq(map[i].member, member)) {
@@ -171,11 +172,11 @@ int bus_message_map_all_properties(
                 if (prop) {
                         r = sd_bus_message_peek_type(m, NULL, &contents);
                         if (r < 0)
-                                return r;
+                                return bus_log_parse_error_debug(r);
 
                         r = sd_bus_message_enter_container(m, SD_BUS_TYPE_VARIANT, contents);
                         if (r < 0)
-                                return r;
+                                return bus_log_parse_error_debug(r);
 
                         v = (uint8_t *)userdata + prop->offset;
                         if (map[i].set)
@@ -183,25 +184,29 @@ int bus_message_map_all_properties(
                         else
                                 r = map_basic(sd_bus_message_get_bus(m), member, m, flags, error, v);
                         if (r < 0)
-                                return r;
+                                return bus_log_parse_error_debug(r);
 
                         r = sd_bus_message_exit_container(m);
                         if (r < 0)
-                                return r;
+                                return bus_log_parse_error_debug(r);
                 } else {
                         r = sd_bus_message_skip(m, "v");
                         if (r < 0)
-                                return r;
+                                return bus_log_parse_error_debug(r);
                 }
 
                 r = sd_bus_message_exit_container(m);
                 if (r < 0)
-                        return r;
+                        return bus_log_parse_error_debug(r);
         }
         if (r < 0)
-                return r;
+                return bus_log_parse_error_debug(r);
+
+        r = sd_bus_message_exit_container(m);
+        if (r < 0)
+                return bus_log_parse_error_debug(r);
 
-        return sd_bus_message_exit_container(m);
+        return r;
 }
 
 int bus_map_all_properties(
index 955cdcb57c8344a6166347324be6a24ba2b0b4e1..ab553c866ca886d140617a0917f5a681b70d6ca6 100644 (file)
@@ -45,6 +45,9 @@ int bus_log_connect_error(int r, BusTransport transport);
 #define bus_log_parse_error(r)                                  \
         log_error_errno(r, "Failed to parse bus message: %m")
 
+#define bus_log_parse_error_debug(r)                            \
+        log_debug_errno(r, "Failed to parse bus message: %m")
+
 #define bus_log_create_error(r)                                 \
         log_error_errno(r, "Failed to create bus message: %m")
 
index 4eb4f9f765ca9c8450bf8fe636d0cd6a2b1831cc..d15875739acb38f5e6210f4d49998fa89850b287 100644 (file)
@@ -504,6 +504,7 @@ static int fd_copy_symlink(
                      AT_SYMLINK_NOFOLLOW) < 0)
                 r = -errno;
 
+        (void) copy_xattr(df, from, dt, to, copy_flags);
         (void) utimensat(dt, to, (struct timespec[]) { st->st_atim, st->st_mtim }, AT_SYMLINK_NOFOLLOW);
         return r;
 }
@@ -754,7 +755,7 @@ static int fd_copy_regular(
                 r = -errno;
 
         (void) futimens(fdt, (struct timespec[]) { st->st_atim, st->st_mtim });
-        (void) copy_xattr(fdf, fdt, copy_flags);
+        (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
 
         if (copy_flags & COPY_FSYNC) {
                 if (fsync(fdt) < 0) {
@@ -1058,7 +1059,7 @@ static int fd_copy_directory(
                 if (fchmod(fdt, st->st_mode & 07777) < 0)
                         r = -errno;
 
-                (void) copy_xattr(dirfd(d), fdt, copy_flags);
+                (void) copy_xattr(dirfd(d), NULL, fdt, NULL, copy_flags);
                 (void) futimens(fdt, (struct timespec[]) { st->st_atim, st->st_mtim });
         }
 
@@ -1313,7 +1314,7 @@ int copy_file_fd_full(
          * mode/ownership of that device node...) */
         if (S_ISREG(st.st_mode)) {
                 (void) copy_times(fdf, fdt, copy_flags);
-                (void) copy_xattr(fdf, fdt, copy_flags);
+                (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
         }
 
         if (copy_flags & COPY_FSYNC_FULL) {
@@ -1385,7 +1386,7 @@ int copy_file_full(
                 goto fail;
 
         (void) copy_times(fdf, fdt, copy_flags);
-        (void) copy_xattr(fdf, fdt, copy_flags);
+        (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
 
         if (chattr_mask != 0)
                 (void) chattr_fd(fdt, chattr_flags, chattr_mask & ~CHATTR_EARLY_FL, NULL);
@@ -1570,11 +1571,11 @@ int copy_rights_with_fallback(int fdf, int fdt, const char *patht) {
         return fchmod_and_chown_with_fallback(fdt, patht, st.st_mode & 07777, st.st_uid, st.st_gid);
 }
 
-int copy_xattr(int fdf, int fdt, CopyFlags copy_flags) {
+int copy_xattr(int df, const char *from, int dt, const char *to, CopyFlags copy_flags) {
         _cleanup_free_ char *names = NULL;
         int ret = 0, r;
 
-        r = flistxattr_malloc(fdf, &names);
+        r = listxattr_at_malloc(df, from, 0, &names);
         if (r < 0)
                 return r;
 
@@ -1584,13 +1585,13 @@ int copy_xattr(int fdf, int fdt, CopyFlags copy_flags) {
                 if (!FLAGS_SET(copy_flags, COPY_ALL_XATTRS) && !startswith(p, "user."))
                         continue;
 
-                r = fgetxattr_malloc(fdf, p, &value);
+                r = getxattr_at_malloc(df, from, p, 0, &value);
                 if (r == -ENODATA)
                         continue; /* gone by now */
                 if (r < 0)
                         return r;
 
-                if (fsetxattr(fdt, p, value, r, 0) < 0)
+                if (xsetxattr(dt, to, p, value, r, 0) < 0)
                         ret = -errno;
         }
 
index 1eb6d1ce0532e041cc66f617d5d6468f82e180f2..22151ff83b07a012085ab7be2854412b676cd907 100644 (file)
@@ -77,4 +77,4 @@ int copy_rights_with_fallback(int fdf, int fdt, const char *patht);
 static inline int copy_rights(int fdf, int fdt) {
         return copy_rights_with_fallback(fdf, fdt, NULL); /* no fallback */
 }
-int copy_xattr(int fdf, int fdt, CopyFlags copy_flags);
+int copy_xattr(int df, const char *from, int dt, const char *to, CopyFlags copy_flags);
index c0d052e0ea36dd9da9363593491f0a6a05e9c659..210e2c7cf7d0f0d546dee11c08f9c591db878e22 100644 (file)
@@ -435,7 +435,7 @@ static int make_partition_devname(
         assert(nr != 0); /* zero is not a valid partition nr */
         assert(ret);
 
-        if (!FLAGS_SET(flags, DISSECT_IMAGE_DISKSEQ_DEVNODE) || diskseq == UINT64_MAX) {
+        if (!FLAGS_SET(flags, DISSECT_IMAGE_DISKSEQ_DEVNODE) || diskseq == 0) {
 
                 /* Given a whole block device node name (e.g. /dev/sda or /dev/loop7) generate a partition
                  * device name (e.g. /dev/sda7 or /dev/loop7p5). The rule the kernel uses is simple: if whole
@@ -499,7 +499,7 @@ static int open_partition(
                 return -ENXIO;
 
         /* Also check diskseq. */
-        if (loop->diskseq > 0) {
+        if (loop->diskseq != 0) {
                 uint64_t diskseq;
 
                 r = fd_get_diskseq(fd, &diskseq);
@@ -573,7 +573,7 @@ static int dissect_image(
          * Returns -ENXIO if we couldn't find any partition suitable as root or /usr partition
          * Returns -ENOTUNIQ if we only found multiple generic partitions and thus don't know what to do with that */
 
-        uint64_t diskseq = m->loop ? m->loop->diskseq : UINT64_MAX;
+        uint64_t diskseq = m->loop ? m->loop->diskseq : 0;
 
         if (verity && verity->root_hash) {
                 sd_id128_t fsuuid, vuuid;
@@ -3332,7 +3332,7 @@ 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*/
+        /* 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;
 
index d07cfaefb26b919a2685e39ccbe421ac6f6a23a6..84dd444d33864124e3f57fe52315c32c9d0abe48 100644 (file)
@@ -117,7 +117,7 @@ struct ethtool_link_usettings {
 };
 
 typedef struct u32_opt {
-        uint32_t value; /* a value of 0 indicates the hardware advertised maximum should be used.*/
+        uint32_t value; /* a value of 0 indicates the hardware advertised maximum should be used. */
         bool set;
 } u32_opt;
 
index f5283f9df459cbb1aaa34865af270a50dc46dad6..7ed2cce76b9a211cd5c3c27118f228eb9b8c6bb2 100644 (file)
@@ -20,7 +20,6 @@
 #include "missing_syscall.h"
 #include "path-util.h"
 #include "process-util.h"
-#include "rlimit-util.h"
 #include "serialize.h"
 #include "set.h"
 #include "signal-util.h"
@@ -43,7 +42,7 @@ static int do_spawn(const char *path, char *argv[], int stdout_fd, pid_t *pid, b
                 return 0;
         }
 
-        r = safe_fork("(direxec)", FORK_DEATHSIG|FORK_LOG, &_pid);
+        r = safe_fork("(direxec)", FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &_pid);
         if (r < 0)
                 return r;
         if (r == 0) {
@@ -55,8 +54,6 @@ static int do_spawn(const char *path, char *argv[], int stdout_fd, pid_t *pid, b
                                 _exit(EXIT_FAILURE);
                 }
 
-                (void) rlimit_nofile_safe();
-
                 if (set_systemd_exec_pid) {
                         r = setenv_systemd_exec_pid(false);
                         if (r < 0)
@@ -493,7 +490,7 @@ int fork_agent(const char *name, const int except[], size_t n_except, pid_t *ret
         r = safe_fork_full(name,
                            except,
                            n_except,
-                           FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_REOPEN_LOG,
+                           FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_REOPEN_LOG|FORK_RLIMIT_NOFILE_SAFE,
                            ret_pid);
         if (r < 0)
                 return r;
@@ -537,8 +534,6 @@ int fork_agent(const char *name, const int except[], size_t n_except, pid_t *ret
                 }
         }
 
-        (void) rlimit_nofile_safe();
-
         /* Count arguments */
         va_start(ap, path);
         for (n = 0; va_arg(ap, char*); n++)
index aa8438e29943fb61b799ca98b307ff3a95c72346..6870654426bfc7dffe821319a67c45d956dd67fa 100644 (file)
@@ -2868,7 +2868,7 @@ static int normalize_linked_files(
                 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
+         * but operates on real unit names. For each argument we look up the actual path
          * where the unit is found. This way linked units can be re-enabled successfully. */
 
         _cleanup_strv_free_ char **files = NULL, **names = NULL;
index d9eabec886fde020635827e0e977cee6897f91b2..83e9834bbf2fb028e40e8bb14522ae5e519f2315 100644 (file)
@@ -14,6 +14,7 @@
 #include "journal-util.h"
 #include "parse-util.h"
 #include "string-util.h"
+#include "strv.h"
 #include "unaligned.h"
 
 enum {
@@ -217,9 +218,8 @@ static int process_special_field(JournalImporter *imp, char *line) {
 
         assert(line);
 
-        value = startswith(line, "__CURSOR=");
-        if (value)
-                /* ignore __CURSOR */
+        if (STARTSWITH_SET(line, "__CURSOR=", "__SEQNUM=", "__SEQNUM_ID="))
+                /* ignore __CURSOR=, __SEQNUM=, __SEQNUM_ID= which we cannot replicate */
                 return 1;
 
         value = startswith(line, "__REALTIME_TIMESTAMP=");
index bc3d38bb9474b675376b280a53283f3ab368ee99..ea396fcc9ba21f706ec501f52b99b99e288c59c7 100644 (file)
@@ -128,6 +128,10 @@ int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_use
                         log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path);
                         break;
 
+                case ETOOMANYREFS:
+                        log_warning_errno(err, "Too many journal files (limit is at %u) in scope, ignoring file '%s'.", JOURNAL_FILES_MAX, path);
+                        break;
+
                 default:
                         log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path);
                         break;
index c2700481971fff556312538de2ef6e670c6382c0..8962173b3aefae94bc5d24e51b7a589df2c0e2fd 100644 (file)
@@ -4318,7 +4318,7 @@ int json_log_internal(
 
 static void *dispatch_userdata(const JsonDispatch *p, void *userdata) {
 
-        /* When the the userdata pointer is passed in as NULL, then we'll just use the offset as a literal
+        /* When the userdata pointer is passed in as NULL, then we'll just use the offset as a literal
          * address, and convert it to a pointer.  Note that might as well just add the offset to the NULL
          * pointer, but UndefinedBehaviourSanitizer doesn't like pointer arithmetics based on NULL pointers,
          * hence we code this explicitly here. */
index aa2d8b3ff1b7e15fbdce4acb167c2c59a4815d0b..6802ad0d3da79385a865b74f942f6146362e8d6e 100644 (file)
@@ -488,7 +488,7 @@ static int fido2_use_hmac_hash_specific_token(
                          * it gracefully (also see below.) */
 
                         if (has_up && (required & (FIDO2ENROLL_UP|FIDO2ENROLL_UP_IF_NEEDED)) == FIDO2ENROLL_UP_IF_NEEDED) {
-                                log_notice("%s%sGot unsupported option error when when user presence test is turned off. Trying with user presence test turned on.",
+                                log_notice("%s%sGot unsupported option error when user presence test is turned off. Trying with user presence test turned on.",
                                            emoji_enabled() ? special_glyph(SPECIAL_GLYPH_TOUCH) : "",
                                            emoji_enabled() ? " " : "");
                                 retry_with_up = true;
@@ -957,7 +957,7 @@ int fido2_generate_hmac_hash(
                          * slightly more defensively. */
 
                         if (has_up && !FLAGS_SET(lock_with, FIDO2ENROLL_UP)) {
-                                log_notice("%s%sGot unsupported option error when when user presence test is turned off. Trying with user presence test turned on.",
+                                log_notice("%s%sGot unsupported option error when user presence test is turned off. Trying with user presence test turned on.",
                                            emoji_enabled() ? special_glyph(SPECIAL_GLYPH_TOUCH) : "",
                                            emoji_enabled() ? " " : "");
                                 retry_with_up = true;
index 8ddda6582ebea564b5a18043bf8edda031b0b9c1..6ed9a6890f5e73cba0bfc1a2f01f15350147198e 100644 (file)
@@ -327,32 +327,32 @@ static bool print_multiline(
 static int output_timestamp_monotonic(
                 FILE *f,
                 OutputMode mode,
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
         int written_chars = 0;
 
         assert(f);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
-        if (!VALID_MONOTONIC(ts->monotonic))
+        if (!VALID_MONOTONIC(display_ts->monotonic))
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid monotonic timestamp available");
 
-        written_chars += fprintf(f, "[%5"PRI_USEC".%06"PRI_USEC, ts->monotonic / USEC_PER_SEC, ts->monotonic % USEC_PER_SEC);
+        written_chars += fprintf(f, "[%5"PRI_USEC".%06"PRI_USEC, display_ts->monotonic / USEC_PER_SEC, display_ts->monotonic % USEC_PER_SEC);
 
         if (mode == OUTPUT_SHORT_DELTA) {
                 uint64_t delta;
                 bool reliable_ts = true;
 
-                if (VALID_MONOTONIC(previous_ts->monotonic) && sd_id128_equal(*boot_id, *previous_boot_id))
-                        delta = usec_sub_unsigned(ts->monotonic, previous_ts->monotonic);
-                else if (VALID_REALTIME(ts->realtime) && VALID_REALTIME(previous_ts->realtime)) {
-                        delta = usec_sub_unsigned(ts->realtime, previous_ts->realtime);
+                if (VALID_MONOTONIC(previous_display_ts->monotonic) && sd_id128_equal(*boot_id, *previous_boot_id))
+                        delta = usec_sub_unsigned(display_ts->monotonic, previous_display_ts->monotonic);
+                else if (VALID_REALTIME(display_ts->realtime) && VALID_REALTIME(previous_display_ts->realtime)) {
+                        delta = usec_sub_unsigned(display_ts->realtime, previous_display_ts->realtime);
                         reliable_ts = false;
                 } else {
                         written_chars += fprintf(f, "%16s", "");
@@ -372,39 +372,39 @@ static int output_timestamp_realtime(
                 sd_journal *j,
                 OutputMode mode,
                 OutputFlags flags,
-                const dual_timestamp *ts) {
+                const dual_timestamp *display_ts) {
 
         char buf[CONST_MAX(FORMAT_TIMESTAMP_MAX, 64U)];
         int r;
 
         assert(f);
         assert(j);
-        assert(ts);
+        assert(display_ts);
 
-        if (!VALID_REALTIME(ts->realtime))
+        if (!VALID_REALTIME(display_ts->realtime))
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid realtime timestamp available");
 
         if (IN_SET(mode, OUTPUT_SHORT_FULL, OUTPUT_WITH_UNIT)) {
                 const char *k;
 
                 if (flags & OUTPUT_UTC)
-                        k = format_timestamp_style(buf, sizeof(buf), ts->realtime, TIMESTAMP_UTC);
+                        k = format_timestamp_style(buf, sizeof(buf), display_ts->realtime, TIMESTAMP_UTC);
                 else
-                        k = format_timestamp(buf, sizeof(buf), ts->realtime);
+                        k = format_timestamp(buf, sizeof(buf), display_ts->realtime);
                 if (!k)
                         return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
-                                               "Failed to format timestamp: %" PRIu64, ts->realtime);
+                                               "Failed to format timestamp: %" PRIu64, display_ts->realtime);
 
         } else {
                 struct tm tm;
                 time_t t;
 
-                t = (time_t) (ts->realtime / USEC_PER_SEC);
+                t = (time_t) (display_ts->realtime / USEC_PER_SEC);
 
                 switch (mode) {
 
                 case OUTPUT_SHORT_UNIX:
-                        xsprintf(buf, "%10"PRI_TIME".%06"PRIu64, t, ts->realtime % USEC_PER_SEC);
+                        xsprintf(buf, "%10"PRI_TIME".%06"PRIu64, t, display_ts->realtime % USEC_PER_SEC);
                         break;
 
                 case OUTPUT_SHORT_ISO:
@@ -422,7 +422,7 @@ static int output_timestamp_realtime(
                                      localtime_or_gmtime_r(&t, &tm, flags & OUTPUT_UTC)) <= 0)
                                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                                        "Failed to format ISO-precise time");
-                        xsprintf(usec, "%06"PRI_USEC, ts->realtime % USEC_PER_SEC);
+                        xsprintf(usec, "%06"PRI_USEC, display_ts->realtime % USEC_PER_SEC);
                         memcpy(buf + 20, usec, 6);
                         break;
                 }
@@ -440,7 +440,7 @@ static int output_timestamp_realtime(
                                 assert(sizeof(buf) > strlen(buf));
                                 k = sizeof(buf) - strlen(buf);
 
-                                r = snprintf(buf + strlen(buf), k, ".%06"PRIu64, ts->realtime % USEC_PER_SEC);
+                                r = snprintf(buf + strlen(buf), k, ".%06"PRIu64, display_ts->realtime % USEC_PER_SEC);
                                 if (r <= 0 || (size_t) r >= k) /* too long? */
                                         return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                                                "Failed to format precise time");
@@ -464,9 +464,9 @@ static int output_short(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
         int r;
@@ -498,9 +498,9 @@ static int output_short(
 
         assert(f);
         assert(j);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         /* Set the threshold to one bigger than the actual print threshold, so that if the line is actually
@@ -535,9 +535,9 @@ static int output_short(
         audit = streq_ptr(transport, "audit");
 
         if (IN_SET(mode, OUTPUT_SHORT_MONOTONIC, OUTPUT_SHORT_DELTA))
-                r = output_timestamp_monotonic(f, mode, ts, boot_id, previous_ts, previous_boot_id);
+                r = output_timestamp_monotonic(f, mode, display_ts, boot_id, previous_display_ts, previous_boot_id);
         else
-                r = output_timestamp_realtime(f, j, mode, flags, ts);
+                r = output_timestamp_realtime(f, j, mode, flags, display_ts);
         if (r < 0)
                 return r;
         n += r;
@@ -669,9 +669,9 @@ static int output_verbose(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
         const void *data;
@@ -683,21 +683,21 @@ static int output_verbose(
 
         assert(f);
         assert(j);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         (void) sd_journal_set_data_threshold(j, 0);
 
-        if (!VALID_REALTIME(ts->realtime))
+        if (!VALID_REALTIME(display_ts->realtime))
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid realtime timestamp available");
 
         r = sd_journal_get_cursor(j, &cursor);
         if (r < 0)
                 return log_error_errno(r, "Failed to get cursor: %m");
 
-        timestamp = format_timestamp_style(buf, sizeof buf, ts->realtime,
+        timestamp = format_timestamp_style(buf, sizeof buf, display_ts->realtime,
                                            flags & OUTPUT_UTC ? TIMESTAMP_US_UTC : TIMESTAMP_US);
         fprintf(f, "%s%s%s %s[%s]%s\n",
                 timestamp && (flags & OUTPUT_COLOR) ? ANSI_UNDERLINE : "",
@@ -786,22 +786,23 @@ static int output_export(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
+        sd_id128_t journal_boot_id, seqnum_id;
         _cleanup_free_ char *cursor = NULL;
+        usec_t monotonic, realtime;
         const void *data;
+        uint64_t seqnum;
         size_t length;
-        usec_t monotonic, realtime;
-        sd_id128_t journal_boot_id;
         int r;
 
         assert(j);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         (void) sd_journal_set_data_threshold(j, 0);
@@ -818,14 +819,22 @@ static int output_export(
         if (r < 0)
                 return log_error_errno(r, "Failed to get monotonic timestamp: %m");
 
+        r = sd_journal_get_seqnum(j, &seqnum, &seqnum_id);
+        if (r < 0)
+                return log_error_errno(r, "Failed to get seqnum: %m");
+
         fprintf(f,
                 "__CURSOR=%s\n"
-                "__REALTIME_TIMESTAMP="USEC_FMT"\n"
-                "__MONOTONIC_TIMESTAMP="USEC_FMT"\n"
+                "__REALTIME_TIMESTAMP=" USEC_FMT "\n"
+                "__MONOTONIC_TIMESTAMP=" USEC_FMT "\n"
+                "__SEQNUM=%" PRIu64 "\n"
+                "__SEQNUM_ID=%s\n"
                 "_BOOT_ID=%s\n",
                 cursor,
                 realtime,
                 monotonic,
+                seqnum,
+                SD_ID128_TO_STRING(seqnum_id),
                 SD_ID128_TO_STRING(journal_boot_id));
 
         JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
@@ -1035,26 +1044,27 @@ static int output_json(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
-        char usecbuf[DECIMAL_STR_MAX(usec_t)];
+        char usecbuf[CONST_MAX(DECIMAL_STR_MAX(usec_t), DECIMAL_STR_MAX(uint64_t))];
         _cleanup_(json_variant_unrefp) JsonVariant *object = NULL;
+        sd_id128_t journal_boot_id, seqnum_id;
         _cleanup_free_ char *cursor = NULL;
+        usec_t realtime, monotonic;
         JsonVariant **array = NULL;
         struct json_data *d;
         Hashmap *h = NULL;
+        uint64_t seqnum;
         size_t n = 0;
-        usec_t realtime, monotonic;
-        sd_id128_t journal_boot_id;
         int r;
 
         assert(j);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         (void) sd_journal_set_data_threshold(j, flags & OUTPUT_SHOW_ALL ? 0 : JSON_THRESHOLD);
@@ -1071,6 +1081,10 @@ static int output_json(
         if (r < 0)
                 return log_error_errno(r, "Failed to get monotonic timestamp: %m");
 
+        r = sd_journal_get_seqnum(j, &seqnum, &seqnum_id);
+        if (r < 0)
+                return log_error_errno(r, "Failed to get seqnum: %m");
+
         h = hashmap_new(&string_hash_ops);
         if (!h)
                 return log_oom();
@@ -1093,6 +1107,15 @@ static int output_json(
         if (r < 0)
                 goto finish;
 
+        xsprintf(usecbuf, USEC_FMT, seqnum);
+        r = update_json_data(h, flags, "__SEQNUM", usecbuf, SIZE_MAX);
+        if (r < 0)
+                goto finish;
+
+        r = update_json_data(h, flags, "__SEQNUM_ID", SD_ID128_TO_STRING(seqnum_id), SIZE_MAX);
+        if (r < 0)
+                goto finish;
+
         for (;;) {
                 const void *data;
                 size_t size;
@@ -1234,9 +1257,9 @@ static int output_cat(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
+                const dual_timestamp *previous_display_ts,
                 const sd_id128_t *previous_boot_id) {
 
         int r, prio = LOG_INFO;
@@ -1244,9 +1267,9 @@ static int output_cat(
 
         assert(j);
         assert(f);
-        assert(ts);
+        assert(display_ts);
         assert(boot_id);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         (void) sd_journal_set_data_threshold(j, 0);
@@ -1287,7 +1310,11 @@ static int output_cat(
         return 0;
 }
 
-static int get_dual_timestamp(sd_journal *j, dual_timestamp *ret_ts, sd_id128_t *ret_boot_id) {
+static int get_display_timestamp(
+                sd_journal *j,
+                dual_timestamp *ret_display_ts,
+                sd_id128_t *ret_boot_id) {
+
         const void *data;
         _cleanup_free_ char *realtime = NULL, *monotonic = NULL;
         size_t length = 0, realtime_len = 0, monotonic_len = 0;
@@ -1299,7 +1326,7 @@ static int get_dual_timestamp(sd_journal *j, dual_timestamp *ret_ts, sd_id128_t
         bool realtime_good = false, monotonic_good = false, boot_id_good = false;
 
         assert(j);
-        assert(ret_ts);
+        assert(ret_display_ts);
         assert(ret_boot_id);
 
         JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
@@ -1314,18 +1341,18 @@ static int get_dual_timestamp(sd_journal *j, dual_timestamp *ret_ts, sd_id128_t
                 return r;
 
         if (realtime)
-                realtime_good = safe_atou64(realtime, &ret_ts->realtime) >= 0;
-        if (!realtime_good || !VALID_REALTIME(ret_ts->realtime))
-                realtime_good = sd_journal_get_realtime_usec(j, &ret_ts->realtime) >= 0;
+                realtime_good = safe_atou64(realtime, &ret_display_ts->realtime) >= 0;
+        if (!realtime_good || !VALID_REALTIME(ret_display_ts->realtime))
+                realtime_good = sd_journal_get_realtime_usec(j, &ret_display_ts->realtime) >= 0;
         if (!realtime_good)
-                ret_ts->realtime = USEC_INFINITY;
+                ret_display_ts->realtime = USEC_INFINITY;
 
         if (monotonic)
-                monotonic_good = safe_atou64(monotonic, &ret_ts->monotonic) >= 0;
-        if (!monotonic_good || !VALID_MONOTONIC(ret_ts->monotonic))
-                monotonic_good = boot_id_good = sd_journal_get_monotonic_usec(j, &ret_ts->monotonic, ret_boot_id) >= 0;
+                monotonic_good = safe_atou64(monotonic, &ret_display_ts->monotonic) >= 0;
+        if (!monotonic_good || !VALID_MONOTONIC(ret_display_ts->monotonic))
+                monotonic_good = boot_id_good = sd_journal_get_monotonic_usec(j, &ret_display_ts->monotonic, ret_boot_id) >= 0;
         if (!monotonic_good)
-                ret_ts->monotonic = USEC_INFINITY;
+                ret_display_ts->monotonic = USEC_INFINITY;
 
         if (!boot_id_good)
                 boot_id_good = sd_journal_get_monotonic_usec(j, NULL, ret_boot_id) >= 0;
@@ -1340,7 +1367,7 @@ static int get_dual_timestamp(sd_journal *j, dual_timestamp *ret_ts, sd_id128_t
         return 0;
 }
 
-static int (*output_funcs[_OUTPUT_MODE_MAX])(
+typedef int (*output_func_t)(
                 FILE *f,
                 sd_journal *j,
                 OutputMode mode,
@@ -1348,11 +1375,13 @@ static int (*output_funcs[_OUTPUT_MODE_MAX])(
                 OutputFlags flags,
                 const Set *output_fields,
                 const size_t highlight[2],
-                const dual_timestamp *ts,
+                const dual_timestamp *display_ts,
                 const sd_id128_t *boot_id,
-                const dual_timestamp *previous_ts,
-                const sd_id128_t *previous_boot_id) = {
+                const dual_timestamp *previous_display_ts,
+                const sd_id128_t *previous_boot_id);
+
 
+static output_func_t output_funcs[_OUTPUT_MODE_MAX] = {
         [OUTPUT_SHORT]             = output_short,
         [OUTPUT_SHORT_ISO]         = output_short,
         [OUTPUT_SHORT_ISO_PRECISE] = output_short,
@@ -1380,22 +1409,22 @@ int show_journal_entry(
                 Set *output_fields,
                 const size_t highlight[2],
                 bool *ellipsized,
-                dual_timestamp *previous_ts,
+                dual_timestamp *previous_display_ts,
                 sd_id128_t *previous_boot_id) {
 
-        dual_timestamp ts = DUAL_TIMESTAMP_NULL;
+        dual_timestamp display_ts = DUAL_TIMESTAMP_NULL;
         sd_id128_t boot_id = SD_ID128_NULL;
         int r;
 
         assert(mode >= 0);
         assert(mode < _OUTPUT_MODE_MAX);
-        assert(previous_ts);
+        assert(previous_display_ts);
         assert(previous_boot_id);
 
         if (n_columns <= 0)
                 n_columns = columns();
 
-        r = get_dual_timestamp(j, &ts, &boot_id);
+        r = get_display_timestamp(j, &display_ts, &boot_id);
         if (r == -EBADMSG) {
                 log_debug_errno(r, "Skipping message we can't read: %m");
                 return 0;
@@ -1403,10 +1432,21 @@ int show_journal_entry(
         if (r < 0)
                 return log_error_errno(r, "Failed to get journal fields: %m");
 
-        r = output_funcs[mode](f, j, mode, n_columns, flags, output_fields, highlight, &ts, &boot_id, previous_ts, previous_boot_id);
+        r = output_funcs[mode](
+                        f,
+                        j,
+                        mode,
+                        n_columns,
+                        flags,
+                        output_fields,
+                        highlight,
+                        &display_ts,
+                        &boot_id,
+                        previous_display_ts,
+                        previous_boot_id);
 
         /* Store timestamp and boot ID for next iteration */
-        *previous_ts = ts;
+        *previous_display_ts = display_ts;
         *previous_boot_id = boot_id;
 
         if (ellipsized && r > 0)
@@ -1444,7 +1484,7 @@ int show_journal(
         unsigned line = 0;
         bool need_seek = false;
         int warn_cutoff = flags & OUTPUT_WARN_CUTOFF;
-        dual_timestamp previous_ts = DUAL_TIMESTAMP_NULL;
+        dual_timestamp previous_display_ts = DUAL_TIMESTAMP_NULL;
         sd_id128_t previous_boot_id = SD_ID128_NULL;
 
         assert(j);
@@ -1494,8 +1534,17 @@ int show_journal(
                 line++;
                 maybe_print_begin_newline(f, &flags);
 
-                r = show_journal_entry(f, j, mode, n_columns, flags, NULL, NULL, ellipsized,
-                                       &previous_ts, &previous_boot_id);
+                r = show_journal_entry(
+                                f,
+                                j,
+                                mode,
+                                n_columns,
+                                flags,
+                                /* output_fields= */ NULL,
+                                /* highlight= */ NULL,
+                                ellipsized,
+                                &previous_display_ts,
+                                &previous_boot_id);
                 if (r < 0)
                         return r;
         }
index a15bda688616933a37b39792164b3e8cb1d1deb2..df06b1c0f7c11969f58ce3f3fea3028e163943fa 100644 (file)
@@ -21,7 +21,7 @@ int show_journal_entry(
                 Set *output_fields,
                 const size_t highlight[2],
                 bool *ellipsized,
-                dual_timestamp *previous_ts,
+                dual_timestamp *previous_display_ts,
                 sd_id128_t *previous_boot_id);
 int show_journal(
                 FILE *f,
index f1ee5282325079f276da74692e19fcb5635e5218..1303b6c71b3e0c11f8c9f41029c82280cafd9da9 100644 (file)
@@ -529,7 +529,7 @@ int mount_setup(bool loaded_policy, bool leave_propagation) {
 
                 after_relabel = now(CLOCK_MONOTONIC);
 
-                log_info("Relabelled /dev, /dev/shm, /run, /sys/fs/cgroup%s in %s.",
+                log_info("Relabeled /dev, /dev/shm, /run, /sys/fs/cgroup%s in %s.",
                          n_extra > 0 ? ", additional files" : "",
                          FORMAT_TIMESPAN(after_relabel - before_relabel, 0));
         }
index 6552e66bf4ec0599e4712baea6b426dc0f23a240..4345b951068b0f49900a2ca831cc423de79e35b4 100644 (file)
@@ -761,6 +761,7 @@ int tpm2_get_good_pcr_banks_strv(
                 uint32_t pcr_mask,
                 char ***ret) {
 
+#if HAVE_OPENSSL
         _cleanup_free_ TPMI_ALG_HASH *algs = NULL;
         _cleanup_strv_free_ char **l = NULL;
         int n_algs;
@@ -797,6 +798,9 @@ int tpm2_get_good_pcr_banks_strv(
 
         *ret = TAKE_PTR(l);
         return 0;
+#else /* HAVE_OPENSSL */
+        return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "OpenSSL support is disabled.");
+#endif
 }
 
 static void hash_pin(const char *pin, size_t len, TPM2B_AUTH *auth) {
@@ -1979,9 +1983,8 @@ int tpm2_extend_bytes(
                                 sym_Tss2_RC_Decode(rc));
 
         return 0;
-#else
-        return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
-                               "OpenSSL not supported on this build.");
+#else /* HAVE_OPENSSL */
+        return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "OpenSSL support is disabled.");
 #endif
 }
 #endif
@@ -2487,6 +2490,7 @@ int tpm2_util_pbkdf2_hmac_sha256(const void *pass,
          */
         static const uint8_t block_cnt[] = { 0, 0, 0, 1 };
 
+        assert (salt);
         assert (saltlen > 0);
         assert (saltlen <= (SIZE_MAX - sizeof(block_cnt)));
         assert (passlen > 0);
index aa55cc00ae453092db307d294554243b29382ab0..a77eff4407a49c7c12d316328d6d4749788619f3 100644 (file)
@@ -294,8 +294,8 @@ static int userdb_on_query_reply(
                 } membership_data = {};
 
                 static const JsonDispatch dispatch_table[] = {
-                        { "userName",  JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, user_name),  JSON_SAFE },
-                        { "groupName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, group_name), JSON_SAFE },
+                        { "userName",  JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, user_name),  JSON_RELAX },
+                        { "groupName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, group_name), JSON_RELAX },
                         {}
                 };
 
index 6161e134e182761e77c2b1add897fa48e08e8875..dd80d6f7c906742dac384d15afc437839fe4a0fa 100644 (file)
 #include "constants.h"
 #include "env-util.h"
 #include "log.h"
+#include "main-func.h"
 #include "process-util.h"
 #include "signal-util.h"
 #include "special.h"
+#include "unit-def.h"
 
 static int reload_manager(sd_bus *bus) {
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -41,6 +43,28 @@ static int reload_manager(sd_bus *bus) {
         return 0;
 }
 
+static int default_target_is_inactive(sd_bus *bus) {
+        _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+        _cleanup_free_ char *path = NULL, *state = NULL;
+        int r;
+
+        path = unit_dbus_path_from_name(SPECIAL_DEFAULT_TARGET);
+        if (!path)
+                return log_oom();
+
+        r = sd_bus_get_property_string(bus,
+                                       "org.freedesktop.systemd1",
+                                       path,
+                                       "org.freedesktop.systemd1.Unit",
+                                       "ActiveState",
+                                       &error,
+                                       &state);
+        if (r < 0)
+                return log_error_errno(r, "Failed to retrieve unit state: %s", bus_error_message(&error, r));
+
+        return streq_ptr(state, "inactive");
+}
+
 static int start_default_target(sd_bus *bus) {
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
         int r;
@@ -86,13 +110,12 @@ static void print_mode(const char* mode) {
         fflush(stdout);
 }
 
-int main(int argc, char *argv[]) {
+static int run(int argc, char *argv[]) {
         const char* sulogin_cmdline[] = {
                 SULOGIN,
                 NULL,             /* --force */
                 NULL
         };
-        _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
         int r;
 
         log_setup();
@@ -103,17 +126,36 @@ int main(int argc, char *argv[]) {
                 /* allows passwordless logins if root account is locked. */
                 sulogin_cmdline[1] = "--force";
 
-        (void) fork_wait(sulogin_cmdline);
+        for (;;) {
+                _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
 
-        r = bus_connect_system_systemd(&bus);
-        if (r < 0) {
-                log_warning_errno(r, "Failed to get D-Bus connection: %m");
-                r = 0;
-        } else {
-                (void) reload_manager(bus);
+                (void) fork_wait(sulogin_cmdline);
 
-                r = start_default_target(bus);
+                r = bus_connect_system_systemd(&bus);
+                if (r < 0) {
+                        log_warning_errno(r, "Failed to get D-Bus connection: %m");
+                        goto fallback;
+                }
+
+                if (reload_manager(bus) < 0)
+                        goto fallback;
+
+                r = default_target_is_inactive(bus);
+                if (r < 0)
+                        goto fallback;
+                if (!r) {
+                        log_warning(SPECIAL_DEFAULT_TARGET" is not inactive. Please review the "SPECIAL_DEFAULT_TARGET" setting.\n");
+                        goto fallback;
+                }
+
+                if (start_default_target(bus) >= 0)
+                        break;
+
+        fallback:
+                log_warning("Fallback to the single-user shell.\n");
         }
 
-        return r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+        return 0;
 }
+
+DEFINE_MAIN_FUNCTION(run);
index b3ae8bbcc29f3a3ca2b9f7caf2c2ccb07b975b53..c4c6096dc3d68adbd9e3a90e2d569b31ee1ab7dd 100644 (file)
@@ -8,7 +8,7 @@
 
 int verb_kill(int argc, char *argv[], void *userdata) {
         _cleanup_strv_free_ char **names = NULL;
-        char *kill_whom = NULL;
+        const char *kill_whom;
         sd_bus *bus;
         int r, q;
 
@@ -18,12 +18,11 @@ int verb_kill(int argc, char *argv[], void *userdata) {
 
         polkit_agent_open_maybe();
 
-        if (!arg_kill_whom)
-                arg_kill_whom = "all";
+        kill_whom = arg_kill_whom ?: "all";
 
         /* --fail was specified */
         if (streq(arg_job_mode(), "fail"))
-                kill_whom = strjoina(arg_kill_whom, "-fail");
+                kill_whom = strjoina(kill_whom, "-fail");
 
         r = expand_unit_names(bus, strv_skip(argv, 1), NULL, &names, NULL);
         if (r < 0)
@@ -32,13 +31,22 @@ int verb_kill(int argc, char *argv[], void *userdata) {
         STRV_FOREACH(name, names) {
                 _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
 
-                q = bus_call_method(
-                                bus,
-                                bus_systemd_mgr,
-                                "KillUnit",
-                                &error,
-                                NULL,
-                                "ssi", *name, kill_whom ?: arg_kill_whom, arg_signal);
+                if (arg_kill_value_set)
+                        q = bus_call_method(
+                                        bus,
+                                        bus_systemd_mgr,
+                                        "QueueSignalUnit",
+                                        &error,
+                                        NULL,
+                                        "ssii", *name, kill_whom, arg_signal, arg_kill_value);
+                else
+                        q = bus_call_method(
+                                        bus,
+                                        bus_systemd_mgr,
+                                        "KillUnit",
+                                        &error,
+                                        NULL,
+                                        "ssi", *name, kill_whom, arg_signal);
                 if (q < 0) {
                         log_error_errno(q, "Failed to kill unit %s: %s", *name, bus_error_message(&error, q));
                         if (r == 0)
index 281cf62b2043724eb2ed22d28fc93d718ff827cf..589c91a83b08fe4d6c7f25cc3cf99ebe305244f2 100644 (file)
@@ -249,10 +249,15 @@ typedef struct UnitStatusInfo {
         uint64_t memory_current;
         uint64_t memory_min;
         uint64_t memory_low;
+        uint64_t startup_memory_low;
         uint64_t memory_high;
+        uint64_t startup_memory_high;
         uint64_t memory_max;
+        uint64_t startup_memory_max;
         uint64_t memory_swap_max;
+        uint64_t startup_memory_swap_max;
         uint64_t memory_zswap_max;
+        uint64_t startup_memory_zswap_max;
         uint64_t memory_limit;
         uint64_t memory_available;
         uint64_t cpu_usage_nsec;
@@ -265,6 +270,7 @@ typedef struct UnitStatusInfo {
 
         uint64_t default_memory_min;
         uint64_t default_memory_low;
+        uint64_t default_startup_memory_low;
 
         LIST_HEAD(ExecStatusInfo, exec_status_info_list);
 } UnitStatusInfo;
@@ -700,10 +706,12 @@ static void print_status_info(
         if (i->memory_current != UINT64_MAX) {
                 printf("     Memory: %s", FORMAT_BYTES(i->memory_current));
 
-                if (i->memory_min > 0 || i->memory_low > 0 ||
-                    i->memory_high != CGROUP_LIMIT_MAX || i->memory_max != CGROUP_LIMIT_MAX ||
-                    i->memory_swap_max != CGROUP_LIMIT_MAX ||
-                    i->memory_zswap_max != CGROUP_LIMIT_MAX ||
+                if (i->memory_min > 0 ||
+                    i->memory_low > 0 || i->startup_memory_low > 0 ||
+                    i->memory_high != CGROUP_LIMIT_MAX || i->startup_memory_high != CGROUP_LIMIT_MAX ||
+                    i->memory_max != CGROUP_LIMIT_MAX || i->startup_memory_max != CGROUP_LIMIT_MAX ||
+                    i->memory_swap_max != CGROUP_LIMIT_MAX || i->startup_memory_swap_max != CGROUP_LIMIT_MAX ||
+                    i->memory_zswap_max != CGROUP_LIMIT_MAX || i->startup_memory_zswap_max != CGROUP_LIMIT_MAX ||
                     i->memory_available != CGROUP_LIMIT_MAX ||
                     i->memory_limit != CGROUP_LIMIT_MAX) {
                         const char *prefix = "";
@@ -717,22 +725,42 @@ static void print_status_info(
                                 printf("%slow: %s", prefix, FORMAT_BYTES_CGROUP_PROTECTION(i->memory_low));
                                 prefix = " ";
                         }
+                        if (i->startup_memory_low > 0) {
+                                printf("%slow (startup): %s", prefix, FORMAT_BYTES_CGROUP_PROTECTION(i->startup_memory_low));
+                                prefix = " ";
+                        }
                         if (i->memory_high != CGROUP_LIMIT_MAX) {
                                 printf("%shigh: %s", prefix, FORMAT_BYTES(i->memory_high));
                                 prefix = " ";
                         }
+                        if (i->startup_memory_high != CGROUP_LIMIT_MAX) {
+                                printf("%shigh (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_high));
+                                prefix = " ";
+                        }
                         if (i->memory_max != CGROUP_LIMIT_MAX) {
                                 printf("%smax: %s", prefix, FORMAT_BYTES(i->memory_max));
                                 prefix = " ";
                         }
+                        if (i->startup_memory_max != CGROUP_LIMIT_MAX) {
+                                printf("%smax (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_max));
+                                prefix = " ";
+                        }
                         if (i->memory_swap_max != CGROUP_LIMIT_MAX) {
                                 printf("%sswap max: %s", prefix, FORMAT_BYTES(i->memory_swap_max));
                                 prefix = " ";
                         }
+                        if (i->startup_memory_swap_max != CGROUP_LIMIT_MAX) {
+                                printf("%sswap max (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_swap_max));
+                                prefix = " ";
+                        }
                         if (i->memory_zswap_max != CGROUP_LIMIT_MAX) {
                                 printf("%szswap max: %s", prefix, FORMAT_BYTES(i->memory_zswap_max));
                                 prefix = " ";
                         }
+                        if (i->startup_memory_zswap_max != CGROUP_LIMIT_MAX) {
+                                printf("%szswap max (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_zswap_max));
+                                prefix = " ";
+                        }
                         if (i->memory_limit != CGROUP_LIMIT_MAX) {
                                 printf("%slimit: %s", prefix, FORMAT_BYTES(i->memory_limit));
                                 prefix = " ";
@@ -1988,12 +2016,18 @@ static int show_one(
                 { "MemoryAvailable",                "t",               NULL,           offsetof(UnitStatusInfo, memory_available)                  },
                 { "DefaultMemoryMin",               "t",               NULL,           offsetof(UnitStatusInfo, default_memory_min)                },
                 { "DefaultMemoryLow",               "t",               NULL,           offsetof(UnitStatusInfo, default_memory_low)                },
+                { "DefaultStartupMemoryLow",        "t",               NULL,           offsetof(UnitStatusInfo, default_startup_memory_low)        },
                 { "MemoryMin",                      "t",               NULL,           offsetof(UnitStatusInfo, memory_min)                        },
                 { "MemoryLow",                      "t",               NULL,           offsetof(UnitStatusInfo, memory_low)                        },
+                { "StartupMemoryLow",               "t",               NULL,           offsetof(UnitStatusInfo, startup_memory_low)                },
                 { "MemoryHigh",                     "t",               NULL,           offsetof(UnitStatusInfo, memory_high)                       },
+                { "StartupMemoryHigh",              "t",               NULL,           offsetof(UnitStatusInfo, startup_memory_high)               },
                 { "MemoryMax",                      "t",               NULL,           offsetof(UnitStatusInfo, memory_max)                        },
+                { "StartupMemoryMax",               "t",               NULL,           offsetof(UnitStatusInfo, startup_memory_max)                },
                 { "MemorySwapMax",                  "t",               NULL,           offsetof(UnitStatusInfo, memory_swap_max)                   },
+                { "StartupMemorySwapMax",           "t",               NULL,           offsetof(UnitStatusInfo, startup_memory_swap_max)           },
                 { "MemoryZSwapMax",                 "t",               NULL,           offsetof(UnitStatusInfo, memory_zswap_max)                  },
+                { "StartupMemoryZSwapMax",          "t",               NULL,           offsetof(UnitStatusInfo, startup_memory_zswap_max)          },
                 { "MemoryLimit",                    "t",               NULL,           offsetof(UnitStatusInfo, memory_limit)                      },
                 { "CPUUsageNSec",                   "t",               NULL,           offsetof(UnitStatusInfo, cpu_usage_nsec)                    },
                 { "TasksCurrent",                   "t",               NULL,           offsetof(UnitStatusInfo, tasks_current)                     },
index 4e7fd0460c78eebcc3e74354098be239469811b1..4732398dd79a13bc643238881452e65a50b38ddc 100644 (file)
@@ -97,6 +97,8 @@ UnitFilePresetMode arg_preset_mode = UNIT_FILE_PRESET_FULL;
 char **arg_wall = NULL;
 const char *arg_kill_whom = NULL;
 int arg_signal = SIGTERM;
+int arg_kill_value;
+bool arg_kill_value_set = false;
 char *arg_root = NULL;
 char *arg_image = NULL;
 usec_t arg_when = 0;
@@ -273,6 +275,7 @@ static int systemctl_help(void) {
                "                         sleeping, or hibernating\n"
                "  -i                     Shortcut for --check-inhibitors=no\n"
                "     --kill-whom=WHOM    Whom to send signal to\n"
+               "     --kill-value=INT    Signal value to enqueue\n"
                "  -s --signal=SIGNAL     Which signal to send\n"
                "     --what=RESOURCES    Which types of resources to remove\n"
                "     --now               Start or stop unit after enabling or disabling it\n"
@@ -419,6 +422,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
                 ARG_IMAGE,
                 ARG_NO_RELOAD,
                 ARG_KILL_WHOM,
+                ARG_KILL_VALUE,
                 ARG_NO_ASK_PASSWORD,
                 ARG_FAILED,
                 ARG_RUNTIME,
@@ -479,6 +483,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
                 { "force",               no_argument,       NULL, 'f'                     },
                 { "no-reload",           no_argument,       NULL, ARG_NO_RELOAD           },
                 { "kill-whom",           required_argument, NULL, ARG_KILL_WHOM           },
+                { "kill-value",          required_argument, NULL, ARG_KILL_VALUE          },
                 { "signal",              required_argument, NULL, 's'                     },
                 { "no-ask-password",     no_argument,       NULL, ARG_NO_ASK_PASSWORD     },
                 { "host",                required_argument, NULL, 'H'                     },
@@ -723,6 +728,30 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
                         arg_kill_whom = optarg;
                         break;
 
+                case ARG_KILL_VALUE: {
+                        unsigned u;
+
+                        if (isempty(optarg)) {
+                                arg_kill_value_set = false;
+                                return 0;
+                        }
+
+                        /* First, try to parse unsigned, so that we can support the prefixes 0x, 0o, 0b */
+                        r = safe_atou_full(optarg, 0, &u);
+                        if (r < 0)
+                                /* If this didn't work, try as signed integer, without those prefixes */
+                                r = safe_atoi(optarg, &arg_kill_value);
+                        else if (u > INT_MAX)
+                                r = -ERANGE;
+                        else
+                                arg_kill_value = (int) u;
+                        if (r < 0)
+                                return log_error_errno(r, "Unable to parse signal queue value: %s", optarg);
+
+                        arg_kill_value_set = true;
+                        break;
+                }
+
                 case 's':
                         r = parse_signal_argument(optarg, &arg_signal);
                         if (r <= 0)
index 9f9b8faa6963e36125a73f73f7729c378e12dafb..59da9e3ddbb6939d6837396580929d47da6d9a40 100644 (file)
@@ -77,6 +77,8 @@ extern UnitFilePresetMode arg_preset_mode;
 extern char **arg_wall;
 extern const char *arg_kill_whom;
 extern int arg_signal;
+extern int arg_kill_value;
+extern bool arg_kill_value_set;
 extern char *arg_root;
 extern usec_t arg_when;
 extern const char *arg_reboot_argument;
index 24638f1e0aba8bea1b7b5e1fc6e845c47cba7d50..24e67663b954296fda9e0cf9a7b8794c458bd02e 100644 (file)
@@ -99,6 +99,7 @@ int sd_journal_next_skip(sd_journal *j, uint64_t skip);
 
 int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
 int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
+int sd_journal_get_seqnum(sd_journal *j, uint64_t *ret_seqnum, sd_id128_t *ret_seqnum_id);
 
 int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
 int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
index 53e378eaab6552138839d3af67adc07038551934..c3e487696689ddb25840f9c791f8411e4b4ba844 100644 (file)
@@ -16,7 +16,7 @@ static int test_acpi_fpdt(void) {
 
         r = acpi_get_boot_usec(&loader_start, &loader_exit);
         if (r < 0) {
-                bool ok = IN_SET(r, -ENOENT, -ENODATA) || ERRNO_IS_PRIVILEGE(r);
+                bool ok = IN_SET(r, -ENOENT, -ENODATA, -ERANGE) || ERRNO_IS_PRIVILEGE(r);
 
                 log_full_errno(ok ? LOG_DEBUG : LOG_ERR, r, "Failed to read ACPI FPDT: %m");
                 return ok ? 0 : r;
index 0b286ed8e458a07fa7c4ad0d784b0cb1a3d23bde..cdf911926ca7792d6629cd99829ec6c98947e78b 100644 (file)
@@ -63,6 +63,33 @@ TEST(path_get_unit) {
         check_p_g_u("/user.slice/user-1000.slice/user@.service/server.service", -ENXIO, NULL);
 }
 
+static void check_p_g_u_p(const char *path, int code, const char *result) {
+        _cleanup_free_ char *unit_path = NULL;
+        int r;
+
+        r = cg_path_get_unit_path(path, &unit_path);
+        printf("%s: %s → %s %d expected %s %d\n", __func__, path, unit_path, r, strnull(result), code);
+        assert_se(r == code);
+        assert_se(streq_ptr(unit_path, result));
+}
+
+TEST(path_get_unit_path) {
+        check_p_g_u_p("/system.slice/foobar.service/sdfdsaf", 0, "/system.slice/foobar.service");
+        check_p_g_u_p("/system.slice/getty@tty5.service", 0, "/system.slice/getty@tty5.service");
+        check_p_g_u_p("/system.slice/getty@tty5.service/aaa/bbb", 0, "/system.slice/getty@tty5.service");
+        check_p_g_u_p("/system.slice/getty@tty5.service/", 0, "/system.slice/getty@tty5.service");
+        check_p_g_u_p("/system.slice/getty@tty6.service/tty5", 0, "/system.slice/getty@tty6.service");
+        check_p_g_u_p("sadfdsafsda", -ENXIO, NULL);
+        check_p_g_u_p("/system.slice/getty####@tty6.service/xxx", -ENXIO, NULL);
+        check_p_g_u_p("/system.slice/system-waldo.slice/foobar.service/sdfdsaf", 0, "/system.slice/system-waldo.slice/foobar.service");
+        check_p_g_u_p("/system.slice/system-waldo.slice/_cpu.service/sdfdsaf", 0, "/system.slice/system-waldo.slice/_cpu.service");
+        check_p_g_u_p("/system.slice/system-waldo.slice/_cpu.service", 0, "/system.slice/system-waldo.slice/_cpu.service");
+        check_p_g_u_p("/user.slice/user-1000.slice/user@1000.service/server.service", 0, "/user.slice/user-1000.slice/user@1000.service");
+        check_p_g_u_p("/user.slice/user-1000.slice/user@.service/server.service", -ENXIO, NULL);
+        check_p_g_u_p("/user.slice/_user-1000.slice/user@1000.service/foobar.slice/foobar@pie.service", 0, "/user.slice/_user-1000.slice/user@1000.service");
+        check_p_g_u_p("/_session-2.scope/_foobar@pie.service/pa/po", 0, "/_session-2.scope");
+}
+
 static void check_p_g_u_u(const char *path, int code, const char *result) {
         _cleanup_free_ char *unit = NULL;
         int r;
index de82020d5fe684105a35a5588ef4ddae5f3fe1cb..b1ab5bab188136f9efd14c535b6652b99f5b26d4 100644 (file)
@@ -38,7 +38,7 @@ static void test_xescape_full_one(bool eight_bits) {
                 if (i >= full_fit)
                         assert_se(streq(t, escaped));
                 else if (i >= 3) {
-                        /* We need up to four columns, so up to three three columns may be wasted */
+                        /* We need up to four columns, so up to three columns may be wasted */
                         assert_se(strlen(t) == i || strlen(t) == i - 1 || strlen(t) == i - 2 || strlen(t) == i - 3);
                         assert_se(strneq(t, escaped, i - 3) || strneq(t, escaped, i - 4) ||
                                   strneq(t, escaped, i - 5) || strneq(t, escaped, i - 6));
index 52a38f7c5298569f10c3e89f0eae2af33919e974..f6d05afc1bd7dae7cb4f53ffc64520a2599049b6 100644 (file)
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include <stdio.h>
+#include <sys/mount.h>
 #include <sys/prctl.h>
 #include <sys/types.h>
 
@@ -18,6 +19,7 @@
 #include "manager.h"
 #include "missing_prctl.h"
 #include "mkdir.h"
+#include "mount-util.h"
 #include "path-util.h"
 #include "process-util.h"
 #include "rm-rf.h"
@@ -34,6 +36,8 @@
 #include "user-util.h"
 #include "virt.h"
 
+#define PRIVATE_UNIT_DIR "/run/test-execute-unit-dir"
+
 static char *user_runtime_unit_dir = NULL;
 static bool can_unshare;
 
@@ -69,7 +73,7 @@ static void wait_for_service_finish(Manager *m, Unit *unit) {
                 n = now(CLOCK_MONOTONIC);
                 if (ts + timeout < n) {
                         log_error("Test timeout when testing %s", unit->id);
-                        r = unit_kill(unit, KILL_ALL, SIGKILL, NULL);
+                        r = unit_kill(unit, KILL_ALL, SIGKILL, SI_USER, 0, NULL);
                         if (r < 0)
                                 log_error_errno(r, "Failed to kill %s: %m", unit->id);
                         exit(EXIT_FAILURE);
@@ -261,6 +265,12 @@ static void test_exec_cpuaffinity(Manager *m) {
         test(m, "exec-cpuaffinity3.service", 0, CLD_EXITED);
 }
 
+static void test_exec_credentials(Manager *m) {
+        test(m, "exec-set-credential.service", 0, CLD_EXITED);
+        test(m, "exec-load-credential.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_CREDENTIALS, CLD_EXITED);
+        test(m, "exec-credentials-dir-specifier.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_CREDENTIALS, CLD_EXITED);
+}
+
 static void test_exec_workingdirectory(Manager *m) {
         assert_se(mkdir_p("/tmp/test-exec_workingdirectory", 0755) >= 0);
 
@@ -413,7 +423,7 @@ static void test_exec_privatedevices(Manager *m) {
         test(m, "exec-privatedevices-yes.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
         test(m, "exec-privatedevices-no.service", 0, CLD_EXITED);
         test(m, "exec-privatedevices-disabled-by-prefix.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
-        test(m, "exec-privatedevices-yes-with-group.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
+        test(m, "exec-privatedevices-yes-with-group.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_GROUP, CLD_EXITED);
 
         /* We use capsh to test if the capabilities are
          * properly set, so be sure that it exists */
@@ -424,9 +434,9 @@ static void test_exec_privatedevices(Manager *m) {
         }
 
         test(m, "exec-privatedevices-yes-capability-mknod.service", 0, CLD_EXITED);
-        test(m, "exec-privatedevices-no-capability-mknod.service", 0, CLD_EXITED);
+        test(m, "exec-privatedevices-no-capability-mknod.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
         test(m, "exec-privatedevices-yes-capability-sys-rawio.service", 0, CLD_EXITED);
-        test(m, "exec-privatedevices-no-capability-sys-rawio.service", 0, CLD_EXITED);
+        test(m, "exec-privatedevices-no-capability-sys-rawio.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
 }
 
 static void test_exec_protecthome(Manager *m) {
@@ -456,7 +466,7 @@ static void test_exec_protectkernelmodules(Manager *m) {
                 return;
         }
 
-        test(m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED);
+        test(m, "exec-protectkernelmodules-no-capabilities.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
         test(m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED);
         test(m, "exec-protectkernelmodules-yes-mount-propagation.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
 }
@@ -777,7 +787,7 @@ static void test_exec_systemcallfilter_system(Manager *m) {
                 return;
         }
 
-        test(m, "exec-systemcallfilter-system-user.service", 0, CLD_EXITED);
+        test(m, "exec-systemcallfilter-system-user.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 
         if (!check_nobody_user_and_group()) {
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
@@ -789,12 +799,12 @@ static void test_exec_systemcallfilter_system(Manager *m) {
                 return;
         }
 
-        test(m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
+        test(m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 #endif
 }
 
 static void test_exec_user(Manager *m) {
-        test(m, "exec-user.service", 0, CLD_EXITED);
+        test(m, "exec-user.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 
         if (!check_nobody_user_and_group()) {
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
@@ -806,11 +816,11 @@ static void test_exec_user(Manager *m) {
                 return;
         }
 
-        test(m, "exec-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
+        test(m, "exec-user-" NOBODY_USER_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 }
 
 static void test_exec_group(Manager *m) {
-        test(m, "exec-group.service", 0, CLD_EXITED);
+        test(m, "exec-group.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 
         if (!check_nobody_user_and_group()) {
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
@@ -822,16 +832,17 @@ static void test_exec_group(Manager *m) {
                 return;
         }
 
-        test(m, "exec-group-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
+        test(m, "exec-group-" NOBODY_GROUP_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 }
 
 static void test_exec_supplementarygroups(Manager *m) {
-        test(m, "exec-supplementarygroups.service", 0, CLD_EXITED);
-        test(m, "exec-supplementarygroups-single-group.service", 0, CLD_EXITED);
-        test(m, "exec-supplementarygroups-single-group-user.service", 0, CLD_EXITED);
-        test(m, "exec-supplementarygroups-multiple-groups-default-group-user.service", 0, CLD_EXITED);
-        test(m, "exec-supplementarygroups-multiple-groups-withgid.service", 0, CLD_EXITED);
-        test(m, "exec-supplementarygroups-multiple-groups-withuid.service", 0, CLD_EXITED);
+        int status = MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP;
+        test(m, "exec-supplementarygroups.service", status, CLD_EXITED);
+        test(m, "exec-supplementarygroups-single-group.service", status, CLD_EXITED);
+        test(m, "exec-supplementarygroups-single-group-user.service", status, CLD_EXITED);
+        test(m, "exec-supplementarygroups-multiple-groups-default-group-user.service", status, CLD_EXITED);
+        test(m, "exec-supplementarygroups-multiple-groups-withgid.service", status, CLD_EXITED);
+        test(m, "exec-supplementarygroups-multiple-groups-withuid.service", status, CLD_EXITED);
 }
 
 static char* private_directory_bad(Manager *m) {
@@ -863,14 +874,16 @@ static void test_exec_dynamicuser(Manager *m) {
                 return;
         }
 
-        test(m, "exec-dynamicuser-fixeduser.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+        int status = can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NAMESPACE : EXIT_GROUP;
+
+        test(m, "exec-dynamicuser-fixeduser.service", status, CLD_EXITED);
         if (check_user_has_group_with_same_name("adm"))
-                test(m, "exec-dynamicuser-fixeduser-adm.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+                test(m, "exec-dynamicuser-fixeduser-adm.service", status, CLD_EXITED);
         if (check_user_has_group_with_same_name("games"))
-                test(m, "exec-dynamicuser-fixeduser-games.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
-        test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
-        test(m, "exec-dynamicuser-supplementarygroups.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
-        test(m, "exec-dynamicuser-statedir.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+                test(m, "exec-dynamicuser-fixeduser-games.service", status, CLD_EXITED);
+        test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", status, CLD_EXITED);
+        test(m, "exec-dynamicuser-supplementarygroups.service", status, CLD_EXITED);
+        test(m, "exec-dynamicuser-statedir.service", status, CLD_EXITED);
 
         (void) rm_rf("/var/lib/quux", REMOVE_ROOT|REMOVE_PHYSICAL);
         (void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
@@ -882,7 +895,7 @@ static void test_exec_dynamicuser(Manager *m) {
         (void) rm_rf("/var/lib/private/waldo", REMOVE_ROOT|REMOVE_PHYSICAL);
 
         test(m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
-        test(m, "exec-dynamicuser-statedir-migrate-step2.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+        test(m, "exec-dynamicuser-statedir-migrate-step2.service", status, CLD_EXITED);
         test(m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
 
         (void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
@@ -890,9 +903,9 @@ static void test_exec_dynamicuser(Manager *m) {
         (void) rm_rf("/var/lib/private/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
         (void) rm_rf("/var/lib/private/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL);
 
-        test(m, "exec-dynamicuser-runtimedirectory1.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
-        test(m, "exec-dynamicuser-runtimedirectory2.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
-        test(m, "exec-dynamicuser-runtimedirectory3.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+        test(m, "exec-dynamicuser-runtimedirectory1.service", status, CLD_EXITED);
+        test(m, "exec-dynamicuser-runtimedirectory2.service", status, CLD_EXITED);
+        test(m, "exec-dynamicuser-runtimedirectory3.service", status, CLD_EXITED);
 }
 
 static void test_exec_environment(Manager *m) {
@@ -958,9 +971,12 @@ static void test_exec_umask(Manager *m) {
 }
 
 static void test_exec_runtimedirectory(Manager *m) {
+        (void) rm_rf("/run/test-exec_runtimedirectory2", REMOVE_ROOT|REMOVE_PHYSICAL);
         test(m, "exec-runtimedirectory.service", 0, CLD_EXITED);
+        (void) rm_rf("/run/test-exec_runtimedirectory2", REMOVE_ROOT|REMOVE_PHYSICAL);
+
         test(m, "exec-runtimedirectory-mode.service", 0, CLD_EXITED);
-        test(m, "exec-runtimedirectory-owner.service", 0, CLD_EXITED);
+        test(m, "exec-runtimedirectory-owner.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 
         if (!check_nobody_user_and_group()) {
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
@@ -972,7 +988,7 @@ static void test_exec_runtimedirectory(Manager *m) {
                 return;
         }
 
-        test(m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
+        test(m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
 }
 
 static void test_exec_capabilityboundingset(Manager *m) {
@@ -1046,7 +1062,7 @@ static void test_exec_privatenetwork(Manager *m) {
                 return;
         }
 
-        test(m, "exec-privatenetwork-yes.service", can_unshare ? 0 : EXIT_NETWORK, CLD_EXITED);
+        test(m, "exec-privatenetwork-yes.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NETWORK : EXIT_FAILURE, CLD_EXITED);
 }
 
 static void test_exec_oomscoreadjust(Manager *m) {
@@ -1056,7 +1072,7 @@ static void test_exec_oomscoreadjust(Manager *m) {
                 log_notice("Testing in container, skipping remaining tests in %s", __func__);
                 return;
         }
-        test(m, "exec-oomscoreadjust-negative.service", 0, CLD_EXITED);
+        test(m, "exec-oomscoreadjust-negative.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
 }
 
 static void test_exec_ioschedulingclass(Manager *m) {
@@ -1068,7 +1084,7 @@ static void test_exec_ioschedulingclass(Manager *m) {
                 log_notice("Testing in container, skipping remaining tests in %s", __func__);
                 return;
         }
-        test(m, "exec-ioschedulingclass-realtime.service", 0, CLD_EXITED);
+        test(m, "exec-ioschedulingclass-realtime.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_IOPRIO, CLD_EXITED);
 }
 
 static void test_exec_unsetenvironment(Manager *m) {
@@ -1077,9 +1093,12 @@ static void test_exec_unsetenvironment(Manager *m) {
 
 static void test_exec_specifier(Manager *m) {
         test(m, "exec-specifier.service", 0, CLD_EXITED);
+        if (MANAGER_IS_SYSTEM(m))
+                test(m, "exec-specifier-system.service", 0, CLD_EXITED);
+        else
+                test(m, "exec-specifier-user.service", 0, CLD_EXITED);
         test(m, "exec-specifier@foo-bar.service", 0, CLD_EXITED);
         test(m, "exec-specifier-interpolation.service", 0, CLD_EXITED);
-        test(m, "exec-specifier-credentials-dir.service", 0, CLD_EXITED);
 }
 
 static void test_exec_standardinput(Manager *m) {
@@ -1112,7 +1131,7 @@ static void test_exec_umask_namespace(Manager *m) {
                 log_notice("Testing without inaccessible, skipping %s", __func__);
                 return;
         }
-        test(m, "exec-umask-namespace.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+        test(m, "exec-umask-namespace.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NAMESPACE : EXIT_GROUP, CLD_EXITED);
 }
 
 typedef struct test_entry {
@@ -1122,40 +1141,28 @@ typedef struct test_entry {
 
 #define entry(x) {x, #x}
 
-static int run_tests(LookupScope scope, const test_entry tests[], char **patterns) {
+static void run_tests(LookupScope scope, char **patterns) {
+        _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
+        _cleanup_free_ char *unit_paths = NULL;
         _cleanup_(manager_freep) Manager *m = NULL;
         int r;
 
-        assert_se(tests);
-
-        r = manager_new(scope, MANAGER_TEST_RUN_BASIC, &m);
-        m->default_std_output = EXEC_OUTPUT_NULL; /* don't rely on host journald */
-        if (manager_errno_skip_test(r))
-                return log_tests_skipped_errno(r, "manager_new");
-        assert_se(r >= 0);
-        assert_se(manager_startup(m, NULL, NULL, NULL) >= 0);
-
-        for (const test_entry *test = tests; test->f; test++)
-                if (strv_fnmatch_or_empty(patterns, test->name, FNM_NOESCAPE))
-                        test->f(m);
-                else
-                        log_info("Skipping %s because it does not match any pattern.", test->name);
-
-        return 0;
-}
-
-int main(int argc, char *argv[]) {
-        _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
-
-        static const test_entry user_tests[] = {
+        static const test_entry tests[] = {
                 entry(test_exec_basic),
                 entry(test_exec_ambientcapabilities),
                 entry(test_exec_bindpaths),
                 entry(test_exec_capabilityboundingset),
                 entry(test_exec_condition),
                 entry(test_exec_cpuaffinity),
+                entry(test_exec_credentials),
+                entry(test_exec_dynamicuser),
                 entry(test_exec_environment),
                 entry(test_exec_environmentfile),
+                entry(test_exec_execsearchpath),
+                entry(test_exec_execsearchpath_environment),
+                entry(test_exec_execsearchpath_environment_files),
+                entry(test_exec_execsearchpath_passenvironment),
+                entry(test_exec_execsearchpath_specifier),
                 entry(test_exec_group),
                 entry(test_exec_ignoresigpipe),
                 entry(test_exec_inaccessiblepaths),
@@ -1174,6 +1181,7 @@ int main(int argc, char *argv[]) {
                 entry(test_exec_readwritepaths),
                 entry(test_exec_restrictnamespaces),
                 entry(test_exec_runtimedirectory),
+                entry(test_exec_specifier),
                 entry(test_exec_standardinput),
                 entry(test_exec_standardoutput),
                 entry(test_exec_standardoutput_append),
@@ -1181,35 +1189,15 @@ int main(int argc, char *argv[]) {
                 entry(test_exec_supplementarygroups),
                 entry(test_exec_systemcallerrornumber),
                 entry(test_exec_systemcallfilter),
+                entry(test_exec_systemcallfilter_system),
                 entry(test_exec_temporaryfilesystem),
                 entry(test_exec_umask),
+                entry(test_exec_umask_namespace),
                 entry(test_exec_unsetenvironment),
                 entry(test_exec_user),
                 entry(test_exec_workingdirectory),
-                entry(test_exec_execsearchpath),
-                entry(test_exec_execsearchpath_environment),
-                entry(test_exec_execsearchpath_environment_files),
-                entry(test_exec_execsearchpath_passenvironment),
-                {},
-        };
-        static const test_entry system_tests[] = {
-                entry(test_exec_dynamicuser),
-                entry(test_exec_specifier),
-                entry(test_exec_execsearchpath_specifier),
-                entry(test_exec_systemcallfilter_system),
-                entry(test_exec_umask_namespace),
                 {},
         };
-        int r;
-
-        test_setup_logging(LOG_DEBUG);
-
-#if HAS_FEATURE_ADDRESS_SANITIZER
-        if (strstr_ptr(ci_environment(), "travis") || strstr_ptr(ci_environment(), "github-actions")) {
-                log_notice("Running on Travis CI/GH Actions under ASan, skipping, see https://github.com/systemd/systemd/issues/10696");
-                return EXIT_TEST_SKIP;
-        }
-#endif
 
         assert_se(unsetenv("USER") == 0);
         assert_se(unsetenv("LOGNAME") == 0);
@@ -1217,68 +1205,187 @@ int main(int argc, char *argv[]) {
         assert_se(unsetenv("HOME") == 0);
         assert_se(unsetenv("TMPDIR") == 0);
 
-        can_unshare = have_namespaces();
-
-        /* It is needed otherwise cgroup creation fails */
-        if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0)
-                return log_tests_skipped("not privileged");
-
-        r = enter_cgroup_subroot(NULL);
-        if (r == -ENOMEDIUM)
-                return log_tests_skipped("cgroupfs not available");
-
-        if (path_is_read_only_fs("/sys") > 0)
-                return log_tests_skipped("/sys is mounted read-only");
+        /* Unset VARx, especially, VAR1, VAR2 and VAR3, which are used in the PassEnvironment test cases,
+         * otherwise (and if they are present in the environment), `manager_default_environment` will copy
+         * them into the default environment which is passed to each created job, which will make the tests
+         * that expect those not to be present to fail. */
+        assert_se(unsetenv("VAR1") == 0);
+        assert_se(unsetenv("VAR2") == 0);
+        assert_se(unsetenv("VAR3") == 0);
+        assert_se(unsetenv("VAR4") == 0);
+        assert_se(unsetenv("VAR5") == 0);
 
-        _cleanup_free_ char *unit_dir = NULL, *unit_paths = NULL;
-        assert_se(get_testdata_dir("test-execute/", &unit_dir) >= 0);
         assert_se(runtime_dir = setup_fake_runtime_dir());
         assert_se(user_runtime_unit_dir = path_join(runtime_dir, "systemd/user"));
-        assert_se(unit_paths = strjoin(unit_dir, ":", user_runtime_unit_dir));
+        assert_se(unit_paths = strjoin(PRIVATE_UNIT_DIR, ":", user_runtime_unit_dir));
         assert_se(set_unit_path(unit_paths) >= 0);
 
-        /* Unset VAR1, VAR2 and VAR3 which are used in the PassEnvironment test
-         * cases, otherwise (and if they are present in the environment),
-         * `manager_default_environment` will copy them into the default
-         * environment which is passed to each created job, which will make the
-         * tests that expect those not to be present to fail.
-         */
-        assert_se(unsetenv("VAR1") == 0);
-        assert_se(unsetenv("VAR2") == 0);
-        assert_se(unsetenv("VAR3") == 0);
+        r = manager_new(scope, MANAGER_TEST_RUN_BASIC, &m);
+        if (manager_errno_skip_test(r))
+                return (void) log_tests_skipped_errno(r, "manager_new");
+        assert_se(r >= 0);
+
+        m->default_std_output = EXEC_OUTPUT_NULL; /* don't rely on host journald */
+        assert_se(manager_startup(m, NULL, NULL, NULL) >= 0);
+
+        /* Uncomment below if you want to make debugging logs stored to journal. */
+        //manager_override_log_target(m, LOG_TARGET_AUTO);
+        //manager_override_log_level(m, LOG_DEBUG);
+
+        for (const test_entry *test = tests; test->f; test++)
+                if (strv_fnmatch_or_empty(patterns, test->name, FNM_NOESCAPE))
+                        test->f(m);
+                else
+                        log_info("Skipping %s because it does not match any pattern.", test->name);
+}
+
+static int prepare_ns(const char *process_name) {
+        int r;
+
+        r = safe_fork(process_name,
+                      FORK_RESET_SIGNALS |
+                      FORK_CLOSE_ALL_FDS |
+                      FORK_DEATHSIG |
+                      FORK_WAIT |
+                      FORK_REOPEN_LOG |
+                      FORK_LOG |
+                      FORK_NEW_MOUNTNS |
+                      FORK_MOUNTNS_SLAVE,
+                      NULL);
+        assert_se(r >= 0);
+        if (r == 0) {
+                _cleanup_free_ char *unit_dir = NULL;
 
-        r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1);
-        if (r != 0)
-                return r;
+                /* Make "/" read-only. */
+                assert_se(mount_nofollow_verbose(LOG_DEBUG, NULL, "/", NULL, MS_BIND|MS_REMOUNT, NULL) >= 0);
 
-        r = run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1);
-        if (r != 0)
-                return r;
+                /* Creating a new user namespace in the above means all MS_SHARED mounts become MS_SLAVE.
+                 * Let's put them back to MS_SHARED here, since that's what we want as defaults. (This will
+                 * not reconnect propagation, but simply create new peer groups for all our mounts). */
+                assert_se(mount_follow_verbose(LOG_DEBUG, NULL, "/", NULL, MS_SHARED|MS_REC, NULL) >= 0);
+
+                assert_se(mkdir_p(PRIVATE_UNIT_DIR, 0755) >= 0);
+
+                /* Mount tmpfs on the following directories to make not StateDirectory= or friends disturb the host. */
+                FOREACH_STRING(p, "/dev/shm", "/root", "/tmp", "/var/tmp", "/var/lib", PRIVATE_UNIT_DIR)
+                        assert_se(mount_nofollow_verbose(LOG_DEBUG, "tmpfs", p, "tmpfs", MS_NOSUID|MS_NODEV, NULL) >= 0);
+
+                /* Copy unit files to make them accessible even when unprivileged. */
+                assert_se(get_testdata_dir("test-execute/", &unit_dir) >= 0);
+                assert_se(copy_directory(unit_dir, PRIVATE_UNIT_DIR, COPY_MERGE_EMPTY) >= 0);
+
+                /* Prepare credstore like tmpfiles.d/credstore.conf for LoadCredential= tests. */
+                FOREACH_STRING(p, "/run/credstore", "/run/credstore.encrypted") {
+                        assert_se(mkdir_p(p, 0) >= 0);
+                        assert_se(mount_nofollow_verbose(LOG_DEBUG, "tmpfs", p, "tmpfs", MS_NOSUID|MS_NODEV, "mode=0000") >= 0);
+                }
+
+                assert_se(write_string_file("/run/credstore/test-execute.load-credential", "foo", WRITE_STRING_FILE_CREATE) >= 0);
+        }
+
+        return r;
+}
+
+TEST(run_tests_root) {
+        _cleanup_strv_free_ char **filters = NULL;
+
+        if (!have_namespaces())
+                return (void) log_tests_skipped("unshare() is disabled");
+
+        /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+        assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
+
+        if (prepare_ns("(test-execute-root)") == 0) {
+                can_unshare = true;
+                run_tests(LOOKUP_SCOPE_SYSTEM, filters);
+                _exit(EXIT_SUCCESS);
+        }
+}
+
+TEST(run_tests_without_unshare) {
+        if (!have_namespaces()) {
+                /* unshare() is already filtered. */
+                can_unshare = false;
+                run_tests(LOOKUP_SCOPE_SYSTEM, strv_skip(saved_argv, 1));
+                return;
+        }
 
 #if HAVE_SECCOMP
+        _cleanup_strv_free_ char **filters = NULL;
+        int r;
+
         /* The following tests are for 1beab8b0d0ff2d7d1436b52d4a0c3d56dc908962. */
-        if (!is_seccomp_available()) {
-                log_notice("Seccomp not available, skipping unshare() filtered tests.");
-                return 0;
-        }
+        if (!is_seccomp_available())
+                return (void) log_tests_skipped("Seccomp not available, cannot run unshare() filtered tests");
+
+        /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+        assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
 
-        _cleanup_hashmap_free_ Hashmap *s = NULL;
-        assert_se(s = hashmap_new(NULL));
-        r = seccomp_syscall_resolve_name("unshare");
-        assert_se(r != __NR_SCMP_ERROR);
-        assert_se(hashmap_put(s, UINT32_TO_PTR(r + 1), INT_TO_PTR(-1)) >= 0);
-        assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EOPNOTSUPP), true) >= 0);
-        assert_se(unshare(CLONE_NEWNS) < 0);
-        assert_se(errno == EOPNOTSUPP);
+        if (prepare_ns("(test-execute-without-unshare)") == 0) {
+                _cleanup_hashmap_free_ Hashmap *s = NULL;
 
-        can_unshare = false;
+                r = seccomp_syscall_resolve_name("unshare");
+                assert_se(r != __NR_SCMP_ERROR);
+                assert_se(hashmap_ensure_put(&s, NULL, UINT32_TO_PTR(r + 1), INT_TO_PTR(-1)) >= 0);
+                assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EOPNOTSUPP), true) >= 0);
 
-        r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1);
-        if (r != 0)
-                return r;
+                /* Check unshare() is actually filtered. */
+                assert_se(unshare(CLONE_NEWNS) < 0);
+                assert_se(errno == EOPNOTSUPP);
 
-        return run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1);
+                can_unshare = false;
+                run_tests(LOOKUP_SCOPE_SYSTEM, filters);
+                _exit(EXIT_SUCCESS);
+        }
 #else
-        return 0;
+        log_tests_skipped("Built without seccomp support, cannot run unshare() filtered tests");
+#endif
+}
+
+TEST(run_tests_unprivileged) {
+        _cleanup_strv_free_ char **filters = NULL;
+
+        if (!have_namespaces())
+                return (void) log_tests_skipped("unshare() is disabled");
+
+        /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+        assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
+
+        if (prepare_ns("(test-execute-unprivileged)") == 0) {
+                assert_se(capability_bounding_set_drop(0, /* right_now = */ true) >= 0);
+
+                can_unshare = false;
+                run_tests(LOOKUP_SCOPE_USER, filters);
+                _exit(EXIT_SUCCESS);
+        }
+}
+
+static int intro(void) {
+#if HAS_FEATURE_ADDRESS_SANITIZER
+        if (strstr_ptr(ci_environment(), "travis") || strstr_ptr(ci_environment(), "github-actions"))
+                return log_tests_skipped("Running on Travis CI/GH Actions under ASan, see https://github.com/systemd/systemd/issues/10696");
 #endif
+        /* It is needed otherwise cgroup creation fails */
+        if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0)
+                return log_tests_skipped("not privileged");
+
+        if (enter_cgroup_subroot(NULL) == -ENOMEDIUM)
+                return log_tests_skipped("cgroupfs not available");
+
+        if (path_is_read_only_fs("/sys") > 0)
+                return log_tests_skipped("/sys is mounted read-only");
+
+        /* Create dummy network interface for testing PrivateNetwork=yes */
+        (void) system("ip link add dummy-test-exec type dummy");
+
+        return EXIT_SUCCESS;
 }
+
+static int outro(void) {
+        (void) system("ip link del dummy-test-exec");
+        (void) rmdir(PRIVATE_UNIT_DIR);
+
+        return EXIT_SUCCESS;
+}
+
+DEFINE_TEST_MAIN_FULL(LOG_DEBUG, intro, outro);
index 388d0fe3f7ef7c120289e8c4c02ed80432ef716e..c83e8fc6300cce311b873b2664f615e25c1efc94 100644 (file)
@@ -480,6 +480,14 @@ TEST(safe_atou16) {
         assert_se(r == 0);
         assert_se(l == 12345);
 
+        r = safe_atou16("+12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 12345);
+
+        r = safe_atou16("  +12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 12345);
+
         r = safe_atou16("123456", &l);
         assert_se(r == -ERANGE);
 
@@ -514,6 +522,14 @@ TEST(safe_atoi16) {
         assert_se(r == 0);
         assert_se(l == -12345);
 
+        r = safe_atoi16("+12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 12345);
+
+        r = safe_atoi16("  +12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 12345);
+
         r = safe_atoi16("32767", &l);
         assert_se(r == 0);
         assert_se(l == 32767);
@@ -703,6 +719,22 @@ TEST(safe_atoux64) {
         assert_se(r == 0);
         assert_se(l == 11603985);
 
+        r = safe_atoux64("+12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 0x12345);
+
+        r = safe_atoux64("  +12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 0x12345);
+
+        r = safe_atoux64("+0x12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 0x12345);
+
+        r = safe_atoux64("+0b11011", &l);
+        assert_se(r == 0);
+        assert_se(l == 11603985);
+
         r = safe_atoux64("0o11011", &l);
         assert_se(r == -EINVAL);
 
index 5c03eaa960b54c8df9330544a898d03ae474134c..0f08dd4615b3c0a497a84e38c95457afc87c7a8c 100644 (file)
@@ -954,4 +954,44 @@ TEST(strv_extend_join) {
         assert_se(streq(v[1], "ABC=QER"));
 }
 
+TEST(strv_copy_n) {
+        char **x = STRV_MAKE("a", "b", "c", "d", "e");
+        _cleanup_strv_free_ char **l = NULL;
+
+        l = strv_copy_n(x, 0);
+        assert_se(strv_equal(l, NULL));
+        strv_free(l);
+
+        l = strv_copy_n(x, 0);
+        assert_se(strv_equal(l, (char**) { NULL }));
+        strv_free(l);
+
+        l = strv_copy_n(x, 1);
+        assert_se(strv_equal(l, STRV_MAKE("a")));
+        strv_free(l);
+
+        l = strv_copy_n(x, 2);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b")));
+        strv_free(l);
+
+        l = strv_copy_n(x, 3);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b", "c")));
+        strv_free(l);
+
+        l = strv_copy_n(x, 4);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d")));
+        strv_free(l);
+
+        l = strv_copy_n(x, 5);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+        strv_free(l);
+
+        l = strv_copy_n(x, 6);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+        strv_free(l);
+
+        l = strv_copy_n(x, SIZE_MAX);
+        assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+}
+
 DEFINE_TEST_MAIN(LOG_INFO);
index 04d23ef09b267f2fd76b4c9dec58009e2e9fcd47..85901c9a49b45ecae56cff62e7c3089f1be6e949 100644 (file)
 #include "fd-util.h"
 #include "fs-util.h"
 #include "macro.h"
+#include "rm-rf.h"
 #include "string-util.h"
 #include "tests.h"
 #include "tmpfile-util.h"
 #include "xattr-util.h"
 
 TEST(getxattr_at_malloc) {
-        char t[] = "/var/tmp/xattrtestXXXXXX";
+        _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
         _cleanup_free_ char *value = NULL;
         _cleanup_close_ int fd = -EBADF;
         const char *x;
         int r;
 
-        assert_se(mkdtemp(t));
+        fd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", O_RDONLY|O_NOCTTY, &t);
+        assert_se(fd >= 0);
         x = strjoina(t, "/test");
         assert_se(touch(x) >= 0);
 
         r = setxattr(x, "user.foo", "bar", 3, 0);
-        if (r < 0 && ERRNO_IS_NOT_SUPPORTED(errno)) /* no xattrs supported on /var/tmp... */
-                goto cleanup;
+        if (r < 0 && ERRNO_IS_NOT_SUPPORTED(errno))
+                return (void) log_tests_skipped_errno(errno, "no xattrs supported on /var/tmp");
         assert_se(r >= 0);
 
-        fd = open(t, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_NOCTTY);
-        assert_se(fd >= 0);
-
         assert_se(getxattr_at_malloc(fd, "test", "user.foo", 0, &value) == 3);
         assert_se(memcmp(value, "bar", 3) == 0);
         value = mfree(value);
@@ -53,21 +52,15 @@ TEST(getxattr_at_malloc) {
         assert_se(fd >= 0);
         assert_se(getxattr_at_malloc(fd, NULL, "user.foo", 0, &value) == 3);
         assert_se(streq(value, "bar"));
-
-cleanup:
-        assert_se(unlink(x) >= 0);
-        assert_se(rmdir(t) >= 0);
 }
 
 TEST(getcrtime) {
+        _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
         _cleanup_close_ int fd = -EBADF;
-        const char *vt;
         usec_t usec, k;
         int r;
 
-        assert_se(var_tmp_dir(&vt) >= 0);
-
-        fd = open_tmpfile_unlinkable(vt, O_RDWR);
+        fd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", 0, &t);
         assert_se(fd >= 0);
 
         r = fd_getcrtime(fd, &usec);
@@ -86,4 +79,51 @@ TEST(getcrtime) {
         }
 }
 
+static void verify_xattr(int dfd, const char *expected) {
+        _cleanup_free_ char *value = NULL;
+
+        assert_se(getxattr_at_malloc(dfd, "test", "user.foo", 0, &value) == (int) strlen(expected));
+        assert_se(streq(value, expected));
+}
+
+TEST(xsetxattr) {
+        _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
+        _cleanup_close_ int dfd = -EBADF, fd = -EBADF;
+        const char *x;
+        int r;
+
+        dfd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", O_PATH, &t);
+        assert_se(dfd >= 0);
+        x = strjoina(t, "/test");
+        assert_se(touch(x) >= 0);
+
+        /* by full path */
+        r = xsetxattr(AT_FDCWD, x, "user.foo", "fullpath", SIZE_MAX, 0);
+        if (r < 0 && ERRNO_IS_NOT_SUPPORTED(r))
+                return (void) log_tests_skipped_errno(r, "no xattrs supported on /var/tmp");
+        assert_se(r >= 0);
+        verify_xattr(dfd, "fullpath");
+
+        /* by dirfd */
+        assert_se(xsetxattr(dfd, "test", "user.foo", "dirfd", SIZE_MAX, 0) >= 0);
+        verify_xattr(dfd, "dirfd");
+
+        /* by fd (O_PATH) */
+        fd = openat(dfd, "test", O_PATH|O_CLOEXEC);
+        assert_se(fd >= 0);
+        assert_se(xsetxattr(fd, NULL, "user.foo", "fd_opath", SIZE_MAX, 0) >= 0);
+        verify_xattr(dfd, "fd_opath");
+        assert_se(xsetxattr(fd, "", "user.foo", "fd_opath", SIZE_MAX, 0) == -EINVAL);
+        assert_se(xsetxattr(fd, "", "user.foo", "fd_opath_empty", SIZE_MAX, AT_EMPTY_PATH) >= 0);
+        verify_xattr(dfd, "fd_opath_empty");
+        fd = safe_close(fd);
+
+        fd = openat(dfd, "test", O_RDONLY|O_CLOEXEC);
+        assert_se(xsetxattr(fd, NULL, "user.foo", "fd_regular", SIZE_MAX, 0) >= 0);
+        verify_xattr(dfd, "fd_regular");
+        assert_se(xsetxattr(fd, "", "user.foo", "fd_regular_empty", SIZE_MAX, 0) == -EINVAL);
+        assert_se(xsetxattr(fd, "", "user.foo", "fd_regular_empty", SIZE_MAX, AT_EMPTY_PATH) >= 0);
+        verify_xattr(dfd, "fd_regular_empty");
+}
+
 DEFINE_TEST_MAIN(LOG_DEBUG);
index 9efdb6000accc6383834f4eab2052f34a9d719df..0bea6f1c1686c575232b6328c5d55ff0b6ab6ebc 100644 (file)
@@ -548,7 +548,7 @@ static bool hw_addr_is_valid(Link *link, const struct hw_addr_data *hw_addr) {
                 return !ether_addr_is_null(&hw_addr->ether) && !ether_addr_is_broadcast(&hw_addr->ether);
 
         case ARPHRD_INFINIBAND:
-                /* The last 8 bytes cannot be zero*/
+                /* The last 8 bytes cannot be zero*/
                 assert(hw_addr->length == INFINIBAND_ALEN);
                 return !memeqzero(hw_addr->bytes + INFINIBAND_ALEN - 8, 8);
 
index 6d47a2a49de99fd044acce2f53439e716a809d8a..ec4ad30824def8c5755d1b92b4912789649d741a 100644 (file)
@@ -23,7 +23,6 @@
 #include "parse-util.h"
 #include "path-util.h"
 #include "process-util.h"
-#include "rlimit-util.h"
 #include "signal-util.h"
 #include "stdio-util.h"
 #include "string-util.h"
@@ -811,7 +810,7 @@ int udev_event_spawn(
 
         log_device_debug(event->dev, "Starting '%s'", cmd);
 
-        r = safe_fork("(spawn)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+        r = safe_fork("(spawn)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
         if (r < 0)
                 return log_device_error_errno(event->dev, r,
                                               "Failed to fork() to execute command '%s': %m", cmd);
@@ -820,7 +819,6 @@ int udev_event_spawn(
                         _exit(EXIT_FAILURE);
 
                 (void) close_all_fds(NULL, 0);
-                (void) rlimit_nofile_safe();
 
                 DEVICE_TRACE_POINT(spawn_exec, event->dev, cmd);
 
index 6fb0305e0934e90005850c4c6a99824b495f2d4c..c6d24d9c362dd6fcc4a37285f6c7d9b7ba8a317a 100644 (file)
@@ -807,7 +807,7 @@ static int worker_spawn(Manager *manager, Event *event) {
         if (r < 0)
                 return log_error_errno(r, "Worker: Failed to enable receiving of device: %m");
 
-        r = safe_fork(NULL, FORK_DEATHSIG, &pid);
+        r = safe_fork("(udev-worker)", FORK_DEATHSIG, &pid);
         if (r < 0) {
                 event->state = EVENT_QUEUED;
                 return log_error_errno(r, "Failed to fork() worker: %m");
index 5ac4f63fcc29bed1387c56cc13ae3bb4720db9b7..335de994d88ef6d8af9902aac64af857030cb65c 100755 (executable)
@@ -89,6 +89,13 @@ def round_up(x, blocksize=4096):
     return (x + blocksize - 1) // blocksize * blocksize
 
 
+def try_import(modname, name=None):
+    try:
+        return __import__(modname)
+    except ImportError as e:
+        raise ValueError(f'Kernel is compressed with {name or modname}, but module unavailable') from e
+
+
 def maybe_decompress(filename):
     """Decompress file if compressed. Return contents."""
     f = open(filename, 'rb')
@@ -100,20 +107,20 @@ def maybe_decompress(filename):
         return f.read()
 
     if start.startswith(b'\x1f\x8b'):
-        import gzip
+        gzip = try_import('gzip')
         return gzip.open(f).read()
 
     if start.startswith(b'\x28\xb5\x2f\xfd'):
-        import zstd
+        zstd = try_import('zstd')
         return zstd.uncompress(f.read())
 
     if start.startswith(b'\x02\x21\x4c\x18'):
-        import lz4.frame
+        lz4 = try_import('lz4.frame', 'lz4')
         return lz4.frame.decompress(f.read())
 
     if start.startswith(b'\x04\x22\x4d\x18'):
         print('Newer lz4 stream format detected! This may not boot!')
-        import lz4.frame
+        lz4 = try_import('lz4.frame', 'lz4')
         return lz4.frame.decompress(f.read())
 
     if start.startswith(b'\x89LZO'):
@@ -121,11 +128,11 @@ def maybe_decompress(filename):
         raise NotImplementedError('lzo decompression not implemented')
 
     if start.startswith(b'BZh'):
-        import bz2
+        bz2 = try_import('bz2', 'bzip2')
         return bz2.open(f).read()
 
     if start.startswith(b'\x5d\x00\x00'):
-        import lzma
+        lzma = try_import('lzma')
         return lzma.open(f).read()
 
     raise NotImplementedError(f'unknown file format (starts with {start})')
@@ -434,7 +441,8 @@ def join_initrds(initrds):
     seq = []
     for file in initrds:
         initrd = file.read_bytes()
-        padding = b'\0' * round_up(len(initrd), 4)  # pad to 32 bit alignment
+        n = len(initrd)
+        padding = b'\0' * (round_up(n, 4) - n)  # pad to 32 bit alignment
         seq += [initrd, padding]
 
     return b''.join(seq)
@@ -511,7 +519,7 @@ def make_uki(opts):
     uki = UKI(opts.stub)
     initrd = join_initrds(opts.initrd)
 
-    # TODO: derive public key from from opts.pcr_private_keys?
+    # TODO: derive public key from opts.pcr_private_keys?
     pcrpkey = opts.pcrpkey
     if pcrpkey is None:
         if opts.pcr_public_keys and len(opts.pcr_public_keys) == 1:
@@ -645,7 +653,7 @@ usage: ukify [options…] linux initrd…
 
     p.add_argument('--stub',
                    type=pathlib.Path,
-                   help='path the the sd-stub file [.text,.data,… sections]')
+                   help='path to the sd-stub file [.text,.data,… sections]')
 
     p.add_argument('--section',
                    dest='sections',
index 7d3e9db73f877eea70ccbb6136d00555c729e94a..9a09b0d5160a50aa915c694e60dd8a163f325a55 100644 (file)
@@ -415,9 +415,10 @@ static int verify_source_vc(char **ret_path, const char *src_vc) {
 int main(int argc, char **argv) {
         _cleanup_free_ char
                 *vc = NULL,
-                *vc_keymap = NULL, *vc_keymap_toggle = NULL,
+                *vc_keymap_alloc = NULL, *vc_keymap_toggle = NULL,
                 *vc_font = NULL, *vc_font_map = NULL, *vc_font_unimap = NULL;
         _cleanup_close_ int fd = -EBADF;
+        const char *vc_keymap;
         bool utf8, keyboard_ok;
         unsigned idx = 0;
         int r;
@@ -437,7 +438,7 @@ int main(int argc, char **argv) {
 
         /* Load data from credentials (lowest priority) */
         r = read_credential_strings_many(
-                        "vconsole.keymap", &vc_keymap,
+                        "vconsole.keymap", &vc_keymap_alloc,
                         "vconsole.keymap_toggle", &vc_keymap_toggle,
                         "vconsole.font", &vc_font,
                         "vconsole.font_map", &vc_font_map,
@@ -447,7 +448,7 @@ int main(int argc, char **argv) {
 
         /* Load data from configuration file (middle priority) */
         r = parse_env_file(NULL, "/etc/vconsole.conf",
-                           "KEYMAP", &vc_keymap,
+                           "KEYMAP", &vc_keymap_alloc,
                            "KEYMAP_TOGGLE", &vc_keymap_toggle,
                            "FONT", &vc_font,
                            "FONT_MAP", &vc_font_map,
@@ -458,7 +459,7 @@ int main(int argc, char **argv) {
         /* Let the kernel command line override /etc/vconsole.conf (highest priority) */
         r = proc_cmdline_get_key_many(
                         PROC_CMDLINE_STRIP_RD_PREFIX,
-                        "vconsole.keymap", &vc_keymap,
+                        "vconsole.keymap", &vc_keymap_alloc,
                         "vconsole.keymap_toggle", &vc_keymap_toggle,
                         "vconsole.font", &vc_font,
                         "vconsole.font_map", &vc_font_map,
@@ -470,6 +471,8 @@ int main(int argc, char **argv) {
         if (r < 0 && r != -ENOENT)
                 log_warning_errno(r, "Failed to read /proc/cmdline, ignoring: %m");
 
+        vc_keymap = isempty(vc_keymap_alloc) ? SYSTEMD_DEFAULT_KEYMAP : vc_keymap_alloc;
+
         (void) toggle_utf8_sysfs(utf8);
         (void) toggle_utf8_vc(vc, fd, utf8);
 
index 39d906ed5fdbe7cfe7be28921729425d0281a41e..0aec080a4cbb907cb05deced7266f7a32956cd4a 100644 (file)
@@ -6,6 +6,7 @@
 #  (at your option) any later version.
 
 # The superuser
+g root    0       -            -
 u root    0:0     "Super User" /root
 
 # The nobody user/group for NFS file systems
index 4032896061d8b00072a10c6427a3b17ed35738ac..c6dc92c050fd401d57a6ff592b76fe80165c7693 100755 (executable)
@@ -21,7 +21,8 @@ EOF
         mkdir -p "${initdir:?}/etc/systemd/system/init.scope.d/"
         cat >>"${initdir:?}/etc/systemd/system/init.scope.d/test-55-oomd.conf" <<EOF
 [Scope]
-MemoryHigh=10G
+MemoryHigh=infinity
+StartupMemoryHigh=10G
 EOF
     )
 }
diff --git a/test/TEST-78-SIGQUEUE/Makefile b/test/TEST-78-SIGQUEUE/Makefile
new file mode 120000 (symlink)
index 0000000..e9f93b1
--- /dev/null
@@ -0,0 +1 @@
+../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/TEST-78-SIGQUEUE/test.sh b/test/TEST-78-SIGQUEUE/test.sh
new file mode 100755 (executable)
index 0000000..61e8e7d
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -e
+
+TEST_DESCRIPTION="Test queue signal logic"
+
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
+
+do_test "$@"
index 1c79e4f72212e72d6748178d4219d51cea44b77f..2a5a1e1ff3caa99cbae6d3e75af1e79de714c9e6 100644 (file)
@@ -3,14 +3,14 @@
 Description=Test DynamicUser= migrate StateDirectory= (preparation)
 
 [Service]
-ExecStart=test -w /var/lib/test-dynamicuser-migrate
-ExecStart=test -w /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test ! -L /var/lib/test-dynamicuser-migrate
-ExecStart=test ! -L /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -d /var/lib/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=touch /var/lib/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -w %S/test-dynamicuser-migrate
+ExecStart=test -w %S/test-dynamicuser-migrate2/hoge
+ExecStart=test ! -L %S/test-dynamicuser-migrate
+ExecStart=test ! -L %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -d %S/test-dynamicuser-migrate
+ExecStart=test -d %S/test-dynamicuser-migrate2/hoge
+ExecStart=touch %S/test-dynamicuser-migrate/yay
+ExecStart=touch %S/test-dynamicuser-migrate2/hoge/yayyay
 ExecStart=/bin/sh -x -c 'test "$$STATE_DIRECTORY" = "%S/test-dynamicuser-migrate:%S/test-dynamicuser-migrate2/hoge"'
 
 Type=oneshot
index 015b74ce229b0daf72df839c80a1c0b0524b4271..e89f0c5aae1bc676df874233f8d3a9d0afd9e243 100644 (file)
@@ -3,22 +3,22 @@
 Description=Test DynamicUser= migrate StateDirectory=
 
 [Service]
-ExecStart=test -w /var/lib/test-dynamicuser-migrate
-ExecStart=test -w /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -L /var/lib/test-dynamicuser-migrate
-ExecStart=test -L /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -d /var/lib/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -f /var/lib/test-dynamicuser-migrate/yay
-ExecStart=test -f /var/lib/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=test -d /var/lib/private/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/private/test-dynamicuser-migrate2/hoge
-ExecStart=test -f /var/lib/private/test-dynamicuser-migrate/yay
-ExecStart=test -f /var/lib/private/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=touch /var/lib/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=touch /var/lib/private/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/private/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -w %S/test-dynamicuser-migrate
+ExecStart=test -w %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -L %S/test-dynamicuser-migrate
+ExecStart=test -L %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -d %S/test-dynamicuser-migrate
+ExecStart=test -d %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -f %S/test-dynamicuser-migrate/yay
+ExecStart=test -f %S/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -d %S/private/test-dynamicuser-migrate
+ExecStart=test -d %S/private/test-dynamicuser-migrate2/hoge
+ExecStart=test -f %S/private/test-dynamicuser-migrate/yay
+ExecStart=test -f %S/private/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=touch %S/test-dynamicuser-migrate/yay
+ExecStart=touch %S/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=touch %S/private/test-dynamicuser-migrate/yay
+ExecStart=touch %S/private/test-dynamicuser-migrate2/hoge/yayyay
 ExecStart=/bin/sh -x -c 'test "$$STATE_DIRECTORY" = "%S/test-dynamicuser-migrate:%S/test-dynamicuser-migrate2/hoge"'
 
 Type=oneshot
index b33b4da74af9f771601eabfebbb2a70af9799d8f..b7e36f529e6b9bab1bc0e8cca3c17d2309874f4c 100644 (file)
@@ -3,71 +3,71 @@
 Description=Test DynamicUser= with StateDirectory=
 
 [Service]
-ExecStart=test -w /var/lib/waldo
-ExecStart=test -w /var/lib/quux/pief
-ExecStart=test -w /var/lib/aaa
-ExecStart=test -w /var/lib/aaa/bbb
-ExecStart=test -w /var/lib/aaa/ccc
-ExecStart=test -w /var/lib/xxx
-ExecStart=test -w /var/lib/xxx/yyy
-ExecStart=test -w /var/lib/xxx/zzz
-ExecStart=test -w /var/lib/aaa/111
-ExecStart=test -w /var/lib/aaa/222
-ExecStart=test -w /var/lib/aaa/333
+ExecStart=test -w %S/waldo
+ExecStart=test -w %S/quux/pief
+ExecStart=test -w %S/aaa
+ExecStart=test -w %S/aaa/bbb
+ExecStart=test -w %S/aaa/ccc
+ExecStart=test -w %S/xxx
+ExecStart=test -w %S/xxx/yyy
+ExecStart=test -w %S/xxx/zzz
+ExecStart=test -w %S/aaa/111
+ExecStart=test -w %S/aaa/222
+ExecStart=test -w %S/aaa/333
 
-ExecStart=test -d /var/lib/waldo
-ExecStart=test -d /var/lib/quux/pief
-ExecStart=test -d /var/lib/aaa
-ExecStart=test -d /var/lib/aaa/bbb
-ExecStart=test -d /var/lib/aaa/ccc
-ExecStart=test -d /var/lib/xxx
-ExecStart=test -d /var/lib/xxx/yyy
-ExecStart=test -d /var/lib/xxx/zzz
-ExecStart=test -L /var/lib/aaa/111
-ExecStart=test -L /var/lib/aaa/222
-ExecStart=test -L /var/lib/aaa/333
+ExecStart=test -d %S/waldo
+ExecStart=test -d %S/quux/pief
+ExecStart=test -d %S/aaa
+ExecStart=test -d %S/aaa/bbb
+ExecStart=test -d %S/aaa/ccc
+ExecStart=test -d %S/xxx
+ExecStart=test -d %S/xxx/yyy
+ExecStart=test -d %S/xxx/zzz
+ExecStart=test -L %S/aaa/111
+ExecStart=test -L %S/aaa/222
+ExecStart=test -L %S/aaa/333
 
-ExecStart=touch /var/lib/waldo/hoge
-ExecStart=touch /var/lib/quux/pief/hoge
-ExecStart=touch /var/lib/aaa/hoge
-ExecStart=touch /var/lib/aaa/bbb/hoge
-ExecStart=touch /var/lib/aaa/ccc/hoge
-ExecStart=touch /var/lib/xxx/hoge
-ExecStart=touch /var/lib/xxx/yyy/hoge
-ExecStart=touch /var/lib/xxx/zzz/hoge
-ExecStart=touch /var/lib/aaa/111/foo
-ExecStart=touch /var/lib/aaa/222/foo
-ExecStart=touch /var/lib/aaa/333/foo
+ExecStart=touch %S/waldo/hoge
+ExecStart=touch %S/quux/pief/hoge
+ExecStart=touch %S/aaa/hoge
+ExecStart=touch %S/aaa/bbb/hoge
+ExecStart=touch %S/aaa/ccc/hoge
+ExecStart=touch %S/xxx/hoge
+ExecStart=touch %S/xxx/yyy/hoge
+ExecStart=touch %S/xxx/zzz/hoge
+ExecStart=touch %S/aaa/111/foo
+ExecStart=touch %S/aaa/222/foo
+ExecStart=touch %S/aaa/333/foo
 
-ExecStart=test -f /var/lib/waldo/hoge
-ExecStart=test -f /var/lib/quux/pief/hoge
-ExecStart=test -f /var/lib/aaa/hoge
-ExecStart=test -f /var/lib/aaa/bbb/hoge
-ExecStart=test -f /var/lib/aaa/ccc/hoge
-ExecStart=test -f /var/lib/xxx/hoge
-ExecStart=test -f /var/lib/xxx/yyy/hoge
-ExecStart=test -f /var/lib/xxx/zzz/hoge
-ExecStart=test -f /var/lib/aaa/111/foo
-ExecStart=test -f /var/lib/aaa/222/foo
-ExecStart=test -f /var/lib/aaa/333/foo
-ExecStart=test -f /var/lib/xxx/foo
-ExecStart=test -f /var/lib/xxx/yyy/foo
-ExecStart=test -f /var/lib/xxx/zzz/foo
+ExecStart=test -f %S/waldo/hoge
+ExecStart=test -f %S/quux/pief/hoge
+ExecStart=test -f %S/aaa/hoge
+ExecStart=test -f %S/aaa/bbb/hoge
+ExecStart=test -f %S/aaa/ccc/hoge
+ExecStart=test -f %S/xxx/hoge
+ExecStart=test -f %S/xxx/yyy/hoge
+ExecStart=test -f %S/xxx/zzz/hoge
+ExecStart=test -f %S/aaa/111/foo
+ExecStart=test -f %S/aaa/222/foo
+ExecStart=test -f %S/aaa/333/foo
+ExecStart=test -f %S/xxx/foo
+ExecStart=test -f %S/xxx/yyy/foo
+ExecStart=test -f %S/xxx/zzz/foo
 
-ExecStart=test -f /var/lib/private/waldo/hoge
-ExecStart=test -f /var/lib/private/quux/pief/hoge
-ExecStart=test -f /var/lib/private/aaa/hoge
-ExecStart=test -f /var/lib/private/aaa/bbb/hoge
-ExecStart=test -f /var/lib/private/aaa/ccc/hoge
-ExecStart=test -f /var/lib/private/xxx/hoge
-ExecStart=test -f /var/lib/private/xxx/yyy/hoge
-ExecStart=test -f /var/lib/private/xxx/zzz/hoge
-ExecStart=test -f /var/lib/private/aaa/111/foo
-ExecStart=test -f /var/lib/private/aaa/222/foo
-ExecStart=test -f /var/lib/private/aaa/333/foo
-ExecStart=test -f /var/lib/private/xxx/foo
-ExecStart=test -f /var/lib/private/xxx/yyy/foo
-ExecStart=test -f /var/lib/private/xxx/zzz/foo
+ExecStart=test -f %S/private/waldo/hoge
+ExecStart=test -f %S/private/quux/pief/hoge
+ExecStart=test -f %S/private/aaa/hoge
+ExecStart=test -f %S/private/aaa/bbb/hoge
+ExecStart=test -f %S/private/aaa/ccc/hoge
+ExecStart=test -f %S/private/xxx/hoge
+ExecStart=test -f %S/private/xxx/yyy/hoge
+ExecStart=test -f %S/private/xxx/zzz/hoge
+ExecStart=test -f %S/private/aaa/111/foo
+ExecStart=test -f %S/private/aaa/222/foo
+ExecStart=test -f %S/private/aaa/333/foo
+ExecStart=test -f %S/private/xxx/foo
+ExecStart=test -f %S/private/xxx/yyy/foo
+ExecStart=test -f %S/private/xxx/zzz/foo
 
 ExecStart=sh -x -c 'test "$$STATE_DIRECTORY" = "%S/aaa:%S/aaa/bbb:%S/aaa/ccc:%S/quux/pief:%S/waldo:%S/xxx:%S/xxx/yyy:%S/xxx/zzz"'
 
diff --git a/test/test-execute/exec-load-credential.service b/test/test-execute/exec-load-credential.service
new file mode 100644 (file)
index 0000000..b3e3650
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for LoadCredential=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(cat %d/test-execute.load-credential)" = "foo"'
+Type=oneshot
+LoadCredential=test-execute.load-credential
index 0fff048b94f704f1056742c8dee1c24d23f75e1b..360099d337b5e233e0729586e114a36b1130755e 100644 (file)
@@ -4,5 +4,6 @@ Description=Test for PrivateNetwork
 
 [Service]
 ExecStart=/bin/sh -x -c '! ip link | grep -E "^[0-9]+: " | grep -Ev ": (lo|(erspan|gre|gretap|ip_vti|ip6_vti|ip6gre|ip6tnl|sit|tunl)0@.*):"'
+ExecStart=/bin/sh -x -c '! ip link | grep -E "^[0-9]+: " | grep -F ": dummy-test-exec:"'
 Type=oneshot
 PrivateNetwork=yes
diff --git a/test/test-execute/exec-set-credential.service b/test/test-execute/exec-set-credential.service
new file mode 100644 (file)
index 0000000..2af236d
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for SetCredential=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(cat %d/test-execute.set-credential)" = "hoge"'
+Type=oneshot
+SetCredential=test-execute.set-credential:hoge
diff --git a/test/test-execute/exec-specifier-system.service b/test/test-execute/exec-specifier-system.service
new file mode 100644 (file)
index 0000000..9e8ee56
--- /dev/null
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for specifiers (system)
+
+[Service]
+Type=oneshot
+ExecStart=test %t = /run
+ExecStart=test %S = /var/lib
+ExecStart=test %C = /var/cache
+ExecStart=test %L = /var/log
+ExecStart=test %E = /etc
diff --git a/test/test-execute/exec-specifier-user.service b/test/test-execute/exec-specifier-user.service
new file mode 100644 (file)
index 0000000..ee0301a
--- /dev/null
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for specifiers
+
+[Service]
+Type=oneshot
+ExecStart=sh -c 'test %t = $$XDG_RUNTIME_DIR'
+ExecStart=sh -c 'test %S = %h/.config'
+ExecStart=sh -c 'test %C = %h/.cache'
+ExecStart=sh -c 'test %L = %h/.config/log'
+ExecStart=sh -c 'test %E = %h/.config'
index 2b487bae8c1a3c38e822fd02a0490f14e4fae3ce..512f786f833508857398494d0a52c395d54ccc57 100644 (file)
@@ -13,11 +13,6 @@ ExecStart=test %I = ""
 ExecStart=test %j = specifier
 ExecStart=test %J = specifier
 ExecStart=test %f = /exec/specifier
-ExecStart=test %t = /run
-ExecStart=test %S = /var/lib
-ExecStart=test %C = /var/cache
-ExecStart=test %L = /var/log
-ExecStart=test %E = /etc
 ExecStart=test %T = /tmp
 ExecStart=test %V = /var/tmp
 ExecStart=test %d = %t/credentials/%n
index 69e969f716d9c3e62abada84e466f4c206d16702..cb9d0a182a2271d3a09c5ff1a42fb4bc39473414 100644 (file)
@@ -13,11 +13,6 @@ ExecStart=test %I = foo/bar
 ExecStart=test %j = specifier
 ExecStart=test %J = specifier
 ExecStart=test %f = /foo/bar
-ExecStart=test %t = /run
-ExecStart=test %S = /var/lib
-ExecStart=test %C = /var/cache
-ExecStart=test %L = /var/log
-ExecStart=test %E = /etc
 ExecStart=sh -c 'test %u = $$(id -un)'
 ExecStart=sh -c 'test %U = $$(id -u)'
 ExecStart=sh -c 'test %g = $$(id -gn)'
index d9d6f6e7922fda49e5cbb622827d125d005e063f..46a0f78299f829e3aaa63a3f2b79283a54614965 100644 (file)
@@ -9,7 +9,7 @@ MaxAgeSec=9
 AgeingTimeSec=9
 ForwardDelaySec=9
 Priority=9
-#GroupForwardMask=9 # This interferes other other settings
+#GroupForwardMask=9 # This interferes with other settings
 DefaultPVID=9
 MulticastQuerier=yes
 MulticastSnooping=yes
diff --git a/test/test-sysusers/test-00-basic.expected-group b/test/test-sysusers/test-00-basic.expected-group
new file mode 100644 (file)
index 0000000..0d08ec9
--- /dev/null
@@ -0,0 +1,19 @@
+root:x:0:
+nobody:x:65534:
+adm:x:999:
+wheel:x:998:
+utmp:x:997:
+audio:x:996:
+cdrom:x:995:
+dialout:x:994:
+disk:x:993:
+input:x:992:
+kmem:x:991:
+kvm:x:990:
+lp:x:989:
+render:x:988:
+sgx:x:987:
+tape:x:986:
+tty:x:5:
+video:x:985:
+users:x:984:
diff --git a/test/test-sysusers/test-00-basic.expected-passwd b/test/test-sysusers/test-00-basic.expected-passwd
new file mode 100644 (file)
index 0000000..e2b2fdf
--- /dev/null
@@ -0,0 +1,2 @@
+root:x:0:0:Super User:/root:/bin/sh
+nobody:x:65534:65534:Kernel Overflow User:/:NOLOGIN
diff --git a/test/test-sysusers/test-00-basic.input b/test/test-sysusers/test-00-basic.input
new file mode 100644 (file)
index 0000000..3031c6b
--- /dev/null
@@ -0,0 +1,41 @@
+#  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.
+
+# The superuser
+g root    0       -            -
+u root    0:0     "Super User" /root
+
+# The nobody user/group for NFS file systems
+g nobody 65534    -            -
+u nobody 65534:65534 "Kernel Overflow User"     -
+
+# Administrator group: can *see* more than normal users
+g adm     999     -            -
+
+# Administrator group: can *do* more than normal users
+g wheel   998     -            -
+
+# Access to shared database of users on the system
+g utmp    997     -            -
+
+# Physical and virtual hardware access groups
+g audio   996     -            -
+g cdrom   995     -            -
+g dialout 994     -            -
+g disk    993     -            -
+g input   992     -            -
+g kmem    991     -            -
+g kvm     990     -            -
+g lp      989     -            -
+g render  988     -            -
+g sgx     987     -            -
+g tape    986     -            -
+g tty     5       -            -
+g video   985     -            -
+
+# Default group for normal users
+g users   984     -            -
diff --git a/test/testsuite-04.units/delegated-cgroup-filtering.service b/test/testsuite-04.units/delegated-cgroup-filtering.service
new file mode 100644 (file)
index 0000000..2c4201a
--- /dev/null
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test service for delegated logs filtering
+
+[Service]
+Type=simple
+ExecStart=/usr/lib/systemd/tests/testdata/units/delegated_cgroup_filtering_payload.sh
+Delegate=yes
+SyslogLevel=notice
diff --git a/test/units/delegated_cgroup_filtering_payload.sh b/test/units/delegated_cgroup_filtering_payload.sh
new file mode 100755 (executable)
index 0000000..50d01a5
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+mkdir /sys/fs/cgroup/system.slice/delegated-cgroup-filtering.service/the_child
+/bin/sh /usr/lib/systemd/tests/testdata/units/delegated_cgroup_filtering_payload_child.sh &
+
+while true
+do
+       echo "parent_process: hello, world!"
+       echo "parent_process: hello, people!"
+    sleep .15
+done
diff --git a/test/units/delegated_cgroup_filtering_payload_child.sh b/test/units/delegated_cgroup_filtering_payload_child.sh
new file mode 100755 (executable)
index 0000000..b5635b5
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+echo $$ >/sys/fs/cgroup/system.slice/delegated-cgroup-filtering.service/the_child/cgroup.procs
+
+while true
+do
+       echo "child_process: hello, world!"
+       echo "child_process: hello, people!"
+    sleep .15
+done
index d10a9afbf7cb992d4cf2df4489268ce40cee870d..3bf7577a0e92460b25adde884e06de5a4ec65b61 100755 (executable)
@@ -70,7 +70,7 @@ ID=$(journalctl --new-id128 | sed -n 2p)
 printf $'foo' | systemd-cat -t "$ID" --level-prefix false
 journalctl --sync
 journalctl -b -o export --output-fields=MESSAGE,FOO --output-fields=PRIORITY,MESSAGE -t "$ID" >/output
-[[ $(grep -c . /output) -eq 6 ]]
+[[ $(grep -c . /output) -eq 8 ]]
 grep -q '^__CURSOR=' /output
 grep -q '^MESSAGE=foo$' /output
 grep -q '^PRIORITY=6$' /output
@@ -185,8 +185,8 @@ function add_logs_filtering_override() {
     LOG_FILTER=${3:-""}
 
     mkdir -p /etc/systemd/system/"$UNIT".d/
-    echo "[Service]" >/etc/systemd/system/logs-filtering.service.d/"${OVERRIDE_NAME}".conf
-    echo "LogFilterPatterns=$LOG_FILTER" >>/etc/systemd/system/logs-filtering.service.d/"${OVERRIDE_NAME}".conf
+    echo "[Service]" >/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
+    echo "LogFilterPatterns=$LOG_FILTER" >>/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
     systemctl daemon-reload
 }
 
@@ -256,7 +256,23 @@ if is_xattr_supported; then
     add_logs_filtering_override "logs-filtering.service" "10-allow-with-escape-char" "\x7emore~"
     [[ -n $(run_service_and_fetch_logs "logs-filtering.service") ]]
 
+    add_logs_filtering_override "delegated-cgroup-filtering.service" "00-allow-all" ".*"
+    [[ -n $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
+    add_logs_filtering_override "delegated-cgroup-filtering.service" "01-discard-hello" "~hello"
+    [[ -z $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
     rm -rf /etc/systemd/system/logs-filtering.service.d
+    rm -rf /etc/systemd/system/delegated-cgroup-filtering.service.d
 fi
 
+# Check that the seqnum field at least superficially works
+systemd-cat echo "ya"
+journalctl --sync
+SEQNUM1=$(journalctl -o export -n 1 | grep -Ea "^__SEQNUM=" | cut -d= -f2)
+systemd-cat echo "yo"
+journalctl --sync
+SEQNUM2=$(journalctl -o export -n 1 | grep -Ea "^__SEQNUM=" | cut -d= -f2)
+test "$SEQNUM2" -gt "$SEQNUM1"
+
 touch /testok
index 5667c8ab57429cc55ab9159a4014c17b0d1e2920..3499d6160f2c73713a508971ca04e2ae940be2c1 100755 (executable)
@@ -128,13 +128,19 @@ if [ -e /usr/lib/systemd/systemd-measure ] && \
     # Now, do the same, but with a cryptsetup binding
     truncate -s 20M $img
     cryptsetup luksFormat -q --pbkdf pbkdf2 --pbkdf-force-iterations 1000 --use-urandom $img /tmp/passphrase
+    # Ensure that an unrelated signature, when not requested, is not used
+    touch /run/systemd/tpm2-pcr-signature.json
+    systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" $img
+    # Reset and use the signature now
+    rm -f /run/systemd/tpm2-pcr-signature.json
+    systemd-cryptenroll --wipe-slot=tpm2 $img
     systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" --tpm2-signature="/tmp/pcrsign.sig2" $img
 
     # Check if we can activate that (without the token module stuff)
     SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=0 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig2",headless=1
     SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=0 /usr/lib/systemd/systemd-cryptsetup detach test-volume2
 
-    # Check if we can activate that (and a second time with the the token module stuff enabled)
+    # Check if we can activate that (and a second time with the token module stuff enabled)
     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
     SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=1 /usr/lib/systemd/systemd-cryptsetup detach test-volume2
 
@@ -202,6 +208,12 @@ else
     echo "/usr/lib/systemd/systemd-pcrphase or PCR sysfs files not found, skipping PCR extension test case"
 fi
 
+# Ensure that sandboxing doesn't stop creds from being accessible
+echo "test" > /tmp/testdata
+systemd-creds encrypt /tmp/testdata /tmp/testdata.encrypted --with-key=tpm2
+systemd-run -p PrivateDevices=yes -p LoadCredentialEncrypted=testdata.encrypted:/tmp/testdata.encrypted --pipe --wait systemd-creds cat testdata.encrypted | cmp - /tmp/testdata
+rm /tmp/testdata
+
 echo OK >/testok
 
 exit 0
diff --git a/test/units/testsuite-78.service b/test/units/testsuite-78.service
new file mode 100644 (file)
index 0000000..05f3eff
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=TEST-78-SIGQUEUE
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
diff --git a/test/units/testsuite-78.sh b/test/units/testsuite-78.sh
new file mode 100755 (executable)
index 0000000..1680166
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -ex
+set -o pipefail
+
+if ! env --block-signal=SIGUSR1 true 2> /dev/null ; then
+    echo "env tool too old, can't block signals, skipping test." >&2
+    echo OK >/testok
+    exit 0
+fi
+
+systemd-analyze log-level debug
+
+UNIT="test-sigqueue-$RANDOM.service"
+
+systemd-run -u "$UNIT" -p Type=notify -p DynamicUser=1 -- env --block-signal=SIGRTMIN+7 systemd-notify --exec --ready \; sleep infinity
+
+systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=7 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=32 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
+
+# We simply check that six signals are queued now. There's no easy way to check
+# from shell wich ones those are, hence we don't check that.
+P=$(systemctl show -P MainPID "$UNIT")
+
+test "$(grep SigQ: /proc/"$P"/status | cut -d: -f2 | cut -d/ -f1)" -eq 6
+
+systemctl stop $UNIT
+
+systemd-analyze log-level info
+echo OK >/testok
+
+exit 0
index 2fdd498da58575e9d50f17dd177335ade0720007..e54d3b18994a94a31c8763d9e1f530e91dffee77 100644 (file)
@@ -14,6 +14,7 @@ t /etc/mtab - - - - security.SMACK64=_
 {% endif %}
 C! /etc/locale.conf - - - -
 C! /etc/nsswitch.conf - - - -
+C! /etc/vconsole.conf - - - -
 {% if HAVE_PAM %}
 C! /etc/pam.d - - - -
 {% endif %}
index b0da413bb438ec5ea96c4edb23a271131c4163ed..432eb9fd8ce82815cd26697b5128a2b0c4455f3e 100644 (file)
@@ -14,7 +14,7 @@ DefaultDependencies=no
 Conflicts=shutdown.target
 After=systemd-pcrmachine.service
 Before=shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
 
index ec1ff118c3d847c31864f79af174c8eb7ae099f7..6bbd4b72a53bc5547a72ea4418dc5afe31fe4559 100644 (file)
@@ -15,7 +15,7 @@ BindsTo=%i.mount
 Conflicts=shutdown.target
 After=%i.mount systemd-pcrfs-root.service
 Before=shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
 
index e154a7eec1122481aa75947ad9cc15c23cdc9e07..f1c6ce9f265d40285a68bea9494cf35c6acf6f98 100644 (file)
@@ -13,7 +13,7 @@ Documentation=man:systemd-pcrmachine.service(8)
 DefaultDependencies=no
 Conflicts=shutdown.target
 Before=sysinit.target shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
 
index e437c7e1ce9eacb3eca658d6687d510dd7fb9cb2..6320dccf27d670697ac1c36cb84810b543318dde 100644 (file)
@@ -13,7 +13,7 @@ Documentation=man:systemd-pcrphase-initrd.service(8)
 DefaultDependencies=no
 Conflicts=shutdown.target initrd-switch-root.target
 Before=sysinit.target cryptsetup-pre.target cryptsetup.target shutdown.target initrd-switch-root.target systemd-sysext.service
-AssertPathExists=/etc/initrd-release
+ConditionPathExists=/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
 
index a22fbbe935c968b5ef207355cb6a1efc3596fd0e..f00ad61257435b9fe7f4a7da3e80392e12a16d06 100644 (file)
@@ -14,7 +14,7 @@ DefaultDependencies=no
 Conflicts=shutdown.target
 After=sysinit.target
 Before=basic.target shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
 
index 5ba437e5b18ee601ba6edd4aae89cb82bb0d4e14..558f268857a44ebe5b9d02ec6ba3b648389a84cb 100644 (file)
@@ -12,7 +12,7 @@ Description=TPM2 PCR Barrier (User)
 Documentation=man:systemd-pcrphase.service(8)
 After=remote-fs.target remote-cryptsetup.target
 Before=systemd-user-sessions.service
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
 ConditionSecurity=tpm2
 ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f